diff --git a/.github/workflows/check-provider-major.yml b/.github/workflows/check-provider-major.yml index 9557ead..ea91659 100644 --- a/.github/workflows/check-provider-major.yml +++ b/.github/workflows/check-provider-major.yml @@ -39,8 +39,14 @@ jobs: - name: Check Twilio run: yarn node ./scripts/checker.js --name=twilio --stable=true + - name: Add and commit changes to gh-pages branch + run: | + git config --local user.email 'action@github.com' + git config --local user.name 'GitHub Action' + git add . + - uses: stefanzweifel/git-auto-commit-action@v4 with: - commit_message: 'ci(providers): 🚩 Check BREAKING CHANGE' + commit_message: 'ci(providers): check provider versions' create_branch: true - branch: feature/breaking-change + branch: feature/providers-major diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 968147b..87e42a6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -56,3 +56,55 @@ jobs: - name: Unit Tests run: yarn test + + ############ UNIT TEST ############ + check-providers: + name: Check Providers Versions + runs-on: ubuntu-latest + outputs: + commit: ${{ steps.vars.outputs.commit }} + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + ref: ${{github.event.after}} + persist-credentials: false + + - 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=true + + - name: Check Venom + run: yarn node ./scripts/checker.js --name=venom --stable=true + + - name: Check web-whatsapp + run: yarn node ./scripts/checker.js --name=web-whatsapp --stable=true + + - name: Check Meta + run: yarn node ./scripts/checker.js --name=meta --stable=true + + - name: Check Twilio + run: yarn node ./scripts/checker.js --name=twilio --stable=true + + - name: Set output + id: vars + run: echo "commit=$(git log --format=%B -n 1 ${{github.event.after}})" >> $GITHUB_OUTPUT + + - name: Commit & Push changes + uses: actions-js/push@master + with: + branch: feature/providers-major + github_token: ${{ secrets.GITHUB_TOKEN }} + force: true diff --git a/.github/workflows/releases-dev.yml b/.github/workflows/releases-dev.yml index 4e5c169..be2e1d6 100644 --- a/.github/workflows/releases-dev.yml +++ b/.github/workflows/releases-dev.yml @@ -10,9 +10,15 @@ jobs: release: name: Release runs-on: ubuntu-latest + outputs: + commit: ${{ steps.vars.outputs.commit }} steps: - name: Checkout uses: actions/checkout@v3 + with: + fetch-depth: 0 + ref: ${{github.event.after}} + persist-credentials: false - name: Setup Node uses: actions/setup-node@v3 @@ -50,8 +56,9 @@ jobs: - name: Release @bot-whatsapp/portal run: yarn node ./scripts/release.js --name=portal --version= --token="${{ secrets.NPM_TOKEN }}" - - name: Commit Versioning & Push changes - uses: stefanzweifel/git-auto-commit-action@v4 + - name: Commit & Push changes + uses: actions-js/push@master with: - commit_message: 'ci(version): :zap: automatic - "${date}" updated versions every packages' - branch: dev + branch: release/next + github_token: ${{ secrets.GITHUB_TOKEN }} + force: true diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml index d587c64..a9b490f 100644 --- a/.github/workflows/releases.yml +++ b/.github/workflows/releases.yml @@ -67,13 +67,9 @@ jobs: - name: Release Github run: yarn node ./scripts/github.js --version="${{ steps.package-version.outputs.current-version}}" --token="${{ secrets.OCTO_TOKEN }}" - - name: 'Run if changes have been detected' - run: | - git add . - git commit -m "chore(version): pre release" - - - name: Commit Versioning & Push changes - if: github.event_name == 'push' - uses: stefanzweifel/git-auto-commit-action@v4 + - name: Commit & Push changes + uses: actions-js/push@master with: - commit_message: 'chore(version): launch release 🚀 "${{ steps.package-version.outputs.current-version}}"' + branch: release/production + github_token: ${{ secrets.GITHUB_TOKEN }} + force: true diff --git a/CHANGELOG.md b/CHANGELOG.md index 48381f1..8d3865b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,20 @@ 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.17](https://github.com/leifermendez/bot-whatsapp/compare/v0.1.16...v0.1.17) (2023-01-13) + + +### Features + +* mod de starters para habiltar portal ([eceb170](https://github.com/leifermendez/bot-whatsapp/commit/eceb170df03721dca4183b658c863b94fa04bc84)) + + +### Bug Fixes + +* **ci:** pre-release ([aaec075](https://github.com/leifermendez/bot-whatsapp/commit/aaec0751408ab49483d428810d94aaf7d46acb94)) +* correccion en starters app.js para portal QR ([f430380](https://github.com/leifermendez/bot-whatsapp/commit/f430380b4f23d41702395c96c628bf13bf443278)) +* **starters:** :zap: added dockerfile ([230981e](https://github.com/leifermendez/bot-whatsapp/commit/230981e2676361149cb2a99def7f705e75009260)) + ### [0.1.16](https://github.com/leifermendez/bot-whatsapp/compare/v0.1.15...v0.1.16) (2023-01-11) ### [0.1.15](https://github.com/leifermendez/bot-whatsapp/compare/v0.1.14...v0.1.15) (2023-01-11) diff --git a/package.json b/package.json index a6e64e7..354bc44 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/root", - "version": "0.1.16", + "version": "0.1.17", "description": "Bot de wahtsapp open source para MVP o pequeños negocios", "main": "app.js", "private": true, diff --git a/packages/bot/core/core.class.js b/packages/bot/core/core.class.js index 79d996b..e3efc04 100644 --- a/packages/bot/core/core.class.js +++ b/packages/bot/core/core.class.js @@ -70,7 +70,7 @@ class CoreClass { const { body, from } = messageCtxInComming let msgToSend = [] let fallBackFlag = false - + if (!body) return if (!body.length) return const prevMsg = await this.databaseClass.getPrevByNumber(from) diff --git a/packages/bot/package.json b/packages/bot/package.json index 1164b02..d3f004e 100644 --- a/packages/bot/package.json +++ b/packages/bot/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/bot", - "version": "0.0.64-alpha.0", + "version": "0.0.66-alpha.0", "description": "", "main": "./lib/bundle.bot.cjs", "scripts": { diff --git a/packages/cli/check/index.js b/packages/cli/check/index.js index abd4eb1..454f67c 100644 --- a/packages/cli/check/index.js +++ b/packages/cli/check/index.js @@ -2,50 +2,64 @@ const { red, yellow, green, bgCyan } = require('kleur') const { exec } = require('node:child_process') const checkNodeVersion = () => { - console.log(bgCyan('🚀 Revisando tu Node.js')) - const version = process.version - const majorVersion = parseInt(version.replace('v', '').split('.').shift()) - if (majorVersion < 16) { - console.error( - red( - `🔴 Se require Node.js 16 o superior. Actualmente esta ejecutando Node.js ${version}` - ) + return new Promise((resolve, reject) => { + console.log(bgCyan('🚀 Revisando tu Node.js')) + const version = process.version + const majorVersion = parseInt( + version.replace('v', '').split('.').shift() ) - process.exit(1) - } - console.log(green(`Node.js: ${version} compatible ✅`)) - console.log(``) + if (majorVersion < 16) { + console.error( + red( + `🔴 Se require Node.js 16 o superior. Actualmente esta ejecutando Node.js ${version}` + ) + ) + console.log(``) + reject('ERROR_NODE') + } + console.log(green(`Node.js: ${version} compatible ✅`)) + console.log(``) + resolve() + }) } const checkOs = () => { - console.log(bgCyan('🙂 Revisando tu sistema operativo')) - const os = process.platform - if (!os.includes('win32')) { - const messages = [ - `El sistema operativo actual (${os}) posiblemente requiera`, - `una configuración adicional referente al puppeteer`, - ``, - `Recuerda pasar por el WIKI`, - `🔗 https://github.com/leifermendez/bot-whatsapp/wiki/Instalación`, - ``, - ] + return new Promise((resolve) => { + console.log(bgCyan('🙂 Revisando tu sistema operativo')) + const os = process.platform + if (!os.includes('win32')) { + const messages = [ + `El sistema operativo actual (${os}) posiblemente requiera`, + `una configuración adicional referente al puppeteer`, + ``, + `Recuerda pasar por el WIKI`, + `🔗 https://github.com/leifermendez/bot-whatsapp/wiki/Instalación`, + ``, + ] - console.log(yellow(messages.join(' \n'))) - } - console.log(green(`OS: compatible ✅`)) - console.log(``) + console.log(yellow(messages.join(' \n'))) + } + console.log(green(`OS: compatible ✅`)) + console.log(``) + resolve() + }) } const checkGit = () => { - console.log(bgCyan('🤓 Revisando GIT')) - exec('git --version', (error) => { - if (error) { - console.error(red(`🔴 Se require instalar GIT`)) - process.exit(1) - } + return new Promise((resolve, reject) => { + console.log(bgCyan('🤓 Revisando GIT')) + exec('git --version', (error) => { + if (error) { + console.error(red(`🔴 Se require instalar GIT`)) + console.log(``) + reject('ERROR_GIT') + } else { + console.log(green(`Git: Compatible ✅`)) + console.log(``) + resolve() + } + }) }) - console.log(green(`Git: Compatible ✅`)) - console.log(``) } module.exports = { checkNodeVersion, checkOs, checkGit } diff --git a/packages/cli/interactive/index.js b/packages/cli/interactive/index.js index 5d0e197..53cc885 100644 --- a/packages/cli/interactive/index.js +++ b/packages/cli/interactive/index.js @@ -1,6 +1,6 @@ const prompts = require('prompts') const { join } = require('path') -const { yellow, red, cyan, bgMagenta } = require('kleur') +const { yellow, red, cyan, bgMagenta, bgRed } = require('kleur') const { existsSync } = require('fs') const { copyBaseApp } = require('../create-app') const { checkNodeVersion, checkOs, checkGit } = require('../check') @@ -21,6 +21,22 @@ const bannerDone = () => { } const startInteractive = async () => { + try { + console.clear() + await checkNodeVersion() + checkOs() + await checkGit() + console.clear() + await nextSteps() + } catch (e) { + console.error(bgRed(`Ups! 🙄 algo no va bien.`)) + console.error( + bgRed(`Revisa los requerimientos minimos en la documentacion`) + ) + } +} + +const nextSteps = async () => { const questions = [ { type: 'text', @@ -32,11 +48,11 @@ const startInteractive = async () => { name: 'providerWs', message: '¿Cuál proveedor de whatsapp quieres utilizar?', choices: [ - { title: 'whatsapp-web.js (gratis)', value: 'wweb' }, - { title: 'Venom (gratis)', value: 'venom' }, { title: 'Baileys (gratis)', value: 'baileys' }, + { title: 'Venom (gratis)', value: 'venom' }, + { title: 'whatsapp-web.js (gratis)', value: 'wweb' }, { title: 'Twilio', value: 'twilio' }, - { title: 'API Oficial (Meta)', value: 'meta' }, + { title: 'Meta', value: 'meta' }, ], max: 1, hint: 'Espacio para seleccionar', @@ -58,10 +74,6 @@ const startInteractive = async () => { }, ] - console.clear() - checkOs() - checkNodeVersion() - checkGit() const onCancel = () => { console.log('¡Proceso cancelado!') return true diff --git a/packages/cli/package.json b/packages/cli/package.json index 29c6e07..60361be 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/cli", - "version": "0.0.70-alpha.0", + "version": "0.0.72-alpha.0", "description": "", "main": "index.js", "devDependencies": { diff --git a/packages/contexts/package.json b/packages/contexts/package.json index ecd06e8..c186a5f 100644 --- a/packages/contexts/package.json +++ b/packages/contexts/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/contexts", - "version": "0.0.14-alpha.0", + "version": "0.0.16-alpha.0", "description": "", "main": "./lib/bundle.contexts.cjs", "files": [ diff --git a/packages/create-bot-whatsapp/package.json b/packages/create-bot-whatsapp/package.json index ac7ad87..3b372ca 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.81-alpha.0", + "version": "0.0.93-alpha.0", "description": "", "main": "./lib/bundle.create-bot-whatsapp.cjs", "files": [ diff --git a/packages/database/package.json b/packages/database/package.json index b8b625a..f69d0c9 100644 --- a/packages/database/package.json +++ b/packages/database/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/database", - "version": "0.0.62-alpha.0", + "version": "0.0.64-alpha.0", "description": "Esto es el conector a mysql, pg, mongo", "main": "./lib/mock/index.cjs", "keywords": [], diff --git a/packages/docs/src/components/widgets/Collaborator.tsx b/packages/docs/src/components/widgets/Collaborator.tsx index 4337d2b..bc72b08 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}
-
{props.user.login}
+
+ {props.user.login} +
diff --git a/packages/docs/src/components/widgets/Hero.tsx b/packages/docs/src/components/widgets/Hero.tsx index 0e7cc5e..b3761f8 100644 --- a/packages/docs/src/components/widgets/Hero.tsx +++ b/packages/docs/src/components/widgets/Hero.tsx @@ -56,7 +56,7 @@ export default component$(() => {
Ver video diff --git a/packages/docs/src/components/widgets/Members.tsx b/packages/docs/src/components/widgets/Members.tsx new file mode 100644 index 0000000..36ec435 --- /dev/null +++ b/packages/docs/src/components/widgets/Members.tsx @@ -0,0 +1,54 @@ +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 ( + <> + {props.users.map((user) => ( +
+ {' '} + +
+ ))} + + ) +}) + +export default component$((props: { users: User[] }) => { + return ( +
+
+ + +
+ +
+
+
+ ) +}) diff --git a/packages/docs/src/root.tsx b/packages/docs/src/root.tsx index 7d6db36..2cddda0 100644 --- a/packages/docs/src/root.tsx +++ b/packages/docs/src/root.tsx @@ -52,16 +52,22 @@ export default component$(() => { title: 'Avanzado', list: [ { name: 'Migración', link: '/docs/migration' }, - { name: 'Extender funcionalidades', link: '/docs/custom' }, + { name: 'MasterClass', link: '/docs/masterclass' }, + ], + }, + { + title: 'Despliegue', + list: [ + { name: 'Local', link: '/docs/deploy/local' }, + { name: 'Docker', link: '/docs/deploy/docker' }, + { name: 'Cloud', link: '/docs/deploy/cloud' }, ], }, { 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' }, ], }, ]) diff --git a/packages/docs/src/routes/docs/deploy/cloud/index.mdx b/packages/docs/src/routes/docs/deploy/cloud/index.mdx new file mode 100644 index 0000000..2e38ff3 --- /dev/null +++ b/packages/docs/src/routes/docs/deploy/cloud/index.mdx @@ -0,0 +1,108 @@ +import Alert from '../../../../components/widgets/Alert' +import Navigation from '../../../../components/widgets/Navigation' + +# Entorno Cloud + +Si deseas tener tu chatbot en ejecución en un servidor en la nueba esta, guía te ayudará. +El servidor deberá cumplir con los requisitos mínimos, puedes ver en [este enlace.](/docs/requirements) + +--- + +Dependiendo de tu proveedor de **servicio Cloud** debes crear una instancia (máquina virtual), este ejemplo iremos orientando en un entorno de AWS. +En nuestro ejemplo creamos una maquina virtual con **Ubuntu 20.04** + +![](https://i.imgur.com/5zRCz9q.png) + +--- + +Posterior al proceso de crear la máquina esperamos unos minutos hasta que ya está operativo y tomamos nota del usuario y la IP pública para proceder a conectarnos vía SSH + +## ![](https://i.imgur.com/ljyJPBm.png) + +## Conectarse via SSH + +Luego de obtener los datos necesarios para conectarnos a nuestra máquina, procedemos a hacerlo + +```shell +ssh -i llaveBot.pem ubutnu@34.228.208.104 +``` + +--- + +Luego puede aparecer un mensaje como el siguiente donde solo debes de responder **yes** + +![](https://i.imgur.com/rUBASqR.png) + +--- + +Una vez conectado ya estás dentro de la máquina virtual, te aconsejamos la primera vez hacer una actualización de dependencias de Ubuntu con los siguientes comandos + +```shell +sudo apt-get update +``` + +```shell +sudo apt-get upgrade +``` + +--- + +## Recuerda instalar Node 16 o superior + +Puedes ver más a detalle los pasos de la instalacion en este [blog](https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-20-04-es) + +```shell +curl -sL https://deb.nodesource.com/setup_18.x -o nodesource_setup.sh +``` + +```shell +sudo bash nodesource_setup.sh +``` + +```shell +sudo apt-get install -y nodejs +``` + +--- + +## Implementar el bot + +Si tienes el código de tu chatbot en un repositorio, solo falta que clones el repo en el servidor y ejecutes `npm start` + +Para escanear el **QR** puedes hacerlo vía WEB accediendo a la URL `http://[TU_IP_PUBLICA]:3000` en este ejemplo seria `http://34.228.208.10:3000` + +![](https://i.imgur.com/xcovczm.png) + +--- + +## Firewall + +Si no te abre la pagina web asegurate de tener el puerto abierto en tu firewall. +Ejemplo permitir el puerto **3000** + +![](https://i.imgur.com/0dAz0B1.png) + +--- + +## Escanear QR + +![](https://i.imgur.com/2m3NbXC.png) + +--- + +## Ejecutar en Producción + +Debes ubicarte en el directorio donde tienes el codigo fuente de tu chatbot. + +Independientemente de tu sistema operativo deberás ejecutar el chatbot con el comando atrevés de un sistema que mantenga el proceso en ejecución. +Recomendamos [Pm2](https://pm2.keymetrics.io/) + +```shell +pm2 start app.js --name=bot1 +``` + +![](https://i.imgur.com/ilPS75H.png) + +La consola de devolver un mensaje con una lista de procesos, en el ejemplo puedes observar, que tenemos un proceso llamado `bot1` + +De esta manera ya puedes cerrar la terminal y tu bot seguirá en ejecución sin problema diff --git a/packages/docs/src/routes/docs/deploy/docker/index.mdx b/packages/docs/src/routes/docs/deploy/docker/index.mdx new file mode 100644 index 0000000..9db9e2e --- /dev/null +++ b/packages/docs/src/routes/docs/deploy/docker/index.mdx @@ -0,0 +1,32 @@ +import Alert from '../../../../components/widgets/Alert' +import Navigation from '../../../../components/widgets/Navigation' + +# Entorno Docker + +Previamente, necesitas tener instalado Docker en tu servidor dependiendo del sistema operativo, los procesos cambian, +puedes encontrar toda la información oficial de docker en [este enlace.](https://docs.docker.com/get-docker/) + +--- + +Dependiendo del proveedor que has elegido necesitaras una implementación de Docker específica, pero no te preocupes, ya que viene implementada automáticamente en un archivo llamado **Dockerfile**, también puedes ver los otros Dockerfile en el apartado de [plantillas.](https://github.com/codigoencasa/bot-whatsapp/tree/main/starters/apps) + +![](https://i.imgur.com/cDspa0R.png) + +--- + +## Contruir imagen + +Solo es necesario construir la imagen del docker lo puedes hacer con el siguiente comando + +```shell +docker build . -t botwhatsapp:latest +``` + +## Iniciar contenedor + +Para iniciar el contenedor con la imagen previamente construida puedes realizarlo ejecutando el siguiente comando. +Se utiliza el puerto **3001** solo com un ejemplo puedes usar el puerto que tu quieras + +```shell +docker run -e PORT=3001 -p 3001:3001 botwhatsapp:latest +``` diff --git a/packages/docs/src/routes/docs/deploy/local/index.mdx b/packages/docs/src/routes/docs/deploy/local/index.mdx new file mode 100644 index 0000000..394af82 --- /dev/null +++ b/packages/docs/src/routes/docs/deploy/local/index.mdx @@ -0,0 +1,26 @@ +import Alert from '../../../../components/widgets/Alert' +import Navigation from '../../../../components/widgets/Navigation' + +# Entorno Local + +Si deseas tener tu chatbot en ejecución en un servidor local (computadora personal, etc.) esta, guía te ayudará. +El servidor local deberá cumplir con los requisitos mínimos, puedes ver en [este enlace.](/docs/requirements) + +--- + +Si deseas instalar pm2 puedes ejecutar `npm install pm2 --global` + +Debes ubicarte en el directorio donde tienes el codigo fuente de tu chatbot. + +Independientemente de tu sistema operativo deberás ejecutar el chatbot con el comando atrevés de un sistema que mantenga el proceso en ejecución. +Recomendamos [Pm2](https://pm2.keymetrics.io/) + +```shell +pm2 start app.js --name=bot1 +``` + +![](https://i.imgur.com/ilPS75H.png) + +La consola de devolver un mensaje con una lista de procesos, en el ejemplo puedes observar, que tenemos un proceso llamado `bot1` + +De esta manera ya puedes cerrar la terminal y tu bot seguirá en ejecución sin problema diff --git a/packages/docs/src/routes/docs/masterclass/index.md b/packages/docs/src/routes/docs/masterclass/index.md deleted file mode 100644 index 9f94b4e..0000000 --- a/packages/docs/src/routes/docs/masterclass/index.md +++ /dev/null @@ -1,24 +0,0 @@ -[![hackmd-github-sync-badge](https://hackmd.io/79xQyVSgRD6RsTpqtMPPdw/badge)](https://hackmd.io/79xQyVSgRD6RsTpqtMPPdw) -### Preguntas Frecuentes para Master Class BOT v2 -> Anota aqui las preguntas o dudas que tengas -> Pronto estare publicando fecha y hora para la masterclass - -1.- Si necesito correr dos bots al mismo tiempo ¿donde puedo cambiar el puerto? - -2.- Si necesito agregar o modificar funciones del bot, ¿como puedo hacerlo? - -3.- Si quiero mi bot con otra base de datos diferente a MySQL ¿como lo puedo hacer? - -4.- Quiero conectarme a tal o cual API con JSON/XML/etc, ¿se puede hacer? - -5.- ¿Como integrar listas? - -6.- Preguntas y respuestas con el Bot - -7.- Guardar conversaciones en Excel. - -8.- ¿Puedo usar 2 o mas sesiones (códigos QR) al mismo tiempo? - -9.- ¿Puede ser que al usar el provider bailey, al leer el qr.png, que sea desde una url en el navegador, y no desde visual studio? Gracias - -10.- ¿Cómo tomo los datos que me envían en un mensaje para utilizarlo internamente en la búsqueda de datos propios y devolver la respuesta? diff --git a/packages/docs/src/routes/docs/masterclass/index.mdx b/packages/docs/src/routes/docs/masterclass/index.mdx new file mode 100644 index 0000000..97612b4 --- /dev/null +++ b/packages/docs/src/routes/docs/masterclass/index.mdx @@ -0,0 +1,26 @@ +# MasterClass + + + +--- + +### Preguntas de la masterclass + +- Si necesito correr dos bots al mismo tiempo ¿donde puedo cambiar el puerto? +- Si necesito agregar o modificar funciones del bot, ¿como puedo hacerlo? +- Si quiero mi bot con otra base de datos diferente a MySQL ¿como lo puedo hacer? +- Quiero conectarme a tal o cual API con JSON/XML/etc, ¿se puede hacer? +- ¿Como integrar listas? +- Preguntas y respuestas con el Bot +- Guardar conversaciones en Excel. +- ¿Puedo usar 2 o mas sesiones (códigos QR) al mismo tiempo? +- ¿Puede ser que al usar el provider bailey, al leer el qr.png, que sea desde una url en el navegador, y no desde visual studio? Gracias +- ¿Cómo tomo los datos que me envían en un mensaje para utilizarlo internamente en la búsqueda de datos propios y devolver la respuesta? diff --git a/packages/docs/src/routes/docs/requirements/index.mdx b/packages/docs/src/routes/docs/requirements/index.mdx index d51a65b..8f1ef96 100644 --- a/packages/docs/src/routes/docs/requirements/index.mdx +++ b/packages/docs/src/routes/docs/requirements/index.mdx @@ -6,7 +6,9 @@ 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/)** - Git - **[descargar Git](https://git-scm.com/download/win)** + --- + ## ¿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 @@ -15,12 +17,16 @@ Solo debes ejecutar el siguiente comando y esperar que la versión que te arroja $ node -v v18.12.1 ``` + --- + ## ¿Como instalar Node? - **Windows**: [Ver video](https://youtu.be/xRXHQlqA3Ak?t=376). Si necesitas ayuda para instalar Node en Windows. A continuación te comparto un video en el minuto exacto donde explico como instalar. - **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 Git? Solo debes ejecutar el siguiente comando y esperar que te mande la versión que tienes instalada, si te manda un error de comando no reconocido es que no lo tienes instalado. @@ -29,7 +35,9 @@ Solo debes ejecutar el siguiente comando y esperar que te mande la versión que $ git -v git ``` + --- + ## ¿Como instalar Git? - Solo es necesario instalar Git si estás usando **Windows**, ya que Mac y Linux lo traen preinstalado. @@ -37,6 +45,7 @@ git - Descarga la versión necesaria para tu sistema operativo (32-bit o 64-bit). - Una vez terminada la descarga, ejecuta el archivo descargado y dale "Siguiente" en todas las pantallas. - Haz clic en el botón de "Finalizar". + --- { 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 + const dataGithub = await fetchGithub(CHECK_GITHUB_TOKEN) + const dataOpenCollective = await fetchOpenCollective() + return { + dataGithub, + dataOpenCollective, + } } export default component$(() => { @@ -27,9 +33,16 @@ export default component$(() => { } + onResolved={(data: any) => { + return ( + <> + + + + + ) + }} > - ) }) diff --git a/packages/docs/src/services/github.ts b/packages/docs/src/services/github.ts index 05d2b8f..e60d250 100644 --- a/packages/docs/src/services/github.ts +++ b/packages/docs/src/services/github.ts @@ -14,6 +14,9 @@ export const fetchGithub = async (token: string) => { }, } ) - const listUsers = data.json() - return listUsers + const listUsers = await data.json() + return listUsers.map((u: any) => ({ + ...u, + avatar_url: `${u.avatar_url}&s=80`, + })) } diff --git a/packages/docs/src/services/opencollective.ts b/packages/docs/src/services/opencollective.ts new file mode 100644 index 0000000..2eb60c8 --- /dev/null +++ b/packages/docs/src/services/opencollective.ts @@ -0,0 +1,19 @@ +/** + * GET API from OpenCollective + * @returns + */ +export const fetchOpenCollective = async () => { + const data = await fetch( + `https://opencollective.com/bot-whatsapp/members/users.json?limit=10&offset=0`, + { + method: 'GET', + } + ) + const listUsers = await data.json() + return listUsers.map((u: any) => ({ + html_url: u.profile, + avatar_url: u.image ?? 'https://i.imgur.com/HhiYKwN.png', + login: u.name, + id: u.MemberId, + })) +} diff --git a/packages/portal/.vscode/extensions.json b/packages/portal/.vscode/extensions.json new file mode 100644 index 0000000..1396082 --- /dev/null +++ b/packages/portal/.vscode/extensions.json @@ -0,0 +1,4 @@ +{ + "recommendations": ["dbaeumer.vscode-eslint", "unifiedjs.vscode-mdx"], + "unwantedRecommendations": [] +} diff --git a/packages/portal/.vscode/qwik-city.code-snippets b/packages/portal/.vscode/qwik-city.code-snippets new file mode 100644 index 0000000..b6c1c17 --- /dev/null +++ b/packages/portal/.vscode/qwik-city.code-snippets @@ -0,0 +1,32 @@ +{ + "onGet": { + "scope": "javascriptreact,typescriptreact", + "prefix": "q:onGet", + "description": "onGet function for a route index", + "body": [ + "export const onGet: RequestHandler = (request) => {", + " $0", + "};" + ] + }, + "onGet (typed)": { + "scope": "javascriptreact,typescriptreact", + "prefix": "q:onGet typed", + "description": "onGet function for a route index", + "body": [ + "export interface ${1:PageData} {", + " $2", + "};", + "", + "export const onGet: RequestHandler<$1> = (request) => {", + " $4", + "};" + ] + }, + "useEndpoint": { + "scope": "javascriptreact,typescriptreact", + "prefix": "q:useEndpoint", + "description": "useEndpoint declaration", + "body": "const $1 = useEndpoint();" + } +} diff --git a/packages/portal/.vscode/qwik.code-snippets b/packages/portal/.vscode/qwik.code-snippets new file mode 100644 index 0000000..4b89dbf --- /dev/null +++ b/packages/portal/.vscode/qwik.code-snippets @@ -0,0 +1,84 @@ +{ + "Qwik component (simple)": { + "scope": "javascriptreact,typescriptreact", + "prefix": "q:component", + "description": "Simple Qwik component", + "body": [ + "export const ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/}} = component$(() => {", + " return <${2:div}>$4", + "});" + ] + }, + "Qwik component (props)": { + "scope": "typescriptreact", + "prefix": "q:component w/props", + "description": "Qwik component w/ props", + "body": [ + "export interface ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/}}Props {", + " $2", + "}", + "", + "export const $1 = component$<$1Props>((props) => {", + " const ${2:count} = useSignal(0);", + " return (", + " <${3:div} on${4:Click}$={(ev) => {$5}}>", + " $6", + " ", + " );", + "});" + ] + }, + "Qwik signal": { + "scope": "javascriptreact,typescriptreact", + "prefix": "q:useSignal", + "description": "useSignal() declaration", + "body": ["const ${1:foo} = useSignal($2);", "$0"] + }, + "Qwik store": { + "scope": "javascriptreact,typescriptreact", + "prefix": "q:useStore", + "description": "useStore() declaration", + "body": ["const ${1:state} = useStore({", " $2", "});", "$0"] + }, + "$ hook": { + "scope": "javascriptreact,typescriptreact", + "prefix": "q:$", + "description": "$() function hook", + "body": ["$(() => {", " $0", "});", ""] + }, + "useClientEffect": { + "scope": "javascriptreact,typescriptreact", + "prefix": "q:useClientEffect", + "description": "useClientEffect$() function hook", + "body": ["useClientEffect$(({ track }) => {", " $0", "});", ""] + }, + "useTask": { + "scope": "javascriptreact,typescriptreact", + "prefix": "q:useTask", + "description": "useTask$() function hook", + "body": [ + "useTask$(({ track }) => {", + " track(() => $1);", + " $0", + "});", + "" + ] + }, + "useResource": { + "scope": "javascriptreact,typescriptreact", + "prefix": "q:useResource", + "description": "useResource$() declaration", + "body": [ + "const $1 = useResource$(({ track, cleanup }) => {", + " $0", + "});", + "" + ] + }, + "useServerMount": { + "scope": "javascriptreact,typescriptreact", + "prefix": "q:useServerMount", + "description": "useServerMount$() function hook", + "body": ["useServerMount$(() => {", " $0", "});", ""] + } +} diff --git a/packages/portal/package.json b/packages/portal/package.json index 80ad83e..c26ab32 100644 --- a/packages/portal/package.json +++ b/packages/portal/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/portal", - "version": "0.0.20-alpha.0", + "version": "0.0.22-alpha.0", "description": "Portal WEB para escanear QR", "main": "./lib/portal.http.cjs", "scripts": { diff --git a/packages/portal/server/@qwik-city-not-found-paths.js b/packages/portal/server/@qwik-city-not-found-paths.js new file mode 100644 index 0000000..f5f657d --- /dev/null +++ b/packages/portal/server/@qwik-city-not-found-paths.js @@ -0,0 +1,15 @@ +const notFounds = [ + [ + '/', + '\n\n\n \n \n 404 Resource Not Found\n \n \n\n\n

404 Resource Not Found

\n\n', + ], +] +function getNotFound(p) { + for (const r of notFounds) { + if (p.startsWith(r[0])) { + return r[1] + } + } + return 'Resource Not Found' +} +export { getNotFound } diff --git a/packages/portal/server/@qwik-city-plan.mjs b/packages/portal/server/@qwik-city-plan.mjs new file mode 100644 index 0000000..4ae6623 --- /dev/null +++ b/packages/portal/server/@qwik-city-plan.mjs @@ -0,0 +1,5 @@ +import{componentQrl as o,inlinedQrl as i,useStylesScopedQrl as n,Slot as s,useStore as c,useClientEffectQrl as r,_noopQrl as l}from"@builder.io/qwik";import{jsxs as t,jsx as e,Fragment as d}from"@builder.io/qwik/jsx-runtime";const h=`.logo{display:flex;gap:.5rem;align-items:center;align-content:center;color:#1a1a1a}.logo h1{font-size:1.5rem;margin:0} +`,g=o(i(()=>(n(i(h,"s_a8xI1ebvPf4")),t("div",{class:"logo",children:[e("img",{width:"40",height:"40",src:"data:image/png;base64,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",alt:""}),e("h1",{children:"Chatbot"})]})),"s_PjfpaY6FOTY")),P=`header{display:flex;background:white}header .logo a{display:inline-block;padding:10px 10px 7px 20px;text-decoration:none}header ul{margin:0;padding:3px 10px 0 0;list-style:none;flex:1;text-align:right}header li{display:inline-block;margin:0;padding:0}header li a{display:inline-block;padding:15px 10px;text-decoration:none;color:#1a1a1a;font-weight:500}header li a:hover{text-decoration:underline} +`,p=o(i(()=>(n(i(P,"s_DUMnr602HUE")),t("header",{children:[e("div",{class:"logo",children:e("a",{href:"https://github.com/codigoencasa/bot-whatsapp",target:"_blank",title:"qwik",children:e(g,{},"k2_0")})}),t("ul",{children:[e("li",{children:e("a",{href:"https://github.com/codigoencasa/bot-whatsapp",target:"_blank",children:"Docs"})}),e("li",{children:e("a",{href:"https://github.com/codigoencasa/bot-whatsapp/tree/main/starters/apps",target:"_blank",children:"Examples"})}),e("li",{children:e("a",{href:"https://www.youtube.com/watch?v=1u0TTbjK5bo&list=PL_WGMLcL4jzViIlmyDZPnhAdkc8RXGkFh",target:"_blank",children:"Tutorials"})})]})]})),"s_rUlpxt0UkP8")),A=o(i(()=>t(d,{children:[t("main",{children:[e(p,{},"3N_0"),e("section",{children:e(s,{},"3N_1")})]}),e("footer",{children:t("a",{href:"https://qwik.builder.io/",target:"_blank",children:["Made with ",e("strong",{children:"Qwik"})]})})]},"3N_2"),"s_dyI7p8LxEE8")),u=Object.freeze(Object.defineProperty({__proto__:null,default:A},Symbol.toStringTag,{value:"Module"})),w=`div img{display:block;background-color:#f0f0f0;width:350px;height:350px;object-fit:contain;border-radius:10px}div{display:flex;justify-content:center} +`,j=o(i(()=>{n(i(w,"s_C1zLAObj2Tc"));const a=c({count:0});return r(l("s_9iPc0ZNOdxU",[a])),e("div",{children:e("img",{width:350,height:350,src:"qr.png?time="+a.count,alt:"QR"})})},"s_rghJxmpKVus")),m=`.page{display:grid;padding:1rem;gap:2rem}.page .qr-section.links{display:flex;gap:1rem;flex-wrap:wrap}.page .btn-link{background:white;box-shadow:#00000029 0 10px 36px,#0000000f 0 0 0 1px;padding:10px;border-radius:5px;font-weight:600;text-decoration:none;color:#1a1a1a;border:solid 1px #afafaf} +`,y=o(i(()=>(n(i(m,"s_A20fm0z03Yw")),t("div",{class:"page",children:[e("div",{class:"qr-section",children:e(j,{},"UZ_0")}),t("div",{class:"qr-section intructions",children:[e("h1",{children:"Whatsapp QR"}),t("p",{children:["Con esta libreria, puedes configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes. ",e("br",{})," Además, nuestro Chatbot se integra fácilmente con otros sistemas y herramientas que ya esté utilizando en su negocio."]}),t("div",{class:"qr-section links",children:[e("a",{class:"btn-link ",target:"_blank",href:"https://bot-whatsapp.netlify.app/",children:"Ver documentación"}),e("a",{class:"btn-link ",target:"_blank",href:"https://www.youtube.com/watch?v=1u0TTbjK5bo&list=PL_WGMLcL4jzViIlmyDZPnhAdkc8RXGkFh",children:"Ver videos"}),e("a",{class:"btn-link ",target:"_blank",href:"https://opencollective.com/bot-whatsapp",children:"Comprar café"})]})]})]})),"s_4uCQXYaqoXY")),f={title:"🤖 Crear chatbot WhatsApp en minutos",meta:[{name:"description",content:"🤖 Crear chatbot WhatsApp en minutos"}]},b=Object.freeze(Object.defineProperty({__proto__:null,default:y,head:f},Symbol.toStringTag,{value:"Module"})),x=()=>u,z=[[/^\/$/,[x,()=>b],void 0,"/",["q-eaa41d1e.js","q-9cbd2586.js"]]],B=[],I=!0,E="/",L=!0,v={routes:z,menus:B,trailingSlash:I,basePathname:E,cacheModules:L};export{E as basePathname,L as cacheModules,v as default,B as menus,z as routes,I as trailingSlash}; diff --git a/packages/portal/server/@qwik-city-static-paths.js b/packages/portal/server/@qwik-city-static-paths.js new file mode 100644 index 0000000..1afa65f --- /dev/null +++ b/packages/portal/server/@qwik-city-static-paths.js @@ -0,0 +1,23 @@ +const staticPaths = new Set([ + '/', + '/favicon.svg', + '/manifest.json', + '/q-manifest.json', + '/robots.txt', + '/service-worker.js', + '/sitemap.xml', + '/water-mark.png', +]) +function isStaticPath(p) { + if (p.startsWith('/build/')) { + return true + } + if (p.startsWith('/assets/')) { + return true + } + if (staticPaths.has(p)) { + return true + } + return false +} +export { isStaticPath } diff --git a/packages/portal/server/entry.ssr.js b/packages/portal/server/entry.ssr.js new file mode 100644 index 0000000..eed19e1 --- /dev/null +++ b/packages/portal/server/entry.ssr.js @@ -0,0 +1 @@ +export * from './entry.ssr.mjs' diff --git a/packages/portal/server/entry.ssr.mjs b/packages/portal/server/entry.ssr.mjs new file mode 100644 index 0000000..c4fbac2 --- /dev/null +++ b/packages/portal/server/entry.ssr.mjs @@ -0,0 +1,2 @@ +import{jsx as r,jsxs as z,Fragment as qe}from"@builder.io/qwik/jsx-runtime";import{renderToStream as je}from"@builder.io/qwik/server";import{componentQrl as j,inlinedQrl as p,useContext as E,jsx as be,SkipRender as we,useEnvData as te,useStore as m,useContextProvider as u,useWatchQrl as ke,useLexicalScope as ne,getLocale as ve,noSerialize as se,Slot as U,useOnDocument as Ce,createContext as k,withLocale as H,_wrapSignal as P,_IMMUTABLE as W,useStylesQrl as Le}from"@builder.io/qwik";const Ne={symbols:{s_kzjavhDI3L0:{origin:"../../../node_modules/@builder.io/qwik-city/index.qwik.mjs",displayName:"Link_component_a_onClick",canonicalFilename:"s_kzjavhdi3l0",hash:"kzjavhDI3L0",ctxKind:"event",ctxName:"onClick$",captures:!0,parent:"s_8gdLBszqbaM"},s_yiXwCC0m3jY:{origin:"../../../node_modules/@builder.io/qwik-city/index.qwik.mjs",displayName:"Link_component_a_onMouseOver",canonicalFilename:"s_yixwcc0m3jy",hash:"yiXwCC0m3jY",ctxKind:"event",ctxName:"onMouseOver$",captures:!1,parent:"s_8gdLBszqbaM"},s_EpaZ5qQ4Lg4:{origin:"../../../node_modules/@builder.io/qwik-city/index.qwik.mjs",displayName:"Link_component_a_onQVisible",canonicalFilename:"s_epaz5qq4lg4",hash:"EpaZ5qQ4Lg4",ctxKind:"event",ctxName:"onQVisible$",captures:!1,parent:"s_8gdLBszqbaM"},s_9iPc0ZNOdxU:{origin:"components/qr/qr.tsx",displayName:"QR_component_useClientEffect",canonicalFilename:"s_9ipc0znodxu",hash:"9iPc0ZNOdxU",ctxKind:"function",ctxName:"useClientEffect$",captures:!0,parent:"s_rghJxmpKVus"},s_4uCQXYaqoXY:{origin:"routes/index.tsx",displayName:"routes_component",canonicalFilename:"s_4ucqxyaqoxy",hash:"4uCQXYaqoXY",ctxKind:"function",ctxName:"component$",captures:!1,parent:null},s_8gdLBszqbaM:{origin:"../../../node_modules/@builder.io/qwik-city/index.qwik.mjs",displayName:"Link_component",canonicalFilename:"s_8gdlbszqbam",hash:"8gdLBszqbaM",ctxKind:"function",ctxName:"component$",captures:!1,parent:null},s_AKetNByE5TM:{origin:"../../../node_modules/@builder.io/qwik-city/index.qwik.mjs",displayName:"RouterOutlet_component",canonicalFilename:"s_aketnbye5tm",hash:"AKetNByE5TM",ctxKind:"function",ctxName:"component$",captures:!1,parent:null},s_BVs20TDbvq4:{origin:"root.tsx",displayName:"root_component",canonicalFilename:"s_bvs20tdbvq4",hash:"BVs20TDbvq4",ctxKind:"function",ctxName:"component$",captures:!1,parent:null},s_D0p4a09aSQg:{origin:"components/router-head/router-head.tsx",displayName:"RouterHead_component",canonicalFilename:"s_d0p4a09asqg",hash:"D0p4a09aSQg",ctxKind:"function",ctxName:"component$",captures:!1,parent:null},s_PjfpaY6FOTY:{origin:"components/icons/bot.tsx",displayName:"BotLogo_component",canonicalFilename:"s_pjfpay6foty",hash:"PjfpaY6FOTY",ctxKind:"function",ctxName:"component$",captures:!1,parent:null},s_TxCFOy819ag:{origin:"../../../node_modules/@builder.io/qwik-city/index.qwik.mjs",displayName:"QwikCityProvider_component",canonicalFilename:"s_txcfoy819ag",hash:"TxCFOy819ag",ctxKind:"function",ctxName:"component$",captures:!1,parent:null},s_WmYC5H00wtI:{origin:"../../../node_modules/@builder.io/qwik-city/index.qwik.mjs",displayName:"QwikCityMockProvider_component",canonicalFilename:"s_wmyc5h00wti",hash:"WmYC5H00wtI",ctxKind:"function",ctxName:"component$",captures:!1,parent:null},s_dyI7p8LxEE8:{origin:"routes/layout.tsx",displayName:"layout_component",canonicalFilename:"s_dyi7p8lxee8",hash:"dyI7p8LxEE8",ctxKind:"function",ctxName:"component$",captures:!1,parent:null},s_rUlpxt0UkP8:{origin:"components/header/header.tsx",displayName:"header_component",canonicalFilename:"s_rulpxt0ukp8",hash:"rUlpxt0UkP8",ctxKind:"function",ctxName:"component$",captures:!1,parent:null},s_rghJxmpKVus:{origin:"components/qr/qr.tsx",displayName:"QR_component",canonicalFilename:"s_rghjxmpkvus",hash:"rghJxmpKVus",ctxKind:"function",ctxName:"component$",captures:!1,parent:null},s_xHG1bWPFcUU:{origin:"root.tsx",displayName:"root_component_useStyles",canonicalFilename:"s_xhg1bwpfcuu",hash:"xHG1bWPFcUU",ctxKind:"function",ctxName:"useStyles$",captures:!1,parent:"s_BVs20TDbvq4"},s_A20fm0z03Yw:{origin:"routes/index.tsx",displayName:"routes_component_useStylesScoped",canonicalFilename:"s_a20fm0z03yw",hash:"A20fm0z03Yw",ctxKind:"function",ctxName:"useStylesScoped$",captures:!1,parent:"s_4uCQXYaqoXY"},s_C1zLAObj2Tc:{origin:"components/qr/qr.tsx",displayName:"QR_component_useStylesScoped",canonicalFilename:"s_c1zlaobj2tc",hash:"C1zLAObj2Tc",ctxKind:"function",ctxName:"useStylesScoped$",captures:!1,parent:"s_rghJxmpKVus"},s_DUMnr602HUE:{origin:"components/header/header.tsx",displayName:"header_component_useStylesScoped",canonicalFilename:"s_dumnr602hue",hash:"DUMnr602HUE",ctxKind:"function",ctxName:"useStylesScoped$",captures:!1,parent:"s_rUlpxt0UkP8"},s_a8xI1ebvPf4:{origin:"components/icons/bot.tsx",displayName:"BotLogo_component_useStylesScoped",canonicalFilename:"s_a8xi1ebvpf4",hash:"a8xI1ebvPf4",ctxKind:"function",ctxName:"useStylesScoped$",captures:!1,parent:"s_PjfpaY6FOTY"},s_00bFc4tHmxA:{origin:"../../../node_modules/@builder.io/qwik-city/index.qwik.mjs",displayName:"useEndpoint_useResource",canonicalFilename:"s_00bfc4thmxa",hash:"00bFc4tHmxA",ctxKind:"function",ctxName:"useResource$",captures:!0,parent:null},s_2Eo7WCpaqI8:{origin:"../../../node_modules/@builder.io/qwik-city/index.qwik.mjs",displayName:"QwikCityProvider_component_useWatch",canonicalFilename:"s_2eo7wcpaqi8",hash:"2Eo7WCpaqI8",ctxKind:"function",ctxName:"useWatch$",captures:!0,parent:"s_TxCFOy819ag"},s_u0YVoxt2aTY:{origin:"../../../node_modules/@builder.io/qwik-city/index.qwik.mjs",displayName:"Link_component_useOnDocument",canonicalFilename:"s_u0yvoxt2aty",hash:"u0YVoxt2aTY",ctxKind:"function",ctxName:"useOnDocument",captures:!1,parent:"s_8gdLBszqbaM"}},mapping:{s_kzjavhDI3L0:"q-a72d609e.js",s_yiXwCC0m3jY:"q-a72d609e.js",s_EpaZ5qQ4Lg4:"q-a72d609e.js",s_9iPc0ZNOdxU:"q-a72d609e.js",s_4uCQXYaqoXY:"q-a72d609e.js",s_8gdLBszqbaM:"q-a72d609e.js",s_AKetNByE5TM:"q-a72d609e.js",s_BVs20TDbvq4:"q-a72d609e.js",s_D0p4a09aSQg:"q-a72d609e.js",s_PjfpaY6FOTY:"q-a72d609e.js",s_TxCFOy819ag:"q-a72d609e.js",s_WmYC5H00wtI:"q-a72d609e.js",s_dyI7p8LxEE8:"q-a72d609e.js",s_rUlpxt0UkP8:"q-a72d609e.js",s_rghJxmpKVus:"q-a72d609e.js",s_xHG1bWPFcUU:"q-a72d609e.js",s_A20fm0z03Yw:"q-a72d609e.js",s_C1zLAObj2Tc:"q-a72d609e.js",s_DUMnr602HUE:"q-a72d609e.js",s_a8xI1ebvPf4:"q-a72d609e.js",s_00bFc4tHmxA:"q-a72d609e.js",s_2Eo7WCpaqI8:"q-a72d609e.js",s_u0YVoxt2aTY:"q-a72d609e.js"},bundles:{"q-0d007131.js":{size:507,imports:["q-3e21ace4.js"],dynamicImports:["q-9cbd2586.js","q-eaa41d1e.js","q-f1036226.js"],origins:["@qwik-city-plan"]},"q-3e21ace4.js":{size:43312,origins:["\0vite/preload-helper","node_modules/@builder.io/qwik/core.min.mjs"]},"q-45aab3b6.js":{size:2536,origins:["../../node_modules/@builder.io/qwik-city/service-worker.mjs","src/routes/service-worker.ts"]},"q-9cbd2586.js":{size:319,imports:["q-3e21ace4.js"],dynamicImports:["q-a72d609e.js"],origins:["src/routes/index.tsx"]},"q-a72d609e.js":{size:25263,imports:["q-3e21ace4.js"],dynamicImports:["q-0d007131.js"],origins:["../../node_modules/@builder.io/qwik-city/index.qwik.mjs","src/components/header/header.css?used&inline","src/components/header/header.tsx","src/components/icons/bot.css?used&inline","src/components/icons/bot.tsx","src/components/qr/qr.css?used&inline","src/components/qr/qr.tsx","src/components/router-head/router-head.tsx","src/entry_hooks.js","src/global.css?used&inline","src/routes/index.css?used&inline","src/s_00bfc4thmxa.js","src/s_2eo7wcpaqi8.js","src/s_4ucqxyaqoxy.js","src/s_8gdlbszqbam.js","src/s_9ipc0znodxu.js","src/s_a20fm0z03yw.js","src/s_a8xi1ebvpf4.js","src/s_aketnbye5tm.js","src/s_bvs20tdbvq4.js","src/s_c1zlaobj2tc.js","src/s_d0p4a09asqg.js","src/s_dumnr602hue.js","src/s_dyi7p8lxee8.js","src/s_epaz5qq4lg4.js","src/s_kzjavhdi3l0.js","src/s_pjfpay6foty.js","src/s_rghjxmpkvus.js","src/s_rulpxt0ukp8.js","src/s_txcfoy819ag.js","src/s_u0yvoxt2aty.js","src/s_wmyc5h00wti.js","src/s_xhg1bwpfcuu.js","src/s_yixwcc0m3jy.js"],symbols:["s_00bFc4tHmxA","s_2Eo7WCpaqI8","s_4uCQXYaqoXY","s_8gdLBszqbaM","s_9iPc0ZNOdxU","s_A20fm0z03Yw","s_a8xI1ebvPf4","s_AKetNByE5TM","s_BVs20TDbvq4","s_C1zLAObj2Tc","s_D0p4a09aSQg","s_DUMnr602HUE","s_dyI7p8LxEE8","s_EpaZ5qQ4Lg4","s_kzjavhDI3L0","s_PjfpaY6FOTY","s_rghJxmpKVus","s_rUlpxt0UkP8","s_TxCFOy819ag","s_u0YVoxt2aTY","s_WmYC5H00wtI","s_xHG1bWPFcUU","s_yiXwCC0m3jY"]},"q-df6dc34c.js":{size:185,imports:["q-3e21ace4.js"],dynamicImports:["q-a72d609e.js"],origins:["src/root.tsx"]},"q-eaa41d1e.js":{size:185,imports:["q-3e21ace4.js"],dynamicImports:["q-a72d609e.js"],origins:["src/routes/layout.tsx"]},"q-f1036226.js":{size:112,imports:["q-3e21ace4.js"],dynamicImports:["q-45aab3b6.js"],origins:["@qwik-city-entries"]}},injections:[],version:"1",options:{target:"client",buildMode:"production",forceFullBuild:!0,entryStrategy:{type:"single"}},platform:{qwik:"0.16.2",vite:"",rollup:"3.9.1",env:"node",os:"win32",node:"18.12.1"}},Ee=!0,Ie=!1,oe=k("qc-c"),D=k("qc-ic"),O=k("qc-h"),Q=k("qc-l"),M=k("qc-n"),Pe=j(p(()=>{const{contents:e}=E(D);if(e&&e.length>0){const t=e.length;let n=null;for(let s=t-1;s>=0;s--)n=be(e[s].default,{children:n});return n}return we},"RouterOutlet_component_AKetNByE5TM")),R=new WeakMap,N=Symbol(),F=Symbol(),w=new Map,Se=async(e,t,n,s)=>{if(Array.isArray(e))for(const o of e){const a=o[0].exec(s);if(a){const i=o[1],c=Ye(o[2],a),l=o[4],f=new Array(i.length),y=[],_=Te(t,s);let v;return i.forEach((d,g)=>{$(d,y,I=>f[g]=I,n)}),$(_,y,d=>v=d==null?void 0:d.default,n),y.length>0&&await Promise.all(y),[c,f,v,l]}}return null},$=(e,t,n,s)=>{if(typeof e=="function"){const o=R.get(e);if(o)n(o);else{const a=e();typeof a.then=="function"?t.push(a.then(i=>{s!==!1&&R.set(e,i),n(i)})):a&&n(a)}}},Te=(e,t)=>{if(e){t=t.endsWith("/")?t:t+"/";const n=e.find(s=>s[0]===t||t.startsWith(s[0]+(t.endsWith("/")?"":"/")));if(n)return n[1]}},Ye=(e,t)=>{const n={};if(e)for(let s=0;s{const o=K(),a={data:e?e.body:null,head:o,withLocale:i=>H(s,i),...t};for(let i=n.length-1;i>=0;i--){const c=n[i]&&n[i].head;c&&(typeof c=="function"?V(o,H(s,()=>c(a))):typeof c=="object"&&V(o,c))}return a.head},V=(e,t)=>{typeof t.title=="string"&&(e.title=t.title),S(e.meta,t.meta),S(e.links,t.links),S(e.styles,t.styles),Object.assign(e.frontmatter,t.frontmatter)},S=(e,t)=>{if(Array.isArray(t))for(const n of t){if(typeof n.key=="string"){const s=e.findIndex(o=>o.key===n.key);if(s>-1){e[s]=n;continue}}e.push(n)}},K=()=>({title:"",meta:[],links:[],styles:[],frontmatter:{}}),Fe=()=>E(O),ae=()=>E(Q),Ue=()=>E(M),De=()=>se(te("qwikcity")),x=e=>e.pathname+e.search+e.hash,q=(e,t)=>new URL(e,t.href),ie=(e,t)=>e.origin===t.origin,ce=(e,t)=>e.pathname+e.search===t.pathname+t.search,Oe=(e,t)=>e.pathname===t.pathname,X=(e,t)=>ie(e,t)&&!ce(e,t),Qe=(e,t)=>e+(e.endsWith("/")?"":"/")+"q-data.json"+(t??""),Me=(e,t)=>{const n=e.href;if(typeof n=="string"&&n.trim()!==""&&typeof e.target!="string")try{const s=q(n,t),o=q("",t);if(ie(s,o))return x(s)}catch(s){console.error(s)}return null},Ke=(e,t,n)=>{if(e.prefetch!==!1&&t){const s=q(t,n);if(!Oe(s,q("",n)))return""}return null},Ae=(e,t)=>{const n=e.location,s=q(t.path,n);X(n,s)&&(Z(e,n,s),e.history.pushState("","",x(s))),e[F]||(e[F]=1,e.addEventListener("popstate",()=>{const o=e.location,a=q(t.path,o);X(o,a)&&(Z(e,a,o),t.path=x(o))}),e.removeEventListener("popstate",e[N]))},Z=async(e,t,n)=>{const s=e.document,o=n.hash;if(ce(t,n))t.hash!==o&&(await T(),o?J(s,o):e.scrollTo(0,0));else if(o)for(let a=0;a<24&&(await T(),!J(s,o));a++);else await T(),e.scrollTo(0,0)},T=()=>new Promise(e=>setTimeout(e,12)),J=(e,t)=>{const n=t.slice(1),s=e.getElementById(n);return s&&s.scrollIntoView(),s},G=e=>{typeof document<"u"&&document.dispatchEvent(new CustomEvent("qprefetch",{detail:e}))},re=async(e,t)=>{const n=new URL(e),s=n.pathname,o=n.search,a=Qe(s,o);let i=w.get(a);return G({links:[s]}),i||(i=fetch(a).then(c=>{if(c.ok&&(c.headers.get("content-type")||"").includes("json"))return c.json().then(l=>(G({bundles:l.prefetch}),t&&w.delete(a),l));w.delete(a)}),w.set(a,i)),i},Be=j(p(()=>{const e=De();if(!(e!=null&&e.params))throw new Error("Missing Qwik City Env Data");const t=te("url");if(!t)throw new Error("Missing Qwik URL Env Data");const n=new URL(t),s=m({href:n.href,pathname:n.pathname,query:Object.fromEntries(n.searchParams.entries()),params:e.params}),o=m({path:x(n)}),a=m(K),i=m({headings:void 0,menu:void 0}),c=m({contents:void 0});return u(oe,i),u(D,c),u(O,a),u(Q,s),u(M,o),ke(p(async({track:l})=>{const[f,y,_,v,d,g]=ne(),I=ve(""),{routes:le,menus:de,cacheModules:pe,trailingSlash:A}=await import("./@qwik-city-plan.mjs"),me=l(()=>g.path),h=new URL(me,d.href),C=h.pathname,ue=Se(le,de,pe,C),he=Ee?v.response:re(h.href,!0),B=await ue;if(B){const[fe,_e,xe]=B,L=_e,ye=L[L.length-1];if(C.endsWith("/")){if(!A){h.pathname=C.slice(0,-1),g.path=x(h);return}}else if(A){h.pathname+="/",g.path=x(h);return}d.href=h.href,d.pathname=C,d.params={...fe},d.query=Object.fromEntries(h.searchParams.entries()),f.headings=ye.headings,f.menu=xe,y.contents=se(L);const ge=await he,b=ze(ge,d,L,I);w.clear(),_.links=b.links,_.meta=b.meta,_.styles=b.styles,_.title=b.title,_.frontmatter=b.frontmatter,Ie&&Ae(window,g)}},"QwikCityProvider_component_useWatch_2Eo7WCpaqI8",[i,c,a,e,s,o])),r(U,{},"qY_0")},"QwikCityProvider_component_TxCFOy819ag"));p(e=>{const t=e.url??"http://localhost/",n=new URL(t),s=m({href:n.href,pathname:n.pathname,query:Object.fromEntries(n.searchParams.entries()),params:e.params??{}}),o=m({path:x(n)}),a=m(K),i=m({headings:void 0,menu:void 0}),c=m({contents:void 0});return u(oe,i),u(D,c),u(O,a),u(Q,s),u(M,o),r(U,{},"qY_1")},"QwikCityMockProvider_component_WmYC5H00wtI");p(e=>{const t=Ue(),n=ae(),s=e.href,o={...e},a=Me(o,n),i=Ke(e,a,n);return o["preventdefault:click"]=!!a,o.href=a||s,Ce("qinit",p(()=>{window[N]||(window[N]=()=>{window[F]||location.reload()},setTimeout(()=>{addEventListener("popstate",window[N])},0))},"Link_component_useOnDocument_u0YVoxt2aTY")),r("a",{...o,onClick$:p(()=>{const[c,l,f]=ne();c&&(f.path=l.href)},"Link_component_a_onClick_kzjavhDI3L0",[a,o,t]),"data-prefetch":i,onMouseOver$:p((c,l)=>ee(l),"Link_component_a_onMouseOver_yiXwCC0m3jY"),onQVisible$:p((c,l)=>ee(l,!0),"Link_component_a_onQVisible_EpaZ5qQ4Lg4"),children:r(U,{},"AD_0")})},"Link_component_8gdLBszqbaM");const ee=(e,t)=>{e&&e.href&&e.hasAttribute("data-prefetch")&&(Y||(Y=innerWidth),(!t||t&&Y<520)&&re(e.href))};let Y=0;const He=j(p(()=>{const e=Fe(),t=ae();return z(qe,{children:[r("title",{children:P(e,"title")}),r("link",{rel:"canonical",get href(){return t.href},[W]:{href:P(t,"href")}}),r("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),r("link",{rel:"icon",type:"image/svg+xml",href:"/favicon.svg"}),e.meta.map(n=>r("meta",{...n})),e.links.map(n=>r("link",{...n})),e.styles.map(n=>r("style",{...n.props,get dangerouslySetInnerHTML(){return n.style},[W]:{dangerouslySetInnerHTML:P(n,"style")}}))]},"Qn_0")},"s_D0p4a09aSQg")),We=`:root{--qwik-dark-blue: #1a1a1a;--qwik-light-blue: #349713;--qwik-light-purple: #73da51;--qwik-dark-purple: #3f9622}body{background-color:#fafafa;font-family:Inter,sans-serif,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,sans-serif;padding:20px 20px 40px}main{max-width:760px;margin:0 auto;background-color:#fff;border-radius:5px;box-shadow:#110c2e26 0 48px 100px;overflow:hidden}h1,h2{margin:0 0 5px}.lightning{filter:hue-rotate(180deg)}section{padding:20px}ul{list-style-type:square;margin:5px 0 30px;padding-left:25px}li{padding:8px 0}li::marker{color:var(--qwik-light-blue)}a,a:visited{color:var(--qwik-dark-blue)}a:hover{text-decoration:none}table.commands{margin:0 0 30px}.commands td{padding:5px}.commands td:first-child{white-space:nowrap;padding-right:20px}code{font-family:Menlo,Monaco,Courier New,monospace;font-size:.9em;background-color:#e0e0e0;padding:2px 4px;border-radius:3px;border-bottom:2px solid #bfbfbf}footer{padding:15px;text-align:center;font-size:.8em}footer a{text-decoration:none}footer a:hover{text-decoration:underline}a.mindblow{margin:0 auto;display:block;background:var(--qwik-dark-purple);padding:10px 20px;border-radius:10px;border:0;color:#fff;text-decoration:none;font-size:20px;width:fit-content;border-bottom:4px solid black;cursor:url("data:image/svg+xml;utf8,\\1f92f") 16 0,auto}a.mindblow:hover{border-bottom-width:0px;margin-bottom:4px;transform:translateY(4px)} +`,Re=j(p(()=>(Le(p(We,"s_xHG1bWPFcUU")),z(Be,{children:[z("head",{children:[r("meta",{charSet:"utf-8"}),r("link",{rel:"preconnect",href:"https://rsms.me/"}),r("link",{rel:"stylesheet",href:"https://rsms.me/inter/inter.css"}),r(He,{},"pq_0")]}),r("body",{lang:"en",children:r(Pe,{},"pq_1")})]},"pq_2")),"s_BVs20TDbvq4"));function Ze(e){return je(r(Re,{},"we_0"),{manifest:Ne,...e,containerAttributes:{lang:"en-us",...e.containerAttributes}})}export{Ze as default}; diff --git a/packages/portal/server/package.json b/packages/portal/server/package.json new file mode 100644 index 0000000..4720025 --- /dev/null +++ b/packages/portal/server/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/packages/provider/package.json b/packages/provider/package.json index f9102b4..5c3ef0a 100644 --- a/packages/provider/package.json +++ b/packages/provider/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/provider", - "version": "0.0.68-alpha.0", + "version": "0.0.70-alpha.0", "description": "Esto es el conector a Twilio, Meta, etc...", "main": "./lib/mock/index.cjs", "keywords": [], diff --git a/packages/provider/src/web-whatsapp/package.json b/packages/provider/src/web-whatsapp/package.json index 7514818..d15dbe0 100644 --- a/packages/provider/src/web-whatsapp/package.json +++ b/packages/provider/src/web-whatsapp/package.json @@ -1,5 +1,5 @@ { "dependencies": { - "whatsapp-web.js": "1.18.4" + "whatsapp-web.js": "1.19.2" } } diff --git a/starters/apps/base-wweb-json/package.json b/starters/apps/base-wweb-json/package.json index f52ab5a..d01b825 100644 --- a/starters/apps/base-wweb-json/package.json +++ b/starters/apps/base-wweb-json/package.json @@ -14,7 +14,7 @@ "@bot-whatsapp/database": "latest", "@bot-whatsapp/provider": "latest", "@bot-whatsapp/portal": "latest", - "whatsapp-web.js": "1.18.4" + "whatsapp-web.js": "1.19.2" }, "author": "", "license": "ISC" diff --git a/starters/apps/base-wweb-memory/package.json b/starters/apps/base-wweb-memory/package.json index b9c4712..d508c4f 100644 --- a/starters/apps/base-wweb-memory/package.json +++ b/starters/apps/base-wweb-memory/package.json @@ -14,7 +14,7 @@ "@bot-whatsapp/database": "latest", "@bot-whatsapp/provider": "latest", "@bot-whatsapp/portal": "latest", - "whatsapp-web.js": "1.18.4" + "whatsapp-web.js": "1.19.2" }, "author": "", "license": "ISC" diff --git a/starters/apps/base-wweb-mongo/package.json b/starters/apps/base-wweb-mongo/package.json index 9c51d8a..a64f35c 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.19.2", "@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 e95ec1a..ee90e12 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.19.2", "@bot-whatsapp/bot": "latest", "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest",