diff --git a/.github/workflows/contributors.yml b/.github/workflows/contributors.yml deleted file mode 100644 index b126e98..0000000 --- a/.github/workflows/contributors.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: Revisando Colaboradores - -on: - schedule: - - cron: '0 9 * * *' - -jobs: - contrib-readme-job: - runs-on: ubuntu-latest - name: A job to automate contrib in readme - steps: - - name: Contribute List - uses: akhilmhdh/contributors-readme-action@v2.3.6 - with: - image_size: 50 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.husky/commit-msg b/.husky/commit-msg index 4002db7..3d3fb52 100755 --- a/.husky/commit-msg +++ b/.husky/commit-msg @@ -1,4 +1,4 @@ #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" -npx --no -- commitlint --edit +npm run lint:fix && npx --no -- commitlint --edit diff --git a/.prettierignore b/.prettierignore index 547ec21..7fffea9 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,5 +1,5 @@ packages/**/lib -packages/docs/*.json +packages/docs/ **/.git **/.svn **/.hg diff --git a/.prettierrc.json b/.prettierrc.json index e74ed9f..f0db82f 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -2,5 +2,6 @@ "trailingComma": "es5", "tabWidth": 4, "semi": false, - "singleQuote": true + "singleQuote": true, + "printWidth": 120 } diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 0d0e52b..1ace260 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,3 +1,3 @@ { - "recommendations": ["xyc.vscode-mdx-preview"] + "recommendations": ["xyc.vscode-mdx-preview", "vivaxy.vscode-conventional-commits", "mhutchie.git-graph"] } diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b39939..01adb7f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,57 @@ 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.20](https://github.com/leifermendez/bot-whatsapp/compare/v0.1.19...v0.1.20) (2023-02-05) + + +### Features + +* **cli:** :fire: add regex expression in addKeyworkd ([e34560c](https://github.com/leifermendez/bot-whatsapp/commit/e34560c77d4852d2e90930f0858e51aa67d4eeab)) +* **provider:** :zap: possible get class provider ([76ba717](https://github.com/leifermendez/bot-whatsapp/commit/76ba717927a75b3d6299206aa0b8aee2bc25b726)) + + +### Bug Fixes + +* **cli:** :zap: working flowDynamic test ([c0113ca](https://github.com/leifermendez/bot-whatsapp/commit/c0113ca49295aff220d8defcb53f2ba7f2872d75)) +* **cli:** :zap: working flowDynamic test ([aef52d2](https://github.com/leifermendez/bot-whatsapp/commit/aef52d2694fa6616d614338643db198b4f7f1fe8)) +* **cli:** :zap: working flowDynamic test ([f769320](https://github.com/leifermendez/bot-whatsapp/commit/f76932021ce968d93241b55cfcdb8ae0e0e6c934)) +* **cli:** :zap: working flowDynamic test ([23e09ef](https://github.com/leifermendez/bot-whatsapp/commit/23e09efaeccaf51018c55da492edff45b625f0a9)) +* **database:** add support emoji in mysql ([9311aa0](https://github.com/leifermendez/bot-whatsapp/commit/9311aa0a65623a1bf40e96207a281625154dae90)) +* **database:** fix naming ([cd082f2](https://github.com/leifermendez/bot-whatsapp/commit/cd082f235012cd5f5844c6437f51711beee0c865)) +* **database:** fix naming ([1afc3ba](https://github.com/leifermendez/bot-whatsapp/commit/1afc3ba182070713b5bec40eaab0fa1f680830cd)) +* **database:** fix naming ([c9831d2](https://github.com/leifermendez/bot-whatsapp/commit/c9831d202ab2c85f15a0247cd2a2426bc435270c)) +* **provider:** :zap: baily wa.link ([96c2bff](https://github.com/leifermendez/bot-whatsapp/commit/96c2bffd093269be8e39474a84c156938504a6cb)) + +### [0.1.19](https://github.com/leifermendez/bot-whatsapp/compare/v0.1.18...v0.1.19) (2023-01-29) + + +### Features + +* :fire: bailey add media ([eab39e4](https://github.com/leifermendez/bot-whatsapp/commit/eab39e4ac06fd46f1a4671f8c15d1456b4400b97)) +* :zap: more feature ([e19c3a2](https://github.com/leifermendez/bot-whatsapp/commit/e19c3a25a40259c74b4add9635af4844907eed26)) +* **provider:** :rocket: fix issues in providers venom and wwebjs ([cbe438b](https://github.com/leifermendez/bot-whatsapp/commit/cbe438b77854e8df48b9dafaf7a837d21124ac5f)) +* **provider:** :rocket: fix provider ([0ad4c58](https://github.com/leifermendez/bot-whatsapp/commit/0ad4c58457b548dc41c0f9e8470d59c48de7b95a)) +* **provider:** :rocket: fix provider ([f8c7184](https://github.com/leifermendez/bot-whatsapp/commit/f8c7184487065443ab10f77aaf585e8bd63ca441)) +* **provider:** :rocket: fix provider ([b2afa45](https://github.com/leifermendez/bot-whatsapp/commit/b2afa45352a7ab1f5d9775f3c1fde475bd8ca204)) +* **provider:** :rocket: fix provider venom and wwebjs ([dcb0566](https://github.com/leifermendez/bot-whatsapp/commit/dcb0566d2bc3da40cd0c71554bb5ea0ec115d9ca)) +* **provider:** :rocket: implements all send media to venom provider ([9dd7c02](https://github.com/leifermendez/bot-whatsapp/commit/9dd7c02b6a5474aff063f7d6be0ca8519504b93c)) +* **provider:** :rocket: send file wwebjs ([6ff1a3a](https://github.com/leifermendez/bot-whatsapp/commit/6ff1a3a980196c01c66ed04ee07d0e7e57256504)) +* **provider:** :zap: bailey add send file video audio ([14d1a61](https://github.com/leifermendez/bot-whatsapp/commit/14d1a61fa259c09135c37c55bd79e97c9c8367e4)) +* **provider:** :zap: venom wweb ([fd2847a](https://github.com/leifermendez/bot-whatsapp/commit/fd2847aea0db17a0bdf33b5bca67a4cb8db2da16)) +* **provider:** :zap: venom wweb ([f95331d](https://github.com/leifermendez/bot-whatsapp/commit/f95331d3dc70e76a3dfbe4c8d24059f0e7a164ef)) +* **provider:** 🚀 implements all send media to venom provider ([bd7d150](https://github.com/leifermendez/bot-whatsapp/commit/bd7d150c047af41fdbb47f0a50a21e82cd79ee85)) + + +### Bug Fixes + +* **bot:** :fire: endFlow with ctx ([f6114af](https://github.com/leifermendez/bot-whatsapp/commit/f6114affadfbc324536a86167d1fdfe8da3c8de6)) +* **bot:** :fire: endFlow with ctx ([b655ae4](https://github.com/leifermendez/bot-whatsapp/commit/b655ae449e7958ea940d8cc3c678fd66f60b6385)) +* **bot:** :zap: endFlow butons ([87a4203](https://github.com/leifermendez/bot-whatsapp/commit/87a4203cd5b88f566387a76d586248e4265d6e4e)) +* **bot:** :zap: fix fallback refactor ([e22780d](https://github.com/leifermendez/bot-whatsapp/commit/e22780d3faba94f71a70f1f201a20690608fa5bf)) +* **cli:** :zap: endflow ([1c66f17](https://github.com/leifermendez/bot-whatsapp/commit/1c66f178a56d284bb8cb9df5ca17685c7e5d1ddd)) +* **cli:** :zap: refactor fallback in child flow ([b33e346](https://github.com/leifermendez/bot-whatsapp/commit/b33e34692d3abcb6874308a9be79f74be4a2c3a8)) +* **cli:** :zap: refactor fallback in child flow ([8da4b20](https://github.com/leifermendez/bot-whatsapp/commit/8da4b204b41125b5d0fa0aee4fa87c1f5faf5568)) + ### [0.1.18](https://github.com/leifermendez/bot-whatsapp/compare/v0.1.17...v0.1.18) (2023-01-24) diff --git a/README.md b/README.md index 777209f..af4b124 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,7 @@ # 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/) -[![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) - +[![](https://img.shields.io/discord/915193197645402142?logo=discord)](https://link.codigoencasa.com/DISCORD)

@@ -112,14 +111,35 @@ Entiende más a fondo sus funcionalidades explicadas en nuestra documentación. Null + + + devrlbusiness +
+ Developer RL Business +
+ + + + + Gregoriotecnico +
+ Null +
+ jlferrete
Jose Luis Ferrete Olarte
- - + + + + lisandroprada +
+ Null +
+ 6rak0 @@ -140,7 +160,8 @@ Entiende más a fondo sus funcionalidades explicadas en nuestra documentación.
Rodrigo Mendoza Cabrera
- + + yond1994 diff --git a/__mocks__/env.js b/__mocks__/env.js new file mode 100644 index 0000000..ff09721 --- /dev/null +++ b/__mocks__/env.js @@ -0,0 +1,39 @@ +const MOCK_DB = require('../packages/database/src/mock') +const PROVIDER_DB = require('../packages/provider/src/mock') + +class MOCK_FLOW { + allCallbacks = { ref: () => 1 } + flowSerialize = [] + flowRaw = [] + find = (arg) => { + if (arg) { + return [{ answer: 'answer', ref: 'ref' }] + } else { + return null + } + } + findBySerialize = () => ({}) + findIndexByRef = () => 0 +} + +/** + * Preparar env para el test + * @param {*} context + */ +const setup = async (context) => { + context.provider = new PROVIDER_DB() + context.database = new MOCK_DB() + context.flow = new MOCK_FLOW() +} + +const clear = async (context) => { + context.provider = null + context.database = null + context.flow = null +} + +function delay(ms) { + return new Promise((res) => setTimeout(res, ms)) +} + +module.exports = { setup, clear, delay } diff --git a/__mocks__/mobile.mock.js b/__mocks__/mobile.mock.js deleted file mode 100644 index 7f19f74..0000000 --- a/__mocks__/mobile.mock.js +++ /dev/null @@ -1,6 +0,0 @@ -const MOCK_MOBILE_WS = { - from: 'XXXXXX', - hasMedia: false, -} - -module.exports = { MOCK_MOBILE_WS } diff --git a/__test__/0.0.0-case.test.js b/__test__/0.0.0-case.test.js new file mode 100644 index 0000000..eea982a --- /dev/null +++ b/__test__/0.0.0-case.test.js @@ -0,0 +1,52 @@ +const { suite } = require('uvu') +const assert = require('uvu/assert') +const { addKeyword, createBot, createFlow } = require('../packages/bot/index') +const { setup, clear, delay } = require('../__mocks__/env') + +const suiteCase = suite('Flujo: Simple') + +suiteCase.before.each(setup) +suiteCase.after.each(clear) + +suiteCase(`Responder a "hola"`, async ({ database, provider }) => { + const flow = addKeyword('hola').addAnswer('Buenas!').addAnswer('Como vamos!') + + createBot({ + database, + provider, + flow: createFlow([flow]), + }) + + await provider.delaySendMessage(0, 'message', { + from: '000', + body: 'hola', + }) + + await delay(0) + + assert.is('Buenas!', database.listHistory[0].answer) + assert.is('Como vamos!', database.listHistory[1].answer) + assert.is(undefined, database.listHistory[2]) +}) + +suiteCase(`NO reponder a "pepe"`, async ({ database, provider }) => { + const flow = addKeyword('hola').addAnswer('Buenas!').addAnswer('Como vamos!') + + createBot({ + database, + provider, + flow: createFlow([flow]), + }) + + await provider.delaySendMessage(0, 'message', { + from: '000', + body: 'pepe', + }) + + await delay(0) + + assert.is(undefined, database.listHistory[0]) + assert.is(undefined, database.listHistory[1]) +}) + +suiteCase.run() diff --git a/__test__/0.1.0-case.test.js b/__test__/0.1.0-case.test.js new file mode 100644 index 0000000..7bca259 --- /dev/null +++ b/__test__/0.1.0-case.test.js @@ -0,0 +1,51 @@ +const { suite } = require('uvu') +const assert = require('uvu/assert') +const { addKeyword, createBot, createFlow } = require('../packages/bot/index') +const { setup, clear, delay } = require('../__mocks__/env') + +const suiteCase = suite('Flujo: sensitive') + +suiteCase.before.each(setup) +suiteCase.after.each(clear) + +suiteCase(`Responder a "ole" en minuscula`, async ({ database, provider }) => { + const flow = addKeyword(['ola', 'ole'], { sensitive: true }).addAnswer('Bienvenido a la OLA') + + createBot({ + database, + provider, + flow: createFlow([flow]), + }) + + await provider.delaySendMessage(0, 'message', { + from: '000', + body: 'ole', + }) + + await delay(0) + + assert.is('Bienvenido a la OLA', database.listHistory[0].answer) + assert.is(undefined, database.listHistory[1]) +}) + +suiteCase(`NO Responder a "ole" en minuscula`, async ({ database, provider }) => { + const flow = addKeyword(['ola', 'ole'], { sensitive: true }).addAnswer('Bienvenido a la OLA') + + createBot({ + database, + provider, + flow: createFlow([flow]), + }) + + await provider.delaySendMessage(0, 'message', { + from: '000', + body: 'OLE', + }) + + await delay(0) + + assert.is(undefined, database.listHistory[0]) + assert.is(undefined, database.listHistory[1]) +}) + +suiteCase.run() diff --git a/__test__/0.1.1-case.test.js b/__test__/0.1.1-case.test.js new file mode 100644 index 0000000..dd49d5c --- /dev/null +++ b/__test__/0.1.1-case.test.js @@ -0,0 +1,89 @@ +const { suite } = require('uvu') +const assert = require('uvu/assert') +const { addKeyword, createBot, createFlow } = require('../packages/bot/index') +const { setup, clear, delay } = require('../__mocks__/env') + +const fakeHTTP = async () => { + await delay(10) +} + +const suiteCase = suite('Flujo: hijos con callbacks') + +suiteCase.before.each(setup) +suiteCase.after.each(clear) + +suiteCase(`Debe continuar el flujo del hijo`, async ({ database, provider }) => { + const flowCash = addKeyword('cash').addAnswer('Traeme los billetes! 😎') + + const flowOnline = addKeyword('paypal') + .addAnswer('Voy generar un link de paypal *escribe algo*', { capture: true }, async (_, { flowDynamic }) => { + await fakeHTTP() + await flowDynamic('Esperate.... estoy generando esto toma su tiempo') + }) + .addAnswer('Aqui lo tienes 😎😎', null, async (_, { flowDynamic }) => { + await fakeHTTP() + await flowDynamic('http://paypal.com') + }) + .addAnswer('Apurate!') + + const flujoPrincipal = addKeyword('hola') + .addAnswer('¿Como estas todo bien?') + .addAnswer('Espero que si') + .addAnswer('¿Cual es tu email?', { capture: true }, async (ctx, { fallBack }) => { + if (!ctx.body.includes('@')) { + return fallBack('Veo que no es um mail *bien*') + } + }) + .addAnswer('Voy a validar tu email...', null, async (_, { flowDynamic }) => { + await fakeHTTP() + return flowDynamic('Email validado correctamten!') + }) + .addAnswer('¿Como vas a pagar *paypal* o *cash*?', { capture: true }, async () => {}, [flowCash, flowOnline]) + + createBot({ + database, + flow: createFlow([flujoPrincipal]), + provider, + }) + + await provider.delaySendMessage(0, 'message', { + from: '000', + body: 'hola', + }) + + await provider.delaySendMessage(10, 'message', { + from: '000', + body: 'test@test.com', + }) + + await provider.delaySendMessage(15, 'message', { + from: '000', + body: 'paypal', + }) + + await provider.delaySendMessage(20, 'message', { + from: '000', + body: 'continue!', + }) + + await delay(500) + const getHistory = database.listHistory.map((i) => i.answer) + + assert.is('¿Como estas todo bien?', getHistory[0]) + assert.is('Espero que si', getHistory[1]) + assert.is('¿Cual es tu email?', getHistory[2]) + assert.is('test@test.com', getHistory[3]) + assert.is('Voy a validar tu email...', getHistory[4]) + assert.is('Email validado correctamten!', getHistory[5]) + assert.is('¿Como vas a pagar *paypal* o *cash*?', getHistory[6]) + assert.is('paypal', getHistory[7]) + assert.is('Voy generar un link de paypal *escribe algo*', getHistory[8]) + assert.is('continue!', getHistory[9]) + assert.is('Esperate.... estoy generando esto toma su tiempo', getHistory[10]) + assert.is('Aqui lo tienes 😎😎', getHistory[11]) + assert.is('http://paypal.com', getHistory[12]) + assert.is('Apurate!', getHistory[13]) + assert.is(undefined, getHistory[14]) +}) + +suiteCase.run() diff --git a/__test__/0.1.2-case.test.js b/__test__/0.1.2-case.test.js new file mode 100644 index 0000000..b421955 --- /dev/null +++ b/__test__/0.1.2-case.test.js @@ -0,0 +1,59 @@ +const { suite } = require('uvu') +const assert = require('uvu/assert') +const { addKeyword, createBot, createFlow } = require('../packages/bot/index') +const { setup, clear, delay } = require('../__mocks__/env') + +const suiteCase = suite('Flujo: regex') + +suiteCase.before.each(setup) +suiteCase.after.each(clear) + +suiteCase(`Responder a una expresion regular`, async ({ database, provider }) => { + const REGEX_CREDIT_NUMBER = `/(^4[0-9]{12}(?:[0-9]{3})?$)|(^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$)|(3[47][0-9]{13})|(^3(?:0[0-5]|[68][0-9])[0-9]{11}$)|(^6(?:011|5[0-9]{2})[0-9]{12}$)|(^(?:2131|1800|35\d{3})\d{11}$)/gm` + + const flow = addKeyword(REGEX_CREDIT_NUMBER, { regex: true }) + .addAnswer(`Gracias por proporcionar un numero de tarjeta valido`) + .addAnswer('Fin!') + + createBot({ + database, + provider, + flow: createFlow([flow]), + }) + + await provider.delaySendMessage(0, 'message', { + from: '000', + body: '374245455400126', + }) + + await delay(10) + + assert.is('Gracias por proporcionar un numero de tarjeta valido', database.listHistory[0].answer) + assert.is('Fin!', database.listHistory[1].answer) + assert.is(undefined, database.listHistory[2]) +}) + +suiteCase(`NO Responder a una expresion regular`, async ({ database, provider }) => { + const REGEX_CREDIT_NUMBER = `/(^4[0-9]{12}(?:[0-9]{3})?$)|(^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$)|(3[47][0-9]{13})|(^3(?:0[0-5]|[68][0-9])[0-9]{11}$)|(^6(?:011|5[0-9]{2})[0-9]{12}$)|(^(?:2131|1800|35\d{3})\d{11}$)/gm` + const flow = addKeyword(REGEX_CREDIT_NUMBER, { regex: true }) + .addAnswer(`Gracias por proporcionar un numero de tarjeta valido`) + .addAnswer('Fin!') + + createBot({ + database, + provider, + flow: createFlow([flow]), + }) + + await provider.delaySendMessage(0, 'message', { + from: '000', + body: 'hola', + }) + + await delay(10) + + assert.is(undefined, database.listHistory[0]) + assert.is(undefined, database.listHistory[1]) +}) + +suiteCase.run() diff --git a/__test__/0.1.3-case.test.js b/__test__/0.1.3-case.test.js new file mode 100644 index 0000000..1d4c28d --- /dev/null +++ b/__test__/0.1.3-case.test.js @@ -0,0 +1,40 @@ +const { suite } = require('uvu') +const assert = require('uvu/assert') +const { addKeyword, createBot, createFlow } = require('../packages/bot/index') +const { setup, clear, delay } = require('../__mocks__/env') + +const suiteCase = suite('Flujo: capture') + +suiteCase.before.each(setup) +suiteCase.after.each(clear) + +suiteCase(`Responder a "pregunta"`, async ({ database, provider }) => { + const flow = addKeyword(['hola']) + .addAnswer(['Hola como estas?', '¿Cual es tu edad?'], { capture: true }) + .addAnswer('Gracias por tu respuesta') + + createBot({ + database, + provider, + flow: createFlow([flow]), + }) + + await provider.delaySendMessage(0, 'message', { + from: '000', + body: 'hola', + }) + + await provider.delaySendMessage(10, 'message', { + from: '000', + body: '90', + }) + + await delay(20) + + assert.is(['Hola como estas?', '¿Cual es tu edad?'].join('\n'), database.listHistory[0].answer) + assert.is('90', database.listHistory[1].answer) + assert.is('Gracias por tu respuesta', database.listHistory[2].answer) + assert.is(undefined, database.listHistory[3]) +}) + +suiteCase.run() diff --git a/__test__/0.1.4-case.test.js b/__test__/0.1.4-case.test.js new file mode 100644 index 0000000..6b9f7e8 --- /dev/null +++ b/__test__/0.1.4-case.test.js @@ -0,0 +1,162 @@ +const { suite } = require('uvu') +const assert = require('uvu/assert') +const { addKeyword, createBot, createFlow } = require('../packages/bot/index') +const { setup, clear, delay } = require('../__mocks__/env') + +const fakeHTTP = async (fakeData = []) => { + await delay(50) + const data = fakeData.map((u) => ({ body: `${u}` })) + return Promise.resolve(data) +} + +const suiteCase = suite('Flujo: flowDynamic') + +suiteCase.before.each(setup) +suiteCase.after.each(clear) + +suiteCase(`Responder con mensajes asyncronos`, async ({ database, provider }) => { + const MOCK_VALUES = [ + 'Bienvenido te envio muchas marcas (5510)', + 'Seleccione marca del auto a cotizar, con el *número* correspondiente', + 'Seleccione la sub marca del auto a cotizar, con el *número* correspondiente:', + 'Los precios rondan:', + ] + const flow = addKeyword(['hola']) + .addAnswer(MOCK_VALUES[0], null, async (_, { flowDynamic }) => { + const data = await fakeHTTP(['Ford', 'GM', 'BMW']) + return flowDynamic(data) + }) + .addAnswer(MOCK_VALUES[1], null, async (_, { flowDynamic }) => { + const data = await fakeHTTP(['Ranger', 'Explorer']) + return flowDynamic(data) + }) + .addAnswer(MOCK_VALUES[2], null, async (_, { flowDynamic }) => { + const data = await fakeHTTP(['Usado', 'Nuevos']) + return flowDynamic(data) + }) + .addAnswer(MOCK_VALUES[3], null, async (_, { flowDynamic }) => { + const data = await fakeHTTP(['1000', '2000', '3000']) + return flowDynamic(data) + }) + + createBot({ + database, + provider, + flow: createFlow([flow]), + }) + + await provider.delaySendMessage(0, 'message', { + from: '000', + body: 'hola', + }) + + await delay(1200) + const getHistory = database.listHistory.map((i) => i.answer) + assert.is(MOCK_VALUES[0], getHistory[0]) + + //FlowDynamic + assert.is('Ford', getHistory[1]) + assert.is('GM', getHistory[2]) + assert.is('BMW', getHistory[3]) + + assert.is(MOCK_VALUES[1], getHistory[4]) + + //FlowDynamic + assert.is('Ranger', getHistory[5]) + assert.is('Explorer', getHistory[6]) + + assert.is(MOCK_VALUES[2], getHistory[7]) + + //FlowDynamic + assert.is('Usado', getHistory[8]) + assert.is('Nuevos', getHistory[9]) + + assert.is(MOCK_VALUES[3], getHistory[10]) + + //FlowDynamic + assert.is('1000', getHistory[11]) + assert.is('2000', getHistory[12]) + assert.is('3000', getHistory[13]) + assert.is(undefined, getHistory[14]) +}) + +suiteCase(`Responder con un "string"`, async ({ database, provider }) => { + const flow = addKeyword(['hola']) + .addAnswer('Como vas?', null, async (_, { flowDynamic }) => { + return flowDynamic('Todo bien!') + }) + .addAnswer('y vos?') + + createBot({ + database, + provider, + flow: createFlow([flow]), + }) + + await provider.delaySendMessage(0, 'message', { + from: '000', + body: 'hola', + }) + + await delay(10) + const getHistory = database.listHistory.map((i) => i.answer) + assert.is('Como vas?', getHistory[0]) + assert.is('Todo bien!', getHistory[1]) + assert.is('y vos?', getHistory[2]) + assert.is(undefined, getHistory[3]) +}) + +suiteCase(`Responder con un "array"`, async ({ database, provider }) => { + const flow = addKeyword(['hola']) + .addAnswer('Como vas?', null, async (_, { flowDynamic }) => { + return flowDynamic(['Todo bien!', 'trabajando']) + }) + .addAnswer('y vos?') + + createBot({ + database, + provider, + flow: createFlow([flow]), + }) + + await provider.delaySendMessage(0, 'message', { + from: '000', + body: 'hola', + }) + + await delay(10) + const getHistory = database.listHistory.map((i) => i.answer) + assert.is('Como vas?', getHistory[0]) + assert.is('Todo bien!', getHistory[1]) + assert.is('trabajando', getHistory[2]) + assert.is('y vos?', getHistory[3]) + assert.is(undefined, getHistory[4]) +}) + +suiteCase(`Responder con un "object"`, async ({ database, provider }) => { + const flow = addKeyword(['hola']) + .addAnswer('Como vas?', null, async (_, { flowDynamic }) => { + return flowDynamic([{ body: 'Todo bien!' }]) + }) + .addAnswer('y vos?') + + createBot({ + database, + provider, + flow: createFlow([flow]), + }) + + await provider.delaySendMessage(0, 'message', { + from: '000', + body: 'hola', + }) + + await delay(10) + const getHistory = database.listHistory.map((i) => i.answer) + assert.is('Como vas?', getHistory[0]) + assert.is('Todo bien!', getHistory[1]) + assert.is('y vos?', getHistory[2]) + assert.is(undefined, getHistory[3]) +}) + +suiteCase.run() diff --git a/__test__/0.1.5-case.test.js b/__test__/0.1.5-case.test.js new file mode 100644 index 0000000..f2280bb --- /dev/null +++ b/__test__/0.1.5-case.test.js @@ -0,0 +1,167 @@ +const { suite } = require('uvu') +const assert = require('uvu/assert') +const { addKeyword, createBot, createFlow } = require('../packages/bot/index') +const { setup, clear, delay } = require('../__mocks__/env') + +const fakeHTTP = async (fakeData = []) => { + await delay(50) + const data = fakeData.map((u) => ({ body: `${u}` })) + return Promise.resolve(data) +} + +const suiteCase = suite('Flujo: endFlow') + +suiteCase.before.each(setup) +suiteCase.after.each(clear) + +suiteCase(`Detener el flujo`, async ({ database, provider }) => { + const MOCK_VALUES = [ + 'Bienvenido te envio muchas marcas', + 'Seleccione marca del auto a cotizar, con el *número* correspondiente', + 'Seleccione la sub marca del auto a cotizar, con el *número* correspondiente:', + 'Los precios rondan:', + ] + const flow = addKeyword(['hola']) + .addAnswer(MOCK_VALUES[0], null, async (_, { flowDynamic }) => { + const data = await fakeHTTP(['Ford', 'GM', 'BMW']) + return flowDynamic(data) + }) + .addAnswer(MOCK_VALUES[1], null, async (_, { endFlow }) => { + return endFlow() + }) + .addAnswer(MOCK_VALUES[2]) + .addAnswer(MOCK_VALUES[3], null, async (_, { flowDynamic }) => { + const data = await fakeHTTP(['1000', '2000', '3000']) + return flowDynamic(data) + }) + + createBot({ + database, + provider, + flow: createFlow([flow]), + }) + + await provider.delaySendMessage(0, 'message', { + from: '000', + body: 'hola', + }) + + await delay(500) + const getHistory = database.listHistory.map((i) => i.answer) + assert.is(MOCK_VALUES[0], getHistory[0]) + + //FlowDynamic + assert.is('Ford', getHistory[1]) + assert.is('GM', getHistory[2]) + assert.is('BMW', getHistory[3]) + + assert.is(MOCK_VALUES[1], getHistory[4]) + + //FlowDynamic + assert.is(undefined, getHistory[5]) + assert.is(undefined, getHistory[6]) +}) + +suiteCase(`Detener el flujo flowDynamic`, async ({ database, provider }) => { + const flow = addKeyword(['hola']) + .addAnswer('Buenas!', null, async (_, { endFlow, flowDynamic }) => { + await flowDynamic('Continuamos...') + return endFlow() + }) + .addAnswer('Como estas!') + + createBot({ + database, + provider, + flow: createFlow([flow]), + }) + + await provider.delaySendMessage(0, 'message', { + from: '000', + body: 'hola', + }) + + await delay(10) + const getHistory = database.listHistory.map((i) => i.answer) + assert.is('Buenas!', getHistory[0]) + assert.is('Continuamos...', getHistory[1]) + assert.is(undefined, getHistory[2]) +}) + +suiteCase(`flowDynamic con capture`, async ({ database, provider }) => { + const MOCK_VALUES = ['¿CUal es tu email?', 'Continuamos....', '¿Cual es tu edad?'] + + const flow = addKeyword(['hola']) + .addAnswer( + MOCK_VALUES[0], + { + capture: true, + }, + async (ctx, { flowDynamic, fallBack }) => { + const validation = ctx.body.includes('@') + + if (validation) { + const getDataFromApi = await fakeHTTP(['Gracias por tu email se ha validado de manera correcta']) + return flowDynamic(getDataFromApi) + } + return fallBack() + } + ) + .addAnswer(MOCK_VALUES[1]) + .addAnswer(MOCK_VALUES[2], { capture: true }, async (ctx, { flowDynamic, fallBack }) => { + if (ctx.body !== '18') { + await delay(20) + return fallBack('Ups creo que no eres mayor de edad') + } + return flowDynamic('Bien tu edad es correcta!') + }) + .addAnswer('Puedes pasar') + + createBot({ + database, + provider, + flow: createFlow([flow]), + }) + + await provider.delaySendMessage(0, 'message', { + from: '000', + body: 'hola', + }) + + await provider.delaySendMessage(10, 'message', { + from: '000', + body: 'this is not email value', + }) + + await provider.delaySendMessage(20, 'message', { + from: '000', + body: 'test@test.com', + }) + + await provider.delaySendMessage(90, 'message', { + from: '000', + body: '20', + }) + + await provider.delaySendMessage(200, 'message', { + from: '000', + body: '18', + }) + + await delay(500) + const getHistory = database.listHistory.map((i) => i.answer) + assert.is(MOCK_VALUES[0], getHistory[0]) + assert.is('this is not email value', getHistory[1]) + assert.is(MOCK_VALUES[0], getHistory[2]) + assert.is('test@test.com', getHistory[3]) + assert.is('Gracias por tu email se ha validado de manera correcta', getHistory[4]) + assert.is(MOCK_VALUES[1], getHistory[5]) + assert.is(MOCK_VALUES[2], getHistory[6]) + assert.is('20', getHistory[7]) + assert.is('Ups creo que no eres mayor de edad', getHistory[8]) + assert.is('18', getHistory[9]) + assert.is('Bien tu edad es correcta!', getHistory[10]) + assert.is('Puedes pasar', getHistory[11]) +}) + +suiteCase.run() diff --git a/__test__/0.1.6-case.test.js b/__test__/0.1.6-case.test.js new file mode 100644 index 0000000..4a56dd0 --- /dev/null +++ b/__test__/0.1.6-case.test.js @@ -0,0 +1,97 @@ +const { suite } = require('uvu') +const assert = require('uvu/assert') +const { addKeyword, createBot, createFlow } = require('../packages/bot/index') +const { setup, clear, delay } = require('../__mocks__/env') + +const suiteCase = suite('Flujo: manejo de estado') + +suiteCase.before.each(setup) +suiteCase.after.each(clear) + +suiteCase(`Debe retornar un mensaje resumen`, async ({ database, provider }) => { + let STATE_APP = {} + const MOCK_VALUES = ['¿Cual es tu nombre?', '¿Cual es tu edad?', 'Tu datos son:'] + + const flujoPrincipal = addKeyword(['hola']) + .addAnswer( + MOCK_VALUES[0], + { + capture: true, + }, + async (ctx, { flowDynamic }) => { + STATE_APP[ctx.from] = { ...STATE_APP[ctx.from], name: ctx.body } + + flowDynamic('Gracias por tu nombre!') + } + ) + .addAnswer( + MOCK_VALUES[1], + { + capture: true, + }, + async (ctx, { flowDynamic }) => { + STATE_APP[ctx.from] = { ...STATE_APP[ctx.from], age: ctx.body } + + await flowDynamic(`Gracias por tu edad! ${STATE_APP[ctx.from].name}`) + } + ) + .addAnswer(MOCK_VALUES[2], null, async (ctx, { flowDynamic }) => { + flowDynamic(`Nombre: ${STATE_APP[ctx.from].name} Edad: ${STATE_APP[ctx.from].age}`) + }) + .addAnswer('🤖🤖 Gracias por tu participacion') + + createBot({ + database, + flow: createFlow([flujoPrincipal]), + provider, + }) + + await provider.delaySendMessage(0, 'message', { + from: '000', + body: 'hola', + }) + + await provider.delaySendMessage(5, 'message', { + from: '001', + body: 'hola', + }) + + await provider.delaySendMessage(10, 'message', { + from: '000', + body: 'Leifer', + }) + + await provider.delaySendMessage(15, 'message', { + from: '000', + body: '90', + }) + + await provider.delaySendMessage(20, 'message', { + from: '001', + body: 'Maria', + }) + + await provider.delaySendMessage(25, 'message', { + from: '001', + body: '100', + }) + + await delay(500) + const getHistory = database.listHistory.map((i) => i.answer) + assert.is(MOCK_VALUES[0], getHistory[0]) + assert.is('¿Cual es tu nombre?', getHistory[1]) + assert.is('Leifer', getHistory[2]) + assert.is('Gracias por tu nombre!', getHistory[3]) + assert.is('¿Cual es tu edad?', getHistory[4]) + assert.is('90', getHistory[5]) + assert.is('Gracias por tu edad! Leifer', getHistory[6]) + assert.is('Tu datos son:', getHistory[7]) + assert.is('Nombre: Leifer Edad: 90', getHistory[8]) + assert.is('🤖🤖 Gracias por tu participacion', getHistory[9]) + assert.is('Maria', getHistory[10]) + assert.is('Gracias por tu nombre!', getHistory[11]) + assert.is('100', getHistory[12]) + assert.is(undefined, getHistory[13]) +}) + +suiteCase.run() diff --git a/__test__/01-case.test.js b/__test__/01-case.test.js deleted file mode 100644 index bce4a42..0000000 --- a/__test__/01-case.test.js +++ /dev/null @@ -1,41 +0,0 @@ -const { test } = require('uvu') -const assert = require('uvu/assert') -const MOCK_DB = require('../packages/database/src/mock') -const PROVIDER_DB = require('../packages/provider/src/mock') -const { - addKeyword, - createBot, - createFlow, - createProvider, -} = require('../packages/bot') - -test(`[Caso - 01] Flow Basico`, async () => { - const [VALUE_A, VALUE_B] = ['hola', 'buenas'] - - const flow = addKeyword(VALUE_A).addAnswer(VALUE_B) - const provider = createProvider(PROVIDER_DB) - const database = new MOCK_DB() - - createBot({ - database, - flow: createFlow([flow]), - provider, - }) - - provider.delaySendMessage(100, 'message', { - from: '000', - body: VALUE_A, - }) - - await delay(100) - - const prevMsg = database.getPrevByNumber('000') - - assert.is(prevMsg.answer, VALUE_B) -}) - -test.run() - -function delay(ms) { - return new Promise((res) => setTimeout(res, ms)) -} diff --git a/__test__/02-case.test.js b/__test__/02-case.test.js deleted file mode 100644 index a2a93ec..0000000 --- a/__test__/02-case.test.js +++ /dev/null @@ -1,99 +0,0 @@ -const { test } = require('uvu') -const assert = require('uvu/assert') -const MOCK_DB = require('../packages/database/src/mock') -const PROVIDER_DB = require('../packages/provider/src/mock') -const { - addKeyword, - createBot, - createFlow, - createProvider, -} = require('../packages/bot/index') - -/** - * Falsear peticion async - * @param {*} fakeData - * @returns - */ -const fakeHTTP = async (fakeData = []) => { - console.log('⚡ Server request!') - await delay(50) - console.log('⚡ Server return!') - const data = fakeData.map((u, i) => ({ body: `${i + 1} ${u}` })) - console.log(data) - return Promise.resolve(data) -} - -test(`[Caso - 02] Flow (flowDynamic)`, async () => { - const MOCK_VALUES = [ - 'Bienvenido te envio muchas marcas (5510)', - 'Seleccione marca del auto a cotizar, con el *número* correspondiente', - 'Seleccione la sub marca del auto a cotizar, con el *número* correspondiente:', - 'Los precios rondan:', - ] - const provider = createProvider(PROVIDER_DB) - const database = new MOCK_DB() - - const flujoPrincipal = addKeyword(['hola']) - .addAnswer(MOCK_VALUES[0], null, async (ctx, { flowDynamic }) => { - console.log('execute...') - const data = await fakeHTTP(['Ford', 'GM', 'BMW']) - return flowDynamic(data) - }) - .addAnswer(MOCK_VALUES[1], null, async (ctx, { flowDynamic }) => { - const data = await fakeHTTP(['Ranger', 'Explorer']) - return flowDynamic(data) - }) - .addAnswer(MOCK_VALUES[2], null, async (ctx, { flowDynamic }) => { - const data = await fakeHTTP(['Usado', 'Nuevos']) - return flowDynamic(data) - }) - .addAnswer(MOCK_VALUES[3], null, async (ctx, { flowDynamic }) => { - const data = await fakeHTTP(['1000', '2000', '3000']) - return flowDynamic(data) - }) - - createBot({ - database, - flow: createFlow([flujoPrincipal]), - provider, - }) - - provider.delaySendMessage(0, 'message', { - from: '000', - body: 'hola', - }) - - await delay(1200) - const getHistory = database.listHistory.map((i) => i.answer) - assert.is(MOCK_VALUES[0], getHistory[0]) - - //FlowDynamic - assert.is('1 Ford', getHistory[1]) - assert.is('2 GM', getHistory[2]) - assert.is('3 BMW', getHistory[3]) - - assert.is(MOCK_VALUES[1], getHistory[4]) - - //FlowDynamic - assert.is('1 Ranger', getHistory[5]) - assert.is('2 Explorer', getHistory[6]) - - assert.is(MOCK_VALUES[2], getHistory[7]) - - //FlowDynamic - assert.is('1 Usado', getHistory[8]) - assert.is('2 Nuevos', getHistory[9]) - - assert.is(MOCK_VALUES[3], getHistory[10]) - - //FlowDynamic - assert.is('1 1000', getHistory[11]) - assert.is('2 2000', getHistory[12]) - assert.is('3 3000', getHistory[13]) -}) - -test.run() - -function delay(ms) { - return new Promise((res) => setTimeout(res, ms)) -} diff --git a/__test__/03-case.test.js b/__test__/03-case.test.js deleted file mode 100644 index 45c399a..0000000 --- a/__test__/03-case.test.js +++ /dev/null @@ -1,44 +0,0 @@ -const { test } = require('uvu') -const assert = require('uvu/assert') -const MOCK_DB = require('../packages/database/src/mock') -const PROVIDER_DB = require('../packages/provider/src/mock') -const { - addKeyword, - createBot, - createFlow, - createProvider, -} = require('../packages/bot/index') - -test(`[Caso - 03] Flow puro`, async () => { - const MOCK_VALUES = ['Bienvenido a mi tienda', 'Como estas?'] - - const provider = createProvider(PROVIDER_DB) - const database = new MOCK_DB() - - const flujoPrincipal = addKeyword(['hola']) - .addAnswer(MOCK_VALUES[0]) - .addAnswer(MOCK_VALUES[1]) - - createBot({ - database, - flow: createFlow([flujoPrincipal]), - provider, - }) - - provider.delaySendMessage(0, 'message', { - from: '000', - body: 'hola', - }) - - await delay(10) - const getHistory = database.listHistory.map((i) => i.answer) - - assert.is(MOCK_VALUES[0], getHistory[0]) - assert.is(MOCK_VALUES[1], getHistory[1]) -}) - -test.run() - -function delay(ms) { - return new Promise((res) => setTimeout(res, ms)) -} diff --git a/__test__/04-case.test.js b/__test__/04-case.test.js deleted file mode 100644 index 2291a0c..0000000 --- a/__test__/04-case.test.js +++ /dev/null @@ -1,82 +0,0 @@ -const { test } = require('uvu') -const assert = require('uvu/assert') -const MOCK_DB = require('../packages/database/src/mock') -const PROVIDER_DB = require('../packages/provider/src/mock') -const { - addKeyword, - createBot, - createFlow, - createProvider, -} = require('../packages/bot/index') - -/** - * Falsear peticion async - * @param {*} fakeData - * @returns - */ -const fakeHTTP = async (fakeData = []) => { - console.log('⚡ Server request!') - await delay(50) - console.log('⚡ Server return!') - const data = fakeData.map((u, i) => ({ body: `${i + 1} ${u}` })) - console.log(data) - return Promise.resolve(data) -} - -test(`[Caso - 04] Romper flujo (endFlow)`, async () => { - const MOCK_VALUES = [ - 'Bienvenido te envio muchas marcas (5510)', - 'Seleccione marca del auto a cotizar, con el *número* correspondiente', - 'Seleccione la sub marca del auto a cotizar, con el *número* correspondiente:', - 'Los precios rondan:', - ] - const provider = createProvider(PROVIDER_DB) - const database = new MOCK_DB() - - const flujoPrincipal = addKeyword(['hola']) - .addAnswer(MOCK_VALUES[0], null, async (ctx, { flowDynamic }) => { - console.log('execute...') - const data = await fakeHTTP(['Ford', 'GM', 'BMW']) - return flowDynamic(data) - }) - .addAnswer(MOCK_VALUES[1], null, async (ctx, { endFlow }) => { - return endFlow() - }) - .addAnswer(MOCK_VALUES[2], null, async (ctx, { flowDynamic }) => { - const data = await fakeHTTP(['Usado', 'Nuevos']) - return flowDynamic(data) - }) - .addAnswer(MOCK_VALUES[3], null, async (ctx, { flowDynamic }) => { - const data = await fakeHTTP(['1000', '2000', '3000']) - return flowDynamic(data) - }) - - createBot({ - database, - flow: createFlow([flujoPrincipal]), - provider, - }) - - provider.delaySendMessage(0, 'message', { - from: '000', - body: 'hola', - }) - - await delay(1200) - const getHistory = database.listHistory.map((i) => i.answer) - assert.is(MOCK_VALUES[0], getHistory[0]) - - //FlowDynamic - assert.is('1 Ford', getHistory[1]) - assert.is('2 GM', getHistory[2]) - assert.is('3 BMW', getHistory[3]) - - assert.is(MOCK_VALUES[1], getHistory[4]) - assert.is(undefined, getHistory[5]) -}) - -test.run() - -function delay(ms) { - return new Promise((res) => setTimeout(res, ms)) -} diff --git a/changelog.config.js b/changelog.config.js index 70a500d..38c6f74 100644 --- a/changelog.config.js +++ b/changelog.config.js @@ -1,28 +1,10 @@ module.exports = { disableEmoji: false, format: '{type}{scope}: {emoji}{subject}', - list: [ - 'test', - 'feat', - 'fix', - 'chore', - 'docs', - 'refactor', - 'style', - 'ci', - 'perf', - ], + list: ['test', 'feat', 'fix', 'chore', 'docs', 'refactor', 'style', 'ci', 'perf'], maxMessageLength: 64, minMessageLength: 3, - questions: [ - 'type', - 'scope', - 'subject', - 'body', - 'breaking', - 'issues', - 'lerna', - ], + questions: ['type', 'scope', 'subject', 'body', 'breaking', 'issues', 'lerna'], scopes: [], types: { chore: { @@ -56,8 +38,7 @@ module.exports = { value: 'perf', }, refactor: { - description: - 'A code change that neither fixes a bug or adds a feature', + description: 'A code change that neither fixes a bug or adds a feature', emoji: '(💡)', value: 'refactor', }, @@ -67,8 +48,7 @@ module.exports = { value: 'release', }, style: { - description: - 'Markup, white-space, formatting, missing semi-colons...', + description: 'Markup, white-space, formatting, missing semi-colons...', emoji: '(💄)', value: 'style', }, @@ -80,8 +60,7 @@ module.exports = { messages: { type: "Select the type of change that you're committing:", customScope: 'Select the scope this component affects:', - subject: - 'Write a short, imperative mood description of the change:\n', + subject: 'Write a short, imperative mood description of the change:\n', body: 'Provide a longer description of the change:\n ', breaking: 'List any breaking changes:\n', footer: 'Issues this commit closes, e.g #123:', diff --git a/package.json b/package.json index fda898a..cc0b21a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/root", - "version": "0.1.18", + "version": "0.1.20", "description": "Bot de wahtsapp open source para MVP o pequeños negocios", "main": "app.js", "private": true, @@ -81,6 +81,7 @@ "fs-extra": "^11.1.0", "git-cz": "^4.9.0", "husky": "^8.0.2", + "mime-types": "^2.1.35", "only-allow": "^1.1.1", "prettier": "^2.8.0", "pretty-quick": "^3.1.3", diff --git a/packages/bot/core/core.class.js b/packages/bot/core/core.class.js index f7051b3..3c2b752 100644 --- a/packages/bot/core/core.class.js +++ b/packages/bot/core/core.class.js @@ -43,8 +43,7 @@ class CoreClass { }, { event: 'require_action', - func: ({ instructions, title = '⚡⚡ ACCIÓN REQUERIDA ⚡⚡' }) => - printer(instructions, title), + func: ({ instructions, title = '⚡⚡ ACCIÓN REQUERIDA ⚡⚡' }) => printer(instructions, title), }, { event: 'ready', @@ -52,8 +51,7 @@ class CoreClass { }, { event: 'auth_failure', - func: ({ instructions }) => - printer(instructions, '⚡⚡ ERROR AUTH ⚡⚡'), + func: ({ instructions }) => printer(instructions, '⚡⚡ ERROR AUTH ⚡⚡'), }, { @@ -71,16 +69,14 @@ class CoreClass { logger.log(`[handleMsg]: `, messageCtxInComming) const { body, from } = messageCtxInComming let msgToSend = [] - let fallBackFlag = false let endFlowFlag = false + let fallBackFlag = false if (this.generalArgs.blackList.includes(from)) return if (!body) return if (!body.length) return let prevMsg = await this.databaseClass.getPrevByNumber(from) - const refToContinue = this.flowClass.findBySerialize( - prevMsg?.refSerialize - ) + const refToContinue = this.flowClass.findBySerialize(prevMsg?.refSerialize) if (prevMsg?.ref) { const ctxByNumber = toCtx({ @@ -91,6 +87,22 @@ class CoreClass { this.databaseClass.save(ctxByNumber) } + // 📄 Crar CTX de mensaje (uso private) + const createCtxMessage = (payload = {}, index = 0) => { + const body = typeof payload === 'string' ? payload : payload?.body ?? payload?.answer + const media = payload?.media ?? null + const buttons = payload?.buttons ?? [] + const capture = payload?.capture ?? false + + return toCtx({ + body, + from, + keyword: null, + index, + options: { media, buttons, capture }, + }) + } + // 📄 Limpiar cola de procesos const clearQueue = () => { QueuePrincipal.pendingPromise = false @@ -98,94 +110,122 @@ class CoreClass { } // 📄 Finalizar flujo - const endFlow = async () => { - prevMsg = null - endFlowFlag = true - clearQueue() - return - } + const endFlow = + (flag) => + async (message = null) => { + flag.endFlow = true + endFlowFlag = true + if (message) this.sendProviderAndSave(from, createCtxMessage(message)) + clearQueue() + sendFlow([]) + return + } // 📄 Esta funcion se encarga de enviar un array de mensajes dentro de este ctx - const sendFlow = async (messageToSend, numberOrId) => { - // [1 Paso] esto esta bien! + const sendFlow = async (messageToSend, numberOrId, options = { prev: prevMsg }) => { + if (options.prev?.options?.capture) await cbEveryCtx(options.prev?.ref) - if (prevMsg?.options?.capture) await cbEveryCtx(prevMsg?.ref) const queue = [] for (const ctxMessage of messageToSend) { if (endFlowFlag) return const delayMs = ctxMessage?.options?.delay || 0 if (delayMs) await delay(delayMs) - QueuePrincipal.enqueue(() => - Promise.all([ - this.sendProviderAndSave(numberOrId, ctxMessage).then( - () => resolveCbEveryCtx(ctxMessage) - ), - ]) + await QueuePrincipal.enqueue(() => + this.sendProviderAndSave(numberOrId, ctxMessage).then(() => resolveCbEveryCtx(ctxMessage)) ) } return Promise.all(queue) } - // 📄 [options: fallBack]: esta funcion se encarga de repetir el ultimo mensaje - const fallBack = async () => { - fallBackFlag = true - await this.sendProviderAndSave(from, refToContinue) - QueuePrincipal.queue = [] - return refToContinue + const continueFlow = async () => { + const currentPrev = await this.databaseClass.getPrevByNumber(from) + const nextFlow = (await this.flowClass.find(refToContinue?.ref, true)) ?? [] + const filterNextFlow = nextFlow.filter((msg) => msg.refSerialize !== currentPrev?.refSerialize) + const isContinueFlow = filterNextFlow.map((i) => i.keyword).includes(currentPrev?.ref) + + if (!isContinueFlow) { + const refToContinueChild = this.flowClass.getRefToContinueChild(currentPrev?.keyword) + const flowStandaloneChild = this.flowClass.getFlowsChild() + const nextChildMessages = + (await this.flowClass.find(refToContinueChild?.ref, true, flowStandaloneChild)) || [] + if (nextChildMessages?.length) return await sendFlow(nextChildMessages, from, { prev: undefined }) + } + + if (!isContinueFlow) { + await sendFlow(filterNextFlow, from, { prev: undefined }) + return + } } + // 📄 [options: fallBack]: esta funcion se encarga de repetir el ultimo mensaje + const fallBack = + (flag) => + async (message = null) => { + QueuePrincipal.queue = [] + flag.fallBack = true + await this.sendProviderAndSave(from, { + ...prevMsg, + answer: typeof message === 'string' ? message : message?.body ?? prevMsg.answer, + options: { + ...prevMsg.options, + buttons: prevMsg.options?.buttons, + }, + }) + return + } // 📄 [options: flowDynamic]: esta funcion se encarga de responder un array de respuesta esta limitado a 5 mensajes // para evitar bloque de whatsapp - const flowDynamic = async ( - listMsg = [], - optListMsg = { limit: 5, fallback: false } - ) => { - if (!Array.isArray(listMsg)) - throw new Error('Esto debe ser un ARRAY') + const flowDynamic = + (flag) => + async (listMsg = []) => { + flag.flowDynamic = true + if (!Array.isArray(listMsg)) listMsg = [listMsg] - fallBackFlag = optListMsg.fallback - const parseListMsg = listMsg - .map((opt, index) => { - const body = typeof opt === 'string' ? opt : opt.body - const media = opt?.media ?? null - const buttons = opt?.buttons ?? [] + const parseListMsg = listMsg.map((opt, index) => createCtxMessage(opt, index)) - return toCtx({ - body, - from, - keyword: null, - index, - options: { media, buttons }, - }) - }) - .slice(0, optListMsg.limit) - - if (endFlowFlag) return - for (const msg of parseListMsg) { - await this.sendProviderAndSave(from, msg) + if (endFlowFlag) return + for (const msg of parseListMsg) { + await this.sendProviderAndSave(from, msg) + } + await continueFlow() + return } - return - } // 📄 Se encarga de revisar si el contexto del mensaje tiene callback o fallback const resolveCbEveryCtx = async (ctxMessage) => { - if (!ctxMessage?.options?.capture) - return await cbEveryCtx(ctxMessage?.ref) + if (!ctxMessage?.options?.capture) return await cbEveryCtx(ctxMessage?.ref) } // 📄 Se encarga de revisar si el contexto del mensaje tiene callback y ejecutarlo const cbEveryCtx = async (inRef) => { + let flags = { + endFlow: false, + fallBack: false, + flowDynamic: false, + wait: true, + } + + const provider = this.providerClass + if (!this.flowClass.allCallbacks[inRef]) return Promise.resolve() - return this.flowClass.allCallbacks[inRef](messageCtxInComming, { - fallBack, - flowDynamic, - endFlow, - }) + + const argsCb = { + provider, + fallBack: fallBack(flags), + flowDynamic: flowDynamic(flags), + endFlow: endFlow(flags), + } + + await this.flowClass.allCallbacks[inRef](messageCtxInComming, argsCb) + const wait = !(!flags.endFlow && !flags.fallBack && !flags.flowDynamic) + if (!wait) await continueFlow() + + return } // 📄🤘(tiene return) [options: nested(array)]: Si se tiene flujos hijos los implementa - if (!fallBackFlag && prevMsg?.options?.nested?.length) { + if (!endFlowFlag && prevMsg?.options?.nested?.length) { const nestedRef = prevMsg.options.nested const flowStandalone = nestedRef.map((f) => ({ ...nestedRef.find((r) => r.refSerialize === f.refSerialize), @@ -193,18 +233,17 @@ class CoreClass { msgToSend = this.flowClass.find(body, false, flowStandalone) || [] - sendFlow(msgToSend, from) + await sendFlow(msgToSend, from) return } - // 📄🤘(tiene return) [options: capture (boolean)]: Si se tiene option boolean - if (!fallBackFlag && !prevMsg?.options?.nested?.length) { + // 📄🤘(tiene return) Si el mensaje previo implementa capture + if (!endFlowFlag && !prevMsg?.options?.nested?.length) { const typeCapture = typeof prevMsg?.options?.capture - const valueCapture = prevMsg?.options?.capture - if (['string', 'boolean'].includes(typeCapture) && valueCapture) { + if (typeCapture === 'boolean' && fallBackFlag) { msgToSend = this.flowClass.find(refToContinue?.ref, true) || [] - sendFlow(msgToSend, from) + await sendFlow(msgToSend, from) return } } @@ -219,15 +258,15 @@ class CoreClass { * @param {*} ctxMessage ver más en GLOSSARY.md * @returns */ - sendProviderAndSave = (numberOrId, ctxMessage) => { + sendProviderAndSave = async (numberOrId, ctxMessage) => { const { answer } = ctxMessage - return Promise.all([ - this.providerClass.sendMessage(numberOrId, answer, ctxMessage), - this.databaseClass.save({ ...ctxMessage, from: numberOrId }), - ]) + await this.providerClass.sendMessage(numberOrId, answer, ctxMessage) + await this.databaseClass.save({ ...ctxMessage, from: numberOrId }) + return } /** + * @deprecated * @private * @param {*} message * @param {*} ref @@ -253,9 +292,7 @@ class CoreClass { for (const ctxMessage of messageToSend) { const delayMs = ctxMessage?.options?.delay || 0 if (delayMs) await delay(delayMs) - QueuePrincipal.enqueue(() => - this.sendProviderAndSave(numberOrId, ctxMessage) - ) + QueuePrincipal.enqueue(() => this.sendProviderAndSave(numberOrId, ctxMessage)) } return Promise.all(queue) } diff --git a/packages/bot/index.js b/packages/bot/index.js index ac96063..fe03d60 100644 --- a/packages/bot/index.js +++ b/packages/bot/index.js @@ -8,8 +8,7 @@ const { addKeyword, addAnswer, addChild, toSerialize } = require('./io/methods') * @param {*} args * @returns */ -const createBot = async ({ flow, database, provider }, args = {}) => - new CoreClass(flow, database, provider, args) +const createBot = async ({ flow, database, provider }, args = {}) => new CoreClass(flow, database, provider, args) /** * Crear instancia de clase Io (Flow) @@ -29,8 +28,7 @@ const createFlow = (args) => { */ const createProvider = (providerClass = class {}, args = null) => { const providerInstance = new providerClass(args) - if (!providerClass.prototype instanceof ProviderClass) - throw new Error('El provider no implementa ProviderClass') + if (!providerClass.prototype instanceof ProviderClass) throw new Error('El provider no implementa ProviderClass') return providerInstance } diff --git a/packages/bot/io/flow.class.js b/packages/bot/io/flow.class.js index 458c423..4e9932d 100644 --- a/packages/bot/io/flow.class.js +++ b/packages/bot/io/flow.class.js @@ -25,9 +25,9 @@ class FlowClass { let refSymbol = null overFlow = overFlow ?? this.flowSerialize - /** Retornar expresion regular para buscar coincidencia */ - const mapSensitive = (str, flag = false) => { - const regexSensitive = flag ? 'g' : 'i' + const mapSensitive = (str, mapOptions = { sensitive: false, regex: false }) => { + if (mapOptions.regex) return new RegExp(str) + const regexSensitive = mapOptions.sensitive ? 'g' : 'i' if (Array.isArray(str)) { return new RegExp(str.join('|'), regexSensitive) } @@ -35,9 +35,7 @@ class FlowClass { } const findIn = (keyOrWord, symbol = false, flow = overFlow) => { - const sensitive = refSymbol?.options?.sensitive || false capture = refSymbol?.options?.capture || false - if (capture) return messages if (symbol) { @@ -46,7 +44,9 @@ class FlowClass { if (refSymbol?.ref) findIn(refSymbol.ref, true) } else { refSymbol = flow.find((c) => { - return mapSensitive(c.keyword, sensitive).test(keyOrWord) + const sensitive = c?.options?.sensitive || false + const regex = c?.options?.regex || false + return mapSensitive(c.keyword, { sensitive, regex }).test(keyOrWord) }) if (refSymbol?.ref) findIn(refSymbol.ref, true) return messages @@ -56,10 +56,40 @@ class FlowClass { return messages } - findBySerialize = (refSerialize) => - this.flowSerialize.find((r) => r.refSerialize === refSerialize) + findBySerialize = (refSerialize) => this.flowSerialize.find((r) => r.refSerialize === refSerialize) findIndexByRef = (ref) => this.flowSerialize.findIndex((r) => r.ref === ref) + + getRefToContinueChild = (keyword) => { + try { + const flowChilds = this.flowSerialize + .reduce((acc, cur) => { + const merge = [...acc, cur?.options?.nested].flat(2) + return merge + }, []) + .filter((i) => !!i && i?.refSerialize === keyword) + .shift() + + return flowChilds + } catch (e) { + return undefined + } + } + + getFlowsChild = () => { + try { + const flowChilds = this.flowSerialize + .reduce((acc, cur) => { + const merge = [...acc, cur?.options?.nested].flat(2) + return merge + }, []) + .filter((i) => !!i) + + return flowChilds + } catch (e) { + return [] + } + } } module.exports = FlowClass diff --git a/packages/bot/io/methods/addAnswer.js b/packages/bot/io/methods/addAnswer.js index f0ccdad..5236c14 100644 --- a/packages/bot/io/methods/addAnswer.js +++ b/packages/bot/io/methods/addAnswer.js @@ -17,15 +17,10 @@ const addAnswer = * @returns */ const getAnswerOptions = () => ({ - media: - typeof options?.media === 'string' ? `${options?.media}` : null, + media: typeof options?.media === 'string' ? `${options?.media}` : null, buttons: Array.isArray(options?.buttons) ? options.buttons : [], - capture: - typeof options?.capture === 'boolean' - ? options?.capture - : false, - child: - typeof options?.child === 'string' ? `${options?.child}` : null, + capture: typeof options?.capture === 'boolean' ? options?.capture : false, + child: typeof options?.child === 'string' ? `${options?.child}` : null, delay: typeof options?.delay === 'number' ? options?.delay : 0, }) @@ -49,8 +44,7 @@ const addAnswer = * Esta funcion aplana y busca los callback anidados de los hijos * @returns */ - const getCbFromNested = () => - flatObject(Array.isArray(nested) ? nested : [nested]) + const getCbFromNested = () => flatObject(Array.isArray(nested) ? nested : [nested]) const callback = typeof cb === 'function' ? cb : () => null diff --git a/packages/bot/io/methods/addKeyword.js b/packages/bot/io/methods/addKeyword.js index e17f9be..50a5c0c 100644 --- a/packages/bot/io/methods/addKeyword.js +++ b/packages/bot/io/methods/addKeyword.js @@ -8,12 +8,14 @@ const { toJson } = require('./toJson') * @param {*} options {sensitive:boolean} default false */ const addKeyword = (keyword, options) => { + if (typeof keyword !== 'string' && !Array.isArray(keyword)) { + throw new Error('DEBE_SER_STRING_ARRAY_REGEX') + } + const parseOptions = () => { const defaultProperties = { - sensitive: - typeof options?.sensitive === 'boolean' - ? options?.sensitive - : false, + sensitive: typeof options?.sensitive === 'boolean' ? options?.sensitive : false, + regex: typeof options?.regex === 'boolean' ? options?.regex : false, } return defaultProperties diff --git a/packages/bot/package.json b/packages/bot/package.json index fe542c1..053a85d 100644 --- a/packages/bot/package.json +++ b/packages/bot/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/bot", - "version": "0.0.73-alpha.0", + "version": "0.0.100-alpha.0", "description": "", "main": "./lib/bundle.bot.cjs", "scripts": { diff --git a/packages/bot/provider/provider.class.js b/packages/bot/provider/provider.class.js index 212f042..fde8221 100644 --- a/packages/bot/provider/provider.class.js +++ b/packages/bot/provider/provider.class.js @@ -20,10 +20,11 @@ class ProviderClass extends EventEmitter { */ sendMessage = async (userId, message) => { - if (NODE_ENV !== 'production') - console.log('[sendMessage]', { userId, message }) + if (NODE_ENV !== 'production') console.log('[sendMessage]', { userId, message }) return message } + + getInstance = () => this.vendor } module.exports = ProviderClass diff --git a/packages/bot/tests/bot.class.test.js b/packages/bot/tests/bot.class.test.js index d74fdad..d94127c 100644 --- a/packages/bot/tests/bot.class.test.js +++ b/packages/bot/tests/bot.class.test.js @@ -2,13 +2,7 @@ const { test } = require('uvu') const assert = require('uvu/assert') const FlowClass = require('../io/flow.class') const MockProvider = require('../../../__mocks__/mock.provider') -const { - createBot, - CoreClass, - createFlow, - createProvider, - ProviderClass, -} = require('../index') +const { createBot, CoreClass, createFlow, createProvider, ProviderClass } = require('../index') class MockFlow { allCallbacks = { ref: () => 1 } @@ -23,6 +17,8 @@ class MockFlow { } findBySerialize = () => ({}) findIndexByRef = () => 0 + getRefToContinueChild = () => ({}) + getFlowsChild = () => [] } class MockDBA { @@ -100,20 +96,13 @@ test(`[Bot] Eventos 'require_action,ready,auth_failure,message '`, async () => { await createBot(setting) /// Escuchamos eventos - mockProvider.on( - 'require_action', - (r) => (responseEvents['require_action'] = r) - ) + mockProvider.on('require_action', (r) => (responseEvents['require_action'] = r)) mockProvider.on('ready', (r) => (responseEvents['ready'] = r)) mockProvider.on('auth_failure', (r) => (responseEvents['auth_failure'] = r)) mockProvider.on('message', (r) => (responseEvents['message'] = r)) /// Emitimos eventos - mockProvider.delaySendMessage( - 0, - 'require_action', - MOCK_EVENTS.require_action - ) + mockProvider.delaySendMessage(0, 'require_action', MOCK_EVENTS.require_action) mockProvider.delaySendMessage(0, 'ready', MOCK_EVENTS.ready) mockProvider.delaySendMessage(0, 'auth_failure', MOCK_EVENTS.auth_failure) mockProvider.delaySendMessage(0, 'message', MOCK_EVENTS.message) @@ -121,21 +110,12 @@ test(`[Bot] Eventos 'require_action,ready,auth_failure,message '`, async () => { await delay(0) /// Testeamos eventos - assert.is( - JSON.stringify(responseEvents.require_action), - JSON.stringify(MOCK_EVENTS.require_action) - ) + assert.is(JSON.stringify(responseEvents.require_action), JSON.stringify(MOCK_EVENTS.require_action)) assert.is(responseEvents.ready, MOCK_EVENTS.ready) - assert.is( - JSON.stringify(responseEvents.auth_failure), - JSON.stringify(MOCK_EVENTS.auth_failure) - ) + assert.is(JSON.stringify(responseEvents.auth_failure), JSON.stringify(MOCK_EVENTS.auth_failure)) - assert.is( - JSON.stringify(responseEvents.message), - JSON.stringify(MOCK_EVENTS.message) - ) + assert.is(JSON.stringify(responseEvents.message), JSON.stringify(MOCK_EVENTS.message)) }) test(`[Bot] Probando Flujos Internos`, async () => { @@ -166,20 +146,13 @@ test(`[Bot] Probando Flujos Internos`, async () => { await createBot(setting) /// Escuchamos eventos - mockProvider.on( - 'require_action', - (r) => (responseEvents['require_action'] = r) - ) + mockProvider.on('require_action', (r) => (responseEvents['require_action'] = r)) mockProvider.on('ready', (r) => (responseEvents['ready'] = r)) mockProvider.on('auth_failure', (r) => (responseEvents['auth_failure'] = r)) mockProvider.on('message', (r) => (responseEvents['message'] = r)) /// Emitimos eventos - mockProvider.delaySendMessage( - 0, - 'require_action', - MOCK_EVENTS.require_action - ) + mockProvider.delaySendMessage(0, 'require_action', MOCK_EVENTS.require_action) mockProvider.delaySendMessage(0, 'ready', MOCK_EVENTS.ready) mockProvider.delaySendMessage(0, 'auth_failure', MOCK_EVENTS.auth_failure) mockProvider.delaySendMessage(0, 'message', MOCK_EVENTS.message) @@ -187,21 +160,12 @@ test(`[Bot] Probando Flujos Internos`, async () => { await delay(0) /// Testeamos eventos - assert.is( - JSON.stringify(responseEvents.require_action), - JSON.stringify(MOCK_EVENTS.require_action) - ) + assert.is(JSON.stringify(responseEvents.require_action), JSON.stringify(MOCK_EVENTS.require_action)) assert.is(responseEvents.ready, MOCK_EVENTS.ready) - assert.is( - JSON.stringify(responseEvents.auth_failure), - JSON.stringify(MOCK_EVENTS.auth_failure) - ) + assert.is(JSON.stringify(responseEvents.auth_failure), JSON.stringify(MOCK_EVENTS.auth_failure)) - assert.is( - JSON.stringify(responseEvents.message), - JSON.stringify(MOCK_EVENTS.message) - ) + assert.is(JSON.stringify(responseEvents.message), JSON.stringify(MOCK_EVENTS.message)) }) test(`[Bot] Probando Flujos Nested`, async () => { @@ -234,20 +198,13 @@ test(`[Bot] Probando Flujos Nested`, async () => { botInstance.sendProviderAndSave('xxxxx', 'xxxxx') botInstance.continue('xxxxx', 'xxxxx') /// Escuchamos eventos - mockProvider.on( - 'require_action', - (r) => (responseEvents['require_action'] = r) - ) + mockProvider.on('require_action', (r) => (responseEvents['require_action'] = r)) mockProvider.on('ready', (r) => (responseEvents['ready'] = r)) mockProvider.on('auth_failure', (r) => (responseEvents['auth_failure'] = r)) mockProvider.on('message', (r) => (responseEvents['message'] = r)) /// Emitimos eventos - mockProvider.delaySendMessage( - 0, - 'require_action', - MOCK_EVENTS.require_action - ) + mockProvider.delaySendMessage(0, 'require_action', MOCK_EVENTS.require_action) mockProvider.delaySendMessage(0, 'ready', MOCK_EVENTS.ready) mockProvider.delaySendMessage(0, 'auth_failure', MOCK_EVENTS.auth_failure) mockProvider.delaySendMessage(0, 'message', MOCK_EVENTS.message) @@ -255,21 +212,12 @@ test(`[Bot] Probando Flujos Nested`, async () => { await delay(0) /// Testeamos eventos - assert.is( - JSON.stringify(responseEvents.require_action), - JSON.stringify(MOCK_EVENTS.require_action) - ) + assert.is(JSON.stringify(responseEvents.require_action), JSON.stringify(MOCK_EVENTS.require_action)) assert.is(responseEvents.ready, MOCK_EVENTS.ready) - assert.is( - JSON.stringify(responseEvents.auth_failure), - JSON.stringify(MOCK_EVENTS.auth_failure) - ) + assert.is(JSON.stringify(responseEvents.auth_failure), JSON.stringify(MOCK_EVENTS.auth_failure)) - assert.is( - JSON.stringify(responseEvents.message), - JSON.stringify(MOCK_EVENTS.message) - ) + assert.is(JSON.stringify(responseEvents.message), JSON.stringify(MOCK_EVENTS.message)) }) test.run() diff --git a/packages/bot/tests/methods.test.js b/packages/bot/tests/methods.test.js index 10b0977..f030731 100644 --- a/packages/bot/tests/methods.test.js +++ b/packages/bot/tests/methods.test.js @@ -35,10 +35,7 @@ test('Debere probar toSerialize', () => { const ARRANGE = { keyword: ['hola!', 'ole'], } - const MAIN_CTX = addKeyword(ARRANGE.keyword) - .addAnswer('Segundo!') - .addAnswer('Segundo!') - .toJson() + const MAIN_CTX = addKeyword(ARRANGE.keyword).addAnswer('Segundo!').addAnswer('Segundo!').toJson() const [ANSWER_A] = MAIN_CTX @@ -71,9 +68,7 @@ test('Debere probar la anidación', () => { answer_A: 'Bienvenido', answer_B: 'Continuar', } - const MAIN_CTX = addKeyword(ARRANGE.keyword) - .addAnswer(ARRANGE.answer_A) - .addAnswer(ARRANGE.answer_B) + const MAIN_CTX = addKeyword(ARRANGE.keyword).addAnswer(ARRANGE.answer_A).addAnswer(ARRANGE.answer_B) assert.is(MAIN_CTX.ctx.answer, ARRANGE.answer_B) }) @@ -107,10 +102,7 @@ test('Debere probar error las addAnswer', () => { }) test('Obtener toJson', () => { - const [ctxA, ctxB, ctxC] = addKeyword('hola') - .addAnswer('pera!') - .addAnswer('chao') - .toJson() + const [ctxA, ctxB, ctxC] = addKeyword('hola').addAnswer('pera!').addAnswer('chao').toJson() assert.is(ctxA.keyword, 'hola') assert.match(ctxA.ref, /^key_/) diff --git a/packages/bot/utils/delay.js b/packages/bot/utils/delay.js index 021fafe..a6534c0 100644 --- a/packages/bot/utils/delay.js +++ b/packages/bot/utils/delay.js @@ -1,4 +1,3 @@ -const delay = (miliseconds) => - new Promise((res) => setTimeout(res, miliseconds)) +const delay = (miliseconds) => new Promise((res) => setTimeout(res, miliseconds)) module.exports = { delay } diff --git a/packages/bot/utils/flattener.js b/packages/bot/utils/flattener.js index 875736d..ddc823f 100644 --- a/packages/bot/utils/flattener.js +++ b/packages/bot/utils/flattener.js @@ -3,9 +3,7 @@ const flatObject = (listArray = []) => { if (!listArray.length) return {} - const cbNestedObj = cbNestedList - .map(({ ctx }) => ctx?.callbacks) - .filter((i) => !!i) + 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) => ({ diff --git a/packages/bot/utils/hash.js b/packages/bot/utils/hash.js index 84a25db..6902d58 100644 --- a/packages/bot/utils/hash.js +++ b/packages/bot/utils/hash.js @@ -16,9 +16,6 @@ const generateRef = (prefix = false) => { * @returns */ const generateRefSerialize = ({ index, answer, keyword }) => - crypto - .createHash('md5') - .update(JSON.stringify({ index, answer, keyword })) - .digest('hex') + crypto.createHash('md5').update(JSON.stringify({ index, answer, keyword })).digest('hex') module.exports = { generateRef, generateRefSerialize } diff --git a/packages/bot/utils/interactive.js b/packages/bot/utils/interactive.js index c317a7f..44905cf 100644 --- a/packages/bot/utils/interactive.js +++ b/packages/bot/utils/interactive.js @@ -4,9 +4,7 @@ const printer = (message, title) => { if (NODE_ENV !== 'test') { // console.clear() if (title) console.log(bgRed(`${title}`)) - console.log( - yellow(Array.isArray(message) ? message.join('\n') : message) - ) + console.log(yellow(Array.isArray(message) ? message.join('\n') : message)) console.log(``) } } diff --git a/packages/cli/check/index.js b/packages/cli/check/index.js index 454f67c..5befb8a 100644 --- a/packages/cli/check/index.js +++ b/packages/cli/check/index.js @@ -5,15 +5,9 @@ const checkNodeVersion = () => { return new Promise((resolve, reject) => { console.log(bgCyan('🚀 Revisando tu Node.js')) const version = process.version - const majorVersion = parseInt( - version.replace('v', '').split('.').shift() - ) + 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}` - ) - ) + console.error(red(`🔴 Se require Node.js 16 o superior. Actualmente esta ejecutando Node.js ${version}`)) console.log(``) reject('ERROR_NODE') } diff --git a/packages/cli/clean/index.js b/packages/cli/clean/index.js index 6b7f6fd..60b8092 100644 --- a/packages/cli/clean/index.js +++ b/packages/cli/clean/index.js @@ -2,10 +2,7 @@ const rimraf = require('rimraf') const { yellow } = require('kleur') const { join } = require('path') -const PATH_WW = [ - join(process.cwd(), '.wwebjs_auth'), - join(process.cwd(), 'session.json'), -] +const PATH_WW = [join(process.cwd(), '.wwebjs_auth'), join(process.cwd(), 'session.json')] const cleanSession = () => { const queue = [] diff --git a/packages/cli/configuration/index.js b/packages/cli/configuration/index.js index 50565d9..2ce6077 100644 --- a/packages/cli/configuration/index.js +++ b/packages/cli/configuration/index.js @@ -23,11 +23,7 @@ const JSON_TEMPLATE = { const PATH_CONFIG = join(process.cwd(), 'config.json') const jsonConfig = () => { - return writeFile( - PATH_CONFIG, - JSON.stringify(JSON_TEMPLATE, null, 2), - 'utf-8' - ) + return writeFile(PATH_CONFIG, JSON.stringify(JSON_TEMPLATE, null, 2), 'utf-8') } module.exports = { jsonConfig } diff --git a/packages/cli/install/tool.js b/packages/cli/install/tool.js index 8095cd0..a74cec6 100644 --- a/packages/cli/install/tool.js +++ b/packages/cli/install/tool.js @@ -20,13 +20,9 @@ const installDeps = (pkgManager, packageList) => { const installSingle = (pkgInstall) => () => { new Promise((resolve) => { try { - childProcess = spawn( - pkgManager, - [PKG_OPTION[pkgManager], pkgInstall], - { - stdio: 'inherit', - } - ) + childProcess = spawn(pkgManager, [PKG_OPTION[pkgManager], pkgInstall], { + stdio: 'inherit', + }) childProcess.on('error', (e) => { console.error(e) diff --git a/packages/cli/interactive/index.js b/packages/cli/interactive/index.js index 53cc885..d65ca19 100644 --- a/packages/cli/interactive/index.js +++ b/packages/cli/interactive/index.js @@ -30,9 +30,7 @@ const startInteractive = async () => { await nextSteps() } catch (e) { console.error(bgRed(`Ups! 🙄 algo no va bien.`)) - console.error( - bgRed(`Revisa los requerimientos minimos en la documentacion`) - ) + console.error(bgRed(`Revisa los requerimientos minimos en la documentacion`)) } } @@ -82,8 +80,7 @@ const nextSteps = async () => { const { outDir = '', providerDb = [], providerWs = [] } = response const createApp = async (templateName = null) => { - if (!templateName) - throw new Error('TEMPLATE_NAME_INVALID: ', templateName) + if (!templateName) throw new Error('TEMPLATE_NAME_INVALID: ', templateName) const possiblesPath = [ join(__dirname, '..', '..', 'starters', 'apps', templateName), @@ -115,11 +112,7 @@ const nextSteps = async () => { const vendorProvider = async () => { const [answer] = providerWs if (!providerWs.length) { - console.log( - red( - `Debes seleccionar un proveedor de whatsapp. Tecla [Space] para seleccionar` - ) - ) + console.log(red(`Debes seleccionar un proveedor de whatsapp. Tecla [Space] para seleccionar`)) process.exit(1) } return answer @@ -132,11 +125,7 @@ const nextSteps = async () => { const dbProvider = async () => { const [answer] = providerDb if (!providerDb.length) { - console.log( - red( - `Debes seleccionar un proveedor de base de datos. Tecla [Space] para seleccionar` - ) - ) + console.log(red(`Debes seleccionar un proveedor de base de datos. Tecla [Space] para seleccionar`)) process.exit(1) } return answer diff --git a/packages/contexts/src/dialogflow-cx/dialogflow-cx.class.js b/packages/contexts/src/dialogflow-cx/dialogflow-cx.class.js index 2d0ebd2..6be4f9e 100644 --- a/packages/contexts/src/dialogflow-cx/dialogflow-cx.class.js +++ b/packages/contexts/src/dialogflow-cx/dialogflow-cx.class.js @@ -38,10 +38,8 @@ class DialogFlowCXContext extends CoreClass { * */ } - if (!this.optionsDX.location.length) - throw new Error('LOCATION_NO_ENCONTRADO') - if (!this.optionsDX.agentId.length) - throw new Error('AGENTID_NO_ENCONTRADO') + if (!this.optionsDX.location.length) throw new Error('LOCATION_NO_ENCONTRADO') + if (!this.optionsDX.agentId.length) throw new Error('AGENTID_NO_ENCONTRADO') const rawJson = readFileSync(GOOGLE_ACCOUNT_PATH, 'utf-8') const { project_id, private_key, client_email } = JSON.parse(rawJson) @@ -86,9 +84,7 @@ class DialogFlowCXContext extends CoreClass { }, } - const [single] = (await this.sessionClient.detectIntent(reqDialog)) || [ - null, - ] + const [single] = (await this.sessionClient.detectIntent(reqDialog)) || [null] const listMessages = single.queryResult.responseMessages.map((res) => { if (res.message == 'text') { @@ -96,17 +92,11 @@ class DialogFlowCXContext extends CoreClass { } if (res.message == 'payload') { - const { - media = null, - buttons = [], - answer = '', - } = res.payload.fields - const buttonsArray = buttons?.listValue?.values?.map( - (btnValue) => { - const { stringValue } = btnValue.structValue.fields.body - return { body: stringValue } - } - ) + 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: { diff --git a/packages/contexts/src/dialogflow-cx/index.js b/packages/contexts/src/dialogflow-cx/index.js index 2a561c4..13c479e 100644 --- a/packages/contexts/src/dialogflow-cx/index.js +++ b/packages/contexts/src/dialogflow-cx/index.js @@ -5,8 +5,7 @@ const DialogCXFlowClass = require('./dialogflow-cx.class') * @param {*} args * @returns */ -const createBotDialog = async ({ database, provider }, _options) => - new DialogCXFlowClass(database, provider, _options) +const createBotDialog = async ({ database, provider }, _options) => new DialogCXFlowClass(database, provider, _options) module.exports = { createBotDialog, diff --git a/packages/contexts/src/dialogflow/dialogflow.class.js b/packages/contexts/src/dialogflow/dialogflow.class.js index ac00116..f92f318 100644 --- a/packages/contexts/src/dialogflow/dialogflow.class.js +++ b/packages/contexts/src/dialogflow/dialogflow.class.js @@ -65,10 +65,7 @@ class DialogFlowContext extends CoreClass { * para evitar este problema. * https://github.com/codigoencasa/bot-whatsapp/pull/140 */ - const session = this.sessionClient.projectAgentSessionPath( - this.projectId, - from - ) + const session = this.sessionClient.projectAgentSessionPath(this.projectId, from) const reqDialog = { session, queryInput: { @@ -79,15 +76,11 @@ class DialogFlowContext extends CoreClass { }, } - const [single] = (await this.sessionClient.detectIntent(reqDialog)) || [ - null, - ] + const [single] = (await this.sessionClient.detectIntent(reqDialog)) || [null] const { queryResult } = single - const msgPayload = queryResult?.fulfillmentMessages?.find( - (a) => a.message === 'payload' - ) + const msgPayload = queryResult?.fulfillmentMessages?.find((a) => a.message === 'payload') // Revisamos si el dialogFlow tiene multimedia if (msgPayload && msgPayload?.payload) { diff --git a/packages/contexts/src/dialogflow/index.js b/packages/contexts/src/dialogflow/index.js index e988f50..377fd88 100644 --- a/packages/contexts/src/dialogflow/index.js +++ b/packages/contexts/src/dialogflow/index.js @@ -5,8 +5,7 @@ const DialogFlowClass = require('./dialogflow.class') * @param {*} args * @returns */ -const createBotDialog = async ({ database, provider }) => - new DialogFlowClass(database, provider) +const createBotDialog = async ({ database, provider }) => new DialogFlowClass(database, provider) module.exports = { createBotDialog, diff --git a/packages/contexts/src/mock/index.js b/packages/contexts/src/mock/index.js index b609be5..4e2e10f 100644 --- a/packages/contexts/src/mock/index.js +++ b/packages/contexts/src/mock/index.js @@ -5,8 +5,7 @@ const MockClass = require('./mock.class') * @param {*} args * @returns */ -const createBotMock = async ({ database, provider }) => - new MockClass(database, provider) +const createBotMock = async ({ database, provider }) => new MockClass(database, provider) module.exports = { createBotMock, diff --git a/packages/database/src/mock/index.js b/packages/database/src/mock/index.js index 4c07c03..2ab91a0 100644 --- a/packages/database/src/mock/index.js +++ b/packages/database/src/mock/index.js @@ -10,7 +10,10 @@ class MockDatabase { constructor() {} getPrevByNumber = (from) => { - const history = this.listHistory.slice().reverse() + const history = this.listHistory + .slice() + .reverse() + .filter((i) => !!i.keyword) return history.find((a) => a.from === from) } diff --git a/packages/database/src/mongo/index.js b/packages/database/src/mongo/index.js index 6af68f0..cff9f34 100644 --- a/packages/database/src/mongo/index.js +++ b/packages/database/src/mongo/index.js @@ -24,18 +24,12 @@ class MongoAdapter { } getPrevByNumber = async (from) => { - const result = await this.db - .collection('history') - .find({ from }) - .sort({ _id: -1 }) - .limit(1) - .toArray() + const result = await this.db.collection('history').find({ from }).sort({ _id: -1 }).limit(1).toArray() return result[0] } save = async (ctx) => { await this.db.collection('history').insert(ctx) - console.log('Guardando DB...', ctx) this.listHistory.push(ctx) } } diff --git a/packages/database/src/mysql/index.js b/packages/database/src/mysql/index.js index e01b55a..0beea56 100644 --- a/packages/database/src/mysql/index.js +++ b/packages/database/src/mysql/index.js @@ -46,18 +46,8 @@ class MyslAdapter { }) save = (ctx) => { - const values = [ - [ - ctx.ref, - ctx.keyword, - ctx.answer, - ctx.refSerialize, - ctx.from, - JSON.stringify(ctx.options), - ], - ] - const sql = - 'INSERT INTO history (ref, keyword, answer, refSerialize, phone, options ) values ?' + const values = [[ctx.ref, ctx.keyword, ctx.answer, ctx.refSerialize, ctx.from, JSON.stringify(ctx.options)]] + const sql = 'INSERT INTO history (ref, keyword, answer, refSerialize, phone, options ) values ?' this.db.query(sql, [values], (err) => { if (err) throw err @@ -71,14 +61,14 @@ class MyslAdapter { const tableName = 'history' const sql = `CREATE TABLE ${tableName} - (id INT AUTO_INCREMENT PRIMARY KEY, - ref varchar(255) NOT NULL, - keyword varchar(255) NOT NULL, - answer longtext NOT NULL, - refSerialize varchar(255) NOT NULL, - phone varchar(255) NOT NULL, - options longtext NOT NULL - )` + (id INT AUTO_INCREMENT PRIMARY KEY, + ref varchar(255) NOT NULL, + keyword varchar(255) NOT NULL, + answer longtext NOT NULL, + refSerialize varchar(255) NOT NULL, + phone varchar(255) NOT NULL, + options longtext NOT NULL) + CHARACTER SET utf8mb4 COLLATE utf8mb4_General_ci` this.db.query(sql, (err) => { if (err) throw err diff --git a/packages/docs/src/assets/fonts/generated/IBMPlexMono-Regular.module.css b/packages/docs/src/assets/fonts/generated/IBMPlexMono-Regular.module.css index deddf7c..f0ab1c0 100644 --- a/packages/docs/src/assets/fonts/generated/IBMPlexMono-Regular.module.css +++ b/packages/docs/src/assets/fonts/generated/IBMPlexMono-Regular.module.css @@ -8,6 +8,5 @@ font-family: IBMPlexMono-Regular; src: url(IBMPlexMono-Regular-subset.woff2) format('woff2'), url(IBMPlexMono-Regular-subset.zopfli.woff) format('woff'); - unicode-range: U+20, U+2C, U+2E, U+41-43, U+46, U+49, U+4B-4F, U+53-55, U+58, - U+61-65, U+67-69, U+6C-76; + unicode-range: U+20, U+2C, U+2E, U+41-43, U+46, U+49, U+4B-4F, U+53-55, U+58, U+61-65, U+67-69, U+6C-76; } diff --git a/packages/docs/src/assets/fonts/generated/IBMPlexMono-SemiBold.module.css b/packages/docs/src/assets/fonts/generated/IBMPlexMono-SemiBold.module.css index e2fdf72..6b47965 100644 --- a/packages/docs/src/assets/fonts/generated/IBMPlexMono-SemiBold.module.css +++ b/packages/docs/src/assets/fonts/generated/IBMPlexMono-SemiBold.module.css @@ -8,6 +8,6 @@ font-family: IBMPlexMono-SemiBold; src: url(IBMPlexMono-SemiBold-subset.woff2) format('woff2'), url(IBMPlexMono-SemiBold-subset.zopfli.woff) format('woff'); - unicode-range: U+20, U+24, U+2E, U+30, U+38, U+39, U+41, U+42, U+44, U+47, - U+4E, U+4F, U+52-55, U+57, U+59, U+65, U+68, U+6F, U+72, U+74; + unicode-range: U+20, U+24, U+2E, U+30, U+38, U+39, U+41, U+42, U+44, U+47, U+4E, U+4F, U+52-55, U+57, U+59, U+65, + U+68, U+6F, U+72, U+74; } diff --git a/packages/docs/src/assets/fonts/generated/Pally-Variable.module.css b/packages/docs/src/assets/fonts/generated/Pally-Variable.module.css index 74aa400..e899bbf 100644 --- a/packages/docs/src/assets/fonts/generated/Pally-Variable.module.css +++ b/packages/docs/src/assets/fonts/generated/Pally-Variable.module.css @@ -6,9 +6,8 @@ @font-face { font-family: Pally-Variable; - src: url(Pally-Variable-subset.woff2) format('woff2'), - url(Pally-Variable-subset.zopfli.woff) format('woff'); - unicode-range: U+20, U+24, U+2C, U+2E, U+30, U+33, U+39, U+41-43, U+46, - U+49-4D, U+53, U+55, U+58, U+61-65, U+67-69, U+6B-77, U+79; + src: url(Pally-Variable-subset.woff2) format('woff2'), url(Pally-Variable-subset.zopfli.woff) format('woff'); + unicode-range: U+20, U+24, U+2C, U+2E, U+30, U+33, U+39, U+41-43, U+46, U+49-4D, U+53, U+55, U+58, U+61-65, U+67-69, + U+6B-77, U+79; font-weight: 400 700; } diff --git a/packages/docs/src/assets/fonts/generated/SourceSerifPro-Regular.module.css b/packages/docs/src/assets/fonts/generated/SourceSerifPro-Regular.module.css index b1a323f..a491d8c 100644 --- a/packages/docs/src/assets/fonts/generated/SourceSerifPro-Regular.module.css +++ b/packages/docs/src/assets/fonts/generated/SourceSerifPro-Regular.module.css @@ -8,6 +8,5 @@ font-family: SourceSerifPro-Regular; src: url(SourceSerifPro-Regular-subset.woff2) format('woff2'), url(SourceSerifPro-Regular-subset.zopfli.woff) format('woff'); - unicode-range: U+20, U+2C, U+2E, U+41-44, U+49, U+4A, U+4C, U+53, U+55, - U+61-65, U+67-69, U+6B-76, U+79; + unicode-range: U+20, U+2C, U+2E, U+41-44, U+49, U+4A, U+4C, U+53, U+55, U+61-65, U+67-69, U+6B-76, U+79; } diff --git a/packages/docs/src/assets/fonts/generated/Synonym-Variable.module.css b/packages/docs/src/assets/fonts/generated/Synonym-Variable.module.css index b834dbb..00cb8df 100644 --- a/packages/docs/src/assets/fonts/generated/Synonym-Variable.module.css +++ b/packages/docs/src/assets/fonts/generated/Synonym-Variable.module.css @@ -6,9 +6,8 @@ @font-face { font-family: Synonym-Variable; - src: url(Synonym-Variable-subset.woff2) format('woff2'), - url(Synonym-Variable-subset.zopfli.woff) format('woff'); - unicode-range: U+20, U+24, U+2C, U+2E, U+30, U+33, U+35, U+41-44, U+46, U+47, - U+49, U+4B-4F, U+53-55, U+57-59, U+61, U+63-65, U+67-69, U+6C-76; + src: url(Synonym-Variable-subset.woff2) format('woff2'), url(Synonym-Variable-subset.zopfli.woff) format('woff'); + unicode-range: U+20, U+24, U+2C, U+2E, U+30, U+33, U+35, U+41-44, U+46, U+47, U+49, U+4B-4F, U+53-55, U+57-59, U+61, + U+63-65, U+67-69, U+6C-76; font-weight: 400 700; } diff --git a/packages/docs/src/assets/fonts/generated/TenorSans-Regular.module.css b/packages/docs/src/assets/fonts/generated/TenorSans-Regular.module.css index 819cfa3..b3dbfc6 100644 --- a/packages/docs/src/assets/fonts/generated/TenorSans-Regular.module.css +++ b/packages/docs/src/assets/fonts/generated/TenorSans-Regular.module.css @@ -6,8 +6,7 @@ @font-face { font-family: TenorSans-Regular; - src: url(TenorSans-Regular-subset.woff2) format('woff2'), - url(TenorSans-Regular-subset.zopfli.woff) format('woff'); - unicode-range: U+20, U+24, U+2E, U+30, U+36, U+46, U+49, U+4A, U+53, U+54, - U+61, U+63, U+65, U+69, U+6B, U+6E, U+6F, U+72-75, U+79; + src: url(TenorSans-Regular-subset.woff2) format('woff2'), url(TenorSans-Regular-subset.zopfli.woff) format('woff'); + unicode-range: U+20, U+24, U+2E, U+30, U+36, U+46, U+49, U+4A, U+53, U+54, U+61, U+63, U+65, U+69, U+6B, U+6E, U+6F, + U+72-75, U+79; } diff --git a/packages/docs/src/assets/images/digital-ocean.png b/packages/docs/src/assets/images/digital-ocean.png new file mode 100644 index 0000000..0d0163b Binary files /dev/null and b/packages/docs/src/assets/images/digital-ocean.png differ diff --git a/packages/docs/src/components/atoms/DigitalOcean.tsx b/packages/docs/src/components/atoms/DigitalOcean.tsx new file mode 100644 index 0000000..fc97537 --- /dev/null +++ b/packages/docs/src/components/atoms/DigitalOcean.tsx @@ -0,0 +1,189 @@ +export const DigitalOcean = () => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +) diff --git a/packages/docs/src/components/atoms/Logo.tsx b/packages/docs/src/components/atoms/Logo.tsx index b5e1199..97a7fa1 100644 --- a/packages/docs/src/components/atoms/Logo.tsx +++ b/packages/docs/src/components/atoms/Logo.tsx @@ -5,14 +5,7 @@ import logoSrc from '~/assets/images/chatbot-whatsapp.png?width=64&height=64&png export default component$(() => ( - Qwind Logo + Qwind Logo Chatbot )) diff --git a/packages/docs/src/components/atoms/Netlify.tsx b/packages/docs/src/components/atoms/Netlify.tsx index 9047eab..3090113 100644 --- a/packages/docs/src/components/atoms/Netlify.tsx +++ b/packages/docs/src/components/atoms/Netlify.tsx @@ -1,11 +1,5 @@ export const Netlify = () => ( - + { {head.title} - + {head.meta.map((m) => ( diff --git a/packages/docs/src/components/core/Social.tsx b/packages/docs/src/components/core/Social.tsx index 43d6ac2..f620441 100644 --- a/packages/docs/src/components/core/Social.tsx +++ b/packages/docs/src/components/core/Social.tsx @@ -34,14 +34,8 @@ export const Social = () => { content="https://campaign.codigoencasa.com" /> */} - - + + @@ -52,10 +46,7 @@ export const Social = () => { name="twitter:title" content="💻 Conviértete en un Programador Backend aprendiendo todo de Cloud y Nodejs" /> - + ) } diff --git a/packages/docs/src/components/core/ToggleMenu.tsx b/packages/docs/src/components/core/ToggleMenu.tsx index 51779fc..567fd46 100644 --- a/packages/docs/src/components/core/ToggleMenu.tsx +++ b/packages/docs/src/components/core/ToggleMenu.tsx @@ -27,9 +27,7 @@ export default component$((props: ItemProps) => { // TODO: document.body.classList.toggle('overflow-hidden') document.getElementById('header')?.classList.toggle('h-screen') - document - .querySelector('#header nav') - ?.classList.toggle('hidden') + document.querySelector('#header nav')?.classList.toggle('hidden') }} > diff --git a/packages/docs/src/components/core/ToggleTheme.tsx b/packages/docs/src/components/core/ToggleTheme.tsx index 00de98e..6ef1196 100644 --- a/packages/docs/src/components/core/ToggleTheme.tsx +++ b/packages/docs/src/components/core/ToggleTheme.tsx @@ -10,16 +10,13 @@ interface ItemProps { export default component$((props: ItemProps) => { const { iconClass } = props const store = useStore({ - theme: - (typeof window !== 'undefined' && window?.localStorage?.theme) || - undefined, + theme: (typeof window !== 'undefined' && window?.localStorage?.theme) || undefined, }) useClientEffect$(() => { store.theme = window.localStorage.theme === 'dark' || - (!('theme' in window.localStorage) && - window.matchMedia('(prefers-color-scheme: dark)').matches) + (!('theme' in window.localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches) ? 'dark' : 'light' }) @@ -42,11 +39,7 @@ export default component$((props: ItemProps) => { } }} > - {store.theme == 'dark' ? ( - - ) : ( - - )} + {store.theme == 'dark' ? : } ) }) diff --git a/packages/docs/src/components/icons/IconArrowDownRight.tsx b/packages/docs/src/components/icons/IconArrowDownRight.tsx index 8adfab2..5fd5087 100644 --- a/packages/docs/src/components/icons/IconArrowDownRight.tsx +++ b/packages/docs/src/components/icons/IconArrowDownRight.tsx @@ -7,9 +7,7 @@ export const IconArrowDownRight = (props: ItemProps) => { return ( { diff --git a/packages/docs/src/components/icons/IconMoon.tsx b/packages/docs/src/components/icons/IconMoon.tsx index fa65ec0..296951f 100644 --- a/packages/docs/src/components/icons/IconMoon.tsx +++ b/packages/docs/src/components/icons/IconMoon.tsx @@ -7,9 +7,7 @@ export const IconMoon = (props: ItemProps) => { return (
-

- {props.user.login} -
+
{props.user.login}
diff --git a/packages/docs/src/components/widgets/Collaborators.tsx b/packages/docs/src/components/widgets/Collaborators.tsx index 23f2844..cfd2d24 100644 --- a/packages/docs/src/components/widgets/Collaborators.tsx +++ b/packages/docs/src/components/widgets/Collaborators.tsx @@ -32,8 +32,7 @@ export default component$((props: { users: User[] }) => { Super estrellas

- Todo es posible gracias a el mayor recursos de todos, el - recurso humano. Tu tambien puedes{' '} + Todo es posible gracias a el mayor recursos de todos, el recurso humano. Tu tambien puedes{' '} formar parte diff --git a/packages/docs/src/components/widgets/ExtraBar.tsx b/packages/docs/src/components/widgets/ExtraBar.tsx index fda47b2..0d9ae34 100644 --- a/packages/docs/src/components/widgets/ExtraBar.tsx +++ b/packages/docs/src/components/widgets/ExtraBar.tsx @@ -15,8 +15,8 @@ export default component$(() => { 📄 Editar esta pagina

- Forma parte de esta comunidad mejorando la documentación - siente libre de poder agregar o editar lo que quieras + Forma parte de esta comunidad mejorando la documentación siente libre de poder agregar o editar + lo que quieras

diff --git a/packages/docs/src/components/widgets/FAQs.tsx b/packages/docs/src/components/widgets/FAQs.tsx index 28aa2c1..5834e24 100644 --- a/packages/docs/src/components/widgets/FAQs.tsx +++ b/packages/docs/src/components/widgets/FAQs.tsx @@ -56,13 +56,9 @@ export default component$(() => { {question} - {answer - .split('\n\n') - .map((paragraph) => ( -

- {paragraph} -

- ))} + {answer.split('\n\n').map((paragraph) => ( +

{paragraph}

+ ))} ))} diff --git a/packages/docs/src/components/widgets/Features.tsx b/packages/docs/src/components/widgets/Features.tsx index 4888086..ddd3dc8 100644 --- a/packages/docs/src/components/widgets/Features.tsx +++ b/packages/docs/src/components/widgets/Features.tsx @@ -50,13 +50,11 @@ export default component$(() => { Caracteristicas

- Nuestras principales{' '} - funciones + Nuestras principales funciones

- El secreto es mantener los procesos repetitivos en - procesos automatizados simples, por eso te mostramos en - que destacamos. + El secreto es mantener los procesos repetitivos en procesos automatizados simples, por eso te + mostramos en que destacamos.

@@ -70,12 +68,8 @@ export default component$(() => {
-

- {title} -

-

- {description} -

+

{title}

+

{description}

))} diff --git a/packages/docs/src/components/widgets/Hero.tsx b/packages/docs/src/components/widgets/Hero.tsx index b3761f8..01ee042 100644 --- a/packages/docs/src/components/widgets/Hero.tsx +++ b/packages/docs/src/components/widgets/Hero.tsx @@ -9,36 +9,24 @@ import { src as placeholder } from '~/assets/images/chatbot-whatsapp.png?width=4 export default component$(() => { return ( -
+

- Crear chatbot{' '} - - WhatsApp - - {' '} - en minutos + Crear chatbot WhatsApp + en minutos

- - Con esta libreria,{' '} - + Con esta libreria, - puedes configurar respuestas - automatizadas para preguntas frecuentes + puedes 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, - nuestro Chatbot se integra fácilmente con - otros sistemas y herramientas que ya esté - utilizando en su negocio. + , recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las + interacciones con los clientes. Además, nuestro Chatbot se integra fácilmente con + otros sistemas y herramientas que ya esté utilizando en su negocio.

@@ -48,10 +36,7 @@ export default component$(() => {
- + Ver documentación { Miembros

- Conviértete en un miembro destacado y forma parte del - proyecto y disfruta de manera adelantada de las - actualizaciones{' '} - + Conviértete en un miembro destacado y forma parte del proyecto y disfruta de manera adelantada + de las actualizaciones{' '} + Únete

diff --git a/packages/docs/src/components/widgets/NavBar.tsx b/packages/docs/src/components/widgets/NavBar.tsx index 56915c9..5b332bc 100644 --- a/packages/docs/src/components/widgets/NavBar.tsx +++ b/packages/docs/src/components/widgets/NavBar.tsx @@ -5,55 +5,45 @@ import { DocumentationCtx } from '~/contexts' /** * options = [] array con la lista de opciones de la documentacion */ -export default component$( - ({ options = [] }: { options: DocumentationCtx[] }) => { - return ( -
- {options.map((item, i) => ( - - ))} -
- ) - } -) +export default component$(({ options = [] }: { options: DocumentationCtx[] }) => { + return ( +
+ {options.map((item, i) => ( + + ))} +
+ ) +}) -export const UlCompoent = component$( - (porps: { title: string; list: { link: string; name: string }[] }) => { - return ( -
    -
  • -
    - {porps.title} -
    - +export const UlCompoent = component$((porps: { title: string; list: { link: string; name: string }[] }) => { + return ( +
      +
    • +
      {porps.title}
      + +
    • +
    + ) +}) + +export const LiComponent = component$((porps: { list: { link: string; name: string }[] }) => { + const location = useLocation() + const currentPage = location.pathname + return ( +
      + {porps.list.map((opt) => ( +
    • + + {opt.name} +
    • -
    - ) - } -) - -export const LiComponent = component$( - (porps: { list: { link: string; name: string }[] }) => { - const location = useLocation() - const currentPage = location.pathname - return ( -
      - {porps.list.map((opt) => ( -
    • - - {opt.name} - -
    • - ))} -
    - ) - } -) + ))} +
+ ) +}) diff --git a/packages/docs/src/components/widgets/Navigation.tsx b/packages/docs/src/components/widgets/Navigation.tsx index 779a787..092ed93 100644 --- a/packages/docs/src/components/widgets/Navigation.tsx +++ b/packages/docs/src/components/widgets/Navigation.tsx @@ -1,74 +1,63 @@ import { component$ } from '@builder.io/qwik' -export const ButtonLink = component$( - (props: { name: string; link: string; direction: 'left' | 'right' }) => { - const ArrowRight = () => ( - - - - ) +export const ButtonLink = component$((props: { name: string; link: string; direction: 'left' | 'right' }) => { + const ArrowRight = () => ( + + + + ) - const ArrowLeft = () => ( - - - - ) + const ArrowLeft = () => ( + + + + ) - return ( - - {props.direction === 'left' ? ( - <> - - {props.name} - - ) : ( - <> - {props.name} - - - )} - - ) - } -) + return ( + + {props.direction === 'left' ? ( + <> + + {props.name} + + ) : ( + <> + {props.name} + + + )} + + ) +}) -export default component$( - (props: { pages: ({ name: string; link: string } | null)[] }) => { - const { pages } = props - return ( -
-
- {pages[0] ? ( - - ) : null} - {pages[1] ? ( - - ) : null} -
+export default component$((props: { pages: ({ name: string; link: string } | null)[] }) => { + const { pages } = props + return ( +
+
+ {pages[0] ? : null} + {pages[1] ? : null}
- ) - } -) +
+ ) +}) diff --git a/packages/docs/src/components/widgets/SponsorBar.tsx b/packages/docs/src/components/widgets/SponsorBar.tsx index c0d8183..f355691 100644 --- a/packages/docs/src/components/widgets/SponsorBar.tsx +++ b/packages/docs/src/components/widgets/SponsorBar.tsx @@ -7,6 +7,8 @@ import { src as qwik } from '~/assets/images/qwik.png?width=100&metadata' import { src as leanga } from '~/assets/images/leanga.png?width=40&metadata' // @ts-ignore import { src as netlify } from '~/assets/images/full-logo-light.png?width=100&metadata' +// @ts-ignore +import { src as digitalOcean } from '~/assets/images/digital-ocean.png?width=100&metadata' /** * options = [] array con la lista de opciones de la documentacion @@ -41,7 +43,20 @@ export default component$(() => { Qwind Hero Image (Cool dog) + + + +
  • + + + DigitalOcean diff --git a/packages/docs/src/components/widgets/Stats.tsx b/packages/docs/src/components/widgets/Stats.tsx index c4dc31a..0721ba7 100644 --- a/packages/docs/src/components/widgets/Stats.tsx +++ b/packages/docs/src/components/widgets/Stats.tsx @@ -5,33 +5,25 @@ export default component$(() => {
    -
    - 132K -
    +
    132K

    Downloads

    -
    - 24.8K -
    +
    24.8K

    Stars

    -
    - 10.3K -
    +
    10.3K

    Forks

    -
    - 48.4K -
    +
    48.4K

    Users

    diff --git a/packages/docs/src/contexts/index.tsx b/packages/docs/src/contexts/index.tsx index 7282539..ca33495 100644 --- a/packages/docs/src/contexts/index.tsx +++ b/packages/docs/src/contexts/index.tsx @@ -13,5 +13,4 @@ export interface User { avatar_url: string } -export const GlobalStore = - createContext('documentation-site') +export const GlobalStore = createContext('documentation-site') diff --git a/packages/docs/src/root.tsx b/packages/docs/src/root.tsx index 2cddda0..61c3906 100644 --- a/packages/docs/src/root.tsx +++ b/packages/docs/src/root.tsx @@ -1,14 +1,5 @@ -import { - component$, - useContextProvider, - useStore, - useStyles$, -} from '@builder.io/qwik' -import { - QwikCityProvider, - RouterOutlet, - ServiceWorkerRegister, -} from '@builder.io/qwik-city' +import { component$, useContextProvider, useStore, useStyles$ } from '@builder.io/qwik' +import { QwikCityProvider, RouterOutlet, ServiceWorkerRegister } from '@builder.io/qwik-city' import { RouterHead } from '~/components/core/RouterHead' import { DarkThemeLauncher } from '~/components/core/DarkThemeLauncher' @@ -78,10 +69,7 @@ export default component$(() => { - + diff --git a/packages/docs/src/routes/docs/database/index.mdx b/packages/docs/src/routes/docs/database/index.mdx index dab499f..01eb796 100644 --- a/packages/docs/src/routes/docs/database/index.mdx +++ b/packages/docs/src/routes/docs/database/index.mdx @@ -4,11 +4,10 @@ import Navigation from '../../../components/widgets/Navigation' # DataBase (Base de datos) - ⚡ Dependiendo del tipo de conector que utlices puede que necesites pasar - algunas configuracion adicional como **user, host, password** para esos - casos te recomendamos guiarte de los - **[starters](https://github.com/codigoencasa/bot-whatsapp/tree/dev/starters/apps)** - o si gustas puedes editar esta documentación para ir agregando más info + ⚡ Dependiendo del tipo de conector que utlices puede que necesites pasar algunas configuracion adicional como + **user, host, password** para esos casos te recomendamos guiarte de los + **[starters](https://github.com/codigoencasa/bot-whatsapp/tree/dev/starters/apps)** o si gustas puedes editar esta + documentación para ir agregando más info Es la pieza encargada de mantener el **"estado"** de una conversación, para mayor facilidad la libreria te proporcia diferentes conectores que se de adapten mejor a tu desarrollo diff --git a/packages/docs/src/routes/docs/essential/index.mdx b/packages/docs/src/routes/docs/essential/index.mdx index 8187544..0f0dc45 100644 --- a/packages/docs/src/routes/docs/essential/index.mdx +++ b/packages/docs/src/routes/docs/essential/index.mdx @@ -22,12 +22,7 @@ Tan sencillo como decir **palabra/s clave** y **mensaje a responder** Ambos metodos **[addKeyword](https://github.com/codigoencasa/bot-whatsapp/blob/dev/packages/bot/io/methods/addKeyword.js)** y el **[addAnswer](https://github.com/codigoencasa/bot-whatsapp/blob/dev/packages/bot/io/methods/addAnswer.js)** tienen una serie opciones disponibles ```js -const { - createBot, - createProvider, - createFlow, - addKeyword, -} = require('@bot-whatsapp/bot') +const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot') const flowPrincipal = addKeyword(['hola', 'alo']) .addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?']) @@ -39,11 +34,10 @@ const flowPrincipal = addKeyword(['hola', 'alo']) ## Provider (Proveedor) - ⚡ Dependiendo del tipo de proveedor que utlices puede que necesites pasar - algunas configuracion adicional como **token, api, etc.** para esos casos te - recomendamos guiarte de los - **[starters](https://github.com/codigoencasa/bot-whatsapp/tree/dev/starters/apps)** - o si gustas puedes editar esta documentación para ir agregando más info + ⚡ Dependiendo del tipo de proveedor que utlices puede que necesites pasar algunas configuracion adicional como + **token, api, etc.** para esos casos te recomendamos guiarte de los + **[starters](https://github.com/codigoencasa/bot-whatsapp/tree/dev/starters/apps)** o si gustas puedes editar esta + documentación para ir agregando más info Es la pieza que conectara tu flujo con Whatsapp. En este chatbot tenemos varios proveedores disponibles la mayoria gratis pero tambien tenemos integracion la api oficial de whatsapp o twilio @@ -71,11 +65,10 @@ Los proveedores disponibles hasta el momento son los siguientes: ## DataBase (Base de datos) - ⚡ Dependiendo del tipo de conector que utlices puede que necesites pasar - algunas configuracion adicional como **user, host, password** para esos - casos te recomendamos guiarte de los - **[starters](https://github.com/codigoencasa/bot-whatsapp/tree/dev/starters/apps)** - o si gustas puedes editar esta documentación para ir agregando más info + ⚡ Dependiendo del tipo de conector que utlices puede que necesites pasar algunas configuracion adicional como + **user, host, password** para esos casos te recomendamos guiarte de los + **[starters](https://github.com/codigoencasa/bot-whatsapp/tree/dev/starters/apps)** o si gustas puedes editar esta + documentación para ir agregando más info Es la pieza encargada de mantener el **"estado"** de una conversación, para mayor facilidad la libreria te proporcia diferentes conectores que se de adapten mejor a tu desarrollo diff --git a/packages/docs/src/routes/docs/example/index.mdx b/packages/docs/src/routes/docs/example/index.mdx index 8daded3..057fcc6 100644 --- a/packages/docs/src/routes/docs/example/index.mdx +++ b/packages/docs/src/routes/docs/example/index.mdx @@ -5,12 +5,7 @@ import Navigation from '../../../components/widgets/Navigation' Si copias y pegas este codigo y tu entorno de trabajo cumple con todos los requesitos te debe funcionar abajo explico muy por encima ```js -const { - createBot, - createProvider, - createFlow, - addKeyword, -} = require('@bot-whatsapp/bot') +const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot') const WebWhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp') const MockAdapter = require('@bot-whatsapp/database/mock') @@ -42,12 +37,7 @@ main() En esta parte solo estamos declaramos las dependencias que vamos a utilizar. Si quieres saber a fondo cada una de las funciones te recomiendo pasarte por la seccion de **[conceptos](/docs/concepts)** ```js -const { - createBot, - createProvider, - createFlow, - addKeyword, -} = require('@bot-whatsapp/bot') +const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot') const WebWhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp') const MockAdapter = require('@bot-whatsapp/database/mock') diff --git a/packages/docs/src/routes/docs/flows/index.mdx b/packages/docs/src/routes/docs/flows/index.mdx index 29a0c63..432def3 100644 --- a/packages/docs/src/routes/docs/flows/index.mdx +++ b/packages/docs/src/routes/docs/flows/index.mdx @@ -9,12 +9,7 @@ Tan sencillo como decir **palabra/s clave** y **mensaje a responder** Ambos metodos **[addKeyword](https://github.com/codigoencasa/bot-whatsapp/blob/dev/packages/bot/io/methods/addKeyword.js)** y el **[addAnswer](https://github.com/codigoencasa/bot-whatsapp/blob/dev/packages/bot/io/methods/addAnswer.js)** tienen una serie opciones disponibles ```js -const { - createBot, - createProvider, - createFlow, - addKeyword, -} = require('@bot-whatsapp/bot') +const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot') const flowPrincipal = addKeyword(['hola', 'alo']) .addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?']) @@ -81,37 +76,21 @@ Esta funcion se utliza para responder un mensaje despues del `addKeyword()` ```js const { addKeyword } = require('@bot-whatsapp/bot') -const flowString = addKeyword('hola').addAnswer( - 'Este mensaje se enviara 1 segundo despues', - { - delay: 1000, - } -) +const flowString = addKeyword('hola').addAnswer('Este mensaje se enviara 1 segundo despues', { + delay: 1000, +}) -const flowString = addKeyword('hola').addAnswer( - 'Este mensaje envia una imagen', - { - media: 'https://i.imgur.com/0HpzsEm.png', - } -) +const flowString = addKeyword('hola').addAnswer('Este mensaje envia una imagen', { + media: 'https://i.imgur.com/0HpzsEm.png', +}) -const flowString = addKeyword('hola').addAnswer( - 'Este mensaje envia tres botones', - { - buttons: [ - { body: 'Boton 1' }, - { body: 'Boton 2' }, - { body: 'Boton 3' }, - ], - } -) +const flowString = addKeyword('hola').addAnswer('Este mensaje envia tres botones', { + buttons: [{ body: 'Boton 1' }, { body: 'Boton 2' }, { body: 'Boton 3' }], +}) -const flowString = addKeyword('hola').addAnswer( - 'Este mensaje espera una respueta del usuario', - { - capture: true, - } -) +const flowString = addKeyword('hola').addAnswer('Este mensaje espera una respueta del usuario', { + capture: true, +}) ``` --- @@ -123,13 +102,9 @@ Este argumento se utiliza para obtener el contexto de la conversación ```js const { addKeyword } = require('@bot-whatsapp/bot') -const flowString = addKeyword('hola').addAnswer( - 'Indica cual es tu email', - null, - (ctx) => { - console.log('👉 Informacion del contexto: ', ctx) - } -) +const flowString = addKeyword('hola').addAnswer('Indica cual es tu email', null, (ctx) => { + console.log('👉 Informacion del contexto: ', ctx) +}) ``` --- @@ -143,13 +118,9 @@ se repetira el mensaje `Indica cual es tu email` ```js const { addKeyword } = require('@bot-whatsapp/bot') -const flowString = addKeyword('hola').addAnswer( - 'Indica cual es tu email', - null, - (ctx, { fallBack }) => { - if (!ctx.body.includes('@')) return fallBack() - } -) +const flowString = addKeyword('hola').addAnswer('Indica cual es tu email', null, (ctx, { fallBack }) => { + if (!ctx.body.includes('@')) return fallBack() +}) ``` --- @@ -181,57 +152,65 @@ const flowString = addKeyword('hola') ## endFlow() -Esta funcion se utliza para finalizar un flujo con dos o más addAnswer. Un ejemplo de uso sería registrar 3 datos de un usuario en 3 preguntas distinas y -que el usuario pueda finalizar por él mismo el flujo. +Esta funcion se utliza para **finalizar un flujo con dos** o más addAnswer. Un ejemplo de uso sería registrar 3 datos de un usuario en 3 preguntas distinas y +que el usuario **pueda finalizar por él mismo el flujo**. Como podrás comprobar en el ejemplo siguiente, se puede vincular flowDynamic y todas sus funciones; como por ejemplo botones. ```js -const flowFormulario = addKeyword(['Hola']) +let nombre; +let apellidos; +let telefono; + +const flowFormulario = addKeyword(['Hola','⬅️ Volver al Inicio']) .addAnswer( - ['Hola!', 'Escriba su *Nombre* para generar su solicitud'], + ['Hola!','Para enviar el formulario necesito unos datos...' ,'Escriba su *Nombre*'], { capture: true, buttons: [{ body: '❌ Cancelar solicitud' }] }, + async (ctx, { flowDynamic, endFlow }) => { - if (ctx.body == '❌ Cancelar solicitud') { - await flowDynamic([ - { - body: '❌ *Su solicitud de cita ha sido cancelada* ❌', - buttons: [{ body: '⬅️ Volver al Inicio' }], - }, - ]) - return endFlow() - } + if (ctx.body == '❌ Cancelar solicitud') + return endFlow({body: '❌ Su solicitud ha sido cancelada ❌', // Aquí terminamos el flow si la condicion se comple + buttons:[{body:'⬅️ Volver al Inicio' }] // Y además, añadimos un botón por si necesitas derivarlo a otro flow + + + }) + nombre = ctx.body + return flowDynamic(`Encantado *${nombre}*, continuamos...`) } ) .addAnswer( ['También necesito tus dos apellidos'], { capture: true, buttons: [{ body: '❌ Cancelar solicitud' }] }, + async (ctx, { flowDynamic, endFlow }) => { - if (ctx.body == '❌ Cancelar solicitud') { - await flowDynamic([ - { - body: '❌ *Su solicitud de cita ha sido cancelada* ❌', - buttons: [{ body: '⬅️ Volver al Inicio' }], - }, - ]) - return endFlow() - } + if (ctx.body == '❌ Cancelar solicitud') + return endFlow({body: '❌ Su solicitud ha sido cancelada ❌', + buttons:[{body:'⬅️ Volver al Inicio' }] + + + }) + apellidos = ctx.body + return flowDynamic(`Perfecto *${nombre}*, por último...`) } ) .addAnswer( ['Dejeme su número de teléfono y le llamaré lo antes posible.'], { capture: true, buttons: [{ body: '❌ Cancelar solicitud' }] }, + async (ctx, { flowDynamic, endFlow }) => { - if (ctx.body == '❌ Cancelar solicitud') { - await flowDynamic([ - { - body: '❌ *Su solicitud de cita ha sido cancelada* ❌', - buttons: [{ body: '⬅️ Volver al Inicio' }], - }, - ]) - return endFlow() - } + if (ctx.body == '❌ Cancelar solicitud') + return endFlow({body: '❌ Su solicitud ha sido cancelada ❌', + buttons:[{body:'⬅️ Volver al Inicio' }] + }) + + + telefono = ctx.body + await delay(2000) + return flowDynamic(`Estupendo *${nombre}*! te dejo el resumen de tu formulario + \n- Nombre y apellidos: *${nombre} ${apellidos}* + \n- Telefono: *${telefono}*`) } ) + ``` --- @@ -241,6 +220,7 @@ const flowFormulario = addKeyword(['Hola']) Argumento para asignar nombre y puerto al BOT ```js +const BOTNAME = 'bot' QRPortalWeb({ name: BOTNAME, port: 3005 }) ``` diff --git a/packages/docs/src/routes/docs/index.mdx b/packages/docs/src/routes/docs/index.mdx index 505bd6a..ab6d5f1 100644 --- a/packages/docs/src/routes/docs/index.mdx +++ b/packages/docs/src/routes/docs/index.mdx @@ -4,10 +4,9 @@ import Navigation from '../../components/widgets/Navigation' # Introducción - **Atención** estás leyendo la documentación de la **versión v2** de esta - librería, si vienes de la versión anterior te recomendamos pasarte por la - sección de **[migración](/docs/migration/)** para que puedas disfrutar de - las nuevas características. + **Atención** estás leyendo la documentación de la **versión v2** de esta librería, si vienes de la versión anterior + te recomendamos pasarte por la sección de **[migración](/docs/migration/)** para que puedas disfrutar de las nuevas + características. ## ¿Qué es esto? @@ -34,10 +33,7 @@ npm create bot-whatsapp@latest muted playsinline > - +
    diff --git a/packages/docs/src/routes/docs/install/index.mdx b/packages/docs/src/routes/docs/install/index.mdx index 342043a..4fa8575 100644 --- a/packages/docs/src/routes/docs/install/index.mdx +++ b/packages/docs/src/routes/docs/install/index.mdx @@ -28,10 +28,7 @@ El **CLI** te hace una revisión previa, de versión de Node y sistema operativo muted playsinline > - +
    @@ -54,10 +51,8 @@ Cada plantilla tiene sus dependencias necesarias basadas en tu previa selección ``` - 📄 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) + 📄 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/layout!.tsx b/packages/docs/src/routes/docs/layout!.tsx index 4d66df2..8fe70cb 100644 --- a/packages/docs/src/routes/docs/layout!.tsx +++ b/packages/docs/src/routes/docs/layout!.tsx @@ -3,7 +3,7 @@ import type { DocumentHead } from '@builder.io/qwik-city' import ExtraBar from '~/components/widgets/ExtraBar' import Header from '~/components/widgets/Header' import NavBar from '~/components/widgets/NavBar' -import { SearchModal } from '~/components/widgets/SearchModal' +// import { SearchModal } from '~/components/widgets/SearchModal' import SponsorBar from '~/components/widgets/SponsorBar' import { GlobalStore } from '~/contexts' // import Navigation from '~/components/widgets/Navigation' @@ -15,7 +15,7 @@ export default component$(() => { return ( <> - + {/* */}
    @@ -27,11 +27,7 @@ export default component$(() => {
    -
    +
    @@ -54,8 +50,7 @@ export const head: DocumentHead = { meta: [ { name: 'description', - content: - 'Crear chatbot WhatsApp en minutos — Servicio de chatbot para whatspp gratis proyecto OpenSource', + content: 'Crear chatbot WhatsApp en minutos — Servicio de chatbot para whatspp gratis proyecto OpenSource', }, ], } diff --git a/packages/docs/src/routes/docs/migration/index.mdx b/packages/docs/src/routes/docs/migration/index.mdx index 84a1658..2e09f97 100644 --- a/packages/docs/src/routes/docs/migration/index.mdx +++ b/packages/docs/src/routes/docs/migration/index.mdx @@ -49,11 +49,7 @@ En la **_versión (legacy)_** se implementas los flujos de esta manera, en dos a "title": "¿Que te interesa ver?", "message": "Abajo unos botons", "footer": "", - "buttons": [ - { "body": "Telefonos" }, - { "body": "Computadoras" }, - { "body": "Otros" } - ] + "buttons": [{ "body": "Telefonos" }, { "body": "Computadoras" }, { "body": "Otros" }] } }, "catalogo": { @@ -70,51 +66,28 @@ En esta versión es mucho más sencillo, abajo encontrarás un ejemplo del mismo ```js //app.js -const { - createBot, - createProvider, - createFlow, - addKeyword, - addChild, -} = require('@bot-whatsapp/bot') +const { createBot, createProvider, createFlow, addKeyword, addChild } = require('@bot-whatsapp/bot') const BaileysProvider = require('@bot-whatsapp/provider/baileys') //Provider const MockAdapter = require('@bot-whatsapp/database/mock') //Base de datos /** * Declarando flujos principales. */ -const flowHola = addKeyword(['hola', 'ola', 'alo']).addAnswer( - 'Bienvenido a tu tienda online!' -) +const flowHola = addKeyword(['hola', 'ola', 'alo']).addAnswer('Bienvenido a tu tienda online!') -const flowAdios = addKeyword(['adios', 'bye']) - .addAnswer('Que te vaya bien!!') - .addAnswer('Hasta luego!') +const flowAdios = addKeyword(['adios', 'bye']).addAnswer('Que te vaya bien!!').addAnswer('Hasta luego!') -const flowProductos = addKeyword(['productos', 'info']).addAnswer( - 'Te envio una imagen', - { - buttons: [ - { body: 'Telefonos' }, - { body: 'Computadoras' }, - { body: 'Otros' }, - ], - } -) +const flowProductos = addKeyword(['productos', 'info']).addAnswer('Te envio una imagen', { + buttons: [{ body: 'Telefonos' }, { body: 'Computadoras' }, { body: 'Otros' }], +}) -const flowCatalogo = addKeyword(['imagen', 'foto']).addAnswer( - 'Te envio una imagen', - { media: 'https://media2.giphy.com/media/VQJu0IeULuAmCwf5SL/giphy.gif' } -) +const flowCatalogo = addKeyword(['imagen', 'foto']).addAnswer('Te envio una imagen', { + media: 'https://media2.giphy.com/media/VQJu0IeULuAmCwf5SL/giphy.gif', +}) const main = async () => { const adapterDB = new MockAdapter() - const adapterFlow = createFlow([ - flowHola, - flowAdios, - flowProductos, - flowCatalogo, - ]) //Se crean los flujos. + const adapterFlow = createFlow([flowHola, flowAdios, flowProductos, flowCatalogo]) //Se crean los flujos. const adapterProvider = createProvider(BaileysProvider) createBot({ flow: adapterFlow, diff --git a/packages/docs/src/routes/docs/overview/index.mdx b/packages/docs/src/routes/docs/overview/index.mdx index 79830ff..7d2e57c 100644 --- a/packages/docs/src/routes/docs/overview/index.mdx +++ b/packages/docs/src/routes/docs/overview/index.mdx @@ -49,17 +49,15 @@ Qwik is a new kind of web framework that can deliver instant loading web applica

    Instant-on

    - Unlike other frameworks, Qwik is resumable which means Qwik - applications require 0 hydration. This allows Qwik apps to have - instant-on interactivity, regardless of size or complexity + Unlike other frameworks, Qwik is resumable which means Qwik applications require 0 hydration. This allows + Qwik apps to have instant-on interactivity, regardless of size or complexity

    Optimized for speed

    - Qwik has unprecedented performance, offering sub-second full page - loads even on mobile devices. Qwik achieves this by delivering pure - HTML, and incrementally loading JS only as-needed. + Qwik has unprecedented performance, offering sub-second full page loads even on mobile devices. Qwik + achieves this by delivering pure HTML, and incrementally loading JS only as-needed.

    diff --git a/packages/docs/src/routes/docs/providers/index.mdx b/packages/docs/src/routes/docs/providers/index.mdx index 0f6db6a..e534576 100644 --- a/packages/docs/src/routes/docs/providers/index.mdx +++ b/packages/docs/src/routes/docs/providers/index.mdx @@ -4,11 +4,10 @@ import Navigation from '../../../components/widgets/Navigation' # Proveedores - ⚡ Dependiendo del tipo de proveedor que utlices puede que necesites pasar - algunas configuracion adicional como **token, api, etc.** para esos casos te - recomendamos guiarte de los - **[starters](https://github.com/codigoencasa/bot-whatsapp/tree/dev/starters/apps)** - o si gustas puedes editar esta documentación para ir agregando más info + ⚡ Dependiendo del tipo de proveedor que utlices puede que necesites pasar algunas configuracion adicional como + **token, api, etc.** para esos casos te recomendamos guiarte de los + **[starters](https://github.com/codigoencasa/bot-whatsapp/tree/dev/starters/apps)** o si gustas puedes editar esta + documentación para ir agregando más info Es la pieza que conectara tu flujo con Whatsapp. En este chatbot tenemos varios proveedores disponibles la mayoria gratis pero tambien tenemos integracion la api oficial de whatsapp o twilio diff --git a/packages/docs/src/routes/docs/providers/meta/index.mdx b/packages/docs/src/routes/docs/providers/meta/index.mdx index a44476f..d0f1d6f 100644 --- a/packages/docs/src/routes/docs/providers/meta/index.mdx +++ b/packages/docs/src/routes/docs/providers/meta/index.mdx @@ -59,10 +59,7 @@ En el **archivo principal** del bot donde estás implementando la función del a - **jwtToken:** Lo puedes encontrar en la pagina anterior - **verifyToken:** Puedes escribir lo que quieras es como una palabra clave - - En el ejemplo de abajo puedes ver como una sugerencia de como puede ser - utilizando variables de entorno - +En el ejemplo de abajo puedes ver como una sugerencia de como puede ser utilizando variables de entorno ```js const main = async () => { diff --git a/packages/docs/src/routes/docs/providers/twilio/index.mdx b/packages/docs/src/routes/docs/providers/twilio/index.mdx index 5548ad5..37fc6dd 100644 --- a/packages/docs/src/routes/docs/providers/twilio/index.mdx +++ b/packages/docs/src/routes/docs/providers/twilio/index.mdx @@ -5,10 +5,7 @@ import Navigation from '../../../../components/widgets/Navigation' Twilio es una plataforma de desarrollo que permite a los desarrolladores construir aplicaciones de comunicación en la nube y sistemas web. Las API de comunicaciones de Twilio permiten a las empresas proporcionar la experiencia de comunicación adecuada para sus clientes dentro de la web y las aplicaciones móviles. Al usar las API de Twilio, los desarrolladores pueden agregar rápidamente esta funcionalidad a una aplicación, como mensajes de voz, videollamadas, mensajes de texto y más. - - Twilio te proporciona una cuenta **Sandbox** para que puedas probar - gratuitamente el servicio - +Twilio te proporciona una cuenta **Sandbox** para que puedas probar gratuitamente el servicio ### Requerimientos @@ -66,10 +63,7 @@ En el **archivo principal** del bot donde estás implementando la función del a - **ACC_VENDOR:** Es el numero de whatsapp (si ya tienes el plan de pago de Twilio usa el numero que compraste), si aun estas en modo sandbox utliza el numero proporcionado en el paso numero 2 - - En el ejemplo de abajo puedes ver como una sugerencia de como puede ser - utilizando variables de entorno - +En el ejemplo de abajo puedes ver como una sugerencia de como puede ser utilizando variables de entorno ```js const main = async () => { diff --git a/packages/docs/src/routes/index.tsx b/packages/docs/src/routes/index.tsx index 9b0f04a..71fa15a 100644 --- a/packages/docs/src/routes/index.tsx +++ b/packages/docs/src/routes/index.tsx @@ -13,8 +13,7 @@ import { GITHUB_TOKEN } from './docs/constant' // import { SearchModal } from '~/components/widgets/SearchModal' export const onGet: RequestHandlerNetlify = async ({ platform }) => { - const CHECK_GITHUB_TOKEN = - (platform as any)?.['GITHUB_TOKEN'] ?? GITHUB_TOKEN + const CHECK_GITHUB_TOKEN = (platform as any)?.['GITHUB_TOKEN'] ?? GITHUB_TOKEN const dataGithub = await fetchGithub(CHECK_GITHUB_TOKEN) const dataOpenCollective = await fetchOpenCollective() return { @@ -52,8 +51,7 @@ export const head: DocumentHead = { meta: [ { name: 'description', - content: - 'Crear chatbot WhatsApp en minutos — Servicio de chatbot para whatspp gratis proyecto OpenSource', + content: 'Crear chatbot WhatsApp en minutos — Servicio de chatbot para whatspp gratis proyecto OpenSource', }, ], } diff --git a/packages/docs/src/services/github.ts b/packages/docs/src/services/github.ts index e60d250..6ef1186 100644 --- a/packages/docs/src/services/github.ts +++ b/packages/docs/src/services/github.ts @@ -3,17 +3,14 @@ * @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 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 = await data.json() return listUsers.map((u: any) => ({ ...u, diff --git a/packages/docs/src/services/opencollective.ts b/packages/docs/src/services/opencollective.ts index 9a89f25..55e7e75 100644 --- a/packages/docs/src/services/opencollective.ts +++ b/packages/docs/src/services/opencollective.ts @@ -3,12 +3,9 @@ * @returns */ export const fetchOpenCollective = async () => { - const data = await fetch( - `https://opencollective.com/bot-whatsapp/members/users.json?limit=22&offset=0`, - { - method: 'GET', - } - ) + const data = await fetch(`https://opencollective.com/bot-whatsapp/members/users.json?limit=22&offset=0`, { + method: 'GET', + }) const listUsers = await data.json() return listUsers.map((u: any) => ({ html_url: u.profile, diff --git a/packages/docs/tailwind.config.js b/packages/docs/tailwind.config.js index 1614b2e..a92fde1 100644 --- a/packages/docs/tailwind.config.js +++ b/packages/docs/tailwind.config.js @@ -76,9 +76,7 @@ module.exports = { a: { fontWeight: theme('fontWeight.semibold'), textDecoration: 'none', - borderBottom: `1px solid ${theme( - 'colors.sky.300' - )}`, + borderBottom: `1px solid ${theme('colors.sky.300')}`, }, 'a:hover': { borderBottomWidth: '2px', diff --git a/packages/portal/.vscode/qwik-city.code-snippets b/packages/portal/.vscode/qwik-city.code-snippets index b6c1c17..361ddf7 100644 --- a/packages/portal/.vscode/qwik-city.code-snippets +++ b/packages/portal/.vscode/qwik-city.code-snippets @@ -3,11 +3,7 @@ "scope": "javascriptreact,typescriptreact", "prefix": "q:onGet", "description": "onGet function for a route index", - "body": [ - "export const onGet: RequestHandler = (request) => {", - " $0", - "};" - ] + "body": ["export const onGet: RequestHandler = (request) => {", " $0", "};"] }, "onGet (typed)": { "scope": "javascriptreact,typescriptreact", diff --git a/packages/portal/.vscode/qwik.code-snippets b/packages/portal/.vscode/qwik.code-snippets index 4b89dbf..c2a8a8f 100644 --- a/packages/portal/.vscode/qwik.code-snippets +++ b/packages/portal/.vscode/qwik.code-snippets @@ -56,24 +56,13 @@ "scope": "javascriptreact,typescriptreact", "prefix": "q:useTask", "description": "useTask$() function hook", - "body": [ - "useTask$(({ track }) => {", - " track(() => $1);", - " $0", - "});", - "" - ] + "body": ["useTask$(({ track }) => {", " track(() => $1);", " $0", "});", ""] }, "useResource": { "scope": "javascriptreact,typescriptreact", "prefix": "q:useResource", "description": "useResource$() declaration", - "body": [ - "const $1 = useResource$(({ track, cleanup }) => {", - " $0", - "});", - "" - ] + "body": ["const $1 = useResource$(({ track, cleanup }) => {", " $0", "});", ""] }, "useServerMount": { "scope": "javascriptreact,typescriptreact", diff --git a/packages/portal/portal.http.js b/packages/portal/portal.http.js index 54916b6..122f2de 100644 --- a/packages/portal/portal.http.js +++ b/packages/portal/portal.http.js @@ -5,15 +5,9 @@ const polka = require('polka') const HTTP_PORT = process.env.PORT || 3000 const QR_FILE = process.env.QR_FILE ?? 'bot' -const PUBLIC_URL = - process.env.PUBLIC_URL ?? - process.env.RAILWAY_STATIC_URL ?? - 'http://localhost' +const PUBLIC_URL = process.env.PUBLIC_URL ?? process.env.RAILWAY_STATIC_URL ?? 'http://localhost' -/* const dir = [join(__dirname, 'dist'), join(__dirname, '..', 'dist')].find((i) => - existsSync(i) -) */ -const dir = join(__dirname, 'dist') +const dir = [join(__dirname, 'dist'), join(__dirname, '..', 'dist')].find((i) => existsSync(i)) const serve = require('serve-static')(dir) /** @@ -33,14 +27,8 @@ const start = (args) => { console.log(``) console.log(bgYellow(`🚩 ESCANEAR QR 🚩`)) console.log(cyan(`Existen varias maneras de escanear el QR code`)) - console.log( - cyan(`- Tambien puedes visitar `), - yellow(`${publicSite}:${port}`) - ) - console.log( - cyan(`- Se ha creado un archivo que finaliza `), - yellow('qr.png') - ) + console.log(cyan(`- Tambien puedes visitar `), yellow(`${publicSite}:${port}`)) + console.log(cyan(`- Se ha creado un archivo que finaliza `), yellow('qr.png')) console.log(``) } diff --git a/packages/portal/src/components/header/header.tsx b/packages/portal/src/components/header/header.tsx index f1c7fa7..ebaa11b 100644 --- a/packages/portal/src/components/header/header.tsx +++ b/packages/portal/src/components/header/header.tsx @@ -8,28 +8,18 @@ export default component$(() => { return (
    • - + Docs
    • - + Examples
    • diff --git a/packages/portal/src/components/icons/qwik.tsx b/packages/portal/src/components/icons/qwik.tsx index 3bd8d91..fc113f6 100644 --- a/packages/portal/src/components/icons/qwik.tsx +++ b/packages/portal/src/components/icons/qwik.tsx @@ -1,11 +1,5 @@ export const QwikLogo = () => ( - + { @@ -20,12 +15,7 @@ export const QR = component$(() => { return (
      - QR + QR
      ) }) diff --git a/packages/portal/src/components/router-head/router-head.tsx b/packages/portal/src/components/router-head/router-head.tsx index c0811e4..dee9459 100644 --- a/packages/portal/src/components/router-head/router-head.tsx +++ b/packages/portal/src/components/router-head/router-head.tsx @@ -10,10 +10,7 @@ export const RouterHead = component$(() => { {head.title} - + {head.meta.map((m) => ( diff --git a/packages/portal/src/global.css b/packages/portal/src/global.css index cc17b32..6b1eeb6 100644 --- a/packages/portal/src/global.css +++ b/packages/portal/src/global.css @@ -15,8 +15,7 @@ body { background-color: #fafafa; - font-family: 'Inter', sans-serif, ui-sans-serif, system-ui, -apple-system, - BlinkMacSystemFont, sans-serif; + font-family: 'Inter', sans-serif, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, sans-serif; padding: 20px 20px 40px 20px; } diff --git a/packages/portal/src/routes/index.css b/packages/portal/src/routes/index.css index f5ff37b..cf07671 100644 --- a/packages/portal/src/routes/index.css +++ b/packages/portal/src/routes/index.css @@ -12,8 +12,7 @@ .page .btn-link { background: white; - box-shadow: rgb(0 0 0 / 16%) 0px 10px 36px 0px, - rgb(0 0 0 / 6%) 0px 0px 0px 1px; + box-shadow: rgb(0 0 0 / 16%) 0px 10px 36px 0px, rgb(0 0 0 / 6%) 0px 0px 0px 1px; padding: 10px; border-radius: 5px; font-weight: 600; diff --git a/packages/portal/src/routes/index.tsx b/packages/portal/src/routes/index.tsx index 44c8117..2a26307 100644 --- a/packages/portal/src/routes/index.tsx +++ b/packages/portal/src/routes/index.tsx @@ -15,19 +15,13 @@ export default component$(() => {

      Whatsapp QR

      - 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.
      Además, nuestro - Chatbot se integra fácilmente con otros sistemas y - herramientas que ya esté utilizando en su negocio. + 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.
      Además, nuestro Chatbot se integra fácilmente con otros sistemas y herramientas que + ya esté utilizando en su negocio.

      diff --git a/packages/provider/common/download.js b/packages/provider/common/download.js new file mode 100644 index 0000000..76e23a0 --- /dev/null +++ b/packages/provider/common/download.js @@ -0,0 +1,65 @@ +const mimeDep = require('mime-types') +const { tmpdir } = require('os') +const http = require('http') +const https = require('https') +const { rename, createWriteStream } = require('fs') + +/** + * Extrar el mimetype from buffer + * @param {string} response + * @returns + */ +const fileTypeFromFile = async (response) => { + const type = response.headers['content-type'] ?? null + const ext = mimeDep.extension(type) + return { + type, + ext, + } +} + +/** + * Descargar archivo binay en tmp + * @param {*} url + * @returns + */ +const generalDownload = async (url) => { + const handleDownload = () => { + const checkProtocol = url.includes('https:') + const handleHttp = checkProtocol ? https : http + const name = `tmp-${Date.now()}-dat` + const fullPath = `${tmpdir()}/${name}` + const file = createWriteStream(fullPath) + + return new Promise((res, rej) => { + handleHttp.get(url, function (response) { + response.pipe(file) + file.on('finish', async function () { + file.close() + res({ response, fullPath }) + }) + file.on('error', function () { + file.close() + rej(null) + }) + }) + }) + } + + const handleFile = (pathInput, ext) => + new Promise((resolve, reject) => { + const fullPath = `${pathInput}.${ext}` + rename(pathInput, fullPath, (err) => { + if (err) reject(null) + resolve(fullPath) + }) + }) + + const httpResponse = await handleDownload() + const { ext } = await fileTypeFromFile(httpResponse.response) + const getPath = await handleFile(httpResponse.fullPath, ext) + + return getPath +} + +module.exports = { generalDownload } diff --git a/packages/provider/src/baileys/index.js b/packages/provider/src/baileys/index.js index de6c66d..a2d88ae 100644 --- a/packages/provider/src/baileys/index.js +++ b/packages/provider/src/baileys/index.js @@ -4,21 +4,14 @@ const pino = require('pino') const rimraf = require('rimraf') const mime = require('mime-types') const { join } = require('path') -const { existsSync, createWriteStream, readFileSync } = require('fs') +const { createWriteStream, readFileSync } = require('fs') const { Console } = require('console') -const { - default: makeWASocket, - useMultiFileAuthState, - Browsers, - DisconnectReason, -} = require('@adiwajshing/baileys') -const { - baileyGenerateImage, - baileyCleanNumber, - baileyIsValidNumber, - baileyDownloadMedia, -} = require('./utils') +const { default: makeWASocket, useMultiFileAuthState, Browsers, DisconnectReason } = require('@adiwajshing/baileys') + +const { baileyGenerateImage, baileyCleanNumber, baileyIsValidNumber } = require('./utils') + +const { generalDownload } = require('../../common/download') const logger = new Console({ stdout: createWriteStream(`${process.cwd()}/baileys.log`), @@ -44,9 +37,7 @@ class BaileysProvider extends ProviderClass { */ initBailey = async () => { const NAME_DIR_SESSION = `${this.globalVendorArgs.name}_sessions` - const { state, saveCreds } = await useMultiFileAuthState( - NAME_DIR_SESSION - ) + const { state, saveCreds } = await useMultiFileAuthState(NAME_DIR_SESSION) this.saveCredsGlobal = saveCreds try { @@ -55,7 +46,7 @@ class BaileysProvider extends ProviderClass { auth: state, browser: Browsers.macOS('Desktop'), syncFullHistory: false, - logger: pino({ level: 'error' }), + logger: pino({ level: 'fatal' }), }) sock.ev.on('connection.update', async (update) => { @@ -94,10 +85,7 @@ class BaileysProvider extends ProviderClass { `Necesitas ayuda: https://link.codigoencasa.com/DISCORD`, ], }) - await baileyGenerateImage( - qr, - `${this.globalVendorArgs.name}.qr.png` - ) + await baileyGenerateImage(qr, `${this.globalVendorArgs.name}.qr.png`) } }) @@ -129,9 +117,18 @@ class BaileysProvider extends ProviderClass { const [messageCtx] = messages let payload = { ...messageCtx, - body: messageCtx?.message?.conversation, + body: messageCtx?.message?.extendedTextMessage?.text ?? messageCtx?.message?.conversation, + from: messageCtx?.key?.remoteJid, } + + if (messageCtx.message.locationMessage) { + const { degreesLatitude, degreesLongitude } = messageCtx.message.locationMessage + if (typeof degreesLatitude === 'number' && typeof degreesLongitude === 'number') { + payload = { ...payload, body: `📍` } + } + } + if (payload.from === 'status@broadcast') return if (payload?.key?.fromMe) return @@ -140,9 +137,7 @@ class BaileysProvider extends ProviderClass { return } - const btnCtx = - payload?.message?.buttonsResponseMessage - ?.selectedDisplayText + const btnCtx = payload?.message?.buttonsResponseMessage?.selectedDisplayText if (btnCtx) payload.body = btnCtx @@ -161,6 +156,11 @@ class BaileysProvider extends ProviderClass { } } + /** + * Funcion SendRaw envia opciones directamente del proveedor + * @example await sendMessage('+XXXXXXXXXXX', 'Hello World') + */ + /** * @alpha * @param {string} number @@ -169,14 +169,47 @@ class BaileysProvider extends ProviderClass { */ sendMedia = async (number, imageUrl, text) => { - const fileDownloaded = await baileyDownloadMedia(imageUrl) + const fileDownloaded = await generalDownload(imageUrl) + const mimeType = mime.lookup(fileDownloaded) + + if (mimeType.includes('image')) return this.sendImage(number, fileDownloaded, text) + if (mimeType.includes('video')) return this.sendVideo(number, fileDownloaded, text) + if (mimeType.includes('audio')) return this.sendAudio(number, fileDownloaded, text) + + return this.sendFile(number, fileDownloaded) + } + + /** + * Enviar imagen + * @param {*} number + * @param {*} imageUrl + * @param {*} text + * @returns + */ + sendImage = async (number, filePath, text) => { return this.vendor.sendMessage(number, { - image: readFileSync(fileDownloaded), + image: readFileSync(filePath), caption: text, }) } /** + * Enviar video + * @param {*} number + * @param {*} imageUrl + * @param {*} text + * @returns + */ + sendVideo = async (number, filePath, text) => { + return this.vendor.sendMessage(number, { + video: readFileSync(filePath), + caption: text, + gifPlayback: true, + }) + } + + /** + * Enviar audio * @alpha * @param {string} number * @param {string} message @@ -184,11 +217,10 @@ class BaileysProvider extends ProviderClass { * @example await sendMessage('+XXXXXXXXXXX', 'audio.mp3') */ - sendAudio = async (number, audioUrl, voiceNote = false) => { - const numberClean = number.replace('+', '') - await this.vendor.sendMessage(`${numberClean}@c.us`, { + sendAudio = async (number, audioUrl) => { + return this.vendor.sendMessage(number, { audio: { url: audioUrl }, - ptt: voiceNote, + ptt: true, }) } @@ -210,17 +242,13 @@ class BaileysProvider extends ProviderClass { */ sendFile = async (number, filePath) => { - if (existsSync(filePath)) { - const mimeType = mime.lookup(filePath) - const numberClean = number.replace('+', '') - const fileName = filePath.split('/').pop() - - await this.vendor.sendMessage(`${numberClean}@c.us`, { - document: { url: filePath }, - mimetype: mimeType, - fileName: fileName, - }) - } + const mimeType = mime.lookup(filePath) + const fileName = filePath.split('/').pop() + return this.vendor.sendMessage(number, { + document: { url: filePath }, + mimetype: mimeType, + fileName: fileName, + }) } /** @@ -258,13 +286,12 @@ class BaileysProvider extends ProviderClass { * @param {string} message * @example await sendMessage('+XXXXXXXXXXX', 'Hello World') */ + sendMessage = async (numberIn, message, { options }) => { const number = baileyCleanNumber(numberIn) - if (options?.buttons?.length) - return this.sendButtons(number, message, options.buttons) - if (options?.media) - return this.sendMedia(number, options.media, message) + 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) } @@ -299,12 +326,7 @@ class BaileysProvider extends ProviderClass { * @example await sendContact("xxxxxxxxxxx@c.us" || "xxxxxxxxxxxxxxxxxx@g.us", "+xxxxxxxxxxx", "Robin Smith", messages) */ - sendContact = async ( - remoteJid, - contactNumber, - displayName, - messages = null - ) => { + sendContact = async (remoteJid, contactNumber, displayName, messages = null) => { const cleanContactNumber = contactNumber.replaceAll(' ', '') const waid = cleanContactNumber.replace('+', '') diff --git a/packages/provider/src/baileys/package.json b/packages/provider/src/baileys/package.json index da529d3..918a8e9 100644 --- a/packages/provider/src/baileys/package.json +++ b/packages/provider/src/baileys/package.json @@ -1,7 +1,6 @@ { "dependencies": { "@adiwajshing/baileys": "4.4.0", - "mime-types": "2.1.35", "wa-sticker-formatter": "4.3.2" } } diff --git a/packages/provider/src/baileys/utils.js b/packages/provider/src/baileys/utils.js index 433ddee..0b2a886 100644 --- a/packages/provider/src/baileys/utils.js +++ b/packages/provider/src/baileys/utils.js @@ -1,9 +1,6 @@ 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', '') @@ -41,38 +38,8 @@ const baileyIsValidNumber = (rawNumber) => { return !exist } -/** - * 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/meta/index.js b/packages/provider/src/meta/index.js index b3a106b..2b2e0e0 100644 --- a/packages/provider/src/meta/index.js +++ b/packages/provider/src/meta/index.js @@ -56,15 +56,11 @@ class MetaProvider extends ProviderClass { sendMessageMeta = async (body) => { try { - const response = await axios.post( - `${URL}/${this.numberId}/messages`, - body, - { - headers: { - Authorization: `Bearer ${this.jwtToken}`, - }, - } - ) + const response = await axios.post(`${URL}/${this.numberId}/messages`, body, { + headers: { + Authorization: `Bearer ${this.jwtToken}`, + }, + }) return response.data } catch (error) { return Promise.resolve(error) @@ -106,8 +102,7 @@ class MetaProvider extends ProviderClass { */ sendMessage = async (number, message, { options }) => { if (options?.buttons?.length) return console.log('Envio de botones') - if (options?.media) - return this.sendMedia(number, message, options.media) + if (options?.media) return this.sendMedia(number, message, options.media) this.sendtext(number, message) } diff --git a/packages/provider/src/meta/server.js b/packages/provider/src/meta/server.js index 3d6ef61..cbd59b0 100644 --- a/packages/provider/src/meta/server.js +++ b/packages/provider/src/meta/server.js @@ -81,9 +81,7 @@ class MetaWebHookServer extends EventEmitter { * @returns */ buildHTTPServer = () => { - this.metaServer - .use(urlencoded({ extended: true })) - .get('/webhook', this.verifyToken) + this.metaServer.use(urlencoded({ extended: true })).get('/webhook', this.verifyToken) this.metaServer .use(urlencoded({ extended: true })) @@ -99,9 +97,7 @@ class MetaWebHookServer extends EventEmitter { this.metaServer.listen(this.metaPort, () => { console.log(``) console.log(`[meta]: Agregar esta url "WHEN A MESSAGE COMES IN"`) - console.log( - `[meta]: POST http://localhost:${this.metaPort}/webhook` - ) + console.log(`[meta]: POST http://localhost:${this.metaPort}/webhook`) console.log(`[meta]: Más información en la documentacion`) console.log(``) }) diff --git a/packages/provider/src/mock/index.js b/packages/provider/src/mock/index.js index 63034c0..9f47757 100644 --- a/packages/provider/src/mock/index.js +++ b/packages/provider/src/mock/index.js @@ -1,20 +1,20 @@ -const { ProviderClass } = require('@bot-whatsapp/bot') +const { ProviderClass } = require('../../../bot') + +function delay(ms) { + return new Promise((res) => setTimeout(res, ms)) +} class MockProvider extends ProviderClass { constructor() { super() } - delaySendMessage = (miliseconds, eventName, payload) => - new Promise((res) => - setTimeout(() => { - this.emit(eventName, payload) - res - }, miliseconds) - ) + delaySendMessage = async (miliseconds, eventName, payload) => { + await delay(miliseconds) + this.emit(eventName, payload) + } sendMessage = async (userId, message) => { - console.log(`Enviando... ${userId}, ${message}`) return Promise.resolve({ userId, message }) } } diff --git a/packages/provider/src/twilio/index.js b/packages/provider/src/twilio/index.js index 7c25bb9..e1a50dc 100644 --- a/packages/provider/src/twilio/index.js +++ b/packages/provider/src/twilio/index.js @@ -86,12 +86,8 @@ class TwilioProvider extends ProviderClass { */ sendButtons = async () => { console.log(``) - console.log( - `[NOTA]: Actualmente enviar botons con Twilio esta en desarrollo` - ) - console.log( - `[NOTA]: https://www.twilio.com/es-mx/docs/whatsapp/buttons` - ) + console.log(`[NOTA]: Actualmente enviar botons con Twilio esta en desarrollo`) + console.log(`[NOTA]: https://www.twilio.com/es-mx/docs/whatsapp/buttons`) console.log(``) } @@ -104,10 +100,8 @@ class TwilioProvider extends ProviderClass { */ sendMessage = async (number, message, { options }) => { number = parseNumber(number) - if (options?.buttons?.length) - this.sendButtons(number, message, options.buttons) - if (options?.media) - return this.sendMedia(number, message, options.media) + if (options?.buttons?.length) this.sendButtons(number, message, options.buttons) + if (options?.media) return this.sendMedia(number, message, options.media) return this.vendor.messages.create({ body: message, from: `whatsapp:+${this.vendorNumber}`, diff --git a/packages/provider/src/twilio/server.js b/packages/provider/src/twilio/server.js index ae09da7..aaf49c2 100644 --- a/packages/provider/src/twilio/server.js +++ b/packages/provider/src/twilio/server.js @@ -51,9 +51,7 @@ class TwilioWebHookServer extends EventEmitter { this.twilioServer.listen(this.twilioPort, () => { console.log(``) console.log(`[Twilio]: Agregar esta url "WHEN A MESSAGE COMES IN"`) - console.log( - `[Twilio]: POST http://localhost:${this.twilioPort}/twilio-hook` - ) + console.log(`[Twilio]: POST http://localhost:${this.twilioPort}/twilio-hook`) console.log(`[Twilio]: Más información en la documentacion`) console.log(``) }) diff --git a/packages/provider/src/venom/index.js b/packages/provider/src/venom/index.js index 4b7c231..6776033 100644 --- a/packages/provider/src/venom/index.js +++ b/packages/provider/src/venom/index.js @@ -2,18 +2,16 @@ const { ProviderClass } = require('@bot-whatsapp/bot') const venom = require('venom-bot') const { createWriteStream } = require('fs') const { Console } = require('console') +const mime = require('mime-types') -const { - venomCleanNumber, - venomGenerateImage, - venomisValidNumber, - venomDownloadMedia, -} = require('./utils') +const { venomCleanNumber, venomGenerateImage, venomisValidNumber } = require('./utils') const logger = new Console({ stdout: createWriteStream(`${process.cwd()}/venom.log`), }) +const { generalDownload } = require('../../common/download') + /** * ⚙️ VenomProvider: Es una clase tipo adaptor * que extiende clases de ProviderClass (la cual es como interfaz para sber que funciones rqueridas) @@ -87,11 +85,17 @@ class VenomProvider extends ProviderClass { if (payload.from === 'status@broadcast') { return } - if (!venomisValidNumber(payload.from)) { return } payload.from = venomCleanNumber(payload.from, true) + if (payload.hasOwnProperty('lat') && payload.hasOwnProperty('lng')) { + const lat = payload.lat + const lng = payload.lng + if (lat !== '' && lng !== '') { + payload = { ...payload, body: `📍` } + } + } this.emit('message', payload) }, }, @@ -106,8 +110,7 @@ class VenomProvider extends ProviderClass { const listEvents = this.busEvents() for (const { event, func } of listEvents) { - if (this.vendor[event]) - this.vendor[event]((payload) => func(payload)) + if (this.vendor[event]) this.vendor[event]((payload) => func(payload)) } } @@ -120,20 +123,64 @@ class VenomProvider extends ProviderClass { * @returns */ sendButtons = async (number, message, buttons = []) => { - const NOTE_VENOM_BUTTON = [ - `Actualmente VENOM tiene problemas con la API`, - `para el envio de Botones`, - ].join('\n') + 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`) + 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 audio + * @alpha + * @param {string} number + * @param {string} message + * @param {boolean} voiceNote optional + * @example await sendMessage('+XXXXXXXXXXX', 'audio.mp3') + */ + + sendAudio = async (number, audioPath) => { + return this.vendor.sendVoice(number, audioPath) + } + + /** + * Enviar imagen + * @param {*} number + * @param {*} imageUrl + * @param {*} text + * @returns + */ + sendImage = async (number, filePath, text) => { + return this.vendor.sendImage(number, filePath, 'image-name', text) + } + + /** + * + * @param {string} number + * @param {string} filePath + * @example await sendMessage('+XXXXXXXXXXX', './document/file.pdf') + */ + + sendFile = async (number, filePath, text) => { + const fileName = filePath.split('/').pop() + return this.vendor.sendFile(number, filePath, fileName, text) + } + + /** + * Enviar video + * @param {*} number + * @param {*} imageUrl + * @param {*} text + * @returns + */ + sendVideo = async (number, filePath, text) => { + return this.vendor.sendVideoAsGif(number, filePath, 'video.gif', text) + } + /** * Enviar imagen o multimedia * @param {*} number @@ -141,10 +188,15 @@ class VenomProvider extends ProviderClass { * @param {*} message * @returns */ - sendMedia = async (number, mediaInput, message) => { - if (!mediaInput) throw new Error(`NO_SE_ENCONTRO: ${mediaInput}`) - const fileDownloaded = await venomDownloadMedia(mediaInput) - return this.vendor.sendImage(number, fileDownloaded, '.', message) + sendMedia = async (number, mediaUrl, text) => { + const fileDownloaded = await generalDownload(mediaUrl) + const mimeType = mime.lookup(fileDownloaded) + + if (mimeType.includes('image')) return this.sendImage(number, fileDownloaded, text) + if (mimeType.includes('video')) return this.sendVideo(number, fileDownloaded, text) + if (mimeType.includes('audio')) return this.sendAudio(number, fileDownloaded) + + return this.sendFile(number, fileDownloaded, text) } /** @@ -156,10 +208,8 @@ class VenomProvider extends ProviderClass { */ sendMessage = async (userId, message, { options }) => { const number = venomCleanNumber(userId) - if (options?.buttons?.length) - return this.sendButtons(number, message, options.buttons) - if (options?.media) - return this.sendMedia(number, options.media, message) + if (options?.buttons?.length) return this.sendButtons(number, message, options.buttons) + if (options?.media) return this.sendMedia(number, options.media, message) return this.vendor.sendText(number, message) } } diff --git a/packages/provider/src/web-whatsapp/index.js b/packages/provider/src/web-whatsapp/index.js index f7f8bd0..2e87938 100644 --- a/packages/provider/src/web-whatsapp/index.js +++ b/packages/provider/src/web-whatsapp/index.js @@ -1,18 +1,16 @@ const { Client, LocalAuth, MessageMedia, Buttons } = require('whatsapp-web.js') const { ProviderClass } = require('@bot-whatsapp/bot') const { Console } = require('console') -const { createWriteStream } = require('fs') -const { - wwebCleanNumber, - wwebDownloadMedia, - wwebGenerateImage, - wwebIsValidNumber, -} = require('./utils') +const { createWriteStream, readFileSync } = require('fs') +const { wwebCleanNumber, wwebGenerateImage, wwebIsValidNumber } = require('./utils') const logger = new Console({ stdout: createWriteStream('./log'), }) +const { generalDownload } = require('../../common/download') +const mime = require('mime-types') + /** * ⚙️ WebWhatsappProvider: Es una clase tipo adaptor * que extiende clases de ProviderClass (la cual es como interfaz para sber que funciones rqueridas) @@ -30,11 +28,8 @@ class WebWhatsappProvider extends ProviderClass { }), puppeteer: { headless: true, - args: [ - '--no-sandbox', - '--disable-setuid-sandbox', - '--unhandled-rejections=strict', - ], + args: ['--no-sandbox', '--disable-setuid-sandbox', '--unhandled-rejections=strict'], + //executablePath: 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe', }, }) @@ -77,10 +72,7 @@ class WebWhatsappProvider extends ProviderClass { `Necesitas ayuda: https://link.codigoencasa.com/DISCORD`, ], }) - await wwebGenerateImage( - qr, - `${this.globalVendorArgs.name}.qr.png` - ) + await wwebGenerateImage(qr, `${this.globalVendorArgs.name}.qr.png`) }, }, { @@ -98,28 +90,14 @@ class WebWhatsappProvider extends ProviderClass { return } payload.from = wwebCleanNumber(payload.from, true) + if (payload._data.lat && payload._data.lng) { + payload = { ...payload, body: `📍` } + } this.emit('message', payload) }, }, ] - /** - * Enviar un archivo multimedia - * https://docs.wwebjs.dev/MessageMedia.html - * @private - * @param {*} number - * @param {*} mediaInput - * @returns - */ - sendMedia = async (number, mediaInput = null) => { - if (!mediaInput) throw new Error(`NO_SE_ENCONTRO: ${mediaInput}`) - const fileDownloaded = await wwebDownloadMedia(mediaInput) - const media = MessageMedia.fromFilePath(fileDownloaded) - return this.vendor.sendMessage(number, media, { - sendAudioAsVoice: true, - }) - } - /** * Enviar botones * https://docs.wwebjs.dev/Buttons.html @@ -130,6 +108,9 @@ class WebWhatsappProvider extends ProviderClass { * @returns */ sendButtons = async (number, message, buttons = []) => { + console.log(`🚩 ¿No te funciona los botones? Intenta instalar`) + console.log(`npm i github:pedroslopez/whatsapp-web.js#fix-buttons-list`) + const buttonMessage = new Buttons(message, buttons, '', '') return this.vendor.sendMessage(number, buttonMessage) } @@ -170,6 +151,91 @@ class WebWhatsappProvider extends ProviderClass { return this.vendor.sendMessage(number, message) } + /** + * Enviar imagen + * @param {*} number + * @param {*} imageUrl + * @param {*} text + * @returns + */ + sendImage = async (number, filePath, caption) => { + const base64 = readFileSync(filePath, { encoding: 'base64' }) + const mimeType = mime.lookup(filePath) + const media = new MessageMedia(mimeType, base64) + return this.vendor.sendMessage(number, media, { caption }) + } + + /** + * Enviar audio + * @param {*} number + * @param {*} imageUrl + * @param {*} text + * @returns + */ + + sendAudio = async (number, filePath, caption) => { + const base64 = readFileSync(filePath, { encoding: 'base64' }) + const mimeType = mime.lookup(filePath) + const media = new MessageMedia(mimeType, base64) + return this.vendor.sendMessage(number, media, { caption }) + } + + /** + * Enviar video + * @param {*} number + * @param {*} imageUrl + * @param {*} text + * @returns + */ + sendVideo = async (number, filePath) => { + const base64 = readFileSync(filePath, { encoding: 'base64' }) + const mimeType = mime.lookup(filePath) + const media = new MessageMedia(mimeType, base64) + return this.vendor.sendMessage(number, media, { + sendMediaAsDocument: true, + }) + } + + /** + * Enviar Arhivos/pdf + * @param {*} number + * @param {*} imageUrl + * @param {*} text + * @returns + */ + sendFile = async (number, filePath) => { + const base64 = readFileSync(filePath, { encoding: 'base64' }) + const mimeType = mime.lookup(filePath) + const media = new MessageMedia(mimeType, base64) + return this.vendor.sendMessage(number, media) + } + + /** + * Enviar imagen o multimedia + * @param {*} number + * @param {*} mediaInput + * @param {*} message + * @returns + */ + sendMedia = async (number, mediaUrl, text) => { + const fileDownloaded = await generalDownload(mediaUrl) + const mimeType = mime.lookup(fileDownloaded) + + if (mimeType.includes('image')) return this.sendImage(number, fileDownloaded, text) + if (mimeType.includes('video')) return this.sendVideo(number, fileDownloaded) + if (mimeType.includes('audio')) return this.sendAudio(number, fileDownloaded) + + return this.sendFile(number, fileDownloaded) + } + + /** + * Funcion SendRaw envia opciones directamente del proveedor + * @param {string} number + * @param {string} message + * @example await sendMessage('+XXXXXXXXXXX', 'Hello World') + */ + + sendRaw = () => this.vendor.sendMessage /** * * @param {*} userId @@ -179,8 +245,7 @@ class WebWhatsappProvider extends ProviderClass { */ sendMessage = async (userId, message, { options }) => { const number = wwebCleanNumber(userId) - 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) return this.sendText(number, message) } diff --git a/packages/provider/src/web-whatsapp/package.json b/packages/provider/src/web-whatsapp/package.json index d15dbe0..2fc0278 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.19.2" + "whatsapp-web.js": "1.19.3" } } diff --git a/packages/provider/tests/provider.class.test.js b/packages/provider/tests/provider.class.test.js index 3a892fd..dc3320a 100644 --- a/packages/provider/tests/provider.class.test.js +++ b/packages/provider/tests/provider.class.test.js @@ -1,6 +1,6 @@ const { test } = require('uvu') const assert = require('uvu/assert') -const MockProvider = require('../../../__mocks__/mock.provider') +const MockProvider = require('../../provider/src/mock') test(`ProviderClass`, async () => { const provider = new MockProvider() diff --git a/scripts/checker.js b/scripts/checker.js index b68cd57..3cb4329 100644 --- a/scripts/checker.js +++ b/scripts/checker.js @@ -18,13 +18,9 @@ const [PKG_NAME, PKG_STABLE] = process.argv.slice(2) || [null, null] * @param {*} pkgName */ const checkPkg = async (pkgName = '') => { - const { stdout } = await cmd( - NPM_COMMAND, - ['show', `${pkgName}`, 'version'], - { - stdio: 'inherit', - } - ) + const { stdout } = await cmd(NPM_COMMAND, ['show', `${pkgName}`, 'version'], { + stdio: 'inherit', + }) return stdout.trim().replace('\n', '') } @@ -36,12 +32,7 @@ const checkPkg = async (pkgName = '') => { const checkPkgStable = async (pkgName = '', version = '') => { const { stdout } = await cmd( NPM_COMMAND, - [ - 'show', - `${pkgName}@${version.split('.').shift()}.*`, - 'version', - '--json', - ], + ['show', `${pkgName}@${version.split('.').shift()}.*`, 'version', '--json'], { stdio: 'inherit', } @@ -65,17 +56,14 @@ const checkPkgStable = async (pkgName = '', version = '') => { * @returns */ const checkEveryProvider = async (provider = '', stable = true) => { - const pkgDependencies = readFileSync( - join(PATH_PACKAGES, 'provider', 'src', provider, 'package.json') - ) + 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, pkgVersion] of devParse) { if (!stable) newDevParse[pkgName] = await checkPkg(pkgName) - if (stable) - newDevParse[pkgName] = await checkPkgStable(pkgName, pkgVersion) + if (stable) newDevParse[pkgName] = await checkPkgStable(pkgName, pkgVersion) console.log(newDevParse) } @@ -93,25 +81,12 @@ const checkEveryProvider = async (provider = '', stable = true) => { * @returns */ const updateDependencies = async (provider = '', list = {}) => { - const pathProvider = join( - PATH_PACKAGES, - 'provider', - 'src', - provider, - 'package.json' - ) + 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 - ) - ) + writeFileSync(pathProvider, JSON.stringify({ dependencies: { ...dependencies, ...list } }, null, 2)) } catch (e) { console.log(e) return {} @@ -125,15 +100,11 @@ const updateDependencies = async (provider = '', list = {}) => { */ const updateStarters = async (provider = '', updateDev = {}) => { provider = provider === 'web-whatsapp' ? 'wweb' : provider - const allStarters = readdirSync(PATH_STARTERS).filter((n) => - n.includes(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 pkgDependenciesBase = readFileSync(join(PATH_STARTERS, base, 'package.json')) const pkgBase = JSON.parse(pkgDependenciesBase) writeFileSync( join(PATH_STARTERS, base, 'package.json'), @@ -157,10 +128,7 @@ const main = async () => { if (PKG_NAME) { 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' - ) + const list = await checkEveryProvider(providerName, providerStable === 'true') await updateDependencies(providerName, list) await updateStarters(providerName, list) } diff --git a/scripts/github.js b/scripts/github.js index 9277d83..71e8eac 100644 --- a/scripts/github.js +++ b/scripts/github.js @@ -39,8 +39,7 @@ const main = async () => { const githubToken = GITHUB_TOKEN ? GITHUB_TOKEN.split('=').at(1) : null const pkgNumber = PKG_ARG ? PKG_ARG.split('=').at(1) : null - if (pkgNumber) - await githubGithubRelease(`v${pkgNumber}`, pkgNumber, githubToken) + if (pkgNumber) await githubGithubRelease(`v${pkgNumber}`, pkgNumber, githubToken) } } diff --git a/scripts/move.js b/scripts/move.js index e59897b..f77fb38 100644 --- a/scripts/move.js +++ b/scripts/move.js @@ -10,14 +10,7 @@ const copyLibPkg = async (pkgName, to) => { await fs.copy(FROM, TO) } -const listLib = [ - 'create-bot-whatsapp', - 'bot', - 'database', - 'provider', - 'contexts', - 'portal', -] +const listLib = ['create-bot-whatsapp', 'bot', 'database', 'provider', 'contexts', 'portal'] const main = async () => { for (const iterator of listLib) { diff --git a/scripts/release.js b/scripts/release.js index 9dfcc62..5353e81 100644 --- a/scripts/release.js +++ b/scripts/release.js @@ -18,14 +18,10 @@ const cmd = util.promisify(execFile) */ const npmToken = (token = null) => new Promise((resolve, reject) => { - writeFile( - `${process.cwd()}/.npmrc`, - `//registry.npmjs.org/:_authToken=${token}`, - (error) => { - if (error) reject(error) - resolve() - } - ) + writeFile(`${process.cwd()}/.npmrc`, `//registry.npmjs.org/:_authToken=${token}`, (error) => { + if (error) reject(error) + resolve() + }) }) /** @@ -66,18 +62,11 @@ const updateVersion = async (packageName = null, number = null) => { const pkgJsonObject = readPackage(packageName) const { version } = pkgJsonObject - const newVersion = !number - ? semver.inc(version, 'prepatch', 'alpha') - : `${number}` + const newVersion = !number ? semver.inc(version, 'prepatch', 'alpha') : `${number}` - if (!semver.valid(newVersion)) - throw new Error(`VERSION_ERROR: ${newVersion}`) + if (!semver.valid(newVersion)) throw new Error(`VERSION_ERROR: ${newVersion}`) - const newPkgJson = JSON.stringify( - { ...pkgJsonObject, version: newVersion }, - null, - 2 - ) + const newPkgJson = JSON.stringify({ ...pkgJsonObject, version: newVersion }, null, 2) await updatePackage(packageName, newPkgJson) return { version: newVersion } } @@ -92,14 +81,10 @@ const checkExistVersion = async (packageName = null, version = null) => { try { const pkgJson = join(PATH_PACKAGES, packageName) const pkgJsonObject = readPackage(packageName) - const { stdout } = await cmd( - NPM_COMMAND, - ['view', `${pkgJsonObject.name}@${version}`], - { - stdio: 'inherit', - cwd: pkgJson, - } - ) + const { stdout } = await cmd(NPM_COMMAND, ['view', `${pkgJsonObject.name}@${version}`], { + stdio: 'inherit', + cwd: pkgJson, + }) return true } catch (e) { return false @@ -149,9 +134,7 @@ const main = async () => { let EXIST_VERSION = true const tokenNpm = NPM_TOKEN ? NPM_TOKEN.split('=').at(1) : null const pkgName = PKG_ARG ? PKG_ARG.split('=').at(1) : null - const pkgNumber = PKG_ARG_VERSION - ? PKG_ARG_VERSION.split('=').at(1) - : null + const pkgNumber = PKG_ARG_VERSION ? PKG_ARG_VERSION.split('=').at(1) : null if (tokenNpm) await npmToken(tokenNpm) while (EXIST_VERSION) { diff --git a/starters/apps/base-baileys-json/app.js b/starters/apps/base-baileys-json/app.js index b06887c..5fc0ba1 100644 --- a/starters/apps/base-baileys-json/app.js +++ b/starters/apps/base-baileys-json/app.js @@ -1,23 +1,12 @@ -const { - createBot, - createProvider, - createFlow, - addKeyword, -} = require('@bot-whatsapp/bot') +const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot') const QRPortalWeb = require('@bot-whatsapp/portal') const BaileysProvider = require('@bot-whatsapp/provider/baileys') const JsonFileAdapter = require('@bot-whatsapp/database/json') -const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([ - '📄 Aquí tenemos el flujo secundario', -]) +const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer(['📄 Aquí tenemos el flujo secundario']) -const flowDocs = addKeyword([ - 'doc', - 'documentacion', - 'documentación', -]).addAnswer( +const flowDocs = addKeyword(['doc', 'documentacion', 'documentación']).addAnswer( [ '📄 Aquí encontras las documentación recuerda que puedes mejorarla', 'https://bot-whatsapp.netlify.app/', @@ -53,11 +42,7 @@ const flowGracias = addKeyword(['gracias', 'grac']).addAnswer( ) const flowDiscord = addKeyword(['discord']).addAnswer( - [ - '🤪 Únete al discord', - 'https://link.codigoencasa.com/DISCORD', - '\n*2* Para siguiente paso.', - ], + ['🤪 Únete al discord', 'https://link.codigoencasa.com/DISCORD', '\n*2* Para siguiente paso.'], null, null, [flowSecundario] diff --git a/starters/apps/base-baileys-memory/app.js b/starters/apps/base-baileys-memory/app.js index 3d05e79..7b07e11 100644 --- a/starters/apps/base-baileys-memory/app.js +++ b/starters/apps/base-baileys-memory/app.js @@ -1,23 +1,12 @@ -const { - createBot, - createProvider, - createFlow, - addKeyword, -} = require('@bot-whatsapp/bot') +const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot') const QRPortalWeb = require('@bot-whatsapp/portal') const BaileysProvider = require('@bot-whatsapp/provider/baileys') const MockAdapter = require('@bot-whatsapp/database/mock') -const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([ - '📄 Aquí tenemos el flujo secundario', -]) +const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer(['📄 Aquí tenemos el flujo secundario']) -const flowDocs = addKeyword([ - 'doc', - 'documentacion', - 'documentación', -]).addAnswer( +const flowDocs = addKeyword(['doc', 'documentacion', 'documentación']).addAnswer( [ '📄 Aquí encontras las documentación recuerda que puedes mejorarla', 'https://bot-whatsapp.netlify.app/', @@ -53,11 +42,7 @@ const flowGracias = addKeyword(['gracias', 'grac']).addAnswer( ) const flowDiscord = addKeyword(['discord']).addAnswer( - [ - '🤪 Únete al discord', - 'https://link.codigoencasa.com/DISCORD', - '\n*2* Para siguiente paso.', - ], + ['🤪 Únete al discord', 'https://link.codigoencasa.com/DISCORD', '\n*2* Para siguiente paso.'], null, null, [flowSecundario] diff --git a/starters/apps/base-baileys-mongo/app.js b/starters/apps/base-baileys-mongo/app.js index 2de3ad6..048fa5c 100644 --- a/starters/apps/base-baileys-mongo/app.js +++ b/starters/apps/base-baileys-mongo/app.js @@ -1,9 +1,4 @@ -const { - createBot, - createProvider, - createFlow, - addKeyword, -} = require('@bot-whatsapp/bot') +const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot') const QRPortalWeb = require('@bot-whatsapp/portal') const BaileysProvider = require('@bot-whatsapp/provider/baileys') @@ -28,15 +23,9 @@ const MONGO_DB_NAME = 'db_bot' * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ -const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([ - '📄 Aquí tenemos el flujo secundario', -]) +const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer(['📄 Aquí tenemos el flujo secundario']) -const flowDocs = addKeyword([ - 'doc', - 'documentacion', - 'documentación', -]).addAnswer( +const flowDocs = addKeyword(['doc', 'documentacion', 'documentación']).addAnswer( [ '📄 Aquí encontras las documentación recuerda que puedes mejorarla', 'https://bot-whatsapp.netlify.app/', @@ -72,11 +61,7 @@ const flowGracias = addKeyword(['gracias', 'grac']).addAnswer( ) const flowDiscord = addKeyword(['discord']).addAnswer( - [ - '🤪 Únete al discord', - 'https://link.codigoencasa.com/DISCORD', - '\n*2* Para siguiente paso.', - ], + ['🤪 Únete al discord', 'https://link.codigoencasa.com/DISCORD', '\n*2* Para siguiente paso.'], null, null, [flowSecundario] diff --git a/starters/apps/base-baileys-mysql/app.js b/starters/apps/base-baileys-mysql/app.js index d3dbbe5..30ee231 100644 --- a/starters/apps/base-baileys-mysql/app.js +++ b/starters/apps/base-baileys-mysql/app.js @@ -1,9 +1,4 @@ -const { - createBot, - createProvider, - createFlow, - addKeyword, -} = require('@bot-whatsapp/bot') +const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot') const QRPortalWeb = require('@bot-whatsapp/portal') const BaileysProvider = require('@bot-whatsapp/provider/baileys') @@ -16,6 +11,7 @@ const MYSQL_DB_HOST = 'localhost' const MYSQL_DB_USER = 'usr' const MYSQL_DB_PASSWORD = 'pass' const MYSQL_DB_NAME = 'bot' +const MYSQL_DB_PORT = '3306' /** * 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 +25,9 @@ const MYSQL_DB_NAME = 'bot' * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ -const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([ - '📄 Aquí tenemos el flujo secundario', -]) +const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer(['📄 Aquí tenemos el flujo secundario']) -const flowDocs = addKeyword([ - 'doc', - 'documentacion', - 'documentación', -]).addAnswer( +const flowDocs = addKeyword(['doc', 'documentacion', 'documentación']).addAnswer( [ '📄 Aquí encontras las documentación recuerda que puedes mejorarla', 'https://bot-whatsapp.netlify.app/', @@ -73,11 +63,7 @@ const flowGracias = addKeyword(['gracias', 'grac']).addAnswer( ) const flowDiscord = addKeyword(['discord']).addAnswer( - [ - '🤪 Únete al discord', - 'https://link.codigoencasa.com/DISCORD', - '\n*2* Para siguiente paso.', - ], + ['🤪 Únete al discord', 'https://link.codigoencasa.com/DISCORD', '\n*2* Para siguiente paso.'], null, null, [flowSecundario] @@ -103,6 +89,7 @@ const main = async () => { user: MYSQL_DB_USER, database: MYSQL_DB_NAME, password: MYSQL_DB_PASSWORD, + port: MYSQL_DB_PORT, }) const adapterFlow = createFlow([flowPrincipal]) const adapterProvider = createProvider(BaileysProvider) diff --git a/starters/apps/base-meta-json/app.js b/starters/apps/base-meta-json/app.js index cc4c7ac..4bc73e1 100644 --- a/starters/apps/base-meta-json/app.js +++ b/starters/apps/base-meta-json/app.js @@ -1,9 +1,4 @@ -const { - createBot, - createProvider, - createFlow, - addKeyword, -} = require('@bot-whatsapp/bot') +const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot') const MetaProvider = require('@bot-whatsapp/provider/meta') const JsonFileAdapter = require('@bot-whatsapp/database/json') @@ -20,15 +15,9 @@ const JsonFileAdapter = require('@bot-whatsapp/database/json') * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ -const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([ - '📄 Aquí tenemos el flujo secundario', -]) +const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer(['📄 Aquí tenemos el flujo secundario']) -const flowDocs = addKeyword([ - 'doc', - 'documentacion', - 'documentación', -]).addAnswer( +const flowDocs = addKeyword(['doc', 'documentacion', 'documentación']).addAnswer( [ '📄 Aquí encontras las documentación recuerda que puedes mejorarla', 'https://bot-whatsapp.netlify.app/', @@ -64,11 +53,7 @@ const flowGracias = addKeyword(['gracias', 'grac']).addAnswer( ) const flowDiscord = addKeyword(['discord']).addAnswer( - [ - '🤪 Únete al discord', - 'https://link.codigoencasa.com/DISCORD', - '\n*2* Para siguiente paso.', - ], + ['🤪 Únete al discord', 'https://link.codigoencasa.com/DISCORD', '\n*2* Para siguiente paso.'], null, null, [flowSecundario] diff --git a/starters/apps/base-meta-memory/app.js b/starters/apps/base-meta-memory/app.js index c8201e8..94c5e43 100644 --- a/starters/apps/base-meta-memory/app.js +++ b/starters/apps/base-meta-memory/app.js @@ -1,9 +1,4 @@ -const { - createBot, - createProvider, - createFlow, - addKeyword, -} = require('@bot-whatsapp/bot') +const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot') const MetaProvider = require('@bot-whatsapp/provider/meta') const MockAdapter = require('@bot-whatsapp/database/mock') @@ -20,15 +15,9 @@ const MockAdapter = require('@bot-whatsapp/database/mock') * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ -const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([ - '📄 Aquí tenemos el flujo secundario', -]) +const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer(['📄 Aquí tenemos el flujo secundario']) -const flowDocs = addKeyword([ - 'doc', - 'documentacion', - 'documentación', -]).addAnswer( +const flowDocs = addKeyword(['doc', 'documentacion', 'documentación']).addAnswer( [ '📄 Aquí encontras las documentación recuerda que puedes mejorarla', 'https://bot-whatsapp.netlify.app/', @@ -64,11 +53,7 @@ const flowGracias = addKeyword(['gracias', 'grac']).addAnswer( ) const flowDiscord = addKeyword(['discord']).addAnswer( - [ - '🤪 Únete al discord', - 'https://link.codigoencasa.com/DISCORD', - '\n*2* Para siguiente paso.', - ], + ['🤪 Únete al discord', 'https://link.codigoencasa.com/DISCORD', '\n*2* Para siguiente paso.'], null, null, [flowSecundario] diff --git a/starters/apps/base-meta-mongo/app.js b/starters/apps/base-meta-mongo/app.js index 18cd9ac..c287df4 100644 --- a/starters/apps/base-meta-mongo/app.js +++ b/starters/apps/base-meta-mongo/app.js @@ -1,9 +1,4 @@ -const { - createBot, - createProvider, - createFlow, - addKeyword, -} = require('@bot-whatsapp/bot') +const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot') const MetaProvider = require('@bot-whatsapp/provider/meta') const MongoAdapter = require('@bot-whatsapp/database/mongo') @@ -27,15 +22,9 @@ const MONGO_DB_NAME = 'db_bot' * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ -const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([ - '📄 Aquí tenemos el flujo secundario', -]) +const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer(['📄 Aquí tenemos el flujo secundario']) -const flowDocs = addKeyword([ - 'doc', - 'documentacion', - 'documentación', -]).addAnswer( +const flowDocs = addKeyword(['doc', 'documentacion', 'documentación']).addAnswer( [ '📄 Aquí encontras las documentación recuerda que puedes mejorarla', 'https://bot-whatsapp.netlify.app/', @@ -71,11 +60,7 @@ const flowGracias = addKeyword(['gracias', 'grac']).addAnswer( ) const flowDiscord = addKeyword(['discord']).addAnswer( - [ - '🤪 Únete al discord', - 'https://link.codigoencasa.com/DISCORD', - '\n*2* Para siguiente paso.', - ], + ['🤪 Únete al discord', 'https://link.codigoencasa.com/DISCORD', '\n*2* Para siguiente paso.'], null, null, [flowSecundario] diff --git a/starters/apps/base-meta-mysql/app.js b/starters/apps/base-meta-mysql/app.js index 102f977..31f4f0d 100644 --- a/starters/apps/base-meta-mysql/app.js +++ b/starters/apps/base-meta-mysql/app.js @@ -1,9 +1,4 @@ -const { - createBot, - createProvider, - createFlow, - addKeyword, -} = require('@bot-whatsapp/bot') +const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot') const MetaProvider = require('@bot-whatsapp/provider/meta') const MySQLAdapter = require('@bot-whatsapp/database/mysql') @@ -15,6 +10,7 @@ const MYSQL_DB_HOST = 'localhost' const MYSQL_DB_USER = 'usr' const MYSQL_DB_PASSWORD = 'pass' const MYSQL_DB_NAME = 'bot' +const MYSQL_DB_PORT = '3306' /** * Aqui declaramos los flujos hijos, los flujos se declaran de atras para adelante, es decir que si tienes un flujo de este tipo: @@ -28,15 +24,9 @@ const MYSQL_DB_NAME = 'bot' * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ -const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([ - '📄 Aquí tenemos el flujo secundario', -]) +const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer(['📄 Aquí tenemos el flujo secundario']) -const flowDocs = addKeyword([ - 'doc', - 'documentacion', - 'documentación', -]).addAnswer( +const flowDocs = addKeyword(['doc', 'documentacion', 'documentación']).addAnswer( [ '📄 Aquí encontras las documentación recuerda que puedes mejorarla', 'https://bot-whatsapp.netlify.app/', @@ -72,11 +62,7 @@ const flowGracias = addKeyword(['gracias', 'grac']).addAnswer( ) const flowDiscord = addKeyword(['discord']).addAnswer( - [ - '🤪 Únete al discord', - 'https://link.codigoencasa.com/DISCORD', - '\n*2* Para siguiente paso.', - ], + ['🤪 Únete al discord', 'https://link.codigoencasa.com/DISCORD', '\n*2* Para siguiente paso.'], null, null, [flowSecundario] @@ -102,6 +88,7 @@ const main = async () => { user: MYSQL_DB_USER, database: MYSQL_DB_NAME, password: MYSQL_DB_PASSWORD, + port: MYSQL_DB_PORT, }) const adapterFlow = createFlow([flowPrincipal]) diff --git a/starters/apps/base-twilio-json/app.js b/starters/apps/base-twilio-json/app.js index 047a126..28cbbbe 100644 --- a/starters/apps/base-twilio-json/app.js +++ b/starters/apps/base-twilio-json/app.js @@ -1,9 +1,4 @@ -const { - createBot, - createProvider, - createFlow, - addKeyword, -} = require('@bot-whatsapp/bot') +const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot') const TwilioProvider = require('@bot-whatsapp/provider/twilio') const JsonFileAdapter = require('@bot-whatsapp/database/json') @@ -20,15 +15,9 @@ const JsonFileAdapter = require('@bot-whatsapp/database/json') * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ -const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([ - '📄 Aquí tenemos el flujo secundario', -]) +const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer(['📄 Aquí tenemos el flujo secundario']) -const flowDocs = addKeyword([ - 'doc', - 'documentacion', - 'documentación', -]).addAnswer( +const flowDocs = addKeyword(['doc', 'documentacion', 'documentación']).addAnswer( [ '📄 Aquí encontras las documentación recuerda que puedes mejorarla', 'https://bot-whatsapp.netlify.app/', @@ -64,11 +53,7 @@ const flowGracias = addKeyword(['gracias', 'grac']).addAnswer( ) const flowDiscord = addKeyword(['discord']).addAnswer( - [ - '🤪 Únete al discord', - 'https://link.codigoencasa.com/DISCORD', - '\n*2* Para siguiente paso.', - ], + ['🤪 Únete al discord', 'https://link.codigoencasa.com/DISCORD', '\n*2* Para siguiente paso.'], null, null, [flowSecundario] diff --git a/starters/apps/base-twilio-memory/app.js b/starters/apps/base-twilio-memory/app.js index cc1d16b..db712e8 100644 --- a/starters/apps/base-twilio-memory/app.js +++ b/starters/apps/base-twilio-memory/app.js @@ -1,9 +1,4 @@ -const { - createBot, - createProvider, - createFlow, - addKeyword, -} = require('@bot-whatsapp/bot') +const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot') const TwilioProvider = require('@bot-whatsapp/provider/twilio') const MockAdapter = require('@bot-whatsapp/database/mock') @@ -20,15 +15,9 @@ const MockAdapter = require('@bot-whatsapp/database/mock') * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ -const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([ - '📄 Aquí tenemos el flujo secundario', -]) +const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer(['📄 Aquí tenemos el flujo secundario']) -const flowDocs = addKeyword([ - 'doc', - 'documentacion', - 'documentación', -]).addAnswer( +const flowDocs = addKeyword(['doc', 'documentacion', 'documentación']).addAnswer( [ '📄 Aquí encontras las documentación recuerda que puedes mejorarla', 'https://bot-whatsapp.netlify.app/', @@ -64,11 +53,7 @@ const flowGracias = addKeyword(['gracias', 'grac']).addAnswer( ) const flowDiscord = addKeyword(['discord']).addAnswer( - [ - '🤪 Únete al discord', - 'https://link.codigoencasa.com/DISCORD', - '\n*2* Para siguiente paso.', - ], + ['🤪 Únete al discord', 'https://link.codigoencasa.com/DISCORD', '\n*2* Para siguiente paso.'], null, null, [flowSecundario] diff --git a/starters/apps/base-twilio-mongo/app.js b/starters/apps/base-twilio-mongo/app.js index dcabb99..41f22cb 100644 --- a/starters/apps/base-twilio-mongo/app.js +++ b/starters/apps/base-twilio-mongo/app.js @@ -1,9 +1,4 @@ -const { - createBot, - createProvider, - createFlow, - addKeyword, -} = require('@bot-whatsapp/bot') +const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot') const TwilioProvider = require('@bot-whatsapp/provider/twilio') const MongoAdapter = require('@bot-whatsapp/database/mongo') @@ -27,15 +22,9 @@ const MONGO_DB_NAME = 'db_bot' * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ -const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([ - '📄 Aquí tenemos el flujo secundario', -]) +const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer(['📄 Aquí tenemos el flujo secundario']) -const flowDocs = addKeyword([ - 'doc', - 'documentacion', - 'documentación', -]).addAnswer( +const flowDocs = addKeyword(['doc', 'documentacion', 'documentación']).addAnswer( [ '📄 Aquí encontras las documentación recuerda que puedes mejorarla', 'https://bot-whatsapp.netlify.app/', @@ -71,11 +60,7 @@ const flowGracias = addKeyword(['gracias', 'grac']).addAnswer( ) const flowDiscord = addKeyword(['discord']).addAnswer( - [ - '🤪 Únete al discord', - 'https://link.codigoencasa.com/DISCORD', - '\n*2* Para siguiente paso.', - ], + ['🤪 Únete al discord', 'https://link.codigoencasa.com/DISCORD', '\n*2* Para siguiente paso.'], null, null, [flowSecundario] diff --git a/starters/apps/base-twilio-mysql/app.js b/starters/apps/base-twilio-mysql/app.js index 4725cd3..bf9a239 100644 --- a/starters/apps/base-twilio-mysql/app.js +++ b/starters/apps/base-twilio-mysql/app.js @@ -1,9 +1,4 @@ -const { - createBot, - createProvider, - createFlow, - addKeyword, -} = require('@bot-whatsapp/bot') +const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot') const TwilioProvider = require('@bot-whatsapp/provider/twilio') const MySQLAdapter = require('@bot-whatsapp/database/mysql') @@ -16,6 +11,7 @@ const MYSQL_DB_HOST = 'localhost' const MYSQL_DB_USER = 'user' const MYSQL_DB_PASSWORD = 'pass' const MYSQL_DB_NAME = 'bot' +const MYSQL_DB_PORT = '3306' /** * 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 +25,9 @@ const MYSQL_DB_NAME = 'bot' * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ -const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([ - '📄 Aquí tenemos el flujo secundario', -]) +const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer(['📄 Aquí tenemos el flujo secundario']) -const flowDocs = addKeyword([ - 'doc', - 'documentacion', - 'documentación', -]).addAnswer( +const flowDocs = addKeyword(['doc', 'documentacion', 'documentación']).addAnswer( [ '📄 Aquí encontras las documentación recuerda que puedes mejorarla', 'https://bot-whatsapp.netlify.app/', @@ -73,11 +63,7 @@ const flowGracias = addKeyword(['gracias', 'grac']).addAnswer( ) const flowDiscord = addKeyword(['discord']).addAnswer( - [ - '🤪 Únete al discord', - 'https://link.codigoencasa.com/DISCORD', - '\n*2* Para siguiente paso.', - ], + ['🤪 Únete al discord', 'https://link.codigoencasa.com/DISCORD', '\n*2* Para siguiente paso.'], null, null, [flowSecundario] @@ -103,6 +89,7 @@ const main = async () => { user: MYSQL_DB_USER, database: MYSQL_DB_NAME, password: MYSQL_DB_PASSWORD, + port: MYSQL_DB_PORT, }) const adapterFlow = createFlow([flowPrincipal]) const adapterProvider = createProvider(TwilioProvider, { diff --git a/starters/apps/base-venom-json/app.js b/starters/apps/base-venom-json/app.js index 120deee..1b07b6b 100644 --- a/starters/apps/base-venom-json/app.js +++ b/starters/apps/base-venom-json/app.js @@ -1,9 +1,4 @@ -const { - createBot, - createProvider, - createFlow, - addKeyword, -} = require('@bot-whatsapp/bot') +const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot') const QRPortalWeb = require('@bot-whatsapp/portal') const VenomProvider = require('@bot-whatsapp/provider/venom') @@ -21,15 +16,9 @@ const JsonFileAdapter = require('@bot-whatsapp/database/json') * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ -const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([ - '📄 Aquí tenemos el flujo secundario', -]) +const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer(['📄 Aquí tenemos el flujo secundario']) -const flowDocs = addKeyword([ - 'doc', - 'documentacion', - 'documentación', -]).addAnswer( +const flowDocs = addKeyword(['doc', 'documentacion', 'documentación']).addAnswer( [ '📄 Aquí encontras las documentación recuerda que puedes mejorarla', 'https://bot-whatsapp.netlify.app/', @@ -65,11 +54,7 @@ const flowGracias = addKeyword(['gracias', 'grac']).addAnswer( ) const flowDiscord = addKeyword(['discord']).addAnswer( - [ - '🤪 Únete al discord', - 'https://link.codigoencasa.com/DISCORD', - '\n*2* Para siguiente paso.', - ], + ['🤪 Únete al discord', 'https://link.codigoencasa.com/DISCORD', '\n*2* Para siguiente paso.'], null, null, [flowSecundario] diff --git a/starters/apps/base-venom-memory/app.js b/starters/apps/base-venom-memory/app.js index 8402cf9..fc68953 100644 --- a/starters/apps/base-venom-memory/app.js +++ b/starters/apps/base-venom-memory/app.js @@ -1,9 +1,4 @@ -const { - createBot, - createProvider, - createFlow, - addKeyword, -} = require('@bot-whatsapp/bot') +const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot') const QRPortalWeb = require('@bot-whatsapp/portal') const VenomProvider = require('@bot-whatsapp/provider/venom') @@ -21,15 +16,9 @@ const MockAdapter = require('@bot-whatsapp/database/mock') * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ -const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([ - '📄 Aquí tenemos el flujo secundario', -]) +const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer(['📄 Aquí tenemos el flujo secundario']) -const flowDocs = addKeyword([ - 'doc', - 'documentacion', - 'documentación', -]).addAnswer( +const flowDocs = addKeyword(['doc', 'documentacion', 'documentación']).addAnswer( [ '📄 Aquí encontras las documentación recuerda que puedes mejorarla', 'https://bot-whatsapp.netlify.app/', @@ -65,11 +54,7 @@ const flowGracias = addKeyword(['gracias', 'grac']).addAnswer( ) const flowDiscord = addKeyword(['discord']).addAnswer( - [ - '🤪 Únete al discord', - 'https://link.codigoencasa.com/DISCORD', - '\n*2* Para siguiente paso.', - ], + ['🤪 Únete al discord', 'https://link.codigoencasa.com/DISCORD', '\n*2* Para siguiente paso.'], null, null, [flowSecundario] diff --git a/starters/apps/base-venom-mongo/app.js b/starters/apps/base-venom-mongo/app.js index 2f4f16a..7bec798 100644 --- a/starters/apps/base-venom-mongo/app.js +++ b/starters/apps/base-venom-mongo/app.js @@ -1,9 +1,4 @@ -const { - createBot, - createProvider, - createFlow, - addKeyword, -} = require('@bot-whatsapp/bot') +const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot') const QRPortalWeb = require('@bot-whatsapp/portal') const VenomProvider = require('@bot-whatsapp/provider/venom') @@ -28,15 +23,9 @@ const MONGO_DB_NAME = 'db_bot' * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ -const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([ - '📄 Aquí tenemos el flujo secundario', -]) +const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer(['📄 Aquí tenemos el flujo secundario']) -const flowDocs = addKeyword([ - 'doc', - 'documentacion', - 'documentación', -]).addAnswer( +const flowDocs = addKeyword(['doc', 'documentacion', 'documentación']).addAnswer( [ '📄 Aquí encontras las documentación recuerda que puedes mejorarla', 'https://bot-whatsapp.netlify.app/', @@ -72,11 +61,7 @@ const flowGracias = addKeyword(['gracias', 'grac']).addAnswer( ) const flowDiscord = addKeyword(['discord']).addAnswer( - [ - '🤪 Únete al discord', - 'https://link.codigoencasa.com/DISCORD', - '\n*2* Para siguiente paso.', - ], + ['🤪 Únete al discord', 'https://link.codigoencasa.com/DISCORD', '\n*2* Para siguiente paso.'], null, null, [flowSecundario] diff --git a/starters/apps/base-venom-mysql/app.js b/starters/apps/base-venom-mysql/app.js index 8c5c2db..28e3399 100644 --- a/starters/apps/base-venom-mysql/app.js +++ b/starters/apps/base-venom-mysql/app.js @@ -1,9 +1,4 @@ -const { - createBot, - createProvider, - createFlow, - addKeyword, -} = require('@bot-whatsapp/bot') +const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot') const QRPortalWeb = require('@bot-whatsapp/portal') const VenomProvider = require('@bot-whatsapp/provider/venom') @@ -17,6 +12,7 @@ const MYSQL_DB_HOST = 'localhost' const MYSQL_DB_USER = 'user' const MYSQL_DB_PASSWORD = 'pass' const MYSQL_DB_NAME = 'bot' +const MYSQL_DB_PORT = '3306' /** * Aqui declaramos los flujos hijos, los flujos se declaran de atras para adelante, es decir que si tienes un flujo de este tipo: @@ -30,15 +26,9 @@ const MYSQL_DB_NAME = 'bot' * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ -const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([ - '📄 Aquí tenemos el flujo secundario', -]) +const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer(['📄 Aquí tenemos el flujo secundario']) -const flowDocs = addKeyword([ - 'doc', - 'documentacion', - 'documentación', -]).addAnswer( +const flowDocs = addKeyword(['doc', 'documentacion', 'documentación']).addAnswer( [ '📄 Aquí encontras las documentación recuerda que puedes mejorarla', 'https://bot-whatsapp.netlify.app/', @@ -74,11 +64,7 @@ const flowGracias = addKeyword(['gracias', 'grac']).addAnswer( ) const flowDiscord = addKeyword(['discord']).addAnswer( - [ - '🤪 Únete al discord', - 'https://link.codigoencasa.com/DISCORD', - '\n*2* Para siguiente paso.', - ], + ['🤪 Únete al discord', 'https://link.codigoencasa.com/DISCORD', '\n*2* Para siguiente paso.'], null, null, [flowSecundario] @@ -104,6 +90,7 @@ const main = async () => { user: MYSQL_DB_USER, database: MYSQL_DB_NAME, password: MYSQL_DB_PASSWORD, + port: MYSQL_DB_PORT, }) const adapterFlow = createFlow([flowPrincipal]) const adapterProvider = createProvider(VenomProvider) diff --git a/starters/apps/base-wweb-json/app.js b/starters/apps/base-wweb-json/app.js index 729ac2a..77ca714 100644 --- a/starters/apps/base-wweb-json/app.js +++ b/starters/apps/base-wweb-json/app.js @@ -1,9 +1,4 @@ -const { - createBot, - createProvider, - createFlow, - addKeyword, -} = require('@bot-whatsapp/bot') +const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot') const QRPortalWeb = require('@bot-whatsapp/portal') const WebWhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp') @@ -21,15 +16,9 @@ const JsonFileAdapter = require('@bot-whatsapp/database/json') * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ -const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([ - '📄 Aquí tenemos el flujo secundario', -]) +const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer(['📄 Aquí tenemos el flujo secundario']) -const flowDocs = addKeyword([ - 'doc', - 'documentacion', - 'documentación', -]).addAnswer( +const flowDocs = addKeyword(['doc', 'documentacion', 'documentación']).addAnswer( [ '📄 Aquí encontras las documentación recuerda que puedes mejorarla', 'https://bot-whatsapp.netlify.app/', @@ -65,11 +54,7 @@ const flowGracias = addKeyword(['gracias', 'grac']).addAnswer( ) const flowDiscord = addKeyword(['discord']).addAnswer( - [ - '🤪 Únete al discord', - 'https://link.codigoencasa.com/DISCORD', - '\n*2* Para siguiente paso.', - ], + ['🤪 Únete al discord', 'https://link.codigoencasa.com/DISCORD', '\n*2* Para siguiente paso.'], null, null, [flowSecundario] diff --git a/starters/apps/base-wweb-memory/app.js b/starters/apps/base-wweb-memory/app.js index d6a567a..bdec9f9 100644 --- a/starters/apps/base-wweb-memory/app.js +++ b/starters/apps/base-wweb-memory/app.js @@ -1,9 +1,4 @@ -const { - createBot, - createProvider, - createFlow, - addKeyword, -} = require('@bot-whatsapp/bot') +const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot') const QRPortalWeb = require('@bot-whatsapp/portal') const WebWhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp') @@ -21,15 +16,9 @@ const MockAdapter = require('@bot-whatsapp/database/mock') * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ -const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([ - '📄 Aquí tenemos el flujo secundario', -]) +const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer(['📄 Aquí tenemos el flujo secundario']) -const flowDocs = addKeyword([ - 'doc', - 'documentacion', - 'documentación', -]).addAnswer( +const flowDocs = addKeyword(['doc', 'documentacion', 'documentación']).addAnswer( [ '📄 Aquí encontras las documentación recuerda que puedes mejorarla', 'https://bot-whatsapp.netlify.app/', @@ -65,11 +54,7 @@ const flowGracias = addKeyword(['gracias', 'grac']).addAnswer( ) const flowDiscord = addKeyword(['discord']).addAnswer( - [ - '🤪 Únete al discord', - 'https://link.codigoencasa.com/DISCORD', - '\n*2* Para siguiente paso.', - ], + ['🤪 Únete al discord', 'https://link.codigoencasa.com/DISCORD', '\n*2* Para siguiente paso.'], null, null, [flowSecundario] diff --git a/starters/apps/base-wweb-mongo/app.js b/starters/apps/base-wweb-mongo/app.js index a8e8aad..361cbe8 100644 --- a/starters/apps/base-wweb-mongo/app.js +++ b/starters/apps/base-wweb-mongo/app.js @@ -1,9 +1,4 @@ -const { - createBot, - createProvider, - createFlow, - addKeyword, -} = require('@bot-whatsapp/bot') +const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot') const QRPortalWeb = require('@bot-whatsapp/portal') const WebWhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp') @@ -28,15 +23,9 @@ const MONGO_DB_NAME = 'db_bot' * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ -const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([ - '📄 Aquí tenemos el flujo secundario', -]) +const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer(['📄 Aquí tenemos el flujo secundario']) -const flowDocs = addKeyword([ - 'doc', - 'documentacion', - 'documentación', -]).addAnswer( +const flowDocs = addKeyword(['doc', 'documentacion', 'documentación']).addAnswer( [ '📄 Aquí encontras las documentación recuerda que puedes mejorarla', 'https://bot-whatsapp.netlify.app/', @@ -72,11 +61,7 @@ const flowGracias = addKeyword(['gracias', 'grac']).addAnswer( ) const flowDiscord = addKeyword(['discord']).addAnswer( - [ - '🤪 Únete al discord', - 'https://link.codigoencasa.com/DISCORD', - '\n*2* Para siguiente paso.', - ], + ['🤪 Únete al discord', 'https://link.codigoencasa.com/DISCORD', '\n*2* Para siguiente paso.'], null, null, [flowSecundario] diff --git a/starters/apps/base-wweb-mysql/app.js b/starters/apps/base-wweb-mysql/app.js index 68f7f37..46270a2 100644 --- a/starters/apps/base-wweb-mysql/app.js +++ b/starters/apps/base-wweb-mysql/app.js @@ -1,9 +1,4 @@ -const { - createBot, - createProvider, - createFlow, - addKeyword, -} = require('@bot-whatsapp/bot') +const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot') const QRPortalWeb = require('@bot-whatsapp/portal') const WebWhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp') @@ -17,6 +12,7 @@ const MYSQL_DB_HOST = 'localhost' const MYSQL_DB_USER = 'user' const MYSQL_DB_PASSWORD = 'pass' const MYSQL_DB_NAME = 'bot' +const MYSQL_DB_PORT = '3306' /** * Aqui declaramos los flujos hijos, los flujos se declaran de atras para adelante, es decir que si tienes un flujo de este tipo: @@ -30,15 +26,9 @@ const MYSQL_DB_NAME = 'bot' * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ -const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([ - '📄 Aquí tenemos el flujo secundario', -]) +const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer(['📄 Aquí tenemos el flujo secundario']) -const flowDocs = addKeyword([ - 'doc', - 'documentacion', - 'documentación', -]).addAnswer( +const flowDocs = addKeyword(['doc', 'documentacion', 'documentación']).addAnswer( [ '📄 Aquí encontras las documentación recuerda que puedes mejorarla', 'https://bot-whatsapp.netlify.app/', @@ -74,11 +64,7 @@ const flowGracias = addKeyword(['gracias', 'grac']).addAnswer( ) const flowDiscord = addKeyword(['discord']).addAnswer( - [ - '🤪 Únete al discord', - 'https://link.codigoencasa.com/DISCORD', - '\n*2* Para siguiente paso.', - ], + ['🤪 Únete al discord', 'https://link.codigoencasa.com/DISCORD', '\n*2* Para siguiente paso.'], null, null, [flowSecundario] @@ -104,6 +90,7 @@ const main = async () => { user: MYSQL_DB_USER, database: MYSQL_DB_NAME, password: MYSQL_DB_PASSWORD, + port: MYSQL_DB_PORT, }) const adapterFlow = createFlow([flowPrincipal]) const adapterProvider = createProvider(WebWhatsappProvider) diff --git a/yarn.lock b/yarn.lock index cf802d5..4fab282 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,429 +12,415 @@ __metadata: languageName: node linkType: hard -"@aws-crypto/ie11-detection@npm:^2.0.0": - version: 2.0.2 - resolution: "@aws-crypto/ie11-detection@npm:2.0.2" +"@aws-crypto/ie11-detection@npm:^3.0.0": + version: 3.0.0 + resolution: "@aws-crypto/ie11-detection@npm:3.0.0" dependencies: tslib: ^1.11.1 - checksum: 713293deea8eefd3ab43dc05e62228571d27754e7293f8ec2fd8a0c693fbbfc55213e6599387776e3cdbc951965dc62e24e92b9c4a853e4a50d00ae6a9f6b2bd + checksum: 299b2ddd46eddac1f2d54d91386ceb37af81aef8a800669281c73d634ed17fd855dcfb8b3157f2879344b93a2666a6d602550eb84b71e4d7868100ad6da8f803 languageName: node linkType: hard -"@aws-crypto/sha256-browser@npm:2.0.0": - version: 2.0.0 - resolution: "@aws-crypto/sha256-browser@npm:2.0.0" +"@aws-crypto/sha256-browser@npm:3.0.0": + version: 3.0.0 + resolution: "@aws-crypto/sha256-browser@npm:3.0.0" dependencies: - "@aws-crypto/ie11-detection": ^2.0.0 - "@aws-crypto/sha256-js": ^2.0.0 - "@aws-crypto/supports-web-crypto": ^2.0.0 - "@aws-crypto/util": ^2.0.0 - "@aws-sdk/types": ^3.1.0 + "@aws-crypto/ie11-detection": ^3.0.0 + "@aws-crypto/sha256-js": ^3.0.0 + "@aws-crypto/supports-web-crypto": ^3.0.0 + "@aws-crypto/util": ^3.0.0 + "@aws-sdk/types": ^3.222.0 "@aws-sdk/util-locate-window": ^3.0.0 "@aws-sdk/util-utf8-browser": ^3.0.0 tslib: ^1.11.1 - checksum: 7bc1ff042d0c53a46c0fc3824bd97fb3ed1df7dc030b8a995889471052860b8c8ade469c97866fafd8249a3144d0f48b0f1054f357e2b403606009381c4b8f0e + checksum: ca89456bf508db2e08060a7f656460db97ac9a15b11e39d6fa7665e2b156508a1758695bff8e82d0a00178d6ac5c36f35eb4bcfac2e48621265224ca14a19bd2 languageName: node linkType: hard -"@aws-crypto/sha256-js@npm:2.0.0": - version: 2.0.0 - resolution: "@aws-crypto/sha256-js@npm:2.0.0" +"@aws-crypto/sha256-js@npm:3.0.0, @aws-crypto/sha256-js@npm:^3.0.0": + version: 3.0.0 + resolution: "@aws-crypto/sha256-js@npm:3.0.0" dependencies: - "@aws-crypto/util": ^2.0.0 - "@aws-sdk/types": ^3.1.0 + "@aws-crypto/util": ^3.0.0 + "@aws-sdk/types": ^3.222.0 tslib: ^1.11.1 - checksum: e4abf9baec6bed19d380f92a999a41ac5bdd8890dfd45971d29054c298854c5b7087e7de633413f2e64618ef8238ccf4c0b75797c73063c74bbba3cb5d8b2581 + checksum: 644ded32ea310237811afae873d3c7320739cb6f6cc39dced9c94801379e68e5ee2cca0c34f0384793fa9e750a7e0a5e2468f95754bd08e6fd72ab833c8fe23c languageName: node linkType: hard -"@aws-crypto/sha256-js@npm:^2.0.0": - version: 2.0.2 - resolution: "@aws-crypto/sha256-js@npm:2.0.2" - dependencies: - "@aws-crypto/util": ^2.0.2 - "@aws-sdk/types": ^3.110.0 - tslib: ^1.11.1 - checksum: 9125ec65a2b05fce908ac2289ba97b995a299f2d717684804211df8e8bcffd8cd9b8861582240655b88f2255c46fcee34026f75c057ffb22f44b6a76cd43f65a - languageName: node - linkType: hard - -"@aws-crypto/supports-web-crypto@npm:^2.0.0": - version: 2.0.2 - resolution: "@aws-crypto/supports-web-crypto@npm:2.0.2" +"@aws-crypto/supports-web-crypto@npm:^3.0.0": + version: 3.0.0 + resolution: "@aws-crypto/supports-web-crypto@npm:3.0.0" dependencies: tslib: ^1.11.1 - checksum: 03d04d29292dc1b76db9bc6becd05f52fa79adee0ec084f971b0767f7e73250dd0422bea57636015f8c27f38aefcd1d9c58800a4749cf35339296c8d670f3ccb + checksum: 35479a1558db9e9a521df6877a99f95670e972c602f2a0349303477e5d638a5baf569fb037c853710e382086e6fd77e8ed58d3fb9b49f6e1186a9d26ce7be006 languageName: node linkType: hard -"@aws-crypto/util@npm:^2.0.0, @aws-crypto/util@npm:^2.0.2": - version: 2.0.2 - resolution: "@aws-crypto/util@npm:2.0.2" +"@aws-crypto/util@npm:^3.0.0": + version: 3.0.0 + resolution: "@aws-crypto/util@npm:3.0.0" dependencies: - "@aws-sdk/types": ^3.110.0 + "@aws-sdk/types": ^3.222.0 "@aws-sdk/util-utf8-browser": ^3.0.0 tslib: ^1.11.1 - checksum: 13cb33a39005b09c062398d361043c2224bc8ba42b1432bad52e15bc4bf9ffad4facdddc394b3cc71b3fb8d86a7ec325fd1afa107b5fde0dab84a7e32d311d7f + checksum: d29d5545048721aae3d60b236708535059733019a105f8a64b4e4a8eab7cf8dde1546dc56bff7de20d36140a4d1f0f4693e639c5732a7059273a7b1e56354776 languageName: node linkType: hard -"@aws-sdk/abort-controller@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/abort-controller@npm:3.226.0" +"@aws-sdk/abort-controller@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/abort-controller@npm:3.266.1" dependencies: - "@aws-sdk/types": 3.226.0 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: 44045b60c7697ed76bcbfbe3f7f4bb019f139d2337e77d8ce79d98bca17c1245e2d33934bba04fe8e2d462b729124ba4414a589ed9275c07f2bfefd3a0850184 + checksum: f9d4f96b2095e1a35fd3e4474b75afba1f4f1349270b5b29611c53962ed1dddd24b1eabd06af7393fe615828a2af0986f58c25b50a8a09c0a5c11a21b7733481 languageName: node linkType: hard -"@aws-sdk/client-cognito-identity@npm:3.245.0": - version: 3.245.0 - resolution: "@aws-sdk/client-cognito-identity@npm:3.245.0" +"@aws-sdk/client-cognito-identity@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/client-cognito-identity@npm:3.266.1" dependencies: - "@aws-crypto/sha256-browser": 2.0.0 - "@aws-crypto/sha256-js": 2.0.0 - "@aws-sdk/client-sts": 3.245.0 - "@aws-sdk/config-resolver": 3.234.0 - "@aws-sdk/credential-provider-node": 3.245.0 - "@aws-sdk/fetch-http-handler": 3.226.0 - "@aws-sdk/hash-node": 3.226.0 - "@aws-sdk/invalid-dependency": 3.226.0 - "@aws-sdk/middleware-content-length": 3.226.0 - "@aws-sdk/middleware-endpoint": 3.226.0 - "@aws-sdk/middleware-host-header": 3.226.0 - "@aws-sdk/middleware-logger": 3.226.0 - "@aws-sdk/middleware-recursion-detection": 3.226.0 - "@aws-sdk/middleware-retry": 3.235.0 - "@aws-sdk/middleware-serde": 3.226.0 - "@aws-sdk/middleware-signing": 3.226.0 - "@aws-sdk/middleware-stack": 3.226.0 - "@aws-sdk/middleware-user-agent": 3.226.0 - "@aws-sdk/node-config-provider": 3.226.0 - "@aws-sdk/node-http-handler": 3.226.0 - "@aws-sdk/protocol-http": 3.226.0 - "@aws-sdk/smithy-client": 3.234.0 - "@aws-sdk/types": 3.226.0 - "@aws-sdk/url-parser": 3.226.0 + "@aws-crypto/sha256-browser": 3.0.0 + "@aws-crypto/sha256-js": 3.0.0 + "@aws-sdk/client-sts": 3.266.1 + "@aws-sdk/config-resolver": 3.266.1 + "@aws-sdk/credential-provider-node": 3.266.1 + "@aws-sdk/fetch-http-handler": 3.266.1 + "@aws-sdk/hash-node": 3.266.1 + "@aws-sdk/invalid-dependency": 3.266.1 + "@aws-sdk/middleware-content-length": 3.266.1 + "@aws-sdk/middleware-endpoint": 3.266.1 + "@aws-sdk/middleware-host-header": 3.266.1 + "@aws-sdk/middleware-logger": 3.266.1 + "@aws-sdk/middleware-recursion-detection": 3.266.1 + "@aws-sdk/middleware-retry": 3.266.1 + "@aws-sdk/middleware-serde": 3.266.1 + "@aws-sdk/middleware-signing": 3.266.1 + "@aws-sdk/middleware-stack": 3.266.1 + "@aws-sdk/middleware-user-agent": 3.266.1 + "@aws-sdk/node-config-provider": 3.266.1 + "@aws-sdk/node-http-handler": 3.266.1 + "@aws-sdk/protocol-http": 3.266.1 + "@aws-sdk/smithy-client": 3.266.1 + "@aws-sdk/types": 3.266.1 + "@aws-sdk/url-parser": 3.266.1 "@aws-sdk/util-base64": 3.208.0 "@aws-sdk/util-body-length-browser": 3.188.0 "@aws-sdk/util-body-length-node": 3.208.0 - "@aws-sdk/util-defaults-mode-browser": 3.234.0 - "@aws-sdk/util-defaults-mode-node": 3.234.0 - "@aws-sdk/util-endpoints": 3.245.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 + "@aws-sdk/util-defaults-mode-browser": 3.266.1 + "@aws-sdk/util-defaults-mode-node": 3.266.1 + "@aws-sdk/util-endpoints": 3.266.1 + "@aws-sdk/util-retry": 3.266.1 + "@aws-sdk/util-user-agent-browser": 3.266.1 + "@aws-sdk/util-user-agent-node": 3.266.1 + "@aws-sdk/util-utf8": 3.254.0 tslib: ^2.3.1 - checksum: 4142ba1b7a3c11f785d5da527a743d6a9352f6f97ae983e6f3ee0abf5a1cd755c2196981cbc2f6052686bf820a68f062117c682a5126e55acaacebc5cab862e6 + checksum: cb2514999120bcd7ec3bc41190ef9ddf9e7446e642045c41fd4a1119171ee4cb6fcbd013b958ceecf219adc2530bd77d5637c94ec63bce3a75dfe56272de9066 languageName: node linkType: hard -"@aws-sdk/client-sso-oidc@npm:3.245.0": - version: 3.245.0 - resolution: "@aws-sdk/client-sso-oidc@npm:3.245.0" +"@aws-sdk/client-sso-oidc@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/client-sso-oidc@npm:3.266.1" dependencies: - "@aws-crypto/sha256-browser": 2.0.0 - "@aws-crypto/sha256-js": 2.0.0 - "@aws-sdk/config-resolver": 3.234.0 - "@aws-sdk/fetch-http-handler": 3.226.0 - "@aws-sdk/hash-node": 3.226.0 - "@aws-sdk/invalid-dependency": 3.226.0 - "@aws-sdk/middleware-content-length": 3.226.0 - "@aws-sdk/middleware-endpoint": 3.226.0 - "@aws-sdk/middleware-host-header": 3.226.0 - "@aws-sdk/middleware-logger": 3.226.0 - "@aws-sdk/middleware-recursion-detection": 3.226.0 - "@aws-sdk/middleware-retry": 3.235.0 - "@aws-sdk/middleware-serde": 3.226.0 - "@aws-sdk/middleware-stack": 3.226.0 - "@aws-sdk/middleware-user-agent": 3.226.0 - "@aws-sdk/node-config-provider": 3.226.0 - "@aws-sdk/node-http-handler": 3.226.0 - "@aws-sdk/protocol-http": 3.226.0 - "@aws-sdk/smithy-client": 3.234.0 - "@aws-sdk/types": 3.226.0 - "@aws-sdk/url-parser": 3.226.0 + "@aws-crypto/sha256-browser": 3.0.0 + "@aws-crypto/sha256-js": 3.0.0 + "@aws-sdk/config-resolver": 3.266.1 + "@aws-sdk/fetch-http-handler": 3.266.1 + "@aws-sdk/hash-node": 3.266.1 + "@aws-sdk/invalid-dependency": 3.266.1 + "@aws-sdk/middleware-content-length": 3.266.1 + "@aws-sdk/middleware-endpoint": 3.266.1 + "@aws-sdk/middleware-host-header": 3.266.1 + "@aws-sdk/middleware-logger": 3.266.1 + "@aws-sdk/middleware-recursion-detection": 3.266.1 + "@aws-sdk/middleware-retry": 3.266.1 + "@aws-sdk/middleware-serde": 3.266.1 + "@aws-sdk/middleware-stack": 3.266.1 + "@aws-sdk/middleware-user-agent": 3.266.1 + "@aws-sdk/node-config-provider": 3.266.1 + "@aws-sdk/node-http-handler": 3.266.1 + "@aws-sdk/protocol-http": 3.266.1 + "@aws-sdk/smithy-client": 3.266.1 + "@aws-sdk/types": 3.266.1 + "@aws-sdk/url-parser": 3.266.1 "@aws-sdk/util-base64": 3.208.0 "@aws-sdk/util-body-length-browser": 3.188.0 "@aws-sdk/util-body-length-node": 3.208.0 - "@aws-sdk/util-defaults-mode-browser": 3.234.0 - "@aws-sdk/util-defaults-mode-node": 3.234.0 - "@aws-sdk/util-endpoints": 3.245.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 + "@aws-sdk/util-defaults-mode-browser": 3.266.1 + "@aws-sdk/util-defaults-mode-node": 3.266.1 + "@aws-sdk/util-endpoints": 3.266.1 + "@aws-sdk/util-retry": 3.266.1 + "@aws-sdk/util-user-agent-browser": 3.266.1 + "@aws-sdk/util-user-agent-node": 3.266.1 + "@aws-sdk/util-utf8": 3.254.0 tslib: ^2.3.1 - checksum: 6f72ee0df276f8c4019be4d9b3fa1b2cbab7744b13f434f07c9314303290334296be1148276266715ef3cfb37e83ced448fd9d6bb34d09bd21ed41d0a83598dc + checksum: ef3a2ac06aac3662120ced57ff3c0d543c9a85c332529366debdab3fcbd6b95144c6ecd2403f3d003c4af23ec68bb469cb86ab281851d8bee96d872bf4e148b6 languageName: node linkType: hard -"@aws-sdk/client-sso@npm:3.245.0": - version: 3.245.0 - resolution: "@aws-sdk/client-sso@npm:3.245.0" +"@aws-sdk/client-sso@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/client-sso@npm:3.266.1" dependencies: - "@aws-crypto/sha256-browser": 2.0.0 - "@aws-crypto/sha256-js": 2.0.0 - "@aws-sdk/config-resolver": 3.234.0 - "@aws-sdk/fetch-http-handler": 3.226.0 - "@aws-sdk/hash-node": 3.226.0 - "@aws-sdk/invalid-dependency": 3.226.0 - "@aws-sdk/middleware-content-length": 3.226.0 - "@aws-sdk/middleware-endpoint": 3.226.0 - "@aws-sdk/middleware-host-header": 3.226.0 - "@aws-sdk/middleware-logger": 3.226.0 - "@aws-sdk/middleware-recursion-detection": 3.226.0 - "@aws-sdk/middleware-retry": 3.235.0 - "@aws-sdk/middleware-serde": 3.226.0 - "@aws-sdk/middleware-stack": 3.226.0 - "@aws-sdk/middleware-user-agent": 3.226.0 - "@aws-sdk/node-config-provider": 3.226.0 - "@aws-sdk/node-http-handler": 3.226.0 - "@aws-sdk/protocol-http": 3.226.0 - "@aws-sdk/smithy-client": 3.234.0 - "@aws-sdk/types": 3.226.0 - "@aws-sdk/url-parser": 3.226.0 + "@aws-crypto/sha256-browser": 3.0.0 + "@aws-crypto/sha256-js": 3.0.0 + "@aws-sdk/config-resolver": 3.266.1 + "@aws-sdk/fetch-http-handler": 3.266.1 + "@aws-sdk/hash-node": 3.266.1 + "@aws-sdk/invalid-dependency": 3.266.1 + "@aws-sdk/middleware-content-length": 3.266.1 + "@aws-sdk/middleware-endpoint": 3.266.1 + "@aws-sdk/middleware-host-header": 3.266.1 + "@aws-sdk/middleware-logger": 3.266.1 + "@aws-sdk/middleware-recursion-detection": 3.266.1 + "@aws-sdk/middleware-retry": 3.266.1 + "@aws-sdk/middleware-serde": 3.266.1 + "@aws-sdk/middleware-stack": 3.266.1 + "@aws-sdk/middleware-user-agent": 3.266.1 + "@aws-sdk/node-config-provider": 3.266.1 + "@aws-sdk/node-http-handler": 3.266.1 + "@aws-sdk/protocol-http": 3.266.1 + "@aws-sdk/smithy-client": 3.266.1 + "@aws-sdk/types": 3.266.1 + "@aws-sdk/url-parser": 3.266.1 "@aws-sdk/util-base64": 3.208.0 "@aws-sdk/util-body-length-browser": 3.188.0 "@aws-sdk/util-body-length-node": 3.208.0 - "@aws-sdk/util-defaults-mode-browser": 3.234.0 - "@aws-sdk/util-defaults-mode-node": 3.234.0 - "@aws-sdk/util-endpoints": 3.245.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 + "@aws-sdk/util-defaults-mode-browser": 3.266.1 + "@aws-sdk/util-defaults-mode-node": 3.266.1 + "@aws-sdk/util-endpoints": 3.266.1 + "@aws-sdk/util-retry": 3.266.1 + "@aws-sdk/util-user-agent-browser": 3.266.1 + "@aws-sdk/util-user-agent-node": 3.266.1 + "@aws-sdk/util-utf8": 3.254.0 tslib: ^2.3.1 - checksum: e7dd235ee13465438a181c5de2f5bfc1acdaa12a07db74a3255dbb580004c33544d6773252b164dda2e2357ea83f3985afd060dfe42d6064732d36750764eda1 + checksum: 72b25db3f5830815cdf3e2cd4274255cc6a46f0c12ff8cdf0a4d5289bcf129c1c7d8ebaaf64cdcb64eae81a83ff4b921b38eabc39df57114941d143d3c8fc88e languageName: node linkType: hard -"@aws-sdk/client-sts@npm:3.245.0": - version: 3.245.0 - resolution: "@aws-sdk/client-sts@npm:3.245.0" +"@aws-sdk/client-sts@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/client-sts@npm:3.266.1" 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.245.0 - "@aws-sdk/fetch-http-handler": 3.226.0 - "@aws-sdk/hash-node": 3.226.0 - "@aws-sdk/invalid-dependency": 3.226.0 - "@aws-sdk/middleware-content-length": 3.226.0 - "@aws-sdk/middleware-endpoint": 3.226.0 - "@aws-sdk/middleware-host-header": 3.226.0 - "@aws-sdk/middleware-logger": 3.226.0 - "@aws-sdk/middleware-recursion-detection": 3.226.0 - "@aws-sdk/middleware-retry": 3.235.0 - "@aws-sdk/middleware-sdk-sts": 3.226.0 - "@aws-sdk/middleware-serde": 3.226.0 - "@aws-sdk/middleware-signing": 3.226.0 - "@aws-sdk/middleware-stack": 3.226.0 - "@aws-sdk/middleware-user-agent": 3.226.0 - "@aws-sdk/node-config-provider": 3.226.0 - "@aws-sdk/node-http-handler": 3.226.0 - "@aws-sdk/protocol-http": 3.226.0 - "@aws-sdk/smithy-client": 3.234.0 - "@aws-sdk/types": 3.226.0 - "@aws-sdk/url-parser": 3.226.0 + "@aws-crypto/sha256-browser": 3.0.0 + "@aws-crypto/sha256-js": 3.0.0 + "@aws-sdk/config-resolver": 3.266.1 + "@aws-sdk/credential-provider-node": 3.266.1 + "@aws-sdk/fetch-http-handler": 3.266.1 + "@aws-sdk/hash-node": 3.266.1 + "@aws-sdk/invalid-dependency": 3.266.1 + "@aws-sdk/middleware-content-length": 3.266.1 + "@aws-sdk/middleware-endpoint": 3.266.1 + "@aws-sdk/middleware-host-header": 3.266.1 + "@aws-sdk/middleware-logger": 3.266.1 + "@aws-sdk/middleware-recursion-detection": 3.266.1 + "@aws-sdk/middleware-retry": 3.266.1 + "@aws-sdk/middleware-sdk-sts": 3.266.1 + "@aws-sdk/middleware-serde": 3.266.1 + "@aws-sdk/middleware-signing": 3.266.1 + "@aws-sdk/middleware-stack": 3.266.1 + "@aws-sdk/middleware-user-agent": 3.266.1 + "@aws-sdk/node-config-provider": 3.266.1 + "@aws-sdk/node-http-handler": 3.266.1 + "@aws-sdk/protocol-http": 3.266.1 + "@aws-sdk/smithy-client": 3.266.1 + "@aws-sdk/types": 3.266.1 + "@aws-sdk/url-parser": 3.266.1 "@aws-sdk/util-base64": 3.208.0 "@aws-sdk/util-body-length-browser": 3.188.0 "@aws-sdk/util-body-length-node": 3.208.0 - "@aws-sdk/util-defaults-mode-browser": 3.234.0 - "@aws-sdk/util-defaults-mode-node": 3.234.0 - "@aws-sdk/util-endpoints": 3.245.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 + "@aws-sdk/util-defaults-mode-browser": 3.266.1 + "@aws-sdk/util-defaults-mode-node": 3.266.1 + "@aws-sdk/util-endpoints": 3.266.1 + "@aws-sdk/util-retry": 3.266.1 + "@aws-sdk/util-user-agent-browser": 3.266.1 + "@aws-sdk/util-user-agent-node": 3.266.1 + "@aws-sdk/util-utf8": 3.254.0 fast-xml-parser: 4.0.11 tslib: ^2.3.1 - checksum: 3b052be86063978b47b2f4459062ea23a6d94c81951a97428a5445ff062d642a3460114cbf1b20d3925db0667d893db40cbe30b1b8b58a4d749c75d117aab460 + checksum: d699e3393035c59a38d7081ad217ff54188fe01470f939fbd73dad6eebd53d4a5d63512700e4079bdbb5d7e947498f1897c67ee7935618371e06cefed4490894 languageName: node linkType: hard -"@aws-sdk/config-resolver@npm:3.234.0": - version: 3.234.0 - resolution: "@aws-sdk/config-resolver@npm:3.234.0" +"@aws-sdk/config-resolver@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/config-resolver@npm:3.266.1" dependencies: - "@aws-sdk/signature-v4": 3.226.0 - "@aws-sdk/types": 3.226.0 + "@aws-sdk/signature-v4": 3.266.1 + "@aws-sdk/types": 3.266.1 "@aws-sdk/util-config-provider": 3.208.0 - "@aws-sdk/util-middleware": 3.226.0 + "@aws-sdk/util-middleware": 3.266.1 tslib: ^2.3.1 - checksum: a72bdb1748d7f04c95436ab1e8650b51c1bfd2745114e52f7d05339c61bb6a859306be0c6cc0034ecf4f3b29a2d68b48fe362762a58c90ec55a3444b93b5700d + checksum: 32632b7bfdc3d6fcf2f51bf6f1c064694df47735c3998011803b359901d59dd95953366fed45ee7c3f345dfdd53fd2a1d25a3fabecaca5df52fdb5524ac381ef languageName: node linkType: hard -"@aws-sdk/credential-provider-cognito-identity@npm:3.245.0": - version: 3.245.0 - resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.245.0" +"@aws-sdk/credential-provider-cognito-identity@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.266.1" dependencies: - "@aws-sdk/client-cognito-identity": 3.245.0 - "@aws-sdk/property-provider": 3.226.0 - "@aws-sdk/types": 3.226.0 + "@aws-sdk/client-cognito-identity": 3.266.1 + "@aws-sdk/property-provider": 3.266.1 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: af9ce2a19426056139c380fa2a016d5abb42117e262dc5c3f4741eb1f2d15b394e9b178d6efb2e32f59cd723c6090da769975505368fbbe79b8eb9258c6961a8 + checksum: d9d213a62b8177a2608031cd40cce2f1d6ac1b2ed78d12a59d4ef72aa995485e9fe1a3e64274aad47f859ad7fe310a2d9e08acccd6c1e1deae6fe55f31b5c43f languageName: node linkType: hard -"@aws-sdk/credential-provider-env@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/credential-provider-env@npm:3.226.0" +"@aws-sdk/credential-provider-env@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/credential-provider-env@npm:3.266.1" dependencies: - "@aws-sdk/property-provider": 3.226.0 - "@aws-sdk/types": 3.226.0 + "@aws-sdk/property-provider": 3.266.1 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: 4f764d8d07ba1f65503ed2440ebfbccf98c141b11a087a582ea606d06bc764c91641b4ec505ab0d4750025a01128b041d9514a3ec868c385f038b5373b513293 + checksum: 65e95dcdaf99c6fe78a5be7d8e9d9325911436be4f2e00864e69a5656d767178206acb54902712d49b2cffe1183f5f110c53e246e7dc5e61e489214523dad43c languageName: node linkType: hard -"@aws-sdk/credential-provider-imds@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/credential-provider-imds@npm:3.226.0" +"@aws-sdk/credential-provider-imds@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/credential-provider-imds@npm:3.266.1" dependencies: - "@aws-sdk/node-config-provider": 3.226.0 - "@aws-sdk/property-provider": 3.226.0 - "@aws-sdk/types": 3.226.0 - "@aws-sdk/url-parser": 3.226.0 + "@aws-sdk/node-config-provider": 3.266.1 + "@aws-sdk/property-provider": 3.266.1 + "@aws-sdk/types": 3.266.1 + "@aws-sdk/url-parser": 3.266.1 tslib: ^2.3.1 - checksum: c0480ca127e6715ebf98ff41a8ea47d139166b8632582782df46fc9e568ff579cfc0768af80082ae6eea3eb6750edb41c4a4c39281b777c578fdb7f8ef8b641c + checksum: 23e0e235ee5475a203f10016afb2d3382a8eb6e9132a68bbbb2f349a2d2457765837c68537080d75984509d59376569889036a800bb93234b4ad449368f0fe70 languageName: node linkType: hard -"@aws-sdk/credential-provider-ini@npm:3.245.0": - version: 3.245.0 - resolution: "@aws-sdk/credential-provider-ini@npm:3.245.0" +"@aws-sdk/credential-provider-ini@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/credential-provider-ini@npm:3.266.1" 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.245.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 + "@aws-sdk/credential-provider-env": 3.266.1 + "@aws-sdk/credential-provider-imds": 3.266.1 + "@aws-sdk/credential-provider-process": 3.266.1 + "@aws-sdk/credential-provider-sso": 3.266.1 + "@aws-sdk/credential-provider-web-identity": 3.266.1 + "@aws-sdk/property-provider": 3.266.1 + "@aws-sdk/shared-ini-file-loader": 3.266.1 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: 35fcdb231efb573c60c25e67a27f64ca892ebab7931e715406826a4d3f87caecd525945f45ecaf7fb7e09a87a744678aba60249c74681160c9fb9d66c0490bf5 + checksum: 0efbd9a4cd9cfb247122ac3c423fed50633a998b2e4b9ccca402b20e9a531d6205899e32f6926bbe61af7e2041646e79edc4ab2212c3e202e275c31483d70183 languageName: node linkType: hard -"@aws-sdk/credential-provider-node@npm:3.245.0": - version: 3.245.0 - resolution: "@aws-sdk/credential-provider-node@npm:3.245.0" +"@aws-sdk/credential-provider-node@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/credential-provider-node@npm:3.266.1" dependencies: - "@aws-sdk/credential-provider-env": 3.226.0 - "@aws-sdk/credential-provider-imds": 3.226.0 - "@aws-sdk/credential-provider-ini": 3.245.0 - "@aws-sdk/credential-provider-process": 3.226.0 - "@aws-sdk/credential-provider-sso": 3.245.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 + "@aws-sdk/credential-provider-env": 3.266.1 + "@aws-sdk/credential-provider-imds": 3.266.1 + "@aws-sdk/credential-provider-ini": 3.266.1 + "@aws-sdk/credential-provider-process": 3.266.1 + "@aws-sdk/credential-provider-sso": 3.266.1 + "@aws-sdk/credential-provider-web-identity": 3.266.1 + "@aws-sdk/property-provider": 3.266.1 + "@aws-sdk/shared-ini-file-loader": 3.266.1 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: a9bd115016fc7ce7f2cb50c5cafcd759f861362bb9dd9629e4ea0056519d5b26ad256f6d1d84ef3327c75bef442de8c0e4b54b215870512b43c92866ed0f1403 + checksum: b47065f93372a5565da6d76ea162e3698e8ef00bc356741c20b1d0dcf71a3e125d2b50dcde9d91d6ff29182acc109ef48c68e1834bbb2e67f528dffe7a30f2cf languageName: node linkType: hard -"@aws-sdk/credential-provider-process@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/credential-provider-process@npm:3.226.0" +"@aws-sdk/credential-provider-process@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/credential-provider-process@npm:3.266.1" dependencies: - "@aws-sdk/property-provider": 3.226.0 - "@aws-sdk/shared-ini-file-loader": 3.226.0 - "@aws-sdk/types": 3.226.0 + "@aws-sdk/property-provider": 3.266.1 + "@aws-sdk/shared-ini-file-loader": 3.266.1 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: 3ad24e2784ae7929f8932a187e0a5a06fc62d31ccb393fd2d9fa86d75c1109809c96b69edb17c3d7bd7d087b97662818d5320742a4cd70add06999a3b2ec3a53 + checksum: 33f8a76a0d0fed97620dbd4afa70fffb99cc606118fa5eff1da68d16b6dc6559a15e3d4f09c96bdf2ec3db9f66b5cc0d0fb480bbd782d8c34a1b68155b1610dc languageName: node linkType: hard -"@aws-sdk/credential-provider-sso@npm:3.245.0": - version: 3.245.0 - resolution: "@aws-sdk/credential-provider-sso@npm:3.245.0" +"@aws-sdk/credential-provider-sso@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/credential-provider-sso@npm:3.266.1" dependencies: - "@aws-sdk/client-sso": 3.245.0 - "@aws-sdk/property-provider": 3.226.0 - "@aws-sdk/shared-ini-file-loader": 3.226.0 - "@aws-sdk/token-providers": 3.245.0 - "@aws-sdk/types": 3.226.0 + "@aws-sdk/client-sso": 3.266.1 + "@aws-sdk/property-provider": 3.266.1 + "@aws-sdk/shared-ini-file-loader": 3.266.1 + "@aws-sdk/token-providers": 3.266.1 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: 95358504631d5451520d5090e7fb337b40dfc12ab30dd84d979165d881f2762798828003b13adcb35921223bf3a498b0e70b7a94ebc14e8b16a4f0adacded8f1 + checksum: e7371c6c00be75c20042ac32cc02cdeb9b054af77702490f2d75c26d6c914952be8555f3cf16956f8b0dd18603764bbf1b70ffc73e1e451e5395396e27ddaee0 languageName: node linkType: hard -"@aws-sdk/credential-provider-web-identity@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/credential-provider-web-identity@npm:3.226.0" +"@aws-sdk/credential-provider-web-identity@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/credential-provider-web-identity@npm:3.266.1" dependencies: - "@aws-sdk/property-provider": 3.226.0 - "@aws-sdk/types": 3.226.0 + "@aws-sdk/property-provider": 3.266.1 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: f536d9af3d900eee31b6e7966ff827713fd5f661ae477f0911eebdac3e544eb5a732df0be0c9162058943e0aeb89333c97a1758236e8f9760c5e87280fd926fa + checksum: 16244c7a6112992b86ab1761ea150cc2652db98c8c31d0cca1f56ecaab0c9e2f38255338a0a472ba54c7ded1109a6abf86696ac624095ab3d0d264c46a99c00f languageName: node linkType: hard "@aws-sdk/credential-providers@npm:^3.186.0": - version: 3.245.0 - resolution: "@aws-sdk/credential-providers@npm:3.245.0" + version: 3.266.1 + resolution: "@aws-sdk/credential-providers@npm:3.266.1" dependencies: - "@aws-sdk/client-cognito-identity": 3.245.0 - "@aws-sdk/client-sso": 3.245.0 - "@aws-sdk/client-sts": 3.245.0 - "@aws-sdk/credential-provider-cognito-identity": 3.245.0 - "@aws-sdk/credential-provider-env": 3.226.0 - "@aws-sdk/credential-provider-imds": 3.226.0 - "@aws-sdk/credential-provider-ini": 3.245.0 - "@aws-sdk/credential-provider-node": 3.245.0 - "@aws-sdk/credential-provider-process": 3.226.0 - "@aws-sdk/credential-provider-sso": 3.245.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 + "@aws-sdk/client-cognito-identity": 3.266.1 + "@aws-sdk/client-sso": 3.266.1 + "@aws-sdk/client-sts": 3.266.1 + "@aws-sdk/credential-provider-cognito-identity": 3.266.1 + "@aws-sdk/credential-provider-env": 3.266.1 + "@aws-sdk/credential-provider-imds": 3.266.1 + "@aws-sdk/credential-provider-ini": 3.266.1 + "@aws-sdk/credential-provider-node": 3.266.1 + "@aws-sdk/credential-provider-process": 3.266.1 + "@aws-sdk/credential-provider-sso": 3.266.1 + "@aws-sdk/credential-provider-web-identity": 3.266.1 + "@aws-sdk/property-provider": 3.266.1 + "@aws-sdk/shared-ini-file-loader": 3.266.1 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: a6923907ce97232cf87565e5fc0dac872061d2f065f530f7c91d1693472dd26667a91a662283994b3886a84b557f45e8627d0c847a88ffa0fdf2458a0180bd43 + checksum: c40dbec2449692c99020c796b025a51cc97cf08118853d4c270ece4aaf38c4ff8c89f5035cb226103d5e32c60b993da2e0c461733a42370566d3986d14456b8b languageName: node linkType: hard -"@aws-sdk/fetch-http-handler@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/fetch-http-handler@npm:3.226.0" +"@aws-sdk/fetch-http-handler@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/fetch-http-handler@npm:3.266.1" dependencies: - "@aws-sdk/protocol-http": 3.226.0 - "@aws-sdk/querystring-builder": 3.226.0 - "@aws-sdk/types": 3.226.0 + "@aws-sdk/protocol-http": 3.266.1 + "@aws-sdk/querystring-builder": 3.266.1 + "@aws-sdk/types": 3.266.1 "@aws-sdk/util-base64": 3.208.0 tslib: ^2.3.1 - checksum: f12ed12088aee05e4c6a742356017f55f26fec740c12c4d89c4eb283203171d032d99c9fa45fb28cc7798b35410cc55736df1c78d8eea014667e489f1b276f3a + checksum: 51e648770e87006390aa1f77ff253881c4128bc93304da0737666535d82e7fdf2c4335cfb9b9248bd3cc7b98bdf77624d448e1a71b81b435ab8e26eb93affb2f languageName: node linkType: hard -"@aws-sdk/hash-node@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/hash-node@npm:3.226.0" +"@aws-sdk/hash-node@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/hash-node@npm:3.266.1" dependencies: - "@aws-sdk/types": 3.226.0 + "@aws-sdk/types": 3.266.1 "@aws-sdk/util-buffer-from": 3.208.0 + "@aws-sdk/util-utf8": 3.254.0 tslib: ^2.3.1 - checksum: cbe466e2e3efdbb3aefe7772da734f6d00e0d1572c60e497b09460e055093b155c5e94bd3718135238bc05e58cb49abcdcd0fe5e34458bd3563b89d3d4a42251 + checksum: 86029d4041ed2e123a9667ff0e5ebdf93ab0f0a8ccf7b0e6ccfab6da83af439c4fb4289d9c3590e6b4c074fcd88af32fb3c5569e374992cb82b0421da180970a languageName: node linkType: hard -"@aws-sdk/invalid-dependency@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/invalid-dependency@npm:3.226.0" +"@aws-sdk/invalid-dependency@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/invalid-dependency@npm:3.266.1" dependencies: - "@aws-sdk/types": 3.226.0 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: 4a6168b50675881442c9bc87e8f27e8317ece9251fbfd3d812d32edcd83f687328e6de518fa9f11b1bc984ad3a3454cd43b59c0362f04c03687ce5250ac5d720 + checksum: 23b7abf4113e5220a5707fee9339428aec4142832aa658ea41f57014b906b6dfd004a0f6243941716fa8fdf960c9e67139a1632a34aab3ddce061b5d2ac79aeb languageName: node linkType: hard @@ -447,276 +433,277 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/middleware-content-length@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/middleware-content-length@npm:3.226.0" +"@aws-sdk/middleware-content-length@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/middleware-content-length@npm:3.266.1" dependencies: - "@aws-sdk/protocol-http": 3.226.0 - "@aws-sdk/types": 3.226.0 + "@aws-sdk/protocol-http": 3.266.1 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: 538b0222e2c8be61dc3090dfefe4b9ec1f0cbee155125edf5b654dbe36ab0b2d6befe3da6008194dc26bbf94d53b7e01edca683720061c4b43c6beb9dc278002 + checksum: 967a71c66192645e4c0079d346104340350719e67bbf9500d439285a5a25cfe971f3bf2e1f1b0917c0295dcedbbf59548cb262badc812cd670794addd9d97e0f languageName: node linkType: hard -"@aws-sdk/middleware-endpoint@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/middleware-endpoint@npm:3.226.0" +"@aws-sdk/middleware-endpoint@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/middleware-endpoint@npm:3.266.1" dependencies: - "@aws-sdk/middleware-serde": 3.226.0 - "@aws-sdk/protocol-http": 3.226.0 - "@aws-sdk/signature-v4": 3.226.0 - "@aws-sdk/types": 3.226.0 - "@aws-sdk/url-parser": 3.226.0 + "@aws-sdk/middleware-serde": 3.266.1 + "@aws-sdk/protocol-http": 3.266.1 + "@aws-sdk/signature-v4": 3.266.1 + "@aws-sdk/types": 3.266.1 + "@aws-sdk/url-parser": 3.266.1 "@aws-sdk/util-config-provider": 3.208.0 - "@aws-sdk/util-middleware": 3.226.0 + "@aws-sdk/util-middleware": 3.266.1 tslib: ^2.3.1 - checksum: 22df6fd90e3b7d3edd58f427ebfbb229181ef190b2d795e0b400f70f95a573dc59666a08b26613db6bb1b764b13ba7ddec15fced2641e9678fad5500fca289be + checksum: a257923e92cd3c7a666b3eb4979a084b46174b5b8ce5d472ea85616c5cdc8a5eaf2c09f37fa08b3cbd8721480f81c1ee2421358066f44904a1acb527a39ab802 languageName: node linkType: hard -"@aws-sdk/middleware-host-header@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/middleware-host-header@npm:3.226.0" +"@aws-sdk/middleware-host-header@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/middleware-host-header@npm:3.266.1" dependencies: - "@aws-sdk/protocol-http": 3.226.0 - "@aws-sdk/types": 3.226.0 + "@aws-sdk/protocol-http": 3.266.1 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: 35eb7d9f5eb2e45c58bb5887a12dc80f22e8fc630d53d356064c62ce3354c9054717697168ab3818f14c7baae3246480aa7251e6fcaf5c7104498df5dca9bbd6 + checksum: 6129af9e5727c261110332cf585a5210109ed979b2214e2c8a446d0840eb7733184ae372d36bbcb02b53f29f27da7da819e13041e3255ee6302a562d65f63290 languageName: node linkType: hard -"@aws-sdk/middleware-logger@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/middleware-logger@npm:3.226.0" +"@aws-sdk/middleware-logger@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/middleware-logger@npm:3.266.1" dependencies: - "@aws-sdk/types": 3.226.0 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: 7b7c2eb336f376f6e8c50ebd0fd9b6e9a749e21d6f5c433683a4e98edb311bb76fafc0bb0abfd75f61001466879be7d68aefb3958a332e540160a93ee9371b44 + checksum: 73e080974f40de5e0208b8075138abcbc2e15af9ac18c78c31a635b5e000445ca2e4f8d11807dc5333f44fb9620b35027f3d1c1994df8f55dbacf4b3a156ae33 languageName: node linkType: hard -"@aws-sdk/middleware-recursion-detection@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/middleware-recursion-detection@npm:3.226.0" +"@aws-sdk/middleware-recursion-detection@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/middleware-recursion-detection@npm:3.266.1" dependencies: - "@aws-sdk/protocol-http": 3.226.0 - "@aws-sdk/types": 3.226.0 + "@aws-sdk/protocol-http": 3.266.1 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: 194161d76a815df623c6699f7a7016268b4a01276baa3527682504001a4e2e948e2dd389d2065f62fe57509f20b9680ea907bfa52b861122335d276c9ab4ed61 + checksum: 87a9c6678e12930ec722aaf8bc5698274d4c397a37846ea1e66e2beeecf5833e27366981c43e5c67a6b7704c62ce53dc135813ac8eb0bba47ee43de31834c666 languageName: node linkType: hard -"@aws-sdk/middleware-retry@npm:3.235.0": - version: 3.235.0 - resolution: "@aws-sdk/middleware-retry@npm:3.235.0" +"@aws-sdk/middleware-retry@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/middleware-retry@npm:3.266.1" dependencies: - "@aws-sdk/protocol-http": 3.226.0 - "@aws-sdk/service-error-classification": 3.229.0 - "@aws-sdk/types": 3.226.0 - "@aws-sdk/util-middleware": 3.226.0 - "@aws-sdk/util-retry": 3.229.0 + "@aws-sdk/protocol-http": 3.266.1 + "@aws-sdk/service-error-classification": 3.266.1 + "@aws-sdk/types": 3.266.1 + "@aws-sdk/util-middleware": 3.266.1 + "@aws-sdk/util-retry": 3.266.1 tslib: ^2.3.1 uuid: ^8.3.2 - checksum: 397226fd10d8b0587a35ccab92160223f10740beb01ccac75dda0e30336b83c091c9aa51b9132a56ff6cccd6353b9e3c6ecf21ae18f20f8127e7e9e209e59a2a + checksum: a98e28dbd6f1f41224cc06f303f5d75015b42155faced7e93eeed8e2fe8e88783c4d244502a3f2b3c18917cc75c75c0547935d99cbeaa943131ca06156f66c7c languageName: node linkType: hard -"@aws-sdk/middleware-sdk-sts@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/middleware-sdk-sts@npm:3.226.0" +"@aws-sdk/middleware-sdk-sts@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/middleware-sdk-sts@npm:3.266.1" dependencies: - "@aws-sdk/middleware-signing": 3.226.0 - "@aws-sdk/property-provider": 3.226.0 - "@aws-sdk/protocol-http": 3.226.0 - "@aws-sdk/signature-v4": 3.226.0 - "@aws-sdk/types": 3.226.0 + "@aws-sdk/middleware-signing": 3.266.1 + "@aws-sdk/property-provider": 3.266.1 + "@aws-sdk/protocol-http": 3.266.1 + "@aws-sdk/signature-v4": 3.266.1 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: 0b6e11889c9f1b5264eb38288dea5bd2987fa28338651939d005eaa0524f9cd41c570c545b34b08d25d858397b3f14a2b6a21238a8c88fc08719ed50b835cb15 + checksum: 4240ab1728aee65de365416a43194b3171f1010b1000e1ef0c3581c8994ad53e756a60a8f80fdad40322f8cf2ca47074d7de7b0728edfa7e922d617fcddb3d34 languageName: node linkType: hard -"@aws-sdk/middleware-serde@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/middleware-serde@npm:3.226.0" +"@aws-sdk/middleware-serde@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/middleware-serde@npm:3.266.1" dependencies: - "@aws-sdk/types": 3.226.0 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: e8315079cc3ed4527d1434eb28becfaf951338d2ced21116753b52d3330eabbfd13f24382b3378bcc2c09ee0653a65e0d8353e9e32f512b69929908272b83fa2 + checksum: 7512e4fc336f132d0ee816def4eb69caefc89b13dd553a075d2463bc552577b04aef543ae0629fd20b1114a0b78f46c073fda94e7ed617b5115575ecee8fab89 languageName: node linkType: hard -"@aws-sdk/middleware-signing@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/middleware-signing@npm:3.226.0" +"@aws-sdk/middleware-signing@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/middleware-signing@npm:3.266.1" dependencies: - "@aws-sdk/property-provider": 3.226.0 - "@aws-sdk/protocol-http": 3.226.0 - "@aws-sdk/signature-v4": 3.226.0 - "@aws-sdk/types": 3.226.0 - "@aws-sdk/util-middleware": 3.226.0 + "@aws-sdk/property-provider": 3.266.1 + "@aws-sdk/protocol-http": 3.266.1 + "@aws-sdk/signature-v4": 3.266.1 + "@aws-sdk/types": 3.266.1 + "@aws-sdk/util-middleware": 3.266.1 tslib: ^2.3.1 - checksum: 4f66483d359e21d1f7e56a1900f7271a561801e1ee4380deaa006ce750ce73245a5fe554d4c1ab60cf9ca127c41f35c53c0817c375df6f8f068c9ed7f9572444 + checksum: f5e7fbd258566016e2a70f8b683d4feddbdd8401fa6a0842911879f1b5ec5543473a05b6b1ae1c4d8116cb2f596ceb169bf80b01798bf1363cc8800a2554e363 languageName: node linkType: hard -"@aws-sdk/middleware-stack@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/middleware-stack@npm:3.226.0" +"@aws-sdk/middleware-stack@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/middleware-stack@npm:3.266.1" dependencies: tslib: ^2.3.1 - checksum: fd284bc28ee6ee576e3fe9dd3c2c9d64b8c95fa1bb213b5e41e23a57bbc2693652ee51028414eb278918235e591ef729db572b160bff963c6f74e7d6c15d33d0 + checksum: 112eee2473ce83d4f994adc6d7ae64b0f41d5d331dbcce3db2af7576d7a6be25dd0b8c1fad1758b6db904276e4c18d30a7bdb886c9edb76853e2cd44c215060d languageName: node linkType: hard -"@aws-sdk/middleware-user-agent@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/middleware-user-agent@npm:3.226.0" +"@aws-sdk/middleware-user-agent@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/middleware-user-agent@npm:3.266.1" dependencies: - "@aws-sdk/protocol-http": 3.226.0 - "@aws-sdk/types": 3.226.0 + "@aws-sdk/protocol-http": 3.266.1 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: 8d3724aecd7b7f9f1a5b081263cb85864c969144105819f371a9675ee4f680c11e3b5ecbe181f57d2bfdde9c98b90267bd4afe0fc0822863041e0df52671f043 + checksum: 78b45ba6aacc2329eb604e186490e15d16f7566320e216c36983a68393d4ffdfe08ed5a6bbc5f920546c86fd0a1b4eebd859520e0beb9a4e097c0bbbb01d32ee languageName: node linkType: hard -"@aws-sdk/node-config-provider@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/node-config-provider@npm:3.226.0" +"@aws-sdk/node-config-provider@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/node-config-provider@npm:3.266.1" dependencies: - "@aws-sdk/property-provider": 3.226.0 - "@aws-sdk/shared-ini-file-loader": 3.226.0 - "@aws-sdk/types": 3.226.0 + "@aws-sdk/property-provider": 3.266.1 + "@aws-sdk/shared-ini-file-loader": 3.266.1 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: 0e7c4c7ea20c5361c71f1ab0b99c19964f76c187659714cd6e87e1cc264d0ab29965d33618d9d47d373e3b108558cd6628fb36a00cdac614849e5044c6776213 + checksum: 43b0d7090f468d944668efe97b17fa7eb939ee6eb653ab50d9953d5d13bffd552430c29c0c1a29bf11ecd788c4ce5e4ba19f699176994a5e51f7b90e6b2e98cc languageName: node linkType: hard -"@aws-sdk/node-http-handler@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/node-http-handler@npm:3.226.0" +"@aws-sdk/node-http-handler@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/node-http-handler@npm:3.266.1" dependencies: - "@aws-sdk/abort-controller": 3.226.0 - "@aws-sdk/protocol-http": 3.226.0 - "@aws-sdk/querystring-builder": 3.226.0 - "@aws-sdk/types": 3.226.0 + "@aws-sdk/abort-controller": 3.266.1 + "@aws-sdk/protocol-http": 3.266.1 + "@aws-sdk/querystring-builder": 3.266.1 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: e4080ec9f859be4b191416084fef8d2687f24d973169b8fef592a867c23c14fad74f4bea20f451b98fedfee6a265f2c89b0bee4fe7aabdb1fd05a7475bf12b91 + checksum: ba25899f96bfd9f19b655dd0c750720570a9ff73686694b15452a5d096cf0cb4f2aed78797744ba7928660170ebda3a9e891a47d18377bb6a51d0aee3f9c1c77 languageName: node linkType: hard -"@aws-sdk/property-provider@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/property-provider@npm:3.226.0" +"@aws-sdk/property-provider@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/property-provider@npm:3.266.1" dependencies: - "@aws-sdk/types": 3.226.0 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: d63c53313bb2797ab2ecfa2cff827b63417c0cc31abe8c666cd018a1d70da877b61ef1fb21e504d6408e72b20544756089938b44869b003ba3c313b39bca6d45 + checksum: 0c235a18fa09db1475da0d4138dbd4d78b4941d9c7e79291fbd7858b98431c2c88bafd3b62b30e7800ffd4f19dd4f0bb5fd540cb1ab4deeafd25b55f0b5116a1 languageName: node linkType: hard -"@aws-sdk/protocol-http@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/protocol-http@npm:3.226.0" +"@aws-sdk/protocol-http@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/protocol-http@npm:3.266.1" dependencies: - "@aws-sdk/types": 3.226.0 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: 92cf35e1026a812c6c7ce8309fd685162ab7796237fc063e71dd9b292abf25902d6c0e02e93219101e1f506ef68a98f02eed6a61b18b8acd450ecb4bf8c1b467 + checksum: 9b8121561f7c00cf3b8bcf3ff998e6368b81c38069f9e93f84bb28c4c895166e8f94ce278fa89cb9aecbb35b5cc773fbbde12bd30c74868b74df8fc8e22b23b0 languageName: node linkType: hard -"@aws-sdk/querystring-builder@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/querystring-builder@npm:3.226.0" +"@aws-sdk/querystring-builder@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/querystring-builder@npm:3.266.1" dependencies: - "@aws-sdk/types": 3.226.0 + "@aws-sdk/types": 3.266.1 "@aws-sdk/util-uri-escape": 3.201.0 tslib: ^2.3.1 - checksum: 0014b8876d402787c56f606f66e79eb48ff100b01d7a657bb0766a7723ca184da0dd2aed405837e7e6c5781fd868d7a903eef25884b2d1881d30e2454f5c2bfc + checksum: a0a6c16b304f82b68720f2b9ceb82c86f404f5de68df196688c334b1827bf459c08a4a5404b81a3c9f241c943b16e1f4e37aa49266eba730f4b2a73e25c66749 languageName: node linkType: hard -"@aws-sdk/querystring-parser@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/querystring-parser@npm:3.226.0" +"@aws-sdk/querystring-parser@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/querystring-parser@npm:3.266.1" dependencies: - "@aws-sdk/types": 3.226.0 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: 13b23b4dff859d778a05f6874e318d95d6fbd79c62a06bb6f6dff8496ac2eaf86f60b17460c3595af854c2e316482c9fcc098655d475926039f7dff4a6f1ecf1 + checksum: 2299ddf861304609384b05e88c1bc51eb88d38635b117a1f8f1a29418b3baee761deb62f7cb2bb01c45e48d723aaaef6b4f28a6fc7bd7def27dc4ce1287e9dcd languageName: node linkType: hard -"@aws-sdk/service-error-classification@npm:3.229.0": - version: 3.229.0 - resolution: "@aws-sdk/service-error-classification@npm:3.229.0" - checksum: 7877963d62f4d43ce5116f0ddfd1b27cffab2b0e74a4ceb4006b1f85b17dd50eb9ae2f227cabf935261e42b7615d0a9de190dd684380c30e03dee6e9f7e12587 +"@aws-sdk/service-error-classification@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/service-error-classification@npm:3.266.1" + checksum: a850854dba4fc0db74338bb3651900bd32c6ccd12ae15e1747a9a93487188a63ce7908b55af9d1a1354dc3d763fc957f0287665965a3b2b2f44fbcfc0af79d1b languageName: node linkType: hard -"@aws-sdk/shared-ini-file-loader@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/shared-ini-file-loader@npm:3.226.0" +"@aws-sdk/shared-ini-file-loader@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/shared-ini-file-loader@npm:3.266.1" dependencies: - "@aws-sdk/types": 3.226.0 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: 7b43e4d70f33b1098c9582a20dd5cf11c0e2efe5e7f4f854ee1fdfe2f804a7171deeb76f167c46ef7365bb584e29c816d58b6d8f6c9ac9debb124cccf59ebf59 + checksum: abafbdcc580688726a36879f30e875b3d5e1780a8a47054cdd0f9ae9289f325de19d3c23c6c94f94abf57685c02a5950e69d389c66a0b8eb7e7e33e53da4c4bc languageName: node linkType: hard -"@aws-sdk/signature-v4@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/signature-v4@npm:3.226.0" +"@aws-sdk/signature-v4@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/signature-v4@npm:3.266.1" dependencies: "@aws-sdk/is-array-buffer": 3.201.0 - "@aws-sdk/types": 3.226.0 + "@aws-sdk/types": 3.266.1 "@aws-sdk/util-hex-encoding": 3.201.0 - "@aws-sdk/util-middleware": 3.226.0 + "@aws-sdk/util-middleware": 3.266.1 "@aws-sdk/util-uri-escape": 3.201.0 + "@aws-sdk/util-utf8": 3.254.0 tslib: ^2.3.1 - checksum: 8bc6ea1ad467d59f1ff6c5b814277e16d0d5b2d1455f21969b4575f572fdc013284e356e0f24436c89c8b99a51d0e384b01daa2bace1c3d69e28f35a23ef9802 + checksum: e225a352293a7ed869e8dd4a65a763b828375a40ef71b17ac453fcca551350b1b792924b8f4f5e3bdb1fabf8b2e5647b457f5a333bf31eb1cbb17a8481b2064b languageName: node linkType: hard -"@aws-sdk/smithy-client@npm:3.234.0": - version: 3.234.0 - resolution: "@aws-sdk/smithy-client@npm:3.234.0" +"@aws-sdk/smithy-client@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/smithy-client@npm:3.266.1" dependencies: - "@aws-sdk/middleware-stack": 3.226.0 - "@aws-sdk/types": 3.226.0 + "@aws-sdk/middleware-stack": 3.266.1 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: 7b8299f81fde410b8f597662d4174a29740cb2791a2377e5009a73c0e7531fb440712ab25c837a0351dbceac4763cc8fadc6d4362727cf3ae749b25515da4ea1 + checksum: 5a988a7c49aa098fdcfc5448931690d7b1c13600df4277a17c3d0436519a99148222d0a813f1f22d7eb7f835d2a824d76ced2798859b4bca4b99088a07c8df89 languageName: node linkType: hard -"@aws-sdk/token-providers@npm:3.245.0": - version: 3.245.0 - resolution: "@aws-sdk/token-providers@npm:3.245.0" +"@aws-sdk/token-providers@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/token-providers@npm:3.266.1" dependencies: - "@aws-sdk/client-sso-oidc": 3.245.0 - "@aws-sdk/property-provider": 3.226.0 - "@aws-sdk/shared-ini-file-loader": 3.226.0 - "@aws-sdk/types": 3.226.0 + "@aws-sdk/client-sso-oidc": 3.266.1 + "@aws-sdk/property-provider": 3.266.1 + "@aws-sdk/shared-ini-file-loader": 3.266.1 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: 900a73b999c50eb35b3eda594210448329f5068b57a2d8d57ee8e4f3d960116ece36952ca1fbe43b5e8e9119927de916033f73ff969bae3a8394d4ef98f1d0c7 + checksum: a908c921b0178983f2bf32e7f40ba6800371776b826af1a530640922c4ee6eedd5e3bc99d25c2ecac3af3cbf36c63d564a342bfc6992d550899499043debdb83 languageName: node linkType: hard -"@aws-sdk/types@npm:3.226.0, @aws-sdk/types@npm:^3.1.0, @aws-sdk/types@npm:^3.110.0": - version: 3.226.0 - resolution: "@aws-sdk/types@npm:3.226.0" +"@aws-sdk/types@npm:3.266.1, @aws-sdk/types@npm:^3.222.0": + version: 3.266.1 + resolution: "@aws-sdk/types@npm:3.266.1" dependencies: tslib: ^2.3.1 - checksum: 0041a8c0924ec7ba4ff787ae329a80b3edb9ace43e38fe3656a1862ae5324427fb09836275c0962cbc80e3c34a6ee512a108a5c4e7997f29664e3e8930cffd80 + checksum: 3557812663158ce0bcabdc00ecd25e97d4ba046aa68cf4aaf21e01a75743591299218822b5bcb23468755bb063f452eedc087e692af0f913d0ae97faf978029a languageName: node linkType: hard -"@aws-sdk/url-parser@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/url-parser@npm:3.226.0" +"@aws-sdk/url-parser@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/url-parser@npm:3.266.1" dependencies: - "@aws-sdk/querystring-parser": 3.226.0 - "@aws-sdk/types": 3.226.0 + "@aws-sdk/querystring-parser": 3.266.1 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: cb8d4b13c0de7336728a7a60a246108c0ecd46e5e493cb1006f5ab58c5dbae0ac36a791536786b1facc90f58a8d6decca9f4fda2cba19667ba5a9f5f4fcadb63 + checksum: 01f76b3fec2d1a5a2597d4f92704796ce689f9c2621f68e4f02fa0081c5ecc0e4459a17bd8fa4882bec41f14f059fa322620b949ab3bd39bea4c27eb5081cc4d languageName: node linkType: hard @@ -767,39 +754,39 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/util-defaults-mode-browser@npm:3.234.0": - version: 3.234.0 - resolution: "@aws-sdk/util-defaults-mode-browser@npm:3.234.0" +"@aws-sdk/util-defaults-mode-browser@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/util-defaults-mode-browser@npm:3.266.1" dependencies: - "@aws-sdk/property-provider": 3.226.0 - "@aws-sdk/types": 3.226.0 + "@aws-sdk/property-provider": 3.266.1 + "@aws-sdk/types": 3.266.1 bowser: ^2.11.0 tslib: ^2.3.1 - checksum: 79a381a632f867477dc7f948243c8ba82932d3f10325c76a5f2cf96412560648d149ba43ee31794bc45d81158a8c361d890b291880fc0c05f9bafc99cded5ef4 + checksum: 8b3169915d2fd281bbab245ed6e2544bd0c7723994eff30ec6ca0bd777751aa5075b25fe6c4ef371332321c368542d2dc5e2113613b4444c669ed9ba6a6ac30f languageName: node linkType: hard -"@aws-sdk/util-defaults-mode-node@npm:3.234.0": - version: 3.234.0 - resolution: "@aws-sdk/util-defaults-mode-node@npm:3.234.0" +"@aws-sdk/util-defaults-mode-node@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/util-defaults-mode-node@npm:3.266.1" dependencies: - "@aws-sdk/config-resolver": 3.234.0 - "@aws-sdk/credential-provider-imds": 3.226.0 - "@aws-sdk/node-config-provider": 3.226.0 - "@aws-sdk/property-provider": 3.226.0 - "@aws-sdk/types": 3.226.0 + "@aws-sdk/config-resolver": 3.266.1 + "@aws-sdk/credential-provider-imds": 3.266.1 + "@aws-sdk/node-config-provider": 3.266.1 + "@aws-sdk/property-provider": 3.266.1 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: b70becd9e561c1622c75a452ed8c7a8b14b84eba35988159f29476db8c2b47ec72f0b7c19d1a252c725756af1fff1df4201e5e92b6136d1df9170e806dca5219 + checksum: 80a72df6f16d2b43cf6223ffc46b4f3d7835f5b600bb21d4cd30f87416b726ca27a5f8ab66ad92a2bf78b8f279698bf5a5c8e0802ce4899dd974f30d8c7b9ac6 languageName: node linkType: hard -"@aws-sdk/util-endpoints@npm:3.245.0": - version: 3.245.0 - resolution: "@aws-sdk/util-endpoints@npm:3.245.0" +"@aws-sdk/util-endpoints@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/util-endpoints@npm:3.266.1" dependencies: - "@aws-sdk/types": 3.226.0 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 - checksum: 22783fb178e8901385b20b0d19b944ad41297cc19f0561ac1722e86757ca6910fd3766626a0493372f718a0726bef920a5b39cc41fdceb1012f14e833541041b + checksum: 6455e89e44da247d288b83ee21c1c5d10e69d1e0c8419a4b3c765ef57015461e5193c9f40b5348975650efbda832ed51455b903836fa2d81906a232b9b7b7422 languageName: node linkType: hard @@ -821,22 +808,22 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/util-middleware@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/util-middleware@npm:3.226.0" +"@aws-sdk/util-middleware@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/util-middleware@npm:3.266.1" dependencies: tslib: ^2.3.1 - checksum: 51a4ba9a784943b723a2c57bbb889a4bc743f0f1219000ef73512e259069d63c3baa805aa375277c9d904da23301d0389bc0bd525b0b55274d7658fb62173e55 + checksum: fbd023ff6bf828bc6d117316dc2fa79273c5dede1e9cb493e40b890dbcf362d2fe1252a3a99f4f5458e3e8262acee4887def23ec3575e88410b1f307eaaecb3f languageName: node linkType: hard -"@aws-sdk/util-retry@npm:3.229.0": - version: 3.229.0 - resolution: "@aws-sdk/util-retry@npm:3.229.0" +"@aws-sdk/util-retry@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/util-retry@npm:3.266.1" dependencies: - "@aws-sdk/service-error-classification": 3.229.0 + "@aws-sdk/service-error-classification": 3.266.1 tslib: ^2.3.1 - checksum: e4ab435000abfa1dc21153682ce684302bd6e69d48b7d2c876ff8dfa66793a43223961a3755d05abb1f94f82765eac2b9d48e55c688a957a7f6b5d032bbc46ee + checksum: ab3e0c2b3d41ffa3f623d8dfbf3af7b34e876f5a049edf0ec2c5a4054143c0d8adb3bc75309e2ad416bae9b52fb9b51bd688c0b32a85c9b210cc1af1e1d4a41a languageName: node linkType: hard @@ -849,49 +836,49 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/util-user-agent-browser@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/util-user-agent-browser@npm:3.226.0" +"@aws-sdk/util-user-agent-browser@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/util-user-agent-browser@npm:3.266.1" dependencies: - "@aws-sdk/types": 3.226.0 + "@aws-sdk/types": 3.266.1 bowser: ^2.11.0 tslib: ^2.3.1 - checksum: b89b63e03636b98ccb811e713776c8ee5ce92a280edfd429e418dc69bb55b770b47d6118419be76207afe137f293fdb2e87605922714189df8ddbd4573185717 + checksum: 41470a0c939499c26d6b474246dfed2e3152ce987d375550101c7257a6c698af94f3c39bc627e0bef37e73d7504570a0228d1e602fed9f1b7810f4f2f562a51f languageName: node linkType: hard -"@aws-sdk/util-user-agent-node@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/util-user-agent-node@npm:3.226.0" +"@aws-sdk/util-user-agent-node@npm:3.266.1": + version: 3.266.1 + resolution: "@aws-sdk/util-user-agent-node@npm:3.266.1" dependencies: - "@aws-sdk/node-config-provider": 3.226.0 - "@aws-sdk/types": 3.226.0 + "@aws-sdk/node-config-provider": 3.266.1 + "@aws-sdk/types": 3.266.1 tslib: ^2.3.1 peerDependencies: aws-crt: ">=1.0.0" peerDependenciesMeta: aws-crt: optional: true - checksum: a3b620fa13e5e61bc874d777d451ec522f659f933b7d7f7642c10fbb12ce13dd068c2b5370fd6132cca5ddcd22243fb04b4e926a4dd8aedeb08270a9bb49ee74 + checksum: 81af2cf5c3cf622fb74db4e3a7f4fd937373d272e5845e8bd5beea38200b703e4322fbb637a0872a6de425306eb75d045f4a8fb32dd55fb5b685097b0ee8c8f0 languageName: node linkType: hard -"@aws-sdk/util-utf8-browser@npm:3.188.0, @aws-sdk/util-utf8-browser@npm:^3.0.0": - version: 3.188.0 - resolution: "@aws-sdk/util-utf8-browser@npm:3.188.0" +"@aws-sdk/util-utf8-browser@npm:^3.0.0": + version: 3.259.0 + resolution: "@aws-sdk/util-utf8-browser@npm:3.259.0" dependencies: tslib: ^2.3.1 - checksum: dacd27164aa0835888434e080b67f04510e2281560540ff73496f2d0aa73b0b7f830ec08491b35c3a51bf6214615579182aff8727e151e54a74a97a197a2ac31 + checksum: b6a1e580da1c9b62c749814182a7649a748ca4253edb4063aa521df97d25b76eae3359eb1680b86f71aac668e05cc05c514379bca39ebf4ba998ae4348412da8 languageName: node linkType: hard -"@aws-sdk/util-utf8-node@npm:3.208.0": - version: 3.208.0 - resolution: "@aws-sdk/util-utf8-node@npm:3.208.0" +"@aws-sdk/util-utf8@npm:3.254.0": + version: 3.254.0 + resolution: "@aws-sdk/util-utf8@npm:3.254.0" dependencies: "@aws-sdk/util-buffer-from": 3.208.0 tslib: ^2.3.1 - checksum: 0f4c1d0d3f6eb40d92bc7163c6dcf97f90b3a8be05df46ba4f9bb7723a3e6acabf2cb0f2486411b03d22e8fcccae9e757ed02afad384ff5f44a3a659a78c5752 + checksum: e5dfe7565f2de32245a544d1d715d803025bc5522538c0206fa61377f747804d95fc2e5e25976144bb63a6857e360b4286d101e730ab5d39866c60383a47e7d5 languageName: node linkType: hard @@ -939,20 +926,20 @@ __metadata: linkType: hard "@babel/parser@npm:^7.0.0": - version: 7.20.7 - resolution: "@babel/parser@npm:7.20.7" + version: 7.20.15 + resolution: "@babel/parser@npm:7.20.15" bin: parser: ./bin/babel-parser.js - checksum: 25b5266e3bd4be837092685f6b7ef886f1308ff72659a24342eb646ae5014f61ed1771ce8fc20636c890fcae19304fc72c069564ca6075207b7fbf3f75367275 + checksum: 1d0f47ca67ff2652f1c0ff1570bed8deccbc4b53509e7cd73476af9cc7ed23480c99f1179bd6d0be01612368b92b39e206d330ad6054009d699934848a89298b languageName: node linkType: hard "@babel/runtime@npm:^7.3.4": - version: 7.20.7 - resolution: "@babel/runtime@npm:7.20.7" + version: 7.20.13 + resolution: "@babel/runtime@npm:7.20.13" dependencies: regenerator-runtime: ^0.13.11 - checksum: 4629ce5c46f06cca9cfb9b7fc00d48003335a809888e2b91ec2069a2dcfbfef738480cff32ba81e0b7c290f8918e5c22ddcf2b710001464ee84ba62c7e32a3a3 + checksum: 09b7a97a05c80540db6c9e4ddf8c5d2ebb06cae5caf3a87e33c33f27f8c4d49d9c67a2d72f1570e796045288fad569f98a26ceba0c4f5fad2af84b6ad855c4fb languageName: node linkType: hard @@ -975,11 +962,11 @@ __metadata: linkType: hard "@bot-whatsapp/bot@npm:*": - version: 0.1.5 - resolution: "@bot-whatsapp/bot@npm:0.1.5" + version: 0.1.21 + resolution: "@bot-whatsapp/bot@npm:0.1.21" dependencies: dotenv: ^16.0.3 - checksum: 5131587aba502cd1feaf61ff2f0778aa32b1b267f1e01646c6a9b43a4948e50b770ff8dddd434977d1603e46aeddaffc577b440e4848d899863a026b92ca57eb + checksum: 36ea185ea7d60653373a6ef8f594257bcb7f14f66f07f9ceec4483c9ca2126aa4e6d4b6c28df7c558a59200b63a2b1d7c251686073e6d4d0e7d4ee66c3504381 languageName: node linkType: hard @@ -996,11 +983,11 @@ __metadata: linkType: soft "@bot-whatsapp/cli@npm:*": - version: 0.1.5 - resolution: "@bot-whatsapp/cli@npm:0.1.5" + version: 0.1.21 + resolution: "@bot-whatsapp/cli@npm:0.1.21" bin: bot: bin/cli.js - checksum: 2ff67f9c6f8402b25e0b2cc72c17fb1b163e61d8baa897b564d4b388bc0dfadf0f42c2dee42d55c3f63feff1de9b65c8e46c547a3c6dd0d74e5d95bd3d18613a + checksum: 495da00960837b0581a23335ed0193e3a725599b9ed95ae66922c78106559f46fc6e047d9d2ff8abbc76a072f335ef7bd744d5a402e52c80321674b9b323e1f1 languageName: node linkType: hard @@ -1026,13 +1013,13 @@ __metadata: linkType: soft "@bot-whatsapp/database@npm:*": - version: 0.1.5 - resolution: "@bot-whatsapp/database@npm:0.1.5" + version: 0.1.21 + resolution: "@bot-whatsapp/database@npm:0.1.21" dependencies: dotenv: ^16.0.3 mongodb: ^4.11.0 mysql2: ^2.3.3 - checksum: 4ddc5282c4b15d45126729fd1cf4adbd36328d71c82812f3f7c187ee6af4e8ee8c98cf7ead3bbf7fbb6631f22cdb608dad4a08b271a312b71a699bb35687da34 + checksum: 8be2e79b4d5344432d28c6cc088c36a46aa86aa2609b2c279280a45f4a2c34c53460f3752fc1abca1667b1eb979819ef29d7d9def3dd38e09b929bd828c097f2 languageName: node linkType: hard @@ -1072,14 +1059,14 @@ __metadata: linkType: soft "@bot-whatsapp/provider@npm:*": - version: 0.1.5 - resolution: "@bot-whatsapp/provider@npm:0.1.5" + version: 0.1.21 + resolution: "@bot-whatsapp/provider@npm:0.1.21" dependencies: "@bot-whatsapp/bot": "*" combine-image: ^1.0.3 qr-image: ^3.2.0 rimraf: ^3.0.2 - checksum: 87ab0ba27a4566ea882810fad1fe4be391d3a264646675e432b3dea860514bfa538f39d77e5dfa33b0daa3ed6f8540054c75f51a50c733155a9b86bbc13ac5e1 + checksum: 0e45faa755ab973820d95be964d4079d8cb9b98599e8d30c5bb774c2dc348d90820bcf03f23f92f16f34cee2e0c884c69376ac55019a805fc9b230be3e2b1b44 languageName: node linkType: hard @@ -1113,6 +1100,7 @@ __metadata: fs-extra: ^11.1.0 git-cz: ^4.9.0 husky: ^8.0.2 + mime-types: ^2.1.35 only-allow: ^1.1.1 prettier: ^2.8.0 pretty-quick: ^3.1.3 @@ -1127,56 +1115,56 @@ __metadata: languageName: unknown linkType: soft -"@bugsnag/browser@npm:^7.18.0": - version: 7.18.0 - resolution: "@bugsnag/browser@npm:7.18.0" +"@bugsnag/browser@npm:^7.20.0": + version: 7.20.0 + resolution: "@bugsnag/browser@npm:7.20.0" dependencies: - "@bugsnag/core": ^7.18.0 - checksum: 131f9bc8ac6d780574fa70ba8be5051efc9c75d4fbf8a32d1be7733cf07b85f81404e749776c5a76bf48526f4629b27faac0bae2b36318dfc157423e361b297a + "@bugsnag/core": ^7.19.0 + checksum: a8f1bbdde06e7b98ec918bbd1c1b4431df6d35ec15044164f8b439b55d8fb93957928a4d03f760b2c68a71eedc2a49e5b6506f5a1f994540b2bdbdbe5e68500e languageName: node linkType: hard -"@bugsnag/core@npm:^7.18.0": - version: 7.18.0 - resolution: "@bugsnag/core@npm:7.18.0" +"@bugsnag/core@npm:^7.19.0": + version: 7.19.0 + resolution: "@bugsnag/core@npm:7.19.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 + checksum: 324e1aa7bd62bd478c4e8459b2f54c71b4fb20d26075363a07be039f0cc65702b5996cee2e7955d0763b6535358376d45ef385cb9e24717441e1925de6aa5753 languageName: node linkType: hard "@bugsnag/cuid@npm:^3.0.0": - version: 3.0.1 - resolution: "@bugsnag/cuid@npm:3.0.1" - checksum: ead5632c883ec0dbd5b9303c2cce34d0ed72f32d3e4ecd243274790ce36193163d79477bb52746d2557ed7681715ad3f56f2fb359c53bb60e02c35a5bddfb5af + version: 3.0.2 + resolution: "@bugsnag/cuid@npm:3.0.2" + checksum: cf85d78f0107b25bcfc4396e5c2cf7eb58a28777f07b9c6e976d529417a8284bb69ec715f13917c2b6ad3803e7bb563621b0374c31e09d4c6b3156aba9939955 languageName: node linkType: hard "@bugsnag/js@npm:^7.0.0": - version: 7.18.0 - resolution: "@bugsnag/js@npm:7.18.0" + version: 7.20.0 + resolution: "@bugsnag/js@npm:7.20.0" dependencies: - "@bugsnag/browser": ^7.18.0 - "@bugsnag/node": ^7.18.0 - checksum: 6b011dc36001cdd4c2b33e793053d323d358e9bc1ef6ba7ee866634114e1a088b5704c3d18cb35cfa2e1f613ddaa9d94f7f3b2225698feffce2dcf622dd8f14f + "@bugsnag/browser": ^7.20.0 + "@bugsnag/node": ^7.19.0 + checksum: 503e00b315b7b21d4cbc5b3b7c6faa7e3180601106a7e5773304892f368d625f4682cd137b00dfed5ecb7941e5a2dc3115b08afcc7190db03bc557de286d2890 languageName: node linkType: hard -"@bugsnag/node@npm:^7.18.0": - version: 7.18.0 - resolution: "@bugsnag/node@npm:7.18.0" +"@bugsnag/node@npm:^7.19.0": + version: 7.19.0 + resolution: "@bugsnag/node@npm:7.19.0" dependencies: - "@bugsnag/core": ^7.18.0 + "@bugsnag/core": ^7.19.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 + checksum: f7dc9c1cfaa35c96a428ad2cdfe4d289298329275bc3930bfc923a0e1eac3bf62f8919581a68f001d992256fa2c55321232bddcaea9a9e5482f88f19632c2ea2 languageName: node linkType: hard @@ -1229,13 +1217,13 @@ __metadata: linkType: hard "@commitlint/cli@npm:^17.3.0": - version: 17.4.1 - resolution: "@commitlint/cli@npm:17.4.1" + version: 17.4.2 + resolution: "@commitlint/cli@npm:17.4.2" dependencies: "@commitlint/format": ^17.4.0 - "@commitlint/lint": ^17.4.0 - "@commitlint/load": ^17.4.1 - "@commitlint/read": ^17.4.0 + "@commitlint/lint": ^17.4.2 + "@commitlint/load": ^17.4.2 + "@commitlint/read": ^17.4.2 "@commitlint/types": ^17.4.0 execa: ^5.0.0 lodash.isfunction: ^3.0.9 @@ -1244,16 +1232,16 @@ __metadata: yargs: ^17.0.0 bin: commitlint: cli.js - checksum: a0f3d26f06fa751be6009f76b76fee83e2394f6b528b38f375b3119be41a39c851a053e9dd93385a5274feff471bd0984e626bb23624d72e231f66125e222fd5 + checksum: a2d0ecd2c5a770b3d3be1214020ed4298f3d7685f5c065ed2f1565b02b9a1608abd00d114c8b9b17e84741cde0d977bb2c2afc1074176565b6b63e9cde0d2e25 languageName: node linkType: hard "@commitlint/config-conventional@npm:^17.3.0": - version: 17.4.0 - resolution: "@commitlint/config-conventional@npm:17.4.0" + version: 17.4.2 + resolution: "@commitlint/config-conventional@npm:17.4.2" dependencies: conventional-changelog-conventionalcommits: ^5.0.0 - checksum: bc161a330c3cc9168798a58321b86ac05f8c28c5f6b521f4f1c43ede04ff75fbc31881700691685a308a327a05ad66397f9b41463403056fc5183eae18a0e9a2 + checksum: 517dd3b3395774084503606b5c5f9acb0e92db6cd5dd237716993b9858eb9e7e10da981e2a68f99aa2f48afb4d3597b04449c9e2bfde8af2690a0b40ea40115e languageName: node linkType: hard @@ -1298,31 +1286,31 @@ __metadata: languageName: node linkType: hard -"@commitlint/is-ignored@npm:^17.4.0": - version: 17.4.0 - resolution: "@commitlint/is-ignored@npm:17.4.0" +"@commitlint/is-ignored@npm:^17.4.2": + version: 17.4.2 + resolution: "@commitlint/is-ignored@npm:17.4.2" dependencies: "@commitlint/types": ^17.4.0 semver: 7.3.8 - checksum: 94643c63c7ff8dd01ef50f6593bc553411aa8c1d3372ca38e3b0086fcac96c168f4a81db1d77d153e4a9b083788c81754a311627f6260141306fa0b6a5fabaac + checksum: 4b210d6ce0f9dd66f27d925d151c88845a2f1128b10865f5808e113f31be6ab359c58c1259664c888961e7bc1b71d3e8a2125eda8b8e4be1d32618a7772603c6 languageName: node linkType: hard -"@commitlint/lint@npm:^17.4.0": - version: 17.4.0 - resolution: "@commitlint/lint@npm:17.4.0" +"@commitlint/lint@npm:^17.4.2": + version: 17.4.2 + resolution: "@commitlint/lint@npm:17.4.2" dependencies: - "@commitlint/is-ignored": ^17.4.0 - "@commitlint/parse": ^17.4.0 - "@commitlint/rules": ^17.4.0 + "@commitlint/is-ignored": ^17.4.2 + "@commitlint/parse": ^17.4.2 + "@commitlint/rules": ^17.4.2 "@commitlint/types": ^17.4.0 - checksum: 95e256ca880457e34b710292df9fa16a8c4849a43fbc0821ddd4a1a10c6f376a12cc1e24a6b5c35c899b15e2b002d2ff845e93a722b0848257941664af1052e2 + checksum: efcb5fbee6f8cad5b619deabde598f1f1ac253cf1162eeda4de01e41ae13b7caa651d6fe5eea75d32a20fa7975bb27d13d9e0c9a422ebd158485311e6fb8c8a9 languageName: node linkType: hard -"@commitlint/load@npm:^17.4.1": - version: 17.4.1 - resolution: "@commitlint/load@npm:17.4.1" +"@commitlint/load@npm:^17.4.2": + version: 17.4.2 + resolution: "@commitlint/load@npm:17.4.2" dependencies: "@commitlint/config-validator": ^17.4.0 "@commitlint/execute-rule": ^17.4.0 @@ -1338,38 +1326,38 @@ __metadata: resolve-from: ^5.0.0 ts-node: ^10.8.1 typescript: ^4.6.4 - checksum: 17bc9f2e339da480740138bb1f56d6a5c36ec6d70844a605f09b5ffcbe0bb18fd3ab0ad09d40ba3cfd095f26b0b3cf78a02d7b73d5980d9e58dbdcdfaeb252a2 + checksum: 7c0498040611abbc2c9f2af03bc6360ca44ff85943dd49012b90b5a5d9308997d782b75e164ad2c39c5d522e94c93214e5cc4fd3b4122c5788c3c869ee91eae0 languageName: node linkType: hard -"@commitlint/message@npm:^17.4.0": - version: 17.4.0 - resolution: "@commitlint/message@npm:17.4.0" - checksum: 7fe8672f149cf276084f16d66fe38139b188aa94b664397aae8268f9f6060368b801fe8456076c076cb9e55ba469367256f7671aebeabb281e2b5ca275266ff8 +"@commitlint/message@npm:^17.4.2": + version: 17.4.2 + resolution: "@commitlint/message@npm:17.4.2" + checksum: 55b6cfeb57f7c9f913e18821aa4d972a6b6faa78c62741390996151f99554396f6df68ccfee86c163d24d8c27a4dbbcb50ef03c2972ab0a7a21d89daa2f9a519 languageName: node linkType: hard -"@commitlint/parse@npm:^17.4.0": - version: 17.4.0 - resolution: "@commitlint/parse@npm:17.4.0" +"@commitlint/parse@npm:^17.4.2": + version: 17.4.2 + resolution: "@commitlint/parse@npm:17.4.2" dependencies: "@commitlint/types": ^17.4.0 conventional-changelog-angular: ^5.0.11 conventional-commits-parser: ^3.2.2 - checksum: 5807d44b6f9f3dad93d6af898e989f0b557f08b8f0509b2f72bdafbdbd4c0ffa4abfa01e04225dca19a7479500c5b39560d2bd747335d8f7ba1f25feff129173 + checksum: d6808cc9c9ffcf8b06f938392a7428bb017c5e43d13510edad2c5885468bf0eae23e02c4d9611c200c498adb33eaf8abee797f32d437557101ddee02922f3572 languageName: node linkType: hard -"@commitlint/read@npm:^17.4.0": - version: 17.4.0 - resolution: "@commitlint/read@npm:17.4.0" +"@commitlint/read@npm:^17.4.2": + version: 17.4.2 + resolution: "@commitlint/read@npm:17.4.2" dependencies: "@commitlint/top-level": ^17.4.0 "@commitlint/types": ^17.4.0 fs-extra: ^11.0.0 git-raw-commits: ^2.0.0 minimist: ^1.2.6 - checksum: 66cb387857d377bdc0c64f8ba3a3f4d000421d5866267c94652bfbcfb7962d0079fc2d5333eab5f09e0f8c6f195bc09a1e5b6c3d0b9f1a23c30ae84d498d5fec + checksum: ed509f913bd9790bb3abfde0886abdc4e2569eb7651e666d2d70705954f98f14e2c621ffe8ee17bb8a9bee36e65e4d4d01d5cd2792c8e08e69248d31808830fa languageName: node linkType: hard @@ -1387,16 +1375,16 @@ __metadata: languageName: node linkType: hard -"@commitlint/rules@npm:^17.4.0": - version: 17.4.0 - resolution: "@commitlint/rules@npm:17.4.0" +"@commitlint/rules@npm:^17.4.2": + version: 17.4.2 + resolution: "@commitlint/rules@npm:17.4.2" dependencies: "@commitlint/ensure": ^17.4.0 - "@commitlint/message": ^17.4.0 + "@commitlint/message": ^17.4.2 "@commitlint/to-lines": ^17.4.0 "@commitlint/types": ^17.4.0 execa: ^5.0.0 - checksum: 9f1fc405a41c55212b8c04a67966b36585b852057ebf4e4fa6ee091d55e6479a88fff333be484cff47dbdd24132c06f89d278af5084ee20eaf1156001c8c64d8 + checksum: 2d53f470b511c41359b66886db054cb43fff748281a236a860bf21c3ba666b9d0b346932e8f0ac90e0dfc5ccdea10abda855ea9faa0f3fe3ef0f3fbc6992c141 languageName: node linkType: hard @@ -1452,9 +1440,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/android-arm64@npm:0.16.16" +"@esbuild/android-arm64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/android-arm64@npm:0.16.17" conditions: os=android & cpu=arm64 languageName: node linkType: hard @@ -1466,65 +1454,65 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/android-arm@npm:0.16.16" +"@esbuild/android-arm@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/android-arm@npm:0.16.17" conditions: os=android & cpu=arm languageName: node linkType: hard -"@esbuild/android-x64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/android-x64@npm:0.16.16" +"@esbuild/android-x64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/android-x64@npm:0.16.17" conditions: os=android & cpu=x64 languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/darwin-arm64@npm:0.16.16" +"@esbuild/darwin-arm64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/darwin-arm64@npm:0.16.17" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/darwin-x64@npm:0.16.16" +"@esbuild/darwin-x64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/darwin-x64@npm:0.16.17" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/freebsd-arm64@npm:0.16.16" +"@esbuild/freebsd-arm64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/freebsd-arm64@npm:0.16.17" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/freebsd-x64@npm:0.16.16" +"@esbuild/freebsd-x64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/freebsd-x64@npm:0.16.17" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/linux-arm64@npm:0.16.16" +"@esbuild/linux-arm64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/linux-arm64@npm:0.16.17" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/linux-arm@npm:0.16.16" +"@esbuild/linux-arm@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/linux-arm@npm:0.16.17" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/linux-ia32@npm:0.16.16" +"@esbuild/linux-ia32@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/linux-ia32@npm:0.16.17" conditions: os=linux & cpu=ia32 languageName: node linkType: hard @@ -1536,86 +1524,86 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/linux-loong64@npm:0.16.16" +"@esbuild/linux-loong64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/linux-loong64@npm:0.16.17" conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/linux-mips64el@npm:0.16.16" +"@esbuild/linux-mips64el@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/linux-mips64el@npm:0.16.17" conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/linux-ppc64@npm:0.16.16" +"@esbuild/linux-ppc64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/linux-ppc64@npm:0.16.17" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/linux-riscv64@npm:0.16.16" +"@esbuild/linux-riscv64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/linux-riscv64@npm:0.16.17" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/linux-s390x@npm:0.16.16" +"@esbuild/linux-s390x@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/linux-s390x@npm:0.16.17" conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/linux-x64@npm:0.16.16" +"@esbuild/linux-x64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/linux-x64@npm:0.16.17" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/netbsd-x64@npm:0.16.16" +"@esbuild/netbsd-x64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/netbsd-x64@npm:0.16.17" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/openbsd-x64@npm:0.16.16" +"@esbuild/openbsd-x64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/openbsd-x64@npm:0.16.17" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/sunos-x64@npm:0.16.16" +"@esbuild/sunos-x64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/sunos-x64@npm:0.16.17" conditions: os=sunos & cpu=x64 languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/win32-arm64@npm:0.16.16" +"@esbuild/win32-arm64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/win32-arm64@npm:0.16.17" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/win32-ia32@npm:0.16.16" +"@esbuild/win32-ia32@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/win32-ia32@npm:0.16.17" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.16.16": - version: 0.16.16 - resolution: "@esbuild/win32-x64@npm:0.16.16" +"@esbuild/win32-x64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/win32-x64@npm:0.16.17" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -1678,25 +1666,38 @@ __metadata: languageName: node linkType: hard +"@fastify/send@npm:^2.0.0": + version: 2.0.1 + resolution: "@fastify/send@npm:2.0.1" + dependencies: + "@lukeed/ms": ^2.0.1 + escape-html: ~1.0.3 + fast-decode-uri-component: ^1.0.1 + http-errors: 2.0.0 + mime: ^3.0.0 + checksum: 184a21b5cd00a3756f5b9e853b0d110074a438e9112f8a27211aa6c3e2c27b4baf0cc9ca157561914b2181f1dab752ec3dd278bd8419f94972e56d5fdfb4c79c + languageName: node + linkType: hard + "@fastify/static@npm:^6.6.0": - version: 6.6.0 - resolution: "@fastify/static@npm:6.6.0" + version: 6.8.0 + resolution: "@fastify/static@npm:6.8.0" dependencies: "@fastify/accept-negotiator": ^1.0.0 + "@fastify/send": ^2.0.0 content-disposition: ^0.5.3 fastify-plugin: ^4.0.0 glob: ^8.0.1 p-limit: ^3.1.0 readable-stream: ^4.0.0 - send: ^0.18.0 - checksum: 4abefd47f404ead444742905c0596f55ee0dc264f694aeb34debcd10212e2cee8b2694159febe354454667999f397d73b06a52df6fe6150525f8c2a6af3078a8 + checksum: a38738e812a55bcb3042b06be90b703a343b6b13dd28a244b464dc03a63255419e1565279e5fd5d05315b0a4447d102e2387112682d8392700b2142f1f1a1e3e languageName: node linkType: hard "@fontsource/inter@npm:^4.5.14": - version: 4.5.14 - resolution: "@fontsource/inter@npm:4.5.14" - checksum: 4e2eb9e54f8de0025bca7ad8e0822549f1873c5d9a634b8f99630d7bba750b1c86263229bae99375fc82489daa38df41e0304c77c3efda2d9a2f78d0eba3ec56 + version: 4.5.15 + resolution: "@fontsource/inter@npm:4.5.15" + checksum: d4330957c0a23a6c6a47f6f628b89c5603deec6305f28458fd3277bb652913dc77b31ac454bba96beeaecddef87eaf4b60befa2aad040ebb8c22c39ee33a2cf1 languageName: node linkType: hard @@ -1803,11 +1804,11 @@ __metadata: linkType: hard "@iconify-json/tabler@npm:^1.1.49": - version: 1.1.54 - resolution: "@iconify-json/tabler@npm:1.1.54" + version: 1.1.58 + resolution: "@iconify-json/tabler@npm:1.1.58" dependencies: "@iconify/types": "*" - checksum: 4e3234db68858a1d12f37f3c59e6ecdfd6c6a34f916e35837821b74ef54e89f08e16a0078c915d201bfc9ec56a631c102c083d7304a078f33110ea52f0bc82af + checksum: 4ffa89fcf9ca4b45be4ebebc3b7a2c576bbf5575566077dc5502ec73599fd22e2e1153f3fdd8748fe557489b4bdec32d929aa95f4fd583b65b6a4a395b40abb5 languageName: node linkType: hard @@ -1891,6 +1892,13 @@ __metadata: languageName: node linkType: hard +"@lukeed/ms@npm:^2.0.1": + version: 2.0.1 + resolution: "@lukeed/ms@npm:2.0.1" + checksum: c7b46933bf7bad3e024dcbbe2ad6201392b4ed2a05a717c0ef7e96a03fb885d44f08b4b749c392cc51c2736a6a45a08c77f1863ace1c072928fbfd9908a13db3 + 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" @@ -1952,19 +1960,19 @@ __metadata: languageName: node linkType: hard -"@netlify/build@npm:^29.4.0": - version: 29.4.1 - resolution: "@netlify/build@npm:29.4.1" +"@netlify/build@npm:^29.5.2": + version: 29.5.4 + resolution: "@netlify/build@npm:29.5.4" dependencies: "@bugsnag/js": ^7.0.0 - "@netlify/cache-utils": ^5.1.0 - "@netlify/config": ^20.3.0 - "@netlify/edge-bundler": 8.0.0 - "@netlify/functions-utils": ^5.1.1 + "@netlify/cache-utils": ^5.1.1 + "@netlify/config": ^20.3.2 + "@netlify/edge-bundler": 8.4.0 + "@netlify/functions-utils": ^5.1.6 "@netlify/git-utils": ^5.1.0 "@netlify/plugins-list": ^6.61.0 "@netlify/run-utils": ^5.1.0 - "@netlify/zip-it-and-ship-it": ^8.2.0 + "@netlify/zip-it-and-ship-it": ^8.5.0 "@sindresorhus/slugify": ^2.0.0 ansi-escapes: ^5.0.0 chalk: ^5.0.0 @@ -1972,7 +1980,8 @@ __metadata: execa: ^6.0.0 figures: ^4.0.0 filter-obj: ^3.0.0 - got: ^10.0.0 + got: ^12.0.0 + hot-shots: 9.3.0 indent-string: ^5.0.0 is-plain-obj: ^4.0.0 js-yaml: ^4.0.0 @@ -1998,7 +2007,6 @@ __metadata: 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 @@ -2011,13 +2019,13 @@ __metadata: yargs: ^17.6.0 bin: netlify-build: bin.js - checksum: 1756c96a5ef99a377cce8f63303f12210d77570c1914204718d2762d1f0ebdb42f9e70d77219ab0b6813cf525c8e48d0f418bd5efb9741d2d0d4d657978bd1b1 + checksum: 2be04f50038086d71609b8d72cde66b7c2ca0c512ff7d0dcabfd55fb16641ba97ce40040c452f7cc17ee9e6a23ad133d9646e64311eb8bc3d19f16883079a470 languageName: node linkType: hard -"@netlify/cache-utils@npm:^5.1.0": - version: 5.1.0 - resolution: "@netlify/cache-utils@npm:5.1.0" +"@netlify/cache-utils@npm:^5.1.1": + version: 5.1.1 + resolution: "@netlify/cache-utils@npm:5.1.1" dependencies: cpy: ^8.1.0 del: ^6.0.0 @@ -2028,13 +2036,13 @@ __metadata: move-file: ^3.0.0 path-exists: ^5.0.0 readdirp: ^3.4.0 - checksum: 2e3cee0955c240150d855c01619c1c74fbffcd7d28f11b395d64bfcaf11d0e6d2ac883ca93c8f386f6fc3daf23547ed98a2a54ee811d3d1cf0e0d95e22329277 + checksum: d490da07f7f0ffcf372b3f48543efa776576f16d9c67b18532f9ab853d7eb41276a1b1ddfe4fc189f1fef91318ce4c0cfe7a1b0fc1b50fab7be5c3ebd30941cb languageName: node linkType: hard -"@netlify/config@npm:^20.3.0": - version: 20.3.0 - resolution: "@netlify/config@npm:20.3.0" +"@netlify/config@npm:^20.3.2": + version: 20.3.2 + resolution: "@netlify/config@npm:20.3.2" dependencies: chalk: ^5.0.0 cron-parser: ^4.1.0 @@ -2049,9 +2057,9 @@ __metadata: 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 + netlify: ^13.1.2 + netlify-headers-parser: ^7.1.1 + netlify-redirect-parser: ^14.1.1 omit.js: ^2.0.2 p-locate: ^6.0.0 path-exists: ^5.0.0 @@ -2062,13 +2070,13 @@ __metadata: yargs: ^17.6.0 bin: netlify-config: bin.js - checksum: 1ccafcf7dd7e3ffe241f809968c9e8f73fbeb56e078836eed15da8d8da1054945150aa57fdfc87981eebfd065908812071eda745322f9302c8d1226e668ca4a8 + checksum: 0e01523879e71f784b196a13ead8a6665a649ac1390a4b167a5bab0f48f2f9cd0a70a5f075974fbf5e7e18fbd92a92b360b82920cf908aac657b4d1c0238daf3 languageName: node linkType: hard -"@netlify/edge-bundler@npm:8.0.0": - version: 8.0.0 - resolution: "@netlify/edge-bundler@npm:8.0.0" +"@netlify/edge-bundler@npm:8.4.0, @netlify/edge-bundler@npm:^8.4.0": + version: 8.4.0 + resolution: "@netlify/edge-bundler@npm:8.4.0" dependencies: "@import-maps/resolve": ^1.0.1 ajv: ^8.11.2 @@ -2090,35 +2098,7 @@ __metadata: semver: ^7.3.5 tmp-promise: ^3.0.3 uuid: ^9.0.0 - checksum: b6e387fc46469179b3e53a82895740da02f98011e224827d26009254f671916393c3e4e8a7d4696e12d9220dbe7307f9abc8e479d4d5e833e00178a8bf276cd0 - languageName: node - linkType: hard - -"@netlify/edge-bundler@npm:^8.0.0": - version: 8.1.1 - resolution: "@netlify/edge-bundler@npm:8.1.1" - dependencies: - "@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: 0c7b07bcfa137a651f9ce58cf4cdd7c3ddaaf559844f0eb297afbc1aac7c27879e7f48ae4dc61259ff3e913e1fe40c4bc0be36c614019f9a95399d6993839a2d + checksum: ea53c2ed8a15fb6b7eee796771755ee4b0295a659996a04d50a9e39c46e3ca493dc179b4477094be2fdd838da6d298226e01ddf1bd40448840df527b6205fa2b languageName: node linkType: hard @@ -2333,9 +2313,9 @@ __metadata: languageName: node linkType: hard -"@netlify/framework-info@npm:^9.5.3": - version: 9.5.3 - resolution: "@netlify/framework-info@npm:9.5.3" +"@netlify/framework-info@npm:^9.7.1": + version: 9.7.2 + resolution: "@netlify/framework-info@npm:9.7.2" dependencies: ajv: ^8.0.0 filter-obj: ^3.0.0 @@ -2349,18 +2329,18 @@ __metadata: read-pkg-up: ^9.0.0 semver: ^7.3.4 url: ^0.11.0 - checksum: ba3f8c55f1563e3e60611838cf1aaffa04633aee86a7bc20ef760c8dda6565f160f85dc19970e6fcd5403f3de210a22d0f9e06d6d24808f9e1a7017243a3a0c2 + checksum: 90e1b1ed48e0882cc7467c74e32a18a1a7c15859f27b97b4b169ee65bae999878bddcf225d6d5a8aca6eb6f605f519a78bfa79e301530b12d4f320d8c5a425c9 languageName: node linkType: hard -"@netlify/functions-utils@npm:^5.1.1": - version: 5.1.1 - resolution: "@netlify/functions-utils@npm:5.1.1" +"@netlify/functions-utils@npm:^5.1.6": + version: 5.1.6 + resolution: "@netlify/functions-utils@npm:5.1.6" dependencies: - "@netlify/zip-it-and-ship-it": ^8.2.0 + "@netlify/zip-it-and-ship-it": ^8.5.0 cpy: ^8.1.0 path-exists: ^5.0.0 - checksum: 526c5f3ff25d8f687a30ab3c6003f97f183f1365468f6716e7f6bcf28022a2163dad8a613a48077c69b8944294e58e325e1ccf130dc4e2b4ffb425b446035879 + checksum: ffcae5d625677268de2b21d1be3bdd8253e4b94ff4cf4df03d01d94a448edf6107ecdb2e06d5550a0c2427d186f1a8350990b294958dfb6d5063c55b061721fb languageName: node linkType: hard @@ -2530,17 +2510,17 @@ __metadata: 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 +"@netlify/open-api@npm:^2.13.0": + version: 2.14.0 + resolution: "@netlify/open-api@npm:2.14.0" + checksum: 569ab242fd2f9b40287ae80e2474d6c4729cd6323d175a7c2151495940ac174de1776b1ddf8cc392162dda0031e6f647db44cdd43bf35e4feb63609e1c8767ba languageName: node linkType: hard "@netlify/plugins-list@npm:^6.61.0": - version: 6.61.0 - resolution: "@netlify/plugins-list@npm:6.61.0" - checksum: c1a62683f2c0d413e5787241bd2d3b0e6e1d05d4651d8bc9ed06647fdd50f5ab7f2aa2d9041559c5be3029a7064fd6ecf6b9ae0f46f844624bb81f8e7059ddd1 + version: 6.65.0 + resolution: "@netlify/plugins-list@npm:6.65.0" + checksum: 738c86fcb57faa170c64596fde8e2b193decaa16b98842385af615f71b2a31caff1025d4cb5fc09354f96f8a9920e0200906cb5521c29daa928ed02f95b15930 languageName: node linkType: hard @@ -2553,9 +2533,9 @@ __metadata: 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" +"@netlify/zip-it-and-ship-it@npm:^8.4.1, @netlify/zip-it-and-ship-it@npm:^8.5.0": + version: 8.5.0 + resolution: "@netlify/zip-it-and-ship-it@npm:8.5.0" dependencies: "@babel/parser": 7.16.8 "@netlify/binary-info": ^1.0.0 @@ -2576,7 +2556,7 @@ __metadata: junk: ^4.0.0 locate-path: ^7.0.0 merge-options: ^3.0.4 - minimatch: ^5.0.0 + minimatch: ^6.0.0 normalize-path: ^3.0.0 p-map: ^5.0.0 path-exists: ^5.0.0 @@ -2590,7 +2570,7 @@ __metadata: yargs: ^17.0.0 bin: zip-it-and-ship-it: dist/bin.js - checksum: 1963aeea05598e26c67c420813e5b765510cfe788118eda87eda88583c574f930b2d070dd9f5f368ac0e96752cbca7af9bdb18f52bb6b1c941415df85416a234 + checksum: 75f8fa9516f0dd911790dbcec769891d3241418e6779341a2730fcdef659e4f7ded95e61a89ef51c25353a95e64791fcd681976fc370d2a135f5cbf6ab5d92b5 languageName: node linkType: hard @@ -2649,66 +2629,66 @@ __metadata: linkType: hard "@octokit/auth-token@npm:^3.0.0": - version: 3.0.2 - resolution: "@octokit/auth-token@npm:3.0.2" + version: 3.0.3 + resolution: "@octokit/auth-token@npm:3.0.3" dependencies: - "@octokit/types": ^8.0.0 - checksum: c7204770a6cb1661379c31b5a26779b509324446e61a4902893a69fd471738c817afc470f8ac8d86ad827738cc953046d27fbb87fc81782ff10e366b70241f4e + "@octokit/types": ^9.0.0 + checksum: 9b3f569cec1b7e0aa88ab6da68aed4b49b6652261bd957257541fabaf6a4d4ed99f908153cc3dd2fe15b8b0ccaff8caaafaa50bb1a4de3925b0954a47cca1900 languageName: node linkType: hard "@octokit/core@npm:^4.1.0": - version: 4.1.0 - resolution: "@octokit/core@npm:4.1.0" + version: 4.2.0 + resolution: "@octokit/core@npm:4.2.0" dependencies: "@octokit/auth-token": ^3.0.0 "@octokit/graphql": ^5.0.0 "@octokit/request": ^6.0.0 "@octokit/request-error": ^3.0.0 - "@octokit/types": ^8.0.0 + "@octokit/types": ^9.0.0 before-after-hook: ^2.2.0 universal-user-agent: ^6.0.0 - checksum: 4e53e02ff3ebe808b74385be0055cc1cce4b548060b20e3f2d5dd1bf7877ff7b6556f11278edc070842bf24aa869f9f59a02638f1b14083eb290b9e297447a2d + checksum: 5ac56e7f14b42a5da8d3075a2ae41483521a78bee061a01f4a81d8c0ecd6a684b2e945d66baba0cd1fdf264639deedc3a96d0f32c4d2fc39b49ca10f52f4de39 languageName: node linkType: hard "@octokit/endpoint@npm:^7.0.0": - version: 7.0.3 - resolution: "@octokit/endpoint@npm:7.0.3" + version: 7.0.5 + resolution: "@octokit/endpoint@npm:7.0.5" dependencies: - "@octokit/types": ^8.0.0 + "@octokit/types": ^9.0.0 is-plain-object: ^5.0.0 universal-user-agent: ^6.0.0 - checksum: c36b1577062e51d1683779a59c75d046d59f9a5c3a0f046d465e6c4c39f64bfc3a3052b42fa91a4552c7903ec382c604b4a2e1aadebdf7458191849ede5d4978 + checksum: 81c9e9eabf50e48940cceff7c4d7fbc9327190296507cfe8a199ea00cd492caf8f18a841caf4e3619828924b481996eb16091826db6b5a649bee44c8718ecaa9 languageName: node linkType: hard "@octokit/graphql@npm:^5.0.0": - version: 5.0.4 - resolution: "@octokit/graphql@npm:5.0.4" + version: 5.0.5 + resolution: "@octokit/graphql@npm:5.0.5" dependencies: "@octokit/request": ^6.0.0 - "@octokit/types": ^8.0.0 + "@octokit/types": ^9.0.0 universal-user-agent: ^6.0.0 - checksum: 8cf65cf7e6608cf3cbc96a2fa902172b4d5dc30e88ee0bae3711bf467a25b828b10cce1aaabb7f82a7580bfbcf7028b91d1dd1a894940945e38ca2deb6509754 + checksum: eb2d1a6305a3d1f55ff0ce92fb88b677f0bb789757152d58a79ef61171fb65ecf6fe18d6c27e236c0cee6a0c2600c2cb8370f5ac7184f8e9361c085aa4555bb1 languageName: node linkType: hard -"@octokit/openapi-types@npm:^14.0.0": - version: 14.0.0 - resolution: "@octokit/openapi-types@npm:14.0.0" - checksum: 0a1f8f3be998cd82c5a640e9166d43fd183b33d5d36f5e1a9b81608e94d0da87c01ec46c9988f69cd26585d4e2ffc4d3ec99ee4f75e5fe997fc86dad0aa8293c +"@octokit/openapi-types@npm:^16.0.0": + version: 16.0.0 + resolution: "@octokit/openapi-types@npm:16.0.0" + checksum: 844f30a545da380d63c712e0eb733366bc567d1aab34529c79fdfbec3d73810e81d83f06fdab13058a5cbc7dae786db1a9b90b5b61b1e606854ee45d5ec5f194 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" +"@octokit/plugin-paginate-rest@npm:^6.0.0": + version: 6.0.0 + resolution: "@octokit/plugin-paginate-rest@npm:6.0.0" dependencies: - "@octokit/types": ^8.0.0 + "@octokit/types": ^9.0.0 peerDependencies: "@octokit/core": ">=4" - checksum: cfded297d9f66c7607bd34075eb0c5f7278a1617d6be86115997c0757151c9be2fcf7a8849c2a5cebab56931a263b5cc35742b6227935afe77f5ed61b0627a3d + checksum: 4ad89568d883373898b733837cada7d849d51eef32157c11d4a81cef5ce8e509720d79b46918cada3c132f9b29847e383f17b7cd5c39ede7c93cdcd2f850b47f languageName: node linkType: hard @@ -2721,61 +2701,61 @@ __metadata: 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" +"@octokit/plugin-rest-endpoint-methods@npm:^7.0.0": + version: 7.0.1 + resolution: "@octokit/plugin-rest-endpoint-methods@npm:7.0.1" dependencies: - "@octokit/types": ^8.0.0 + "@octokit/types": ^9.0.0 deprecation: ^2.3.1 peerDependencies: "@octokit/core": ">=3" - checksum: 513c6c0717d08f3e85848029bd700412b7d9787750f78cc79a3dede356e94b238bf8a518b108f556a7efe626871720dd0466de9f31091578ea4e0f5a016f0ae7 + checksum: cdb8734ec960f75acc2405284920c58efac9a71b1c3b2a71662b9100ffbc22dac597150acff017a93459c57e9a492d9e1c27872b068387dbb90597de75065fcf languageName: node linkType: hard "@octokit/request-error@npm:^3.0.0": - version: 3.0.2 - resolution: "@octokit/request-error@npm:3.0.2" + version: 3.0.3 + resolution: "@octokit/request-error@npm:3.0.3" dependencies: - "@octokit/types": ^8.0.0 + "@octokit/types": ^9.0.0 deprecation: ^2.0.0 once: ^1.4.0 - checksum: 41549554ce780de13d3421f8036635014c8dcbdf867c288526ef7b17e9d92470f33341ddadacf2868dc0181440842803484104efbe11ebfaecdaeec58871a13e + checksum: 5db0b514732686b627e6ed9ef1ccdbc10501f1b271a9b31f784783f01beee70083d7edcfeb35fbd7e569fa31fdd6762b1ff6b46101700d2d97e7e48e749520d0 languageName: node linkType: hard "@octokit/request@npm:^6.0.0": - version: 6.2.2 - resolution: "@octokit/request@npm:6.2.2" + version: 6.2.3 + resolution: "@octokit/request@npm:6.2.3" dependencies: "@octokit/endpoint": ^7.0.0 "@octokit/request-error": ^3.0.0 - "@octokit/types": ^8.0.0 + "@octokit/types": ^9.0.0 is-plain-object: ^5.0.0 node-fetch: ^2.6.7 universal-user-agent: ^6.0.0 - checksum: adbeb38807c60b53d32d9b69be0c1f861c26698bc6f5f3f7e05d26972290dc4867827dd333bdd801818c347e5723efd049a2b9848c6c8bf74a2032968dede0ff + checksum: fef4097be8375d20bb0b3276d8a3adf866ec628f2b0664d334f3c29b92157da847899497abdc7a5be540053819b55564990543175ad48f04e9e6f25f0395d4d3 languageName: node linkType: hard "@octokit/rest@npm:^19.0.0": - version: 19.0.5 - resolution: "@octokit/rest@npm:19.0.5" + version: 19.0.7 + resolution: "@octokit/rest@npm:19.0.7" dependencies: "@octokit/core": ^4.1.0 - "@octokit/plugin-paginate-rest": ^5.0.0 + "@octokit/plugin-paginate-rest": ^6.0.0 "@octokit/plugin-request-log": ^1.0.4 - "@octokit/plugin-rest-endpoint-methods": ^6.7.0 - checksum: ed4c36859aafb64e23f7f708086fe7e2ecda17ffd8c1594817d539f766f5855af79f17f5d225d96d34cd9b97cbfea988dac3df39a7cc928b2d2b7b75ed981056 + "@octokit/plugin-rest-endpoint-methods": ^7.0.0 + checksum: 1f970c4de2cf3d1691d3cf5dd4bfa5ac205629e76417b5c51561e1beb5b4a7e6c65ba647f368727e67e5243418e06ca9cdafd9e733173e1529385d4f4d053d3d languageName: node linkType: hard -"@octokit/types@npm:^8.0.0": - version: 8.0.0 - resolution: "@octokit/types@npm:8.0.0" +"@octokit/types@npm:^9.0.0": + version: 9.0.0 + resolution: "@octokit/types@npm:9.0.0" dependencies: - "@octokit/openapi-types": ^14.0.0 - checksum: 1a0197b2c4c522ac90f145e02b3f8cb048a47f71c2c6bdbf021a03db7dd30ca92a899c0186acb401337f218efe44e60d33cc1cc68715b622bb75bc1a4e79515d + "@octokit/openapi-types": ^16.0.0 + checksum: 5c7f5cca8f00f7c4daa0d00f4fe991c1598ec47cd6ced50b1c5fbe9721bb9dee0adc2acdee265a3a715bb984e53ef3dc7f1cfb7326f712c6d809d59fc5c6648d languageName: node linkType: hard @@ -2941,12 +2921,12 @@ __metadata: linkType: hard "@sindresorhus/slugify@npm:^2.0.0": - version: 2.1.1 - resolution: "@sindresorhus/slugify@npm:2.1.1" + version: 2.2.0 + resolution: "@sindresorhus/slugify@npm:2.2.0" dependencies: "@sindresorhus/transliterate": ^1.0.0 escape-string-regexp: ^5.0.0 - checksum: 0c60c8ce0ec2e1ca0b7aaa0babe36bb537b13ffdaac938ac5c0cbeb39a23a6c76cb50cfa65e9e172e4e5058ae5b0bf35c9aeae52fd09dc60033d59ffdd91507c + checksum: 13c5cff81b94ec9130b74692b12acefa406be6ab20bc842cb2a751d850719f709ca2acfeb8b66dde7fd96d989360d97e620d783292ad963bab9df999cd1d3102 languageName: node linkType: hard @@ -3025,8 +3005,8 @@ __metadata: linkType: hard "@tailwindcss/typography@npm:^0.5.0": - version: 0.5.8 - resolution: "@tailwindcss/typography@npm:0.5.8" + version: 0.5.9 + resolution: "@tailwindcss/typography@npm:0.5.9" dependencies: lodash.castarray: ^4.4.0 lodash.isplainobject: ^4.0.6 @@ -3034,7 +3014,7 @@ __metadata: postcss-selector-parser: 6.0.10 peerDependencies: tailwindcss: "*" - checksum: afe172c75ddf086f840b10f95e562bb210dde5612fccfcfd3c4cee688c57ca5b79569b3c2cb75687b34b1b7f9ad194b14e9fbb09a741cd69198bb92b5ac3838f + checksum: b98e21bdd1798d7e4683499893c5c20ad43fcc8955d5d6eefbe1d30e98e9b6c28949ae8f276d39be9a66fafe843597717196bc5a0a2ac0f87ef86aa051ab9611 languageName: node linkType: hard @@ -3191,26 +3171,26 @@ __metadata: languageName: node linkType: hard -"@types/express-serve-static-core@npm:^4.17.31": - version: 4.17.32 - resolution: "@types/express-serve-static-core@npm:4.17.32" +"@types/express-serve-static-core@npm:^4.17.33": + version: 4.17.33 + resolution: "@types/express-serve-static-core@npm:4.17.33" dependencies: "@types/node": "*" "@types/qs": "*" "@types/range-parser": "*" - checksum: 70ec1b8f386628850b315a7b9fd4240a5a70297b41ef1c39af65c8b9661d2c775cfff4686b491fd90e5b6eef43088af203700c5541aec0d063db0c6cbeff254c + checksum: dce580d16b85f207445af9d4053d66942b27d0c72e86153089fa00feee3e96ae336b7bedb31ed4eea9e553c99d6dd356ed6e0928f135375d9f862a1a8015adf2 languageName: node linkType: hard "@types/express@npm:*": - version: 4.17.15 - resolution: "@types/express@npm:4.17.15" + version: 4.17.17 + resolution: "@types/express@npm:4.17.17" dependencies: "@types/body-parser": "*" - "@types/express-serve-static-core": ^4.17.31 + "@types/express-serve-static-core": ^4.17.33 "@types/qs": "*" "@types/serve-static": "*" - checksum: b4acd8a836d4f6409cdf79b12d6e660485249b62500cccd61e7997d2f520093edf77d7f8498ca79d64a112c6434b6de5ca48039b8fde2c881679eced7e96979b + checksum: 0196dacc275ac3ce89d7364885cb08e7fb61f53ca101f65886dbf1daf9b7eb05c0943e2e4bbd01b0cc5e50f37e0eea7e4cbe97d0304094411ac73e1b7998f4da languageName: node linkType: hard @@ -3382,9 +3362,9 @@ __metadata: linkType: hard "@types/node@npm:*, @types/node@npm:^18.11.18, @types/node@npm:latest": - version: 18.11.18 - resolution: "@types/node@npm:18.11.18" - checksum: 03f17f9480f8d775c8a72da5ea7e9383db5f6d85aa5fefde90dd953a1449bd5e4ffde376f139da4f3744b4c83942166d2a7603969a6f8ea826edfb16e6e3b49d + version: 18.13.0 + resolution: "@types/node@npm:18.13.0" + checksum: 4ea10f8802848b01672bce938f678b6774ca2cee0c9774f12275ab064ae07818419c3e2e41d6257ce7ba846d1ea26c63214aa1dfa4166fa3746291752b8c6416 languageName: node linkType: hard @@ -3456,6 +3436,13 @@ __metadata: languageName: node linkType: hard +"@types/triple-beam@npm:^1.3.2": + version: 1.3.2 + resolution: "@types/triple-beam@npm:1.3.2" + checksum: dd7b4a563fb710abc992e5d59eac481bed9e303fada2e276e37b00be31c392e03300ee468e57761e616512872e77935f92472877d0704a19688d15a726cee17b + languageName: node + linkType: hard + "@types/unist@npm:*, @types/unist@npm:^2.0.0": version: 2.0.6 resolution: "@types/unist@npm:2.0.6" @@ -3662,6 +3649,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:5.51.0": + version: 5.51.0 + resolution: "@typescript-eslint/types@npm:5.51.0" + checksum: b31021a0866f41ba5d71b6c4c7e20cc9b99d49c93bb7db63b55b2e51542fb75b4e27662ee86350da3c1318029e278a5a807facaf4cb5aeea724be8b0e021e836 + 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" @@ -3680,7 +3674,7 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.48.0, @typescript-eslint/typescript-estree@npm:^5.13.0": +"@typescript-eslint/typescript-estree@npm:5.48.0": version: 5.48.0 resolution: "@typescript-eslint/typescript-estree@npm:5.48.0" dependencies: @@ -3698,6 +3692,24 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:^5.13.0": + version: 5.51.0 + resolution: "@typescript-eslint/typescript-estree@npm:5.51.0" + dependencies: + "@typescript-eslint/types": 5.51.0 + "@typescript-eslint/visitor-keys": 5.51.0 + 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: aec23e5cab48ee72fefa6d1ac266639ebabf6cebec1e0207ad47011d3a48186ac9a632c8e34c3bac896155f54895a497230c11d789fd81263b08eb267d7113ce + languageName: node + linkType: hard + "@typescript-eslint/utils@npm:5.45.0": version: 5.45.0 resolution: "@typescript-eslint/utils@npm:5.45.0" @@ -3754,6 +3766,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:5.51.0": + version: 5.51.0 + resolution: "@typescript-eslint/visitor-keys@npm:5.51.0" + dependencies: + "@typescript-eslint/types": 5.51.0 + eslint-visitor-keys: ^3.3.0 + checksum: b49710f3c6b3b62a846a163afffd81be5eb2b1f44e25bec51ff3c9f4c3b579d74aa4cbd3753b4fc09ea3dbc64a7062f9c658c08d22bb2740a599cb703d876220 + languageName: node + linkType: hard + "@vercel/nft@npm:^0.22.0": version: 0.22.6 resolution: "@vercel/nft@npm:0.22.6" @@ -3881,11 +3903,11 @@ __metadata: 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.6.0, acorn@npm:^8.8.0": - version: 8.8.1 - resolution: "acorn@npm:8.8.1" + version: 8.8.2 + resolution: "acorn@npm:8.8.2" bin: acorn: bin/acorn - checksum: 4079b67283b94935157698831967642f24a075c52ce3feaaaafe095776dfbe15d86a1b33b1e53860fc0d062ed6c83f4284a5c87c85b9ad51853a01173da6097f + checksum: f790b99a1bf63ef160c967e23c46feea7787e531292bb827126334612c234ed489a0dc2c7ba33156416f0ffa8d25bf2b0fdb7f35c2ba60eb3e960572bece4001 languageName: node linkType: hard @@ -4655,7 +4677,7 @@ __metadata: languageName: node linkType: hard -"bindings@npm:^1.4.0": +"bindings@npm:^1.4.0, bindings@npm:^1.5.0": version: 1.5.0 resolution: "bindings@npm:1.5.0" dependencies: @@ -4858,25 +4880,25 @@ __metadata: linkType: hard "browserslist@npm:^4.0.0, browserslist@npm:^4.13.0, browserslist@npm:^4.16.6, browserslist@npm:^4.21.4": - version: 4.21.4 - resolution: "browserslist@npm:4.21.4" + version: 4.21.5 + resolution: "browserslist@npm:4.21.5" dependencies: - caniuse-lite: ^1.0.30001400 - electron-to-chromium: ^1.4.251 - node-releases: ^2.0.6 - update-browserslist-db: ^1.0.9 + caniuse-lite: ^1.0.30001449 + electron-to-chromium: ^1.4.284 + node-releases: ^2.0.8 + update-browserslist-db: ^1.0.10 bin: browserslist: cli.js - checksum: 4af3793704dbb4615bcd29059ab472344dc7961c8680aa6c4bb84f05340e14038d06a5aead58724eae69455b8fade8b8c69f1638016e87e5578969d74c078b79 + checksum: 9755986b22e73a6a1497fd8797aedd88e04270be33ce66ed5d85a1c8a798292a65e222b0f251bafa1c2522261e237d73b08b58689d4920a607e5a53d56dc4706 languageName: node linkType: hard "bson@npm:^4.7.0": - version: 4.7.1 - resolution: "bson@npm:4.7.1" + version: 4.7.2 + resolution: "bson@npm:4.7.2" dependencies: buffer: ^5.6.0 - checksum: 546aaf322e42514e0c48c875ad6ffafc66458c83fea0fb89e9e3002ba040b7d95ab40e63eca7f997d1f9d4e92cd02af259ba761799bf04aafc3a857e12d147c4 + checksum: f357d12c5679c8eb029a62e410ad40fb862b7b91f0fc12a3399fb3668e14aecaa63205ffeeee48735a01d393171743607dcd527eb8c058b6f2bd294079ee4125 languageName: node linkType: hard @@ -5081,17 +5103,17 @@ __metadata: linkType: hard "cacheable-request@npm:^10.2.1": - version: 10.2.5 - resolution: "cacheable-request@npm:10.2.5" + version: 10.2.7 + resolution: "cacheable-request@npm:10.2.7" dependencies: "@types/http-cache-semantics": ^4.0.1 get-stream: ^6.0.1 - http-cache-semantics: ^4.1.0 + http-cache-semantics: ^4.1.1 keyv: ^4.5.2 mimic-response: ^4.0.0 normalize-url: ^8.0.0 responselike: ^3.0.0 - checksum: 9bf7443792072a50b5c5e17bd8e080e11d91b72a45ec7f287ffe47c96e9d64a4e60b7d7835114ef75b9667db45a85be1b16fa692cf31cf9a9c9fabae0ab3f098 + checksum: 25cfbe0cab755bcee3bf6610b0253414e583289f795a28035616bf3186ecb303e8caf1943cbf42d92410b3f24124a1cdd663dd8ff52ac2c997a5129de5e9557a languageName: node linkType: hard @@ -5239,10 +5261,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001400, caniuse-lite@npm:^1.0.30001426": - version: 1.0.30001442 - resolution: "caniuse-lite@npm:1.0.30001442" - checksum: c1bff65bd4f53da2d288e7f55be40706ee0119b983eae5a9dcc884046990476891630aef72d708f7989f8f1964200c44e4c37ea40deecaa2fb4a480df23e6317 +"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001426, caniuse-lite@npm:^1.0.30001449": + version: 1.0.30001451 + resolution: "caniuse-lite@npm:1.0.30001451" + checksum: 48a06a7881093bb4d8a08ed5428f24a1cbdaa544b0a6f0c3614287d4f34b6c853e79a0f608a5bd901c27995f5e951825606fba11e7930251cc422bd61de9d849 languageName: node linkType: hard @@ -5942,9 +5964,9 @@ __metadata: 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 + version: 1.0.5 + resolution: "content-type@npm:1.0.5" + checksum: 566271e0a251642254cde0f845f9dd4f9856e52d988f4eb0d0dcffbb7a1f8ec98de7a5215fc628f3bce30fe2fb6fd2bc064b562d721658c59b544e2d34ea2766 languageName: node linkType: hard @@ -6357,11 +6379,11 @@ __metadata: linkType: hard "cron-parser@npm:^4.1.0, cron-parser@npm:^4.2.1": - version: 4.7.0 - resolution: "cron-parser@npm:4.7.0" + version: 4.7.1 + resolution: "cron-parser@npm:4.7.1" dependencies: - luxon: ^3.1.0 - checksum: 25489f2cd41ada61bc35a09bdb7147e5f1d25179c740725d859e18076dabdf2551bfdd6d62fe339227d58840b068bb5a330fb6f867e695e998fd32359d6e0022 + luxon: ^3.2.1 + checksum: 60642d4710c6ba202b781be6c905d68a47ac69fe1b9eaba06a3f7e9950ba58adbb21ae260452b2801d80b2a1f04f142bb847157c5a707fa4b01a5d2c8842828e languageName: node linkType: hard @@ -6604,9 +6626,9 @@ __metadata: linkType: hard "data-uri-to-buffer@npm:^4.0.0": - version: 4.0.0 - resolution: "data-uri-to-buffer@npm:4.0.0" - checksum: a010653869abe8bb51259432894ac62c52bf79ad761d418d94396f48c346f2ae739c46b254e8bb5987bded8a653d467db1968db3a69bab1d33aa5567baa5cfc7 + version: 4.0.1 + resolution: "data-uri-to-buffer@npm:4.0.1" + checksum: 0d0790b67ffec5302f204c2ccca4494f70b4e2d940fea3d36b09f0bb2b8539c2e86690429eb1f1dc4bcc9e4df0644193073e63d9ee48ac9fce79ec1506e4aa4c languageName: node linkType: hard @@ -6855,9 +6877,9 @@ __metadata: linkType: hard "deepmerge@npm:^4.2.2": - version: 4.2.2 - resolution: "deepmerge@npm:4.2.2" - checksum: a8c43a1ed8d6d1ed2b5bf569fa4c8eb9f0924034baf75d5d406e47e157a451075c4db353efea7b6bcc56ec48116a8ce72fccf867b6e078e7c561904b5897530b + version: 4.3.0 + resolution: "deepmerge@npm:4.3.0" + checksum: c7980eb5c5be040b371f1df0d566473875cfabed9f672ccc177b81ba8eee5686ce2478de2f1d0076391621cbe729e5eacda397179a59ef0f68901849647db126 languageName: node linkType: hard @@ -7406,10 +7428,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.251": - version: 1.4.284 - resolution: "electron-to-chromium@npm:1.4.284" - checksum: be496e9dca6509dbdbb54dc32146fc99f8eb716d28a7ee8ccd3eba0066561df36fc51418d8bd7cf5a5891810bf56c0def3418e74248f51ea4a843d423603d10a +"electron-to-chromium@npm:^1.4.284": + version: 1.4.289 + resolution: "electron-to-chromium@npm:1.4.289" + checksum: 1f67b7f247d3212d91439e37ba36ddc9e0e410ff679047a16ce2ff1b264280ce4b3ddaa22c290a3f2eee54764d53ccf49db791bf23dd43a8fbd350f46ba3e7a8 languageName: node linkType: hard @@ -7522,11 +7544,12 @@ __metadata: linkType: hard "es-abstract@npm:^1.17.5, es-abstract@npm:^1.19.0, es-abstract@npm:^1.20.4": - version: 1.21.0 - resolution: "es-abstract@npm:1.21.0" + version: 1.21.1 + resolution: "es-abstract@npm:1.21.1" dependencies: + available-typed-arrays: ^1.0.5 call-bind: ^1.0.2 - es-set-tostringtag: ^2.0.0 + es-set-tostringtag: ^2.0.1 es-to-primitive: ^1.2.1 function-bind: ^1.1.1 function.prototype.name: ^1.1.5 @@ -7539,7 +7562,7 @@ __metadata: has-proto: ^1.0.1 has-symbols: ^1.0.3 internal-slot: ^1.0.4 - is-array-buffer: ^3.0.0 + is-array-buffer: ^3.0.1 is-callable: ^1.2.7 is-negative-zero: ^2.0.2 is-regex: ^1.1.4 @@ -7557,34 +7580,35 @@ __metadata: typed-array-length: ^1.0.4 unbox-primitive: ^1.0.2 which-typed-array: ^1.1.9 - checksum: 52305b52aff6505c9d8cebfa727835dd8871af76de151868d1db7baf6d21f13a81586316ac513601eec9b46e2947cab044fc2a131db68bfa05daf37aa153dbd9 + checksum: 23ff60d42d17a55d150e7bcedbdb065d4077a8b98c436e0e2e1ef4dd532a6d78a56028673de0bd8ed464a43c46ba781c50d9af429b6a17e44dbd14c7d7fb7926 languageName: node linkType: hard "es-get-iterator@npm:^1.1.2": - version: 1.1.2 - resolution: "es-get-iterator@npm:1.1.2" + version: 1.1.3 + resolution: "es-get-iterator@npm:1.1.3" dependencies: call-bind: ^1.0.2 - get-intrinsic: ^1.1.0 - has-symbols: ^1.0.1 - is-arguments: ^1.1.0 + get-intrinsic: ^1.1.3 + has-symbols: ^1.0.3 + is-arguments: ^1.1.1 is-map: ^2.0.2 is-set: ^2.0.2 - is-string: ^1.0.5 + is-string: ^1.0.7 isarray: ^2.0.5 - checksum: f75e66acb6a45686fa08b3ade9c9421a70d36a0c43ed4363e67f4d7aab2226cb73dd977cb48abbaf75721b946d3cd810682fcf310c7ad0867802fbf929b17dcf + stop-iteration-iterator: ^1.0.0 + checksum: 8fa118da42667a01a7c7529f8a8cca514feeff243feec1ce0bb73baaa3514560bd09d2b3438873cf8a5aaec5d52da248131de153b28e2638a061b6e4df13267d 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 + version: 1.1.1 + resolution: "es-module-lexer@npm:1.1.1" + checksum: 1eba6029faa74b8bf6ab0619f8e5a407ded87be6df3ea3831325166ecf9323d69e389b2a4403339e79c94f43e9dd9823580d5bbc5dfad7c6920ed4830575dc75 languageName: node linkType: hard -"es-set-tostringtag@npm:^2.0.0": +"es-set-tostringtag@npm:^2.0.1": version: 2.0.1 resolution: "es-set-tostringtag@npm:2.0.1" dependencies: @@ -7848,31 +7872,31 @@ __metadata: linkType: hard "esbuild@npm:^0.16.3": - version: 0.16.16 - resolution: "esbuild@npm:0.16.16" + version: 0.16.17 + resolution: "esbuild@npm:0.16.17" dependencies: - "@esbuild/android-arm": 0.16.16 - "@esbuild/android-arm64": 0.16.16 - "@esbuild/android-x64": 0.16.16 - "@esbuild/darwin-arm64": 0.16.16 - "@esbuild/darwin-x64": 0.16.16 - "@esbuild/freebsd-arm64": 0.16.16 - "@esbuild/freebsd-x64": 0.16.16 - "@esbuild/linux-arm": 0.16.16 - "@esbuild/linux-arm64": 0.16.16 - "@esbuild/linux-ia32": 0.16.16 - "@esbuild/linux-loong64": 0.16.16 - "@esbuild/linux-mips64el": 0.16.16 - "@esbuild/linux-ppc64": 0.16.16 - "@esbuild/linux-riscv64": 0.16.16 - "@esbuild/linux-s390x": 0.16.16 - "@esbuild/linux-x64": 0.16.16 - "@esbuild/netbsd-x64": 0.16.16 - "@esbuild/openbsd-x64": 0.16.16 - "@esbuild/sunos-x64": 0.16.16 - "@esbuild/win32-arm64": 0.16.16 - "@esbuild/win32-ia32": 0.16.16 - "@esbuild/win32-x64": 0.16.16 + "@esbuild/android-arm": 0.16.17 + "@esbuild/android-arm64": 0.16.17 + "@esbuild/android-x64": 0.16.17 + "@esbuild/darwin-arm64": 0.16.17 + "@esbuild/darwin-x64": 0.16.17 + "@esbuild/freebsd-arm64": 0.16.17 + "@esbuild/freebsd-x64": 0.16.17 + "@esbuild/linux-arm": 0.16.17 + "@esbuild/linux-arm64": 0.16.17 + "@esbuild/linux-ia32": 0.16.17 + "@esbuild/linux-loong64": 0.16.17 + "@esbuild/linux-mips64el": 0.16.17 + "@esbuild/linux-ppc64": 0.16.17 + "@esbuild/linux-riscv64": 0.16.17 + "@esbuild/linux-s390x": 0.16.17 + "@esbuild/linux-x64": 0.16.17 + "@esbuild/netbsd-x64": 0.16.17 + "@esbuild/openbsd-x64": 0.16.17 + "@esbuild/sunos-x64": 0.16.17 + "@esbuild/win32-arm64": 0.16.17 + "@esbuild/win32-ia32": 0.16.17 + "@esbuild/win32-x64": 0.16.17 dependenciesMeta: "@esbuild/android-arm": optional: true @@ -7920,7 +7944,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: d3163ec01e017776df6b68e1825caa2323918f0d03eb92250bdcdff80410a2c0eb5b3807955db84d83b1b91cf24af9815a1d19efc2343c490be3e5d7b27a834f + checksum: 4c2cc609ecfb426554bc3f75beb92d89eb2d0c515cfceebaa36c7599d7dcaab7056b70f6d6b51e72b45951ddf9021ee28e356cf205f8e42cc055d522312ea30c languageName: node linkType: hard @@ -8134,7 +8158,7 @@ __metadata: languageName: node linkType: hard -"eslint@npm:8.31.0, eslint@npm:^8.26.0": +"eslint@npm:8.31.0": version: 8.31.0 resolution: "eslint@npm:8.31.0" dependencies: @@ -8183,6 +8207,55 @@ __metadata: languageName: node linkType: hard +"eslint@npm:^8.26.0": + version: 8.33.0 + resolution: "eslint@npm:8.33.0" + dependencies: + "@eslint/eslintrc": ^1.4.1 + "@humanwhocodes/config-array": ^0.11.8 + "@humanwhocodes/module-importer": ^1.0.1 + "@nodelib/fs.walk": ^1.2.8 + ajv: ^6.10.0 + chalk: ^4.0.0 + cross-spawn: ^7.0.2 + debug: ^4.3.2 + doctrine: ^3.0.0 + escape-string-regexp: ^4.0.0 + eslint-scope: ^7.1.1 + eslint-utils: ^3.0.0 + eslint-visitor-keys: ^3.3.0 + espree: ^9.4.0 + esquery: ^1.4.0 + esutils: ^2.0.2 + fast-deep-equal: ^3.1.3 + file-entry-cache: ^6.0.1 + find-up: ^5.0.0 + glob-parent: ^6.0.2 + globals: ^13.19.0 + grapheme-splitter: ^1.0.4 + ignore: ^5.2.0 + import-fresh: ^3.0.0 + imurmurhash: ^0.1.4 + is-glob: ^4.0.0 + is-path-inside: ^3.0.3 + js-sdsl: ^4.1.4 + js-yaml: ^4.1.0 + json-stable-stringify-without-jsonify: ^1.0.1 + levn: ^0.4.1 + lodash.merge: ^4.6.2 + minimatch: ^3.1.2 + natural-compare: ^1.4.0 + optionator: ^0.9.1 + regexpp: ^3.2.0 + strip-ansi: ^6.0.1 + strip-json-comments: ^3.1.0 + text-table: ^0.2.0 + bin: + eslint: bin/eslint.js + checksum: 727e63ab8b7acf281442323c5971f6afdd5b656fbcebc4476cf54e35af51b2f180617433fc5e1952f0449ca3f43a905527f9407ea4b8a7ea7562fc9c3f278d4c + languageName: node + linkType: hard + "espree@npm:^9.4.0": version: 9.4.1 resolution: "espree@npm:9.4.1" @@ -8253,11 +8326,11 @@ __metadata: linkType: hard "estree-util-attach-comments@npm:^2.0.0": - version: 2.1.0 - resolution: "estree-util-attach-comments@npm:2.1.0" + version: 2.1.1 + resolution: "estree-util-attach-comments@npm:2.1.1" dependencies: "@types/estree": ^1.0.0 - checksum: 8489b977dc420e4af59b03528487b2963d7bfe2d6d265819231dce5a1a5c389109230be102d4b7b85a86ec64f75a7e70b0f306542d56ec557c83f92ec326738a + checksum: c5c2c41c9a55a169fb4fba9627057843f0d2e21e47a2e3e24318a11ffcf6bc704c0f96f405a529bddac7969b7c44f6cf86711505faaf0c5862c2024419b19704 languageName: node linkType: hard @@ -8273,30 +8346,30 @@ __metadata: linkType: hard "estree-util-is-identifier-name@npm:^2.0.0": - version: 2.0.1 - resolution: "estree-util-is-identifier-name@npm:2.0.1" - checksum: d91693dc1c8e7f9860e5c73d3f2e0ad4fc484dc9df432086e0432c27c89f1690fe3c63f0d608d11bce77bb026a4edef434c28da5cbad0761d0292741a96b1481 + version: 2.1.0 + resolution: "estree-util-is-identifier-name@npm:2.1.0" + checksum: cab317a071fafb99cf83b57df7924bccd2e6ab4e252688739e49f00b16cefd168e279c171442b0557c80a1c80ffaa927d670dadea65bb3c9b151efb8e772e89d languageName: node linkType: hard "estree-util-to-js@npm:^1.1.0": - version: 1.1.0 - resolution: "estree-util-to-js@npm:1.1.0" + version: 1.1.1 + resolution: "estree-util-to-js@npm:1.1.1" dependencies: "@types/estree-jsx": ^1.0.0 astring: ^1.8.0 source-map: ^0.7.0 - checksum: 3ce2ef2fd78497fa7a0e5250be0f217af9060c819f7ed4f4739285e4ade4ed244536cb88e8ba1e38986af98d3a9064165122bb1622f2c6d57fe7b241b884fc47 + checksum: 67a1dd8757057bb835f7a094e3028804002b8ce6e5951b09542d4e28fab805c71b50b302f6deb0c47bff0eae3135b3815b4656f07a1e5014dbdc222acf31a762 languageName: node linkType: hard "estree-util-visit@npm:^1.0.0": - version: 1.2.0 - resolution: "estree-util-visit@npm:1.2.0" + version: 1.2.1 + resolution: "estree-util-visit@npm:1.2.1" dependencies: "@types/estree-jsx": ^1.0.0 "@types/unist": ^2.0.0 - checksum: d36a36aed82d6cb00d24615889052e22308ff008191b3760f65f93e9d0b06d3bc448af9f99a685947f1c69fba36d9a412da243b0b026096c66ecd74054c3b090 + checksum: 6feea4fdc43b0ba0f79faf1d57cf32373007e146d4810c7c09c13f5a9c1b8600c1ac57a8d949967cedd2a9a91dddd246e19b59bacfc01e417168b4ebf220f691 languageName: node linkType: hard @@ -8315,9 +8388,11 @@ __metadata: linkType: hard "estree-walker@npm:^3.0.0": - version: 3.0.2 - resolution: "estree-walker@npm:3.0.2" - checksum: ecf457e8d4750cefb10b3e003df3bfceabe1e360695d0d71efdf00b45a4d625cb117e9a03d06331e989d5f1df2b4963b5c80df7f5d88c7ea3fe5586b5c783900 + version: 3.0.3 + resolution: "estree-walker@npm:3.0.3" + dependencies: + "@types/estree": ^1.0.0 + checksum: a65728d5727b71de172c5df323385755a16c0fdab8234dc756c3854cfee343261ddfbb72a809a5660fac8c75d960bb3e21aa898c2d7e9b19bb298482ca58a3af languageName: node linkType: hard @@ -8556,7 +8631,7 @@ __metadata: languageName: node linkType: hard -"extract-zip@npm:^2.0.0": +"extract-zip@npm:^2.0.0, extract-zip@npm:^2.0.1": version: 2.0.1 resolution: "extract-zip@npm:2.0.1" dependencies: @@ -8587,6 +8662,13 @@ __metadata: languageName: node linkType: hard +"fast-content-type-parse@npm:^1.0.0": + version: 1.0.0 + resolution: "fast-content-type-parse@npm:1.0.0" + checksum: 9e9187be17bea18a2ee715c5737b983181cbe84f286a291db0595e421e04b578da10ca10845639be08664a4db6a793f7709822935cf38cfdf9ecba38d84ead9e + languageName: node + linkType: hard + "fast-decode-uri-component@npm:^1.0.1": version: 1.0.1 resolution: "fast-decode-uri-component@npm:1.0.1" @@ -8671,11 +8753,11 @@ __metadata: linkType: hard "fast-querystring@npm:^1.0.0": - version: 1.1.0 - resolution: "fast-querystring@npm:1.1.0" + version: 1.1.1 + resolution: "fast-querystring@npm:1.1.1" dependencies: fast-decode-uri-component: ^1.0.1 - checksum: 912e55326733004ac15ee6c759a319ed01117c23953d93ff28f64b230e76ba22cdf14722fb01c1045d80c6d565e39a6ae18b89f05faa576862036e0a4ccff473 + checksum: 86d2b75b9b299a552353532fb1a542f09730ee2a61e657d68710971d9a2afc9a3c5c7b7e106b6534f4cc506d2ff1c08ab0fda4ae614b4e7720798c9ac2a88e02 languageName: node linkType: hard @@ -8712,22 +8794,22 @@ __metadata: linkType: hard "fastify-plugin@npm:^4.0.0": - version: 4.4.0 - resolution: "fastify-plugin@npm:4.4.0" - checksum: f61d6620a24e8c3c9e67305fffe5570d4c0580477fc0f11fd9397b3e11e2b28ea0873e80d2774fee3ad9d70a81a07a83cb0da61e92afc70f6c50bbb3fb91335d + version: 4.5.0 + resolution: "fastify-plugin@npm:4.5.0" + checksum: 3cc36a43ec72ee9974d3cd1989027e77b277b0994e4fc02ed4e6492aabd83a0be66f14fdec56e60d9a41911ea1ff1ea70c9d957a87e46bcdb8fedd859f4988fe languageName: node linkType: hard "fastify@npm:^4.10.2": - version: 4.11.0 - resolution: "fastify@npm:4.11.0" + version: 4.12.0 + resolution: "fastify@npm:4.12.0" dependencies: "@fastify/ajv-compiler": ^3.3.1 "@fastify/error": ^3.0.0 "@fastify/fast-json-stringify-compiler": ^4.1.0 abstract-logging: ^2.0.1 avvio: ^8.2.0 - content-type: ^1.0.4 + fast-content-type-parse: ^1.0.0 find-my-way: ^7.3.0 light-my-request: ^5.6.1 pino: ^8.5.0 @@ -8737,7 +8819,7 @@ __metadata: secure-json-parse: ^2.5.0 semver: ^7.3.7 tiny-lru: ^10.0.0 - checksum: 814803b1015ae47cce4d7877a16788abee3ba6bba23e7e1b08a6cc62b43828aa6c38624de835c5b422da902fa93b316d1222d191b8373bebd8acbd68c8843584 + checksum: 7f5ec6aad14cd57acf11899c3c64186c7b0a1716c068ad7174375fdcc21248e5cd1c54ac71d496504b0255f5eefdb6858446d859286c70472742ea75a4eb4cad languageName: node linkType: hard @@ -9453,14 +9535,14 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.0, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3": - version: 1.1.3 - resolution: "get-intrinsic@npm:1.1.3" +"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3": + version: 1.2.0 + resolution: "get-intrinsic@npm:1.2.0" dependencies: function-bind: ^1.1.1 has: ^1.0.3 has-symbols: ^1.0.3 - checksum: 152d79e87251d536cf880ba75cfc3d6c6c50e12b3a64e1ea960e73a3752b47c69f46034456eae1b0894359ce3bc64c55c186f2811f8a788b75b638b06fab228a + checksum: 78fc0487b783f5c58cf2dccafc3ae656ee8d2d8062a8831ce4a95e7057af4587a1d4882246c033aca0a7b4965276f4802b45cc300338d1b77a73d3e3e3f4877d languageName: node linkType: hard @@ -9745,15 +9827,15 @@ __metadata: linkType: hard "glob@npm:^8.0.1, glob@npm:^8.0.3": - version: 8.0.3 - resolution: "glob@npm:8.0.3" + version: 8.1.0 + resolution: "glob@npm:8.1.0" dependencies: fs.realpath: ^1.0.0 inflight: ^1.0.4 inherits: 2 minimatch: ^5.0.1 once: ^1.3.0 - checksum: 50bcdea19d8e79d8de5f460b1939ffc2b3299eac28deb502093fdca22a78efebc03e66bf54f0abc3d3d07d8134d19a32850288b7440d77e072aa55f9d33b18c5 + checksum: 92fbea3221a7d12075f26f0227abac435de868dd0736a17170663783296d0dd8d3d532a5672b4488a439bf5d7fb85cdd07c11185d6cd39184f0385cbdfb86a47 languageName: node linkType: hard @@ -9796,11 +9878,11 @@ __metadata: linkType: hard "globals@npm:^13.15.0, globals@npm:^13.19.0": - version: 13.19.0 - resolution: "globals@npm:13.19.0" + version: 13.20.0 + resolution: "globals@npm:13.20.0" dependencies: type-fest: ^0.20.2 - checksum: a000dbd00bcf28f0941d8a29c3522b1c3b8e4bfe4e60e262c477a550c3cbbe8dbe2925a6905f037acd40f9a93c039242e1f7079c76b0fd184bc41dcc3b5c8e2e + checksum: ad1ecf914bd051325faad281d02ea2c0b1df5d01bd94d368dcc5513340eac41d14b3c61af325768e3c7f8d44576e72780ec0b6f2d366121f8eec6e03c3a3b97a languageName: node linkType: hard @@ -9899,7 +9981,7 @@ __metadata: languageName: node linkType: hard -"got@npm:^10.0.0, got@npm:^10.7.0": +"got@npm:^10.7.0": version: 10.7.0 resolution: "got@npm:10.7.0" dependencies: @@ -9922,7 +10004,7 @@ __metadata: languageName: node linkType: hard -"got@npm:^12.1.0": +"got@npm:^12.0.0, got@npm:^12.1.0": version: 12.5.3 resolution: "got@npm:12.5.3" dependencies: @@ -10117,7 +10199,7 @@ __metadata: languageName: node linkType: hard -"has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": +"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": version: 1.0.3 resolution: "has-symbols@npm:1.0.3" checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 @@ -10257,8 +10339,8 @@ __metadata: linkType: hard "hast-util-to-estree@npm:^2.0.0": - version: 2.1.0 - resolution: "hast-util-to-estree@npm:2.1.0" + version: 2.3.0 + resolution: "hast-util-to-estree@npm:2.3.0" dependencies: "@types/estree": ^1.0.0 "@types/estree-jsx": ^1.0.0 @@ -10272,10 +10354,10 @@ __metadata: mdast-util-mdxjs-esm: ^1.0.0 property-information: ^6.0.0 space-separated-tokens: ^2.0.0 - style-to-object: ^0.3.0 + style-to-object: ^0.4.1 unist-util-position: ^4.0.0 zwitch: ^2.0.0 - checksum: 1e14cfbfd57ff00ffda48cfef23bcebb6ebbea0385bb03d748a9432591c60f0a69428baaba82375a8cdbc924217ba9e75d30820b3641fdbe12ae62aa6c3f90a7 + checksum: 22b59f9ae1dc5f8dd6dd5d187640055fa8919cc98dd55484554a7e81cc7c0fb1b16221043e168a877ce177efdd4fc98df1db877be5c5a005324bb06e6b1b85d0 languageName: node linkType: hard @@ -10311,6 +10393,18 @@ __metadata: languageName: node linkType: hard +"hot-shots@npm:9.3.0": + version: 9.3.0 + resolution: "hot-shots@npm:9.3.0" + dependencies: + unix-dgram: 2.x + dependenciesMeta: + unix-dgram: + optional: true + checksum: bfc874abcb6da71afe0fc3b63c5872e5b7183c1bbea83e9c6e4a4d3fe399567420057a8a3e090fa0c6689b0cfb24d15d917e6f627ad8e022c45240f2d2b17f28 + languageName: node + linkType: hard + "html-encoding-sniffer@npm:^2.0.1": version: 2.0.1 resolution: "html-encoding-sniffer@npm:2.0.1" @@ -10351,10 +10445,10 @@ __metadata: languageName: node linkType: hard -"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 +"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.0, http-cache-semantics@npm:^4.1.1": + version: 4.1.1 + resolution: "http-cache-semantics@npm:4.1.1" + checksum: 83ac0bc60b17a3a36f9953e7be55e5c8f41acc61b22583060e8dedc9dd5e3607c823a88d0926f9150e571f90946835c7fe150732801010845c72cd8bbff1a236 languageName: node linkType: hard @@ -10578,12 +10672,12 @@ __metadata: languageName: node linkType: hard -"imagetools-core@npm:^3.2.3, imagetools-core@npm:^3.3.0": - version: 3.3.0 - resolution: "imagetools-core@npm:3.3.0" +"imagetools-core@npm:^3.2.3, imagetools-core@npm:^3.3.1": + version: 3.3.1 + resolution: "imagetools-core@npm:3.3.1" dependencies: - sharp: ^0.31.0 - checksum: b9c96e4fec86edfe36c1142cc8ea5058048c05a476933e9cf90ed35e292d1f7873e8d5c86ccf7dc58d4e6bb918e6774f5344aa038725d0640fb37cfc37a11b44 + sharp: ^0.31.3 + checksum: ee14995214a52c931884a28c5233d427f22c25115ad20a05717ce72b9e95ab65b91814a0ad068a74b73cd320f937ebfdd0812d04680cc863ec9fd1e22d952891 languageName: node linkType: hard @@ -10797,7 +10891,7 @@ __metadata: languageName: node linkType: hard -"is-arguments@npm:^1.1.0, is-arguments@npm:^1.1.1": +"is-arguments@npm:^1.1.1": version: 1.1.1 resolution: "is-arguments@npm:1.1.1" dependencies: @@ -10807,7 +10901,7 @@ __metadata: languageName: node linkType: hard -"is-array-buffer@npm:^3.0.0, is-array-buffer@npm:^3.0.1": +"is-array-buffer@npm:^3.0.1": version: 3.0.1 resolution: "is-array-buffer@npm:3.0.1" dependencies: @@ -10875,11 +10969,11 @@ __metadata: linkType: hard "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" + version: 3.2.1 + resolution: "is-builtin-module@npm:3.2.1" dependencies: builtin-modules: ^3.3.0 - checksum: 0315751b898feff0646511c896e88b608a755c5025d0ce9a3ad25783de50be870e47dafb838cebbb06fbb2a948b209ea55348eee267836c9dd40d3a11ec717d3 + checksum: e8f0ffc19a98240bda9c7ada84d846486365af88d14616e737d280d378695c8c448a621dcafc8332dbf0fcd0a17b0763b845400709963fa9151ddffece90ae88 languageName: node linkType: hard @@ -11675,9 +11769,9 @@ __metadata: linkType: hard "js-sdsl@npm:^4.1.4": - version: 4.2.0 - resolution: "js-sdsl@npm:4.2.0" - checksum: 2cd0885f7212afb355929d72ca105cb37de7e95ad6031e6a32619eaefa46735a7d0fb682641a0ba666e1519cb138fe76abc1eea8a34e224140c9d94c995171f1 + version: 4.3.0 + resolution: "js-sdsl@npm:4.3.0" + checksum: ce908257cf6909e213af580af3a691a736f5ee8b16315454768f917a682a4ea0c11bde1b241bbfaecedc0eb67b72101b2c2df2ffaed32aed5d539fca816f054e languageName: node linkType: hard @@ -11871,21 +11965,15 @@ __metadata: languageName: node linkType: hard -"jsonwebtoken@npm:^8.5.1": - version: 8.5.1 - resolution: "jsonwebtoken@npm:8.5.1" +"jsonwebtoken@npm:^9.0.0": + version: 9.0.0 + resolution: "jsonwebtoken@npm:9.0.0" 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 + lodash: ^4.17.21 ms: ^2.1.1 - semver: ^5.6.0 - checksum: 93c9e3f23c59b758ac88ba15f4e4753b3749dfce7a6f7c40fb86663128a1e282db085eec852d4e0cbca4cefdcd3a8275ee255dbd08fcad0df26ad9f6e4cc853a + semver: ^7.3.8 + checksum: b9181cecf9df99f1dc0253f91ba000a1aa4d91f5816d1608c0dba61a5623726a0bfe200b51df25de18c1a6000825d231ad7ce2788aa54fd48dcb760ad9eb9514 languageName: node linkType: hard @@ -12316,20 +12404,6 @@ __metadata: 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" @@ -12344,13 +12418,6 @@ __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" @@ -12358,13 +12425,6 @@ __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" @@ -12372,13 +12432,6 @@ __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" @@ -12414,13 +12467,6 @@ __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" @@ -12555,15 +12601,16 @@ __metadata: linkType: hard "logform@npm:^2.3.2, logform@npm:^2.4.0": - version: 2.4.2 - resolution: "logform@npm:2.4.2" + version: 2.5.1 + resolution: "logform@npm:2.5.1" dependencies: "@colors/colors": 1.5.0 + "@types/triple-beam": ^1.3.2 fecha: ^4.2.0 ms: ^2.1.1 safe-stable-stringify: ^2.3.1 triple-beam: ^1.3.0 - checksum: 3d00f4e1ccaf0a86886aabbf66d1f1d207441d5b408f103457da6d64d055aee76c02af4b40a31ca77a1db4cbcdecb007149f731536c39cbd89b7b6ba3dda6d7b + checksum: 08fdf03be5bb69af33bac214eb4f6a0c83ad3821a30de498925fccb61e993e5a4a87470aab356ca2110c11e4643685bed5597ca5f46dd1cd11437c44a0e0e3c2 languageName: node linkType: hard @@ -12623,16 +12670,6 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^4.1.3": - version: 4.1.5 - resolution: "lru-cache@npm:4.1.5" - dependencies: - pseudomap: ^1.0.2 - yallist: ^2.1.2 - checksum: 4bb4b58a36cd7dc4dcec74cbe6a8f766a38b7426f1ff59d4cf7d82a2aa9b9565cd1cb98f6ff60ce5cd174524868d7bc9b7b1c294371851356066ca9ac4cf135a - languageName: node - linkType: hard - "lru-cache@npm:^6.0.0": version: 6.0.0 resolution: "lru-cache@npm:6.0.0" @@ -12642,14 +12679,14 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^7.7.1": +"lru-cache@npm:^7.14.1, lru-cache@npm:^7.7.1": version: 7.14.1 resolution: "lru-cache@npm:7.14.1" checksum: d72c6713c6a6d86836a7a6523b3f1ac6764768cca47ec99341c3e76db06aacd4764620e5e2cda719a36848785a52a70e531822dc2b33fb071fa709683746c104 languageName: node linkType: hard -"luxon@npm:^3.1.0": +"luxon@npm:^3.2.1": version: 3.2.1 resolution: "luxon@npm:3.2.1" checksum: 3fa3def2c5f5d3032b4c46220c4da8aeb467ac979888fc9d2557adcd22195f93516b4ad5909a75862bec8dc6ddc0953b0f38e6d2f4a8ab8450ddc531a83cf20d @@ -12822,19 +12859,19 @@ __metadata: linkType: hard "mdast-util-definitions@npm:^5.0.0": - version: 5.1.1 - resolution: "mdast-util-definitions@npm:5.1.1" + version: 5.1.2 + resolution: "mdast-util-definitions@npm:5.1.2" dependencies: "@types/mdast": ^3.0.0 "@types/unist": ^2.0.0 unist-util-visit: ^4.0.0 - checksum: f8025e2c35f6f8641528037abe18f492ef100e00a48c92cf78b7a313f9ccdb0e30c6aed0b40539767a3f425be09e78cb0f2f9bc4131fff41ea4664a1a7314a14 + checksum: 2544daccab744ea1ede76045c2577ae4f1cc1b9eb1ea51ab273fe1dca8db5a8d6f50f87759c0ce6484975914b144b7f40316f805cb9c86223a78db8de0b77bae languageName: node linkType: hard -"mdast-util-from-markdown@npm:^1.0.0": - version: 1.2.0 - resolution: "mdast-util-from-markdown@npm:1.2.0" +"mdast-util-from-markdown@npm:^1.0.0, mdast-util-from-markdown@npm:^1.1.0": + version: 1.3.0 + resolution: "mdast-util-from-markdown@npm:1.3.0" dependencies: "@types/mdast": ^3.0.0 "@types/unist": ^2.0.0 @@ -12848,89 +12885,91 @@ __metadata: micromark-util-types: ^1.0.0 unist-util-stringify-position: ^3.0.0 uvu: ^0.5.0 - checksum: fadc3521a3d95f4adbadad462ca27c28b3bfe08740ae158dc0c4a22329bf5593254d98b8fd4024ecad8c47c77ec275454dfacfb907ff1b98ff8f5de25c716d40 + checksum: cc971d1ad381150f6504fd753fbcffcc64c0abb527540ce343625c2bba76104505262122ef63d14ab66eb47203f323267017c6d09abfa8535ee6a8e14069595f languageName: node linkType: hard "mdast-util-mdx-expression@npm:^1.0.0": - version: 1.3.1 - resolution: "mdast-util-mdx-expression@npm:1.3.1" + version: 1.3.2 + resolution: "mdast-util-mdx-expression@npm:1.3.2" dependencies: "@types/estree-jsx": ^1.0.0 "@types/hast": ^2.0.0 "@types/mdast": ^3.0.0 mdast-util-from-markdown: ^1.0.0 mdast-util-to-markdown: ^1.0.0 - checksum: 456d59a616a274416f5b02bce64bf5245c4b7247927b4539f4db35bec5674352580fb91f51ed11f1a769d17330c44eec7ca481faf81ee839c2efe71309195225 + checksum: e4c90f26deaa5eb6217b0a9af559a80de41da02ab3bcd864c56bed3304b056ae703896e9876bc6ded500f4aff59f4de5cbf6a4b109a5ba408f2342805fe6dc05 languageName: node linkType: hard "mdast-util-mdx-jsx@npm:^2.0.0": - version: 2.1.0 - resolution: "mdast-util-mdx-jsx@npm:2.1.0" + version: 2.1.1 + resolution: "mdast-util-mdx-jsx@npm:2.1.1" dependencies: "@types/estree-jsx": ^1.0.0 "@types/hast": ^2.0.0 "@types/mdast": ^3.0.0 ccount: ^2.0.0 + mdast-util-from-markdown: ^1.1.0 mdast-util-to-markdown: ^1.3.0 parse-entities: ^4.0.0 stringify-entities: ^4.0.0 unist-util-remove-position: ^4.0.0 unist-util-stringify-position: ^3.0.0 vfile-message: ^3.0.0 - checksum: 40520a299449e4074ff1097789c7372220c9751e0de151566dcc133118d748c2231e29bafcbbf2c3beb3a917a85cfbbaa9195dadfb4122603bad479f93a61dbe + checksum: c2b576bb1a91cbc578ae4900a2556e949dd447ad8a791f43d16df7aa2ff26b2bf981f18ba642d1c9b6bb96fb6a43afc6c0ffebf4a80ad55e2263db56f9e109d8 languageName: node linkType: hard "mdast-util-mdx@npm:^2.0.0": - version: 2.0.0 - resolution: "mdast-util-mdx@npm:2.0.0" + version: 2.0.1 + resolution: "mdast-util-mdx@npm:2.0.1" dependencies: + mdast-util-from-markdown: ^1.0.0 mdast-util-mdx-expression: ^1.0.0 mdast-util-mdx-jsx: ^2.0.0 mdast-util-mdxjs-esm: ^1.0.0 - checksum: 4744bfbbd337c2a99a3ef339673c549a670d6496e0d3a6d747d2451e112d6fef7d27613549b0bd62a5f92ea7919e3bacd78c731e8a3d80552a09b80896554cf6 + mdast-util-to-markdown: ^1.0.0 + checksum: 7303149230a26e524e319833b782bffca94e49cdab012996618701259bd056e014ca22a35d25ffa8880ba9064ee126a2a002f01e5c90a31ca726339ed775875e languageName: node linkType: hard "mdast-util-mdxjs-esm@npm:^1.0.0": - version: 1.3.0 - resolution: "mdast-util-mdxjs-esm@npm:1.3.0" + version: 1.3.1 + resolution: "mdast-util-mdxjs-esm@npm:1.3.1" dependencies: "@types/estree-jsx": ^1.0.0 "@types/hast": ^2.0.0 "@types/mdast": ^3.0.0 mdast-util-from-markdown: ^1.0.0 mdast-util-to-markdown: ^1.0.0 - checksum: df3902eb884b4f83cebbfe33647f51938b36db54d4539afd884dc83ff43052676cd48df4c382dc986335290f5c691576d1a848da8ffb671b69ade29fe1c317e0 + checksum: ee78a4f58adfec38723cbc920f05481201ebb001eff3982f2d0e5f5ce5c75685e732e9d361ad4a1be8b936b4e5de0f2599cb96b92ad4bd92698ac0c4a09bbec3 languageName: node linkType: hard "mdast-util-phrasing@npm:^3.0.0": - version: 3.0.0 - resolution: "mdast-util-phrasing@npm:3.0.0" + version: 3.0.1 + resolution: "mdast-util-phrasing@npm:3.0.1" dependencies: "@types/mdast": ^3.0.0 unist-util-is: ^5.0.0 - checksum: 3cf0812c7f1a2a7f58d30df42b6172c3e79e3dacda34db216ee6e12e3caa7abfb9801626274e41627321cd0fcfc8e526c999fd96e1c0c086055a83ca7e9dddf7 + checksum: c5b616d9b1eb76a6b351d195d94318494722525a12a89d9c8a3b091af7db3dd1fc55d294f9d29266d8159a8267b0df4a7a133bda8a3909d5331c383e1e1ff328 languageName: node linkType: hard "mdast-util-to-hast@npm:^12.1.0": - version: 12.2.5 - resolution: "mdast-util-to-hast@npm:12.2.5" + version: 12.3.0 + resolution: "mdast-util-to-hast@npm:12.3.0" dependencies: "@types/hast": ^2.0.0 "@types/mdast": ^3.0.0 mdast-util-definitions: ^5.0.0 micromark-util-sanitize-uri: ^1.1.0 trim-lines: ^3.0.0 - unist-builder: ^3.0.0 unist-util-generated: ^2.0.0 unist-util-position: ^4.0.0 unist-util-visit: ^4.0.0 - checksum: 06337d66b369d9bf16f484cb31943c4e3c0ea9c20138589c256ad3400122fc9d64baf4d087349c042d37074408a24a4856e9ac45cb3356647bbe24d6dcdd42e1 + checksum: ea40c9f07dd0b731754434e81c913590c611b1fd753fa02550a1492aadfc30fb3adecaf62345ebb03cea2ddd250c15ab6e578fffde69c19955c9b87b10f2a9bb languageName: node linkType: hard @@ -12951,9 +12990,11 @@ __metadata: linkType: hard "mdast-util-to-string@npm:^3.0.0, mdast-util-to-string@npm:^3.1.0": - version: 3.1.0 - resolution: "mdast-util-to-string@npm:3.1.0" - checksum: f42ddd4e22f2215a75715b92ea6e3149c4ba356e7781d7b94fc86ded1c79cec3f986afeecef3a4a80068c9b224a6520099783a12146b957de24f020a3e47dd29 + version: 3.1.1 + resolution: "mdast-util-to-string@npm:3.1.1" + dependencies: + "@types/mdast": ^3.0.0 + checksum: 5e9375e1757ebf2950e122ef3538e4257ed2b6f43ab1d3e9c45db5dd5d5b5d14fd041490afcde00934f1cdb4b99877597ae04eb810d313ec7b38c6009058dddd languageName: node linkType: hard @@ -13089,8 +13130,8 @@ __metadata: linkType: hard "micromark-extension-mdx-expression@npm:^1.0.0": - version: 1.0.3 - resolution: "micromark-extension-mdx-expression@npm:1.0.3" + version: 1.0.4 + resolution: "micromark-extension-mdx-expression@npm:1.0.4" dependencies: micromark-factory-mdx-expression: ^1.0.0 micromark-factory-space: ^1.0.0 @@ -13099,7 +13140,7 @@ __metadata: micromark-util-symbol: ^1.0.0 micromark-util-types: ^1.0.0 uvu: ^0.5.0 - checksum: ef4b4137894624a6754b951d3cb7abb20951ca7b37f9ad8a50d2e2b95d0cf880258d71296bfac6be4ff83a8d137b6b657ae852bb6f11f4ca11e5e6d62f1b025d + checksum: d19a31f9813dd5d4ad96b99e35b7c48067e69d75f92ec670dad5242857fb7688ba8b7c6a15616797b5df25dd89fd3b54916f93cb60ce2cfe97aca84739b45954 languageName: node linkType: hard @@ -13185,8 +13226,8 @@ __metadata: linkType: hard "micromark-factory-mdx-expression@npm:^1.0.0": - version: 1.0.6 - resolution: "micromark-factory-mdx-expression@npm:1.0.6" + version: 1.0.7 + resolution: "micromark-factory-mdx-expression@npm:1.0.7" dependencies: micromark-factory-space: ^1.0.0 micromark-util-character: ^1.0.0 @@ -13196,7 +13237,7 @@ __metadata: unist-util-position-from-estree: ^1.0.0 uvu: ^0.5.0 vfile-message: ^3.0.0 - checksum: 7b69f0e77664e9820639cf23c4f01d43aa0e7abd88021c3db428435e3a5a1f9446f8dc5c2a6ed4ac16c6495ca51937609a5c98ff59a62c54be382c2725500b39 + checksum: e7893f21576bcb7755d341e45d3ff202ba466fa2278c6f31ae4db4002a28d6d13a4efad331ef46223372ec2010d9bc2ff27e2cd57a4580be6491e59ca21ba59d languageName: node linkType: hard @@ -13304,8 +13345,8 @@ __metadata: linkType: hard "micromark-util-events-to-acorn@npm:^1.0.0": - version: 1.2.0 - resolution: "micromark-util-events-to-acorn@npm:1.2.0" + version: 1.2.1 + resolution: "micromark-util-events-to-acorn@npm:1.2.1" dependencies: "@types/acorn": ^4.0.0 "@types/estree": ^1.0.0 @@ -13314,7 +13355,7 @@ __metadata: uvu: ^0.5.0 vfile-location: ^4.0.0 vfile-message: ^3.0.0 - checksum: 422285d68c8e8a57042bf31eefa55a136eec5c1fb021278a7c25d60a000c4e3ddaf140c94065a270499281f79ff59999468b850a461f22b5731fc47eccb2c4c2 + checksum: baf1cad66d860980cf20963f641c48c434e5be5802beabefdda21be136ae037845dd236b5e9ce5cf9409bf1b9ba8b4131a396d3a5bfa12098dae13e4a9724f2b languageName: node linkType: hard @@ -13443,7 +13484,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^2.1.12, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": +"mime-types@npm:^2.1.12, mime-types@npm:^2.1.35, 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: @@ -13461,6 +13502,15 @@ __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 + languageName: node + linkType: hard + "mimic-fn@npm:^1.0.0": version: 1.2.0 resolution: "mimic-fn@npm:1.2.0" @@ -13544,12 +13594,21 @@ __metadata: languageName: node linkType: hard -"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" +"minimatch@npm:^5.0.1, minimatch@npm:^5.1.0": + version: 5.1.6 + resolution: "minimatch@npm:5.1.6" dependencies: brace-expansion: ^2.0.1 - checksum: 32ffda25b9fb8270a1c1beafdb7489dc0e411af553495136509a945691f63c9b6b000eeeaaf8bffe3efa609c1d6d3bc0f5a106f6c3443b5c05da649100ded964 + checksum: 7564208ef81d7065a370f788d337cd80a689e981042cb9a1d0e6580b6c6a8c9279eba80010516e258835a988363f99f54a6f711a315089b8b42694f5da9d0d77 + languageName: node + linkType: hard + +"minimatch@npm:^6.0.0": + version: 6.1.6 + resolution: "minimatch@npm:6.1.6" + dependencies: + brace-expansion: ^2.0.1 + checksum: 707b026e0adc610be6c02f24173d84811e5b8cc2e434881e47ef00a72be5fbea9323b7158d7bf065782b1e1d5c50d7d80cd72f2602255f2fddfb1d2f02e9092c languageName: node linkType: hard @@ -13632,11 +13691,9 @@ __metadata: linkType: hard "minipass@npm:^4.0.0": - version: 4.0.0 - resolution: "minipass@npm:4.0.0" - dependencies: - yallist: ^4.0.0 - checksum: 7a609afbf394abfcf9c48e6c90226f471676c8f2a67f07f6838871afb03215ede431d1433feffe1b855455bcb13ef0eb89162841b9796109d6fed8d89790f381 + version: 4.0.3 + resolution: "minipass@npm:4.0.3" + checksum: a09f405e2f380ae7f6ee0cbb53b45c1fcc1b6c70fc3896f4d20649d92a10e61892c57bd9960a64cedf6c90b50022cb6c195905b515039c335b423202f99e6f18 languageName: node linkType: hard @@ -13727,8 +13784,8 @@ __metadata: linkType: hard "mongodb@npm:^4.11.0": - version: 4.13.0 - resolution: "mongodb@npm:4.13.0" + version: 4.14.0 + resolution: "mongodb@npm:4.14.0" dependencies: "@aws-sdk/credential-providers": ^3.186.0 bson: ^4.7.0 @@ -13740,7 +13797,7 @@ __metadata: optional: true saslprep: optional: true - checksum: 4c30eed40f639ac64069623cf7a4954e98eab81b91d61df90e7813dd2a745259cdc698f3b60bd7f37c123242b7eb0aaae6ee4e29ff2e48f5d13f187931d51f36 + checksum: ab3b8f27e99fab4ea0c163067158ad360a161edf9ebf74368b9b561da7b75d23c09282d530cb4e2fac32ea30eae29620e861d837d334ddbdfa50d57240c1bd8e languageName: node linkType: hard @@ -13840,11 +13897,20 @@ __metadata: linkType: hard "named-placeholders@npm:^1.1.2": - version: 1.1.2 - resolution: "named-placeholders@npm:1.1.2" + version: 1.1.3 + resolution: "named-placeholders@npm:1.1.3" dependencies: - lru-cache: ^4.1.3 - checksum: c9317d1b479d6733b3baedfde209c6c866cf387c2d625837f93355fdb6a9055b1e8180b883fe00bcb20edb3ba4dd21128ec2f1ed8cb884385cef7698cbcadcc4 + lru-cache: ^7.14.1 + checksum: 7834adc91e92ae1b9c4413384e3ccd297de5168bb44017ff0536705ddc4db421723bd964607849265feb3f6ded390f84cf138e5925f22f7c13324f87a803dc73 + languageName: node + linkType: hard + +"nan@npm:^2.16.0": + version: 2.17.0 + resolution: "nan@npm:2.17.0" + dependencies: + node-gyp: latest + checksum: ec609aeaf7e68b76592a3ba96b372aa7f5df5b056c1e37410b0f1deefbab5a57a922061e2c5b369bae9c7c6b5e6eecf4ad2dac8833a1a7d3a751e0a7c7f849ed languageName: node linkType: hard @@ -13919,16 +13985,16 @@ __metadata: linkType: hard "netlify-cli@npm:^12.0.11": - version: 12.6.0 - resolution: "netlify-cli@npm:12.6.0" + version: 12.10.0 + resolution: "netlify-cli@npm:12.10.0" dependencies: "@fastify/static": ^6.6.0 - "@netlify/build": ^29.4.0 - "@netlify/config": ^20.3.0 - "@netlify/edge-bundler": ^8.0.0 - "@netlify/framework-info": ^9.5.3 + "@netlify/build": ^29.5.2 + "@netlify/config": ^20.3.2 + "@netlify/edge-bundler": ^8.4.0 + "@netlify/framework-info": ^9.7.1 "@netlify/local-functions-proxy": ^1.1.1 - "@netlify/zip-it-and-ship-it": ^8.2.0 + "@netlify/zip-it-and-ship-it": ^8.4.1 "@octokit/rest": ^19.0.0 ansi-escapes: ^5.0.0 ansi-styles: ^5.0.0 @@ -13958,6 +14024,7 @@ __metadata: execa: ^5.0.0 express: ^4.17.1 express-logging: ^1.1.1 + extract-zip: ^2.0.1 fastify: ^4.10.2 find-up: ^5.0.0 flush-write-stream: ^2.0.0 @@ -13979,7 +14046,7 @@ __metadata: is-plain-obj: ^3.0.0 is-wsl: ^2.2.0 isexe: ^2.0.0 - jsonwebtoken: ^8.5.1 + jsonwebtoken: ^9.0.0 jwt-decode: ^3.0.0 lambda-local: ^2.0.1 listr: ^0.14.3 @@ -13989,11 +14056,11 @@ __metadata: log-update: ^5.0.0 minimist: ^1.2.5 multiparty: ^4.2.1 - netlify: ^13.1.0 - netlify-headers-parser: ^7.1.0 + netlify: ^13.1.2 + netlify-headers-parser: ^7.1.1 netlify-onegraph-internal: 0.10.1 - netlify-redirect-parser: ^14.1.0 - netlify-redirector: ^0.3.1 + netlify-redirect-parser: ^14.1.1 + netlify-redirector: ^0.4.0 node-fetch: ^2.6.0 node-version-alias: ^1.0.1 ora: ^5.0.0 @@ -14028,13 +14095,13 @@ __metadata: bin: netlify: bin/run.mjs ntl: bin/run.mjs - checksum: a555e4ca56f681f2c974f148f0164547c5c233531baa38ee7c9f7b173f7b92c163e75551626c5b736b2d744015dc4f79fcbc9231435e96d97a0d4923ad16af40 + checksum: 4410476f0b9bacd748f27e271262b12550112afeb68787d9ff54fc5a051baaa6c5cac67d06dae26d8a93256b30f599454983e00e7e1cec2fcfd22abfa392f64e languageName: node linkType: hard -"netlify-headers-parser@npm:^7.1.0": - version: 7.1.0 - resolution: "netlify-headers-parser@npm:7.1.0" +"netlify-headers-parser@npm:^7.1.1": + version: 7.1.1 + resolution: "netlify-headers-parser@npm:7.1.1" dependencies: escape-string-regexp: ^5.0.0 fast-safe-stringify: ^2.0.7 @@ -14042,7 +14109,7 @@ __metadata: map-obj: ^5.0.0 path-exists: ^5.0.0 toml: ^3.0.0 - checksum: aee5eee2490e081b8a7ab3ff8bafd19041361574e71a80ad37e92d35b346df6d713dffe7bde85475dda888930817de05538b644f52db0345e69cbdba4b975004 + checksum: 675ca0429400042f9786a402927cb49d26540cd644ae9f7910dd1d8d6980938a2404c4c83186808dad4c4fffc878386e5e373391d3b225f080825053df9a426b languageName: node linkType: hard @@ -14058,38 +14125,38 @@ __metadata: languageName: node linkType: hard -"netlify-redirect-parser@npm:^14.1.0": - version: 14.1.0 - resolution: "netlify-redirect-parser@npm:14.1.0" +"netlify-redirect-parser@npm:^14.1.1": + version: 14.1.1 + resolution: "netlify-redirect-parser@npm:14.1.1" 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 + checksum: adc9eff7fd022843a4c877c8f8c43040cee2490299ec2ef2eb884746e142dc4ee7122734e5f45c4d5d14be46b188dc31f9f10e1b838d6ca72d27a11612758f46 languageName: node linkType: hard -"netlify-redirector@npm:^0.3.1": - version: 0.3.1 - resolution: "netlify-redirector@npm:0.3.1" - checksum: 057322f8ab369f6e4a579da40ce741f0e434f1db155c75aaf5a9314265e1886c51f2fcfee12719c170e2c86c13eab2edfd3d8ffa6e1132199240c9ea7e689c89 +"netlify-redirector@npm:^0.4.0": + version: 0.4.0 + resolution: "netlify-redirector@npm:0.4.0" + checksum: d249bad5e2a5bf1825a131ae7b1179b89968830f711112b7da7f86270c30789fd9221d20acc34b79a966148d37489a6168e6d38099429fb60b01100e22ce6d66 languageName: node linkType: hard -"netlify@npm:^13.1.0": - version: 13.1.0 - resolution: "netlify@npm:13.1.0" +"netlify@npm:^13.1.2": + version: 13.1.2 + resolution: "netlify@npm:13.1.2" dependencies: - "@netlify/open-api": ^2.12.0 + "@netlify/open-api": ^2.13.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 + checksum: 70511ff1845bbffc2d9944e86f2d519160181a35f751ebe8a952bb3dced80f84b0089f11e351c2ea9f642545a40071c6262d006b5bfe353cb8de5e47eb212830 languageName: node linkType: hard @@ -14103,20 +14170,20 @@ __metadata: linkType: hard "node-abi@npm:^3.3.0": - version: 3.30.0 - resolution: "node-abi@npm:3.30.0" + version: 3.32.0 + resolution: "node-abi@npm:3.32.0" dependencies: semver: ^7.3.5 - checksum: f285efcea312e52d8763cfad7d434b31c11586e5efdf9f239c214a582557777453a8358d338442f02490d6c5289b0fc0eeed3056a740a3ebe6c79334af3b1739 + checksum: 321fd4b174908fa2b33a411f92dd878b7752547c2bdf516cd2ee6a9dbedef4981b8227e280db5e76db946fa7321038f9996e44147f8d62b9407ed05748393615 languageName: node linkType: hard "node-addon-api@npm:^5.0.0": - version: 5.0.0 - resolution: "node-addon-api@npm:5.0.0" + version: 5.1.0 + resolution: "node-addon-api@npm:5.1.0" dependencies: node-gyp: latest - checksum: 7c5e2043ac37f6108784d94ed73a44ae6d3e68eb968de60680922fc6bc3d17fa69448c0feb4e0c9d3f4c74a0324822e566a8340a56916d9d6f23cb3e85620334 + checksum: 2508bd2d2981945406243a7bd31362fc7af8b70b8b4d65f869c61731800058fb818cc2fd36c8eac714ddd0e568cc85becf5e165cebbdf7b5024d5151bbc75ea1 languageName: node linkType: hard @@ -14139,8 +14206,8 @@ __metadata: linkType: hard "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" + version: 2.6.9 + resolution: "node-fetch@npm:2.6.9" dependencies: whatwg-url: ^5.0.0 peerDependencies: @@ -14148,7 +14215,7 @@ __metadata: peerDependenciesMeta: encoding: optional: true - checksum: 8d816ffd1ee22cab8301c7756ef04f3437f18dace86a1dae22cf81db8ef29c0bf6655f3215cb0cdb22b420b6fe141e64b26905e7f33f9377a7fa59135ea3e10b + checksum: acb04f9ce7224965b2b59e71b33c639794d8991efd73855b0b250921382b38331ffc9d61bce502571f6cc6e11a8905ca9b1b6d4aeb586ab093e2756a1fd190d0 languageName: node linkType: hard @@ -14183,10 +14250,10 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.6": - version: 2.0.8 - resolution: "node-releases@npm:2.0.8" - checksum: b1ab02c0d5d8e081bf9537232777a7a787dc8fef07f70feabe70a344599b220fe16462f746ac30f3eed5a58549445ad69368964d12a1f8b3b764f6caab7ba34a +"node-releases@npm:^2.0.8": + version: 2.0.10 + resolution: "node-releases@npm:2.0.10" + checksum: d784ecde25696a15d449c4433077f5cce620ed30a1656c4abf31282bfc691a70d9618bae6868d247a67914d1be5cc4fde22f65a05f4398cdfb92e0fc83cadfbc languageName: node linkType: hard @@ -14454,9 +14521,9 @@ __metadata: linkType: hard "object-inspect@npm:^1.12.2, object-inspect@npm:^1.9.0": - version: 1.12.2 - resolution: "object-inspect@npm:1.12.2" - checksum: a534fc1b8534284ed71f25ce3a496013b7ea030f3d1b77118f6b7b1713829262be9e6243acbcb3ef8c626e2b64186112cb7f6db74e37b2789b9c789ca23048b2 + version: 1.12.3 + resolution: "object-inspect@npm:1.12.3" + checksum: dabfd824d97a5f407e6d5d24810d888859f6be394d8b733a77442b277e0808860555176719c5905e765e3743a7cada6b8b0a3b85e5331c530fd418cc8ae991db languageName: node linkType: hard @@ -14595,13 +14662,13 @@ __metadata: linkType: hard "open@npm:^8.0.4": - version: 8.4.0 - resolution: "open@npm:8.4.0" + version: 8.4.1 + resolution: "open@npm:8.4.1" dependencies: define-lazy-prop: ^2.0.0 is-docker: ^2.1.1 is-wsl: ^2.2.0 - checksum: e9545bec64cdbf30a0c35c1bdc310344adf8428a117f7d8df3c0af0a0a24c513b304916a6d9b11db0190ff7225c2d578885080b761ed46a3d5f6f1eebb98b63c + checksum: dbe8e1d98889df60b5179eab8b94b9591744d1f0033bce1a9a10738ba140bd9d625d6bcde7ff9f043e379aafb918975c2daa03b87cef13eb046ac18ed807f06d languageName: node linkType: hard @@ -15276,12 +15343,13 @@ __metadata: linkType: hard "periscopic@npm:^3.0.0": - version: 3.0.4 - resolution: "periscopic@npm:3.0.4" + version: 3.1.0 + resolution: "periscopic@npm:3.1.0" dependencies: + "@types/estree": ^1.0.0 estree-walker: ^3.0.0 is-reference: ^3.0.0 - checksum: 0920ea1b0294c2463b7df858d7f895d0a69f15ec5c7b93d63749e7a8f6d9c065853ebea701305f1756f70310633832cf5c90e43e9363cce51abec44cc2f5c188 + checksum: 2153244352e58a0d76e7e8d9263e66fe74509495f809af388da20045fb30aa3e93f2f94468dc0b9166ecf206fcfc0d73d2c7641c6fbedc07b1de858b710142cb languageName: node linkType: hard @@ -15361,8 +15429,8 @@ __metadata: linkType: hard "pino@npm:^8.5.0": - version: 8.8.0 - resolution: "pino@npm:8.8.0" + version: 8.9.0 + resolution: "pino@npm:8.9.0" dependencies: atomic-sleep: ^1.0.0 fast-redact: ^3.1.1 @@ -15377,7 +15445,7 @@ __metadata: thread-stream: ^2.0.0 bin: pino: bin.js - checksum: 69256469221b332776333069d637100053eb15dc7baa3f95897d7864bf2e6fd99f15cfd9cfc94b56e7b00da2e6b349c49affcff1abaca9a3d4b7ba63ff86b4f0 + checksum: c7eb9345280383b9af4661b34ae2156c94e535eb33c8deaf525e00212fa9e4f0b9797cdeda17b80b333325d8a0aec6e7566618071506e944736822022b671fa8 languageName: node linkType: hard @@ -15529,13 +15597,13 @@ __metadata: linkType: hard "postcss-js@npm:^4.0.0": - version: 4.0.0 - resolution: "postcss-js@npm:4.0.0" + version: 4.0.1 + resolution: "postcss-js@npm:4.0.1" dependencies: camelcase-css: ^2.0.1 peerDependencies: - postcss: ^8.3.3 - checksum: 14be8a58670b4c5d037d40f179240a4f736d53530db727e2635638fa296bc4bff18149ca860928398aace422e55d07c9f5729eeccd395340944985199cdc82a5 + postcss: ^8.4.21 + checksum: 5c1e83efeabeb5a42676193f4357aa9c88f4dc1b3c4a0332c132fe88932b33ea58848186db117cf473049fc233a980356f67db490bd0a7832ccba9d0b3fd3491 languageName: node linkType: hard @@ -15795,7 +15863,7 @@ __metadata: languageName: node linkType: hard -"postcss-selector-parser@npm:^6.0.10, postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.0.5, postcss-selector-parser@npm:^6.0.9": +"postcss-selector-parser@npm:^6.0.10, postcss-selector-parser@npm:^6.0.11, postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.0.5, postcss-selector-parser@npm:^6.0.9": version: 6.0.11 resolution: "postcss-selector-parser@npm:6.0.11" dependencies: @@ -15855,7 +15923,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.3.11, postcss@npm:^8.4.12, postcss@npm:^8.4.18, postcss@npm:^8.4.19, postcss@npm:^8.4.20": +"postcss@npm:^8.0.9, postcss@npm:^8.3.11, postcss@npm:^8.4.12, postcss@npm:^8.4.18, postcss@npm:^8.4.19, postcss@npm:^8.4.20": version: 8.4.21 resolution: "postcss@npm:8.4.21" dependencies: @@ -15957,11 +16025,11 @@ __metadata: linkType: hard "prettier@npm:^2.8.0": - version: 2.8.2 - resolution: "prettier@npm:2.8.2" + version: 2.8.4 + resolution: "prettier@npm:2.8.4" bin: prettier: bin-prettier.js - checksum: 740c56c2128d587d656ea1dde9bc9c3503dfc94db4f3ac387259215eeb2e216680bdad9d18a0c9feecc6b42cfa188d6fa777df4c36c1d00cedd4199074fbfbd2 + checksum: c173064bf3df57b6d93d19aa98753b9b9dd7657212e33b41ada8e2e9f9884066bb9ca0b4005b89b3ab137efffdf8fbe0b462785aba20364798ff4303aadda57e languageName: node linkType: hard @@ -16127,13 +16195,6 @@ __metadata: languageName: node linkType: hard -"pseudomap@npm:^1.0.2": - version: 1.0.2 - resolution: "pseudomap@npm:1.0.2" - checksum: 856c0aae0ff2ad60881168334448e898ad7a0e45fe7386d114b150084254c01e200c957cf378378025df4e052c7890c5bd933939b0e0d2ecfcc1dc2f0b2991f5 - languageName: node - linkType: hard - "psl@npm:^1.1.28, psl@npm:^1.1.33": version: 1.9.0 resolution: "psl@npm:1.9.0" @@ -16169,9 +16230,9 @@ __metadata: linkType: hard "punycode@npm:^2.1.0, punycode@npm:^2.1.1": - version: 2.1.1 - resolution: "punycode@npm:2.1.1" - checksum: 823bf443c6dd14f669984dea25757b37993f67e8d94698996064035edd43bed8a5a17a9f12e439c2b35df1078c6bec05a6c86e336209eb1061e8025c481168e8 + version: 2.3.0 + resolution: "punycode@npm:2.3.0" + checksum: 39f760e09a2a3bbfe8f5287cf733ecdad69d6af2fe6f97ca95f24b8921858b91e9ea3c9eeec6e08cede96181b3bb33f95c6ffd8c77e63986508aa2e8159fa200 languageName: node linkType: hard @@ -17075,8 +17136,8 @@ __metadata: linkType: hard "rollup@npm:^3.2.3, rollup@npm:^3.7.0": - version: 3.9.1 - resolution: "rollup@npm:3.9.1" + version: 3.14.0 + resolution: "rollup@npm:3.14.0" dependencies: fsevents: ~2.3.2 dependenciesMeta: @@ -17084,7 +17145,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 929cfab6b8bb2e20c28d7a4c3909b53729f4a63d8cc14f3b1a217d5f8e550737ee0903124ba58a1f2e7efd45c596e044a968aa379411731d0e76c910621d7d3f + checksum: 48f4da224753b8022529256243b74b3f6f41d9b4358ba079ac42f2a2cf07e4bd01b5d94579338194238e3c575487974ca508e144cf6195123293e7fdf82506cb languageName: node linkType: hard @@ -17228,9 +17289,9 @@ __metadata: linkType: hard "secure-json-parse@npm:^2.5.0": - version: 2.6.0 - resolution: "secure-json-parse@npm:2.6.0" - checksum: 6a10529b095cd2d4b7f3ae0a7f9877b67f6a206ffda01ba6fd29012c94b77197d6be3aea21f950120d3ac69b98b1251870554a504d47ab0e32f45531ebe92a2c + version: 2.7.0 + resolution: "secure-json-parse@npm:2.7.0" + checksum: d9d7d5a01fc6db6115744ba23cf9e67ecfe8c524d771537c062ee05ad5c11b64c730bc58c7f33f60bd6877f96b86f0ceb9ea29644e4040cb757f6912d4dd6737 languageName: node linkType: hard @@ -17293,7 +17354,7 @@ __metadata: languageName: node linkType: hard -"send@npm:0.18.0, send@npm:^0.18.0": +"send@npm:0.18.0": version: 0.18.0 resolution: "send@npm:0.18.0" dependencies: @@ -17366,7 +17427,7 @@ __metadata: languageName: node linkType: hard -"sharp@npm:^0.31.0": +"sharp@npm:^0.31.3": version: 0.31.3 resolution: "sharp@npm:0.31.3" dependencies: @@ -17881,13 +17942,6 @@ __metadata: 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" @@ -17902,6 +17956,15 @@ __metadata: languageName: node linkType: hard +"stop-iteration-iterator@npm:^1.0.0": + version: 1.0.0 + resolution: "stop-iteration-iterator@npm:1.0.0" + dependencies: + internal-slot: ^1.0.4 + checksum: d04173690b2efa40e24ab70e5e51a3ff31d56d699550cfad084104ab3381390daccb36652b25755e420245f3b0737de66c1879eaa2a8d4fc0a78f9bf892fcb42 + languageName: node + linkType: hard + "stream-to-buffer@npm:^0.1.0": version: 0.1.0 resolution: "stream-to-buffer@npm:0.1.0" @@ -18191,12 +18254,12 @@ __metadata: languageName: node linkType: hard -"style-to-object@npm:^0.3.0": - version: 0.3.0 - resolution: "style-to-object@npm:0.3.0" +"style-to-object@npm:^0.4.1": + version: 0.4.1 + resolution: "style-to-object@npm:0.4.1" dependencies: inline-style-parser: 0.1.1 - checksum: 4d7084015207f2a606dfc10c29cb5ba569f2fe8005551df7396110dd694d6ff650f2debafa95bd5d147dfb4ca50f57868e2a7f91bf5d11ef734fe7ccbd7abf59 + checksum: 2ea213e98eed21764ae1d1dc9359231a9f2d480d6ba55344c4c15eb275f0809f1845786e66d4caf62414a5cc8f112ce9425a58d251c77224060373e0db48f8c2 languageName: node linkType: hard @@ -18369,8 +18432,8 @@ __metadata: linkType: hard "tailwindcss@npm:^3.1.8": - version: 3.2.4 - resolution: "tailwindcss@npm:3.2.4" + version: 3.2.6 + resolution: "tailwindcss@npm:3.2.6" dependencies: arg: ^5.0.2 chokidar: ^3.5.3 @@ -18386,12 +18449,12 @@ __metadata: normalize-path: ^3.0.0 object-hash: ^3.0.0 picocolors: ^1.0.0 - postcss: ^8.4.18 + postcss: ^8.0.9 postcss-import: ^14.1.0 postcss-js: ^4.0.0 postcss-load-config: ^3.1.4 postcss-nested: 6.0.0 - postcss-selector-parser: ^6.0.10 + postcss-selector-parser: ^6.0.11 postcss-value-parser: ^4.2.0 quick-lru: ^5.1.1 resolve: ^1.22.1 @@ -18400,7 +18463,7 @@ __metadata: bin: tailwind: lib/cli.js tailwindcss: lib/cli.js - checksum: ec187d180c722ec4f57537f2216c7b21269b525f12aaf353cea464d939c3e6286a1221eb3e1206e45d1f015f296171309ad4d9952899b0245cd07d9500a9401f + checksum: 908451ff7b334b2aec2a0ba5bf426a786a3f190b440a1f8ede206d889448ffda3b77349829f06dc297336fd0b5edc696ae5f23b808d6444bb5c689f218e95323 languageName: node linkType: hard @@ -18590,11 +18653,11 @@ __metadata: linkType: hard "thread-stream@npm:^2.0.0": - version: 2.2.0 - resolution: "thread-stream@npm:2.2.0" + version: 2.3.0 + resolution: "thread-stream@npm:2.3.0" dependencies: real-require: ^0.2.0 - checksum: b7f0ee166ed17ac54700a0b6fc291967c97785b458ff54efe5431a7281bb52d1163e6ec550a614f2a47f0f02de5b35a342bd5acd215af23030938c64859152b2 + checksum: e9ea58f9f36320165b41c2aae5c439bf68bd3575eb533c458483d8b290e31d519979e351408c7d6e248711611434332c2a3aae2165650b028cc3eb9b1052ac16 languageName: node linkType: hard @@ -18673,9 +18736,9 @@ __metadata: linkType: hard "tinycolor2@npm:^1.1.2": - version: 1.5.2 - resolution: "tinycolor2@npm:1.5.2" - checksum: 9df1ea9a986b03f1aebb1c1ac17fc561e358493f61b56d73ef2d7207fe7bd74eb71cf745b70487b2b5bb1ce33c9e8af7101088bb0b5fc532eaa1f9d1eda4ef31 + version: 1.6.0 + resolution: "tinycolor2@npm:1.6.0" + checksum: 6df4d07fceeedc0a878d7bac47e2cd47c1ceeb1078340a9eb8a295bc0651e17c750f73d47b3028d829f30b85c15e0572c0fd4142083e4c21a30a597e47f47230 languageName: node linkType: hard @@ -18961,9 +19024,9 @@ __metadata: linkType: hard "tslib@npm:^2.3.1, tslib@npm:^2.4.0": - version: 2.4.1 - resolution: "tslib@npm:2.4.1" - checksum: 19480d6e0313292bd6505d4efe096a6b31c70e21cf08b5febf4da62e95c265c8f571f7b36fcc3d1a17e068032f59c269fab3459d6cd3ed6949eafecf64315fca + version: 2.5.0 + resolution: "tslib@npm:2.5.0" + checksum: ae3ed5f9ce29932d049908ebfdf21b3a003a85653a9a140d614da6b767a93ef94f460e52c3d787f0e4f383546981713f165037dc2274df212ea9f8a4541004e1 languageName: node linkType: hard @@ -19129,7 +19192,7 @@ __metadata: languageName: node linkType: hard -"typescript@npm:4.9.4, typescript@npm:^4.5.5, typescript@npm:^4.6.4, typescript@npm:^4.8.4": +"typescript@npm:4.9.4": version: 4.9.4 resolution: "typescript@npm:4.9.4" bin: @@ -19139,6 +19202,16 @@ __metadata: languageName: node linkType: hard +"typescript@npm:^4.5.5, typescript@npm:^4.6.4, typescript@npm:^4.8.4": + version: 4.9.5 + resolution: "typescript@npm:4.9.5" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: ee000bc26848147ad423b581bd250075662a354d84f0e06eb76d3b892328d8d4440b7487b5a83e851b12b255f55d71835b008a66cbf8f255a11e4400159237db + languageName: node + linkType: hard + "typescript@patch:typescript@4.8.4#~builtin": version: 4.8.4 resolution: "typescript@patch:typescript@npm%3A4.8.4#~builtin::version=4.8.4&hash=0102e9" @@ -19149,7 +19222,7 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@4.9.4#~builtin, typescript@patch:typescript@^4.5.5#~builtin, typescript@patch:typescript@^4.6.4#~builtin, typescript@patch:typescript@^4.8.4#~builtin": +"typescript@patch:typescript@4.9.4#~builtin": version: 4.9.4 resolution: "typescript@patch:typescript@npm%3A4.9.4#~builtin::version=4.9.4&hash=d73830" bin: @@ -19159,6 +19232,16 @@ __metadata: languageName: node linkType: hard +"typescript@patch:typescript@^4.5.5#~builtin, typescript@patch:typescript@^4.6.4#~builtin, typescript@patch:typescript@^4.8.4#~builtin": + version: 4.9.5 + resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin::version=4.9.5&hash=d73830" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 2eee5c37cad4390385db5db5a8e81470e42e8f1401b0358d7390095d6f681b410f2c4a0c496c6ff9ebd775423c7785cdace7bcdad76c7bee283df3d9718c0f20 + languageName: node + linkType: hard + "uglify-js@npm:^3.1.4, uglify-js@npm:^3.5.1": version: 3.17.4 resolution: "uglify-js@npm:3.17.4" @@ -19206,7 +19289,7 @@ __metadata: languageName: node linkType: hard -"undici@npm:5.14.0, undici@npm:^5.14.0": +"undici@npm:5.14.0": version: 5.14.0 resolution: "undici@npm:5.14.0" dependencies: @@ -19215,6 +19298,15 @@ __metadata: languageName: node linkType: hard +"undici@npm:^5.14.0": + version: 5.18.0 + resolution: "undici@npm:5.18.0" + dependencies: + busboy: ^1.6.0 + checksum: 74e0f357c376c745fcca612481a5742866ae36086ad387e626255f4c4a15fc5357d9d0fa4355271b6a633d50f5556c3e85720844680c44861c66e23afca7245f + languageName: node + linkType: hard + "unicode-properties@npm:^1.3.1": version: 1.4.1 resolution: "unicode-properties@npm:1.4.1" @@ -19298,84 +19390,75 @@ __metadata: languageName: node linkType: hard -"unist-builder@npm:^3.0.0": - version: 3.0.0 - resolution: "unist-builder@npm:3.0.0" - dependencies: - "@types/unist": ^2.0.0 - checksum: 80459ee3c2ece90bbc4f4b4faeed524d144c1a09ee07ff3e9004648d9b71a652e80a3b3ef60311a1e92f6ab915caf27c6f08062b5f8c84fa725bc0d7c5759e84 - languageName: node - linkType: hard - "unist-util-generated@npm:^2.0.0": - version: 2.0.0 - resolution: "unist-util-generated@npm:2.0.0" - checksum: 3a806793fa24a75190c217740ce706340d6cb0d51eff677134253d628f8e4355ebd8a243fe8045c583463f6bebfd50f902d653161da87c1359fcd1a14b99c8e0 + version: 2.0.1 + resolution: "unist-util-generated@npm:2.0.1" + checksum: 6221ad0571dcc9c8964d6b054f39ef6571ed59cc0ce3e88ae97ea1c70afe76b46412a5ffaa91f96814644ac8477e23fb1b477d71f8d70e625728c5258f5c0d99 languageName: node linkType: hard "unist-util-is@npm:^5.0.0": - version: 5.1.1 - resolution: "unist-util-is@npm:5.1.1" - checksum: e8743a19a304d8a8f5684f3e5ddb5546f2655847b42123687277d76566a2aba89beb7b4a8a9e9ebc4d904cd1cecc285356d7923d973a43cfc19a1e10ff6bdee4 + version: 5.2.0 + resolution: "unist-util-is@npm:5.2.0" + checksum: b80debe1ce5d40a8d685c510f597e5c8b8f7089540e9e268bda1b05bcce735c10bf36d5b0e4ecded50c63fa43b8a11b0e4b784beecf1559f153a2f2855e8526c languageName: node linkType: hard "unist-util-position-from-estree@npm:^1.0.0, unist-util-position-from-estree@npm:^1.1.0": - version: 1.1.1 - resolution: "unist-util-position-from-estree@npm:1.1.1" + version: 1.1.2 + resolution: "unist-util-position-from-estree@npm:1.1.2" dependencies: "@types/unist": ^2.0.0 - checksum: 63808bdcb8b49afa5231712d95b586fe877859ee03d23adb47485c30222007a5af55e95d103d4af51d1d16376aaa5a58fa985a08d63727c38b1515873df8b79b + checksum: e3f4060e2a9e894c6ed63489c5a7cb58ff282e5dae9497cbc2073033ca74d6e412af4d4d342c97aea08d997c908b8bce2fe43a2062aafc2bb3f266533016588b languageName: node linkType: hard "unist-util-position@npm:^4.0.0": - version: 4.0.3 - resolution: "unist-util-position@npm:4.0.3" + version: 4.0.4 + resolution: "unist-util-position@npm:4.0.4" dependencies: "@types/unist": ^2.0.0 - checksum: 0d89973628d40f19345cbcc50008f7f56d411afa54434bbe6c224b22d26aaf9d4500da2de363f1f01945acab1f1c31920c514253149eb546ff9b8bbc1ea94209 + checksum: e7487b6cec9365299695e3379ded270a1717074fa11fd2407c9b934fb08db6fe1d9077ddeaf877ecf1813665f8ccded5171693d3d9a7a01a125ec5cdd5e88691 languageName: node linkType: hard "unist-util-remove-position@npm:^4.0.0": - version: 4.0.1 - resolution: "unist-util-remove-position@npm:4.0.1" + version: 4.0.2 + resolution: "unist-util-remove-position@npm:4.0.2" dependencies: "@types/unist": ^2.0.0 unist-util-visit: ^4.0.0 - checksum: 7d2808662ac65f2b2f615822b78060419f738fb3b074b10cec77c596ea966b8f5c47553d2d322822a5975c49d2b21cdd64c198ae9fb02a9d54d1afa6342cdd6a + checksum: 989831da913d09a82a99ed9b47b78471b6409bde95942cde47e09da54b7736516f17e3c7e026af468684c1efcec5fb52df363381b2f9dc7fd96ce791c5a2fa4a languageName: node linkType: hard "unist-util-stringify-position@npm:^3.0.0": - version: 3.0.2 - resolution: "unist-util-stringify-position@npm:3.0.2" + version: 3.0.3 + resolution: "unist-util-stringify-position@npm:3.0.3" dependencies: "@types/unist": ^2.0.0 - checksum: 2dfd7a0fb2a55e99cc319c3bf7f9f1f73ed652978fa70d19117faa7245d20f21738ec926ecc47f341705ca1bb157e87ced0b6bb5ecaa666bd2ae6b2510d6a671 + checksum: dbd66c15183607ca942a2b1b7a9f6a5996f91c0d30cf8966fb88955a02349d9eefd3974e9010ee67e71175d784c5a9fea915b0aa0b0df99dcb921b95c4c9e124 languageName: node linkType: hard "unist-util-visit-parents@npm:^5.1.1": - version: 5.1.1 - resolution: "unist-util-visit-parents@npm:5.1.1" + version: 5.1.3 + resolution: "unist-util-visit-parents@npm:5.1.3" dependencies: "@types/unist": ^2.0.0 unist-util-is: ^5.0.0 - checksum: c699d18f5b26461dee37612b84c243fd5457c98f4c0540d9ba8bee05062aece5f3b4fb1af6b07423ce6750d8926e8c01fc2b1a4de1e54925ef6795c177ed8e18 + checksum: 8ecada5978994f846b64658cf13b4092cd78dea39e1ba2f5090a5de842ba4852712c02351a8ae95250c64f864635e7b02aedf3b4a093552bb30cf1bd160efbaa languageName: node linkType: hard "unist-util-visit@npm:^4.0.0": - version: 4.1.1 - resolution: "unist-util-visit@npm:4.1.1" + version: 4.1.2 + resolution: "unist-util-visit@npm:4.1.2" dependencies: "@types/unist": ^2.0.0 unist-util-is: ^5.0.0 unist-util-visit-parents: ^5.1.1 - checksum: c4a63734b0a5b439c62d20901bb472bdafdbbcd80c383e254aedeb98b23d0bae815a331e776ce7d63ea3c8018a54318abb8709d07cdf7dd094f79b2f07bb39f0 + checksum: 95a34e3f7b5b2d4b68fd722b6229972099eb97b6df18913eda44a5c11df8b1e27efe7206dd7b88c4ed244a48c474a5b2e2629ab79558ff9eb936840295549cee languageName: node linkType: hard @@ -19407,6 +19490,17 @@ __metadata: languageName: node linkType: hard +"unix-dgram@npm:2.x": + version: 2.0.6 + resolution: "unix-dgram@npm:2.0.6" + dependencies: + bindings: ^1.5.0 + nan: ^2.16.0 + node-gyp: latest + checksum: 0ab238726fd69e0a0174664225117b4575b40bd5df546c50a01de2fadf9da602c385ec8ff2f159607a127a6e7bf67628931903d43d286db27460b5abbe8cf8ac + languageName: node + linkType: hard + "unixify@npm:^1.0.0": version: 1.0.0 resolution: "unixify@npm:1.0.0" @@ -19440,7 +19534,7 @@ __metadata: languageName: node linkType: hard -"update-browserslist-db@npm:^1.0.9": +"update-browserslist-db@npm:^1.0.10": version: 1.0.10 resolution: "update-browserslist-db@npm:1.0.10" dependencies: @@ -19702,22 +19796,22 @@ __metadata: linkType: hard "vfile-location@npm:^4.0.0": - version: 4.0.1 - resolution: "vfile-location@npm:4.0.1" + version: 4.1.0 + resolution: "vfile-location@npm:4.1.0" dependencies: "@types/unist": ^2.0.0 vfile: ^5.0.0 - checksum: cc0df62075c741beee699e651374aeb56c4c1f4333398c0ba924281c2b51d4b7669c69c5b837ea395775626ad030d6f1bd27fd0a7eaf3f9f1bbd55393948ad6c + checksum: c894e8e5224170d1f85288f4a1d1ebcee0780823ea2b49d881648ab360ebf01b37ecb09b1c4439a75f9a51f31a9f9742cd045e987763e367c352a1ef7c50d446 languageName: node linkType: hard "vfile-message@npm:^3.0.0": - version: 3.1.3 - resolution: "vfile-message@npm:3.1.3" + version: 3.1.4 + resolution: "vfile-message@npm:3.1.4" dependencies: "@types/unist": ^2.0.0 unist-util-stringify-position: ^3.0.0 - checksum: f5ec2afbc1d5589fc45729209bdcaf01e3fc520fdac693557e62bd91cc8d6f915a6397c2f4d5f7a129ffc6c7511cb77eaf9e0932be1a70e39bed584ef7c86dbd + checksum: d0ee7da1973ad76513c274e7912adbed4d08d180eaa34e6bd40bc82459f4b7bc50fcaff41556135e3339995575eac5f6f709aba9332b80f775618ea4880a1367 languageName: node linkType: hard @@ -19734,12 +19828,12 @@ __metadata: linkType: hard "vite-imagetools@npm:^4.0.11": - version: 4.0.14 - resolution: "vite-imagetools@npm:4.0.14" + version: 4.0.18 + resolution: "vite-imagetools@npm:4.0.18" dependencies: "@rollup/pluginutils": ^5.0.0 - imagetools-core: ^3.3.0 - checksum: c1c163359a4eff2ce704eb66292a762458a0b8ca87acec4a678138790908a4a63678c083d01c72cde1f27b776925243662caefaaca9eff6303d44b87182a7c13 + imagetools-core: ^3.3.1 + checksum: f2e9b0713bda0488808ea8ad467e08c6752461c9bbd0ce73a82cbcb845292d1104fa68e0f8db4ee28cf22e9e4cc2327bfcc6171c02e073808e9fc39a7b3f220a languageName: node linkType: hard @@ -20098,11 +20192,11 @@ __metadata: linkType: hard "windows-release@npm:^5.0.1": - version: 5.0.1 - resolution: "windows-release@npm:5.0.1" + version: 5.1.0 + resolution: "windows-release@npm:5.1.0" dependencies: execa: ^5.1.1 - checksum: b6b403333b7b3ea31a805c287f210962d8f3191865d81d2fd3955e603ab4d6893abc746d87b7da5b2a7a044b7b18df97c948e7d5392baed1d2bc5687fbf7431d + checksum: b1256ef336e86b230cf940305d058cb2d49f076833df77a96e7bbf958ea5cd3bb1f1af6b1408fad14ee37df190d77b97b1dad6bbf3ed6eac1ba99a4d28dbfb68 languageName: node linkType: hard @@ -20348,13 +20442,13 @@ __metadata: linkType: hard "wrap-ansi@npm:^8.0.1": - version: 8.0.1 - resolution: "wrap-ansi@npm:8.0.1" + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" dependencies: ansi-styles: ^6.1.0 string-width: ^5.0.1 strip-ansi: ^7.0.1 - checksum: 5d7816e64f75544e466d58a736cb96ca47abad4ad57f48765b9735ba5601221013a37f436662340ca159208b011121e4e030de5a17180c76202e35157195a71e + checksum: 371733296dc2d616900ce15a0049dca0ef67597d6394c57347ba334393599e800bab03c41d4d45221b6bc967b8c453ec3ae4749eff3894202d16800fdfe0e238 languageName: node linkType: hard @@ -20494,13 +20588,6 @@ __metadata: languageName: node linkType: hard -"yallist@npm:^2.1.2": - version: 2.1.2 - resolution: "yallist@npm:2.1.2" - checksum: 9ba99409209f485b6fcb970330908a6d41fa1c933f75e08250316cce19383179a6b70a7e0721b89672ebb6199cc377bf3e432f55100da6a7d6e11902b0a642cb - languageName: node - linkType: hard - "yallist@npm:^4.0.0": version: 4.0.0 resolution: "yallist@npm:4.0.0"