From 9b6ce926126f9a4483932f6e1be0ef32ed81e474 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Mon, 31 Oct 2022 09:51:18 +0100 Subject: [PATCH 001/189] Update diaglogflow.js --- adapter/diaglogflow.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adapter/diaglogflow.js b/adapter/diaglogflow.js index c80b034..88a24c1 100644 --- a/adapter/diaglogflow.js +++ b/adapter/diaglogflow.js @@ -56,7 +56,7 @@ const detectIntent = async (queryText) => { const { fields } = parsePayload.payload media = fields.media.stringValue || null } - const customPayload = parsePayload['payload'] + const customPayload = parsePayload ? parsePayload['payload'] : null const parseData = { replyMessage: queryResult.fulfillmentText, From 8a4f134327ccb608f2b03a5cd937beab79a96f27 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sat, 19 Nov 2022 11:08:51 +0100 Subject: [PATCH 002/189] Update latest --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index df28d5d..42d881d 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "qrcode-terminal": "^0.12.0", "socket.io": "^4.5.1", "stormdb": "^0.6.0", - "whatsapp-web.js": "^1.18.0", + "whatsapp-web.js": "latest", "xlsx": "^0.18.5" }, "devDependencies": { From f21a58b6ffefc631cb7fbc413e66ed2b1eb753bb Mon Sep 17 00:00:00 2001 From: jzvi12 Date: Fri, 2 Dec 2022 10:16:16 -0500 Subject: [PATCH 003/189] Update README.md --- README.md | 47 ++++------------------------------------------- 1 file changed, 4 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index 455d71e..8be6f57 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,4 @@ ## Chatbot Whatsapp (OpenSource) -#### Actualizado Abril 2022 - -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__. - -[![Video](https://i.giphy.com/media/OBDi3CXC83WkNeLEZP/giphy.webp)](https://youtu.be/5lEMCeWEJ8o) - -### 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 @@ -81,7 +58,6 @@ 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 @@ -93,9 +69,9 @@ sudo apt install -y gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups __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) +``` +npm i +``` __Configurar .env__ > Con el editor de texto crea un archivo `.env` el cual debes de guiarte del archivo `.env.example` @@ -114,21 +90,14 @@ 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) +Tambien puedes visitar la pagina http://127.0.0.1:3000/qr __Listo 😎__ > Cuando sale este mensaje tu BOT está __listo__ para trabajar! @@ -145,11 +114,3 @@ __Listo 😎__ > 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) From 1884832192e00ea4b6a70bd6660cb57a24ad3e50 Mon Sep 17 00:00:00 2001 From: jzvi12 Date: Mon, 5 Dec 2022 19:10:41 -0500 Subject: [PATCH 004/189] fixed dialogflow session id --- adapter/diaglogflow.js | 12 +++++------ adapter/index.js | 4 ++-- app.js | 47 +++++++++++++++++++++--------------------- controllers/flows.js | 4 ++-- package-lock.json | 42 +++++++------------------------------ package.json | 2 +- 6 files changed, 42 insertions(+), 69 deletions(-) diff --git a/adapter/diaglogflow.js b/adapter/diaglogflow.js index 88a24c1..1d0d9a8 100644 --- a/adapter/diaglogflow.js +++ b/adapter/diaglogflow.js @@ -1,6 +1,6 @@ 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 */ @@ -30,9 +30,9 @@ const checkFileCredentials = () => { // Detect intent method -const detectIntent = async (queryText) => { +const detectIntent = async (queryText, waPhoneNumber) => { let media = null; - const sessionId = KEEP_DIALOG_FLOW ? 1 : crypto.randomUUID(); + const sessionId = KEEP_DIALOG_FLOW ? 1 : waPhoneNumber; const sessionPath = sessionClient.projectAgentSessionPath(PROJECID, sessionId); const languageCode = process.env.LANGUAGE const request = { @@ -66,12 +66,12 @@ const detectIntent = async (queryText) => { return parseData } -const getDataIa = (message = '', cb = () => { }) => { - detectIntent(message).then((res) => { +const getDataIa = (message = '', sessionId = '', cb = () => { }) => { + detectIntent(message, sessionId).then((res) => { cb(res) }) } checkFileCredentials(); -module.exports = { getDataIa } +module.exports = { getDataIa } \ No newline at end of file diff --git a/adapter/index.js b/adapter/index.js index 6f06561..e6e5d74 100644 --- a/adapter/index.js +++ b/adapter/index.js @@ -52,13 +52,13 @@ const reply = (step) => new Promise((resolve, reject) => { } }) -const getIA = (message) => new Promise((resolve, reject) => { +const getIA = (message, sessionId) => new Promise((resolve, reject) => { /** * Si usas dialogflow */ if (process.env.DATABASE === 'dialogflow') { let resData = { replyMessage: '', media: null, trigger: null } - getDataIa(message,(dt) => { + getDataIa(message, sessionId, (dt) => { resData = { ...resData, ...dt } resolve(resData) }) diff --git a/app.js b/app.js index 755b924..36580c1 100644 --- a/app.js +++ b/app.js @@ -6,7 +6,7 @@ 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 { 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') @@ -30,7 +30,7 @@ app.use('/', require('./routes/web')) const listenMessage = () => client.on('message', async msg => { const { from, body, hasMedia } = msg; - if(!isValidNumber(from)){ + if (!isValidNumber(from)) { return } @@ -39,7 +39,7 @@ const listenMessage = () => client.on('message', async msg => { return } message = body.toLowerCase(); - console.log('BODY',message) + console.log('BODY', message) const number = cleanNumber(from) await readChat(number, message) @@ -56,8 +56,8 @@ const listenMessage = () => client.on('message', async msg => { */ if (process.env.DATABASE === 'dialogflow') { - if(!message.length) return; - const response = await bothResponse(message); + if (!message.length) return; + const response = await bothResponse(message, number); await sendMessage(client, from, response.replyMessage); if (response.media) { sendMedia(client, from, response.media); @@ -91,7 +91,7 @@ const listenMessage = () => client.on('message', async msg => { await sendMessage(client, from, response.replyMessage, response.trigger); - if(response.hasOwnProperty('actions')){ + if (response.hasOwnProperty('actions')) { const { actions } = response; await sendMessageButton(client, from, null, actions); return @@ -116,7 +116,7 @@ const listenMessage = () => client.on('message', async msg => { /** * Si quieres enviar botones */ - if(response.hasOwnProperty('actions')){ + if (response.hasOwnProperty('actions')) { const { actions } = response; await sendMessageButton(client, from, null, actions); } @@ -127,33 +127,33 @@ const listenMessage = () => client.on('message', async msg => { client = new Client({ - authStrategy: new LocalAuth(), - puppeteer: { headless: true } - }); - + 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) + 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) + connectionReady() + listenMessage() + // socketEvents.sendStatus(client) }); client.on('auth_failure', (e) => { - // console.log(e) - // connectionLost() + // console.log(e) + // connectionLost() }); client.on('authenticated', () => { - console.log('AUTHENTICATED'); + console.log('AUTHENTICATED'); }); - client.initialize(); +client.initialize(); @@ -168,5 +168,4 @@ if (process.env.DATABASE === 'mysql') { server.listen(port, () => { console.log(`El server esta listo por el puerto ${port}`); }) -checkEnvFile(); - +checkEnvFile(); \ No newline at end of file diff --git a/controllers/flows.js b/controllers/flows.js index 0e769cd..b0fc9d3 100644 --- a/controllers/flows.js +++ b/controllers/flows.js @@ -15,8 +15,8 @@ const responseMessages = async (step) => { return data } -const bothResponse = async (message) => { - const data = await getIA(message) +const bothResponse = async (message, sessionId) => { + const data = await getIA(message, sessionId) if(data && data.media){ const file = await saveExternalFile(data.media) return {...data,...{media:file}} diff --git a/package-lock.json b/package-lock.json index 5e7dbf1..589ad0f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,13 +22,12 @@ "qrcode-terminal": "^0.12.0", "socket.io": "^4.5.1", "stormdb": "^0.6.0", - "whatsapp-web.js": "^1.18.0", + "whatsapp-web.js": "^1.18.4", "xlsx": "^0.18.5" }, "devDependencies": { "pm2": "^5.2.0", - "prettier": "2.7.1", - "rollup": "^3.2.3" + "prettier": "2.7.1" }, "engines": { "node": "16.x" @@ -4242,22 +4241,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", @@ -5039,9 +5022,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.4", + "resolved": "https://registry.npmjs.org/whatsapp-web.js/-/whatsapp-web.js-1.18.4.tgz", + "integrity": "sha512-Dqu6Q37tDDAcVJ44aMdRE76sI/9rBCUG+NTz1Kxh2w4obX2WtpoRetilxqgx1r4+pFUl58Lf21wGOEwPZ1pT/A==", "dependencies": { "@pedroslopez/moduleraid": "^5.0.2", "fluent-ffmpeg": "^2.1.2", @@ -8598,15 +8581,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", @@ -9193,9 +9167,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.4", + "resolved": "https://registry.npmjs.org/whatsapp-web.js/-/whatsapp-web.js-1.18.4.tgz", + "integrity": "sha512-Dqu6Q37tDDAcVJ44aMdRE76sI/9rBCUG+NTz1Kxh2w4obX2WtpoRetilxqgx1r4+pFUl58Lf21wGOEwPZ1pT/A==", "requires": { "@pedroslopez/moduleraid": "^5.0.2", "archiver": "^5.3.1", diff --git a/package.json b/package.json index 42d881d..20a8d94 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "qrcode-terminal": "^0.12.0", "socket.io": "^4.5.1", "stormdb": "^0.6.0", - "whatsapp-web.js": "latest", + "whatsapp-web.js": "^1.18.4", "xlsx": "^0.18.5" }, "devDependencies": { From b3c13d5f983a8ca4168b9a9e7adef5e431c6bf30 Mon Sep 17 00:00:00 2001 From: HKong31 <113340082+HKong31@users.noreply.github.com> Date: Wed, 7 Dec 2022 07:52:13 -0400 Subject: [PATCH 005/189] DialogFlow botones por payload --- adapter/diaglogflow.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/adapter/diaglogflow.js b/adapter/diaglogflow.js index 1d0d9a8..9a4586c 100644 --- a/adapter/diaglogflow.js +++ b/adapter/diaglogflow.js @@ -1,5 +1,6 @@ const dialogflow = require('@google-cloud/dialogflow'); const fs = require('fs') +const {struct} = require('pb-util'); /** * Debes de tener tu archivo con el nombre "chatbot-account.json" en la raíz del proyecto @@ -32,6 +33,7 @@ const checkFileCredentials = () => { // Detect intent method const detectIntent = async (queryText, waPhoneNumber) => { let media = null; + let actions = null; const sessionId = KEEP_DIALOG_FLOW ? 1 : waPhoneNumber; const sessionPath = sessionClient.projectAgentSessionPath(PROJECID, sessionId); const languageCode = process.env.LANGUAGE @@ -54,6 +56,7 @@ const detectIntent = async (queryText, waPhoneNumber) => { // console.log(singleResponse) if (parsePayload && parsePayload.payload) { const { fields } = parsePayload.payload + actions = struct.decode(fields.actions.structValue) || null; media = fields.media.stringValue || null } const customPayload = parsePayload ? parsePayload['payload'] : null @@ -61,6 +64,7 @@ const detectIntent = async (queryText, waPhoneNumber) => { const parseData = { replyMessage: queryResult.fulfillmentText, media, + actions, trigger: null } return parseData @@ -74,4 +78,4 @@ const getDataIa = (message = '', sessionId = '', cb = () => { }) => { checkFileCredentials(); -module.exports = { getDataIa } \ No newline at end of file +module.exports = { getDataIa } From f88607c2c2945553ce46a6a3ec688219d597ffd6 Mon Sep 17 00:00:00 2001 From: HKong31 <113340082+HKong31@users.noreply.github.com> Date: Wed, 7 Dec 2022 08:02:00 -0400 Subject: [PATCH 006/189] DialogFlow botones por payload Evita crash si el mensaje excede los 256 caracteres + botones por el payload de DialogFlow --- app.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app.js b/app.js index 36580c1..77d773a 100644 --- a/app.js +++ b/app.js @@ -57,8 +57,12 @@ const listenMessage = () => client.on('message', async msg => { if (process.env.DATABASE === 'dialogflow') { if (!message.length) return; - const response = await bothResponse(message, number); + const response = await bothResponse(message.substring(256,-1), number); await sendMessage(client, from, response.replyMessage); + if(response.actions){ + await sendMessageButton(client, from, null, response.actions); + return + } if (response.media) { sendMedia(client, from, response.media); } @@ -168,4 +172,4 @@ if (process.env.DATABASE === 'mysql') { server.listen(port, () => { console.log(`El server esta listo por el puerto ${port}`); }) -checkEnvFile(); \ No newline at end of file +checkEnvFile(); From 2d6c1879cedcc47a936e21b44c255756fff32849 Mon Sep 17 00:00:00 2001 From: HKong31 <113340082+HKong31@users.noreply.github.com> Date: Wed, 7 Dec 2022 08:18:32 -0400 Subject: [PATCH 007/189] DialogFlow botones por payload --- package-lock.json | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/package-lock.json b/package-lock.json index 589ad0f..af9632e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,6 +18,7 @@ "mime-db": "^1.52.0", "moment": "^2.29.4", "mysql": "^2.18.1", + "pb-util": "^1.0.3", "qr-image": "^3.2.0", "qrcode-terminal": "^0.12.0", "socket.io": "^4.5.1", @@ -3415,6 +3416,11 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" }, + "node_modules/pb-util": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pb-util/-/pb-util-1.0.3.tgz", + "integrity": "sha512-8+weUH2YEYnPf5sTpZ3q7Drq41tSEL8vDSU96/CzSvu2qrbspbjbbuKLjHocAQpmyMbICTcvovVl3cETwxwIkQ==" + }, "node_modules/peek-readable": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", @@ -7965,6 +7971,11 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" }, + "pb-util": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pb-util/-/pb-util-1.0.3.tgz", + "integrity": "sha512-8+weUH2YEYnPf5sTpZ3q7Drq41tSEL8vDSU96/CzSvu2qrbspbjbbuKLjHocAQpmyMbICTcvovVl3cETwxwIkQ==" + }, "peek-readable": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", From b24c005e3e2d406ee43508ed4a9ae95810ba1b00 Mon Sep 17 00:00:00 2001 From: HKong31 <113340082+HKong31@users.noreply.github.com> Date: Wed, 7 Dec 2022 08:20:30 -0400 Subject: [PATCH 008/189] DialogFlow botones por payload --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 20a8d94..fcb275f 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "mime-db": "^1.52.0", "moment": "^2.29.4", "mysql": "^2.18.1", + "pb-util": "^1.0.3", "qr-image": "^3.2.0", "qrcode-terminal": "^0.12.0", "socket.io": "^4.5.1", From babff11c70df7b05e104ca0e08d13f8938fa5064 Mon Sep 17 00:00:00 2001 From: HKong31 <113340082+HKong31@users.noreply.github.com> Date: Wed, 7 Dec 2022 08:33:14 -0400 Subject: [PATCH 009/189] Fix crash when voice message recieved Fix crash si recibe nota de voz --- controllers/save.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/controllers/save.js b/controllers/save.js index 92555e0..3adfda0 100644 --- a/controllers/save.js +++ b/controllers/save.js @@ -8,11 +8,17 @@ const fs = require('fs') const saveMedia = (media) => { - const extensionProcess = mimeDb[media.mimetype] - const ext = extensionProcess.extensions[0] + const extensionProcess = mimeDb[media.mimetype]; + let ext; + if (!extensionProcess) { + const fileType = media.mimetype.split('/'); + ext = fileType[1].split(';')[0]; + } else { + 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 +module.exports = {saveMedia} From e8aed880d8c9b89e67df52c99a88309be5f68a13 Mon Sep 17 00:00:00 2001 From: HKong31 <113340082+HKong31@users.noreply.github.com> Date: Wed, 7 Dec 2022 12:19:06 -0400 Subject: [PATCH 010/189] =?UTF-8?q?Retraso=20en=20el=20env=C3=ADo=20de=20b?= =?UTF-8?q?otones?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Modificado para que los botones sean enviados después del mensaje --- controllers/send.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/controllers/send.js b/controllers/send.js index d081381..5cda9ac 100644 --- a/controllers/send.js +++ b/controllers/send.js @@ -69,12 +69,14 @@ const sendMessage = async (client, number = null, text = null, trigger = null) = * @param {*} number */ const sendMessageButton = async (client, number = null, text = null, actionButtons) => { + setTimeout(async () => { number = cleanNumber(number) const { title = null, message = null, footer = null, buttons = [] } = actionButtons; let button = new Buttons(message,[...buttons], title, footer); client.sendMessage(number, button); - + await readChat(number, message, actionButtons) console.log(`⚡⚡⚡ Enviando mensajes....`); + }, DELAY_TIME) } From 33490dc737e80b52ea163bd19c61555e9a9ea438 Mon Sep 17 00:00:00 2001 From: jzvi12 Date: Thu, 8 Dec 2022 16:57:18 -0500 Subject: [PATCH 011/189] fixed typo in controllers/send.js --- controllers/send.js | 4 ++-- package-lock.json | 13 ++++++------- package.json | 2 +- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/controllers/send.js b/controllers/send.js index 5cda9ac..8ec66a4 100644 --- a/controllers/send.js +++ b/controllers/send.js @@ -16,7 +16,7 @@ const { saveMessage } = require('../adapter') */ const sendMedia = (client, number = null, fileName = null) => { - if(!client) return cosnole.error("El objeto cliente no está definido."); + if(!client) return console.error("El objeto cliente no está definido."); try { number = cleanNumber(number || 0) const file = `${DIR_MEDIA}/${fileName}`; @@ -36,7 +36,7 @@ const sendMedia = (client, number = null, fileName = null) => { */ const sendMediaVoiceNote = (client, number = null, fileName = null) => { - if(!client) return cosnole.error("El objeto cliente no está definido."); + if(!client) return console.error("El objeto cliente no está definido."); try { number = cleanNumber(number || 0) const file = `${DIR_MEDIA}/${fileName}`; diff --git a/package-lock.json b/package-lock.json index af9632e..cf333c3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,7 @@ "qrcode-terminal": "^0.12.0", "socket.io": "^4.5.1", "stormdb": "^0.6.0", - "whatsapp-web.js": "^1.18.4", + "whatsapp-web.js": "github:pedroslopez/whatsapp-web.js#fix-buttons-list", "xlsx": "^0.18.5" }, "devDependencies": { @@ -5028,9 +5028,9 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/whatsapp-web.js": { - "version": "1.18.4", - "resolved": "https://registry.npmjs.org/whatsapp-web.js/-/whatsapp-web.js-1.18.4.tgz", - "integrity": "sha512-Dqu6Q37tDDAcVJ44aMdRE76sI/9rBCUG+NTz1Kxh2w4obX2WtpoRetilxqgx1r4+pFUl58Lf21wGOEwPZ1pT/A==", + "version": "1.18.3-alpha.0", + "resolved": "git+ssh://git@github.com/pedroslopez/whatsapp-web.js.git#c8fe80635afc6fba9913577a3097e8bf1f557a0b", + "license": "Apache-2.0", "dependencies": { "@pedroslopez/moduleraid": "^5.0.2", "fluent-ffmpeg": "^2.1.2", @@ -9178,9 +9178,8 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "whatsapp-web.js": { - "version": "1.18.4", - "resolved": "https://registry.npmjs.org/whatsapp-web.js/-/whatsapp-web.js-1.18.4.tgz", - "integrity": "sha512-Dqu6Q37tDDAcVJ44aMdRE76sI/9rBCUG+NTz1Kxh2w4obX2WtpoRetilxqgx1r4+pFUl58Lf21wGOEwPZ1pT/A==", + "version": "git+ssh://git@github.com/pedroslopez/whatsapp-web.js.git#c8fe80635afc6fba9913577a3097e8bf1f557a0b", + "from": "whatsapp-web.js@github:pedroslopez/whatsapp-web.js#fix-buttons-list", "requires": { "@pedroslopez/moduleraid": "^5.0.2", "archiver": "^5.3.1", diff --git a/package.json b/package.json index fcb275f..147e1c8 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "qrcode-terminal": "^0.12.0", "socket.io": "^4.5.1", "stormdb": "^0.6.0", - "whatsapp-web.js": "^1.18.4", + "whatsapp-web.js": "github:pedroslopez/whatsapp-web.js#fix-buttons-list", "xlsx": "^0.18.5" }, "devDependencies": { From 2858e910dcbc0a92a2d886b8e85256d919ee1872 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sun, 11 Dec 2022 22:20:49 +0100 Subject: [PATCH 012/189] Create LICENSE.md --- LICENSE.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE.md diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..959d8ec --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Leifer Mendez + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. From 5303dd7d257da8b8062df732edfac0960b83caa6 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Mon, 12 Dec 2022 00:44:58 +0100 Subject: [PATCH 013/189] Create FUNDING.yml --- .github/FUNDING.yml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..1fde58c --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,2 @@ +patreon: leifermendez +custom: "https://www.buymeacoffee.com/leifermendez" From ec32dc429f005940becd3e4c279691188ed7a157 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Mon, 12 Dec 2022 16:42:12 +0100 Subject: [PATCH 014/189] Create CODE_OF_CONDUCT.md --- CODE_OF_CONDUCT.md | 128 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 CODE_OF_CONDUCT.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..05743b3 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,128 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +leifer.contacto@gmail.com. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. From c2a6c6872d8657df467fe3c1abb601e1aaf05278 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 14 Dec 2022 07:59:13 +0100 Subject: [PATCH 015/189] Create PULL_REQUEST_TEMPLATE.md --- .github/PULL_REQUEST_TEMPLATE.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..b0feb3a --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,23 @@ +# Cual version del BOT es? + +- [ ] v2 +- [ ] v1 + + +# Que tipo de ISSUE es? + +- [ ] Mejoras +- [ ] Bug +- [ ] Docs / tests + +# Description + +Por favor agrega una descripción de tu problema para tener más contexto y poder ayudar más rápido. Si es de ayuda puedes usar plataformar como [https://www.loom.com/](https://www.loom.com/) para grabar un video. + + +> 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 a43444bb3e92956132caadf69ddba3edec6a5596 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 14 Dec 2022 08:02:08 +0100 Subject: [PATCH 016/189] Create bug.yml --- .github/ISSUE_TEMPLATE/bug.yml | 66 ++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug.yml diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml new file mode 100644 index 0000000..a48f175 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -0,0 +1,66 @@ +name: 🐞 Bug Report +description: Something does not work or is flaky! let us know! +labels: [bug, triage] +title: '[🐞]' +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this bug report! + + - type: dropdown + id: component + attributes: + label: Which component is affected? + options: + - Qwik Runtime + - Qwik Rollup / Vite plugin + - Qwik Optimizer (rust) + - Qwik React + - Qwik City (routing) + - Starters / CLI + validations: + required: true + + - type: textarea + id: description + attributes: + description: 'A clear and concise description of what you expected to happen instead. If you intend to submit a PR for this issue, tell us in the description. Thanks!' + label: Describe the bug + placeholder: I am doing ... What I expect is ... What actually happening is ... + + validations: + required: true + + - type: input + id: reproduction + attributes: + label: Reproduction + description: Please provide a link via [qwik.new](https://qwik.new/) or a link to a repo that can reproduce the problem you ran into. `npm create qwik@latest` can be used as a starter template. A [minimal reproduction](https://stackoverflow.com/help/minimal-reproducible-example) is required ([Why?](https://antfu.me/posts/why-reproductions-are-required)). If a report is vague (e.g. just a generic error message) and has no reproduction, it will receive a "need reproduction" label. If no reproduction is provided after 3 days, it will be auto-closed. + placeholder: Reproduction URL + validations: + required: true + + - type: textarea + id: reproduction-steps + attributes: + label: Steps to reproduce + description: Please provide any reproduction steps that may need to be described. E.g. if it happens only when running the dev or build script make sure it's clear which one to use. + placeholder: Run `npm install` followed by `npm run dev` + + - type: textarea + id: system-info + attributes: + label: System Info + description: Output of `npx envinfo --system --npmPackages '{vite,@builder.io/*}' --binaries --browsers` + render: shell + placeholder: System, Binaries, Browsers + validations: + required: true + + - type: textarea + id: additional_information + attributes: + label: Additional Information + validations: + required: false From 851052b3d2f20742c449baa14418d02d84145696 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 14 Dec 2022 10:12:21 +0100 Subject: [PATCH 017/189] Update bug.yml --- .github/ISSUE_TEMPLATE/bug.yml | 51 +++++++++++----------------------- 1 file changed, 16 insertions(+), 35 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index a48f175..098e9da 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -1,33 +1,31 @@ -name: 🐞 Bug Report -description: Something does not work or is flaky! let us know! +name: 🐛 Reporte Bug +description: Algo no va bien?. Hazlo saber labels: [bug, triage] -title: '[🐞]' +title: '[🐛]' body: - type: markdown attributes: value: | - Thanks for taking the time to fill out this bug report! + Gracias por tomarte el tiempo de reportar este problema - type: dropdown id: component attributes: - label: Which component is affected? + label: ¿Sobre que afecta? options: - - Qwik Runtime - - Qwik Rollup / Vite plugin - - Qwik Optimizer (rust) - - Qwik React - - Qwik City (routing) - - Starters / CLI + - Flujo de palabras (Flow) + - DialogFlow + - Base de datos + - Otro validations: required: true - type: textarea id: description attributes: - description: 'A clear and concise description of what you expected to happen instead. If you intend to submit a PR for this issue, tell us in the description. Thanks!' - label: Describe the bug - placeholder: I am doing ... What I expect is ... What actually happening is ... + description: 'Trata de ser lo más claro posible, de esa manera podemos entender el contexto de tu problema y darte una mejor solución' + label: Describe tu problema + placeholder: Yo tengo un problema.... validations: required: true @@ -35,32 +33,15 @@ body: - type: input id: reproduction attributes: - label: Reproduction - description: Please provide a link via [qwik.new](https://qwik.new/) or a link to a repo that can reproduce the problem you ran into. `npm create qwik@latest` can be used as a starter template. A [minimal reproduction](https://stackoverflow.com/help/minimal-reproducible-example) is required ([Why?](https://antfu.me/posts/why-reproductions-are-required)). If a report is vague (e.g. just a generic error message) and has no reproduction, it will receive a "need reproduction" label. If no reproduction is provided after 3 days, it will be auto-closed. + label: Reproducir error + description: __(Recomendación)__ trata de grabar un video puedes usar algunas de las siguientes herramientas [https://www.vidyard.com/](https://www.vidyard.com/) [https://www.loom.com/](https://www.loom.com/) y en lo posbile apoyate en [https://stackblitz.com/](https://stackblitz.com/) para compartir el código de ser necesario placeholder: Reproduction URL validations: - required: true - - - type: textarea - id: reproduction-steps - attributes: - label: Steps to reproduce - description: Please provide any reproduction steps that may need to be described. E.g. if it happens only when running the dev or build script make sure it's clear which one to use. - placeholder: Run `npm install` followed by `npm run dev` - - - type: textarea - id: system-info - attributes: - label: System Info - description: Output of `npx envinfo --system --npmPackages '{vite,@builder.io/*}' --binaries --browsers` - render: shell - placeholder: System, Binaries, Browsers - validations: - required: true + required: false - type: textarea id: additional_information attributes: - label: Additional Information + label: Información Adicional validations: required: false From 29fd94a0e1b9d0767b95fc9cbf9bdba76d81744a Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 14 Dec 2022 10:18:07 +0100 Subject: [PATCH 018/189] Update bug.yml --- .github/ISSUE_TEMPLATE/bug.yml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index 098e9da..2d2f5a6 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -7,6 +7,17 @@ body: attributes: value: | Gracias por tomarte el tiempo de reportar este problema + + - type: dropdown + id: version + attributes: + label: ¿Que versión estas usando? + description: '__INFO:__ Recuerda que puedes consultar dudas directamente en [discord](https://link.codigoencasa.com/DISCORD)' + options: + - v2 + - v1 + validations: + required: true - type: dropdown id: component @@ -35,7 +46,7 @@ body: attributes: label: Reproducir error description: __(Recomendación)__ trata de grabar un video puedes usar algunas de las siguientes herramientas [https://www.vidyard.com/](https://www.vidyard.com/) [https://www.loom.com/](https://www.loom.com/) y en lo posbile apoyate en [https://stackblitz.com/](https://stackblitz.com/) para compartir el código de ser necesario - placeholder: Reproduction URL + placeholder: URL video o stackblitz validations: required: false From 4819dfebda20d2021b5769472320c92d120a18f7 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 14 Dec 2022 10:23:24 +0100 Subject: [PATCH 019/189] Create config.yml --- .github/ISSUE_TEMPLATE/config.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/config.yml diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..7590616 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,4 @@ +contact_links: + - name: 🤔 Core Team + url: https://link.codigoencasa.com/DISCORD + about: Si quieres formar parte del CoreTeam, patrocinar el proyecto o propuesta profesionales From 3e0781fde6e9eae2e81523dbff38f3ee7fe64c7e Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 14 Dec 2022 10:26:27 +0100 Subject: [PATCH 020/189] Update PULL_REQUEST_TEMPLATE.md --- .github/PULL_REQUEST_TEMPLATE.md | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index b0feb3a..8278042 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,18 +1,12 @@ -# Cual version del BOT es? - -- [ ] v2 -- [ ] v1 - - -# Que tipo de ISSUE es? +# Que tipo de Pull Request es? - [ ] Mejoras - [ ] Bug - [ ] Docs / tests -# Description +# Descripción -Por favor agrega una descripción de tu problema para tener más contexto y poder ayudar más rápido. Si es de ayuda puedes usar plataformar como [https://www.loom.com/](https://www.loom.com/) para grabar un video. +Por favor agrega una descripción de tu aporte para tener más contexto y poder avanzar más rápido. Si es de ayuda puedes usar plataformar como [https://www.loom.com/](https://www.loom.com/) para grabar un video. > Forma parte de este proyecto. From b8ea8283ebcc1652dfd03f5aaf08bbf933f29626 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 14 Dec 2022 10:39:17 +0100 Subject: [PATCH 021/189] Create auto-pr-issue.yml --- .github/auto-pr-issue.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .github/auto-pr-issue.yml diff --git a/.github/auto-pr-issue.yml b/.github/auto-pr-issue.yml new file mode 100644 index 0000000..e36a213 --- /dev/null +++ b/.github/auto-pr-issue.yml @@ -0,0 +1,13 @@ +name: 'Close stale issues and PRs' +on: + schedule: + - cron: '30 1 * * *' + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v6 + with: + stale-issue-message: 'Message to comment on stale issues. If none provided, will not mark issues stale' + stale-pr-message: 'Message to comment on stale PRs. If none provided, will not mark PRs stale' From fbaef0f60c89d3b4273ddf17ccf3b41acc2953c8 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 14 Dec 2022 22:43:45 +0100 Subject: [PATCH 022/189] Update auto-pr-issue.yml --- .github/auto-pr-issue.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/auto-pr-issue.yml b/.github/auto-pr-issue.yml index e36a213..de858a9 100644 --- a/.github/auto-pr-issue.yml +++ b/.github/auto-pr-issue.yml @@ -1,7 +1,7 @@ name: 'Close stale issues and PRs' on: schedule: - - cron: '30 1 * * *' + - cron: '55 22 * * *' jobs: stale: From 407e9065e7022610e7209a04534ffc18589c7bdb Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 14 Dec 2022 23:07:26 +0100 Subject: [PATCH 023/189] Update and rename auto-pr-issue.yml to stale-issues.yml --- .github/auto-pr-issue.yml | 13 ------------- .github/stale-issues.yml | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+), 13 deletions(-) delete mode 100644 .github/auto-pr-issue.yml create mode 100644 .github/stale-issues.yml diff --git a/.github/auto-pr-issue.yml b/.github/auto-pr-issue.yml deleted file mode 100644 index de858a9..0000000 --- a/.github/auto-pr-issue.yml +++ /dev/null @@ -1,13 +0,0 @@ -name: 'Close stale issues and PRs' -on: - schedule: - - cron: '55 22 * * *' - -jobs: - stale: - runs-on: ubuntu-latest - steps: - - uses: actions/stale@v6 - with: - stale-issue-message: 'Message to comment on stale issues. If none provided, will not mark issues stale' - stale-pr-message: 'Message to comment on stale PRs. If none provided, will not mark PRs stale' diff --git a/.github/stale-issues.yml b/.github/stale-issues.yml new file mode 100644 index 0000000..7efe801 --- /dev/null +++ b/.github/stale-issues.yml @@ -0,0 +1,20 @@ +name: Close inactive issues +on: + schedule: + - cron: "15 23 * * *" + +jobs: + close-issues: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v4 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: "This issue is stale because it has been open for 60 days with no activity." + close-issue-message: "This issue was closed because it has been inactive for 14 days since being marked as stale." + stale-issue-label: "stale" + exempt-issue-labels: "bug,enhancement" + days-before-issue-stale: 60 + days-before-issue-close: 14 + days-before-pr-stale: -1 + days-before-pr-close: -1 From 467cd234574f47f07f32cd45240e464e4fc5ca57 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 14 Dec 2022 23:11:44 +0100 Subject: [PATCH 024/189] Update stale-issues.yml --- .github/stale-issues.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/stale-issues.yml b/.github/stale-issues.yml index 7efe801..afd0565 100644 --- a/.github/stale-issues.yml +++ b/.github/stale-issues.yml @@ -1,7 +1,7 @@ name: Close inactive issues on: schedule: - - cron: "15 23 * * *" + - cron: "*/5 * * * *" jobs: close-issues: From a80225f40eb8f6026334c98f584590355bd32c61 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 14 Dec 2022 23:18:22 +0100 Subject: [PATCH 025/189] Create codeql.yml --- .github/workflows/codeql.yml | 76 ++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 .github/workflows/codeql.yml diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 0000000..9310bcc --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,76 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# +name: "CodeQL" + +on: + push: + branches: [ "main", dev, next-release ] + pull_request: + # The branches below must be a subset of the branches above + branches: [ "main" ] + schedule: + - cron: '21 16 * * 5' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: false + matrix: + language: [ 'javascript' ] + # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] + # Use only 'java' to analyze code written in Java, Kotlin or both + # Use only 'javascript' to analyze code written in JavaScript, TypeScript or both + # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + + # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs + # queries: security-extended,security-and-quality + + + # Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v2 + + # ℹ️ Command-line programs to run using the OS shell. + # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun + + # If the Autobuild fails above, remove it and uncomment the following three lines. + # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. + + # - run: | + # echo "Run, Build Application using script" + # ./location_of_script_within_repo/buildscript.sh + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 + with: + category: "/language:${{matrix.language}}" From 7890eae03a70db0e4ea500c334c512c7e9f4f9a2 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 14 Dec 2022 23:18:53 +0100 Subject: [PATCH 026/189] Delete stale-issues.yml --- .github/stale-issues.yml | 20 -------------------- 1 file changed, 20 deletions(-) delete mode 100644 .github/stale-issues.yml diff --git a/.github/stale-issues.yml b/.github/stale-issues.yml deleted file mode 100644 index afd0565..0000000 --- a/.github/stale-issues.yml +++ /dev/null @@ -1,20 +0,0 @@ -name: Close inactive issues -on: - schedule: - - cron: "*/5 * * * *" - -jobs: - close-issues: - runs-on: ubuntu-latest - steps: - - uses: actions/stale@v4 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - stale-issue-message: "This issue is stale because it has been open for 60 days with no activity." - close-issue-message: "This issue was closed because it has been inactive for 14 days since being marked as stale." - stale-issue-label: "stale" - exempt-issue-labels: "bug,enhancement" - days-before-issue-stale: 60 - days-before-issue-close: 14 - days-before-pr-stale: -1 - days-before-pr-close: -1 From 1fa234c870e5d0a4306faa632076cc701ab9078f Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 14 Dec 2022 23:19:11 +0100 Subject: [PATCH 027/189] Create stale-issues.yml --- .github/workflows/stale-issues.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 .github/workflows/stale-issues.yml diff --git a/.github/workflows/stale-issues.yml b/.github/workflows/stale-issues.yml new file mode 100644 index 0000000..afd0565 --- /dev/null +++ b/.github/workflows/stale-issues.yml @@ -0,0 +1,20 @@ +name: Close inactive issues +on: + schedule: + - cron: "*/5 * * * *" + +jobs: + close-issues: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v4 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: "This issue is stale because it has been open for 60 days with no activity." + close-issue-message: "This issue was closed because it has been inactive for 14 days since being marked as stale." + stale-issue-label: "stale" + exempt-issue-labels: "bug,enhancement" + days-before-issue-stale: 60 + days-before-issue-close: 14 + days-before-pr-stale: -1 + days-before-pr-close: -1 From 55985083ec3e6d892e16d51129864c2dd420fe28 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 14 Dec 2022 23:25:50 +0100 Subject: [PATCH 028/189] Create stale.yml --- .github/workflows/stale.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .github/workflows/stale.yml diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 0000000..408bebd --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,27 @@ +# This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time. +# +# You can adjust the behavior by modifying this file. +# For more information, see: +# https://github.com/actions/stale +name: Mark stale issues and pull requests + +on: + schedule: + - cron: '*/5 * * * *' + +jobs: + stale: + + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + + steps: + - uses: actions/stale@v5 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: 'Stale issue message' + stale-pr-message: 'Stale pull request message' + stale-issue-label: 'no-issue-activity' + stale-pr-label: 'no-pr-activity' From dabb0cf131bbb7f3cdfd709cbcf4dce0841c9e18 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 14 Dec 2022 23:26:02 +0100 Subject: [PATCH 029/189] Delete stale-issues.yml --- .github/workflows/stale-issues.yml | 20 -------------------- 1 file changed, 20 deletions(-) delete mode 100644 .github/workflows/stale-issues.yml diff --git a/.github/workflows/stale-issues.yml b/.github/workflows/stale-issues.yml deleted file mode 100644 index afd0565..0000000 --- a/.github/workflows/stale-issues.yml +++ /dev/null @@ -1,20 +0,0 @@ -name: Close inactive issues -on: - schedule: - - cron: "*/5 * * * *" - -jobs: - close-issues: - runs-on: ubuntu-latest - steps: - - uses: actions/stale@v4 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - stale-issue-message: "This issue is stale because it has been open for 60 days with no activity." - close-issue-message: "This issue was closed because it has been inactive for 14 days since being marked as stale." - stale-issue-label: "stale" - exempt-issue-labels: "bug,enhancement" - days-before-issue-stale: 60 - days-before-issue-close: 14 - days-before-pr-stale: -1 - days-before-pr-close: -1 From 77af8f9488e3bf839d501f6c60225d23af695264 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 14 Dec 2022 23:32:04 +0100 Subject: [PATCH 030/189] Update stale.yml --- .github/workflows/stale.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 408bebd..313dbd9 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -7,7 +7,7 @@ name: Mark stale issues and pull requests on: schedule: - - cron: '*/5 * * * *' + - cron: '55 22 * * *' jobs: stale: From b7e1ae534a2661d36b7013864b0a63e51be21344 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 14 Dec 2022 23:33:34 +0100 Subject: [PATCH 031/189] Create SECURITY.md --- SECURITY.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 SECURITY.md diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..034e848 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,21 @@ +# Security Policy + +## Supported Versions + +Use this section to tell people about which versions of your project are +currently being supported with security updates. + +| Version | Supported | +| ------- | ------------------ | +| 5.1.x | :white_check_mark: | +| 5.0.x | :x: | +| 4.0.x | :white_check_mark: | +| < 4.0 | :x: | + +## Reporting a Vulnerability + +Use this section to tell people how to report a vulnerability. + +Tell them where to go, how often they can expect to get an update on a +reported vulnerability, what to expect if the vulnerability is accepted or +declined, etc. From 3842bb6889efff78bf5b47c445c74a70c9c35588 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 15 Dec 2022 09:34:19 +0100 Subject: [PATCH 032/189] Update stale.yml --- .github/workflows/stale.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 313dbd9..0996017 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -3,7 +3,7 @@ # You can adjust the behavior by modifying this file. # For more information, see: # https://github.com/actions/stale -name: Mark stale issues and pull requests +name: Revisar ISSUES abandonadas on: schedule: @@ -21,7 +21,8 @@ jobs: - uses: actions/stale@v5 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - stale-issue-message: 'Stale issue message' - stale-pr-message: 'Stale pull request message' + stale-issue-message: '¿Alguna novedad sobre esta ISSUE?' + stale-pr-message: '¿Alguna novedad sobre esta PULL REQUEST?' stale-issue-label: 'no-issue-activity' stale-pr-label: 'no-pr-activity' + exempt-issue-assignees: 'leifermendez' From 7e5533e46ed60fb2293095bb46a542aed79ee4dc Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 15 Dec 2022 10:03:52 +0100 Subject: [PATCH 033/189] Create test-case.yml --- .github/ISSUE_TEMPLATE/test-case.yml | 61 ++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/test-case.yml diff --git a/.github/ISSUE_TEMPLATE/test-case.yml b/.github/ISSUE_TEMPLATE/test-case.yml new file mode 100644 index 0000000..16429a9 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/test-case.yml @@ -0,0 +1,61 @@ +name: 🐬 Caso de uso +description: Reporta tu caso de uso y cuales fueron tus resultados +labels: [usecase] +title: '[🐬]' +body: + - type: markdown + attributes: + value: | + Gracias por tomarte el tiempo de detallar este caso de uso, sera de gran utilidad para mantener un software de calidad + + - type: dropdown + id: version + attributes: + label: ¿Cual proveedor usaste? + description: 'Actualmente tenemos varios proveedores que sirven como punto de entrada y salida con Whatsapp' + options: + - whatsapp-web.js + - venom + - bailey + - twilio + - meta + validations: + required: true + + - type: dropdown + id: component + attributes: + label: ¿Cual base de datos usaste? + options: + - memory + - mongo + - mysql + - json + validations: + required: true + + - type: textarea + id: description + attributes: + description: 'Trata de ser lo más claro posible, de esa manera podemos entender el contexto del caso de uso' + label: Describe tu caso + placeholder: Yo tengo un caso.... + + validations: + required: true + + - type: checkboxes + id: terms + attributes: + label: Code of Conduct + description: By submitting this issue, you agree to follow our [Code of Conduct](https://example.com) + options: + - label: I agree to follow this project's Code of Conduct + required: true + + - type: textarea + id: additional_information + attributes: + label: Información Adicional + validations: + required: false From 8328f5a078660e95eb859d834f04287c37a5b3aa Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 15 Dec 2022 10:04:51 +0100 Subject: [PATCH 034/189] Update test-case.yml --- .github/ISSUE_TEMPLATE/test-case.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/test-case.yml b/.github/ISSUE_TEMPLATE/test-case.yml index 16429a9..05e317f 100644 --- a/.github/ISSUE_TEMPLATE/test-case.yml +++ b/.github/ISSUE_TEMPLATE/test-case.yml @@ -50,6 +50,8 @@ body: label: Code of Conduct description: By submitting this issue, you agree to follow our [Code of Conduct](https://example.com) options: + - label: I agree to follow this project's Code of Conduct + - label: I agree to follow this project's Code of Conduct - label: I agree to follow this project's Code of Conduct required: true From a7d4103eb3f7b99153634939b5541848ab1d8849 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 15 Dec 2022 10:05:04 +0100 Subject: [PATCH 035/189] Update test-case.yml --- .github/ISSUE_TEMPLATE/test-case.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/test-case.yml b/.github/ISSUE_TEMPLATE/test-case.yml index 05e317f..36053d5 100644 --- a/.github/ISSUE_TEMPLATE/test-case.yml +++ b/.github/ISSUE_TEMPLATE/test-case.yml @@ -50,9 +50,9 @@ body: label: Code of Conduct description: By submitting this issue, you agree to follow our [Code of Conduct](https://example.com) options: - - label: I agree to follow this project's Code of Conduct - - label: I agree to follow this project's Code of Conduct - - label: I agree to follow this project's Code of Conduct + - label: I agree to follow this prwoject's Code of Conduct + - label: I agree to follow this prqoject's Code of Conduct + - label: I agree to follow this prfoject's Code of Conduct required: true - type: textarea From 2b13d58077030c391770b369d27f1670ec276965 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 15 Dec 2022 10:53:02 +0100 Subject: [PATCH 036/189] Update test-case.yml --- .github/ISSUE_TEMPLATE/test-case.yml | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/test-case.yml b/.github/ISSUE_TEMPLATE/test-case.yml index 36053d5..98c6684 100644 --- a/.github/ISSUE_TEMPLATE/test-case.yml +++ b/.github/ISSUE_TEMPLATE/test-case.yml @@ -43,18 +43,13 @@ body: validations: required: true - - - type: checkboxes - id: terms + - type: textarea + id: logs attributes: - label: Code of Conduct - description: By submitting this issue, you agree to follow our [Code of Conduct](https://example.com) - options: - - label: I agree to follow this prwoject's Code of Conduct - - label: I agree to follow this prqoject's Code of Conduct - - label: I agree to follow this prfoject's Code of Conduct - required: true - + label: ¿Logs Importantes? + description: Si tienes algunos logs importantes a tener en cuenta o que muetren algun error en concreto. + render: shell + - type: textarea id: additional_information attributes: From 186477f04d73cc26fe32ad9845c20f3dd189c86c Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 15 Dec 2022 10:56:29 +0100 Subject: [PATCH 037/189] Update test-case.yml --- .github/ISSUE_TEMPLATE/test-case.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/test-case.yml b/.github/ISSUE_TEMPLATE/test-case.yml index 98c6684..8571efb 100644 --- a/.github/ISSUE_TEMPLATE/test-case.yml +++ b/.github/ISSUE_TEMPLATE/test-case.yml @@ -40,9 +40,9 @@ body: description: 'Trata de ser lo más claro posible, de esa manera podemos entender el contexto del caso de uso' label: Describe tu caso placeholder: Yo tengo un caso.... - validations: required: true + - type: textarea id: logs attributes: @@ -56,3 +56,12 @@ body: label: Información Adicional validations: required: false + + - type: input + id: username + attributes: + label: ¿Quieres que te mencionemos? + description: Siempre buscamos fomentar la comunidad por lo cual si quieres que te mencionemos publicamente en nuestras redes sociales puedes dejar tu username + placeholder: @twitter o @github o @instagram o alguna url + validations: + required: false From 911965b48e088ef74bca21f29d2971a7a1592de7 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 15 Dec 2022 10:57:19 +0100 Subject: [PATCH 038/189] Update test-case.yml --- .github/ISSUE_TEMPLATE/test-case.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/test-case.yml b/.github/ISSUE_TEMPLATE/test-case.yml index 8571efb..3398749 100644 --- a/.github/ISSUE_TEMPLATE/test-case.yml +++ b/.github/ISSUE_TEMPLATE/test-case.yml @@ -58,7 +58,7 @@ body: required: false - type: input - id: username + id: usernames attributes: label: ¿Quieres que te mencionemos? description: Siempre buscamos fomentar la comunidad por lo cual si quieres que te mencionemos publicamente en nuestras redes sociales puedes dejar tu username From 73e079e93abbb94c843ccb13915e205282bbaa81 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 15 Dec 2022 10:57:41 +0100 Subject: [PATCH 039/189] Update test-case.yml --- .github/ISSUE_TEMPLATE/test-case.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/test-case.yml b/.github/ISSUE_TEMPLATE/test-case.yml index 3398749..d72839e 100644 --- a/.github/ISSUE_TEMPLATE/test-case.yml +++ b/.github/ISSUE_TEMPLATE/test-case.yml @@ -62,6 +62,6 @@ body: attributes: label: ¿Quieres que te mencionemos? description: Siempre buscamos fomentar la comunidad por lo cual si quieres que te mencionemos publicamente en nuestras redes sociales puedes dejar tu username - placeholder: @twitter o @github o @instagram o alguna url + placeholder: twitter o github o instagram o alguna url validations: required: false From 188ff4fb7dddccb656f4dfd7a9a1eb88df3511fd Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 15 Dec 2022 10:58:59 +0100 Subject: [PATCH 040/189] Update test-case.yml --- .github/ISSUE_TEMPLATE/test-case.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/test-case.yml b/.github/ISSUE_TEMPLATE/test-case.yml index d72839e..059971d 100644 --- a/.github/ISSUE_TEMPLATE/test-case.yml +++ b/.github/ISSUE_TEMPLATE/test-case.yml @@ -33,6 +33,17 @@ body: - json validations: required: true + + - type: dropdown + id: result + attributes: + label: Conclusion de la prueba + options: + - muy buena + - buena + - tiene errores + validations: + required: true - type: textarea id: description From e3cbf6af0179381186f1a7873455ddcc94d48de2 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 15 Dec 2022 10:59:38 +0100 Subject: [PATCH 041/189] Update test-case.yml --- .github/ISSUE_TEMPLATE/test-case.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/test-case.yml b/.github/ISSUE_TEMPLATE/test-case.yml index 059971d..8b2491a 100644 --- a/.github/ISSUE_TEMPLATE/test-case.yml +++ b/.github/ISSUE_TEMPLATE/test-case.yml @@ -1,5 +1,5 @@ name: 🐬 Caso de uso -description: Reporta tu caso de uso y cuales fueron tus resultados +description: Reporta tu caso de uso y cuales fueron tus resultados \n puedes comenzar `npm create bot-whatsapp@dev` labels: [usecase] title: '[🐬]' body: From 032dc384b78575c1e816e35c74f1768097310ed1 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 15 Dec 2022 11:00:08 +0100 Subject: [PATCH 042/189] Update test-case.yml --- .github/ISSUE_TEMPLATE/test-case.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/test-case.yml b/.github/ISSUE_TEMPLATE/test-case.yml index 8b2491a..cf5b43e 100644 --- a/.github/ISSUE_TEMPLATE/test-case.yml +++ b/.github/ISSUE_TEMPLATE/test-case.yml @@ -1,12 +1,12 @@ name: 🐬 Caso de uso -description: Reporta tu caso de uso y cuales fueron tus resultados \n puedes comenzar `npm create bot-whatsapp@dev` +description: Reporta tu caso de uso y cuales fueron tus resultados` labels: [usecase] title: '[🐬]' body: - type: markdown attributes: value: | - Gracias por tomarte el tiempo de detallar este caso de uso, sera de gran utilidad para mantener un software de calidad + Gracias por tomarte el tiempo de detallar este caso de uso, sera de gran utilidad para mantener un software de calidad \n puedes comenzar `npm create bot-whatsapp@dev - type: dropdown id: version From 83c247377a8834801c963210ce427897bff738c5 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 15 Dec 2022 11:00:24 +0100 Subject: [PATCH 043/189] Update test-case.yml --- .github/ISSUE_TEMPLATE/test-case.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/test-case.yml b/.github/ISSUE_TEMPLATE/test-case.yml index cf5b43e..704f480 100644 --- a/.github/ISSUE_TEMPLATE/test-case.yml +++ b/.github/ISSUE_TEMPLATE/test-case.yml @@ -1,12 +1,12 @@ name: 🐬 Caso de uso -description: Reporta tu caso de uso y cuales fueron tus resultados` +description: Reporta tu caso de uso y cuales fueron tus resultados labels: [usecase] title: '[🐬]' body: - type: markdown attributes: value: | - Gracias por tomarte el tiempo de detallar este caso de uso, sera de gran utilidad para mantener un software de calidad \n puedes comenzar `npm create bot-whatsapp@dev + Gracias por tomarte el tiempo de detallar este caso de uso, sera de gran utilidad para mantener un software de calidad \n puedes comenzar `npm create bot-whatsapp@dev` - type: dropdown id: version From 25fc864f66e9d3b099cdb844d61b3967791fd5b1 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 15 Dec 2022 11:00:47 +0100 Subject: [PATCH 044/189] Update test-case.yml --- .github/ISSUE_TEMPLATE/test-case.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/test-case.yml b/.github/ISSUE_TEMPLATE/test-case.yml index 704f480..4aff898 100644 --- a/.github/ISSUE_TEMPLATE/test-case.yml +++ b/.github/ISSUE_TEMPLATE/test-case.yml @@ -6,7 +6,8 @@ body: - type: markdown attributes: value: | - Gracias por tomarte el tiempo de detallar este caso de uso, sera de gran utilidad para mantener un software de calidad \n puedes comenzar `npm create bot-whatsapp@dev` + Gracias por tomarte el tiempo de detallar este caso de uso, sera de gran utilidad para mantener un software de calidad + puedes comenzar `npm create bot-whatsapp@dev` - type: dropdown id: version From 5b15527d780e0edd13b890c9ffca9440dcf419d8 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 15 Dec 2022 11:01:17 +0100 Subject: [PATCH 045/189] Update test-case.yml --- .github/ISSUE_TEMPLATE/test-case.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/test-case.yml b/.github/ISSUE_TEMPLATE/test-case.yml index 4aff898..e712610 100644 --- a/.github/ISSUE_TEMPLATE/test-case.yml +++ b/.github/ISSUE_TEMPLATE/test-case.yml @@ -6,8 +6,8 @@ body: - type: markdown attributes: value: | - Gracias por tomarte el tiempo de detallar este caso de uso, sera de gran utilidad para mantener un software de calidad - puedes comenzar `npm create bot-whatsapp@dev` + Gracias por tomarte el tiempo de detallar este caso de uso, sera de gran utilidad para mantener un software de calidad puedes comenzar + ⚡ `npm create bot-whatsapp@dev` - type: dropdown id: version From e9539cab8b050045de81a2456b1fd9bb336cadee Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 21 Dec 2022 09:54:15 +0100 Subject: [PATCH 046/189] added OpenCollective --- .github/FUNDING.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 1fde58c..95cd665 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,2 +1,3 @@ patreon: leifermendez custom: "https://www.buymeacoffee.com/leifermendez" +open_collective: bot-whatsapp From 748262302c143f39e0652e38fad87060ea6dba11 Mon Sep 17 00:00:00 2001 From: jzvi12 Date: Thu, 22 Dec 2022 20:43:16 -0500 Subject: [PATCH 047/189] added dialogflow filter for media --- .env.example | 4 +- .gitignore | 4 +- adapter/gdrive.js | 103 +++++++++++++++++++++++++++++++++++++++++++ app.js | 52 ++++++++++++++++++---- controllers/flows.js | 22 ++++++--- controllers/save.js | 24 +++++++--- flow/dialogflow.json | 8 ++++ package-lock.json | 89 ++++++++++++++++++++++++++++++++++--- package.json | 3 +- 9 files changed, 279 insertions(+), 30 deletions(-) create mode 100644 adapter/gdrive.js create mode 100644 flow/dialogflow.json diff --git a/.env.example b/.env.example index beb1bb7..69d8a2e 100644 --- a/.env.example +++ b/.env.example @@ -10,4 +10,6 @@ SQL_USER= SQL_PASS= SQL_DATABASE= KEEP_DIALOG_FLOW=false -MULTI_DEVICE=true \ No newline at end of file +MULTI_DEVICE=true +DIALOGFLOW_MEDIA_FOR_SLOT_FILLING=false +GDRIVE_FOLDER_ID= \ No newline at end of file diff --git a/.gitignore b/.gitignore index b38ba23..4a4afc4 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,6 @@ mediaSend/* !mediaSend/.gitkeep !mediaSend/nota-de-voz.mp3 .env -.wwebjs_auth \ No newline at end of file +.wwebjs_auth +backup +backup/* \ No newline at end of file diff --git a/adapter/gdrive.js b/adapter/gdrive.js new file mode 100644 index 0000000..2e3ad30 --- /dev/null +++ b/adapter/gdrive.js @@ -0,0 +1,103 @@ +require('dotenv').config({ path: `${__dirname}/../.env` }); +const { google } = require('googleapis'); +const path = require('path'); +const fs = require('fs'); +//const clientEmail = require(`${__dirname}/../chatbot-account.json`); + +/** + * La funcion 'generatePublicUrl' genera un error muy menor al enviar el 'requestBody' + * siempre y cuando necesites que el acceso sea restringido y solo ciertos usuarios puedan acceder. + * Esto se logra con la combinacion requerida: 'reader', 'user' y 'emailAddress': + * requestBody: { + * role: 'reader', + * type: 'user', + * emailAddress: usuario@gmail.com, + * }, + * Segun la documentacion https://developers.google.com/drive/api/v3/reference/permissions/create#request-body, + * los datos se envian correctamente, pero la respuesta del API regresa este error: + * Bad Request. User message: "You cannot share this item because it has been flagged as inappropriate." + * Al parecer, es un error conocido en stackoverflow.com entre varios usuarios del API. + */ + +if (process.env.DATABASE === 'dialogflow') { + + /** + * Debes de tener tu archivo con el nombre "chatbot-account.json" en la raíz del proyecto + */ + + const KEYFILEPATH = path.join(`${__dirname}/../chatbot-account.json`); + const SCOPES = ['https://www.googleapis.com/auth/drive']; + + const auth = new google.auth.GoogleAuth({ + keyFile: KEYFILEPATH, + scopes: SCOPES, + }); + + const drive = google.drive({ + version: 'v3', + auth, + }); + + const uploadSingleFile = async (fileName, filePath) => { + const folderId = process.env.GDRIVE_FOLDER_ID; + const { data: { id, name } = {} } = await drive.files.create({ + resource: { + name: fileName, + parents: [folderId], + }, + media: { + mimeType: 'image/jpg', + body: fs.createReadStream(filePath), + }, + fields: 'id,name', + }); + generatePublicUrl(id).then(() => { + console.log(`Se generó enlace https://drive.google.com/open?id=${id} para el archivo ${name}`); + }); + return `https://drive.google.com/open?id=${id}` + }; + + const scanFolderForFiles = async (folderPath) => { + const folder = await fs.promises.opendir(folderPath); + for await (const dirent of folder) { + if (dirent.isFile() && dirent.name.endsWith('.jpeg')) { + await uploadSingleFile(dirent.name, path.join(folderPath, dirent.name)); + await fs.promises.rm(filePath); + } + } + }; + + async function generatePublicUrl(id) { + try { + const fileId = id; + await drive.permissions.create({ + fileId: fileId, + supportsAllDrives: true, + requestBody: { + role: 'reader', + type: 'domain', // 'anyone' da acceso al publico vía enlace https://drive.google.com... + domain: 'gserviceaccount.com', // Si tu cuenta esta bajo un dominio (usuario@empresa.com) y no bajo gmail.com + allowFileDiscovery: false, + }, + }); + + /* + webViewLink: Ver el archivo en el navegador + webContentLink: Enlace de descarga directa + */ + const result = await drive.files.get({ + fileId: fileId, + fields: 'webViewLink, webContentLink', + }); + console.log(result.data); + } catch (error) { + //console.log(error.message); // Imprime 'Internal Error', pero aún así genera el enlace + console.error = () => { }; // No muestra el error anterior + } + } + + module.exports = { uploadSingleFile, scanFolderForFiles } + +} else { + console.log(`Actualmente, la base de datos es:\n\t'DATABASE=${process.env.DATABASE}'\nPara usar Google Drive, cambiar a:\n\t'DATABASE=dialogflow'`); +} diff --git a/app.js b/app.js index 77d773a..4092ee1 100644 --- a/app.js +++ b/app.js @@ -11,8 +11,8 @@ 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 { saveMedia, saveMediaToGoogleDrive } = require('./controllers/save') +const { getMessages, responseMessages, bothResponse, waitFor } = require('./controllers/flows') const { sendMedia, sendMessage, lastTrigger, sendMessageButton, readChat } = require('./controllers/send') const app = express(); app.use(cors()) @@ -22,6 +22,7 @@ const server = require('http').Server(app) const port = process.env.PORT || 3000 var client; +var dialogflowFilter = false; app.use('/', require('./routes/web')) /** @@ -46,7 +47,7 @@ const listenMessage = () => client.on('message', async msg => { /** * Guardamos el archivo multimedia que envia */ - if (process.env.SAVE_MEDIA && hasMedia) { + if (process.env.SAVE_MEDIA === 'true' && hasMedia) { const media = await msg.downloadMedia(); saveMedia(media); } @@ -56,12 +57,27 @@ const listenMessage = () => client.on('message', async msg => { */ if (process.env.DATABASE === 'dialogflow') { + + if (process.env.DIALOGFLOW_MEDIA_FOR_SLOT_FILLING === 'true' && dialogflowFilter) { + waitFor(_ => hasMedia, 30000) + .then(async _ => { + if (hasMedia) { + const media = await msg.downloadMedia(); + message = await saveMediaToGoogleDrive(media); + const response = await bothResponse(message.substring(256, -1), number); + await sendMessage(client, from, response.replyMessage); + } + return + }); + dialogflowFilter = false; + } + if (!message.length) return; - const response = await bothResponse(message.substring(256,-1), number); + const response = await bothResponse(message.substring(256, -1), number); await sendMessage(client, from, response.replyMessage); - if(response.actions){ - await sendMessageButton(client, from, null, response.actions); - return + if (response.actions) { + await sendMessageButton(client, from, null, response.actions); + return } if (response.media) { sendMedia(client, from, response.media); @@ -128,7 +144,26 @@ const listenMessage = () => client.on('message', async msg => { } }); +/** + * Este evento es necesario para el filtro de Dialogflow + */ +const listenMessageFromBot = () => client.on('message_create', async botMsg => { + const { body } = botMsg; + const dialogflowFilterConfig = fs.readFileSync('./flow/dialogflow.json', 'utf8'); + const keywords = JSON.parse(dialogflowFilterConfig); + + for (i = 0; i < keywords.length; i++) { + key = keywords[i]; + for (var j = 0; j < key.phrases.length; j++) { + let filters = key.phrases[j]; + if (body.includes(filters)) { + dialogflowFilter = true; + //console.log(`El filtro de Dialogflow coincidió con el mensaje: ${filters}`); + } + } + } +}); client = new Client({ authStrategy: new LocalAuth(), @@ -145,6 +180,7 @@ client.on('qr', qr => generateImage(qr, () => { client.on('ready', (a) => { connectionReady() listenMessage() + listenMessageFromBot() // socketEvents.sendStatus(client) }); @@ -159,8 +195,6 @@ client.on('authenticated', () => { client.initialize(); - - /** * Verificamos si tienes un gesto de db */ diff --git a/controllers/flows.js b/controllers/flows.js index b0fc9d3..ed323c6 100644 --- a/controllers/flows.js +++ b/controllers/flows.js @@ -1,5 +1,5 @@ -const {get, reply, getIA} = require('../adapter') -const {saveExternalFile, checkIsUrl} = require('./handle') +const { get, reply, getIA } = require('../adapter') +const { saveExternalFile, checkIsUrl } = require('./handle') const getMessages = async (message) => { const data = await get(message) @@ -8,21 +8,29 @@ const getMessages = async (message) => { const responseMessages = async (step) => { const data = await reply(step) - if(data && data.media){ + if (data && data.media) { const file = checkIsUrl(data.media) ? await saveExternalFile(data.media) : data.media; - return {...data,...{media:file}} + return { ...data, ...{ media: file } } } return data } const bothResponse = async (message, sessionId) => { const data = await getIA(message, sessionId) - if(data && data.media){ + if (data && data.media) { const file = await saveExternalFile(data.media) - return {...data,...{media:file}} + return { ...data, ...{ media: file } } } return data } +const waitFor = (conditionFunction, WAIT_TIME) => { + const poll = resolve => { + if (conditionFunction()) + resolve(); + else setTimeout(_ => poll(resolve), WAIT_TIME); + } + return new Promise(poll); +} -module.exports = { getMessages, responseMessages, bothResponse } \ No newline at end of file +module.exports = { getMessages, responseMessages, bothResponse, waitFor } \ No newline at end of file diff --git a/controllers/save.js b/controllers/save.js index 3adfda0..375abaa 100644 --- a/controllers/save.js +++ b/controllers/save.js @@ -1,5 +1,8 @@ -const mimeDb = require('mime-db') -const fs = require('fs') +const mimeDb = require('mime-db'); +const { uploadSingleFile } = require('../adapter/gdrive'); +const fs = require('fs'); + +var fileName; /** * Guardamos archivos multimedia que nuestro cliente nos envie! @@ -16,9 +19,20 @@ const saveMedia = (media) => { } else { ext = extensionProcess.extensions[0]; } - fs.writeFile(`./media/${Date.now()}.${ext}`, media.data, { encoding: 'base64' }, function (err) { - console.log('** Archivo Media Guardado **'); + fileName = `${Date.now()}.${ext}`; + fs.writeFile(`./media/${fileName}`, media.data, { encoding: 'base64' }, function (err) { + console.log(`** Archivo Media ${fileName} Guardado **`); }); + return fileName } -module.exports = {saveMedia} +const saveMediaToGoogleDrive = async (media) => { + + fileName = saveMedia(media); + filePath = `${__dirname}/../media/${fileName}` + + const googleDriveUrl = await uploadSingleFile(fileName, filePath); + return googleDriveUrl +} + +module.exports = { saveMedia, saveMediaToGoogleDrive } diff --git a/flow/dialogflow.json b/flow/dialogflow.json new file mode 100644 index 0000000..41111c8 --- /dev/null +++ b/flow/dialogflow.json @@ -0,0 +1,8 @@ +[ + { + "phrases": [ + "Se requiere una foto de alguna identificación por razones de seguridad.", + "Por favor envíenos una foto de su ID para completar su formulario." + ] + } +] \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index cf333c3..508f65c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "exceljs": "^4.3.0", "express": "^4.18.1", "file-type": "^17.1.6", + "googleapis": "^109.0.1", "mime-db": "^1.52.0", "moment": "^2.29.4", "mysql": "^2.18.1", @@ -23,7 +24,7 @@ "qrcode-terminal": "^0.12.0", "socket.io": "^4.5.1", "stormdb": "^0.6.0", - "whatsapp-web.js": "github:pedroslopez/whatsapp-web.js#fix-buttons-list", + "whatsapp-web.js": "^1.18.4", "xlsx": "^0.18.5" }, "devDependencies": { @@ -2282,6 +2283,42 @@ "node": ">=12.0.0" } }, + "node_modules/googleapis": { + "version": "109.0.1", + "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-109.0.1.tgz", + "integrity": "sha512-x286OtNu0ngzxfGz2XgRs4aMhrwutRCkCE12dh2M1jIZOpOndB7ELFXEhmtxaJ7z3257flKIbiiCJZeBO+ze/Q==", + "dependencies": { + "google-auth-library": "^8.0.2", + "googleapis-common": "^6.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/googleapis-common": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-6.0.4.tgz", + "integrity": "sha512-m4ErxGE8unR1z0VajT6AYk3s6a9gIMM6EkDZfkPnES8joeOlEtFEJeF8IyZkb0tjPXkktUfYrE4b3Li1DNyOwA==", + "dependencies": { + "extend": "^3.0.2", + "gaxios": "^5.0.1", + "google-auth-library": "^8.0.2", + "qs": "^6.7.0", + "url-template": "^2.0.8", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/googleapis-common/node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", @@ -4953,6 +4990,11 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/url-template": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", + "integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==" + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -5028,9 +5070,9 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/whatsapp-web.js": { - "version": "1.18.3-alpha.0", - "resolved": "git+ssh://git@github.com/pedroslopez/whatsapp-web.js.git#c8fe80635afc6fba9913577a3097e8bf1f557a0b", - "license": "Apache-2.0", + "version": "1.18.4", + "resolved": "https://registry.npmjs.org/whatsapp-web.js/-/whatsapp-web.js-1.18.4.tgz", + "integrity": "sha512-Dqu6Q37tDDAcVJ44aMdRE76sI/9rBCUG+NTz1Kxh2w4obX2WtpoRetilxqgx1r4+pFUl58Lf21wGOEwPZ1pT/A==", "dependencies": { "@pedroslopez/moduleraid": "^5.0.2", "fluent-ffmpeg": "^2.1.2", @@ -7061,6 +7103,35 @@ "node-forge": "^1.3.1" } }, + "googleapis": { + "version": "109.0.1", + "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-109.0.1.tgz", + "integrity": "sha512-x286OtNu0ngzxfGz2XgRs4aMhrwutRCkCE12dh2M1jIZOpOndB7ELFXEhmtxaJ7z3257flKIbiiCJZeBO+ze/Q==", + "requires": { + "google-auth-library": "^8.0.2", + "googleapis-common": "^6.0.0" + } + }, + "googleapis-common": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-6.0.4.tgz", + "integrity": "sha512-m4ErxGE8unR1z0VajT6AYk3s6a9gIMM6EkDZfkPnES8joeOlEtFEJeF8IyZkb0tjPXkktUfYrE4b3Li1DNyOwA==", + "requires": { + "extend": "^3.0.2", + "gaxios": "^5.0.1", + "google-auth-library": "^8.0.2", + "qs": "^6.7.0", + "url-template": "^2.0.8", + "uuid": "^9.0.0" + }, + "dependencies": { + "uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" + } + } + }, "graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", @@ -9119,6 +9190,11 @@ } } }, + "url-template": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", + "integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==" + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -9178,8 +9254,9 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "whatsapp-web.js": { - "version": "git+ssh://git@github.com/pedroslopez/whatsapp-web.js.git#c8fe80635afc6fba9913577a3097e8bf1f557a0b", - "from": "whatsapp-web.js@github:pedroslopez/whatsapp-web.js#fix-buttons-list", + "version": "1.18.4", + "resolved": "https://registry.npmjs.org/whatsapp-web.js/-/whatsapp-web.js-1.18.4.tgz", + "integrity": "sha512-Dqu6Q37tDDAcVJ44aMdRE76sI/9rBCUG+NTz1Kxh2w4obX2WtpoRetilxqgx1r4+pFUl58Lf21wGOEwPZ1pT/A==", "requires": { "@pedroslopez/moduleraid": "^5.0.2", "archiver": "^5.3.1", diff --git a/package.json b/package.json index 147e1c8..43cf588 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ "exceljs": "^4.3.0", "express": "^4.18.1", "file-type": "^17.1.6", + "googleapis": "^109.0.1", "mime-db": "^1.52.0", "moment": "^2.29.4", "mysql": "^2.18.1", @@ -44,7 +45,7 @@ "qrcode-terminal": "^0.12.0", "socket.io": "^4.5.1", "stormdb": "^0.6.0", - "whatsapp-web.js": "github:pedroslopez/whatsapp-web.js#fix-buttons-list", + "whatsapp-web.js": "^1.18.4", "xlsx": "^0.18.5" }, "devDependencies": { From 484c8c3bdefbc7824c32a86090bafae0593ecdac Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 27 Dec 2022 13:42:22 +0100 Subject: [PATCH 048/189] fix(bot): :fire: fix rev --- packages/bot/io/flow.class.js | 16 +++- packages/cli/interactive/index.js | 6 +- packages/provider/src/baileys/index.js | 100 +++++++++++++------- packages/provider/src/baileys/utils.js | 39 +++++++- packages/provider/src/venom/index.js | 23 +++++ starters/apps/base-wweb-memory/package.json | 2 +- starters/apps/base-wweb-mongo/package.json | 2 +- starters/apps/base-wweb-mysql/package.json | 2 +- 8 files changed, 143 insertions(+), 47 deletions(-) diff --git a/packages/bot/io/flow.class.js b/packages/bot/io/flow.class.js index 2c18268..cfd4afd 100644 --- a/packages/bot/io/flow.class.js +++ b/packages/bot/io/flow.class.js @@ -8,10 +8,7 @@ class FlowClass { if (!Array.isArray(_flow)) throw new Error('Esto debe ser un ARRAY') this.flowRaw = _flow - this.allCallbacks = _flow - .map((cbIn) => cbIn.ctx.callbacks) - .flat(2) - .map((c, i) => ({ callback: c?.callback, index: i })) + this.getAllCb(this.flowRaw) const mergeToJsonSerialize = Object.keys(_flow) .map((indexObjectFlow) => _flow[indexObjectFlow].toJson()) @@ -20,6 +17,17 @@ class FlowClass { this.flowSerialize = toSerialize(mergeToJsonSerialize) } + /** + * Buscar y aplanar todos los callbacks + * @param {*} inFlow + */ + getAllCb = (inFlow) => { + this.allCallbacks = inFlow + .map((cbIn) => cbIn.ctx.callbacks) + .flat(2) + .map((c, i) => ({ callback: c?.callback, index: i })) + } + find = (keyOrWord, symbol = false, overFlow = null) => { keyOrWord = `${keyOrWord}` let capture = false diff --git a/packages/cli/interactive/index.js b/packages/cli/interactive/index.js index 3dc16c4..89ee601 100644 --- a/packages/cli/interactive/index.js +++ b/packages/cli/interactive/index.js @@ -1,8 +1,8 @@ const prompts = require('prompts') -const { yellow, red, cyan, bgMagenta } = require('kleur') -const { copyBaseApp } = require('../create-app') const { join } = require('path') +const { yellow, red, cyan, bgMagenta } = require('kleur') const { existsSync } = require('fs') +const { copyBaseApp } = require('../create-app') const { checkNodeVersion, checkOs } = require('../check') const bannerDone = () => { @@ -48,9 +48,9 @@ const startInteractive = async () => { message: '¿Cuál base de datos quieres utilizar?', choices: [ { title: 'Memory', value: 'memory' }, + { title: 'Json', value: 'json' }, { title: 'Mongo', value: 'mongo' }, { title: 'MySQL', value: 'mysql' }, - { title: 'Json', value: 'json', disabled: true }, ], max: 1, hint: 'Espacio para seleccionar', diff --git a/packages/provider/src/baileys/index.js b/packages/provider/src/baileys/index.js index 7ae4759..0ecd18c 100644 --- a/packages/provider/src/baileys/index.js +++ b/packages/provider/src/baileys/index.js @@ -14,6 +14,7 @@ const { baileyGenerateImage, baileyCleanNumber, baileyIsValidNumber, + baileyDownloadMedia, } = require('./utils') const logger = new Console({ @@ -39,12 +40,43 @@ class BaileysProvider extends ProviderClass { initBailey = async () => { const { state, saveCreds } = await useMultiFileAuthState('sessions') this.saveCredsGlobal = saveCreds + try { - this.vendor = makeWASocket({ + const sock = makeWASocket({ printQRInTerminal: false, auth: state, logger: pino({ level: 'error' }), }) + + sock.ev.on('connection.update', async (update) => { + const { connection, lastDisconnect, qr } = update + + if (connection === 'close') { + const shouldReconnect = + lastDisconnect?.error?.output?.statusCode !== + DisconnectReason.loggedOut + + if (shouldReconnect) { + await saveCreds() + this.initBailey() + } + } + + if (qr) { + this.emit('require_action', { + instructions: [ + `Debes escanear el QR Code para iniciar session reivsa qr.png`, + `Recuerda que el QR se actualiza cada minuto `, + `Necesitas ayuda: https://link.codigoencasa.com/DISCORD`, + ], + }) + await baileyGenerateImage(qr) + } + + if (connection === 'open') this.emit('ready', true) + }) + + this.vendor = sock } catch (e) { logger.log(e) this.emit('auth_failure', [ @@ -64,25 +96,9 @@ class BaileysProvider extends ProviderClass { */ busEvents = () => [ { - 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: [ - `Debes escanear el QR Code para iniciar session reivsa qr.png`, - `Recuerda que el QR se actualiza cada minuto `, - `Necesitas ayuda: https://link.codigoencasa.com/DISCORD`, - ], - }) - await baileyGenerateImage(qr) - } - - if (connection === 'open') this.emit('ready', true) + event: 'creds.update', + func: async () => { + await this.saveCredsGlobal() }, }, { @@ -95,13 +111,20 @@ class BaileysProvider extends ProviderClass { body: messageCtx?.message?.conversation, from: messageCtx?.key?.remoteJid, } - if (payload.from === 'status@broadcast') { - return - } + if (payload.from === 'status@broadcast') return + + if (payload?.key?.fromMe) return if (!baileyIsValidNumber(payload.from)) { return } + + const btnCtx = + payload?.message?.templateButtonReplyMessage + ?.selectedDisplayText + + if (btnCtx) payload.body = btnCtx + payload.from = baileyCleanNumber(payload.from, true) this.emit('message', payload) }, @@ -124,8 +147,9 @@ class BaileysProvider extends ProviderClass { */ sendMedia = async (number, imageUrl, text) => { - await this.vendor.sendMessage(number, { - image: { url: imageUrl }, + const fileDownloaded = await baileyDownloadMedia(imageUrl) + return this.vendor.sendMessage(number, { + image: { url: fileDownloaded }, text, }) } @@ -186,17 +210,21 @@ class BaileysProvider extends ProviderClass { * @example await sendMessage("+XXXXXXXXXXX", "Your Text", "Your Footer", [{"buttonId": "id", "buttonText": {"displayText": "Button"}, "type": 1}]) */ - sendButtons = async (number, text, footer, buttons) => { + sendButtons = async (number, text, buttons) => { const numberClean = number.replace('+', '') + const templateButtons = buttons.map((btn, i) => ({ + index: `${i}`, + quickReplyButton: { + displayText: btn.body, + id: `id-btn-${i}`, + }, + })) - const buttonMessage = { - text: text, - footer: footer, - buttons: buttons, - headerType: 1, - } - - await this.vendor.sendMessage(`${numberClean}@c.us`, buttonMessage) + return this.vendor.sendMessage(`${numberClean}@c.us`, { + text, + footer: '', + templateButtons: templateButtons, + }) } /** @@ -209,8 +237,8 @@ class BaileysProvider extends ProviderClass { sendMessage = async (numberIn, message, { options }) => { const number = baileyCleanNumber(numberIn) - // if (options?.buttons?.length) - // return this.sendButtons(number, message, options.buttons) + 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) diff --git a/packages/provider/src/baileys/utils.js b/packages/provider/src/baileys/utils.js index 40efa61..ab5b18d 100644 --- a/packages/provider/src/baileys/utils.js +++ b/packages/provider/src/baileys/utils.js @@ -1,6 +1,9 @@ const { createWriteStream } = require('fs') const combineImage = require('combine-image') const qr = require('qr-image') +const { tmpdir } = require('os') +const http = require('http') +const https = require('https') const baileyCleanNumber = (number, full = false) => { number = number.replace('@s.whatsapp.net', '') @@ -38,4 +41,38 @@ const baileyIsValidNumber = (rawNumber) => { return !exist } -module.exports = { baileyCleanNumber, baileyGenerateImage, baileyIsValidNumber } +/** + * Incompleta + * Descargar archivo multimedia para enviar + * @param {*} url + * @returns + */ +const baileyDownloadMedia = (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) + }) + }) + }) +} + +module.exports = { + baileyCleanNumber, + baileyGenerateImage, + baileyIsValidNumber, + baileyDownloadMedia, +} diff --git a/packages/provider/src/venom/index.js b/packages/provider/src/venom/index.js index 645e809..375e2d4 100644 --- a/packages/provider/src/venom/index.js +++ b/packages/provider/src/venom/index.js @@ -105,6 +105,29 @@ class VenomProvider extends ProviderClass { } } + /** + * Enviar botones + * @private + * @param {*} number + * @param {*} message + * @param {*} buttons [] + * @returns + */ + sendButtons = async (number, message, buttons = []) => { + const NOTE_VENOM_BUTTON = [ + `Actualmente VENOM tiene problemas con la API`, + `para el envio de Botones`, + ].join('\n') + + console.log(`[NOTA]: ${NOTE_VENOM_BUTTON}`) + + const buttonToStr = [message] + .concat(buttons.map((btn) => `${btn.body}`)) + .join(`\n`) + return this.vendor.sendText(number, buttonToStr) + // return this.vendor.sendButtons(number, "Title", buttons1, "Description"); + } + /** * Enviar imagen o multimedia * @param {*} number diff --git a/starters/apps/base-wweb-memory/package.json b/starters/apps/base-wweb-memory/package.json index 6713a30..0168dff 100644 --- a/starters/apps/base-wweb-memory/package.json +++ b/starters/apps/base-wweb-memory/package.json @@ -9,7 +9,7 @@ }, "keywords": [], "dependencies": { - "whatsapp-web.js": "^1.18.3", + "whatsapp-web.js": "^1.18.4", "@bot-whatsapp/bot": "latest", "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", diff --git a/starters/apps/base-wweb-mongo/package.json b/starters/apps/base-wweb-mongo/package.json index 9e323dd..ea6aae1 100644 --- a/starters/apps/base-wweb-mongo/package.json +++ b/starters/apps/base-wweb-mongo/package.json @@ -9,7 +9,7 @@ }, "keywords": [], "dependencies": { - "whatsapp-web.js": "^1.18.3", + "whatsapp-web.js": "^1.18.4", "@bot-whatsapp/bot": "latest", "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", diff --git a/starters/apps/base-wweb-mysql/package.json b/starters/apps/base-wweb-mysql/package.json index 3ab73d5..b09f470 100644 --- a/starters/apps/base-wweb-mysql/package.json +++ b/starters/apps/base-wweb-mysql/package.json @@ -9,7 +9,7 @@ }, "keywords": [], "dependencies": { - "whatsapp-web.js": "^1.18.3", + "whatsapp-web.js": "^1.18.4", "@bot-whatsapp/bot": "latest", "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", From de43077860b79a3ed8ed3fff94791b6d5e3f139a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 27 Dec 2022 12:46:41 +0000 Subject: [PATCH 049/189] 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 36331cd..6c473c8 100644 --- a/packages/bot/package.json +++ b/packages/bot/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/bot", - "version": "0.0.26-alpha.0", + "version": "0.0.27-alpha.0", "description": "", "main": "./lib/bundle.bot.cjs", "scripts": { diff --git a/packages/cli/package.json b/packages/cli/package.json index bfa705d..07c47f9 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/cli", - "version": "0.0.33-alpha.0", + "version": "0.0.34-alpha.0", "description": "", "main": "index.js", "devDependencies": { diff --git a/packages/create-bot-whatsapp/package.json b/packages/create-bot-whatsapp/package.json index 8d0fa00..d9e0a92 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.44-alpha.0", + "version": "0.0.45-alpha.0", "description": "", "main": "./lib/bundle.create-bot-whatsapp.cjs", "files": [ diff --git a/packages/database/package.json b/packages/database/package.json index 48ba464..a29afab 100644 --- a/packages/database/package.json +++ b/packages/database/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/database", - "version": "0.0.25-alpha.0", + "version": "0.0.26-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 727ceb1..c3d77ea 100644 --- a/packages/provider/package.json +++ b/packages/provider/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/provider", - "version": "0.0.31-alpha.0", + "version": "0.0.32-alpha.0", "description": "Esto es el conector a Twilio, Meta, etc...", "main": "./lib/mock/index.cjs", "keywords": [], From e5efdec31debfa0957d8a4844274d28a43aaf55d Mon Sep 17 00:00:00 2001 From: marianarolfo <68322254+marianarolfo@users.noreply.github.com> Date: Tue, 27 Dec 2022 14:17:35 +0100 Subject: [PATCH 050/189] Erratas --- packages/docs/src/routes/docs/index.mdx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/docs/src/routes/docs/index.mdx b/packages/docs/src/routes/docs/index.mdx index d51d17e..6747e26 100644 --- a/packages/docs/src/routes/docs/index.mdx +++ b/packages/docs/src/routes/docs/index.mdx @@ -9,12 +9,12 @@ import Alert from '../../components/widgets/Alert' disfrutar de las nuevas características. -## ¿Que es esto? +## ¿Què es esto? **@bot-whatsapp** es una librería que te permitirá **crear chatbot para WhatsApp** en tan solo minutos de una manera ágil y rápida. A lo largo de esta documentación encontrarás ejemplos y material de ayuda. -Si eres una persona con **poco tiempo y gran capacidad** de comprensión con conocimientos, ejecutando proyectos en Node.js y manejo de terminal. -Esta documentación te ayudará a instalar tu bot de WhatsApp en simples pasos con el propósito de que tengas un chatbot funcional **en solo minutos.** +Si eres una persona con **poco tiempo y gran capacidad** de comprensión, con conocimientos ejecutando proyectos en Node.js y manejo de terminal. +Esta documentación te ayudará a instalar tu bot de WhatsApp en simples pasos; con el propósito de que tengas un chatbot funcional **en solo minutos.** --- @@ -40,5 +40,5 @@ npm create bot-whatsapp@latest -**¿Algun error?** +**¿Algún error?** Recuerda que debes de cumplir con los [requisitos minimos](/docs/install) del sistema From b6fd8e26326b12ec523632d897208c96f6c66fe0 Mon Sep 17 00:00:00 2001 From: marianarolfo <68322254+marianarolfo@users.noreply.github.com> Date: Tue, 27 Dec 2022 16:12:42 +0100 Subject: [PATCH 051/189] Unirse --- packages/docs/src/routes/docs/join/index.mdx | 23 ++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/packages/docs/src/routes/docs/join/index.mdx b/packages/docs/src/routes/docs/join/index.mdx index 87864a4..4d4a99b 100644 --- a/packages/docs/src/routes/docs/join/index.mdx +++ b/packages/docs/src/routes/docs/join/index.mdx @@ -1,3 +1,26 @@ # Unirme +Bienvenido al proyecto! Estamos emocionados de tenerte a bordo y esperamos trabajar contigo. + +Deseamos que te sientas cómodo y que puedas aportar tu valioso conocimiento y habilidades. + +Recuerda que si tienes alguna inquietud, o simplemente deseas interactuar con los otros colaboradores puedes unirte a la comunidad. + +## Ventajas al unirme + +Participar en un proyecto de código abierto te permite aprender de manera práctica sobre tecnologías y metodologías de desarrollo de software. También puedes aprender de otros desarrolladores y contribuir a la comunidad de código abierto. + +Al unirte te estará brindando la oportunidad de **adquirir experiencia en el desarrollo de software** y en el trabajo en equipo. Esto puede ser muy valioso para tu currículum y para tu carrera profesional. + +La visibilidad es uno de los puntos que más se requieren hoy en día, al unirte se te brinda la oportunidad de **mayor visibilidad en la comunidad de desarrolladores y de demostrar tus habilidades**. Esto puede ayudarte a encontrar oportunidades de trabajo o a colaborar con otros proyectos. + +Colaboración con otros desarrolladores de todo el mundo y **trabajar juntos para mejorar el proyecto** Al trabajar en equipo y colaborar con otros, podrás mejorar tu comunicación, resolución de problemas y liderazgo, habilidades que cada vez son más demandadas en el entorno laboral. + +Contribución al bien común Participar en un proyecto de código abierto te permite contribuir a la comunidad y a la sociedad en general, ya que el código abierto es accesible y utilizable por cualquier persona. **Esto puede ser muy gratificante y sentirte parte de algo más grande**. + +Es una excelente manera de incrementar tus habilidades tecnológicas y **estar al tanto de las últimas tendencias y desarrollos en el mundo del software**. Al trabajar con otros desarrolladores y contribuir a proyectos de código abierto, tendrás la oportunidad de **aprender y practicar nuevas tecnologías y metodologías, lo que te ayudará a mejorar tus habilidades y a mantenerte actualizado en el mundo en constante cambio de la tecnología. + + +Esperamos que estés listo para **unirte a nosotros en esta emocionante aventura** + ... From 7f437d058736c3ce7b497678a490ebe38bf38e75 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 27 Dec 2022 20:48:58 +0100 Subject: [PATCH 052/189] docs: :zap: added contributors --- packages/docs/package.json | 3 +- .../components/icons/IconArrowDownRight.tsx | 6 +- .../src/components/widgets/CallToAction.tsx | 16 +- .../src/components/widgets/Collaborator.tsx | 32 ++++ .../src/components/widgets/Collaborators.tsx | 99 +++++++------ packages/docs/src/contexts/index.tsx | 2 - packages/docs/src/routes/index.tsx | 2 + yarn.lock | 139 +++++++++++++++++- 8 files changed, 238 insertions(+), 61 deletions(-) create mode 100644 packages/docs/src/components/widgets/Collaborator.tsx diff --git a/packages/docs/package.json b/packages/docs/package.json index c4fca4e..4438a16 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -20,10 +20,11 @@ "qwik": "qwik" }, "devDependencies": { - "@builder.io/qwik": "0.15.0", + "@builder.io/qwik": "0.16.1", "@builder.io/qwik-city": "0.0.128", "@fontsource/inter": "^4.5.14", "@iconify-json/tabler": "^1.1.49", + "@octokit/core": "^4.1.0", "@tailwindcss/aspect-ratio": "^0.4.0", "@tailwindcss/forms": "^0.5.3", "@tailwindcss/line-clamp": "^0.3.1", diff --git a/packages/docs/src/components/icons/IconArrowDownRight.tsx b/packages/docs/src/components/icons/IconArrowDownRight.tsx index 8adfab2..36fe4f0 100644 --- a/packages/docs/src/components/icons/IconArrowDownRight.tsx +++ b/packages/docs/src/components/icons/IconArrowDownRight.tsx @@ -18,10 +18,6 @@ export const IconArrowDownRight = (props: ItemProps) => { fill="none" stroke-linecap="round" stroke-linejoin="round" - > - - - - + > ) } diff --git a/packages/docs/src/components/widgets/CallToAction.tsx b/packages/docs/src/components/widgets/CallToAction.tsx index 3b1444b..f1eb46e 100644 --- a/packages/docs/src/components/widgets/CallToAction.tsx +++ b/packages/docs/src/components/widgets/CallToAction.tsx @@ -1,17 +1,23 @@ -import { component$ } from '@builder.io/qwik' +import { $, component$, QwikMouseEvent } from '@builder.io/qwik' + +export const handleVideo = $((ev: QwikMouseEvent) => { + const targetVideo = ev.target as HTMLVideoElement + targetVideo.play() +}) export default component$(() => { return ( -
-
-
+
+
+
diff --git a/packages/docs/src/contexts/index.tsx b/packages/docs/src/contexts/index.tsx index 929daa4..7282539 100644 --- a/packages/docs/src/contexts/index.tsx +++ b/packages/docs/src/contexts/index.tsx @@ -6,5 +6,12 @@ export interface DocumentationCtx { list: { link: string; name: string }[] } +export interface User { + id: number + login: string + html_url: string + avatar_url: string +} + export const GlobalStore = createContext('documentation-site') diff --git a/packages/docs/src/routes/docs/constant.ts b/packages/docs/src/routes/docs/constant.ts new file mode 100644 index 0000000..5bea32f --- /dev/null +++ b/packages/docs/src/routes/docs/constant.ts @@ -0,0 +1 @@ +export const GITHUB_TOKEN = import.meta.env.VITE_GITHUB_TOKEN ?? 'SIN_TOKEN' diff --git a/packages/docs/src/routes/index.tsx b/packages/docs/src/routes/index.tsx index 071b498..d9a7406 100644 --- a/packages/docs/src/routes/index.tsx +++ b/packages/docs/src/routes/index.tsx @@ -1,5 +1,9 @@ -import { component$ } from '@builder.io/qwik' -import type { DocumentHead } from '@builder.io/qwik-city' +import { component$, Resource } from '@builder.io/qwik' +import { + DocumentHead, + RequestHandler, + useEndpoint, +} from '@builder.io/qwik-city' import Hero from '~/components/widgets/Hero' import Features from '~/components/widgets/Features' @@ -7,14 +11,41 @@ import FAQs from '~/components/widgets/FAQs' // import Stats from '~/components/widgets/Stats' import CallToAction from '~/components/widgets/CallToAction' import Collaborators from '~/components/widgets/Collaborators' +import { GITHUB_TOKEN } from './docs/constant' + +export const apiGetCollaborators = async (token: string) => { + const data = await fetch( + `https://api.github.com/repos/codigoencasa/bot-whatsapp/contributors`, + { + method: 'GET', + headers: { + Accept: 'application/vnd.github+json', + 'X-GitHub-Api-Version': '2022-11-28', + Authorization: `Bearer ${token}`, + }, + } + ) + const listUsers = data.json() + return listUsers +} + +export const onRequest: RequestHandler = async ({ platform }) => { + console.log(platform) + const CHECK_GITHUB_TOKEN = (platform as any)['GITHUB_TOKEN'] ?? GITHUB_TOKEN + return apiGetCollaborators(CHECK_GITHUB_TOKEN) +} export default component$(() => { + const dataUser = useEndpoint() return ( <> - + } + > {/* */} From 954e6b3a980fe613b9977f9caeb8e7b9b0934692 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 28 Dec 2022 10:45:51 +0100 Subject: [PATCH 055/189] docs: :zap: added contributors --- packages/docs/src/components/widgets/Collaborators.tsx | 1 - packages/docs/src/routes/index.tsx | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/docs/src/components/widgets/Collaborators.tsx b/packages/docs/src/components/widgets/Collaborators.tsx index 113ed5e..3fe5571 100644 --- a/packages/docs/src/components/widgets/Collaborators.tsx +++ b/packages/docs/src/components/widgets/Collaborators.tsx @@ -4,7 +4,6 @@ import { User } from '~/contexts' import Collaborator from './Collaborator' export const TaleUsers = component$((props: { users: User[] }) => { - console.log(props) return ( <> {props.users.map((user) => ( diff --git a/packages/docs/src/routes/index.tsx b/packages/docs/src/routes/index.tsx index d9a7406..ebeeaee 100644 --- a/packages/docs/src/routes/index.tsx +++ b/packages/docs/src/routes/index.tsx @@ -30,7 +30,7 @@ export const apiGetCollaborators = async (token: string) => { } export const onRequest: RequestHandler = async ({ platform }) => { - console.log(platform) + console.log(`[🚩 platform]: `, platform) const CHECK_GITHUB_TOKEN = (platform as any)['GITHUB_TOKEN'] ?? GITHUB_TOKEN return apiGetCollaborators(CHECK_GITHUB_TOKEN) } From 5aa348be0d3f00006305d8f90a20847a63c2b8ac Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 28 Dec 2022 10:52:55 +0100 Subject: [PATCH 056/189] docs: :zap: added contributors --- packages/docs/src/routes/index.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/docs/src/routes/index.tsx b/packages/docs/src/routes/index.tsx index ebeeaee..a536d77 100644 --- a/packages/docs/src/routes/index.tsx +++ b/packages/docs/src/routes/index.tsx @@ -12,6 +12,7 @@ import FAQs from '~/components/widgets/FAQs' import CallToAction from '~/components/widgets/CallToAction' import Collaborators from '~/components/widgets/Collaborators' import { GITHUB_TOKEN } from './docs/constant' +import { RequestHandlerCloudflarePages } from '@builder.io/qwik-city/middleware/cloudflare-pages' export const apiGetCollaborators = async (token: string) => { const data = await fetch( @@ -29,9 +30,12 @@ export const apiGetCollaborators = async (token: string) => { return listUsers } -export const onRequest: RequestHandler = async ({ platform }) => { +export const onRequest: RequestHandlerCloudflarePages = async ({ + platform, +}) => { console.log(`[🚩 platform]: `, platform) - const CHECK_GITHUB_TOKEN = (platform as any)['GITHUB_TOKEN'] ?? GITHUB_TOKEN + console.log(`[🚩 platform .env]: `, platform.env) + const CHECK_GITHUB_TOKEN = platform.env['GITHUB_TOKEN'] ?? GITHUB_TOKEN return apiGetCollaborators(CHECK_GITHUB_TOKEN) } From 54d1f57a545c4cea6e72cee5d686659df6e96f1a Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 28 Dec 2022 11:15:14 +0100 Subject: [PATCH 057/189] docs: :zap: added contributors --- packages/docs/src/routes/index.tsx | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/packages/docs/src/routes/index.tsx b/packages/docs/src/routes/index.tsx index a536d77..04c84a4 100644 --- a/packages/docs/src/routes/index.tsx +++ b/packages/docs/src/routes/index.tsx @@ -1,9 +1,5 @@ import { component$, Resource } from '@builder.io/qwik' -import { - DocumentHead, - RequestHandler, - useEndpoint, -} from '@builder.io/qwik-city' +import { DocumentHead, useEndpoint } from '@builder.io/qwik-city' import Hero from '~/components/widgets/Hero' import Features from '~/components/widgets/Features' @@ -35,7 +31,8 @@ export const onRequest: RequestHandlerCloudflarePages = async ({ }) => { console.log(`[🚩 platform]: `, platform) console.log(`[🚩 platform .env]: `, platform.env) - const CHECK_GITHUB_TOKEN = platform.env['GITHUB_TOKEN'] ?? GITHUB_TOKEN + const CHECK_GITHUB_TOKEN = + (platform.env as any)?.['GITHUB_TOKEN'] ?? GITHUB_TOKEN return apiGetCollaborators(CHECK_GITHUB_TOKEN) } From 5b796a163e11b3d087fb5508dcb09d31cc0af6ac Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 28 Dec 2022 11:24:39 +0100 Subject: [PATCH 058/189] docs: :zap: added contributors --- packages/docs/src/routes/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/docs/src/routes/index.tsx b/packages/docs/src/routes/index.tsx index 04c84a4..983c5df 100644 --- a/packages/docs/src/routes/index.tsx +++ b/packages/docs/src/routes/index.tsx @@ -30,9 +30,9 @@ export const onRequest: RequestHandlerCloudflarePages = async ({ platform, }) => { console.log(`[🚩 platform]: `, platform) - console.log(`[🚩 platform .env]: `, platform.env) + console.log(`[🚩 platform .env]: `, (platform as any)?.GITHUB_TOKEN) const CHECK_GITHUB_TOKEN = - (platform.env as any)?.['GITHUB_TOKEN'] ?? GITHUB_TOKEN + (platform as any)?.['GITHUB_TOKEN'] ?? GITHUB_TOKEN return apiGetCollaborators(CHECK_GITHUB_TOKEN) } From be39e8fd30c49fc09ea5d1bcc6382e62703c274a Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 28 Dec 2022 20:51:28 +0100 Subject: [PATCH 059/189] docs: :fire: added netlify --- .github/workflows/netlify.yml | 27 + .gitignore | 4 +- packages/docs/.gitignore | 3 + packages/docs/README.md | 69 + .../vite.config.ts | 7 +- packages/docs/netlify.toml | 12 +- packages/docs/package.json | 15 +- packages/docs/public/_headers | 2 - .../src/components/widgets/Collaborators.tsx | 8 +- packages/docs/src/entry.express.tsx | 50 + packages/docs/src/entry.netlify-edge.tsx | 14 + packages/docs/src/routes/index.tsx | 37 +- packages/docs/src/services/github.ts | 19 + yarn.lock | 8209 +++++++++++++++-- 14 files changed, 7644 insertions(+), 832 deletions(-) create mode 100644 .github/workflows/netlify.yml rename packages/docs/adaptors/{cloudflare-pages => netlify-edge}/vite.config.ts (57%) create mode 100644 packages/docs/src/entry.express.tsx create mode 100644 packages/docs/src/entry.netlify-edge.tsx create mode 100644 packages/docs/src/services/github.ts diff --git a/.github/workflows/netlify.yml b/.github/workflows/netlify.yml new file mode 100644 index 0000000..472e2b2 --- /dev/null +++ b/.github/workflows/netlify.yml @@ -0,0 +1,27 @@ +# .github/workflows/netlify.yml +name: Build and Deploy to Documentation Netlify +on: + pull_request: + branches: + - dev + - main + types: [closed] +jobs: + build: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + + - name: Deploy to Netlify + uses: nwtgck/actions-netlify@v1.2 + with: + publish-dir: './packages/docs/dist' + github-token: ${{ secrets.GITHUB_TOKEN }} + deploy-message: 'Deploy from GitHub Actions' + enable-pull-request-comment: false + enable-commit-comment: true + overwrites-pull-request-comment: true + env: + NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} + NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} + timeout-minutes: 1 diff --git a/.gitignore b/.gitignore index be22be9..2a3fcb7 100644 --- a/.gitignore +++ b/.gitignore @@ -35,4 +35,6 @@ base-*/ qr.svg package-lock.json yarn-error.log -.npmrc \ No newline at end of file +.npmrc +# Local Netlify folder +.netlify diff --git a/packages/docs/.gitignore b/packages/docs/.gitignore index a88d7a8..4ab2c7f 100644 --- a/packages/docs/.gitignore +++ b/packages/docs/.gitignore @@ -41,3 +41,6 @@ package-lock.json # Cloudflare functions/**/*.js + +# Netlify +.netlify diff --git a/packages/docs/README.md b/packages/docs/README.md index 4c8a753..dcbc6c4 100644 --- a/packages/docs/README.md +++ b/packages/docs/README.md @@ -285,3 +285,72 @@ By default, the Cloudflare pages adaptor _does not_ include a `public/_routes.js 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. + +## Express Server + +This app has a minimal [Express server](https://expressjs.com/) implementation. After running a full build, you can preview the build using the command: + +``` +npm run serve +``` + +Then visit [http://localhost:8080/](http://localhost:8080/) + +## Netlify + +This starter site is configured to deploy to [Netlify Edge Functions](https://docs.netlify.com/edge-functions/overview/), which means it will be rendered at an edge location near to your users. + +### Local development + +The [Netlify CLI](https://docs.netlify.com/cli/get-started/) can be used to preview a production build locally. To do so: First build your site, then to start a local server, run: + +1. Install Netlify CLI globally `npm i -g netlify-cli`. +2. Build your site with both ssr and static `npm run build`. +3. Start a local server with `npm run serve`. + In this project, `npm run serve` uses the `netlify dev` command to spin up a server that can handle Netlify's Edge Functions locally. +4. Visit [http://localhost:8888/](http://localhost:8888/) to check out your site. + +### Edge Functions Declarations + +[Netlify Edge Functions declarations](https://docs.netlify.com/edge-functions/declarations/) +can be configured to run on specific URL patterns. Each edge function declaration associates +one site path pattern with one function to execute on requests that match the path. A single request can execute a chain of edge functions from a series of declarations. A single edge function can be associated with multiple paths across various declarations. + +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 instead. + +By default, the Netlify Edge adaptor will generate a `.netlify/edge-middleware/manifest.json` file, which is used by the Netlify deployment to determine which paths should, and should not, use edge functions. + +To override the generated manifest, you can [add a declaration](https://docs.netlify.com/edge-functions/declarations/#add-a-declaration) to the `netlify.toml` using the `[[edge_functions]]` config. For example: + +```toml +[[edge_functions]] + path = "/admin" + function = "auth" +``` + +### Deployments + +You can [deploy your site to Netlify](https://docs.netlify.com/site-deploys/create-deploys/) either via a Git provider integration or through the Netlify CLI. This starter site includes a `netlify.toml` file to configure your build for deployment. + +#### Deploying via Git + +Once your site has been pushed to your Git provider, you can either link it [in the Netlify UI](https://app.netlify.com/start) or use the CLI. To link your site to a Git provider from the Netlify CLI, run the command: + +```shell +netlify link +``` + +This sets up [continuous deployment](https://docs.netlify.com/site-deploys/create-deploys/#deploy-with-git) for your site's repo. Whenever you push new commits to your repo, Netlify starts the build process.. + +#### Deploying manually via the CLI + +If you wish to deploy from the CLI rather than using Git, you can use the command: + +```shell +netlify deploy --build +``` + +You must use the `--build` flag whenever you deploy. This ensures that the Edge Functions that this starter site relies on are generated and available when you deploy your site. + +Add `--prod` flag to deploy to production. diff --git a/packages/docs/adaptors/cloudflare-pages/vite.config.ts b/packages/docs/adaptors/netlify-edge/vite.config.ts similarity index 57% rename from packages/docs/adaptors/cloudflare-pages/vite.config.ts rename to packages/docs/adaptors/netlify-edge/vite.config.ts index dc2bfde..c932702 100644 --- a/packages/docs/adaptors/cloudflare-pages/vite.config.ts +++ b/packages/docs/adaptors/netlify-edge/vite.config.ts @@ -1,4 +1,4 @@ -import { cloudflarePagesAdaptor } from '@builder.io/qwik-city/adaptors/cloudflare-pages/vite' +import { netifyEdgeAdaptor } from '@builder.io/qwik-city/adaptors/netlify-edge/vite' import { extendConfig } from '@builder.io/qwik-city/vite' import baseConfig from '../../vite.config' @@ -7,11 +7,12 @@ export default extendConfig(baseConfig, () => { build: { ssr: true, rollupOptions: { - input: ['src/entry.cloudflare-pages.tsx', '@qwik-city-plan'], + input: ['src/entry.netlify-edge.tsx', '@qwik-city-plan'], }, + outDir: '.netlify/edge-functions/entry.netlify-edge', }, plugins: [ - cloudflarePagesAdaptor({ + netifyEdgeAdaptor({ staticGenerate: true, }), ], diff --git a/packages/docs/netlify.toml b/packages/docs/netlify.toml index 9324f51..4a0047a 100644 --- a/packages/docs/netlify.toml +++ b/packages/docs/netlify.toml @@ -1,7 +1,7 @@ [build] - publish = "dist" - command = "npm run build" -[[headers]] - for = "/build/*" - [headers.values] - Cache-Control = "public, max-age=31536000, immutable" \ No newline at end of file +publish = "dist" +command = "npm run build" + +[[edge_functions]] +path = "/*" +function = "entry.netlify-edge" \ No newline at end of file diff --git a/packages/docs/package.json b/packages/docs/package.json index 4438a16..3da5a58 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -6,9 +6,9 @@ "build": "qwik build && npm run subfont", "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.server": "vite build -c adaptors/netlify-edge/vite.config.ts", "build.types": "tsc --incremental --noEmit", - "deploy": "wrangler pages dev ./dist", + "deploy": "netlify deploy", "dev": "vite --host --mode ssr", "dev.debug": "node --inspect-brk ./node_modules/vite/bin/vite.js --mode ssr --force", "fmt": "prettier --write .", @@ -24,20 +24,22 @@ "@builder.io/qwik-city": "0.0.128", "@fontsource/inter": "^4.5.14", "@iconify-json/tabler": "^1.1.49", - "@octokit/core": "^4.1.0", "@tailwindcss/aspect-ratio": "^0.4.0", "@tailwindcss/forms": "^0.5.3", "@tailwindcss/line-clamp": "^0.3.1", "@tailwindcss/typography": "^0.5.0", + "@types/compression": "^1.7.2", "@types/eslint": "8.4.10", "@types/node": "latest", "@typescript-eslint/eslint-plugin": "5.45.0", "@typescript-eslint/parser": "5.45.0", "autoprefixer": "10.4.13", + "compression": "^1.7.4", "eslint": "8.29.0", "eslint-plugin-qwik": "0.15.0", "imagetools-core": "^3.2.3", - "node-fetch": "3.3.0", + "netlify-cli": "^12.0.11", + "node-fetch": "^3.3.0", "postcss": "^8.4.19", "prettier": "2.8.0", "rehype-autolink-headings": "^6.1.1", @@ -46,10 +48,9 @@ "typescript": "4.8.4", "vite": "3.2.4", "vite-imagetools": "^4.0.11", - "vite-tsconfig-paths": "3.6.0", - "wrangler": "latest" + "vite-tsconfig-paths": "3.6.0" }, "engines": { - "node": ">=15.0.0" + "node": ">=17.0.0" } } diff --git a/packages/docs/public/_headers b/packages/docs/public/_headers index 0690cb4..08e5e27 100644 --- a/packages/docs/public/_headers +++ b/packages/docs/public/_headers @@ -1,4 +1,2 @@ -# https://developers.cloudflare.com/pages/platform/headers/ - /build/* Cache-Control: public, max-age=31536000, s-maxage=31536000, immutable diff --git a/packages/docs/src/components/widgets/Collaborators.tsx b/packages/docs/src/components/widgets/Collaborators.tsx index 3fe5571..540cfb7 100644 --- a/packages/docs/src/components/widgets/Collaborators.tsx +++ b/packages/docs/src/components/widgets/Collaborators.tsx @@ -1,8 +1,12 @@ import { component$ } from '@builder.io/qwik' - +import { RequestHandlerCloudflarePages } from '@builder.io/qwik-city/middleware/cloudflare-pages' import { User } from '~/contexts' import Collaborator from './Collaborator' +export const onRequest: RequestHandlerCloudflarePages = async () => { + console.log('??heree') +} + export const TaleUsers = component$((props: { users: User[] }) => { return ( <> @@ -16,7 +20,7 @@ export const TaleUsers = component$((props: { users: User[] }) => { ) }) -export default component$((props: { users: any }) => { +export default component$((props: { users: User[] }) => { return (
diff --git a/packages/docs/src/entry.express.tsx b/packages/docs/src/entry.express.tsx new file mode 100644 index 0000000..8763848 --- /dev/null +++ b/packages/docs/src/entry.express.tsx @@ -0,0 +1,50 @@ +/* + * WHAT IS THIS FILE? + * + * It's the entry point for the express server when building for production. + * + * Learn more about the cloudflare integration here: + * - https://qwik.builder.io/qwikcity/adaptors/node/ + * + */ +import { createQwikCity } from '@builder.io/qwik-city/middleware/node' +import qwikCityPlan from '@qwik-city-plan' +import render from './entry.ssr' +import express from 'express' +import { fileURLToPath } from 'node:url' +import { join } from 'node:path' +import compression from 'compression' + +// Directories where the static assets are located +const distDir = join(fileURLToPath(import.meta.url), '..', '..', 'dist') +const buildDir = join(distDir, 'build') + +// Allow for dynamic port +const PORT = process.env.PORT ?? 3000 + +// Create the Qwik City express middleware +const { router, notFound } = createQwikCity({ render, qwikCityPlan }) + +// Create the express server +// https://expressjs.com/ +const app = express() + +// Enable gzip compression +app.use(compression()) + +// Static asset handlers +// https://expressjs.com/en/starter/static-files.html +app.use(`/build`, express.static(buildDir, { immutable: true, maxAge: '1y' })) +app.use(express.static(distDir, { redirect: false })) + +// Use Qwik City's page and endpoint request handler +app.use(router) + +// Use Qwik City's 404 handler +app.use(notFound) + +// Start the express server +app.listen(PORT, () => { + /* eslint-disable */ + console.log(`Server starter: http://localhost:${PORT}/`) +}) diff --git a/packages/docs/src/entry.netlify-edge.tsx b/packages/docs/src/entry.netlify-edge.tsx new file mode 100644 index 0000000..e65a754 --- /dev/null +++ b/packages/docs/src/entry.netlify-edge.tsx @@ -0,0 +1,14 @@ +/* + * WHAT IS THIS FILE? + * + * It's the entry point for netlify-edge when building for production. + * + * Learn more about the cloudflare integration here: + * - https://qwik.builder.io/qwikcity/adaptors/netlify-edge/ + * + */ +import { createQwikCity } from '@builder.io/qwik-city/middleware/netlify-edge' +import qwikCityPlan from '@qwik-city-plan' +import render from './entry.ssr' + +export default createQwikCity({ render, qwikCityPlan }) diff --git a/packages/docs/src/routes/index.tsx b/packages/docs/src/routes/index.tsx index 983c5df..b97677c 100644 --- a/packages/docs/src/routes/index.tsx +++ b/packages/docs/src/routes/index.tsx @@ -1,54 +1,35 @@ import { component$, Resource } from '@builder.io/qwik' import { DocumentHead, useEndpoint } from '@builder.io/qwik-city' - import Hero from '~/components/widgets/Hero' import Features from '~/components/widgets/Features' import FAQs from '~/components/widgets/FAQs' -// import Stats from '~/components/widgets/Stats' import CallToAction from '~/components/widgets/CallToAction' import Collaborators from '~/components/widgets/Collaborators' +import { fetchGithub } from '~/services/github' +import { RequestHandlerNetlify } from '@builder.io/qwik-city/middleware/netlify-edge' import { GITHUB_TOKEN } from './docs/constant' -import { RequestHandlerCloudflarePages } from '@builder.io/qwik-city/middleware/cloudflare-pages' -export const apiGetCollaborators = async (token: string) => { - const data = await fetch( - `https://api.github.com/repos/codigoencasa/bot-whatsapp/contributors`, - { - method: 'GET', - headers: { - Accept: 'application/vnd.github+json', - 'X-GitHub-Api-Version': '2022-11-28', - Authorization: `Bearer ${token}`, - }, - } - ) - const listUsers = data.json() - return listUsers -} - -export const onRequest: RequestHandlerCloudflarePages = async ({ - platform, -}) => { +export const onGet: RequestHandlerNetlify = async ({ platform }) => { console.log(`[🚩 platform]: `, platform) - console.log(`[🚩 platform .env]: `, (platform as any)?.GITHUB_TOKEN) const CHECK_GITHUB_TOKEN = (platform as any)?.['GITHUB_TOKEN'] ?? GITHUB_TOKEN - return apiGetCollaborators(CHECK_GITHUB_TOKEN) + const data = await fetchGithub(CHECK_GITHUB_TOKEN) + return data } export default component$(() => { - const dataUser = useEndpoint() + const resource = useEndpoint() + return ( <> } + value={resource} + onResolved={(data: any) => } > - {/* */} ) }) diff --git a/packages/docs/src/services/github.ts b/packages/docs/src/services/github.ts new file mode 100644 index 0000000..05d2b8f --- /dev/null +++ b/packages/docs/src/services/github.ts @@ -0,0 +1,19 @@ +/** + * GET API from Github + * @returns + */ +export const fetchGithub = async (token: string) => { + const data = await fetch( + `https://api.github.com/repos/codigoencasa/bot-whatsapp/contributors`, + { + method: 'GET', + headers: { + Accept: 'application/vnd.github+json', + 'X-GitHub-Api-Version': '2022-11-28', + Authorization: `Bearer ${token}`, + }, + } + ) + const listUsers = data.json() + return listUsers +} diff --git a/yarn.lock b/yarn.lock index 1a7678e..d48f3df 100644 --- a/yarn.lock +++ b/yarn.lock @@ -82,15 +82,15 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/client-cognito-identity@npm:3.236.0": - version: 3.236.0 - resolution: "@aws-sdk/client-cognito-identity@npm:3.236.0" +"@aws-sdk/client-cognito-identity@npm:3.238.0": + version: 3.238.0 + resolution: "@aws-sdk/client-cognito-identity@npm:3.238.0" dependencies: "@aws-crypto/sha256-browser": 2.0.0 "@aws-crypto/sha256-js": 2.0.0 - "@aws-sdk/client-sts": 3.236.0 + "@aws-sdk/client-sts": 3.238.0 "@aws-sdk/config-resolver": 3.234.0 - "@aws-sdk/credential-provider-node": 3.236.0 + "@aws-sdk/credential-provider-node": 3.238.0 "@aws-sdk/fetch-http-handler": 3.226.0 "@aws-sdk/hash-node": 3.226.0 "@aws-sdk/invalid-dependency": 3.226.0 @@ -122,13 +122,13 @@ __metadata: "@aws-sdk/util-utf8-browser": 3.188.0 "@aws-sdk/util-utf8-node": 3.208.0 tslib: ^2.3.1 - checksum: 808339bd0113f65674dea0d65af25c350ff5a8f2595f9dd11215b6e457df5d243db156042dc4bfbb39b302d6f871a71fbbed20f403207fb6e4c9e444eb802bf1 + checksum: 7068b6d82d6053ac7f9baefad610b7b9972763bed4bb5f61ec9d5504501fb5d54e573efe5735f4746393f2098d1a20b9991b0f398081a19f3671fbe7be398c84 languageName: node linkType: hard -"@aws-sdk/client-sso-oidc@npm:3.236.0": - version: 3.236.0 - resolution: "@aws-sdk/client-sso-oidc@npm:3.236.0" +"@aws-sdk/client-sso-oidc@npm:3.238.0": + version: 3.238.0 + resolution: "@aws-sdk/client-sso-oidc@npm:3.238.0" dependencies: "@aws-crypto/sha256-browser": 2.0.0 "@aws-crypto/sha256-js": 2.0.0 @@ -163,13 +163,13 @@ __metadata: "@aws-sdk/util-utf8-browser": 3.188.0 "@aws-sdk/util-utf8-node": 3.208.0 tslib: ^2.3.1 - checksum: 6fbbebb37547bafc9345c1fd03692728d6b6015f7583f22b2542beaac7f395ab29af884f1a353e78dd147ebf8b109b1d6678f9d1ae18c2b70739e9ceee6781ef + checksum: b2f0df1168d2e20ccf1d598b76be4141b6a27068ad9dea74570aa3ab8c94c103537463c58d8296e76d2457f5afb5253cbf2b1f665411981f5939c85667dd1aff languageName: node linkType: hard -"@aws-sdk/client-sso@npm:3.236.0": - version: 3.236.0 - resolution: "@aws-sdk/client-sso@npm:3.236.0" +"@aws-sdk/client-sso@npm:3.238.0": + version: 3.238.0 + resolution: "@aws-sdk/client-sso@npm:3.238.0" dependencies: "@aws-crypto/sha256-browser": 2.0.0 "@aws-crypto/sha256-js": 2.0.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: 15cb25a3c12fe0f11ed320c8f02f72ee0d43291a14c06fce81f608fbc75a85785698fbffc3112e7e92ece25460d24670ba345535b43003b20798a0fcc8a7b31d + checksum: dbd993e569a3858fd80222cd61e5df5813b3ef6579cfd393925679f71af57f3d9277f470d868f93dbda2f797a8e0be7da9f0678ee80a97103ea2612e2e1ef793 languageName: node linkType: hard -"@aws-sdk/client-sts@npm:3.236.0": - version: 3.236.0 - resolution: "@aws-sdk/client-sts@npm:3.236.0" +"@aws-sdk/client-sts@npm:3.238.0": + version: 3.238.0 + resolution: "@aws-sdk/client-sts@npm:3.238.0" dependencies: "@aws-crypto/sha256-browser": 2.0.0 "@aws-crypto/sha256-js": 2.0.0 "@aws-sdk/config-resolver": 3.234.0 - "@aws-sdk/credential-provider-node": 3.236.0 + "@aws-sdk/credential-provider-node": 3.238.0 "@aws-sdk/fetch-http-handler": 3.226.0 "@aws-sdk/hash-node": 3.226.0 "@aws-sdk/invalid-dependency": 3.226.0 @@ -249,7 +249,7 @@ __metadata: "@aws-sdk/util-utf8-node": 3.208.0 fast-xml-parser: 4.0.11 tslib: ^2.3.1 - checksum: 98463fe50a588032b82be5289445c6e7250bd947076e5981ba7c126386d567f3b1ea9a9652c032da919503cdba2c3b517061911ddffae0c91f880f7eabaeaa08 + checksum: 323677f17a1cfec54022a7af941db636ed9201d0a188b10e367663c422d931508728705633d01943d8bd0439edc20b39b619a8dd87d2ee55f3ca2df923e4c0dc languageName: node linkType: hard @@ -266,15 +266,15 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/credential-provider-cognito-identity@npm:3.236.0": - version: 3.236.0 - resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.236.0" +"@aws-sdk/credential-provider-cognito-identity@npm:3.238.0": + version: 3.238.0 + resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.238.0" dependencies: - "@aws-sdk/client-cognito-identity": 3.236.0 + "@aws-sdk/client-cognito-identity": 3.238.0 "@aws-sdk/property-provider": 3.226.0 "@aws-sdk/types": 3.226.0 tslib: ^2.3.1 - checksum: 29d3178f490cbb711553103c0fb544604c5e70e36395f1edc6b9bd2ee0e928160b911b4893fe89418c182548d0dddfbd44e9ef629ad690ab1724a2a693368c16 + checksum: f885ba267deacec45e1fb59e46ec225b7dcd53c863a0236272948820afe15ed036ea3b039bdfbf6ae7d05054a50582366fa0b258eb8eed1364fca6fad206a63e languageName: node linkType: hard @@ -302,38 +302,38 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/credential-provider-ini@npm:3.236.0": - version: 3.236.0 - resolution: "@aws-sdk/credential-provider-ini@npm:3.236.0" +"@aws-sdk/credential-provider-ini@npm:3.238.0": + version: 3.238.0 + resolution: "@aws-sdk/credential-provider-ini@npm:3.238.0" dependencies: "@aws-sdk/credential-provider-env": 3.226.0 "@aws-sdk/credential-provider-imds": 3.226.0 "@aws-sdk/credential-provider-process": 3.226.0 - "@aws-sdk/credential-provider-sso": 3.236.0 + "@aws-sdk/credential-provider-sso": 3.238.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: e748aba37dab11ed395fa60c7eee119b997e4c64b1a838c93258cfe6a6e289dfa0aa20d292b94d06da8148b7cb32604b24f84aadc2a389bf8248c64d80ef44d5 + checksum: bf792096935a915ff1bf26c53408d7265d2dd5cb2093d5b51862cf21a1418801454362842cd7c59a8738af1bb12713afb354e55d3057e92f30f2caa327ff3eb9 languageName: node linkType: hard -"@aws-sdk/credential-provider-node@npm:3.236.0": - version: 3.236.0 - resolution: "@aws-sdk/credential-provider-node@npm:3.236.0" +"@aws-sdk/credential-provider-node@npm:3.238.0": + version: 3.238.0 + resolution: "@aws-sdk/credential-provider-node@npm:3.238.0" dependencies: "@aws-sdk/credential-provider-env": 3.226.0 "@aws-sdk/credential-provider-imds": 3.226.0 - "@aws-sdk/credential-provider-ini": 3.236.0 + "@aws-sdk/credential-provider-ini": 3.238.0 "@aws-sdk/credential-provider-process": 3.226.0 - "@aws-sdk/credential-provider-sso": 3.236.0 + "@aws-sdk/credential-provider-sso": 3.238.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: d5a26b40a985edfef5006efde921d58b78829b67eed9fea56e108b99eec437a02721b93ef0e2dcd9a4739716c85d8db75935a71d2afa1190b0f1d0010511f649 + checksum: 7d9e56dd53db5ef1d5600502a407a81500b0dde6c2c6164c88f88dffb20a24b9e256ebd329b2afb3992fa16514173bb8509ab410d651b0e6fb6f4cb713e22d11 languageName: node linkType: hard @@ -349,17 +349,17 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/credential-provider-sso@npm:3.236.0": - version: 3.236.0 - resolution: "@aws-sdk/credential-provider-sso@npm:3.236.0" +"@aws-sdk/credential-provider-sso@npm:3.238.0": + version: 3.238.0 + resolution: "@aws-sdk/credential-provider-sso@npm:3.238.0" dependencies: - "@aws-sdk/client-sso": 3.236.0 + "@aws-sdk/client-sso": 3.238.0 "@aws-sdk/property-provider": 3.226.0 "@aws-sdk/shared-ini-file-loader": 3.226.0 - "@aws-sdk/token-providers": 3.236.0 + "@aws-sdk/token-providers": 3.238.0 "@aws-sdk/types": 3.226.0 tslib: ^2.3.1 - checksum: 215e0cd08c4dca453a80ce695bf4dddb94ce7562100bfa64e2ba5406ab3aeb6cf92882bd714b6ee95d3f13c45f3286eb616d32e1ffc58728f1e21e7eb171b301 + checksum: 4ac0451f85eb34eba78f4462daace270f0ff3d0d536a5093621923fc4391e9196cb500ffa382b5e4730f9562f005fb01d3cc2364dcfc9e04ce5e9715a151ce96 languageName: node linkType: hard @@ -375,25 +375,25 @@ __metadata: linkType: hard "@aws-sdk/credential-providers@npm:^3.186.0": - version: 3.236.0 - resolution: "@aws-sdk/credential-providers@npm:3.236.0" + version: 3.238.0 + resolution: "@aws-sdk/credential-providers@npm:3.238.0" dependencies: - "@aws-sdk/client-cognito-identity": 3.236.0 - "@aws-sdk/client-sso": 3.236.0 - "@aws-sdk/client-sts": 3.236.0 - "@aws-sdk/credential-provider-cognito-identity": 3.236.0 + "@aws-sdk/client-cognito-identity": 3.238.0 + "@aws-sdk/client-sso": 3.238.0 + "@aws-sdk/client-sts": 3.238.0 + "@aws-sdk/credential-provider-cognito-identity": 3.238.0 "@aws-sdk/credential-provider-env": 3.226.0 "@aws-sdk/credential-provider-imds": 3.226.0 - "@aws-sdk/credential-provider-ini": 3.236.0 - "@aws-sdk/credential-provider-node": 3.236.0 + "@aws-sdk/credential-provider-ini": 3.238.0 + "@aws-sdk/credential-provider-node": 3.238.0 "@aws-sdk/credential-provider-process": 3.226.0 - "@aws-sdk/credential-provider-sso": 3.236.0 + "@aws-sdk/credential-provider-sso": 3.238.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: 3105661946fa12322b18a2227f26a8b734072850882e771493b398e714b433c024873a4495a18d55a4213022b07c658cb7ed38859b5fa152fc2ce1e02b408ca1 + checksum: f5767eafd9ce88a6085f05847d6b99a49d56974d903050957bffd5fb0afcfa39f82fe3d507cf482d23b30f1976a0d8430793e6cd0d8f843b7571f300ce5a12ca languageName: node linkType: hard @@ -680,16 +680,16 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/token-providers@npm:3.236.0": - version: 3.236.0 - resolution: "@aws-sdk/token-providers@npm:3.236.0" +"@aws-sdk/token-providers@npm:3.238.0": + version: 3.238.0 + resolution: "@aws-sdk/token-providers@npm:3.238.0" dependencies: - "@aws-sdk/client-sso-oidc": 3.236.0 + "@aws-sdk/client-sso-oidc": 3.238.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: c5e6c88f22d35002f2d575d23ba5a530ee195b7220d7c0c58603bc2fafb6632a6755bc863cb7519eadda110d2f3193a144f34cc0236df285fcde40c980ba653a + checksum: 5627cda5accc45efb50636d839ed3e6d820a139495fdc03f95cb49267d2c67182fa88d6e46a70fe9ccf34cc8a30df390ded8e94af9daeb3581c22ab0d4940ec5 languageName: node linkType: hard @@ -888,7 +888,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.16.0": version: 7.18.6 resolution: "@babel/code-frame@npm:7.18.6" dependencies: @@ -897,7 +897,14 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.18.6": +"@babel/helper-string-parser@npm:^7.19.4": + version: 7.19.4 + resolution: "@babel/helper-string-parser@npm:7.19.4" + checksum: b2f8a3920b30dfac81ec282ac4ad9598ea170648f8254b10f475abe6d944808fb006aab325d3eb5a8ad3bea8dfa888cfa6ef471050dae5748497c110ec060943 + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.19.1": version: 7.19.1 resolution: "@babel/helper-validator-identifier@npm:7.19.1" checksum: 0eca5e86a729162af569b46c6c41a63e18b43dbe09fda1d2a3c8924f7d617116af39cac5e4cd5d431bb760b4dca3c0970e0c444789b1db42bcf1fa41fbad0a3a @@ -915,6 +922,24 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:7.16.8": + version: 7.16.8 + resolution: "@babel/parser@npm:7.16.8" + bin: + parser: ./bin/babel-parser.js + checksum: f6bc2eb1f298fcb81db34c2d343fd05d8c59dbc5419a88c1cb4d298c7a3863e4d54f5a4f38a40e1aa979e4ce355816348730b471c1d787d424ed52b270fc7be0 + languageName: node + linkType: hard + +"@babel/parser@npm:^7.0.0": + version: 7.20.7 + resolution: "@babel/parser@npm:7.20.7" + bin: + parser: ./bin/babel-parser.js + checksum: 25b5266e3bd4be837092685f6b7ef886f1308ff72659a24342eb646ae5014f61ed1771ce8fc20636c890fcae19304fc72c069564ca6075207b7fbf3f75367275 + languageName: node + linkType: hard + "@babel/runtime@npm:^7.3.4": version: 7.20.7 resolution: "@babel/runtime@npm:7.20.7" @@ -924,6 +949,17 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.8.3": + version: 7.20.7 + resolution: "@babel/types@npm:7.20.7" + dependencies: + "@babel/helper-string-parser": ^7.19.4 + "@babel/helper-validator-identifier": ^7.19.1 + to-fast-properties: ^2.0.0 + checksum: b39af241f0b72bba67fd6d0d23914f6faec8c0eba8015c181cbd5ea92e59fc91a52a1ab490d3520c7dbd19ddb9ebb76c476308f6388764f16d8201e37fae6811 + languageName: node + linkType: hard + "@bcoe/v8-coverage@npm:^0.2.3": version: 0.2.3 resolution: "@bcoe/v8-coverage@npm:0.2.3" @@ -1056,6 +1092,66 @@ __metadata: languageName: unknown linkType: soft +"@bugsnag/browser@npm:^7.18.0": + version: 7.18.0 + resolution: "@bugsnag/browser@npm:7.18.0" + dependencies: + "@bugsnag/core": ^7.18.0 + checksum: 131f9bc8ac6d780574fa70ba8be5051efc9c75d4fbf8a32d1be7733cf07b85f81404e749776c5a76bf48526f4629b27faac0bae2b36318dfc157423e361b297a + languageName: node + linkType: hard + +"@bugsnag/core@npm:^7.18.0": + version: 7.18.0 + resolution: "@bugsnag/core@npm:7.18.0" + dependencies: + "@bugsnag/cuid": ^3.0.0 + "@bugsnag/safe-json-stringify": ^6.0.0 + error-stack-parser: ^2.0.3 + iserror: 0.0.2 + stack-generator: ^2.0.3 + checksum: bce23771159546b481a655decb0d58406dc68ffe6249a0f41c598b00a8adc9fb26c234913aafb2872f87628a015bd2c6b78555af5c21a68901d2e83b20d4593a + languageName: node + linkType: hard + +"@bugsnag/cuid@npm:^3.0.0": + version: 3.0.1 + resolution: "@bugsnag/cuid@npm:3.0.1" + checksum: ead5632c883ec0dbd5b9303c2cce34d0ed72f32d3e4ecd243274790ce36193163d79477bb52746d2557ed7681715ad3f56f2fb359c53bb60e02c35a5bddfb5af + languageName: node + linkType: hard + +"@bugsnag/js@npm:^7.0.0": + version: 7.18.0 + resolution: "@bugsnag/js@npm:7.18.0" + dependencies: + "@bugsnag/browser": ^7.18.0 + "@bugsnag/node": ^7.18.0 + checksum: 6b011dc36001cdd4c2b33e793053d323d358e9bc1ef6ba7ee866634114e1a088b5704c3d18cb35cfa2e1f613ddaa9d94f7f3b2225698feffce2dcf622dd8f14f + languageName: node + linkType: hard + +"@bugsnag/node@npm:^7.18.0": + version: 7.18.0 + resolution: "@bugsnag/node@npm:7.18.0" + dependencies: + "@bugsnag/core": ^7.18.0 + byline: ^5.0.0 + error-stack-parser: ^2.0.2 + iserror: ^0.0.2 + pump: ^3.0.0 + stack-generator: ^2.0.3 + checksum: 678cf3dff4639a1b1ea863968ca9ed46e0af661cb53275c21d0ae9c16fb45c63455e5f9210a61f978575609aa437f80861671c43f62ba8c39167f0c11ebc7d41 + languageName: node + linkType: hard + +"@bugsnag/safe-json-stringify@npm:^6.0.0": + version: 6.0.0 + resolution: "@bugsnag/safe-json-stringify@npm:6.0.0" + checksum: 74f5d96af5f2f14be038ff939093329cdc6b3cc94eca6ce5ecd9e66a6d30819bcfd22f99c0ff229de56c0ef601cbca292f86ef5c9940ed2692bc9e005ac1f261 + languageName: node + linkType: hard + "@builder.io/qwik-city@npm:0.0.128": version: 0.0.128 resolution: "@builder.io/qwik-city@npm:0.0.128" @@ -1079,12 +1175,10 @@ __metadata: languageName: node linkType: hard -"@cloudflare/kv-asset-handler@npm:^0.2.0": - version: 0.2.0 - resolution: "@cloudflare/kv-asset-handler@npm:0.2.0" - dependencies: - mime: ^3.0.0 - checksum: bc6a02a9c80be6de90e46454ef4de09301e68726eaa4835de0e30216e50fffcc5612274a17dfb455916cf3418f0cb25fefd2b561a9d2282f4cc10d40527f0acb +"@colors/colors@npm:1.5.0": + version: 1.5.0 + resolution: "@colors/colors@npm:1.5.0" + checksum: d64d5260bed1d5012ae3fc617d38d1afc0329fec05342f4e6b838f46998855ba56e0a73833f4a80fa8378c84810da254f76a8a19c39d038260dc06dc4e007425 languageName: node linkType: hard @@ -1301,24 +1395,14 @@ __metadata: languageName: node linkType: hard -"@esbuild-plugins/node-globals-polyfill@npm:^0.1.1": - version: 0.1.1 - resolution: "@esbuild-plugins/node-globals-polyfill@npm:0.1.1" - peerDependencies: - esbuild: "*" - checksum: 68a41e2c377724e9cd46ca344ad219d289cc41a8b273d0d89bbc82bd90025b067b28234a865d8862a3f38c2a028ca4c93138dfca4e1e75e617efc314156c1ce0 - languageName: node - linkType: hard - -"@esbuild-plugins/node-modules-polyfill@npm:^0.1.4": - version: 0.1.4 - resolution: "@esbuild-plugins/node-modules-polyfill@npm:0.1.4" +"@dabh/diagnostics@npm:^2.0.2": + version: 2.0.3 + resolution: "@dabh/diagnostics@npm:2.0.3" dependencies: - escape-string-regexp: ^4.0.0 - rollup-plugin-node-polyfills: ^0.2.1 - peerDependencies: - esbuild: "*" - checksum: 39ff2a816139d71ebfbb78914c024565b6026da3146776aa10d27ee1330938ce78c7b2aad11c2d7768c7675d0942d1d1690dabfe60fa79e07dbb31cfbe396cec + colorspace: 1.1.x + enabled: 2.0.x + kuler: ^2.0.0 + checksum: 4879600c55c8315a0fb85fbb19057bad1adc08f0a080a8cb4e2b63f723c379bfc4283b68123a2b078d367b327dd8df12fcb27464efe791addc0a48b9df6d79a1 languageName: node linkType: hard @@ -1441,6 +1525,13 @@ __metadata: languageName: node linkType: hard +"@humanwhocodes/momoa@npm:^2.0.2": + version: 2.0.4 + resolution: "@humanwhocodes/momoa@npm:2.0.4" + checksum: ce4680e7f32394b54b29266b0059abbd8de8a980e486f10135c52f2a64359263e50548f9fb6956b1c2e8a47478e6dd4d3ede50bf68bdf1ec1bcc6e61e02d8238 + languageName: node + linkType: hard + "@humanwhocodes/object-schema@npm:^1.2.1": version: 1.2.1 resolution: "@humanwhocodes/object-schema@npm:1.2.1" @@ -1455,19 +1546,12 @@ __metadata: languageName: node linkType: hard -"@iarna/toml@npm:^2.2.5": - version: 2.2.5 - resolution: "@iarna/toml@npm:2.2.5" - checksum: b63b2b2c4fd67969a6291543ada0303d45593801ee744b60f5390f183c03d9192bc67a217abb24be945158f1935f02840d9ffff40c0142aa171b5d3b6b6a3ea5 - languageName: node - linkType: hard - "@iconify-json/tabler@npm:^1.1.49": - version: 1.1.52 - resolution: "@iconify-json/tabler@npm:1.1.52" + version: 1.1.53 + resolution: "@iconify-json/tabler@npm:1.1.53" dependencies: "@iconify/types": "*" - checksum: 976f1aee15a6123614aae07b6c70c036e31e1b127aa4cd12c58c2fadbf6c9fa86e1f9c4e34b7db3dbfbe00af70a66620269ddb4e119f89f1f3308d6dc28b6941 + checksum: 4cc9db8d4bfb978249af55bce10fa355e3a51547178b1343a947163864c51659059bd622801c688baba1d2cab51980c6e9bc3cc23cfa6ee2b74ea76714e1400a languageName: node linkType: hard @@ -1478,6 +1562,13 @@ __metadata: languageName: node linkType: hard +"@import-maps/resolve@npm:^1.0.1": + version: 1.0.1 + resolution: "@import-maps/resolve@npm:1.0.1" + checksum: 17ee033e26a0fd82294de87eae76d32b553a130fdbf0fb8c70d39f2087a3e8a4a5908970a99aa32bd175153efe9b7dfee6b7f99df36f41abed08c1911dbdb19c + languageName: node + linkType: hard + "@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": version: 0.1.3 resolution: "@istanbuljs/schema@npm:0.1.3" @@ -1485,6 +1576,31 @@ __metadata: languageName: node linkType: hard +"@jest/types@npm:^25.5.0": + version: 25.5.0 + resolution: "@jest/types@npm:25.5.0" + dependencies: + "@types/istanbul-lib-coverage": ^2.0.0 + "@types/istanbul-reports": ^1.1.1 + "@types/yargs": ^15.0.0 + chalk: ^3.0.0 + checksum: 785b67521a2c54f290ad4b53f49fec6b14fa25828bf26a838f7bbe08dd42122f27f71a620ea9a33286346786e9b120dd370abf589e6ef8c5fde9dc56906880b1 + languageName: node + linkType: hard + +"@jest/types@npm:^27.5.1": + version: 27.5.1 + resolution: "@jest/types@npm:27.5.1" + dependencies: + "@types/istanbul-lib-coverage": ^2.0.0 + "@types/istanbul-reports": ^3.0.0 + "@types/node": "*" + "@types/yargs": ^16.0.0 + chalk: ^4.0.0 + checksum: d1f43cc946d87543ddd79d49547aab2399481d34025d5c5f2025d3d99c573e1d9832fa83cef25e9d9b07a8583500229d15bbb07b8e233d127d911d133e2f14b1 + 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" @@ -1519,6 +1635,25 @@ __metadata: languageName: node linkType: hard +"@mapbox/node-pre-gyp@npm:^1.0.5": + version: 1.0.10 + resolution: "@mapbox/node-pre-gyp@npm:1.0.10" + dependencies: + detect-libc: ^2.0.0 + https-proxy-agent: ^5.0.0 + make-dir: ^3.1.0 + node-fetch: ^2.6.7 + nopt: ^5.0.0 + npmlog: ^5.0.1 + rimraf: ^3.0.2 + semver: ^7.3.5 + tar: ^6.1.11 + bin: + node-pre-gyp: bin/node-pre-gyp + checksum: 1a98db05d955b74dad3814679593df293b9194853698f3f5f1ed00ecd93128cdd4b14fb8767fe44ac6981ef05c23effcfdc88710e7c1de99ccb6f647890597c8 + languageName: node + linkType: hard + "@mdx-js/mdx@npm:2.1.5": version: 2.1.5 resolution: "@mdx-js/mdx@npm:2.1.5" @@ -1544,204 +1679,634 @@ __metadata: languageName: node linkType: hard -"@miniflare/cache@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/cache@npm:2.10.0" +"@mrmlnc/readdir-enhanced@npm:^2.2.1": + version: 2.2.1 + resolution: "@mrmlnc/readdir-enhanced@npm:2.2.1" dependencies: - "@miniflare/core": 2.10.0 - "@miniflare/shared": 2.10.0 - http-cache-semantics: ^4.1.0 - undici: 5.9.1 - checksum: 29d1d97438098180c8604a11553cefd47029ace46652fce1c95d5d8ca7f1d2d35f6fc82a60e581e21c0e6cbce2700d07d3d028debd03fe40f098f5234022e79a + call-me-maybe: ^1.0.1 + glob-to-regexp: ^0.3.0 + checksum: d3b82b29368821154ce8e10bef5ccdbfd070d3e9601643c99ea4607e56f3daeaa4e755dd6d2355da20762c695c1b0570543d9f84b48f70c211ec09c4aaada2e1 languageName: node linkType: hard -"@miniflare/cli-parser@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/cli-parser@npm:2.10.0" - dependencies: - "@miniflare/shared": 2.10.0 - kleur: ^4.1.4 - checksum: 60183bc594bf86f02a9fa35f4523942b4730d650b3941e474eb1165dac76621d6f3383feed969aa73f4a10eb1edb39375b0b515a7742029f1ece56c3a74b2d08 +"@netlify/binary-info@npm:^1.0.0": + version: 1.0.0 + resolution: "@netlify/binary-info@npm:1.0.0" + checksum: 7894d05b0cb93e1bb906b3519b63e028ebbb2e4e21af900cd9bdd642f53d56efab47770564f00412bad776e00cf944a8446cf054eadf69b22eaf7e0c81890287 languageName: node linkType: hard -"@miniflare/core@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/core@npm:2.10.0" +"@netlify/build@npm:^29.2.2": + version: 29.3.0 + resolution: "@netlify/build@npm:29.3.0" 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 - checksum: ff096a1e5c21229d717fe86ec04bcafda658447b22236118df54a5476d7ac01406396b6f4c67050d0a2ec01138ae5c30b65912a09979991ab5ab54c7c064b039 + "@bugsnag/js": ^7.0.0 + "@netlify/cache-utils": ^5.1.0 + "@netlify/config": ^20.2.0 + "@netlify/edge-bundler": 8.0.0 + "@netlify/functions-utils": ^5.1.1 + "@netlify/git-utils": ^5.1.0 + "@netlify/plugins-list": ^6.59.0 + "@netlify/run-utils": ^5.1.0 + "@netlify/zip-it-and-ship-it": ^8.2.0 + "@sindresorhus/slugify": ^2.0.0 + ansi-escapes: ^5.0.0 + chalk: ^5.0.0 + clean-stack: ^4.0.0 + execa: ^6.0.0 + figures: ^4.0.0 + filter-obj: ^3.0.0 + got: ^10.0.0 + indent-string: ^5.0.0 + is-plain-obj: ^4.0.0 + js-yaml: ^4.0.0 + keep-func-props: ^4.0.0 + locate-path: ^7.0.0 + log-process-errors: ^8.0.0 + map-obj: ^5.0.0 + memoize-one: ^6.0.0 + os-name: ^5.0.0 + p-event: ^5.0.0 + p-every: ^2.0.0 + p-filter: ^3.0.0 + p-locate: ^6.0.0 + p-reduce: ^3.0.0 + path-exists: ^5.0.0 + path-type: ^5.0.0 + pkg-dir: ^6.0.0 + pretty-ms: ^7.0.0 + ps-list: ^8.0.0 + read-pkg-up: ^9.0.0 + readdirp: ^3.4.0 + resolve: ^2.0.0-next.1 + rfdc: ^1.3.0 + safe-json-stringify: ^1.2.0 + semver: ^7.0.0 + statsd-client: 0.4.7 + string-width: ^5.0.0 + strip-ansi: ^7.0.0 + supports-color: ^9.0.0 + terminal-link: ^3.0.0 + tmp-promise: ^3.0.2 + ts-node: ^10.6.0 + typescript: ^4.8.4 + update-notifier: ^5.0.0 + uuid: ^8.0.0 + yargs: ^17.6.0 + bin: + netlify-build: bin.js + checksum: ab3c37b97e34e4b43bdf7ef11d83d1524af90ec3d0ff9e7b92a198fa6cdbebe2bb479ef98aa34cb195f3811dbe6c8ef462461d23891a15e5a92a67616ddfc38e languageName: node linkType: hard -"@miniflare/d1@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/d1@npm:2.10.0" +"@netlify/cache-utils@npm:^5.1.0": + version: 5.1.0 + resolution: "@netlify/cache-utils@npm:5.1.0" dependencies: - "@miniflare/core": 2.10.0 - "@miniflare/shared": 2.10.0 - checksum: 84df69e495195da0797febde2420eca6c3d422f4a120a7e3ce0de415eb634849495a3bcadd9f5b6f7305ee78762b69bab96bd6dec59a07a566999b7867a2ba3c + cpy: ^8.1.0 + del: ^6.0.0 + get-stream: ^6.0.0 + globby: ^13.0.0 + junk: ^4.0.0 + locate-path: ^7.0.0 + move-file: ^3.0.0 + path-exists: ^5.0.0 + readdirp: ^3.4.0 + checksum: 2e3cee0955c240150d855c01619c1c74fbffcd7d28f11b395d64bfcaf11d0e6d2ac883ca93c8f386f6fc3daf23547ed98a2a54ee811d3d1cf0e0d95e22329277 languageName: node linkType: hard -"@miniflare/durable-objects@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/durable-objects@npm:2.10.0" +"@netlify/config@npm:^20.2.0": + version: 20.2.0 + resolution: "@netlify/config@npm:20.2.0" dependencies: - "@miniflare/core": 2.10.0 - "@miniflare/shared": 2.10.0 - "@miniflare/storage-memory": 2.10.0 - undici: 5.9.1 - checksum: b6267de24df2cf88c40602c3005460a2b552749335c8380bef9406093edfe7cf11192b090f91b44fd4ee47596dc533a74e651c5513eadaf10bd91e3dc6bb849a + chalk: ^5.0.0 + cron-parser: ^4.1.0 + deepmerge: ^4.2.2 + dot-prop: ^7.0.0 + execa: ^6.0.0 + fast-safe-stringify: ^2.0.7 + figures: ^4.0.0 + filter-obj: ^3.0.0 + find-up: ^6.0.0 + indent-string: ^5.0.0 + is-plain-obj: ^4.0.0 + js-yaml: ^4.0.0 + map-obj: ^5.0.0 + netlify: ^13.1.0 + netlify-headers-parser: ^7.1.0 + netlify-redirect-parser: ^14.1.0 + omit.js: ^2.0.2 + p-locate: ^6.0.0 + path-exists: ^5.0.0 + path-type: ^5.0.0 + toml: ^3.0.0 + tomlify-j0.4: ^3.0.0 + validate-npm-package-name: ^4.0.0 + yargs: ^17.6.0 + bin: + netlify-config: bin.js + checksum: db758730a7be0633272d484d1c82bfe45756e00a42d53e18977a96030cd90efbe0369351dd5968f39de8375f700954b04ad8b4a14a1f5223127b05d611e5ab9a languageName: node linkType: hard -"@miniflare/html-rewriter@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/html-rewriter@npm:2.10.0" +"@netlify/edge-bundler@npm:8.0.0, @netlify/edge-bundler@npm:^8.0.0": + version: 8.0.0 + resolution: "@netlify/edge-bundler@npm:8.0.0" dependencies: - "@miniflare/core": 2.10.0 - "@miniflare/shared": 2.10.0 - html-rewriter-wasm: ^0.4.1 - undici: 5.9.1 - checksum: 35e925e35f2482a4c052488f0a1a443f7b0f901f1e0502e2fceba4a6f1fb125012eea328e3bba11b47ff9aea0ac29c00cfc8d41cb773531d87e80352b1c4413a + "@import-maps/resolve": ^1.0.1 + ajv: ^8.11.2 + ajv-errors: ^3.0.0 + better-ajv-errors: ^1.2.0 + common-path-prefix: ^3.0.0 + del: ^7.0.0 + env-paths: ^3.0.0 + execa: ^6.0.0 + find-up: ^6.3.0 + get-port: ^6.1.2 + glob-to-regexp: ^0.4.1 + jsonc-parser: ^3.2.0 + node-fetch: ^3.1.1 + node-stream-zip: ^1.15.0 + p-retry: ^5.1.1 + p-wait-for: ^4.1.0 + path-key: ^4.0.0 + semver: ^7.3.5 + tmp-promise: ^3.0.3 + uuid: ^9.0.0 + checksum: b6e387fc46469179b3e53a82895740da02f98011e224827d26009254f671916393c3e4e8a7d4696e12d9220dbe7307f9abc8e479d4d5e833e00178a8bf276cd0 languageName: node linkType: hard -"@miniflare/http-server@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/http-server@npm:2.10.0" - 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 - checksum: e2cb204542611fc1f7d9ab56c41f786e2747c203b3b493c78ce273142b268ba56a29dc59cf731720eb337834f9feb960c1cd6256b1df207d75db5c0513cbbd0e +"@netlify/esbuild-android-64@npm:0.14.39": + version: 0.14.39 + resolution: "@netlify/esbuild-android-64@npm:0.14.39" + conditions: os=android & cpu=x64 languageName: node linkType: hard -"@miniflare/kv@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/kv@npm:2.10.0" - dependencies: - "@miniflare/shared": 2.10.0 - checksum: 1e6b4719ec9a2413a8e56c721b413ed74475862b710d88b0ae93d4b04515cdc0076bf6ac766fcca2637d281c00c6bc61b37d73d214699dc6c45fc19298218d39 +"@netlify/esbuild-android-arm64@npm:0.14.39": + version: 0.14.39 + resolution: "@netlify/esbuild-android-arm64@npm:0.14.39" + conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@miniflare/queues@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/queues@npm:2.10.0" - dependencies: - "@miniflare/shared": 2.10.0 - checksum: 4a9496cb2be7d715209e4b99b5d98ebfa0f30f7635e67009bfa238018820ba85c18b97296dc133ccd98478efc71b5af7396361f1f50aaff5fa4ca398c872d662 +"@netlify/esbuild-darwin-64@npm:0.14.39": + version: 0.14.39 + resolution: "@netlify/esbuild-darwin-64@npm:0.14.39" + conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@miniflare/r2@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/r2@npm:2.10.0" - dependencies: - "@miniflare/shared": 2.10.0 - undici: 5.9.1 - checksum: 69a52d614ef81981275097270831ee6af9ad642d40dea4078c12fc94f62e060e3872c6ae394bca41cb94630a499cd0cdfaefeb26e7fa78483b9f9ac239640733 +"@netlify/esbuild-darwin-arm64@npm:0.14.39": + version: 0.14.39 + resolution: "@netlify/esbuild-darwin-arm64@npm:0.14.39" + conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@miniflare/runner-vm@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/runner-vm@npm:2.10.0" - dependencies: - "@miniflare/shared": 2.10.0 - checksum: 4c4ab8460762cb5957661234e8bc54f022159accd0845b7b2094e47e70b9428c9a053f998dedf5a00ade537148ea7695c9198f1f43760492d522a1798e6348ad +"@netlify/esbuild-freebsd-64@npm:0.14.39": + version: 0.14.39 + resolution: "@netlify/esbuild-freebsd-64@npm:0.14.39" + conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@miniflare/scheduler@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/scheduler@npm:2.10.0" - dependencies: - "@miniflare/core": 2.10.0 - "@miniflare/shared": 2.10.0 - cron-schedule: ^3.0.4 - checksum: fef3bdf49009a30d903cd080588119a444f7bc0f7f5363abb24fc4d2c59e4dd90408b4249a3c02b0cb1779d88803113bce2e6dcfeaacdc21e252f042755e459d +"@netlify/esbuild-freebsd-arm64@npm:0.14.39": + version: 0.14.39 + resolution: "@netlify/esbuild-freebsd-arm64@npm:0.14.39" + conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@miniflare/shared@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/shared@npm:2.10.0" - dependencies: - "@types/better-sqlite3": ^7.6.0 - kleur: ^4.1.4 - npx-import: ^1.1.3 - picomatch: ^2.3.1 - checksum: ec610c597d3d7c6d94687f956fb9dee9549e4a5f8f5ceacabbc1d840329d45bdd831926691c13aa9f91b816518a9caac7c3702ad432a9f049fa6a27cdeb90a49 +"@netlify/esbuild-linux-32@npm:0.14.39": + version: 0.14.39 + resolution: "@netlify/esbuild-linux-32@npm:0.14.39" + conditions: os=linux & cpu=ia32 languageName: node linkType: hard -"@miniflare/sites@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/sites@npm:2.10.0" - dependencies: - "@miniflare/kv": 2.10.0 - "@miniflare/shared": 2.10.0 - "@miniflare/storage-file": 2.10.0 - checksum: f2de5fba0e5ccbdf210bd30930813700ec6929d2564ba4a17ea13759fe5648dfe5f72bb69e4b2debd655e66a18adc73d67f44478e5858d05acab835cf286ad72 +"@netlify/esbuild-linux-64@npm:0.14.39": + version: 0.14.39 + resolution: "@netlify/esbuild-linux-64@npm:0.14.39" + conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@miniflare/storage-file@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/storage-file@npm:2.10.0" - dependencies: - "@miniflare/shared": 2.10.0 - "@miniflare/storage-memory": 2.10.0 - checksum: f4e3496b4783acf34af3b43bce21e41def1aaf4eec2ac51f35006f4d3c655e4eadc7f8a42f11b9846925c4519839858f5b7c080c2222c759b497ae8d36ce4f0b +"@netlify/esbuild-linux-arm64@npm:0.14.39": + version: 0.14.39 + resolution: "@netlify/esbuild-linux-arm64@npm:0.14.39" + conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@miniflare/storage-memory@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/storage-memory@npm:2.10.0" - dependencies: - "@miniflare/shared": 2.10.0 - checksum: 03190729308497a4d1a948661f0afc6f9c9b39396fd99703e69378f18108581363629313fb52680a5b468eb0f43de486844afbe727afc81032dfae0458d8637c +"@netlify/esbuild-linux-arm@npm:0.14.39": + version: 0.14.39 + resolution: "@netlify/esbuild-linux-arm@npm:0.14.39" + conditions: os=linux & cpu=arm languageName: node linkType: hard -"@miniflare/watcher@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/watcher@npm:2.10.0" - dependencies: - "@miniflare/shared": 2.10.0 - checksum: ee4c4f1e0ce3fcc8cbd4be32579efffac33f00a48dcc546558f699450dbe6d818ab9df9594fe76836dc2c5138df36359d554bd3e79d9ac45b01bf60986ca8c59 +"@netlify/esbuild-linux-mips64le@npm:0.14.39": + version: 0.14.39 + resolution: "@netlify/esbuild-linux-mips64le@npm:0.14.39" + conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@miniflare/web-sockets@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/web-sockets@npm:2.10.0" +"@netlify/esbuild-linux-ppc64le@npm:0.14.39": + version: 0.14.39 + resolution: "@netlify/esbuild-linux-ppc64le@npm:0.14.39" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@netlify/esbuild-linux-riscv64@npm:0.14.39": + version: 0.14.39 + resolution: "@netlify/esbuild-linux-riscv64@npm:0.14.39" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@netlify/esbuild-linux-s390x@npm:0.14.39": + version: 0.14.39 + resolution: "@netlify/esbuild-linux-s390x@npm:0.14.39" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@netlify/esbuild-netbsd-64@npm:0.14.39": + version: 0.14.39 + resolution: "@netlify/esbuild-netbsd-64@npm:0.14.39" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@netlify/esbuild-openbsd-64@npm:0.14.39": + version: 0.14.39 + resolution: "@netlify/esbuild-openbsd-64@npm:0.14.39" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@netlify/esbuild-sunos-64@npm:0.14.39": + version: 0.14.39 + resolution: "@netlify/esbuild-sunos-64@npm:0.14.39" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@netlify/esbuild-windows-32@npm:0.14.39": + version: 0.14.39 + resolution: "@netlify/esbuild-windows-32@npm:0.14.39" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@netlify/esbuild-windows-64@npm:0.14.39": + version: 0.14.39 + resolution: "@netlify/esbuild-windows-64@npm:0.14.39" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@netlify/esbuild-windows-arm64@npm:0.14.39": + version: 0.14.39 + resolution: "@netlify/esbuild-windows-arm64@npm:0.14.39" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@netlify/esbuild@npm:0.14.39": + version: 0.14.39 + resolution: "@netlify/esbuild@npm:0.14.39" dependencies: - "@miniflare/core": 2.10.0 - "@miniflare/shared": 2.10.0 - undici: 5.9.1 - ws: ^8.2.2 - checksum: 1a030939211926ddc9769174b8939e37348bb5d08f67227ba691ef7aad65bcb368cf217d8478d01b15d85427d16d8e94af08a27189d5a5c965fcfa0934be2eff + "@netlify/esbuild-android-64": 0.14.39 + "@netlify/esbuild-android-arm64": 0.14.39 + "@netlify/esbuild-darwin-64": 0.14.39 + "@netlify/esbuild-darwin-arm64": 0.14.39 + "@netlify/esbuild-freebsd-64": 0.14.39 + "@netlify/esbuild-freebsd-arm64": 0.14.39 + "@netlify/esbuild-linux-32": 0.14.39 + "@netlify/esbuild-linux-64": 0.14.39 + "@netlify/esbuild-linux-arm": 0.14.39 + "@netlify/esbuild-linux-arm64": 0.14.39 + "@netlify/esbuild-linux-mips64le": 0.14.39 + "@netlify/esbuild-linux-ppc64le": 0.14.39 + "@netlify/esbuild-linux-riscv64": 0.14.39 + "@netlify/esbuild-linux-s390x": 0.14.39 + "@netlify/esbuild-netbsd-64": 0.14.39 + "@netlify/esbuild-openbsd-64": 0.14.39 + "@netlify/esbuild-sunos-64": 0.14.39 + "@netlify/esbuild-windows-32": 0.14.39 + "@netlify/esbuild-windows-64": 0.14.39 + "@netlify/esbuild-windows-arm64": 0.14.39 + dependenciesMeta: + "@netlify/esbuild-android-64": + optional: true + "@netlify/esbuild-android-arm64": + optional: true + "@netlify/esbuild-darwin-64": + optional: true + "@netlify/esbuild-darwin-arm64": + optional: true + "@netlify/esbuild-freebsd-64": + optional: true + "@netlify/esbuild-freebsd-arm64": + optional: true + "@netlify/esbuild-linux-32": + optional: true + "@netlify/esbuild-linux-64": + optional: true + "@netlify/esbuild-linux-arm": + optional: true + "@netlify/esbuild-linux-arm64": + optional: true + "@netlify/esbuild-linux-mips64le": + optional: true + "@netlify/esbuild-linux-ppc64le": + optional: true + "@netlify/esbuild-linux-riscv64": + optional: true + "@netlify/esbuild-linux-s390x": + optional: true + "@netlify/esbuild-netbsd-64": + optional: true + "@netlify/esbuild-openbsd-64": + optional: true + "@netlify/esbuild-sunos-64": + optional: true + "@netlify/esbuild-windows-32": + optional: true + "@netlify/esbuild-windows-64": + optional: true + "@netlify/esbuild-windows-arm64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 2152ba7256181c3e87ab7a15495f0aacb93114d284c60ab8616cb88e957eb04fdb1e5e921e453e7fa9da2a30b3d4f4740226b547b9c9477db3de7b41e7d79ddc + languageName: node + linkType: hard + +"@netlify/framework-info@npm:^9.5.3": + version: 9.5.3 + resolution: "@netlify/framework-info@npm:9.5.3" + dependencies: + ajv: ^8.0.0 + filter-obj: ^3.0.0 + find-up: ^6.3.0 + fs-extra: ^10.1.0 + is-plain-obj: ^4.0.0 + locate-path: ^7.0.0 + p-filter: ^3.0.0 + p-locate: ^6.0.0 + process: ^0.11.10 + read-pkg-up: ^9.0.0 + semver: ^7.3.4 + url: ^0.11.0 + checksum: ba3f8c55f1563e3e60611838cf1aaffa04633aee86a7bc20ef760c8dda6565f160f85dc19970e6fcd5403f3de210a22d0f9e06d6d24808f9e1a7017243a3a0c2 + languageName: node + linkType: hard + +"@netlify/functions-utils@npm:^5.1.1": + version: 5.1.1 + resolution: "@netlify/functions-utils@npm:5.1.1" + dependencies: + "@netlify/zip-it-and-ship-it": ^8.2.0 + cpy: ^8.1.0 + path-exists: ^5.0.0 + checksum: 526c5f3ff25d8f687a30ab3c6003f97f183f1365468f6716e7f6bcf28022a2163dad8a613a48077c69b8944294e58e325e1ccf130dc4e2b4ffb425b446035879 + languageName: node + linkType: hard + +"@netlify/git-utils@npm:^5.1.0": + version: 5.1.0 + resolution: "@netlify/git-utils@npm:5.1.0" + dependencies: + execa: ^6.0.0 + map-obj: ^5.0.0 + micromatch: ^4.0.2 + moize: ^6.1.3 + path-exists: ^5.0.0 + checksum: 9c1f791d86c56f5919882c1a4e6c7d1b5cb8a8e5b8e2673dee9c0cef64cfbe7da200144b0492482e0aa74aa73f856c14b30975dc593db665bc48c017e41a5f93 + languageName: node + linkType: hard + +"@netlify/local-functions-proxy-darwin-arm64@npm:1.1.1": + version: 1.1.1 + resolution: "@netlify/local-functions-proxy-darwin-arm64@npm:1.1.1" + bin: + local-functions-proxy: bin/local-functions-proxy + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@netlify/local-functions-proxy-darwin-x64@npm:1.1.1": + version: 1.1.1 + resolution: "@netlify/local-functions-proxy-darwin-x64@npm:1.1.1" + bin: + local-functions-proxy: bin/local-functions-proxy + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@netlify/local-functions-proxy-freebsd-arm64@npm:1.1.1": + version: 1.1.1 + resolution: "@netlify/local-functions-proxy-freebsd-arm64@npm:1.1.1" + bin: + local-functions-proxy: bin/local-functions-proxy + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@netlify/local-functions-proxy-freebsd-x64@npm:1.1.1": + version: 1.1.1 + resolution: "@netlify/local-functions-proxy-freebsd-x64@npm:1.1.1" + bin: + local-functions-proxy: bin/local-functions-proxy + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@netlify/local-functions-proxy-linux-arm64@npm:1.1.1": + version: 1.1.1 + resolution: "@netlify/local-functions-proxy-linux-arm64@npm:1.1.1" + bin: + local-functions-proxy: bin/local-functions-proxy + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@netlify/local-functions-proxy-linux-arm@npm:1.1.1": + version: 1.1.1 + resolution: "@netlify/local-functions-proxy-linux-arm@npm:1.1.1" + bin: + local-functions-proxy: bin/local-functions-proxy + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@netlify/local-functions-proxy-linux-ia32@npm:1.1.1": + version: 1.1.1 + resolution: "@netlify/local-functions-proxy-linux-ia32@npm:1.1.1" + bin: + local-functions-proxy: bin/local-functions-proxy + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@netlify/local-functions-proxy-linux-ppc64@npm:1.1.1": + version: 1.1.1 + resolution: "@netlify/local-functions-proxy-linux-ppc64@npm:1.1.1" + bin: + local-functions-proxy: bin/local-functions-proxy + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@netlify/local-functions-proxy-linux-x64@npm:1.1.1": + version: 1.1.1 + resolution: "@netlify/local-functions-proxy-linux-x64@npm:1.1.1" + bin: + local-functions-proxy: bin/local-functions-proxy + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@netlify/local-functions-proxy-openbsd-x64@npm:1.1.1": + version: 1.1.1 + resolution: "@netlify/local-functions-proxy-openbsd-x64@npm:1.1.1" + bin: + local-functions-proxy: bin/local-functions-proxy + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@netlify/local-functions-proxy-win32-ia32@npm:1.1.1": + version: 1.1.1 + resolution: "@netlify/local-functions-proxy-win32-ia32@npm:1.1.1" + bin: + local-functions-proxy.exe: bin/local-functions-proxy.exe + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@netlify/local-functions-proxy-win32-x64@npm:1.1.1": + version: 1.1.1 + resolution: "@netlify/local-functions-proxy-win32-x64@npm:1.1.1" + bin: + local-functions-proxy.exe: bin/local-functions-proxy.exe + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@netlify/local-functions-proxy@npm:^1.1.1": + version: 1.1.1 + resolution: "@netlify/local-functions-proxy@npm:1.1.1" + dependencies: + "@netlify/local-functions-proxy-darwin-arm64": 1.1.1 + "@netlify/local-functions-proxy-darwin-x64": 1.1.1 + "@netlify/local-functions-proxy-freebsd-arm64": 1.1.1 + "@netlify/local-functions-proxy-freebsd-x64": 1.1.1 + "@netlify/local-functions-proxy-linux-arm": 1.1.1 + "@netlify/local-functions-proxy-linux-arm64": 1.1.1 + "@netlify/local-functions-proxy-linux-ia32": 1.1.1 + "@netlify/local-functions-proxy-linux-ppc64": 1.1.1 + "@netlify/local-functions-proxy-linux-x64": 1.1.1 + "@netlify/local-functions-proxy-openbsd-x64": 1.1.1 + "@netlify/local-functions-proxy-win32-ia32": 1.1.1 + "@netlify/local-functions-proxy-win32-x64": 1.1.1 + dependenciesMeta: + "@netlify/local-functions-proxy-darwin-arm64": + optional: true + "@netlify/local-functions-proxy-darwin-x64": + optional: true + "@netlify/local-functions-proxy-freebsd-arm64": + optional: true + "@netlify/local-functions-proxy-freebsd-x64": + optional: true + "@netlify/local-functions-proxy-linux-arm": + optional: true + "@netlify/local-functions-proxy-linux-arm64": + optional: true + "@netlify/local-functions-proxy-linux-ia32": + optional: true + "@netlify/local-functions-proxy-linux-ppc64": + optional: true + "@netlify/local-functions-proxy-linux-x64": + optional: true + "@netlify/local-functions-proxy-openbsd-x64": + optional: true + "@netlify/local-functions-proxy-win32-ia32": + optional: true + "@netlify/local-functions-proxy-win32-x64": + optional: true + checksum: 8ce14ed9cb263a2b1af0362d1176c8bf325facfad4cd7d7452903c3b442687d8ce5e3b3fee58f26c4d7d0d1db12a46f72da15e945a90efee7f68cefc1a65e450 + languageName: node + linkType: hard + +"@netlify/open-api@npm:^2.12.0": + version: 2.12.2 + resolution: "@netlify/open-api@npm:2.12.2" + checksum: 85b5fb20e80cc581e21924f770536a5797d8efedbade9086b0703f6c87a741c1005b140e7848dda1724f4a7ce945371d74a21e6c624c428c75a88d86f5b1f2e6 + languageName: node + linkType: hard + +"@netlify/plugins-list@npm:^6.59.0": + version: 6.61.0 + resolution: "@netlify/plugins-list@npm:6.61.0" + checksum: c1a62683f2c0d413e5787241bd2d3b0e6e1d05d4651d8bc9ed06647fdd50f5ab7f2aa2d9041559c5be3029a7064fd6ecf6b9ae0f46f844624bb81f8e7059ddd1 + languageName: node + linkType: hard + +"@netlify/run-utils@npm:^5.1.0": + version: 5.1.0 + resolution: "@netlify/run-utils@npm:5.1.0" + dependencies: + execa: ^6.0.0 + checksum: 157cebc71511d587da332f2472962489712719bd6a71c7fc8cc89643b1436b0b9eede473f92309bb2f356bb735108236d6b871f5823f30c2773cb9b9a92377c8 + languageName: node + linkType: hard + +"@netlify/zip-it-and-ship-it@npm:^8.2.0": + version: 8.2.0 + resolution: "@netlify/zip-it-and-ship-it@npm:8.2.0" + dependencies: + "@babel/parser": 7.16.8 + "@netlify/binary-info": ^1.0.0 + "@netlify/esbuild": 0.14.39 + "@vercel/nft": ^0.22.0 + archiver: ^5.3.0 + common-path-prefix: ^3.0.0 + cp-file: ^10.0.0 + del: ^7.0.0 + end-of-stream: ^1.4.4 + es-module-lexer: ^1.0.0 + execa: ^6.0.0 + filter-obj: ^5.0.0 + find-up: ^6.0.0 + glob: ^8.0.3 + is-builtin-module: ^3.1.0 + is-path-inside: ^4.0.0 + junk: ^4.0.0 + locate-path: ^7.0.0 + merge-options: ^3.0.4 + minimatch: ^5.0.0 + normalize-path: ^3.0.0 + p-map: ^5.0.0 + path-exists: ^5.0.0 + precinct: ^9.0.1 + require-package-name: ^2.0.1 + resolve: ^2.0.0-next.1 + semver: ^7.0.0 + tmp-promise: ^3.0.2 + toml: ^3.0.0 + unixify: ^1.0.0 + yargs: ^17.0.0 + bin: + zip-it-and-ship-it: dist/bin.js + checksum: 1963aeea05598e26c67c420813e5b765510cfe788118eda87eda88583c574f930b2d070dd9f5f368ac0e96752cbca7af9bdb18f52bb6b1c941415df85416a234 languageName: node linkType: hard @@ -1762,6 +2327,13 @@ __metadata: languageName: node linkType: hard +"@nodelib/fs.stat@npm:^1.1.2": + version: 1.1.3 + resolution: "@nodelib/fs.stat@npm:1.1.3" + checksum: 318deab369b518a34778cdaa0054dd28a4381c0c78e40bbd20252f67d084b1d7bf9295fea4423de2c19ac8e1a34f120add9125f481b2a710f7068bcac7e3e305 + languageName: node + linkType: hard + "@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": version: 1.2.8 resolution: "@nodelib/fs.walk@npm:1.2.8" @@ -1845,6 +2417,38 @@ __metadata: languageName: node linkType: hard +"@octokit/plugin-paginate-rest@npm:^5.0.0": + version: 5.0.1 + resolution: "@octokit/plugin-paginate-rest@npm:5.0.1" + dependencies: + "@octokit/types": ^8.0.0 + peerDependencies: + "@octokit/core": ">=4" + checksum: cfded297d9f66c7607bd34075eb0c5f7278a1617d6be86115997c0757151c9be2fcf7a8849c2a5cebab56931a263b5cc35742b6227935afe77f5ed61b0627a3d + languageName: node + linkType: hard + +"@octokit/plugin-request-log@npm:^1.0.4": + version: 1.0.4 + resolution: "@octokit/plugin-request-log@npm:1.0.4" + peerDependencies: + "@octokit/core": ">=3" + checksum: 2086db00056aee0f8ebd79797b5b57149ae1014e757ea08985b71eec8c3d85dbb54533f4fd34b6b9ecaa760904ae6a7536be27d71e50a3782ab47809094bfc0c + languageName: node + linkType: hard + +"@octokit/plugin-rest-endpoint-methods@npm:^6.7.0": + version: 6.7.0 + resolution: "@octokit/plugin-rest-endpoint-methods@npm:6.7.0" + dependencies: + "@octokit/types": ^8.0.0 + deprecation: ^2.3.1 + peerDependencies: + "@octokit/core": ">=3" + checksum: 513c6c0717d08f3e85848029bd700412b7d9787750f78cc79a3dede356e94b238bf8a518b108f556a7efe626871720dd0466de9f31091578ea4e0f5a016f0ae7 + languageName: node + linkType: hard + "@octokit/request-error@npm:^3.0.0": version: 3.0.2 resolution: "@octokit/request-error@npm:3.0.2" @@ -1870,6 +2474,18 @@ __metadata: languageName: node linkType: hard +"@octokit/rest@npm:^19.0.0": + version: 19.0.5 + resolution: "@octokit/rest@npm:19.0.5" + dependencies: + "@octokit/core": ^4.1.0 + "@octokit/plugin-paginate-rest": ^5.0.0 + "@octokit/plugin-request-log": ^1.0.4 + "@octokit/plugin-rest-endpoint-methods": ^6.7.0 + checksum: ed4c36859aafb64e23f7f708086fe7e2ecda17ffd8c1594817d539f766f5855af79f17f5d225d96d34cd9b97cbfea988dac3df39a7cc928b2d2b7b75ed981056 + languageName: node + linkType: hard + "@octokit/types@npm:^8.0.0": version: 8.0.0 resolution: "@octokit/types@npm:8.0.0" @@ -1879,6 +2495,25 @@ __metadata: languageName: node linkType: hard +"@pnpm/network.ca-file@npm:^1.0.1": + version: 1.0.2 + resolution: "@pnpm/network.ca-file@npm:1.0.2" + dependencies: + graceful-fs: 4.2.10 + checksum: d8d0884646500576bd5390464d13db1bb9a62e32a1069293e5bddb2ad8354b354b7e2d2a35e12850025651e795e6a80ce9e601c66312504667b7e3ee7b52becc + languageName: node + linkType: hard + +"@pnpm/npm-conf@npm:^1.0.4": + version: 1.0.5 + resolution: "@pnpm/npm-conf@npm:1.0.5" + dependencies: + "@pnpm/network.ca-file": ^1.0.1 + config-chain: ^1.1.11 + checksum: 0c5f1a63782309a877b70e3cbdd21ff1da57549924a941772bafd0117323881fdcda0e9753f0a695c3f85f4360f5ca27a0e20153abae6985350502f2d94b7d40 + languageName: node + linkType: hard + "@rollup/plugin-commonjs@npm:^23.0.2": version: 23.0.7 resolution: "@rollup/plugin-commonjs@npm:23.0.7" @@ -1946,6 +2581,16 @@ __metadata: languageName: node linkType: hard +"@rollup/pluginutils@npm:^4.0.0": + version: 4.2.1 + resolution: "@rollup/pluginutils@npm:4.2.1" + dependencies: + estree-walker: ^2.0.1 + picomatch: ^2.2.2 + checksum: 6bc41f22b1a0f1efec3043899e4d3b6b1497b3dea4d94292d8f83b4cf07a1073ecbaedd562a22d11913ff7659f459677b01b09e9598a98936e746780ecc93a12 + languageName: node + linkType: hard + "@rollup/pluginutils@npm:^5.0.0, @rollup/pluginutils@npm:^5.0.1": version: 5.0.2 resolution: "@rollup/pluginutils@npm:5.0.2" @@ -1962,6 +2607,67 @@ __metadata: languageName: node linkType: hard +"@samverschueren/stream-to-observable@npm:^0.3.0": + version: 0.3.1 + resolution: "@samverschueren/stream-to-observable@npm:0.3.1" + dependencies: + any-observable: ^0.3.0 + peerDependenciesMeta: + rxjs: + optional: true + zen-observable: + optional: true + checksum: 8ec6d43370f419975295f306699f87989dd64a099a29cf62ddacbbbe32df634f87451504d340e15321e74b0a3ca8a9b447736472f792102e234faa207395e6c9 + languageName: node + linkType: hard + +"@sindresorhus/is@npm:^0.14.0": + version: 0.14.0 + resolution: "@sindresorhus/is@npm:0.14.0" + checksum: 971e0441dd44ba3909b467219a5e242da0fc584048db5324cfb8048148fa8dcc9d44d71e3948972c4f6121d24e5da402ef191420d1266a95f713bb6d6e59c98a + languageName: node + linkType: hard + +"@sindresorhus/is@npm:^0.7.0": + version: 0.7.0 + resolution: "@sindresorhus/is@npm:0.7.0" + checksum: decc50f6fe80b75c981bcff0a585c05259f5e04424a46a653ac9a7e065194145c463ca81001e3a229bd203f59474afadb5b1fa0af5507723f87f2dd45bd3897c + languageName: node + linkType: hard + +"@sindresorhus/is@npm:^2.0.0": + version: 2.1.1 + resolution: "@sindresorhus/is@npm:2.1.1" + checksum: cbae604a29931dd33a0ecb77ef50e7ac6f4b626939aad84e4d4da06ace624902f294bd652268939b94596c725ed1905a73c453a5574b8504010296f5619e44cc + languageName: node + linkType: hard + +"@sindresorhus/is@npm:^5.2.0": + version: 5.3.0 + resolution: "@sindresorhus/is@npm:5.3.0" + checksum: b31cebabcdece3d5322de2a4dbc8c0f004e04147a00f2606787bcaf5655ad4b1954f6727fc6914c524009b2b9a2cc01c42835b55f651ce69fd2a0083b60bb852 + languageName: node + linkType: hard + +"@sindresorhus/slugify@npm:^2.0.0": + version: 2.1.1 + resolution: "@sindresorhus/slugify@npm:2.1.1" + dependencies: + "@sindresorhus/transliterate": ^1.0.0 + escape-string-regexp: ^5.0.0 + checksum: 0c60c8ce0ec2e1ca0b7aaa0babe36bb537b13ffdaac938ac5c0cbeb39a23a6c76cb50cfa65e9e172e4e5058ae5b0bf35c9aeae52fd09dc60033d59ffdd91507c + languageName: node + linkType: hard + +"@sindresorhus/transliterate@npm:^1.0.0": + version: 1.6.0 + resolution: "@sindresorhus/transliterate@npm:1.6.0" + dependencies: + escape-string-regexp: ^5.0.0 + checksum: 947c7c84dcba36c35d12ac7fd95ae9f77e988bd499471ebd0819812c451c8bfd20f8a236084a13fde196ba1eb064871f8915d09995531611569e2fe687411582 + languageName: node + linkType: hard + "@swc/helpers@npm:^0.3.13": version: 0.3.17 resolution: "@swc/helpers@npm:0.3.17" @@ -1971,6 +2677,33 @@ __metadata: languageName: node linkType: hard +"@szmarczak/http-timer@npm:^1.1.2": + version: 1.1.2 + resolution: "@szmarczak/http-timer@npm:1.1.2" + dependencies: + defer-to-connect: ^1.0.1 + checksum: 4d9158061c5f397c57b4988cde33a163244e4f02df16364f103971957a32886beb104d6180902cbe8b38cb940e234d9f98a4e486200deca621923f62f50a06fe + languageName: node + linkType: hard + +"@szmarczak/http-timer@npm:^4.0.0": + version: 4.0.6 + resolution: "@szmarczak/http-timer@npm:4.0.6" + dependencies: + defer-to-connect: ^2.0.0 + checksum: c29df3bcec6fc3bdec2b17981d89d9c9fc9bd7d0c9bcfe92821dc533f4440bc890ccde79971838b4ceed1921d456973c4180d7175ee1d0023ad0562240a58d95 + languageName: node + linkType: hard + +"@szmarczak/http-timer@npm:^5.0.1": + version: 5.0.1 + resolution: "@szmarczak/http-timer@npm:5.0.1" + dependencies: + defer-to-connect: ^2.0.1 + checksum: fc9cb993e808806692e4a3337c90ece0ec00c89f4b67e3652a356b89730da98bc824273a6d67ca84d5f33cd85f317dcd5ce39d8cc0a2f060145a608a7cb8ce92 + languageName: node + linkType: hard + "@tailwindcss/aspect-ratio@npm:^0.4.0": version: 0.4.2 resolution: "@tailwindcss/aspect-ratio@npm:0.4.2" @@ -2072,12 +2805,43 @@ __metadata: languageName: node linkType: hard -"@types/better-sqlite3@npm:^7.6.0": - version: 7.6.3 - resolution: "@types/better-sqlite3@npm:7.6.3" +"@types/body-parser@npm:*": + version: 1.19.2 + resolution: "@types/body-parser@npm:1.19.2" + dependencies: + "@types/connect": "*" + "@types/node": "*" + checksum: e17840c7d747a549f00aebe72c89313d09fbc4b632b949b2470c5cb3b1cb73863901ae84d9335b567a79ec5efcfb8a28ff8e3f36bc8748a9686756b6d5681f40 + languageName: node + linkType: hard + +"@types/cacheable-request@npm:^6.0.1": + version: 6.0.3 + resolution: "@types/cacheable-request@npm:6.0.3" + dependencies: + "@types/http-cache-semantics": "*" + "@types/keyv": ^3.1.4 + "@types/node": "*" + "@types/responselike": ^1.0.0 + checksum: d9b26403fe65ce6b0cb3720b7030104c352bcb37e4fac2a7089a25a97de59c355fa08940658751f2f347a8512aa9d18fdb66ab3ade835975b2f454f2d5befbd9 + languageName: node + linkType: hard + +"@types/compression@npm:^1.7.2": + version: 1.7.2 + resolution: "@types/compression@npm:1.7.2" + dependencies: + "@types/express": "*" + checksum: 3457f9d39ed73d58387bccf15bcfe8e140298c5d6e90fe354dfeb24ec7828432658caebee8ab6f4e4ac39a7d03bc0a6a52686d7fb2fe405fbdefede41d6b5834 + languageName: node + linkType: hard + +"@types/connect@npm:*": + version: 3.4.35 + resolution: "@types/connect@npm:3.4.35" dependencies: "@types/node": "*" - checksum: 37ffd2507beb55f284261fc72b2f0b5585aecd65ffaffbc1f48a4d59958c3bcc16e54b83d9fd6af5f6a0edab830e384aef7ed79dbbfc3d443f850cb1eab091f5 + checksum: fe81351470f2d3165e8b12ce33542eef89ea893e36dd62e8f7d72566dfb7e448376ae962f9f3ea888547ce8b55a40020ca0e01d637fab5d99567673084542641 languageName: node linkType: hard @@ -2090,6 +2854,26 @@ __metadata: languageName: node linkType: hard +"@types/decompress@npm:*": + version: 4.2.4 + resolution: "@types/decompress@npm:4.2.4" + dependencies: + "@types/node": "*" + checksum: e47960f863148ef3afe9060a0c8dfd11d671322a47a341a3bd7128bbdea5b57c10117d76db0cfebf533b695ca81a4ffd4a3e6f338a149a5547052d4f63af9f76 + languageName: node + linkType: hard + +"@types/download@npm:^8.0.0": + version: 8.0.2 + resolution: "@types/download@npm:8.0.2" + dependencies: + "@types/decompress": "*" + "@types/got": ^9 + "@types/node": "*" + checksum: 2f8817d976e7bd50ef1c7fb793d6c2ee8aee9b64cf083cd107905e5ba648cb5cf74cc9d9653264c5b2a522508a8698a73db6aca88103c7dc2047e30a66756e28 + languageName: node + linkType: hard + "@types/eslint@npm:8.4.10": version: 8.4.10 resolution: "@types/eslint@npm:8.4.10" @@ -2116,6 +2900,29 @@ __metadata: languageName: node linkType: hard +"@types/express-serve-static-core@npm:^4.17.31": + version: 4.17.31 + resolution: "@types/express-serve-static-core@npm:4.17.31" + dependencies: + "@types/node": "*" + "@types/qs": "*" + "@types/range-parser": "*" + checksum: 009bfbe1070837454a1056aa710d0390ee5fb8c05dfe5a1691cc3e2ca88dc256f80e1ca27cb51a978681631d2f6431bfc9ec352ea46dd0c6eb183d0170bde5df + languageName: node + linkType: hard + +"@types/express@npm:*": + version: 4.17.15 + resolution: "@types/express@npm:4.17.15" + dependencies: + "@types/body-parser": "*" + "@types/express-serve-static-core": ^4.17.31 + "@types/qs": "*" + "@types/serve-static": "*" + checksum: b4acd8a836d4f6409cdf79b12d6e660485249b62500cccd61e7997d2f520093edf77d7f8498ca79d64a112c6434b6de5ca48039b8fde2c881679eced7e96979b + languageName: node + linkType: hard + "@types/fs-extra@npm:^8.0.1": version: 8.1.2 resolution: "@types/fs-extra@npm:8.1.2" @@ -2135,6 +2942,17 @@ __metadata: languageName: node linkType: hard +"@types/got@npm:^9": + version: 9.6.12 + resolution: "@types/got@npm:9.6.12" + dependencies: + "@types/node": "*" + "@types/tough-cookie": "*" + form-data: ^2.5.0 + checksum: e6c17cf49107064bc0c4371efaef6855d4753b0e17b615da1a9ab7dcd10c6208c48620c7309e96861a4ea1a0d8b9e7cdda67316b4075d4ba2aff4d7400f92f53 + languageName: node + linkType: hard + "@types/hast@npm:^2.0.0": version: 2.3.4 resolution: "@types/hast@npm:2.3.4" @@ -2144,13 +2962,57 @@ __metadata: languageName: node linkType: hard -"@types/istanbul-lib-coverage@npm:^2.0.1": +"@types/http-cache-semantics@npm:*": + version: 4.0.1 + resolution: "@types/http-cache-semantics@npm:4.0.1" + checksum: 1048aacf627829f0d5f00184e16548205cd9f964bf0841c29b36bc504509230c40bc57c39778703a1c965a6f5b416ae2cbf4c1d4589c889d2838dd9dbfccf6e9 + languageName: node + linkType: hard + +"@types/http-proxy@npm:^1.17.8": + version: 1.17.9 + resolution: "@types/http-proxy@npm:1.17.9" + dependencies: + "@types/node": "*" + checksum: 7a6746d00729b2a9fe9f9dd3453430b099931df879ec8f7a7b5f07b1795f6d99b0512640c45a67390b1e4bacb9401e36824952aeeaf089feba8627a063cf8e00 + languageName: node + linkType: hard + +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": version: 2.0.4 resolution: "@types/istanbul-lib-coverage@npm:2.0.4" checksum: a25d7589ee65c94d31464c16b72a9dc81dfa0bea9d3e105ae03882d616e2a0712a9c101a599ec482d297c3591e16336962878cb3eb1a0a62d5b76d277a890ce7 languageName: node linkType: hard +"@types/istanbul-lib-report@npm:*": + version: 3.0.0 + resolution: "@types/istanbul-lib-report@npm:3.0.0" + dependencies: + "@types/istanbul-lib-coverage": "*" + checksum: 656398b62dc288e1b5226f8880af98087233cdb90100655c989a09f3052b5775bf98ba58a16c5ae642fb66c61aba402e07a9f2bff1d1569e3b306026c59f3f36 + languageName: node + linkType: hard + +"@types/istanbul-reports@npm:^1.1.1": + version: 1.1.2 + resolution: "@types/istanbul-reports@npm:1.1.2" + dependencies: + "@types/istanbul-lib-coverage": "*" + "@types/istanbul-lib-report": "*" + checksum: 00866e815d1e68d0a590d691506937b79d8d65ad8eab5ed34dbfee66136c7c0f4ea65327d32046d5fe469f22abea2b294987591dc66365ebc3991f7e413b2d78 + languageName: node + linkType: hard + +"@types/istanbul-reports@npm:^3.0.0": + version: 3.0.1 + resolution: "@types/istanbul-reports@npm:3.0.1" + dependencies: + "@types/istanbul-lib-report": "*" + checksum: f1ad54bc68f37f60b30c7915886b92f86b847033e597f9b34f2415acdbe5ed742fa559a0a40050d74cdba3b6a63c342cac1f3a64dba5b68b66a6941f4abd7903 + languageName: node + linkType: hard + "@types/json-schema@npm:*, @types/json-schema@npm:^7.0.9": version: 7.0.11 resolution: "@types/json-schema@npm:7.0.11" @@ -2158,6 +3020,15 @@ __metadata: languageName: node linkType: hard +"@types/keyv@npm:^3.1.1, @types/keyv@npm:^3.1.4": + version: 3.1.4 + resolution: "@types/keyv@npm:3.1.4" + dependencies: + "@types/node": "*" + checksum: e009a2bfb50e90ca9b7c6e8f648f8464067271fd99116f881073fa6fa76dc8d0133181dd65e6614d5fb1220d671d67b0124aef7d97dc02d7e342ab143a47779d + languageName: node + linkType: hard + "@types/mdast@npm:^3.0.0": version: 3.0.10 resolution: "@types/mdast@npm:3.0.10" @@ -2174,6 +3045,13 @@ __metadata: languageName: node linkType: hard +"@types/mime@npm:*": + version: 3.0.1 + resolution: "@types/mime@npm:3.0.1" + checksum: 4040fac73fd0cea2460e29b348c1a6173da747f3a87da0dbce80dd7a9355a3d0e51d6d9a401654f3e5550620e3718b5a899b2ec1debf18424e298a2c605346e7 + languageName: node + linkType: hard + "@types/minimatch@npm:*": version: 5.1.2 resolution: "@types/minimatch@npm:5.1.2" @@ -2202,21 +3080,31 @@ __metadata: languageName: node linkType: hard +"@types/node-fetch@npm:^2.1.6": + version: 2.6.2 + resolution: "@types/node-fetch@npm:2.6.2" + dependencies: + "@types/node": "*" + form-data: ^3.0.0 + checksum: 6f73b1470000d303d25a6fb92875ea837a216656cb7474f66cdd67bb014aa81a5a11e7ac9c21fe19bee9ecb2ef87c1962bceeaec31386119d1ac86e4c30ad7a6 + languageName: node + linkType: hard + "@types/node@npm:*, @types/node@npm:latest": - version: 18.11.17 - resolution: "@types/node@npm:18.11.17" - checksum: 1933afd068d5c75c068c6c4df6d10edb3b0b2bb6503d544e2f0496ac007c90596e6a5e284a8ef032451bc16f871b7e46719d7d2bea60e9b25d13a77d52161cac + version: 18.11.18 + resolution: "@types/node@npm:18.11.18" + checksum: 03f17f9480f8d775c8a72da5ea7e9383db5f6d85aa5fefde90dd953a1449bd5e4ffde376f139da4f3744b4c83942166d2a7603969a6f8ea826edfb16e6e3b49d languageName: node linkType: hard "@types/node@npm:^14.0.0": - version: 14.18.35 - resolution: "@types/node@npm:14.18.35" - checksum: edaeea2735aa62a12b9f67311ef6efdb960560e055dc127a658b3571e0bbd52e020bd570227362bf255cd156ddfae18c18205515f1fb3599e34c06a914f167a1 + version: 14.18.36 + resolution: "@types/node@npm:14.18.36" + checksum: da7f479b3fc996d585e60b8329987c6e310ddbf051e14f2d900ce04f7768f42fa7b760f0eb376008d3eca130ce9431018fb5c9e44027dcb7bb139c547e44b9c5 languageName: node linkType: hard -"@types/normalize-package-data@npm:^2.4.0": +"@types/normalize-package-data@npm:^2.4.0, @types/normalize-package-data@npm:^2.4.1": version: 2.4.1 resolution: "@types/normalize-package-data@npm:2.4.1" checksum: e87bccbf11f95035c89a132b52b79ce69a1e3652fe55962363063c9c0dae0fe2477ebc585e03a9652adc6f381d24ba5589cc5e51849df4ced3d3e004a7d40ed5 @@ -2230,6 +3118,20 @@ __metadata: languageName: node linkType: hard +"@types/qs@npm:*": + version: 6.9.7 + resolution: "@types/qs@npm:6.9.7" + checksum: 7fd6f9c25053e9b5bb6bc9f9f76c1d89e6c04f7707a7ba0e44cc01f17ef5284adb82f230f542c2d5557d69407c9a40f0f3515e8319afd14e1e16b5543ac6cdba + languageName: node + linkType: hard + +"@types/range-parser@npm:*": + version: 1.2.4 + resolution: "@types/range-parser@npm:1.2.4" + checksum: b7c0dfd5080a989d6c8bb0b6750fc0933d9acabeb476da6fe71d8bdf1ab65e37c136169d84148034802f48378ab94e3c37bb4ef7656b2bec2cb9c0f8d4146a95 + languageName: node + linkType: hard + "@types/resolve@npm:1.20.2": version: 1.20.2 resolution: "@types/resolve@npm:1.20.2" @@ -2237,17 +3139,43 @@ __metadata: languageName: node linkType: hard -"@types/semver@npm:^7.3.12": +"@types/responselike@npm:^1.0.0": + version: 1.0.0 + resolution: "@types/responselike@npm:1.0.0" + dependencies: + "@types/node": "*" + checksum: e99fc7cc6265407987b30deda54c1c24bb1478803faf6037557a774b2f034c5b097ffd65847daa87e82a61a250d919f35c3588654b0fdaa816906650f596d1b0 + languageName: node + linkType: hard + +"@types/retry@npm:0.12.1": + version: 0.12.1 + resolution: "@types/retry@npm:0.12.1" + checksum: 5f46b2556053655f78262bb33040dc58417c900457cc63ff37d6c35349814471453ef511af0cec76a540c601296cd2b22f64bab1ab649c0dacc0223765ba876c + languageName: node + linkType: hard + +"@types/semver@npm:^7.0.0, @types/semver@npm:^7.3.12": version: 7.3.13 resolution: "@types/semver@npm:7.3.13" checksum: 00c0724d54757c2f4bc60b5032fe91cda6410e48689633d5f35ece8a0a66445e3e57fa1d6e07eb780f792e82ac542948ec4d0b76eb3484297b79bd18b8cf1cb0 languageName: node linkType: hard -"@types/stack-trace@npm:0.0.29": - version: 0.0.29 - resolution: "@types/stack-trace@npm:0.0.29" - checksum: 2dcfdf8f10e250a76e43efe6d3e05a463b4e22ca290dbb423ec14fa21f57f94ef0cc8ba19ed3394c448218d9ddd9f7cd9adea131fb6572aa2d484b1cf7f043aa +"@types/serve-static@npm:*": + version: 1.15.0 + resolution: "@types/serve-static@npm:1.15.0" + dependencies: + "@types/mime": "*" + "@types/node": "*" + checksum: b6ac93d471fb0f53ddcac1f9b67572a09cd62806f7db5855244b28f6f421139626f24799392566e97d1ffc61b12f9de7f30380c39fcae3c8a161fe161d44edf2 + languageName: node + linkType: hard + +"@types/tough-cookie@npm:*": + version: 4.0.2 + resolution: "@types/tough-cookie@npm:4.0.2" + checksum: e055556ffdaa39ad85ede0af192c93f93f986f4bd9e9426efdc2948e3e2632db3a4a584d4937dbf6d7620527419bc99e6182d3daf2b08685e710f2eda5291905 languageName: node linkType: hard @@ -2275,6 +3203,31 @@ __metadata: languageName: node linkType: hard +"@types/yargs-parser@npm:*": + version: 21.0.0 + resolution: "@types/yargs-parser@npm:21.0.0" + checksum: b2f4c8d12ac18a567440379909127cf2cec393daffb73f246d0a25df36ea983b93b7e9e824251f959e9f928cbc7c1aab6728d0a0ff15d6145f66cec2be67d9a2 + languageName: node + linkType: hard + +"@types/yargs@npm:^15.0.0": + version: 15.0.14 + resolution: "@types/yargs@npm:15.0.14" + dependencies: + "@types/yargs-parser": "*" + checksum: 8e358aeb8f0c3758e59e2b8fcfdee5627ab2fe3d92f50f380503d966c7f33287be3322155516a50d27727fde1ad3878f48f60cd6648439126d4b0bbb1a1153ed + languageName: node + linkType: hard + +"@types/yargs@npm:^16.0.0": + version: 16.0.4 + resolution: "@types/yargs@npm:16.0.4" + dependencies: + "@types/yargs-parser": "*" + checksum: caa21d2c957592fe2184a8368c8cbe5a82a6c2e2f2893722e489f842dc5963293d2f3120bc06fe3933d60a3a0d1e2eb269649fd6b1947fe1820f8841ba611dd9 + languageName: node + linkType: hard + "@types/yauzl@npm:^2.9.1": version: 2.10.0 resolution: "@types/yauzl@npm:2.10.0" @@ -2358,6 +3311,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:5.47.1": + version: 5.47.1 + resolution: "@typescript-eslint/types@npm:5.47.1" + checksum: 9b3df8661862a8927ec29d21d6b5826cae7dd8b4797b5b54d66289d8abcf46081453a5cbaf9cc0a5b6c8249ca381dda61c2623da2a704e47f9d86175639a8cea + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:5.45.0": version: 5.45.0 resolution: "@typescript-eslint/typescript-estree@npm:5.45.0" @@ -2376,6 +3336,24 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:^5.13.0": + version: 5.47.1 + resolution: "@typescript-eslint/typescript-estree@npm:5.47.1" + dependencies: + "@typescript-eslint/types": 5.47.1 + "@typescript-eslint/visitor-keys": 5.47.1 + debug: ^4.3.4 + globby: ^11.1.0 + is-glob: ^4.0.3 + semver: ^7.3.7 + tsutils: ^3.21.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 803214a53fd4faf19b6b325dd4e8ddaa5bb1ebb9b52358d26ebeaeb86b431cea5bc09f3b43ca8abfdd3a72fdea667467a1abfda50cbad866696ec5739afae2ac + languageName: node + linkType: hard + "@typescript-eslint/utils@npm:5.45.0": version: 5.45.0 resolution: "@typescript-eslint/utils@npm:5.45.0" @@ -2404,6 +3382,37 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:5.47.1": + version: 5.47.1 + resolution: "@typescript-eslint/visitor-keys@npm:5.47.1" + dependencies: + "@typescript-eslint/types": 5.47.1 + eslint-visitor-keys: ^3.3.0 + checksum: b4d1f4daa67e962d22c41325d9dcb6b2efde1caf354a2edb5bf682b92ab8c6205435d0b12f39ce9771955250e26f2a6f03adabb37e62e5aac8225691a59ef153 + languageName: node + linkType: hard + +"@vercel/nft@npm:^0.22.0": + version: 0.22.6 + resolution: "@vercel/nft@npm:0.22.6" + dependencies: + "@mapbox/node-pre-gyp": ^1.0.5 + "@rollup/pluginutils": ^4.0.0 + acorn: ^8.6.0 + async-sema: ^3.1.1 + bindings: ^1.4.0 + estree-walker: 2.0.2 + glob: ^7.1.3 + graceful-fs: ^4.2.9 + micromatch: ^4.0.2 + node-gyp-build: ^4.2.2 + resolve-from: ^5.0.0 + bin: + nft: out/cli.js + checksum: 03ab38477ca7006b3d5568a716128a5abb13a425205ea5cb23eed86967334a6c7fc9d36c58154e1ccd4e349e3ec0d725aa7496ef4159bf232ad706d842d85c29 + languageName: node + linkType: hard + "JSONStream@npm:^1.0.4": version: 1.3.5 resolution: "JSONStream@npm:1.3.5" @@ -2423,13 +3432,23 @@ __metadata: languageName: node linkType: hard -"abbrev@npm:^1.0.0": +"abbrev@npm:1, abbrev@npm:^1.0.0": version: 1.1.1 resolution: "abbrev@npm:1.1.1" checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 languageName: node linkType: hard +"accepts@npm:~1.3.5, accepts@npm:~1.3.8": + version: 1.3.8 + resolution: "accepts@npm:1.3.8" + dependencies: + mime-types: ~2.1.34 + negotiator: 0.6.3 + checksum: 50c43d32e7b50285ebe84b613ee4a3aa426715a7d131b65b786e2ead0fd76b6b60091b9916d3478a75f11f162628a2139991b6c03ab3f1d9ab7c86075dc8eab4 + languageName: node + linkType: hard + "acorn-globals@npm:^6.0.0": version: 6.0.0 resolution: "acorn-globals@npm:6.0.0" @@ -2483,7 +3502,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.0.0, acorn@npm:^8.0.4, acorn@npm:^8.2.4, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.8.0": +"acorn@npm:^8.0.0, acorn@npm:^8.0.4, acorn@npm:^8.2.4, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.6.0, acorn@npm:^8.8.0": version: 8.8.1 resolution: "acorn@npm:8.8.1" bin: @@ -2529,6 +3548,25 @@ __metadata: languageName: node linkType: hard +"aggregate-error@npm:^4.0.0": + version: 4.0.1 + resolution: "aggregate-error@npm:4.0.1" + dependencies: + clean-stack: ^4.0.0 + indent-string: ^5.0.0 + checksum: bb3ffdfd13447800fff237c2cba752c59868ee669104bb995dfbbe0b8320e967d679e683dabb640feb32e4882d60258165cde0baafc4cd467cc7d275a13ad6b5 + languageName: node + linkType: hard + +"ajv-errors@npm:^3.0.0": + version: 3.0.0 + resolution: "ajv-errors@npm:3.0.0" + peerDependencies: + ajv: ^8.0.1 + checksum: f3d1610a104fa776c2f90534acbe2113842a40d5ee446062da9e956ae6de6959afc997da1e3948c47316faa225255fc2d9d97aacd0803f47998fb38156d3d03c + languageName: node + linkType: hard + "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" @@ -2541,7 +3579,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^8.11.0": +"ajv@npm:^8.0.0, ajv@npm:^8.11.0, ajv@npm:^8.11.2": version: 8.11.2 resolution: "ajv@npm:8.11.2" dependencies: @@ -2553,7 +3591,23 @@ __metadata: languageName: node linkType: hard -"ansi-align@npm:^3.0.0": +"all-node-versions@npm:^8.0.0": + version: 8.0.0 + resolution: "all-node-versions@npm:8.0.0" + dependencies: + fetch-node-website: ^5.0.3 + filter-obj: ^2.0.1 + get-stream: ^5.1.0 + global-cache-dir: ^2.0.0 + jest-validate: ^25.3.0 + path-exists: ^4.0.0 + semver: ^7.3.2 + write-file-atomic: ^3.0.3 + checksum: b1ff17fef6103ac324c62c998a685f7d92ea3230f9b48373b5358a4f04526b814a1436a9783ec24c29628c9c79ff60d2c206737f9fc7404f10be4c657ca81e87 + languageName: node + linkType: hard + +"ansi-align@npm:^3.0.0, ansi-align@npm:^3.0.1": version: 3.0.1 resolution: "ansi-align@npm:3.0.1" dependencies: @@ -2562,13 +3616,87 @@ __metadata: languageName: node linkType: hard -"ansi-regex@npm:^5.0.1": +"ansi-escapes@npm:^3.0.0, ansi-escapes@npm:^3.2.0": + version: 3.2.0 + resolution: "ansi-escapes@npm:3.2.0" + checksum: 0f94695b677ea742f7f1eed961f7fd8d05670f744c6ad1f8f635362f6681dcfbc1575cb05b43abc7bb6d67e25a75fb8c7ea8f2a57330eb2c76b33f18cb2cef0a + languageName: node + linkType: hard + +"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.1": + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" + dependencies: + type-fest: ^0.21.3 + checksum: 93111c42189c0a6bed9cdb4d7f2829548e943827ee8479c74d6e0b22ee127b2a21d3f8b5ca57723b8ef78ce011fbfc2784350eb2bde3ccfccf2f575fa8489815 + languageName: node + linkType: hard + +"ansi-escapes@npm:^5.0.0": + version: 5.0.0 + resolution: "ansi-escapes@npm:5.0.0" + dependencies: + type-fest: ^1.0.2 + checksum: d4b5eb8207df38367945f5dd2ef41e08c28edc192dc766ef18af6b53736682f49d8bfcfa4e4d6ecbc2e2f97c258fda084fb29a9e43b69170b71090f771afccac + languageName: node + linkType: hard + +"ansi-regex@npm:^0.2.0, ansi-regex@npm:^0.2.1": + version: 0.2.1 + resolution: "ansi-regex@npm:0.2.1" + checksum: ce95ac031fc64b9bb5317396d01723e0e07e9fbf1aa481df55c645657a1dbcaf90b6a8e69da6e64ad4543f0bd75691e426b2258a34f3c12999a277c09efd9430 + languageName: node + linkType: hard + +"ansi-regex@npm:^2.0.0": + version: 2.1.1 + resolution: "ansi-regex@npm:2.1.1" + checksum: 190abd03e4ff86794f338a31795d262c1dfe8c91f7e01d04f13f646f1dcb16c5800818f886047876f1272f065570ab86b24b99089f8b68a0e11ff19aed4ca8f1 + languageName: node + linkType: hard + +"ansi-regex@npm:^3.0.0": + version: 3.0.1 + resolution: "ansi-regex@npm:3.0.1" + checksum: 09daf180c5f59af9850c7ac1bd7fda85ba596cc8cbeb210826e90755f06c818af86d9fa1e6e8322fab2c3b9e9b03f56c537b42241139f824dd75066a1e7257cc + languageName: node + linkType: hard + +"ansi-regex@npm:^4.1.0": + version: 4.1.1 + resolution: "ansi-regex@npm:4.1.1" + checksum: b1a6ee44cb6ecdabaa770b2ed500542714d4395d71c7e5c25baa631f680fb2ad322eb9ba697548d498a6fd366949fc8b5bfcf48d49a32803611f648005b01888 + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.0, ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b languageName: node linkType: hard +"ansi-regex@npm:^6.0.1": + version: 6.0.1 + resolution: "ansi-regex@npm:6.0.1" + checksum: 1ff8b7667cded1de4fa2c9ae283e979fc87036864317da86a2e546725f96406746411d0d85e87a2d12fa5abd715d90006de7fa4fa0477c92321ad3b4c7d4e169 + languageName: node + linkType: hard + +"ansi-styles@npm:^1.1.0": + version: 1.1.0 + resolution: "ansi-styles@npm:1.1.0" + checksum: 4f01de400ef36d4328fc2421d378e5e3f80685e7b79e049fb14d5e75a37c546a7e625b4478e39b7ca6f41421d374e2b0eea52732ed3ed9bde93dc671e72eb79d + languageName: node + linkType: hard + +"ansi-styles@npm:^2.2.1": + version: 2.2.1 + resolution: "ansi-styles@npm:2.2.1" + checksum: ebc0e00381f2a29000d1dac8466a640ce11943cef3bda3cd0020dc042e31e1058ab59bf6169cd794a54c3a7338a61ebc404b7c91e004092dd20e028c432c9c2c + languageName: node + linkType: hard + "ansi-styles@npm:^3.2.1": version: 3.2.1 resolution: "ansi-styles@npm:3.2.1" @@ -2587,6 +3715,38 @@ __metadata: languageName: node linkType: hard +"ansi-styles@npm:^5.0.0": + version: 5.2.0 + resolution: "ansi-styles@npm:5.2.0" + checksum: d7f4e97ce0623aea6bc0d90dcd28881ee04cba06c570b97fd3391bd7a268eedfd9d5e2dd4fdcbdd82b8105df5faf6f24aaedc08eaf3da898e702db5948f63469 + languageName: node + linkType: hard + +"ansi-styles@npm:^6.0.0, ansi-styles@npm:^6.1.0": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d9 + languageName: node + linkType: hard + +"ansi-to-html@npm:^0.7.2": + version: 0.7.2 + resolution: "ansi-to-html@npm:0.7.2" + dependencies: + entities: ^2.2.0 + bin: + ansi-to-html: bin/ansi-to-html + checksum: 8f6ecec6e0d01c37a36541703688870a2a89382117229c54b1af19f455cb87d4645b0b8580691edb50d531fa02dfb7e2b8af3d0768e1527d4164d1e124286516 + languageName: node + linkType: hard + +"any-observable@npm:^0.3.0": + version: 0.3.0 + resolution: "any-observable@npm:0.3.0" + checksum: e715563ebb520ef4b2688c69512bc17e73dc8d5fb9fd29f50dea417cd4e5c8d05d27205461fa22bfd07b9a32134fc8fa88059a16adf52bb5968ccbf338ec4c7f + languageName: node + linkType: hard + "any-promise@npm:^1.0.0": version: 1.3.0 resolution: "any-promise@npm:1.3.0" @@ -2611,6 +3771,58 @@ __metadata: languageName: node linkType: hard +"archive-type@npm:^4.0.0": + version: 4.0.0 + resolution: "archive-type@npm:4.0.0" + dependencies: + file-type: ^4.2.0 + checksum: 271f0d118294dd0305831f0700b635e8a9475f97693212d548eee48017f917e14349a25ad578f8e13486ba4b7cde1972d53e613d980e8738cfccea5fc626c76f + languageName: node + linkType: hard + +"archiver-utils@npm:^2.1.0": + version: 2.1.0 + resolution: "archiver-utils@npm:2.1.0" + 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 + checksum: 5665f40bde87ee82cb638177bdccca8cc6e55edea1b94338f7e6b56a1d9367b0d9a39e42b47866eaf84b8c67669a7d250900a226207ecc30fa163b52aae859a5 + languageName: node + linkType: hard + +"archiver@npm:^5.3.0": + version: 5.3.1 + resolution: "archiver@npm:5.3.1" + 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 + checksum: 905b198ed04d26c951b80545d45c7f2e0432ef89977a93af8a762501d659886e39dda0fbffb0d517ff3fa450a3d09a29146e4273c2170624e1988f889fb5302c + languageName: node + linkType: hard + +"are-we-there-yet@npm:^2.0.0": + version: 2.0.0 + resolution: "are-we-there-yet@npm:2.0.0" + dependencies: + delegates: ^1.0.0 + readable-stream: ^3.6.0 + checksum: 6c80b4fd04ecee6ba6e737e0b72a4b41bdc64b7d279edfc998678567ff583c8df27e27523bc789f2c99be603ffa9eaa612803da1d886962d2086e7ff6fa90c7c + languageName: node + linkType: hard + "are-we-there-yet@npm:^3.0.0": version: 3.0.1 resolution: "are-we-there-yet@npm:3.0.1" @@ -2642,6 +3854,27 @@ __metadata: languageName: node linkType: hard +"arr-diff@npm:^4.0.0": + version: 4.0.0 + resolution: "arr-diff@npm:4.0.0" + checksum: ea7c8834842ad3869297f7915689bef3494fd5b102ac678c13ffccab672d3d1f35802b79e90c4cfec2f424af3392e44112d1ccf65da34562ed75e049597276a0 + languageName: node + linkType: hard + +"arr-flatten@npm:^1.1.0": + version: 1.1.0 + resolution: "arr-flatten@npm:1.1.0" + checksum: 963fe12564fca2f72c055f3f6c206b9e031f7c433a0c66ca9858b484821f248c5b1e5d53c8e4989d80d764cd776cf6d9b160ad05f47bdc63022bfd63b5455e22 + languageName: node + linkType: hard + +"arr-union@npm:^3.1.0": + version: 3.1.0 + resolution: "arr-union@npm:3.1.0" + checksum: b5b0408c6eb7591143c394f3be082fee690ddd21f0fdde0a0a01106799e847f67fcae1b7e56b0a0c173290e29c6aca9562e82b300708a268bc8f88f3d6613cb9 + languageName: node + linkType: hard + "array-differ@npm:^3.0.0": version: 3.0.0 resolution: "array-differ@npm:3.0.0" @@ -2649,6 +3882,13 @@ __metadata: languageName: node linkType: hard +"array-flatten@npm:1.1.1": + version: 1.1.1 + resolution: "array-flatten@npm:1.1.1" + checksum: a9925bf3512d9dce202112965de90c222cd59a4fbfce68a0951d25d965cf44642931f40aac72309c41f12df19afa010ecadceb07cfff9ccc1621e99d89ab5f3b + languageName: node + linkType: hard + "array-ify@npm:^1.0.0": version: 1.0.0 resolution: "array-ify@npm:1.0.0" @@ -2656,6 +3896,15 @@ __metadata: languageName: node linkType: hard +"array-union@npm:^1.0.2": + version: 1.0.2 + resolution: "array-union@npm:1.0.2" + dependencies: + array-uniq: ^1.0.1 + checksum: 82cec6421b6e6766556c484835a6d476a873f1b71cace5ab2b4f1b15b1e3162dc4da0d16f7a2b04d4aec18146c6638fe8f661340b31ba8e469fd811a1b45dc8d + languageName: node + linkType: hard + "array-union@npm:^2.1.0": version: 2.1.0 resolution: "array-union@npm:2.1.0" @@ -2663,6 +3912,20 @@ __metadata: languageName: node linkType: hard +"array-uniq@npm:^1.0.1": + version: 1.0.3 + resolution: "array-uniq@npm:1.0.3" + checksum: 1625f06b093d8bf279b81adfec6e72951c0857d65b5e3f65f053fffe9f9dd61c2fc52cff57e38a4700817e7e3f01a4faa433d505ea9e33cdae4514c334e0bf9e + languageName: node + linkType: hard + +"array-unique@npm:^0.3.2": + version: 0.3.2 + resolution: "array-unique@npm:0.3.2" + checksum: da344b89cfa6b0a5c221f965c21638bfb76b57b45184a01135382186924f55973cd9b171d4dad6bf606c6d9d36b0d721d091afdc9791535ead97ccbe78f8a888 + languageName: node + linkType: hard + "arrify@npm:^1.0.1": version: 1.0.1 resolution: "arrify@npm:1.0.1" @@ -2677,6 +3940,13 @@ __metadata: languageName: node linkType: hard +"ascii-table@npm:0.0.9": + version: 0.0.9 + resolution: "ascii-table@npm:0.0.9" + checksum: 05c543c2a0fbc68d7270246be0c0c656953b082e5657f185cff38886bb7c9527911479dad0492b811c465bd5dd4b65440886f7a3a0c8f111113dacce12d71228 + languageName: node + linkType: hard + "asn1@npm:~0.2.3": version: 0.2.6 resolution: "asn1@npm:0.2.6" @@ -2739,6 +4009,20 @@ __metadata: languageName: node linkType: hard +"assign-symbols@npm:^1.0.0": + version: 1.0.0 + resolution: "assign-symbols@npm:1.0.0" + checksum: c0eb895911d05b6b2d245154f70461c5e42c107457972e5ebba38d48967870dee53bcdf6c7047990586daa80fab8dab3cc6300800fbd47b454247fdedd859a2c + languageName: node + linkType: hard + +"ast-module-types@npm:^3.0.0": + version: 3.0.0 + resolution: "ast-module-types@npm:3.0.0" + checksum: c6ef35d9b286f84c7942aeb0e2b50e389e0b6f44ee3b6d2c46aeed4852dbca0681dde8c3c0ec1d456dad5dbc84fced2e1c607b10b4b4c3b065b901b40f45bbe7 + languageName: node + linkType: hard + "astring@npm:^1.8.0": version: 1.8.4 resolution: "astring@npm:1.8.4" @@ -2748,6 +4032,27 @@ __metadata: languageName: node linkType: hard +"async-sema@npm:^3.1.1": + version: 3.1.1 + resolution: "async-sema@npm:3.1.1" + checksum: 07b8c51f6cab107417ecdd8126b7a9fe5a75151b7f69fdd420dcc8ee08f9e37c473a217247e894b56e999b088b32e902dbe41637e4e9b594d3f8dfcdddfadc5e + languageName: node + linkType: hard + +"async@npm:^3.2.3": + version: 3.2.4 + resolution: "async@npm:3.2.4" + checksum: 43d07459a4e1d09b84a20772414aa684ff4de085cbcaec6eea3c7a8f8150e8c62aa6cd4e699fe8ee93c3a5b324e777d34642531875a0817a35697522c1b02e89 + languageName: node + linkType: hard + +"async@npm:~1.5": + version: 1.5.2 + resolution: "async@npm:1.5.2" + checksum: fe5d6214d8f15bd51eee5ae8ec5079b228b86d2d595f47b16369dec2e11b3ff75a567bb5f70d12d79006665fbbb7ee0a7ec0e388524eefd454ecbe651c124ebd + languageName: node + linkType: hard + "asynckit@npm:^0.4.0": version: 0.4.0 resolution: "asynckit@npm:0.4.0" @@ -2755,6 +4060,15 @@ __metadata: languageName: node linkType: hard +"atob@npm:^2.1.2": + version: 2.1.2 + resolution: "atob@npm:2.1.2" + bin: + atob: bin/atob.js + checksum: dfeeeb70090c5ebea7be4b9f787f866686c645d9f39a0d184c817252d0cf08455ed25267d79c03254d3be1f03ac399992a792edcd5ffb9c91e097ab5ef42833a + languageName: node + linkType: hard + "autoprefixer@npm:10.4.13": version: 10.4.13 resolution: "autoprefixer@npm:10.4.13" @@ -2839,6 +4153,15 @@ __metadata: languageName: node linkType: hard +"backoff@npm:^2.5.0": + version: 2.5.0 + resolution: "backoff@npm:2.5.0" + dependencies: + precond: 0.2 + checksum: ccdcf2a26acd9379d0d4f09e3fb3b7ee34dee94f07ab74d1e38b38f89a3675d9f3cbebb142d9c61c655f4c9eb63f1d6ec28cebeb3dc9215efd8fe7cef92725b9 + languageName: node + linkType: hard + "bail@npm:^2.0.0": version: 2.0.2 resolution: "bail@npm:2.0.2" @@ -2860,6 +4183,21 @@ __metadata: languageName: node linkType: hard +"base@npm:^0.11.1": + version: 0.11.2 + resolution: "base@npm:0.11.2" + dependencies: + cache-base: ^1.0.1 + class-utils: ^0.3.5 + component-emitter: ^1.2.1 + define-property: ^1.0.0 + isobject: ^3.0.1 + mixin-deep: ^1.2.0 + pascalcase: ^0.1.1 + checksum: a4a146b912e27eea8f66d09cb0c9eab666f32ce27859a7dfd50f38cd069a2557b39f16dba1bc2aecb3b44bf096738dd207b7970d99b0318423285ab1b1994edd + languageName: node + linkType: hard + "bcrypt-pbkdf@npm:^1.0.0": version: 1.0.2 resolution: "bcrypt-pbkdf@npm:1.0.2" @@ -2876,6 +4214,30 @@ __metadata: languageName: node linkType: hard +"better-ajv-errors@npm:^1.2.0": + version: 1.2.0 + resolution: "better-ajv-errors@npm:1.2.0" + dependencies: + "@babel/code-frame": ^7.16.0 + "@humanwhocodes/momoa": ^2.0.2 + chalk: ^4.1.2 + jsonpointer: ^5.0.0 + leven: ^3.1.0 < 4 + peerDependencies: + ajv: 4.11.8 - 8 + checksum: 8a1caeac5ec38a5fb66938959ab9cc6746e20529dab3919e5d9c842e99638cf8ea572883e6cb662dcfb058a349cf8c7952c0497fd2f996af9d25f4cb89ccb14a + languageName: node + linkType: hard + +"better-opn@npm:^3.0.0": + version: 3.0.2 + resolution: "better-opn@npm:3.0.2" + dependencies: + open: ^8.0.4 + checksum: 1471552fa7f733561e7f49e812be074b421153006ca744de985fb6d38939807959fc5fe9cb819cf09f864782e294704fd3b31711ea14c115baf3330a2f1135de + languageName: node + linkType: hard + "bignumber.js@npm:^2.1.0": version: 2.4.0 resolution: "bignumber.js@npm:2.4.0" @@ -2890,7 +4252,26 @@ __metadata: languageName: node linkType: hard -"bl@npm:^4.0.3": +"bindings@npm:^1.4.0": + version: 1.5.0 + resolution: "bindings@npm:1.5.0" + dependencies: + file-uri-to-path: 1.0.0 + checksum: 65b6b48095717c2e6105a021a7da4ea435aa8d3d3cd085cb9e85bcb6e5773cf318c4745c3f7c504412855940b585bdf9b918236612a1c7a7942491de176f1ae7 + languageName: node + linkType: hard + +"bl@npm:^1.0.0": + version: 1.2.3 + resolution: "bl@npm:1.2.3" + dependencies: + readable-stream: ^2.3.5 + safe-buffer: ^5.1.1 + checksum: 123f097989ce2fa9087ce761cd41176aaaec864e28f7dfe5c7dab8ae16d66d9844f849c3ad688eb357e3c5e4f49b573e3c0780bb8bc937206735a3b6f8569a5f + languageName: node + linkType: hard + +"bl@npm:^4.0.3, bl@npm:^4.1.0": version: 4.1.0 resolution: "bl@npm:4.1.0" dependencies: @@ -2901,13 +4282,6 @@ __metadata: languageName: node linkType: hard -"blake3-wasm@npm:^2.1.5": - version: 2.1.5 - resolution: "blake3-wasm@npm:2.1.5" - checksum: 5088e929c722b52b9c28701c1760ab850a963692056a417b894c943030e3267f12138ae6409e79069b8d7d0401a411426147e8d812b65a49e303fa432af18871 - languageName: node - linkType: hard - "bluebird@npm:2.9.34": version: 2.9.34 resolution: "bluebird@npm:2.9.34" @@ -2922,6 +4296,13 @@ __metadata: languageName: node linkType: hard +"blueimp-md5@npm:^2.10.0": + version: 2.19.0 + resolution: "blueimp-md5@npm:2.19.0" + checksum: 28095dcbd2c67152a2938006e8d7c74c3406ba6556071298f872505432feb2c13241b0476644160ee0a5220383ba94cb8ccdac0053b51f68d168728f9c382530 + languageName: node + linkType: hard + "bmp-js@npm:0.0.1": version: 0.0.1 resolution: "bmp-js@npm:0.0.1" @@ -2929,6 +4310,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 + "boolbase@npm:^1.0.0": version: 1.0.0 resolution: "boolbase@npm:1.0.0" @@ -2959,6 +4360,38 @@ __metadata: languageName: node linkType: hard +"boxen@npm:^5.0.0": + version: 5.1.2 + resolution: "boxen@npm:5.1.2" + dependencies: + ansi-align: ^3.0.0 + camelcase: ^6.2.0 + chalk: ^4.1.0 + cli-boxes: ^2.2.1 + string-width: ^4.2.2 + type-fest: ^0.20.2 + widest-line: ^3.1.0 + wrap-ansi: ^7.0.0 + checksum: 82d03e42a72576ff235123f17b7c505372fe05c83f75f61e7d4fa4bcb393897ec95ce766fecb8f26b915f0f7a7227d66e5ec7cef43f5b2bd9d3aeed47ec55877 + languageName: node + linkType: hard + +"boxen@npm:^7.0.0": + version: 7.0.1 + resolution: "boxen@npm:7.0.1" + dependencies: + ansi-align: ^3.0.1 + camelcase: ^7.0.0 + chalk: ^5.0.1 + cli-boxes: ^3.0.0 + string-width: ^5.1.2 + type-fest: ^2.13.0 + widest-line: ^4.0.1 + wrap-ansi: ^8.0.1 + checksum: 9ff7112dda963a922b99d94dbc37c8b7de5707222857011de903b4f079890ab53cc5e3876bd60c6a876587916ae5fb6e7d1fc7def7552eb3bd105afff3f43c76 + languageName: node + linkType: hard + "brace-expansion@npm:^1.1.7": version: 1.1.11 resolution: "brace-expansion@npm:1.1.11" @@ -2978,6 +4411,24 @@ __metadata: languageName: node linkType: hard +"braces@npm:^2.3.1": + version: 2.3.2 + resolution: "braces@npm:2.3.2" + dependencies: + arr-flatten: ^1.1.0 + array-unique: ^0.3.2 + extend-shallow: ^2.0.1 + fill-range: ^4.0.0 + isobject: ^3.0.1 + repeat-element: ^1.1.2 + snapdragon: ^0.8.1 + snapdragon-node: ^2.0.1 + split-string: ^3.0.2 + to-regex: ^3.0.1 + checksum: e30dcb6aaf4a31c8df17d848aa283a65699782f75ad61ae93ec25c9729c66cf58e66f0000a9fec84e4add1135bb7da40f7cb9601b36bebcfa9ca58e8d5c07de0 + languageName: node + linkType: hard + "braces@npm:^3.0.2, braces@npm:~3.0.2": version: 3.0.2 resolution: "braces@npm:3.0.2" @@ -3026,13 +4477,37 @@ __metadata: languageName: node linkType: hard -"buffer-crc32@npm:~0.2.3": +"buffer-alloc-unsafe@npm:^1.1.0": + version: 1.1.0 + resolution: "buffer-alloc-unsafe@npm:1.1.0" + checksum: c5e18bf51f67754ec843c9af3d4c005051aac5008a3992938dda1344e5cfec77c4b02b4ca303644d1e9a6e281765155ce6356d85c6f5ccc5cd21afc868def396 + languageName: node + linkType: hard + +"buffer-alloc@npm:^1.2.0": + version: 1.2.0 + resolution: "buffer-alloc@npm:1.2.0" + dependencies: + buffer-alloc-unsafe: ^1.1.0 + buffer-fill: ^1.0.0 + checksum: 560cd27f3cbe73c614867da373407d4506309c62fe18de45a1ce191f3785ec6ca2488d802ff82065798542422980ca25f903db078c57822218182c37c3576df5 + languageName: node + linkType: hard + +"buffer-crc32@npm:^0.2.1, buffer-crc32@npm:^0.2.13, buffer-crc32@npm:~0.2.3": version: 0.2.13 resolution: "buffer-crc32@npm:0.2.13" checksum: 06252347ae6daca3453b94e4b2f1d3754a3b146a111d81c68924c22d91889a40623264e95e67955b1cb4a68cbedf317abeabb5140a9766ed248973096db5ce1c languageName: node linkType: hard +"buffer-equal-constant-time@npm:1.0.1": + version: 1.0.1 + resolution: "buffer-equal-constant-time@npm:1.0.1" + checksum: 80bb945f5d782a56f374b292770901065bad21420e34936ecbe949e57724b4a13874f735850dd1cc61f078773c4fb5493a41391e7bda40d1fa388d6bd80daaab + languageName: node + linkType: hard + "buffer-equal@npm:0.0.1": version: 0.0.1 resolution: "buffer-equal@npm:0.0.1" @@ -3040,6 +4515,13 @@ __metadata: languageName: node linkType: hard +"buffer-fill@npm:^1.0.0": + version: 1.0.0 + resolution: "buffer-fill@npm:1.0.0" + checksum: c29b4723ddeab01e74b5d3b982a0c6828f2ded49cef049ddca3dac661c874ecdbcecb5dd8380cf0f4adbeb8cff90a7de724126750a1f1e5ebd4eb6c59a1315b1 + languageName: node + linkType: hard + "buffer-from@npm:^1.0.0": version: 1.1.2 resolution: "buffer-from@npm:1.1.2" @@ -3082,6 +4564,27 @@ __metadata: languageName: node linkType: hard +"byline@npm:^5.0.0": + version: 5.0.0 + resolution: "byline@npm:5.0.0" + checksum: 737ca83e8eda2976728dae62e68bc733aea095fab08db4c6f12d3cee3cf45b6f97dce45d1f6b6ff9c2c947736d10074985b4425b31ce04afa1985a4ef3d334a7 + languageName: node + linkType: hard + +"bytes@npm:3.0.0": + version: 3.0.0 + resolution: "bytes@npm:3.0.0" + checksum: a2b386dd8188849a5325f58eef69c3b73c51801c08ffc6963eddc9be244089ba32d19347caf6d145c86f315ae1b1fc7061a32b0c1aa6379e6a719090287ed101 + 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" @@ -3130,6 +4633,106 @@ __metadata: languageName: node linkType: hard +"cache-base@npm:^1.0.1": + version: 1.0.1 + resolution: "cache-base@npm:1.0.1" + dependencies: + collection-visit: ^1.0.0 + component-emitter: ^1.2.1 + get-value: ^2.0.6 + has-value: ^1.0.0 + isobject: ^3.0.1 + set-value: ^2.0.0 + to-object-path: ^0.3.0 + union-value: ^1.0.0 + unset-value: ^1.0.0 + checksum: 9114b8654fe2366eedc390bad0bcf534e2f01b239a888894e2928cb58cdc1e6ea23a73c6f3450dcfd2058aa73a8a981e723cd1e7c670c047bf11afdc65880107 + languageName: node + linkType: hard + +"cacheable-lookup@npm:^2.0.0": + version: 2.0.1 + resolution: "cacheable-lookup@npm:2.0.1" + dependencies: + "@types/keyv": ^3.1.1 + keyv: ^4.0.0 + checksum: 6c2d0ca045aa6d9ffca54ace4ec8e9856678dcc55fd4506ad4078a3aab82fa2592f0c9316abbd6ddfabd1a785f34f289ccdcf4a565f329cd4aae55912b5ec1f8 + languageName: node + linkType: hard + +"cacheable-lookup@npm:^7.0.0": + version: 7.0.0 + resolution: "cacheable-lookup@npm:7.0.0" + checksum: 9e2856763fc0a7347ab34d704c010440b819d4bb5e3593b664381b7433e942dd22e67ee5581f12256f908e79b82d30b86ebbacf40a081bfe10ee93fbfbc2d6a9 + languageName: node + linkType: hard + +"cacheable-request@npm:^10.2.1": + version: 10.2.4 + resolution: "cacheable-request@npm:10.2.4" + dependencies: + get-stream: ^6.0.1 + http-cache-semantics: ^4.1.0 + keyv: ^4.5.2 + mimic-response: ^4.0.0 + normalize-url: ^8.0.0 + responselike: ^3.0.0 + checksum: 084382cfefed9be41de9fd206810ed9e5a48beffa2618a7cb6429daf7ceccd3a849ba9296b8dbb3cff740085272e70fc2de964eaede214e1ee03243b5221a66d + languageName: node + linkType: hard + +"cacheable-request@npm:^2.1.1": + version: 2.1.4 + resolution: "cacheable-request@npm:2.1.4" + dependencies: + clone-response: 1.0.2 + get-stream: 3.0.0 + http-cache-semantics: 3.8.1 + keyv: 3.0.0 + lowercase-keys: 1.0.0 + normalize-url: 2.0.1 + responselike: 1.0.2 + checksum: 69c684cb3645f75af094e3ef6e7959ca5edff33d70737498de1a068d2f719a12786efdd82fe1e2254a1f332bb88cce088273bd78fad3e57cdef5034f3ded9432 + languageName: node + linkType: hard + +"cacheable-request@npm:^6.0.0": + version: 6.1.0 + resolution: "cacheable-request@npm:6.1.0" + dependencies: + clone-response: ^1.0.2 + get-stream: ^5.1.0 + http-cache-semantics: ^4.0.0 + keyv: ^3.0.0 + lowercase-keys: ^2.0.0 + normalize-url: ^4.1.0 + responselike: ^1.0.2 + checksum: b510b237b18d17e89942e9ee2d2a077cb38db03f12167fd100932dfa8fc963424bfae0bfa1598df4ae16c944a5484e43e03df8f32105b04395ee9495e9e4e9f1 + languageName: node + linkType: hard + +"cacheable-request@npm:^7.0.1": + version: 7.0.2 + resolution: "cacheable-request@npm:7.0.2" + dependencies: + clone-response: ^1.0.2 + get-stream: ^5.1.0 + http-cache-semantics: ^4.0.0 + keyv: ^4.0.0 + lowercase-keys: ^2.0.0 + normalize-url: ^6.0.1 + responselike: ^2.0.0 + checksum: 6152813982945a5c9989cb457a6c499f12edcc7ade323d2fbfd759abc860bdbd1306e08096916bb413c3c47e812f8e4c0a0cc1e112c8ce94381a960f115bc77f + languageName: node + linkType: hard + +"cachedir@npm:^2.3.0": + version: 2.3.0 + resolution: "cachedir@npm:2.3.0" + checksum: ec90cb0f2e6336e266aa748dbadf3da9e0b20e843e43f1591acab7a3f1451337dc2f26cb9dd833ae8cfefeffeeb43ef5b5ff62782a685f4e3c2305dd98482fcb + languageName: node + linkType: hard + "call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": version: 1.0.2 resolution: "call-bind@npm:1.0.2" @@ -3140,6 +4743,20 @@ __metadata: languageName: node linkType: hard +"call-me-maybe@npm:^1.0.1": + version: 1.0.2 + resolution: "call-me-maybe@npm:1.0.2" + checksum: 42ff2d0bed5b207e3f0122589162eaaa47ba618f79ad2382fe0ba14d9e49fbf901099a6227440acc5946f86a4953e8aa2d242b330b0a5de4d090bb18f8935cae + languageName: node + linkType: hard + +"callsite@npm:^1.0.0": + version: 1.0.0 + resolution: "callsite@npm:1.0.0" + checksum: 569686d622a288a4f0a827466c2f967b6d7a98f2ee1e6ada9dcf5a6802267a5e2a995d40f07113b5f95c7b2b2d5cbff4fdde590195f2a8bed24b829d048688f8 + languageName: node + linkType: hard + "callsites@npm:^3.0.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" @@ -3182,6 +4799,20 @@ __metadata: languageName: node linkType: hard +"camelcase@npm:^6.2.0": + version: 6.3.0 + resolution: "camelcase@npm:6.3.0" + checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d + languageName: node + linkType: hard + +"camelcase@npm:^7.0.0": + version: 7.0.1 + resolution: "camelcase@npm:7.0.1" + checksum: 86ab8f3ebf08bcdbe605a211a242f00ed30d8bfb77dab4ebb744dd36efbc84432d1c4adb28975ba87a1b8be40a80fbd1e60e2f06565315918fa7350011a26d3d + languageName: node + linkType: hard + "caniuse-api@npm:^3.0.0": version: 3.0.0 resolution: "caniuse-api@npm:3.0.0" @@ -3222,7 +4853,33 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^2.0.0, chalk@npm:^2.0.1, chalk@npm:^2.4.2": +"chalk@npm:^0.5.1": + version: 0.5.1 + resolution: "chalk@npm:0.5.1" + dependencies: + ansi-styles: ^1.1.0 + escape-string-regexp: ^1.0.0 + has-ansi: ^0.1.0 + strip-ansi: ^0.3.0 + supports-color: ^0.2.0 + checksum: 33eb9cf9220b13f1cae0a52e612d60f61fb1c894782b4efa847e40485a66e191d4199793b8087dc15b08e75607254a5980b45046f52350766c40d187505aacd9 + languageName: node + linkType: hard + +"chalk@npm:^1.0.0, chalk@npm:^1.1.3": + version: 1.1.3 + resolution: "chalk@npm:1.1.3" + dependencies: + ansi-styles: ^2.2.1 + escape-string-regexp: ^1.0.2 + has-ansi: ^2.0.0 + strip-ansi: ^3.0.0 + supports-color: ^2.0.0 + checksum: 9d2ea6b98fc2b7878829eec223abcf404622db6c48396a9b9257f6d0ead2acf18231ae368d6a664a83f272b0679158da12e97b5229f794939e555cc574478acd + languageName: node + linkType: hard + +"chalk@npm:^2.0.0, chalk@npm:^2.0.1, chalk@npm:^2.4.1, chalk@npm:^2.4.2": version: 2.4.2 resolution: "chalk@npm:2.4.2" dependencies: @@ -3243,7 +4900,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^4.0.0, chalk@npm:^4.1.0": +"chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.2": version: 4.1.2 resolution: "chalk@npm:4.1.2" dependencies: @@ -3253,6 +4910,13 @@ __metadata: languageName: node linkType: hard +"chalk@npm:^5.0.0, chalk@npm:^5.0.1": + version: 5.2.0 + resolution: "chalk@npm:5.2.0" + checksum: 03d8060277de6cf2fd567dc25fcf770593eb5bb85f460ce443e49255a30ff1242edd0c90a06a03803b0466ff0687a939b41db1757bec987113e83de89a003caa + languageName: node + linkType: hard + "character-entities-html4@npm:^2.0.0": version: 2.1.0 resolution: "character-entities-html4@npm:2.1.0" @@ -3281,7 +4945,14 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:^3.5.3": +"chardet@npm:^0.7.0": + version: 0.7.0 + resolution: "chardet@npm:0.7.0" + checksum: 6fd5da1f5d18ff5712c1e0aed41da200d7c51c28f11b36ee3c7b483f3696dabc08927fc6b227735eb8f0e1215c9a8abd8154637f3eff8cada5959df7f58b024d + languageName: node + linkType: hard + +"chokidar@npm:^3.0.2, chokidar@npm:^3.5.3": version: 3.5.3 resolution: "chokidar@npm:3.5.3" dependencies: @@ -3314,6 +4985,32 @@ __metadata: languageName: node linkType: hard +"ci-info@npm:^2.0.0": + version: 2.0.0 + resolution: "ci-info@npm:2.0.0" + checksum: 3b374666a85ea3ca43fa49aa3a048d21c9b475c96eb13c133505d2324e7ae5efd6a454f41efe46a152269e9b6a00c9edbe63ec7fa1921957165aae16625acd67 + languageName: node + linkType: hard + +"ci-info@npm:^3.0.0, ci-info@npm:^3.2.0": + version: 3.7.0 + resolution: "ci-info@npm:3.7.0" + checksum: 6e5df0250382ff3732703b36b958d2d892dd3c481f9671666f96c2ab7888be744bc4dca81395be958dcb828502d94f18fa9aa8901c5a3c9923cda212df02724c + languageName: node + linkType: hard + +"class-utils@npm:^0.3.5": + version: 0.3.6 + resolution: "class-utils@npm:0.3.6" + dependencies: + arr-union: ^3.1.0 + define-property: ^0.2.5 + isobject: ^3.0.0 + static-extend: ^0.1.1 + checksum: be108900801e639e50f96a7e4bfa8867c753a7750a7603879f3981f8b0a89cba657497a2d5f40cd4ea557ff15d535a100818bb486baf6e26fe5d7872e75f1078 + languageName: node + linkType: hard + "clean-css@npm:^4.2.1": version: 4.2.4 resolution: "clean-css@npm:4.2.4" @@ -3323,6 +5020,17 @@ __metadata: languageName: node linkType: hard +"clean-deep@npm:^3.0.2": + version: 3.4.0 + resolution: "clean-deep@npm:3.4.0" + dependencies: + lodash.isempty: ^4.4.0 + lodash.isplainobject: ^4.0.6 + lodash.transform: ^4.6.0 + checksum: 0f6beb5d1ec41f55c5b470d3d1d359175bb1e45510fec2be656ed32a1fa12c3bcb0e127c6a8ddbc42aea56cf6e22adaab2ee722fdaaccab537d1ab3ca48ecf74 + languageName: node + linkType: hard + "clean-stack@npm:^2.0.0": version: 2.2.0 resolution: "clean-stack@npm:2.2.0" @@ -3330,13 +5038,89 @@ __metadata: languageName: node linkType: hard -"cli-boxes@npm:^2.2.0": +"clean-stack@npm:^4.0.0": + version: 4.2.0 + resolution: "clean-stack@npm:4.2.0" + dependencies: + escape-string-regexp: 5.0.0 + checksum: 373f656a31face5c615c0839213b9b542a0a48057abfb1df66900eab4dc2a5c6097628e4a0b5aa559cdfc4e66f8a14ea47be9681773165a44470ef5fb8ccc172 + languageName: node + linkType: hard + +"cli-boxes@npm:^2.2.0, cli-boxes@npm:^2.2.1": version: 2.2.1 resolution: "cli-boxes@npm:2.2.1" checksum: be79f8ec23a558b49e01311b39a1ea01243ecee30539c880cf14bf518a12e223ef40c57ead0cb44f509bffdffc5c129c746cd50d863ab879385370112af4f585 languageName: node linkType: hard +"cli-boxes@npm:^3.0.0": + version: 3.0.0 + resolution: "cli-boxes@npm:3.0.0" + checksum: 637d84419d293a9eac40a1c8c96a2859e7d98b24a1a317788e13c8f441be052fc899480c6acab3acc82eaf1bccda6b7542d7cdcf5c9c3cc39227175dc098d5b2 + languageName: node + linkType: hard + +"cli-cursor@npm:^2.0.0, cli-cursor@npm:^2.1.0": + version: 2.1.0 + resolution: "cli-cursor@npm:2.1.0" + dependencies: + restore-cursor: ^2.0.0 + checksum: d88e97bfdac01046a3ffe7d49f06757b3126559d7e44aa2122637eb179284dc6cd49fca2fac4f67c19faaf7e6dab716b6fe1dfcd309977407d8c7578ec2d044d + languageName: node + linkType: hard + +"cli-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "cli-cursor@npm:3.1.0" + dependencies: + restore-cursor: ^3.1.0 + checksum: 2692784c6cd2fd85cfdbd11f53aea73a463a6d64a77c3e098b2b4697a20443f430c220629e1ca3b195ea5ac4a97a74c2ee411f3807abf6df2b66211fec0c0a29 + languageName: node + linkType: hard + +"cli-cursor@npm:^4.0.0": + version: 4.0.0 + resolution: "cli-cursor@npm:4.0.0" + dependencies: + restore-cursor: ^4.0.0 + checksum: ab3f3ea2076e2176a1da29f9d64f72ec3efad51c0960898b56c8a17671365c26e67b735920530eaf7328d61f8bd41c27f46b9cf6e4e10fe2fa44b5e8c0e392cc + languageName: node + linkType: hard + +"cli-progress@npm:^3.7.0": + version: 3.11.2 + resolution: "cli-progress@npm:3.11.2" + dependencies: + string-width: ^4.2.3 + checksum: 147d26b80ceaa24d72f0354d1b58b7f3567b928bf5943be879de31cf16b0a4f1d059984e2e35a664d7d27ae3e7fafd69fd94b35f462c8879caf96d7f31eac442 + languageName: node + linkType: hard + +"cli-spinners@npm:^2.5.0": + version: 2.7.0 + resolution: "cli-spinners@npm:2.7.0" + checksum: a9afaf73f58d1f951fb23742f503631b3cf513f43f4c7acb1b640100eb76bfa16efbcd1994d149ffc6603a6d75dd3d4a516a76f125f90dce437de9b16fd0ee6f + languageName: node + linkType: hard + +"cli-truncate@npm:^0.2.1": + version: 0.2.1 + resolution: "cli-truncate@npm:0.2.1" + dependencies: + slice-ansi: 0.0.4 + string-width: ^1.0.1 + checksum: c2e4b8d95275d8c772ced60977341e87530b81a1160b0e26a252a6c39b794fdf7a1236bf5bc7150558f759deb960cbabc0f993964327bde80790bcd330b698a0 + languageName: node + linkType: hard + +"cli-width@npm:^2.0.0": + version: 2.2.1 + resolution: "cli-width@npm:2.2.1" + checksum: 3c21b897a2ff551ae5b3c3ab32c866ed2965dcf7fb442f81adf0e27f4a397925c8f84619af7bcc6354821303f6ee9b2aa31d248306174f32c287986158cf4eed + languageName: node + linkType: hard + "cliui@npm:^6.0.0": version: 6.0.0 resolution: "cliui@npm:6.0.0" @@ -3370,6 +5154,31 @@ __metadata: languageName: node linkType: hard +"clone-response@npm:1.0.2": + version: 1.0.2 + resolution: "clone-response@npm:1.0.2" + dependencies: + mimic-response: ^1.0.0 + checksum: 2d0e61547fc66276e0903be9654ada422515f5a15741691352000d47e8c00c226061221074ce2c0064d12e975e84a8687cfd35d8b405750cb4e772f87b256eda + languageName: node + linkType: hard + +"clone-response@npm:^1.0.2": + version: 1.0.3 + resolution: "clone-response@npm:1.0.3" + dependencies: + mimic-response: ^1.0.0 + checksum: 4e671cac39b11c60aa8ba0a450657194a5d6504df51bca3fac5b3bd0145c4f8e8464898f87c8406b83232e3bc5cca555f51c1f9c8ac023969ebfbf7f6bdabb2e + languageName: node + linkType: hard + +"clone@npm:^1.0.2": + version: 1.0.4 + resolution: "clone@npm:1.0.4" + checksum: d06418b7335897209e77bdd430d04f882189582e67bd1f75a04565f3f07f5b3f119a9d670c943b6697d0afb100f03b866b3b8a1f91d4d02d72c4ecf2bb64b5dd + languageName: node + linkType: hard + "clone@npm:^2.1.2": version: 2.1.2 resolution: "clone@npm:2.1.2" @@ -3377,7 +5186,24 @@ __metadata: languageName: node linkType: hard -"color-convert@npm:^1.9.0": +"code-point-at@npm:^1.0.0": + version: 1.1.0 + resolution: "code-point-at@npm:1.1.0" + checksum: 17d5666611f9b16d64fdf48176d9b7fb1c7d1c1607a189f7e600040a11a6616982876af148230336adb7d8fe728a559f743a4e29db3747e3b1a32fa7f4529681 + languageName: node + linkType: hard + +"collection-visit@npm:^1.0.0": + version: 1.0.0 + resolution: "collection-visit@npm:1.0.0" + dependencies: + map-visit: ^1.0.0 + object-visit: ^1.0.0 + checksum: 15d9658fe6eb23594728346adad5433b86bb7a04fd51bbab337755158722f9313a5376ef479de5b35fbc54140764d0d39de89c339f5d25b959ed221466981da9 + languageName: node + linkType: hard + +"color-convert@npm:^1.9.0, color-convert@npm:^1.9.3": version: 1.9.3 resolution: "color-convert@npm:1.9.3" dependencies: @@ -3409,7 +5235,7 @@ __metadata: languageName: node linkType: hard -"color-string@npm:^1.9.0": +"color-string@npm:^1.6.0, color-string@npm:^1.9.0": version: 1.9.1 resolution: "color-string@npm:1.9.1" dependencies: @@ -3419,7 +5245,7 @@ __metadata: languageName: node linkType: hard -"color-support@npm:^1.1.3": +"color-support@npm:^1.1.2, color-support@npm:^1.1.3": version: 1.1.3 resolution: "color-support@npm:1.1.3" bin: @@ -3428,6 +5254,16 @@ __metadata: languageName: node linkType: hard +"color@npm:^3.1.3": + version: 3.2.1 + resolution: "color@npm:3.2.1" + dependencies: + color-convert: ^1.9.3 + color-string: ^1.6.0 + checksum: f81220e8b774d35865c2561be921f5652117638dcda7ca4029262046e37fc2444ac7bbfdd110cf1fd9c074a4ee5eda8f85944ffbdda26186b602dd9bb05f6400 + languageName: node + linkType: hard + "color@npm:^4.2.3": version: 4.2.3 resolution: "color@npm:4.2.3" @@ -3452,6 +5288,35 @@ __metadata: languageName: node linkType: hard +"colors-option@npm:^3.0.0": + version: 3.0.0 + resolution: "colors-option@npm:3.0.0" + dependencies: + chalk: ^5.0.0 + filter-obj: ^3.0.0 + is-plain-obj: ^4.0.0 + jest-validate: ^27.3.1 + checksum: 0ebe567d243a15b664bc29b993a53a88113d48bc46cd61404bff1e08e402ef5973572eee563dd1444e68b56735863613dacc2af89347e952571c2a6ecef0d617 + languageName: node + linkType: hard + +"colors@npm:1.4.0": + version: 1.4.0 + resolution: "colors@npm:1.4.0" + checksum: 98aa2c2418ad87dedf25d781be69dc5fc5908e279d9d30c34d8b702e586a0474605b3a189511482b9d5ed0d20c867515d22749537f7bc546256c6014f3ebdcec + languageName: node + linkType: hard + +"colorspace@npm:1.1.x": + version: 1.1.4 + resolution: "colorspace@npm:1.1.4" + dependencies: + color: ^3.1.3 + text-hex: 1.0.x + checksum: bb3934ef3c417e961e6d03d7ca60ea6e175947029bfadfcdb65109b01881a1c0ecf9c2b0b59abcd0ee4a0d7c1eae93beed01b0e65848936472270a0b341ebce8 + languageName: node + linkType: hard + "combine-image@npm:^1.0.3": version: 1.0.3 resolution: "combine-image@npm:1.0.3" @@ -3478,7 +5343,7 @@ __metadata: languageName: node linkType: hard -"commander@npm:^2.19.0, commander@npm:^2.20.0": +"commander@npm:^2.19.0, commander@npm:^2.20.0, commander@npm:^2.3.0, commander@npm:^2.8.1": version: 2.20.3 resolution: "commander@npm:2.20.3" checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e @@ -3499,6 +5364,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^9.1.0, commander@npm:^9.2.0, commander@npm:^9.3.0, commander@npm:^9.4.0": + version: 9.4.1 + resolution: "commander@npm:9.4.1" + checksum: bfb18e325a5bdf772763c2213d5c7d9e77144d944124e988bcd8e5e65fb6d45d5d4e86b09155d0f2556c9a59c31e428720e57968bcd050b2306e910a0bf3cf13 + languageName: node + linkType: hard + "common-path-prefix@npm:^1.0.0": version: 1.0.0 resolution: "common-path-prefix@npm:1.0.0" @@ -3506,6 +5378,13 @@ __metadata: languageName: node linkType: hard +"common-path-prefix@npm:^3.0.0": + version: 3.0.0 + resolution: "common-path-prefix@npm:3.0.0" + checksum: fdb3c4f54e51e70d417ccd950c07f757582de800c0678ca388aedefefc84982039f346f9fd9a1252d08d2da9e9ef4019f580a1d1d3a10da031e4bb3c924c5818 + languageName: node + linkType: hard + "common-tags@npm:^1.8.0": version: 1.8.2 resolution: "common-tags@npm:1.8.2" @@ -3530,6 +5409,49 @@ __metadata: languageName: node linkType: hard +"component-emitter@npm:^1.2.1": + version: 1.3.0 + resolution: "component-emitter@npm:1.3.0" + checksum: b3c46de38ffd35c57d1c02488355be9f218e582aec72d72d1b8bbec95a3ac1b38c96cd6e03ff015577e68f550fbb361a3bfdbd9bb248be9390b7b3745691be6b + languageName: node + linkType: hard + +"compress-commons@npm:^4.1.0": + version: 4.1.1 + resolution: "compress-commons@npm:4.1.1" + dependencies: + buffer-crc32: ^0.2.13 + crc32-stream: ^4.0.2 + normalize-path: ^3.0.0 + readable-stream: ^3.6.0 + checksum: 0176483211a7304a4a8aa52dbcc149a4c9181ac8a04bfbcc3d1a379174bf5fa56c3b15cec19e5ae3d31f1b1ce35ebb275b792b867000c77bac7162ce4e0ca268 + languageName: node + linkType: hard + +"compressible@npm:~2.0.16": + version: 2.0.18 + resolution: "compressible@npm:2.0.18" + dependencies: + mime-db: ">= 1.43.0 < 2" + checksum: 58321a85b375d39230405654721353f709d0c1442129e9a17081771b816302a012471a9b8f4864c7dbe02eef7f2aaac3c614795197092262e94b409c9be108f0 + languageName: node + linkType: hard + +"compression@npm:^1.7.4": + version: 1.7.4 + resolution: "compression@npm:1.7.4" + dependencies: + accepts: ~1.3.5 + bytes: 3.0.0 + compressible: ~2.0.16 + debug: 2.6.9 + on-headers: ~1.0.2 + safe-buffer: 5.1.2 + vary: ~1.1.2 + checksum: 35c0f2eb1f28418978615dc1bc02075b34b1568f7f56c62d60f4214d4b7cc00d0f6d282b5f8a954f59872396bd770b6b15ffd8aa94c67d4bce9b8887b906999b + languageName: node + linkType: hard + "concat-map@npm:0.0.1": version: 0.0.1 resolution: "concat-map@npm:0.0.1" @@ -3549,13 +5471,82 @@ __metadata: languageName: node linkType: hard -"console-control-strings@npm:^1.1.0": +"concordance@npm:^5.0.0": + version: 5.0.4 + resolution: "concordance@npm:5.0.4" + dependencies: + date-time: ^3.1.0 + esutils: ^2.0.3 + fast-diff: ^1.2.0 + js-string-escape: ^1.0.1 + lodash: ^4.17.15 + md5-hex: ^3.0.1 + semver: ^7.3.2 + well-known-symbols: ^2.0.0 + checksum: 749153ba711492feb7c3d2f5bb04c107157440b3e39509bd5dd19ee7b3ac751d1e4cd75796d9f702e0a713312dbc661421c68aa4a2c34d5f6d91f47e3a1c64a6 + languageName: node + linkType: hard + +"config-chain@npm:^1.1.11": + version: 1.1.13 + resolution: "config-chain@npm:1.1.13" + dependencies: + ini: ^1.3.4 + proto-list: ~1.2.1 + checksum: 828137a28e7c2fc4b7fb229bd0cd6c1397bcf83434de54347e608154008f411749041ee392cbe42fab6307e02de4c12480260bf769b7d44b778fdea3839eafab + languageName: node + linkType: hard + +"configstore@npm:^5.0.0, configstore@npm:^5.0.1": + version: 5.0.1 + resolution: "configstore@npm:5.0.1" + dependencies: + dot-prop: ^5.2.0 + graceful-fs: ^4.1.2 + make-dir: ^3.0.0 + unique-string: ^2.0.0 + write-file-atomic: ^3.0.0 + xdg-basedir: ^4.0.0 + checksum: 60ef65d493b63f96e14b11ba7ec072fdbf3d40110a94fb7199d1c287761bdea5c5244e76b2596325f30c1b652213aa75de96ea20afd4a5f82065e61ea090988e + languageName: node + linkType: hard + +"configstore@npm:^6.0.0": + version: 6.0.0 + resolution: "configstore@npm:6.0.0" + dependencies: + dot-prop: ^6.0.1 + graceful-fs: ^4.2.6 + unique-string: ^3.0.0 + write-file-atomic: ^3.0.3 + xdg-basedir: ^5.0.1 + checksum: 81995351c10bc04c58507f17748477aeac6f47465109d20e3534cebc881d22e927cfd29e73dd852c46c55f62c2b7be4cd1fe6eb3a93ba51f7f9813c218f9bae0 + languageName: node + linkType: hard + +"console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0": version: 1.1.0 resolution: "console-control-strings@npm:1.1.0" checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed languageName: node linkType: hard +"content-disposition@npm:0.5.4, content-disposition@npm:^0.5.2": + version: 0.5.4 + resolution: "content-disposition@npm:0.5.4" + dependencies: + safe-buffer: 5.2.1 + checksum: afb9d545e296a5171d7574fcad634b2fdf698875f4006a9dd04a3e1333880c5c0c98d47b560d01216fb6505a54a2ba6a843ee3a02ec86d7e911e8315255f56c3 + languageName: node + linkType: hard + +"content-type@npm:^1.0.4, 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" @@ -3777,10 +5768,41 @@ __metadata: languageName: node linkType: hard -"cookie@npm:^0.4.1": - version: 0.4.2 - resolution: "cookie@npm:0.4.2" - checksum: a00833c998bedf8e787b4c342defe5fa419abd96b32f4464f718b91022586b8f1bafbddd499288e75c037642493c83083da426c6a9080d309e3bd90fd11baa9b +"cookie-signature@npm:1.0.6": + version: 1.0.6 + resolution: "cookie-signature@npm:1.0.6" + checksum: f4e1b0a98a27a0e6e66fd7ea4e4e9d8e038f624058371bf4499cfcd8f3980be9a121486995202ba3fca74fbed93a407d6d54d43a43f96fd28d0bd7a06761591a + languageName: node + linkType: hard + +"cookie@npm:0.5.0, cookie@npm:^0.5.0": + version: 0.5.0 + resolution: "cookie@npm:0.5.0" + checksum: 1f4bd2ca5765f8c9689a7e8954183f5332139eb72b6ff783d8947032ec1fdf43109852c178e21a953a30c0dd42257828185be01b49d1eb1a67fd054ca588a180 + languageName: node + linkType: hard + +"copy-descriptor@npm:^0.1.0": + version: 0.1.1 + resolution: "copy-descriptor@npm:0.1.1" + checksum: d4b7b57b14f1d256bb9aa0b479241048afd7f5bcf22035fc7b94e8af757adeae247ea23c1a774fe44869fd5694efba4a969b88d966766c5245fdee59837fe45b + languageName: node + linkType: hard + +"copy-template-dir@npm:^1.4.0": + version: 1.4.0 + resolution: "copy-template-dir@npm:1.4.0" + dependencies: + end-of-stream: ^1.1.0 + graceful-fs: ^4.1.3 + maxstache: ^1.0.0 + maxstache-stream: ^1.0.0 + mkdirp: ^0.5.1 + noop2: ^2.0.0 + pump: ^1.0.0 + readdirp: ^2.0.0 + run-parallel: ^1.1.4 + checksum: 79f0786faefa6a8bda7698dfd82c3c95c87c185b76b4e6f5db321efb1b94c63f8c3d41affef42ac670922b521d7d3a65511d0cc41e9aa2210585e14feedaa4fb languageName: node linkType: hard @@ -3837,6 +5859,65 @@ __metadata: languageName: node linkType: hard +"cp-file@npm:^10.0.0": + version: 10.0.0 + resolution: "cp-file@npm:10.0.0" + dependencies: + graceful-fs: ^4.2.10 + nested-error-stacks: ^2.1.1 + p-event: ^5.0.1 + checksum: 13d480872609c7ce5036624fd7998ad493ba1869a28d8595f515e7a3576145f05197a41989193a250b722836930c50efe2dd8f69e8c8ec2f4b2d511dd1688e4c + languageName: node + linkType: hard + +"cp-file@npm:^7.0.0": + version: 7.0.0 + resolution: "cp-file@npm:7.0.0" + dependencies: + graceful-fs: ^4.1.2 + make-dir: ^3.0.0 + nested-error-stacks: ^2.0.0 + p-event: ^4.1.0 + checksum: dd60ed8d865d25a69548e15b21dd0d2fc66f10371e4970aa21b626a7578ebf419f44f386977ed3b3726c07401d4a64ee679cf1da566d8f66f01e9a359b85201f + languageName: node + linkType: hard + +"cpy@npm:^8.1.0": + version: 8.1.2 + resolution: "cpy@npm:8.1.2" + dependencies: + arrify: ^2.0.1 + cp-file: ^7.0.0 + globby: ^9.2.0 + has-glob: ^1.0.0 + junk: ^3.1.0 + nested-error-stacks: ^2.1.0 + p-all: ^2.1.0 + p-filter: ^2.1.0 + p-map: ^3.0.0 + checksum: e121f13f2b6af4a7c00de17984086a45b67eaaeeb0286a5cf67f2fdaf18d8ce6c2a9fe4ccfa37953e6982f55772f384f040f45f1961530655838c2b7486788a7 + languageName: node + linkType: hard + +"crc-32@npm:^1.2.0": + version: 1.2.2 + resolution: "crc-32@npm:1.2.2" + bin: + crc32: bin/crc32.njs + checksum: ad2d0ad0cbd465b75dcaeeff0600f8195b686816ab5f3ba4c6e052a07f728c3e70df2e3ca9fd3d4484dc4ba70586e161ca5a2334ec8bf5a41bf022a6103ff243 + languageName: node + linkType: hard + +"crc32-stream@npm:^4.0.2": + version: 4.0.2 + resolution: "crc32-stream@npm:4.0.2" + dependencies: + crc-32: ^1.2.0 + readable-stream: ^3.4.0 + checksum: 1099559283b86e8a55390228b57ff4d57a74cac6aa8086aa4730f84317c9f93e914aeece115352f2d706a9df7ed75327ffacd86cfe23f040aef821231b528e76 + languageName: node + linkType: hard + "create-bot-whatsapp@workspace:packages/create-bot-whatsapp": version: 0.0.0-use.local resolution: "create-bot-whatsapp@workspace:packages/create-bot-whatsapp" @@ -3875,10 +5956,12 @@ __metadata: languageName: node linkType: hard -"cron-schedule@npm:^3.0.4": - version: 3.0.6 - resolution: "cron-schedule@npm:3.0.6" - checksum: 5f6bee86397f5098602588d7acda799c474452145bf1e767319a54e8827e02224585dd231c9e39fd66ffb308def775bf5581ebb1065b12a8e2c2fe91884d44d8 +"cron-parser@npm:^4.1.0, cron-parser@npm:^4.2.1": + version: 4.7.0 + resolution: "cron-parser@npm:4.7.0" + dependencies: + luxon: ^3.1.0 + checksum: 25489f2cd41ada61bc35a09bdb7147e5f1d25179c740725d859e18076dabdf2551bfdd6d62fe339227d58840b068bb5a330fb6f867e695e998fd32359d6e0022 languageName: node linkType: hard @@ -3905,6 +5988,22 @@ __metadata: languageName: node linkType: hard +"crypto-random-string@npm:^2.0.0": + version: 2.0.0 + resolution: "crypto-random-string@npm:2.0.0" + checksum: 0283879f55e7c16fdceacc181f87a0a65c53bc16ffe1d58b9d19a6277adcd71900d02bb2c4843dd55e78c51e30e89b0fec618a7f170ebcc95b33182c28f05fd6 + languageName: node + linkType: hard + +"crypto-random-string@npm:^4.0.0": + version: 4.0.0 + resolution: "crypto-random-string@npm:4.0.0" + dependencies: + type-fest: ^1.0.1 + checksum: 91f148f27bcc8582798f0fb3e75a09d9174557f39c3c40a89dd1bd70fb5a14a02548245aa26fa7d663c426ac5026f4729841231c84f9e30e8c8ece5e38656741 + languageName: node + linkType: hard + "css-declaration-sorter@npm:^6.3.1": version: 6.3.1 resolution: "css-declaration-sorter@npm:6.3.1" @@ -4081,6 +6180,13 @@ __metadata: languageName: node linkType: hard +"cyclist@npm:^1.0.1": + version: 1.0.1 + resolution: "cyclist@npm:1.0.1" + checksum: 3cc2fdeb358599ca0ea96f5ecf2fc530ccab7ed1f8aa1a894aebfacd2009281bd7380cb9b30db02a18cdd00b3ed1d7ce81a3b11fe56e33a6a0fe4424dc592fbe + languageName: node + linkType: hard + "dargs@npm:^7.0.0": version: 7.0.0 resolution: "dargs@npm:7.0.0" @@ -4126,6 +6232,22 @@ __metadata: languageName: node linkType: hard +"date-fns@npm:^1.27.2": + version: 1.30.1 + resolution: "date-fns@npm:1.30.1" + checksum: 86b1f3269cbb1f3ee5ac9959775ea6600436f4ee2b78430cd427b41a0c9fabf740b1a5d401c085f3003539a6f4755c7c56c19fbd70ce11f6f673f6bc8075b710 + languageName: node + linkType: hard + +"date-time@npm:^3.1.0": + version: 3.1.0 + resolution: "date-time@npm:3.1.0" + dependencies: + time-zone: ^1.0.0 + checksum: f9cfcd1b15dfeabab15c0b9d18eb9e4e2d9d4371713564178d46a8f91ad577a290b5178b80050718d02d9c0cf646f8a875011e12d1ed05871e9f72c72c8a8fe6 + languageName: node + linkType: hard + "dateformat@npm:^3.0.0": version: 3.0.3 resolution: "dateformat@npm:3.0.3" @@ -4133,7 +6255,16 @@ __metadata: 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": +"debug@npm:2.6.9, debug@npm:^2.2.0, debug@npm:^2.3.3": + 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.0.1, 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" dependencies: @@ -4145,6 +6276,15 @@ __metadata: languageName: node linkType: hard +"decache@npm:^4.6.0": + version: 4.6.1 + resolution: "decache@npm:4.6.1" + dependencies: + callsite: ^1.0.0 + checksum: 3e8cf879ecad1ebc1a0fed782d008ea4f331c2a3688de3b3f18fca03e51b3aa829be90ee0b7c6e1ebc0b0a0f4e911529efdfb3cef28d69b9605131b7c69daea9 + languageName: node + linkType: hard + "decamelize-keys@npm:^1.1.0": version: 1.1.1 resolution: "decamelize-keys@npm:1.1.1" @@ -4178,6 +6318,31 @@ __metadata: languageName: node linkType: hard +"decode-uri-component@npm:^0.2.0": + version: 0.2.2 + resolution: "decode-uri-component@npm:0.2.2" + checksum: 95476a7d28f267292ce745eac3524a9079058bbb35767b76e3ee87d42e34cd0275d2eb19d9d08c3e167f97556e8a2872747f5e65cbebcac8b0c98d83e285f139 + languageName: node + linkType: hard + +"decompress-response@npm:^3.3.0": + version: 3.3.0 + resolution: "decompress-response@npm:3.3.0" + dependencies: + mimic-response: ^1.0.0 + checksum: 952552ac3bd7de2fc18015086b09468645c9638d98a551305e485230ada278c039c91116e946d07894b39ee53c0f0d5b6473f25a224029344354513b412d7380 + languageName: node + linkType: hard + +"decompress-response@npm:^5.0.0": + version: 5.0.0 + resolution: "decompress-response@npm:5.0.0" + dependencies: + mimic-response: ^2.0.0 + checksum: b46fe6c275b410e6dbf354083b42122b18eb6010c25aa19134f61934110269f715b2dfaf0089e3ef4e2acf5eb477193f8f5d42dbe3cc38adfc43fd090510c765 + languageName: node + linkType: hard + "decompress-response@npm:^6.0.0": version: 6.0.0 resolution: "decompress-response@npm:6.0.0" @@ -4187,6 +6352,69 @@ __metadata: languageName: node linkType: hard +"decompress-tar@npm:^4.0.0, decompress-tar@npm:^4.1.0, decompress-tar@npm:^4.1.1": + version: 4.1.1 + resolution: "decompress-tar@npm:4.1.1" + dependencies: + file-type: ^5.2.0 + is-stream: ^1.1.0 + tar-stream: ^1.5.2 + checksum: 42d5360b558a28dd884e1bf809e3fea92b9910fda5151add004d4a64cc76ac124e8b3e9117e805f2349af9e49c331d873e6fc5ad86a00e575703fee632b0a225 + languageName: node + linkType: hard + +"decompress-tarbz2@npm:^4.0.0": + version: 4.1.1 + resolution: "decompress-tarbz2@npm:4.1.1" + dependencies: + decompress-tar: ^4.1.0 + file-type: ^6.1.0 + is-stream: ^1.1.0 + seek-bzip: ^1.0.5 + unbzip2-stream: ^1.0.9 + checksum: 519c81337730159a1f2d7072a6ee8523ffd76df48d34f14c27cb0a27f89b4e2acf75dad2f761838e5bc63230cea1ac154b092ecb7504be4e93f7d0e32ddd6aff + languageName: node + linkType: hard + +"decompress-targz@npm:^4.0.0": + version: 4.1.1 + resolution: "decompress-targz@npm:4.1.1" + dependencies: + decompress-tar: ^4.1.1 + file-type: ^5.2.0 + is-stream: ^1.1.0 + checksum: 22738f58eb034568dc50d370c03b346c428bfe8292fe56165847376b5af17d3c028fefca82db642d79cb094df4c0a599d40a8f294b02aad1d3ddec82f3fd45d4 + languageName: node + linkType: hard + +"decompress-unzip@npm:^4.0.1": + version: 4.0.1 + resolution: "decompress-unzip@npm:4.0.1" + dependencies: + file-type: ^3.8.0 + get-stream: ^2.2.0 + pify: ^2.3.0 + yauzl: ^2.4.2 + checksum: ba9f3204ab2415bedb18d796244928a18148ef40dbb15174d0d01e5991b39536b03d02800a8a389515a1523f8fb13efc7cd44697df758cd06c674879caefd62b + languageName: node + linkType: hard + +"decompress@npm:^4.2.1": + version: 4.2.1 + resolution: "decompress@npm:4.2.1" + dependencies: + decompress-tar: ^4.0.0 + decompress-tarbz2: ^4.0.0 + decompress-targz: ^4.0.0 + decompress-unzip: ^4.0.1 + graceful-fs: ^4.1.10 + make-dir: ^1.0.0 + pify: ^2.3.0 + strip-dirs: ^2.0.0 + checksum: 8247a31c6db7178413715fdfb35a482f019c81dfcd6e8e623d9f0382c9889ce797ce0144de016b256ed03298907a620ce81387cca0e69067a933470081436cb8 + languageName: node + linkType: hard + "deep-equal@npm:^2.0.5": version: 2.1.0 resolution: "deep-equal@npm:2.1.0" @@ -4231,6 +6459,36 @@ __metadata: languageName: node linkType: hard +"defaults@npm:^1.0.3": + version: 1.0.4 + resolution: "defaults@npm:1.0.4" + dependencies: + clone: ^1.0.2 + checksum: 3a88b7a587fc076b84e60affad8b85245c01f60f38fc1d259e7ac1d89eb9ce6abb19e27215de46b98568dd5bc48471730b327637e6f20b0f1bc85cf00440c80a + languageName: node + linkType: hard + +"defer-to-connect@npm:^1.0.1": + version: 1.1.3 + resolution: "defer-to-connect@npm:1.1.3" + checksum: 9491b301dcfa04956f989481ba7a43c2231044206269eb4ab64a52d6639ee15b1252262a789eb4239fb46ab63e44d4e408641bae8e0793d640aee55398cb3930 + languageName: node + linkType: hard + +"defer-to-connect@npm:^2.0.0, defer-to-connect@npm:^2.0.1": + version: 2.0.1 + resolution: "defer-to-connect@npm:2.0.1" + checksum: 8a9b50d2f25446c0bfefb55a48e90afd58f85b21bcf78e9207cd7b804354f6409032a1705c2491686e202e64fc05f147aa5aa45f9aa82627563f045937f5791b + languageName: node + linkType: hard + +"define-lazy-prop@npm:^2.0.0": + version: 2.0.0 + resolution: "define-lazy-prop@npm:2.0.0" + checksum: 0115fdb065e0490918ba271d7339c42453d209d4cb619dfe635870d906731eff3e1ade8028bb461ea27ce8264ec5e22c6980612d332895977e89c1bbc80fcee2 + languageName: node + linkType: hard + "define-properties@npm:^1.1.3, define-properties@npm:^1.1.4": version: 1.1.4 resolution: "define-properties@npm:1.1.4" @@ -4241,6 +6499,34 @@ __metadata: languageName: node linkType: hard +"define-property@npm:^0.2.5": + version: 0.2.5 + resolution: "define-property@npm:0.2.5" + dependencies: + is-descriptor: ^0.1.0 + checksum: 85af107072b04973b13f9e4128ab74ddfda48ec7ad2e54b193c0ffb57067c4ce5b7786a7b4ae1f24bd03e87c5d18766b094571810b314d7540f86d4354dbd394 + languageName: node + linkType: hard + +"define-property@npm:^1.0.0": + version: 1.0.0 + resolution: "define-property@npm:1.0.0" + dependencies: + is-descriptor: ^1.0.0 + checksum: 5fbed11dace44dd22914035ba9ae83ad06008532ca814d7936a53a09e897838acdad5b108dd0688cc8d2a7cf0681acbe00ee4136cf36743f680d10517379350a + languageName: node + linkType: hard + +"define-property@npm:^2.0.2": + version: 2.0.2 + resolution: "define-property@npm:2.0.2" + dependencies: + is-descriptor: ^1.0.2 + isobject: ^3.0.1 + checksum: 3217ed53fc9eed06ba8da6f4d33e28c68a82e2f2a8ab4d562c4920d8169a166fe7271453675e6c69301466f36a65d7f47edf0cf7f474b9aa52a5ead9c1b13c99 + languageName: node + linkType: hard + "defined@npm:^1.0.0": version: 1.0.1 resolution: "defined@npm:1.0.1" @@ -4248,6 +6534,38 @@ __metadata: languageName: node linkType: hard +"del@npm:^6.0.0": + version: 6.1.1 + resolution: "del@npm:6.1.1" + dependencies: + globby: ^11.0.1 + graceful-fs: ^4.2.4 + is-glob: ^4.0.1 + is-path-cwd: ^2.2.0 + is-path-inside: ^3.0.2 + p-map: ^4.0.0 + rimraf: ^3.0.2 + slash: ^3.0.0 + checksum: 563288b73b8b19a7261c47fd21a330eeab6e2acd7c6208c49790dfd369127120dd7836cdf0c1eca216b77c94782a81507eac6b4734252d3bef2795cb366996b6 + languageName: node + linkType: hard + +"del@npm:^7.0.0": + version: 7.0.0 + resolution: "del@npm:7.0.0" + dependencies: + globby: ^13.1.2 + graceful-fs: ^4.2.10 + is-glob: ^4.0.3 + is-path-cwd: ^3.0.0 + is-path-inside: ^4.0.0 + p-map: ^5.5.0 + rimraf: ^3.0.2 + slash: ^4.0.0 + checksum: 33e5077f18b5dfbe81971d1f8a2cd8bf676dd5ede491bab85ec17a4a1d59001bd3ec47fd38e9a4ae01a3c98c07b98c7b3dc56190b86d88926798802d7858d827 + languageName: node + linkType: hard + "delayed-stream@npm:~1.0.0": version: 1.0.0 resolution: "delayed-stream@npm:1.0.0" @@ -4269,14 +6587,21 @@ __metadata: languageName: node linkType: hard -"depd@npm:^1.1.2": +"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, depd@npm:~1.1.2": version: 1.1.2 resolution: "depd@npm:1.1.2" checksum: 6b406620d269619852885ce15965272b829df6f409724415e0002c8632ab6a8c0a08ec1f0bd2add05dc7bd7507606f7e2cc034fa24224ab829580040b835ecd9 languageName: node linkType: hard -"deprecation@npm:^2.0.0": +"deprecation@npm:^2.0.0, deprecation@npm:^2.3.1": version: 2.3.1 resolution: "deprecation@npm:2.3.1" checksum: f56a05e182c2c195071385455956b0c4106fe14e36245b00c689ceef8e8ab639235176a96977ba7c74afb173317fac2e0ec6ec7a1c6d1e6eaa401c586c714132 @@ -4290,6 +6615,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" @@ -4320,6 +6652,100 @@ __metadata: languageName: node linkType: hard +"detective-amd@npm:^4.0.1": + version: 4.0.1 + resolution: "detective-amd@npm:4.0.1" + dependencies: + ast-module-types: ^3.0.0 + escodegen: ^2.0.0 + get-amd-module-type: ^4.0.0 + node-source-walk: ^5.0.0 + bin: + detective-amd: bin/cli.js + checksum: 027471e462b7861e5adbe4baa411240d1bffff135c4afd5051081af9c8718bbb2ae10033a8de78868bb214665334c43c88f4bc2e20ea1e3b8bbd69e2c44657b1 + languageName: node + linkType: hard + +"detective-cjs@npm:^4.0.0": + version: 4.0.0 + resolution: "detective-cjs@npm:4.0.0" + dependencies: + ast-module-types: ^3.0.0 + node-source-walk: ^5.0.0 + checksum: 5157a72440e3c014a5e2cb7f09760daa5888681c849c6410787f66b19acb8ddfd0145ec5a688c2b956d1aae167955793910a7d84835eaa24743640da5ee4a87b + languageName: node + linkType: hard + +"detective-es6@npm:^3.0.0": + version: 3.0.0 + resolution: "detective-es6@npm:3.0.0" + dependencies: + node-source-walk: ^5.0.0 + checksum: f9c9ce2751144be8f809aa05ff4ce6f658e17b2f83c1b5eec393a89c55a4a36f56426ffb0dac29f9d94f2cc917bbd9d86add34a186a60db5d3da9b396881d433 + languageName: node + linkType: hard + +"detective-less@npm:^1.0.2": + version: 1.0.2 + resolution: "detective-less@npm:1.0.2" + dependencies: + debug: ^4.0.0 + gonzales-pe: ^4.2.3 + node-source-walk: ^4.0.0 + checksum: 858936fbad87423bd5d7502ff5fafca023e7c99e4006ed01b31c12c4b5ff8697edce91419798479d857efec68ee8f022fcac64de5530db6a64012be600a2249e + languageName: node + linkType: hard + +"detective-postcss@npm:^6.0.1": + version: 6.1.0 + resolution: "detective-postcss@npm:6.1.0" + dependencies: + is-url: ^1.2.4 + postcss: ^8.4.12 + postcss-values-parser: ^6.0.2 + checksum: e9ccb66bb1512d3205270d4dbe204195ad01985e589b38e01d2f0f09739fee35428b8094227dd458fc243a2eccf883d159ed57c2cc65b4aafd5a55008b68f8ef + languageName: node + linkType: hard + +"detective-sass@npm:^4.0.1": + version: 4.0.1 + resolution: "detective-sass@npm:4.0.1" + dependencies: + gonzales-pe: ^4.3.0 + node-source-walk: ^5.0.0 + checksum: 2591931abc5781d3a0e29c5b8d0e2d14d10362b1f5380855d4b0ee10e0aa88f736e7ab071cba9fada5b6527075b9983a28f68feb5a2e066a363def5c1282420c + languageName: node + linkType: hard + +"detective-scss@npm:^3.0.0": + version: 3.0.0 + resolution: "detective-scss@npm:3.0.0" + dependencies: + gonzales-pe: ^4.3.0 + node-source-walk: ^5.0.0 + checksum: 6ae0e4b067687b9fa1762002119e4dbb9559892a329393f37ea78c3e3b1ab0d7b9c8baaebbb79de937430117af894113b0072b4b02fc200ac45ad167fdb0bf76 + languageName: node + linkType: hard + +"detective-stylus@npm:^2.0.0": + version: 2.0.1 + resolution: "detective-stylus@npm:2.0.1" + checksum: c701ba6df3e6b5346aa5dd37b8329a9069a20fd7d075933e2e3b819a75922a2adab809143591151e7337183d59c980e6bc64ad6e51ce96de864575221c1b9506 + languageName: node + linkType: hard + +"detective-typescript@npm:^9.0.0": + version: 9.0.0 + resolution: "detective-typescript@npm:9.0.0" + dependencies: + "@typescript-eslint/typescript-estree": ^5.13.0 + ast-module-types: ^3.0.0 + node-source-walk: ^5.0.0 + typescript: ^4.5.5 + checksum: b6c5ea7ad2f2ca8313c23ae5307a838e2bf0c3557b13fc774d3b91792707944fc0936a20978a220397485787cb1603b7bdede96f92aa5d05794f7866bdebf77b + languageName: node + linkType: hard + "detective@npm:^5.2.1": version: 5.2.1 resolution: "detective@npm:5.2.1" @@ -4368,6 +6794,15 @@ __metadata: languageName: node linkType: hard +"dir-glob@npm:^2.2.2": + version: 2.2.2 + resolution: "dir-glob@npm:2.2.2" + dependencies: + path-type: ^3.0.0 + checksum: 3aa48714a9f7845ffc30ab03a5c674fe760477cc55e67b0847333371549227d93953e6627ec160f75140c5bea5c5f88d13c01de79bd1997a588efbcf06980842 + languageName: node + linkType: hard + "dir-glob@npm:^3.0.1": version: 3.0.1 resolution: "dir-glob@npm:3.0.1" @@ -4466,7 +6901,7 @@ __metadata: languageName: node linkType: hard -"dot-prop@npm:^5.1.0": +"dot-prop@npm:^5.1.0, dot-prop@npm:^5.2.0": version: 5.3.0 resolution: "dot-prop@npm:5.3.0" dependencies: @@ -4475,14 +6910,25 @@ __metadata: languageName: node linkType: hard -"dotenv@npm:^10.0.0": - version: 10.0.0 - resolution: "dotenv@npm:10.0.0" - checksum: f412c5fe8c24fbe313d302d2500e247ba8a1946492db405a4de4d30dd0eb186a88a43f13c958c5a7de303938949c4231c56994f97d05c4bc1f22478d631b4005 +"dot-prop@npm:^6.0.0, dot-prop@npm:^6.0.1": + version: 6.0.1 + resolution: "dot-prop@npm:6.0.1" + dependencies: + is-obj: ^2.0.0 + checksum: 0f47600a4b93e1dc37261da4e6909652c008832a5d3684b5bf9a9a0d3f4c67ea949a86dceed9b72f5733ed8e8e6383cc5958df3bbd0799ee317fd181f2ece700 languageName: node linkType: hard -"dotenv@npm:^16.0.3": +"dot-prop@npm:^7.0.0": + version: 7.2.0 + resolution: "dot-prop@npm:7.2.0" + dependencies: + type-fest: ^2.11.2 + checksum: 08e4ff14f7305ffb5fda7e4c88f3cdbeb3cd97bd27efa4f47503869a2ee7f96938b4c21b0a2abf9c37d891a1bdb3994a09d219b0dcfd6130da4eaeb44c6f067e + languageName: node + linkType: hard + +"dotenv@npm:^16.0.0, dotenv@npm:^16.0.2, dotenv@npm:^16.0.3": version: 16.0.3 resolution: "dotenv@npm:16.0.3" checksum: afcf03f373d7a6d62c7e9afea6328e62851d627a4e73f2e12d0a8deae1cd375892004f3021883f8aec85932cd2834b091f568ced92b4774625b321db83b827f8 @@ -4499,6 +6945,39 @@ __metadata: languageName: node linkType: hard +"download@npm:^8.0.0": + version: 8.0.0 + resolution: "download@npm:8.0.0" + dependencies: + archive-type: ^4.0.0 + content-disposition: ^0.5.2 + decompress: ^4.2.1 + ext-name: ^5.0.0 + file-type: ^11.1.0 + filenamify: ^3.0.0 + get-stream: ^4.1.0 + got: ^8.3.1 + make-dir: ^2.1.0 + p-event: ^2.1.0 + pify: ^4.0.1 + checksum: 8a26b21eee8d23352265729dba8eea9f18cba0ebfa3e064041afffeefdfe508fc31e54a08bd0606ff8b0d548466bdb2e2e32b571a8f95227efa5b7c09c261a2f + languageName: node + linkType: hard + +"duplexer3@npm:^0.1.4": + version: 0.1.5 + resolution: "duplexer3@npm:0.1.5" + checksum: e677cb4c48f031ca728601d6a20bf6aed4c629d69ef9643cb89c67583d673c4ec9317cc6427501f38bd8c368d3a18f173987cc02bd99d8cf8fe3d94259a22a20 + languageName: node + linkType: hard + +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 7d00d7cd8e49b9afa762a813faac332dee781932d6f2c848dc348939c4253f1d4564341b7af1d041853bc3f32c2ef141b58e0a4d9862c17a7f08f68df1e0f1ed + languageName: node + linkType: hard + "ecc-jsbn@npm:~0.1.1": version: 0.1.2 resolution: "ecc-jsbn@npm:0.1.2" @@ -4509,6 +6988,22 @@ __metadata: languageName: node linkType: hard +"ecdsa-sig-formatter@npm:1.0.11": + version: 1.0.11 + resolution: "ecdsa-sig-formatter@npm:1.0.11" + dependencies: + safe-buffer: ^5.0.1 + checksum: 207f9ab1c2669b8e65540bce29506134613dd5f122cccf1e6a560f4d63f2732d427d938f8481df175505aad94583bcb32c688737bb39a6df0625f903d6d93c03 + 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" @@ -4516,6 +7011,13 @@ __metadata: languageName: node linkType: hard +"elegant-spinner@npm:^1.0.1": + version: 1.0.1 + resolution: "elegant-spinner@npm:1.0.1" + checksum: d6a773d950c5d403b5f0fa402787e37dde99989ab6c943558fe8491cf7cd0df0e2747a9ff4d391d5a5f20a447cc9e9a63bdc956354ba47bea462f1603a5b04fe + languageName: node + linkType: hard + "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" @@ -4523,6 +7025,27 @@ __metadata: languageName: node linkType: hard +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: 8487182da74aabd810ac6d6f1994111dfc0e331b01271ae01ec1eb0ad7b5ecc2bbbbd2f053c05cb55a1ac30449527d819bbfbf0e3de1023db308cbcb47f86601 + languageName: node + linkType: hard + +"enabled@npm:2.0.x": + version: 2.0.0 + resolution: "enabled@npm:2.0.0" + checksum: 9d256d89f4e8a46ff988c6a79b22fa814b4ffd82826c4fdacd9b42e9b9465709d3b748866d0ab4d442dfc6002d81de7f7b384146ccd1681f6a7f868d2acca063 + 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" @@ -4532,7 +7055,7 @@ __metadata: languageName: node linkType: hard -"end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": +"end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1, end-of-stream@npm:^1.4.4": version: 1.4.4 resolution: "end-of-stream@npm:1.4.4" dependencies: @@ -4541,7 +7064,7 @@ __metadata: languageName: node linkType: hard -"entities@npm:^2.0.0": +"entities@npm:^2.0.0, entities@npm:^2.2.0": version: 2.2.0 resolution: "entities@npm:2.2.0" checksum: 19010dacaf0912c895ea262b4f6128574f9ccf8d4b3b65c7e8334ad0079b3706376360e28d8843ff50a78aabcb8f08f0a32dbfacdc77e47ed77ca08b713669b3 @@ -4555,6 +7078,22 @@ __metadata: languageName: node linkType: hard +"env-paths@npm:^3.0.0": + version: 3.0.0 + resolution: "env-paths@npm:3.0.0" + checksum: b2b0a0d0d9931a13d279c22ed94d78648a1cc5f408f05d47ff3e0c1616f0aa0c38fb33deec5e5be50497225d500607d57f9c8652c4d39c2f2b7608cd45768128 + languageName: node + linkType: hard + +"envinfo@npm:^7.3.1": + version: 7.8.1 + resolution: "envinfo@npm:7.8.1" + bin: + envinfo: dist/cli.js + checksum: de736c98d6311c78523628ff127af138451b162e57af5293c1b984ca821d0aeb9c849537d2fde0434011bed33f6bca5310ca2aab8a51a3f28fc719e89045d648 + languageName: node + linkType: hard + "err-code@npm:^2.0.2": version: 2.0.3 resolution: "err-code@npm:2.0.3" @@ -4571,6 +7110,15 @@ __metadata: languageName: node linkType: hard +"error-stack-parser@npm:^2.0.2, error-stack-parser@npm:^2.0.3": + version: 2.1.4 + resolution: "error-stack-parser@npm:2.1.4" + dependencies: + stackframe: ^1.3.4 + checksum: 3b916d2d14c6682f287c8bfa28e14672f47eafe832701080e420e7cdbaebb2c50293868256a95706ac2330fe078cf5664713158b49bc30d7a5f2ac229ded0e18 + languageName: node + linkType: hard + "es-abstract@npm:^1.17.5, es-abstract@npm:^1.19.0, es-abstract@npm:^1.20.4": version: 1.20.5 resolution: "es-abstract@npm:1.20.5" @@ -4620,6 +7168,13 @@ __metadata: languageName: node linkType: hard +"es-module-lexer@npm:^1.0.0": + version: 1.1.0 + resolution: "es-module-lexer@npm:1.1.0" + checksum: 3e9f5019b69c6b2f04eb8478c4fdb4ed72cb8b4c97511b5dd39c1f498386ed8f5083c32067c15efcfabc7e8460cb65ed4627dd32405475715a898009922f41fa + languageName: node + linkType: hard + "es-to-primitive@npm:^1.2.1": version: 1.2.1 resolution: "es-to-primitive@npm:1.2.1" @@ -4638,6 +7193,13 @@ __metadata: languageName: node linkType: hard +"es6-promisify@npm:^6.0.0": + version: 6.1.1 + resolution: "es6-promisify@npm:6.1.1" + checksum: e57dfa8b6533387e6cae115bdc1591e4e6e7648443741360c4f4f8f1d2c17d1f0fb293ccd3f86193f016c236ed15f336e075784eab7ec9a67af0aed2b949dd7c + languageName: node + linkType: hard + "esanimate@npm:^1.1.0": version: 1.1.1 resolution: "esanimate@npm:1.1.1" @@ -4648,13 +7210,6 @@ __metadata: languageName: node linkType: hard -"esbuild-android-64@npm:0.14.51": - version: 0.14.51 - resolution: "esbuild-android-64@npm:0.14.51" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - "esbuild-android-64@npm:0.15.18": version: 0.15.18 resolution: "esbuild-android-64@npm:0.15.18" @@ -4662,13 +7217,6 @@ __metadata: languageName: node linkType: hard -"esbuild-android-arm64@npm:0.14.51": - version: 0.14.51 - resolution: "esbuild-android-arm64@npm:0.14.51" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - "esbuild-android-arm64@npm:0.15.18": version: 0.15.18 resolution: "esbuild-android-arm64@npm:0.15.18" @@ -4676,13 +7224,6 @@ __metadata: languageName: node linkType: hard -"esbuild-darwin-64@npm:0.14.51": - version: 0.14.51 - resolution: "esbuild-darwin-64@npm:0.14.51" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "esbuild-darwin-64@npm:0.15.18": version: 0.15.18 resolution: "esbuild-darwin-64@npm:0.15.18" @@ -4690,13 +7231,6 @@ __metadata: languageName: node linkType: hard -"esbuild-darwin-arm64@npm:0.14.51": - version: 0.14.51 - resolution: "esbuild-darwin-arm64@npm:0.14.51" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "esbuild-darwin-arm64@npm:0.15.18": version: 0.15.18 resolution: "esbuild-darwin-arm64@npm:0.15.18" @@ -4704,13 +7238,6 @@ __metadata: languageName: node linkType: hard -"esbuild-freebsd-64@npm:0.14.51": - version: 0.14.51 - resolution: "esbuild-freebsd-64@npm:0.14.51" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - "esbuild-freebsd-64@npm:0.15.18": version: 0.15.18 resolution: "esbuild-freebsd-64@npm:0.15.18" @@ -4718,13 +7245,6 @@ __metadata: languageName: node linkType: hard -"esbuild-freebsd-arm64@npm:0.14.51": - version: 0.14.51 - resolution: "esbuild-freebsd-arm64@npm:0.14.51" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - "esbuild-freebsd-arm64@npm:0.15.18": version: 0.15.18 resolution: "esbuild-freebsd-arm64@npm:0.15.18" @@ -4732,13 +7252,6 @@ __metadata: languageName: node linkType: hard -"esbuild-linux-32@npm:0.14.51": - version: 0.14.51 - resolution: "esbuild-linux-32@npm:0.14.51" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - "esbuild-linux-32@npm:0.15.18": version: 0.15.18 resolution: "esbuild-linux-32@npm:0.15.18" @@ -4746,13 +7259,6 @@ __metadata: languageName: node linkType: hard -"esbuild-linux-64@npm:0.14.51": - version: 0.14.51 - resolution: "esbuild-linux-64@npm:0.14.51" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - "esbuild-linux-64@npm:0.15.18": version: 0.15.18 resolution: "esbuild-linux-64@npm:0.15.18" @@ -4760,13 +7266,6 @@ __metadata: languageName: node linkType: hard -"esbuild-linux-arm64@npm:0.14.51": - version: 0.14.51 - resolution: "esbuild-linux-arm64@npm:0.14.51" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - "esbuild-linux-arm64@npm:0.15.18": version: 0.15.18 resolution: "esbuild-linux-arm64@npm:0.15.18" @@ -4774,13 +7273,6 @@ __metadata: languageName: node linkType: hard -"esbuild-linux-arm@npm:0.14.51": - version: 0.14.51 - resolution: "esbuild-linux-arm@npm:0.14.51" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - "esbuild-linux-arm@npm:0.15.18": version: 0.15.18 resolution: "esbuild-linux-arm@npm:0.15.18" @@ -4788,13 +7280,6 @@ __metadata: languageName: node linkType: hard -"esbuild-linux-mips64le@npm:0.14.51": - version: 0.14.51 - resolution: "esbuild-linux-mips64le@npm:0.14.51" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - "esbuild-linux-mips64le@npm:0.15.18": version: 0.15.18 resolution: "esbuild-linux-mips64le@npm:0.15.18" @@ -4802,13 +7287,6 @@ __metadata: languageName: node linkType: hard -"esbuild-linux-ppc64le@npm:0.14.51": - version: 0.14.51 - resolution: "esbuild-linux-ppc64le@npm:0.14.51" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - "esbuild-linux-ppc64le@npm:0.15.18": version: 0.15.18 resolution: "esbuild-linux-ppc64le@npm:0.15.18" @@ -4816,13 +7294,6 @@ __metadata: languageName: node linkType: hard -"esbuild-linux-riscv64@npm:0.14.51": - version: 0.14.51 - resolution: "esbuild-linux-riscv64@npm:0.14.51" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - "esbuild-linux-riscv64@npm:0.15.18": version: 0.15.18 resolution: "esbuild-linux-riscv64@npm:0.15.18" @@ -4830,13 +7301,6 @@ __metadata: languageName: node linkType: hard -"esbuild-linux-s390x@npm:0.14.51": - version: 0.14.51 - resolution: "esbuild-linux-s390x@npm:0.14.51" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - "esbuild-linux-s390x@npm:0.15.18": version: 0.15.18 resolution: "esbuild-linux-s390x@npm:0.15.18" @@ -4844,13 +7308,6 @@ __metadata: languageName: node linkType: hard -"esbuild-netbsd-64@npm:0.14.51": - version: 0.14.51 - resolution: "esbuild-netbsd-64@npm:0.14.51" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - "esbuild-netbsd-64@npm:0.15.18": version: 0.15.18 resolution: "esbuild-netbsd-64@npm:0.15.18" @@ -4858,13 +7315,6 @@ __metadata: languageName: node linkType: hard -"esbuild-openbsd-64@npm:0.14.51": - version: 0.14.51 - resolution: "esbuild-openbsd-64@npm:0.14.51" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - "esbuild-openbsd-64@npm:0.15.18": version: 0.15.18 resolution: "esbuild-openbsd-64@npm:0.15.18" @@ -4872,13 +7322,6 @@ __metadata: languageName: node linkType: hard -"esbuild-sunos-64@npm:0.14.51": - version: 0.14.51 - resolution: "esbuild-sunos-64@npm:0.14.51" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - "esbuild-sunos-64@npm:0.15.18": version: 0.15.18 resolution: "esbuild-sunos-64@npm:0.15.18" @@ -4886,13 +7329,6 @@ __metadata: languageName: node linkType: hard -"esbuild-windows-32@npm:0.14.51": - version: 0.14.51 - resolution: "esbuild-windows-32@npm:0.14.51" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - "esbuild-windows-32@npm:0.15.18": version: 0.15.18 resolution: "esbuild-windows-32@npm:0.15.18" @@ -4900,13 +7336,6 @@ __metadata: languageName: node linkType: hard -"esbuild-windows-64@npm:0.14.51": - version: 0.14.51 - resolution: "esbuild-windows-64@npm:0.14.51" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "esbuild-windows-64@npm:0.15.18": version: 0.15.18 resolution: "esbuild-windows-64@npm:0.15.18" @@ -4914,13 +7343,6 @@ __metadata: languageName: node linkType: hard -"esbuild-windows-arm64@npm:0.14.51": - version: 0.14.51 - resolution: "esbuild-windows-arm64@npm:0.14.51" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - "esbuild-windows-arm64@npm:0.15.18": version: 0.15.18 resolution: "esbuild-windows-arm64@npm:0.15.18" @@ -4928,77 +7350,6 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:0.14.51": - version: 0.14.51 - resolution: "esbuild@npm:0.14.51" - dependencies: - 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 - dependenciesMeta: - esbuild-android-64: - optional: true - esbuild-android-arm64: - optional: true - esbuild-darwin-64: - optional: true - esbuild-darwin-arm64: - optional: true - esbuild-freebsd-64: - optional: true - esbuild-freebsd-arm64: - optional: true - esbuild-linux-32: - optional: true - esbuild-linux-64: - optional: true - esbuild-linux-arm: - optional: true - esbuild-linux-arm64: - optional: true - esbuild-linux-mips64le: - optional: true - esbuild-linux-ppc64le: - optional: true - esbuild-linux-riscv64: - optional: true - esbuild-linux-s390x: - optional: true - esbuild-netbsd-64: - optional: true - esbuild-openbsd-64: - optional: true - esbuild-sunos-64: - optional: true - esbuild-windows-32: - optional: true - esbuild-windows-64: - optional: true - esbuild-windows-arm64: - optional: true - bin: - esbuild: bin/esbuild - checksum: 0fa8a52dd1dc7b231f7b02448aae5ee71ff2fe26ee67f6c97945a6dd128806be6eb2c73be7b49c7b25f831d646edd3da245faf31ede136f4aa0934abd7206e4b - languageName: node - linkType: hard - "esbuild@npm:^0.15.9": version: 0.15.18 resolution: "esbuild@npm:0.15.18" @@ -5083,7 +7434,35 @@ __metadata: languageName: node linkType: hard -"escape-string-regexp@npm:^1.0.5": +"escape-goat@npm:^2.0.0": + version: 2.1.1 + resolution: "escape-goat@npm:2.1.1" + checksum: ce05c70c20dd7007b60d2d644b625da5412325fdb57acf671ba06cb2ab3cd6789e2087026921a05b665b0a03fadee2955e7fc0b9a67da15a6551a980b260eba7 + languageName: node + linkType: hard + +"escape-goat@npm:^4.0.0": + version: 4.0.0 + resolution: "escape-goat@npm:4.0.0" + checksum: 7034e0025eec7b751074b837f10312c5b768493265bdad046347c0aadbc1e652776f7e5df94766473fecb5d3681169cc188fe9ccc1e22be53318c18be1671cc0 + 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:5.0.0, escape-string-regexp@npm:^5.0.0": + version: 5.0.0 + resolution: "escape-string-regexp@npm:5.0.0" + checksum: 20daabe197f3cb198ec28546deebcf24b3dbb1a5a269184381b3116d12f0532e06007f4bc8da25669d6a7f8efb68db0758df4cd981f57bc5b57f521a3e12c59e + languageName: node + linkType: hard + +"escape-string-regexp@npm:^1.0.0, escape-string-regexp@npm:^1.0.2, escape-string-regexp@npm:^1.0.5": version: 1.0.5 resolution: "escape-string-regexp@npm:1.0.5" checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 @@ -5415,6 +7794,13 @@ __metadata: languageName: node linkType: hard +"estree-walker@npm:2.0.2, estree-walker@npm:^2.0.1, estree-walker@npm:^2.0.2": + version: 2.0.2 + resolution: "estree-walker@npm:2.0.2" + checksum: 6151e6f9828abe2259e57f5fd3761335bb0d2ebd76dc1a01048ccee22fabcfef3c0859300f6d83ff0d1927849368775ec5a6d265dde2f6de5a1be1721cd94efc + languageName: node + linkType: hard + "estree-walker@npm:^0.6.1": version: 0.6.1 resolution: "estree-walker@npm:0.6.1" @@ -5422,13 +7808,6 @@ __metadata: languageName: node linkType: hard -"estree-walker@npm:^2.0.2": - version: 2.0.2 - resolution: "estree-walker@npm:2.0.2" - checksum: 6151e6f9828abe2259e57f5fd3761335bb0d2ebd76dc1a01048ccee22fabcfef3c0859300f6d83ff0d1927849368775ec5a6d265dde2f6de5a1be1721cd94efc - languageName: node - linkType: hard - "estree-walker@npm:^3.0.0": version: 3.0.1 resolution: "estree-walker@npm:3.0.1" @@ -5436,13 +7815,27 @@ __metadata: languageName: node linkType: hard -"esutils@npm:^2.0.2": +"esutils@npm:^2.0.2, esutils@npm:^2.0.3": version: 2.0.3 resolution: "esutils@npm:2.0.3" checksum: 22b5b08f74737379a840b8ed2036a5fb35826c709ab000683b092d9054e5c2a82c27818f12604bfc2a9a76b90b6834ef081edbc1c7ae30d1627012e067c6ec87 languageName: node linkType: hard +"etag@npm:^1.8.1, etag@npm:~1.8.1": + version: 1.8.1 + resolution: "etag@npm:1.8.1" + checksum: 571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff + languageName: node + linkType: hard + +"eventemitter3@npm:^4.0.0": + version: 4.0.7 + resolution: "eventemitter3@npm:4.0.7" + checksum: 1875311c42fcfe9c707b2712c32664a245629b42bb0a5a84439762dd0fd637fc54d078155ea83c2af9e0323c9ac13687e03cfba79b03af9f40c89b4960099374 + languageName: node + linkType: hard + "execa@npm:^4.0.0": version: 4.1.0 resolution: "execa@npm:4.1.0" @@ -5477,7 +7870,7 @@ __metadata: languageName: node linkType: hard -"execa@npm:^6.1.0": +"execa@npm:^6.0.0": version: 6.1.0 resolution: "execa@npm:6.1.0" dependencies: @@ -5501,6 +7894,21 @@ __metadata: languageName: node linkType: hard +"expand-brackets@npm:^2.1.4": + version: 2.1.4 + resolution: "expand-brackets@npm:2.1.4" + dependencies: + debug: ^2.3.3 + define-property: ^0.2.5 + extend-shallow: ^2.0.1 + posix-character-classes: ^0.1.0 + regex-not: ^1.0.0 + snapdragon: ^0.8.1 + to-regex: ^3.0.1 + checksum: 1781d422e7edfa20009e2abda673cadb040a6037f0bd30fcd7357304f4f0c284afd420d7622722ca4a016f39b6d091841ab57b401c1f7e2e5131ac65b9f14fa1 + languageName: node + linkType: hard + "expand-template@npm:^2.0.3": version: 2.0.3 resolution: "expand-template@npm:2.0.3" @@ -5508,6 +7916,92 @@ __metadata: languageName: node linkType: hard +"express-logging@npm:^1.1.1": + version: 1.1.1 + resolution: "express-logging@npm:1.1.1" + dependencies: + on-headers: ^1.0.0 + checksum: c05851ffcece310791c9f9d50687a527ddbd197595d5e270d2d253a3ee3bc79a79618ac4685608ad321a930fa5c2d2b5c4ef2b3738f91d55c71b38c6da9e4085 + languageName: node + linkType: hard + +"express@npm:^4.17.1": + version: 4.18.2 + resolution: "express@npm:4.18.2" + 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 + checksum: 3c4b9b076879442f6b968fe53d85d9f1eeacbb4f4c41e5f16cc36d77ce39a2b0d81b3f250514982110d815b2f7173f5561367f9110fcc541f9371948e8c8b037 + languageName: node + linkType: hard + +"ext-list@npm:^2.0.0": + version: 2.2.2 + resolution: "ext-list@npm:2.2.2" + dependencies: + mime-db: ^1.28.0 + checksum: 9b2426bea312e674eeced62c5f18407ab9a8653bbdfbde36492331c7973dab7fbf9e11d6c38605786168b42da333910314988097ca06eee61f1b9b57efae3f18 + languageName: node + linkType: hard + +"ext-name@npm:^5.0.0": + version: 5.0.0 + resolution: "ext-name@npm:5.0.0" + dependencies: + ext-list: ^2.0.0 + sort-keys-length: ^1.0.0 + checksum: f598269bd5de4295540ea7d6f8f6a01d82a7508f148b7700a05628ef6121648d26e6e5e942049e953b3051863df6b54bd8fe951e7877f185e34ace5d44370b33 + languageName: node + linkType: hard + +"extend-shallow@npm:^2.0.1": + version: 2.0.1 + resolution: "extend-shallow@npm:2.0.1" + dependencies: + is-extendable: ^0.1.0 + checksum: 8fb58d9d7a511f4baf78d383e637bd7d2e80843bd9cd0853649108ea835208fb614da502a553acc30208e1325240bb7cc4a68473021612496bb89725483656d8 + languageName: node + linkType: hard + +"extend-shallow@npm:^3.0.0, extend-shallow@npm:^3.0.2": + version: 3.0.2 + resolution: "extend-shallow@npm:3.0.2" + dependencies: + assign-symbols: ^1.0.0 + is-extendable: ^1.0.1 + checksum: a920b0cd5838a9995ace31dfd11ab5e79bf6e295aa566910ce53dff19f4b1c0fda2ef21f26b28586c7a2450ca2b42d97bd8c0f5cec9351a819222bf861e02461 + languageName: node + linkType: hard + "extend@npm:^3.0.0, extend@npm:~3.0.2": version: 3.0.2 resolution: "extend@npm:3.0.2" @@ -5515,6 +8009,33 @@ __metadata: languageName: node linkType: hard +"external-editor@npm:^3.0.3": + version: 3.1.0 + resolution: "external-editor@npm:3.1.0" + dependencies: + chardet: ^0.7.0 + iconv-lite: ^0.4.24 + tmp: ^0.0.33 + checksum: 1c2a616a73f1b3435ce04030261bed0e22d4737e14b090bb48e58865da92529c9f2b05b893de650738d55e692d071819b45e1669259b2b354bc3154d27a698c7 + languageName: node + linkType: hard + +"extglob@npm:^2.0.4": + version: 2.0.4 + resolution: "extglob@npm:2.0.4" + dependencies: + array-unique: ^0.3.2 + define-property: ^1.0.0 + expand-brackets: ^2.1.4 + extend-shallow: ^2.0.1 + fragment-cache: ^0.2.1 + regex-not: ^1.0.0 + snapdragon: ^0.8.1 + to-regex: ^3.0.1 + checksum: a41531b8934735b684cef5e8c5a01d0f298d7d384500ceca38793a9ce098125aab04ee73e2d75d5b2901bc5dddd2b64e1b5e3bf19139ea48bac52af4a92f1d00 + languageName: node + linkType: hard + "extract-zip@npm:^2.0.0": version: 2.0.1 resolution: "extract-zip@npm:2.0.1" @@ -5553,7 +8074,35 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.12, fast-glob@npm:^3.2.9": +"fast-diff@npm:^1.2.0": + version: 1.2.0 + resolution: "fast-diff@npm:1.2.0" + checksum: 1b5306eaa9e826564d9e5ffcd6ebd881eb5f770b3f977fcbf38f05c824e42172b53c79920e8429c54eb742ce15a0caf268b0fdd5b38f6de52234c4a8368131ae + languageName: node + linkType: hard + +"fast-equals@npm:^3.0.1": + version: 3.0.3 + resolution: "fast-equals@npm:3.0.3" + checksum: e7ac0ae5a10289c773f75654ced22563837336bde7ebb595b7d238a20b77008a821c1ca3526a50e96fe0662ced7454cf99b7488bb64506463a4f4729c523ac4c + languageName: node + linkType: hard + +"fast-glob@npm:^2.2.6": + version: 2.2.7 + resolution: "fast-glob@npm:2.2.7" + dependencies: + "@mrmlnc/readdir-enhanced": ^2.2.1 + "@nodelib/fs.stat": ^1.1.2 + glob-parent: ^3.1.0 + is-glob: ^4.0.0 + merge2: ^1.2.3 + micromatch: ^3.1.10 + checksum: 304ccff1d437fcc44ae0168b0c3899054b92e0fd6af6ad7c3ccc82ab4ddd210b99c7c739d60ee3686da2aa165cd1a31810b31fd91f7c2a575d297342a9fc0534 + languageName: node + linkType: hard + +"fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.12, fast-glob@npm:^3.2.9": version: 3.2.12 resolution: "fast-glob@npm:3.2.12" dependencies: @@ -5580,6 +8129,13 @@ __metadata: languageName: node linkType: hard +"fast-safe-stringify@npm:^2.0.7, fast-safe-stringify@npm:^2.1.1": + version: 2.1.1 + resolution: "fast-safe-stringify@npm:2.1.1" + checksum: a851cbddc451745662f8f00ddb622d6766f9bd97642dabfd9a405fb0d646d69fc0b9a1243cbf67f5f18a39f40f6fa821737651ff1bceeba06c9992ca2dc5bd3d + languageName: node + linkType: hard + "fast-xml-parser@npm:4.0.11": version: 4.0.11 resolution: "fast-xml-parser@npm:4.0.11" @@ -5609,6 +8165,13 @@ __metadata: languageName: node linkType: hard +"fecha@npm:^4.2.0": + version: 4.2.3 + resolution: "fecha@npm:4.2.3" + checksum: f94e2fb3acf5a7754165d04549460d3ae6c34830394d20c552197e3e000035d69732d74af04b9bed3283bf29fe2a9ebdcc0085e640b0be3cc3658b9726265e31 + languageName: node + linkType: hard + "fetch-blob@npm:^3.1.2, fetch-blob@npm:^3.1.4": version: 3.2.0 resolution: "fetch-blob@npm:3.2.0" @@ -5619,7 +8182,40 @@ __metadata: languageName: node linkType: hard -"figures@npm:^3.1.0": +"fetch-node-website@npm:^5.0.3": + version: 5.0.3 + resolution: "fetch-node-website@npm:5.0.3" + dependencies: + chalk: ^4.0.0 + cli-progress: ^3.7.0 + figures: ^3.2.0 + filter-obj: ^2.0.1 + got: ^10.7.0 + jest-validate: ^25.3.0 + checksum: b15a7e191729a0734ace77e9d02b3094404e6db7dc2e94bfe116276ec33d6eaa1ebbaa09d1253f7df1f6c4040c40e8cba850568b4cf31af03e7d1bec6043a81d + languageName: node + linkType: hard + +"figures@npm:^1.7.0": + version: 1.7.0 + resolution: "figures@npm:1.7.0" + dependencies: + escape-string-regexp: ^1.0.5 + object-assign: ^4.1.0 + checksum: d77206deba991a7977f864b8c8edf9b8b43b441be005482db04b0526e36263adbdb22c1c6d2df15a1ad78d12029bd1aa41ccebcb5d425e1f2cf629c6daaa8e10 + languageName: node + linkType: hard + +"figures@npm:^2.0.0": + version: 2.0.0 + resolution: "figures@npm:2.0.0" + dependencies: + escape-string-regexp: ^1.0.5 + checksum: 081beb16ea57d1716f8447c694f637668322398b57017b20929376aaf5def9823b35245b734cdd87e4832dc96e9c6f46274833cada77bfe15e5f980fea1fd21f + languageName: node + linkType: hard + +"figures@npm:^3.1.0, figures@npm:^3.2.0": version: 3.2.0 resolution: "figures@npm:3.2.0" dependencies: @@ -5628,6 +8224,16 @@ __metadata: languageName: node linkType: hard +"figures@npm:^4.0.0": + version: 4.0.1 + resolution: "figures@npm:4.0.1" + dependencies: + escape-string-regexp: ^5.0.0 + is-unicode-supported: ^1.2.0 + checksum: 08564c70ec6be8dbd26e24e4f35bacb8d9beb729b3b7faa9cd7ad54f5232b7f9a39f788a847ec45677664d568c86323001d1042482d089c0d0f311e197ad1148 + languageName: node + linkType: hard + "file-entry-cache@npm:^6.0.1": version: 6.0.1 resolution: "file-entry-cache@npm:6.0.1" @@ -5637,13 +8243,85 @@ __metadata: languageName: node linkType: hard -"file-type@npm:^3.1.0": +"file-size@npm:0.0.5": + version: 0.0.5 + resolution: "file-size@npm:0.0.5" + checksum: 404ab62bac816c4b903fdeee0ab677722d14f99641d7b7188938bd7d595fe4634181cb6681ad8de6dd4f9e1087f63730d5447e4e7589497095b28078cbc91700 + languageName: node + linkType: hard + +"file-type@npm:^11.1.0": + version: 11.1.0 + resolution: "file-type@npm:11.1.0" + checksum: 66c2086867291fda760a245534bec1fbf12817dc6fd3426c2b41f29a37c71bb61f1091505c98f03a446703321cc1d4a8e873ce631f5763fc53178645d9eb3f85 + languageName: node + linkType: hard + +"file-type@npm:^3.1.0, file-type@npm:^3.8.0": version: 3.9.0 resolution: "file-type@npm:3.9.0" checksum: 1db70b2485ac77c4edb4b8753c1874ee6194123533f43c2651820f96b518f505fa570b093fedd6672eb105ba9fb89c62f84b6492e46788e39c3447aed37afa2d languageName: node linkType: hard +"file-type@npm:^4.2.0": + version: 4.4.0 + resolution: "file-type@npm:4.4.0" + checksum: f3e0b38bef643a330b3d98e3aa9d6f0f32d2d80cb9341f5612187bd53ac84489a4dc66b354bd0cff6b60bff053c7ef21eb8923d62e9f1196ac627b63bd7875ef + languageName: node + linkType: hard + +"file-type@npm:^5.2.0": + version: 5.2.0 + resolution: "file-type@npm:5.2.0" + checksum: b2b21c7fc3cfb3c6a3a18b0d5d7233b74d8c17d82757655766573951daf42962a5c809e5fc3637675b237c558ebc67e4958fb2cc5a4ad407bc545aaa40001c74 + languageName: node + linkType: hard + +"file-type@npm:^6.1.0": + version: 6.2.0 + resolution: "file-type@npm:6.2.0" + checksum: 749540cefcd4959121eb83e373ed84e49b2e5a510aa5d598b725bd772dd306ae41fd00d3162ae3f6563b4db5cfafbbd0df321de3f20c17e20a8c56431ae55e58 + languageName: node + linkType: hard + +"file-uri-to-path@npm:1.0.0": + version: 1.0.0 + resolution: "file-uri-to-path@npm:1.0.0" + checksum: b648580bdd893a008c92c7ecc96c3ee57a5e7b6c4c18a9a09b44fb5d36d79146f8e442578bc0e173dc027adf3987e254ba1dfd6e3ec998b7c282873010502144 + languageName: node + linkType: hard + +"filename-reserved-regex@npm:^2.0.0": + version: 2.0.0 + resolution: "filename-reserved-regex@npm:2.0.0" + checksum: 323a0020fd7f243238ffccab9d728cbc5f3a13c84b2c10e01efb09b8324561d7a51776be76f36603c734d4f69145c39a5d12492bf6142a28b50d7f90bd6190bc + languageName: node + linkType: hard + +"filenamify@npm:^3.0.0": + version: 3.0.0 + resolution: "filenamify@npm:3.0.0" + dependencies: + filename-reserved-regex: ^2.0.0 + strip-outer: ^1.0.0 + trim-repeated: ^1.0.0 + checksum: d419eaa1b8c331ab8616e1fffe33e4af135c60b5364320bbe015bc93ded89c6c301363f69593991de18a8f9dd278324c0a0d89fd554c30250306f4c16c956673 + languageName: node + linkType: hard + +"fill-range@npm:^4.0.0": + version: 4.0.0 + resolution: "fill-range@npm:4.0.0" + dependencies: + extend-shallow: ^2.0.1 + is-number: ^3.0.0 + repeat-string: ^1.6.1 + to-regex-range: ^2.1.0 + checksum: dbb5102467786ab42bc7a3ec7380ae5d6bfd1b5177b2216de89e4a541193f8ba599a6db84651bd2c58c8921db41b8cc3d699ea83b477342d3ce404020f73c298 + languageName: node + linkType: hard + "fill-range@npm:^7.0.1": version: 7.0.1 resolution: "fill-range@npm:7.0.1" @@ -5653,6 +8331,42 @@ __metadata: languageName: node linkType: hard +"filter-obj@npm:^2.0.1": + version: 2.0.2 + resolution: "filter-obj@npm:2.0.2" + checksum: e0d71ebc89515a4305db5158aeb78c9f9a4bfef4bacf272e7de8cadf0d3b694191f6fdbd3b507ee330c266c4287f21804defa8c80693d8c6ad60f1cbfad4f477 + languageName: node + linkType: hard + +"filter-obj@npm:^3.0.0": + version: 3.0.0 + resolution: "filter-obj@npm:3.0.0" + checksum: 93bee3cecc2bbd87cb9d786c4ba2ea36fbad5d237aec991deed419dcc892020dd46d0a77c982224ef45d922b1573c77be1588274b9d524c7389ccf8d1a91c330 + languageName: node + linkType: hard + +"filter-obj@npm:^5.0.0": + version: 5.1.0 + resolution: "filter-obj@npm:5.1.0" + checksum: ba7c24d9b2c0552ee87d268e07eca74483af61fb740545ffa809f7e9e5294de38cf163ecc55af0e8a40020af9a49512c32f4022de2a858b110420fc8bffa7c9c + languageName: node + linkType: hard + +"finalhandler@npm:1.2.0": + version: 1.2.0 + resolution: "finalhandler@npm:1.2.0" + 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 + checksum: 92effbfd32e22a7dff2994acedbd9bcc3aa646a3e919ea6a53238090e87097f8ef07cced90aa2cc421abdf993aefbdd5b00104d55c7c5479a8d00ed105b45716 + languageName: node + linkType: hard + "find-up@npm:^2.0.0": version: 2.1.0 resolution: "find-up@npm:2.1.0" @@ -5691,6 +8405,16 @@ __metadata: languageName: node linkType: hard +"find-up@npm:^6.0.0, find-up@npm:^6.1.0, find-up@npm:^6.3.0": + version: 6.3.0 + resolution: "find-up@npm:6.3.0" + dependencies: + locate-path: ^7.1.0 + path-exists: ^5.0.0 + checksum: 9a21b7f9244a420e54c6df95b4f6fc3941efd3c3e5476f8274eb452f6a85706e7a6a90de71353ee4f091fcb4593271a6f92810a324ec542650398f928783c280 + languageName: node + linkType: hard + "flat-cache@npm:^3.0.4": version: 3.0.4 resolution: "flat-cache@npm:3.0.4" @@ -5708,6 +8432,42 @@ __metadata: languageName: node linkType: hard +"flush-write-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "flush-write-stream@npm:2.0.0" + dependencies: + inherits: ^2.0.3 + readable-stream: ^3.1.1 + checksum: 726c1fb978444165bd3570d06fa84b610998f9ea0f6a891219f90a80f7ffe4029671e1e2d864bd3a40334e6484531c58123c30f736558ed3e8c8059dba11d04b + languageName: node + linkType: hard + +"fn.name@npm:1.x.x": + version: 1.1.0 + resolution: "fn.name@npm:1.1.0" + checksum: e357144f48cfc9a7f52a82bbc6c23df7c8de639fce049cac41d41d62cabb740cdb9f14eddc6485e29c933104455bdd7a69bb14a9012cef9cd4fa252a4d0cf293 + languageName: node + linkType: hard + +"folder-walker@npm:^3.2.0": + version: 3.2.0 + resolution: "folder-walker@npm:3.2.0" + dependencies: + from2: ^2.1.0 + checksum: 140097d7fc6027d972e20d9a0ed383d8a49b3e9c1ca8ee3f4809861828ddcf138d3f8efca942631d28fe3824697128de7dcc24d704d69c44cdcc16be99886dd1 + languageName: node + linkType: hard + +"follow-redirects@npm:^1.0.0": + version: 1.15.2 + resolution: "follow-redirects@npm:1.15.2" + peerDependenciesMeta: + debug: + optional: true + checksum: faa66059b66358ba65c234c2f2a37fcec029dc22775f35d9ad6abac56003268baf41e55f9ee645957b32c7d9f62baf1f0b906e68267276f54ec4b4c597c2b190 + languageName: node + linkType: hard + "font-family-papandreou@npm:^0.2.0-patch1": version: 0.2.0-patch2 resolution: "font-family-papandreou@npm:0.2.0-patch2" @@ -5777,6 +8537,13 @@ __metadata: languageName: node linkType: hard +"for-in@npm:^1.0.2": + version: 1.0.2 + resolution: "for-in@npm:1.0.2" + checksum: 09f4ae93ce785d253ac963d94c7f3432d89398bf25ac7a24ed034ca393bf74380bdeccc40e0f2d721a895e54211b07c8fad7132e8157827f6f7f059b70b4043d + languageName: node + linkType: hard + "foreground-child@npm:^2.0.0": version: 2.0.0 resolution: "foreground-child@npm:2.0.0" @@ -5794,6 +8561,13 @@ __metadata: languageName: node linkType: hard +"form-data-encoder@npm:^2.1.2": + version: 2.1.4 + resolution: "form-data-encoder@npm:2.1.4" + checksum: e0b3e5950fb69b3f32c273944620f9861f1933df9d3e42066e038e26dfb343d0f4465de9f27e0ead1a09d9df20bc2eed06a63c2ca2f8f00949e7202bae9e29dd + languageName: node + linkType: hard + "form-data@npm:2.1.4": version: 2.1.4 resolution: "form-data@npm:2.1.4" @@ -5805,6 +8579,17 @@ __metadata: languageName: node linkType: hard +"form-data@npm:^2.5.0": + version: 2.5.1 + resolution: "form-data@npm:2.5.1" + dependencies: + asynckit: ^0.4.0 + combined-stream: ^1.0.6 + mime-types: ^2.1.12 + checksum: 5134ada56cc246b293a1ac7678dba6830000603a3979cf83ff7b2f21f2e3725202237cfb89e32bcb38a1d35727efbd3c3a22e65b42321e8ade8eec01ce755d08 + languageName: node + linkType: hard + "form-data@npm:^3.0.0": version: 3.0.1 resolution: "form-data@npm:3.0.1" @@ -5836,6 +8621,13 @@ __metadata: languageName: node linkType: hard +"forwarded@npm:0.2.0": + version: 0.2.0 + resolution: "forwarded@npm:0.2.0" + checksum: fd27e2394d8887ebd16a66ffc889dc983fbbd797d5d3f01087c020283c0f019a7d05ee85669383d8e0d216b116d720fc0cef2f6e9b7eb9f4c90c6e0bc7fd28e6 + languageName: node + linkType: hard + "fraction.js@npm:^4.2.0": version: 4.2.0 resolution: "fraction.js@npm:4.2.0" @@ -5843,6 +8635,41 @@ __metadata: languageName: node linkType: hard +"fragment-cache@npm:^0.2.1": + version: 0.2.1 + resolution: "fragment-cache@npm:0.2.1" + dependencies: + map-cache: ^0.2.2 + checksum: 1cbbd0b0116b67d5790175de0038a11df23c1cd2e8dcdbade58ebba5594c2d641dade6b4f126d82a7b4a6ffc2ea12e3d387dbb64ea2ae97cf02847d436f60fdc + 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 + +"from2-array@npm:^0.0.4": + version: 0.0.4 + resolution: "from2-array@npm:0.0.4" + dependencies: + from2: ^2.0.3 + checksum: 53eba6ab904272954245508f9e1a51fa84a686117a433176a074b8574533edec3cdf880f0e07a3d8ae23bf2b153ec07088b2c774131166e70ff84c4d6aab3550 + languageName: node + linkType: hard + +"from2@npm:^2.0.3, from2@npm:^2.1.0, from2@npm:^2.1.1": + version: 2.3.0 + resolution: "from2@npm:2.3.0" + dependencies: + inherits: ^2.0.1 + readable-stream: ^2.0.0 + checksum: 6080eba0793dce32f475141fb3d54cc15f84ee52e420ee22ac3ab0ad639dc95a1875bc6eb9c0e1140e94972a36a89dc5542491b85f1ab8df0c126241e0f1a61b + languageName: node + linkType: hard + "fs-constants@npm:^1.0.0": version: 1.0.0 resolution: "fs-constants@npm:1.0.0" @@ -5850,7 +8677,7 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^10.0.0": +"fs-extra@npm:^10.0.0, fs-extra@npm:^10.1.0": version: 10.1.0 resolution: "fs-extra@npm:10.1.0" dependencies: @@ -5955,6 +8782,13 @@ __metadata: languageName: node linkType: hard +"fuzzy@npm:^0.1.3": + version: 0.1.3 + resolution: "fuzzy@npm:0.1.3" + checksum: acc09c6173e12d5dc8ae51857551ddbe834befa9ebc6be6d5581d09117265d704809d80407d220fd0652f347a9975a4d106854cacc8bd031487a0ede86982f84 + languageName: node + linkType: hard + "gather-stream@npm:^1.0.0": version: 1.0.0 resolution: "gather-stream@npm:1.0.0" @@ -5962,6 +8796,23 @@ __metadata: languageName: node linkType: hard +"gauge@npm:^3.0.0": + version: 3.0.2 + resolution: "gauge@npm:3.0.2" + dependencies: + aproba: ^1.0.3 || ^2.0.0 + color-support: ^1.1.2 + console-control-strings: ^1.0.0 + has-unicode: ^2.0.1 + object-assign: ^4.1.1 + signal-exit: ^3.0.0 + string-width: ^4.2.3 + strip-ansi: ^6.0.1 + wide-align: ^1.1.2 + checksum: 81296c00c7410cdd48f997800155fbead4f32e4f82109be0719c63edc8560e6579946cc8abd04205297640691ec26d21b578837fd13a4e96288ab4b40b1dc3e9 + languageName: node + linkType: hard + "gauge@npm:^4.0.3": version: 4.0.4 resolution: "gauge@npm:4.0.4" @@ -5987,6 +8838,16 @@ __metadata: languageName: node linkType: hard +"get-amd-module-type@npm:^4.0.0": + version: 4.0.0 + resolution: "get-amd-module-type@npm:4.0.0" + dependencies: + ast-module-types: ^3.0.0 + node-source-walk: ^5.0.0 + checksum: 8d26291d4b46c80f2ffc93492ae2ad036c7f3511f82131288612bf6b66bc3836852e7bab9b84822a0816781f85e49048cdceee7b28da920494335951108bb3a9 + languageName: node + linkType: hard + "get-caller-file@npm:^2.0.1, get-caller-file@npm:^2.0.5": version: 2.0.5 resolution: "get-caller-file@npm:2.0.5" @@ -6026,6 +8887,46 @@ __metadata: languageName: node linkType: hard +"get-port@npm:^5.1.0": + version: 5.1.1 + resolution: "get-port@npm:5.1.1" + checksum: 0162663ffe5c09e748cd79d97b74cd70e5a5c84b760a475ce5767b357fb2a57cb821cee412d646aa8a156ed39b78aab88974eddaa9e5ee926173c036c0713787 + languageName: node + linkType: hard + +"get-port@npm:^6.1.2": + version: 6.1.2 + resolution: "get-port@npm:6.1.2" + checksum: e3c3d591492a11393455ef220f24c812a28f7da56ec3e4a2512d931a1f196d42850b50ac6138349a44622eda6dc3c0ccd8495cd91376d968e2d9e6f6f849e0a9 + languageName: node + linkType: hard + +"get-stream@npm:3.0.0, get-stream@npm:^3.0.0": + version: 3.0.0 + resolution: "get-stream@npm:3.0.0" + checksum: 36142f46005ed74ce3a45c55545ec4e7da8e243554179e345a786baf144e5c4a35fb7bdc49fadfa9f18bd08000589b6fe364abdadfc4e1eb0e1b9914a6bb9c56 + languageName: node + linkType: hard + +"get-stream@npm:^2.2.0": + version: 2.3.1 + resolution: "get-stream@npm:2.3.1" + dependencies: + object-assign: ^4.0.1 + pinkie-promise: ^2.0.0 + checksum: d82c86556e131ba7bef00233aa0aa7a51230e6deac11a971ce0f47cd43e2a5e968a3e3914cd082f07cd0d69425653b2f96735b0a7d5c5c03fef3ab857a531367 + languageName: node + linkType: hard + +"get-stream@npm:^4.1.0": + version: 4.1.0 + resolution: "get-stream@npm:4.1.0" + dependencies: + pump: ^3.0.0 + checksum: 443e1914170c15bd52ff8ea6eff6dfc6d712b031303e36302d2778e3de2506af9ee964d6124010f7818736dcfde05c04ba7ca6cc26883106e084357a17ae7d73 + languageName: node + linkType: hard + "get-stream@npm:^5.0.0, get-stream@npm:^5.1.0": version: 5.2.0 resolution: "get-stream@npm:5.2.0" @@ -6052,6 +8953,13 @@ __metadata: languageName: node linkType: hard +"get-value@npm:^2.0.3, get-value@npm:^2.0.6": + version: 2.0.6 + resolution: "get-value@npm:2.0.6" + checksum: 5c3b99cb5398ea8016bf46ff17afc5d1d286874d2ad38ca5edb6e87d75c0965b0094cb9a9dddef2c59c23d250702323539a7fbdd870620db38c7e7d7ec87c1eb + languageName: node + linkType: hard + "getpass@npm:^0.1.1": version: 0.1.7 resolution: "getpass@npm:0.1.7" @@ -6068,6 +8976,20 @@ __metadata: languageName: node linkType: hard +"gh-release-fetch@npm:^3.0.0": + version: 3.0.2 + resolution: "gh-release-fetch@npm:3.0.2" + dependencies: + "@types/download": ^8.0.0 + "@types/node-fetch": ^2.1.6 + "@types/semver": ^7.0.0 + download: ^8.0.0 + node-fetch: ^2.3.0 + semver: ^7.0.0 + checksum: 71095d1445b5bab7e066e38405119e69282e6a2c6c9c8fb8b88c3214b29d0ea20fd482a8a036d840f2a6a151c8e4517b64db30884dfc32cbdb26e2354c681518 + languageName: node + linkType: hard + "git-cz@npm:^4.9.0": version: 4.9.0 resolution: "git-cz@npm:4.9.0" @@ -6103,6 +9025,13 @@ __metadata: languageName: node linkType: hard +"git-repo-info@npm:^2.1.0": + version: 2.1.1 + resolution: "git-repo-info@npm:2.1.1" + checksum: 58cedacae81bbe8fedc81d226346c472d11357d1758140ab0ee5d0c3360ad5b7a9d8613ca6e8b50d089d073e5b3f2e2893536d0cb57bced5f558dc913d5e21c6 + languageName: node + linkType: hard + "git-semver-tags@npm:^4.0.0, git-semver-tags@npm:^4.1.1": version: 4.1.1 resolution: "git-semver-tags@npm:4.1.1" @@ -6124,6 +9053,15 @@ __metadata: languageName: node linkType: hard +"gitconfiglocal@npm:^2.1.0": + version: 2.1.0 + resolution: "gitconfiglocal@npm:2.1.0" + dependencies: + ini: ^1.3.2 + checksum: 4b4b44d992a6abf2900eec8cfe960dc36e0d3c2467d20ec69e0a0f13b6b7645b926daa004df42f94c34ad28a58529cf2522fa0bf261e4e7b95958fb451dcedda + languageName: node + linkType: hard + "github-from-package@npm:0.0.0": version: 0.0.0 resolution: "github-from-package@npm:0.0.0" @@ -6131,6 +9069,16 @@ __metadata: languageName: node linkType: hard +"glob-parent@npm:^3.1.0": + version: 3.1.0 + resolution: "glob-parent@npm:3.1.0" + dependencies: + is-glob: ^3.1.0 + path-dirname: ^1.0.0 + checksum: 653d559237e89a11b9934bef3f392ec42335602034c928590544d383ff5ef449f7b12f3cfa539708e74bc0a6c28ab1fe51d663cc07463cdf899ba92afd85a855 + languageName: node + linkType: hard + "glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" @@ -6156,6 +9104,20 @@ __metadata: languageName: node linkType: hard +"glob-to-regexp@npm:^0.3.0": + version: 0.3.0 + resolution: "glob-to-regexp@npm:0.3.0" + checksum: d34b3219d860042d508c4893b67617cd16e2668827e445ff39cff9f72ef70361d3dc24f429e003cdfb6607c75c9664b8eadc41d2eeb95690af0b0d3113c1b23b + languageName: node + linkType: hard + +"glob-to-regexp@npm:^0.4.1": + version: 0.4.1 + resolution: "glob-to-regexp@npm:0.4.1" + checksum: e795f4e8f06d2a15e86f76e4d92751cf8bbfcf0157cea5c2f0f35678a8195a750b34096b1256e436f0cebc1883b5ff0888c47348443e69546a5a87f9e1eb1167 + languageName: node + linkType: hard + "glob@npm:7.1.6": version: 7.1.6 resolution: "glob@npm:7.1.6" @@ -6197,6 +9159,16 @@ __metadata: languageName: node linkType: hard +"global-cache-dir@npm:^2.0.0": + version: 2.0.0 + resolution: "global-cache-dir@npm:2.0.0" + dependencies: + cachedir: ^2.3.0 + path-exists: ^4.0.0 + checksum: 410b4905d86cba8e4f281fba3f43e47159bcf7158b62fc8a002f297af6d0dc3724332178d24ad90206400d4ea77cdb550a28e5060aec1a5f82941fdb164eac43 + languageName: node + linkType: hard + "global-dirs@npm:^0.1.1": version: 0.1.1 resolution: "global-dirs@npm:0.1.1" @@ -6206,6 +9178,15 @@ __metadata: languageName: node linkType: hard +"global-dirs@npm:^3.0.0": + version: 3.0.1 + resolution: "global-dirs@npm:3.0.1" + dependencies: + ini: 2.0.0 + checksum: 70147b80261601fd40ac02a104581432325c1c47329706acd773f3a6ce99bb36d1d996038c85ccacd482ad22258ec233c586b6a91535b1a116b89663d49d6438 + languageName: node + linkType: hard + "global@npm:~4.4.0": version: 4.4.0 resolution: "global@npm:4.4.0" @@ -6241,7 +9222,7 @@ __metadata: languageName: node linkType: hard -"globby@npm:^11.1.0": +"globby@npm:^11.0.1, globby@npm:^11.1.0": version: 11.1.0 resolution: "globby@npm:11.1.0" dependencies: @@ -6255,6 +9236,35 @@ __metadata: languageName: node linkType: hard +"globby@npm:^13.0.0, globby@npm:^13.1.2": + version: 13.1.3 + resolution: "globby@npm:13.1.3" + dependencies: + dir-glob: ^3.0.1 + fast-glob: ^3.2.11 + ignore: ^5.2.0 + merge2: ^1.4.1 + slash: ^4.0.0 + checksum: 93f06e02002cdf368f7e3d55bd59e7b00784c7cc8fe92c7ee5082cc7171ff6109fda45e1c97a80bb48bc811dedaf7843c7c9186f5f84bde4883ab630e13c43df + languageName: node + linkType: hard + +"globby@npm:^9.2.0": + version: 9.2.0 + resolution: "globby@npm:9.2.0" + dependencies: + "@types/glob": ^7.1.1 + array-union: ^1.0.2 + dir-glob: ^2.2.2 + fast-glob: ^2.2.6 + glob: ^7.1.3 + ignore: ^4.0.3 + pify: ^4.0.1 + slash: ^2.0.0 + checksum: 9b4cb70aa0b43bf89b18cf0e543695185e16d8dd99c17bdc6a1df0a9f88ff9dc8d2467aebace54c3842fc451a564882948c87a3b4fbdb1cacf3e05fd54b6ac5d + languageName: node + linkType: hard + "globrex@npm:^0.1.2": version: 0.1.2 resolution: "globrex@npm:0.1.2" @@ -6262,6 +9272,17 @@ __metadata: languageName: node linkType: hard +"gonzales-pe@npm:^4.2.3, gonzales-pe@npm:^4.3.0": + version: 4.3.0 + resolution: "gonzales-pe@npm:4.3.0" + dependencies: + minimist: ^1.2.5 + bin: + gonzales: bin/gonzales.js + checksum: 49d60fc49ad35639e5d55923c1516d3ec2e4de5e6e5913ec3458a479b66623e54a060d568295349b0bb9f96ee970c473ff984d4b82a5cfeaf736c55f0d6dc3b7 + languageName: node + linkType: hard + "gopd@npm:^1.0.1": version: 1.0.1 resolution: "gopd@npm:1.0.1" @@ -6271,7 +9292,93 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.6": +"got@npm:^10.0.0, got@npm:^10.7.0": + version: 10.7.0 + resolution: "got@npm:10.7.0" + dependencies: + "@sindresorhus/is": ^2.0.0 + "@szmarczak/http-timer": ^4.0.0 + "@types/cacheable-request": ^6.0.1 + cacheable-lookup: ^2.0.0 + cacheable-request: ^7.0.1 + decompress-response: ^5.0.0 + duplexer3: ^0.1.4 + get-stream: ^5.0.0 + lowercase-keys: ^2.0.0 + mimic-response: ^2.1.0 + p-cancelable: ^2.0.0 + p-event: ^4.0.0 + responselike: ^2.0.0 + to-readable-stream: ^2.0.0 + type-fest: ^0.10.0 + checksum: 66feaec071b2dac412bfff3786a67d144a4bf615115ef70ac7e1db1e2a640bd02dcfbc60c55de11c8ee00f069df06f1de9d462446e56b09e4ade332ca2db7cd0 + languageName: node + linkType: hard + +"got@npm:^12.1.0": + version: 12.5.3 + resolution: "got@npm:12.5.3" + dependencies: + "@sindresorhus/is": ^5.2.0 + "@szmarczak/http-timer": ^5.0.1 + cacheable-lookup: ^7.0.0 + cacheable-request: ^10.2.1 + decompress-response: ^6.0.0 + form-data-encoder: ^2.1.2 + get-stream: ^6.0.1 + http2-wrapper: ^2.1.10 + lowercase-keys: ^3.0.0 + p-cancelable: ^3.0.0 + responselike: ^3.0.0 + checksum: e35ea3ccdb5f2c36d0bb9648a6a87300d017900ce2e647ad95f54a6fb674a82fe7d53b2c838542d15a9fa25290cc5361d6f82cadac3e94b2e91d93b5670cf304 + languageName: node + linkType: hard + +"got@npm:^8.3.1": + version: 8.3.2 + resolution: "got@npm:8.3.2" + dependencies: + "@sindresorhus/is": ^0.7.0 + cacheable-request: ^2.1.1 + decompress-response: ^3.3.0 + duplexer3: ^0.1.4 + get-stream: ^3.0.0 + into-stream: ^3.1.0 + is-retry-allowed: ^1.1.0 + isurl: ^1.0.0-alpha5 + lowercase-keys: ^1.0.0 + mimic-response: ^1.0.0 + p-cancelable: ^0.4.0 + p-timeout: ^2.0.1 + pify: ^3.0.0 + safe-buffer: ^5.1.1 + timed-out: ^4.0.1 + url-parse-lax: ^3.0.0 + url-to-options: ^1.0.1 + checksum: ab05bfcb6de86dc0c3fba8d25cc51cb2b09851ff3f6f899c86cde8c63b30269f8823d69dbbc6d03f7c58bb069f55a3c5f60aba74aad6721938652d8f35fd3165 + languageName: node + linkType: hard + +"got@npm:^9.6.0": + version: 9.6.0 + resolution: "got@npm:9.6.0" + dependencies: + "@sindresorhus/is": ^0.14.0 + "@szmarczak/http-timer": ^1.1.2 + cacheable-request: ^6.0.0 + decompress-response: ^3.3.0 + duplexer3: ^0.1.4 + get-stream: ^4.1.0 + lowercase-keys: ^1.0.1 + mimic-response: ^1.0.1 + p-cancelable: ^1.0.0 + to-readable-stream: ^1.0.0 + url-parse-lax: ^3.0.0 + checksum: 941807bd9704bacf5eb401f0cc1212ffa1f67c6642f2d028fd75900471c221b1da2b8527f4553d2558f3faeda62ea1cf31665f8b002c6137f5de8732f07370b0 + languageName: node + linkType: hard + +"graceful-fs@npm:4.2.10, graceful-fs@npm:^4.1.10, graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.3, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.10, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.10 resolution: "graceful-fs@npm:4.2.10" checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da @@ -6285,6 +9392,13 @@ __metadata: languageName: node linkType: hard +"graphql@npm:16.5.0": + version: 16.5.0 + resolution: "graphql@npm:16.5.0" + checksum: a82a926d085818934d04fdf303a269af170e79de943678bd2726370a96194f9454ade9d6d76c2de69afbd7b9f0b4f8061619baecbbddbe82125860e675ac219e + languageName: node + linkType: hard + "handlebars@npm:^4.7.7": version: 4.7.7 resolution: "handlebars@npm:4.7.7" @@ -6334,6 +9448,26 @@ __metadata: languageName: node linkType: hard +"has-ansi@npm:^0.1.0": + version: 0.1.0 + resolution: "has-ansi@npm:0.1.0" + dependencies: + ansi-regex: ^0.2.0 + bin: + has-ansi: cli.js + checksum: 8eb68a066bb42460f7065432c14af40050c458eed3ac8329421990dbf5e2dd804a98b2e763013fdbb7f7049105f6c6806e7e90d7ac6caa337c3275574ce42d06 + languageName: node + linkType: hard + +"has-ansi@npm:^2.0.0": + version: 2.0.0 + resolution: "has-ansi@npm:2.0.0" + dependencies: + ansi-regex: ^2.0.0 + checksum: 1b51daa0214440db171ff359d0a2d17bc20061164c57e76234f614c91dbd2a79ddd68dfc8ee73629366f7be45a6df5f2ea9de83f52e1ca24433f2cc78c35d8ec + languageName: node + linkType: hard + "has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": version: 1.0.2 resolution: "has-bigints@npm:1.0.2" @@ -6355,6 +9489,15 @@ __metadata: languageName: node linkType: hard +"has-glob@npm:^1.0.0": + version: 1.0.0 + resolution: "has-glob@npm:1.0.0" + dependencies: + is-glob: ^3.0.0 + checksum: cafad93e599f49f676a9ab444ec90210fcda35ac14ad6c9bb96c08057ad18a1318f1116b053aa6bdc744f19252537006872d3fc76785e842bbe8cc4312447fc8 + languageName: node + linkType: hard + "has-property-descriptors@npm:^1.0.0": version: 1.0.0 resolution: "has-property-descriptors@npm:1.0.0" @@ -6364,6 +9507,13 @@ __metadata: languageName: node linkType: hard +"has-symbol-support-x@npm:^1.4.1": + version: 1.4.2 + resolution: "has-symbol-support-x@npm:1.4.2" + checksum: ff06631d556d897424c00e8e79c10093ad34c93e88bb0563932d7837f148a4c90a4377abc5d8da000cb6637c0ecdb4acc9ae836c7cfd0ffc919986db32097609 + languageName: node + linkType: hard + "has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": version: 1.0.3 resolution: "has-symbols@npm:1.0.3" @@ -6371,6 +9521,15 @@ __metadata: languageName: node linkType: hard +"has-to-string-tag-x@npm:^1.2.0": + version: 1.4.1 + resolution: "has-to-string-tag-x@npm:1.4.1" + dependencies: + has-symbol-support-x: ^1.4.1 + checksum: 804c4505727be7770f8b2f5e727ce31c9affc5b83df4ce12344f44b68d557fefb31f77751dbd739de900653126bcd71f8842fac06f97a3fae5422685ab0ce6f0 + languageName: node + linkType: hard + "has-tostringtag@npm:^1.0.0": version: 1.0.0 resolution: "has-tostringtag@npm:1.0.0" @@ -6387,6 +9546,59 @@ __metadata: languageName: node linkType: hard +"has-value@npm:^0.3.1": + version: 0.3.1 + resolution: "has-value@npm:0.3.1" + dependencies: + get-value: ^2.0.3 + has-values: ^0.1.4 + isobject: ^2.0.0 + checksum: 29e2a1e6571dad83451b769c7ce032fce6009f65bccace07c2962d3ad4d5530b6743d8f3229e4ecf3ea8e905d23a752c5f7089100c1f3162039fa6dc3976558f + languageName: node + linkType: hard + +"has-value@npm:^1.0.0": + version: 1.0.0 + resolution: "has-value@npm:1.0.0" + dependencies: + get-value: ^2.0.6 + has-values: ^1.0.0 + isobject: ^3.0.0 + checksum: b9421d354e44f03d3272ac39fd49f804f19bc1e4fa3ceef7745df43d6b402053f828445c03226b21d7d934a21ac9cf4bc569396dc312f496ddff873197bbd847 + languageName: node + linkType: hard + +"has-values@npm:^0.1.4": + version: 0.1.4 + resolution: "has-values@npm:0.1.4" + checksum: ab1c4bcaf811ccd1856c11cfe90e62fca9e2b026ebe474233a3d282d8d67e3b59ed85b622c7673bac3db198cb98bd1da2b39300a2f98e453729b115350af49bc + languageName: node + linkType: hard + +"has-values@npm:^1.0.0": + version: 1.0.0 + resolution: "has-values@npm:1.0.0" + dependencies: + is-number: ^3.0.0 + kind-of: ^4.0.0 + checksum: 77e6693f732b5e4cf6c38dfe85fdcefad0fab011af74995c3e83863fabf5e3a836f406d83565816baa0bc0a523c9410db8b990fe977074d61aeb6d8f4fcffa11 + languageName: node + linkType: hard + +"has-yarn@npm:^2.1.0": + version: 2.1.0 + resolution: "has-yarn@npm:2.1.0" + checksum: 5eb1d0bb8518103d7da24532bdbc7124ffc6d367b5d3c10840b508116f2f1bcbcf10fd3ba843ff6e2e991bdf9969fd862d42b2ed58aade88343326c950b7e7f7 + languageName: node + linkType: hard + +"has-yarn@npm:^3.0.0": + version: 3.0.0 + resolution: "has-yarn@npm:3.0.0" + checksum: b9e14e78e0a37bc070550c862b201534287bc10e62a86ec9c1f455ffb082db42817ce9aed914bd73f1d589bbf268520e194629ff2f62ff6b98a482c4bd2dcbfb + languageName: node + linkType: hard + "has@npm:^1.0.3": version: 1.0.3 resolution: "has@npm:1.0.3" @@ -6396,6 +9608,25 @@ __metadata: languageName: node linkType: hard +"hasbin@npm:^1.2.3": + version: 1.2.3 + resolution: "hasbin@npm:1.2.3" + dependencies: + async: ~1.5 + checksum: b30ae3dc4b8427ced20ab55d7a7500ba33f537c6795adb85b49ae8fba1113fb514c67a45cf7c5b0a0b785960fe69fd7edcaf3fba94a95ec41693e430cddb1aa8 + languageName: node + linkType: hard + +"hasha@npm:^5.2.2": + version: 5.2.2 + resolution: "hasha@npm:5.2.2" + dependencies: + is-stream: ^2.0.0 + type-fest: ^0.8.0 + checksum: 06cc474bed246761ff61c19d629977eb5f53fa817be4313a255a64ae0f433e831a29e83acb6555e3f4592b348497596f1d1653751008dda4f21c9c21ca60ac5a + languageName: node + linkType: hard + "hast-util-has-property@npm:^2.0.0": version: 2.0.0 resolution: "hast-util-has-property@npm:2.0.0" @@ -6510,20 +9741,46 @@ __metadata: languageName: node linkType: hard -"html-rewriter-wasm@npm:^0.4.1": - version: 0.4.1 - resolution: "html-rewriter-wasm@npm:0.4.1" - checksum: e97f76e0f9e2bfb187ffae1c93da4da20a82469e270f96d8d5d8b7f410cdfcce5b3ecb917558cc865fd50b6a2d71a4e8504a66b4ae1b9c6a5e9182a1c6f01ce4 +"http-cache-semantics@npm:3.8.1": + version: 3.8.1 + resolution: "http-cache-semantics@npm:3.8.1" + checksum: b1108d37be478fa9b03890d4185217aac2256e9d2247ce6c6bd90bc5432687d68dc7710ba908cea6166fb983a849d902195241626cf175a3c62817a494c0f7f6 languageName: node linkType: hard -"http-cache-semantics@npm:^4.1.0": +"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.0": version: 4.1.0 resolution: "http-cache-semantics@npm:4.1.0" checksum: 974de94a81c5474be07f269f9fd8383e92ebb5a448208223bfb39e172a9dbc26feff250192ecc23b9593b3f92098e010406b0f24bd4d588d631f80214648ed42 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-errors@npm:~1.8.1": + version: 1.8.1 + resolution: "http-errors@npm:1.8.1" + dependencies: + depd: ~1.1.2 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: ">= 1.5.0 < 2" + toidentifier: 1.0.1 + checksum: d3c7e7e776fd51c0a812baff570bdf06fe49a5dc448b700ab6171b1250e4cf7db8b8f4c0b133e4bfe2451022a5790c1ca6c2cae4094dedd6ac8304a1267f91d2 + languageName: node + linkType: hard + "http-proxy-agent@npm:^4.0.1": version: 4.0.1 resolution: "http-proxy-agent@npm:4.0.1" @@ -6546,6 +9803,35 @@ __metadata: languageName: node linkType: hard +"http-proxy-middleware@npm:^2.0.0": + version: 2.0.6 + resolution: "http-proxy-middleware@npm:2.0.6" + dependencies: + "@types/http-proxy": ^1.17.8 + http-proxy: ^1.18.1 + is-glob: ^4.0.1 + is-plain-obj: ^3.0.0 + micromatch: ^4.0.2 + peerDependencies: + "@types/express": ^4.17.13 + peerDependenciesMeta: + "@types/express": + optional: true + checksum: 2ee85bc878afa6cbf34491e972ece0f5be0a3e5c98a60850cf40d2a9a5356e1fc57aab6cff33c1fc37691b0121c3a42602d2b1956c52577e87a5b77b62ae1c3a + languageName: node + linkType: hard + +"http-proxy@npm:^1.18.0, http-proxy@npm:^1.18.1": + version: 1.18.1 + resolution: "http-proxy@npm:1.18.1" + dependencies: + eventemitter3: ^4.0.0 + follow-redirects: ^1.0.0 + requires-port: ^1.0.0 + checksum: f5bd96bf83e0b1e4226633dbb51f8b056c3e6321917df402deacec31dd7fe433914fc7a2c1831cf7ae21e69c90b3a669b8f434723e9e8b71fd68afe30737b6a5 + languageName: node + linkType: hard + "http-signature@npm:~1.2.0": version: 1.2.0 resolution: "http-signature@npm:1.2.0" @@ -6557,6 +9843,16 @@ __metadata: languageName: node linkType: hard +"http2-wrapper@npm:^2.1.10": + version: 2.2.0 + resolution: "http2-wrapper@npm:2.2.0" + dependencies: + quick-lru: ^5.1.1 + resolve-alpn: ^1.2.0 + checksum: 6fd20e5cb6a58151715b3581e06a62a47df943187d2d1f69e538a50cccb7175dd334ecfde7900a37d18f3e13a1a199518a2c211f39860e81e9a16210c199cfaa + languageName: node + linkType: hard + "httperrors@npm:2.0.1": version: 2.0.1 resolution: "httperrors@npm:2.0.1" @@ -6633,7 +9929,7 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:0.4.24": +"iconv-lite@npm:0.4.24, iconv-lite@npm:^0.4.24": version: 0.4.24 resolution: "iconv-lite@npm:0.4.24" dependencies: @@ -6658,6 +9954,13 @@ __metadata: languageName: node linkType: hard +"ignore@npm:^4.0.3": + version: 4.0.6 + resolution: "ignore@npm:4.0.6" + checksum: 248f82e50a430906f9ee7f35e1158e3ec4c3971451dd9f99c9bc1548261b4db2b99709f60ac6c6cac9333494384176cc4cc9b07acbe42d52ac6a09cad734d800 + languageName: node + linkType: hard + "ignore@npm:^5.1.1, ignore@npm:^5.1.4, ignore@npm:^5.2.0": version: 5.2.4 resolution: "ignore@npm:5.2.4" @@ -6691,6 +9994,20 @@ __metadata: languageName: node linkType: hard +"import-lazy@npm:^2.1.0": + version: 2.1.0 + resolution: "import-lazy@npm:2.1.0" + checksum: 05294f3b9dd4971d3a996f0d2f176410fb6745d491d6e73376429189f5c1c3d290548116b2960a7cf3e89c20cdf11431739d1d2d8c54b84061980795010e803a + languageName: node + linkType: hard + +"import-lazy@npm:^4.0.0": + version: 4.0.0 + resolution: "import-lazy@npm:4.0.0" + checksum: 22f5e51702134aef78890156738454f620e5fe7044b204ebc057c614888a1dd6fdf2ede0fdcca44d5c173fd64f65c985f19a51775b06967ef58cc3d26898df07 + languageName: node + linkType: hard + "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" @@ -6698,6 +10015,13 @@ __metadata: languageName: node linkType: hard +"indent-string@npm:^3.0.0": + version: 3.2.0 + resolution: "indent-string@npm:3.2.0" + checksum: a0b72603bba6c985d367fda3a25aad16423d2056b22a7e83ee2dd9ce0ce3d03d1e078644b679087aa7edf1cfb457f0d96d9eeadc0b12f38582088cc00e995d2f + languageName: node + linkType: hard + "indent-string@npm:^4.0.0": version: 4.0.0 resolution: "indent-string@npm:4.0.0" @@ -6705,6 +10029,13 @@ __metadata: languageName: node linkType: hard +"indent-string@npm:^5.0.0": + version: 5.0.0 + resolution: "indent-string@npm:5.0.0" + checksum: e466c27b6373440e6d84fbc19e750219ce25865cb82d578e41a6053d727e5520dc5725217d6eb1cc76005a1bb1696a0f106d84ce7ebda3033b963a38583fb3b3 + languageName: node + linkType: hard + "infer-owner@npm:^1.0.4": version: 1.0.4 resolution: "infer-owner@npm:1.0.4" @@ -6722,13 +10053,20 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3": +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 languageName: node linkType: hard +"ini@npm:2.0.0": + version: 2.0.0 + resolution: "ini@npm:2.0.0" + checksum: e7aadc5fb2e4aefc666d74ee2160c073995a4061556b1b5b4241ecb19ad609243b9cceafe91bae49c219519394bbd31512516cb22a3b1ca6e66d869e0447e84e + languageName: node + linkType: hard + "ini@npm:^1.3.2, ini@npm:^1.3.4, ini@npm:~1.3.0": version: 1.3.8 resolution: "ini@npm:1.3.8" @@ -6743,6 +10081,42 @@ __metadata: languageName: node linkType: hard +"inquirer-autocomplete-prompt@npm:^1.0.1": + version: 1.4.0 + resolution: "inquirer-autocomplete-prompt@npm:1.4.0" + dependencies: + ansi-escapes: ^4.3.1 + chalk: ^4.0.0 + figures: ^3.2.0 + run-async: ^2.4.0 + rxjs: ^6.6.2 + peerDependencies: + inquirer: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 863d60d6beee2424d3fd9fbdbc027dcc36b20106509f56edd0aab49dea8b033451edec5936ca929b24b685a7137097c98c21757889df8a87cd3919a732483586 + languageName: node + linkType: hard + +"inquirer@npm:^6.0.0, inquirer@npm:^6.5.1": + version: 6.5.2 + resolution: "inquirer@npm:6.5.2" + dependencies: + ansi-escapes: ^3.2.0 + chalk: ^2.4.2 + cli-cursor: ^2.1.0 + cli-width: ^2.0.0 + external-editor: ^3.0.3 + figures: ^2.0.0 + lodash: ^4.17.12 + mute-stream: 0.0.7 + run-async: ^2.2.0 + rxjs: ^6.4.0 + string-width: ^2.1.0 + strip-ansi: ^5.1.0 + through: ^2.3.6 + checksum: 175ad4cd1ebed493b231b240185f1da5afeace5f4e8811dfa83cf55dcae59c3255eaed990aa71871b0fd31aa9dc212f43c44c50ed04fb529364405e72f484d28 + languageName: node + linkType: hard + "internal-slot@npm:^1.0.3": version: 1.0.4 resolution: "internal-slot@npm:1.0.4" @@ -6754,6 +10128,16 @@ __metadata: languageName: node linkType: hard +"into-stream@npm:^3.1.0": + version: 3.1.0 + resolution: "into-stream@npm:3.1.0" + dependencies: + from2: ^2.1.1 + p-is-promise: ^1.1.0 + checksum: e6e1a202227b20c446c251ef95348b3e8503cdc75aa2a09076f8821fc42c1b7fd43fabaeb8ed3cf9eb875942cfa4510b66949c5317997aa640921cc9bbadcd17 + languageName: node + linkType: hard + "ip-regex@npm:^1.0.1": version: 1.0.3 resolution: "ip-regex@npm:1.0.3" @@ -6768,6 +10152,31 @@ __metadata: languageName: node linkType: hard +"ipaddr.js@npm:1.9.1": + version: 1.9.1 + resolution: "ipaddr.js@npm:1.9.1" + checksum: f88d3825981486f5a1942414c8d77dd6674dd71c065adcfa46f578d677edcb99fda25af42675cb59db492fdf427b34a5abfcde3982da11a8fd83a500b41cfe77 + languageName: node + linkType: hard + +"is-accessor-descriptor@npm:^0.1.6": + version: 0.1.6 + resolution: "is-accessor-descriptor@npm:0.1.6" + dependencies: + kind-of: ^3.0.2 + checksum: 3d629a086a9585bc16a83a8e8a3416f400023301855cafb7ccc9a1d63145b7480f0ad28877dcc2cce09492c4ec1c39ef4c071996f24ee6ac626be4217b8ffc8a + languageName: node + linkType: hard + +"is-accessor-descriptor@npm:^1.0.0": + version: 1.0.0 + resolution: "is-accessor-descriptor@npm:1.0.0" + dependencies: + kind-of: ^6.0.0 + checksum: 8e475968e9b22f9849343c25854fa24492dbe8ba0dea1a818978f9f1b887339190b022c9300d08c47fe36f1b913d70ce8cbaca00369c55a56705fdb7caed37fe + languageName: node + linkType: hard + "is-alphabetical@npm:^2.0.0": version: 2.0.1 resolution: "is-alphabetical@npm:2.0.1" @@ -6837,6 +10246,13 @@ __metadata: languageName: node linkType: hard +"is-buffer@npm:^1.1.5": + version: 1.1.6 + resolution: "is-buffer@npm:1.1.6" + checksum: 4a186d995d8bbf9153b4bd9ff9fd04ae75068fe695d29025d25e592d9488911eeece84eefbd8fa41b8ddcc0711058a71d4c466dcf6f1f6e1d83830052d8ca707 + languageName: node + linkType: hard + "is-buffer@npm:^2.0.0": version: 2.0.5 resolution: "is-buffer@npm:2.0.5" @@ -6844,7 +10260,7 @@ __metadata: languageName: node linkType: hard -"is-builtin-module@npm:^3.2.0": +"is-builtin-module@npm:^3.1.0, is-builtin-module@npm:^3.2.0": version: 3.2.0 resolution: "is-builtin-module@npm:3.2.0" dependencies: @@ -6860,6 +10276,28 @@ __metadata: languageName: node linkType: hard +"is-ci@npm:^2.0.0": + version: 2.0.0 + resolution: "is-ci@npm:2.0.0" + dependencies: + ci-info: ^2.0.0 + bin: + is-ci: bin.js + checksum: 77b869057510f3efa439bbb36e9be429d53b3f51abd4776eeea79ab3b221337fe1753d1e50058a9e2c650d38246108beffb15ccfd443929d77748d8c0cc90144 + languageName: node + linkType: hard + +"is-ci@npm:^3.0.1": + version: 3.0.1 + resolution: "is-ci@npm:3.0.1" + dependencies: + ci-info: ^3.2.0 + bin: + is-ci: bin.js + checksum: 192c66dc7826d58f803ecae624860dccf1899fc1f3ac5505284c0a5cf5f889046ffeb958fa651e5725d5705c5bcb14f055b79150ea5fcad7456a9569de60260e + languageName: node + linkType: hard + "is-core-module@npm:^2.5.0, is-core-module@npm:^2.9.0": version: 2.11.0 resolution: "is-core-module@npm:2.11.0" @@ -6869,6 +10307,24 @@ __metadata: languageName: node linkType: hard +"is-data-descriptor@npm:^0.1.4": + version: 0.1.4 + resolution: "is-data-descriptor@npm:0.1.4" + dependencies: + kind-of: ^3.0.2 + checksum: 5c622e078ba933a78338ae398a3d1fc5c23332b395312daf4f74bab4afb10d061cea74821add726cb4db8b946ba36217ee71a24fe71dd5bca4632edb7f6aad87 + languageName: node + linkType: hard + +"is-data-descriptor@npm:^1.0.0": + version: 1.0.0 + resolution: "is-data-descriptor@npm:1.0.0" + dependencies: + kind-of: ^6.0.0 + checksum: e705e6816241c013b05a65dc452244ee378d1c3e3842bd140beabe6e12c0d700ef23c91803f971aa7b091fb0573c5da8963af34a2b573337d87bc3e1f53a4e6d + languageName: node + linkType: hard + "is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": version: 1.0.5 resolution: "is-date-object@npm:1.0.5" @@ -6885,13 +10341,76 @@ __metadata: languageName: node linkType: hard -"is-extglob@npm:^2.1.1": +"is-descriptor@npm:^0.1.0": + version: 0.1.6 + resolution: "is-descriptor@npm:0.1.6" + dependencies: + is-accessor-descriptor: ^0.1.6 + is-data-descriptor: ^0.1.4 + kind-of: ^5.0.0 + checksum: 0f780c1b46b465f71d970fd7754096ffdb7b69fd8797ca1f5069c163eaedcd6a20ec4a50af669075c9ebcfb5266d2e53c8b227e485eefdb0d1fee09aa1dd8ab6 + languageName: node + linkType: hard + +"is-descriptor@npm:^1.0.0, is-descriptor@npm:^1.0.2": + version: 1.0.2 + resolution: "is-descriptor@npm:1.0.2" + dependencies: + is-accessor-descriptor: ^1.0.0 + is-data-descriptor: ^1.0.0 + kind-of: ^6.0.2 + checksum: 2ed623560bee035fb67b23e32ce885700bef8abe3fbf8c909907d86507b91a2c89a9d3a4d835a4d7334dd5db0237a0aeae9ca109c1e4ef1c0e7b577c0846ab5a + languageName: node + linkType: hard + +"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": + version: 2.2.1 + resolution: "is-docker@npm:2.2.1" + bin: + is-docker: cli.js + checksum: 3fef7ddbf0be25958e8991ad941901bf5922ab2753c46980b60b05c1bf9c9c2402d35e6dc32e4380b980ef5e1970a5d9d5e5aa2e02d77727c3b6b5e918474c56 + languageName: node + linkType: hard + +"is-extendable@npm:^0.1.0, is-extendable@npm:^0.1.1": + version: 0.1.1 + resolution: "is-extendable@npm:0.1.1" + checksum: 3875571d20a7563772ecc7a5f36cb03167e9be31ad259041b4a8f73f33f885441f778cee1f1fe0085eb4bc71679b9d8c923690003a36a6a5fdf8023e6e3f0672 + languageName: node + linkType: hard + +"is-extendable@npm:^1.0.1": + version: 1.0.1 + resolution: "is-extendable@npm:1.0.1" + dependencies: + is-plain-object: ^2.0.4 + checksum: db07bc1e9de6170de70eff7001943691f05b9d1547730b11be01c0ebfe67362912ba743cf4be6fd20a5e03b4180c685dad80b7c509fe717037e3eee30ad8e84f + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.0, is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" checksum: df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 languageName: node linkType: hard +"is-fullwidth-code-point@npm:^1.0.0": + version: 1.0.0 + resolution: "is-fullwidth-code-point@npm:1.0.0" + dependencies: + number-is-nan: ^1.0.0 + checksum: 4d46a7465a66a8aebcc5340d3b63a56602133874af576a9ca42c6f0f4bd787a743605771c5f246db77da96605fefeffb65fc1dbe862dcc7328f4b4d03edf5a57 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^2.0.0": + version: 2.0.0 + resolution: "is-fullwidth-code-point@npm:2.0.0" + checksum: eef9c6e15f68085fec19ff6a978a6f1b8f48018fd1265035552078ee945573594933b09bbd6f562553e2a241561439f1ef5339276eba68d272001343084cfab8 + languageName: node + linkType: hard + "is-fullwidth-code-point@npm:^3.0.0": version: 3.0.0 resolution: "is-fullwidth-code-point@npm:3.0.0" @@ -6899,6 +10418,13 @@ __metadata: languageName: node linkType: hard +"is-fullwidth-code-point@npm:^4.0.0": + version: 4.0.0 + resolution: "is-fullwidth-code-point@npm:4.0.0" + checksum: 8ae89bf5057bdf4f57b346fb6c55e9c3dd2549983d54191d722d5c739397a903012cc41a04ee3403fd872e811243ef91a7c5196da7b5841dc6b6aae31a264a8d + languageName: node + linkType: hard + "is-function@npm:^1.0.1": version: 1.0.2 resolution: "is-function@npm:1.0.2" @@ -6906,6 +10432,15 @@ __metadata: languageName: node linkType: hard +"is-glob@npm:^3.0.0, is-glob@npm:^3.1.0": + version: 3.1.0 + resolution: "is-glob@npm:3.1.0" + dependencies: + is-extglob: ^2.1.0 + checksum: 9d483bca84f16f01230f7c7c8c63735248fe1064346f292e0f6f8c76475fd20c6f50fc19941af5bec35f85d6bf26f4b7768f39a48a5f5fdc72b408dc74e07afc + 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" @@ -6922,6 +10457,23 @@ __metadata: languageName: node linkType: hard +"is-installed-globally@npm:^0.4.0": + version: 0.4.0 + resolution: "is-installed-globally@npm:0.4.0" + dependencies: + global-dirs: ^3.0.0 + is-path-inside: ^3.0.2 + checksum: 3359840d5982d22e9b350034237b2cda2a12bac1b48a721912e1ab8e0631dd07d45a2797a120b7b87552759a65ba03e819f1bd63f2d7ab8657ec0b44ee0bf399 + languageName: node + linkType: hard + +"is-interactive@npm:^1.0.0": + version: 1.0.0 + resolution: "is-interactive@npm:1.0.0" + checksum: 824808776e2d468b2916cdd6c16acacebce060d844c35ca6d82267da692e92c3a16fdba624c50b54a63f38bdc4016055b6f443ce57d7147240de4f8cdabaf6f9 + languageName: node + linkType: hard + "is-lambda@npm:^1.0.1": version: 1.0.1 resolution: "is-lambda@npm:1.0.1" @@ -6943,6 +10495,13 @@ __metadata: languageName: node linkType: hard +"is-natural-number@npm:^4.0.1": + version: 4.0.1 + resolution: "is-natural-number@npm:4.0.1" + checksum: 3e5e3d52e0dfa4fea923b5d2b8a5cdbd9bf110c4598d30304b98528b02f40c9058a2abf1bae10bcbaf2bac18ace41cff7bc9673aff339f8c8297fae74ae0e75d + languageName: node + linkType: hard + "is-negative-zero@npm:^2.0.2": version: 2.0.2 resolution: "is-negative-zero@npm:2.0.2" @@ -6950,6 +10509,20 @@ __metadata: languageName: node linkType: hard +"is-npm@npm:^5.0.0": + version: 5.0.0 + resolution: "is-npm@npm:5.0.0" + checksum: 9baff02b0c69a3d3c79b162cb2f9e67fb40ef6d172c16601b2e2471c21e9a4fa1fc9885a308d7bc6f3a3cd2a324c27fa0bf284c133c3349bb22571ab70d041cc + languageName: node + linkType: hard + +"is-npm@npm:^6.0.0": + version: 6.0.0 + resolution: "is-npm@npm:6.0.0" + checksum: fafe1ddc772345f5460514891bb8014376904ccdbddd59eee7525c9adcc08d426933f28b087bef3e17524da7ebf35c03ef484ff3b6ba9d5fecd8c6e6a7d4bf11 + languageName: node + linkType: hard + "is-number-object@npm:^1.0.4": version: 1.0.7 resolution: "is-number-object@npm:1.0.7" @@ -6959,6 +10532,15 @@ __metadata: languageName: node linkType: hard +"is-number@npm:^3.0.0": + version: 3.0.0 + resolution: "is-number@npm:3.0.0" + dependencies: + kind-of: ^3.0.2 + checksum: 0c62bf8e9d72c4dd203a74d8cfc751c746e75513380fef420cda8237e619a988ee43e678ddb23c87ac24d91ac0fe9f22e4ffb1301a50310c697e9d73ca3994e9 + languageName: node + linkType: hard + "is-number@npm:^7.0.0": version: 7.0.0 resolution: "is-number@npm:7.0.0" @@ -6980,20 +10562,71 @@ __metadata: languageName: node linkType: hard -"is-path-inside@npm:^3.0.3": +"is-object@npm:^1.0.1": + version: 1.0.2 + resolution: "is-object@npm:1.0.2" + checksum: 971219c4b1985b9751f65e4c8296d3104f0457b0e8a70849e848a4a2208bc47317d73b3b85d4a369619cb2df8284dc22584cb2695a7d99aca5e8d0aa64fc075a + languageName: node + linkType: hard + +"is-observable@npm:^1.1.0": + version: 1.1.0 + resolution: "is-observable@npm:1.1.0" + dependencies: + symbol-observable: ^1.1.0 + checksum: ab3d7e740915e6b53a81d96ce7d581f4dd26dacceb95278b74e7bf3123221073ea02cde810f864cff94ed5c394f18248deefd6a8f2d40137d868130eb5be6f85 + languageName: node + linkType: hard + +"is-path-cwd@npm:^2.2.0": + version: 2.2.0 + resolution: "is-path-cwd@npm:2.2.0" + checksum: 46a840921bb8cc0dc7b5b423a14220e7db338072a4495743a8230533ce78812dc152548c86f4b828411fe98c5451959f07cf841c6a19f611e46600bd699e8048 + languageName: node + linkType: hard + +"is-path-cwd@npm:^3.0.0": + version: 3.0.0 + resolution: "is-path-cwd@npm:3.0.0" + checksum: bc34d13b6a03dfca4a3ab6a8a5ba78ae4b24f4f1db4b2b031d2760c60d0913bd16a4b980dcb4e590adfc906649d5f5132684079a3972bd219da49deebb9adea8 + languageName: node + linkType: hard + +"is-path-inside@npm:^3.0.2, is-path-inside@npm:^3.0.3": version: 3.0.3 resolution: "is-path-inside@npm:3.0.3" checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 languageName: node linkType: hard -"is-plain-obj@npm:^1.1.0": +"is-path-inside@npm:^4.0.0": + version: 4.0.0 + resolution: "is-path-inside@npm:4.0.0" + checksum: 8810fa11c58e6360b82c3e0d6cd7d9c7d0392d3ac9eb10f980b81f9839f40ac6d1d6d6f05d069db0d227759801228f0b072e1b6c343e4469b065ab5fe0b68fe5 + languageName: node + linkType: hard + +"is-plain-obj@npm:^1.0.0, is-plain-obj@npm:^1.1.0": version: 1.1.0 resolution: "is-plain-obj@npm:1.1.0" checksum: 0ee04807797aad50859652a7467481816cbb57e5cc97d813a7dcd8915da8195dc68c436010bf39d195226cde6a2d352f4b815f16f26b7bf486a5754290629931 languageName: node linkType: hard +"is-plain-obj@npm:^2.1.0": + version: 2.1.0 + resolution: "is-plain-obj@npm:2.1.0" + checksum: cec9100678b0a9fe0248a81743041ed990c2d4c99f893d935545cfbc42876cbe86d207f3b895700c690ad2fa520e568c44afc1605044b535a7820c1d40e38daa + languageName: node + linkType: hard + +"is-plain-obj@npm:^3.0.0": + version: 3.0.0 + resolution: "is-plain-obj@npm:3.0.0" + checksum: a6ebdf8e12ab73f33530641972a72a4b8aed6df04f762070d823808303e4f76d87d5ea5bd76f96a7bbe83d93f04ac7764429c29413bd9049853a69cb630fb21c + languageName: node + linkType: hard + "is-plain-obj@npm:^4.0.0": version: 4.1.0 resolution: "is-plain-obj@npm:4.1.0" @@ -7001,6 +10634,15 @@ __metadata: languageName: node linkType: hard +"is-plain-object@npm:^2.0.3, is-plain-object@npm:^2.0.4": + version: 2.0.4 + resolution: "is-plain-object@npm:2.0.4" + dependencies: + isobject: ^3.0.1 + checksum: 2a401140cfd86cabe25214956ae2cfee6fbd8186809555cd0e84574f88de7b17abacb2e477a6a658fa54c6083ecbda1e6ae404c7720244cd198903848fca70ca + languageName: node + linkType: hard + "is-plain-object@npm:^3.0.0": version: 3.0.1 resolution: "is-plain-object@npm:3.0.1" @@ -7022,6 +10664,13 @@ __metadata: languageName: node linkType: hard +"is-promise@npm:^2.1.0": + version: 2.2.2 + resolution: "is-promise@npm:2.2.2" + checksum: 18bf7d1c59953e0ad82a1ed963fb3dc0d135c8f299a14f89a17af312fc918373136e56028e8831700e1933519630cc2fd4179a777030330fde20d34e96f40c78 + languageName: node + linkType: hard + "is-property@npm:^1.0.2": version: 1.0.2 resolution: "is-property@npm:1.0.2" @@ -7064,6 +10713,13 @@ __metadata: languageName: node linkType: hard +"is-retry-allowed@npm:^1.1.0": + version: 1.2.0 + resolution: "is-retry-allowed@npm:1.2.0" + checksum: 50d700a89ae31926b1c91b3eb0104dbceeac8790d8b80d02f5c76d9a75c2056f1bb24b5268a8a018dead606bddf116b2262e5ac07401eb8b8783b266ed22558d + languageName: node + linkType: hard + "is-set@npm:^2.0.1, is-set@npm:^2.0.2": version: 2.0.2 resolution: "is-set@npm:2.0.2" @@ -7080,7 +10736,7 @@ __metadata: languageName: node linkType: hard -"is-stream@npm:1.1.0": +"is-stream@npm:1.1.0, is-stream@npm:^1.1.0": version: 1.1.0 resolution: "is-stream@npm:1.1.0" checksum: 063c6bec9d5647aa6d42108d4c59723d2bd4ae42135a2d4db6eadbd49b7ea05b750fd69d279e5c7c45cf9da753ad2c00d8978be354d65aa9f6bb434969c6a2ae @@ -7141,13 +10797,41 @@ __metadata: languageName: node linkType: hard -"is-typedarray@npm:~1.0.0": +"is-typedarray@npm:^1.0.0, is-typedarray@npm:~1.0.0": version: 1.0.0 resolution: "is-typedarray@npm:1.0.0" checksum: 3508c6cd0a9ee2e0df2fa2e9baabcdc89e911c7bd5cf64604586697212feec525aa21050e48affb5ffc3df20f0f5d2e2cf79b08caa64e1ccc9578e251763aef7 languageName: node linkType: hard +"is-unicode-supported@npm:^0.1.0": + version: 0.1.0 + resolution: "is-unicode-supported@npm:0.1.0" + checksum: a2aab86ee7712f5c2f999180daaba5f361bdad1efadc9610ff5b8ab5495b86e4f627839d085c6530363c6d6d4ecbde340fb8e54bdb83da4ba8e0865ed5513c52 + languageName: node + linkType: hard + +"is-unicode-supported@npm:^1.2.0": + version: 1.3.0 + resolution: "is-unicode-supported@npm:1.3.0" + checksum: 20a1fc161afafaf49243551a5ac33b6c4cf0bbcce369fcd8f2951fbdd000c30698ce320de3ee6830497310a8f41880f8066d440aa3eb0a853e2aa4836dd89abc + languageName: node + linkType: hard + +"is-url-superb@npm:^4.0.0": + version: 4.0.0 + resolution: "is-url-superb@npm:4.0.0" + checksum: fd55e91c96349acb0d688f95fcb1ac67450e5db934976e3a8ff13ef446841e779a6f4d18b15f02331f05a3429c8fdaba2382ac1ab444059e86e9ffcde1ec8db0 + languageName: node + linkType: hard + +"is-url@npm:^1.2.4": + version: 1.2.4 + resolution: "is-url@npm:1.2.4" + checksum: 100e74b3b1feab87a43ef7653736e88d997eb7bd32e71fd3ebc413e58c1cbe56269699c776aaea84244b0567f2a7d68dfaa512a062293ed2f9fdecb394148432 + languageName: node + linkType: hard + "is-weakmap@npm:^2.0.1": version: 2.0.1 resolution: "is-weakmap@npm:2.0.1" @@ -7174,6 +10858,50 @@ __metadata: languageName: node linkType: hard +"is-windows@npm:^1.0.2": + version: 1.0.2 + resolution: "is-windows@npm:1.0.2" + checksum: 438b7e52656fe3b9b293b180defb4e448088e7023a523ec21a91a80b9ff8cdb3377ddb5b6e60f7c7de4fa8b63ab56e121b6705fe081b3cf1b828b0a380009ad7 + languageName: node + linkType: hard + +"is-wsl@npm:^1.1.0": + version: 1.1.0 + resolution: "is-wsl@npm:1.1.0" + checksum: ea157d232351e68c92bd62fc541771096942fe72f69dff452dd26dcc31466258c570a3b04b8cda2e01cd2968255b02951b8670d08ea4ed76d6b1a646061ac4fe + languageName: node + linkType: hard + +"is-wsl@npm:^2.2.0": + version: 2.2.0 + resolution: "is-wsl@npm:2.2.0" + dependencies: + is-docker: ^2.0.0 + checksum: 20849846ae414997d290b75e16868e5261e86ff5047f104027026fd61d8b5a9b0b3ade16239f35e1a067b3c7cc02f70183cb661010ed16f4b6c7c93dad1b19d8 + languageName: node + linkType: hard + +"is-yarn-global@npm:^0.3.0": + version: 0.3.0 + resolution: "is-yarn-global@npm:0.3.0" + checksum: bca013d65fee2862024c9fbb3ba13720ffca2fe750095174c1c80922fdda16402b5c233f5ac9e265bc12ecb5446e7b7f519a32d9541788f01d4d44e24d2bf481 + languageName: node + linkType: hard + +"is-yarn-global@npm:^0.4.0": + version: 0.4.1 + resolution: "is-yarn-global@npm:0.4.1" + checksum: 79ec4e6f581c53d4fefdf5f6c237f9a3ad8db29c85cdc4659e76ae345659317552052a97b7e56952aa5d94a23c798ebec8ccad72fb14d3b26dc647ddceddd716 + languageName: node + linkType: hard + +"isarray@npm:1.0.0, isarray@npm:~1.0.0": + version: 1.0.0 + resolution: "isarray@npm:1.0.0" + checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab + languageName: node + linkType: hard + "isarray@npm:^2.0.5": version: 2.0.5 resolution: "isarray@npm:2.0.5" @@ -7181,10 +10909,10 @@ __metadata: languageName: node linkType: hard -"isarray@npm:~1.0.0": - version: 1.0.0 - resolution: "isarray@npm:1.0.0" - checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab +"iserror@npm:0.0.2, iserror@npm:^0.0.2": + version: 0.0.2 + resolution: "iserror@npm:0.0.2" + checksum: e22080b3a650289303039ad804875bdd8a41af467c5cc8f844529d8bc2b2613f449214aa04cc9c541c219f501e3c6943528dc5ed18ca9fc73e00ee45723f7106 languageName: node linkType: hard @@ -7195,6 +10923,22 @@ __metadata: languageName: node linkType: hard +"isobject@npm:^2.0.0": + version: 2.1.0 + resolution: "isobject@npm:2.1.0" + dependencies: + isarray: 1.0.0 + checksum: 811c6f5a866877d31f0606a88af4a45f282544de886bf29f6a34c46616a1ae2ed17076cc6bf34c0128f33eecf7e1fcaa2c82cf3770560d3e26810894e96ae79f + languageName: node + linkType: hard + +"isobject@npm:^3.0.0, isobject@npm:^3.0.1": + version: 3.0.1 + resolution: "isobject@npm:3.0.1" + checksum: db85c4c970ce30693676487cca0e61da2ca34e8d4967c2e1309143ff910c207133a969f9e4ddb2dc6aba670aabce4e0e307146c310350b298e74a31f7d464703 + languageName: node + linkType: hard + "isstream@npm:~0.1.2": version: 0.1.2 resolution: "isstream@npm:0.1.2" @@ -7230,6 +10974,58 @@ __metadata: languageName: node linkType: hard +"isurl@npm:^1.0.0-alpha5": + version: 1.0.0 + resolution: "isurl@npm:1.0.0" + dependencies: + has-to-string-tag-x: ^1.2.0 + is-object: ^1.0.1 + checksum: 28a96e019269d57015fa5869f19dda5a3ed1f7b21e3e0c4ff695419bd0541547db352aa32ee4a3659e811a177b0e37a5bc1a036731e71939dd16b59808ab92bd + languageName: node + linkType: hard + +"jest-get-type@npm:^25.2.6": + version: 25.2.6 + resolution: "jest-get-type@npm:25.2.6" + checksum: d1f59027b0baa6b8a6f4b3f900de1a77714647351907981ea57c16340e6a58a9c702b580055331af25ee3872768f1241c0616de9777a63e4eb32fc409dcbf9ac + languageName: node + linkType: hard + +"jest-get-type@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-get-type@npm:27.5.1" + checksum: 63064ab70195c21007d897c1157bf88ff94a790824a10f8c890392e7d17eda9c3900513cb291ca1c8d5722cad79169764e9a1279f7c8a9c4cd6e9109ff04bbc0 + languageName: node + linkType: hard + +"jest-validate@npm:^25.3.0": + version: 25.5.0 + resolution: "jest-validate@npm:25.5.0" + dependencies: + "@jest/types": ^25.5.0 + camelcase: ^5.3.1 + chalk: ^3.0.0 + jest-get-type: ^25.2.6 + leven: ^3.1.0 + pretty-format: ^25.5.0 + checksum: 1c7880b36650398264fe5c67aecf845bcf5e93781d8e7b88aec0c55a5201fb395d9240f59c3a5493f41b71e8195b8b7e0e238d7f1f9b9ad5e4fd60874bf1622f + languageName: node + linkType: hard + +"jest-validate@npm:^27.3.1, jest-validate@npm:^27.4.2": + version: 27.5.1 + resolution: "jest-validate@npm:27.5.1" + dependencies: + "@jest/types": ^27.5.1 + camelcase: ^6.2.0 + chalk: ^4.0.0 + jest-get-type: ^27.5.1 + leven: ^3.1.0 + pretty-format: ^27.5.1 + checksum: 82e870f8ee7e4fb949652711b1567f05ae31c54be346b0899e8353e5c20fad7692b511905b37966945e90af8dc0383eb41a74f3ffefb16140ea4f9164d841412 + languageName: node + linkType: hard + "jimp@npm:0.2.27": version: 0.2.27 resolution: "jimp@npm:0.2.27" @@ -7278,6 +11074,13 @@ __metadata: languageName: node linkType: hard +"js-string-escape@npm:^1.0.1": + version: 1.0.1 + resolution: "js-string-escape@npm:1.0.1" + checksum: f11e0991bf57e0c183b55c547acec85bd2445f043efc9ea5aa68b41bd2a3e7d3ce94636cb233ae0d84064ba4c1a505d32e969813c5b13f81e7d4be12c59256fe + languageName: node + linkType: hard + "js-tokens@npm:^4.0.0": version: 4.0.0 resolution: "js-tokens@npm:4.0.0" @@ -7285,7 +11088,7 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:^4.1.0": +"js-yaml@npm:^4.0.0, js-yaml@npm:^4.1.0": version: 4.1.0 resolution: "js-yaml@npm:4.1.0" dependencies: @@ -7343,6 +11146,20 @@ __metadata: languageName: node linkType: hard +"json-buffer@npm:3.0.0": + version: 3.0.0 + resolution: "json-buffer@npm:3.0.0" + checksum: 0cecacb8025370686a916069a2ff81f7d55167421b6aa7270ee74e244012650dd6bce22b0852202ea7ff8624fce50ff0ec1bdf95914ccb4553426e290d5a63fa + languageName: node + linkType: hard + +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 9026b03edc2847eefa2e37646c579300a1f3a4586cfb62bf857832b60c852042d0d6ae55d1afb8926163fa54c2b01d83ae24705f34990348bdac6273a29d4581 + 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" @@ -7401,6 +11218,13 @@ __metadata: languageName: node linkType: hard +"jsonc-parser@npm:^3.2.0": + version: 3.2.0 + resolution: "jsonc-parser@npm:3.2.0" + checksum: 946dd9a5f326b745aa326d48a7257e3f4a4b62c5e98ec8e49fa2bdd8d96cef7e6febf1399f5c7016114fd1f68a1c62c6138826d5d90bc650448e3cf0951c53c7 + languageName: node + linkType: hard + "jsonfile@npm:^4.0.0": version: 4.0.0 resolution: "jsonfile@npm:4.0.0" @@ -7433,6 +11257,31 @@ __metadata: languageName: node linkType: hard +"jsonpointer@npm:^5.0.0": + version: 5.0.1 + resolution: "jsonpointer@npm:5.0.1" + checksum: 0b40f712900ad0c846681ea2db23b6684b9d5eedf55807b4708c656f5894b63507d0e28ae10aa1bddbea551241035afe62b6df0800fc94c2e2806a7f3adecd7c + languageName: node + linkType: hard + +"jsonwebtoken@npm:^8.5.1": + version: 8.5.1 + resolution: "jsonwebtoken@npm:8.5.1" + dependencies: + jws: ^3.2.2 + lodash.includes: ^4.3.0 + lodash.isboolean: ^3.0.3 + lodash.isinteger: ^4.0.4 + lodash.isnumber: ^3.0.3 + lodash.isplainobject: ^4.0.6 + lodash.isstring: ^4.0.1 + lodash.once: ^4.0.0 + ms: ^2.1.1 + semver: ^5.6.0 + checksum: 93c9e3f23c59b758ac88ba15f4e4753b3749dfce7a6f7c40fb86663128a1e282db085eec852d4e0cbca4cefdcd3a8275ee255dbd08fcad0df26ad9f6e4cc853a + languageName: node + linkType: hard + "jsprim@npm:^1.2.2": version: 1.4.2 resolution: "jsprim@npm:1.4.2" @@ -7445,7 +11294,110 @@ __metadata: languageName: node linkType: hard -"kind-of@npm:^6.0.3": +"junk@npm:^3.1.0": + version: 3.1.0 + resolution: "junk@npm:3.1.0" + checksum: 6c4d68e8f8bc25b546baed802cd0e7be6a971e92f1e885c92cbfe98946d5690b961a32f8e7909e77765d3204c3e556d13c17f73e31697ffae1db07a58b9e68c0 + languageName: node + linkType: hard + +"junk@npm:^4.0.0": + version: 4.0.0 + resolution: "junk@npm:4.0.0" + checksum: af79841fbdc0f3a8ec328a4bf68381013c7f52a78821184855a4b19ef95713edb3c30cd144c6393e6159e1b7dfb76b3f682dc983aafb54e52ff321ab1b4a9983 + languageName: node + linkType: hard + +"jwa@npm:^1.4.1": + version: 1.4.1 + resolution: "jwa@npm:1.4.1" + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: ^5.0.1 + checksum: ff30ea7c2dcc61f3ed2098d868bf89d43701605090c5b21b5544b512843ec6fd9e028381a4dda466cbcdb885c2d1150f7c62e7168394ee07941b4098e1035e2f + languageName: node + linkType: hard + +"jws@npm:^3.2.2": + version: 3.2.2 + resolution: "jws@npm:3.2.2" + dependencies: + jwa: ^1.4.1 + safe-buffer: ^5.0.1 + checksum: f0213fe5b79344c56cd443428d8f65c16bf842dc8cb8f5aed693e1e91d79c20741663ad6eff07a6d2c433d1831acc9814e8d7bada6a0471fbb91d09ceb2bf5c2 + languageName: node + linkType: hard + +"jwt-decode@npm:^3.0.0": + version: 3.1.2 + resolution: "jwt-decode@npm:3.1.2" + checksum: 20a4b072d44ce3479f42d0d2c8d3dabeb353081ba4982e40b83a779f2459a70be26441be6c160bfc8c3c6eadf9f6380a036fbb06ac5406b5674e35d8c4205eeb + languageName: node + linkType: hard + +"keep-func-props@npm:^4.0.0": + version: 4.0.1 + resolution: "keep-func-props@npm:4.0.1" + dependencies: + mimic-fn: ^4.0.0 + checksum: a21f9e5516a6e2d463bb59a2610b79abd87801f6af5ac3348f95ba782a755fd874a7edadd77a3e5c8b5b1ff89f65645b2220029b6d8c7e3c9775131cd37a59b5 + languageName: node + linkType: hard + +"keyv@npm:3.0.0": + version: 3.0.0 + resolution: "keyv@npm:3.0.0" + dependencies: + json-buffer: 3.0.0 + checksum: 5182775e546cdbb88dc583825bc0e990164709f31904a219e3321b3bf564a301ac4e5255ba95f7fba466548eba793b356a04a0242110173b199a37192b3b565f + languageName: node + linkType: hard + +"keyv@npm:^3.0.0": + version: 3.1.0 + resolution: "keyv@npm:3.1.0" + dependencies: + json-buffer: 3.0.0 + checksum: bb7e8f3acffdbafbc2dd5b63f377fe6ec4c0e2c44fc82720449ef8ab54f4a7ce3802671ed94c0f475ae0a8549703353a2124561fcf3317010c141b32ca1ce903 + languageName: node + linkType: hard + +"keyv@npm:^4.0.0, keyv@npm:^4.5.2": + version: 4.5.2 + resolution: "keyv@npm:4.5.2" + dependencies: + json-buffer: 3.0.1 + checksum: 13ad58303acd2261c0d4831b4658451603fd159e61daea2121fcb15feb623e75ee328cded0572da9ca76b7b3ceaf8e614f1806c6b3af5db73c9c35a345259651 + languageName: node + linkType: hard + +"kind-of@npm:^3.0.2, kind-of@npm:^3.0.3, kind-of@npm:^3.2.0": + version: 3.2.2 + resolution: "kind-of@npm:3.2.2" + dependencies: + is-buffer: ^1.1.5 + checksum: e898df8ca2f31038f27d24f0b8080da7be274f986bc6ed176f37c77c454d76627619e1681f6f9d2e8d2fd7557a18ecc419a6bb54e422abcbb8da8f1a75e4b386 + languageName: node + linkType: hard + +"kind-of@npm:^4.0.0": + version: 4.0.0 + resolution: "kind-of@npm:4.0.0" + dependencies: + is-buffer: ^1.1.5 + checksum: 1b9e7624a8771b5a2489026e820f3bbbcc67893e1345804a56b23a91e9069965854d2a223a7c6ee563c45be9d8c6ff1ef87f28ed5f0d1a8d00d9dcbb067c529f + languageName: node + linkType: hard + +"kind-of@npm:^5.0.0": + version: 5.1.0 + resolution: "kind-of@npm:5.1.0" + checksum: f2a0102ae0cf19c4a953397e552571bad2b588b53282874f25fca7236396e650e2db50d41f9f516bd402536e4df968dbb51b8e69e4d5d4a7173def78448f7bab + languageName: node + linkType: hard + +"kind-of@npm:^6.0.0, kind-of@npm:^6.0.2, kind-of@npm:^6.0.3": version: 6.0.3 resolution: "kind-of@npm:6.0.3" checksum: 3ab01e7b1d440b22fe4c31f23d8d38b4d9b91d9f291df683476576493d5dfd2e03848a8b05813dd0c3f0e835bc63f433007ddeceb71f05cb25c45ae1b19c6d3b @@ -7459,13 +11411,67 @@ __metadata: languageName: node linkType: hard -"kleur@npm:^4.0.3, kleur@npm:^4.1.4, kleur@npm:^4.1.5": +"kleur@npm:^4.0.3, kleur@npm:^4.1.5": version: 4.1.5 resolution: "kleur@npm:4.1.5" checksum: 1dc476e32741acf0b1b5b0627ffd0d722e342c1b0da14de3e8ae97821327ca08f9fb944542fb3c126d90ac5f27f9d804edbe7c585bf7d12ef495d115e0f22c12 languageName: node linkType: hard +"kuler@npm:^2.0.0": + version: 2.0.0 + resolution: "kuler@npm:2.0.0" + checksum: 9e10b5a1659f9ed8761d38df3c35effabffbd19fc6107324095238e4ef0ff044392cae9ac64a1c2dda26e532426485342226b93806bd97504b174b0dcf04ed81 + languageName: node + linkType: hard + +"lambda-local@npm:^2.0.1": + version: 2.0.3 + resolution: "lambda-local@npm:2.0.3" + dependencies: + commander: ^9.4.0 + dotenv: ^16.0.2 + winston: ^3.8.2 + bin: + lambda-local: build/cli.js + checksum: de243795981ded70a0f9c93f5b19fd38e70494a6c89ecb4fa34991ce0277a372e0cd0e62c80fbdbf2270b55ce8b7a31711c702c387d539e3eafa1e3e21c44c3b + languageName: node + linkType: hard + +"latest-version@npm:^5.1.0": + version: 5.1.0 + resolution: "latest-version@npm:5.1.0" + dependencies: + package-json: ^6.3.0 + checksum: fbc72b071eb66c40f652441fd783a9cca62f08bf42433651937f078cd9ef94bf728ec7743992777826e4e89305aef24f234b515e6030503a2cbee7fc9bdc2c0f + languageName: node + linkType: hard + +"latest-version@npm:^7.0.0": + version: 7.0.0 + resolution: "latest-version@npm:7.0.0" + dependencies: + package-json: ^8.1.0 + checksum: 1f0deba00d5a34394cce4463c938811f51bbb539b131674f4bb2062c63f2cc3b80bccd56ecade3bd5932d04a34cf0a5a8a2ccc4ec9e5e6b285a9a7b3e27d0d66 + languageName: node + linkType: hard + +"lazystream@npm:^1.0.0": + version: 1.0.1 + resolution: "lazystream@npm:1.0.1" + dependencies: + readable-stream: ^2.0.5 + checksum: 822c54c6b87701a6491c70d4fabc4cafcf0f87d6b656af168ee7bb3c45de9128a801cb612e6eeeefc64d298a7524a698dd49b13b0121ae50c2ae305f0dcc5310 + languageName: node + linkType: hard + +"leven@npm:^3.1.0, leven@npm:^3.1.0 < 4": + version: 3.1.0 + resolution: "leven@npm:3.1.0" + checksum: 638401d534585261b6003db9d99afd244dfe82d75ddb6db5c0df412842d5ab30b2ef18de471aaec70fe69a46f17b4ae3c7f01d8a4e6580ef7adb9f4273ad1e55 + languageName: node + linkType: hard + "levn@npm:^0.4.1": version: 0.4.1 resolution: "levn@npm:0.4.1" @@ -7500,6 +11506,60 @@ __metadata: languageName: node linkType: hard +"listr-silent-renderer@npm:^1.1.1": + version: 1.1.1 + resolution: "listr-silent-renderer@npm:1.1.1" + checksum: 81982612e4d207be2e69c4dcf2a6e0aaa6080e41bfe0b73e8d0b040dcdb79874248b1040558793a2f0fcc9c2252ec8af47379650f59bf2a7656c11cd5a48c948 + languageName: node + linkType: hard + +"listr-update-renderer@npm:^0.5.0": + version: 0.5.0 + resolution: "listr-update-renderer@npm:0.5.0" + dependencies: + chalk: ^1.1.3 + cli-truncate: ^0.2.1 + elegant-spinner: ^1.0.1 + figures: ^1.7.0 + indent-string: ^3.0.0 + log-symbols: ^1.0.2 + log-update: ^2.3.0 + strip-ansi: ^3.0.1 + peerDependencies: + listr: ^0.14.2 + checksum: 2dddc763837a9086a684545ee9049fcb102d423b0c840ad929471ab461075ed78d5c79f1e8334cd7a76aa9076e7631c04a38733bb4d88c23ca6082c087335864 + languageName: node + linkType: hard + +"listr-verbose-renderer@npm:^0.5.0": + version: 0.5.0 + resolution: "listr-verbose-renderer@npm:0.5.0" + dependencies: + chalk: ^2.4.1 + cli-cursor: ^2.1.0 + date-fns: ^1.27.2 + figures: ^2.0.0 + checksum: 3e504be729f9dd15b40db743e403673b76331774411dbc29d6f48136f6ba8bc1dee645a4e621c1cb781e6e69a58b78cb9aa8c153c7ceccfe4e4ea74d563bca3a + languageName: node + linkType: hard + +"listr@npm:^0.14.3": + version: 0.14.3 + resolution: "listr@npm:0.14.3" + dependencies: + "@samverschueren/stream-to-observable": ^0.3.0 + is-observable: ^1.1.0 + is-promise: ^2.1.0 + is-stream: ^1.1.0 + listr-silent-renderer: ^1.1.1 + listr-update-renderer: ^0.5.0 + listr-verbose-renderer: ^0.5.0 + p-map: ^2.0.0 + rxjs: ^6.3.3 + checksum: 932d69430c2bed2f987c53b2ea2070786187de29bc4a9fa8e93fdfdf2390d7c0ff9415eb1b31136f76b134cbb930fb18af039fc341263a02b107abc6d2c31a00 + languageName: node + linkType: hard + "load-bmfont@npm:^1.2.3": version: 1.4.1 resolution: "load-bmfont@npm:1.4.1" @@ -7566,6 +11626,22 @@ __metadata: languageName: node linkType: hard +"locate-path@npm:^7.0.0, locate-path@npm:^7.1.0": + version: 7.1.1 + resolution: "locate-path@npm:7.1.1" + dependencies: + p-locate: ^6.0.0 + checksum: 1d88af5b512d6e6398026252e17382907126683ab09ae5d6b8918d0bc72ca2642e1ad6e2fe635c5920840e369618e5d748c08deb57ba537fdd3f78e87ca993e0 + languageName: node + linkType: hard + +"lodash-es@npm:^4.17.21": + version: 4.17.21 + resolution: "lodash-es@npm:4.17.21" + checksum: 05cbffad6e2adbb331a4e16fbd826e7faee403a1a04873b82b42c0f22090f280839f85b95393f487c1303c8a3d2a010048bf06151a6cbe03eee4d388fb0a12d2 + languageName: node + linkType: hard + "lodash._reinterpolate@npm:^3.0.0": version: 3.0.0 resolution: "lodash._reinterpolate@npm:3.0.0" @@ -7608,6 +11684,41 @@ __metadata: languageName: node linkType: hard +"lodash.difference@npm:^4.5.0": + version: 4.5.0 + resolution: "lodash.difference@npm:4.5.0" + checksum: ecee276aa578f300e79350805a14a51be8d1f12b3c1389a19996d8ab516f814211a5f65c68331571ecdad96522b863ccc484b55504ce8c9947212a29f8857d5a + languageName: node + linkType: hard + +"lodash.flatten@npm:^4.4.0": + version: 4.4.0 + resolution: "lodash.flatten@npm:4.4.0" + checksum: 0ac34a393d4b795d4b7421153d27c13ae67e08786c9cbb60ff5b732210d46f833598eee3fb3844bb10070e8488efe390ea53bb567377e0cb47e9e630bf0811cb + languageName: node + linkType: hard + +"lodash.includes@npm:^4.3.0": + version: 4.3.0 + resolution: "lodash.includes@npm:4.3.0" + checksum: 71092c130515a67ab3bd928f57f6018434797c94def7f46aafa417771e455ce3a4834889f4267b17887d7f75297dfabd96231bf704fd2b8c5096dc4a913568b6 + languageName: node + linkType: hard + +"lodash.isboolean@npm:^3.0.3": + version: 3.0.3 + resolution: "lodash.isboolean@npm:3.0.3" + checksum: b70068b4a8b8837912b54052557b21fc4774174e3512ed3c5b94621e5aff5eb6c68089d0a386b7e801d679cd105d2e35417978a5e99071750aa2ed90bffd0250 + languageName: node + linkType: hard + +"lodash.isempty@npm:^4.4.0": + version: 4.4.0 + resolution: "lodash.isempty@npm:4.4.0" + checksum: a8118f23f7ed72a1dbd176bf27f297d1e71aa1926288449cb8f7cef99ba1bc7527eab52fe7899ab080fa1dc150aba6e4a6367bf49fa4e0b78da1ecc095f8d8c5 + languageName: node + linkType: hard + "lodash.isfunction@npm:^3.0.9": version: 3.0.9 resolution: "lodash.isfunction@npm:3.0.9" @@ -7615,6 +11726,13 @@ __metadata: languageName: node linkType: hard +"lodash.isinteger@npm:^4.0.4": + version: 4.0.4 + resolution: "lodash.isinteger@npm:4.0.4" + checksum: 6034821b3fc61a2ffc34e7d5644bb50c5fd8f1c0121c554c21ac271911ee0c0502274852845005f8651d51e199ee2e0cfebfe40aaa49c7fe617f603a8a0b1691 + languageName: node + linkType: hard + "lodash.ismatch@npm:^4.4.0": version: 4.4.0 resolution: "lodash.ismatch@npm:4.4.0" @@ -7622,6 +11740,13 @@ __metadata: languageName: node linkType: hard +"lodash.isnumber@npm:^3.0.3": + version: 3.0.3 + resolution: "lodash.isnumber@npm:3.0.3" + checksum: 913784275b565346255e6ae6a6e30b760a0da70abc29f3e1f409081585875105138cda4a429ff02577e1bc0a7ae2a90e0a3079a37f3a04c3d6c5aaa532f4cab2 + languageName: node + linkType: hard + "lodash.isplainobject@npm:^4.0.6": version: 4.0.6 resolution: "lodash.isplainobject@npm:4.0.6" @@ -7629,6 +11754,13 @@ __metadata: languageName: node linkType: hard +"lodash.isstring@npm:^4.0.1": + version: 4.0.1 + resolution: "lodash.isstring@npm:4.0.1" + checksum: eaac87ae9636848af08021083d796e2eea3d02e80082ab8a9955309569cb3a463ce97fd281d7dc119e402b2e7d8c54a23914b15d2fc7fff56461511dc8937ba0 + languageName: node + linkType: hard + "lodash.kebabcase@npm:^4.1.1": version: 4.1.1 resolution: "lodash.kebabcase@npm:4.1.1" @@ -7664,6 +11796,13 @@ __metadata: languageName: node linkType: hard +"lodash.once@npm:^4.0.0": + version: 4.1.1 + resolution: "lodash.once@npm:4.1.1" + checksum: d768fa9f9b4e1dc6453be99b753906f58990e0c45e7b2ca5a3b40a33111e5d17f6edf2f768786e2716af90a8e78f8f91431ab8435f761fef00f9b0c256f6d245 + languageName: node + linkType: hard + "lodash.snakecase@npm:^4.1.1": version: 4.1.1 resolution: "lodash.snakecase@npm:4.1.1" @@ -7704,6 +11843,20 @@ __metadata: languageName: node linkType: hard +"lodash.transform@npm:^4.6.0": + version: 4.6.0 + resolution: "lodash.transform@npm:4.6.0" + checksum: f9d0f583409212e4e94c08c0de1c9e71679e26658d2645be16ee6db55ee2572db5a8395c76f471c00c7d18f3a86c781f7ac51238a7cfa29e9cca253aa0b97149 + languageName: node + linkType: hard + +"lodash.union@npm:^4.6.0": + version: 4.6.0 + resolution: "lodash.union@npm:4.6.0" + checksum: 1514dc6508b2614ec071a6470f36eb7a70f69bf1abb6d55bdfdc21069635a4517783654b28504c0f025059a7598d37529766888e6d5902b8ab28b712228f7b2a + languageName: node + linkType: hard + "lodash.uniq@npm:^4.5.0": version: 4.5.0 resolution: "lodash.uniq@npm:4.5.0" @@ -7718,13 +11871,84 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.7.0": +"lodash@npm:^4.17.12, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.7.0": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 languageName: node linkType: hard +"log-process-errors@npm:^8.0.0": + version: 8.0.0 + resolution: "log-process-errors@npm:8.0.0" + dependencies: + colors-option: ^3.0.0 + figures: ^4.0.0 + filter-obj: ^3.0.0 + jest-validate: ^27.4.2 + map-obj: ^5.0.0 + moize: ^6.1.0 + semver: ^7.3.5 + checksum: 483015f23c8f3ae94f5f65e23edd736c749be1fc943ef575fa26d305c29f1c2ed56b499d32ff80d312256e9be5e25de4b1ce46252a5945b5a445f74c78a669ec + languageName: node + linkType: hard + +"log-symbols@npm:^1.0.2": + version: 1.0.2 + resolution: "log-symbols@npm:1.0.2" + dependencies: + chalk: ^1.0.0 + checksum: 5214ade9381db5d40528c171fdfd459b75cad7040eb6a347294ae47fa80cfebba4adbc3aa73a1c9da744cbfa240dd93b38f80df8615717affeea6c4bb6b8dfe7 + languageName: node + linkType: hard + +"log-symbols@npm:^4.0.0, log-symbols@npm:^4.1.0": + version: 4.1.0 + resolution: "log-symbols@npm:4.1.0" + dependencies: + chalk: ^4.1.0 + is-unicode-supported: ^0.1.0 + checksum: fce1497b3135a0198803f9f07464165e9eb83ed02ceb2273930a6f8a508951178d8cf4f0378e9d28300a2ed2bc49050995d2bd5f53ab716bb15ac84d58c6ef74 + languageName: node + linkType: hard + +"log-update@npm:^2.3.0": + version: 2.3.0 + resolution: "log-update@npm:2.3.0" + dependencies: + ansi-escapes: ^3.0.0 + cli-cursor: ^2.0.0 + wrap-ansi: ^3.0.1 + checksum: 84fd8e93bfc316eb6ca479a37743f2edcb7563fe5b9161205ce2980f0b3c822717b8f8f1871369697fcb0208521d7b8d00750c594edc3f8a8273dd8b48dd14a3 + languageName: node + linkType: hard + +"log-update@npm:^5.0.0": + version: 5.0.1 + resolution: "log-update@npm:5.0.1" + dependencies: + ansi-escapes: ^5.0.0 + cli-cursor: ^4.0.0 + slice-ansi: ^5.0.0 + strip-ansi: ^7.0.1 + wrap-ansi: ^8.0.1 + checksum: 2c6b47dcce6f9233df6d232a37d9834cb3657a0749ef6398f1706118de74c55f158587d4128c225297ea66803f35c5ac3db4f3f617046d817233c45eedc32ef1 + languageName: node + linkType: hard + +"logform@npm:^2.3.2, logform@npm:^2.4.0": + version: 2.4.2 + resolution: "logform@npm:2.4.2" + dependencies: + "@colors/colors": 1.5.0 + fecha: ^4.2.0 + ms: ^2.1.1 + safe-stable-stringify: ^2.3.1 + triple-beam: ^1.3.0 + checksum: 3d00f4e1ccaf0a86886aabbf66d1f1d207441d5b408f103457da6d64d055aee76c02af4b40a31ca77a1db4cbcdecb007149f731536c39cbd89b7b6ba3dda6d7b + languageName: node + linkType: hard + "long@npm:^4.0.0": version: 4.0.0 resolution: "long@npm:4.0.0" @@ -7746,6 +11970,34 @@ __metadata: languageName: node linkType: hard +"lowercase-keys@npm:1.0.0": + version: 1.0.0 + resolution: "lowercase-keys@npm:1.0.0" + checksum: 2370110c149967038fd5eb278f9b2d889eb427487c0e7fb417ab2ef4d93bacba1c8f226cf2ef1c2848b3191f37d84167d4342fbee72a1a122086680adecf362b + languageName: node + linkType: hard + +"lowercase-keys@npm:^1.0.0, lowercase-keys@npm:^1.0.1": + version: 1.0.1 + resolution: "lowercase-keys@npm:1.0.1" + checksum: 4d045026595936e09953e3867722e309415ff2c80d7701d067546d75ef698dac218a4f53c6d1d0e7368b47e45fd7529df47e6cb56fbb90523ba599f898b3d147 + languageName: node + linkType: hard + +"lowercase-keys@npm:^2.0.0": + version: 2.0.0 + resolution: "lowercase-keys@npm:2.0.0" + checksum: 24d7ebd56ccdf15ff529ca9e08863f3c54b0b9d1edb97a3ae1af34940ae666c01a1e6d200707bce730a8ef76cb57cc10e65f245ecaaf7e6bc8639f2fb460ac23 + languageName: node + linkType: hard + +"lowercase-keys@npm:^3.0.0": + version: 3.0.0 + resolution: "lowercase-keys@npm:3.0.0" + checksum: 67a3f81409af969bc0c4ca0e76cd7d16adb1e25aa1c197229587eaf8671275c8c067cd421795dbca4c81be0098e4c426a086a05e30de8a9c587b7a13c0c7ccc5 + languageName: node + linkType: hard + "lru-cache@npm:=2.3.1": version: 2.3.1 resolution: "lru-cache@npm:2.3.1" @@ -7779,7 +12031,21 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.25.3, magic-string@npm:^0.25.7": +"luxon@npm:^3.1.0": + version: 3.1.1 + resolution: "luxon@npm:3.1.1" + checksum: 388fb35d3c51a19d8b305a3338e7e74634b08562e7d2f9ed5c05a7f4bc9ee1c1ab6a2546b6d9c4c104516b24043757d65f5f3fe3d78b206fbf55a9586ab62230 + languageName: node + linkType: hard + +"macos-release@npm:^3.1.0": + version: 3.1.0 + resolution: "macos-release@npm:3.1.0" + checksum: e26c48c953c9d0e9f3ba8fc099dac8e43ea315fccd097355c6fedc4e7795a01dd018b9e0d44d40c8a745881b7dc2d65ed8b0301ceb4a004b651846fa8a039dcc + languageName: node + linkType: hard + +"magic-string@npm:^0.25.7": version: 0.25.9 resolution: "magic-string@npm:0.25.9" dependencies: @@ -7797,7 +12063,26 @@ __metadata: languageName: node linkType: hard -"make-dir@npm:^3.0.0": +"make-dir@npm:^1.0.0": + version: 1.3.0 + resolution: "make-dir@npm:1.3.0" + dependencies: + pify: ^3.0.0 + checksum: c564f6e7bb5ace1c02ad56b3a5f5e07d074af0c0b693c55c7b2c2b148882827c8c2afc7b57e43338a9f90c125b58d604e8cf3e6990a48bf949dfea8c79668c0b + languageName: node + linkType: hard + +"make-dir@npm:^2.1.0": + version: 2.1.0 + resolution: "make-dir@npm:2.1.0" + dependencies: + pify: ^4.0.1 + semver: ^5.6.0 + checksum: 043548886bfaf1820323c6a2997e6d2fa51ccc2586ac14e6f14634f7458b4db2daf15f8c310e2a0abd3e0cddc64df1890d8fc7263033602c47bb12cbfcf86aab + languageName: node + linkType: hard + +"make-dir@npm:^3.0.0, make-dir@npm:^3.1.0": version: 3.1.0 resolution: "make-dir@npm:3.1.0" dependencies: @@ -7837,6 +12122,13 @@ __metadata: languageName: node linkType: hard +"map-cache@npm:^0.2.2": + version: 0.2.2 + resolution: "map-cache@npm:0.2.2" + checksum: 3067cea54285c43848bb4539f978a15dedc63c03022abeec6ef05c8cb6829f920f13b94bcaf04142fc6a088318e564c4785704072910d120d55dbc2e0c421969 + languageName: node + linkType: hard + "map-obj@npm:^1.0.0": version: 1.0.1 resolution: "map-obj@npm:1.0.1" @@ -7851,6 +12143,22 @@ __metadata: languageName: node linkType: hard +"map-obj@npm:^5.0.0": + version: 5.0.2 + resolution: "map-obj@npm:5.0.2" + checksum: ebe5484eaf03938f447b26eaaa807b01dcc6052281972308b8818fc416c7c66503bd5482fc4eeb5374c0d25271a178d4f5e1929e6bd3dc8c1357decf4a7f0d25 + languageName: node + linkType: hard + +"map-visit@npm:^1.0.0": + version: 1.0.0 + resolution: "map-visit@npm:1.0.0" + dependencies: + object-visit: ^1.0.0 + checksum: c27045a5021c344fc19b9132eb30313e441863b2951029f8f8b66f79d3d8c1e7e5091578075a996f74e417479506fe9ede28c44ca7bc351a61c9d8073daec36a + languageName: node + linkType: hard + "markdown-extensions@npm:^1.0.0": version: 1.1.1 resolution: "markdown-extensions@npm:1.1.1" @@ -7858,6 +12166,34 @@ __metadata: languageName: node linkType: hard +"maxstache-stream@npm:^1.0.0": + version: 1.0.4 + resolution: "maxstache-stream@npm:1.0.4" + dependencies: + maxstache: ^1.0.0 + pump: ^1.0.0 + split2: ^1.0.0 + through2: ^2.0.0 + checksum: b7745d4d4cf7ae65cd3d025609c661e8263dd79c5a8cd8d5ef49cb610be1620eccb914f6063bcb7c5ffc4ddbd31530bd59d37cc230811d45dd0637d897e6c592 + languageName: node + linkType: hard + +"maxstache@npm:^1.0.0": + version: 1.0.7 + resolution: "maxstache@npm:1.0.7" + checksum: d962611c9b72373a1c1bec65b651905e412ac6d863e101cd7243f93ad384997bb13702993568d5ecc25429049f6f53f9ff74321fb5dd3e0619e945fd0c651da5 + languageName: node + linkType: hard + +"md5-hex@npm:^3.0.1": + version: 3.0.1 + resolution: "md5-hex@npm:3.0.1" + dependencies: + blueimp-md5: ^2.10.0 + checksum: 6799a19e8bdd3e0c2861b94c1d4d858a89220488d7885c1fa236797e367d0c2e5f2b789e05309307083503f85be3603a9686a5915568a473137d6b4117419cc2 + languageName: node + linkType: hard + "mdast-util-definitions@npm:^5.0.0": version: 5.1.1 resolution: "mdast-util-definitions@npm:5.1.1" @@ -7990,6 +12326,20 @@ __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 + +"memoize-one@npm:^6.0.0": + version: 6.0.0 + resolution: "memoize-one@npm:6.0.0" + checksum: f185ea69f7cceae5d1cb596266dcffccf545e8e7b4106ec6aa93b71ab9d16460dd118ac8b12982c55f6d6322fcc1485de139df07eacffaae94888b9b3ad7675f + languageName: node + linkType: hard + "memoizesync@npm:1.1.1, memoizesync@npm:^1.1.1": version: 1.1.1 resolution: "memoizesync@npm:1.1.1" @@ -8025,6 +12375,22 @@ __metadata: languageName: node linkType: hard +"merge-descriptors@npm:1.0.1": + version: 1.0.1 + resolution: "merge-descriptors@npm:1.0.1" + checksum: 5abc259d2ae25bb06d19ce2b94a21632583c74e2a9109ee1ba7fd147aa7362b380d971e0251069f8b3eb7d48c21ac839e21fa177b335e82c76ec172e30c31a26 + languageName: node + linkType: hard + +"merge-options@npm:^3.0.4": + version: 3.0.4 + resolution: "merge-options@npm:3.0.4" + dependencies: + is-plain-obj: ^2.1.0 + checksum: d86ddb3dd6e85d558dbf25dc944f3527b6bacb944db3fdda6e84a3f59c4e4b85231095f58b835758b9a57708342dee0f8de0dffa352974a48221487fe9f4584f + languageName: node + linkType: hard + "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" @@ -8039,6 +12405,27 @@ __metadata: languageName: node linkType: hard +"methods@npm:~1.1.2": + version: 1.1.2 + resolution: "methods@npm:1.1.2" + checksum: 0917ff4041fa8e2f2fda5425a955fe16ca411591fbd123c0d722fcf02b73971ed6f764d85f0a6f547ce49ee0221ce2c19a5fa692157931cecb422984f1dcd13a + languageName: node + linkType: hard + +"micro-api-client@npm:^3.3.0": + version: 3.3.0 + resolution: "micro-api-client@npm:3.3.0" + checksum: db0ad27df4c58bfb10eb4a6ad14d242d8abbae1bca623db3b23568dae6b146338ecbd62563a41a756b7a75ea155c950ddb5d633859ca728072d1852ed29dd1e2 + languageName: node + linkType: hard + +"micro-memoize@npm:^4.0.11": + version: 4.0.14 + resolution: "micro-memoize@npm:4.0.14" + checksum: 9a1c236c3e626b9a0cf323cd7ede18f972fd4474f1bcdea8e1340d9a49a1fee629f60d35baa2df8ba0d880230886d92587525d4b9c9dc14100cc39545506e1b9 + languageName: node + linkType: hard + "micromark-core-commonmark@npm:^1.0.0, micromark-core-commonmark@npm:^1.0.1": version: 1.0.6 resolution: "micromark-core-commonmark@npm:1.0.6" @@ -8380,7 +12767,28 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": +"micromatch@npm:^3.1.10": + version: 3.1.10 + resolution: "micromatch@npm:3.1.10" + dependencies: + arr-diff: ^4.0.0 + array-unique: ^0.3.2 + braces: ^2.3.1 + define-property: ^2.0.2 + extend-shallow: ^3.0.2 + extglob: ^2.0.4 + fragment-cache: ^0.2.1 + kind-of: ^6.0.2 + nanomatch: ^1.2.9 + object.pick: ^1.3.0 + regex-not: ^1.0.0 + snapdragon: ^0.8.1 + to-regex: ^3.0.2 + checksum: ad226cba4daa95b4eaf47b2ca331c8d2e038d7b41ae7ed0697cde27f3f1d6142881ab03d4da51b65d9d315eceb5e4cdddb3fbb55f5f72cfa19cf3ea469d054dc + languageName: node + linkType: hard + +"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": version: 4.0.5 resolution: "micromatch@npm:4.0.5" dependencies: @@ -8390,14 +12798,14 @@ __metadata: languageName: node linkType: hard -"mime-db@npm:1.52.0": +"mime-db@npm:1.52.0, mime-db@npm:>= 1.43.0 < 2, mime-db@npm:^1.28.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": +"mime-types@npm:^2.1.12, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -8406,7 +12814,7 @@ __metadata: languageName: node linkType: hard -"mime@npm:^1.3.4": +"mime@npm:1.6.0, mime@npm:^1.2.11, mime@npm:^1.3.4": version: 1.6.0 resolution: "mime@npm:1.6.0" bin: @@ -8415,12 +12823,10 @@ __metadata: languageName: node linkType: hard -"mime@npm:^3.0.0": - version: 3.0.0 - resolution: "mime@npm:3.0.0" - bin: - mime: cli.js - checksum: f43f9b7bfa64534e6b05bd6062961681aeb406a5b53673b53b683f27fcc4e739989941836a355eef831f4478923651ecc739f4a5f6e20a76487b432bfd4db928 +"mimic-fn@npm:^1.0.0": + version: 1.2.0 + resolution: "mimic-fn@npm:1.2.0" + checksum: 69c08205156a1f4906d9c46f9b4dc08d18a50176352e77fdeb645cedfe9f20c0b19865d465bd2dec27a5c432347f24dc07fc3695e11159d193f892834233e939 languageName: node linkType: hard @@ -8438,6 +12844,20 @@ __metadata: languageName: node linkType: hard +"mimic-response@npm:^1.0.0, mimic-response@npm:^1.0.1": + version: 1.0.1 + resolution: "mimic-response@npm:1.0.1" + checksum: 034c78753b0e622bc03c983663b1cdf66d03861050e0c8606563d149bc2b02d63f62ce4d32be4ab50d0553ae0ffe647fc34d1f5281184c6e1e8cf4d85e8d9823 + languageName: node + linkType: hard + +"mimic-response@npm:^2.0.0, mimic-response@npm:^2.1.0": + version: 2.1.0 + resolution: "mimic-response@npm:2.1.0" + checksum: 014fad6ab936657e5f2f48bd87af62a8e928ebe84472aaf9e14fec4fcb31257a5edff77324d8ac13ddc6685ba5135cf16e381efac324e5f174fb4ddbf902bf07 + languageName: node + linkType: hard + "mimic-response@npm:^3.1.0": version: 3.1.0 resolution: "mimic-response@npm:3.1.0" @@ -8445,6 +12865,13 @@ __metadata: languageName: node linkType: hard +"mimic-response@npm:^4.0.0": + version: 4.0.0 + resolution: "mimic-response@npm:4.0.0" + checksum: 33b804cc961efe206efdb1fca6a22540decdcfce6c14eb5c0c50e5ae9022267ab22ce8f5568b1f7247ba67500fe20d523d81e0e9f009b321ccd9d472e78d1850 + languageName: node + linkType: hard + "min-document@npm:^2.19.0": version: 2.19.0 resolution: "min-document@npm:2.19.0" @@ -8470,48 +12897,6 @@ __metadata: languageName: node linkType: hard -"miniflare@npm:2.10.0": - version: 2.10.0 - resolution: "miniflare@npm:2.10.0" - 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 - 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 - bin: - miniflare: bootstrap.js - checksum: f5c6103d56a5429d6d5f620eb50b2e3bfd848c40f0c12350b41f8900deff453b791aa19ae895962ead317aeae1283bd83e3b32da80f38628a0ace63d7a2c5937 - languageName: node - linkType: hard - "minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" @@ -8521,7 +12906,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^5.0.1": +"minimatch@npm:^5.0.0, minimatch@npm:^5.0.1, minimatch@npm:^5.1.0": version: 5.1.2 resolution: "minimatch@npm:5.1.2" dependencies: @@ -8627,6 +13012,16 @@ __metadata: languageName: node linkType: hard +"mixin-deep@npm:^1.2.0": + version: 1.3.2 + resolution: "mixin-deep@npm:1.3.2" + dependencies: + for-in: ^1.0.2 + is-extendable: ^1.0.1 + checksum: 820d5a51fcb7479f2926b97f2c3bb223546bc915e6b3a3eb5d906dda871bba569863595424a76682f2b15718252954644f3891437cb7e3f220949bed54b1750d + languageName: node + linkType: hard + "mkdirp-classic@npm:^0.5.2, mkdirp-classic@npm:^0.5.3": version: 0.5.3 resolution: "mkdirp-classic@npm:0.5.3" @@ -8661,6 +13056,28 @@ __metadata: languageName: node linkType: hard +"module-definition@npm:^4.0.0": + version: 4.0.0 + resolution: "module-definition@npm:4.0.0" + dependencies: + ast-module-types: ^3.0.0 + node-source-walk: ^5.0.0 + bin: + module-definition: bin/cli.js + checksum: 38e26e84b50d17017c5707cad2c08bd13b93707cce2329a5a709daa108210fb49d09a7a22c3efe83a2b188b1fd7e81029fb8f164c2a4b2814c48f98f8ab01df5 + languageName: node + linkType: hard + +"moize@npm:^6.1.0, moize@npm:^6.1.3": + version: 6.1.4 + resolution: "moize@npm:6.1.4" + dependencies: + fast-equals: ^3.0.1 + micro-memoize: ^4.0.11 + checksum: 2f37abed0f882493c943ea728046f3a67ce7c55106cd6befdbf241519317ecf811674d6e53eb3f55087850cc11bc94ac62eae00477e9acbb00a39503c721d0a9 + languageName: node + linkType: hard + "mongodb-connection-string-url@npm:^2.5.4": version: 2.6.0 resolution: "mongodb-connection-string-url@npm:2.6.0" @@ -8689,6 +13106,15 @@ __metadata: languageName: node linkType: hard +"move-file@npm:^3.0.0": + version: 3.0.0 + resolution: "move-file@npm:3.0.0" + dependencies: + path-exists: ^5.0.0 + checksum: 18b0a542b4ae7615748435ac9433166a935f7dad94a9e116a36a24941916b1421b8685ebf0b98ed9bba551aa09a1aa2959da6519cf4830b079d603f6a390c831 + languageName: node + linkType: hard + "mri@npm:^1.1.0, mri@npm:^1.1.5": version: 1.2.0 resolution: "mri@npm:1.2.0" @@ -8696,6 +13122,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" @@ -8703,7 +13136,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:^2.0.0": +"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d @@ -8723,12 +13156,21 @@ __metadata: languageName: node linkType: hard -"mustache@npm:^4.2.0": - version: 4.2.0 - resolution: "mustache@npm:4.2.0" - bin: - mustache: bin/mustache - checksum: 928fcb63e3aa44a562bfe9b59ba202cccbe40a46da50be6f0dd831b495be1dd7e38ca4657f0ecab2c1a89dc7bccba0885eab7ee7c1b215830da765758c7e0506 +"multiparty@npm:^4.2.1": + version: 4.2.3 + resolution: "multiparty@npm:4.2.3" + dependencies: + http-errors: ~1.8.1 + safe-buffer: 5.2.1 + uid-safe: 2.1.5 + checksum: 16be1f14280a78a220864e9209196ce3d9bc5e3342a5e14465e8664c8a3f0e217b370d70f0dfba953ae7f17c720f87573b7b3b01a6e9eb04330c19f547ec157a + languageName: node + linkType: hard + +"mute-stream@npm:0.0.7": + version: 0.0.7 + resolution: "mute-stream@npm:0.0.7" + checksum: a9d4772c1c84206aa37c218ed4751cd060239bf1d678893124f51e037f6f22f4a159b2918c030236c93252638a74beb29c9b1fd3267c9f24d4b3253cf1eaa86f languageName: node linkType: hard @@ -8768,7 +13210,7 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.3.3, nanoid@npm:^3.3.4": +"nanoid@npm:^3.3.4": version: 3.3.4 resolution: "nanoid@npm:3.3.4" bin: @@ -8777,6 +13219,25 @@ __metadata: languageName: node linkType: hard +"nanomatch@npm:^1.2.9": + version: 1.2.13 + resolution: "nanomatch@npm:1.2.13" + dependencies: + arr-diff: ^4.0.0 + array-unique: ^0.3.2 + define-property: ^2.0.2 + extend-shallow: ^3.0.2 + fragment-cache: ^0.2.1 + is-windows: ^1.0.2 + kind-of: ^6.0.2 + object.pick: ^1.3.0 + regex-not: ^1.0.0 + snapdragon: ^0.8.1 + to-regex: ^3.0.1 + checksum: 54d4166d6ef08db41252eb4e96d4109ebcb8029f0374f9db873bd91a1f896c32ec780d2a2ea65c0b2d7caf1f28d5e1ea33746a470f32146ac8bba821d80d38d8 + languageName: node + linkType: hard + "napi-build-utils@npm:^1.0.1": version: 1.0.2 resolution: "napi-build-utils@npm:1.0.2" @@ -8798,7 +13259,7 @@ __metadata: languageName: node linkType: hard -"negotiator@npm:^0.6.3": +"negotiator@npm:0.6.3, negotiator@npm:^0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 @@ -8812,6 +13273,187 @@ __metadata: languageName: node linkType: hard +"nested-error-stacks@npm:^2.0.0, nested-error-stacks@npm:^2.1.0, nested-error-stacks@npm:^2.1.1": + version: 2.1.1 + resolution: "nested-error-stacks@npm:2.1.1" + checksum: 5f452fad75db8480b4db584e1602894ff5977f8bf3d2822f7ba5cb7be80e89adf1fffa34dada3347ef313a4288850b4486eb0635b315c32bdfb505577e8880e3 + languageName: node + linkType: hard + +"netlify-cli@npm:^12.0.11": + version: 12.5.0 + resolution: "netlify-cli@npm:12.5.0" + dependencies: + "@netlify/build": ^29.2.2 + "@netlify/config": ^20.2.0 + "@netlify/edge-bundler": ^8.0.0 + "@netlify/framework-info": ^9.5.3 + "@netlify/local-functions-proxy": ^1.1.1 + "@netlify/zip-it-and-ship-it": ^8.2.0 + "@octokit/rest": ^19.0.0 + ansi-escapes: ^5.0.0 + ansi-styles: ^5.0.0 + ansi-to-html: ^0.7.2 + ascii-table: 0.0.9 + backoff: ^2.5.0 + better-opn: ^3.0.0 + boxen: ^5.0.0 + chalk: ^4.0.0 + chokidar: ^3.0.2 + ci-info: ^3.0.0 + clean-deep: ^3.0.2 + commander: ^9.2.0 + concordance: ^5.0.0 + configstore: ^5.0.0 + content-type: ^1.0.4 + cookie: ^0.5.0 + copy-template-dir: ^1.4.0 + cron-parser: ^4.2.1 + debug: ^4.1.1 + decache: ^4.6.0 + dot-prop: ^6.0.0 + dotenv: ^16.0.0 + env-paths: ^2.2.0 + envinfo: ^7.3.1 + etag: ^1.8.1 + execa: ^5.0.0 + express: ^4.17.1 + express-logging: ^1.1.1 + find-up: ^5.0.0 + flush-write-stream: ^2.0.0 + folder-walker: ^3.2.0 + from2-array: ^0.0.4 + fuzzy: ^0.1.3 + get-port: ^5.1.0 + gh-release-fetch: ^3.0.0 + git-repo-info: ^2.1.0 + gitconfiglocal: ^2.1.0 + hasbin: ^1.2.3 + hasha: ^5.2.2 + http-proxy: ^1.18.0 + http-proxy-middleware: ^2.0.0 + https-proxy-agent: ^5.0.0 + inquirer: ^6.5.1 + inquirer-autocomplete-prompt: ^1.0.1 + is-docker: ^2.0.0 + is-plain-obj: ^3.0.0 + is-wsl: ^2.2.0 + isexe: ^2.0.0 + jsonwebtoken: ^8.5.1 + jwt-decode: ^3.0.0 + lambda-local: ^2.0.1 + listr: ^0.14.3 + locate-path: ^6.0.0 + lodash: ^4.17.20 + log-symbols: ^4.0.0 + log-update: ^5.0.0 + minimist: ^1.2.5 + multiparty: ^4.2.1 + netlify: ^13.1.0 + netlify-headers-parser: ^7.1.0 + netlify-onegraph-internal: 0.10.1 + netlify-redirect-parser: ^14.1.0 + netlify-redirector: ^0.3.1 + node-fetch: ^2.6.0 + node-version-alias: ^1.0.1 + ora: ^5.0.0 + p-filter: ^2.1.0 + p-map: ^4.0.0 + p-wait-for: ^3.0.0 + parallel-transform: ^1.2.0 + parse-github-url: ^1.0.2 + parse-gitignore: ^2.0.0 + path-key: ^3.1.1 + prettyjson: ^1.2.1 + pump: ^3.0.0 + raw-body: ^2.4.1 + read-pkg-up: ^7.0.1 + semver: ^7.3.5 + source-map-support: ^0.5.19 + static-server: ^2.2.1 + string-similarity: ^4.0.4 + strip-ansi-control-characters: ^2.0.0 + tabtab: ^3.0.2 + tempy: ^1.0.0 + terminal-link: ^2.1.1 + through2-filter: ^3.0.0 + through2-map: ^3.0.0 + to-readable-stream: ^2.1.0 + toml: ^3.0.0 + unixify: ^1.0.0 + update-notifier: ^6.0.0 + uuid: ^9.0.0 + wait-port: ^1.0.1 + winston: ^3.2.1 + write-file-atomic: ^4.0.0 + bin: + netlify: bin/run.mjs + ntl: bin/run.mjs + checksum: 2e6fc497078ad05a7645031f28bdcf31b5f8305ed762707c74d04a43b5671534b9a71dc2dc69fdb3dd9acecda7c14c872ad9941db647b22e52a86714873ff9f5 + languageName: node + linkType: hard + +"netlify-headers-parser@npm:^7.1.0": + version: 7.1.0 + resolution: "netlify-headers-parser@npm:7.1.0" + dependencies: + escape-string-regexp: ^5.0.0 + fast-safe-stringify: ^2.0.7 + is-plain-obj: ^4.0.0 + map-obj: ^5.0.0 + path-exists: ^5.0.0 + toml: ^3.0.0 + checksum: aee5eee2490e081b8a7ab3ff8bafd19041361574e71a80ad37e92d35b346df6d713dffe7bde85475dda888930817de05538b644f52db0345e69cbdba4b975004 + languageName: node + linkType: hard + +"netlify-onegraph-internal@npm:0.10.1": + version: 0.10.1 + resolution: "netlify-onegraph-internal@npm:0.10.1" + dependencies: + graphql: 16.5.0 + node-fetch: ^2.6.0 + rusha: ^0.8.14 + uuid: ^8.3.2 + checksum: 5be4cfa8bf396a4f579baec586e8726a8d8a4a03d2407ac30578a822a27da2b0f4bd3440d3e025b5dc3ff075cedc373abcd704df126dd4e73870c1f374ad6f5b + languageName: node + linkType: hard + +"netlify-redirect-parser@npm:^14.1.0": + version: 14.1.0 + resolution: "netlify-redirect-parser@npm:14.1.0" + dependencies: + fast-safe-stringify: ^2.1.1 + filter-obj: ^3.0.0 + is-plain-obj: ^4.0.0 + path-exists: ^5.0.0 + toml: ^3.0.0 + checksum: 8a5f9a501d18e674726f5dfdd30d6c6cf171499a05ce3a7773869a72e5b1811e552f5a7c7258e83fdde60ddd2a36e7b183c9827ca240dd2fa91ece9a28aa7b58 + languageName: node + linkType: hard + +"netlify-redirector@npm:^0.3.1": + version: 0.3.1 + resolution: "netlify-redirector@npm:0.3.1" + checksum: 057322f8ab369f6e4a579da40ce741f0e434f1db155c75aaf5a9314265e1886c51f2fcfee12719c170e2c86c13eab2edfd3d8ffa6e1132199240c9ea7e689c89 + languageName: node + linkType: hard + +"netlify@npm:^13.1.0": + version: 13.1.0 + resolution: "netlify@npm:13.1.0" + dependencies: + "@netlify/open-api": ^2.12.0 + lodash-es: ^4.17.21 + micro-api-client: ^3.3.0 + node-fetch: ^3.0.0 + omit.js: ^2.0.2 + p-wait-for: ^4.0.0 + qs: ^6.9.6 + checksum: ad03da793b1c73d83984917ba68570b0da123133a94848363dfa07500fd9dba385b2b1fb12184937d1686b529af5f4b0cf2f6811b40bc747693d7e1221cf8eda + languageName: node + linkType: hard + "no-case@npm:^2.2.0": version: 2.3.2 resolution: "no-case@npm:2.3.2" @@ -8846,18 +13488,7 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:3.3.0": - version: 3.3.0 - resolution: "node-fetch@npm:3.3.0" - dependencies: - data-uri-to-buffer: ^4.0.0 - fetch-blob: ^3.1.4 - formdata-polyfill: ^4.0.10 - checksum: e9936908d2783d3c48a038e187f8062de294d75ef43ec8ab812d7cbd682be2b67605868758d2e9cad6103706dcfe4a9d21d78f6df984e8edf10e7a5ce2e665f8 - languageName: node - linkType: hard - -"node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.7": +"node-fetch@npm:^2.3.0, node-fetch@npm:^2.6.0, node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.7": version: 2.6.7 resolution: "node-fetch@npm:2.6.7" dependencies: @@ -8871,10 +13502,25 @@ __metadata: languageName: node linkType: hard -"node-forge@npm:^1": - version: 1.3.1 - resolution: "node-forge@npm:1.3.1" - checksum: 08fb072d3d670599c89a1704b3e9c649ff1b998256737f0e06fbd1a5bf41cae4457ccaee32d95052d80bbafd9ffe01284e078c8071f0267dc9744e51c5ed42a9 +"node-fetch@npm:^3.0.0, node-fetch@npm:^3.1.1, node-fetch@npm:^3.3.0": + version: 3.3.0 + resolution: "node-fetch@npm:3.3.0" + dependencies: + data-uri-to-buffer: ^4.0.0 + fetch-blob: ^3.1.4 + formdata-polyfill: ^4.0.10 + checksum: e9936908d2783d3c48a038e187f8062de294d75ef43ec8ab812d7cbd682be2b67605868758d2e9cad6103706dcfe4a9d21d78f6df984e8edf10e7a5ce2e665f8 + languageName: node + linkType: hard + +"node-gyp-build@npm:^4.2.2": + version: 4.5.0 + resolution: "node-gyp-build@npm:4.5.0" + bin: + node-gyp-build: bin.js + node-gyp-build-optional: optional.js + node-gyp-build-test: build-test.js + checksum: d888bae0fb88335f69af1b57a2294a931c5042f36e413d8d364c992c9ebfa0b96ffe773179a5a2c8f04b73856e8634e09cce108dbb9804396d3cc8c5455ff2db languageName: node linkType: hard @@ -8905,6 +13551,63 @@ __metadata: languageName: node linkType: hard +"node-source-walk@npm:^4.0.0": + version: 4.3.0 + resolution: "node-source-walk@npm:4.3.0" + dependencies: + "@babel/parser": ^7.0.0 + checksum: 124bcec61f73141a5f13e63f773beb00c9a9620e9eec6d7505b9de8fa884797f3eb0b9e9d225bb324930234ae03b28a4a7a231e2c2f23d71405d4a562b404e34 + languageName: node + linkType: hard + +"node-source-walk@npm:^5.0.0": + version: 5.0.0 + resolution: "node-source-walk@npm:5.0.0" + dependencies: + "@babel/parser": ^7.0.0 + checksum: 5739870ebbe41a06936887aaf2eac4aba8187bbe6358f5dc649c4eb9545121712eabfa90d06fa73a90d04242057bd36cad5e991380dc354679ad32f268e1499d + languageName: node + linkType: hard + +"node-stream-zip@npm:^1.15.0": + version: 1.15.0 + resolution: "node-stream-zip@npm:1.15.0" + checksum: 0b73ffbb09490e479c8f47038d7cba803e6242618fbc1b71c26782009d388742ed6fb5ce6e9d31f528b410249e7eb1c6e7534e9d3792a0cafd99813ac5a35107 + languageName: node + linkType: hard + +"node-version-alias@npm:^1.0.1": + version: 1.0.1 + resolution: "node-version-alias@npm:1.0.1" + dependencies: + all-node-versions: ^8.0.0 + filter-obj: ^2.0.1 + jest-validate: ^25.3.0 + normalize-node-version: ^10.0.0 + path-exists: ^4.0.0 + semver: ^7.3.2 + checksum: 555f2bc934382d70120c2e1e61b4156c0115cca38eb69d64e2e8214bd7375bea6b65c2c40841df188450eb5e024fc3d8e94555834fc62f13248e4ab0b3a160f2 + languageName: node + linkType: hard + +"noop2@npm:^2.0.0": + version: 2.0.0 + resolution: "noop2@npm:2.0.0" + checksum: 03232b88fb1d6e89bf7111f9129b39c73c4c67ef68fbbeb4e7adc0a41472df55bb4e653f320a18de93aa71096a5848ff41002ecad6c874241cc332ace56843ae + languageName: node + linkType: hard + +"nopt@npm:^5.0.0": + version: 5.0.0 + resolution: "nopt@npm:5.0.0" + dependencies: + abbrev: 1 + bin: + nopt: bin/nopt.js + checksum: d35fdec187269503843924e0114c0c6533fb54bbf1620d0f28b4b60ba01712d6687f62565c55cc20a504eff0fbe5c63e22340c3fad549ad40469ffb611b04f2f + languageName: node + linkType: hard + "nopt@npm:^6.0.0": version: 6.0.0 resolution: "nopt@npm:6.0.0" @@ -8916,6 +13619,18 @@ __metadata: languageName: node linkType: hard +"normalize-node-version@npm:^10.0.0": + version: 10.0.0 + resolution: "normalize-node-version@npm:10.0.0" + dependencies: + all-node-versions: ^8.0.0 + filter-obj: ^2.0.1 + jest-validate: ^25.3.0 + semver: ^7.3.2 + checksum: 1bbcf9c27ed293b6135c4aef4def23f79311bee8663be68802e80bd3bbab40b9f7b949906e01a4d01515c7e4e9246d21337493e2ab9546efee7856be592dcec1 + languageName: node + linkType: hard + "normalize-package-data@npm:^2.3.2, normalize-package-data@npm:^2.5.0": version: 2.5.0 resolution: "normalize-package-data@npm:2.5.0" @@ -8928,7 +13643,7 @@ __metadata: languageName: node linkType: hard -"normalize-package-data@npm:^3.0.0": +"normalize-package-data@npm:^3.0.0, normalize-package-data@npm:^3.0.2": version: 3.0.3 resolution: "normalize-package-data@npm:3.0.3" dependencies: @@ -8940,6 +13655,15 @@ __metadata: languageName: node linkType: hard +"normalize-path@npm:^2.1.1": + version: 2.1.1 + resolution: "normalize-path@npm:2.1.1" + dependencies: + remove-trailing-separator: ^1.0.1 + checksum: 7e9cbdcf7f5b8da7aa191fbfe33daf290cdcd8c038f422faf1b8a83c972bf7a6d94c5be34c4326cb00fb63bc0fd97d9fbcfaf2e5d6142332c2cd36d2e1b86cea + languageName: node + linkType: hard + "normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": version: 3.0.0 resolution: "normalize-path@npm:3.0.0" @@ -8954,6 +13678,24 @@ __metadata: languageName: node linkType: hard +"normalize-url@npm:2.0.1": + version: 2.0.1 + resolution: "normalize-url@npm:2.0.1" + dependencies: + prepend-http: ^2.0.0 + query-string: ^5.0.1 + sort-keys: ^2.0.0 + checksum: 30e337ee03fc7f360c7d2b966438657fabd2628925cc58bffc893982fe4d2c59b397ae664fa2c319cd83565af73eee88906e80bc5eec91bc32b601920e770d75 + languageName: node + linkType: hard + +"normalize-url@npm:^4.1.0": + version: 4.5.1 + resolution: "normalize-url@npm:4.5.1" + checksum: 9a9dee01df02ad23e171171893e56e22d752f7cff86fb96aafeae074819b572ea655b60f8302e2d85dbb834dc885c972cc1c573892fea24df46b2765065dd05a + languageName: node + linkType: hard + "normalize-url@npm:^6.0.1": version: 6.1.0 resolution: "normalize-url@npm:6.1.0" @@ -8961,6 +13703,13 @@ __metadata: languageName: node linkType: hard +"normalize-url@npm:^8.0.0": + version: 8.0.0 + resolution: "normalize-url@npm:8.0.0" + checksum: 24c20b75ebfd526d8453084692720b49d111c63c0911f1b7447427829597841eef5a8ba3f6bb93d6654007b991c1f5cd85da2c907800e439e2e2ec6c2abd0fc0 + languageName: node + linkType: hard + "normalizeurl@npm:^1.0.0": version: 1.0.0 resolution: "normalizeurl@npm:1.0.0" @@ -8986,6 +13735,18 @@ __metadata: languageName: node linkType: hard +"npmlog@npm:^5.0.1": + version: 5.0.1 + resolution: "npmlog@npm:5.0.1" + dependencies: + are-we-there-yet: ^2.0.0 + console-control-strings: ^1.1.0 + gauge: ^3.0.0 + set-blocking: ^2.0.0 + checksum: 516b2663028761f062d13e8beb3f00069c5664925871a9b57989642ebe09f23ab02145bf3ab88da7866c4e112cafff72401f61a672c7c8a20edc585a7016ef5f + languageName: node + linkType: hard + "npmlog@npm:^6.0.0": version: 6.0.2 resolution: "npmlog@npm:6.0.2" @@ -8998,18 +13759,6 @@ __metadata: languageName: node linkType: hard -"npx-import@npm:^1.1.3": - version: 1.1.4 - resolution: "npx-import@npm:1.1.4" - dependencies: - execa: ^6.1.0 - parse-package-name: ^1.0.0 - semver: ^7.3.7 - validate-npm-package-name: ^4.0.0 - checksum: 7557d0c7d23bc0084e8da489c8e7b5cafcd1ee720826ca96f2b8388d64955b28cea36f2fefc8cb4835cb34795bf3ee26c20b2e8bcfbec626db50e3954240937c - languageName: node - linkType: hard - "nth-check@npm:^2.0.1": version: 2.1.1 resolution: "nth-check@npm:2.1.1" @@ -9019,6 +13768,13 @@ __metadata: languageName: node linkType: hard +"number-is-nan@npm:^1.0.0": + version: 1.0.1 + resolution: "number-is-nan@npm:1.0.1" + checksum: 13656bc9aa771b96cef209ffca31c31a03b507ca6862ba7c3f638a283560620d723d52e626d57892c7fff475f4c36ac07f0600f14544692ff595abff214b9ffb + languageName: node + linkType: hard + "nwsapi@npm:^2.2.0": version: 2.2.2 resolution: "nwsapi@npm:2.2.2" @@ -9033,13 +13789,24 @@ __metadata: languageName: node linkType: hard -"object-assign@npm:^4.0.1": +"object-assign@npm:^4.0.1, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f languageName: node linkType: hard +"object-copy@npm:^0.1.0": + version: 0.1.0 + resolution: "object-copy@npm:0.1.0" + dependencies: + copy-descriptor: ^0.1.0 + define-property: ^0.2.5 + kind-of: ^3.0.3 + checksum: a9e35f07e3a2c882a7e979090360d1a20ab51d1fa19dfdac3aa8873b328a7c4c7683946ee97c824ae40079d848d6740a3788fa14f2185155dab7ed970a72c783 + languageName: node + linkType: hard + "object-hash@npm:^3.0.0": version: 3.0.0 resolution: "object-hash@npm:3.0.0" @@ -9071,6 +13838,15 @@ __metadata: languageName: node linkType: hard +"object-visit@npm:^1.0.0": + version: 1.0.1 + resolution: "object-visit@npm:1.0.1" + dependencies: + isobject: ^3.0.0 + checksum: b0ee07f5bf3bb881b881ff53b467ebbde2b37ebb38649d6944a6cd7681b32eedd99da9bd1e01c55facf81f54ed06b13af61aba6ad87f0052982995e09333f790 + languageName: node + linkType: hard + "object.assign@npm:^4.1.4": version: 4.1.4 resolution: "object.assign@npm:4.1.4" @@ -9083,6 +13859,38 @@ __metadata: languageName: node linkType: hard +"object.pick@npm:^1.3.0": + version: 1.3.0 + resolution: "object.pick@npm:1.3.0" + dependencies: + isobject: ^3.0.1 + checksum: 77fb6eed57c67adf75e9901187e37af39f052ef601cb4480386436561357eb9e459e820762f01fd02c5c1b42ece839ad393717a6d1850d848ee11fbabb3e580a + languageName: node + linkType: hard + +"omit.js@npm:^2.0.2": + version: 2.0.2 + resolution: "omit.js@npm:2.0.2" + checksum: 5d802b9fd7640250aada82f3b9b7243b554b38911f29b3de0d1066c00f24dd4ee72d3b9c94c582e373fb6511bd21e107917d419a7b2a04287f26c31133b48a15 + 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 + +"on-headers@npm:^1.0.0, on-headers@npm:~1.0.2": + version: 1.0.2 + resolution: "on-headers@npm:1.0.2" + checksum: 2bf13467215d1e540a62a75021e8b318a6cfc5d4fc53af8e8f84ad98dbcea02d506c6d24180cd62e1d769c44721ba542f3154effc1f7579a8288c9f7873ed8e5 + 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" @@ -9092,6 +13900,24 @@ __metadata: languageName: node linkType: hard +"one-time@npm:^1.0.0": + version: 1.0.0 + resolution: "one-time@npm:1.0.0" + dependencies: + fn.name: 1.x.x + checksum: fd008d7e992bdec1c67f53a2f9b46381ee12a9b8c309f88b21f0223546003fb47e8ad7c1fd5843751920a8d276c63bd4b45670ef80c61fb3e07dbccc962b5c7d + languageName: node + linkType: hard + +"onetime@npm:^2.0.0": + version: 2.0.1 + resolution: "onetime@npm:2.0.1" + dependencies: + mimic-fn: ^1.0.0 + checksum: bb44015ac7a525d0fb43b029a583d4ad359834632b4424ca209b438aacf6d669dda81b5edfbdb42c22636e607b276ba5589f46694a729e3bc27948ce26f4cc1a + languageName: node + linkType: hard + "onetime@npm:^5.1.0, onetime@npm:^5.1.2": version: 5.1.2 resolution: "onetime@npm:5.1.2" @@ -9122,6 +13948,26 @@ __metadata: languageName: node linkType: hard +"open@npm:^8.0.4": + version: 8.4.0 + resolution: "open@npm:8.4.0" + dependencies: + define-lazy-prop: ^2.0.0 + is-docker: ^2.1.1 + is-wsl: ^2.2.0 + checksum: e9545bec64cdbf30a0c35c1bdc310344adf8428a117f7d8df3c0af0a0a24c513b304916a6d9b11db0190ff7225c2d578885080b761ed46a3d5f6f1eebb98b63c + languageName: node + linkType: hard + +"opn@npm:^5.2.0": + version: 5.5.0 + resolution: "opn@npm:5.5.0" + dependencies: + is-wsl: ^1.1.0 + checksum: 35b677b5a1fd6c8cb1996b0607671ba79f7ce9fa029217d54eafaf6bee13eb7e700691c6a415009140fd02a435fffdfd143875f3b233b60f3f9d631c6f6b81a0 + languageName: node + linkType: hard + "optionator@npm:^0.8.1": version: 0.8.3 resolution: "optionator@npm:0.8.3" @@ -9150,6 +13996,145 @@ __metadata: languageName: node linkType: hard +"ora@npm:^5.0.0": + version: 5.4.1 + resolution: "ora@npm:5.4.1" + 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 + checksum: 28d476ee6c1049d68368c0dc922e7225e3b5600c3ede88fade8052837f9ed342625fdaa84a6209302587c8ddd9b664f71f0759833cbdb3a4cf81344057e63c63 + languageName: node + linkType: hard + +"os-name@npm:^5.0.0": + version: 5.1.0 + resolution: "os-name@npm:5.1.0" + dependencies: + macos-release: ^3.1.0 + windows-release: ^5.0.1 + checksum: fae0fc02601d2966ee3255e80a6b3ac5d04265228d7b08563b4a8f2057732250cdff80b7ec33de2fef565cd92104078e71f4959fc081c6d197e2ec03a760ca42 + languageName: node + linkType: hard + +"os-tmpdir@npm:~1.0.2": + version: 1.0.2 + resolution: "os-tmpdir@npm:1.0.2" + checksum: 5666560f7b9f10182548bf7013883265be33620b1c1b4a4d405c25be2636f970c5488ff3e6c48de75b55d02bde037249fe5dbfbb4c0fb7714953d56aed062e6d + languageName: node + linkType: hard + +"p-all@npm:^2.1.0": + version: 2.1.0 + resolution: "p-all@npm:2.1.0" + dependencies: + p-map: ^2.0.0 + checksum: 6c20134eb3f16dca270d04a40cd14d2d05012b5a5762ca4f89962ae03a5fc13e13b09f64626a780f10bbe4e204b9370f708c6d8c079296bd2512d7e15462c76f + languageName: node + linkType: hard + +"p-cancelable@npm:^0.4.0": + version: 0.4.1 + resolution: "p-cancelable@npm:0.4.1" + checksum: d11144d72ee3a99f62fe595cb0e13b8585ea73c3807b4a9671744f1bf5d3ccddb049247a4ec3ceff05ca4adba9d0bb0f1862829daf20795bf528c86fa088509c + languageName: node + linkType: hard + +"p-cancelable@npm:^1.0.0": + version: 1.1.0 + resolution: "p-cancelable@npm:1.1.0" + checksum: 2db3814fef6d9025787f30afaee4496a8857a28be3c5706432cbad76c688a6db1874308f48e364a42f5317f5e41e8e7b4f2ff5c8ff2256dbb6264bc361704ece + languageName: node + linkType: hard + +"p-cancelable@npm:^2.0.0": + version: 2.1.1 + resolution: "p-cancelable@npm:2.1.1" + checksum: 3dba12b4fb4a1e3e34524535c7858fc82381bbbd0f247cc32dedc4018592a3950ce66b106d0880b4ec4c2d8d6576f98ca885dc1d7d0f274d1370be20e9523ddf + languageName: node + linkType: hard + +"p-cancelable@npm:^3.0.0": + version: 3.0.0 + resolution: "p-cancelable@npm:3.0.0" + checksum: 2b5ae34218f9c2cf7a7c18e5d9a726ef9b165ef07e6c959f6738371509e747334b5f78f3bcdeb03d8a12dcb978faf641fd87eb21486ed7d36fb823b8ddef3219 + languageName: node + linkType: hard + +"p-event@npm:^2.1.0": + version: 2.3.1 + resolution: "p-event@npm:2.3.1" + dependencies: + p-timeout: ^2.0.1 + checksum: 7f973c4c001045bcd561202fc1b2bdf9e148182bb28a7bafa8e7b2ebfaf71a4f9ba91554222040d364290e707e3ebbb049122b8eda9d2aac413b4cf8de0b79ff + languageName: node + linkType: hard + +"p-event@npm:^4.0.0, p-event@npm:^4.1.0": + version: 4.2.0 + resolution: "p-event@npm:4.2.0" + dependencies: + p-timeout: ^3.1.0 + checksum: 8a3588f7a816a20726a3262dfeee70a631e3997e4773d23219176333eda55cce9a76219e3d2b441b331eb746e14fdb381eb2694ab9ff2fcf87c846462696fe89 + languageName: node + linkType: hard + +"p-event@npm:^5.0.0, p-event@npm:^5.0.1": + version: 5.0.1 + resolution: "p-event@npm:5.0.1" + dependencies: + p-timeout: ^5.0.2 + checksum: 3bdd8df6092e6b149f25e9c2eb1c0843b3b4279b07be2a2c72c02b65b267a8908c2040fefd606f2497b0f2bcefcd214f8ca5a74f0c883515d400ccf1d88d5683 + languageName: node + linkType: hard + +"p-every@npm:^2.0.0": + version: 2.0.0 + resolution: "p-every@npm:2.0.0" + dependencies: + p-map: ^2.0.0 + checksum: 00f8ce2ed4790a452e2967c5a783b54b8a3aa25cfd080bb2c306c3ce8b3dd08ad57bd53b001c7e41b1c925715db455ca0fc7381fd6888a310eafc59a18bffeef + languageName: node + linkType: hard + +"p-filter@npm:^2.1.0": + version: 2.1.0 + resolution: "p-filter@npm:2.1.0" + dependencies: + p-map: ^2.0.0 + checksum: 76e552ca624ce2233448d68b19eec9de42b695208121998f7e011edce71d1079a83096ee6a2078fb2a59cfa8a5c999f046edf00ebf16a8e780022010b4693234 + languageName: node + linkType: hard + +"p-filter@npm:^3.0.0": + version: 3.0.0 + resolution: "p-filter@npm:3.0.0" + dependencies: + p-map: ^5.1.0 + checksum: aacc36820f0531c01963334edc6debf5038b47c83a1c2255b7c14f6964a9a5fc1887ce0b93e72d137727403253bcc9bb26eed9bb79896ece1fa9f52d979bb97b + languageName: node + linkType: hard + +"p-finally@npm:^1.0.0": + version: 1.0.0 + resolution: "p-finally@npm:1.0.0" + checksum: 93a654c53dc805dd5b5891bab16eb0ea46db8f66c4bfd99336ae929323b1af2b70a8b0654f8f1eae924b2b73d037031366d645f1fd18b3d30cbd15950cc4b1d4 + languageName: node + linkType: hard + +"p-is-promise@npm:^1.1.0": + version: 1.1.0 + resolution: "p-is-promise@npm:1.1.0" + checksum: 64d7c6cda18af2c91c04209e5856c54d1a9818662d2320b34153d446645f431307e04406969a1be00cad680288e86dcf97b9eb39edd5dc4d0b1bd714ee85e13b + languageName: node + linkType: hard + "p-limit@npm:^1.1.0": version: 1.3.0 resolution: "p-limit@npm:1.3.0" @@ -9177,6 +14162,15 @@ __metadata: languageName: node linkType: hard +"p-limit@npm:^4.0.0": + version: 4.0.0 + resolution: "p-limit@npm:4.0.0" + dependencies: + yocto-queue: ^1.0.0 + checksum: 01d9d70695187788f984226e16c903475ec6a947ee7b21948d6f597bed788e3112cc7ec2e171c1d37125057a5f45f3da21d8653e04a3a793589e12e9e80e756b + languageName: node + linkType: hard + "p-locate@npm:^2.0.0": version: 2.0.0 resolution: "p-locate@npm:2.0.0" @@ -9213,6 +14207,31 @@ __metadata: languageName: node linkType: hard +"p-locate@npm:^6.0.0": + version: 6.0.0 + resolution: "p-locate@npm:6.0.0" + dependencies: + p-limit: ^4.0.0 + checksum: 2bfe5234efa5e7a4e74b30a5479a193fdd9236f8f6b4d2f3f69e3d286d9a7d7ab0c118a2a50142efcf4e41625def635bd9332d6cbf9cc65d85eb0718c579ab38 + languageName: node + linkType: hard + +"p-map@npm:^2.0.0": + version: 2.1.0 + resolution: "p-map@npm:2.1.0" + checksum: 9e3ad3c9f6d75a5b5661bcad78c91f3a63849189737cd75e4f1225bf9ac205194e5c44aac2ef6f09562b1facdb9bd1425584d7ac375bfaa17b3f1a142dab936d + languageName: node + linkType: hard + +"p-map@npm:^3.0.0": + version: 3.0.0 + resolution: "p-map@npm:3.0.0" + dependencies: + aggregate-error: ^3.0.0 + checksum: 49b0fcbc66b1ef9cd379de1b4da07fa7a9f84b41509ea3f461c31903623aaba8a529d22f835e0d77c7cb9fcc16e4fae71e308fd40179aea514ba68f27032b5d5 + languageName: node + linkType: hard + "p-map@npm:^4.0.0": version: 4.0.0 resolution: "p-map@npm:4.0.0" @@ -9222,6 +14241,57 @@ __metadata: languageName: node linkType: hard +"p-map@npm:^5.0.0, p-map@npm:^5.1.0, p-map@npm:^5.5.0": + version: 5.5.0 + resolution: "p-map@npm:5.5.0" + dependencies: + aggregate-error: ^4.0.0 + checksum: 065cb6fca6b78afbd070dd9224ff160dc23eea96e57863c09a0c8ea7ce921043f76854be7ee0abc295cff1ac9adcf700e79a1fbe3b80b625081087be58e7effb + languageName: node + linkType: hard + +"p-reduce@npm:^3.0.0": + version: 3.0.0 + resolution: "p-reduce@npm:3.0.0" + checksum: 387de355e906c07159d5e6270f3b58b7c7c7349ec7294ba0a9cff2a2e2faa8c602b841b079367685d3fa166a3ee529db7aaa73fadc936987c35e90f0ba64d955 + languageName: node + linkType: hard + +"p-retry@npm:^5.1.1": + version: 5.1.2 + resolution: "p-retry@npm:5.1.2" + dependencies: + "@types/retry": 0.12.1 + retry: ^0.13.1 + checksum: f063c08b1adc3cf7c01de01eb2dbda841970229f9f229c5167ebf4e2080d8a38b1f4e6eccefac74bca97cfaf4436d0a0eeb0b551175b26bc8b3116195f61bba8 + languageName: node + linkType: hard + +"p-timeout@npm:^2.0.1": + version: 2.0.1 + resolution: "p-timeout@npm:2.0.1" + dependencies: + p-finally: ^1.0.0 + checksum: 9205a661173f03adbeabda8e02826de876376b09c99768bdc33e5b25ae73230e3ac00e520acedbe3cf05fbd3352fb02efbd3811a9a021b148fb15eb07e7accac + languageName: node + linkType: hard + +"p-timeout@npm:^3.0.0, p-timeout@npm:^3.1.0": + version: 3.2.0 + resolution: "p-timeout@npm:3.2.0" + dependencies: + p-finally: ^1.0.0 + checksum: 3dd0eaa048780a6f23e5855df3dd45c7beacff1f820476c1d0d1bcd6648e3298752ba2c877aa1c92f6453c7dd23faaf13d9f5149fc14c0598a142e2c5e8d649c + languageName: node + linkType: hard + +"p-timeout@npm:^5.0.0, p-timeout@npm:^5.0.2": + version: 5.1.0 + resolution: "p-timeout@npm:5.1.0" + checksum: f5cd4e17301ff1ff1d8dbf2817df0ad88c6bba99349fc24d8d181827176ad4f8aca649190b8a5b1a428dfd6ddc091af4606835d3e0cb0656e04045da5c9e270c + languageName: node + linkType: hard + "p-try@npm:^1.0.0": version: 1.0.0 resolution: "p-try@npm:1.0.0" @@ -9236,6 +14306,48 @@ __metadata: languageName: node linkType: hard +"p-wait-for@npm:^3.0.0": + version: 3.2.0 + resolution: "p-wait-for@npm:3.2.0" + dependencies: + p-timeout: ^3.0.0 + checksum: 7f6840e9233d96836a233dee9c5b1c711bfdf76228d0eaea68fa74a79418f5eef6dc1915dadd28d17312a99f6a53daa308b1c18b779bc9c1dabcae3d6b35a086 + languageName: node + linkType: hard + +"p-wait-for@npm:^4.0.0, p-wait-for@npm:^4.1.0": + version: 4.1.0 + resolution: "p-wait-for@npm:4.1.0" + dependencies: + p-timeout: ^5.0.0 + checksum: 4f3ad4aa52b86d9f73ad558dcb00f9df6727a2c6c42dc1ba46e5ae2505898801f09016d753fd9ecb26eac925ba33ff7f8dbc0981856132c895d9df87dbb25d57 + languageName: node + linkType: hard + +"package-json@npm:^6.3.0": + version: 6.5.0 + resolution: "package-json@npm:6.5.0" + dependencies: + got: ^9.6.0 + registry-auth-token: ^4.0.0 + registry-url: ^5.0.0 + semver: ^6.2.0 + checksum: cc9f890d3667d7610e6184decf543278b87f657d1ace0deb4a9c9155feca738ef88f660c82200763d3348010f4e42e9c7adc91e96ab0f86a770955995b5351e2 + languageName: node + linkType: hard + +"package-json@npm:^8.1.0": + version: 8.1.0 + resolution: "package-json@npm:8.1.0" + dependencies: + got: ^12.1.0 + registry-auth-token: ^5.0.1 + registry-url: ^6.0.0 + semver: ^7.3.7 + checksum: 28c16ef0296915533c3dec9ce579fd6ea8ac62df0cd0b4b44e65a45506fda781cf1d1fd4a083fe90af3e041a9514b6be30562d85689da450986aff43dc856cc7 + languageName: node + linkType: hard + "pako@npm:^0.2.5": version: 0.2.9 resolution: "pako@npm:0.2.9" @@ -9250,6 +14362,17 @@ __metadata: languageName: node linkType: hard +"parallel-transform@npm:^1.2.0": + version: 1.2.0 + resolution: "parallel-transform@npm:1.2.0" + dependencies: + cyclist: ^1.0.1 + inherits: ^2.0.3 + readable-stream: ^2.1.5 + checksum: ab6ddc1a662cefcfb3d8d546a111763d3b223f484f2e9194e33aefd8f6760c319d0821fd22a00a3adfbd45929b50d2c84cc121389732f013c2ae01c226269c27 + languageName: node + linkType: hard + "param-case@npm:^2.1.1": version: 2.1.1 resolution: "param-case@npm:2.1.1" @@ -9308,6 +14431,22 @@ __metadata: languageName: node linkType: hard +"parse-github-url@npm:^1.0.2": + version: 1.0.2 + resolution: "parse-github-url@npm:1.0.2" + bin: + parse-github-url: ./cli.js + checksum: a19b8bc6f8908a24cb63a10ff90cd39cec0745615a272ec686803684653be34eb3e638e31a66c8ee3a9568082ff686eaf010181688000a6274c86a23e9220f2f + languageName: node + linkType: hard + +"parse-gitignore@npm:^2.0.0": + version: 2.0.0 + resolution: "parse-gitignore@npm:2.0.0" + checksum: 81e2fc56aefe004bb1c2b70f69a4a599969c21d2e4ee66e1e9c7eb84ae30286a25cf84d3a3b09e8b1772fd0e2b028560d97998f2e2ad1c3eebb89f84cedf36ea + languageName: node + linkType: hard + "parse-headers@npm:^2.0.0": version: 2.0.5 resolution: "parse-headers@npm:2.0.5" @@ -9325,7 +14464,7 @@ __metadata: languageName: node linkType: hard -"parse-json@npm:^5.0.0": +"parse-json@npm:^5.0.0, parse-json@npm:^5.2.0": version: 5.2.0 resolution: "parse-json@npm:5.2.0" dependencies: @@ -9337,10 +14476,10 @@ __metadata: languageName: node linkType: hard -"parse-package-name@npm:^1.0.0": - version: 1.0.0 - resolution: "parse-package-name@npm:1.0.0" - checksum: dfbfa8ce7a1f84340a59b2b5dd7d64f2de49a8cbd22621714d5042b7cce436e726b081e400e66341a1d27f1dd50c5c55c48be308e03415b567dc6a1d71314168 +"parse-ms@npm:^2.1.0": + version: 2.1.0 + resolution: "parse-ms@npm:2.1.0" + checksum: d5c66c76cca8df5bd0574e2d11b9c3752893b59b466e74308d4a2f09760dc5436a1633f549cad300fc8c3c19154d14959a3b8333d3b2f7bd75898fe18149d564 languageName: node linkType: hard @@ -9351,6 +14490,20 @@ __metadata: 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 + +"pascalcase@npm:^0.1.1": + version: 0.1.1 + resolution: "pascalcase@npm:0.1.1" + checksum: f83681c3c8ff75fa473a2bb2b113289952f802ff895d435edd717e7cb898b0408cbdb247117a938edcbc5d141020909846cc2b92c47213d764e2a94d2ad2b925 + languageName: node + linkType: hard + "passerror@npm:1.1.1": version: 1.1.1 resolution: "passerror@npm:1.1.1" @@ -9358,6 +14511,13 @@ __metadata: languageName: node linkType: hard +"path-dirname@npm:^1.0.0": + version: 1.0.2 + resolution: "path-dirname@npm:1.0.2" + checksum: 0d2f6604ae05a252a0025318685f290e2764ecf9c5436f203cdacfc8c0b17c24cdedaa449d766beb94ab88cc7fc70a09ec21e7933f31abc2b719180883e5e33f + languageName: node + linkType: hard + "path-exists@npm:^3.0.0": version: 3.0.0 resolution: "path-exists@npm:3.0.0" @@ -9372,6 +14532,13 @@ __metadata: languageName: node linkType: hard +"path-exists@npm:^5.0.0": + version: 5.0.0 + resolution: "path-exists@npm:5.0.0" + checksum: 8ca842868cab09423994596eb2c5ec2a971c17d1a3cb36dbf060592c730c725cd524b9067d7d2a1e031fef9ba7bd2ac6dc5ec9fb92aa693265f7be3987045254 + languageName: node + linkType: hard + "path-is-absolute@npm:^1.0.0": version: 1.0.1 resolution: "path-is-absolute@npm:1.0.1" @@ -9379,7 +14546,7 @@ __metadata: languageName: node linkType: hard -"path-key@npm:^3.0.0, path-key@npm:^3.1.0": +"path-key@npm:^3.0.0, path-key@npm:^3.1.0, path-key@npm:^3.1.1": version: 3.1.1 resolution: "path-key@npm:3.1.1" checksum: 55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 @@ -9400,10 +14567,10 @@ __metadata: languageName: node linkType: hard -"path-to-regexp@npm:^6.2.0": - version: 6.2.1 - resolution: "path-to-regexp@npm:6.2.1" - checksum: f0227af8284ea13300f4293ba111e3635142f976d4197f14d5ad1f124aebd9118783dd2e5f1fe16f7273743cc3dbeddfb7493f237bb27c10fdae07020cc9b698 +"path-to-regexp@npm:0.1.7": + version: 0.1.7 + resolution: "path-to-regexp@npm:0.1.7" + checksum: 69a14ea24db543e8b0f4353305c5eac6907917031340e5a8b37df688e52accd09e3cebfe1660b70d76b6bd89152f52183f28c74813dbf454ba1a01c82a38abce languageName: node linkType: hard @@ -9423,6 +14590,13 @@ __metadata: languageName: node linkType: hard +"path-type@npm:^5.0.0": + version: 5.0.0 + resolution: "path-type@npm:5.0.0" + checksum: 15ec24050e8932c2c98d085b72cfa0d6b4eeb4cbde151a0a05726d8afae85784fc5544f733d8dfc68536587d5143d29c0bd793623fad03d7e61cc00067291cd5 + languageName: node + linkType: hard + "pend@npm:~1.2.0": version: 1.2.0 resolution: "pend@npm:1.2.0" @@ -9488,7 +14662,7 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.1": +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf @@ -9509,6 +14683,29 @@ __metadata: languageName: node linkType: hard +"pify@npm:^4.0.1": + version: 4.0.1 + resolution: "pify@npm:4.0.1" + checksum: 9c4e34278cb09987685fa5ef81499c82546c033713518f6441778fbec623fc708777fe8ac633097c72d88470d5963094076c7305cafc7ad340aae27cfacd856b + languageName: node + linkType: hard + +"pinkie-promise@npm:^2.0.0": + version: 2.0.1 + resolution: "pinkie-promise@npm:2.0.1" + dependencies: + pinkie: ^2.0.0 + checksum: b53a4a2e73bf56b6f421eef711e7bdcb693d6abb474d57c5c413b809f654ba5ee750c6a96dd7225052d4b96c4d053cdcb34b708a86fceed4663303abee52fcca + languageName: node + linkType: hard + +"pinkie@npm:^2.0.0": + version: 2.0.4 + resolution: "pinkie@npm:2.0.4" + checksum: b12b10afea1177595aab036fc220785488f67b4b0fc49e7a27979472592e971614fa1c728e63ad3e7eb748b4ec3c3dbd780819331dad6f7d635c77c10537b9db + languageName: node + linkType: hard + "pirates@npm:^4.0.1": version: 4.0.5 resolution: "pirates@npm:4.0.5" @@ -9536,6 +14733,15 @@ __metadata: languageName: node linkType: hard +"pkg-dir@npm:^6.0.0": + version: 6.0.1 + resolution: "pkg-dir@npm:6.0.1" + dependencies: + find-up: ^6.1.0 + checksum: ba1497053786fdc79fb525bd44ebb7cb17f6997f28a246bf542181f58d43d443832a027e2de677e8a3e3ae59f2d44eb2c738d033874a5a9c215d91c52ff8817c + languageName: node + linkType: hard + "pngjs@npm:^3.0.0": version: 3.4.0 resolution: "pngjs@npm:3.4.0" @@ -9543,6 +14749,13 @@ __metadata: languageName: node linkType: hard +"posix-character-classes@npm:^0.1.0": + version: 0.1.1 + resolution: "posix-character-classes@npm:0.1.1" + checksum: dedb99913c60625a16050cfed2fb5c017648fc075be41ac18474e1c6c3549ef4ada201c8bd9bd006d36827e289c571b6092e1ef6e756cdbab2fd7046b25c6442 + languageName: node + linkType: hard + "postcss-calc@npm:^8.2.3": version: 8.2.4 resolution: "postcss-calc@npm:8.2.4" @@ -9944,6 +15157,19 @@ __metadata: languageName: node linkType: hard +"postcss-values-parser@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-values-parser@npm:6.0.2" + dependencies: + color-name: ^1.1.4 + is-url-superb: ^4.0.0 + quote-unquote: ^1.0.0 + peerDependencies: + postcss: ^8.2.9 + checksum: 615fea3d7996b3fae84a8674fb0e7c6bd0bc006beddb126692c2e43112b772625329c5f10121b00d69fe7a24f7f18dd25e24745574556735c4e9671774df0eb1 + languageName: node + linkType: hard + "postcss@npm:^8.3.11, postcss@npm:^8.4.12, postcss@npm:^8.4.18, postcss@npm:^8.4.19": version: 8.4.20 resolution: "postcss@npm:8.4.20" @@ -9977,6 +15203,35 @@ __metadata: languageName: node linkType: hard +"precinct@npm:^9.0.1": + version: 9.0.1 + resolution: "precinct@npm:9.0.1" + dependencies: + commander: ^9.1.0 + detective-amd: ^4.0.1 + detective-cjs: ^4.0.0 + detective-es6: ^3.0.0 + detective-less: ^1.0.2 + detective-postcss: ^6.0.1 + detective-sass: ^4.0.1 + detective-scss: ^3.0.0 + detective-stylus: ^2.0.0 + detective-typescript: ^9.0.0 + module-definition: ^4.0.0 + node-source-walk: ^5.0.0 + bin: + precinct: bin/cli.js + checksum: 8edf1ab5ae139b0075c2c158c35fc3fef44c22d173c3e53d6d028309734bc0b1d559fc26ff5cdfe96e46dc2ef901f293d2a96077ab8eca6741628a81e29688be + languageName: node + linkType: hard + +"precond@npm:0.2": + version: 0.2.3 + resolution: "precond@npm:0.2.3" + checksum: c613e7d68af3e0b43a294a994bf067cc2bc44b03fd17bc4fb133e30617a4f5b49414b08e9b392d52d7c6822d8a71f66a7fe93a8a1e7d02240177202cff3f63ef + languageName: node + linkType: hard + "prelude-ls@npm:^1.2.1": version: 1.2.1 resolution: "prelude-ls@npm:1.2.1" @@ -9991,6 +15246,13 @@ __metadata: languageName: node linkType: hard +"prepend-http@npm:^2.0.0": + version: 2.0.0 + resolution: "prepend-http@npm:2.0.0" + checksum: 7694a9525405447662c1ffd352fcb41b6410c705b739b6f4e3a3e21cf5fdede8377890088e8934436b8b17ba55365a615f153960f30877bf0d0392f9e93503ea + languageName: node + linkType: hard + "prettier@npm:2.8.0": version: 2.8.0 resolution: "prettier@npm:2.8.0" @@ -10016,6 +15278,38 @@ __metadata: languageName: node linkType: hard +"pretty-format@npm:^25.5.0": + version: 25.5.0 + resolution: "pretty-format@npm:25.5.0" + dependencies: + "@jest/types": ^25.5.0 + ansi-regex: ^5.0.0 + ansi-styles: ^4.0.0 + react-is: ^16.12.0 + checksum: 76f022d2c911d9733a961467545f5aef2cae892da289fff92ba6a6868a10df4d8ef79794ff791e353f67f0edfa85765240f1e7d552e27c94029ae6af1c95174b + languageName: node + linkType: hard + +"pretty-format@npm:^27.5.1": + version: 27.5.1 + resolution: "pretty-format@npm:27.5.1" + dependencies: + ansi-regex: ^5.0.1 + ansi-styles: ^5.0.0 + react-is: ^17.0.1 + checksum: cf610cffcb793885d16f184a62162f2dd0df31642d9a18edf4ca298e909a8fe80bdbf556d5c9573992c102ce8bf948691da91bf9739bee0ffb6e79c8a8a6e088 + languageName: node + linkType: hard + +"pretty-ms@npm:^7.0.0": + version: 7.0.1 + resolution: "pretty-ms@npm:7.0.1" + dependencies: + parse-ms: ^2.1.0 + checksum: d76c4920283b48be91f1d3797a2ce4bd51187d58d2a609ae993c028f73c92d16439449d857af57ccad91ae3a38b30c87307f5589749a056102ebb494c686957e + languageName: node + linkType: hard + "pretty-quick@npm:^3.1.3": version: 3.1.3 resolution: "pretty-quick@npm:3.1.3" @@ -10034,6 +15328,18 @@ __metadata: languageName: node linkType: hard +"prettyjson@npm:^1.2.1": + version: 1.2.5 + resolution: "prettyjson@npm:1.2.5" + dependencies: + colors: 1.4.0 + minimist: ^1.2.0 + bin: + prettyjson: bin/prettyjson + checksum: e36e8ae4f77065160028fea33c6ae8e91936f86a4fd1751ceb19f88f336bc54e6f7d232ece38d4da3f7734e5c5e1fc3114a0d92da1987e7cf1515dcb29d447d1 + languageName: node + linkType: hard + "process-nextick-args@npm:~2.0.0": version: 2.0.1 resolution: "process-nextick-args@npm:2.0.1" @@ -10089,6 +15395,23 @@ __metadata: languageName: node linkType: hard +"proto-list@npm:~1.2.1": + version: 1.2.4 + resolution: "proto-list@npm:1.2.4" + checksum: 4d4826e1713cbfa0f15124ab0ae494c91b597a3c458670c9714c36e8baddf5a6aad22842776f2f5b137f259c8533e741771445eb8df82e861eea37a6eaba03f7 + languageName: node + linkType: hard + +"proxy-addr@npm:~2.0.7": + version: 2.0.7 + resolution: "proxy-addr@npm:2.0.7" + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + checksum: 29c6990ce9364648255454842f06f8c46fcd124d3e6d7c5066df44662de63cdc0bad032e9bf5a3d653ff72141cc7b6019873d685708ac8210c30458ad99f2b74 + languageName: node + linkType: hard + "proxy-from-env@npm:^1.1.0": version: 1.1.0 resolution: "proxy-from-env@npm:1.1.0" @@ -10096,6 +15419,13 @@ __metadata: languageName: node linkType: hard +"ps-list@npm:^8.0.0": + version: 8.1.1 + resolution: "ps-list@npm:8.1.1" + checksum: 102396b4db030936d7ea7c811b6b1d0322142a271b374444d9b8600268b1b1a67249d2cadd5605f491129a2b44cd4f83e21d1dfbf72ac5e85104eaf07f77c0ba + languageName: node + linkType: hard + "pseudomap@npm:^1.0.2": version: 1.0.2 resolution: "pseudomap@npm:1.0.2" @@ -10110,6 +15440,16 @@ __metadata: languageName: node linkType: hard +"pump@npm:^1.0.0": + version: 1.0.3 + resolution: "pump@npm:1.0.3" + dependencies: + end-of-stream: ^1.1.0 + once: ^1.3.1 + checksum: 61fe58694f9900020a5cf5bc765d74396891c201afecf06659df2f5874fd832be4e19e2f95cc72d8b9eb98ace0a4db3cebf7343f9fc893a930577be29e3ad8b5 + languageName: node + linkType: hard + "pump@npm:^3.0.0": version: 3.0.0 resolution: "pump@npm:3.0.0" @@ -10120,6 +15460,13 @@ __metadata: languageName: node linkType: hard +"punycode@npm:1.3.2": + version: 1.3.2 + resolution: "punycode@npm:1.3.2" + checksum: b8807fd594b1db33335692d1f03e8beeddde6fda7fbb4a2e32925d88d20a3aa4cd8dcc0c109ccaccbd2ba761c208dfaaada83007087ea8bfb0129c9ef1b99ed6 + languageName: node + linkType: hard + "punycode@npm:^2.1.0, punycode@npm:^2.1.1": version: 2.1.1 resolution: "punycode@npm:2.1.1" @@ -10127,6 +15474,24 @@ __metadata: languageName: node linkType: hard +"pupa@npm:^2.1.1": + version: 2.1.1 + resolution: "pupa@npm:2.1.1" + dependencies: + escape-goat: ^2.0.0 + checksum: 49529e50372ffdb0cccf0efa0f3b3cb0a2c77805d0d9cc2725bd2a0f6bb414631e61c93a38561b26be1259550b7bb6c2cb92315aa09c8bf93f3bdcb49f2b2fb7 + languageName: node + linkType: hard + +"pupa@npm:^3.1.0": + version: 3.1.0 + resolution: "pupa@npm:3.1.0" + dependencies: + escape-goat: ^4.0.0 + checksum: 0e4f4ab6bbdce600fa6d23b1833f1af57b2641246ff4cbe10f9d66e4e5479b0de2864a88d5bd629eef59524eda3c6680726acd7f3f873d9ed46b7f095d0bb5f6 + languageName: node + linkType: hard + "puppeteer-core@npm:^8.0.0": version: 8.0.0 resolution: "puppeteer-core@npm:8.0.0" @@ -10161,7 +15526,7 @@ __metadata: languageName: node linkType: hard -"qs@npm:^6.5.2": +"qs@npm:6.11.0, qs@npm:^6.5.2, qs@npm:^6.9.6": version: 6.11.0 resolution: "qs@npm:6.11.0" dependencies: @@ -10177,6 +15542,24 @@ __metadata: languageName: node linkType: hard +"query-string@npm:^5.0.1": + version: 5.1.1 + resolution: "query-string@npm:5.1.1" + dependencies: + decode-uri-component: ^0.2.0 + object-assign: ^4.1.0 + strict-uri-encode: ^1.0.0 + checksum: 4ac760d9778d413ef5f94f030ed14b1a07a1708dd13fd3bc54f8b9ef7b425942c7577f30de0bf5a7d227ee65a9a0350dfa3a43d1d266880882fb7ce4c434a4dd + languageName: node + linkType: hard + +"querystring@npm:0.2.0": + version: 0.2.0 + resolution: "querystring@npm:0.2.0" + checksum: 8258d6734f19be27e93f601758858c299bdebe71147909e367101ba459b95446fbe5b975bf9beb76390156a592b6f4ac3a68b6087cea165c259705b8b4e56a69 + languageName: node + linkType: hard + "querystringify@npm:^2.1.1": version: 2.2.0 resolution: "querystringify@npm:2.2.0" @@ -10205,6 +15588,13 @@ __metadata: languageName: node linkType: hard +"quote-unquote@npm:^1.0.0": + version: 1.0.0 + resolution: "quote-unquote@npm:1.0.0" + checksum: 955a2ead534f5b6a3f8d4dc5a4b95ac6468213d3fb11f8c1592a0a56345c45a3d14d5ca04d3de2bc9891493fcac38c03dfa91c48a6159aef50124e9c5afcea49 + languageName: node + linkType: hard + "qwind@workspace:packages/docs": version: 0.0.0-use.local resolution: "qwind@workspace:packages/docs" @@ -10213,20 +15603,22 @@ __metadata: "@builder.io/qwik-city": 0.0.128 "@fontsource/inter": ^4.5.14 "@iconify-json/tabler": ^1.1.49 - "@octokit/core": ^4.1.0 "@tailwindcss/aspect-ratio": ^0.4.0 "@tailwindcss/forms": ^0.5.3 "@tailwindcss/line-clamp": ^0.3.1 "@tailwindcss/typography": ^0.5.0 + "@types/compression": ^1.7.2 "@types/eslint": 8.4.10 "@types/node": latest "@typescript-eslint/eslint-plugin": 5.45.0 "@typescript-eslint/parser": 5.45.0 autoprefixer: 10.4.13 + compression: ^1.7.4 eslint: 8.29.0 eslint-plugin-qwik: 0.15.0 imagetools-core: ^3.2.3 - node-fetch: 3.3.0 + netlify-cli: ^12.0.11 + node-fetch: ^3.3.0 postcss: ^8.4.19 prettier: 2.8.0 rehype-autolink-headings: ^6.1.1 @@ -10236,11 +15628,36 @@ __metadata: vite: 3.2.4 vite-imagetools: ^4.0.11 vite-tsconfig-paths: 3.6.0 - wrangler: latest languageName: unknown linkType: soft -"rc@npm:^1.2.7": +"random-bytes@npm:~1.0.0": + version: 1.0.0 + resolution: "random-bytes@npm:1.0.0" + checksum: 09faa256394aa2ca9754aa57e92a27c452c3e97ffb266e98bebb517332e9df7168fea393159f88d884febce949ba8bec8ddb02f03342da6c6023ecc7b155e0ae + 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, raw-body@npm:^2.4.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 + +"rc@npm:1.2.8, rc@npm:^1.2.7, rc@npm:^1.2.8": version: 1.2.8 resolution: "rc@npm:1.2.8" dependencies: @@ -10254,6 +15671,20 @@ __metadata: languageName: node linkType: hard +"react-is@npm:^16.12.0": + version: 16.13.1 + resolution: "react-is@npm:16.13.1" + checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f + languageName: node + linkType: hard + +"react-is@npm:^17.0.1": + version: 17.0.2 + resolution: "react-is@npm:17.0.2" + checksum: 9d6d111d8990dc98bc5402c1266a808b0459b5d54830bbea24c12d908b536df7883f268a7868cfaedde3dd9d4e0d574db456f84d2e6df9c4526f99bb4b5344d8 + languageName: node + linkType: hard + "read-cache@npm:^1.0.0": version: 1.0.0 resolution: "read-cache@npm:1.0.0" @@ -10311,6 +15742,17 @@ __metadata: languageName: node linkType: hard +"read-pkg-up@npm:^9.0.0": + version: 9.1.0 + resolution: "read-pkg-up@npm:9.1.0" + dependencies: + find-up: ^6.3.0 + read-pkg: ^7.1.0 + type-fest: ^2.5.0 + checksum: 41b8ba4bdb7c1e914aa6ce2d36a7c1651e9086938977fa12f058f6fca51ee15315634af648ca4ef70dd074e575e854616b39032ad0b376e9e97d61a9d0867afe + languageName: node + linkType: hard + "read-pkg@npm:^3.0.0": version: 3.0.0 resolution: "read-pkg@npm:3.0.0" @@ -10334,6 +15776,18 @@ __metadata: languageName: node linkType: hard +"read-pkg@npm:^7.1.0": + version: 7.1.0 + resolution: "read-pkg@npm:7.1.0" + dependencies: + "@types/normalize-package-data": ^2.4.1 + normalize-package-data: ^3.0.2 + parse-json: ^5.2.0 + type-fest: ^2.0.0 + checksum: 20d11c59be3ae1fc79d4b9c8594dabeaec58105f9dfd710570ef9690ec2ac929247006e79ca114257683228663199735d60f149948dbc5f34fcd2d28883ab5f7 + languageName: node + linkType: hard + "readable-stream@npm:3, readable-stream@npm:^3.0.0, readable-stream@npm:^3.0.2, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0": version: 3.6.0 resolution: "readable-stream@npm:3.6.0" @@ -10345,7 +15799,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:~2.3.6": +"readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.2, readable-stream@npm:^2.0.5, readable-stream@npm:^2.1.5, readable-stream@npm:^2.3.0, readable-stream@npm:^2.3.5, readable-stream@npm:~2.3.6": version: 2.3.7 resolution: "readable-stream@npm:2.3.7" dependencies: @@ -10360,7 +15814,27 @@ __metadata: languageName: node linkType: hard -"readdirp@npm:~3.6.0": +"readdir-glob@npm:^1.0.0": + version: 1.1.2 + resolution: "readdir-glob@npm:1.1.2" + dependencies: + minimatch: ^5.1.0 + checksum: 1e5f701d3c94af5653e1736dfef99e991869c6e1c87bf08835d8c641f767e73ae25b829d3d1f8504fab8cad49b70b718ef960d3afee5be45cd779ccaeb264ed4 + languageName: node + linkType: hard + +"readdirp@npm:^2.0.0": + version: 2.2.1 + resolution: "readdirp@npm:2.2.1" + dependencies: + graceful-fs: ^4.1.11 + micromatch: ^3.1.10 + readable-stream: ^2.0.2 + checksum: 3879b20f1a871e0e004a14fbf1776e65ee0b746a62f5a416010808b37c272ac49b023c47042c7b1e281cba75a449696635bc64c397ed221ea81d853a8f2ed79a + languageName: node + linkType: hard + +"readdirp@npm:^3.4.0, readdirp@npm:~3.6.0": version: 3.6.0 resolution: "readdirp@npm:3.6.0" dependencies: @@ -10416,6 +15890,16 @@ __metadata: languageName: node linkType: hard +"regex-not@npm:^1.0.0, regex-not@npm:^1.0.2": + version: 1.0.2 + resolution: "regex-not@npm:1.0.2" + dependencies: + extend-shallow: ^3.0.2 + safe-regex: ^1.1.0 + checksum: 3081403de79559387a35ef9d033740e41818a559512668cef3d12da4e8a29ef34ee13c8ed1256b07e27ae392790172e8a15c8a06b72962fd4550476cde3d8f77 + languageName: node + linkType: hard + "regexp.prototype.flags@npm:^1.4.3": version: 1.4.3 resolution: "regexp.prototype.flags@npm:1.4.3" @@ -10434,6 +15918,42 @@ __metadata: languageName: node linkType: hard +"registry-auth-token@npm:^4.0.0": + version: 4.2.2 + resolution: "registry-auth-token@npm:4.2.2" + dependencies: + rc: 1.2.8 + checksum: c5030198546ecfdcbcb0722cbc3e260c4f5f174d8d07bdfedd4620e79bfdf17a2db735aa230d600bd388fce6edd26c0a9ed2eb7e9b4641ec15213a28a806688b + languageName: node + linkType: hard + +"registry-auth-token@npm:^5.0.1": + version: 5.0.1 + resolution: "registry-auth-token@npm:5.0.1" + dependencies: + "@pnpm/npm-conf": ^1.0.4 + checksum: abd3a3b14aee445398d09efc3b67be57fbf1b1e93b61443b45196055d2372f3814e6942a56ecd5a5385ab8e26c2078e0b3f6d346689c49b82f7e5049940e4b03 + languageName: node + linkType: hard + +"registry-url@npm:^5.0.0": + version: 5.1.0 + resolution: "registry-url@npm:5.1.0" + dependencies: + rc: ^1.2.8 + checksum: bcea86c84a0dbb66467b53187fadebfea79017cddfb4a45cf27530d7275e49082fe9f44301976eb0164c438e395684bcf3dae4819b36ff9d1640d8cc60c73df9 + languageName: node + linkType: hard + +"registry-url@npm:^6.0.0": + version: 6.0.1 + resolution: "registry-url@npm:6.0.1" + dependencies: + rc: 1.2.8 + checksum: 33712aa1b489aab7aba2191c1cdadfdd71f5bf166d4792d81744a6be332c160bd7d9273af8269d8a01284b9562f14a5b31b7abcf7ad9306c44887ecff51c89ab + languageName: node + linkType: hard + "rehype-autolink-headings@npm:^6.1.1": version: 6.1.1 resolution: "rehype-autolink-headings@npm:6.1.1" @@ -10489,7 +16009,21 @@ __metadata: languageName: node linkType: hard -"repeat-string@npm:^1.5.4": +"remove-trailing-separator@npm:^1.0.1": + version: 1.1.0 + resolution: "remove-trailing-separator@npm:1.1.0" + checksum: d3c20b5a2d987db13e1cca9385d56ecfa1641bae143b620835ac02a6b70ab88f68f117a0021838db826c57b31373d609d52e4f31aca75fc490c862732d595419 + languageName: node + linkType: hard + +"repeat-element@npm:^1.1.2": + version: 1.1.4 + resolution: "repeat-element@npm:1.1.4" + checksum: 1edd0301b7edad71808baad226f0890ba709443f03a698224c9ee4f2494c317892dc5211b2ba8cbea7194a9ddbcac01e283bd66de0467ab24ee1fc1a3711d8a9 + languageName: node + linkType: hard + +"repeat-string@npm:^1.5.4, repeat-string@npm:^1.6.1": version: 1.6.1 resolution: "repeat-string@npm:1.6.1" checksum: 1b809fc6db97decdc68f5b12c4d1a671c8e3f65ec4a40c238bc5200e44e85bcc52a54f78268ab9c29fcf5fe4f1343e805420056d1f30fa9a9ee4c2d93e3cc6c0 @@ -10545,6 +16079,13 @@ __metadata: languageName: node linkType: hard +"require-package-name@npm:^2.0.1": + version: 2.0.1 + resolution: "require-package-name@npm:2.0.1" + checksum: 00f4e9e467ebe2bbced2b4198a165de11c83b5ee9f4c20b05a8782659b92bcb544dbd50be9a3eed746d05ecd875453e258c079eb3a79604b50a27cf8ab0798b5 + languageName: node + linkType: hard + "requires-port@npm:^1.0.0": version: 1.0.0 resolution: "requires-port@npm:1.0.0" @@ -10552,6 +16093,13 @@ __metadata: languageName: node linkType: hard +"resolve-alpn@npm:^1.2.0": + version: 1.2.1 + resolution: "resolve-alpn@npm:1.2.1" + checksum: f558071fcb2c60b04054c99aebd572a2af97ef64128d59bef7ab73bd50d896a222a056de40ffc545b633d99b304c259ea9d0c06830d5c867c34f0bfa60b8eae0 + languageName: node + linkType: hard + "resolve-from@npm:5.0.0, resolve-from@npm:^5.0.0": version: 5.0.0 resolution: "resolve-from@npm:5.0.0" @@ -10575,6 +16123,13 @@ __metadata: languageName: node linkType: hard +"resolve-url@npm:^0.2.1": + version: 0.2.1 + resolution: "resolve-url@npm:0.2.1" + checksum: 7b7035b9ed6e7bc7d289e90aef1eab5a43834539695dac6416ca6e91f1a94132ae4796bbd173cdacfdc2ade90b5f38a3fb6186bebc1b221cd157777a23b9ad14 + languageName: node + linkType: hard + "resolve@npm:^1.1.7, resolve@npm:^1.10.0, resolve@npm:^1.22.1": version: 1.22.1 resolution: "resolve@npm:1.22.1" @@ -10588,6 +16143,19 @@ __metadata: languageName: node linkType: hard +"resolve@npm:^2.0.0-next.1": + version: 2.0.0-next.4 + resolution: "resolve@npm:2.0.0-next.4" + dependencies: + is-core-module: ^2.9.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: c438ac9a650f2030fd074219d7f12ceb983b475da2d89ad3d6dd05fbf6b7a0a8cd37d4d10b43cb1f632bc19f22246ab7f36ebda54d84a29bfb2910a0680906d3 + languageName: node + linkType: hard + "resolve@patch:resolve@^1.1.7#~builtin, resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin": version: 1.22.1 resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=c3c19d" @@ -10601,6 +16169,76 @@ __metadata: languageName: node linkType: hard +"resolve@patch:resolve@^2.0.0-next.1#~builtin": + version: 2.0.0-next.4 + resolution: "resolve@patch:resolve@npm%3A2.0.0-next.4#~builtin::version=2.0.0-next.4&hash=c3c19d" + dependencies: + is-core-module: ^2.9.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: 4bf9f4f8a458607af90518ff73c67a4bc1a38b5a23fef2bb0ccbd45e8be89820a1639b637b0ba377eb2be9eedfb1739a84cde24fe4cd670c8207d8fea922b011 + languageName: node + linkType: hard + +"responselike@npm:1.0.2, responselike@npm:^1.0.2": + version: 1.0.2 + resolution: "responselike@npm:1.0.2" + dependencies: + lowercase-keys: ^1.0.0 + checksum: 2e9e70f1dcca3da621a80ce71f2f9a9cad12c047145c6ece20df22f0743f051cf7c73505e109814915f23f9e34fb0d358e22827723ee3d56b623533cab8eafcd + languageName: node + linkType: hard + +"responselike@npm:^2.0.0": + version: 2.0.1 + resolution: "responselike@npm:2.0.1" + dependencies: + lowercase-keys: ^2.0.0 + checksum: b122535466e9c97b55e69c7f18e2be0ce3823c5d47ee8de0d9c0b114aa55741c6db8bfbfce3766a94d1272e61bfb1ebf0a15e9310ac5629fbb7446a861b4fd3a + languageName: node + linkType: hard + +"responselike@npm:^3.0.0": + version: 3.0.0 + resolution: "responselike@npm:3.0.0" + dependencies: + lowercase-keys: ^3.0.0 + checksum: e0cc9be30df4f415d6d83cdede3c5c887cd4a73e7cc1708bcaab1d50a28d15acb68460ac5b02bcc55a42f3d493729c8856427dcf6e57e6e128ad05cba4cfb95e + languageName: node + linkType: hard + +"restore-cursor@npm:^2.0.0": + version: 2.0.0 + resolution: "restore-cursor@npm:2.0.0" + dependencies: + onetime: ^2.0.0 + signal-exit: ^3.0.2 + checksum: 482e13d02d834b6e5e3aa90304a8b5e840775d6f06916cc92a50038adf9f098dcc72405b567da8a37e137ae40ad3e31896fa3136ae62f7a426c2fbf53d036536 + languageName: node + linkType: hard + +"restore-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "restore-cursor@npm:3.1.0" + dependencies: + onetime: ^5.1.0 + signal-exit: ^3.0.2 + checksum: f877dd8741796b909f2a82454ec111afb84eb45890eb49ac947d87991379406b3b83ff9673a46012fca0d7844bb989f45cc5b788254cf1a39b6b5a9659de0630 + languageName: node + linkType: hard + +"restore-cursor@npm:^4.0.0": + version: 4.0.0 + resolution: "restore-cursor@npm:4.0.0" + dependencies: + onetime: ^5.1.0 + signal-exit: ^3.0.2 + checksum: 5b675c5a59763bf26e604289eab35711525f11388d77f409453904e1e69c0d37ae5889295706b2c81d23bd780165084d040f9b68fffc32cc921519031c4fa4af + languageName: node + linkType: hard + "restructure@npm:^2.0.1": version: 2.0.1 resolution: "restructure@npm:2.0.1" @@ -10608,6 +16246,13 @@ __metadata: languageName: node linkType: hard +"ret@npm:~0.1.10": + version: 0.1.15 + resolution: "ret@npm:0.1.15" + checksum: d76a9159eb8c946586567bd934358dfc08a36367b3257f7a3d7255fdd7b56597235af23c6afa0d7f0254159e8051f93c918809962ebd6df24ca2a83dbe4d4151 + languageName: node + linkType: hard + "retry@npm:^0.12.0": version: 0.12.0 resolution: "retry@npm:0.12.0" @@ -10615,6 +16260,13 @@ __metadata: languageName: node linkType: hard +"retry@npm:^0.13.1": + version: 0.13.1 + resolution: "retry@npm:0.13.1" + checksum: 47c4d5be674f7c13eee4cfe927345023972197dbbdfba5d3af7e461d13b44de1bfd663bfc80d2f601f8ef3fc8164c16dd99655a221921954a65d044a2fc1233b + languageName: node + linkType: hard + "reusify@npm:^1.0.4": version: 1.0.4 resolution: "reusify@npm:1.0.4" @@ -10622,7 +16274,14 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:^3.0.2": +"rfdc@npm:^1.3.0": + version: 1.3.0 + resolution: "rfdc@npm:1.3.0" + checksum: fb2ba8512e43519983b4c61bd3fa77c0f410eff6bae68b08614437bc3f35f91362215f7b4a73cbda6f67330b5746ce07db5dd9850ad3edc91271ad6deea0df32 + languageName: node + linkType: hard + +"rimraf@npm:^3.0.0, rimraf@npm:^3.0.2": version: 3.0.2 resolution: "rimraf@npm:3.0.2" dependencies: @@ -10658,27 +16317,7 @@ __metadata: languageName: node linkType: hard -"rollup-plugin-inject@npm:^3.0.0": - version: 3.0.2 - resolution: "rollup-plugin-inject@npm:3.0.2" - dependencies: - estree-walker: ^0.6.1 - magic-string: ^0.25.3 - rollup-pluginutils: ^2.8.1 - checksum: a014972c80fe34b8c8154056fa2533a8440066a31de831e3793fc21b15d108d92c22d8f7f472397bd5783d7c5e04d8cbf112fb72c5a26e997726e4eb090edad1 - languageName: node - linkType: hard - -"rollup-plugin-node-polyfills@npm:^0.2.1": - version: 0.2.1 - resolution: "rollup-plugin-node-polyfills@npm:0.2.1" - dependencies: - rollup-plugin-inject: ^3.0.0 - checksum: e84645212c443aca3cfae2ba69f01c6d8c5c250f0bf651416b69a4572b60aae9da7cdd687de3ab9b903f7a1ab96b06b71f0c4927d1b02a37485360d2b563937b - languageName: node - linkType: hard - -"rollup-pluginutils@npm:^2.8.1, rollup-pluginutils@npm:^2.8.2": +"rollup-pluginutils@npm:^2.8.2": version: 2.8.2 resolution: "rollup-pluginutils@npm:2.8.2" dependencies: @@ -10702,8 +16341,8 @@ __metadata: linkType: hard "rollup@npm:^3.2.3": - version: 3.8.0 - resolution: "rollup@npm:3.8.0" + version: 3.9.0 + resolution: "rollup@npm:3.9.0" dependencies: fsevents: ~2.3.2 dependenciesMeta: @@ -10711,11 +16350,18 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: ee67ec1e27ae7c5938326cae30645cd41b04495880ea3b1b0de2af67e012ccce00814d385ba65f9a6c9488aa6d70a8eb4b5733a2d478f35bc3c6325efa41e5e7 + checksum: b0ce4baa8db8ee77ab096a4e066b20fb0719efb9cbd84f230838517d35bf159311487112852cfa687126896b58084c8e6cb9ab222f7559c4b6138ca693d63439 languageName: node linkType: hard -"run-parallel@npm:^1.1.9": +"run-async@npm:^2.2.0, run-async@npm:^2.4.0": + version: 2.4.1 + resolution: "run-async@npm:2.4.1" + checksum: a2c88aa15df176f091a2878eb840e68d0bdee319d8d97bbb89112223259cebecb94bc0defd735662b83c2f7a30bed8cddb7d1674eb48ae7322dc602b22d03797 + languageName: node + linkType: hard + +"run-parallel@npm:^1.1.4, run-parallel@npm:^1.1.9": version: 1.2.0 resolution: "run-parallel@npm:1.2.0" dependencies: @@ -10724,6 +16370,22 @@ __metadata: languageName: node linkType: hard +"rusha@npm:^0.8.14": + version: 0.8.14 + resolution: "rusha@npm:0.8.14" + checksum: d76d7b4b5df1191712eca1e2465d07054dc9bd5e9ec357e1e0f3ddf95006a762330a3c0348e96ac39853656a3fbe02e65e780aa5f61b9355ad914fa296185623 + languageName: node + linkType: hard + +"rxjs@npm:^6.3.3, rxjs@npm:^6.4.0, rxjs@npm:^6.6.2": + version: 6.6.7 + resolution: "rxjs@npm:6.6.7" + dependencies: + tslib: ^1.9.0 + checksum: bc334edef1bb8bbf56590b0b25734ba0deaf8825b703256a93714308ea36dff8a11d25533671adf8e104e5e8f256aa6fdfe39b2e248cdbd7a5f90c260acbbd1b + languageName: node + linkType: hard + "sade@npm:^1.7.3": version: 1.8.1 resolution: "sade@npm:1.8.1" @@ -10733,17 +16395,24 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": + version: 5.1.2 + resolution: "safe-buffer@npm:5.1.2" + checksum: f2f1f7943ca44a594893a852894055cf619c1fbcb611237fc39e461ae751187e7baf4dc391a72125e0ac4fb2d8c5c0b3c71529622e6a58f46b960211e704903c + languageName: node + linkType: hard + +"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.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" - checksum: f2f1f7943ca44a594893a852894055cf619c1fbcb611237fc39e461ae751187e7baf4dc391a72125e0ac4fb2d8c5c0b3c71529622e6a58f46b960211e704903c +"safe-json-stringify@npm:^1.2.0": + version: 1.2.0 + resolution: "safe-json-stringify@npm:1.2.0" + checksum: 5bb32db6d6a3ceb3752df51f4043a412419cd3d4fcd5680a865dfa34cd7e575ba659c077d13f52981ced084061df9c75c7fb12e391584d4264e6914c1cd3d216 languageName: node linkType: hard @@ -10758,6 +16427,22 @@ __metadata: languageName: node linkType: hard +"safe-regex@npm:^1.1.0": + version: 1.1.0 + resolution: "safe-regex@npm:1.1.0" + dependencies: + ret: ~0.1.10 + checksum: 9a8bba57c87a841f7997b3b951e8e403b1128c1a4fd1182f40cc1a20e2d490593d7c2a21030fadfea320c8e859219019e136f678c6689ed5960b391b822f01d5 + languageName: node + linkType: hard + +"safe-stable-stringify@npm:^2.3.1": + version: 2.4.2 + resolution: "safe-stable-stringify@npm:2.4.2" + checksum: 0324ba2e40f78cae63e31a02b1c9bdf1b786621f9e8760845608eb9e81aef401944ac2078e5c9c1533cf516aea34d08fa8052ca853637ced84b791caaf1e394e + languageName: node + linkType: hard + "safer-buffer@npm:>= 2.1.2 < 3, 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" @@ -10799,23 +16484,37 @@ __metadata: languageName: node linkType: hard -"selfsigned@npm:^2.0.0, selfsigned@npm:^2.0.1": - version: 2.1.1 - resolution: "selfsigned@npm:2.1.1" +"seek-bzip@npm:^1.0.5": + version: 1.0.6 + resolution: "seek-bzip@npm:1.0.6" dependencies: - node-forge: ^1 - checksum: aa9ce2150a54838978d5c0aee54d7ebe77649a32e4e690eb91775f71fdff773874a4fbafd0ac73d8ec3b702ff8a395c604df4f8e8868528f36fd6c15076fb43a + commander: ^2.8.1 + bin: + seek-bunzip: bin/seek-bunzip + seek-table: bin/seek-bzip-table + checksum: c2ab3291e7085558499efd4e99d1466ee6782f6c4a4e4c417aa859e1cd2f5117fb3b5444f3d27c38ec5908c0f0312e2a0bc69dff087751f97b3921b5bde4f9ed languageName: node linkType: hard -"semiver@npm:^1.1.0": - version: 1.1.0 - resolution: "semiver@npm:1.1.0" - checksum: 87e78c4fca6e082fed8905266341524b952a6d917397ca7e4feba469459e4165015fb25c0cd5b214f30ac4588e227e7c5b56ce91fd053893738d8a44a761ddb3 +"semver-diff@npm:^3.1.1": + version: 3.1.1 + resolution: "semver-diff@npm:3.1.1" + dependencies: + semver: ^6.3.0 + checksum: 8bbe5a5d7add2d5e51b72314a9215cd294d71f41cdc2bf6bd59ee76411f3610b576172896f1d191d0d7294cb9f2f847438d2ee158adacc0c224dca79052812fe languageName: node linkType: hard -"semver@npm:2 || 3 || 4 || 5": +"semver-diff@npm:^4.0.0": + version: 4.0.0 + resolution: "semver-diff@npm:4.0.0" + dependencies: + semver: ^7.3.5 + checksum: 4a958d6f76c7e7858268e1e2cf936712542441c9e003e561b574167279eee0a9bd55cc7eae1bfb31d3e7ad06a9fc370e7dd412fcfefec8c0daf1ce5aea623559 + languageName: node + linkType: hard + +"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.6.0": version: 5.7.1 resolution: "semver@npm:5.7.1" bin: @@ -10835,7 +16534,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.0.0": +"semver@npm:^6.0.0, semver@npm:^6.2.0, semver@npm:^6.3.0": version: 6.3.0 resolution: "semver@npm:6.3.0" bin: @@ -10844,7 +16543,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8": +"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8": version: 7.3.8 resolution: "semver@npm:7.3.8" dependencies: @@ -10855,6 +16554,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" @@ -10862,6 +16582,18 @@ __metadata: languageName: node linkType: hard +"serve-static@npm:1.15.0": + 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" @@ -10869,10 +16601,22 @@ __metadata: languageName: node linkType: hard -"set-cookie-parser@npm:^2.4.8": - version: 2.5.1 - resolution: "set-cookie-parser@npm:2.5.1" - checksum: b99c37f976e68ae6eb7c758bf2bbce1e60bb54e3eccedaa25f2da45b77b9cab58d90674cf9edd7aead6fbeac6308f2eb48713320a47ca120d0e838d0194513b6 +"set-value@npm:^2.0.0, set-value@npm:^2.0.1": + version: 2.0.1 + resolution: "set-value@npm:2.0.1" + dependencies: + extend-shallow: ^2.0.1 + is-extendable: ^0.1.1 + is-plain-object: ^2.0.3 + split-string: ^3.0.1 + checksum: 09a4bc72c94641aeae950eb60dc2755943b863780fcc32e441eda964b64df5e3f50603d5ebdd33394ede722528bd55ed43aae26e9df469b4d32e2292b427b601 + 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 @@ -10927,7 +16671,7 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": +"signal-exit@npm:^3.0.0, 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" checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 @@ -10975,6 +16719,13 @@ __metadata: languageName: node linkType: hard +"slash@npm:^2.0.0": + version: 2.0.0 + resolution: "slash@npm:2.0.0" + checksum: 512d4350735375bd11647233cb0e2f93beca6f53441015eea241fe784d8068281c3987fbaa93e7ef1c38df68d9c60013045c92837423c69115297d6169aa85e6 + languageName: node + linkType: hard + "slash@npm:^3.0.0": version: 3.0.0 resolution: "slash@npm:3.0.0" @@ -10982,6 +16733,30 @@ __metadata: languageName: node linkType: hard +"slash@npm:^4.0.0": + version: 4.0.0 + resolution: "slash@npm:4.0.0" + checksum: da8e4af73712253acd21b7853b7e0dbba776b786e82b010a5bfc8b5051a1db38ed8aba8e1e8f400dd2c9f373be91eb1c42b66e91abb407ff42b10feece5e1d2d + languageName: node + linkType: hard + +"slice-ansi@npm:0.0.4": + version: 0.0.4 + resolution: "slice-ansi@npm:0.0.4" + checksum: 481d969c6aa771b27d7baacd6fe321751a0b9eb410274bda10ca81ea641bbfe747e428025d6d8f15bd635fdcfd57e8b2d54681ee6b0ce0c40f78644b144759e3 + languageName: node + linkType: hard + +"slice-ansi@npm:^5.0.0": + version: 5.0.0 + resolution: "slice-ansi@npm:5.0.0" + dependencies: + ansi-styles: ^6.0.0 + is-fullwidth-code-point: ^4.0.0 + checksum: 7e600a2a55e333a21ef5214b987c8358fe28bfb03c2867ff2cbf919d62143d1812ac27b4297a077fdaf27a03da3678e49551c93e35f9498a3d90221908a1180e + languageName: node + linkType: hard + "smart-buffer@npm:^4.2.0": version: 4.2.0 resolution: "smart-buffer@npm:4.2.0" @@ -10989,6 +16764,42 @@ __metadata: languageName: node linkType: hard +"snapdragon-node@npm:^2.0.1": + version: 2.1.1 + resolution: "snapdragon-node@npm:2.1.1" + dependencies: + define-property: ^1.0.0 + isobject: ^3.0.0 + snapdragon-util: ^3.0.1 + checksum: 9bb57d759f9e2a27935dbab0e4a790137adebace832b393e350a8bf5db461ee9206bb642d4fe47568ee0b44080479c8b4a9ad0ebe3712422d77edf9992a672fd + languageName: node + linkType: hard + +"snapdragon-util@npm:^3.0.1": + version: 3.0.1 + resolution: "snapdragon-util@npm:3.0.1" + dependencies: + kind-of: ^3.2.0 + checksum: 684997dbe37ec995c03fd3f412fba2b711fc34cb4010452b7eb668be72e8811a86a12938b511e8b19baf853b325178c56d8b78d655305e5cfb0bb8b21677e7b7 + languageName: node + linkType: hard + +"snapdragon@npm:^0.8.1": + version: 0.8.2 + resolution: "snapdragon@npm:0.8.2" + dependencies: + base: ^0.11.1 + debug: ^2.2.0 + define-property: ^0.2.5 + extend-shallow: ^2.0.1 + map-cache: ^0.2.2 + source-map: ^0.5.6 + source-map-resolve: ^0.5.0 + use: ^3.1.0 + checksum: a197f242a8f48b11036563065b2487e9b7068f50a20dd81d9161eca6af422174fc158b8beeadbe59ce5ef172aa5718143312b3aebaae551c124b7824387c8312 + languageName: node + linkType: hard + "socketerrors@npm:^0.3.0": version: 0.3.0 resolution: "socketerrors@npm:0.3.0" @@ -11020,6 +16831,33 @@ __metadata: languageName: node linkType: hard +"sort-keys-length@npm:^1.0.0": + version: 1.0.1 + resolution: "sort-keys-length@npm:1.0.1" + dependencies: + sort-keys: ^1.0.0 + checksum: f9acac5fb31580a9e3d43b419dc86a1b75e85b79036a084d95dd4d1062b621c9589906588ac31e370a0dd381be46d8dbe900efa306d087ca9c912d7a59b5a590 + languageName: node + linkType: hard + +"sort-keys@npm:^1.0.0": + version: 1.1.2 + resolution: "sort-keys@npm:1.1.2" + dependencies: + is-plain-obj: ^1.0.0 + checksum: 5963fd191a2a185a5ec86f06e47721e8e04713eda43bb04ae60d2a8afb21241553dd5bc9d863ed2bd7c3d541b609b0c8d0e58836b1a3eb6764c09c094bcc8b00 + languageName: node + linkType: hard + +"sort-keys@npm:^2.0.0": + version: 2.0.0 + resolution: "sort-keys@npm:2.0.0" + dependencies: + is-plain-obj: ^1.0.0 + checksum: f0fd827fa9f8f866e98588d2a38c35209afbf1e9a05bb0e4ceeeb8bbf31d923c8902b0a7e0f561590ddb65e58eba6a74f74b991c85360bcc52e83a3f0d1cffd7 + languageName: node + linkType: hard + "source-map-js@npm:^1.0.2": version: 1.0.2 resolution: "source-map-js@npm:1.0.2" @@ -11027,7 +16865,20 @@ __metadata: languageName: node linkType: hard -"source-map-support@npm:^0.5.20, source-map-support@npm:~0.5.12": +"source-map-resolve@npm:^0.5.0": + version: 0.5.3 + resolution: "source-map-resolve@npm:0.5.3" + dependencies: + atob: ^2.1.2 + decode-uri-component: ^0.2.0 + resolve-url: ^0.2.1 + source-map-url: ^0.4.0 + urix: ^0.1.0 + checksum: c73fa44ac00783f025f6ad9e038ab1a2e007cd6a6b86f47fe717c3d0765b4a08d264f6966f3bd7cd9dbcd69e4832783d5472e43247775b2a550d6f2155d24bae + languageName: node + linkType: hard + +"source-map-support@npm:^0.5.19, source-map-support@npm:~0.5.12": version: 0.5.21 resolution: "source-map-support@npm:0.5.21" dependencies: @@ -11037,13 +16888,27 @@ __metadata: languageName: node linkType: hard -"source-map@npm:0.7.4, source-map@npm:^0.7.0, source-map@npm:^0.7.4": +"source-map-url@npm:^0.4.0": + version: 0.4.1 + resolution: "source-map-url@npm:0.4.1" + checksum: 64c5c2c77aff815a6e61a4120c309ae4cac01298d9bcbb3deb1b46a4dd4c46d4a1eaeda79ec9f684766ae80e8dc86367b89326ce9dd2b89947bd9291fc1ac08c + languageName: node + linkType: hard + +"source-map@npm:0.7.4, source-map@npm:^0.7.0": version: 0.7.4 resolution: "source-map@npm:0.7.4" checksum: 01cc5a74b1f0e1d626a58d36ad6898ea820567e87f18dfc9d24a9843a351aaa2ec09b87422589906d6ff1deed29693e176194dc88bcae7c9a852dc74b311dbf5 languageName: node linkType: hard +"source-map@npm:^0.5.6": + version: 0.5.7 + resolution: "source-map@npm:0.5.7" + checksum: 5dc2043b93d2f194142c7f38f74a24670cd7a0063acdaf4bf01d2964b402257ae843c2a8fa822ad5b71013b5fcafa55af7421383da919752f22ff488bc553f4d + 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": version: 0.6.1 resolution: "source-map@npm:0.6.1" @@ -11117,6 +16982,24 @@ __metadata: languageName: node linkType: hard +"split-string@npm:^3.0.1, split-string@npm:^3.0.2": + version: 3.1.0 + resolution: "split-string@npm:3.1.0" + dependencies: + extend-shallow: ^3.0.0 + checksum: ae5af5c91bdc3633628821bde92fdf9492fa0e8a63cf6a0376ed6afde93c701422a1610916f59be61972717070119e848d10dfbbd5024b7729d6a71972d2a84c + languageName: node + linkType: hard + +"split2@npm:^1.0.0": + version: 1.1.1 + resolution: "split2@npm:1.1.1" + dependencies: + through2: ~2.0.0 + checksum: 9120c9033f301307ee440c14579812431f279484f384ffab988a8f9723df4650a775b5e9803169041d5c09ed3f9182b207396657b0b5aedfcffd165a4531ac36 + languageName: node + linkType: hard + "split2@npm:^3.0.0": version: 3.2.2 resolution: "split2@npm:3.2.2" @@ -11179,13 +17062,29 @@ __metadata: languageName: node linkType: hard -"stack-trace@npm:0.0.10": +"stack-generator@npm:^2.0.3": + version: 2.0.10 + resolution: "stack-generator@npm:2.0.10" + dependencies: + stackframe: ^1.3.4 + checksum: 4fc3978a934424218a0aa9f398034e1f78153d5ff4f4ff9c62478c672debb47dd58de05b09fc3900530cbb526d72c93a6e6c9353bacc698e3b1c00ca3dda0c47 + languageName: node + linkType: hard + +"stack-trace@npm:0.0.x": version: 0.0.10 resolution: "stack-trace@npm:0.0.10" checksum: 473036ad32f8c00e889613153d6454f9be0536d430eb2358ca51cad6b95cea08a3cc33cc0e34de66b0dad221582b08ed2e61ef8e13f4087ab690f388362d6610 languageName: node linkType: hard +"stackframe@npm:^1.3.4": + version: 1.3.4 + resolution: "stackframe@npm:1.3.4" + checksum: bae1596873595c4610993fa84f86a3387d67586401c1816ea048c0196800c0646c4d2da98c2ee80557fd9eff05877efe33b91ba6cd052658ed96ddc85d19067d + languageName: node + linkType: hard + "standard-version@npm:^9.5.0": version: 9.5.0 resolution: "standard-version@npm:9.5.0" @@ -11210,6 +17109,52 @@ __metadata: languageName: node linkType: hard +"static-extend@npm:^0.1.1": + version: 0.1.2 + resolution: "static-extend@npm:0.1.2" + dependencies: + define-property: ^0.2.5 + object-copy: ^0.1.0 + checksum: 8657485b831f79e388a437260baf22784540417a9b29e11572c87735df24c22b84eda42107403a64b30861b2faf13df9f7fc5525d51f9d1d2303aba5cbf4e12c + languageName: node + linkType: hard + +"static-server@npm:^2.2.1": + version: 2.2.1 + resolution: "static-server@npm:2.2.1" + dependencies: + chalk: ^0.5.1 + commander: ^2.3.0 + file-size: 0.0.5 + mime: ^1.2.11 + opn: ^5.2.0 + bin: + static-server: ./bin/static-server.js + checksum: 7cec351d26f5037440ec664f7bfb581303d757a394b79d8d55609cb523db249a79cc775e66f47af4e7da1cb992df5ec2c8ebf7974fd849a8072e485c59c96996 + languageName: node + linkType: hard + +"statsd-client@npm:0.4.7": + version: 0.4.7 + resolution: "statsd-client@npm:0.4.7" + checksum: 05d2956513b91a9ccc0d00b01e8eda708fad0bd0a044a55beeb813c65df7fd5ede6b4a33c0d6526b6afb8873de2ab9c62303e1e9282f08dac7b5c72e9ac7fc32 + 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 + +"statuses@npm:>= 1.5.0 < 2": + version: 1.5.0 + resolution: "statuses@npm:1.5.0" + checksum: c469b9519de16a4bb19600205cffb39ee471a5f17b82589757ca7bd40a8d92ebb6ed9f98b5a540c5d302ccbc78f15dc03cc0280dd6e00df1335568a5d5758a5c + languageName: node + linkType: hard + "stormdb@npm:^0.6.0": version: 0.6.0 resolution: "stormdb@npm:0.6.0" @@ -11240,7 +17185,32 @@ __metadata: languageName: node linkType: hard -"string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": +"strict-uri-encode@npm:^1.0.0": + version: 1.1.0 + resolution: "strict-uri-encode@npm:1.1.0" + checksum: 9466d371f7b36768d43f7803f26137657559e4c8b0161fb9e320efb8edba3ae22f8e99d4b0d91da023b05a13f62ec5412c3f4f764b5788fac11d1fea93720bb3 + languageName: node + linkType: hard + +"string-similarity@npm:^4.0.4": + version: 4.0.4 + resolution: "string-similarity@npm:4.0.4" + checksum: 797b41b24e1eb6b3b0ab896950b58c295a19a82933479c75f7b5279ffb63e0b456a8c8d10329c02f607ca1a50370e961e83d552aa468ff3b0fa15809abc9eff7 + languageName: node + linkType: hard + +"string-width@npm:^1.0.1": + version: 1.0.2 + resolution: "string-width@npm:1.0.2" + dependencies: + code-point-at: ^1.0.0 + is-fullwidth-code-point: ^1.0.0 + strip-ansi: ^3.0.0 + checksum: 5c79439e95bc3bd7233a332c5f5926ab2ee90b23816ed4faa380ce3b2576d7800b0a5bb15ae88ed28737acc7ea06a518c2eef39142dd727adad0e45c776cd37e + languageName: node + linkType: hard + +"string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.2, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: @@ -11251,6 +17221,27 @@ __metadata: languageName: node linkType: hard +"string-width@npm:^2.1.0, string-width@npm:^2.1.1": + version: 2.1.1 + resolution: "string-width@npm:2.1.1" + dependencies: + is-fullwidth-code-point: ^2.0.0 + strip-ansi: ^4.0.0 + checksum: d6173abe088c615c8dffaf3861dc5d5906ed3dc2d6fd67ff2bd2e2b5dce7fd683c5240699cf0b1b8aa679a3b3bd6b28b5053c824cb89b813d7f6541d8f89064a + languageName: node + linkType: hard + +"string-width@npm:^5.0.0, string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" + dependencies: + eastasianwidth: ^0.2.0 + emoji-regex: ^9.2.2 + strip-ansi: ^7.0.1 + checksum: 7369deaa29f21dda9a438686154b62c2c5f661f8dda60449088f9f980196f7908fc39fdd1803e3e01541970287cf5deae336798337e9319a7055af89dafa7193 + languageName: node + linkType: hard + "string.prototype.repeat@npm:^1.0.0": version: 1.0.0 resolution: "string.prototype.repeat@npm:1.0.0" @@ -11329,6 +17320,51 @@ __metadata: languageName: node linkType: hard +"strip-ansi-control-characters@npm:^2.0.0": + version: 2.0.0 + resolution: "strip-ansi-control-characters@npm:2.0.0" + checksum: ec8100a5099a55442930c6c4e983863ddbb490228c395b7700af909f3ffdbdc4975388ef91aaf88071f89481b2b6546501adf3362c1e5a4031c87c31ad7e776c + languageName: node + linkType: hard + +"strip-ansi@npm:^0.3.0": + version: 0.3.0 + resolution: "strip-ansi@npm:0.3.0" + dependencies: + ansi-regex: ^0.2.1 + bin: + strip-ansi: cli.js + checksum: c154768b855009319a4ad9438233cbf3365b9e9008e6c39eadd3c7bd3614d4cde49f2b6f50e07632c2f148ed4b8ab3b4ddbae1f9805335df2ba25bc5653d22f4 + languageName: node + linkType: hard + +"strip-ansi@npm:^3.0.0, strip-ansi@npm:^3.0.1": + version: 3.0.1 + resolution: "strip-ansi@npm:3.0.1" + dependencies: + ansi-regex: ^2.0.0 + checksum: 9b974de611ce5075c70629c00fa98c46144043db92ae17748fb780f706f7a789e9989fd10597b7c2053ae8d1513fd707816a91f1879b2f71e6ac0b6a863db465 + languageName: node + linkType: hard + +"strip-ansi@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-ansi@npm:4.0.0" + dependencies: + ansi-regex: ^3.0.0 + checksum: d9186e6c0cf78f25274f6750ee5e4a5725fb91b70fdd79aa5fe648eab092a0ec5b9621b22d69d4534a56319f75d8944efbd84e3afa8d4ad1b9a9491f12c84eca + languageName: node + linkType: hard + +"strip-ansi@npm:^5.1.0": + version: 5.2.0 + resolution: "strip-ansi@npm:5.2.0" + dependencies: + ansi-regex: ^4.1.0 + checksum: bdb5f76ade97062bd88e7723aa019adbfacdcba42223b19ccb528ffb9fb0b89a5be442c663c4a3fb25268eaa3f6ea19c7c3fbae830bd1562d55adccae1fcec46 + languageName: node + linkType: hard + "strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": version: 6.0.1 resolution: "strip-ansi@npm:6.0.1" @@ -11338,6 +17374,15 @@ __metadata: languageName: node linkType: hard +"strip-ansi@npm:^7.0.0, strip-ansi@npm:^7.0.1": + version: 7.0.1 + resolution: "strip-ansi@npm:7.0.1" + dependencies: + ansi-regex: ^6.0.1 + checksum: 257f78fa433520e7f9897722731d78599cb3fce29ff26a20a5e12ba4957463b50a01136f37c43707f4951817a75e90820174853d6ccc240997adc5df8f966039 + languageName: node + linkType: hard + "strip-bom@npm:^3.0.0": version: 3.0.0 resolution: "strip-bom@npm:3.0.0" @@ -11355,6 +17400,15 @@ __metadata: languageName: node linkType: hard +"strip-dirs@npm:^2.0.0": + version: 2.1.0 + resolution: "strip-dirs@npm:2.1.0" + dependencies: + is-natural-number: ^4.0.1 + checksum: 9465547d71d8819daa7a5c9d4d783289ed8eac72eb06bd687bed382ce62af8ab8e6ffbda229805f5d2e71acce2ca4915e781c94190d284994cbc0b7cdc8303cc + languageName: node + linkType: hard + "strip-final-newline@npm:^2.0.0": version: 2.0.0 resolution: "strip-final-newline@npm:2.0.0" @@ -11392,6 +17446,15 @@ __metadata: languageName: node linkType: hard +"strip-outer@npm:^1.0.0": + version: 1.0.1 + resolution: "strip-outer@npm:1.0.1" + dependencies: + escape-string-regexp: ^1.0.2 + checksum: f8d65d33ca2b49aabc66bb41d689dda7b8b9959d320e3a40a2ef4d7079ff2f67ffb72db43f179f48dbf9495c2e33742863feab7a584d180fa62505439162c191 + languageName: node + linkType: hard + "strnum@npm:^1.0.5": version: 1.0.5 resolution: "strnum@npm:1.0.5" @@ -11482,6 +17545,22 @@ __metadata: languageName: node linkType: hard +"supports-color@npm:^0.2.0": + version: 0.2.0 + resolution: "supports-color@npm:0.2.0" + bin: + supports-color: cli.js + checksum: 7ec93a92418979aa8a965c85548a3f57441b48cb1e654e1a79e8bd3d62a614a8faec4afc078051da36318550cbf947f5d23da9fe53934ee577c2c300f1a9e4c4 + languageName: node + linkType: hard + +"supports-color@npm:^2.0.0": + version: 2.0.0 + resolution: "supports-color@npm:2.0.0" + checksum: 602538c5812b9006404370b5a4b885d3e2a1f6567d314f8b4a41974ffe7d08e525bf92ae0f9c7030e3b4c78e4e34ace55d6a67a74f1571bc205959f5972f88f0 + languageName: node + linkType: hard + "supports-color@npm:^5.3.0": version: 5.5.0 resolution: "supports-color@npm:5.5.0" @@ -11491,7 +17570,7 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^7.1.0": +"supports-color@npm:^7.0.0, supports-color@npm:^7.1.0": version: 7.2.0 resolution: "supports-color@npm:7.2.0" dependencies: @@ -11500,6 +17579,23 @@ __metadata: languageName: node linkType: hard +"supports-color@npm:^9.0.0": + version: 9.3.1 + resolution: "supports-color@npm:9.3.1" + checksum: 00c4d1082a7ba0ee21cba1d4e4a466642635412e40476777b530aa5110d035e99a420cd048e1fb6811f2254c0946095fbb87a1eccf1af1d1ca45ab0a4535db93 + languageName: node + linkType: hard + +"supports-hyperlinks@npm:^2.0.0, supports-hyperlinks@npm:^2.2.0": + version: 2.3.0 + resolution: "supports-hyperlinks@npm:2.3.0" + dependencies: + has-flag: ^4.0.0 + supports-color: ^7.0.0 + checksum: 9ee0de3c8ce919d453511b2b1588a8205bd429d98af94a01df87411391010fe22ca463f268c84b2ce2abad019dfff8452aa02806eeb5c905a8d7ad5c4f4c52b8 + languageName: node + linkType: hard + "supports-preserve-symlinks-flag@npm:^1.0.0": version: 1.0.0 resolution: "supports-preserve-symlinks-flag@npm:1.0.0" @@ -11524,6 +17620,13 @@ __metadata: languageName: node linkType: hard +"symbol-observable@npm:^1.1.0": + version: 1.2.0 + resolution: "symbol-observable@npm:1.2.0" + checksum: 48ffbc22e3d75f9853b3ff2ae94a44d84f386415110aea5effc24d84c502e03a4a6b7a8f75ebaf7b585780bda34eb5d6da3121f826a6f93398429d30032971b6 + languageName: node + linkType: hard + "symbol-tree@npm:^3.2.4": version: 3.2.4 resolution: "symbol-tree@npm:3.2.4" @@ -11531,6 +17634,20 @@ __metadata: languageName: node linkType: hard +"tabtab@npm:^3.0.2": + version: 3.0.2 + resolution: "tabtab@npm:3.0.2" + dependencies: + debug: ^4.0.1 + es6-promisify: ^6.0.0 + inquirer: ^6.0.0 + minimist: ^1.2.0 + mkdirp: ^0.5.1 + untildify: ^3.0.3 + checksum: 993fdd78afc8a64d262638a6845a5b69aa03c5e0e3de17a1ee3396128299aff3fb879b7c79bff63d2a3c29b326da494a1463034a25099b1129f80ca311117c02 + languageName: node + linkType: hard + "tailwindcss@npm:^3.1.8": version: 3.2.4 resolution: "tailwindcss@npm:3.2.4" @@ -11579,7 +17696,22 @@ __metadata: languageName: node linkType: hard -"tar-stream@npm:^2.1.4": +"tar-stream@npm:^1.5.2": + version: 1.6.2 + resolution: "tar-stream@npm:1.6.2" + dependencies: + bl: ^1.0.0 + buffer-alloc: ^1.2.0 + end-of-stream: ^1.0.0 + fs-constants: ^1.0.0 + readable-stream: ^2.3.0 + to-buffer: ^1.1.1 + xtend: ^4.0.0 + checksum: a5d49e232d3e33321bbd150381b6a4e5046bf12b1c2618acb95435b7871efde4d98bd1891eb2200478a7142ef7e304e033eb29bbcbc90451a2cdfa1890e05245 + languageName: node + linkType: hard + +"tar-stream@npm:^2.1.4, tar-stream@npm:^2.2.0": version: 2.2.0 resolution: "tar-stream@npm:2.2.0" dependencies: @@ -11627,6 +17759,26 @@ __metadata: languageName: node linkType: hard +"temp-dir@npm:^2.0.0": + version: 2.0.0 + resolution: "temp-dir@npm:2.0.0" + checksum: cc4f0404bf8d6ae1a166e0e64f3f409b423f4d1274d8c02814a59a5529f07db6cd070a749664141b992b2c1af337fa9bb451a460a43bb9bcddc49f235d3115aa + languageName: node + linkType: hard + +"tempy@npm:^1.0.0": + version: 1.0.1 + resolution: "tempy@npm:1.0.1" + dependencies: + del: ^6.0.0 + is-stream: ^2.0.0 + temp-dir: ^2.0.0 + type-fest: ^0.16.0 + unique-string: ^2.0.0 + checksum: e77ca4440af18e42dc64d8903b7ed0be673455b76680ff94a7d7c6ee7c16f7604bdcdee3c39436342b1082c23eda010dbe48f6094e836e0bd53c8b1aa63e5b95 + languageName: node + linkType: hard + "term-size@npm:^2.1.0": version: 2.2.1 resolution: "term-size@npm:2.2.1" @@ -11634,6 +17786,26 @@ __metadata: languageName: node linkType: hard +"terminal-link@npm:^2.1.1": + version: 2.1.1 + resolution: "terminal-link@npm:2.1.1" + dependencies: + ansi-escapes: ^4.2.1 + supports-hyperlinks: ^2.0.0 + checksum: ce3d2cd3a438c4a9453947aa664581519173ea40e77e2534d08c088ee6dda449eabdbe0a76d2a516b8b73c33262fedd10d5270ccf7576ae316e3db170ce6562f + languageName: node + linkType: hard + +"terminal-link@npm:^3.0.0": + version: 3.0.0 + resolution: "terminal-link@npm:3.0.0" + dependencies: + ansi-escapes: ^5.0.0 + supports-hyperlinks: ^2.2.0 + checksum: 85a78ae50a2cd3c43df25922e7572f1008c92b1ea98c6c4579bbbe02fa54677a487123c3cae44fecd1a36cac782d0be2cec212a916818abb2b4df6fbb8eed341 + languageName: node + linkType: hard + "terser@npm:^4.0.0": version: 4.8.1 resolution: "terser@npm:4.8.1" @@ -11665,6 +17837,13 @@ __metadata: languageName: node linkType: hard +"text-hex@npm:1.0.x": + version: 1.0.0 + resolution: "text-hex@npm:1.0.0" + checksum: 1138f68adc97bf4381a302a24e2352f04992b7b1316c5003767e9b0d3367ffd0dc73d65001ea02b07cd0ecc2a9d186de0cf02f3c2d880b8a522d4ccb9342244a + languageName: node + linkType: hard + "text-table@npm:^0.2.0": version: 0.2.0 resolution: "text-table@npm:0.2.0" @@ -11690,7 +17869,27 @@ __metadata: languageName: node linkType: hard -"through2@npm:^2.0.0": +"through2-filter@npm:^3.0.0": + version: 3.0.0 + resolution: "through2-filter@npm:3.0.0" + dependencies: + through2: ~2.0.0 + xtend: ~4.0.0 + checksum: 2fa0f042290749824b973c27ae006f9dfe7c9bcee570504ab066998e3bd7d43bea28b642eef8a4434dbfd0a7cd18c8823ac81927614234fd477ccd5ea38fab18 + languageName: node + linkType: hard + +"through2-map@npm:^3.0.0": + version: 3.0.0 + resolution: "through2-map@npm:3.0.0" + dependencies: + through2: ~2.0.0 + xtend: ^4.0.0 + checksum: 9e6c1e6ac3ca3e038c086a5b28bc2ca6192a239a0717b0c3cdd031d130bbb96536e655fa1a78ec3a55c454a8504218fa7923824aafa44b4d7a75e31614b2c75d + languageName: node + linkType: hard + +"through2@npm:^2.0.0, through2@npm:~2.0.0": version: 2.0.5 resolution: "through2@npm:2.0.5" dependencies: @@ -11709,13 +17908,27 @@ __metadata: languageName: node linkType: hard -"through@npm:2, through@npm:>=2.2.7 <3, through@npm:^2.3.8": +"through@npm:2, through@npm:>=2.2.7 <3, through@npm:^2.3.6, through@npm:^2.3.8": version: 2.3.8 resolution: "through@npm:2.3.8" checksum: a38c3e059853c494af95d50c072b83f8b676a9ba2818dcc5b108ef252230735c54e0185437618596c790bbba8fcdaef5b290405981ffa09dce67b1f1bf190cbd languageName: node linkType: hard +"time-zone@npm:^1.0.0": + version: 1.0.0 + resolution: "time-zone@npm:1.0.0" + checksum: e46f5a69b8c236dcd8e91e29d40d4e7a3495ed4f59888c3f84ce1d9678e20461421a6ba41233509d47dd94bc18f1a4377764838b21b584663f942b3426dcbce8 + languageName: node + linkType: hard + +"timed-out@npm:^4.0.1": + version: 4.0.1 + resolution: "timed-out@npm:4.0.1" + checksum: 98efc5d6fc0d2a329277bd4d34f65c1bf44d9ca2b14fd267495df92898f522e6f563c5e9e467c418e0836f5ca1f47a84ca3ee1de79b1cc6fe433834b7f02ec54 + languageName: node + linkType: hard + "tiny-inflate@npm:^1.0.0, tiny-inflate@npm:^1.0.3": version: 1.0.3 resolution: "tiny-inflate@npm:1.0.3" @@ -11730,6 +17943,80 @@ __metadata: languageName: node linkType: hard +"tmp-promise@npm:^3.0.2, tmp-promise@npm:^3.0.3": + version: 3.0.3 + resolution: "tmp-promise@npm:3.0.3" + dependencies: + tmp: ^0.2.0 + checksum: f854f5307dcee6455927ec3da9398f139897faf715c5c6dcee6d9471ae85136983ea06662eba2edf2533bdcb0fca66d16648e79e14381e30c7fb20be9c1aa62c + languageName: node + linkType: hard + +"tmp@npm:^0.0.33": + version: 0.0.33 + resolution: "tmp@npm:0.0.33" + dependencies: + os-tmpdir: ~1.0.2 + checksum: 902d7aceb74453ea02abbf58c203f4a8fc1cead89b60b31e354f74ed5b3fb09ea817f94fb310f884a5d16987dd9fa5a735412a7c2dd088dd3d415aa819ae3a28 + languageName: node + linkType: hard + +"tmp@npm:^0.2.0": + version: 0.2.1 + resolution: "tmp@npm:0.2.1" + dependencies: + rimraf: ^3.0.0 + checksum: 8b1214654182575124498c87ca986ac53dc76ff36e8f0e0b67139a8d221eaecfdec108c0e6ec54d76f49f1f72ab9325500b246f562b926f85bcdfca8bf35df9e + languageName: node + linkType: hard + +"to-buffer@npm:^1.1.1": + version: 1.1.1 + resolution: "to-buffer@npm:1.1.1" + checksum: 6c897f58c2bdd8b8b1645ea515297732fec6dafb089bf36d12370c102ff5d64abf2be9410e0b1b7cfc707bada22d9a4084558010bfc78dd7023748dc5dd9a1ce + languageName: node + linkType: hard + +"to-fast-properties@npm:^2.0.0": + version: 2.0.0 + resolution: "to-fast-properties@npm:2.0.0" + checksum: be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168 + languageName: node + linkType: hard + +"to-object-path@npm:^0.3.0": + version: 0.3.0 + resolution: "to-object-path@npm:0.3.0" + dependencies: + kind-of: ^3.0.2 + checksum: 9425effee5b43e61d720940fa2b889623f77473d459c2ce3d4a580a4405df4403eec7be6b857455908070566352f9e2417304641ed158dda6f6a365fe3e66d70 + languageName: node + linkType: hard + +"to-readable-stream@npm:^1.0.0": + version: 1.0.0 + resolution: "to-readable-stream@npm:1.0.0" + checksum: 2bd7778490b6214a2c40276065dd88949f4cf7037ce3964c76838b8cb212893aeb9cceaaf4352a4c486e3336214c350270f3263e1ce7a0c38863a715a4d9aeb5 + languageName: node + linkType: hard + +"to-readable-stream@npm:^2.0.0, to-readable-stream@npm:^2.1.0": + version: 2.1.0 + resolution: "to-readable-stream@npm:2.1.0" + checksum: 42039fb968a56af99a7201fe01debb0bc55a585a2ab0b1746e322c339c50f91043b1269cedcc6350d2a5f81ceaa6cff7960704f748a59542d1f2c50aca5ea7b9 + languageName: node + linkType: hard + +"to-regex-range@npm:^2.1.0": + version: 2.1.1 + resolution: "to-regex-range@npm:2.1.1" + dependencies: + is-number: ^3.0.0 + repeat-string: ^1.6.1 + checksum: 46093cc14be2da905cc931e442d280b2e544e2bfdb9a24b3cf821be8d342f804785e5736c108d5be026021a05d7b38144980a61917eee3c88de0a5e710e10320 + languageName: node + linkType: hard + "to-regex-range@npm:^5.0.1": version: 5.0.1 resolution: "to-regex-range@npm:5.0.1" @@ -11739,6 +18026,39 @@ __metadata: languageName: node linkType: hard +"to-regex@npm:^3.0.1, to-regex@npm:^3.0.2": + version: 3.0.2 + resolution: "to-regex@npm:3.0.2" + dependencies: + define-property: ^2.0.2 + extend-shallow: ^3.0.2 + regex-not: ^1.0.2 + safe-regex: ^1.1.0 + checksum: 4ed4a619059b64e204aad84e4e5f3ea82d97410988bcece7cf6cbfdbf193d11bff48cf53842d88b8bb00b1bfc0d048f61f20f0709e6f393fd8fe0122662d9db4 + 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 + +"toml@npm:^3.0.0": + version: 3.0.0 + resolution: "toml@npm:3.0.0" + checksum: 5d7f1d8413ad7780e9bdecce8ea4c3f5130dd53b0a4f2e90b93340979a137739879d7b9ce2ce05c938b8cc828897fe9e95085197342a1377dd8850bf5125f15f + languageName: node + linkType: hard + +"tomlify-j0.4@npm:^3.0.0": + version: 3.0.0 + resolution: "tomlify-j0.4@npm:3.0.0" + checksum: e24aaf6d614abd24437669ac3bb90185d514f8c0cc9443e36264035b2381afecae1383d55a29551993842b01080ada7ba5bc1b9dab8f479a7057376634da233d + languageName: node + linkType: hard + "tough-cookie@npm:^4.0.0": version: 4.1.2 resolution: "tough-cookie@npm:4.1.2" @@ -11809,6 +18129,22 @@ __metadata: languageName: node linkType: hard +"trim-repeated@npm:^1.0.0": + version: 1.0.0 + resolution: "trim-repeated@npm:1.0.0" + dependencies: + escape-string-regexp: ^1.0.2 + checksum: e25c235305b82c43f1d64a67a71226c406b00281755e4c2c4f3b1d0b09c687a535dd3c4483327f949f28bb89dc400a0bc5e5b749054f4b99f49ebfe48ba36496 + languageName: node + linkType: hard + +"triple-beam@npm:^1.3.0": + version: 1.3.0 + resolution: "triple-beam@npm:1.3.0" + checksum: 7d7b77d8625fb252c126c24984a68de462b538a8fcd1de2abd0a26421629cf3527d48e23b3c2264f08f4a6c3bc40a478a722176f4d7b6a1acc154cb70c359f2b + languageName: node + linkType: hard + "trough@npm:^2.0.0": version: 2.1.0 resolution: "trough@npm:2.1.0" @@ -11823,7 +18159,7 @@ __metadata: languageName: node linkType: hard -"ts-node@npm:^10.8.1": +"ts-node@npm:^10.6.0, ts-node@npm:^10.8.1": version: 10.9.1 resolution: "ts-node@npm:10.9.1" dependencies: @@ -11872,7 +18208,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^1.11.1, tslib@npm:^1.8.1, tslib@npm:^1.9.3": +"tslib@npm:^1.11.1, tslib@npm:^1.8.1, tslib@npm:^1.9.0, tslib@npm:^1.9.3": version: 1.14.1 resolution: "tslib@npm:1.14.1" checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd @@ -11931,6 +18267,20 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:^0.10.0": + version: 0.10.0 + resolution: "type-fest@npm:0.10.0" + checksum: 83411824cac9aa3b130704ea53de8ab3a0607e20eca3590a73a4bb79a5a1eaccc502181b86916e9d1965d48dfc8343a2fe373c2262322d1d8e00f65c14bab506 + languageName: node + linkType: hard + +"type-fest@npm:^0.16.0": + version: 0.16.0 + resolution: "type-fest@npm:0.16.0" + checksum: 1a4102c06dc109db00418c753062e206cab65befd469d000ece4452ee649bf2a9cf57686d96fb42326bc9d918d9a194d4452897b486dcc41989e5c99e4e87094 + languageName: node + linkType: hard + "type-fest@npm:^0.18.0": version: 0.18.1 resolution: "type-fest@npm:0.18.1" @@ -11945,6 +18295,13 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:^0.21.3": + version: 0.21.3 + resolution: "type-fest@npm:0.21.3" + checksum: e6b32a3b3877f04339bae01c193b273c62ba7bfc9e325b8703c4ee1b32dc8fe4ef5dfa54bf78265e069f7667d058e360ae0f37be5af9f153b22382cd55a9afe0 + languageName: node + linkType: hard + "type-fest@npm:^0.5.0": version: 0.5.2 resolution: "type-fest@npm:0.5.2" @@ -11959,13 +18316,46 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.8.1": +"type-fest@npm:^0.8.0, type-fest@npm:^0.8.1": version: 0.8.1 resolution: "type-fest@npm:0.8.1" checksum: d61c4b2eba24009033ae4500d7d818a94fd6d1b481a8111612ee141400d5f1db46f199c014766b9fa9b31a6a7374d96fc748c6d688a78a3ce5a33123839becb7 languageName: node linkType: hard +"type-fest@npm:^1.0.1, type-fest@npm:^1.0.2": + version: 1.4.0 + resolution: "type-fest@npm:1.4.0" + checksum: b011c3388665b097ae6a109a437a04d6f61d81b7357f74cbcb02246f2f5bd72b888ae33631b99871388122ba0a87f4ff1c94078e7119ff22c70e52c0ff828201 + languageName: node + linkType: hard + +"type-fest@npm:^2.0.0, type-fest@npm:^2.11.2, type-fest@npm:^2.13.0, type-fest@npm:^2.5.0": + version: 2.19.0 + resolution: "type-fest@npm:2.19.0" + checksum: a4ef07ece297c9fba78fc1bd6d85dff4472fe043ede98bd4710d2615d15776902b595abf62bd78339ed6278f021235fb28a96361f8be86ed754f778973a0d278 + 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-to-buffer@npm:^3.1.5": + version: 3.1.5 + resolution: "typedarray-to-buffer@npm:3.1.5" + dependencies: + is-typedarray: ^1.0.0 + checksum: 99c11aaa8f45189fcfba6b8a4825fd684a321caa9bd7a76a27cf0c7732c174d198b99f449c52c3818107430b5f41c0ccbbfb75cb2ee3ca4a9451710986d61a60 + languageName: node + linkType: hard + "typedarray@npm:^0.0.6": version: 0.0.6 resolution: "typedarray@npm:0.0.6" @@ -11983,7 +18373,7 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^4.6.4": +"typescript@npm:^4.5.5, typescript@npm:^4.6.4, typescript@npm:^4.8.4": version: 4.9.4 resolution: "typescript@npm:4.9.4" bin: @@ -12003,7 +18393,7 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@^4.6.4#~builtin": +"typescript@patch:typescript@^4.5.5#~builtin, typescript@patch:typescript@^4.6.4#~builtin, typescript@patch:typescript@^4.8.4#~builtin": version: 4.9.4 resolution: "typescript@patch:typescript@npm%3A4.9.4#~builtin::version=4.9.4&hash=d73830" bin: @@ -12022,6 +18412,15 @@ __metadata: languageName: node linkType: hard +"uid-safe@npm:2.1.5": + version: 2.1.5 + resolution: "uid-safe@npm:2.1.5" + dependencies: + random-bytes: ~1.0.0 + checksum: 07536043da9a026f4a2bc397543d0ace7587449afa1d9d2c4fd3ce76af8a5263a678788bcc429dff499ef29d45843cd5ee9d05434450fcfc19cc661229f703d1 + languageName: node + linkType: hard + "unbox-primitive@npm:^1.0.2": version: 1.0.2 resolution: "unbox-primitive@npm:1.0.2" @@ -12034,7 +18433,7 @@ __metadata: languageName: node linkType: hard -"unbzip2-stream@npm:^1.3.3": +"unbzip2-stream@npm:^1.0.9, unbzip2-stream@npm:^1.3.3": version: 1.4.3 resolution: "unbzip2-stream@npm:1.4.3" dependencies: @@ -12051,13 +18450,6 @@ __metadata: languageName: node linkType: hard -"undici@npm:5.9.1": - version: 5.9.1 - resolution: "undici@npm:5.9.1" - checksum: 8acabbac8e18943ff822574f831d03d65e697e66ef486a679763f7778f37b28980caf7097ededf4017b58c099809e8efd8509a6688f60638360fb86ef47a59df - languageName: node - linkType: hard - "undici@npm:^5.14.0": version: 5.14.0 resolution: "undici@npm:5.14.0" @@ -12102,6 +18494,18 @@ __metadata: languageName: node linkType: hard +"union-value@npm:^1.0.0": + version: 1.0.1 + resolution: "union-value@npm:1.0.1" + dependencies: + arr-union: ^3.1.0 + get-value: ^2.0.6 + is-extendable: ^0.1.1 + set-value: ^2.0.1 + checksum: a3464097d3f27f6aa90cf103ed9387541bccfc006517559381a10e0dffa62f465a9d9a09c9b9c3d26d0f4cbe61d4d010e2fbd710fd4bf1267a768ba8a774b0ba + languageName: node + linkType: hard + "unique-filename@npm:^2.0.0": version: 2.0.1 resolution: "unique-filename@npm:2.0.1" @@ -12120,6 +18524,24 @@ __metadata: languageName: node linkType: hard +"unique-string@npm:^2.0.0": + version: 2.0.0 + resolution: "unique-string@npm:2.0.0" + dependencies: + crypto-random-string: ^2.0.0 + checksum: ef68f639136bcfe040cf7e3cd7a8dff076a665288122855148a6f7134092e6ed33bf83a7f3a9185e46c98dddc445a0da6ac25612afa1a7c38b8b654d6c02498e + languageName: node + linkType: hard + +"unique-string@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-string@npm:3.0.0" + dependencies: + crypto-random-string: ^4.0.0 + checksum: 1a1e2e7d02eab1bb10f720475da735e1990c8a5ff34edd1a3b6bc31590cb4210b7a1233d779360cc622ce11c211e43afa1628dd658f35d3e6a89964b622940df + languageName: node + linkType: hard + "unist-builder@npm:^3.0.0": version: 3.0.0 resolution: "unist-builder@npm:3.0.0" @@ -12229,6 +18651,39 @@ __metadata: languageName: node linkType: hard +"unixify@npm:^1.0.0": + version: 1.0.0 + resolution: "unixify@npm:1.0.0" + dependencies: + normalize-path: ^2.1.1 + checksum: 3be30e48579fc6c7390bd59b4ab9e745fede0c164dfb7351cf710bd1dbef8484b1441186205af6bcb13b731c0c88caf9b33459f7bf8c89e79c046e656ae433f0 + languageName: node + linkType: hard + +"unpipe@npm:1.0.0, unpipe@npm:~1.0.0": + version: 1.0.0 + resolution: "unpipe@npm:1.0.0" + checksum: 4fa18d8d8d977c55cb09715385c203197105e10a6d220087ec819f50cb68870f02942244f1017565484237f1f8c5d3cd413631b1ae104d3096f24fdfde1b4aa2 + languageName: node + linkType: hard + +"unset-value@npm:^1.0.0": + version: 1.0.0 + resolution: "unset-value@npm:1.0.0" + dependencies: + has-value: ^0.3.1 + isobject: ^3.0.0 + checksum: 5990ecf660672be2781fc9fb322543c4aa592b68ed9a3312fa4df0e9ba709d42e823af090fc8f95775b4cd2c9a5169f7388f0cec39238b6d0d55a69fc2ab6b29 + languageName: node + linkType: hard + +"untildify@npm:^3.0.3": + version: 3.0.3 + resolution: "untildify@npm:3.0.3" + checksum: 1c42352a37d9663090f126f343f1ee0a0b90c0a4bd7991229a6f474fa0ab856880f0e8798c15fa12c13e64c5345f63dd428e4b6ac2073d594839548025a4bed9 + languageName: node + linkType: hard + "update-browserslist-db@npm:^1.0.9": version: 1.0.10 resolution: "update-browserslist-db@npm:1.0.10" @@ -12243,6 +18698,50 @@ __metadata: languageName: node linkType: hard +"update-notifier@npm:^5.0.0": + version: 5.1.0 + resolution: "update-notifier@npm:5.1.0" + dependencies: + boxen: ^5.0.0 + chalk: ^4.1.0 + configstore: ^5.0.1 + has-yarn: ^2.1.0 + import-lazy: ^2.1.0 + is-ci: ^2.0.0 + is-installed-globally: ^0.4.0 + is-npm: ^5.0.0 + is-yarn-global: ^0.3.0 + latest-version: ^5.1.0 + pupa: ^2.1.1 + semver: ^7.3.4 + semver-diff: ^3.1.1 + xdg-basedir: ^4.0.0 + checksum: 461e5e5b002419296d3868ee2abe0f9ab3e1846d9db642936d0c46f838872ec56069eddfe662c45ce1af0a8d6d5026353728de2e0a95ab2e3546a22ea077caf1 + languageName: node + linkType: hard + +"update-notifier@npm:^6.0.0": + version: 6.0.2 + resolution: "update-notifier@npm:6.0.2" + dependencies: + boxen: ^7.0.0 + chalk: ^5.0.1 + configstore: ^6.0.0 + has-yarn: ^3.0.0 + import-lazy: ^4.0.0 + is-ci: ^3.0.1 + is-installed-globally: ^0.4.0 + is-npm: ^6.0.0 + is-yarn-global: ^0.4.0 + latest-version: ^7.0.0 + pupa: ^3.1.0 + semver: ^7.3.7 + semver-diff: ^4.0.0 + xdg-basedir: ^5.1.0 + checksum: 4bae7b3eca7b2068b6b87dde88c9dad24831fa913a5b83ecb39a7e4702c93e8b05fd9bcac5f1a005178f6e5dc859e0b3817ddda833d2a7ab92c6485e078b3cc8 + languageName: node + linkType: hard + "upper-case@npm:^1.1.1": version: 1.1.3 resolution: "upper-case@npm:1.1.3" @@ -12266,6 +18765,22 @@ __metadata: languageName: node linkType: hard +"urix@npm:^0.1.0": + version: 0.1.0 + resolution: "urix@npm:0.1.0" + checksum: 4c076ecfbf3411e888547fe844e52378ab5ada2d2f27625139011eada79925e77f7fbf0e4016d45e6a9e9adb6b7e64981bd49b22700c7c401c5fc15f423303b3 + languageName: node + linkType: hard + +"url-parse-lax@npm:^3.0.0": + version: 3.0.0 + resolution: "url-parse-lax@npm:3.0.0" + dependencies: + prepend-http: ^2.0.0 + checksum: 1040e357750451173132228036aff1fd04abbd43eac1fb3e4fca7495a078bcb8d33cb765fe71ad7e473d9c94d98fd67adca63bd2716c815a2da066198dd37217 + languageName: node + linkType: hard + "url-parse@npm:^1.5.3": version: 1.5.10 resolution: "url-parse@npm:1.5.10" @@ -12285,10 +18800,20 @@ __metadata: languageName: node linkType: hard -"urlpattern-polyfill@npm:^4.0.3": - version: 4.0.3 - resolution: "urlpattern-polyfill@npm:4.0.3" - checksum: 96ac2aea49a7b17a9ff41b2ccccdaf5e58a18c33c494cf663bea853c1ac2e70fd26a147b33b83ff7c6b77f9e34ee48409d21dbc1f2a2ad5cd9509cf3d5cb148e +"url-to-options@npm:^1.0.1": + version: 1.0.1 + resolution: "url-to-options@npm:1.0.1" + checksum: 20e59f4578525fb0d30ffc22b13b5aa60bc9e57cefd4f5842720f5b57211b6dec54abeae2d675381ac4486fd1a2e987f1318725dea996e503ff89f8c8ce2c17e + languageName: node + linkType: hard + +"url@npm:^0.11.0": + version: 0.11.0 + resolution: "url@npm:0.11.0" + dependencies: + punycode: 1.3.2 + querystring: 0.2.0 + checksum: 50d100d3dd2d98b9fe3ada48cadb0b08aa6be6d3ac64112b867b56b19be4bfcba03c2a9a0d7922bfd7ac17d4834e88537749fe182430dfd9b68e520175900d90 languageName: node linkType: hard @@ -12303,6 +18828,13 @@ __metadata: languageName: node linkType: hard +"use@npm:^3.1.0": + version: 3.1.1 + resolution: "use@npm:3.1.1" + checksum: 08a130289f5238fcbf8f59a18951286a6e660d17acccc9d58d9b69dfa0ee19aa038e8f95721b00b432c36d1629a9e32a464bf2e7e0ae6a244c42ddb30bdd8b33 + languageName: node + linkType: hard + "util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" @@ -12310,6 +18842,13 @@ __metadata: languageName: node linkType: hard +"utils-merge@npm:1.0.1": + version: 1.0.1 + resolution: "utils-merge@npm:1.0.1" + checksum: c81095493225ecfc28add49c106ca4f09cdf56bc66731aa8dabc2edbbccb1e1bfe2de6a115e5c6a380d3ea166d1636410b62ef216bb07b3feb1cfde1d95d5080 + languageName: node + linkType: hard + "uuid@npm:^3.3.2": version: 3.4.0 resolution: "uuid@npm:3.4.0" @@ -12319,7 +18858,7 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^8.3.2": +"uuid@npm:^8.0.0, uuid@npm:^8.3.2": version: 8.3.2 resolution: "uuid@npm:8.3.2" bin: @@ -12328,6 +18867,15 @@ __metadata: languageName: node linkType: hard +"uuid@npm:^9.0.0": + version: 9.0.0 + resolution: "uuid@npm:9.0.0" + bin: + uuid: dist/bin/uuid + checksum: 8dd2c83c43ddc7e1c71e36b60aea40030a6505139af6bee0f382ebcd1a56f6cd3028f7f06ffb07f8cf6ced320b76aea275284b224b002b289f89fe89c389b028 + languageName: node + linkType: hard + "uvu@npm:^0.5.0, uvu@npm:^0.5.6": version: 0.5.6 resolution: "uvu@npm:0.5.6" @@ -12379,6 +18927,13 @@ __metadata: languageName: node linkType: hard +"vary@npm:~1.1.2": + version: 1.1.2 + resolution: "vary@npm:1.1.2" + checksum: ae0123222c6df65b437669d63dfa8c36cee20a504101b2fcd97b8bf76f91259c17f9f2b4d70a1e3c6bbcee7f51b28392833adb6b2770b23b01abec84e369660b + languageName: node + linkType: hard + "verror@npm:1.10.0": version: 1.10.0 resolution: "verror@npm:1.10.0" @@ -12501,6 +19056,19 @@ __metadata: languageName: node linkType: hard +"wait-port@npm:^1.0.1": + version: 1.0.4 + resolution: "wait-port@npm:1.0.4" + dependencies: + chalk: ^4.1.2 + commander: ^9.3.0 + debug: ^4.3.4 + bin: + wait-port: bin/wait-port.js + checksum: 062aa830be38d16e0d004cb6b770cc1ce0b529e4e5cc2bca4c2e670c123bac1a1e692db938e9ce3db5199766a55fd02b1af5f4fee574b1b07ec65f373bbae324 + languageName: node + linkType: hard + "wawoff2@npm:^2.0.0": version: 2.0.1 resolution: "wawoff2@npm:2.0.1" @@ -12513,6 +19081,15 @@ __metadata: languageName: node linkType: hard +"wcwidth@npm:^1.0.1": + version: 1.0.1 + resolution: "wcwidth@npm:1.0.1" + dependencies: + defaults: ^1.0.3 + checksum: 814e9d1ddcc9798f7377ffa448a5a3892232b9275ebb30a41b529607691c0491de47cba426e917a4d08ded3ee7e9ba2f3fe32e62ee3cd9c7d3bafb7754bd553c + languageName: node + linkType: hard + "web-streams-polyfill@npm:^3.0.3": version: 3.2.1 resolution: "web-streams-polyfill@npm:3.2.1" @@ -12555,6 +19132,13 @@ __metadata: languageName: node linkType: hard +"well-known-symbols@npm:^2.0.0": + version: 2.0.0 + resolution: "well-known-symbols@npm:2.0.0" + checksum: 4f54bbc3012371cb4d228f436891b8e7536d34ac61a57541890257e96788608e096231e0121ac24d08ef2f908b3eb2dc0adba35023eaeb2a7df655da91415402 + languageName: node + linkType: hard + "whatwg-encoding@npm:^1.0.5": version: 1.0.5 resolution: "whatwg-encoding@npm:1.0.5" @@ -12677,7 +19261,7 @@ __metadata: languageName: node linkType: hard -"wide-align@npm:^1.1.5": +"wide-align@npm:^1.1.2, wide-align@npm:^1.1.5": version: 1.1.5 resolution: "wide-align@npm:1.1.5" dependencies: @@ -12695,6 +19279,54 @@ __metadata: languageName: node linkType: hard +"widest-line@npm:^4.0.1": + version: 4.0.1 + resolution: "widest-line@npm:4.0.1" + dependencies: + string-width: ^5.0.1 + checksum: 64c48cf27171221be5f86fc54b94dd29879165bdff1a7aa92dde723d9a8c99fb108312768a5d62c8c2b80b701fa27bbd36a1ddc58367585cd45c0db7920a0cba + languageName: node + linkType: hard + +"windows-release@npm:^5.0.1": + version: 5.0.1 + resolution: "windows-release@npm:5.0.1" + dependencies: + execa: ^5.1.1 + checksum: b6b403333b7b3ea31a805c287f210962d8f3191865d81d2fd3955e603ab4d6893abc746d87b7da5b2a7a044b7b18df97c948e7d5392baed1d2bc5687fbf7431d + languageName: node + linkType: hard + +"winston-transport@npm:^4.5.0": + version: 4.5.0 + resolution: "winston-transport@npm:4.5.0" + dependencies: + logform: ^2.3.2 + readable-stream: ^3.6.0 + triple-beam: ^1.3.0 + checksum: a56e5678a80b88a73e77ed998fc6e19d0db19c989a356b137ec236782f2bf58ae4511b11c29163f99391fa4dc12102c7bc5738dcb6543f28877fa2819adc3ee9 + languageName: node + linkType: hard + +"winston@npm:^3.2.1, winston@npm:^3.8.2": + version: 3.8.2 + resolution: "winston@npm:3.8.2" + dependencies: + "@colors/colors": 1.5.0 + "@dabh/diagnostics": ^2.0.2 + async: ^3.2.3 + is-stream: ^2.0.0 + logform: ^2.4.0 + one-time: ^1.0.0 + readable-stream: ^3.4.0 + safe-stable-stringify: ^2.3.1 + stack-trace: 0.0.x + triple-beam: ^1.3.0 + winston-transport: ^4.5.0 + checksum: f7b901798b92ab9e93c850110bf6e98500e9a0e762b62dab410cf928b2a4145533dfa6d3d2b24f7bf0dc94b53808d5bd28aaaeff9a4b43b89ea4c798cce308ea + languageName: node + linkType: hard + "woff2sfnt-sfnt2woff@npm:^1.0.0": version: 1.0.0 resolution: "woff2sfnt-sfnt2woff@npm:1.0.0" @@ -12874,33 +19506,13 @@ __metadata: languageName: node linkType: hard -"wrangler@npm:latest": - version: 2.6.2 - resolution: "wrangler@npm:2.6.2" +"wrap-ansi@npm:^3.0.1": + version: 3.0.1 + resolution: "wrap-ansi@npm:3.0.1" 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 - fsevents: ~2.3.2 - 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 - dependenciesMeta: - fsevents: - optional: true - bin: - wrangler: bin/wrangler.js - wrangler2: bin/wrangler.js - checksum: 2df66e168a2dfc4c035f23b2bd5de0fd33c1c006689ed3ea682b01fc7c5ccc98248ce393b07a35ee27280b0b3151e6299cd16b9b187e0744e4fa0e63e543be8f + string-width: ^2.1.1 + strip-ansi: ^4.0.0 + checksum: 1ceed09986d58cf6e0b88ea29084e70ef3463b3b891a04a8dbf245abb1fb678358986bdc43e12bcc92a696ced17327d079bc796f4d709d15aad7b8c1a7e7c83a languageName: node linkType: hard @@ -12926,6 +19538,17 @@ __metadata: languageName: node linkType: hard +"wrap-ansi@npm:^8.0.1": + version: 8.0.1 + resolution: "wrap-ansi@npm:8.0.1" + dependencies: + ansi-styles: ^6.1.0 + string-width: ^5.0.1 + strip-ansi: ^7.0.1 + checksum: 5d7816e64f75544e466d58a736cb96ca47abad4ad57f48765b9735ba5601221013a37f436662340ca159208b011121e4e030de5a17180c76202e35157195a71e + languageName: node + linkType: hard + "wrappy@npm:1": version: 1.0.2 resolution: "wrappy@npm:1.0.2" @@ -12933,6 +19556,28 @@ __metadata: languageName: node linkType: hard +"write-file-atomic@npm:^3.0.0, write-file-atomic@npm:^3.0.3": + version: 3.0.3 + resolution: "write-file-atomic@npm:3.0.3" + dependencies: + imurmurhash: ^0.1.4 + is-typedarray: ^1.0.0 + signal-exit: ^3.0.2 + typedarray-to-buffer: ^3.1.5 + checksum: c55b24617cc61c3a4379f425fc62a386cc51916a9b9d993f39734d005a09d5a4bb748bc251f1304e7abd71d0a26d339996c275955f527a131b1dcded67878280 + languageName: node + linkType: hard + +"write-file-atomic@npm:^4.0.0": + version: 4.0.2 + resolution: "write-file-atomic@npm:4.0.2" + dependencies: + imurmurhash: ^0.1.4 + signal-exit: ^3.0.7 + checksum: 5da60bd4eeeb935eec97ead3df6e28e5917a6bd317478e4a85a5285e8480b8ed96032bbcc6ecd07b236142a24f3ca871c924ec4a6575e623ec1b11bf8c1c253c + languageName: node + linkType: hard + "write-file-stdout@npm:^0.0.2": version: 0.0.2 resolution: "write-file-stdout@npm:0.0.2" @@ -12955,18 +19600,17 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.2.2": - version: 8.11.0 - resolution: "ws@npm:8.11.0" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 316b33aba32f317cd217df66dbfc5b281a2f09ff36815de222bc859e3424d83766d9eb2bd4d667de658b6ab7be151f258318fb1da812416b30be13103e5b5c67 +"xdg-basedir@npm:^4.0.0": + version: 4.0.0 + resolution: "xdg-basedir@npm:4.0.0" + checksum: 0073d5b59a37224ed3a5ac0dd2ec1d36f09c49f0afd769008a6e9cd3cd666bd6317bd1c7ce2eab47e1de285a286bad11a9b038196413cd753b79770361855f3c + languageName: node + linkType: hard + +"xdg-basedir@npm:^5.0.1, xdg-basedir@npm:^5.1.0": + version: 5.1.0 + resolution: "xdg-basedir@npm:5.1.0" + checksum: b60e8a2c663ccb1dac77c2d913f3b96de48dafbfa083657171d3d50e10820b8a04bb4edfe9f00808c8c20e5f5355e1927bea9029f03136e29265cb98291e1fea languageName: node linkType: hard @@ -13020,20 +19664,13 @@ __metadata: languageName: node linkType: hard -"xtend@npm:^4.0.0, xtend@npm:^4.0.2, xtend@npm:~4.0.1": +"xtend@npm:^4.0.0, xtend@npm:^4.0.2, xtend@npm:~4.0.0, xtend@npm:~4.0.1": version: 4.0.2 resolution: "xtend@npm:4.0.2" checksum: ac5dfa738b21f6e7f0dd6e65e1b3155036d68104e67e5d5d1bde74892e327d7e5636a076f625599dc394330a731861e87343ff184b0047fef1360a7ec0a5a36a languageName: node linkType: hard -"xxhash-wasm@npm:^1.0.1": - version: 1.0.2 - resolution: "xxhash-wasm@npm:1.0.2" - checksum: 11fec6e6196e37ad96cc958b7a4477dc30caf5b4da889a02a84f6f663ab8cd3c9be6ae405e66f0af0404301f27c39375191c5254f0409a793020e2093afd1409 - languageName: node - linkType: hard - "y18n@npm:^4.0.0": version: 4.0.3 resolution: "y18n@npm:4.0.3" @@ -13127,7 +19764,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^17.0.0": +"yargs@npm:^17.0.0, yargs@npm:^17.6.0": version: 17.6.2 resolution: "yargs@npm:17.6.2" dependencies: @@ -13142,7 +19779,7 @@ __metadata: languageName: node linkType: hard -"yauzl@npm:^2.10.0": +"yauzl@npm:^2.10.0, yauzl@npm:^2.4.2": version: 2.10.0 resolution: "yauzl@npm:2.10.0" dependencies: @@ -13166,15 +19803,21 @@ __metadata: languageName: node linkType: hard -"youch@npm:^2.2.2": - version: 2.2.2 - resolution: "youch@npm:2.2.2" +"yocto-queue@npm:^1.0.0": + version: 1.0.0 + resolution: "yocto-queue@npm:1.0.0" + checksum: 2cac84540f65c64ccc1683c267edce396b26b1e931aa429660aefac8fbe0188167b7aee815a3c22fa59a28a58d898d1a2b1825048f834d8d629f4c2a5d443801 + languageName: node + linkType: hard + +"zip-stream@npm:^4.1.0": + version: 4.1.0 + resolution: "zip-stream@npm:4.1.0" dependencies: - "@types/stack-trace": 0.0.29 - cookie: ^0.4.1 - mustache: ^4.2.0 - stack-trace: 0.0.10 - checksum: e81644ad9469a26949a85cb2e1a3f9c9faf11daa67a265e9ad0361942b2c06cf02ee1dc8c85d74fe7ad25d35bbc2fee34717a54c5a0b8eeb82dc9276d139906b + archiver-utils: ^2.1.0 + compress-commons: ^4.1.0 + readable-stream: ^3.6.0 + checksum: 4a73da856738b0634700b52f4ab3fe0bf0a532bea6820ad962d0bda0163d2d5525df4859f89a7238e204a378384e12551985049790c1894c3ac191866e85887f languageName: node linkType: hard From 96b569766c4f96bcd908eb8f7a45dd593e0111ed Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 28 Dec 2022 20:58:17 +0100 Subject: [PATCH 060/189] docs: :fire: added netlify --- .github/workflows/netlify.yml | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/.github/workflows/netlify.yml b/.github/workflows/netlify.yml index 472e2b2..a27e80f 100644 --- a/.github/workflows/netlify.yml +++ b/.github/workflows/netlify.yml @@ -7,9 +7,31 @@ on: - main types: [closed] jobs: - build: - runs-on: ubuntu-18.04 + ############ BUILD PACKAGE ############ + build-package: + name: Build Package + runs-on: ubuntu-latest + needs: + - test-unit steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 16.x + cache: 'yarn' + registry-url: https://registry.npmjs.org/ + + - run: corepack enable + + - name: Install NPM Dependencies + run: yarn install --immutable --network-timeout 300000 + + - name: Build Package + run: cd ./packages/docs/ && npm run build + - uses: actions/checkout@v2 - name: Deploy to Netlify From 98440bbd16c7929a80c71e72e59a311041e42ab8 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 28 Dec 2022 21:27:01 +0100 Subject: [PATCH 061/189] docs: :fire: added netlify --- .github/workflows/netlify.yml | 36 +++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/.github/workflows/netlify.yml b/.github/workflows/netlify.yml index a27e80f..5782b8f 100644 --- a/.github/workflows/netlify.yml +++ b/.github/workflows/netlify.yml @@ -1,18 +1,16 @@ -# .github/workflows/netlify.yml -name: Build and Deploy to Documentation Netlify +name: BotWhatsapp Documentation Site + on: pull_request: branches: - dev - - main - types: [closed] + jobs: - ############ BUILD PACKAGE ############ - build-package: + ############ DOCUMENTATION BUILD ############ + build-documentation: name: Build Package runs-on: ubuntu-latest - needs: - - test-unit + steps: - name: Checkout uses: actions/checkout@v3 @@ -29,15 +27,29 @@ jobs: - name: Install NPM Dependencies run: yarn install --immutable --network-timeout 300000 - - name: Build Package - run: cd ./packages/docs/ && npm run build + - name: Build Documentation + run: cd packages/docs && yarn run build + - name: Temporarily save Dist + uses: actions/upload-artifact@v3 + with: + name: documentation-dist + path: packages/docs/dist + + build: + runs-on: ubuntu-18.04 + steps: - uses: actions/checkout@v2 + - uses: actions/download-artifact@v3 + with: + name: documentation-dist + path: packages/docs/dist + - name: Deploy to Netlify uses: nwtgck/actions-netlify@v1.2 with: - publish-dir: './packages/docs/dist' + publish-dir: 'packages/docs/dist' github-token: ${{ secrets.GITHUB_TOKEN }} deploy-message: 'Deploy from GitHub Actions' enable-pull-request-comment: false @@ -46,4 +58,4 @@ jobs: env: NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} - timeout-minutes: 1 + timeout-minutes: 1 From 4abb29f8db4f53352873503a23f690c08e0e21f2 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 28 Dec 2022 21:29:04 +0100 Subject: [PATCH 062/189] docs: :fire: added netlify --- .github/workflows/netlify.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/netlify.yml b/.github/workflows/netlify.yml index 5782b8f..3182dfa 100644 --- a/.github/workflows/netlify.yml +++ b/.github/workflows/netlify.yml @@ -38,6 +38,8 @@ jobs: build: runs-on: ubuntu-18.04 + needs: + - build-documentation steps: - uses: actions/checkout@v2 From 6c501481433e67d95a528e397036a2eb57c9e387 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 28 Dec 2022 21:35:35 +0100 Subject: [PATCH 063/189] docs: :fire: added netlify --- .github/workflows/netlify.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/netlify.yml b/.github/workflows/netlify.yml index 3182dfa..404d4fe 100644 --- a/.github/workflows/netlify.yml +++ b/.github/workflows/netlify.yml @@ -34,7 +34,7 @@ jobs: uses: actions/upload-artifact@v3 with: name: documentation-dist - path: packages/docs/dist + path: packages/docs build: runs-on: ubuntu-18.04 @@ -46,7 +46,7 @@ jobs: - uses: actions/download-artifact@v3 with: name: documentation-dist - path: packages/docs/dist + path: packages/docs - name: Deploy to Netlify uses: nwtgck/actions-netlify@v1.2 From e8d625201ed86e162e0b4e82100ede1d08985555 Mon Sep 17 00:00:00 2001 From: vicente1992 Date: Thu, 29 Dec 2022 00:01:10 -0500 Subject: [PATCH 064/189] feat(starters): meta memory base template added --- packages/provider/src/meta/server.js | 27 ++++++++++++++------- starters/apps/base-meta-memory/app.js | 10 ++++---- starters/apps/base-meta-memory/package.json | 3 ++- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/packages/provider/src/meta/server.js b/packages/provider/src/meta/server.js index cb2ac9a..85e0403 100644 --- a/packages/provider/src/meta/server.js +++ b/packages/provider/src/meta/server.js @@ -1,6 +1,6 @@ const { EventEmitter } = require('node:events') const polka = require('polka') -const { urlencoded } = require('body-parser') +const { urlencoded, json } = require('body-parser') class MetaWebHookServer extends EventEmitter { metaServer @@ -8,9 +8,11 @@ class MetaWebHookServer extends EventEmitter { token constructor(_token, _metaPort) { super() - this.metaServer = this.buildHTTPServer() + this.metaServer = polka() this.metaPort = _metaPort this.token = _token + + this.buildHTTPServer() } /** @@ -21,8 +23,14 @@ class MetaWebHookServer extends EventEmitter { */ incomingMsg = (req, res) => { const { body } = req - const message = body.entry[0].changes[0].value.messages[0] + + const messages = body.entry[0].changes[0].value?.messages + + if (!messages) return + + const [message] = messages const to = body.entry[0].changes[0].value.metadata.display_phone_number + this.emit('message', { from: message.from, to, @@ -55,16 +63,16 @@ class MetaWebHookServer extends EventEmitter { const challenge = query['hub.challenge'] if (!mode || !token) { - return res.sendStatus(403) + return (res.statusCode = 403), res.end('No token!') } if (this.tokenIsValid(mode, token)) { console.log('Webhook verified--->😎😎😎😎') - res.status(200).send(challenge) + return (res.statusCode = 200), res.end(challenge) } if (!this.tokenIsValid(mode, token)) { - res.sendStatus(403) + return (res.statusCode = 403), res.end('No token!') } } @@ -73,12 +81,13 @@ class MetaWebHookServer extends EventEmitter { * @returns */ buildHTTPServer = () => { - polka() + this.metaServer .use(urlencoded({ extended: true })) .get('/webhook', this.verifyToken) - return polka() + this.metaServer .use(urlencoded({ extended: true })) + .use(json()) .post('/webhook', this.incomingMsg) } @@ -91,7 +100,7 @@ class MetaWebHookServer extends EventEmitter { console.log(``) console.log(`[meta]: Agregar esta url "WHEN A MESSAGE COMES IN"`) console.log( - `[meta]: POST http://localhost:${this.metaPort}/meta-hook` + `[meta]: POST http://localhost:${this.metaPort}/webhook` ) console.log(`[meta]: Más información en la documentacion`) console.log(``) diff --git a/starters/apps/base-meta-memory/app.js b/starters/apps/base-meta-memory/app.js index ab26888..c141fad 100644 --- a/starters/apps/base-meta-memory/app.js +++ b/starters/apps/base-meta-memory/app.js @@ -6,7 +6,7 @@ const { addChild, } = require('@bot-whatsapp/bot') -const TwilioProvider = require('@bot-whatsapp/provider/twilio') +const MetaProvider = require('@bot-whatsapp/provider/meta') const MockAdapter = require('@bot-whatsapp/database/mock') /** @@ -79,10 +79,10 @@ const main = async () => { const adapterDB = new MockAdapter() const adapterFlow = createFlow([flowPrincipal]) - const adapterProvider = createProvider(TwilioProvider, { - accountSid: 'YOUR_ACCOUNT_SID', - authToken: 'YOUR_ACCOUNT_TOKEN', - vendorNumber: '+14155238886', + const adapterProvider = createProvider(MetaProvider, { + jwtToken: 'jwtToken', + numberId: 'numberId', + verifyToken: 'verifyToken', }) createBot({ diff --git a/starters/apps/base-meta-memory/package.json b/starters/apps/base-meta-memory/package.json index af95cf3..f86e916 100644 --- a/starters/apps/base-meta-memory/package.json +++ b/starters/apps/base-meta-memory/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", + "axios": "^1.2.1" }, "author": "", "license": "ISC" From 9a0ba4270540086d2ec03549effa75131514e895 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 29 Dec 2022 12:09:56 +0100 Subject: [PATCH 065/189] docs(contributing): :zap: new section by contributors --- .github/workflows/ci.yml | 2 +- .github/workflows/contributors.yml | 2 +- .github/workflows/netlify.yml | 18 ++++++++++-------- .github/workflows/releases-dev.yml | 2 +- .github/workflows/releases.yml | 2 +- packages/docs/package.json | 2 +- 6 files changed, 15 insertions(+), 13 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index aa05560..05afdd0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,4 @@ -name: BotWhatsapp Build-Test +name: 🤪 Build and Test on: pull_request: diff --git a/.github/workflows/contributors.yml b/.github/workflows/contributors.yml index f732834..a302035 100644 --- a/.github/workflows/contributors.yml +++ b/.github/workflows/contributors.yml @@ -1,4 +1,4 @@ -name: Add contributors +name: 🙌 Revisando Colaboradores on: pull_request: branches: diff --git a/.github/workflows/netlify.yml b/.github/workflows/netlify.yml index 404d4fe..e10b7f4 100644 --- a/.github/workflows/netlify.yml +++ b/.github/workflows/netlify.yml @@ -1,4 +1,4 @@ -name: BotWhatsapp Documentation Site +name: 📄 Desplegando documentacion on: pull_request: @@ -34,9 +34,11 @@ jobs: uses: actions/upload-artifact@v3 with: name: documentation-dist - path: packages/docs - - build: + path: | + packages/docs/dist + packages/docs/netlify.toml + ############ DEPLOY ############ + deploy: runs-on: ubuntu-18.04 needs: - build-documentation @@ -46,7 +48,9 @@ jobs: - uses: actions/download-artifact@v3 with: name: documentation-dist - path: packages/docs + path: | + packages/docs/dist + packages/docs/netlify.toml - name: Deploy to Netlify uses: nwtgck/actions-netlify@v1.2 @@ -54,9 +58,7 @@ jobs: publish-dir: 'packages/docs/dist' github-token: ${{ secrets.GITHUB_TOKEN }} deploy-message: 'Deploy from GitHub Actions' - enable-pull-request-comment: false - enable-commit-comment: true - overwrites-pull-request-comment: true + netlify-config-path: 'packages/docs/netlify.toml' env: NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} diff --git a/.github/workflows/releases-dev.yml b/.github/workflows/releases-dev.yml index 143d2a3..ba3a625 100644 --- a/.github/workflows/releases-dev.yml +++ b/.github/workflows/releases-dev.yml @@ -1,4 +1,4 @@ -name: BotWhatsapp Releases(DEV) +name: 🚀 (DEV) Liberando versiones on: push: diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml index 157e620..00fa335 100644 --- a/.github/workflows/releases.yml +++ b/.github/workflows/releases.yml @@ -1,4 +1,4 @@ -name: BotWhatsapp Releases(Prod) +name: 🚀⚡ Liberando versiones on: push: diff --git a/packages/docs/package.json b/packages/docs/package.json index 3da5a58..20d7b52 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -8,7 +8,7 @@ "build.preview": "vite build --ssr src/entry.preview.tsx", "build.server": "vite build -c adaptors/netlify-edge/vite.config.ts", "build.types": "tsc --incremental --noEmit", - "deploy": "netlify deploy", + "deploy": "netlify deploy --prod", "dev": "vite --host --mode ssr", "dev.debug": "node --inspect-brk ./node_modules/vite/bin/vite.js --mode ssr --force", "fmt": "prettier --write .", From 83fb510a39f8557a02b4de5511dd847e4b3edfe1 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 29 Dec 2022 12:10:56 +0100 Subject: [PATCH 066/189] docs(contributing): :zap: new section by contributors --- .github/workflows/netlify.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/netlify.yml b/.github/workflows/netlify.yml index e10b7f4..684d8c1 100644 --- a/.github/workflows/netlify.yml +++ b/.github/workflows/netlify.yml @@ -37,6 +37,7 @@ jobs: path: | packages/docs/dist packages/docs/netlify.toml + packages/docs/.netlify ############ DEPLOY ############ deploy: runs-on: ubuntu-18.04 @@ -51,6 +52,7 @@ jobs: path: | packages/docs/dist packages/docs/netlify.toml + packages/docs/.netlify - name: Deploy to Netlify uses: nwtgck/actions-netlify@v1.2 From ab7ad81efb72d9a8984d73ba1fd4d6df3ee7db35 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 29 Dec 2022 12:17:55 +0100 Subject: [PATCH 067/189] docs(contributing): :zap: new section by contributors --- .github/workflows/netlify.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/netlify.yml b/.github/workflows/netlify.yml index 684d8c1..144b222 100644 --- a/.github/workflows/netlify.yml +++ b/.github/workflows/netlify.yml @@ -3,7 +3,8 @@ name: 📄 Desplegando documentacion on: pull_request: branches: - - dev + - 'feat/docs-**' + - 'fix/docs-**' jobs: ############ DOCUMENTATION BUILD ############ @@ -35,7 +36,7 @@ jobs: with: name: documentation-dist path: | - packages/docs/dist + packages/docs/dist/ packages/docs/netlify.toml packages/docs/.netlify ############ DEPLOY ############ @@ -50,7 +51,7 @@ jobs: with: name: documentation-dist path: | - packages/docs/dist + packages/docs/dist/ packages/docs/netlify.toml packages/docs/.netlify From 2563e3ed84b1be10ed1e50a0c5a7d3c4e851ad37 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 29 Dec 2022 12:20:42 +0100 Subject: [PATCH 068/189] docs(contributing): :zap: new section by contributors --- .github/workflows/netlify.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/netlify.yml b/.github/workflows/netlify.yml index 144b222..746a354 100644 --- a/.github/workflows/netlify.yml +++ b/.github/workflows/netlify.yml @@ -5,6 +5,10 @@ on: branches: - 'feat/docs-**' - 'fix/docs-**' + push: + branches: + - 'feat/docs-**' + - 'fix/docs-**' jobs: ############ DOCUMENTATION BUILD ############ From 18a59b85cba833232b4b1e336fb87f123a2490a4 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 29 Dec 2022 12:26:39 +0100 Subject: [PATCH 069/189] docs(contributing): :zap: new section by contributors --- .github/workflows/netlify.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/netlify.yml b/.github/workflows/netlify.yml index 746a354..ae2206c 100644 --- a/.github/workflows/netlify.yml +++ b/.github/workflows/netlify.yml @@ -41,8 +41,8 @@ jobs: name: documentation-dist path: | packages/docs/dist/ + packages/docs/.netlify/ packages/docs/netlify.toml - packages/docs/.netlify ############ DEPLOY ############ deploy: runs-on: ubuntu-18.04 @@ -56,8 +56,8 @@ jobs: name: documentation-dist path: | packages/docs/dist/ + packages/docs/.netlify/ packages/docs/netlify.toml - packages/docs/.netlify - name: Deploy to Netlify uses: nwtgck/actions-netlify@v1.2 From 30f9975738d11d2358ed44eadb7e36026e849545 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 29 Dec 2022 13:15:27 +0100 Subject: [PATCH 070/189] docs(contributing): :zap: new section by contributors --- .github/workflows/netlify.yml | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/.github/workflows/netlify.yml b/.github/workflows/netlify.yml index ae2206c..ad63ede 100644 --- a/.github/workflows/netlify.yml +++ b/.github/workflows/netlify.yml @@ -59,14 +59,10 @@ jobs: packages/docs/.netlify/ packages/docs/netlify.toml - - name: Deploy to Netlify - uses: nwtgck/actions-netlify@v1.2 - with: - publish-dir: 'packages/docs/dist' - github-token: ${{ secrets.GITHUB_TOKEN }} - deploy-message: 'Deploy from GitHub Actions' - netlify-config-path: 'packages/docs/netlify.toml' + - name: Deploy to netlify + uses: netlify/actions/cli@master env: NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} - NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} - timeout-minutes: 1 + NETLIFY_SITE_ID: ${{ secrets.DEV_NETLIFY_SITE_ID }} + with: + args: deploy --dir=packages/docs/dist/ --context packages/docs/netlify.toml From 3af618d466a652325de187f88af4b141e90d43a6 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 29 Dec 2022 13:24:06 +0100 Subject: [PATCH 071/189] docs(contributing): :zap: new section by contributors --- .github/workflows/netlify.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/netlify.yml b/.github/workflows/netlify.yml index ad63ede..fc06a7d 100644 --- a/.github/workflows/netlify.yml +++ b/.github/workflows/netlify.yml @@ -65,4 +65,4 @@ jobs: NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} NETLIFY_SITE_ID: ${{ secrets.DEV_NETLIFY_SITE_ID }} with: - args: deploy --dir=packages/docs/dist/ --context packages/docs/netlify.toml + args: deploy --context packages/docs/netlify.toml --build From d39feb78f06d26efad44c0812e0aa473b745a763 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 29 Dec 2022 13:28:55 +0100 Subject: [PATCH 072/189] docs(contributing): :zap: new section by contributors --- .github/workflows/netlify.yml | 4 ++-- packages/docs/src/components/widgets/Collaborator.tsx | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/netlify.yml b/.github/workflows/netlify.yml index fc06a7d..85d6f97 100644 --- a/.github/workflows/netlify.yml +++ b/.github/workflows/netlify.yml @@ -63,6 +63,6 @@ jobs: uses: netlify/actions/cli@master env: NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} - NETLIFY_SITE_ID: ${{ secrets.DEV_NETLIFY_SITE_ID }} + NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} with: - args: deploy --context packages/docs/netlify.toml --build + args: deploy --context packages/docs/netlify.toml --build --site ${{ secrets.NETLIFY_SITE_ID }} diff --git a/packages/docs/src/components/widgets/Collaborator.tsx b/packages/docs/src/components/widgets/Collaborator.tsx index 98bc0cd..71fab7a 100644 --- a/packages/docs/src/components/widgets/Collaborator.tsx +++ b/packages/docs/src/components/widgets/Collaborator.tsx @@ -14,10 +14,10 @@ export default component$( {props.user.login} From 5c620342a4af48b2dbd58051680ba06d7ab8396c Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 29 Dec 2022 13:56:39 +0100 Subject: [PATCH 073/189] docs(contributing): :zap: new section by contributors --- .github/workflows/netlify.yml | 39 ++++++----------------------------- 1 file changed, 6 insertions(+), 33 deletions(-) diff --git a/.github/workflows/netlify.yml b/.github/workflows/netlify.yml index 85d6f97..3c8f772 100644 --- a/.github/workflows/netlify.yml +++ b/.github/workflows/netlify.yml @@ -32,37 +32,10 @@ jobs: - name: Install NPM Dependencies run: yarn install --immutable --network-timeout 300000 - - name: Build Documentation - run: cd packages/docs && yarn run build + - name: Add netlify + run: yarn add netlify-cli -D - - name: Temporarily save Dist - uses: actions/upload-artifact@v3 - with: - name: documentation-dist - path: | - packages/docs/dist/ - packages/docs/.netlify/ - packages/docs/netlify.toml - ############ DEPLOY ############ - deploy: - runs-on: ubuntu-18.04 - needs: - - build-documentation - steps: - - uses: actions/checkout@v2 - - - uses: actions/download-artifact@v3 - with: - name: documentation-dist - path: | - packages/docs/dist/ - packages/docs/.netlify/ - packages/docs/netlify.toml - - - name: Deploy to netlify - uses: netlify/actions/cli@master - env: - NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} - NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} - with: - args: deploy --context packages/docs/netlify.toml --build --site ${{ secrets.NETLIFY_SITE_ID }} + - name: Build and Deploy + run: | + cd packages/docs + netlify deploy --build --site ${{ secrets.NETLIFY_SITE_ID }} --auth ${{ secrets.NETLIFY_AUTH_TOKEN }} From 480d96771fe5ea0178b71130b0b6cf75a804b42b Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 29 Dec 2022 14:06:23 +0100 Subject: [PATCH 074/189] docs(contributing): :zap: new section by contributors --- .github/workflows/netlify.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/netlify.yml b/.github/workflows/netlify.yml index 3c8f772..b9ac70d 100644 --- a/.github/workflows/netlify.yml +++ b/.github/workflows/netlify.yml @@ -37,5 +37,6 @@ jobs: - name: Build and Deploy run: | + VITE_GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} cd packages/docs netlify deploy --build --site ${{ secrets.NETLIFY_SITE_ID }} --auth ${{ secrets.NETLIFY_AUTH_TOKEN }} From a60c891a8662662fe913cb0b1277371f740786dd Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 29 Dec 2022 14:12:35 +0100 Subject: [PATCH 075/189] docs: :zap: added env file pipeline process --- .github/workflows/netlify.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/netlify.yml b/.github/workflows/netlify.yml index b9ac70d..db0d917 100644 --- a/.github/workflows/netlify.yml +++ b/.github/workflows/netlify.yml @@ -35,8 +35,12 @@ jobs: - name: Add netlify run: yarn add netlify-cli -D + - name: Create .env build file + run: | + touch packages/docs/.env + echo VITE_GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN_COLLABORATORS }} >> packages/docs/.env + - name: Build and Deploy run: | - VITE_GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} cd packages/docs netlify deploy --build --site ${{ secrets.NETLIFY_SITE_ID }} --auth ${{ secrets.NETLIFY_AUTH_TOKEN }} From 447e75f97daf06b37a3731a1b25afdda65ff3b35 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 29 Dec 2022 14:14:02 +0100 Subject: [PATCH 076/189] docs: :zap: added env file pipeline process --- .github/workflows/netlify.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/netlify.yml b/.github/workflows/netlify.yml index db0d917..1addfe6 100644 --- a/.github/workflows/netlify.yml +++ b/.github/workflows/netlify.yml @@ -38,7 +38,7 @@ jobs: - name: Create .env build file run: | touch packages/docs/.env - echo VITE_GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN_COLLABORATORS }} >> packages/docs/.env + echo VITE_GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} >> packages/docs/.env - name: Build and Deploy run: | From 27ad84fc6c95acc7b607721144d4f2963ed854e7 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 29 Dec 2022 14:22:27 +0100 Subject: [PATCH 077/189] docs: :zap: added env file pipeline process --- packages/docs/src/routes/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/docs/src/routes/index.tsx b/packages/docs/src/routes/index.tsx index b97677c..aa594f8 100644 --- a/packages/docs/src/routes/index.tsx +++ b/packages/docs/src/routes/index.tsx @@ -10,9 +10,9 @@ import { RequestHandlerNetlify } from '@builder.io/qwik-city/middleware/netlify- import { GITHUB_TOKEN } from './docs/constant' export const onGet: RequestHandlerNetlify = async ({ platform }) => { - console.log(`[🚩 platform]: `, platform) const CHECK_GITHUB_TOKEN = (platform as any)?.['GITHUB_TOKEN'] ?? GITHUB_TOKEN + console.log(`[🚩 platform]: `, GITHUB_TOKEN) const data = await fetchGithub(CHECK_GITHUB_TOKEN) return data } From 0db9a190cbea6dc583224c3b9ec6ddf6abe322ec Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 29 Dec 2022 14:26:04 +0100 Subject: [PATCH 078/189] docs: :zap: added env file pipeline process --- .github/workflows/netlify.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/netlify.yml b/.github/workflows/netlify.yml index 1addfe6..e3e8200 100644 --- a/.github/workflows/netlify.yml +++ b/.github/workflows/netlify.yml @@ -38,7 +38,7 @@ jobs: - name: Create .env build file run: | touch packages/docs/.env - echo VITE_GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} >> packages/docs/.env + echo VITE_GITHUB_TOKEN=${{ secrets.COLLABORATORS_TOKEN }} >> packages/docs/.env - name: Build and Deploy run: | From 5088b9ff1b4ef663f1960354d5efe0bfabceac46 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 29 Dec 2022 14:31:57 +0100 Subject: [PATCH 079/189] ci: :art: added new yml for deplooy netlify --- .github/workflows/netlify-dev.yml | 46 +++++++++++++++++++++++++++++++ .github/workflows/netlify.yml | 11 ++------ 2 files changed, 49 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/netlify-dev.yml diff --git a/.github/workflows/netlify-dev.yml b/.github/workflows/netlify-dev.yml new file mode 100644 index 0000000..e3e8200 --- /dev/null +++ b/.github/workflows/netlify-dev.yml @@ -0,0 +1,46 @@ +name: 📄 Desplegando documentacion + +on: + pull_request: + branches: + - 'feat/docs-**' + - 'fix/docs-**' + push: + branches: + - 'feat/docs-**' + - 'fix/docs-**' + +jobs: + ############ DOCUMENTATION BUILD ############ + build-documentation: + name: Build Package + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 16.x + cache: 'yarn' + registry-url: https://registry.npmjs.org/ + + - run: corepack enable + + - name: Install NPM Dependencies + run: yarn install --immutable --network-timeout 300000 + + - name: Add netlify + run: yarn add netlify-cli -D + + - name: Create .env build file + run: | + touch packages/docs/.env + echo VITE_GITHUB_TOKEN=${{ secrets.COLLABORATORS_TOKEN }} >> packages/docs/.env + + - name: Build and Deploy + run: | + cd packages/docs + netlify deploy --build --site ${{ secrets.NETLIFY_SITE_ID }} --auth ${{ secrets.NETLIFY_AUTH_TOKEN }} diff --git a/.github/workflows/netlify.yml b/.github/workflows/netlify.yml index e3e8200..76d5383 100644 --- a/.github/workflows/netlify.yml +++ b/.github/workflows/netlify.yml @@ -1,14 +1,9 @@ -name: 📄 Desplegando documentacion +name: 📄 (PROD) Desplegando documentacion on: - pull_request: - branches: - - 'feat/docs-**' - - 'fix/docs-**' push: branches: - - 'feat/docs-**' - - 'fix/docs-**' + - next-release jobs: ############ DOCUMENTATION BUILD ############ @@ -43,4 +38,4 @@ jobs: - name: Build and Deploy run: | cd packages/docs - netlify deploy --build --site ${{ secrets.NETLIFY_SITE_ID }} --auth ${{ secrets.NETLIFY_AUTH_TOKEN }} + netlify deploy --prod --build --site ${{ secrets.NETLIFY_SITE_ID }} --auth ${{ secrets.NETLIFY_AUTH_TOKEN }} From e17fb93b4716b89c4c10aaa235b2da55ebef0daf Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 29 Dec 2022 14:52:04 +0100 Subject: [PATCH 080/189] docs: :art: updated readme --- README.md | 6 +++--- packages/docs/src/components/widgets/Collaborator.tsx | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index f9850c0..655fa1e 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ [![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/) -------- -🐤 Tablero de tareas : [https://github.com/users/leifermendez/projects/4/views/1](https://github.com/users/leifermendez/projects/4/views/1) +## Documentacion +[https://bot-whatsapp.netlify.app/](https://bot-whatsapp.netlify.app/) -🦊 Documentación: [https://bot-whatsapp-codigoencasa.pages.dev/](https://bot-whatsapp-codigoencasa.pages.dev/) -Video como hacer PR: https://youtu.be/Lxt8Acob6aU +🐤 Tablero de tareas : [https://github.com/users/leifermendez/projects/4/views/1](https://github.com/users/leifermendez/projects/4/views/1) 🚀 __Roadmap:__ [https://github.com/users/leifermendez/projects/4/views/1](https://github.com/users/leifermendez/projects/4/views/1) diff --git a/packages/docs/src/components/widgets/Collaborator.tsx b/packages/docs/src/components/widgets/Collaborator.tsx index 71fab7a..4337d2b 100644 --- a/packages/docs/src/components/widgets/Collaborator.tsx +++ b/packages/docs/src/components/widgets/Collaborator.tsx @@ -14,7 +14,7 @@ export default component$( {props.user.login} Date: Thu, 29 Dec 2022 13:57:51 +0000 Subject: [PATCH 081/189] 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/docs/src/routes/docs/join/index.mdx | 7 +++---- packages/provider/package.json | 2 +- 6 files changed, 8 insertions(+), 9 deletions(-) diff --git a/packages/bot/package.json b/packages/bot/package.json index 6c473c8..87d283b 100644 --- a/packages/bot/package.json +++ b/packages/bot/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/bot", - "version": "0.0.27-alpha.0", + "version": "0.0.28-alpha.0", "description": "", "main": "./lib/bundle.bot.cjs", "scripts": { diff --git a/packages/cli/package.json b/packages/cli/package.json index 07c47f9..5a678c4 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/cli", - "version": "0.0.34-alpha.0", + "version": "0.0.35-alpha.0", "description": "", "main": "index.js", "devDependencies": { diff --git a/packages/create-bot-whatsapp/package.json b/packages/create-bot-whatsapp/package.json index d9e0a92..2386b2e 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.45-alpha.0", + "version": "0.0.46-alpha.0", "description": "", "main": "./lib/bundle.create-bot-whatsapp.cjs", "files": [ diff --git a/packages/database/package.json b/packages/database/package.json index a29afab..a79d823 100644 --- a/packages/database/package.json +++ b/packages/database/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/database", - "version": "0.0.26-alpha.0", + "version": "0.0.27-alpha.0", "description": "Esto es el conector a mysql, pg, mongo", "main": "./lib/mock/index.cjs", "keywords": [], diff --git a/packages/docs/src/routes/docs/join/index.mdx b/packages/docs/src/routes/docs/join/index.mdx index 4d4a99b..90ca067 100644 --- a/packages/docs/src/routes/docs/join/index.mdx +++ b/packages/docs/src/routes/docs/join/index.mdx @@ -4,7 +4,7 @@ Bienvenido al proyecto! Estamos emocionados de tenerte a bordo y esperamos traba Deseamos que te sientas cómodo y que puedas aportar tu valioso conocimiento y habilidades. -Recuerda que si tienes alguna inquietud, o simplemente deseas interactuar con los otros colaboradores puedes unirte a la comunidad. +Recuerda que si tienes alguna inquietud, o simplemente deseas interactuar con los otros colaboradores puedes unirte a la comunidad. ## Ventajas al unirme @@ -14,12 +14,11 @@ Al unirte te estará brindando la oportunidad de **adquirir experiencia en el de La visibilidad es uno de los puntos que más se requieren hoy en día, al unirte se te brinda la oportunidad de **mayor visibilidad en la comunidad de desarrolladores y de demostrar tus habilidades**. Esto puede ayudarte a encontrar oportunidades de trabajo o a colaborar con otros proyectos. -Colaboración con otros desarrolladores de todo el mundo y **trabajar juntos para mejorar el proyecto** Al trabajar en equipo y colaborar con otros, podrás mejorar tu comunicación, resolución de problemas y liderazgo, habilidades que cada vez son más demandadas en el entorno laboral. +Colaboración con otros desarrolladores de todo el mundo y **trabajar juntos para mejorar el proyecto** Al trabajar en equipo y colaborar con otros, podrás mejorar tu comunicación, resolución de problemas y liderazgo, habilidades que cada vez son más demandadas en el entorno laboral. Contribución al bien común Participar en un proyecto de código abierto te permite contribuir a la comunidad y a la sociedad en general, ya que el código abierto es accesible y utilizable por cualquier persona. **Esto puede ser muy gratificante y sentirte parte de algo más grande**. -Es una excelente manera de incrementar tus habilidades tecnológicas y **estar al tanto de las últimas tendencias y desarrollos en el mundo del software**. Al trabajar con otros desarrolladores y contribuir a proyectos de código abierto, tendrás la oportunidad de **aprender y practicar nuevas tecnologías y metodologías, lo que te ayudará a mejorar tus habilidades y a mantenerte actualizado en el mundo en constante cambio de la tecnología. - +Es una excelente manera de incrementar tus habilidades tecnológicas y **estar al tanto de las últimas tendencias y desarrollos en el mundo del software**. Al trabajar con otros desarrolladores y contribuir a proyectos de código abierto, tendrás la oportunidad de \*\*aprender y practicar nuevas tecnologías y metodologías, lo que te ayudará a mejorar tus habilidades y a mantenerte actualizado en el mundo en constante cambio de la tecnología. Esperamos que estés listo para **unirte a nosotros en esta emocionante aventura** diff --git a/packages/provider/package.json b/packages/provider/package.json index c3d77ea..7bc108b 100644 --- a/packages/provider/package.json +++ b/packages/provider/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/provider", - "version": "0.0.32-alpha.0", + "version": "0.0.33-alpha.0", "description": "Esto es el conector a Twilio, Meta, etc...", "main": "./lib/mock/index.cjs", "keywords": [], From a6f4aa8d1e809330c06c165aaf9a9f90b8922bb5 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 29 Dec 2022 17:31:43 +0100 Subject: [PATCH 082/189] fix(cli): :zap: updated --- packages/docs/src/assets/styles/fonts.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/docs/src/assets/styles/fonts.css b/packages/docs/src/assets/styles/fonts.css index c2b1344..7ab0599 100644 --- a/packages/docs/src/assets/styles/fonts.css +++ b/packages/docs/src/assets/styles/fonts.css @@ -5,6 +5,7 @@ font-style: normal; font-named-instance: 'Regular'; src: url('../fonts/Inter-roman-latin.var.woff2') format('woff2'); + font-display: swap; } @font-face { @@ -14,6 +15,7 @@ font-style: italic; font-named-instance: 'Italic'; src: url('../fonts/Inter-italic-latin.var.woff2') format('woff2'); + font-display: swap; } @font-face { @@ -22,6 +24,7 @@ font-style: normal; src: url('../fonts/FiraCode-VF.woff2') format('woff2-variations'), url('../fonts/FiraCode-VF.woff') format('woff-variations'); + font-display: swap; } .font-mono { @@ -34,6 +37,7 @@ font-weight: 400; font-display: swap; src: url('../fonts/SourceSansPro-Regular.otf') format('opentype'); + font-display: swap; } @font-face { @@ -41,4 +45,5 @@ font-weight: 700; font-style: normal; src: url('../fonts/Ubuntu-Mono-bold.woff2') format('woff2'); + font-display: swap; } From 20f665175c9b47226df41ce43e05574bd6ab1930 Mon Sep 17 00:00:00 2001 From: vicente1992 Date: Fri, 30 Dec 2022 07:24:29 -0500 Subject: [PATCH 083/189] fix(starters): base templates are added for meta --- packages/provider/src/meta/server.js | 2 +- starters/apps/base-meta-json/README.md | 34 +++++++ starters/apps/base-meta-json/app.js | 95 ++++++++++++++++++ starters/apps/base-meta-json/package.json | 22 +++++ starters/apps/base-meta-mongo/README.md | 34 +++++++ starters/apps/base-meta-mongo/app.js | 106 ++++++++++++++++++++ starters/apps/base-meta-mongo/package.json | 23 +++++ starters/apps/base-meta-mysql/README.md | 34 +++++++ starters/apps/base-meta-mysql/app.js | 108 +++++++++++++++++++++ starters/apps/base-meta-mysql/package.json | 23 +++++ 10 files changed, 480 insertions(+), 1 deletion(-) create mode 100644 starters/apps/base-meta-json/README.md create mode 100644 starters/apps/base-meta-json/app.js create mode 100644 starters/apps/base-meta-json/package.json create mode 100644 starters/apps/base-meta-mongo/README.md create mode 100644 starters/apps/base-meta-mongo/app.js create mode 100644 starters/apps/base-meta-mongo/package.json create mode 100644 starters/apps/base-meta-mysql/README.md create mode 100644 starters/apps/base-meta-mysql/app.js create mode 100644 starters/apps/base-meta-mysql/package.json diff --git a/packages/provider/src/meta/server.js b/packages/provider/src/meta/server.js index 85e0403..3d6ef61 100644 --- a/packages/provider/src/meta/server.js +++ b/packages/provider/src/meta/server.js @@ -34,7 +34,7 @@ class MetaWebHookServer extends EventEmitter { this.emit('message', { from: message.from, to, - body: message.text.body, + body: message.text?.body, }) const json = JSON.stringify({ body }) res.end(json) diff --git a/starters/apps/base-meta-json/README.md b/starters/apps/base-meta-json/README.md new file mode 100644 index 0000000..d0e43d2 --- /dev/null +++ b/starters/apps/base-meta-json/README.md @@ -0,0 +1,34 @@ +### CHATBOT Whatsapp + +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 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.. + +__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 +``` + +__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) + +------ +> ¿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-json/app.js b/starters/apps/base-meta-json/app.js new file mode 100644 index 0000000..506ef6f --- /dev/null +++ b/starters/apps/base-meta-json/app.js @@ -0,0 +1,95 @@ +const { + createBot, + createProvider, + createFlow, + addKeyword, + addChild, +} = require('@bot-whatsapp/bot') + +const MetaProvider = require('@bot-whatsapp/provider/meta') +const JsonFileAdapter = require('@bot-whatsapp/database/json') + +/** + * 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') + +const flowZapatos2 = addKeyword(['zapatos2', '2']) + .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') + .addAnswer('y algunas otras cosas.') + +const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) + .addAnswer('🤯 Veo que elegiste zapatos') + .addAnswer('Tengo muchos zapatos...bla bla') + .addAnswer( + ['Manda:', '*(2) Zapatos2*', 'para mas información'], + { capture: true }, + (ctx) => { + console.log('Aqui puedes ver más info del usuario...') + console.log('Puedes enviar un mail, hook, etc..') + console.log(ctx) + }, + [...addChild(flowZapatos2)] + ) + +const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) + .addAnswer('🙌 Veo que elegiste bolsos') + .addAnswer('Tengo muchos bolsos...bla bla') + .addAnswer( + ['Manda:', '*(2) Bolsos2*', 'para mas información.'], + { capture: true }, + (ctx) => { + console.log('Aqui puedes ver más info del usuario...') + console.log('Puedes enviar un mail, hook, etc..') + console.log(ctx) + }, + [...addChild(flowBolsos2)] + ) + +/** + * Declarando flujo principal + */ + +const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) + .addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?']) + .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...']) + .addAnswer( + ['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) + }, + [...addChild(flowBolsos), ...addChild(flowZapatos)] + ) + +const main = async () => { + const adapterDB = new JsonFileAdapter() + const adapterFlow = createFlow([flowPrincipal]) + + const adapterProvider = createProvider(MetaProvider, { + jwtToken: 'jwtToken', + numberId: 'numberId', + verifyToken: 'verifyToken', + }) + + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} + +main() diff --git a/starters/apps/base-meta-json/package.json b/starters/apps/base-meta-json/package.json new file mode 100644 index 0000000..3243406 --- /dev/null +++ b/starters/apps/base-meta-json/package.json @@ -0,0 +1,22 @@ +{ + "name": "bot-whatsapp-base-meta-json", + "version": "1.0.0", + "description": "", + "main": "app.js", + "scripts": { + "pre-copy": "cd .. && yarn run copy.lib base-meta-json", + "start": "node app.js" + }, + "keywords": [], + "dependencies": { + "body-parser": "^1.20.1", + "polka": "^0.5.2", + "@bot-whatsapp/bot": "latest", + "@bot-whatsapp/cli": "latest", + "@bot-whatsapp/database": "latest", + "@bot-whatsapp/provider": "latest", + "axios": "^1.2.1" + }, + "author": "", + "license": "ISC" +} diff --git a/starters/apps/base-meta-mongo/README.md b/starters/apps/base-meta-mongo/README.md new file mode 100644 index 0000000..d0e43d2 --- /dev/null +++ b/starters/apps/base-meta-mongo/README.md @@ -0,0 +1,34 @@ +### CHATBOT Whatsapp + +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 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.. + +__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 +``` + +__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) + +------ +> ¿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-mongo/app.js b/starters/apps/base-meta-mongo/app.js new file mode 100644 index 0000000..8cf05d6 --- /dev/null +++ b/starters/apps/base-meta-mongo/app.js @@ -0,0 +1,106 @@ +const { + createBot, + createProvider, + createFlow, + addKeyword, + addChild, +} = require('@bot-whatsapp/bot') + +const MetaProvider = require('@bot-whatsapp/provider/meta') +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' + +/** + * 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') + +const flowZapatos2 = addKeyword(['zapatos2', '2']) + .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') + .addAnswer('y algunas otras cosas.') + +const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) + .addAnswer('🤯 Veo que elegiste zapatos') + .addAnswer('Tengo muchos zapatos...bla bla') + .addAnswer( + ['Manda:', '*(2) Zapatos2*', 'para mas información'], + { capture: true }, + (ctx) => { + console.log('Aqui puedes ver más info del usuario...') + console.log('Puedes enviar un mail, hook, etc..') + console.log(ctx) + }, + [...addChild(flowZapatos2)] + ) + +const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) + .addAnswer('🙌 Veo que elegiste bolsos') + .addAnswer('Tengo muchos bolsos...bla bla') + .addAnswer( + ['Manda:', '*(2) Bolsos2*', 'para mas información.'], + { capture: true }, + (ctx) => { + console.log('Aqui puedes ver más info del usuario...') + console.log('Puedes enviar un mail, hook, etc..') + console.log(ctx) + }, + [...addChild(flowBolsos2)] + ) + +/** + * Declarando flujo principal + */ + +const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) + .addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?']) + .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...']) + .addAnswer( + ['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) + }, + [...addChild(flowBolsos), ...addChild(flowZapatos)] + ) + +const main = async () => { + const adapterDB = new MongoAdapter({ + dbUri: MONGO_DB_URI, + dbName: MONGO_DB_NAME, + }) + + const adapterFlow = createFlow([flowPrincipal]) + + const adapterProvider = createProvider(MetaProvider, { + jwtToken: 'jwtToken', + numberId: 'numberId', + verifyToken: 'verifyToken', + }) + + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} + +main() diff --git a/starters/apps/base-meta-mongo/package.json b/starters/apps/base-meta-mongo/package.json new file mode 100644 index 0000000..94055f8 --- /dev/null +++ b/starters/apps/base-meta-mongo/package.json @@ -0,0 +1,23 @@ +{ + "name": "bot-whatsapp-base-meta-mongo", + "version": "1.0.0", + "description": "", + "main": "app.js", + "scripts": { + "pre-copy": "cd .. && yarn run copy.lib base-meta-mongo", + "start": "node app.js" + }, + "keywords": [], + "dependencies": { + "body-parser": "^1.20.1", + "polka": "^0.5.2", + "@bot-whatsapp/bot": "latest", + "@bot-whatsapp/cli": "latest", + "@bot-whatsapp/database": "latest", + "@bot-whatsapp/provider": "latest", + "axios": "^1.2.1", + "mongodb": "^4.12.1" + }, + "author": "", + "license": "ISC" +} diff --git a/starters/apps/base-meta-mysql/README.md b/starters/apps/base-meta-mysql/README.md new file mode 100644 index 0000000..d0e43d2 --- /dev/null +++ b/starters/apps/base-meta-mysql/README.md @@ -0,0 +1,34 @@ +### CHATBOT Whatsapp + +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 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.. + +__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 +``` + +__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) + +------ +> ¿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-mysql/app.js b/starters/apps/base-meta-mysql/app.js new file mode 100644 index 0000000..796f9ba --- /dev/null +++ b/starters/apps/base-meta-mysql/app.js @@ -0,0 +1,108 @@ +const { + createBot, + createProvider, + createFlow, + addKeyword, + addChild, +} = require('@bot-whatsapp/bot') + +const MetaProvider = require('@bot-whatsapp/provider/meta') +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' + +/** + * 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') + +const flowZapatos2 = addKeyword(['zapatos2', '2']) + .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') + .addAnswer('y algunas otras cosas.') + +const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) + .addAnswer('🤯 Veo que elegiste zapatos') + .addAnswer('Tengo muchos zapatos...bla bla') + .addAnswer( + ['Manda:', '*(2) Zapatos2*', 'para mas información'], + { capture: true }, + (ctx) => { + console.log('Aqui puedes ver más info del usuario...') + console.log('Puedes enviar un mail, hook, etc..') + console.log(ctx) + }, + [...addChild(flowZapatos2)] + ) + +const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) + .addAnswer('🙌 Veo que elegiste bolsos') + .addAnswer('Tengo muchos bolsos...bla bla') + .addAnswer( + ['Manda:', '*(2) Bolsos2*', 'para mas información.'], + { capture: true }, + (ctx) => { + console.log('Aqui puedes ver más info del usuario...') + console.log('Puedes enviar un mail, hook, etc..') + console.log(ctx) + }, + [...addChild(flowBolsos2)] + ) + +/** + * Declarando flujo principal + */ + +const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) + .addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?']) + .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...']) + .addAnswer( + ['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) + }, + [...addChild(flowBolsos), ...addChild(flowZapatos)] + ) + +const main = async () => { + 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(MetaProvider, { + jwtToken: 'jwtToken', + numberId: 'numberId', + verifyToken: 'verifyToken', + }) + + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} + +main() diff --git a/starters/apps/base-meta-mysql/package.json b/starters/apps/base-meta-mysql/package.json new file mode 100644 index 0000000..a9a71b0 --- /dev/null +++ b/starters/apps/base-meta-mysql/package.json @@ -0,0 +1,23 @@ +{ + "name": "bot-whatsapp-base-meta-mysql", + "version": "1.0.0", + "description": "", + "main": "app.js", + "scripts": { + "pre-copy": "cd .. && yarn run copy.lib base-meta-mysql", + "start": "node app.js" + }, + "keywords": [], + "dependencies": { + "body-parser": "^1.20.1", + "polka": "^0.5.2", + "@bot-whatsapp/bot": "latest", + "@bot-whatsapp/cli": "latest", + "@bot-whatsapp/database": "latest", + "@bot-whatsapp/provider": "latest", + "axios": "^1.2.1", + "mysql2": "^2.3.3" + }, + "author": "", + "license": "ISC" +} From c62af73c16aea9126f1e59738537f298bad2d0b5 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Fri, 30 Dec 2022 13:36:09 +0100 Subject: [PATCH 084/189] refactor(bot): :sparkles: improvement refactor for get cbs --- packages/bot/io/flow.class.js | 7 +++--- packages/bot/io/methods/addAnswer.js | 35 +++++++++++++++++++++++----- packages/bot/rollup-bot.config.js | 29 +++++++++++++++-------- 3 files changed, 51 insertions(+), 20 deletions(-) diff --git a/packages/bot/io/flow.class.js b/packages/bot/io/flow.class.js index cfd4afd..0e9461d 100644 --- a/packages/bot/io/flow.class.js +++ b/packages/bot/io/flow.class.js @@ -8,7 +8,7 @@ class FlowClass { if (!Array.isArray(_flow)) throw new Error('Esto debe ser un ARRAY') this.flowRaw = _flow - this.getAllCb(this.flowRaw) + this.allCallbacks = this.parseCallBacks(this.flowRaw) const mergeToJsonSerialize = Object.keys(_flow) .map((indexObjectFlow) => _flow[indexObjectFlow].toJson()) @@ -21,12 +21,11 @@ class FlowClass { * Buscar y aplanar todos los callbacks * @param {*} inFlow */ - getAllCb = (inFlow) => { - this.allCallbacks = inFlow + parseCallBacks = (inFlow) => + inFlow .map((cbIn) => cbIn.ctx.callbacks) .flat(2) .map((c, i) => ({ callback: c?.callback, index: i })) - } find = (keyOrWord, symbol = false, overFlow = null) => { keyOrWord = `${keyOrWord}` diff --git a/packages/bot/io/methods/addAnswer.js b/packages/bot/io/methods/addAnswer.js index a7db6d6..16a5f86 100644 --- a/packages/bot/io/methods/addAnswer.js +++ b/packages/bot/io/methods/addAnswer.js @@ -31,6 +31,29 @@ const addAnswer = nested: Array.isArray(nested) ? nested : [], }) + /** + * Esta funcion aplana y busca los callback anidados de los hijos + * @returns + */ + const getCbFromNested = () => { + const cbNestedList = Array.isArray(nested) ? nested : [] + const cbNestedObj = cbNestedList.map(({ ctx }) => ctx?.callbacks) + const queueCb = cbNestedObj.reduce((acc, current) => { + const getKeys = Object.keys(current) + const parse = getKeys.map((icb, i) => ({ + [icb]: Object.values(current)[i], + })) + return [...acc, ...parse] + }, []) + + const flatObj = {} + for (const iteration of queueCb) { + const [keyCb] = Object.keys(iteration) + flatObj[keyCb] = iteration[keyCb] + } + return flatObj + } + const callback = typeof cb === 'function' ? cb : () => null const lastCtx = inCtx.hasOwnProperty('ctx') ? inCtx.ctx : inCtx @@ -59,12 +82,12 @@ const addAnswer = }, ]) - const callbacks = [].concat(inCtx.callbacks).concat([ - { - ref: lastCtx.ref, - callback, - }, - ]) + getCbFromNested() + const callbacks = { + ...inCtx.callbacks, + ...getCbFromNested(), + [ref]: callback, + } return { ...lastCtx, diff --git a/packages/bot/rollup-bot.config.js b/packages/bot/rollup-bot.config.js index acd4229..f8ffa2a 100644 --- a/packages/bot/rollup-bot.config.js +++ b/packages/bot/rollup-bot.config.js @@ -3,14 +3,23 @@ const commonjs = require('@rollup/plugin-commonjs') const { nodeResolve } = require('@rollup/plugin-node-resolve') const { join } = require('path') -const PATH = join(__dirname, 'lib', 'bundle.bot.cjs') - -module.exports = { - input: join(__dirname, 'index.js'), - output: { - banner: banner['banner.output'].join(''), - file: PATH, - format: 'cjs', +module.exports = [ + { + input: join(__dirname, 'index.js'), + output: { + banner: banner['banner.output'].join(''), + file: join(__dirname, 'lib', 'bundle.bot.cjs'), + format: 'cjs', + }, + plugins: [commonjs(), nodeResolve()], }, - plugins: [commonjs(), nodeResolve()], -} + { + input: join(__dirname, 'index.js'), + output: { + banner: banner['banner.output'].join(''), + file: join(__dirname, 'lib', 'bundle.bot.cjs'), + format: 'cjs', + }, + plugins: [commonjs(), nodeResolve()], + }, +] From 952ce86ffaa48a0d6fbc0a00a08c5d1efa14ee8e Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Fri, 30 Dec 2022 14:18:22 +0100 Subject: [PATCH 085/189] fix(bot): :zap: working callback Phase 1 --- packages/bot/core/core.class.js | 20 ++++++-------------- packages/bot/io/flow.class.js | 14 +++----------- packages/bot/io/methods/addAnswer.js | 20 ++------------------ packages/bot/utils/flattener.js | 25 +++++++++++++++++++++++++ 4 files changed, 36 insertions(+), 43 deletions(-) create mode 100644 packages/bot/utils/flattener.js diff --git a/packages/bot/core/core.class.js b/packages/bot/core/core.class.js index 91195c8..5a9948c 100644 --- a/packages/bot/core/core.class.js +++ b/packages/bot/core/core.class.js @@ -115,24 +115,16 @@ 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( - messageCtxInComming, - { - fallBack, - flowDynamic, - } - ) + this.flowClass.allCallbacks[inRef](messageCtxInComming, { + fallBack, + flowDynamic, + }) } // 📄 [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) - } + for (const ite of this.flowClass.find(body)) { + cbEveryCtx(ite?.ref) } } diff --git a/packages/bot/io/flow.class.js b/packages/bot/io/flow.class.js index 0e9461d..583a237 100644 --- a/packages/bot/io/flow.class.js +++ b/packages/bot/io/flow.class.js @@ -1,4 +1,5 @@ const { toSerialize } = require('./methods/toSerialize') +const { flatObject } = require('../utils/flattener') class FlowClass { allCallbacks = [] @@ -8,7 +9,8 @@ class FlowClass { if (!Array.isArray(_flow)) throw new Error('Esto debe ser un ARRAY') this.flowRaw = _flow - this.allCallbacks = this.parseCallBacks(this.flowRaw) + this.allCallbacks = flatObject(_flow) + console.log('[🙌🙌🙌]', this.allCallbacks) const mergeToJsonSerialize = Object.keys(_flow) .map((indexObjectFlow) => _flow[indexObjectFlow].toJson()) @@ -17,16 +19,6 @@ class FlowClass { this.flowSerialize = toSerialize(mergeToJsonSerialize) } - /** - * Buscar y aplanar todos los callbacks - * @param {*} inFlow - */ - parseCallBacks = (inFlow) => - inFlow - .map((cbIn) => cbIn.ctx.callbacks) - .flat(2) - .map((c, i) => ({ callback: c?.callback, index: i })) - find = (keyOrWord, symbol = false, overFlow = null) => { keyOrWord = `${keyOrWord}` let capture = false diff --git a/packages/bot/io/methods/addAnswer.js b/packages/bot/io/methods/addAnswer.js index 16a5f86..5fe5a36 100644 --- a/packages/bot/io/methods/addAnswer.js +++ b/packages/bot/io/methods/addAnswer.js @@ -1,3 +1,4 @@ +const { flatObject } = require('../../utils/flattener') const { generateRef } = require('../../utils/hash') const { toJson } = require('./toJson') /** @@ -35,24 +36,7 @@ const addAnswer = * Esta funcion aplana y busca los callback anidados de los hijos * @returns */ - const getCbFromNested = () => { - const cbNestedList = Array.isArray(nested) ? nested : [] - const cbNestedObj = cbNestedList.map(({ ctx }) => ctx?.callbacks) - const queueCb = cbNestedObj.reduce((acc, current) => { - const getKeys = Object.keys(current) - const parse = getKeys.map((icb, i) => ({ - [icb]: Object.values(current)[i], - })) - return [...acc, ...parse] - }, []) - - const flatObj = {} - for (const iteration of queueCb) { - const [keyCb] = Object.keys(iteration) - flatObj[keyCb] = iteration[keyCb] - } - return flatObj - } + const getCbFromNested = () => flatObject(nested) const callback = typeof cb === 'function' ? cb : () => null diff --git a/packages/bot/utils/flattener.js b/packages/bot/utils/flattener.js new file mode 100644 index 0000000..875736d --- /dev/null +++ b/packages/bot/utils/flattener.js @@ -0,0 +1,25 @@ +const flatObject = (listArray = []) => { + const cbNestedList = Array.isArray(listArray) ? listArray : [] + + if (!listArray.length) return {} + + const cbNestedObj = cbNestedList + .map(({ ctx }) => ctx?.callbacks) + .filter((i) => !!i) + const queueCb = cbNestedObj.reduce((acc, current) => { + const getKeys = Object.keys(current) + const parse = getKeys.map((icb, i) => ({ + [icb]: Object.values(current)[i], + })) + return [...acc, ...parse] + }, []) + + const flatObj = {} + for (const iteration of queueCb) { + const [keyCb] = Object.keys(iteration) + flatObj[keyCb] = iteration[keyCb] + } + return flatObj +} + +module.exports = { flatObject } From 2cbc96245d795de749d894a3a0d99b6550f08d9e Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Fri, 30 Dec 2022 14:54:44 +0100 Subject: [PATCH 086/189] fix(bot): :zap: working nested new flow --- packages/bot/io/methods/addAnswer.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/packages/bot/io/methods/addAnswer.js b/packages/bot/io/methods/addAnswer.js index 5fe5a36..c72ae48 100644 --- a/packages/bot/io/methods/addAnswer.js +++ b/packages/bot/io/methods/addAnswer.js @@ -1,5 +1,6 @@ const { flatObject } = require('../../utils/flattener') const { generateRef } = require('../../utils/hash') +const { addChild } = require('./addChild') const { toJson } = require('./toJson') /** * @@ -28,9 +29,21 @@ const addAnswer = delay: typeof options?.delay === 'number' ? options?.delay : 0, }) - const getNested = () => ({ - nested: Array.isArray(nested) ? nested : [], - }) + const getNested = () => { + let flatNested = [] + if (Array.isArray(nested)) { + for (const iterator of nested) { + flatNested = [...flatNested, ...addChild(iterator)] + } + + return { + nested: flatNested, + } + } + return { + nested: addChild(nested), + } + } /** * Esta funcion aplana y busca los callback anidados de los hijos From 230bfc16ebf0f9d24111a0530261eafc315fa2a2 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Fri, 30 Dec 2022 15:02:58 +0100 Subject: [PATCH 087/189] refactor(bot): :fire: refactor child nested cbs --- packages/bot/core/core.class.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/bot/core/core.class.js b/packages/bot/core/core.class.js index 5a9948c..0770f1b 100644 --- a/packages/bot/core/core.class.js +++ b/packages/bot/core/core.class.js @@ -136,6 +136,11 @@ class CoreClass { })) msgToSend = this.flowClass.find(body, false, flowStandalone) || [] + + for (const ite of msgToSend) { + cbEveryCtx(ite?.ref) + } + this.sendFlow(msgToSend, from) return } From e59652676241cd1e0b6974031783b7e858e73ba4 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Fri, 30 Dec 2022 15:05:24 +0100 Subject: [PATCH 088/189] refactor(bot): :fire: refactor child nested cbs From 7d96a2c8d986563ef5f2a12e4dc9fa48115caf14 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Fri, 30 Dec 2022 15:09:05 +0100 Subject: [PATCH 089/189] refactor(bot): :fire: refactor child nested cbs --- packages/bot/tests/bot.class.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/bot/tests/bot.class.test.js b/packages/bot/tests/bot.class.test.js index 74fdb79..d74fdad 100644 --- a/packages/bot/tests/bot.class.test.js +++ b/packages/bot/tests/bot.class.test.js @@ -11,7 +11,7 @@ const { } = require('../index') class MockFlow { - allCallbacks = [{ callback: () => console.log('') }] + allCallbacks = { ref: () => 1 } flowSerialize = [] flowRaw = [] find = (arg) => { From e54f1fff5179cf89c6bdd42a0ac94d043abbd18f Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Fri, 30 Dec 2022 15:28:06 +0100 Subject: [PATCH 090/189] refactor(bot): :fire: refactor child nested cbs --- packages/bot/io/methods/addAnswer.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/bot/io/methods/addAnswer.js b/packages/bot/io/methods/addAnswer.js index c72ae48..f0ccdad 100644 --- a/packages/bot/io/methods/addAnswer.js +++ b/packages/bot/io/methods/addAnswer.js @@ -49,7 +49,8 @@ const addAnswer = * Esta funcion aplana y busca los callback anidados de los hijos * @returns */ - const getCbFromNested = () => flatObject(nested) + const getCbFromNested = () => + flatObject(Array.isArray(nested) ? nested : [nested]) const callback = typeof cb === 'function' ? cb : () => null From b2f9f7158b560d7246bfcf28f1c017d438577b6d Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Fri, 30 Dec 2022 19:40:35 +0100 Subject: [PATCH 091/189] refactor(bot): :fire: refactor child nested cbs --- .github/workflows/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 05afdd0..f3c2553 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,6 +1,9 @@ name: 🤪 Build and Test on: + push: + branches: + - dev pull_request: branches: - dev From ee5b69dbf3b4090e4cb9175c2a75578ac33b10b2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 30 Dec 2022 18:45:58 +0000 Subject: [PATCH 092/189] 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 87d283b..94ea8ad 100644 --- a/packages/bot/package.json +++ b/packages/bot/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/bot", - "version": "0.0.28-alpha.0", + "version": "0.0.29-alpha.0", "description": "", "main": "./lib/bundle.bot.cjs", "scripts": { diff --git a/packages/cli/package.json b/packages/cli/package.json index 5a678c4..3f86f72 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/cli", - "version": "0.0.35-alpha.0", + "version": "0.0.36-alpha.0", "description": "", "main": "index.js", "devDependencies": { diff --git a/packages/create-bot-whatsapp/package.json b/packages/create-bot-whatsapp/package.json index 2386b2e..9c2358f 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.46-alpha.0", + "version": "0.0.47-alpha.0", "description": "", "main": "./lib/bundle.create-bot-whatsapp.cjs", "files": [ diff --git a/packages/database/package.json b/packages/database/package.json index a79d823..71404ba 100644 --- a/packages/database/package.json +++ b/packages/database/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/database", - "version": "0.0.27-alpha.0", + "version": "0.0.28-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 7bc108b..7714e30 100644 --- a/packages/provider/package.json +++ b/packages/provider/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/provider", - "version": "0.0.33-alpha.0", + "version": "0.0.34-alpha.0", "description": "Esto es el conector a Twilio, Meta, etc...", "main": "./lib/mock/index.cjs", "keywords": [], From eaf6e084c1510594b327db89fb4036f4d1c9f324 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Fri, 30 Dec 2022 20:13:15 +0100 Subject: [PATCH 093/189] docs: :zap: updated video --- packages/bot/io/flow.class.js | 1 - packages/docs/src/assets/styles/global.css | 3 + packages/docs/src/components/core/Social.tsx | 61 +++++++++ .../docs/src/components/widgets/Footer.tsx | 4 +- .../docs/src/components/widgets/Header.tsx | 7 +- packages/docs/src/components/widgets/Hero.tsx | 6 +- packages/docs/src/root.tsx | 3 + .../src/routes/docs/contribuiting/index.mdx | 1 - .../src/routes/docs/contributing/index.mdx | 121 ++++++++++++++++++ 9 files changed, 198 insertions(+), 9 deletions(-) create mode 100644 packages/docs/src/components/core/Social.tsx delete mode 100644 packages/docs/src/routes/docs/contribuiting/index.mdx create mode 100644 packages/docs/src/routes/docs/contributing/index.mdx diff --git a/packages/bot/io/flow.class.js b/packages/bot/io/flow.class.js index 583a237..458c423 100644 --- a/packages/bot/io/flow.class.js +++ b/packages/bot/io/flow.class.js @@ -10,7 +10,6 @@ class FlowClass { this.flowRaw = _flow this.allCallbacks = flatObject(_flow) - console.log('[🙌🙌🙌]', this.allCallbacks) const mergeToJsonSerialize = Object.keys(_flow) .map((indexObjectFlow) => _flow[indexObjectFlow].toJson()) diff --git a/packages/docs/src/assets/styles/global.css b/packages/docs/src/assets/styles/global.css index 24f0392..9acba13 100644 --- a/packages/docs/src/assets/styles/global.css +++ b/packages/docs/src/assets/styles/global.css @@ -47,6 +47,9 @@ @apply p-3 rounded md:w-full max-w-screen-md overflow-x-auto w-fit bg-gray-800 dark:bg-slate-800 ease-in duration-75 text-gray-100 text-xs shadow-xl; } + .slot iframe { + @apply rounded ease-in duration-75 text-gray-100 text-xs shadow-xl; + } .slot a { @apply text-sky-900 font-medium dark:text-sky-400 dark:hover:text-white; } diff --git a/packages/docs/src/components/core/Social.tsx b/packages/docs/src/components/core/Social.tsx new file mode 100644 index 0000000..43d6ac2 --- /dev/null +++ b/packages/docs/src/components/core/Social.tsx @@ -0,0 +1,61 @@ +export const Social = () => { + return ( + <> + {/* + 💻 Conviértete en un Programador Backend aprendiendo todo de + Cloud y Nodejs + + + + + + + + + + + + */} + + + + + + + + + + + + ) +} diff --git a/packages/docs/src/components/widgets/Footer.tsx b/packages/docs/src/components/widgets/Footer.tsx index 9aaace6..fde0425 100644 --- a/packages/docs/src/components/widgets/Footer.tsx +++ b/packages/docs/src/components/widgets/Footer.tsx @@ -101,7 +101,7 @@ export default component$(() => { ))} -
+ {/*
Made by{' '} { onWidget {' '} · All rights reserved. -
+
*/}
diff --git a/packages/docs/src/components/widgets/Header.tsx b/packages/docs/src/components/widgets/Header.tsx index 1a41445..bba79b6 100644 --- a/packages/docs/src/components/widgets/Header.tsx +++ b/packages/docs/src/components/widgets/Header.tsx @@ -45,9 +45,12 @@ export default component$(() => { >
diff --git a/packages/docs/src/root.tsx b/packages/docs/src/root.tsx index 9c6c3af..bf4d2b5 100644 --- a/packages/docs/src/root.tsx +++ b/packages/docs/src/root.tsx @@ -16,6 +16,7 @@ import { DarkThemeLauncher } from '~/components/core/DarkThemeLauncher' import fontStyles from '~/assets/styles/fonts.css?inline' import globalStyles from '~/assets/styles/global.css?inline' import { DocumentationCtx, GlobalStore } from './contexts' +import { Social } from './components/core/Social' export default component$(() => { /** @@ -57,6 +58,7 @@ export default component$(() => { title: 'Comunidad', list: [ { name: 'MasterClass', link: '/docs/masterclass' }, + { name: 'Colabores', link: '/docs/contributing' }, { name: 'Unirme al proyecto', link: '/docs/join' }, { name: 'Sponsors', link: '/docs/sponsors' }, ], @@ -77,6 +79,7 @@ export default component$(() => { + diff --git a/packages/docs/src/routes/docs/contribuiting/index.mdx b/packages/docs/src/routes/docs/contribuiting/index.mdx deleted file mode 100644 index 38a782f..0000000 --- a/packages/docs/src/routes/docs/contribuiting/index.mdx +++ /dev/null @@ -1 +0,0 @@ -# Personas que quieran unirse diff --git a/packages/docs/src/routes/docs/contributing/index.mdx b/packages/docs/src/routes/docs/contributing/index.mdx new file mode 100644 index 0000000..84b2bcf --- /dev/null +++ b/packages/docs/src/routes/docs/contributing/index.mdx @@ -0,0 +1,121 @@ +# Colaboradores + + + +### 📄 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. +- **[VSCode](https://code.visualstudio.com/download)** (recomendado): Editor de código con plugins. +- **[Conventional Commits](https://marketplace.visualstudio.com/items?itemName=vivaxy.vscode-conventional-commits&ssr=false#overview)** (plugin-vscode) este plugin te ayudará a crear commit semántico. +- Se usará la rama **dev** _(https://github.com/leifermendez/bot-whatsapp/tree/dev)_ como rama principal hasta que se haga oficialmente el lanzamiento de la V2. + +### 🚀 Iniciando + +**Clonar repo rama dev** + +``` +git clone --branch dev https://github.com/codigoencasa/bot-whatsapp +``` + +**Instalar dependencias** + +``` +cd bot-whatsapp +yarn install +``` + +**Compilar (build)** +Para compilar la aplicación es necesario ejecutar este comando, el cual genera un directorio `lib` dentro de los paquetes del monorepo. + +``` +yarn build +``` + +**Example-app** +Se ejecuta el CLI (Command Line Interface) para ayudarte a crear un app-bot de ejemplo. + +``` +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, ejemplo: `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 creado ejemplo: `base-bailey-mysql` + +``` +cd base-baileys-mysql +``` + +Ejecuta los comandos: + +``` +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) + +> **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) +- [Twitter](https://twitter.com/leifermendez) +- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) +- [Telegram](https://t.me/leifermendez) From b659cc9b153ea5d34533860e8778a8bf2352a67d Mon Sep 17 00:00:00 2001 From: marianarolfo <68322254+marianarolfo@users.noreply.github.com> Date: Sat, 31 Dec 2022 13:47:52 +0100 Subject: [PATCH 094/189] docs(README): updated, style --- README.md | 128 +++++++++++++----------------------------------------- 1 file changed, 30 insertions(+), 98 deletions(-) diff --git a/README.md b/README.md index 8b4bc67..208bde0 100644 --- a/README.md +++ b/README.md @@ -1,102 +1,34 @@ -[![Test / Coverage](https://github.com/leifermendez/bot-whatsapp/actions/workflows/ci.yml/badge.svg)](https://github.com/leifermendez/bot-whatsapp/actions/workflows/ci.yml) +# Chatbot Library +![](https://img.shields.io/npm/v/@bot-whatsapp/bot?color=%2300c200&label=%40bot-whatsapp) [![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/) --------- -## Documentacion -[https://bot-whatsapp.netlify.app/](https://bot-whatsapp.netlify.app/) - -🐤 Tablero de tareas : [https://github.com/users/leifermendez/projects/4/views/1](https://github.com/users/leifermendez/projects/4/views/1) - -🚀 __Roadmap:__ [https://github.com/users/leifermendez/projects/4/views/1](https://github.com/users/leifermendez/projects/4/views/1) +[![BotWhatsapp Releases(Prod)](https://github.com/codigoencasa/bot-whatsapp/actions/workflows/releases.yml/badge.svg)](https://github.com/codigoencasa/bot-whatsapp/actions/workflows/releases.yml) -**Comunidad** + +
+ + +**Con esta librería, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes.  Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin límites. + +## Comenzar + +``` +npm create bot-whatsapp@latest +``` + +Entiende más a fondo sus funcionalidades explicadas en nuestra documentación. + +- Instalacion +- Base de datos +- Proveedores + +## Recursos +- [📄 Documentación](https://bot-whatsapp.netlify.app/) +- [🚀 Roadmap](https://github.com/orgs/codigoencasa/projects/1) +- [💻 Discord](https://link.codigoencasa.com/DISCORD) +- [👌 Twitter](https://twitter.com/leifermendez) +- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) + +## Comunidad - - - - - - - - - - - - - - -
- - leifermendez -
- Leifer Mendez -
-
- - aurik3 -
- Null -
-
- - vicente1992 -
- Manuel Vicente Ortiz -
-
- - leifermendezfroged -
- Leifer Mendez -
-
- - HKong31 -
- Null -
-
- - jzvi12 -
- Zvi -
-
- - Gonzalito87 -
- Null -
-
- - tonyvazgar -
- Luis Antonio Vázquez García -
-
- - ulisesvina -
- Ulises Viña -
-
- - rrruuuyyy -
- Rodrigo Mendoza Cabrera -
-
- - yond1994 -
- Yonathan Suarez -
-
- - -> 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 From 5633f7c71c12b375868daceaf422cbd5f10b72e7 Mon Sep 17 00:00:00 2001 From: marianarolfo <68322254+marianarolfo@users.noreply.github.com> Date: Sat, 31 Dec 2022 13:52:26 +0100 Subject: [PATCH 095/189] docs(READMED): update, style --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 208bde0..e0f6488 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ -
+
**Con esta librería, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes.  Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin límites. @@ -31,4 +31,6 @@ Entiende más a fondo sus funcionalidades explicadas en nuestra documentación. ## Comunidad - \ No newline at end of file + + + From aff9f19d8e289febf1cec041aa037f8d3846c489 Mon Sep 17 00:00:00 2001 From: marianarolfo <68322254+marianarolfo@users.noreply.github.com> Date: Sat, 31 Dec 2022 14:10:39 +0100 Subject: [PATCH 096/189] add info install node --- packages/docs/src/routes/docs/install/index.mdx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/docs/src/routes/docs/install/index.mdx b/packages/docs/src/routes/docs/install/index.mdx index 97614d6..cf23f33 100644 --- a/packages/docs/src/routes/docs/install/index.mdx +++ b/packages/docs/src/routes/docs/install/index.mdx @@ -6,6 +6,11 @@ A continuación se describen los puntos técnicos que debes de tener en cuenta a - Node v16 o superior **[descargar node](https://nodejs.org/es/download/)** +## ¿Como instalar Node en Windows? +https://youtu.be/xRXHQlqA3Ak?t=376 + +## ¿Como instalar Node en Ubuntu? +Te comparto un recurso de **[Digital Ocean](https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-20-04-es)** donde explica como instalar node en Ubuntu. ## ¿Como saber que tengo el Node? Solo debes ejecutar el siguiente comando y esperar que la versión que te arroja sea superior a v16 From 928365dcafb3631acf6b1d0c239a906f8e1c4b0d Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sun, 1 Jan 2023 13:58:36 +0100 Subject: [PATCH 097/189] fix(provider): :fire: baileys fix --- README.md | 14 +++++++----- packages/provider/src/baileys/index.js | 31 ++++++++++++++++++-------- 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index e0f6488..100c869 100644 --- a/README.md +++ b/README.md @@ -4,11 +4,12 @@ [![BotWhatsapp Releases(Prod)](https://github.com/codigoencasa/bot-whatsapp/actions/workflows/releases.yml/badge.svg)](https://github.com/codigoencasa/bot-whatsapp/actions/workflows/releases.yml) - -
+

+ +

-**Con esta librería, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes.  Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin límites. +**Con esta librería, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes.  Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin límites. **[Ver más informacion](https://bot-whatsapp.netlify.app/)** ## Comenzar @@ -25,12 +26,13 @@ Entiende más a fondo sus funcionalidades explicadas en nuestra documentación. ## Recursos - [📄 Documentación](https://bot-whatsapp.netlify.app/) - [🚀 Roadmap](https://github.com/orgs/codigoencasa/projects/1) -- [💻 Discord](https://link.codigoencasa.com/DISCORD) -- [👌 Twitter](https://twitter.com/leifermendez) -- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) +- [💻 Discord](https://link.codigoencasa.com/DISCORD) +- [👌 Twitter](https://twitter.com/leifermendez) +- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) ## Comunidad + diff --git a/packages/provider/src/baileys/index.js b/packages/provider/src/baileys/index.js index 0ecd18c..90d63a7 100644 --- a/packages/provider/src/baileys/index.js +++ b/packages/provider/src/baileys/index.js @@ -1,13 +1,16 @@ const { ProviderClass } = require('@bot-whatsapp/bot') const { Sticker } = require('wa-sticker-formatter') const pino = require('pino') +const rimraf = require('rimraf') const mime = require('mime-types') +const { join } = require('path') const { existsSync, createWriteStream } = require('fs') const { Console } = require('console') const { default: makeWASocket, useMultiFileAuthState, + Browsers, DisconnectReason, } = require('@adiwajshing/baileys') const { @@ -21,6 +24,9 @@ const logger = new Console({ stdout: createWriteStream(`${process.cwd()}/baileys.log`), }) +const NAME_DIR_SESSION = `sessions` +const PATH_BASE = join(process.cwd(), NAME_DIR_SESSION) + /** * ⚙️ BaileysProvider: Es una clase tipo adaptor * que extiende clases de ProviderClass (la cual es como interfaz para sber que funciones rqueridas) @@ -38,28 +44,35 @@ class BaileysProvider extends ProviderClass { * Iniciar todo Bailey */ initBailey = async () => { - const { state, saveCreds } = await useMultiFileAuthState('sessions') + const { state, saveCreds } = await useMultiFileAuthState( + NAME_DIR_SESSION + ) this.saveCredsGlobal = saveCreds try { const sock = makeWASocket({ printQRInTerminal: false, auth: state, + browser: Browsers.macOS('Desktop'), + syncFullHistory: false, logger: pino({ level: 'error' }), }) sock.ev.on('connection.update', async (update) => { const { connection, lastDisconnect, qr } = update - if (connection === 'close') { - const shouldReconnect = - lastDisconnect?.error?.output?.statusCode !== - DisconnectReason.loggedOut + const statusCode = lastDisconnect?.error?.output?.statusCode - if (shouldReconnect) { - await saveCreds() - this.initBailey() - } + if (statusCode === DisconnectReason.loggedOut) { + rimraf(PATH_BASE, (err) => { + if (err) return + }) + + this.initBailey() + } + + if (statusCode && statusCode !== DisconnectReason.loggedOut) { + this.initBailey() } if (qr) { From 3248dce03da3dac566285e889035f729a8ff4364 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sun, 1 Jan 2023 15:07:11 +0100 Subject: [PATCH 098/189] ci(provider): :sparkles: automatic updated versions --- .github/workflows/check-providers.yml | 50 +++++++ .github/workflows/ci.yml | 2 +- .github/workflows/contributors.yml | 2 +- packages/cli/interactive/index.js | 2 +- packages/provider/src/baileys/package.json | 7 + packages/provider/src/meta/package.json | 3 + packages/provider/src/twilio/package.json | 5 + packages/provider/src/venom/package.json | 6 + .../provider/src/web-whatsapp/package.json | 5 + scripts/checker.js | 131 ++++++++++++++++++ .../README.md | 0 .../app.js | 0 .../package.json | 8 +- .../README.md | 0 .../app.js | 0 .../package.json | 8 +- .../README.md | 0 .../app.js | 0 .../package.json | 8 +- starters/apps/base-twilio-memory/package.json | 2 +- starters/apps/base-twilio-mongo/package.json | 2 +- starters/apps/base-twilio-mysql/package.json | 2 +- starters/apps/base-venom-memory/package.json | 5 +- starters/apps/base-venom-mongo/package.json | 4 +- starters/apps/base-venom-mysql/package.json | 5 +- starters/apps/base-wweb-memory/package.json | 4 +- starters/apps/base-wweb-mongo/package.json | 2 +- starters/apps/base-wweb-mysql/package.json | 2 +- 28 files changed, 237 insertions(+), 28 deletions(-) create mode 100644 .github/workflows/check-providers.yml create mode 100644 packages/provider/src/baileys/package.json create mode 100644 packages/provider/src/meta/package.json create mode 100644 packages/provider/src/twilio/package.json create mode 100644 packages/provider/src/venom/package.json create mode 100644 packages/provider/src/web-whatsapp/package.json create mode 100644 scripts/checker.js rename starters/apps/{base-bailey-memory => base-baileys-memory}/README.md (100%) rename starters/apps/{base-bailey-memory => base-baileys-memory}/app.js (100%) rename starters/apps/{base-bailey-memory => base-baileys-memory}/package.json (69%) rename starters/apps/{base-bailey-mongo => base-baileys-mongo}/README.md (100%) rename starters/apps/{base-bailey-mongo => base-baileys-mongo}/app.js (100%) rename starters/apps/{base-bailey-mongo => base-baileys-mongo}/package.json (71%) rename starters/apps/{base-bailey-mysql => base-baileys-mysql}/README.md (100%) rename starters/apps/{base-bailey-mysql => base-baileys-mysql}/app.js (100%) rename starters/apps/{base-bailey-mysql => base-baileys-mysql}/package.json (71%) diff --git a/.github/workflows/check-providers.yml b/.github/workflows/check-providers.yml new file mode 100644 index 0000000..76044ab --- /dev/null +++ b/.github/workflows/check-providers.yml @@ -0,0 +1,50 @@ +name: Build and Test + +on: + push: + branches: + - dev + pull_request: + branches: + - dev + +jobs: + check-npm: + name: Install Dependencies + runs-on: ubuntu-latest + needs: + - test-unit + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 16.x + cache: 'yarn' + registry-url: https://registry.npmjs.org/ + + - run: corepack enable + + - name: Install NPM Dependencies + run: yarn install --immutable --network-timeout 300000 + + - name: Check Baileys + run: yarn node ./scripts/checker.js baileys + + - name: Check Venom + run: yarn node ./scripts/checker.js venom + + - name: Check web-whatsapp + run: yarn node ./scripts/checker.js web-whatsapp + + - name: Check Meta + run: yarn node ./scripts/checker.js meta + + - name: Check Twilio + run: yarn node ./scripts/checker.js twilio + + - uses: stefanzweifel/git-auto-commit-action@v4 + with: + commit_message: "ci(providers): updated versions providers" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f3c2553..82f5ff0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,4 @@ -name: 🤪 Build and Test +name: Build and Test on: push: diff --git a/.github/workflows/contributors.yml b/.github/workflows/contributors.yml index a302035..5a6d3ef 100644 --- a/.github/workflows/contributors.yml +++ b/.github/workflows/contributors.yml @@ -1,4 +1,4 @@ -name: 🙌 Revisando Colaboradores +name: Revisando Colaboradores on: pull_request: branches: diff --git a/packages/cli/interactive/index.js b/packages/cli/interactive/index.js index 89ee601..a0a4034 100644 --- a/packages/cli/interactive/index.js +++ b/packages/cli/interactive/index.js @@ -34,7 +34,7 @@ const startInteractive = async () => { choices: [ { title: 'whatsapp-web.js (gratis)', value: 'wweb' }, { title: 'Venom (gratis)', value: 'venom' }, - { title: 'Baileys (gratis)', value: 'bailey' }, + { title: 'Baileys (gratis)', value: 'baileys' }, { title: 'Twilio', value: 'twilio' }, { title: 'API Oficial (Meta)', value: 'meta' }, ], diff --git a/packages/provider/src/baileys/package.json b/packages/provider/src/baileys/package.json new file mode 100644 index 0000000..4326d59 --- /dev/null +++ b/packages/provider/src/baileys/package.json @@ -0,0 +1,7 @@ +{ + "dependencies": { + "@adiwajshing/baileys": "5.0.0", + "mime-types": "2.1.35", + "wa-sticker-formatter": "4.3.2" + } +} diff --git a/packages/provider/src/meta/package.json b/packages/provider/src/meta/package.json new file mode 100644 index 0000000..92a4250 --- /dev/null +++ b/packages/provider/src/meta/package.json @@ -0,0 +1,3 @@ +{ + "dependencies": {} +} diff --git a/packages/provider/src/twilio/package.json b/packages/provider/src/twilio/package.json new file mode 100644 index 0000000..dd0a9bf --- /dev/null +++ b/packages/provider/src/twilio/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "twilio": "3.84.0" + } +} diff --git a/packages/provider/src/venom/package.json b/packages/provider/src/venom/package.json new file mode 100644 index 0000000..6735c52 --- /dev/null +++ b/packages/provider/src/venom/package.json @@ -0,0 +1,6 @@ +{ + "dependencies": { + "venom-bot": "4.3.7", + "mime-types": "2.1.35" + } +} diff --git a/packages/provider/src/web-whatsapp/package.json b/packages/provider/src/web-whatsapp/package.json new file mode 100644 index 0000000..7514818 --- /dev/null +++ b/packages/provider/src/web-whatsapp/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "whatsapp-web.js": "1.18.4" + } +} diff --git a/scripts/checker.js b/scripts/checker.js new file mode 100644 index 0000000..26f3e41 --- /dev/null +++ b/scripts/checker.js @@ -0,0 +1,131 @@ +const { execFile } = require('node:child_process') +const { readFileSync, writeFileSync, readdirSync } = require('node:fs') +const { join } = require('path') +const process = require('node:process') +const util = require('node:util') +const semver = require('semver') + +const cmd = util.promisify(execFile) +const OS_ENVIROMENT_WIN = process.platform.includes('win32') + +const PATH_PACKAGES = join(__dirname, '..', `packages`) +const PATH_STARTERS = join(__dirname, '..', `starters`, `apps`) +const NPM_COMMAND = OS_ENVIROMENT_WIN ? 'npm.cmd' : 'npm' +const [PKG_NAME] = process.argv.slice(2) || [null] + +/** + * Revisar ultima version de una paquetes + * @param {*} pkgName + */ +const checkPkg = async (pkgName = '') => { + const { stdout } = await cmd( + NPM_COMMAND, + ['show', `${pkgName}`, 'version'], + { + stdio: 'inherit', + } + ) + + return stdout.trim().replace('\n', '') +} + +/** + * Revisar todas las dependencias del provider + * @param {*} provider + * @returns + */ +const checkEveryProvider = async (provider = '') => { + const pkgDependencies = readFileSync( + join(PATH_PACKAGES, 'provider', 'src', provider, 'package.json') + ) + try { + const { dependencies } = JSON.parse(pkgDependencies) + const devParse = Object.entries(dependencies) + const newDevParse = {} + for (const [pkgName] of devParse) { + const lastVersion = await checkPkg(pkgName) + newDevParse[pkgName] = lastVersion + } + return newDevParse + } catch (e) { + console.log(e) + return {} + } +} + +/** + * Actualizar depedencias con nuevas versiones + * @param {*} provider + * @param {*} list + * @returns + */ +const updateDependencies = async (provider = '', list = {}) => { + const pathProvider = join( + PATH_PACKAGES, + 'provider', + 'src', + provider, + 'package.json' + ) + + try { + const pkgDependencies = readFileSync(pathProvider) + const { dependencies } = JSON.parse(pkgDependencies) + writeFileSync( + pathProvider, + JSON.stringify( + { dependencies: { ...dependencies, ...list } }, + null, + 2 + ) + ) + } catch (e) { + console.log(e) + return {} + } +} + +/** + * Actualizar starters + * @param {*} provider + * @returns + */ +const updateStarters = async (provider = '', updateDev = {}) => { + provider = provider === 'web-whatsapp' ? 'wweb' : provider + const allStarters = readdirSync(PATH_STARTERS).filter((n) => + n.includes(provider) + ) + + try { + for (const base of allStarters) { + const pkgDependenciesBase = readFileSync( + join(PATH_STARTERS, base, 'package.json') + ) + const pkgBase = JSON.parse(pkgDependenciesBase) + writeFileSync( + join(PATH_STARTERS, base, 'package.json'), + JSON.stringify( + { + ...pkgBase, + dependencies: { ...pkgBase.dependencies, ...updateDev }, + }, + null, + 2 + ) + ) + } + } catch (e) { + console.log(e) + return + } +} + +const main = async () => { + if (PKG_NAME) { + const list = await checkEveryProvider(PKG_NAME) + await updateDependencies(PKG_NAME, list) + await updateStarters(PKG_NAME, list) + } +} + +main() diff --git a/starters/apps/base-bailey-memory/README.md b/starters/apps/base-baileys-memory/README.md similarity index 100% rename from starters/apps/base-bailey-memory/README.md rename to starters/apps/base-baileys-memory/README.md diff --git a/starters/apps/base-bailey-memory/app.js b/starters/apps/base-baileys-memory/app.js similarity index 100% rename from starters/apps/base-bailey-memory/app.js rename to starters/apps/base-baileys-memory/app.js diff --git a/starters/apps/base-bailey-memory/package.json b/starters/apps/base-baileys-memory/package.json similarity index 69% rename from starters/apps/base-bailey-memory/package.json rename to starters/apps/base-baileys-memory/package.json index 9d9bb38..e27fef1 100644 --- a/starters/apps/base-bailey-memory/package.json +++ b/starters/apps/base-baileys-memory/package.json @@ -4,7 +4,7 @@ "description": "", "main": "app.js", "scripts": { - "pre-copy": "cd .. && yarn run copy.lib base-bailey-memory", + "pre-copy": "cd .. && yarn run copy.lib base-baileys-memory", "start": "node app.js" }, "keywords": [], @@ -13,9 +13,9 @@ "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", "@bot-whatsapp/provider": "latest", - "@adiwajshing/baileys": "^4.4.0", - "mime-types": "^2.1.35", - "wa-sticker-formatter": "^4.3.2" + "@adiwajshing/baileys": "5.0.0", + "mime-types": "2.1.35", + "wa-sticker-formatter": "4.3.2" }, "author": "", "license": "ISC" diff --git a/starters/apps/base-bailey-mongo/README.md b/starters/apps/base-baileys-mongo/README.md similarity index 100% rename from starters/apps/base-bailey-mongo/README.md rename to starters/apps/base-baileys-mongo/README.md diff --git a/starters/apps/base-bailey-mongo/app.js b/starters/apps/base-baileys-mongo/app.js similarity index 100% rename from starters/apps/base-bailey-mongo/app.js rename to starters/apps/base-baileys-mongo/app.js diff --git a/starters/apps/base-bailey-mongo/package.json b/starters/apps/base-baileys-mongo/package.json similarity index 71% rename from starters/apps/base-bailey-mongo/package.json rename to starters/apps/base-baileys-mongo/package.json index d154742..2b4e0f7 100644 --- a/starters/apps/base-bailey-mongo/package.json +++ b/starters/apps/base-baileys-mongo/package.json @@ -4,7 +4,7 @@ "description": "", "main": "app.js", "scripts": { - "pre-copy": "cd .. && yarn run copy.lib base-bailey-mongo", + "pre-copy": "cd .. && yarn run copy.lib base-baileys-mongo", "start": "node app.js" }, "keywords": [], @@ -13,10 +13,10 @@ "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", "@bot-whatsapp/provider": "latest", - "@adiwajshing/baileys": "^4.4.0", - "mime-types": "^2.1.35", + "@adiwajshing/baileys": "5.0.0", + "mime-types": "2.1.35", "mongodb": "^4.12.1", - "wa-sticker-formatter": "^4.3.2" + "wa-sticker-formatter": "4.3.2" }, "author": "", "license": "ISC" diff --git a/starters/apps/base-bailey-mysql/README.md b/starters/apps/base-baileys-mysql/README.md similarity index 100% rename from starters/apps/base-bailey-mysql/README.md rename to starters/apps/base-baileys-mysql/README.md diff --git a/starters/apps/base-bailey-mysql/app.js b/starters/apps/base-baileys-mysql/app.js similarity index 100% rename from starters/apps/base-bailey-mysql/app.js rename to starters/apps/base-baileys-mysql/app.js diff --git a/starters/apps/base-bailey-mysql/package.json b/starters/apps/base-baileys-mysql/package.json similarity index 71% rename from starters/apps/base-bailey-mysql/package.json rename to starters/apps/base-baileys-mysql/package.json index 337ea1a..2d1684f 100644 --- a/starters/apps/base-bailey-mysql/package.json +++ b/starters/apps/base-baileys-mysql/package.json @@ -4,7 +4,7 @@ "description": "", "main": "app.js", "scripts": { - "pre-copy": "cd .. && yarn run copy.lib base-bailey-mysql", + "pre-copy": "cd .. && yarn run copy.lib base-baileys-mysql", "start": "node app.js" }, "keywords": [], @@ -13,10 +13,10 @@ "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", "@bot-whatsapp/provider": "latest", - "@adiwajshing/baileys": "^4.4.0", - "mime-types": "^2.1.35", + "@adiwajshing/baileys": "5.0.0", + "mime-types": "2.1.35", "mysql2": "^2.3.3", - "wa-sticker-formatter": "^4.3.2" + "wa-sticker-formatter": "4.3.2" }, "author": "", "license": "ISC" diff --git a/starters/apps/base-twilio-memory/package.json b/starters/apps/base-twilio-memory/package.json index 572ca88..e71ca5a 100644 --- a/starters/apps/base-twilio-memory/package.json +++ b/starters/apps/base-twilio-memory/package.json @@ -11,7 +11,7 @@ "dependencies": { "body-parser": "^1.20.1", "polka": "^0.5.2", - "twilio": "^3.83.4", + "twilio": "3.84.0", "@bot-whatsapp/bot": "latest", "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", diff --git a/starters/apps/base-twilio-mongo/package.json b/starters/apps/base-twilio-mongo/package.json index c8ead10..4a8c063 100644 --- a/starters/apps/base-twilio-mongo/package.json +++ b/starters/apps/base-twilio-mongo/package.json @@ -11,7 +11,7 @@ "dependencies": { "body-parser": "^1.20.1", "polka": "^0.5.2", - "twilio": "^3.83.4", + "twilio": "3.84.0", "@bot-whatsapp/bot": "latest", "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", diff --git a/starters/apps/base-twilio-mysql/package.json b/starters/apps/base-twilio-mysql/package.json index 1f5e5d0..d4c4d37 100644 --- a/starters/apps/base-twilio-mysql/package.json +++ b/starters/apps/base-twilio-mysql/package.json @@ -11,7 +11,7 @@ "dependencies": { "body-parser": "^1.20.1", "polka": "^0.5.2", - "twilio": "^3.83.4", + "twilio": "3.84.0", "@bot-whatsapp/bot": "latest", "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", diff --git a/starters/apps/base-venom-memory/package.json b/starters/apps/base-venom-memory/package.json index c72298a..dfe5408 100644 --- a/starters/apps/base-venom-memory/package.json +++ b/starters/apps/base-venom-memory/package.json @@ -9,11 +9,12 @@ }, "keywords": [], "dependencies": { - "venom-bot": "^4.3.7", + "venom-bot": "4.3.7", "@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" }, "author": "", "license": "ISC" diff --git a/starters/apps/base-venom-mongo/package.json b/starters/apps/base-venom-mongo/package.json index 6586c9f..3b46613 100644 --- a/starters/apps/base-venom-mongo/package.json +++ b/starters/apps/base-venom-mongo/package.json @@ -9,12 +9,12 @@ }, "keywords": [], "dependencies": { - "venom-bot": "^4.3.7", + "venom-bot": "4.3.7", "@bot-whatsapp/bot": "latest", "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", "@bot-whatsapp/provider": "latest", - "mime-types": "^2.1.35", + "mime-types": "2.1.35", "mongodb": "^4.12.1" }, "author": "", diff --git a/starters/apps/base-venom-mysql/package.json b/starters/apps/base-venom-mysql/package.json index c549d12..670fd00 100644 --- a/starters/apps/base-venom-mysql/package.json +++ b/starters/apps/base-venom-mysql/package.json @@ -9,12 +9,13 @@ }, "keywords": [], "dependencies": { - "venom-bot": "^4.3.7", + "venom-bot": "4.3.7", "@bot-whatsapp/bot": "latest", "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", "@bot-whatsapp/provider": "latest", - "mysql2": "^2.3.3" + "mysql2": "^2.3.3", + "mime-types": "2.1.35" }, "author": "", "license": "ISC" diff --git a/starters/apps/base-wweb-memory/package.json b/starters/apps/base-wweb-memory/package.json index 0168dff..fbf9400 100644 --- a/starters/apps/base-wweb-memory/package.json +++ b/starters/apps/base-wweb-memory/package.json @@ -9,11 +9,11 @@ }, "keywords": [], "dependencies": { - "whatsapp-web.js": "^1.18.4", "@bot-whatsapp/bot": "latest", "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", - "@bot-whatsapp/provider": "latest" + "@bot-whatsapp/provider": "latest", + "whatsapp-web.js": "1.18.4" }, "author": "", "license": "ISC" diff --git a/starters/apps/base-wweb-mongo/package.json b/starters/apps/base-wweb-mongo/package.json index ea6aae1..c58767a 100644 --- a/starters/apps/base-wweb-mongo/package.json +++ b/starters/apps/base-wweb-mongo/package.json @@ -9,7 +9,7 @@ }, "keywords": [], "dependencies": { - "whatsapp-web.js": "^1.18.4", + "whatsapp-web.js": "1.18.4", "@bot-whatsapp/bot": "latest", "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", diff --git a/starters/apps/base-wweb-mysql/package.json b/starters/apps/base-wweb-mysql/package.json index b09f470..b1c44ff 100644 --- a/starters/apps/base-wweb-mysql/package.json +++ b/starters/apps/base-wweb-mysql/package.json @@ -9,7 +9,7 @@ }, "keywords": [], "dependencies": { - "whatsapp-web.js": "^1.18.4", + "whatsapp-web.js": "1.18.4", "@bot-whatsapp/bot": "latest", "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", From 637c13e81c43d6112ad4e57e9581aeb7137d631f Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sun, 1 Jan 2023 15:07:25 +0100 Subject: [PATCH 099/189] ci(provider): :sparkles: automatic updated versions --- .github/workflows/check-providers.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check-providers.yml b/.github/workflows/check-providers.yml index 76044ab..ce06404 100644 --- a/.github/workflows/check-providers.yml +++ b/.github/workflows/check-providers.yml @@ -47,4 +47,4 @@ jobs: - uses: stefanzweifel/git-auto-commit-action@v4 with: - commit_message: "ci(providers): updated versions providers" + commit_message: 'ci(providers): updated versions providers' From 8f2734bfaa6df29c6aeb3cec77650ec64edcd549 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sun, 1 Jan 2023 15:08:36 +0100 Subject: [PATCH 100/189] ci(provider): :sparkles: automatic updated versions --- .github/workflows/check-providers.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/check-providers.yml b/.github/workflows/check-providers.yml index ce06404..b94f5ee 100644 --- a/.github/workflows/check-providers.yml +++ b/.github/workflows/check-providers.yml @@ -12,8 +12,6 @@ jobs: check-npm: name: Install Dependencies runs-on: ubuntu-latest - needs: - - test-unit steps: - name: Checkout uses: actions/checkout@v3 From c309d4fbdacda86c2f87bfb0ae550fcf959a1bcc Mon Sep 17 00:00:00 2001 From: leifermendez Date: Sun, 1 Jan 2023 14:09:42 +0000 Subject: [PATCH 101/189] ci(providers): updated versions providers --- packages/docs/src/routes/docs/install/index.mdx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/docs/src/routes/docs/install/index.mdx b/packages/docs/src/routes/docs/install/index.mdx index cf23f33..c83e867 100644 --- a/packages/docs/src/routes/docs/install/index.mdx +++ b/packages/docs/src/routes/docs/install/index.mdx @@ -7,10 +7,13 @@ A continuación se describen los puntos técnicos que debes de tener en cuenta a - Node v16 o superior **[descargar node](https://nodejs.org/es/download/)** ## ¿Como instalar Node en Windows? + https://youtu.be/xRXHQlqA3Ak?t=376 ## ¿Como instalar Node en Ubuntu? + Te comparto un recurso de **[Digital Ocean](https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-20-04-es)** donde explica como instalar node en Ubuntu. + ## ¿Como saber que tengo el Node? Solo debes ejecutar el siguiente comando y esperar que la versión que te arroja sea superior a v16 From b5bfeab57cf17c3595c1125f9bb52fa37377cba6 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sun, 1 Jan 2023 15:11:48 +0100 Subject: [PATCH 102/189] ci(provider): :sparkles: automatic updated versions --- .github/workflows/check-providers.yml | 2 +- packages/provider/src/baileys/package.json | 2 +- starters/apps/base-baileys-memory/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/check-providers.yml b/.github/workflows/check-providers.yml index b94f5ee..412fdfc 100644 --- a/.github/workflows/check-providers.yml +++ b/.github/workflows/check-providers.yml @@ -1,4 +1,4 @@ -name: Build and Test +name: Rev Providers on: push: diff --git a/packages/provider/src/baileys/package.json b/packages/provider/src/baileys/package.json index 4326d59..40b3a30 100644 --- a/packages/provider/src/baileys/package.json +++ b/packages/provider/src/baileys/package.json @@ -1,6 +1,6 @@ { "dependencies": { - "@adiwajshing/baileys": "5.0.0", + "@adiwajshing/baileys": "4.4.4", "mime-types": "2.1.35", "wa-sticker-formatter": "4.3.2" } diff --git a/starters/apps/base-baileys-memory/package.json b/starters/apps/base-baileys-memory/package.json index e27fef1..e71c74c 100644 --- a/starters/apps/base-baileys-memory/package.json +++ b/starters/apps/base-baileys-memory/package.json @@ -13,7 +13,7 @@ "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", "@bot-whatsapp/provider": "latest", - "@adiwajshing/baileys": "5.0.0", + "@adiwajshing/baileys": "4.4.4", "mime-types": "2.1.35", "wa-sticker-formatter": "4.3.2" }, From 65afdeb69e9230ce9cbf1436e3454a137b96347b Mon Sep 17 00:00:00 2001 From: leifermendez Date: Sun, 1 Jan 2023 14:14:02 +0000 Subject: [PATCH 103/189] ci(providers): updated versions providers --- packages/provider/src/baileys/package.json | 2 +- starters/apps/base-baileys-memory/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/provider/src/baileys/package.json b/packages/provider/src/baileys/package.json index 40b3a30..4326d59 100644 --- a/packages/provider/src/baileys/package.json +++ b/packages/provider/src/baileys/package.json @@ -1,6 +1,6 @@ { "dependencies": { - "@adiwajshing/baileys": "4.4.4", + "@adiwajshing/baileys": "5.0.0", "mime-types": "2.1.35", "wa-sticker-formatter": "4.3.2" } diff --git a/starters/apps/base-baileys-memory/package.json b/starters/apps/base-baileys-memory/package.json index e71c74c..e27fef1 100644 --- a/starters/apps/base-baileys-memory/package.json +++ b/starters/apps/base-baileys-memory/package.json @@ -13,7 +13,7 @@ "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", "@bot-whatsapp/provider": "latest", - "@adiwajshing/baileys": "4.4.4", + "@adiwajshing/baileys": "5.0.0", "mime-types": "2.1.35", "wa-sticker-formatter": "4.3.2" }, From adda5d8c64ef5eb07f69de872d1f0f835531d5eb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 1 Jan 2023 14:15:39 +0000 Subject: [PATCH 104/189] docs(contributor): contrib-readme-action has updated readme --- README.md | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 81 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 100c869..b4a2271 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,87 @@ Entiende más a fondo sus funcionalidades explicadas en nuestra documentación. ## Comunidad - + + + + + + + + + + + + + + +
+ + leifermendez +
+ Leifer Mendez +
+
+ + aurik3 +
+ Null +
+
+ + vicente1992 +
+ Manuel Vicente Ortiz +
+
+ + leifermendezfroged +
+ Leifer Mendez +
+
+ + HKong31 +
+ HLKong +
+
+ + jzvi12 +
+ Zvi +
+
+ + Gonzalito87 +
+ Null +
+
+ + tonyvazgar +
+ Luis Antonio Vázquez García +
+
+ + ulisesvina +
+ Ulises Viña +
+
+ + rrruuuyyy +
+ Rodrigo Mendoza Cabrera +
+
+ + yond1994 +
+ Yonathan Suarez +
+
From b968d4cba20e4d9319c2ece0e571a8b06bf60264 Mon Sep 17 00:00:00 2001 From: leifermendez Date: Sun, 1 Jan 2023 14:16:13 +0000 Subject: [PATCH 105/189] ci(providers): updated versions providers From 815bb9df84ffa8f9778301391af751aa14fde48f Mon Sep 17 00:00:00 2001 From: leifermendez Date: Sun, 1 Jan 2023 14:19:22 +0000 Subject: [PATCH 106/189] ci(providers): updated versions providers From a3c2c85d907d35a56a87c346cbff112d077b3ca4 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sun, 1 Jan 2023 19:10:57 +0100 Subject: [PATCH 107/189] ci(providers): updated versions providers --- .github/workflows/check-provider-major.yml | 44 +++++++++++++++++ .github/workflows/check-providers.yml | 12 ++--- packages/provider/src/baileys/package.json | 2 +- scripts/checker.js | 48 +++++++++++++++---- .../apps/base-baileys-memory/package.json | 2 +- starters/apps/base-baileys-mongo/package.json | 2 +- starters/apps/base-baileys-mysql/package.json | 2 +- 7 files changed, 94 insertions(+), 18 deletions(-) create mode 100644 .github/workflows/check-provider-major.yml diff --git a/.github/workflows/check-provider-major.yml b/.github/workflows/check-provider-major.yml new file mode 100644 index 0000000..5f0227b --- /dev/null +++ b/.github/workflows/check-provider-major.yml @@ -0,0 +1,44 @@ +name: Rev Major Providers + +on: + schedule: + - cron: '0 9 * * *' + +jobs: + check-npm: + name: Install Dependencies + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 16.x + cache: 'yarn' + registry-url: https://registry.npmjs.org/ + + - run: corepack enable + + - name: Install NPM Dependencies + run: yarn install --immutable --network-timeout 300000 + + - name: Check Baileys + run: yarn node ./scripts/checker.js --name=baileys --stable=false + + - name: Check Venom + run: yarn node ./scripts/checker.js --name=venom --stable=false + + - name: Check web-whatsapp + run: yarn node ./scripts/checker.js --name=web-whatsapp --stable=false + + - name: Check Meta + run: yarn node ./scripts/checker.js --name=meta --stable=false + + - name: Check Twilio + run: yarn node ./scripts/checker.js --name=twilio --stable=false + + - uses: stefanzweifel/git-auto-commit-action@v4 + with: + commit_message: 'ci(providers): 🚩 Check BREAKING CHANGE' diff --git a/.github/workflows/check-providers.yml b/.github/workflows/check-providers.yml index 412fdfc..5bdae6c 100644 --- a/.github/workflows/check-providers.yml +++ b/.github/workflows/check-providers.yml @@ -29,20 +29,20 @@ jobs: run: yarn install --immutable --network-timeout 300000 - name: Check Baileys - run: yarn node ./scripts/checker.js baileys + run: yarn node ./scripts/checker.js --name=baileys --stable=true - name: Check Venom - run: yarn node ./scripts/checker.js venom + run: yarn node ./scripts/checker.js --name=venom --stable=true - name: Check web-whatsapp - run: yarn node ./scripts/checker.js web-whatsapp + run: yarn node ./scripts/checker.js --name=web-whatsapp --stable=true - name: Check Meta - run: yarn node ./scripts/checker.js meta + run: yarn node ./scripts/checker.js --name=meta --stable=true - name: Check Twilio - run: yarn node ./scripts/checker.js twilio + run: yarn node ./scripts/checker.js --name=twilio --stable=true - uses: stefanzweifel/git-auto-commit-action@v4 with: - commit_message: 'ci(providers): updated versions providers' + commit_message: 'ci(providers): 👍 updated versions stable providers' diff --git a/packages/provider/src/baileys/package.json b/packages/provider/src/baileys/package.json index 4326d59..da529d3 100644 --- a/packages/provider/src/baileys/package.json +++ b/packages/provider/src/baileys/package.json @@ -1,6 +1,6 @@ { "dependencies": { - "@adiwajshing/baileys": "5.0.0", + "@adiwajshing/baileys": "4.4.0", "mime-types": "2.1.35", "wa-sticker-formatter": "4.3.2" } diff --git a/scripts/checker.js b/scripts/checker.js index 26f3e41..67952c8 100644 --- a/scripts/checker.js +++ b/scripts/checker.js @@ -11,7 +11,7 @@ const OS_ENVIROMENT_WIN = process.platform.includes('win32') const PATH_PACKAGES = join(__dirname, '..', `packages`) const PATH_STARTERS = join(__dirname, '..', `starters`, `apps`) const NPM_COMMAND = OS_ENVIROMENT_WIN ? 'npm.cmd' : 'npm' -const [PKG_NAME] = process.argv.slice(2) || [null] +const [PKG_NAME, PKG_STABLE] = process.argv.slice(2) || [null, null] /** * Revisar ultima version de una paquetes @@ -29,12 +29,36 @@ const checkPkg = async (pkgName = '') => { return stdout.trim().replace('\n', '') } +/** + * Revisar ultima version de una paquetes + * @param {*} pkgName + */ +const checkPkgStable = async (pkgName = '', version = '') => { + const { stdout } = await cmd( + NPM_COMMAND, + [ + 'show', + `${pkgName}@${version.split('.').shift()}.*`, + 'version', + '--json', + ], + { + stdio: 'inherit', + } + ) + + const listVersions = JSON.parse(stdout).reverse() + console.log(`[${pkgName}]: `, listVersions) + return listVersions.at(0) +} + /** * Revisar todas las dependencias del provider * @param {*} provider + * @param {*} stable * @returns */ -const checkEveryProvider = async (provider = '') => { +const checkEveryProvider = async (provider = '', stable = true) => { const pkgDependencies = readFileSync( join(PATH_PACKAGES, 'provider', 'src', provider, 'package.json') ) @@ -42,9 +66,12 @@ const checkEveryProvider = async (provider = '') => { const { dependencies } = JSON.parse(pkgDependencies) const devParse = Object.entries(dependencies) const newDevParse = {} - for (const [pkgName] of devParse) { - const lastVersion = await checkPkg(pkgName) - newDevParse[pkgName] = lastVersion + for (const [pkgName, pkgVersion] of devParse) { + if (!stable) newDevParse[pkgName] = await checkPkg(pkgName) + if (stable) + newDevParse[pkgName] = await checkPkgStable(pkgName, pkgVersion) + + console.log(newDevParse) } return newDevParse } catch (e) { @@ -122,9 +149,14 @@ const updateStarters = async (provider = '', updateDev = {}) => { const main = async () => { if (PKG_NAME) { - const list = await checkEveryProvider(PKG_NAME) - await updateDependencies(PKG_NAME, list) - await updateStarters(PKG_NAME, list) + const providerName = PKG_NAME ? PKG_NAME.split('=').at(1) : null + const providerStable = PKG_STABLE ? PKG_STABLE.split('=').at(1) : null + const list = await checkEveryProvider( + providerName, + providerStable === 'true' + ) + await updateDependencies(providerName, list) + await updateStarters(providerName, list) } } diff --git a/starters/apps/base-baileys-memory/package.json b/starters/apps/base-baileys-memory/package.json index e27fef1..481e00a 100644 --- a/starters/apps/base-baileys-memory/package.json +++ b/starters/apps/base-baileys-memory/package.json @@ -13,7 +13,7 @@ "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", "@bot-whatsapp/provider": "latest", - "@adiwajshing/baileys": "5.0.0", + "@adiwajshing/baileys": "4.4.0", "mime-types": "2.1.35", "wa-sticker-formatter": "4.3.2" }, diff --git a/starters/apps/base-baileys-mongo/package.json b/starters/apps/base-baileys-mongo/package.json index 2b4e0f7..d828a88 100644 --- a/starters/apps/base-baileys-mongo/package.json +++ b/starters/apps/base-baileys-mongo/package.json @@ -13,7 +13,7 @@ "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", "@bot-whatsapp/provider": "latest", - "@adiwajshing/baileys": "5.0.0", + "@adiwajshing/baileys": "4.4.0", "mime-types": "2.1.35", "mongodb": "^4.12.1", "wa-sticker-formatter": "4.3.2" diff --git a/starters/apps/base-baileys-mysql/package.json b/starters/apps/base-baileys-mysql/package.json index 2d1684f..4a7b07a 100644 --- a/starters/apps/base-baileys-mysql/package.json +++ b/starters/apps/base-baileys-mysql/package.json @@ -13,7 +13,7 @@ "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", "@bot-whatsapp/provider": "latest", - "@adiwajshing/baileys": "5.0.0", + "@adiwajshing/baileys": "4.4.0", "mime-types": "2.1.35", "mysql2": "^2.3.3", "wa-sticker-formatter": "4.3.2" From 1415a3c915145d2f775ce71225e4a6c1dec1d983 Mon Sep 17 00:00:00 2001 From: leifermendez Date: Sun, 1 Jan 2023 18:13:51 +0000 Subject: [PATCH 108/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From 04b51046aaf391a90ad847ecab5911ede55f9485 Mon Sep 17 00:00:00 2001 From: leifermendez Date: Sun, 1 Jan 2023 18:15:49 +0000 Subject: [PATCH 109/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From 55bef7c4e78ffe7914aa7778e6b2cdde44c6d796 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sun, 1 Jan 2023 20:07:34 +0100 Subject: [PATCH 110/189] refactor(provider): :zap: change PORT options --- packages/provider/src/meta/index.js | 5 +++-- packages/provider/src/twilio/index.js | 7 +++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/provider/src/meta/index.js b/packages/provider/src/meta/index.js index 3e2ca14..b3a106b 100644 --- a/packages/provider/src/meta/index.js +++ b/packages/provider/src/meta/index.js @@ -12,16 +12,17 @@ const URL = `https://graph.facebook.com/v15.0` * Necesitas las siguientes tokens y valores * { jwtToken, numberId, vendorNumber, verifyToken } */ +const PORT = process.env.PORT || 3000 class MetaProvider extends ProviderClass { metHook jwtToken numberId - constructor({ jwtToken, numberId, verifyToken }, _port = 3000) { + constructor({ jwtToken, numberId, verifyToken, port = PORT }) { super() this.jwtToken = jwtToken this.numberId = numberId - this.metHook = new MetaWebHookServer(verifyToken, _port) + this.metHook = new MetaWebHookServer(verifyToken, port) this.metHook.start() const listEvents = this.busEvents() diff --git a/packages/provider/src/twilio/index.js b/packages/provider/src/twilio/index.js index 7c8b2aa..7c25bb9 100644 --- a/packages/provider/src/twilio/index.js +++ b/packages/provider/src/twilio/index.js @@ -13,14 +13,17 @@ const { parseNumber } = require('./utils') * Necesitas las siguientes tokens y valores * { accountSid, authToken, vendorNumber } */ + +const PORT = process.env.PORT || 3000 + class TwilioProvider extends ProviderClass { twilioHook vendor vendorNumber - constructor({ accountSid, authToken, vendorNumber }, _port = 3000) { + constructor({ accountSid, authToken, vendorNumber, port = PORT }) { super() this.vendor = new twilio(accountSid, authToken) - this.twilioHook = new TwilioWebHookServer(_port) + this.twilioHook = new TwilioWebHookServer(port) this.vendorNumber = parseNumber(vendorNumber) this.twilioHook.start() From 6a26aed929091976c836b315ae0937261f87943b Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Sun, 1 Jan 2023 19:09:24 +0000 Subject: [PATCH 111/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From 78fb70bc1a4f2d68bd6095d9805008519343090c Mon Sep 17 00:00:00 2001 From: leifermendez Date: Sun, 1 Jan 2023 19:09:58 +0000 Subject: [PATCH 112/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From f5eee8b6f54b14486eef6f04cc80e2c75dcfcb29 Mon Sep 17 00:00:00 2001 From: leifermendez Date: Sun, 1 Jan 2023 19:10:20 +0000 Subject: [PATCH 113/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From b5d8a6d28aa662edc00b5a19247562c3b1a860ae Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Sun, 1 Jan 2023 19:25:58 +0000 Subject: [PATCH 114/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From 32db429f2946f344d949cb169a9595d657c06279 Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Sun, 1 Jan 2023 14:18:24 -0600 Subject: [PATCH 115/189] fix: correccion en app.js para remover addChild en starters Correccion en Starters, se quito de app.js la funcion addChild --- starters/apps/base-baileys-memory/app.js | 6 +- starters/apps/base-baileys-mongo/app.js | 6 +- starters/apps/base-baileys-mysql/app.js | 6 +- starters/apps/base-meta-json/app.js | 14 +- starters/apps/base-meta-memory/app.js | 14 +- starters/apps/base-meta-mongo/app.js | 21 +-- starters/apps/base-meta-mysql/app.js | 14 +- starters/apps/base-twilio-memory/app.js | 14 +- starters/apps/base-twilio-mongo/app.js | 14 +- starters/apps/base-twilio-mysql/app.js | 14 +- starters/apps/base-venom-memory/app.js | 14 +- starters/apps/base-venom-mongo/app.js | 14 +- starters/apps/base-venom-mysql/app.js | 14 +- starters/apps/base-wweb-memory/app.js | 14 +- starters/apps/base-wweb-mongo/app.js | 14 +- starters/apps/base-wweb-mysql/app.js | 14 +- yarn.lock | 170 +++++++++++------------ 17 files changed, 185 insertions(+), 192 deletions(-) diff --git a/starters/apps/base-baileys-memory/app.js b/starters/apps/base-baileys-memory/app.js index 624f70f..14cacdd 100644 --- a/starters/apps/base-baileys-memory/app.js +++ b/starters/apps/base-baileys-memory/app.js @@ -40,7 +40,7 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowZapatos2)] + [flowZapatos2] ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) @@ -54,7 +54,7 @@ const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos2)] + [flowBolsos2] ) /** @@ -72,7 +72,7 @@ const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos), ...addChild(flowZapatos)] + [flowBolsos, flowZapatos] ) const main = async () => { diff --git a/starters/apps/base-baileys-mongo/app.js b/starters/apps/base-baileys-mongo/app.js index f71a425..c058c62 100644 --- a/starters/apps/base-baileys-mongo/app.js +++ b/starters/apps/base-baileys-mongo/app.js @@ -47,7 +47,7 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowZapatos2)] + [flowZapatos2] ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) @@ -61,7 +61,7 @@ const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos2)] + [flowBolsos2] ) /** @@ -79,7 +79,7 @@ const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos), ...addChild(flowZapatos)] + [flowBolsos, flowZapatos] ) const main = async () => { diff --git a/starters/apps/base-baileys-mysql/app.js b/starters/apps/base-baileys-mysql/app.js index 88e1e11..6c69699 100644 --- a/starters/apps/base-baileys-mysql/app.js +++ b/starters/apps/base-baileys-mysql/app.js @@ -48,7 +48,7 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowZapatos2)] + [flowZapatos2] ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) @@ -62,7 +62,7 @@ const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos2)] + [flowBolsos2] ) /** @@ -80,7 +80,7 @@ const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos), ...addChild(flowZapatos)] + [flowBolsos, flowZapatos] ) const main = async () => { diff --git a/starters/apps/base-meta-json/app.js b/starters/apps/base-meta-json/app.js index 506ef6f..d7a958e 100644 --- a/starters/apps/base-meta-json/app.js +++ b/starters/apps/base-meta-json/app.js @@ -22,15 +22,15 @@ const JsonFileAdapter = require('@bot-whatsapp/database/json') */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('🤯 *MUCHOS* bolsos ...') + .addAnswer('� *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') + .addAnswer('� repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('🤯 Veo que elegiste zapatos') + .addAnswer('� Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -40,11 +40,11 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowZapatos2)] + [flowZapatos2] ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('🙌 Veo que elegiste bolsos') + .addAnswer('� Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], @@ -54,7 +54,7 @@ const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos2)] + [flowBolsos2] ) /** @@ -72,7 +72,7 @@ const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos), ...addChild(flowZapatos)] + [flowBolsos, flowZapatos] ) const main = async () => { diff --git a/starters/apps/base-meta-memory/app.js b/starters/apps/base-meta-memory/app.js index c141fad..e7a97c0 100644 --- a/starters/apps/base-meta-memory/app.js +++ b/starters/apps/base-meta-memory/app.js @@ -22,15 +22,15 @@ const MockAdapter = require('@bot-whatsapp/database/mock') */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('🤯 *MUCHOS* bolsos ...') + .addAnswer('� *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') + .addAnswer('� repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('🤯 Veo que elegiste zapatos') + .addAnswer('� Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -40,11 +40,11 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowZapatos2)] + [flowZapatos2] ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('🙌 Veo que elegiste bolsos') + .addAnswer('� Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], @@ -54,7 +54,7 @@ const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos2)] + [flowBolsos2] ) /** @@ -72,7 +72,7 @@ const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos), ...addChild(flowZapatos)] + [flowBolsos, flowZapatos] ) const main = async () => { diff --git a/starters/apps/base-meta-mongo/app.js b/starters/apps/base-meta-mongo/app.js index 8cf05d6..fbc9e8b 100644 --- a/starters/apps/base-meta-mongo/app.js +++ b/starters/apps/base-meta-mongo/app.js @@ -9,13 +9,6 @@ const { const MetaProvider = require('@bot-whatsapp/provider/meta') 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' - /** * Aqui declaramos los flujos hijos, los flujos se declaran de atras para adelante, es decir que si tienes un flujo de este tipo: * @@ -29,15 +22,15 @@ const MONGO_DB_NAME = 'db_bot' */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('🤯 *MUCHOS* bolsos ...') + .addAnswer('� *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') + .addAnswer('� repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('🤯 Veo que elegiste zapatos') + .addAnswer('� Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -47,11 +40,11 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowZapatos2)] + [flowZapatos2] ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('🙌 Veo que elegiste bolsos') + .addAnswer('� Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], @@ -61,7 +54,7 @@ const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos2)] + [flowBolsos2] ) /** @@ -79,7 +72,7 @@ const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos), ...addChild(flowZapatos)] + [flowBolsos, flowZapatos] ) const main = async () => { diff --git a/starters/apps/base-meta-mysql/app.js b/starters/apps/base-meta-mysql/app.js index 796f9ba..e2e4b3e 100644 --- a/starters/apps/base-meta-mysql/app.js +++ b/starters/apps/base-meta-mysql/app.js @@ -30,15 +30,15 @@ const MYSQL_DB_NAME = 'bot' */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('🤯 *MUCHOS* bolsos ...') + .addAnswer('� *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') + .addAnswer('� repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('🤯 Veo que elegiste zapatos') + .addAnswer('� Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -48,11 +48,11 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowZapatos2)] + [flowZapatos2] ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('🙌 Veo que elegiste bolsos') + .addAnswer('� Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], @@ -62,7 +62,7 @@ const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos2)] + [flowBolsos2] ) /** @@ -80,7 +80,7 @@ const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos), ...addChild(flowZapatos)] + [flowBolsos, flowZapatos] ) const main = async () => { diff --git a/starters/apps/base-twilio-memory/app.js b/starters/apps/base-twilio-memory/app.js index ab26888..a5e604d 100644 --- a/starters/apps/base-twilio-memory/app.js +++ b/starters/apps/base-twilio-memory/app.js @@ -22,15 +22,15 @@ const MockAdapter = require('@bot-whatsapp/database/mock') */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('🤯 *MUCHOS* bolsos ...') + .addAnswer('� *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') + .addAnswer('� repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('🤯 Veo que elegiste zapatos') + .addAnswer('� Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -40,11 +40,11 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowZapatos2)] + [flowZapatos2] ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('🙌 Veo que elegiste bolsos') + .addAnswer('� Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], @@ -54,7 +54,7 @@ const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos2)] + [flowBolsos2] ) /** @@ -72,7 +72,7 @@ const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos), ...addChild(flowZapatos)] + [flowBolsos, flowZapatos] ) const main = async () => { diff --git a/starters/apps/base-twilio-mongo/app.js b/starters/apps/base-twilio-mongo/app.js index f1e735c..6828d9a 100644 --- a/starters/apps/base-twilio-mongo/app.js +++ b/starters/apps/base-twilio-mongo/app.js @@ -29,15 +29,15 @@ const MONGO_DB_NAME = 'db_bot' */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('🤯 *MUCHOS* bolsos ...') + .addAnswer('� *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') + .addAnswer('� repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('🤯 Veo que elegiste zapatos') + .addAnswer('� Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -47,11 +47,11 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowZapatos2)] + [flowZapatos2] ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('🙌 Veo que elegiste bolsos') + .addAnswer('� Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], @@ -61,7 +61,7 @@ const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos2)] + [flowBolsos2] ) /** @@ -79,7 +79,7 @@ const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos), ...addChild(flowZapatos)] + [flowBolsos, flowZapatos] ) const main = async () => { diff --git a/starters/apps/base-twilio-mysql/app.js b/starters/apps/base-twilio-mysql/app.js index 724b819..0b5154c 100644 --- a/starters/apps/base-twilio-mysql/app.js +++ b/starters/apps/base-twilio-mysql/app.js @@ -31,15 +31,15 @@ const MYSQL_DB_NAME = 'bot' */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('🤯 *MUCHOS* bolsos ...') + .addAnswer('� *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') + .addAnswer('� repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('🤯 Veo que elegiste zapatos') + .addAnswer('� Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -49,11 +49,11 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowZapatos2)] + [flowZapatos2] ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('🙌 Veo que elegiste bolsos') + .addAnswer('� Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], @@ -63,7 +63,7 @@ const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos2)] + [flowBolsos2] ) /** @@ -81,7 +81,7 @@ const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos), ...addChild(flowZapatos)] + [flowBolsos, flowZapatos] ) const main = async () => { diff --git a/starters/apps/base-venom-memory/app.js b/starters/apps/base-venom-memory/app.js index b785def..958a5b5 100644 --- a/starters/apps/base-venom-memory/app.js +++ b/starters/apps/base-venom-memory/app.js @@ -22,15 +22,15 @@ const MockAdapter = require('@bot-whatsapp/database/mock') */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('🤯 *MUCHOS* bolsos ...') + .addAnswer('� *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') + .addAnswer('� repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('🤯 Veo que elegiste zapatos') + .addAnswer('� Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -40,11 +40,11 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowZapatos2)] + [flowZapatos2] ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('🙌 Veo que elegiste bolsos') + .addAnswer('� Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], @@ -54,7 +54,7 @@ const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos2)] + [flowBolsos2] ) /** @@ -72,7 +72,7 @@ const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos), ...addChild(flowZapatos)] + [flowBolsos, flowZapatos] ) const main = async () => { diff --git a/starters/apps/base-venom-mongo/app.js b/starters/apps/base-venom-mongo/app.js index d1ec8fc..8c14582 100644 --- a/starters/apps/base-venom-mongo/app.js +++ b/starters/apps/base-venom-mongo/app.js @@ -29,15 +29,15 @@ const MONGO_DB_NAME = 'db_bot' */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('🤯 *MUCHOS* bolsos ...') + .addAnswer('� *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') + .addAnswer('� repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('🤯 Veo que elegiste zapatos') + .addAnswer('� Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -47,11 +47,11 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowZapatos2)] + [flowZapatos2] ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('🙌 Veo que elegiste bolsos') + .addAnswer('� Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], @@ -61,7 +61,7 @@ const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos2)] + [flowBolsos2] ) /** @@ -79,7 +79,7 @@ const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos), ...addChild(flowZapatos)] + [flowBolsos, flowZapatos] ) const main = async () => { diff --git a/starters/apps/base-venom-mysql/app.js b/starters/apps/base-venom-mysql/app.js index 304e6fa..19067ca 100644 --- a/starters/apps/base-venom-mysql/app.js +++ b/starters/apps/base-venom-mysql/app.js @@ -31,15 +31,15 @@ const MYSQL_DB_NAME = 'bot' */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('🤯 *MUCHOS* bolsos ...') + .addAnswer('� *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') + .addAnswer('� repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('🤯 Veo que elegiste zapatos') + .addAnswer('� Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -49,11 +49,11 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowZapatos2)] + [flowZapatos2] ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('🙌 Veo que elegiste bolsos') + .addAnswer('� Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], @@ -63,7 +63,7 @@ const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos2)] + [flowBolsos2] ) /** @@ -81,7 +81,7 @@ const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos), ...addChild(flowZapatos)] + [flowBolsos, flowZapatos] ) const main = async () => { diff --git a/starters/apps/base-wweb-memory/app.js b/starters/apps/base-wweb-memory/app.js index f968ba9..c69d632 100644 --- a/starters/apps/base-wweb-memory/app.js +++ b/starters/apps/base-wweb-memory/app.js @@ -22,15 +22,15 @@ const MockAdapter = require('@bot-whatsapp/database/mock') */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('🤯 *MUCHOS* bolsos ...') + .addAnswer('� *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') + .addAnswer('� repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('🤯 Veo que elegiste zapatos') + .addAnswer('� Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -40,11 +40,11 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowZapatos2)] + [flowZapatos2] ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('🙌 Veo que elegiste bolsos') + .addAnswer('� Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], @@ -54,7 +54,7 @@ const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos2)] + [flowBolsos2] ) /** @@ -72,7 +72,7 @@ const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos), ...addChild(flowZapatos)] + [flowBolsos, flowZapatos] ) const main = async () => { diff --git a/starters/apps/base-wweb-mongo/app.js b/starters/apps/base-wweb-mongo/app.js index 60f20e7..62df6ec 100644 --- a/starters/apps/base-wweb-mongo/app.js +++ b/starters/apps/base-wweb-mongo/app.js @@ -29,15 +29,15 @@ const MONGO_DB_NAME = 'db_bot' */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('🤯 *MUCHOS* bolsos ...') + .addAnswer('� *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') + .addAnswer('� repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('🤯 Veo que elegiste zapatos') + .addAnswer('� Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -47,11 +47,11 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowZapatos2)] + [flowZapatos2] ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('🙌 Veo que elegiste bolsos') + .addAnswer('� Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], @@ -61,7 +61,7 @@ const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos2)] + [flowBolsos2] ) /** @@ -79,7 +79,7 @@ const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos), ...addChild(flowZapatos)] + [flowBolsos, flowZapatos] ) const main = async () => { diff --git a/starters/apps/base-wweb-mysql/app.js b/starters/apps/base-wweb-mysql/app.js index d8d6f80..e6edeed 100644 --- a/starters/apps/base-wweb-mysql/app.js +++ b/starters/apps/base-wweb-mysql/app.js @@ -31,15 +31,15 @@ const MYSQL_DB_NAME = 'bot' */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('🤯 *MUCHOS* bolsos ...') + .addAnswer('� *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') + .addAnswer('� repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('🤯 Veo que elegiste zapatos') + .addAnswer('� Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -49,11 +49,11 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowZapatos2)] + [flowZapatos2] ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('🙌 Veo que elegiste bolsos') + .addAnswer('� Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], @@ -63,7 +63,7 @@ const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos2)] + [flowBolsos2] ) /** @@ -81,7 +81,7 @@ const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) }, - [...addChild(flowBolsos), ...addChild(flowZapatos)] + [flowBolsos, flowZapatos] ) const main = async () => { diff --git a/yarn.lock b/yarn.lock index d48f3df..710d087 100644 --- a/yarn.lock +++ b/yarn.lock @@ -82,15 +82,15 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/client-cognito-identity@npm:3.238.0": - version: 3.238.0 - resolution: "@aws-sdk/client-cognito-identity@npm:3.238.0" +"@aws-sdk/client-cognito-identity@npm:3.241.0": + version: 3.241.0 + resolution: "@aws-sdk/client-cognito-identity@npm:3.241.0" dependencies: "@aws-crypto/sha256-browser": 2.0.0 "@aws-crypto/sha256-js": 2.0.0 - "@aws-sdk/client-sts": 3.238.0 + "@aws-sdk/client-sts": 3.241.0 "@aws-sdk/config-resolver": 3.234.0 - "@aws-sdk/credential-provider-node": 3.238.0 + "@aws-sdk/credential-provider-node": 3.241.0 "@aws-sdk/fetch-http-handler": 3.226.0 "@aws-sdk/hash-node": 3.226.0 "@aws-sdk/invalid-dependency": 3.226.0 @@ -115,20 +115,20 @@ __metadata: "@aws-sdk/util-body-length-node": 3.208.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-endpoints": 3.241.0 "@aws-sdk/util-retry": 3.229.0 "@aws-sdk/util-user-agent-browser": 3.226.0 "@aws-sdk/util-user-agent-node": 3.226.0 "@aws-sdk/util-utf8-browser": 3.188.0 "@aws-sdk/util-utf8-node": 3.208.0 tslib: ^2.3.1 - checksum: 7068b6d82d6053ac7f9baefad610b7b9972763bed4bb5f61ec9d5504501fb5d54e573efe5735f4746393f2098d1a20b9991b0f398081a19f3671fbe7be398c84 + checksum: 6523a2d30ab0a234311eee5f16b20a21e0def89da53a53713caf66f1b502b56b9e40c8f5cd4180ffe4049756e7b3d939fbc35d34da0fbe6ef954a190ce3a579a languageName: node linkType: hard -"@aws-sdk/client-sso-oidc@npm:3.238.0": - version: 3.238.0 - resolution: "@aws-sdk/client-sso-oidc@npm:3.238.0" +"@aws-sdk/client-sso-oidc@npm:3.241.0": + version: 3.241.0 + resolution: "@aws-sdk/client-sso-oidc@npm:3.241.0" dependencies: "@aws-crypto/sha256-browser": 2.0.0 "@aws-crypto/sha256-js": 2.0.0 @@ -156,20 +156,20 @@ __metadata: "@aws-sdk/util-body-length-node": 3.208.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-endpoints": 3.241.0 "@aws-sdk/util-retry": 3.229.0 "@aws-sdk/util-user-agent-browser": 3.226.0 "@aws-sdk/util-user-agent-node": 3.226.0 "@aws-sdk/util-utf8-browser": 3.188.0 "@aws-sdk/util-utf8-node": 3.208.0 tslib: ^2.3.1 - checksum: b2f0df1168d2e20ccf1d598b76be4141b6a27068ad9dea74570aa3ab8c94c103537463c58d8296e76d2457f5afb5253cbf2b1f665411981f5939c85667dd1aff + checksum: e8a8a99f2234dd011f662a42c9e137bd8aa959db85644487560681aab102ee16b356c4ca8838529086b88e63384c0f7e105b3a1bcf05a7162e8cd1484e60b259 languageName: node linkType: hard -"@aws-sdk/client-sso@npm:3.238.0": - version: 3.238.0 - resolution: "@aws-sdk/client-sso@npm:3.238.0" +"@aws-sdk/client-sso@npm:3.241.0": + version: 3.241.0 + resolution: "@aws-sdk/client-sso@npm:3.241.0" dependencies: "@aws-crypto/sha256-browser": 2.0.0 "@aws-crypto/sha256-js": 2.0.0 @@ -197,25 +197,25 @@ __metadata: "@aws-sdk/util-body-length-node": 3.208.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-endpoints": 3.241.0 "@aws-sdk/util-retry": 3.229.0 "@aws-sdk/util-user-agent-browser": 3.226.0 "@aws-sdk/util-user-agent-node": 3.226.0 "@aws-sdk/util-utf8-browser": 3.188.0 "@aws-sdk/util-utf8-node": 3.208.0 tslib: ^2.3.1 - checksum: dbd993e569a3858fd80222cd61e5df5813b3ef6579cfd393925679f71af57f3d9277f470d868f93dbda2f797a8e0be7da9f0678ee80a97103ea2612e2e1ef793 + checksum: 3c9e006aa7993a81b40c05e26ce57654db50bcbf4c10fe2a3e6f2a6ac806f631ba1784db5b1d33d4060d12a76331a98932bc1fab7ef1fe21578a56206015adab languageName: node linkType: hard -"@aws-sdk/client-sts@npm:3.238.0": - version: 3.238.0 - resolution: "@aws-sdk/client-sts@npm:3.238.0" +"@aws-sdk/client-sts@npm:3.241.0": + version: 3.241.0 + resolution: "@aws-sdk/client-sts@npm:3.241.0" dependencies: "@aws-crypto/sha256-browser": 2.0.0 "@aws-crypto/sha256-js": 2.0.0 "@aws-sdk/config-resolver": 3.234.0 - "@aws-sdk/credential-provider-node": 3.238.0 + "@aws-sdk/credential-provider-node": 3.241.0 "@aws-sdk/fetch-http-handler": 3.226.0 "@aws-sdk/hash-node": 3.226.0 "@aws-sdk/invalid-dependency": 3.226.0 @@ -241,7 +241,7 @@ __metadata: "@aws-sdk/util-body-length-node": 3.208.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-endpoints": 3.241.0 "@aws-sdk/util-retry": 3.229.0 "@aws-sdk/util-user-agent-browser": 3.226.0 "@aws-sdk/util-user-agent-node": 3.226.0 @@ -249,7 +249,7 @@ __metadata: "@aws-sdk/util-utf8-node": 3.208.0 fast-xml-parser: 4.0.11 tslib: ^2.3.1 - checksum: 323677f17a1cfec54022a7af941db636ed9201d0a188b10e367663c422d931508728705633d01943d8bd0439edc20b39b619a8dd87d2ee55f3ca2df923e4c0dc + checksum: 35dc5dd7950aa2f8ef2efe8674b25dc48a5108e1cb6299d66dc79a4ecb2d5905224ca7f26908a82650060cc3a11a7198c22e49879dfd3f1104c04d6b43f5ab1d languageName: node linkType: hard @@ -266,15 +266,15 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/credential-provider-cognito-identity@npm:3.238.0": - version: 3.238.0 - resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.238.0" +"@aws-sdk/credential-provider-cognito-identity@npm:3.241.0": + version: 3.241.0 + resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.241.0" dependencies: - "@aws-sdk/client-cognito-identity": 3.238.0 + "@aws-sdk/client-cognito-identity": 3.241.0 "@aws-sdk/property-provider": 3.226.0 "@aws-sdk/types": 3.226.0 tslib: ^2.3.1 - checksum: f885ba267deacec45e1fb59e46ec225b7dcd53c863a0236272948820afe15ed036ea3b039bdfbf6ae7d05054a50582366fa0b258eb8eed1364fca6fad206a63e + checksum: bd4c2600ddc20b69050e6f79ea95b255bced0c614e503945a0fa63adf5b0dfc1f4c43286d8b101e587f609317e409a041fabb4a277831e753852bd8ee8195b64 languageName: node linkType: hard @@ -302,38 +302,38 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/credential-provider-ini@npm:3.238.0": - version: 3.238.0 - resolution: "@aws-sdk/credential-provider-ini@npm:3.238.0" +"@aws-sdk/credential-provider-ini@npm:3.241.0": + version: 3.241.0 + resolution: "@aws-sdk/credential-provider-ini@npm:3.241.0" dependencies: "@aws-sdk/credential-provider-env": 3.226.0 "@aws-sdk/credential-provider-imds": 3.226.0 "@aws-sdk/credential-provider-process": 3.226.0 - "@aws-sdk/credential-provider-sso": 3.238.0 + "@aws-sdk/credential-provider-sso": 3.241.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: bf792096935a915ff1bf26c53408d7265d2dd5cb2093d5b51862cf21a1418801454362842cd7c59a8738af1bb12713afb354e55d3057e92f30f2caa327ff3eb9 + checksum: 532af26415644ebcef2c0714e6c894bb6e7d571abb4330a35e70b4d19c5f90ffd61f352f6d0e9cd58cef97b32946edf821d9fb82d0d6d0836f2dfbc5f280b56a languageName: node linkType: hard -"@aws-sdk/credential-provider-node@npm:3.238.0": - version: 3.238.0 - resolution: "@aws-sdk/credential-provider-node@npm:3.238.0" +"@aws-sdk/credential-provider-node@npm:3.241.0": + version: 3.241.0 + resolution: "@aws-sdk/credential-provider-node@npm:3.241.0" dependencies: "@aws-sdk/credential-provider-env": 3.226.0 "@aws-sdk/credential-provider-imds": 3.226.0 - "@aws-sdk/credential-provider-ini": 3.238.0 + "@aws-sdk/credential-provider-ini": 3.241.0 "@aws-sdk/credential-provider-process": 3.226.0 - "@aws-sdk/credential-provider-sso": 3.238.0 + "@aws-sdk/credential-provider-sso": 3.241.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: 7d9e56dd53db5ef1d5600502a407a81500b0dde6c2c6164c88f88dffb20a24b9e256ebd329b2afb3992fa16514173bb8509ab410d651b0e6fb6f4cb713e22d11 + checksum: f485933f514ab2a14204a231a4bde77e22034329e90b4d797f18625bca8836462d19e7d88365380d57c8c80a3510bc135671da25457481a6f7cecba1ad4764e3 languageName: node linkType: hard @@ -349,17 +349,17 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/credential-provider-sso@npm:3.238.0": - version: 3.238.0 - resolution: "@aws-sdk/credential-provider-sso@npm:3.238.0" +"@aws-sdk/credential-provider-sso@npm:3.241.0": + version: 3.241.0 + resolution: "@aws-sdk/credential-provider-sso@npm:3.241.0" dependencies: - "@aws-sdk/client-sso": 3.238.0 + "@aws-sdk/client-sso": 3.241.0 "@aws-sdk/property-provider": 3.226.0 "@aws-sdk/shared-ini-file-loader": 3.226.0 - "@aws-sdk/token-providers": 3.238.0 + "@aws-sdk/token-providers": 3.241.0 "@aws-sdk/types": 3.226.0 tslib: ^2.3.1 - checksum: 4ac0451f85eb34eba78f4462daace270f0ff3d0d536a5093621923fc4391e9196cb500ffa382b5e4730f9562f005fb01d3cc2364dcfc9e04ce5e9715a151ce96 + checksum: 7e7e45024788e27c09f4885a402b7ae4c2e72a01accb6117f44474a9d89bd00c75df42f6060252747ba9415a77046b47c5c38015564bea8f1240bbaf8bb959df languageName: node linkType: hard @@ -375,25 +375,25 @@ __metadata: linkType: hard "@aws-sdk/credential-providers@npm:^3.186.0": - version: 3.238.0 - resolution: "@aws-sdk/credential-providers@npm:3.238.0" + version: 3.241.0 + resolution: "@aws-sdk/credential-providers@npm:3.241.0" dependencies: - "@aws-sdk/client-cognito-identity": 3.238.0 - "@aws-sdk/client-sso": 3.238.0 - "@aws-sdk/client-sts": 3.238.0 - "@aws-sdk/credential-provider-cognito-identity": 3.238.0 + "@aws-sdk/client-cognito-identity": 3.241.0 + "@aws-sdk/client-sso": 3.241.0 + "@aws-sdk/client-sts": 3.241.0 + "@aws-sdk/credential-provider-cognito-identity": 3.241.0 "@aws-sdk/credential-provider-env": 3.226.0 "@aws-sdk/credential-provider-imds": 3.226.0 - "@aws-sdk/credential-provider-ini": 3.238.0 - "@aws-sdk/credential-provider-node": 3.238.0 + "@aws-sdk/credential-provider-ini": 3.241.0 + "@aws-sdk/credential-provider-node": 3.241.0 "@aws-sdk/credential-provider-process": 3.226.0 - "@aws-sdk/credential-provider-sso": 3.238.0 + "@aws-sdk/credential-provider-sso": 3.241.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: f5767eafd9ce88a6085f05847d6b99a49d56974d903050957bffd5fb0afcfa39f82fe3d507cf482d23b30f1976a0d8430793e6cd0d8f843b7571f300ce5a12ca + checksum: a3425f193c651066138682efcecf55bc6bef74c18bcac0a76e1ce177615a0936b76052263695454f4a04b8207e184a23c5cf407ab38161ccf96d560168138557 languageName: node linkType: hard @@ -680,16 +680,16 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/token-providers@npm:3.238.0": - version: 3.238.0 - resolution: "@aws-sdk/token-providers@npm:3.238.0" +"@aws-sdk/token-providers@npm:3.241.0": + version: 3.241.0 + resolution: "@aws-sdk/token-providers@npm:3.241.0" dependencies: - "@aws-sdk/client-sso-oidc": 3.238.0 + "@aws-sdk/client-sso-oidc": 3.241.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: 5627cda5accc45efb50636d839ed3e6d820a139495fdc03f95cb49267d2c67182fa88d6e46a70fe9ccf34cc8a30df390ded8e94af9daeb3581c22ab0d4940ec5 + checksum: 7897380a0bf8790b66e17633a6b510785876193f3bd481773afd7179ebbd0ec6849ec88ea873f9ee634fca55fac49f881bddc09133c380f2113eb5d67761c31d languageName: node linkType: hard @@ -786,13 +786,13 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/util-endpoints@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/util-endpoints@npm:3.226.0" +"@aws-sdk/util-endpoints@npm:3.241.0": + version: 3.241.0 + resolution: "@aws-sdk/util-endpoints@npm:3.241.0" dependencies: "@aws-sdk/types": 3.226.0 tslib: ^2.3.1 - checksum: a05d38c4901801ff8c33d3469b8248ae07a2bb761e8b87f9eb62d7b977bd447fc8a1601c18692a035662818b223be97957d63d389b5393fdd65227cc25aa7903 + checksum: d4743ef1a2cd2128f33da61466f9749b9e43bdee1bc01ffaead6839571506e559936f6a82192dcdce65553841f7c74ed8a9ba219e0331fbd783af012711b341b languageName: node linkType: hard @@ -1420,9 +1420,9 @@ __metadata: languageName: node linkType: hard -"@eslint/eslintrc@npm:^1.3.3, @eslint/eslintrc@npm:^1.4.0": - version: 1.4.0 - resolution: "@eslint/eslintrc@npm:1.4.0" +"@eslint/eslintrc@npm:^1.3.3, @eslint/eslintrc@npm:^1.4.1": + version: 1.4.1 + resolution: "@eslint/eslintrc@npm:1.4.1" dependencies: ajv: ^6.12.4 debug: ^4.3.2 @@ -1433,7 +1433,7 @@ __metadata: js-yaml: ^4.1.0 minimatch: ^3.1.2 strip-json-comments: ^3.1.1 - checksum: 73e39c833deafde8d8706e6fa9b52b6d99927c094ead8e405ea4174e8197ec24aac9ba88ae38cc8ad32eaccf07b9c7fc5dc70761d1fba6da41a928691447305f + checksum: cd3e5a8683db604739938b1c1c8b77927dc04fce3e28e0c88e7f2cd4900b89466baf83dfbad76b2b9e4d2746abdd00dd3f9da544d3e311633d8693f327d04cd7 languageName: node linkType: hard @@ -1547,11 +1547,11 @@ __metadata: linkType: hard "@iconify-json/tabler@npm:^1.1.49": - version: 1.1.53 - resolution: "@iconify-json/tabler@npm:1.1.53" + version: 1.1.54 + resolution: "@iconify-json/tabler@npm:1.1.54" dependencies: "@iconify/types": "*" - checksum: 4cc9db8d4bfb978249af55bce10fa355e3a51547178b1343a947163864c51659059bd622801c688baba1d2cab51980c6e9bc3cc23cfa6ee2b74ea76714e1400a + checksum: 4e3234db68858a1d12f37f3c59e6ecdfd6c6a34f916e35837821b74ef54e89f08e16a0078c915d201bfc9ec56a631c102c083d7304a078f33110ea52f0bc82af languageName: node linkType: hard @@ -2901,13 +2901,13 @@ __metadata: linkType: hard "@types/express-serve-static-core@npm:^4.17.31": - version: 4.17.31 - resolution: "@types/express-serve-static-core@npm:4.17.31" + version: 4.17.32 + resolution: "@types/express-serve-static-core@npm:4.17.32" dependencies: "@types/node": "*" "@types/qs": "*" "@types/range-parser": "*" - checksum: 009bfbe1070837454a1056aa710d0390ee5fb8c05dfe5a1691cc3e2ca88dc256f80e1ca27cb51a978681631d2f6431bfc9ec352ea46dd0c6eb183d0170bde5df + checksum: 70ec1b8f386628850b315a7b9fd4240a5a70297b41ef1c39af65c8b9661d2c775cfff4686b491fd90e5b6eef43088af203700c5541aec0d063db0c6cbeff254c languageName: node linkType: hard @@ -3090,7 +3090,7 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:latest": +"@types/node@latest, @types/node@npm:*": version: 18.11.18 resolution: "@types/node@npm:18.11.18" checksum: 03f17f9480f8d775c8a72da5ea7e9383db5f6d85aa5fefde90dd953a1449bd5e4ffde376f139da4f3744b4c83942166d2a7603969a6f8ea826edfb16e6e3b49d @@ -7629,10 +7629,10 @@ __metadata: linkType: hard "eslint@npm:^8.26.0": - version: 8.30.0 - resolution: "eslint@npm:8.30.0" + version: 8.31.0 + resolution: "eslint@npm:8.31.0" dependencies: - "@eslint/eslintrc": ^1.4.0 + "@eslint/eslintrc": ^1.4.1 "@humanwhocodes/config-array": ^0.11.8 "@humanwhocodes/module-importer": ^1.0.1 "@nodelib/fs.walk": ^1.2.8 @@ -7673,7 +7673,7 @@ __metadata: text-table: ^0.2.0 bin: eslint: bin/eslint.js - checksum: b7525bb465b342665c3b8bab7e114d514ef1bc4e79f211c919863f9c71767e7412ec82383a22614a92d159783f91101018817000f7c61ce69a5e7015280cafaf + checksum: 5e5688bb864edc6b12d165849994812eefa67fb3fc44bb26f53659b63edcd8bcc68389d27cc6cc9e5b79ee22f24b6f311fa3ed047bddcafdec7d84c1b5561e4f languageName: node linkType: hard @@ -11210,11 +11210,11 @@ __metadata: linkType: hard "json5@npm:^2.2.1": - version: 2.2.2 - resolution: "json5@npm:2.2.2" + version: 2.2.3 + resolution: "json5@npm:2.2.3" bin: json5: lib/cli.js - checksum: 9a878d66b72157b073cf0017f3e5d93ec209fa5943abcb38d37a54b208917c166bd473c26a24695e67a016ce65759aeb89946592991f8f9174fb96c8e2492683 + checksum: 2a7436a93393830bce797d4626275152e37e877b265e94ca69c99e3d20c2b9dab021279146a39cdb700e71b2dd32a4cebd1514cd57cee102b1af906ce5040349 languageName: node linkType: hard @@ -12032,9 +12032,9 @@ __metadata: linkType: hard "luxon@npm:^3.1.0": - version: 3.1.1 - resolution: "luxon@npm:3.1.1" - checksum: 388fb35d3c51a19d8b305a3338e7e74634b08562e7d2f9ed5c05a7f4bc9ee1c1ab6a2546b6d9c4c104516b24043757d65f5f3fe3d78b206fbf55a9586ab62230 + version: 3.2.0 + resolution: "luxon@npm:3.2.0" + checksum: 9a54fc68f1735259095299616c7d01967fb52a9c3500c6b31f97c477574122c62dc0f119d13abc04daaf545e1b8f37a63642b45cd04a240ff59987ceb6ec02c0 languageName: node linkType: hard From 0d6f702ff59ea10d38b4639b1aeb5549270976a0 Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Sun, 1 Jan 2023 20:32:27 +0000 Subject: [PATCH 116/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From ba2291a3ddac0d4101021e11d03cb222c5a4bb3b Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Sun, 1 Jan 2023 14:54:34 -0600 Subject: [PATCH 117/189] fix: se quito addChild de las constantes porque no se usa se quito addChild de la seccion de constantes porque no se usa --- starters/apps/base-baileys-memory/app.js | 1 - starters/apps/base-baileys-mongo/app.js | 1 - starters/apps/base-baileys-mysql/app.js | 1 - starters/apps/base-meta-json/app.js | 1 - starters/apps/base-meta-memory/app.js | 1 - starters/apps/base-meta-mongo/app.js | 1 - starters/apps/base-meta-mysql/app.js | 1 - starters/apps/base-twilio-memory/app.js | 1 - starters/apps/base-twilio-mongo/app.js | 1 - starters/apps/base-twilio-mysql/app.js | 1 - starters/apps/base-venom-memory/app.js | 1 - starters/apps/base-venom-mongo/app.js | 1 - starters/apps/base-venom-mysql/app.js | 1 - starters/apps/base-wweb-memory/app.js | 1 - starters/apps/base-wweb-mongo/app.js | 1 - starters/apps/base-wweb-mysql/app.js | 1 - 16 files changed, 16 deletions(-) diff --git a/starters/apps/base-baileys-memory/app.js b/starters/apps/base-baileys-memory/app.js index 14cacdd..3b967a8 100644 --- a/starters/apps/base-baileys-memory/app.js +++ b/starters/apps/base-baileys-memory/app.js @@ -3,7 +3,6 @@ const { createProvider, createFlow, addKeyword, - addChild, } = require('@bot-whatsapp/bot') const BaileysProvider = require('@bot-whatsapp/provider/baileys') diff --git a/starters/apps/base-baileys-mongo/app.js b/starters/apps/base-baileys-mongo/app.js index c058c62..96f04b0 100644 --- a/starters/apps/base-baileys-mongo/app.js +++ b/starters/apps/base-baileys-mongo/app.js @@ -3,7 +3,6 @@ const { createProvider, createFlow, addKeyword, - addChild, } = require('@bot-whatsapp/bot') const BaileysProvider = require('@bot-whatsapp/provider/baileys') diff --git a/starters/apps/base-baileys-mysql/app.js b/starters/apps/base-baileys-mysql/app.js index 6c69699..6982000 100644 --- a/starters/apps/base-baileys-mysql/app.js +++ b/starters/apps/base-baileys-mysql/app.js @@ -3,7 +3,6 @@ const { createProvider, createFlow, addKeyword, - addChild, } = require('@bot-whatsapp/bot') const BaileysProvider = require('@bot-whatsapp/provider/baileys') diff --git a/starters/apps/base-meta-json/app.js b/starters/apps/base-meta-json/app.js index d7a958e..73a186c 100644 --- a/starters/apps/base-meta-json/app.js +++ b/starters/apps/base-meta-json/app.js @@ -3,7 +3,6 @@ const { createProvider, createFlow, addKeyword, - addChild, } = require('@bot-whatsapp/bot') const MetaProvider = require('@bot-whatsapp/provider/meta') diff --git a/starters/apps/base-meta-memory/app.js b/starters/apps/base-meta-memory/app.js index e7a97c0..e255d90 100644 --- a/starters/apps/base-meta-memory/app.js +++ b/starters/apps/base-meta-memory/app.js @@ -3,7 +3,6 @@ const { createProvider, createFlow, addKeyword, - addChild, } = require('@bot-whatsapp/bot') const MetaProvider = require('@bot-whatsapp/provider/meta') diff --git a/starters/apps/base-meta-mongo/app.js b/starters/apps/base-meta-mongo/app.js index fbc9e8b..a6502ff 100644 --- a/starters/apps/base-meta-mongo/app.js +++ b/starters/apps/base-meta-mongo/app.js @@ -3,7 +3,6 @@ const { createProvider, createFlow, addKeyword, - addChild, } = require('@bot-whatsapp/bot') const MetaProvider = require('@bot-whatsapp/provider/meta') diff --git a/starters/apps/base-meta-mysql/app.js b/starters/apps/base-meta-mysql/app.js index e2e4b3e..73ead9e 100644 --- a/starters/apps/base-meta-mysql/app.js +++ b/starters/apps/base-meta-mysql/app.js @@ -3,7 +3,6 @@ const { createProvider, createFlow, addKeyword, - addChild, } = require('@bot-whatsapp/bot') const MetaProvider = require('@bot-whatsapp/provider/meta') diff --git a/starters/apps/base-twilio-memory/app.js b/starters/apps/base-twilio-memory/app.js index a5e604d..144e753 100644 --- a/starters/apps/base-twilio-memory/app.js +++ b/starters/apps/base-twilio-memory/app.js @@ -3,7 +3,6 @@ const { createProvider, createFlow, addKeyword, - addChild, } = require('@bot-whatsapp/bot') const TwilioProvider = require('@bot-whatsapp/provider/twilio') diff --git a/starters/apps/base-twilio-mongo/app.js b/starters/apps/base-twilio-mongo/app.js index 6828d9a..1f9a59e 100644 --- a/starters/apps/base-twilio-mongo/app.js +++ b/starters/apps/base-twilio-mongo/app.js @@ -3,7 +3,6 @@ const { createProvider, createFlow, addKeyword, - addChild, } = require('@bot-whatsapp/bot') const TwilioProvider = require('@bot-whatsapp/provider/twilio') diff --git a/starters/apps/base-twilio-mysql/app.js b/starters/apps/base-twilio-mysql/app.js index 0b5154c..c011c62 100644 --- a/starters/apps/base-twilio-mysql/app.js +++ b/starters/apps/base-twilio-mysql/app.js @@ -3,7 +3,6 @@ const { createProvider, createFlow, addKeyword, - addChild, } = require('@bot-whatsapp/bot') const TwilioProvider = require('@bot-whatsapp/provider/twilio') diff --git a/starters/apps/base-venom-memory/app.js b/starters/apps/base-venom-memory/app.js index 958a5b5..1c01403 100644 --- a/starters/apps/base-venom-memory/app.js +++ b/starters/apps/base-venom-memory/app.js @@ -3,7 +3,6 @@ const { createProvider, createFlow, addKeyword, - addChild, } = require('@bot-whatsapp/bot') const VenomProvider = require('@bot-whatsapp/provider/venom') diff --git a/starters/apps/base-venom-mongo/app.js b/starters/apps/base-venom-mongo/app.js index 8c14582..c466b75 100644 --- a/starters/apps/base-venom-mongo/app.js +++ b/starters/apps/base-venom-mongo/app.js @@ -3,7 +3,6 @@ const { createProvider, createFlow, addKeyword, - addChild, } = require('@bot-whatsapp/bot') const VenomProvider = require('@bot-whatsapp/provider/venom') diff --git a/starters/apps/base-venom-mysql/app.js b/starters/apps/base-venom-mysql/app.js index 19067ca..ed5bc78 100644 --- a/starters/apps/base-venom-mysql/app.js +++ b/starters/apps/base-venom-mysql/app.js @@ -3,7 +3,6 @@ const { createProvider, createFlow, addKeyword, - addChild, } = require('@bot-whatsapp/bot') const VenomProvider = require('@bot-whatsapp/provider/venom') diff --git a/starters/apps/base-wweb-memory/app.js b/starters/apps/base-wweb-memory/app.js index c69d632..8b6acad 100644 --- a/starters/apps/base-wweb-memory/app.js +++ b/starters/apps/base-wweb-memory/app.js @@ -3,7 +3,6 @@ const { createProvider, createFlow, addKeyword, - addChild, } = require('@bot-whatsapp/bot') const WebWhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp') diff --git a/starters/apps/base-wweb-mongo/app.js b/starters/apps/base-wweb-mongo/app.js index 62df6ec..ae3ee40 100644 --- a/starters/apps/base-wweb-mongo/app.js +++ b/starters/apps/base-wweb-mongo/app.js @@ -3,7 +3,6 @@ const { createProvider, createFlow, addKeyword, - addChild, } = require('@bot-whatsapp/bot') const WebWhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp') diff --git a/starters/apps/base-wweb-mysql/app.js b/starters/apps/base-wweb-mysql/app.js index e6edeed..e6341cb 100644 --- a/starters/apps/base-wweb-mysql/app.js +++ b/starters/apps/base-wweb-mysql/app.js @@ -3,7 +3,6 @@ const { createProvider, createFlow, addKeyword, - addChild, } = require('@bot-whatsapp/bot') const WebWhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp') From 6940d33960f622306d98697f19c753b01db1196c Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Sun, 1 Jan 2023 20:55:50 +0000 Subject: [PATCH 118/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From 641d9a25195848152e7233215b08eca26c2f616a Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Mon, 2 Jan 2023 10:03:01 +0100 Subject: [PATCH 119/189] docs(faq): added fat --- packages/docs/src/components/widgets/FAQs.tsx | 30 ++++++++----------- 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/packages/docs/src/components/widgets/FAQs.tsx b/packages/docs/src/components/widgets/FAQs.tsx index c9c9f70..5bdbe1d 100644 --- a/packages/docs/src/components/widgets/FAQs.tsx +++ b/packages/docs/src/components/widgets/FAQs.tsx @@ -5,39 +5,33 @@ export default component$(() => { const items = [ [ { - question: 'What do I need to start?', - answer: `Space, the final frontier. These are the voyages of the Starship Enterprise. Its five-year mission: to explore strange new worlds. - - Many say exploration is part of our destiny, but it’s actually our duty to future generations.`, + question: '¿Que necesitas para iniciar?', + answer: `Deseable tener conocimientos previos en JavaScript o ejecución de proyectos Node. La comunidad siempre se encargará de mantener la documentación lo más clara posible para que con solo unos minutos tengas tu chatbot funcionando correctamente`, }, { - question: 'How to install the Qwik + Tailwind CSS template?', - answer: `Well, the way they make shows is, they make one show. That show's called a pilot. - - Then they show that show to the people who make shows, and on the strength of that one show they decide if they're going to make more shows. Some pilots get picked and become television programs. Some don't, become nothing. She starred in one of the ones that became nothing.`, + question: '¿Es Gratis?', + answer: `Si. Es un proyecto Open Source que ofrece el código para que puedas aplicarlo de manera totalmente gratuita. Siempre destacando el valor aportado por toda la comunidad`, }, { question: - "What's something that you completely don't understand?", - answer: `A flower in my garden, a mystery in my panties. Heart attack never stopped old Big Bear. I didn't even know we were calling him Big Bear.`, + "¿Funciona en Ubuntu/Windows?", + answer: `El proyecto funciona perfectamente Linux/Windows/Mac. Cabe destacar que dependiendo del sistema operativo será necesario realizar algunos ajustes puntuales. En la documentación se explica más estos casos de usos`, }, ], [ { - question: "What's an example of when you changed your mind?", - answer: `Michael Knight a young loner on a crusade to champion the cause of the innocent. The helpless. The powerless in a world of criminals who operate above the law. Here he comes Here comes Speed Racer. He's a demon on wheels.`, + question: "¿Existe un plan de pago?", + answer: `Actualmente, no contamos con un plan de pago, las aportaciones económicas recibidas se destinan a gastos en comunes: servidores para pruebas, servicios de api externos, recursos de marketing y diseño, recintos para capacitaciones, entre otras cosas. `, }, { question: - 'What is something that you would really like to try again?', - answer: `A business big enough that it could be listed on the NASDAQ goes belly up. Disappears! - - It ceases to exist without me. No, you clearly don't know who you're talking to, so let me clue you in.`, + '¿Riesgos dé bloqueo?', + answer: `Depende. Esta librería es una capa superior agnóstica al proveedor que facilita el escribir flujos de conversación. Esto significa que la conexión con "Whatsapp" es delegada al proveedor de turno, el cual dependiendo de cuál elijas, puede tener limitaciones o riesgos. Ver más información`, }, { question: - 'If you could only ask one question to each person you meet, what would that question be?', - answer: `This is not about revenge. This is about justice. A lot of things can change in twelve years, Admiral. Well, that's certainly good to know. About four years. I got tired of hearing how young I looked.`, + '¿Casos de usos?', + answer: `Basado en los relatos compartidos por la comunidad, hasta el momento hemos registrado más de 100 casos de usos. Los más populares suelen ser: asistencia técnica. (preguntas y respuestas), gestión de pedidos de restaurantes, chatbot con inteligencia artificial gracias a dialogflow`, }, ], ] From bd952243b7ea5ff7a41b6ec6778b2db5abf064a1 Mon Sep 17 00:00:00 2001 From: leifermendez Date: Mon, 2 Jan 2023 09:03:56 +0000 Subject: [PATCH 120/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/docs/src/components/widgets/FAQs.tsx | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/packages/docs/src/components/widgets/FAQs.tsx b/packages/docs/src/components/widgets/FAQs.tsx index 5bdbe1d..c053122 100644 --- a/packages/docs/src/components/widgets/FAQs.tsx +++ b/packages/docs/src/components/widgets/FAQs.tsx @@ -13,24 +13,21 @@ export default component$(() => { answer: `Si. Es un proyecto Open Source que ofrece el código para que puedas aplicarlo de manera totalmente gratuita. Siempre destacando el valor aportado por toda la comunidad`, }, { - question: - "¿Funciona en Ubuntu/Windows?", + question: '¿Funciona en Ubuntu/Windows?', answer: `El proyecto funciona perfectamente Linux/Windows/Mac. Cabe destacar que dependiendo del sistema operativo será necesario realizar algunos ajustes puntuales. En la documentación se explica más estos casos de usos`, }, ], [ { - question: "¿Existe un plan de pago?", + question: '¿Existe un plan de pago?', answer: `Actualmente, no contamos con un plan de pago, las aportaciones económicas recibidas se destinan a gastos en comunes: servidores para pruebas, servicios de api externos, recursos de marketing y diseño, recintos para capacitaciones, entre otras cosas. `, }, { - question: - '¿Riesgos dé bloqueo?', + question: '¿Riesgos dé bloqueo?', answer: `Depende. Esta librería es una capa superior agnóstica al proveedor que facilita el escribir flujos de conversación. Esto significa que la conexión con "Whatsapp" es delegada al proveedor de turno, el cual dependiendo de cuál elijas, puede tener limitaciones o riesgos. Ver más información`, }, { - question: - '¿Casos de usos?', + question: '¿Casos de usos?', answer: `Basado en los relatos compartidos por la comunidad, hasta el momento hemos registrado más de 100 casos de usos. Los más populares suelen ser: asistencia técnica. (preguntas y respuestas), gestión de pedidos de restaurantes, chatbot con inteligencia artificial gracias a dialogflow`, }, ], From 4e1aeacc35f8a0500f344b0a91346e04f4a2f96d Mon Sep 17 00:00:00 2001 From: marianarolfo <68322254+marianarolfo@users.noreply.github.com> Date: Mon, 2 Jan 2023 10:28:26 +0100 Subject: [PATCH 121/189] docs: remove icons --- packages/docs/src/components/widgets/Footer.tsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/docs/src/components/widgets/Footer.tsx b/packages/docs/src/components/widgets/Footer.tsx index fde0425..139f725 100644 --- a/packages/docs/src/components/widgets/Footer.tsx +++ b/packages/docs/src/components/widgets/Footer.tsx @@ -40,12 +40,10 @@ export default component$(() => { const social = [ { label: 'Twitter', icon: IconTwitter, href: '#' }, - { label: 'Instagram', icon: IconInstagram, href: '#' }, - { label: 'Facebook', icon: IconFacebook, href: '#' }, { label: 'Github', icon: IconGithub, - href: 'https://github.com/onwidget/qwind', + href: 'https://github.com/codigoencasa/bot-whatsapp', }, ] From 1c1a1e69542c7394e2aa3f42411ff567c1a70825 Mon Sep 17 00:00:00 2001 From: leifermendez Date: Mon, 2 Jan 2023 09:29:24 +0000 Subject: [PATCH 122/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From ebf53fd79f74f991560f1098304f9cd8be9cd51b Mon Sep 17 00:00:00 2001 From: leifermendez Date: Mon, 2 Jan 2023 09:38:06 +0000 Subject: [PATCH 123/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From 0fee32e788897ff9a31fc0bc7157dc05ecb9efdd Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Tue, 3 Jan 2023 00:32:33 +0000 Subject: [PATCH 124/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From 9242a54fc2264c152421a83b51a8124f6b2de481 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 3 Jan 2023 10:38:29 +0000 Subject: [PATCH 125/189] 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 94ea8ad..beea8cf 100644 --- a/packages/bot/package.json +++ b/packages/bot/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/bot", - "version": "0.0.29-alpha.0", + "version": "0.0.31-alpha.0", "description": "", "main": "./lib/bundle.bot.cjs", "scripts": { diff --git a/packages/cli/package.json b/packages/cli/package.json index 3f86f72..c5287d2 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/cli", - "version": "0.0.36-alpha.0", + "version": "0.0.38-alpha.0", "description": "", "main": "index.js", "devDependencies": { diff --git a/packages/create-bot-whatsapp/package.json b/packages/create-bot-whatsapp/package.json index 9c2358f..252b6c8 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.47-alpha.0", + "version": "0.0.49-alpha.0", "description": "", "main": "./lib/bundle.create-bot-whatsapp.cjs", "files": [ diff --git a/packages/database/package.json b/packages/database/package.json index 71404ba..c707e02 100644 --- a/packages/database/package.json +++ b/packages/database/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/database", - "version": "0.0.28-alpha.0", + "version": "0.0.30-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 7714e30..ed6ab28 100644 --- a/packages/provider/package.json +++ b/packages/provider/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/provider", - "version": "0.0.34-alpha.0", + "version": "0.0.36-alpha.0", "description": "Esto es el conector a Twilio, Meta, etc...", "main": "./lib/mock/index.cjs", "keywords": [], From 2850a34ead2635a937b8c0997809638fd5d43df9 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 3 Jan 2023 12:28:57 +0100 Subject: [PATCH 126/189] docs: :zap: updated video --- packages/database/rollup-database.config.js | 1 + packages/database/src/json/index.js | 2 +- packages/docs/src/components/widgets/FAQs.tsx | 2 +- packages/docs/src/components/widgets/Footer.tsx | 2 -- 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/database/rollup-database.config.js b/packages/database/rollup-database.config.js index 844d414..5d4c3c5 100644 --- a/packages/database/rollup-database.config.js +++ b/packages/database/rollup-database.config.js @@ -35,6 +35,7 @@ module.exports = [ output: { banner: banner['banner.output'].join(''), file: join(__dirname, 'lib', 'json', 'index.cjs'), + format: 'cjs', }, plugins: [commonjs()], }, diff --git a/packages/database/src/json/index.js b/packages/database/src/json/index.js index cf09681..83450d5 100644 --- a/packages/database/src/json/index.js +++ b/packages/database/src/json/index.js @@ -32,7 +32,7 @@ class JsonFileAdapter { } saveData(data) { - writeFileSync(this.pathFile, JSON.stringify(data)) + writeFileSync(this.pathFile, JSON.stringify(data, null, 2)) } getPrevByNumber = async (from) => { diff --git a/packages/docs/src/components/widgets/FAQs.tsx b/packages/docs/src/components/widgets/FAQs.tsx index c053122..829d032 100644 --- a/packages/docs/src/components/widgets/FAQs.tsx +++ b/packages/docs/src/components/widgets/FAQs.tsx @@ -20,7 +20,7 @@ export default component$(() => { [ { question: '¿Existe un plan de pago?', - answer: `Actualmente, no contamos con un plan de pago, las aportaciones económicas recibidas se destinan a gastos en comunes: servidores para pruebas, servicios de api externos, recursos de marketing y diseño, recintos para capacitaciones, entre otras cosas. `, + answer: `Actualmente, no contamos con un plan de pago, las aportaciones económicas recibidas se destinan a gastos en comunes: servidores para pruebas, servicios de api externos, recursos de marketing y diseño, recintos para capacitaciones, entre otras cosas.`, }, { question: '¿Riesgos dé bloqueo?', diff --git a/packages/docs/src/components/widgets/Footer.tsx b/packages/docs/src/components/widgets/Footer.tsx index 139f725..98c9ea0 100644 --- a/packages/docs/src/components/widgets/Footer.tsx +++ b/packages/docs/src/components/widgets/Footer.tsx @@ -2,8 +2,6 @@ import { component$ } from '@builder.io/qwik' import { Link } from '@builder.io/qwik-city' import { IconTwitter } from '~/components/icons/IconTwitter' -import { IconInstagram } from '~/components/icons/IconInstagram' -import { IconFacebook } from '~/components/icons/IconFacebook' import { IconGithub } from '~/components/icons/IconGithub' export default component$(() => { From 54a59c7f0d4dbaab006ce7e3c74412d8d3613ecd Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 3 Jan 2023 12:29:26 +0100 Subject: [PATCH 127/189] fix(provider): :zap: json space From 38e2340782951018bea6e50c402b9307efe5d9a5 Mon Sep 17 00:00:00 2001 From: leifermendez Date: Tue, 3 Jan 2023 11:30:46 +0000 Subject: [PATCH 128/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From a603e3b7dc724e23063167d52a8c23b6c265a6bb Mon Sep 17 00:00:00 2001 From: leifermendez Date: Tue, 3 Jan 2023 11:31:00 +0000 Subject: [PATCH 129/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From 208fb4e9131dd5d4fd7230ba1aa11181337d9181 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 3 Jan 2023 12:33:56 +0100 Subject: [PATCH 130/189] fix(provider): :zap: json space From 568978c0dc3e1acf9f100fb60f7b165ad4a72776 Mon Sep 17 00:00:00 2001 From: leifermendez Date: Tue, 3 Jan 2023 11:36:10 +0000 Subject: [PATCH 131/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From 9b087e071019a7b6c79195a24dc7ddec498c5716 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 3 Jan 2023 12:47:30 +0100 Subject: [PATCH 132/189] fix(provider): :zap: json space From fe1129e5ff12a7ba2a7d073656118f8ceb31283f Mon Sep 17 00:00:00 2001 From: leifermendez Date: Tue, 3 Jan 2023 11:48:56 +0000 Subject: [PATCH 133/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From d307d2e7a348025fb6819fa35246aad095d47c83 Mon Sep 17 00:00:00 2001 From: leifermendez Date: Tue, 3 Jan 2023 11:49:11 +0000 Subject: [PATCH 134/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From 3cef741c9ee30024eb42770a5f32931fcd372160 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 3 Jan 2023 12:52:07 +0100 Subject: [PATCH 135/189] fix(provider): :zap: json space --- starters/apps/base-meta-mongo/app.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/starters/apps/base-meta-mongo/app.js b/starters/apps/base-meta-mongo/app.js index a6502ff..344709b 100644 --- a/starters/apps/base-meta-mongo/app.js +++ b/starters/apps/base-meta-mongo/app.js @@ -8,6 +8,13 @@ const { const MetaProvider = require('@bot-whatsapp/provider/meta') 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' + /** * Aqui declaramos los flujos hijos, los flujos se declaran de atras para adelante, es decir que si tienes un flujo de este tipo: * From d49a91308df49939dc9262a25c683e92fa1957f7 Mon Sep 17 00:00:00 2001 From: leifermendez Date: Tue, 3 Jan 2023 11:53:55 +0000 Subject: [PATCH 136/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From d8309f77e1d9137c0bec977ed9faef633cd90552 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 3 Jan 2023 13:24:15 +0100 Subject: [PATCH 137/189] fix(contexts): :fire: added buttons --- .../src/dialogflow-cx/dialogflow-cx.class.js | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/packages/contexts/src/dialogflow-cx/dialogflow-cx.class.js b/packages/contexts/src/dialogflow-cx/dialogflow-cx.class.js index e851ca4..25bd2a6 100644 --- a/packages/contexts/src/dialogflow-cx/dialogflow-cx.class.js +++ b/packages/contexts/src/dialogflow-cx/dialogflow-cx.class.js @@ -96,12 +96,24 @@ class DialogFlowCXContext extends CoreClass { } if (res.message == 'payload') { - const { values } = res.payload.fields.buttons.listValue - const buttonsArray = values.map((values) => { - const { stringValue } = values.structValue.fields.body - return { body: stringValue } - }) - return { buttons: buttonsArray } + const { + media = null, + buttons = [], + answer = '', + } = res.payload.fields + const buttonsArray = buttons?.listValue?.values?.map( + (btnValue) => { + const { stringValue } = btnValue.structValue.fields.body + return { body: stringValue } + } + ) + return { + answer: answer?.stringValue, + options: { + media: media?.stringValue, + buttons: buttonsArray, + }, + } } }) From 77be7ec7fb6f427857febe226f29b9093b95a2d3 Mon Sep 17 00:00:00 2001 From: leifermendez Date: Tue, 3 Jan 2023 12:25:51 +0000 Subject: [PATCH 138/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From 78b0a9dddc2a6e0fceb721ee7794efa2047f25fc Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 3 Jan 2023 13:40:18 +0100 Subject: [PATCH 139/189] fix(contexts): :fire: added buttons --- packages/contexts/src/dialogflow/dialogflow.class.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/contexts/src/dialogflow/dialogflow.class.js b/packages/contexts/src/dialogflow/dialogflow.class.js index db34e50..ffe50e7 100644 --- a/packages/contexts/src/dialogflow/dialogflow.class.js +++ b/packages/contexts/src/dialogflow/dialogflow.class.js @@ -93,8 +93,9 @@ class DialogFlowContext extends CoreClass { if (msgPayload && msgPayload?.payload) { const { fields } = msgPayload.payload const mapButtons = fields?.buttons?.listValue?.values.map((m) => { - return m?.structValue?.fields?.body?.stringValue + return { body: m?.structValue?.fields?.body?.stringValue } }) + customPayload = { media: fields?.media?.stringValue, buttons: mapButtons, From 3d197e877ef3548d7d43d6f9ff5102ecca1dab35 Mon Sep 17 00:00:00 2001 From: leifermendez Date: Tue, 3 Jan 2023 12:41:42 +0000 Subject: [PATCH 140/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From fe33c213b11f6b278ecd45c9ef878b53ea6329d6 Mon Sep 17 00:00:00 2001 From: leifermendez Date: Tue, 3 Jan 2023 12:42:05 +0000 Subject: [PATCH 141/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From 1b878d2ba0daeb3609af74a2ebae7948456e7fb0 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 3 Jan 2023 13:49:00 +0100 Subject: [PATCH 142/189] fix(contexts): :fire: added buttons --- .github/workflows/releases-dev.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/releases-dev.yml b/.github/workflows/releases-dev.yml index ba3a625..0e3871e 100644 --- a/.github/workflows/releases-dev.yml +++ b/.github/workflows/releases-dev.yml @@ -49,8 +49,6 @@ jobs: run: yarn node ./scripts/release.js --name=provider --version= --token="${{ secrets.NPM_TOKEN }}" - name: Commit Versioning & Push changes - uses: actions-js/push@master + uses: stefanzweifel/git-auto-commit-action@v4 with: - github_token: ${{ secrets.GITHUB_TOKEN }} - message: 'ci(version): :zap: automatic - "${date}" updated versions every packages' - branch: 'dev' + commit_message: 'ci(version): :zap: automatic - "${date}" updated versions every packages' From eabef7a92d005cd0190196cfe75828c38885aadf Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 3 Jan 2023 13:49:57 +0100 Subject: [PATCH 143/189] fix(contexts): :fire: added buttons --- .github/workflows/releases.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml index 00fa335..b491aca 100644 --- a/.github/workflows/releases.yml +++ b/.github/workflows/releases.yml @@ -53,8 +53,6 @@ jobs: run: yarn node ./scripts/release.js --name=provider --version="${{ steps.vars.outputs.tag }}" --token="${{ secrets.NPM_TOKEN }}" - name: Commit Versioning & Push changes - uses: actions-js/push@master + uses: stefanzweifel/git-auto-commit-action@v4 with: - github_token: ${{ secrets.GITHUB_TOKEN }} - message: 'ci(version): :zap: automatic - "${date}" updated versions every packages' - branch: 'dev' + commit_message: 'ci(version): :zap: automatic - "${date}" updated versions every packages' From 9d2f57da764d4133923559b9bed6cc51b073dc7d Mon Sep 17 00:00:00 2001 From: leifermendez Date: Tue, 3 Jan 2023 12:51:30 +0000 Subject: [PATCH 144/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From d94034d5bb8501ec22d0c86206291468433e7058 Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Tue, 3 Jan 2023 17:47:12 +0000 Subject: [PATCH 145/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From 3012e026b77ab4e99334b992d166a89189f76503 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 3 Jan 2023 23:06:27 +0100 Subject: [PATCH 146/189] feat(bot): :zap: rev-03 everything work fine --- packages/provider/package.json | 3 +- starters/apps/base-baileys-json/README.md | 34 +++++++ starters/apps/base-baileys-json/app.js | 88 ++++++++++++++++++ starters/apps/base-baileys-json/package.json | 22 +++++ starters/apps/base-twilio-json/README.md | 34 +++++++ starters/apps/base-twilio-json/app.js | 94 ++++++++++++++++++++ starters/apps/base-twilio-json/package.json | 22 +++++ starters/apps/base-venom-json/README.md | 34 +++++++ starters/apps/base-venom-json/app.js | 88 ++++++++++++++++++ starters/apps/base-venom-json/package.json | 21 +++++ starters/apps/base-wweb-json/README.md | 34 +++++++ starters/apps/base-wweb-json/app.js | 88 ++++++++++++++++++ starters/apps/base-wweb-json/package.json | 20 +++++ yarn.lock | 1 + 14 files changed, 582 insertions(+), 1 deletion(-) create mode 100644 starters/apps/base-baileys-json/README.md create mode 100644 starters/apps/base-baileys-json/app.js create mode 100644 starters/apps/base-baileys-json/package.json create mode 100644 starters/apps/base-twilio-json/README.md create mode 100644 starters/apps/base-twilio-json/app.js create mode 100644 starters/apps/base-twilio-json/package.json create mode 100644 starters/apps/base-venom-json/README.md create mode 100644 starters/apps/base-venom-json/app.js create mode 100644 starters/apps/base-venom-json/package.json create mode 100644 starters/apps/base-wweb-json/README.md create mode 100644 starters/apps/base-wweb-json/app.js create mode 100644 starters/apps/base-wweb-json/package.json diff --git a/packages/provider/package.json b/packages/provider/package.json index 7714e30..f04f3c6 100644 --- a/packages/provider/package.json +++ b/packages/provider/package.json @@ -12,7 +12,8 @@ "dependencies": { "@bot-whatsapp/bot": "*", "combine-image": "^1.0.3", - "qr-image": "^3.2.0" + "qr-image": "^3.2.0", + "rimraf": "^3.0.2" }, "exports": { "./mock": "./lib/mock/index.cjs", diff --git a/starters/apps/base-baileys-json/README.md b/starters/apps/base-baileys-json/README.md new file mode 100644 index 0000000..d0e43d2 --- /dev/null +++ b/starters/apps/base-baileys-json/README.md @@ -0,0 +1,34 @@ +### CHATBOT Whatsapp + +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 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.. + +__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 +``` + +__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) + +------ +> ¿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-baileys-json/app.js b/starters/apps/base-baileys-json/app.js new file mode 100644 index 0000000..267d860 --- /dev/null +++ b/starters/apps/base-baileys-json/app.js @@ -0,0 +1,88 @@ +const { + createBot, + createProvider, + createFlow, + addKeyword, +} = require('@bot-whatsapp/bot') + +const BaileysProvider = require('@bot-whatsapp/provider/baileys') +const JsonFileAdapter = require('@bot-whatsapp/database/json') + +/** + * 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') + +const flowZapatos2 = addKeyword(['zapatos2', '2']) + .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') + .addAnswer('y algunas otras cosas.') + +const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) + .addAnswer('🤯 Veo que elegiste zapatos') + .addAnswer('Tengo muchos zapatos...bla bla') + .addAnswer( + ['Manda:', '*(2) Zapatos2*', 'para mas información'], + { capture: true }, + (ctx) => { + console.log('Aqui puedes ver más info del usuario...') + console.log('Puedes enviar un mail, hook, etc..') + console.log(ctx) + }, + [flowZapatos2] + ) + +const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) + .addAnswer('🙌 Veo que elegiste bolsos') + .addAnswer('Tengo muchos bolsos...bla bla') + .addAnswer( + ['Manda:', '*(2) Bolsos2*', 'para mas información.'], + { capture: true }, + (ctx) => { + console.log('Aqui puedes ver más info del usuario...') + console.log('Puedes enviar un mail, hook, etc..') + console.log(ctx) + }, + [flowBolsos2] + ) + +/** + * Declarando flujo principal + */ + +const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) + .addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?']) + .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...']) + .addAnswer( + ['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) + }, + [flowBolsos, flowZapatos] + ) + +const main = async () => { + const adapterDB = new JsonFileAdapter() + const adapterFlow = createFlow([flowPrincipal]) + const adapterProvider = createProvider(BaileysProvider) + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} + +main() diff --git a/starters/apps/base-baileys-json/package.json b/starters/apps/base-baileys-json/package.json new file mode 100644 index 0000000..7693630 --- /dev/null +++ b/starters/apps/base-baileys-json/package.json @@ -0,0 +1,22 @@ +{ + "name": "bot-whatsapp-base-bailey-json", + "version": "1.0.0", + "description": "", + "main": "app.js", + "scripts": { + "pre-copy": "cd .. && yarn run copy.lib base-baileys-json", + "start": "node app.js" + }, + "keywords": [], + "dependencies": { + "@bot-whatsapp/bot": "latest", + "@bot-whatsapp/cli": "latest", + "@bot-whatsapp/database": "latest", + "@bot-whatsapp/provider": "latest", + "@adiwajshing/baileys": "4.4.0", + "mime-types": "2.1.35", + "wa-sticker-formatter": "4.3.2" + }, + "author": "", + "license": "ISC" +} diff --git a/starters/apps/base-twilio-json/README.md b/starters/apps/base-twilio-json/README.md new file mode 100644 index 0000000..d0e43d2 --- /dev/null +++ b/starters/apps/base-twilio-json/README.md @@ -0,0 +1,34 @@ +### CHATBOT Whatsapp + +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 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.. + +__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 +``` + +__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) + +------ +> ¿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-json/app.js b/starters/apps/base-twilio-json/app.js new file mode 100644 index 0000000..c70577c --- /dev/null +++ b/starters/apps/base-twilio-json/app.js @@ -0,0 +1,94 @@ +const { + createBot, + createProvider, + createFlow, + addKeyword, +} = require('@bot-whatsapp/bot') + +const TwilioProvider = require('@bot-whatsapp/provider/twilio') +const JsonFileAdapter = require('@bot-whatsapp/database/json') + +/** + * 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') + +const flowZapatos2 = addKeyword(['zapatos2', '2']) + .addAnswer('� repito que tengo *MUCHOS* zapatos.') + .addAnswer('y algunas otras cosas.') + +const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) + .addAnswer('� Veo que elegiste zapatos') + .addAnswer('Tengo muchos zapatos...bla bla') + .addAnswer( + ['Manda:', '*(2) Zapatos2*', 'para mas información'], + { capture: true }, + (ctx) => { + console.log('Aqui puedes ver más info del usuario...') + console.log('Puedes enviar un mail, hook, etc..') + console.log(ctx) + }, + [flowZapatos2] + ) + +const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) + .addAnswer('� Veo que elegiste bolsos') + .addAnswer('Tengo muchos bolsos...bla bla') + .addAnswer( + ['Manda:', '*(2) Bolsos2*', 'para mas información.'], + { capture: true }, + (ctx) => { + console.log('Aqui puedes ver más info del usuario...') + console.log('Puedes enviar un mail, hook, etc..') + console.log(ctx) + }, + [flowBolsos2] + ) + +/** + * Declarando flujo principal + */ + +const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) + .addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?']) + .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...']) + .addAnswer( + ['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) + }, + [flowBolsos, flowZapatos] + ) + +const main = async () => { + const adapterDB = new JsonFileAdapter() + const adapterFlow = createFlow([flowPrincipal]) + + const adapterProvider = createProvider(TwilioProvider, { + accountSid: 'YOUR_ACCOUNT_SID', + authToken: 'YOUR_ACCOUNT_TOKEN', + vendorNumber: '+14155238886', + }) + + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} + +main() diff --git a/starters/apps/base-twilio-json/package.json b/starters/apps/base-twilio-json/package.json new file mode 100644 index 0000000..4f5fdf4 --- /dev/null +++ b/starters/apps/base-twilio-json/package.json @@ -0,0 +1,22 @@ +{ + "name": "bot-whatsapp-base-twilio-json", + "version": "1.0.0", + "description": "", + "main": "app.js", + "scripts": { + "pre-copy": "cd .. && yarn run copy.lib base-twilio-json", + "start": "node app.js" + }, + "keywords": [], + "dependencies": { + "body-parser": "^1.20.1", + "polka": "^0.5.2", + "twilio": "3.84.0", + "@bot-whatsapp/bot": "latest", + "@bot-whatsapp/cli": "latest", + "@bot-whatsapp/database": "latest", + "@bot-whatsapp/provider": "latest" + }, + "author": "", + "license": "ISC" +} diff --git a/starters/apps/base-venom-json/README.md b/starters/apps/base-venom-json/README.md new file mode 100644 index 0000000..d0e43d2 --- /dev/null +++ b/starters/apps/base-venom-json/README.md @@ -0,0 +1,34 @@ +### CHATBOT Whatsapp + +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 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.. + +__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 +``` + +__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) + +------ +> ¿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-json/app.js b/starters/apps/base-venom-json/app.js new file mode 100644 index 0000000..d0e2790 --- /dev/null +++ b/starters/apps/base-venom-json/app.js @@ -0,0 +1,88 @@ +const { + createBot, + createProvider, + createFlow, + addKeyword, +} = require('@bot-whatsapp/bot') + +const VenomProvider = require('@bot-whatsapp/provider/venom') +const JsonFileAdapter = require('@bot-whatsapp/database/json') + +/** + * 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') + +const flowZapatos2 = addKeyword(['zapatos2', '2']) + .addAnswer('� repito que tengo *MUCHOS* zapatos.') + .addAnswer('y algunas otras cosas.') + +const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) + .addAnswer('� Veo que elegiste zapatos') + .addAnswer('Tengo muchos zapatos...bla bla') + .addAnswer( + ['Manda:', '*(2) Zapatos2*', 'para mas información'], + { capture: true }, + (ctx) => { + console.log('Aqui puedes ver más info del usuario...') + console.log('Puedes enviar un mail, hook, etc..') + console.log(ctx) + }, + [flowZapatos2] + ) + +const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) + .addAnswer('� Veo que elegiste bolsos') + .addAnswer('Tengo muchos bolsos...bla bla') + .addAnswer( + ['Manda:', '*(2) Bolsos2*', 'para mas información.'], + { capture: true }, + (ctx) => { + console.log('Aqui puedes ver más info del usuario...') + console.log('Puedes enviar un mail, hook, etc..') + console.log(ctx) + }, + [flowBolsos2] + ) + +/** + * Declarando flujo principal + */ + +const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) + .addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?']) + .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...']) + .addAnswer( + ['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) + }, + [flowBolsos, flowZapatos] + ) + +const main = async () => { + const adapterDB = new JsonFileAdapter() + const adapterFlow = createFlow([flowPrincipal]) + const adapterProvider = createProvider(VenomProvider) + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} + +main() diff --git a/starters/apps/base-venom-json/package.json b/starters/apps/base-venom-json/package.json new file mode 100644 index 0000000..88d7f6f --- /dev/null +++ b/starters/apps/base-venom-json/package.json @@ -0,0 +1,21 @@ +{ + "name": "bot-whatsapp-base-venom-json", + "version": "1.0.0", + "description": "", + "main": "app.js", + "scripts": { + "pre-copy": "cd .. && yarn run copy.lib base-venom-json", + "start": "node app.js" + }, + "keywords": [], + "dependencies": { + "venom-bot": "4.3.7", + "@bot-whatsapp/bot": "latest", + "@bot-whatsapp/cli": "latest", + "@bot-whatsapp/database": "latest", + "@bot-whatsapp/provider": "latest", + "mime-types": "2.1.35" + }, + "author": "", + "license": "ISC" +} diff --git a/starters/apps/base-wweb-json/README.md b/starters/apps/base-wweb-json/README.md new file mode 100644 index 0000000..d0e43d2 --- /dev/null +++ b/starters/apps/base-wweb-json/README.md @@ -0,0 +1,34 @@ +### CHATBOT Whatsapp + +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 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.. + +__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 +``` + +__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) + +------ +> ¿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-json/app.js b/starters/apps/base-wweb-json/app.js new file mode 100644 index 0000000..80a0cb9 --- /dev/null +++ b/starters/apps/base-wweb-json/app.js @@ -0,0 +1,88 @@ +const { + createBot, + createProvider, + createFlow, + addKeyword, +} = require('@bot-whatsapp/bot') + +const WebWhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp') +const JsonFileAdapter = require('@bot-whatsapp/database/json') + +/** + * 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') + +const flowZapatos2 = addKeyword(['zapatos2', '2']) + .addAnswer('� repito que tengo *MUCHOS* zapatos.') + .addAnswer('y algunas otras cosas.') + +const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) + .addAnswer('� Veo que elegiste zapatos') + .addAnswer('Tengo muchos zapatos...bla bla') + .addAnswer( + ['Manda:', '*(2) Zapatos2*', 'para mas información'], + { capture: true }, + (ctx) => { + console.log('Aqui puedes ver más info del usuario...') + console.log('Puedes enviar un mail, hook, etc..') + console.log(ctx) + }, + [flowZapatos2] + ) + +const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) + .addAnswer('� Veo que elegiste bolsos') + .addAnswer('Tengo muchos bolsos...bla bla') + .addAnswer( + ['Manda:', '*(2) Bolsos2*', 'para mas información.'], + { capture: true }, + (ctx) => { + console.log('Aqui puedes ver más info del usuario...') + console.log('Puedes enviar un mail, hook, etc..') + console.log(ctx) + }, + [flowBolsos2] + ) + +/** + * Declarando flujo principal + */ + +const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) + .addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?']) + .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...']) + .addAnswer( + ['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) + }, + [flowBolsos, flowZapatos] + ) + +const main = async () => { + const adapterDB = new JsonFileAdapter() + const adapterFlow = createFlow([flowPrincipal]) + const adapterProvider = createProvider(WebWhatsappProvider) + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} + +main() diff --git a/starters/apps/base-wweb-json/package.json b/starters/apps/base-wweb-json/package.json new file mode 100644 index 0000000..9abc893 --- /dev/null +++ b/starters/apps/base-wweb-json/package.json @@ -0,0 +1,20 @@ +{ + "name": "bot-whatsapp-base-wweb-json", + "version": "1.0.0", + "description": "", + "main": "app.js", + "scripts": { + "pre-copy": "cd .. && yarn run copy.lib base-wweb-json", + "start": "node app.js" + }, + "keywords": [], + "dependencies": { + "@bot-whatsapp/bot": "latest", + "@bot-whatsapp/cli": "latest", + "@bot-whatsapp/database": "latest", + "@bot-whatsapp/provider": "latest", + "whatsapp-web.js": "1.18.4" + }, + "author": "", + "license": "ISC" +} diff --git a/yarn.lock b/yarn.lock index 710d087..8734c1f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1057,6 +1057,7 @@ __metadata: "@bot-whatsapp/bot": "*" combine-image: ^1.0.3 qr-image: ^3.2.0 + rimraf: ^3.0.2 languageName: unknown linkType: soft From dcbc070ea55a3dca071bbf7a4bc1d1d87969b928 Mon Sep 17 00:00:00 2001 From: leifermendez Date: Tue, 3 Jan 2023 22:10:13 +0000 Subject: [PATCH 147/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From d06294a15afba9f56e87678670bdb1636d50e2da Mon Sep 17 00:00:00 2001 From: leifermendez Date: Tue, 3 Jan 2023 22:10:32 +0000 Subject: [PATCH 148/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From a20499bf3511e03e81c9233619956ebf953b803a Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 3 Jan 2023 23:12:30 +0100 Subject: [PATCH 149/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/releases-dev.yml | 4 ---- .github/workflows/releases.yml | 4 ---- 2 files changed, 8 deletions(-) diff --git a/.github/workflows/releases-dev.yml b/.github/workflows/releases-dev.yml index 0e3871e..c5d5338 100644 --- a/.github/workflows/releases-dev.yml +++ b/.github/workflows/releases-dev.yml @@ -13,10 +13,6 @@ jobs: steps: - name: Checkout uses: actions/checkout@v3 - with: - ref: ${{ github.head_ref }} - persist-credentials: false - fetch-depth: 0 - name: Setup Node uses: actions/setup-node@v3 diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml index b491aca..151cb82 100644 --- a/.github/workflows/releases.yml +++ b/.github/workflows/releases.yml @@ -13,10 +13,6 @@ jobs: steps: - name: Checkout uses: actions/checkout@v3 - with: - ref: ${{ github.head_ref }} - persist-credentials: false - fetch-depth: 0 - name: Set output id: vars From 3c16f8f501748a4dc05d1e0c08e39e1ec83d4895 Mon Sep 17 00:00:00 2001 From: leifermendez Date: Tue, 3 Jan 2023 22:14:10 +0000 Subject: [PATCH 150/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From 19fd788c0f5d6f0660d211e57143ca4232531859 Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Wed, 4 Jan 2023 06:02:37 +0000 Subject: [PATCH 151/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From 49e55088c7d7c52324ba576329f6f849469203c8 Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Wed, 4 Jan 2023 00:22:56 -0600 Subject: [PATCH 152/189] docs: se modifico el README de Starters Se modifico el README de Starters y se corrigieron los emojis de app.js --- starters/apps/base-baileys-json/README.md | 52 ++++++++++-------- starters/apps/base-baileys-memory/README.md | 52 ++++++++++-------- starters/apps/base-baileys-mongo/README.md | 56 ++++++++++---------- starters/apps/base-baileys-mysql/README.md | 58 ++++++++++----------- starters/apps/base-meta-json/README.md | 52 ++++++++++-------- starters/apps/base-meta-json/app.js | 8 +-- starters/apps/base-meta-memory/README.md | 52 ++++++++++-------- starters/apps/base-meta-memory/app.js | 8 +-- starters/apps/base-meta-mongo/README.md | 52 ++++++++++-------- starters/apps/base-meta-mongo/app.js | 8 +-- starters/apps/base-meta-mysql/README.md | 52 ++++++++++-------- starters/apps/base-meta-mysql/app.js | 8 +-- starters/apps/base-twilio-json/README.md | 52 ++++++++++-------- starters/apps/base-twilio-json/app.js | 8 +-- starters/apps/base-twilio-memory/README.md | 52 ++++++++++-------- starters/apps/base-twilio-memory/app.js | 8 +-- starters/apps/base-twilio-mongo/README.md | 56 ++++++++++---------- starters/apps/base-twilio-mongo/app.js | 8 +-- starters/apps/base-twilio-mysql/README.md | 57 ++++++++++---------- starters/apps/base-twilio-mysql/app.js | 8 +-- starters/apps/base-venom-json/README.md | 52 ++++++++++-------- starters/apps/base-venom-json/app.js | 8 +-- starters/apps/base-venom-memory/README.md | 52 ++++++++++-------- starters/apps/base-venom-memory/app.js | 8 +-- starters/apps/base-venom-mongo/README.md | 56 ++++++++++---------- starters/apps/base-venom-mongo/app.js | 8 +-- starters/apps/base-venom-mysql/README.md | 57 ++++++++++---------- starters/apps/base-venom-mysql/app.js | 8 +-- starters/apps/base-wweb-json/README.md | 52 ++++++++++-------- starters/apps/base-wweb-json/app.js | 8 +-- starters/apps/base-wweb-memory/README.md | 52 ++++++++++-------- starters/apps/base-wweb-memory/app.js | 8 +-- starters/apps/base-wweb-mongo/README.md | 56 ++++++++++---------- starters/apps/base-wweb-mongo/app.js | 8 +-- starters/apps/base-wweb-mysql/README.md | 57 ++++++++++---------- starters/apps/base-wweb-mysql/app.js | 8 +-- 36 files changed, 628 insertions(+), 577 deletions(-) diff --git a/starters/apps/base-baileys-json/README.md b/starters/apps/base-baileys-json/README.md index d0e43d2..a31dc9f 100644 --- a/starters/apps/base-baileys-json/README.md +++ b/starters/apps/base-baileys-json/README.md @@ -1,34 +1,40 @@ -### CHATBOT Whatsapp +### CHATBOT Whatsapp (Baileys Provider) -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 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.. -__Iniciar__ +**Con esta librería, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes.  Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin límites. **[Ver más informacion](https://bot-whatsapp.netlify.app/)** -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 +```js +const main = async () => { + const adapterDB = new MockAdapter() + const adapterFlow = createFlow([flowPrincipal]) -Primero se declaran los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. + const adapterProvider = createProvider(BaileysProvider, { + accountSid: process.env.ACC_SID, + authToken: process.env.ACC_TOKEN, + vendorNumber: process.env.ACC_VENDOR, + }) + + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} +``` ``` npm install npm start ``` -__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) - ------- -> ¿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) +--- +## Recursos +- [📄 Documentación](https://bot-whatsapp.netlify.app/) +- [🚀 Roadmap](https://github.com/orgs/codigoencasa/projects/1) +- [💻 Discord](https://link.codigoencasa.com/DISCORD) +- [👌 Twitter](https://twitter.com/leifermendez) +- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) \ No newline at end of file diff --git a/starters/apps/base-baileys-memory/README.md b/starters/apps/base-baileys-memory/README.md index d0e43d2..a31dc9f 100644 --- a/starters/apps/base-baileys-memory/README.md +++ b/starters/apps/base-baileys-memory/README.md @@ -1,34 +1,40 @@ -### CHATBOT Whatsapp +### CHATBOT Whatsapp (Baileys Provider) -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 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.. -__Iniciar__ +**Con esta librería, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes.  Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin límites. **[Ver más informacion](https://bot-whatsapp.netlify.app/)** -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 +```js +const main = async () => { + const adapterDB = new MockAdapter() + const adapterFlow = createFlow([flowPrincipal]) -Primero se declaran los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. + const adapterProvider = createProvider(BaileysProvider, { + accountSid: process.env.ACC_SID, + authToken: process.env.ACC_TOKEN, + vendorNumber: process.env.ACC_VENDOR, + }) + + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} +``` ``` npm install npm start ``` -__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) - ------- -> ¿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) +--- +## Recursos +- [📄 Documentación](https://bot-whatsapp.netlify.app/) +- [🚀 Roadmap](https://github.com/orgs/codigoencasa/projects/1) +- [💻 Discord](https://link.codigoencasa.com/DISCORD) +- [👌 Twitter](https://twitter.com/leifermendez) +- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) \ No newline at end of file diff --git a/starters/apps/base-baileys-mongo/README.md b/starters/apps/base-baileys-mongo/README.md index a22e43b..a31dc9f 100644 --- a/starters/apps/base-baileys-mongo/README.md +++ b/starters/apps/base-baileys-mongo/README.md @@ -1,42 +1,40 @@ -### CHATBOT Whatsapp +### CHATBOT Whatsapp (Baileys Provider) -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 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.. -__Iniciar__ +**Con esta librería, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes.  Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin límites. **[Ver más informacion](https://bot-whatsapp.netlify.app/)** -Recuerda configurar los parametros de conexión de la base de datos: ```js -// app.js +const main = async () => { + const adapterDB = new MockAdapter() + const adapterFlow = createFlow([flowPrincipal]) -const MONGO_DB_URI = 'mongodb://0.0.0.0:27017' -const MONGO_DB_NAME = 'db_bot' + const adapterProvider = createProvider(BaileysProvider, { + accountSid: process.env.ACC_SID, + authToken: process.env.ACC_TOKEN, + vendorNumber: process.env.ACC_VENDOR, + }) + + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} ``` - 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 ``` -__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) - ------- -> ¿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) +--- +## Recursos +- [📄 Documentación](https://bot-whatsapp.netlify.app/) +- [🚀 Roadmap](https://github.com/orgs/codigoencasa/projects/1) +- [💻 Discord](https://link.codigoencasa.com/DISCORD) +- [👌 Twitter](https://twitter.com/leifermendez) +- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) \ No newline at end of file diff --git a/starters/apps/base-baileys-mysql/README.md b/starters/apps/base-baileys-mysql/README.md index 4a1cab2..a31dc9f 100644 --- a/starters/apps/base-baileys-mysql/README.md +++ b/starters/apps/base-baileys-mysql/README.md @@ -1,44 +1,40 @@ -### CHATBOT Whatsapp +### CHATBOT Whatsapp (Baileys Provider) -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 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.. -__Iniciar__ +**Con esta librería, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes.  Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin límites. **[Ver más informacion](https://bot-whatsapp.netlify.app/)** -Recuerda configurar los parametros de conexión de la base de datos ```js -// app.js +const main = async () => { + const adapterDB = new MockAdapter() + const adapterFlow = createFlow([flowPrincipal]) -const MYSQL_DB_HOST = 'localhost' -const MYSQL_DB_USER = 'user' -const MYSQL_DB_PASSWORD = 'pass' -const MYSQL_DB_NAME = 'bot' + const adapterProvider = createProvider(BaileysProvider, { + accountSid: process.env.ACC_SID, + authToken: process.env.ACC_TOKEN, + vendorNumber: process.env.ACC_VENDOR, + }) + + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} ``` -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 ``` -__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) - ------- -> ¿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) +--- +## Recursos +- [📄 Documentación](https://bot-whatsapp.netlify.app/) +- [🚀 Roadmap](https://github.com/orgs/codigoencasa/projects/1) +- [💻 Discord](https://link.codigoencasa.com/DISCORD) +- [👌 Twitter](https://twitter.com/leifermendez) +- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) \ No newline at end of file diff --git a/starters/apps/base-meta-json/README.md b/starters/apps/base-meta-json/README.md index d0e43d2..d7a36af 100644 --- a/starters/apps/base-meta-json/README.md +++ b/starters/apps/base-meta-json/README.md @@ -1,34 +1,40 @@ -### CHATBOT Whatsapp +### CHATBOT Whatsapp (Meta Provider) -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 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.. -__Iniciar__ +**Con esta librería, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes.  Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin límites. **[Ver más informacion](https://bot-whatsapp.netlify.app/)** -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 +```js +const main = async () => { + const adapterDB = new MockAdapter() + const adapterFlow = createFlow([flowPrincipal]) -Primero se declaran los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. + const adapterProvider = createProvider(MetaProvider, { + accountSid: process.env.ACC_SID, + authToken: process.env.ACC_TOKEN, + vendorNumber: process.env.ACC_VENDOR, + }) + + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} +``` ``` npm install npm start ``` -__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) - ------- -> ¿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) +--- +## Recursos +- [📄 Documentación](https://bot-whatsapp.netlify.app/) +- [🚀 Roadmap](https://github.com/orgs/codigoencasa/projects/1) +- [💻 Discord](https://link.codigoencasa.com/DISCORD) +- [👌 Twitter](https://twitter.com/leifermendez) +- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) \ No newline at end of file diff --git a/starters/apps/base-meta-json/app.js b/starters/apps/base-meta-json/app.js index 73a186c..49dd430 100644 --- a/starters/apps/base-meta-json/app.js +++ b/starters/apps/base-meta-json/app.js @@ -21,15 +21,15 @@ const JsonFileAdapter = require('@bot-whatsapp/database/json') */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('� *MUCHOS* bolsos ...') + .addAnswer('🤯 *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('� repito que tengo *MUCHOS* zapatos.') + .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('� Veo que elegiste zapatos') + .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -43,7 +43,7 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('� Veo que elegiste bolsos') + .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], diff --git a/starters/apps/base-meta-memory/README.md b/starters/apps/base-meta-memory/README.md index d0e43d2..d7a36af 100644 --- a/starters/apps/base-meta-memory/README.md +++ b/starters/apps/base-meta-memory/README.md @@ -1,34 +1,40 @@ -### CHATBOT Whatsapp +### CHATBOT Whatsapp (Meta Provider) -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 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.. -__Iniciar__ +**Con esta librería, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes.  Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin límites. **[Ver más informacion](https://bot-whatsapp.netlify.app/)** -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 +```js +const main = async () => { + const adapterDB = new MockAdapter() + const adapterFlow = createFlow([flowPrincipal]) -Primero se declaran los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. + const adapterProvider = createProvider(MetaProvider, { + accountSid: process.env.ACC_SID, + authToken: process.env.ACC_TOKEN, + vendorNumber: process.env.ACC_VENDOR, + }) + + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} +``` ``` npm install npm start ``` -__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) - ------- -> ¿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) +--- +## Recursos +- [📄 Documentación](https://bot-whatsapp.netlify.app/) +- [🚀 Roadmap](https://github.com/orgs/codigoencasa/projects/1) +- [💻 Discord](https://link.codigoencasa.com/DISCORD) +- [👌 Twitter](https://twitter.com/leifermendez) +- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) \ No newline at end of file diff --git a/starters/apps/base-meta-memory/app.js b/starters/apps/base-meta-memory/app.js index e255d90..288929c 100644 --- a/starters/apps/base-meta-memory/app.js +++ b/starters/apps/base-meta-memory/app.js @@ -21,15 +21,15 @@ const MockAdapter = require('@bot-whatsapp/database/mock') */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('� *MUCHOS* bolsos ...') + .addAnswer('🤯 *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('� repito que tengo *MUCHOS* zapatos.') + .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('� Veo que elegiste zapatos') + .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -43,7 +43,7 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('� Veo que elegiste bolsos') + .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], diff --git a/starters/apps/base-meta-mongo/README.md b/starters/apps/base-meta-mongo/README.md index d0e43d2..d7a36af 100644 --- a/starters/apps/base-meta-mongo/README.md +++ b/starters/apps/base-meta-mongo/README.md @@ -1,34 +1,40 @@ -### CHATBOT Whatsapp +### CHATBOT Whatsapp (Meta Provider) -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 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.. -__Iniciar__ +**Con esta librería, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes.  Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin límites. **[Ver más informacion](https://bot-whatsapp.netlify.app/)** -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 +```js +const main = async () => { + const adapterDB = new MockAdapter() + const adapterFlow = createFlow([flowPrincipal]) -Primero se declaran los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. + const adapterProvider = createProvider(MetaProvider, { + accountSid: process.env.ACC_SID, + authToken: process.env.ACC_TOKEN, + vendorNumber: process.env.ACC_VENDOR, + }) + + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} +``` ``` npm install npm start ``` -__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) - ------- -> ¿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) +--- +## Recursos +- [📄 Documentación](https://bot-whatsapp.netlify.app/) +- [🚀 Roadmap](https://github.com/orgs/codigoencasa/projects/1) +- [💻 Discord](https://link.codigoencasa.com/DISCORD) +- [👌 Twitter](https://twitter.com/leifermendez) +- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) \ No newline at end of file diff --git a/starters/apps/base-meta-mongo/app.js b/starters/apps/base-meta-mongo/app.js index 344709b..f40a6a2 100644 --- a/starters/apps/base-meta-mongo/app.js +++ b/starters/apps/base-meta-mongo/app.js @@ -28,15 +28,15 @@ const MONGO_DB_NAME = 'db_bot' */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('� *MUCHOS* bolsos ...') + .addAnswer('🤯 *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('� repito que tengo *MUCHOS* zapatos.') + .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('� Veo que elegiste zapatos') + .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -50,7 +50,7 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('� Veo que elegiste bolsos') + .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], diff --git a/starters/apps/base-meta-mysql/README.md b/starters/apps/base-meta-mysql/README.md index d0e43d2..d7a36af 100644 --- a/starters/apps/base-meta-mysql/README.md +++ b/starters/apps/base-meta-mysql/README.md @@ -1,34 +1,40 @@ -### CHATBOT Whatsapp +### CHATBOT Whatsapp (Meta Provider) -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 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.. -__Iniciar__ +**Con esta librería, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes.  Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin límites. **[Ver más informacion](https://bot-whatsapp.netlify.app/)** -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 +```js +const main = async () => { + const adapterDB = new MockAdapter() + const adapterFlow = createFlow([flowPrincipal]) -Primero se declaran los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. + const adapterProvider = createProvider(MetaProvider, { + accountSid: process.env.ACC_SID, + authToken: process.env.ACC_TOKEN, + vendorNumber: process.env.ACC_VENDOR, + }) + + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} +``` ``` npm install npm start ``` -__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) - ------- -> ¿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) +--- +## Recursos +- [📄 Documentación](https://bot-whatsapp.netlify.app/) +- [🚀 Roadmap](https://github.com/orgs/codigoencasa/projects/1) +- [💻 Discord](https://link.codigoencasa.com/DISCORD) +- [👌 Twitter](https://twitter.com/leifermendez) +- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) \ No newline at end of file diff --git a/starters/apps/base-meta-mysql/app.js b/starters/apps/base-meta-mysql/app.js index 73ead9e..25b171c 100644 --- a/starters/apps/base-meta-mysql/app.js +++ b/starters/apps/base-meta-mysql/app.js @@ -29,15 +29,15 @@ const MYSQL_DB_NAME = 'bot' */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('� *MUCHOS* bolsos ...') + .addAnswer('🤯 *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('� repito que tengo *MUCHOS* zapatos.') + .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('� Veo que elegiste zapatos') + .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -51,7 +51,7 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('� Veo que elegiste bolsos') + .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], diff --git a/starters/apps/base-twilio-json/README.md b/starters/apps/base-twilio-json/README.md index d0e43d2..2734fe9 100644 --- a/starters/apps/base-twilio-json/README.md +++ b/starters/apps/base-twilio-json/README.md @@ -1,34 +1,40 @@ -### CHATBOT Whatsapp +### CHATBOT Whatsapp (Twilio Provider) -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 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.. -__Iniciar__ +**Con esta librería, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes.  Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin límites. **[Ver más informacion](https://bot-whatsapp.netlify.app/)** -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 +```js +const main = async () => { + const adapterDB = new MockAdapter() + const adapterFlow = createFlow([flowPrincipal]) -Primero se declaran los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. + const adapterProvider = createProvider(TwilioProvider, { + accountSid: process.env.ACC_SID, + authToken: process.env.ACC_TOKEN, + vendorNumber: process.env.ACC_VENDOR, + }) + + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} +``` ``` npm install npm start ``` -__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) - ------- -> ¿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) +--- +## Recursos +- [📄 Documentación](https://bot-whatsapp.netlify.app/) +- [🚀 Roadmap](https://github.com/orgs/codigoencasa/projects/1) +- [💻 Discord](https://link.codigoencasa.com/DISCORD) +- [👌 Twitter](https://twitter.com/leifermendez) +- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) \ No newline at end of file diff --git a/starters/apps/base-twilio-json/app.js b/starters/apps/base-twilio-json/app.js index c70577c..190e842 100644 --- a/starters/apps/base-twilio-json/app.js +++ b/starters/apps/base-twilio-json/app.js @@ -21,15 +21,15 @@ const JsonFileAdapter = require('@bot-whatsapp/database/json') */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('� *MUCHOS* bolsos ...') + .addAnswer('🤯 *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('� repito que tengo *MUCHOS* zapatos.') + .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('� Veo que elegiste zapatos') + .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -43,7 +43,7 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('� Veo que elegiste bolsos') + .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], diff --git a/starters/apps/base-twilio-memory/README.md b/starters/apps/base-twilio-memory/README.md index d0e43d2..2734fe9 100644 --- a/starters/apps/base-twilio-memory/README.md +++ b/starters/apps/base-twilio-memory/README.md @@ -1,34 +1,40 @@ -### CHATBOT Whatsapp +### CHATBOT Whatsapp (Twilio Provider) -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 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.. -__Iniciar__ +**Con esta librería, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes.  Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin límites. **[Ver más informacion](https://bot-whatsapp.netlify.app/)** -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 +```js +const main = async () => { + const adapterDB = new MockAdapter() + const adapterFlow = createFlow([flowPrincipal]) -Primero se declaran los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. + const adapterProvider = createProvider(TwilioProvider, { + accountSid: process.env.ACC_SID, + authToken: process.env.ACC_TOKEN, + vendorNumber: process.env.ACC_VENDOR, + }) + + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} +``` ``` npm install npm start ``` -__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) - ------- -> ¿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) +--- +## Recursos +- [📄 Documentación](https://bot-whatsapp.netlify.app/) +- [🚀 Roadmap](https://github.com/orgs/codigoencasa/projects/1) +- [💻 Discord](https://link.codigoencasa.com/DISCORD) +- [👌 Twitter](https://twitter.com/leifermendez) +- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) \ No newline at end of file diff --git a/starters/apps/base-twilio-memory/app.js b/starters/apps/base-twilio-memory/app.js index 144e753..9730709 100644 --- a/starters/apps/base-twilio-memory/app.js +++ b/starters/apps/base-twilio-memory/app.js @@ -21,15 +21,15 @@ const MockAdapter = require('@bot-whatsapp/database/mock') */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('� *MUCHOS* bolsos ...') + .addAnswer('🤯 *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('� repito que tengo *MUCHOS* zapatos.') + .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('� Veo que elegiste zapatos') + .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -43,7 +43,7 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('� Veo que elegiste bolsos') + .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], diff --git a/starters/apps/base-twilio-mongo/README.md b/starters/apps/base-twilio-mongo/README.md index 0791742..2734fe9 100644 --- a/starters/apps/base-twilio-mongo/README.md +++ b/starters/apps/base-twilio-mongo/README.md @@ -1,42 +1,40 @@ -### CHATBOT Whatsapp +### CHATBOT Whatsapp (Twilio Provider) -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 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.. -__Iniciar__ +**Con esta librería, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes.  Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin límites. **[Ver más informacion](https://bot-whatsapp.netlify.app/)** -Recuerda configurar los parametros de conexion de la base de datos ```js -// app.js +const main = async () => { + const adapterDB = new MockAdapter() + const adapterFlow = createFlow([flowPrincipal]) -const MONGO_DB_URI = 'mongodb://0.0.0.0:27017' -const MONGO_DB_NAME = 'db_bot' + const adapterProvider = createProvider(TwilioProvider, { + accountSid: process.env.ACC_SID, + authToken: process.env.ACC_TOKEN, + vendorNumber: process.env.ACC_VENDOR, + }) + + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} ``` - 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 ``` -__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) - ------- -> ¿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) +--- +## Recursos +- [📄 Documentación](https://bot-whatsapp.netlify.app/) +- [🚀 Roadmap](https://github.com/orgs/codigoencasa/projects/1) +- [💻 Discord](https://link.codigoencasa.com/DISCORD) +- [👌 Twitter](https://twitter.com/leifermendez) +- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) \ No newline at end of file diff --git a/starters/apps/base-twilio-mongo/app.js b/starters/apps/base-twilio-mongo/app.js index 1f9a59e..9e5e3f7 100644 --- a/starters/apps/base-twilio-mongo/app.js +++ b/starters/apps/base-twilio-mongo/app.js @@ -28,15 +28,15 @@ const MONGO_DB_NAME = 'db_bot' */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('� *MUCHOS* bolsos ...') + .addAnswer('🤯 *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('� repito que tengo *MUCHOS* zapatos.') + .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('� Veo que elegiste zapatos') + .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -50,7 +50,7 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('� Veo que elegiste bolsos') + .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], diff --git a/starters/apps/base-twilio-mysql/README.md b/starters/apps/base-twilio-mysql/README.md index ad304ee..2734fe9 100644 --- a/starters/apps/base-twilio-mysql/README.md +++ b/starters/apps/base-twilio-mysql/README.md @@ -1,43 +1,40 @@ -### CHATBOT Whatsapp +### CHATBOT Whatsapp (Twilio Provider) -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 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.. -__Iniciar__ +**Con esta librería, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes.  Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin límites. **[Ver más informacion](https://bot-whatsapp.netlify.app/)** -Recuerda configurar los parametros de conexión de la base de datos ```js -// app.js +const main = async () => { + const adapterDB = new MockAdapter() + const adapterFlow = createFlow([flowPrincipal]) -const MYSQL_DB_HOST = 'localhost' -const MYSQL_DB_USER = 'user' -const MYSQL_DB_PASSWORD = 'pass' -const MYSQL_DB_NAME = 'bot' + const adapterProvider = createProvider(TwilioProvider, { + accountSid: process.env.ACC_SID, + authToken: process.env.ACC_TOKEN, + vendorNumber: process.env.ACC_VENDOR, + }) + + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} ``` -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 ``` -__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) - ------- -> ¿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) +--- +## Recursos +- [📄 Documentación](https://bot-whatsapp.netlify.app/) +- [🚀 Roadmap](https://github.com/orgs/codigoencasa/projects/1) +- [💻 Discord](https://link.codigoencasa.com/DISCORD) +- [👌 Twitter](https://twitter.com/leifermendez) +- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) \ No newline at end of file diff --git a/starters/apps/base-twilio-mysql/app.js b/starters/apps/base-twilio-mysql/app.js index c011c62..7100f9c 100644 --- a/starters/apps/base-twilio-mysql/app.js +++ b/starters/apps/base-twilio-mysql/app.js @@ -30,15 +30,15 @@ const MYSQL_DB_NAME = 'bot' */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('� *MUCHOS* bolsos ...') + .addAnswer('🤯 *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('� repito que tengo *MUCHOS* zapatos.') + .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('� Veo que elegiste zapatos') + .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -52,7 +52,7 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('� Veo que elegiste bolsos') + .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], diff --git a/starters/apps/base-venom-json/README.md b/starters/apps/base-venom-json/README.md index d0e43d2..dd6636b 100644 --- a/starters/apps/base-venom-json/README.md +++ b/starters/apps/base-venom-json/README.md @@ -1,34 +1,40 @@ -### CHATBOT Whatsapp +### CHATBOT Whatsapp (Venom Provider) -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 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.. -__Iniciar__ +**Con esta librería, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes.  Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin límites. **[Ver más informacion](https://bot-whatsapp.netlify.app/)** -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 +```js +const main = async () => { + const adapterDB = new MockAdapter() + const adapterFlow = createFlow([flowPrincipal]) -Primero se declaran los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. + const adapterProvider = createProvider(VenomProvider, { + accountSid: process.env.ACC_SID, + authToken: process.env.ACC_TOKEN, + vendorNumber: process.env.ACC_VENDOR, + }) + + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} +``` ``` npm install npm start ``` -__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) - ------- -> ¿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) +--- +## Recursos +- [📄 Documentación](https://bot-whatsapp.netlify.app/) +- [🚀 Roadmap](https://github.com/orgs/codigoencasa/projects/1) +- [💻 Discord](https://link.codigoencasa.com/DISCORD) +- [👌 Twitter](https://twitter.com/leifermendez) +- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) \ No newline at end of file diff --git a/starters/apps/base-venom-json/app.js b/starters/apps/base-venom-json/app.js index d0e2790..8a223b2 100644 --- a/starters/apps/base-venom-json/app.js +++ b/starters/apps/base-venom-json/app.js @@ -21,15 +21,15 @@ const JsonFileAdapter = require('@bot-whatsapp/database/json') */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('� *MUCHOS* bolsos ...') + .addAnswer('🤯 *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('� repito que tengo *MUCHOS* zapatos.') + .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('� Veo que elegiste zapatos') + .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -43,7 +43,7 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('� Veo que elegiste bolsos') + .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], diff --git a/starters/apps/base-venom-memory/README.md b/starters/apps/base-venom-memory/README.md index d0e43d2..dd6636b 100644 --- a/starters/apps/base-venom-memory/README.md +++ b/starters/apps/base-venom-memory/README.md @@ -1,34 +1,40 @@ -### CHATBOT Whatsapp +### CHATBOT Whatsapp (Venom Provider) -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 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.. -__Iniciar__ +**Con esta librería, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes.  Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin límites. **[Ver más informacion](https://bot-whatsapp.netlify.app/)** -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 +```js +const main = async () => { + const adapterDB = new MockAdapter() + const adapterFlow = createFlow([flowPrincipal]) -Primero se declaran los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. + const adapterProvider = createProvider(VenomProvider, { + accountSid: process.env.ACC_SID, + authToken: process.env.ACC_TOKEN, + vendorNumber: process.env.ACC_VENDOR, + }) + + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} +``` ``` npm install npm start ``` -__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) - ------- -> ¿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) +--- +## Recursos +- [📄 Documentación](https://bot-whatsapp.netlify.app/) +- [🚀 Roadmap](https://github.com/orgs/codigoencasa/projects/1) +- [💻 Discord](https://link.codigoencasa.com/DISCORD) +- [👌 Twitter](https://twitter.com/leifermendez) +- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) \ No newline at end of file diff --git a/starters/apps/base-venom-memory/app.js b/starters/apps/base-venom-memory/app.js index 1c01403..44750c4 100644 --- a/starters/apps/base-venom-memory/app.js +++ b/starters/apps/base-venom-memory/app.js @@ -21,15 +21,15 @@ const MockAdapter = require('@bot-whatsapp/database/mock') */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('� *MUCHOS* bolsos ...') + .addAnswer('🤯 *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('� repito que tengo *MUCHOS* zapatos.') + .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('� Veo que elegiste zapatos') + .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -43,7 +43,7 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('� Veo que elegiste bolsos') + .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], diff --git a/starters/apps/base-venom-mongo/README.md b/starters/apps/base-venom-mongo/README.md index b2bf791..dd6636b 100644 --- a/starters/apps/base-venom-mongo/README.md +++ b/starters/apps/base-venom-mongo/README.md @@ -1,42 +1,40 @@ -### CHATBOT Whatsapp +### CHATBOT Whatsapp (Venom Provider) -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 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.. -__Iniciar__ +**Con esta librería, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes.  Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin límites. **[Ver más informacion](https://bot-whatsapp.netlify.app/)** -Recuerda configurar los parametros de conexión de la base de datos. ```js -// app.js +const main = async () => { + const adapterDB = new MockAdapter() + const adapterFlow = createFlow([flowPrincipal]) -const MONGO_DB_URI = 'mongodb://0.0.0.0:27017' -const MONGO_DB_NAME = 'db_bot' + const adapterProvider = createProvider(VenomProvider, { + accountSid: process.env.ACC_SID, + authToken: process.env.ACC_TOKEN, + vendorNumber: process.env.ACC_VENDOR, + }) + + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} ``` - 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 ``` -__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) - ------- -> ¿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) +--- +## Recursos +- [📄 Documentación](https://bot-whatsapp.netlify.app/) +- [🚀 Roadmap](https://github.com/orgs/codigoencasa/projects/1) +- [💻 Discord](https://link.codigoencasa.com/DISCORD) +- [👌 Twitter](https://twitter.com/leifermendez) +- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) \ No newline at end of file diff --git a/starters/apps/base-venom-mongo/app.js b/starters/apps/base-venom-mongo/app.js index c466b75..266e2e0 100644 --- a/starters/apps/base-venom-mongo/app.js +++ b/starters/apps/base-venom-mongo/app.js @@ -28,15 +28,15 @@ const MONGO_DB_NAME = 'db_bot' */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('� *MUCHOS* bolsos ...') + .addAnswer('🤯 *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('� repito que tengo *MUCHOS* zapatos.') + .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('� Veo que elegiste zapatos') + .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -50,7 +50,7 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('� Veo que elegiste bolsos') + .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], diff --git a/starters/apps/base-venom-mysql/README.md b/starters/apps/base-venom-mysql/README.md index ad304ee..dd6636b 100644 --- a/starters/apps/base-venom-mysql/README.md +++ b/starters/apps/base-venom-mysql/README.md @@ -1,43 +1,40 @@ -### CHATBOT Whatsapp +### CHATBOT Whatsapp (Venom Provider) -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 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.. -__Iniciar__ +**Con esta librería, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes.  Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin límites. **[Ver más informacion](https://bot-whatsapp.netlify.app/)** -Recuerda configurar los parametros de conexión de la base de datos ```js -// app.js +const main = async () => { + const adapterDB = new MockAdapter() + const adapterFlow = createFlow([flowPrincipal]) -const MYSQL_DB_HOST = 'localhost' -const MYSQL_DB_USER = 'user' -const MYSQL_DB_PASSWORD = 'pass' -const MYSQL_DB_NAME = 'bot' + const adapterProvider = createProvider(VenomProvider, { + accountSid: process.env.ACC_SID, + authToken: process.env.ACC_TOKEN, + vendorNumber: process.env.ACC_VENDOR, + }) + + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} ``` -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 ``` -__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) - ------- -> ¿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) +--- +## Recursos +- [📄 Documentación](https://bot-whatsapp.netlify.app/) +- [🚀 Roadmap](https://github.com/orgs/codigoencasa/projects/1) +- [💻 Discord](https://link.codigoencasa.com/DISCORD) +- [👌 Twitter](https://twitter.com/leifermendez) +- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) \ No newline at end of file diff --git a/starters/apps/base-venom-mysql/app.js b/starters/apps/base-venom-mysql/app.js index ed5bc78..fe19fa5 100644 --- a/starters/apps/base-venom-mysql/app.js +++ b/starters/apps/base-venom-mysql/app.js @@ -30,15 +30,15 @@ const MYSQL_DB_NAME = 'bot' */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('� *MUCHOS* bolsos ...') + .addAnswer('🤯 *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('� repito que tengo *MUCHOS* zapatos.') + .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('� Veo que elegiste zapatos') + .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -52,7 +52,7 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('� Veo que elegiste bolsos') + .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], diff --git a/starters/apps/base-wweb-json/README.md b/starters/apps/base-wweb-json/README.md index d0e43d2..82f57e3 100644 --- a/starters/apps/base-wweb-json/README.md +++ b/starters/apps/base-wweb-json/README.md @@ -1,34 +1,40 @@ -### CHATBOT Whatsapp +### CHATBOT Whatsapp (WebWhatsapp Provider) -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 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.. -__Iniciar__ +**Con esta librería, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes.  Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin límites. **[Ver más informacion](https://bot-whatsapp.netlify.app/)** -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 +```js +const main = async () => { + const adapterDB = new MockAdapter() + const adapterFlow = createFlow([flowPrincipal]) -Primero se declaran los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. + const adapterProvider = createProvider(WebWhatsappProvider, { + accountSid: process.env.ACC_SID, + authToken: process.env.ACC_TOKEN, + vendorNumber: process.env.ACC_VENDOR, + }) + + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} +``` ``` npm install npm start ``` -__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) - ------- -> ¿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) +--- +## Recursos +- [📄 Documentación](https://bot-whatsapp.netlify.app/) +- [🚀 Roadmap](https://github.com/orgs/codigoencasa/projects/1) +- [💻 Discord](https://link.codigoencasa.com/DISCORD) +- [👌 Twitter](https://twitter.com/leifermendez) +- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) \ No newline at end of file diff --git a/starters/apps/base-wweb-json/app.js b/starters/apps/base-wweb-json/app.js index 80a0cb9..2b8a55d 100644 --- a/starters/apps/base-wweb-json/app.js +++ b/starters/apps/base-wweb-json/app.js @@ -21,15 +21,15 @@ const JsonFileAdapter = require('@bot-whatsapp/database/json') */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('� *MUCHOS* bolsos ...') + .addAnswer('🤯 *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('� repito que tengo *MUCHOS* zapatos.') + .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('� Veo que elegiste zapatos') + .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -43,7 +43,7 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('� Veo que elegiste bolsos') + .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], diff --git a/starters/apps/base-wweb-memory/README.md b/starters/apps/base-wweb-memory/README.md index d0e43d2..82f57e3 100644 --- a/starters/apps/base-wweb-memory/README.md +++ b/starters/apps/base-wweb-memory/README.md @@ -1,34 +1,40 @@ -### CHATBOT Whatsapp +### CHATBOT Whatsapp (WebWhatsapp Provider) -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 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.. -__Iniciar__ +**Con esta librería, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes.  Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin límites. **[Ver más informacion](https://bot-whatsapp.netlify.app/)** -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 +```js +const main = async () => { + const adapterDB = new MockAdapter() + const adapterFlow = createFlow([flowPrincipal]) -Primero se declaran los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. + const adapterProvider = createProvider(WebWhatsappProvider, { + accountSid: process.env.ACC_SID, + authToken: process.env.ACC_TOKEN, + vendorNumber: process.env.ACC_VENDOR, + }) + + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} +``` ``` npm install npm start ``` -__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) - ------- -> ¿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) +--- +## Recursos +- [📄 Documentación](https://bot-whatsapp.netlify.app/) +- [🚀 Roadmap](https://github.com/orgs/codigoencasa/projects/1) +- [💻 Discord](https://link.codigoencasa.com/DISCORD) +- [👌 Twitter](https://twitter.com/leifermendez) +- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) \ No newline at end of file diff --git a/starters/apps/base-wweb-memory/app.js b/starters/apps/base-wweb-memory/app.js index 8b6acad..1e47221 100644 --- a/starters/apps/base-wweb-memory/app.js +++ b/starters/apps/base-wweb-memory/app.js @@ -21,15 +21,15 @@ const MockAdapter = require('@bot-whatsapp/database/mock') */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('� *MUCHOS* bolsos ...') + .addAnswer('🤯 *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('� repito que tengo *MUCHOS* zapatos.') + .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('� Veo que elegiste zapatos') + .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -43,7 +43,7 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('� Veo que elegiste bolsos') + .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], diff --git a/starters/apps/base-wweb-mongo/README.md b/starters/apps/base-wweb-mongo/README.md index a22e43b..82f57e3 100644 --- a/starters/apps/base-wweb-mongo/README.md +++ b/starters/apps/base-wweb-mongo/README.md @@ -1,42 +1,40 @@ -### CHATBOT Whatsapp +### CHATBOT Whatsapp (WebWhatsapp Provider) -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 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.. -__Iniciar__ +**Con esta librería, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes.  Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin límites. **[Ver más informacion](https://bot-whatsapp.netlify.app/)** -Recuerda configurar los parametros de conexión de la base de datos: ```js -// app.js +const main = async () => { + const adapterDB = new MockAdapter() + const adapterFlow = createFlow([flowPrincipal]) -const MONGO_DB_URI = 'mongodb://0.0.0.0:27017' -const MONGO_DB_NAME = 'db_bot' + const adapterProvider = createProvider(WebWhatsappProvider, { + accountSid: process.env.ACC_SID, + authToken: process.env.ACC_TOKEN, + vendorNumber: process.env.ACC_VENDOR, + }) + + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} ``` - 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 ``` -__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) - ------- -> ¿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) +--- +## Recursos +- [📄 Documentación](https://bot-whatsapp.netlify.app/) +- [🚀 Roadmap](https://github.com/orgs/codigoencasa/projects/1) +- [💻 Discord](https://link.codigoencasa.com/DISCORD) +- [👌 Twitter](https://twitter.com/leifermendez) +- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) \ No newline at end of file diff --git a/starters/apps/base-wweb-mongo/app.js b/starters/apps/base-wweb-mongo/app.js index ae3ee40..e78f1b1 100644 --- a/starters/apps/base-wweb-mongo/app.js +++ b/starters/apps/base-wweb-mongo/app.js @@ -28,15 +28,15 @@ const MONGO_DB_NAME = 'db_bot' */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('� *MUCHOS* bolsos ...') + .addAnswer('🤯 *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('� repito que tengo *MUCHOS* zapatos.') + .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('� Veo que elegiste zapatos') + .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -50,7 +50,7 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('� Veo que elegiste bolsos') + .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], diff --git a/starters/apps/base-wweb-mysql/README.md b/starters/apps/base-wweb-mysql/README.md index ad304ee..82f57e3 100644 --- a/starters/apps/base-wweb-mysql/README.md +++ b/starters/apps/base-wweb-mysql/README.md @@ -1,43 +1,40 @@ -### CHATBOT Whatsapp +### CHATBOT Whatsapp (WebWhatsapp Provider) -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 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.. -__Iniciar__ +**Con esta librería, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes.  Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin límites. **[Ver más informacion](https://bot-whatsapp.netlify.app/)** -Recuerda configurar los parametros de conexión de la base de datos ```js -// app.js +const main = async () => { + const adapterDB = new MockAdapter() + const adapterFlow = createFlow([flowPrincipal]) -const MYSQL_DB_HOST = 'localhost' -const MYSQL_DB_USER = 'user' -const MYSQL_DB_PASSWORD = 'pass' -const MYSQL_DB_NAME = 'bot' + const adapterProvider = createProvider(WebWhatsappProvider, { + accountSid: process.env.ACC_SID, + authToken: process.env.ACC_TOKEN, + vendorNumber: process.env.ACC_VENDOR, + }) + + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} ``` -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 ``` -__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) - ------- -> ¿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) +--- +## Recursos +- [📄 Documentación](https://bot-whatsapp.netlify.app/) +- [🚀 Roadmap](https://github.com/orgs/codigoencasa/projects/1) +- [💻 Discord](https://link.codigoencasa.com/DISCORD) +- [👌 Twitter](https://twitter.com/leifermendez) +- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) \ No newline at end of file diff --git a/starters/apps/base-wweb-mysql/app.js b/starters/apps/base-wweb-mysql/app.js index e6341cb..2d92136 100644 --- a/starters/apps/base-wweb-mysql/app.js +++ b/starters/apps/base-wweb-mysql/app.js @@ -30,15 +30,15 @@ const MYSQL_DB_NAME = 'bot' */ const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('� *MUCHOS* bolsos ...') + .addAnswer('🤯 *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('� repito que tengo *MUCHOS* zapatos.') + .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('� Veo que elegiste zapatos') + .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( ['Manda:', '*(2) Zapatos2*', 'para mas información'], @@ -52,7 +52,7 @@ const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) ) const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('� Veo que elegiste bolsos') + .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( ['Manda:', '*(2) Bolsos2*', 'para mas información.'], From 47a59dc989d529b2fab378333f32a3a5be87c8e6 Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Wed, 4 Jan 2023 06:24:31 +0000 Subject: [PATCH 153/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From ae83774365027e2e86127ab7713ae9ee2df31f33 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 4 Jan 2023 22:12:39 +0100 Subject: [PATCH 154/189] fix(provider): :zap: baileys fix restart --- packages/provider/src/baileys/index.js | 41 +++++++++++++++----------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/packages/provider/src/baileys/index.js b/packages/provider/src/baileys/index.js index 90d63a7..3b46135 100644 --- a/packages/provider/src/baileys/index.js +++ b/packages/provider/src/baileys/index.js @@ -37,7 +37,7 @@ class BaileysProvider extends ProviderClass { saveCredsGlobal = null constructor() { super() - this.initBailey().then(() => this.initBusEvents()) + this.initBailey().then() } /** @@ -63,18 +63,28 @@ class BaileysProvider extends ProviderClass { const statusCode = lastDisconnect?.error?.output?.statusCode - if (statusCode === DisconnectReason.loggedOut) { - rimraf(PATH_BASE, (err) => { - if (err) return - }) + /** Conexion cerrada por diferentes motivos */ + if (connection === 'close') { + if (statusCode !== DisconnectReason.loggedOut) { + this.initBailey() + } - this.initBailey() + if (statusCode === DisconnectReason.loggedOut) { + rimraf(PATH_BASE, (err) => { + if (err) return + }) + + this.initBailey() + } } - if (statusCode && statusCode !== DisconnectReason.loggedOut) { - this.initBailey() + /** Conexion abierta correctamente */ + if (connection === 'open') { + this.emit('ready', true) + this.initBusEvents(sock) } + /** QR Code */ if (qr) { this.emit('require_action', { instructions: [ @@ -85,11 +95,11 @@ class BaileysProvider extends ProviderClass { }) await baileyGenerateImage(qr) } - - if (connection === 'open') this.emit('ready', true) }) - this.vendor = sock + sock.ev.on('creds.update', async () => { + await saveCreds() + }) } catch (e) { logger.log(e) this.emit('auth_failure', [ @@ -108,12 +118,6 @@ class BaileysProvider extends ProviderClass { * @returns */ busEvents = () => [ - { - event: 'creds.update', - func: async () => { - await this.saveCredsGlobal() - }, - }, { event: 'messages.upsert', func: ({ messages, type }) => { @@ -144,7 +148,8 @@ class BaileysProvider extends ProviderClass { }, ] - initBusEvents = () => { + initBusEvents = (_sock) => { + this.vendor = _sock const listEvents = this.busEvents() for (const { event, func } of listEvents) { From 8a7ee09211946577816cd017d048834c28cdab4e Mon Sep 17 00:00:00 2001 From: leifermendez Date: Wed, 4 Jan 2023 21:14:21 +0000 Subject: [PATCH 155/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From f7da73050db8b05ca4a7d2cce1edb8459a413edb Mon Sep 17 00:00:00 2001 From: leifermendez Date: Wed, 4 Jan 2023 21:14:38 +0000 Subject: [PATCH 156/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From 5ae588e9cb4419db8476e47fbdf59eff7f46dc46 Mon Sep 17 00:00:00 2001 From: leifermendez Date: Wed, 4 Jan 2023 21:16:24 +0000 Subject: [PATCH 157/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From 5ce9d82c6d3227925b4b55910fa860e8472d772e Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 4 Jan 2023 22:28:41 +0100 Subject: [PATCH 158/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/releases-dev.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/releases-dev.yml b/.github/workflows/releases-dev.yml index c5d5338..a2d9979 100644 --- a/.github/workflows/releases-dev.yml +++ b/.github/workflows/releases-dev.yml @@ -48,3 +48,4 @@ jobs: uses: stefanzweifel/git-auto-commit-action@v4 with: commit_message: 'ci(version): :zap: automatic - "${date}" updated versions every packages' + branch: dev From 6d6a4aea8402d5bd0227f0764c02421be910a404 Mon Sep 17 00:00:00 2001 From: leifermendez Date: Wed, 4 Jan 2023 21:30:24 +0000 Subject: [PATCH 159/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From bed4422e443d802287793f4ab1d3634a675de84a Mon Sep 17 00:00:00 2001 From: leifermendez Date: Wed, 4 Jan 2023 21:30:32 +0000 Subject: [PATCH 160/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From 7d22a474089b5feba9597726704a97ec205a65b4 Mon Sep 17 00:00:00 2001 From: leifermendez Date: Wed, 4 Jan 2023 21:31:23 +0000 Subject: [PATCH 161/189] 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 beea8cf..dce6a40 100644 --- a/packages/bot/package.json +++ b/packages/bot/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/bot", - "version": "0.0.31-alpha.0", + "version": "0.0.37-alpha.0", "description": "", "main": "./lib/bundle.bot.cjs", "scripts": { diff --git a/packages/cli/package.json b/packages/cli/package.json index c5287d2..3972e00 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/cli", - "version": "0.0.38-alpha.0", + "version": "0.0.44-alpha.0", "description": "", "main": "index.js", "devDependencies": { diff --git a/packages/create-bot-whatsapp/package.json b/packages/create-bot-whatsapp/package.json index 252b6c8..427a7c7 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.49-alpha.0", + "version": "0.0.55-alpha.0", "description": "", "main": "./lib/bundle.create-bot-whatsapp.cjs", "files": [ diff --git a/packages/database/package.json b/packages/database/package.json index c707e02..f34a87d 100644 --- a/packages/database/package.json +++ b/packages/database/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/database", - "version": "0.0.30-alpha.0", + "version": "0.0.36-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 238ca50..7471853 100644 --- a/packages/provider/package.json +++ b/packages/provider/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/provider", - "version": "0.0.36-alpha.0", + "version": "0.0.42-alpha.0", "description": "Esto es el conector a Twilio, Meta, etc...", "main": "./lib/mock/index.cjs", "keywords": [], From aa5aa99d7f4fd9b659fc562b2aeacfaa620a5bf0 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 4 Jan 2023 22:43:24 +0100 Subject: [PATCH 162/189] build: :rocket: pre-release warm --- .github/workflows/releases.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml index 151cb82..ac91a75 100644 --- a/.github/workflows/releases.yml +++ b/.github/workflows/releases.yml @@ -51,4 +51,5 @@ jobs: - name: Commit Versioning & Push changes uses: stefanzweifel/git-auto-commit-action@v4 with: - commit_message: 'ci(version): :zap: automatic - "${date}" updated versions every packages' + commit_message: 'release(version): 🚀 - "${{ steps.vars.outputs.tag }}" release' + branch: dev From a3403dfd9294bfb8cc2e5bb88b5dd5ff7fff15cc Mon Sep 17 00:00:00 2001 From: leifermendez Date: Wed, 4 Jan 2023 21:47:04 +0000 Subject: [PATCH 163/189] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated?= =?UTF-8?q?=20versions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From 6e8e8090fb814d01834d4aac3e83ae2b70a10bfa Mon Sep 17 00:00:00 2001 From: leifermendez Date: Wed, 4 Jan 2023 21:47:54 +0000 Subject: [PATCH 164/189] 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 dce6a40..4879bc8 100644 --- a/packages/bot/package.json +++ b/packages/bot/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/bot", - "version": "0.0.37-alpha.0", + "version": "0.0.38-alpha.0", "description": "", "main": "./lib/bundle.bot.cjs", "scripts": { diff --git a/packages/cli/package.json b/packages/cli/package.json index 3972e00..34a71d0 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/cli", - "version": "0.0.44-alpha.0", + "version": "0.0.45-alpha.0", "description": "", "main": "index.js", "devDependencies": { diff --git a/packages/create-bot-whatsapp/package.json b/packages/create-bot-whatsapp/package.json index 427a7c7..2a07645 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.55-alpha.0", + "version": "0.0.56-alpha.0", "description": "", "main": "./lib/bundle.create-bot-whatsapp.cjs", "files": [ diff --git a/packages/database/package.json b/packages/database/package.json index f34a87d..3fd67f3 100644 --- a/packages/database/package.json +++ b/packages/database/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/database", - "version": "0.0.36-alpha.0", + "version": "0.0.37-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 7471853..fa98f64 100644 --- a/packages/provider/package.json +++ b/packages/provider/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/provider", - "version": "0.0.42-alpha.0", + "version": "0.0.43-alpha.0", "description": "Esto es el conector a Twilio, Meta, etc...", "main": "./lib/mock/index.cjs", "keywords": [], From 022a3b7d8e4eb15e4557b21330ffc1f1239e602c Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 4 Jan 2023 22:58:42 +0100 Subject: [PATCH 165/189] chore(release): 0.1.3 --- CHANGELOG.md | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 108 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9fd0fa5..dafc64e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,113 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +### [0.1.3](https://github.com/leifermendez/bot-whatsapp/compare/v0.1.2...v0.1.3) (2023-01-04) + + +### Features + +* **adapter:** :zap: send messages with dialogflow ([c20e151](https://github.com/leifermendez/bot-whatsapp/commit/c20e151e209d33de9e7425a64f003c85360f1832)) +* **baileys:** added more methods ([1b23b83](https://github.com/leifermendez/bot-whatsapp/commit/1b23b837460ce4533ff33f10f1de5e3a344a5623)) +* **bot:** :zap: http responses support ([e331c2d](https://github.com/leifermendez/bot-whatsapp/commit/e331c2dcc40eeb82a93f9d29f6a82333b8465927)) +* **bot:** :zap: http responses support ([2d2bb08](https://github.com/leifermendez/bot-whatsapp/commit/2d2bb085cd95604a84ca3fe5c4ddc84b3824ac1c)) +* **bot:** :zap: rev-03 everything work fine ([3012e02](https://github.com/leifermendez/bot-whatsapp/commit/3012e026b77ab4e99334b992d166a89189f76503)) +* **cli:** :sparkles: added bailey ([06acec2](https://github.com/leifermendez/bot-whatsapp/commit/06acec2bf29d72c2b46f4ce81fed115bab97351f)) +* **cli:** :sparkles: added bailey ([c868f73](https://github.com/leifermendez/bot-whatsapp/commit/c868f7346245bec94582b25a342febc657926c9d)) +* **conflict:** :zap: remove unused variable ([eba9229](https://github.com/leifermendez/bot-whatsapp/commit/eba92299cfd84c971f09697d027043f19eec2b7c)) +* **contexts:** :zap: add new dialogflowcx ([4d8cf62](https://github.com/leifermendez/bot-whatsapp/commit/4d8cf623ff86b3d08c8d52293d4e289dfda68e1c)) +* **contexts:** :zap: add new dialogflowcx ([9885872](https://github.com/leifermendez/bot-whatsapp/commit/98858729919b2544dace07c49badce7888ddfd82)) +* **contexts:** dialogflowcx support ([9179421](https://github.com/leifermendez/bot-whatsapp/commit/917942139f9736f1c0f8ce5f07b4e12e5768b0c7)) +* correccion de flujos en app.js de ejemplo ([99f508f](https://github.com/leifermendez/bot-whatsapp/commit/99f508f93889d70240861158bc304c25a3b2daef)) +* **docs:** master class updated ([69fd81a](https://github.com/leifermendez/bot-whatsapp/commit/69fd81a565e61b249ac50917585293d2d84e3dd4)) +* **docs:** master class updated ([d522b03](https://github.com/leifermendez/bot-whatsapp/commit/d522b03e2e6e6e3f7c467c59e3d2d6f288fe37b2)) +* **provider:** :bug: dialogflow ([4ec6f1e](https://github.com/leifermendez/bot-whatsapp/commit/4ec6f1e120879e545fa111615f2d79b792d947a5)) +* **provider:** :sparkles: added dialogflow ([2f633c7](https://github.com/leifermendez/bot-whatsapp/commit/2f633c72da24f98d6c318d1e725571b62e04604c)) +* **provider:** :sparkles: added dialogflow ([798f1ce](https://github.com/leifermendez/bot-whatsapp/commit/798f1cebdefe43624c1698a219dcb224bb842d38)) +* **provider:** :sparkles: endpoint is added to validate the webhook … ([478929d](https://github.com/leifermendez/bot-whatsapp/commit/478929d1340d46d6bf997ae8edabbaae4511172d)) +* **provider:** :sparkles: endpoint is added to validate the webhook token ([1ec1564](https://github.com/leifermendez/bot-whatsapp/commit/1ec15647dc462363d5b765f42debddbe6ef6266b)) +* **provider:** :zap: add new methods ([0b4e353](https://github.com/leifermendez/bot-whatsapp/commit/0b4e35308dace0ccdf618cb1d04987ed5200d58c)) +* **provider:** :zap: add sendfile and sendButtons ([5433610](https://github.com/leifermendez/bot-whatsapp/commit/5433610a84d7a050a387e4daf2ded1daebfc03a4)) +* **provider:** :zap: add sendfile and sendButtons ([342cbcc](https://github.com/leifermendez/bot-whatsapp/commit/342cbccff1d09f9aabe5423ad6d686d590a2448f)) +* **provider:** :zap: added new venom provider ([01fe9eb](https://github.com/leifermendez/bot-whatsapp/commit/01fe9ebc9a943f2aa086ee415153d1cccdb14ec0)) +* **provider:** :zap: added tamplate venom ([337c2e9](https://github.com/leifermendez/bot-whatsapp/commit/337c2e94bccd0ae173958fe2db08b494bdc93c28)) +* **provider:** :zap: baileysProvider ([23b2e8e](https://github.com/leifermendez/bot-whatsapp/commit/23b2e8e439ecec24450bd5cf1a3820316e643434)) +* **provider:** :zap: solution error buttons ([1b83871](https://github.com/leifermendez/bot-whatsapp/commit/1b83871cca6996c6acae3d4c8b6b42aec05ea146)) +* **provider:** :zap: solution error utils venom ([31c83f5](https://github.com/leifermendez/bot-whatsapp/commit/31c83f5d689a01490d3adb96006f54c2a5d3268b)) +* **provider:** :zap: update ([b62d21a](https://github.com/leifermendez/bot-whatsapp/commit/b62d21a0bf94466e43c25c6e8c0f5db9ae91c572)) +* **provider:** :zap: update ([0c94647](https://github.com/leifermendez/bot-whatsapp/commit/0c94647a27747c3ddf4f02926580370f0d81bdc2)) +* **provider:** meta provider is added ([b041f7d](https://github.com/leifermendez/bot-whatsapp/commit/b041f7d0c7cc6f152d3f36785d1d398a4141d57d)) +* **provider:** meta provider is added ([438607c](https://github.com/leifermendez/bot-whatsapp/commit/438607c222b91d6f8814201dabe5f7c3e7ba1abb)) +* **provider:** new added baileys ([4e0fcbd](https://github.com/leifermendez/bot-whatsapp/commit/4e0fcbd8347f8a430adb43351b5415098a5d10df)) +* **provider:** new provider - venon:zap: configuracion inicial provi… ([66f75f8](https://github.com/leifermendez/bot-whatsapp/commit/66f75f872200334bfc9eda744bed92c509dfee56)) +* **provider:** new provider - venon:zap: configuracion inicial provider venom ([fee7c2e](https://github.com/leifermendez/bot-whatsapp/commit/fee7c2e967b7fe8835b5acc243c19f7713acfbe7)) +* se agregaron los datros del adapter mongo en app.js y package.json ([8160d13](https://github.com/leifermendez/bot-whatsapp/commit/8160d13c866b8ae17b0ec8e68eee1bc0373595b0)) +* se agrego informacion al ejemplo en app.js ([954e751](https://github.com/leifermendez/bot-whatsapp/commit/954e751f700c6a39ec70c0bc5168637c0dc7e07c)) +* se agrego informacion al ejemplo en app.js ([b2f1339](https://github.com/leifermendez/bot-whatsapp/commit/b2f13396104db9ccef5b3bad1c4e19c6a4bad2d4)) +* **starters:** meta memory base template added ([11c784f](https://github.com/leifermendez/bot-whatsapp/commit/11c784f882965d6bd3a2313cf91bed9fb3aa5f26)) +* **starters:** meta memory base template added ([e8d6252](https://github.com/leifermendez/bot-whatsapp/commit/e8d625201ed86e162e0b4e82100ede1d08985555)) + + +### Bug Fixes + +* :art: update ([7d6708c](https://github.com/leifermendez/bot-whatsapp/commit/7d6708c01bbdc5043a7e6ed56fe15a9618115b91)) +* :sparkles: updated starters ([5da4b7a](https://github.com/leifermendez/bot-whatsapp/commit/5da4b7a4d1e5950be94361ac439938741b9d299c)) +* actualizar app.js de ejemplo ([1746613](https://github.com/leifermendez/bot-whatsapp/commit/17466138ddcef60a23a0c87911f22045f26d3233)) +* actualizar ejemplo app.js ([60fdbf3](https://github.com/leifermendez/bot-whatsapp/commit/60fdbf3d3cd62819e618853a9dc2fd0e23fe8752)) +* **adapter:** :fire: clear log ([9ad4874](https://github.com/leifermendez/bot-whatsapp/commit/9ad4874fdafabfbf0e9e20e6b3281f702bb9fbe7)) +* **adapter:** :fire: clear log ([4d34d3a](https://github.com/leifermendez/bot-whatsapp/commit/4d34d3ab1daab4e72fb5244216c78cf836d1a164)) +* **adapter:** :fire: improvement baileys ([e6fefb4](https://github.com/leifermendez/bot-whatsapp/commit/e6fefb4049847f996f2a169b9acfc27c2428d3e6)) +* **adapter:** :fire: improvement baileys ([2d5ac26](https://github.com/leifermendez/bot-whatsapp/commit/2d5ac2664bea09e60ac85ff2612609ae21050945)) +* **adapter:** :rocket: venom update - cli - qr iamge ([041bf62](https://github.com/leifermendez/bot-whatsapp/commit/041bf6280e5f6956393716907e0669aa3ca78b4a)) +* **adapter:** :rocket: venom update - cli - qr iamge ([e37fd0d](https://github.com/leifermendez/bot-whatsapp/commit/e37fd0da3635aa1041664d490d5f9803d2c441ca)) +* **adapter:** :rocket: venom update - cli - qr iamge ([ca6afbb](https://github.com/leifermendez/bot-whatsapp/commit/ca6afbb87fceec12d4a383486ad693905e36881f)) +* **adapter:** json db change is made ([386c1bb](https://github.com/leifermendez/bot-whatsapp/commit/386c1bbbac036aa58335fb5f62e3af2493766b6b)) +* **adapter:** json db change is made ([3bdc7af](https://github.com/leifermendez/bot-whatsapp/commit/3bdc7afe8062527ff08620650d2c1177dfea83f5)) +* agregamos variables para mysql ([dcf65b8](https://github.com/leifermendez/bot-whatsapp/commit/dcf65b87bc7e7e6381e6448e83118077986898e7)) +* **bot:** :ambulance: fix callback functions ([d9aa97c](https://github.com/leifermendez/bot-whatsapp/commit/d9aa97c7819aca1446657bc0b75e9732f0f20c6b)), closes [#252](https://github.com/leifermendez/bot-whatsapp/issues/252) +* **bot:** :ambulance: fix callback functions ([964a074](https://github.com/leifermendez/bot-whatsapp/commit/964a074aa41324bd09d0c4e2e7aa663a0602b69c)) +* **bot:** :fire: fix rev ([21407c0](https://github.com/leifermendez/bot-whatsapp/commit/21407c0e37f1ab12efecf887e699cedf05e3946a)) +* **bot:** :fire: fix rev ([484c8c3](https://github.com/leifermendez/bot-whatsapp/commit/484c8c3bdefbc7824c32a86090bafae0593ecdac)) +* **bot:** :zap: working callback Phase 1 ([952ce86](https://github.com/leifermendez/bot-whatsapp/commit/952ce86ffaa48a0d6fbc0a00a08c5d1efa14ee8e)) +* **bot:** :zap: working nested new flow ([2cbc962](https://github.com/leifermendez/bot-whatsapp/commit/2cbc96245d795de749d894a3a0d99b6550f08d9e)) +* **cli:** :art: starters ([a2be57f](https://github.com/leifermendez/bot-whatsapp/commit/a2be57f0aa42c6b5e13ad19c34abc7d9e81dc135)) +* **cli:** :art: starters ([670ecf1](https://github.com/leifermendez/bot-whatsapp/commit/670ecf121babf53e76c2ea106c0710cbe59facde)) +* **cli:** :fire: update instructions ([e585e2f](https://github.com/leifermendez/bot-whatsapp/commit/e585e2f5f644ed0188dc9cd2b3c697c9d6050669)) +* **cli:** :fire: update instructions ([ed36ce0](https://github.com/leifermendez/bot-whatsapp/commit/ed36ce0a7796320c6a4a452f29c05a3f0f7368db)) +* **cli:** :fire: update instructions ([bad1694](https://github.com/leifermendez/bot-whatsapp/commit/bad16943fc2089887d6bf0b6d90075d3bec6f9c7)) +* **cli:** :fire: update instructions ([a21633f](https://github.com/leifermendez/bot-whatsapp/commit/a21633fb7cf348cc37f4e4714f51172b49b193b5)) +* **cli:** :zap: updated ([a6f4aa8](https://github.com/leifermendez/bot-whatsapp/commit/a6f4aa8d1e809330c06c165aaf9a9f90b8922bb5)) +* **conflict:** conflict resolution ([71d43b5](https://github.com/leifermendez/bot-whatsapp/commit/71d43b585a0ce173061c84e9879915e4602db026)) +* **contexts:** :fire: added buttons ([eabef7a](https://github.com/leifermendez/bot-whatsapp/commit/eabef7a92d005cd0190196cfe75828c38885aadf)) +* **contexts:** :fire: added buttons ([1b878d2](https://github.com/leifermendez/bot-whatsapp/commit/1b878d2ba0daeb3609af74a2ebae7948456e7fb0)) +* **contexts:** :fire: added buttons ([78b0a9d](https://github.com/leifermendez/bot-whatsapp/commit/78b0a9dddc2a6e0fceb721ee7794efa2047f25fc)) +* **contexts:** :fire: added buttons ([d8309f7](https://github.com/leifermendez/bot-whatsapp/commit/d8309f77e1d9137c0bec977ed9faef633cd90552)) +* correccion en app.js para remover addChild en starters ([32db429](https://github.com/leifermendez/bot-whatsapp/commit/32db429f2946f344d949cb169a9595d657c06279)) +* fix del db provider mysql ([b59d4fc](https://github.com/leifermendez/bot-whatsapp/commit/b59d4fcdd7462cde3f68ab5746d49960b547a592)) +* provider equivocado en app.js de venom ([4e0a109](https://github.com/leifermendez/bot-whatsapp/commit/4e0a1091ee85cedfaa5a9c3d40e5cd50bc36cda3)) +* **provider:** :bug: create static site html qr ([c7e56a4](https://github.com/leifermendez/bot-whatsapp/commit/c7e56a4b13c8829f91769eeca7f1f6b3473f68cf)) +* **provider:** :bug: fix metea provider ([85f50be](https://github.com/leifermendez/bot-whatsapp/commit/85f50be9dcbf3817107898d8d2980baf05acd678)) +* **provider:** :bug: fix metea provider ([a52aaa1](https://github.com/leifermendez/bot-whatsapp/commit/a52aaa11d883bbaf526cf87720d3c3fd9f89a986)) +* **provider:** :bug: qr code accurate ([6c4845d](https://github.com/leifermendez/bot-whatsapp/commit/6c4845d733720d9916bb4008f9069ae4fd986a4b)) +* **provider:** :bug: qr code accurate ([91bfdc4](https://github.com/leifermendez/bot-whatsapp/commit/91bfdc46301207cbc5274308da6f39c7b4652c63)) +* **provider:** :fire: baileys fix ([928365d](https://github.com/leifermendez/bot-whatsapp/commit/928365dcafb3631acf6b1d0c239a906f8e1c4b0d)) +* **provider:** :fire: send message togther with media ([78aa23f](https://github.com/leifermendez/bot-whatsapp/commit/78aa23fab094059145f82e6781f9366d5d582b4f)) +* **provider:** :fire: send message togther with media ([b6bf43d](https://github.com/leifermendez/bot-whatsapp/commit/b6bf43d70fc28c6a229522b9b0de76cec43ac864)) +* **provider:** :zap: baileys fix restart ([ae83774](https://github.com/leifermendez/bot-whatsapp/commit/ae83774365027e2e86127ab7713ae9ee2df31f33)) +* **provider:** :zap: edit starter ([ff65832](https://github.com/leifermendez/bot-whatsapp/commit/ff65832012003423cc86d25cf0923452b1f8acb7)) +* **provider:** :zap: edit starter ([68dd182](https://github.com/leifermendez/bot-whatsapp/commit/68dd1820f05d04780824b318072d053eaf7db654)) +* **provider:** :zap: json space ([3cef741](https://github.com/leifermendez/bot-whatsapp/commit/3cef741c9ee30024eb42770a5f32931fcd372160)) +* **provider:** :zap: json space ([9b087e0](https://github.com/leifermendez/bot-whatsapp/commit/9b087e071019a7b6c79195a24dc7ddec498c5716)) +* **provider:** :zap: json space ([208fb4e](https://github.com/leifermendez/bot-whatsapp/commit/208fb4e9131dd5d4fd7230ba1aa11181337d9181)) +* **provider:** :zap: json space ([54a59c7](https://github.com/leifermendez/bot-whatsapp/commit/54a59c7f0d4dbaab006ce7e3c74412d8d3613ecd)) +* **provider:** qr-fix margin ([663641a](https://github.com/leifermendez/bot-whatsapp/commit/663641a1b8bf9234a88b0f3c38381ebc4bfa4bf9)) +* se quito addChild de las constantes porque no se usa ([ba2291a](https://github.com/leifermendez/bot-whatsapp/commit/ba2291a3ddac0d4101021e11d03cb222c5a4bb3b)) +* **starters:** :fire: updated staters ([4d4f15c](https://github.com/leifermendez/bot-whatsapp/commit/4d4f15ce73486d9335ad474d9e37c3b155670134)) +* **starters:** :fire: updated staters ([a30eaac](https://github.com/leifermendez/bot-whatsapp/commit/a30eaac77534d17eb980f6ec126140e9d30aa06e)) +* **starters:** :memo: update MIGRATION ([37fe323](https://github.com/leifermendez/bot-whatsapp/commit/37fe32322eb1bd41eecd151e52f17ec0588fb85e)) +* **starters:** :memo: update MIGRATION ([9b30e7d](https://github.com/leifermendez/bot-whatsapp/commit/9b30e7dcfc30bc160b56427cc6cdc2dc982bde2a)) +* **starters:** base templates are added for meta ([229e017](https://github.com/leifermendez/bot-whatsapp/commit/229e017ae20b84c9d12c7282f97b7034f5f33e6d)) +* **starters:** base templates are added for meta ([20f6651](https://github.com/leifermendez/bot-whatsapp/commit/20f665175c9b47226df41ce43e05574bd6ab1930)) + ### [0.1.2](https://github.com/leifermendez/bot-whatsapp/compare/v0.1.1...v0.1.2) (2022-12-12) diff --git a/package.json b/package.json index 92f2f3d..cd6eb54 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/root", - "version": "0.1.2", + "version": "0.1.3", "description": "Bot de wahtsapp open source para MVP o pequeños negocios", "main": "app.js", "private": true, From 77c6baf46bab35dfbc212b6a4eeffa818587a2e3 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 5 Jan 2023 11:35:48 +0100 Subject: [PATCH 166/189] docs: :zap: fix icon svg --- packages/docs/src/components/icons/IconArrowDownRight.tsx | 6 +++++- packages/docs/src/components/widgets/CallToAction.tsx | 2 +- packages/docs/src/components/widgets/Collaborators.tsx | 5 ++++- packages/docs/src/components/widgets/FAQs.tsx | 8 ++++---- packages/docs/src/components/widgets/Features.tsx | 4 ++-- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/packages/docs/src/components/icons/IconArrowDownRight.tsx b/packages/docs/src/components/icons/IconArrowDownRight.tsx index 36fe4f0..8adfab2 100644 --- a/packages/docs/src/components/icons/IconArrowDownRight.tsx +++ b/packages/docs/src/components/icons/IconArrowDownRight.tsx @@ -18,6 +18,10 @@ export const IconArrowDownRight = (props: ItemProps) => { fill="none" stroke-linecap="round" stroke-linejoin="round" - > + > + + + + ) } diff --git a/packages/docs/src/components/widgets/CallToAction.tsx b/packages/docs/src/components/widgets/CallToAction.tsx index f1eb46e..1ca9b40 100644 --- a/packages/docs/src/components/widgets/CallToAction.tsx +++ b/packages/docs/src/components/widgets/CallToAction.tsx @@ -7,7 +7,7 @@ export const handleVideo = $((ev: QwikMouseEvent) => { export default component$(() => { return ( -
+
diff --git a/packages/docs/src/components/widgets/FAQs.tsx b/packages/docs/src/components/widgets/FAQs.tsx index 829d032..28aa2c1 100644 --- a/packages/docs/src/components/widgets/FAQs.tsx +++ b/packages/docs/src/components/widgets/FAQs.tsx @@ -34,7 +34,7 @@ export default component$(() => { ] return ( -
+
@@ -52,10 +52,10 @@ export default component$(() => {
{subitems.map(({ question, answer }) => (
-

- +

+ {question} -

+
{answer .split('\n\n') .map((paragraph) => ( diff --git a/packages/docs/src/components/widgets/Features.tsx b/packages/docs/src/components/widgets/Features.tsx index 451211c..4888086 100644 --- a/packages/docs/src/components/widgets/Features.tsx +++ b/packages/docs/src/components/widgets/Features.tsx @@ -15,14 +15,14 @@ export default component$(() => { 'Se pueden automatizar tareas repetitivas y ahorrar tiempo y esfuerzo en tareas administrativas, como enviar recordatorios a tus clientes sobre pagos pendientes o para confirmar citas o reservas.', }, { - title: 'Experiencia personalizada para tus clientes', + title: 'Experiencia personalizada', description: 'Podrás enviar mensajes automatizados con ofertas especiales o recomendaciones de productos basadas en el historial de compras de tus clientes, lo que significa que tus clientes pueden recibir una experiencia más personalizada.', }, ], [ { - title: 'Análisis de datos y toma de decisiones informadas', + title: 'Análisis de datos', description: 'Te permite recopilar y analizar datos sobre tus clientes para ayudarte a entender mejor sus necesidades y preferencias, y ofrecerles un servicio aún más destacado.', icon: 'tabler:rocket', From 8d6c34d8b96a99760feae75f3c78f0baeab8d988 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 5 Jan 2023 13:17:49 +0100 Subject: [PATCH 167/189] docs: :art: lot stuff --- .../src/assets/images/full-logo-light.png | Bin 0 -> 177462 bytes packages/docs/src/assets/styles/global.css | 4 + .../docs/src/components/atoms/Netlify.tsx | 17 ++++ packages/docs/src/components/atoms/Qwik.tsx | 27 +++++++ .../docs/src/components/widgets/Footer.tsx | 73 ++++-------------- .../src/components/widgets/SponsorBar.tsx | 15 ++++ packages/docs/src/root.tsx | 1 + .../docs/src/routes/docs/database/index.mdx | 10 +++ .../docs/src/routes/docs/essential/index.mdx | 10 +++ .../docs/src/routes/docs/example/index.mdx | 11 +++ packages/docs/src/routes/docs/flows/index.mdx | 11 +++ packages/docs/src/routes/docs/index.mdx | 22 ++++-- .../docs/src/routes/docs/install/index.mdx | 71 +++++++++++------ packages/docs/src/routes/docs/join/index.mdx | 4 +- packages/docs/src/routes/docs/layout!.tsx | 2 +- .../docs/src/routes/docs/migration/index.mdx | 14 ++-- .../docs/src/routes/docs/providers/index.mdx | 10 +++ .../src/routes/docs/requirements/index.mdx | 34 ++++++++ 18 files changed, 237 insertions(+), 99 deletions(-) create mode 100644 packages/docs/src/assets/images/full-logo-light.png create mode 100644 packages/docs/src/components/atoms/Netlify.tsx create mode 100644 packages/docs/src/components/atoms/Qwik.tsx create mode 100644 packages/docs/src/routes/docs/requirements/index.mdx diff --git a/packages/docs/src/assets/images/full-logo-light.png b/packages/docs/src/assets/images/full-logo-light.png new file mode 100644 index 0000000000000000000000000000000000000000..0f14f38547cefc9d75ef13736108e9be2fef9c4d GIT binary patch literal 177462 zcmeEuWl)=4-)EsvC=_>hcXudW+*;h7BEj9E#R<~lPJtG8C%6=+XmBa+7BsNA-a!iuw;FJk$Dq>INQ1?)BM?b`l=<4~r9xi`)YIi8RA)xdc@LkMsEqkI)??^hs&UH(#qOQwaD6$cHL#H;ws-*<#t0^Ob{EE4%xmxbGVG#1Yvos9DINHSI;L zhZq6d?WgxKLaQ0WF@KHNu5SpmhN{uBa#(33@ViDq(0mh?-21Ps%&S(RTiouF;3<$6 zmGNe9@Xs2fb2QQ&YvrY24hNTI!Cx$EE~h?K&k?+P%<$Bde_59yZ{;V_Fpj??VG$a` zGZ;PZ>nxr;m;Fd8Nt7y7e}w~b-H)c72#YRiu|n>wal_tdv87-TF}@ncC>Qm*3Y-5z z5Vu=f`PXfzIa6VeGfo#UiyuPid~ux{=%sokx`#X87ldhW@!zqT-FFU4(~=+Yxw_CGg@f3AJ! z^*3(r%k-}r2%odM4i1~z^Gi!vRCq~`QDWkY63IlqJX)BNteq&LWa7`^QSD=|^^Y## zaWTXQkeC#|!Q(Y4ch@;(lK7ayFSsyu_%*2GF~Nd8)q7vm9sjS-?E~MDuJ$7qR>v^e zj%iG)>YMQ7@8B(vUawh%-w*ZnNkvBPd;w@krH6Yf*c%!-#Uj_;O_azmJ}%EAs$Bl` zE`~IKyl0~C9qWZ6#vUT^Mu2h-`wyV=qj`aTN7vGviVD0S9SHFFWYQuz1xuYfP!3jakCj$*>;&{;F4|BCG5#91Hgy|B^G zumv**;}U2gBjj2uV{xwbxa&<8XqqY~8Rgdnpz`P#rNyS<@@4j)yjVL(ZzB^3wJH&J zyc;Oqz5*6C5Y|z>oEs|_;Ar#a`+G3(!!Z*6a}C7`rq>=29=4H#;a1hDU!aEX7@jh+ zbI$uf>^zJPS02w0%$kbtgkwdVMDz50DN9^2zHjesnyr-g6R{lClPP6K{HL+at!QJQ zeKYJS$EDIaRRSCa)WmjeYT(~+EJbMM4rNTv1?pxpe5lOm7*sRpvQdE zyHhBbJu>1ccD}yTAmVio>c|@ZFB&%;e7>_XleQ!^=M}#5q(rCht81lUxR=%m&c zO@v0}qaPIG=*i71Smd~0x}D3^Os;i1Y+b4-qQ<*>#+faJ5IIQIBn4vS1~v{X>e^q_ zPk~EJux2WNc6#qWcz`PhDJC;hq1C)Ne=8M&Z{hv47|}W7mSs(wk=5(7zE|>YJK=^} zL`PO4eP%}PPmmvN18{vdjcg*jOQD(D%nP=ox}&E>R5KVCpj$zEGM-1AIC`OtDyJ}_ zz=52U?Y&?+)ap}2#BgcTjO2puX3#mdbi6j;dx@Rr{#O{K92LCUoQ2Jgh{h8lS6{C5 z435vo(KO|q!l*TV=SQYYPw<)2Hin(pQ=3ahR8~eNA}^hNX!p+OZM_1!9%bQ8(Cx zRmT)AC0sawYZFZ#IiCGIJr3KXGKpkP>#>(4k^Q}E)M}im9irk5Ml$5Up@ z>$glIDbMFn%b<3l`s*oXj5mgPmQr($_(%s4!C;vT6C>lshjXOsnwoAIg1<%#lwpz? z`+h5r^>bT(xU_9b|z{cY% zm5`~*l%XOSR!TevLRD>w5#3Smacc2_jgU7RD;?B?!70oT3%Vr<-{&J$qIjY*i3?Lz)$Ygd~Sl@h29AN!MhGbifPo&97LhAj?28-`AX zbR(0fg!#Fu&pEkjxLP0Io!9C$yvg>K+pugL#k3RF6D_RryBRtvD4X9KXhrzAfj>}w zv?hAwRUyD3V#tU4w=iCyfHxvD4|?3DftQwlQBd^L3sPJZAnI_LK{X@H?CxZTARFmP z#kARm+KY*5*H0YKf{Ffi5vo1fL|vCr!KJfErGHNnk15g-F2u_;&7tBqup4c1Q@*w% zWzX(OEq36s_Qvr5}!D^jwD)D|I+U^9wTN0IQ#DBy~je1b0q@G$~iVZN9`CPQr=!yZ>5 zu`zC9cy#Ibv-rub`8F-oFG1&%{hW;^v8}WyP*dXam*gJnUvL=pnIXbGU+nJ1Tr2V$ zEVw{X2O}f9BpM0wISFpOHEybt7FXL#-2FU^MgXm+#P-68z*1)F;NI9sN~YXj8<@gdi7jpg81REsKvF2wl!a}7ZB0^4Ag>TiKY2_FCh$B>Ol%e2>LTV}^9BL(d8S|u-mxEHpCL&z=Y zol?lkbO~paXvL+wAI)%pgngNL5iID@zD#FS=%Hqn5f~O}(_0#N{Bt%A$l+J#q`0`f z4EFj7^T6BkTxbD%5EX;H*S(F?Xvb;0ufyE#=Yk*-fyxD*Qn1GS^LEaB`Lkc{-}8YI zo(=AGDjRCt=d`!cDa9k;iF)_`IP*+212c|rIagN~j`|ku$t`_d=?V)`WqyDwIC8TH zFT7ZuDyhL=8H;Ncgb5`aA-8`-pvIlH@2r_Ns)cMu5r1fWxc_R}wI z2gtNCuMEk@xeWKm#i)La`E5&2P#B$yUlmCIB@kg@`syFXiMHTw5-Zr&t|uF+JYtTU z8PS!B^hr`##oH~PLz_}C!^GD&HYV6f_J#j3t|~54Ij_<*W;NE2& zRbws5M)Xkj8F}y4s{LkiZlbl>waRvW;OuNI5ea|iXkw(oN_obzl2G806~r8!`}Ekd zEB>kR?@c?hi!vnP{j0Hzm@a3`cT=?}Q?9i}(xqDhihDk3-`Hdatyjz4dA2_;a069H z;CKwvFq|+k+W4cR*vU0@vnS-I&5F6uxwY z(@d4xTS2RCPXhuTbszs)=qTZh;C;7hm87@wsS_wL3_d&+(+N-jP&_5SVGhz|s*{GN z*dWPtW=((bG>PZoSy&*@GIVF-+N{B^p@OyqSzNZNbT~trxKsjV+%_^#LoOWU>l&bK zVe>biVr{C^muWI5^fIwnz!DeM5|+|8u~DS_4SRzrak!@_G3SSmN9Kf5S_%m_8f>Tuq2zwDxgX%)sL|mfa*7(^9*+;N-Ge^Z%>5iic>Zz7s zPfnqb&gm)-Erx5QWZo3Ho*p=ejNz*?dkP2uFQc2pgbMLU{I;EA#b`&m!LXPcf<_## zG{JbF!lBatBHAEwU9-_06~pZCF$r&J^zmUwhuHk6n%A|PS-dV#{rqVA0om=#DQmn1 z&ZXgyy@c@BO|m{IR(0NbmZY7u3ksA;LY+~zS5V%#hC_04A(|X9pBJGtokk2%yS`g7 z)PjqTX+>|-UFj}vGryi3ZaoEfT4=V%)*FD_pAJoc@5ugseAOJV%XKwzuW#H#{ykC8 z%jSfeS=eYZ|K*G`I5t(2+`kn`R>~aD{7x!^V~As;5cr>Vk`jv~_8UC@ zin1_60&o(XTL9wvMluMD`mnORX`}yn$EJX^PjLE9*};t@{H=%sIuuQQQ7E5F`$#IE zeRE?EU~XqDQHsv-+b8(Sm5&nSQ z4p4SvgZ84$S)2U+bzA>n!-VloLd^>L)Mo7V6Ivlj^S3z?4r@UK7Jhy6UVH?)@XSJP(1ED^NCCg$=J;Xmn%ql(d!MQQmLSd8Z*nci8bs<{5ChIk?D;+ zfvk-7w|E|ls%~Rt5ko_-wb$q4ya0i}%h0$A>FmQ_qu^)Ujq@!yJQkMmo8ja(w=qxe`hZV?H}Mf7(&u1l#Jp@Bd0a8pltZ7v+Gt!|ByMzRN2a%wu8L zd_A*odMJX4G2uRxr5wwPNnnKV?X}zGxd4xJ`8S}=wKMJYeRJ#kJw!tUJ{*h1+t^hd zQEsb8%WH%DUr_aoz?aZEeEg2I(>0PIeotVEQlP(_E6`ZqAW9zj>QAIw< z;@tj16KA(7ru%4i5Mx#y1HPcq%|viUovP_fjGQ23j5jhFfBbR|2GrqxHjD_Ux~|JV z5~)(DCH2-kEe4xg9cOz@+*Nflbrky=xgDpJRSd>R3ZCYMw0-JDl?f zpv$8=j3sDaQ#=Jpl`5lO|2ag#hvAEdkCYMq;8Jqe){(-AnWxxHjyQXrO<2Stk5u~t zXYDCy#Kn*OE>=w5e;|h{uy>P!Kj`5=%rND;HwATG{-E?`_U3Uf^JJ~wZn{3OZx-Y? zRf-(h<^KBH3FnGvG(m`u^m_eaV`qL2;qF9z_&8EGmak#7>4U?Uo;<``z_2%y9XCO! zV+9cgZLa|C@Lh-o3cw++Elm}wLt7mtW>DN{Ln7;n;xqMvC9Q*{R23g6T0=B)0I>2T zwo=I{09E-sue!6>SBBBp@AuN{gS;jK^Dd{KPNo56rJEQFFNa^Lx3hhmE|a4*CTG;V z`&R+0OOnp{Xt5yz802?k1u_2#rdI_m=Nwkl?fNq;)cxG0n2~!Gtw%AjAU(j5amW79 zI-Mi9+VV|j)n})43sf#3fMjaN4DTlMqBa;EOP3cxb*W|>%|p+`j)d4_12w4cxT<$@ z-G7Ig{y6zabX%Cc-|L+YAt`Auhr7(goXe0e=!N{lFuZ3`B(lXq4FZcy>i`D6L9o*O z9fBwD-Sdw=Ep(X^!Hk?=lPz+YdaEsqtpQ&S10pCquhJn{HESo$6lc!IDk8>$kmD7v z^yM~qzw_0{CpZON*kg0*A^s~x(shIx{7wi`5mgt{D!i2Q8?0lu<=gP#a7?vdZ%99- zZKSn%EJt!x{p&TF)k@p>&xcbG0H2wu2zJG8n0dHoq~iMcA&8PM0Q&ge)7&yjC?*gF zQIEdK+j|)~WDCp#i0={Gs+8fo!)bz>uS|;7WsRhumv#PL%f8i}xCA$tcs#FkNYh7b z%q|230$Rx2VD$Xc1F7fYX^P=51J`|{Dud2|+?t0P?}LV1(66VEGibog@W-SEqq_Fj z4cHtvVI_wD3c6ql39E_E!B0r}h2IfTe#bjaV_OU}d7HxVtR2>vDzF=vBzh4PeR04* zal6Upwg`-l=}N$ScWm~qvCNTO8{T`mwpxHq<*YW>F6!pOxz?>Pc*>Nae4xeUo85$# z0D0NF3@*=WJKyo(?j@LjKoDk4nr_W)aaqi}lrB317n0Ks?vSytH zh5Lk$G0xj6*5}(3RDKX&lImUU&S_(N&G!Qq=Mh8PMn#|J1in*wLpozsq6YZ?TMgI| zf_r#|Y)5~v7Z;pZ%2M>B@Vf}{195+S+Yh_qQMQl~j!u8erLpH*;s>Eb!1tH~za#KE zk=xQ#cZHK0bCdX8S1LdGa%m|&e6ND(PiH5CHe+Q3O8tx!4=bwzI>s=?@_BGNudT zX&nP{^o-XT6zIVRb@H_WWLhOU3k7@`ri4d|>$><_l5O;5R?QLmSRr8wd;?^TKFFKR zQTya@Ix$`nI1_`+Y7LLN%Tr8nX*9W7tel6(cCLZIbSvpm7q&^jE*>$t6T#x74ys1r zp{+IaY+(&(8B(aU=&9-F7RUci=IQWVaf;)kC3G~*gEVbAwXR#sw|A9ni5JJz4zL9x z1WvFLh59s!4_aTb$jDS>K?@CcIG02KK`Vzj!H&X%b!zbe3!6Y`HUc)s&#eyV*?HFQ z;q@S(ILgHY0coAZfLVu6wj2a zH-;ZS(}t@zpwlxj0S5X+hq^vE?I340_6GhBmGxnJx1_CW8&B$Y=q+Mclo1oR=Fqn? zsE0*N_0~Gw0M;?;%iSw^&PPFc!vSmOQJ$>p{ZrI9gWGfLpKfdx4?BLh?kLAKJ4CJL z%bn@d_*6B|PL<^+I=3D^;3JMs@2A76qZ{EfaE5)8q2cT-(E8gA-inn7V^(mcSgV@R zhr6AkzLD_nW&b({ky3^fs)=6L)96$_9hXo%-S>X@0IiAoS|!+p8#A{;uBF&)Sns7n zk_q@nI&Tsw2!zDEkR9=TRD9?jDpX&mG;4|7GuNhZ)i|q_#c8{sd2i+lhhCb7WaB@W z9pJ5so~fnnOgCdM|8f*HfK3)eKjctu_v$Ky^eQB*X`QJcWOBzg%)%W7pk|pmw?lT` zo_qeFC81eE8|@Nbc5@b&crod9yE!xQKUN2i56>a<-0UE{C2mg}dHd?t8ss`CJlUD|9fu z=I_JFs9#$HeQIeNmv~Mz%sIG@Ixi77t>Lh4$Fo$i7r$%kuG{U%vjsb{^N$N~P;5`M z&t#@*bx=kBn>;{B3_qCTe}AxDrfs63Jd@jG12~MZ-qKpIU742eSB1-zk}*|;U8Cyj z%+Q@^7)f56)%>fT`AJy`lrB$&Hk?6$+58ySQNN8BniHpTRnR{$+3AmGo{kz=O%<`^ zw&K=?khaAbsU&Rih6;_(RQjoX@ry;DR|t=qA421TET`?r?8V!zvpyDhr{1gz6*BS99hLsrdYmE++pl5!Yy15D-y>{^A zdlTr<%X!^FM5JBPuM@0BwZ9!nRkz&DIxG~pw1Y+!<1pp;S5v3UGSsGnV}8vEsJJ{k z;2G#XJr1BQi|8B+lj<0(|%q&`FLdPM|v|2nRJZ$enbK12VvcCeOCXe zgix&Vwr9H@i@Cd-@&!zliXQXOYqfoy82yRK{u9IsKlgLqE>3h@96-==TK$B3^r;c@ z;lY0BmA44arGFWQMWqGX<_b;nUBg}4G_TFmy9A+E4}kk>!73o!0gcA{SX5RrzQnSb zr{-#k^C2Y@wIMf%o#%K!RJ_m;-ZjU{d4>{*)T-G3ZqdWywCUjj+i8a6XIzp9HiN;c zg#C-l`kG#J0?7Qb1Zt%{baaGijSMmRUknhe{O}MSRt_S+;?}y-7?avv#|Z<6hs zLgBmDsdZ?2ce0eo@0w>QKKZD@^a5yqHTX%2%mZ)2k~#7{F4>r3|2S<0W)o+`&vC(X z=Wf(w&Tzc=di6VQi)5V2oIzO`0>wmv$}zr=mV&>EC!<`*SIfp~MK5Hif17IxPVd~M z3m>!qN}O;gK=^~?5FYXth6*6L!&u

zBWGsxl{pgSG%|RtLL$xzN#!j|KPrJ5OAA zZ8mfl78u~j`N8ZS;(G`S(s*X3Wb;y5ZRynxo#Y8UrMlro5Yqh2LwF%A^G|XxM^XvZ|<#{^Y zHZkQF~9X} zJ5A&{9Q=CDKfpH}OVE+nWNap3>fUu7TzngGX*cimkcLQxEl>_lCio~ITaz9~``iu) zM5=R!3=2JDTF&q2Y*|=PEVg^@j{lENi*H`I4CtI9m-q^v%pk8Z?N)WNt(5qRK{MD+s~6@W9Yj%t5i@k~4g8u{Ix08|~yV-6lts`M{cAX!_syeDeX=BWP8$!dW6CaXE= zF>v^pZ&94d*2Ft{lt+SndWTgTiTM4}+ER(T+T_m5Mf=JY>vjqKx=*U>7b6@LVBcv8 zP!&6UU_W^Ro6+7wItDaVwnzZhC*#yHq$S@{;ECWi`D{2Q!Nebl>0h{|JDr4=MsHJU zIiBZJP<7RDj$=acvmDTR@WpE8gly}+;tFnT=a4b%Km<`N4L?3(MSfw=$#=+vGc&9U z!n2+gb2VTumwgy*k5Ds+zC#*z`$(5jc+91oT;buMV)`cIej_aCh1WyVHAl{EHbamp z=gHe$8{@WZ1f@qRY~&Z;kFViod3>SOp#c6cD-w&&F=#I}*?KqvyR*%>rNvXK%HwpH z_oeIl1WwYwcWR|_;AVl`m$(8oxzOIUztkuAC-oK^ zgHoLM-G-#-I;2th%rd&Te$$$6)^EE{l z!Tcm{SP9N|hT-*rldpegrhJG4Ml|$ZeaEdc%yJDGo^Q6@!CcZDs%^2i0F8Si8^1$Z z!|XL3tP<5cyAXDVd~nN0{_IX_F*eU->p<08!|%WGyVIh-n1AB_yNIrYelND)c9-g^ z!T6$mw0CvaZt&Jr9+JR$eI9`F@Tmg$*^E!jJbr3b797xIO+(=~^==9|+V zS|W426HmpbF+zpvA$L)i)1mIH#uOz&qRWwwQK?bJI)CDJLVRRQ?}oM1j6ol-@hm3H-w26%fKIYZy%nyQlznZLk0ImRY!@PelHcUt`dVH|dMke*U*e}ZkL&r#t(!uuD zMO~N-d{nYM+n8%Xj?i`N1ZN*-pRz?am@@I}eeo3Tjb?Qy^4Hp|7&oS=I}|PH^3XJ^ z?)~I*_2yq0*y$_=j>f62j9#)Ok&(hLeat@FqzOqLTRR=b$~6m73-I(u5zq(cQk+Tp zlUIAqyDslXSK3Le-*(@FC2IA58EZVPuIvJCNn@0^>US2|06)qO{E~`p0Ep&Qc3y$( zn)lGAua9Aq!DDiZMhtXoLCZDn>4BX9(Daqd|aG!d9Z{Le=l; zd_c(lrwOIE&fV2Q$B3HYrIy=V1d3XE*QHLj=W6A76v>gxQcOvfOo$&HOrF1qmP4iH z-1=we7SyE6Vune-M>77R4#>7ch+HH643WO-t($Se@tW;DeS^5&dp7(c+~o8W53}PH zjB*+^$s^KOWF}@q?aDg^x;S{|OiQ*shLOr7J?p0rXWqo4DVs*)g#~xMZ+29C4pHec z2;(=*?ANye+veeT1C_;>5O) zVYEDZ+B2hF^XI1(B%z-Km2dW+FDuW)BFPq2_H3OpNDo`%o7&*r)(VH(M8eQ2l($atC-65~0?V)1mi7`2D2RRGCMIhJj1 zo~GuGL|gZlgHSL0_6w|@^d#fxhc9XxiAGt^U4?Jn*Zh%6oTjec?3-q19q@#PiA@OF z=to&|-1>Fi9Y=AHc6_|vuhWrAw+Zcv#+h$#D~(|}3Yo7>A1WbDhKU$LLIirUFiPfK za~4|Zu+Li<>wy2E2Hf{e14RY1oO2zFDF0m#lh^@Yo*c8e zQ!nS1+Yw!%@jws9w<`Wszr%Ot72k<`L^f7|;Ev~zd(0_r`d`KC3a@nQOmxkmX9}vz zV*cj9q1AXtIQxg_)47{DYS3d{8~egplUc^acC3A)f9my_HLdNP*=9g((^2k+te{n9 zgU~{xZ;64Rs&;|n95KLLXxdNj7>~@c^e+rJ9RD*Ps6OkJChGi)vnEXio<&vvvg3o; zIg_8E%WsFdbSEc2U)LU8BV(_ts4^426~pLUGI&UxhQ#|1c;frY6L&U9F3And1J?sq z($X)n(v0BmDeA%7Wk(Z|!38j{NjX$UlAhcHky&Sk@|}irEldB8Q6wFa>Xe?W7+uU_ zN<|-kzfXa9lAvf?Aconfy@y+Iq+DW*2kZA1>Q&(PuXlQD+LI)T1EdzGl-v9>@+Lz` z4XrMq9Y1A>+Y`1`rKwzxo7kYrd#Zx~=oyXNTAbpv(A>#_OY`wTXFb%2kxo-44ty5AsZWj=-F&*G>sv2qEl==PsQj~ecvL)On<2X~ zKjV8j3h59!rgbL1J%tW|^X5i) zC{8Gq+HTLF9L{WXDP(fHg5H*F@X_#us~-c=wZ#f|-5xTnNT8MiI4qqOWR2(D9YFYX#_4*}qe zI^yu&;2rC8LPVYIAW_ZeFHrK*X?i=H8OTE!;%lqPVP-7L{6E^(yBx3u55DmoMwc!+ zU`VEnT4$$^J5CtIe?PbY0EK;yhttO^{IzJDXNLKnhjV^B4a^ka@!`Sa$f^MhRS~ny zWlT~2!OL(NQpIY)1>4?^&+2tB$};ZKWa!WpTLvbmD#DF_5Q+X;VVdrgNb_DkwQI5b z{Xp{^igtPTqIQ)14zTR&XUxx3+|Eu6@rAOn8ih4AXuL5Tq?KuW)Wncp;tKgDacKuJ z!;E`QPMn8xV_mqCp(v`YVyv|}j%P>=fzz$qc!`Vf@giFlKdyv|I0)`AF}qG@_ei;C zScO-#M&Q@=hqJ4OSi4W^_4_T|6OU|jpOi_OHbzekq>9^v-h9>r7z>mB+4yW7(xt(W z+tFTnpeBWo_35fEx3&^kMn53#Gt9K+F?2+r^(g>L@S=~eDwpv0$$`R8UcPNTSaa0m!^8-jUS1L?Mpu&cG1g#h{#ghH#2^8G*N>=HCoA`0j<*kQ#x+%yR6=J0Dw7JBuo_LfPt*rjJ8mi6$$ z!sFA#+yqpFr#=$u(b5ci(x!fA0D&SFB7m6X{(e3FlJ z`jT}N?j4V1_Yx&Or~62^yVWF-3Q;zeDB(Om)P=0yY(n4ALfWY=>rIoxYEY0dWNqfy zWXXVoeTJ(dyIuT2Nz1Tdk*}Xu?}ixqIOBoLV)#0I z(u3V${@?%GQkaGX15}kQ%Q+tHc5+E$0ZCqLCJj5AEdYyKVZohmeD(vS7ePyPgS%*J zC%b`zEYWx{UhRqhdl(fJjG1}obmhOWvsl(-s2xj?dCtQ|0yolEhMU01B*_{6DKsfY zv0f|cps6>)hZPA?CdM9to=-CVv~sn{;6od^$M@jW@pjXyiQ;3B9?u47B!OY0gS!SqRt&f|LPG;wN8F-^>8 zTjQ-}#Z%mERHoAI@65AGDl7Ld{s+zv@C-TL8?^<7?hOg?hWrfYF>;CEu>aXxZ6EUrmx}dnI<8Ycyi!6N13mTCNavqF( zwY7mclOUZM%d5dSJ^E;WBv0`B`3~2D`?TYEaTokI-X~{;TuE}k!2Gy}CLtC4%+4f= ztmPf13~M*c&~Ix6b9I>lBj<}PYiE#$Bl5;?0vu#@e>QnfQ=ZA3pTRVgfl|9~X(3Dw=3SF_p3qa6P*wewKjFDtwS zR*n=HndXT`Ob*~qcg?gO(ps$DMpd!srwZil^Q%y9xtgdaD);WsKFKr(lrOn|tz!N7 z#qpcF>_o^1CJ-B4%}V7)UOpw_m}z%Q=?%WA_7TH?d8%w~BAZOkx&g5+?v5=fkfC=H zv2CCSoKt9?o`~@ENb8NgS0`k%Ex_zxSIw|)TZ~@06T3wZ5!3%SCTDRRg2R}QH3#Tn zE(Llqfw<1StQz*H_fjZ3e{IVNBk$!L{ERu$B&gp2Rj*?*X6&2 z;i6L-I$$>SB>70`_mRY?NSMiaL`CX|Xi=MaM$(@{KfzPs(KBkKZJ8qlu)=Mb6{YQ! z;g;H3SY}}&c8-6!NEvL#vv`oQ@I0=hB$i*?OS&FIJ}nMf*ihJQZ>&+aq^pjYE5cC| z(GgX9b;UQi(TAPf7qJpkU1DIO%MJ}ncOowFn0FHT0VDDbcf-y1z@Si*CL@l)&;GXJ z%R$QmXNrMONQK*<_}m)93U!0KPqh}I6QORB4Czz_f*vAs-Y{Gq@935)b{S(&f8I(qx4w{)-y-eTgWlf0S{^*&SEe! zD<$lJ2qwq$Z7W)B^#J@rL*nH4NHTPWM<_2ns23by-JgAQLy9O#hqYCGwzA=lTil;8 z4!Mp--k-`VI(3ZCUzfvvq0g-iFa42)xESoP$LAaV+G1`!T+75JU@de06WFhRHqeiG z#zvL)tOT5OCL{_zYpD+!{Ak>XNZ5lNPVuiDF-V-P%H!*$2P0{Iy1t6Gv zy_$pDvGJC7{Ai>0BA5KvL_00kpL-c3^R3bI@4yFknZeTg{Z9)JsePa6VwH}lbED^# z996OgbzkH1fW=Fx4wn{PKqZ8a114!@r8Ze@2z&+TXAt57^gVAZpS9HTe`@E`N-`Dv zz^gJXAv&a@vwBtjZ9SaJXzyjs>!>4AmmDOa#g~n^b*>$mIOcdeL)-KGbAFO&1dX~# z4H;QGN+ECf(-?jxfNId?AI;UQN4(#pcWQ|{t_JO#0&Si(yg12!m`eLs=>*=!5CGbX zk^>ccc`8>R79K{G4BieI4hu{-v$^%hUmvVKrZ4*5o)=Z3)2fy3I(#0Y*9klQY8P>#sYfAgo)RBwKp)&cWm=&)K7LXdYK zPX+f!30QZ;#elU>ODnIoRM9Uw3Hhcls)7rnz(E%FqnQ! z4TPd)nkVs`5e*U!q$;WK3sAl8AqFioY)S`*W{2WPZy<4GQM#KsAjMg40kSl4uiIk< z4CaQikmV`LBRzI5l5dbuK?RrxlL$39)*@RmEgKm^wc^Uhgop27??5H?Z*uKoCvAB# zSUWHG`MpdroA9Q+6!WVz)(iCM-^1$cNtzbS_Su3E%zU`cbiiII3^?k}H?^rj5O)IH z50(OIVIEDp+y2$`-ht{Z(^z2Qn%08vds93fPd6Ib6AHMyT_n#yDu6(an`P6>7XLu7 z5xsHcS8oO4KjV+1u(x98&<9;3R;3Q3>xE9k`wT3f|NUD4teNR*58h8qHsuv84>iid zJBV<8tBf12#>=nyxL9EWB>G6U_`3)9e=t1pq;0gc&!^ih*JLH#Rn1)2-_#n&O8eWe zc}YI@hBhZ=Cs1SbE2AKoAW$HbKskMOaF6N}?~oRuTTYGpW$0=rux+=IJlO?@4o1+ipyFIkzqNvEjM2Vc4?R>NHa;NEywI z|J;V-M-Mxh=4WKv8>DpD2oUzhpDT3)hB>&1Kj9-}zmaD_XxRD^Ek*1qf1psk5R87( z?~Rl1d~GN$mk^`LF4NG$DPJCN9-6#_Il)y4Avq^UD}&a)cDM>FBh$lyBLdJ=HcXML zSNxjSSJvP4d7*k*B!yVVY+{_))?g8XMMB2efKyj zGL}Jlm&5j^C;`=A7g~Zw>JSoe7EbNyeIxGRxp{6)8)zst={B(N@m)Ku;GZk`tJi5~ z?zLiGg4UBD!d-~Ww(Nw2)yjE{3&5?WL?x5|`sh3vs!LCH8S@rqPY7JW^r#zx)pEn% z0=K3P7zITgK26|{=PF7l;+WA#@33C?U=7Ut@DJ(H9Dc`+?t_WQz^vl#-p#bh6S9k@ z5G94z_am~TIs65`DNj`>A@M#wfJ?6KyF#6hGii&nSvwkGu4=VG>~6fFb+7B(<-HKl z+hC#>+Agr>R$k3OVpFllb(87|B#LYje{iL;GV#BI7>u`E{rt|mJ<^n$b*rNEkRA4L z<9gh&kemw`w)M`PGMMIpGgrH_>3=*Th~Ig-qrGh-J0FS)v%qZ(_nEuaLR~X^I7~o;kx)(9KP?^7Y>aaSw_H>&IwfB1kNdlMW zFKhjy87nT}(!y)e!2bKVjEe{JS8DfLPkYHpn|ur>Ll%ugw%o+(&!?5|MlnwSkG*31 zj`w}tQX564*%kBr?Bu>tip*XQGmwhF%@cvGYDTCx1kIZb644T{ohH;9!LM!el2lT8 z1jJKZaq7c)6JO`0244oi22hyCdQ`2&nr%_fQLl246Sw$8T@OfXUFbvj*F2^MI;D#C zNo`IRJk3^E)}l$n9tN}cmrY0n9?P59C7j^=aRCnM<-J7 zJANiyLNHH$@Z3>p9<+&Ns3CfjPsz1Pz^HDvx}eKZsC6++o*=R|8utA&t*5#1sU7fO zbhlsq+~MBp_9&m&^0+!Z0PvH7rnRu&5L(Nl zUjXfUfA~p^cEs5xaV`4Xeti1joVn|`bul5^wGUnr&wVxPT65r52j+XmvpP;Q#wM?I=k>BcW;sMq+)|}y{>2)^=vZ-J36JjB(=@tqcCBC@C z9l1E5PTh6vDU^QSQ-#~39x}^TBA-W&`YTogf+kW}ky;u2snssxGUr;19eYY3pxsx1 ze7i%ud^Lz+m4%NFGuO|&m*350+^zPe;L*z~tL@3&J$qpPhfVI&2UH2f2eM@ezb>)b z)w*ZfT)(}xAj7Vli*;4U%@oUCA}1v61d&SP&t3!6qw#dc%Sd9)9OGepS5Is z&}J+o4SvJF5wdgX!8dEYN@&L^7tGu(G}k zc<+h;2b(+pc>_;6nkQ~@y89(r1SFm<0yo?tsX#*~xQ7^#rO(S>AEqyoa7CeLdUKm0 zTXRz7Z0htif8s~4iI?OZ=3-MOwx)<+=w*!53%pvRyomF&pxPNI$i|Tcxs~Hb`PMoEX#E00ISU=l! zp`>BM#S%JWnZ1N&ngvS`3X9$JyPmXc#E1_4)J*JT+ITsTpGS6eZI;YZJk>e4K8mF& zw+OS_``y2>Xrz!^&G;qGuf1ut`Rh+V_47F?SZqa?A4YnX=twuL>9sUjoyY6_Ec?bI z)s@4c*qnuxq(}|_AP=+1Jh>$4U{*he4#!{A;o31Ww=7H}%T}XJx>lemCXh9&AD?r{ zGNIZk^P9FC(ZFlOg*|w_^w2T7Ey>YILFvF9|TiivV`~@ErZ% zP+bMu9$3!2wk2_^^6b}-&%Cb&b5!=v4!!{#4S{cUc_#1x5=$2ZfHu>ufE<{AMEZqDg41n^!ZD$*e62f#NM3S zH?x5@_rPlnhU|M`KjQ|c;!AWTaXSh0M+(MpWP`3^|?nWx{5cbQmy+ccs7&w=Mb z2Mq9|#zV%h+z)=g1&W%@T96h?kVkn#=ytB zTw#IF6iz`}StK?4zM&I4_P-c=%iy-!C2KUX9W&c8Gc(2*Gc&|YF|%c68Dq!H%*@Qp z%*+@wGxJsE&fKr+ocDZps#K*P+ESHz_tU+4t?u3g;wv6249ISzNcB;tUR`_*mkSNfqZqGd#ty37Um;CMlzU<5kvP2QX}6}tN7&pR}91V|ra zeY9vsA03cN1BEuL{HR?aFB8(cxo0)41a4+G%N(1p;Eibx6IcmO|ClD=p?q8DI=>>J z2N?D)RYp*w6;a$a>^bz%hI%ucY{Q9GK8gdcoz-+0+{}z}9u%0}AN?XXU!DpxSUYxX z|BHNALetez{Ax&h+@i^>c>hyDmWMuFiHSodF-4;A<%ZP#MqyDoAXR zLBbyobQGpxFk_i+AtyyW=x#j0h_Uxqn;eEC|2)ApS|UHDQoOHmpo20gHt8f zK7z!RPfVf}y^&DnPR*kCrV8J#f!){IaHY6Oi@@#<5RBqIzg3gCpjK+iPT>PA@uaI9oDa#cshgP)LT+#>&XLYqgK z+CpYU$VOoT!4KV=CEf>~Z%W^r9ya99YP5AjE87cnIPt zoZAxyC8Ea_ebR@grdhD9Zw^(mKFHBn3!uU3Ptj?LLC_|pdxGIWU z@P>Jeow@w3q`K==vHz5jo*d~}dGMsmaSwAbW zO5P@R0V_K4ul~GBn%uEmm=+Ac?R$D4(Zd0$=!Lx3y}0+|0I0ATFMj{n1#jfnr{l-f zh5K6i44RLS1jY7WZGf9fbF@^VWvlK*jn&3XZOr-AGsbno($Z}zDuMgf>5igqeQVuu zeYD42=EEI>_+VXjXoSff!|i7E{_EXUJ3iBWUK}RBFN#qH_BRIB-+tkE-4#GB(3O$$uf7FPgC?P|-0-4{x2d^%-|bj0joNNJmvth22L0Zud^na~lP6&PSF?ES#&7a}6CI);+~?1C zC_=W^xpe6k2SW$F`|p2osQ=|5K&W+%Lx$+oZCEY9ypy$F4LG1$p3)sCp-|03Rz6E4{->xG4 z`HkgA$N2k|J#DqZmR&aGhfn~Ffx@PKXk9Y?qVqaFv&$8{CBvc}xiampGiddN3r1g` z0hNsXA(zf+&S9Xpc7t0q;g_8*=w{xH#WfQ+;9Q_-Z3=Y~vFB0uEvMT-n@HMXL%sEf zy7X_vug^QB(LXN+|7(SilC4y4wJ8Ok#d2g{L@ShghSf(KrJm))xF`0XKpyp6MquNb zgpF=;?Rw`6Ndd5H-P4n|hnJGV*+=qbk3#tdg`wCgK)2}<)uns&myLfu(lz^*_Jzx3 zJ8@ZpZSvH=3SLCM)%!bI5TFKKJ!Uj4Y#rwZgN@BU8)CrT`pxb)d8dxoUAD@qkJ}GX zrEuL#yL?Y=OO1}3IKxPuo#K~^r*?FD%-4=Okcj4M{mPV@$ zSfGf!c&LUY-TUx<`F&y|FmQxt>0bigbEKe9Zj7QLh_x1u7B>Y!(su8+yt)r-Fs|x>n}B&-HhtKTmvEzdw-g`N4A%=Srs@i zM0vP2J!}ah67u##jBd8?C1?#`NNidtL5Tbz0`<IbNq`jQeR` zLXSSEM>iIUkoTeuF;lhgv&ZFh1Yt*hJhLo-A;+?d{J`2FAtNj6x7aaFfY0jl|9vaS z=Q0NBavt;g<}5RQddEYsVl=VUil5Kfv0>Y9@HA;s2JY~PI2l`|%CT7u{W{XNEh_>u&zl>UOE ze^pc{dcFZRJG`ulls=5&D~mAQEL4oXNgozeA2l9vcs-jLvrR={ELZDe5NEAE7iyK4 z(d0^1wcKM@;#HM_Rc8%SBhW>baSho5_!ic^cH+*Xnu--6?seUeX!V+aQ0U}wqBU=$ zB6^3f8s?Vr4mfW=HU4Noxb5X-p4&;LwE3}{7miEBwjc=$v9>I@;7>i63|Y@JfuXU< zQ1mt5ZJZhHk3Y}(OkWCup%*dU3CbWX26uzZpNGkX(;>NDA@<)_Wi%PovZUp z?{e4IdsZx)&fA#}eH;CZMO^9$>f`I3d*P(a-+Xc67CLFdA~pTz+#+S@MVt`=VOxQW ziy1sLlU~0aMgsXJw6Tq0)!}z662;PL6qN`^!P~nkzt)d+M+o8?7-)q}GK(@l+$VrR zSgvx`c27P8KKFaCx?SaKshi;x)@Lp^RF{+xVxPvp%*6tvIVWEmCzK{5Z8iCwOjaIwa>9mx1#fhdc^YQKh+1GQ_)@Zk`s zO)*!jPhKyf zr=P7Ul=H^PNdM^aQ0~6n1;5C zt$)KElMWzOUKj>h+8T1>a^w)4DY6YTf8J-qMJjV^8gxEOz_K*f;Q`IP1wFWe2H#Gs z*ROd_E*~D|z3+qC*Y+M6&d`6`(Lx~8$`l_(~CFR zbK>9SUFt><87s{OT4Y;G49od<&(uLbGfUCuY; zdF(-7!m`} z=!HnP1(}D%l2()MtM)iWshSkD4T$8D^I$kaSG6-ooLUR?=7aUoEwiig4c{&S0}V#u z3RSh_VYOmEs}nr)8AlLS6nX$ydsyZ3qBcgmrY;@N^N|kvIE7b(BS`Zq^(E_}i%0i1 z7^-?73zW-U{&qrxSYG4t;EhfbZ>l1$)=SADi|8o&(nux`ua4}4Z7WkJ4U65}w!uGS zU!X_s^~b7pS;0w{p~Q$S*>zst99sL23=QxT|FshUAIvcSt+4R#exHCq0SzxBW}5{* zyJHuOn|BjSo53;-2Y=p&Hob=H$;!4p-M?nLy$9hym77vVCsHsHrp&(*<)n*g0uXrA z0N6Ao=c@;Lykej+RerZTSr}zpt2P{_OZ1$$Rg2r}!%wt&lz!1jN(@UNwUnKBE(#VJ zN3tx4GSQ%-A=Y}|C7z<1)qJT#jZwkNuTg$&BK0XjB*^NVv77 z&zVY`TkBgEXk2C&(FHx>nXfxw7*Rj4DdgV1L3z<+_VyuEafEl`Z1ugd=-A~v+OW#o zVWVpJ+P0a z;%usDTOk#RnKqB56*iihHsZAyENhWzPCS(>fRj}H0acFLwvARMI9^BhAbqFggjS|l zBP5Jszir{YbyA+E19-}Z#_YXyivK+#Iaz9U^!oSR$wk}FOt_8r#+G=8SsvXcU}T+_ znpDx}m_~~Iz7bV8Eu@8DmswWNLkppuqziOTFTXOwAgr-809O0dvq!hg>w3H*wX@ zM7CzGT_d>kck}BG%};z68MymH`oOJw<^hzphY`ZPCT|y;2O9@1%ZEtqbHCahd+_6} zKk!cmW2M;o7p;R#S&Wc+(;cT01O%C(C^mA-p_L+ST&oxTPu@~^q5tZgN@Q7)A?YNX zzk|EL$n_?_p5A1Od%5{GbWSz^Oh4>05jEFnKLbziLfRP^V!i+e?!(DPLoQxc0F9oO z(N>bHpx!CYpubeG$kI(d`bJ$DMTvZpz3}vmD9(`Zt5e(C-cxt=)m3GO(a8e828TSK z*!|5x#>*VwgyVGrKT+F#B_?{~M3&@vbD;Km!;fx`TrEl4Cxok?ylDxK0uO!sM_><` zRoyD*7g~lSLhU1CL;?(E$Dp$FKg7yiW609wsn|*IaO{6t(rxz=)5pf1%?1i(;YHgh zIv#EsJDy_#lYrcXmAtp16x-?5;+|NiE)KS7klNqhR>#!R2j5r>NC+>M5pED5ZeE(cY4^ojI)~h~eNbDsgffzFh;4Y`g6m#n z!d7iGL45nycb%*V`Rpj`JilUs ztLSb&E9ni}?ZNP2jrHvy!C|UZ3N$}9#tT9-4&F$J7ErFUGkx*2GDghPH8(ey!U0z% zGCsv6#wt3mt1BRTmeFhRH(HM-5c0k3r|KN?6yZN$)^^?=YcX~>j^Za;y9!t0X#ijs z1IO>f_hq@7gjFo!^ZBM}-?SZBIQ*hXFc&UGuZDkg4bCNwPRz2*k4Zr!xA*bD+ z>5E=OPhr*cSdojJO3cT)J#u?baax`zqoXkJu(EfLVO3Zb@Q)qka7h9-!!eoFP|&Ry zml!DvXUl`J?a}!c=I}UpOrL?rj`yFT=<|GPURP~iGlB0XLKYhBf35r9{Z&cx)}Xy^ z02@tJmHN3m+!xCk$j5nT33P)WC3e08+CKrg{F`q}h7Xmi4QFaUs|^R?OzWrLWW4^C ziq)BZPaDFjJRhP9SMn=J5S{IebE}2HHZ%rC?5AvD3`QEZhQIXsn>%?E$^Q5-lduvP z9vnD72V`og|F+ZUI;p!;y0`dUqi&c>aB(0fqrubaD0#(Rnm(a3_(ot;a3p1~%@*NRAn zZO-X#Gf3YFgBuJJW~m5F=OEzPHj_>k-tEcEWv}cfU65Of)wQE8ylcqs?|jLqtB!j2w|gG7O*r&v|vTn#R)|y z9%-TichDd(1sgBWF*HO<@_904THDS`;RO~iIHB3TDGcy29axNLv= zAXlCnYK{m&9g^g9vIkAutgGG)WhZKGh%Yx?f(v)FCFj%L=bH;D=}TR!VSL|T&aQ<8 zR1dce(V3cs8+O&W8{WDORaUf_{BhOna4&y@-_3SP5<;#WEV)``jR%L=-n_A@sC%rP z(~4?zYL3G9-u8xk<=dYba0 z^#u*i4as30s52k>41!cJJA|G)9j)h?mJ=n6pf6SZRlAoSK)cBfQWHd*m-*hEic2|> zEiW6Abl(6?=mA7}$yPm^&OKcbx1woJjP=?!1eGNxlPfiQCNE~A-VR$4_@jrMgN3V% z8@6X>Cmh<=gc^1+_1A){^SNf!qGd}FHlq!bp3d>*6$tP{#o;chRjmk%b;NO70w!=? z-CSRo9@zZw8SM4Hb_DfK_pNd-y575%rQX2}-Y2|!W62-59!20&rkFkXN}iBj@jX8f ztiGqdtqR>E;c6b>oNDW7+N>^U;!>oqFU|RBY57B;P42M2y4~82nG0VG>Fa9m{7UZ` zD8uR%8EoL$!G?aYwk~V(_E`P4i6#^6-F2!dE8OHUAAx_*YH~uV(O$7(JL!ic)kfy_ zPYnfnTWFlGOQaiC@^0^5g6Da3?};_K_c|L0Y(`9e80JJ74^)h1NU=0Uul-(u>Zw@$OML3Q;Sv>H28JvHpFcpZ#-eR_KMYJ0EoVGCOdPLFD<^| zJ}!zGKI@HBSZ#6oP`-L_R_=A5zG$sWm8y-E$!l2?b9;u#S!?KON)~99vv{(O zT?^j9^PSyUEHxTG$+eh+5eX{~?B5G15j_G_*T)2{j&`e~8jdCKz}5qO;EP%D>*>}Y z-jlGJwq1W8Us_$AHw4BRZldw}%j3?&#{Hjn{iwvhdmB#ELG@>Qt;QuSGJR>wlJ+8K z8#HyVKV9r`ijGp0@9}JqOoKzy5{$lKEt4%LO zQ@4qLOwD%p#lH~v;`^eF$9&92jM_56$K1*$f@IN!Ey9RwGqjdha=Edw^P>-n#v`XF zLn;@4#Y@upWq5rX%SP|ZBP)mJv_M?x@n+lIFX>K!-fwc2jW$ml3x6Oj2VWYsi)sen zGRwRz@$5KTt|WXO)nTDHpQ@HQ3#vW~JV@}@?xD(<%l-6IyA`lwsW>OZW*TOMbnlk@ zcug@Baf8AbRG|ICMzjI+z*^bY+s`poX9>@=(@@>R4qvjs&r*ANk9WmBboz${^1h&1 zRZHEDv+3Rhz6+=Ova|g!)tJE9>mf}1_Rl#dzYbmAIi9YcHn-8gYya@D3Wa}T;Zp5p$ftE(@>Ekr;qJ#r|J@`w&*QSeqn#y&Vq`^ z*xkKA(Rxk14>&Mg0Ib^wzR`_kHbh4Aw(<9_jaj$v#-yIBcW#M`A=1iKsd^9JKO^T+ zc--ORtA_^}H3WQVNO_SDtg?gEO?Bzy=~Vl*uF*?rwI9X)$daI@%Q2c5p~LcAs-8Mg zeeR&u(Ywu`R!>ph+4-hLGLS3!Vj%Yo%1d^YY3Z|;;aIcQ%)IByr9@~~NAHtH85buX zyu#*9J$M;uD1O<6u=*4&;``HHGn&mrke}|)XrJV@!wDHZud?nkXxICiP{s}8U;s_offZNUfub@0lDAB2LI&49Vm~5AEO(IUCSy9rkM_=ERvsMkrm>|VWgdh zdT5}fhRF0K1K0p<12wW?2Mr(k|TIN4ZP`$jD+f&extgSs&UiUc5h6U)nC(9WLDV(_Xp?D8<8N z8HIkTacEl4d)PiyPG)*-+u69CCTKaU>`kBJf(?!**`dFSdKzq&;jY4(R(jo@3O^tq zv2;{thn<4?3Vecwuv_+D6_6NpXJ`!k>MkaMgUTpY0Uc@xh){%KBiD>eQnnW#yb_;3 zE#9crIh;-+LnOQm++1$bJk88FKX!+2jDEXqi-;)3(32?rzFD;!+=@y6^f*nQTkway z#%6MMmqI=WD~@yM8xacn=x4{T(zvLvG%VaiRuq^XW=bQqn)IG5>MJxAm%mNu$GzbigVyQWg*lBF3o`vKf`uA1yif(MYm*b*R(O(Rk~s$ zh7_&tV<-mAeMoK+Ro!eIqHkF+Upce(RbE3H!eG>KR3T}uXt6B3_9JNM)<(VNUOBg4 zI_HqtXo9$r_CHsbzH}x~K9ox+d5jxx!U~O%Ma;J~Mb~8x#3y?Cv6X?$M1%|t@vm>0Y6r+*4gwY#;PMWZ=GVVlF&Lh_ z$Tc%l9IOwU+A{WR23afwCu+10F-OBuDi{}aZ?i~Qvk?gS-l6Nmyy8tG+@S{qvM26`W)#p9F+8|S*)GXr zn67uQo>HQq{dIrd_&%{&sfPFcp*Wo%RTCcPp*lGIDu7 z{Y`oN+vh8r$<1R29GIW1XZ|~WZ9EcT!o2@tYAg$gfppHZ)4YsL?m4$xm)C`c;GImj zKMM!Xs}~aYjUG?e32coU(~fE_^D`@=-y1d>t;s;r>pq|UNEqBr*}Ewx?Gz#}zf%o= z>^rvfEH7toBdl7J$LmqK7UEH6%?oAr{w<63^|v&eG5$@f+FmiwKg$3uoNYPacmQCG z5*e!)+D9vR1|E8>vtq~owKpOv!QBai3dz_cq>)Ri;t@!&kcIu5c*a?N29?Fo6&CKc zl)+pRHQwszDL;{~Nd@)uepM;*Gb2uE$k1SGwi<-dw%qLDRaz0vWbY@4Vy?a_|H9|cK;KR0}rpZL<7-cDl(>lu@QrY|ucv(S0uv*6}WF6x;( z9*8M5bXjcWI*OO|7+=y;k5wb1fci>fvZ{9EH0>`f-g5;Zxqz?hona@Rn?BmkoEUqL zU2OpOPI8)|#mkrgDs%?m=RYsam!WGOA2)7&nVLUestcW~?#|DR5_XYvV@k&xlF$w= zxb~U=rwxN@^qnu~4SwNh&;K001c;`Rpif}#bzODVn z@@8&u8iSbxF~$)@^iZgPw4IUI{WcZ4i9kd;`>ntCT?_}zu5^h)-EM;b18;DIXH+bD zAI0A96mG*UNocV0!L*XM(S0`x#-q0+;mt;VdK~W5>)ck)ZeW-|mU|3uxgx3y9z_*0}!Zx4zZ*d+yZnZF<1S z!_%|bu~Bbmah77&-nkv1j-Czct!xieGQmTUmRWa*d-^GJWi9t6NYy>=tI~0B*t?oz z^CF*~%I{tS6Qt{iEgo~tK6r)Pd=z4H2*a!q-JDi`>NY#PV&VB-*;kh^K5})IwD*dS zHnF*FrWXv`Z~VaD@}@<^xHBTXjY|G62j#!>i5V(HhWlg33sd~&fniTv@y#_)JNf~| zM7M??t6jjKB|f=WO5TP)R=tqltSjam&HM{k?^j(3*v4@cxVnu7Bk2H*c9^peLcS>D;Tl?L&c;3$pbu(p$M(BEY+-3RwIp4GnJJnMo0 zSm|}$-bm}ps!evkLPB^b#uecdUpvVpf2+mWinML!UcMXs$FmLyv27^q*LN<-J6}9u z4HQ1lC@i{i3U?;fm+Puz;%p?gOiizZo<43Eh`scl*VJrFBku<*PyU`Po5yRw>)?{E*VQDs|sylqb;S0^Sou zx>m7CTx!7ZDGu?&O{s4)<$RTtIOu*dx4N&*x7*A2LwEX@n=`cp?RbU36hBE2o(?d= z1RbI9psq=Rwi}q;e(_mPU2D?q^-8Y%CY7?xp<}f{;RATnBCq!`a2GyyM{JQ@5Ckw2 zgZR~iS5P`~Q3ui8i0Xa1dta3nfQHRNPRhHKP=L%W<;%&OBZ3%&6hwOqt-US&9>mSH zEf+VAqSI1?b(z(T9Y$lIi^?<;80Ktcsi-T%J+HUzXML2&k7d#8P4WiY5%;PlccNa) zY;N9uU8H$-(iDDb?Z84d58EDo>P^f^h@iFa>^w0!^NM80R#DEpC>Babm@=;^)x5mJxL&vn;&)b3vLneJ|Fl&U^v893vGq9wZ2HpJ2~+>udLK(rg^{J z#fC!UT(LmdhAu6*r+A{A5Pzf*NsH0csGt{(jKfEJqKs#Rnk9Xd$D_t0pO__UhE`3JF()sZIwL8+`dE^C)S z1wi$u@vszp`t0f!CB1EO)5h&xmIFWdqKLO3sq%p8DhWSix2&&pe?YRjC`Q|@`Rq#N zablD`evtW}qx*kZH46pVb-cKcAj09htjh%C!Pu`RD}MwGE(kE$00HF0UMoRK&0nq> zUrK}|q{+D@N~2a`9| zA%uJ^qp#~Q!v-79y4y8lljG>QpO^MRz{872b7cDXFZJp$?g6EQqR5WcxTy^pOXSjvfO^a z5YOgK_U%=yx0_uQL_^YFs3QIoHbI8|1`S5fSRW3E zQhw$L|K?fbjUUkXUrrZ87Bs3~2j^cWGozxB5dLFZMDl9`9M~7-(1_?Kg&$&tR5C$9 zur=T$#L{}%EDxjvzdNY66oK;&x?&74f@BkONY6r4(LDB0cqVx7Lqtm1gt4I&mRbP! zx#)sCQ6RI0T;wP%d&#`ST$F-Mc|V{ZwH zjD=q9LF-Jj>#PV9?B-{E4g8gfK357K&q#kchsLV{BL`(whIF4T` zu1IG~$v{Ai|2*LSHy%Bjx~6H#Eaf%l8dp; zA2oX)DJjdyqxsvV?5|5Mwr>~N1ZqH}Y|OJ+jLv5s#9>kr}q^Q90X0=ZpPQriqFTs_O=wc-TH zS2EHeSaU-HIVBB_`OJtSFvv}&T(D0_FdU}_E=p}XCy-3m*B{avOk|;~ zNr6uxJcM?@wtV(uTpv@U#1Vaa1L;4dbo^hnDI`W`QpV1>h}3ffWMD04*@9KKSL6Ds zgUus*?iNz^#bAZXLos&ksPMP(atJW_+8f4ZPMo zLOnY|L4`3=Jo4K`q%XCXn#;Nz9!qK)m=<(rmKWPkS_=pK*q0J!^7dNQi=q3~dg0Yt zd(-{5oI6}gwaK7j7VFxI_yR{zoL@hQrX48NrLVhxQAC5q5SzhJa(vgoaq1{L&8!ph zK$E*h0=p$4ik>*_JD_S_{f?1nn6Haa@O++4lZ%ADinfxSp=tJ-u`s6?Y%!~RPbh%4 zmRA5tfcK55JjZ_PGmdA6EM0pSZ;-TPmxsl^==;2c6%Z9#`|uEgOy|3Tjk(7G`KM6S z|CocjkVzDzYYNC1#Oob-nf<0+SSpE6!G=rKqO0`8TAyZXFk|~q{&O*#Q zwV>%F(N(o4UQ(L9T2+d(J$5E4@5CwhA@^KWz~D)v@nhu$Ydl>E<)dy3TxeR5q+)a> zV9r#(NRkQByRT3l3;!;c^@l73+${HZ_N7rro^ z%l~;w7x@u7`wTPL9>zWRlkrave5#Tl&!k7pzGN6D*?J{pbAt**svBf&r6UKtUUMbbPFr2Po-M6+Dl^F>xY9*H5*TEZ@$v zb#y~KI4m>pE<*DzS*6_v;+QEhl;;~JQ@MZAy%{4}hp!HBQz%0HkGK6>Vqsc> zp1av6W566szS-6@#J&Pune~JMy#X=fa!>$9C4Yqq?D)H{*gCovj=3HYu~qZnJCkmflxk2)Gcd zAtwdq*6usFnGndCS5KHrkMK^ycU?n)cv|;xF9r%SSvkAdi$dO63YX?mRd?F_i-n%e z3mwjLcgBXoyYY9q4#yH(DHu<^sb|FU0{02#tg4EKAVI0WQ28P6nZaY_{i?Z`ab86p zhj{!&PWybL8A?s72ATBPc~bL6oqkOA^1vgBFz|^W|^v5SpIg*07Z}1Zmu}Q7;7i()1GS(uPhC- zqgNdyb1z}UY~^cA)6DBPljQ}skQx*&0`a$2+{k3(8t&DEqO{4_?kd~arC02 zHQZ2925yn%e|7=}V z!N8G|C)LF8SWy=fTm5$WJw)uQFGaq!eNQeZgmx#`;wSsKBW$HYagQP9D5KIA)DkO1 zBq0$qwShW=zQ)nNP(W&_v}xGH>)Bc!$t*vv-44{!*5C=&36`hi_BK zW}%EslZaNAtC9e_r1Gqv=UFy^pCe)VAaNcEph=KLfnz}rhQXc>eO#%16)hLnG6=55 z+Uk0wN{L!9V^s_Lba9FgYWlsbi-=gY{kmVtHm+js_U?`6napP!8{f62V%?-Sr6%;J zum=55P|<2i?X`Zt>JKG@W8`!K61Q5Bc_nA*SbFiVt;!JtiApL9Ici<9y4EXWjLXdaV#3HaCi5*D-;j^bEvhYg034fFBQI;a&0i5 znRk^G6$6FiDfquy6H%$_{_zBD4E&}!465u9Y85iCD>^(Cv*HX|9+8OJepVRBo0Sx? zqF_-F2-1sCuD`ff)#P+2$NnH!Q2zV_WqQOTT3a8Fhl)Cw3=rCW?A6VS88wg?7-Ez$nG2&+yf&W|L`ZuTwQZYcT zsz>dbZ=A5VDMDkPPd@x*OM%E1)z7>}hn|c%u81hpfWAm#Rk=Sv_^|ejp^woD7HE$B zMBJgBh)7?8g&Dzy=(wK9M5!?U_?7oTr{0AZ7wGnG!ALO%6`t{AiI*v;A4#T7@g(ug z{dq;YS_V3&&Po*~FoneO5B!ux_-6Y>r>UO#a zRtt*Ven9&sz4(MA^t=2-O{4n%Hy>E|FHratZbS6~sz<>BgcO(vqu_cZC3IpWgsg8z z5_$Y>#pmjo4>;zKBuVj=b426UFo%g6m9B*)i)T`oXUmA(^Kv81Y#?AQi5rpCR}6$u zMTZF~)p#=Yi&>)@3K!>>039h8Rt$<^9VLzQ46DdkY{n}c_NNLdL3 zCxZyQMJ#J23EyvJ6k+}%l3>d8{Aew#0-4Zb&WN~Wj~5w<@!Bd1ELwY~H&~t-QBVhz!z{X(MB1U_r)tA$GC!lY|uae=lA!kFVXW6{4(1O)sPy>{|he^4*lze{vXLryjHv?KVg0d zN=ol$i-eGi*mq+=9pHMT`TN~qmE?Ff)QkQUEuVt~JOpY&!?_UI(cWYD8$stE6Y{QT z$fM?Fz^Y8}d5czDrDIVCp;AfUOl?IDR6T`=?8TJrMs`r>Rez(XH|laa6hbeqgp^~E z`~iJ@qaR9ht2k1}=yilEdTLn@mCyQ$^k84^0YIl2tA+APB7@WxzmF8ic0JUb6+`~I zF0}tRwQ;GmsjT!uv!Gn~vsr8f({jM0tTPf?NCq*6k_wztEB^FAaL`|AnFaKP4wT>R*-vb!wi8jJ}pf=SxmDlq3-k z>R0AJWRgfdzh1wsDeSZ_k1zb5RajTocq#>wb)$LJ{bzjLbwu| z9BX1x!V)g~B{-5a?Tjg0Uq{x;ay2Y9dV~6LNQOrJc?_Qa_|q$hDeuZssYU^t+~t$u zui=}&%a!;F;r&H(v1bMKr!u z1SHcE(Bn`)jQ>YpwHaTl`PKGWexjeHv1Ems_RQFUPu=U2?tW!2kHvcp2~Jr|%!xzr zTxJQn*x`LzeYg_uWCHKw(2n5GgeVc(f6FcZ2AlMvKqZoW)aQdUeTS$7B7HIHTGP_c0(w9&58dkDMlFI=3tEw9%Er2C9gWAm+i`?MT=w*%G` zR$o3lY9&)aG^2S%dQRaW!?n+1Gx{uzg}?QT?Crk1`CJSWF{YAkKAsd+oTO6-G(y2JxLLC19)>wgh8A^r+JL0O~m33uo58VQjki9~s@!;t3DdehrZ zzm=$=y1oTzhx->r6)+=9iIlhtN(Bj@1($yhkT?tp0dF*wg=5bDek&@geG=57h)^9{ zpp}jB+g>~7YjyOGTcm>D`~+${W@O_6U@V_4LNglSK8!4}O2uW-R?McA#~8VVF1t+G zI$khkl1x(;*1eh*X_*tpLovM%CPYISO2ToRXeiz%1q=%(Mz1LO=u~mN81|qSheI2U z--5``n&4F*)cIqTRLkzXE)$t}4TwuBD~GT{o3q%Pk;7zsSc;b$z;q^+c4F&J+TYpv zA7h)Fy_=?*4_`x?xC{9xet(F-v(9C;|waJbaPF4)} zl_Q?CwT(aJ(t80aeq1$FgQTErbd~>e$p5Vo=f5*jmmUdn-yTsmeV%bb8N~3+zR0f_ zgbi9(NTWO!O7b+HC}n14&A4GW7h!4EoCtoNh=)>w5Ue>>60u%ApJzHL1@p;BP1>t$ zO*xt#IY>J_KL8mK2~A3n?A>TWiPR>lf#ZkbjD(IN#k0L~D;QyVQRE@fo61h8+Kpac z#EYQ^9HY}u`3NRcSrtIXVNUCXX4|7@?#wNxw(k?vr^C;3Rb9&%($%WJB6m6nHYygZ zLfcn!oZkpetWE}}kL`msjMK>)P6@-5cl*JZi9*T}%X0^(*=`RLIuH6E7Z~otAFnvM zsU}H-BLySnl^Tt0IX_*wMt*y-b$zU+EFiv1AVErox=z6Q<&#%3Tib>;7~{(2wKqp& z@nz!n&k^tp)o$2r#0SrI<ou*@gXQw(0*Qc-Oz43auVnH&*LN4jsa-kJ1Gf<){$z z$q{LFsFzUali-41QWgs~JfFJytiY}E5Chzq#I}Ow9sOGfxSfVdj@^9WQ*`jAg}>ngz=egxbl*-_132W@(drw5R%*qx?h~zD@7GU$iH_8 zMptokJVSLODO2jQM`tEHr97~WJrrw}77E(?)PPE;m1YmgO=H*R8fg?a58GSRxym>5 zL36}-6{JzwHps&K$3ps3U`1|-EMZ}t+0B6aOvSk++T#tL= zhE$Vs%mnHD5#p&#ul}gE<|EQ9=S0(`oOFiaGfR)g-m{1wN}iL5W3bCj5{&X#4jHI! z`~JMl3gC6`b3vNB+jeE*GZOW{<{z$4X@(ql!VkrGTTGWu(EcHPee}pMHVM{o5ES-7 z_1;y9=|9hKg~nTv3}0mej`TTkqt11_x<(eN!)vZLs66xBd;VKAV0b2_A*1jdH?q<# zSzIzJ2-Y+oD)fR&+7&;(&RxBvEuZ}8rraR@~Rm~kG!0u zToDwpw2E~#8%BNU%3WlSXRbv-gqVd53b0B4s{jlA*KK`>UR*RuL{gEFRzgy>WNfhTsHuZ%A+t?ry*RHC4%>#xp zYAa)S4IN#8<=tK^;eClDLERTtT}&%J3-SGxe=_`)J!IL0)6Y?DXt%E(u|b4NbRg`n z6F_zGjt(@Gc4h@00W!kd;@>Jg2*~+8nditJga|2l8n!rX)1=;&n8{=8%=i_~2&MyR zxiG5O^vQ|?r9U)TI~4CeYDTOZ*xvnBppiLs!YUbtr_K@s-CS?WLUC)fGU@-1?h^?I z+I=FUtT)zl2M~d1oau(^_`+4;`hx{y0&9}ZM+s3pDV6ACmRRKwxXm>=GvcxEsEfrI z6GM#Rey?QD80TP4MZ7AI;SiJd{fb*tc!jDDd#l8;Yq zHk(~lEi9x<_wF*oBny@{yatx{Vt7?3I)Cu4ZKf$~BCumQF?_7cEAow5@ii1Pw58ym z;1XpcT0Q;#z?g1pe9@Pl!rHT(+FlW1!>X6(vx&N<(iU+Maz7YG{9k3s!Cm}W1|d|cSZ4n}40V@z8D27=j|jHSNF9wIVWu=wA6=@A0h zbd)^ZWlH~UnnoxnPghiwr`NG%I)m;li`{Ow^5ZOSU+%2diP4i`x{!~S$KYE)Z;)Zz z^%@FBOjv6-o2H<+`l&@`sF3ntq|b-Otk($LA`&cKC9n#oG4~#z(ZL}whx=v%8IP&y zX;aPl%}We=jdk>mxE~*a5IiHBjFb_o<(vC;BwTVxf5UNIYf_dZLNk&-%Yg%j`u7jV;dhauiku26<0D{-NN@~F8z+&@o7B-0wfr(h9FhK7H3Iv!?<*FoVEEmM);jrpN4CGKN z#&Pvl{)C-M6AtWKRh$p(QWMnup$juoaM`%KIfm~Q4CXip(dSvnjE2!C$`Xm~8he9M zq^Y^cCN&SCdgEEl=BSuu+t+cpfiSnx7A57XDy6J`Ews3^gWM+O3{Iue_ThphCw=YA z&Xyx7^N;k-;6u`cLXutqq{S3rj|KfKgEn=~s^>l0-Pp+WIMj&6C zew)=cchNeRiLO_!zMkCdzU^<~KXu-+pfj_O zN9QY3!q$1r7SZi>y0qST4thTK(qE@Yu03iKu3XgGfv;U7Pv3(XAvQ+SPWsrJ0DR;ZESVIFL>0w+PF%8*jYNu# z5qlnIrBOxxu95na1r_b+pDBus#_|ySlylvgYzP zC3-r0qEHdF>0mzkz72z21;*IMbdx>2)ywv`M+evo{P-lRqDSi-Q)*eHm7Nbavj^^O ziruDHJ8Z{v@tOz@j*dO=AUOvH0En}-=e;P*qk+*q@h?oTQT(7_nxDMSLTy?v#${GI68 zeFjr6cb30SGa|%F&!$vZztXojuYB~L*z~WUPxvYzrd2HYVMIb_QNwvomc3M}U@kKPb4+^9XeBe0>9hp_>_mvXHOfj9M^(EVwE>JdzIGj4U#78;1 zwQ3sLS|873xEH2$^gKo~x)VccSeKtkyL`L7%w12S-DOazOvvXs`|jqsHSvL#i5xt2 z({wKYI(u;zo}%bmmm{Cj)us3p;Pz_u0v{|+@V^tHJjFr_u77w9&t6)(cY1X{vUdAS z1EuDrv$i}+06V?>@07Qu-4Os^8f{_=HYcfzZ-ZNy2=R-W{sW7C5?I@u z0O{R@#>1u4Q6RWkjy%C?EO&<*rjsJ;QuypWxK;RugSz#rD~hj-`wVk`h?>uwkS|Gj`ZGH5$Gm>e#LqE^(N5+X z(lGTKZDMNH8BYsrx6MpIki$rWCKcHV9|IyIk|UjAW$<_Z$*}gvS(`x>RrQn!ZYXJL++1 zL?n+7OrcrBeVNc`6du9K-7h&m-;3G{@>|=hP}wpEZ_rk(Bjv2>$i#KrWg!D@%a5TV zHY;TWdZ6F&JMRaex-)XjvR4m3$yAU!gCdX*Z7RO+1p*XRfB9Z4aC=JjfzQuCIdnkE zw;@N;tQQ~SdTvc!g?wN?XO}_ApRgA5VMl-8pRl_%z3ib$iO_#&>b%RfjCk;WE0i+= zKoNVpm>Y(Xq9bNb^>5^Fer0r`e5>*-bac5q#`b%GeqGYCHV`=_xPfcQq{crU(U5Yq9I98JLtO0)Ljhemgbmr!m zn1EOrRVe>B9_8PZA$ZWw<6_Nmii8KnGcO^O>nR2*ky)NC{T%P|@!PSmpJpqx@jFP` zU*^c4UIw?45U_P9e2wlC#jewh2tY(N%<6o4YP7Y6gnS3~kO_=>f?T@4le!v`WXNw0 znOn1*4BctD+MK#V%pI2uegH4>T~y?G$hT@5-u!BNWgemrjs#~mcKeQhNwzC7f1cQL zt$nzef+#$RYE@$Ehr5$A?wPYt2fP03U1TzO_}P+Sw!TDqVDbIK?iOU6s%Cu_($<*YVBTD4D7 znp#9F=uQq*eAdbMH@s-r+vESYq=Tw7R9VGLjJ%BhA9%*CXB{>3jDY`4Nq7aDgAUx| zcY%ec-V35=ng0`oFn`d_IP5NWD*xe+@=Ij08v5Kc<Pb9os8at=RpFdZR7_V)3F~IW;u3zahm8Xl8Hoq z6fn@1-+vHGz$Btq#p2dTdRKp(#UW#J=X32mr=`j^8bnnG-U(}!xLG`?`hH_v@MQ3@ z_X56U2%7BQ+ws>`vQFUDS6A$KIAGTOD_l-x{AaFJR9%o^0TXc9QUPd*-}hX&ePA$4 zpjX-4GM{wXAPVT&j~1@gcRyPpx*g!zv;L+1%%mt^*uegt_IU=B-Aeyc=Jq6L%|I$T zY^UFw8t%|G;Pyxd6ktuM&}NcPx120XzWj<22?~`>{SRjo&IZ?pwsFu`8hf@2?li9-`p2n6~+So327YXUTq~ZNTdvnT>0%FO+{0 zQMUY*gjjPYs)_?jc651 z0PsADI&k}nY|t3KjY~dkg!vGv)aTkYLFWegXBH)nMXKqIlQ*$%B$H&xxd}bBsCw?VOi(MFd2Ie&`)QD90s@zjbe#jw~ z=j6aVt9c|%glwv7h6_5XsNGG32&lpT;6pC}g6{90Bvr(FE~~E)xskXHaRgLaptN_s zt!Xj<)Z7iR%$EGuv={VX3HUtSYMm|T)t++zB#+9z*@Dx^FgF|B8C{pOPK!zvbJV70 zJ-5OW9Q$n7V*QVJ<+SLFSpi2$L8p3b0Q)pxU{valKXluJO+3$Itxz`75xONGd+P242dnG zLw?5P@SKS`UuV`*DSdZB@_BC5ZDp-hX0K_hDs&FCXJGqLqotFbhx=Z*VhR^BBO78b zxKk`9h{%A2IwKMKnIN;2cp7vYMa6(#jtI?H))qiSMQg{!#VW88ooR}1?*7Vq#wkpG zu7%FLEqLIO){zaI#15%pe5aZP=dMha)LZvwsBM^&eor$Bcx%nxVYig|%vu+$2azaq z!83@;AH1-ia=waQN|t;VxW5dUZ(OVqxoNq-FO&XL5W$vU--E;Lt)k^AlHXWr>aLIs zIKLl=(K1!e-AGI$AztR3q4cnrb`7bsFjnQQg#| zr^?|~A(8qpW%su~KmY7+e3o6%-dn(TCH+_f{`2#zo!(2Ce12_P|9od7EhO6Zen7;G z%XDn|p=nAx_0P5*ti_+o#2mXR)%T`(VE>pyN zkz-f#pw`12O!V}*4RhZD_Yln3wZic$H{-OX=N56Tqk+4&+3&br_FR9~PCX9H!v|-X z>pWP_rqWY~#UQ!SanSN-AA1dcsa_0;@g3=8MaOG zPoT5TD@dk)ukggsHpEu)mCSy{A9#3pYg~e~Ol$vl>N@1TOel#Ig3b4P;+GI*Nf7-V zQ8(f|^42z8OS3S23RM=_44l&J^Et2OaRgZkUKd*v z6g)wll!K4GR8D&%+$z(6~h=BG8ib8!*8Ou}xOAccWT63M0B5$$TCuz`?)) z@o2H3s-@Ebp`tAeY+^jRk zeTD(O2Zi?Y?8fQ@C2?8v(uUNAfLs^O8e&kuX_|dw&8b)d6~>(X_6Tv9|JTa9thUg% z?>h-h+6|xq#xl8lf>S2um7fQ-G;4=^3YyOOY5pfu7|l+ID@P|0LX<7Hm~2Ak_@{MI z#MSEpeuDP$Duz8(kgmIo7J#W~VtOdgzspAo1842Ybq+I!q-VafM|8NIUh(GW*>X6| zIwl(CsY}Tw>sGOC9w47Qua%I)b0>>SuktpbuH0^R8!1CeFSdmen=cHJT1yAx>H>Yv z>uJYo`h0;8TM(Jq*Fz^m*nyMTZ7+p;GN*WHo#(Xg~Ik;*!drCKRce}ea6b@#$J|vtEz;28T(LNf-hKWI6Xvyee^C%Tu7W) z8Py3TJ+VS0zHkzVgVn@gC#~zArlA@PT|Y7(^>j;v!+grAYue>iH^7f!B@V$nboVgWE|e)(xj4-0zSAGKgz^!<2;Of{>xH?_F4W_7B^VZ26u^ckS@=gjP9 zV~(SgRZzjL6E`=o8H%mS1lD$%Zq+Izx5L4}4~$V$Vn!k`+@zJB%;-F|q@=gxH@!C8 ztJvw)Z84EV{f}29M3!;_8Day#N#89~d^;NgZr+He(;5C&SUW<_hsHQyaWTD(5p)_X zg|qC62AmRElJdc+MKV3$!qN6JC}!Pfw2C$P+om6G4(gJxm1=MJ->HXUA6YOvxI&@` z461eoh3@hV{Ab1wo`6-@?Zuo&|3%EOl9V-Vq#v#N>Zw0M4cYwDquE55T@hm7;S`J9 zg>hHAz4o{q5nt-bWsH#3D+;)1@9Q@w^3}=2jDX-a*7_yOm|{AEkZ(bZR@@#4c=8;A ztF`tsME6Bf*ni=ua6Y(Bo9AOvv5e}>^`|o>1{SeJy?^~%=DSjvi}Qh#;fN|)LsC$#o|L-)#K!iKd(1Ij4Tj10B@<60x+Zbd~?IsDhIifNr=HCL@{3 zUE66a1meF!qAhxBpKNzEd6Ax2qXRHTlKNMqxWU%cXuEG_$45BFEWdHSJ#RWjR@h^89}rmtg?&Ns4&cN>6*4VZQ=n)%zIAW2x^1+fNU7tA2e3#YWm`oAgZshwrbph zc)nYf_dnT*x=`}pvgxbK?DabS7NTdcJuQqjIp4P{e#H1k_X%SUBV9x*Y#h5myXp&M zV=(3U=SvkYGGSw{V7~tEha-e~L=T6b@_o*MS1Fb+zp*TFwj%3tsdR3Ry+td`XKiTP&?2L^Z3Qix1~cqznLVX{}itORu84{|FOa5 zs-4(1Sa;hA-T9EW#`qI4htQOFFAc2r^PMg(+##b{kBvFvD)dO`f#5n0^&8JMa@&$t z`%puSpIovHSIiZn;OP1Vq#C5(Wdt)Gn^S!W)1||TWei%K0ltKe4%Bk;q^1pAe=Pm% zb8Fo3+3900X6BFYX%0WxncNX?PNLZl+9s0(lZn-Esm7LM#E(0=<~(K+$$|VWa z>~Z}5JbS3Q7i2tO*zK)X`+#pK@-1P`cF z=)N`$(kq4N`aKghK!{&<#ddlk1-EYK&C>s{M)pvD@oFDTMrMg|)kOPJT?>G?dg^sO za_6Kssi@epWl$g5Uaco{VH;*_oLrD79mt|YLohQ6Pq}4>GIDI$OzEbzs(OeuHK|4b zYg&Gj&=u;qTU(kA9L6O@;E!~p!uGWg=sd(hQ?VeE!E&o8w_<9+vh>vtMEt%rct8X^ zi`jD=sWuc;=XViaf)-Hh{NLI18)YK;OtpzO%P0dh!OgVGB7nR$ap*zio@Nzo z%@gz5PUCJl)2v0T9goRi`hrCp}lqV;@X=s%vyq-j(FXJ>hqVheb3ExnUo)_nOY$0k>4kL z`VD^@(u>`R53a3;f##DOx`3=E^RWu&fU5RDF0E=ek%}RSjI^&wSzR{DaXt$VEbJ%C z!0*Z2{;QH-C2Rd&mu@IflN)GZ*cMnnjQZGUNrPmUXT6<}PcZ3jtugw^5uAXYb2e-l z9Nks^$Ae=lZ&!m*X>=-i(f>$j->4Gln_(gGWA7N0b3O%JH<8?aO9jhAGQ7Q95H1PK z)U<$Wf&rs*J#ni;Ld(ZU||p6j5*n!t`4bW z-%mWshDh{_Ky3@q0^kILvIXB3pehElu6iVku=9!i8GGERSq0&`ujaRPYsS6c1_Hbn z`X|WWquE_{=8&%Re+?63s2#;#T?h%g$~{=59$FE8f4%$`)m(g*Ct!SI@N4yj26=f?}vY4Hyib6P74(ebjjzB2#2KI7v?#-oCyFF2pO+T*WqzS#ZYr?64N zG+=bO4z(YXqgKsvSR1{myFC7#R<6aE?uY6=@Ay52DpZ5Ol}1gtrDOUXN^N11+3QRy z6XFuP7eY5kP;VXT8;-hpWkE*1}VZEMvHSy>xF+Dffn|Wz5%40nIEl zxP)<_d48@{Zrn`-KXX2Jn(O3-Ovw|d4v4mozG7>_M)^)JW*vNaZ5O<=n(WZgk!`+* ze5?27Qs1G8d?XmkhM!$@1HTNxkPqBUU2D3(U!sPp;Y&LXl^VY8?R&JB{d(RjWC+;`2Z$u+Xy?f@h7f)slG??E@ zQF%C>+??5SwQD;Px!k*P?Du`9Az`l%P_)uu0}q1M5S`mO%$TorGrFx6*ha+k5>XKQ z0w2g^DC^h<<76nYsomh_V-^44?-vuR78Kc})~m)xj9FVtDoaFi@Mk!GY5Isf5(4MF zguU0!XBjLs(v$aYblS;df^C`KCHSZaD-28r_W4#zIBD1_2k zm)nnKqz!wk%~S?7L(s0KV&0;b7stTdzcy|bi{E8j-~}o3DEN)u@%x)Z84mEu%b1%! zDeKXXutr^6DxgfLzl1~p@%a2+ z+U3(*cnw0&&~u|$m-*-35;s!CA`H|Wh!=An+!5h$gP>@6LNE@nE-aDFsd!Odf9JN8 zZFC#|PPM)gVF-!zEeazRvwm6yZocwt;O?_relxWz+9v?-ReL2oKCkPG^;`_g&jNTa z|L+5PLIDIP;{h$?Nnca1!S;d27ye;|ps9^9B*DFc@V@p-B^5E3x9(?DVg{f4Fhve< zwE_WzTQt>^vE7I^$TO6Pav26a8Kp{|0wtwahY7KRwt|wE*|86WY?hPaG^cbaM&US1 zqk5urM{Af*GhJY(^|*5<1NBzU-Djo+hx|ONxm6#NdL*hj)kbFr;VWT#-gv$XOIWV| zu%Sh~_|GCj0UUEbxwRIa-aPa2|D){v@$a+56-VfP= z#jmG(BX5(((S3-_>t&&xe{&6sp~Ati;WGRayZ&vuncLWiyw0<((RI_#&W)Sh&&=;R zwixC%bqC}ui<@1;2Y>hipO@JP@*iUFFgoCp8^bWFIBmWEpXj`V<(3 zGCz5!XMyO)Rv0<)Rg7$XmT6ne31bL1uqDtdz7 z)tWd8Ul(%^4%uLm!#(y*uWdSJErLK|JWw=1A(Y06h3KuIaMCG({*ucRl!&%R5Gq&q zKw-B_#bqo$2kV}u?etagOrA%Tz2tI$+^p&0v+q;5oPYg@Gec&%cFRPOjsm$`jsDeG z3%Ja%!@`)|PL~mHXIL(*z1jTL?twf|5jC!>4So&>pAX+)H;Y_<1YY^ULYX(ubAAKo zl5i&mw)h7!QV}up$m$AdD){-7QcHMl!?jq6troIuuds1jCq%lmyLM75c7Drin-NUf z(+Kk-=yr@3~ zx_s>7%>#JeXJ6zo9!vTyH92iBC=s;29X)au#Sf8g#0{+VM=>gAlg={Wq}C4yES3(J zOu^&nMY&tMF>2}3KW_Z^z7rkwhs}gD_k*pRX1@%4N6qhU?UhFTSh<{*%P3uqJ?K&% zo0s!Z^HzPAY2x9vB1DqxWynLbOpOdxSo_$CgWg`D5hgbvzahJOx9tLHg zvjgyAEjHt~=Uqh4rSo5u%Y}NfR{L||gFV4oK{vu%M?1e4OBzo>WcezUnDag$+kRwAB4fQd{Xo!aXgAzt_1t+1vcejLUwwG=Vz? zue`@@Fk)xYPS1_A#SpqvI3CJ0yD7ZgpLMbFFJtVX5Wn#MKC~013~Y2a?0eqd zJPtXkwvu@`!&$1rq}GOd{&aq@Kbd`Xz>ZCZ)0>R-meG=VzNt%T9MzRT zhcd6*Ls<6SX9w9=W#$Y~dz8~?a$W{W!=WRxr;OL$dn%e|g4Hhn=j`H|6B2vt^Lr4t z3!L7Rxc@sih>!&&pkF*sFPZ^doA|l*53Rb%!~_Q zdm1lPLf<@jx9mC7v>*Mlm-sP=f*!~t6^ z)r!$|STin>`>V?em&x}kv&S!$>}%DFHMP$326vj0{zdln{er8cjAkn}^D{l)0awzV zzFnZXG1os9-VZ&$TAGD8o__9>y3WsEw|B&5b;f#ZoCAF6HJ=_H$y2=LR=?@)Cht=+`35|ou!+T5;m`PuCa8D!9%1WtMuCg6?1wH*7M6n%QHRAV=|S?TA? zE*M-7tjPa7bOEfA#@8ijgV4!q0r<`y(1=3 zA$!b;wMywaH|S73v&dM+VmGbRtS7f8t|Klp{l52bs4UlMjbUBZ@Py4)=naADz{g?V z2b*9O(_H&kYP~QULzR`*_~z~NCV4y=Yr-}heJJNpf*|U5WkL56lMp%p-cwJC`@R?u zpl^Bjaw5cT7^EA1y!3}mUU(zG`dQ1d$L{JxcXnl2JMb;W&fxk*gj?_PQ{F=QG&jF~ z!{gNBdKSA_DsgMw8OZ-=$8bY9?RQ4{fpCg0arhor-^^jwi z-Spd1o7HrSufL>*L?oh8?2x~8+@mOqj z>6Msq` z!tD!JFvFoHeUuyls(`gh!$=g$BDU|eR>BvqnT@BgJm77H(PtQKshed8CU3R zH7qP(w#{NK=r!e})q`87a}=f`9Zl1|}86RD#;Fvk8-T*tVrjsi`3@{xtN74 z44O*RFlO8Q7z3p@f6MhmHn%<|${RS*Vc|(+#&r~xudr(fOp>Y!7*x)Sb~=wp`+QPM zB7cGPD%IBq6U+)zs3SE~k}IxtyeG>MkLo$twdvPh{q_uF8~tR%(Nf|MOSu;efX#ka zK1I!o@nWv~R98RoWA+2)BkGjdm-P9!`x3iD(>A!97)ygyK|{aySKFlun~$^(h|m0E z>;^pEFH34E-U>@W%2At=?N>9>fKV1j0HU@#rvdn7I{?w*+CLX;m|#6t7FhREf}UY; z8xk~mA`Z!SwLd(W>aaP}O0EL2O*Qlcuh;uQ{wz}H0`#GlfSdhN@@C4fP1`HU;NPhUA(%=+{vc(MwxD=5RGY&{Z zDQ@Fqg^t4iq7)mF-6n<*Vp+b$e>#Q^OWvCdW8>L?ulLymG&|b7q1TNKL7hpErfynM`$?tsQFS)R`8vb3?|MG1dkne99#lcY&2&=XgVA zRsGdQn&C6sZYOQi)f5%w_Z5OYyHA@)@dR>Tfw;J-d?{hNQB&arBxUijjeJ==`UK6f zojX64Kh^A{vR69z4jmFkuauiu*P4nfNK3mkK}7I(FKQUTXE!xxZAZ{9_&;G-%_+)49yp+$>msq<2Um=Dl-8i<_#?bNs9}9o>xR_Fg{h+<+?&z4o zmMlM(6%vBYa=@nN)dcu)WVR=?;?;p$k^i8#RRA32{WPQHeKOr!R1a0Vdp~`G;!y5a z_WZe}EEx~@D42~jvUKz1)*&U}eNa#=F6e)?8dzB%=%lEzWWkjotYq8C4E}l zbcYqq;O$>WMK+7Jo~ehtKIaQzZPFY|{XVG$1$-Bo>Pa&PGs!=ogfF_F~$kXfGF;`b+RVH8Fc zHi_|iWk@>Xo^?3&=Ss59%jff~XyTy>P(&`*ppit*kH5v^n|?XjgTVzi@r`~*9lyZ z9#k}NDb<@@Y&If+Zt(KCzdIeVYyk%79}Z3Gw4OI>P{^A@%+D%kb=j^nNUNt09?9dFqZqI~%y9mE@*beX2o!5!*moDlC$1brl$nMU zkZH24-tImJcQg(C-FM!nn~uam;UR$Yo$&`u?K73>arsPC=k$bW1$pu zG(r(>JUge@wOb6gKtkY;j_Y)L{|C;}yTvY0k3Upb@AcshUdgNL1leO&X@0n9Zb!40fVo~JEuvjCQdnF5N)nRNAd@v1? zrhOG9x1P#if7Ku3sWP=etvr)JeRQpbQffTX4}Esp5p`bdb1W<5e>6&T6?(di<$W3M zFiKA4J73>iV)nVpD&w_BucZ&5)Ok37M=L z!Nn^5z)F^$o0*!IAHpNA2(>h_W24~fqwplReZd%zn5X%j@82V!np!)+uO`(szfHuZ z{rb8a-HEQ|knmrcGAZ#t4OD<5xtxw@`(aS!74sjCi;;VL8Z*flm{$;B?;ixju*b*l z=7)RPSXROm2~bKlr#KeDhlo>7HHu|JH7=I$QU4_dpnbyO>M5?v+ansszXo#&rMP*| zHZE_Q$|B>CJ6_cJ=~nU<=fGFCz+3E7*@!}O3r$bwgLRLd5Ot)&2KhH=>Yg=Cl&p;O zWc%SrkDk-ngCWF48$laF`SS zoAj%lx)q{Op#|@}u-IsY&RlNPh*h;Iafl0tvXz`3sv!Mn8s9!WuI}GR$I(Y|Y{8W< zJvSb#YrjH!jWbNm#tT_Lz%JA;2U6_Lb{u?tJN17Ts4<^)-aU^NiP}ad6Bi7}E)_?e zqd+~=R!^ujtjNW&n(41XKSImxNI$NaoHa6T=D&>F$bqX!%_A2oBWI$Dg<~3wS{Upc z6@`X^GPCZ!`2ZQ~ZtWoXQR!3hQ?#t(T<}or?J3XI7Ob+VdtYqPGN4IxAGiNC`_Tq= z>{d-VN@M!%+N7lOZO3yGR7H34OlXb6fl+)lLfz(TKTe*)URKP+Oy67EcCbdGWhdad zJi2&;UqVfa0f~pH6Scce#&gW+@){VNG;!g69Ybynh=i7#3|mb@)4kmOm#3E_+gK%b z%X~C(jKp5O#xczwv*)~4Ev5c(j744S<7lmMbm2b`5RT!4+9Fuk8I-c;ZV&ID1A-SL zzTaV+N1BMC^bfS%bQTSE|4oI&B45MMIK5bxku_TmZKMf2KvS${f9au9sVXLW#tB)! z5L|s{gJgb_JV(}ohl33Y6xXB*bR4)wZ~vK#I*EV)2L}lk*R%Rf7Dn4Q@5qOw>+Ea! z!GU0PDCOgE|2qa6HK88~^WWlxx(L|)UB*_*Fc*GwY_{!{(&1c+{Zf!_JO}=LU{@#> zyI8*WHx$&a1I9S6pAwzKs9ke{=sD}BibdIu)KYF<;}TlTS!6|91n_9-FU>7w_oa2R z1R1#|^X4~xe~ht%BaCZ!<>`o5?P<_Wi+&mmjoasM$I`AIMbrn~rN8BoA+IIY*mZwu{yd$QFIR%{$T20S;H5*!w*}KP$-TkCEk8`*ejB{@ZSo17vLt5A$>ttI@2UmD_(W=OJDpyNyh^OzPaamix z*ofnytncNcX?d5TyDHk~ ztM%Nc#`#2Dy8V7qLWti34h%l!WytaS>IaJ=P3KSMBnN)^>uw=w_*Nhv?xdRTjp^WR zX8bsz&?le)8>AycxzLH_h4P{_#+D!kk<5K=%)>u^l7_i}FDknC7bD|7*twjN3lW}> z1zr~toUf_B;7xW{gq(i)Xb6w8wdTM2H$@rZveZ=-G=j>G1U=Y)hb>M?smhBY?EW^0 zoP?{Z$%}CpLL;yD-c#w=R4>V-_F`g-R`l;`Kh8?WMw=o(o42nv{jV$$%lc?uhY;7h zCTaWH*`U$*2(pDoXR9S~wl%9FqH1^U+13)d+1xItKs1r3^z(+OfZF~ARGz<#uTAwC&791BAU*oF5L2F1+Vh z4yy5Q4m>x=uG?)z0pwA`xsp*!uAb|!AUc<^PE3)5x{~f+KOOkl{bzC7 zFD>AL_XtrpY9G@F7~Y)*Q$?jr=`ZPk=k?mm?PPz{U+Vl_Q|LDNV$;%uf=&aRBoH;{ zVVK6=R8_}UQA2QUxEhXdfcx9_l`Bt_zAM!->9LuKcmNlMu7K`Barn4EOT ze<+`vuWH+#>)WsGHFFkr_-KG6ULn6$rH)Uf=m{y4p%$_JY+FONu*UJN26<{tlfg)( zLLp6`SmTLvr2nVH^c8+@jFM}oKw(w`1zkqkovc1Fv|d7Cn1+skKbMOzBwDiahoi0z zdiBmTaV#5yx;fbz+w9q;+8e^E?*0>wK;`{{ct zlqo41eHD1)60{m49m)M!{9Xbm-7KdL4l6y89rO=Y_tuxC2TqE)g|l#=52_*}*x&`3 z=*aZU4y&3ySuwP1ed|xZIFS1;hXz@o^#Ik{@qnmHC6lC*IM1HSNFzKk*DdC z(M<{aZgCUcb@i3)OCPkEfO(z-!5+BGjw`Hc2MBci@28wIg&h(uul@%I>jNGVh5&UJ zd}!sp7`yOiDO8X9^QucGBot)nTKm10QmWY0&hKyv7!{?wI=3T1=+n1DzYJ{kpNeRF zf0^N|yU0>YPYGwAX_E+20mHAGVv0%o$ejKO0uL?&H7D0YwXHRCMA zjDkvJ6;d`Pk}UUIbWO6k!B`;Uu|GQdp9%E}LhU)Pl2_=~gWMY~JNjrR)CcqK8z=K2 zQ%xsyu|iDNbk``hnS7uhbct$4?sJzIfg5K{{iUzBV(4vN&h@RzR&K=RqHC(P@*AY% zAmZ?WV}1{+OYM>={XJ!Q;&5=ZGtVo`C9A?h>)VMhu5vt^l8f2W4|h{&Mzpb1anZam zP}Uw9hu&zw#*{qG(FAB-#A+m*C763g?#EEclN|}{^*&$O*$9p|e%|zTuIPpy5mm(J zU7flq*mQaSL@@0F>%y~I07*v$S566k4xkG?QI|RIPmh~d&{kv6>!>fE$}M-`$@fuG zD3`z8nonYClg{GY&U7_!HL4uKey+muqqeZUWcIEVXA$d2ejCAm-5~o>wt@7rPx?-k zvjzo873m7oF8hPf!8}jFpT98cmH)fUv9Ole5HL3#rg6b!9j4uAPM>`<6KVh}(xBy; z>-ofyM9#a|wlXy}8Dj5cz2XzwT~%%tf%xpLK(VR@$x0H75>Wb=f?@#{nJ6kQVH4fc z$xF)CS^L2=IblNl_vJqkF~?F09`?GIxe#@LJRDB-qHYTg*E25Gl2eU!h-6PuJu*L| zvKhQDnNXzX?jg8bO^Lzx(HccskHYNMsCu3F5E-#~5nPoxM4Tp^-y5u`%*^KP!O@0v*}dXG=# zlCKTf9rjYLt54)I#g?Ghy!LBExbY>fxEm(t&R38_bSij1L`vUmLhuPTT_k3=f+s~z zpDV0_V`2UG48VVinSVGp2K*R}ILvlh%>7ZvB%KpO?ZCLCnn@hPv*E1{TE_3ZtE$3z zUTYXgF3pCEFq5lCC2Q?)ZDaV9PW9pHPdh^LGo*p0y9CT*L@)rT&8^)=9~r+?M@d;W zPZ9>=Z6U*l)9!NxWH%-zKle$QGgRxmR4BOp{n~h(M{Q9>ZeZbYlTCuU6*KwnM6G)y z&^YW5ZBv3gQQ^#+1~JVS>-yoi#>`LZGx;22MF1=2lk&fAGUxdU+&^f{xc}&`a!?2C zBm+%Ylt>-%knox^hk*oh8$}0TmJpU{R*p`-jQR>2{%7}elGx8T#A^8`-B&BTZtFbU z1=EPbk;PWe>w9W%evWz66b&D)o)^QlDea9nGfaC=MdRp%2UsgEIh8>9*9SWZ+Cq74 zxG19R=sv&gUn~Nsi9XY&+dCTc?j! zhaw>>R#A%Nkda%SzcH$pDr8j)cq*G^SWL6yKJG; z{n~22g)nn=X2XvyWc%B=d+Ju=G>g{+BgOxw$V z<2RiWRTnXx!0gUEPjs=kw-ebS-SFA9Y?VfwJK5GNb!RIZLs~qe`4&7C8F~YWNpPaJ znB$T>xJQpWvNsWB>BfBl*1T04#94U2?(y=38~gnRyLRKD#TH8UYO|~LPl6nD)U8VC z%2O(|51o|^PZ3&YCZE@-vBaAmWzg$lzZ0A0i{=qd_Du%tZg0dC+0T9tmTEZ20iUEt z@fTf`)7H&d-E9KfEX2})`HVG51B%3QW=8yYs%98rY~PHNy&CPT)fv-DgKb!Fkki~C zq{pi$+u2Kv4c3~aH&JVXq2Yt4TT)^Hf5<>I>u~l9A(7jKfu0vGRV=miz8qO&jb!w(ZD&QF&Ovv(8hpHMo8$Sbn7FdC{7f2H-SIWapJp z99c;@L(Om*4hw4dp}MEAbqPu00)+_oWzMqs(grqCoDKy#inE(VF1Ll<8&VS()Uf^m zx|uocKPWWDje_;{qHxtL=G$u@RZzQ-$x-0^sNKYBUrM9VeG4hAc18f^nOKdNdZ9c( zLNpyL@vRqsSO{BWgup6c6p_RAl{Y(9!vC+Ahn*^1B(iqU)H=+V=_Ra8sctPH!gUH&m`%?t47AYofMo6c2P5&wK??ZR zhKj58^`LBCLkk@N^F^o6wFC9nb(G%~YtHXeZ?qutFIN7BO@M;*$j}aJ%$V_`wYQ%Q z$jF@-s?lWovbi&)EC^QKent}XUMeKzokgh?GdL;V6o9 z6I5uo6V=u)rl8`JhRZUwbpO;UiKurUIiD%TvO0+FGGW0{Cl1M#9cjCFnpe>T{d8;w zkM3(2&JwjkIsstA$k)Ca*e=rJNQ%=7B09se|J(p?-_CzR09T$gNAm;v zMjMYj8X?cmYE$lp(vXcr*Gs|DRWEet0xg2J9-B9#+a9R#*z1b_|89Ff-<}>yEFL`X z&%YOuH&od}*$(jo5bavMnF+$L*PcR)n+n~wdaUF>TT0M#rVeKiS-r6e#dVyU2; z<~cQLSR(ED#zrjp)WxIJwssp@p5u;? zYuhBs@w$>nzB+wdKbYs7Fy&n8^+Q>6ReE$yiO-^MeuiN6EL^EXMMiBs)svKv|2@F* z{DkNWe?oc3F3g){%6~6-paNX&K4EYdNbO{V0+8RuGLpqgmOCa3UrI0&C|9o@zT_h6 z$gFnoN2%);d7bn;DF%gx8|=6=gBr(+{r2<==lHd(0W80+A8{YV)cFsLh~NG-!E?h} zDK;UUUXs0;Em?k?b6@Qc^f?}jr)9H+M6b8=llPqyc8A7H)4+K{Ex`uUBJdbjzs@_t z*nZ*R$gdzT&;=^QtDGs2$*;}=!fNO-t(M}kGqa0+NjzziFwDsUa8&e*W#6Jhr(brH z{;B#@u&VzLHan;EWosTqv6?|*HG;g zfb{wwO6I>c{+15mFvIa|a^&aehN#afk>L8M%J>rWVyCy>2$B>#Sqa>1W|q8;CS=uL z)|p~nxE325s!&f z*;u%ti5wPm`^X?(h^9q6M9NaVl{=_a(UA9d^e(~SCN0s*Iw&>=EAXEC2d87U>BJ5W zM1G==305c%7-CN$8&*RS8PU+g-h4?yX_-CCsPtpqmFA1b;=>OO z`Lc+2n8R0i1eCkqpND8J>J8+>UK^ofI^7!EH&Li@1z3dn)s!#^+3ta4F3|D(v8#QP zOR89ncK_jnOidHWDe>Xje&4_@R8WB4*6?JW?yip7`?5rPG**J~Qoar0*AfGsa;1JT zW0hCKinR1%bi~SA;0<2h`&0t0Gm>9{#@Nkh)#n_oPLJ|1s=hwT_*yvQi%;}YPySoq z-LEltsn0|-q~c2;rP@!dL|H;xpRE5%uU+RDCTbb#8jE}tcJN0i9DHKEtY)V!uK2ZF zQN($PD)tep(;{K;Dm}SSG}!Rp_f_%{DUR2@pWTF(OizGJtGif$+---yT$yx{W$+wtxwEid>#NColLDgfGo$8v6 zM13vH5Uhp7)9R`;UX-Px?ova$?6N|fTzs7eNgA01bJ$yz+LX78gG{}mK5>IDi6MWlyOxB; zNuUWRRBn4Rlomv9630>3p9_p! zI=)J)WY}SB5;tIT_4>1A&`^S)&X^7qC??X3lxYi&4=XmI-Xi)`^>fl$ck^ zSmNhi$G5@K{3EZkX$kV%WP6lj8kP zFv7YRT&R`(>0+piY=)n|m+bl9l7Rcsm1u!%R!_r=!734-O zt-$i8a^$1dD>X6fwkbN>HP`juj)f-xvtP-y4)AwfO39zpfcejU-O35(WiA9KG7Qh=r+j>-UlWn@3Apl2kK{c`JWRghvT)rMoY;fh(1p1NIfz}%%r7!Uzru-gK7_# zqH97Ck8}9b2#1sjnErm*CyM+e%h^$XJZ;>7j2UQbPrBxv%SvIq{lV(9KbtY$GhdK& z7d=#p>PQ%Vk1CZj7xFZEz!Z=j5mq=69>SpDBa4INSNFKaR+oR%q^BE|Ij()cUX zbCs@lXqK2-U-qLnC{8;N=U?b$iS9@3etN{tMrL4TtCilJKb*ynX}9~TY2*FICkPG! zjCtKDaPR5#R+3m8mdNpca9x=IK}qoUl5RmgR6FT6`di9FUgvq);$6B5@naT*o~kIH zO%5of{Xo{>ISXf_%ODL83l*?o?;uM0f&||mE<}Fziw-MV+@q#-#s%xMtD}(`#`JuKf*j(IR>Pk?LFP<*PYW9#`nUqT>Hhn?mNk0@`=OpXIV8oVB!t~&PU}vMGrUB1 z0!Ww4cXa<#)qw4%9562-%p$x@-Qv&O-gtMW5GeVRa&NAKQ6Jj@RY{BaYw4PaI>@$) znjkq@>?6BY`{)<6B-@*BipQ*MptLBRd^$HRYhwMb0Uw-7@Y77y(4|$hbyt$)MgpJ0 zutqBR&os$Y)vcf@9ZZlkw}H=z<3_S)I*BuJx1L|NF;y5b=J~S4WLo*+R90ijUsv!u zZN$s39qIU5{o;AsC*La+>%le%rt@_D`OR-COmBAI0Wy;>z$z%=ORy%6lgM~(uQ0kP zqD-#!F4vJNUGcAcB0al7mGqgvn0^tab$CHUN~Y!&EJ^jOWO>&=B6?If*@Tu!&CUp=7t#aXbm4OvZGA`&d#)0bib5k0i6JrpB2Jj zylWXyCW;i(ZM>XRBR+U1j5_M*tq|SxBjx0= zDhc@`=*BJm(Yf^1a_LUlP>z7G(K(SWy82C&MYg1k0P9J~WH|4jB(~dy*8Zlha{hkkI_Sq=(JNMMJ*xW8h(vr}KJ7(%jXTaxH=#u+)Ij zZ6n2D?sjZC+~Bw0QXL$AL0s%6xSXk|-=(<6lHdjbxlGkulqTxt1nX138f)kggF(!s zJMo+Z)q^cFSyoUrH|)PoVcG{!z#J9oq1{@_hLnC|u*rWrGj%2e*Cn^hcXP#B&%m1n zVk4g?F8iGUs_>7Q;eOjcUM%R2Fy4}4`5E7qQYmJ+?!Z4HNc{Jw|G5n)LqsLi`Y})W ztW7bh%MQU$R83w20#%~l9JGCo$gDF*4mY}Ydp)?-ccdq+^-qd^`UCriCJS5bN5fE& z+uRT^Ok#-p6OzbZMkJ!!j@u|@*g9Ndk?v;r%)Q|G{pm16a zHmLdMD`ugHksLmIn!^QI^)6U~*f$oS=p9;7mE7I_A`+PJo(Uu>XV$N`f5QbON&knO z`=_(p>Uk^Jx?dGJvh;G%lhHWpcS&s?=wp1kzV>7Kr{X2GWiW|V=gy{6WoYEM^&Cg9 zovvkDdZL}~FTMDs2`7&{J;wU)o0OF7;W)Ld$Km^OTs0;Q~IRq(q?1;M_;Z?pF}Jt`wC}e)=ZFDh2OO+7IkynR%7I1;w_iRR4UhHPVPLbql6zrh@{;#`JyrMcVH>&)G|vmXGpy424BS-0Kjq(LE5W!3LdDDW)(p})+VMkl;U^}D(-C|> zua4;u75GSwnfX9PYLBL$zvTJv_(m-2=5}Pia;8pp+h4z>G2>;};bH4fOeW&Y#sBxc zmXX4*o!q{vw}xvRZj|8Cb-cTb+)k3$;Q1o4L|HLxB^AYYUY8p#8Y1}r;C2U!81=4H z5a}w47d=B$x94A2>K4jXD^clWfvpJ7Fgkk`d0B<}%g}xxY}{*n?M|KV(EQTh@hvVr z)dtVPpDp7mIVHB8z>b;DZOqPJ_p;)(1n8KpGqWA9Y#H38 z`yzA^`(`VN3+|_!gvO>2Ypgm>^ZUKr)jFzRqV8HEXA8DMCf|W~bqF;}j(!*=iudj@ zw0!19tp?FscB-sQ2uB58X)$hj22uClH;+GAv!^0tzUpVhut^5e1@U}*BKuLj^?M`I zrn+Z*bU{5fHzz*t0D$)zC}x5%dN@j$46@AJEtIr_QL|CmRX!(IjdF=zmLiSE=#kke zErevn@oQaE-O6g&?gf-^ONtqHy+31T)bysT5HfuHM{M;&fb0;FzM%a#BnJ~|j*zp| zO-usU@EVbAfo_DM6v0~C0)#PJC zZn&g(lJkuWCR0rQ&c8D==(0b?^I&9>M5MMXkt%Y{wg`N8ya9BaK9@&SzB}HcxH*8c zz>*>bk*$(?gK&PqhHC#5?J_d>4u2#2iImV`&CYy{ovj(VY;Jfv@9a_>7t7H|Mb8#j zG;;il{=+|;+x>mS4aro#gC%x-C?R@R*gHHqn*mQ^SBrOt!``Va#)pS=iWw=8iw!nS z|JncT|4Bdi74)2m!p68|VmW`8M>d~Lkjq(7Z(O#WYf<>>r6c*g_%-`Lm~ov&%U6An z;Npw!!-quvb?s7rXu@G)(#N%ih^zD@@Ii{Lql_~tR?b0c6eS*Yt*o({+WKl!L~F## zxc^aZM7O*)(Cr&6p^i9Q*8Z{KE7PVsP~%It^^a>^TmOmEf#) zty+;{UJ@-SD`0B(kU|HI>Nt!xzM1`Yv{M8!9%e6hvCE}`CY!tXQ- zY}TJsti@A=56^A0sZy&Zghy@XceM~B#Wmv)HBGM?wTqeWI@*fDxPE+tR7|EZIxUE{xuGorXKlD9K( z^EAin{PwP^nP$xU z*e|9{?Ady;JT!&I{IBX1&{2xSa$6%N4h)>JwcyJaTpy4p306=tw&2X?!X%Io>TaV;c$rz2iSI<=ya++VVQn9{Csy#fB`AN@4hlN_fm) zFKxX`2cW=N&KAfj=t1j1DB8hP7(M)df_E{VQ9$mVgv-8|6nZ-au67c+HT#cL#N^8@ zfL$>kvYytDbg54(<%hXQdB)a3WeqyX312Q25WDJFO{C z9%$LPE;~-oP0%K_DDMs*(x5v~p1oVZ^lXa-a;Az*jN}DXIC$6v&|BeinTkG`Etvnj|UD8^i622rZ9$t$a05AZ_w-6 zD#5UXr{t;@45Qy0TN~`$k%5}u$$e<7)YowG29~_g&`LSJe!JzH>=(}lhY0rHUdP?T zjn2`rA?eUDM`nAuL|aG2LX37eq=abi4DsV>%M=U|r>HGd50|DaFt9!OhED%JJ*U*N zfdR`II5OWbmK&_RueyR?%Rb<51U3rt`LOcm?^L_;R~8%~L24#M%-GJ8r;_49H!IJ_ zHvk37*Bt#tV~C0v`lB&o@lUfukokwztdgs#%+5y8Etm|P2=u6F$9w}K%1ZYT57La?~ zXQly4*PFJR?$e7^Sk{-{j()!8>e;O$Vtb1oI&fvFvUY)YhBmD|_SQ{{*unmvT z;-RU(C~>Di5H+{&o;qM`j{C_jru8c4cPXohzenuFop|XxXX%}~_H zO(3*q9r!e@>@ulj+X|vo_OYIRh~j^o2mOxf#>tkv(qJc=GcZ0G#5QHgy~5cuVr#6Bj-N^0EIO7X2%rq3!XKmBm`MGnr$5q zdY>{wZMX9)&?Huuc@NrBD5j50i{RPwxSoWkR&nq9k|gJ#Ek_5!k8FqR4!Tg(CcAt? zg4G#n0gn?C;nZqj9lTGH@PdP~8a-eQ&BnG4%RQBFV8PdglI2!Grz^HM{>B(#C0kOY zlMt!6CVU@|itz|DpN4vt}gjvw1w&7dTFut-irZ2e>G@ zeJtUPUe&@-qcF8OT*923!64V|N!eB)C2F$Y~xT3q_TvBa@kPx#8 zJ?!lo`j$U#)Oi69vhNx!RZfh+}K{SI?)%}_aUcn?G;4dUC=+<~X<+Xo#KfZ4JoJ83?czfpX zuzWG9Ta1G6RBqPV%mq7J0|lFuf2H_=AVb!UM~zplXK5-XO6`tEU%j_NfRCH0FwHOm zg2a3Hz0l|IlvJmixt03>hM6I}sxFG|qi$~ia5N*HD#6XvgU+HdVs?)B5M*|BY@{%ZR|l(s-ueOB*}>~*)- zJ`hP6neE-0fEp0bd2Q6#B4{$*Y$0~1D%~~NML%*Iq6i3*I`$pQshll>|9BVL^rvvZ zZ2CTNn#-cHFE0RP)fC%*MOq-;CxS>xKg2FwpnV^;�Hu?W{DKM&){M!aQwBfzMd> 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%0AhlHyA5AROvVXu))1Q>>_1p4@&%6Q?o}z7~{g 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%0Ak^!|yNOXP~@M>-%EM z(%z3xU%3W7drW0QN3Luz{}ZI&BKwXh3f^3##X+>fxaRYWnBC}#ia}=qQ)`0P z$&&4L7CtY3yt*nkeA(ps&Y@yhk#TanxnazN9xKw~3I^SB^=X|6ccM;E7Cp3;ujwQJN_ zb}k4E43Amc57kI(VC~mCD}5CDRd=5*#Z&K4nRObDgR`JI9ic}EZ~WmiA%EBMT-=FL z3G*(=jE~5i!#IuAbN!r~aaS

W>cTDiJVRj$$!mU7|}J9vQ_#RNC8S(QJN+@MaaO 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

7LHxNEjy{8Ss#eL%wg? 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 literal 0 HcmV?d00001 diff --git a/packages/docs/src/assets/styles/global.css b/packages/docs/src/assets/styles/global.css index 9acba13..86f3be1 100644 --- a/packages/docs/src/assets/styles/global.css +++ b/packages/docs/src/assets/styles/global.css @@ -39,6 +39,10 @@ @apply text-xs font-mono bg-stone-100 dark:bg-slate-600 dark:text-white text-red-500 p-1 rounded; } + .slote video { + @apply rounded drop-shadow-xl w-full md:w-full max-w-screen-md; + } + .slot pre { @apply w-full flex my-2; } diff --git a/packages/docs/src/components/atoms/Netlify.tsx b/packages/docs/src/components/atoms/Netlify.tsx new file mode 100644 index 0000000..9047eab --- /dev/null +++ b/packages/docs/src/components/atoms/Netlify.tsx @@ -0,0 +1,17 @@ +export const Netlify = () => ( + + + + + + +) diff --git a/packages/docs/src/components/atoms/Qwik.tsx b/packages/docs/src/components/atoms/Qwik.tsx new file mode 100644 index 0000000..26b7cef --- /dev/null +++ b/packages/docs/src/components/atoms/Qwik.tsx @@ -0,0 +1,27 @@ +export const Qwik = () => ( + + + + + + +) diff --git a/packages/docs/src/components/widgets/Footer.tsx b/packages/docs/src/components/widgets/Footer.tsx index 98c9ea0..7c954fe 100644 --- a/packages/docs/src/components/widgets/Footer.tsx +++ b/packages/docs/src/components/widgets/Footer.tsx @@ -3,41 +3,15 @@ import { Link } from '@builder.io/qwik-city' import { IconTwitter } from '~/components/icons/IconTwitter' import { IconGithub } from '~/components/icons/IconGithub' +import { Netlify } from '../atoms/Netlify' export default component$(() => { - const links = [ - { - title: 'Product', - items: [ - { title: 'Features', href: '#' }, - { title: 'Security', href: '#' }, - ], - }, - { - title: 'Platform', - items: [ - { title: 'Developer API', href: '#' }, - { title: 'Partners', href: '#' }, - ], - }, - { - title: 'Support', - items: [ - { title: 'Docs', href: '#' }, - { title: 'Community Forum', href: '#' }, - ], - }, - { - title: 'Company', - items: [ - { title: 'About', href: '#' }, - { title: 'Blog', href: '#' }, - ], - }, - ] - const social = [ - { label: 'Twitter', icon: IconTwitter, href: '#' }, + { + label: 'Twitter', + icon: IconTwitter, + href: 'https://twitter.com/leifermendez', + }, { label: 'Github', icon: IconGithub, @@ -50,36 +24,15 @@ export default component$(() => {

-
- Nos sentimos muy afortunados de poder contribuir a - este proyecto y esperamos poder seguir trabajando - juntos para ayudar a los pequeños comercios a - impulsar sus ventas y fortalecer la economía local. +
+
+
+
- {links.map(({ title, items }) => ( -
-
- {title} -
- {items && - Array.isArray(items) && - items.length > 0 && ( -
    - {items.map(({ title, href }) => ( -
  • - - {title} - -
  • - ))} -
- )} -
- ))}
**¿Algún error?** -Recuerda que debes de cumplir con los [requisitos minimos](/docs/install) del sistema +Recuerda que debes de cumplir con los [requisitos minimos](/docs/requirements) del sistema + +--- + + diff --git a/packages/docs/src/routes/docs/install/index.mdx b/packages/docs/src/routes/docs/install/index.mdx index c83e867..342043a 100644 --- a/packages/docs/src/routes/docs/install/index.mdx +++ b/packages/docs/src/routes/docs/install/index.mdx @@ -1,40 +1,27 @@ +import Alert from '../../../components/widgets/Alert' +import Navigation from '../../../components/widgets/Navigation' + # Instalación -A continuación se describen los puntos técnicos que debes de tener en cuenta antes de trabajar con esta herramienta +**Con esta librería, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes. Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin límites. -## Requerimientos +--- -- Node v16 o superior **[descargar node](https://nodejs.org/es/download/)** +### Comenzamos -## ¿Como instalar Node en Windows? - -https://youtu.be/xRXHQlqA3Ak?t=376 - -## ¿Como instalar Node en Ubuntu? - -Te comparto un recurso de **[Digital Ocean](https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-20-04-es)** donde explica como instalar node en Ubuntu. - -## ¿Como saber que tengo el Node? - -Solo debes ejecutar el siguiente comando y esperar que la versión que te arroja sea superior a v16 +Crear un bot es tan sencillo como ejecutar el siguiente comando y seguir las instrucciones ```shell -$ node -v -v18.12.1 +npm create bot-whatsapp@latest ``` -## Opcionales +_Para seleccionar usa la tecla de **espacio** y para confirmar la tecla **enter**_ -Dependiendo de las opciones de configuraciones que has marcado al momento de crear el bot **Command Line Interface (CLI)** puede que necesites instalar más cosas. +El **CLI** te hace una revisión previa, de versión de Node y sistema operativo, con la finalidad de informarte si cumples los requisitos o mostrarte información de interés. -**Ejemplo**: Si elegiste _(MySQL)_ como proveedor de base de datos, lógicamente necesitaras tener un entorno de MySQL. - -📄 Pronto se agregará más información y videos explicando esto a fondo. - -
+
+ +### Plantilla + +Luego de seleccionar las opciones de tu preferencia se creara una carpeta con una plantilla de un flujo de un bot listo para ejecutar y que puedes modificar a tu gusto. +**[Ver más plantillas](https://github.com/codigoencasa/bot-whatsapp/tree/dev/starters/apps)** + +Cada plantilla tiene sus dependencias necesarias basadas en tu previa selección. **Ejemplo**, si seleccionas el proveedor de MySQL, la plantilla incorpora lo necesario para que tu conexión con la base de datos sea exitosa. + +```json + "dependencies": { + "@bot-whatsapp/bot": "latest", + "@bot-whatsapp/cli": "latest", + "@bot-whatsapp/database": "latest", + "@bot-whatsapp/provider": "latest", + "@adiwajshing/baileys": "4.4.0", + "mysql2": "^2.3.3", 👈 + }, +``` + + + 📄 Si deseas cambiar tu **proveedor o tu motor** de base de datos no es + necesario volver ejecutar el CLI (lo puedes hacer sin problema) aunque + tambien basta con solo modificar un par de lineas. [Ver + explicación](/docs/essential) + + +--- + + diff --git a/packages/docs/src/routes/docs/join/index.mdx b/packages/docs/src/routes/docs/join/index.mdx index 90ca067..8469878 100644 --- a/packages/docs/src/routes/docs/join/index.mdx +++ b/packages/docs/src/routes/docs/join/index.mdx @@ -6,6 +6,8 @@ Deseamos que te sientas cómodo y que puedas aportar tu valioso conocimiento y h Recuerda que si tienes alguna inquietud, o simplemente deseas interactuar con los otros colaboradores puedes unirte a la comunidad. +--- + ## Ventajas al unirme Participar en un proyecto de código abierto te permite aprender de manera práctica sobre tecnologías y metodologías de desarrollo de software. También puedes aprender de otros desarrolladores y contribuir a la comunidad de código abierto. @@ -21,5 +23,3 @@ Contribución al bien común Participar en un proyecto de código abierto te per Es una excelente manera de incrementar tus habilidades tecnológicas y **estar al tanto de las últimas tendencias y desarrollos en el mundo del software**. Al trabajar con otros desarrolladores y contribuir a proyectos de código abierto, tendrás la oportunidad de \*\*aprender y practicar nuevas tecnologías y metodologías, lo que te ayudará a mejorar tus habilidades y a mantenerte actualizado en el mundo en constante cambio de la tecnología. Esperamos que estés listo para **unirte a nosotros en esta emocionante aventura** - -... diff --git a/packages/docs/src/routes/docs/layout!.tsx b/packages/docs/src/routes/docs/layout!.tsx index d7d2fc6..ae261d3 100644 --- a/packages/docs/src/routes/docs/layout!.tsx +++ b/packages/docs/src/routes/docs/layout!.tsx @@ -4,6 +4,7 @@ import ExtraBar from '~/components/widgets/ExtraBar' import Footer from '~/components/widgets/Footer' import Header from '~/components/widgets/Header' import NavBar from '~/components/widgets/NavBar' +import Navigation from '~/components/widgets/Navigation' import SponsorBar from '~/components/widgets/SponsorBar' import { GlobalStore } from '~/contexts' // import Navigation from '~/components/widgets/Navigation' @@ -44,7 +45,6 @@ export default component$(() => {
-