diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index fa3a7b0..3db9343 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -2,7 +2,7 @@ name: Test / Coverage
on:
push:
- branches: [feature/monorepo]
+ branches: [dev]
pull_request:
branches: [main]
diff --git a/.github/workflows/contributors.yml b/.github/workflows/contributors.yml
new file mode 100644
index 0000000..b62b053
--- /dev/null
+++ b/.github/workflows/contributors.yml
@@ -0,0 +1,20 @@
+name: Add contributors
+on:
+ schedule:
+ - cron: '20 20 * * *'
+ push:
+ branches: [dev]
+ pull_request:
+ branches: [main, dev]
+
+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/.gitignore b/.gitignore
index 60be892..d5e4ade 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,6 +18,8 @@ config.json
coverage/
*.lcov
log
+log/*
+*.log
lib
tmp/
.yarn/*
diff --git a/.yarn/releases/yarn-3.3.0.cjs b/.yarn/releases/yarn-3.3.0.cjs
index 47f24f6..aa661fe 100644
--- a/.yarn/releases/yarn-3.3.0.cjs
+++ b/.yarn/releases/yarn-3.3.0.cjs
@@ -804,4 +804,4 @@ ${a.map(l=>`
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.
-*/
+*/
\ No newline at end of file
diff --git a/GLOSSARY.md b/GLOSSARY.md
new file mode 100644
index 0000000..ec85e10
--- /dev/null
+++ b/GLOSSARY.md
@@ -0,0 +1,2 @@
+CTX: Es el objeto que representa un mensaje, con opciones, id, ref
+messageInComming: Objeto entrante del provider {body, from,...}
\ No newline at end of file
diff --git a/README.md b/README.md
index c3a9dac..1285f5f 100644
--- a/README.md
+++ b/README.md
@@ -8,13 +8,86 @@ Video como hacer PR: https://youtu.be/Lxt8Acob6aU
**Comunidad**
+
+
+
> Forma parte de este proyecto.
- [Discord](https://link.codigoencasa.com/DISCORD)
- [Twitter](https://twitter.com/leifermendez)
- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR)
-- [Telegram](https://t.me/leifermendez)
-
-
-
\ No newline at end of file
+- [Telegram](https://t.me/leifermendez)
\ No newline at end of file
diff --git a/TODO.md b/TODO.md
index 4a877fd..553235c 100644
--- a/TODO.md
+++ b/TODO.md
@@ -2,31 +2,50 @@
- [X] __(doc)__ Video de como colaborar PR
- [ ] __(doc)__ Video implementación de test y cobertura
- [ ] __(doc)__ Video explicacion de github action
+- [ ] Crear packages list externas
### @bot-whatsapp/bot
-- [ ] agregar export package
+- [X] agregar export package
- [X] Posibilidad de en el capture meter todo un nuevo CTX de FLOW .addAnswer('Marca la opcion',{capture:true, join:CTX})
- [X] .addKeyword('1') no funciona con 1 caracter
- [X] sensitivy viene activado por defecto
-- [ ] fallback respuesta en hijo: Se puede colocar en option el ref de la answer fallback
+- [X] fallback respuesta en hijo: Se puede colocar en option el ref de la answer fallback
+- [X] Cuando Envian Sticket devuelve mensaje raro
+- [x] addAnswer agregar delay
- [ ] colocar mensaje esperando conectando whatsapp (provider)
-- [ ] Cuando Envian Sticket devuelve mensaje raro
- [ ] createDatabase validar implementacion de funciones
+- [ ] limitar caracteres de mensajes 4000
+- [X] cuando envias numeros (5 o 1) se dispara el flujo
### @bot-whatsapp/database
- [X] agregar export package
- [X] __(doc):__ Video para explicar como implementar nuevos database
- [X] Mongo adapter
-- [ ] MySQL adapter
+- [X] MySQL adapter
- [ ] JsonFile adapter
### @bot-whatsapp/provider
- [X] agregar export package
- [ ] __(doc):__ Video para explicar como implementar nuevos providers
-- [ ] WhatsappWeb provider enviar imagenes
-- [ ] WhatsappWeb provider enviar audio
+- [X] WhatsappWeb provider enviar imagenes
+- [X] WhatsappWeb provider enviar audio
+- [X] WhatsappWeb botones (Tiene truco) github:leifermendez/whatsapp-web.js
- [ ] Twilio adapter
- [ ] Meta adapter
### @bot-whatsapp/cli
-- [ ] Hacer comando para crear `example-app`
\ No newline at end of file
+- [X] Hacer comando para crear `example-app`
+
+
+### @bot-whatsapp/create-bot
+- [ ]
+
+### Starters
+- [X] Base
+- [X] Basico
+- [ ] Enviando Imagen
+- [ ] Enviando Botones
+- [ ] Mezclando flujos hijos
+
+### Extra
+- [X] Crear CI mantener fork update https://stackoverflow.com/questions/23793062/can-forks-be-synced-automatically-in-github
diff --git a/core.class.log b/core.class.log
new file mode 100644
index 0000000..5961e96
--- /dev/null
+++ b/core.class.log
@@ -0,0 +1,3 @@
+[handleMsg]: { from: 'XXXXXX', body: 'hola', hasMedia: false }
+[handleMsg]: { from: 'XXXXXX', body: 'hola', hasMedia: false }
+[handleMsg]: { from: 'XXXXXX', body: 'hola', hasMedia: false }
diff --git a/package.json b/package.json
index 062be61..9515320 100644
--- a/package.json
+++ b/package.json
@@ -7,6 +7,7 @@
"scripts": {
"commit": "git-cz",
"cli:rollup": "rollup --config ./packages/cli/rollup-cli.config.js ",
+ "create-bot:rollup": "rollup --config ./packages/create-bot-whatsapp/rollup-create.config.js ",
"bot:rollup": "rollup --config ./packages/bot/rollup-bot.config.js",
"provider:rollup": "rollup --config ./packages/provider/rollup-provider.config.js ",
"database:rollup": "rollup --config ./packages/database/rollup-database.config.js",
@@ -16,12 +17,12 @@
"lint:check": "eslint ./packages",
"lint:fix": "eslint --fix ./packages",
"build": "yarn run cli:rollup && yarn run bot:rollup && yarn run provider:rollup && yarn run database:rollup",
- "link.dist": "cd packages/bot && npm link && cd ../provider && npm link && cd ../cli && npm link && cd ../database && npm link && cd ../provider && npm link",
"copy.lib": "node ./scripts/move.js",
"test.unit": "node ./node_modules/uvu/bin.js packages test",
"test.coverage": "node ./node_modules/c8/bin/c8.js npm run test.unit",
"test": "npm run test.coverage",
"cli": "node ./packages/cli/bin/cli.js",
+ "create": "node ./packages/create-bot-whatsapp/bin/create.js",
"dev:debug": "node --inspect ./example-app/app.js",
"dev": "node ./example-app/app.js",
"prepare": "npx husky install",
@@ -30,6 +31,7 @@
"release": "standard-version"
},
"workspaces": [
+ "packages/create-bot-whatsapp",
"packages/bot",
"packages/cli",
"packages/database",
diff --git a/packages/bot/core/core.class.js b/packages/bot/core/core.class.js
index 106b9c9..f7726c8 100644
--- a/packages/bot/core/core.class.js
+++ b/packages/bot/core/core.class.js
@@ -1,6 +1,13 @@
const { toCtx } = require('../io/methods')
const { printer } = require('../utils/interactive')
+const { delay } = require('../utils/delay')
+const Queue = require('../utils/queue')
+const { Console } = require('console')
+const { createWriteStream } = require('fs')
+const logger = new Console({
+ stdout: createWriteStream(`${process.cwd()}/core.class.log`),
+})
/**
* [ ] Escuchar eventos del provider asegurarte que los provider emitan eventos
* [ ] Guardar historial en db
@@ -21,7 +28,14 @@ class CoreClass {
}
}
+ /**
+ * Manejador de eventos
+ */
listenerBusEvents = () => [
+ {
+ event: 'preinit',
+ func: () => printer('Iniciando provider espere...'),
+ },
{
event: 'require_action',
func: ({ instructions, title = '⚡⚡ ACCION REQUERIDA ⚡⚡' }) =>
@@ -44,16 +58,19 @@ class CoreClass {
]
/**
- * @private
- * @param {*} ctxMessage
+ *
+ * @param {*} messageInComming
+ * @returns
*/
handleMsg = async (messageInComming) => {
+ logger.log(`[handleMsg]: `, messageInComming)
const { body, from } = messageInComming
let msgToSend = []
+ let fallBackFlag = false
+
+ if (!body.length) return
- //Consultamos mensaje previo en DB
const prevMsg = await this.databaseClass.getPrevByNumber(from)
- //Consultamos for refSerializada en el flow actual
const refToContinue = this.flowClass.findBySerialize(
prevMsg?.refSerialize
)
@@ -67,14 +84,24 @@ class CoreClass {
this.databaseClass.save(ctxByNumber)
}
- //Si se tiene un callback se ejecuta
- if (refToContinue && prevMsg?.options?.callback) {
- const indexFlow = this.flowClass.findIndexByRef(refToContinue?.ref)
- this.flowClass.allCallbacks[indexFlow].callback(messageInComming)
+ // 📄 [options: fallback]: esta funcion se encarga de repetir el ultimo mensaje
+ const fallBack = () => {
+ fallBackFlag = true
+ msgToSend = this.flowClass.find(refToContinue?.keyword, true) || []
+ this.sendFlow(msgToSend, from)
+ return refToContinue
}
- //Si se tiene anidaciones de flows, si tienes anidados obligatoriamente capture:true
- if (prevMsg?.options?.nested?.length) {
+ // 📄 [options: callback]: Si se tiene un callback se ejecuta
+ if (!fallBackFlag && refToContinue && prevMsg?.options?.callback) {
+ const indexFlow = this.flowClass.findIndexByRef(refToContinue?.ref)
+ this.flowClass.allCallbacks[indexFlow].callback(messageInComming, {
+ fallBack,
+ })
+ }
+
+ // 📄🤘(tiene return) [options: nested(array)]: Si se tiene flujos hijos los implementa
+ if (!fallBackFlag && prevMsg?.options?.nested?.length) {
const nestedRef = prevMsg.options.nested
const flowStandalone = nestedRef.map((f) => ({
...nestedRef.find((r) => r.refSerialize === f.refSerialize),
@@ -85,28 +112,44 @@ class CoreClass {
return
}
- //Consultamos si se espera respuesta por parte de cliente "Ejemplo: Dime tu nombre"
- if (!prevMsg?.options?.nested?.length && prevMsg?.options?.capture) {
- msgToSend = this.flowClass.find(refToContinue?.ref, true) || []
- } else {
- msgToSend = this.flowClass.find(body) || []
+ // 📄🤘(tiene return) [options: capture (boolean)]: Si se tiene option boolean
+ if (!fallBackFlag && !prevMsg?.options?.nested?.length) {
+ const typeCapture = typeof prevMsg?.options?.capture
+ const valueCapture = prevMsg?.options?.capture
+
+ if (['string', 'boolean'].includes(typeCapture) && valueCapture) {
+ msgToSend = this.flowClass.find(refToContinue?.ref, true) || []
+ this.sendFlow(msgToSend, from)
+ return
+ }
}
+ msgToSend = this.flowClass.find(body) || []
this.sendFlow(msgToSend, from)
}
+ /**
+ * Enviar mensaje con contexto atraves del proveedor de whatsapp
+ * @param {*} numberOrId
+ * @param {*} ctxMessage ver más en GLOSSARY.md
+ * @returns
+ */
sendProviderAndSave = (numberOrId, ctxMessage) => {
const { answer } = ctxMessage
return Promise.all([
- this.providerClass.sendMessage(numberOrId, answer),
+ this.providerClass.sendMessage(numberOrId, answer, ctxMessage),
this.databaseClass.save({ ...ctxMessage, from: numberOrId }),
])
}
- sendFlow = (messageToSend, numberOrId) => {
+ sendFlow = async (messageToSend, numberOrId) => {
const queue = []
for (const ctxMessage of messageToSend) {
- queue.push(this.sendProviderAndSave(numberOrId, ctxMessage))
+ const delayMs = ctxMessage?.options?.delay || 0
+ if (delayMs) await delay(delayMs)
+ Queue.enqueue(() =>
+ this.sendProviderAndSave(numberOrId, ctxMessage)
+ )
}
return Promise.all(queue)
}
diff --git a/packages/bot/index.js b/packages/bot/index.js
index 5972d61..eb9df24 100644
--- a/packages/bot/index.js
+++ b/packages/bot/index.js
@@ -22,11 +22,13 @@ const createFlow = (args) => {
/**
* Crear instancia de clase Provider
+ * Depdendiendo del Provider puedes pasar argumentos
+ * Ver Documentacion
* @param {*} args
* @returns
*/
-const createProvider = (providerClass = class {}) => {
- const providerInstance = new providerClass()
+const createProvider = (providerClass = class {}, args = null) => {
+ const providerInstance = new providerClass(args)
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 5ed8eb4..2c18268 100644
--- a/packages/bot/io/flow.class.js
+++ b/packages/bot/io/flow.class.js
@@ -21,29 +21,25 @@ class FlowClass {
}
find = (keyOrWord, symbol = false, overFlow = null) => {
+ keyOrWord = `${keyOrWord}`
let capture = false
let messages = []
let refSymbol = null
overFlow = overFlow ?? this.flowSerialize
- const mapSensitiveString = (str, flag = false) => {
- if (!flag && Array.isArray(str)) {
- return str.map((c) => c.toLowerCase())
+ /** Retornar expresion regular para buscar coincidencia */
+ const mapSensitive = (str, flag = false) => {
+ const regexSensitive = flag ? 'g' : 'i'
+ if (Array.isArray(str)) {
+ return new RegExp(str.join('|'), regexSensitive)
}
-
- if (!flag && typeof str === 'string') {
- return str.toLowerCase()
- }
-
- return str
+ return new RegExp(str, regexSensitive)
}
const findIn = (keyOrWord, symbol = false, flow = overFlow) => {
const sensitive = refSymbol?.options?.sensitive || false
capture = refSymbol?.options?.capture || false
- keyOrWord = mapSensitiveString(keyOrWord, sensitive)
-
if (capture) return messages
if (symbol) {
@@ -51,9 +47,9 @@ class FlowClass {
if (refSymbol?.answer) messages.push(refSymbol)
if (refSymbol?.ref) findIn(refSymbol.ref, true)
} else {
- refSymbol = flow.find((c) =>
- mapSensitiveString(c.keyword, sensitive).includes(keyOrWord)
- )
+ refSymbol = flow.find((c) => {
+ return mapSensitive(c.keyword, sensitive).test(keyOrWord)
+ })
if (refSymbol?.ref) findIn(refSymbol.ref, true)
return messages
}
diff --git a/packages/bot/io/methods/addAnswer.js b/packages/bot/io/methods/addAnswer.js
index 6f9e862..d5b53e6 100644
--- a/packages/bot/io/methods/addAnswer.js
+++ b/packages/bot/io/methods/addAnswer.js
@@ -1,10 +1,9 @@
const { generateRef } = require('../../utils/hash')
const { toJson } = require('./toJson')
-const { toSerialize } = require('./toSerialize')
/**
*
* @param answer string
- * @param options {media:string, buttons:[], capture:true default false}
+ * @param options {media:string, buttons:[{"body":"😎 Cursos"}], delay:ms, capture:true default false}
* @returns
*/
const addAnswer =
@@ -25,6 +24,7 @@ const addAnswer =
: false,
child:
typeof options?.child === 'string' ? `${options?.child}` : null,
+ delay: typeof options?.delay === 'number' ? options?.delay : 0,
})
const getNested = () => ({
@@ -79,6 +79,7 @@ const addAnswer =
}
}
+ /// Retornar contexto no colocar nada más abajo de esto
const ctx = ctxAnswer()
return {
diff --git a/packages/bot/provider/provider.class.js b/packages/bot/provider/provider.class.js
index 212f042..5fc4bb8 100644
--- a/packages/bot/provider/provider.class.js
+++ b/packages/bot/provider/provider.class.js
@@ -19,7 +19,7 @@ class ProviderClass extends EventEmitter {
*
*/
- sendMessage = async (userId, message) => {
+ sendMessage = async (userId, message, sendMessage) => {
if (NODE_ENV !== 'production')
console.log('[sendMessage]', { userId, message })
return message
diff --git a/packages/bot/utils/delay.js b/packages/bot/utils/delay.js
new file mode 100644
index 0000000..021fafe
--- /dev/null
+++ b/packages/bot/utils/delay.js
@@ -0,0 +1,4 @@
+const delay = (miliseconds) =>
+ new Promise((res) => setTimeout(res, miliseconds))
+
+module.exports = { delay }
diff --git a/packages/bot/utils/queue.js b/packages/bot/utils/queue.js
new file mode 100644
index 0000000..1f610e9
--- /dev/null
+++ b/packages/bot/utils/queue.js
@@ -0,0 +1,46 @@
+class Queue {
+ static queue = []
+ static pendingPromise = false
+
+ static enqueue(promise) {
+ return new Promise((resolve, reject) => {
+ this.queue.push({
+ promise,
+ resolve,
+ reject,
+ })
+ this.dequeue()
+ })
+ }
+
+ static dequeue() {
+ if (this.workingOnPromise) {
+ return false
+ }
+ const item = this.queue.shift()
+ if (!item) {
+ return false
+ }
+ try {
+ this.workingOnPromise = true
+ item.promise()
+ .then((value) => {
+ this.workingOnPromise = false
+ item.resolve(value)
+ this.dequeue()
+ })
+ .catch((err) => {
+ this.workingOnPromise = false
+ item.reject(err)
+ this.dequeue()
+ })
+ } catch (err) {
+ this.workingOnPromise = false
+ item.reject(err)
+ this.dequeue()
+ }
+ return true
+ }
+}
+
+module.exports = Queue
diff --git a/packages/create-bot-whatsapp/bin/create.js b/packages/create-bot-whatsapp/bin/create.js
new file mode 100644
index 0000000..546eca2
--- /dev/null
+++ b/packages/create-bot-whatsapp/bin/create.js
@@ -0,0 +1,3 @@
+#!/usr/bin/env node
+const main = require('../lib/bin/bundle.create.cjs')
+main()
diff --git a/packages/create-bot-whatsapp/index.js b/packages/create-bot-whatsapp/index.js
new file mode 100644
index 0000000..7df7d03
--- /dev/null
+++ b/packages/create-bot-whatsapp/index.js
@@ -0,0 +1,12 @@
+/**
+ * Main function
+ */
+const main = () => {
+ console.clear()
+ console.log(``)
+ console.log(`[PostInstall]: Este es el main function.`)
+ console.log(`[PostInstall]: 👌 Aqui podrias instalar cosas`)
+ console.log(``)
+}
+
+module.exports = main
diff --git a/packages/create-bot-whatsapp/package.json b/packages/create-bot-whatsapp/package.json
new file mode 100644
index 0000000..65926f8
--- /dev/null
+++ b/packages/create-bot-whatsapp/package.json
@@ -0,0 +1,13 @@
+{
+ "name": "create-bot-whatsapp",
+ "version": "0.0.1",
+ "description": "",
+ "main": "./lib/bin/bundle.create.cjs",
+ "private": true,
+ "dependencies": {
+ "@bot-whatsapp/cli": "*"
+ },
+ "bin": {
+ "bot": "./lib/bin/bundle.create.cjs"
+ }
+}
diff --git a/packages/create-bot-whatsapp/rollup-create.config.js b/packages/create-bot-whatsapp/rollup-create.config.js
new file mode 100644
index 0000000..54f93f1
--- /dev/null
+++ b/packages/create-bot-whatsapp/rollup-create.config.js
@@ -0,0 +1,16 @@
+const banner = require('../../config/banner.rollup.json')
+const commonjs = require('@rollup/plugin-commonjs')
+const { nodeResolve } = require('@rollup/plugin-node-resolve')
+const { join } = require('path')
+
+const PATH = join(__dirname, 'lib', 'bin', 'bundle.create.cjs')
+
+module.exports = {
+ input: join(__dirname, 'index.js'),
+ output: {
+ banner: banner['banner.output'].join(''),
+ file: PATH,
+ format: 'cjs',
+ },
+ plugins: [commonjs(), nodeResolve()],
+}
diff --git a/packages/database/package.json b/packages/database/package.json
index 9f3f11d..801fb96 100644
--- a/packages/database/package.json
+++ b/packages/database/package.json
@@ -10,11 +10,13 @@
"dependencies": {
"dotenv": "^16.0.3",
"mongodb": "^4.11.0",
- "stormdb": "^0.6.0"
+ "stormdb": "^0.6.0",
+ "mysql2": "^2.3.3"
},
"exports": {
"./mock": "./lib/mock/index.cjs",
"./mongo": "./lib/mongo/index.cjs",
- "./json-file": "./lib/json-file/index.cjs"
+ "./json-file": "./lib/json-file/index.cjs",
+ "./mysql": "./lib/mysql/index.cjs"
}
}
diff --git a/packages/database/rollup-database.config.js b/packages/database/rollup-database.config.js
index fa64259..1eecdba 100644
--- a/packages/database/rollup-database.config.js
+++ b/packages/database/rollup-database.config.js
@@ -22,12 +22,20 @@ module.exports = [
plugins: [commonjs()],
},
{
- input: join(__dirname, 'src', 'json-file', 'index.js'),
+ input: join(__dirname, 'src', 'mysql', 'index.js'),
output: {
banner: banner['banner.output'].join(''),
- file: join(__dirname, 'lib', 'json-file', 'index.cjs'),
+ file: join(__dirname, 'lib', 'mysql', 'index.cjs'),
format: 'cjs',
},
plugins: [commonjs()],
},
+ {
+ input: join(__dirname, 'src', 'json-file', 'index.js'),
+ output: {
+ banner: banner['banner.output'].join(''),
+ file: join(__dirname, 'lib', 'json-file', 'index.cjs'),
+ },
+ plugins: [commonjs()],
+ },
]
diff --git a/packages/database/src/mysql/index.js b/packages/database/src/mysql/index.js
new file mode 100644
index 0000000..63e6e7d
--- /dev/null
+++ b/packages/database/src/mysql/index.js
@@ -0,0 +1,69 @@
+const mysql = require('mysql2')
+
+class MyslAdapter {
+ db
+ listHistory = []
+ credentials = { host: null, user: null, database: null }
+
+ constructor(_credentials) {
+ this.credentials = _credentials
+ this.init().then()
+ }
+
+ async init() {
+ this.db = mysql.createConnection(this.credentials)
+
+ await this.db.connect((error) => {
+ if (!error) {
+ console.log(`Solicitud de conexión a base de datos exitosa`)
+ }
+
+ if (error) {
+ console.log(`Solicitud de conexión fallida ${error.stack}`)
+ }
+ })
+ }
+
+ getPrevByNumber = (from) =>
+ new Promise((resolve, reject) => {
+ const sql = `SELECT * FROM history WHERE phone=${from} ORDER BY id DESC`
+ this.db.query(sql, (error, rows) => {
+ if (error) {
+ reject(error)
+ }
+
+ if (rows.length) {
+ const [row] = rows
+ row.options = JSON.parse(row.options)
+ resolve(row)
+ }
+
+ if (!rows.length) {
+ resolve(null)
+ }
+ })
+ })
+
+ 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 ?'
+
+ this.db.query(sql, [values], (err) => {
+ if (err) throw err
+ console.log('Guardado en DB...', values)
+ })
+ this.listHistory.push(ctx)
+ }
+}
+
+module.exports = MyslAdapter
diff --git a/packages/docs/package.json b/packages/docs/package.json
index a4425cc..7a94d17 100644
--- a/packages/docs/package.json
+++ b/packages/docs/package.json
@@ -29,10 +29,13 @@
"@types/node": "latest",
"@typescript-eslint/eslint-plugin": "5.43.0",
"@typescript-eslint/parser": "5.43.0",
+ "autoprefixer": "10.4.11",
"eslint": "8.28.0",
"eslint-plugin-qwik": "0.14.1",
"node-fetch": "3.3.0",
+ "postcss": "^8.4.16",
"prettier": "2.7.1",
+ "tailwindcss": "^3.1.8",
"typescript": "4.9.3",
"vite": "3.2.4",
"vite-tsconfig-paths": "3.5.0",
diff --git a/packages/docs/postcss.config.js b/packages/docs/postcss.config.js
new file mode 100644
index 0000000..33ad091
--- /dev/null
+++ b/packages/docs/postcss.config.js
@@ -0,0 +1,6 @@
+module.exports = {
+ plugins: {
+ tailwindcss: {},
+ autoprefixer: {},
+ },
+}
diff --git a/packages/docs/src/global.css b/packages/docs/src/global.css
index 70012a6..dacc261 100644
--- a/packages/docs/src/global.css
+++ b/packages/docs/src/global.css
@@ -63,4 +63,4 @@ code {
border-radius: 3px;
font-size: 0.9em;
border-bottom: 2px solid #bfbfbf;
-}
+}
\ No newline at end of file
diff --git a/packages/docs/tailwind.config.js b/packages/docs/tailwind.config.js
new file mode 100644
index 0000000..26e307b
--- /dev/null
+++ b/packages/docs/tailwind.config.js
@@ -0,0 +1,21 @@
+/** @type {import('tailwindcss').Config} */
+
+const defaultTheme = require("tailwindcss/defaultTheme");
+const colors = require("tailwindcss/colors");
+
+module.exports = {
+ content: ["./src/**/*.{js,ts,jsx,tsx,mdx}"],
+ theme: {
+ extend: {
+ colors: {
+ primary: colors.purple,
+ secondary: colors.sky,
+ },
+ fontFamily: {
+ sans: ["'Inter'", ...defaultTheme.fontFamily.sans],
+ },
+ },
+ },
+ plugins: [],
+ darkMode: "class",
+};
\ No newline at end of file
diff --git a/packages/provider/TODO.md b/packages/provider/TODO.md
deleted file mode 100644
index 1e2b948..0000000
--- a/packages/provider/TODO.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# @bot-whatsapp/provider
-
-```js
-// bootstrap.js Como iniciar el provider
-const { inout, provider, database } = require('@bot-whatsapp')
-
-provider.start()
-provider.close()
-```
-
-- [ ] whatsapp-web.js _verificar update_
-- [ ] Meta _verificar tokens_
-- [ ] Twilio _verificar tokens_
diff --git a/packages/provider/src/twilio/index.js b/packages/provider/src/twilio/index.js
index 41795b1..973cc48 100644
--- a/packages/provider/src/twilio/index.js
+++ b/packages/provider/src/twilio/index.js
@@ -1,19 +1,59 @@
const twilio = require('twilio')
const { ProviderClass } = require('@bot-whatsapp/bot')
-const TwilioVendor = new twilio(accountSid, authToken)
+const TwilioWebHookServer = require('./server')
+const { parseNumber } = require('./utils')
+/**
+ * { accountSid, authToken, vendorNumber }
+ */
class TwilioProvider extends ProviderClass {
- constructor() {
- super(TwilioVendor)
+ twilioHook
+ vendor
+ vendorNumber
+ constructor({ accountSid, authToken, vendorNumber }, _port = 3000) {
+ super()
+ this.vendor = new twilio(accountSid, authToken)
+ this.twilioHook = new TwilioWebHookServer(_port)
+ this.vendorNumber = vendorNumber
+
+ this.twilioHook.start()
+ const listEvents = this.busEvents()
+
+ for (const { event, func } of listEvents) {
+ this.twilioHook.on(event, func)
+ }
}
- sendMessage = (message) =>
- this.vendor.messages.create({
+ sendMessage = async (number, message) => {
+ return this.vendor.messages.create({
body: message,
- to: '+12345678901', // Text this number
- from: '+12345678901', // From a valid Twilio number
+ from: ['whatsapp:+', parseNumber(this.vendorNumber)].join(''),
+ to: ['whatsapp:+', parseNumber(number)].join(''),
})
+ }
+
+ /**
+ * Mapeamos los eventos nativos de whatsapp-web.js a los que la clase Provider espera
+ * para tener un standar de eventos
+ * @returns
+ */
+ busEvents = () => [
+ {
+ event: 'auth_failure',
+ func: (payload) => this.emit('error', payload),
+ },
+ {
+ event: 'ready',
+ func: () => this.emit('ready', true),
+ },
+ {
+ event: 'message',
+ func: (payload) => {
+ this.emit('message', payload)
+ },
+ },
+ ]
}
module.exports = TwilioProvider
diff --git a/packages/provider/src/twilio/server.js b/packages/provider/src/twilio/server.js
new file mode 100644
index 0000000..d208232
--- /dev/null
+++ b/packages/provider/src/twilio/server.js
@@ -0,0 +1,63 @@
+const { EventEmitter } = require('node:events')
+const polka = require('polka')
+const { urlencoded } = require('body-parser')
+const { parseNumber } = require('./utils')
+
+/**
+ * Encargado de levantar un servidor HTTP con una hook url
+ * [POST] /twilio-hook
+ */
+class TwilioWebHookServer extends EventEmitter {
+ twilioServer
+ twilioPort
+ constructor(_twilioPort) {
+ this.twilioServer = this.buildHTTPServer()
+ this.twilioPort = _twilioPort
+ }
+
+ /**
+ * Mensaje entrante
+ * emit: 'message'
+ * @param {*} req
+ * @param {*} res
+ */
+ incomingMsg = (req, res) => {
+ const { body } = req
+ this.emit('message', {
+ from: parseNumber(body.From),
+ to: parseNumber(body.To),
+ body: body.Body,
+ })
+ const json = JSON.stringify({ body })
+ res.end(json)
+ }
+
+ /**
+ * Contruir HTTP Server
+ * @returns
+ */
+ buildHTTPServer = () => {
+ return polka()
+ .use(urlencoded({ extended: true }))
+ .post('/twilio-hook', this.incomingMsg)
+ }
+
+ /**
+ * Puerto del HTTP
+ * @param {*} port default 3000
+ */
+ start = () => {
+ this.twilioServer.listen(this.twilioPort, () => {
+ console.log(``)
+ console.log(`[Twilio]: Agregar esta url "WHEN A MESSAGE COMES IN"`)
+ console.log(
+ `[Twilio]: http://localhost:${this.twilioPort}/twilio-hook`
+ )
+ console.log(`[Twilio]: Más información en la documentacion`)
+ console.log(``)
+ })
+ this.emit('ready')
+ }
+}
+
+module.exports = TwilioWebHookServer
diff --git a/packages/provider/src/twilio/utils.js b/packages/provider/src/twilio/utils.js
new file mode 100644
index 0000000..e620c4e
--- /dev/null
+++ b/packages/provider/src/twilio/utils.js
@@ -0,0 +1,5 @@
+const parseNumber = (number) => {
+ return `${number}`.replace('whatsapp:', '').replace('+', '')
+}
+
+module.exports = { parseNumber }
diff --git a/packages/provider/COMMON_MISTAKE.md b/packages/provider/src/web-whatsapp/COMMON_MISTAKE.md
similarity index 100%
rename from packages/provider/COMMON_MISTAKE.md
rename to packages/provider/src/web-whatsapp/COMMON_MISTAKE.md
diff --git a/packages/provider/src/web-whatsapp/index.js b/packages/provider/src/web-whatsapp/index.js
index 293311e..463987c 100644
--- a/packages/provider/src/web-whatsapp/index.js
+++ b/packages/provider/src/web-whatsapp/index.js
@@ -1,13 +1,24 @@
-const { Client, LocalAuth } = require('whatsapp-web.js')
+const {
+ Client,
+ LocalAuth,
+ MessageMedia,
+ Buttons,
+ List,
+} = require('whatsapp-web.js')
const { ProviderClass } = require('@bot-whatsapp/bot')
const { Console } = require('console')
-const { createWriteStream } = require('fs')
+const { createWriteStream, existsSync } = require('fs')
const { cleanNumber, generateImage, isValidNumber } = require('./utils')
const logger = new Console({
stdout: createWriteStream('./log'),
})
+/**
+ * WebWhatsappProvider: Es una clase tipo adaptor
+ * que extiende clases de ProviderClass (la cual es como interfaz para sber que funciones rqueridas)
+ * https://github.com/pedroslopez/whatsapp-web.js
+ */
class WebWhatsappProvider extends ProviderClass {
vendor
constructor() {
@@ -21,13 +32,14 @@ class WebWhatsappProvider extends ProviderClass {
for (const { event, func } of listEvents) {
this.vendor.on(event, func)
}
-
+ this.vendor.emit('preinit')
this.vendor.initialize().catch((e) => {
logger.log(e)
this.emit('require_action', {
instructions: [
- `Debes eliminar la carpeta .wwebjs_auth`,
- `y reiniciar nuevamente el bot `,
+ `(Opcion 1): Debes eliminar la carpeta .wwebjs_auth y reiniciar nuevamente el bot. `,
+ `(Opcion 2): Intenta actualizar el paquete [npm install whatsapp-web.js] `,
+ `(Opcion 3): Ir FORO de discord https://link.codigoencasa.com/DISCORD `,
],
})
})
@@ -60,10 +72,6 @@ class WebWhatsappProvider extends ProviderClass {
event: 'ready',
func: () => this.emit('ready', true),
},
- {
- event: 'authenticated',
- func: () => this.emit('ready', true),
- },
{
event: 'message',
func: (payload) => {
@@ -80,10 +88,87 @@ class WebWhatsappProvider extends ProviderClass {
},
]
- sendMessage = async (userId, message) => {
- const number = cleanNumber(userId)
+ /**
+ * Enviar un archivo multimedia
+ * https://docs.wwebjs.dev/MessageMedia.html
+ * @private
+ * @param {*} number
+ * @param {*} mediaInput
+ * @returns
+ */
+ sendMedia = async (number, mediaInput = null) => {
+ if (!existsSync(mediaInput))
+ throw new Error(`NO_SE_ENCONTRO: ${mediaInput}`)
+ const media = MessageMedia.fromFilePath(mediaInput)
+ return this.vendor.sendMessage(number, media, {
+ sendAudioAsVoice: true,
+ })
+ }
+
+ /**
+ * Enviar botones
+ * https://docs.wwebjs.dev/Buttons.html
+ * @private
+ * @param {*} number
+ * @param {*} message
+ * @param {*} buttons []
+ * @returns
+ */
+ sendButtons = async (number, message, buttons = []) => {
+ const buttonMessage = new Buttons(message, buttons, '', '')
+ return this.vendor.sendMessage(number, buttonMessage)
+ }
+
+ /**
+ * Enviar lista
+ * https://docs.wwebjs.dev/List.html
+ * @private
+ * @alpha No funciona en whatsapp bussines
+ * @param {*} number
+ * @param {*} message
+ * @param {*} buttons []
+ * @returns
+ */
+ sendList = async (number, message, listInput = []) => {
+ let sections = [
+ {
+ title: 'sectionTitle',
+ rows: [
+ { title: 'ListItem1', description: 'desc' },
+ { title: 'ListItem2' },
+ ],
+ },
+ ]
+ let list = new List('List body', 'btnText', sections, 'Title', 'footer')
+ return this.vendor.sendMessage(number, list)
+ }
+
+ /**
+ * Enviar un mensaje solo texto
+ * https://docs.wwebjs.dev/Message.html
+ * @private
+ * @param {*} number
+ * @param {*} message
+ * @returns
+ */
+ sendText = async (number, message) => {
return this.vendor.sendMessage(number, message)
}
+
+ /**
+ *
+ * @param {*} userId
+ * @param {*} message
+ * @param {*} param2
+ * @returns
+ */
+ sendMessage = async (userId, message, { options }) => {
+ const number = cleanNumber(userId)
+ if (options?.media) return this.sendMedia(number, options.media)
+ if (options?.buttons?.length)
+ return this.sendButtons(number, message, options.buttons)
+ return this.sendText(number, message)
+ }
}
module.exports = WebWhatsappProvider
diff --git a/scripts/move.js b/scripts/move.js
index 46dd625..5a0d8b6 100644
--- a/scripts/move.js
+++ b/scripts/move.js
@@ -11,6 +11,7 @@ const copyLibPkg = async (pkgName, to) => {
}
Promise.all([
+ copyLibPkg('create-bot-whatsapp', appDir),
copyLibPkg('bot', appDir),
copyLibPkg('database', appDir),
copyLibPkg('provider', appDir),
diff --git a/starters/apps/base/app.js b/starters/apps/base/app.js
index 64f9100..61a4bb0 100644
--- a/starters/apps/base/app.js
+++ b/starters/apps/base/app.js
@@ -5,11 +5,6 @@ const {
addKeyword,
} = require('@bot-whatsapp/bot')
-/**
- * ATENCION: Si vas a usar el provider whatsapp-web.js
- * recuerda ejecutar npm i whatsapp-web.js@latest
- */
-
const WebWhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp')
const MockAdapter = require('@bot-whatsapp/database/mock')
diff --git a/starters/apps/basic/app.js b/starters/apps/basic/app.js
index e66d350..78d9132 100644
--- a/starters/apps/basic/app.js
+++ b/starters/apps/basic/app.js
@@ -6,11 +6,6 @@ const {
addChild,
} = require('@bot-whatsapp/bot')
-/**
- * ATENCION: Si vas a usar el provider whatsapp-web.js
- * recuerda ejecutar npm i whatsapp-web.js@latest
- */
-
const WebWhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp')
const MockAdapter = require('@bot-whatsapp/database/mock')
diff --git a/yarn.lock b/yarn.lock
index 446c49c..8a41329 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -82,6 +82,7 @@ __metadata:
languageName: node
linkType: hard
+<<<<<<< HEAD
"@aws-sdk/client-cognito-identity@npm:3.223.0":
version: 3.223.0
resolution: "@aws-sdk/client-cognito-identity@npm:3.223.0"
@@ -91,6 +92,17 @@ __metadata:
"@aws-sdk/client-sts": 3.223.0
"@aws-sdk/config-resolver": 3.222.0
"@aws-sdk/credential-provider-node": 3.223.0
+=======
+"@aws-sdk/client-cognito-identity@npm:3.222.0":
+ version: 3.222.0
+ resolution: "@aws-sdk/client-cognito-identity@npm:3.222.0"
+ dependencies:
+ "@aws-crypto/sha256-browser": 2.0.0
+ "@aws-crypto/sha256-js": 2.0.0
+ "@aws-sdk/client-sts": 3.222.0
+ "@aws-sdk/config-resolver": 3.222.0
+ "@aws-sdk/credential-provider-node": 3.222.0
+>>>>>>> 520145bf7dcce65a6d0363bccd423613e6bde90d
"@aws-sdk/fetch-http-handler": 3.222.0
"@aws-sdk/hash-node": 3.222.0
"@aws-sdk/invalid-dependency": 3.222.0
@@ -116,11 +128,16 @@ __metadata:
"@aws-sdk/util-defaults-mode-browser": 3.222.0
"@aws-sdk/util-defaults-mode-node": 3.222.0
"@aws-sdk/util-endpoints": 3.222.0
+<<<<<<< HEAD
+=======
+ "@aws-sdk/util-retry": 3.222.0
+>>>>>>> 520145bf7dcce65a6d0363bccd423613e6bde90d
"@aws-sdk/util-user-agent-browser": 3.222.0
"@aws-sdk/util-user-agent-node": 3.222.0
"@aws-sdk/util-utf8-browser": 3.188.0
"@aws-sdk/util-utf8-node": 3.208.0
tslib: ^2.3.1
+<<<<<<< HEAD
checksum: ada894c3fbe943044617d719dc947af51546dbfea72e5b63f23c6230677c39dc0355248ed1ba119a29f2d4b7bc64e28400880b580a263bcd45d05fdf45007ad7
languageName: node
linkType: hard
@@ -128,6 +145,15 @@ __metadata:
"@aws-sdk/client-sso-oidc@npm:3.223.0":
version: 3.223.0
resolution: "@aws-sdk/client-sso-oidc@npm:3.223.0"
+=======
+ checksum: b733d9bad0232a17967da9b27311cb2adf41acaefc584173e6d74b3b966ed3908b9e9fa65b3a0f3e12709dc305e64b1a5351ea43ac666650a375cb10143368e3
+ languageName: node
+ linkType: hard
+
+"@aws-sdk/client-sso-oidc@npm:3.222.0":
+ version: 3.222.0
+ resolution: "@aws-sdk/client-sso-oidc@npm:3.222.0"
+>>>>>>> 520145bf7dcce65a6d0363bccd423613e6bde90d
dependencies:
"@aws-crypto/sha256-browser": 2.0.0
"@aws-crypto/sha256-js": 2.0.0
@@ -156,11 +182,16 @@ __metadata:
"@aws-sdk/util-defaults-mode-browser": 3.222.0
"@aws-sdk/util-defaults-mode-node": 3.222.0
"@aws-sdk/util-endpoints": 3.222.0
+<<<<<<< HEAD
+=======
+ "@aws-sdk/util-retry": 3.222.0
+>>>>>>> 520145bf7dcce65a6d0363bccd423613e6bde90d
"@aws-sdk/util-user-agent-browser": 3.222.0
"@aws-sdk/util-user-agent-node": 3.222.0
"@aws-sdk/util-utf8-browser": 3.188.0
"@aws-sdk/util-utf8-node": 3.208.0
tslib: ^2.3.1
+<<<<<<< HEAD
checksum: ab5b6142d897ec48a3bb246577c23d1b6e26ee228c7ce264f826d10f88caa83e03f0dac9d88e361c70b778ceef45f0ebd9712cd03ca5b60ab240a3d4382ecb7c
languageName: node
linkType: hard
@@ -168,6 +199,15 @@ __metadata:
"@aws-sdk/client-sso@npm:3.223.0":
version: 3.223.0
resolution: "@aws-sdk/client-sso@npm:3.223.0"
+=======
+ checksum: 40674d89438b689480bdfa10bfb044d90341d87096ae6b0803e6ecc1695d48b1f7a8c513109e92001c380e2b2f5b18aa3e8af1c8ecd3d2f04f63f160cb039611
+ languageName: node
+ linkType: hard
+
+"@aws-sdk/client-sso@npm:3.222.0":
+ version: 3.222.0
+ resolution: "@aws-sdk/client-sso@npm:3.222.0"
+>>>>>>> 520145bf7dcce65a6d0363bccd423613e6bde90d
dependencies:
"@aws-crypto/sha256-browser": 2.0.0
"@aws-crypto/sha256-js": 2.0.0
@@ -196,11 +236,16 @@ __metadata:
"@aws-sdk/util-defaults-mode-browser": 3.222.0
"@aws-sdk/util-defaults-mode-node": 3.222.0
"@aws-sdk/util-endpoints": 3.222.0
+<<<<<<< HEAD
+=======
+ "@aws-sdk/util-retry": 3.222.0
+>>>>>>> 520145bf7dcce65a6d0363bccd423613e6bde90d
"@aws-sdk/util-user-agent-browser": 3.222.0
"@aws-sdk/util-user-agent-node": 3.222.0
"@aws-sdk/util-utf8-browser": 3.188.0
"@aws-sdk/util-utf8-node": 3.208.0
tslib: ^2.3.1
+<<<<<<< HEAD
checksum: 856e3745182906d274dc894baa7d853966b0074f89ea892f29132e1cefdf49f267f1d0fffaa2de3de352d19ff3963d59290602057bd4510731e0156199bed664
languageName: node
linkType: hard
@@ -208,11 +253,24 @@ __metadata:
"@aws-sdk/client-sts@npm:3.223.0":
version: 3.223.0
resolution: "@aws-sdk/client-sts@npm:3.223.0"
+=======
+ checksum: bc0cd1125bc5aa94b3fdec15167ce9539acf4a187da060d51fa8ad7c30d0bf6cfee9e3a0175d65e204aba92efee4087c99d1190e1b43927c01cd7a8b1bbbb93e
+ languageName: node
+ linkType: hard
+
+"@aws-sdk/client-sts@npm:3.222.0":
+ version: 3.222.0
+ resolution: "@aws-sdk/client-sts@npm:3.222.0"
+>>>>>>> 520145bf7dcce65a6d0363bccd423613e6bde90d
dependencies:
"@aws-crypto/sha256-browser": 2.0.0
"@aws-crypto/sha256-js": 2.0.0
"@aws-sdk/config-resolver": 3.222.0
+<<<<<<< HEAD
"@aws-sdk/credential-provider-node": 3.223.0
+=======
+ "@aws-sdk/credential-provider-node": 3.222.0
+>>>>>>> 520145bf7dcce65a6d0363bccd423613e6bde90d
"@aws-sdk/fetch-http-handler": 3.222.0
"@aws-sdk/hash-node": 3.222.0
"@aws-sdk/invalid-dependency": 3.222.0
@@ -239,13 +297,21 @@ __metadata:
"@aws-sdk/util-defaults-mode-browser": 3.222.0
"@aws-sdk/util-defaults-mode-node": 3.222.0
"@aws-sdk/util-endpoints": 3.222.0
+<<<<<<< HEAD
+=======
+ "@aws-sdk/util-retry": 3.222.0
+>>>>>>> 520145bf7dcce65a6d0363bccd423613e6bde90d
"@aws-sdk/util-user-agent-browser": 3.222.0
"@aws-sdk/util-user-agent-node": 3.222.0
"@aws-sdk/util-utf8-browser": 3.188.0
"@aws-sdk/util-utf8-node": 3.208.0
fast-xml-parser: 4.0.11
tslib: ^2.3.1
+<<<<<<< HEAD
checksum: 6976345f839b0028a0e83f6d11e3323da68cef103ae5381299c6d75df25a1ef336b83023c79896242fbc4b7d2a27f3deebb1b1922e815e6cc7780f3eee302210
+=======
+ checksum: 79f18e5b44541673213715e3465a8b000716c03120ea087e6920abba3542683dbd4b881ecb091ef90df34947eec00c82daf70089ea0e5e92cffbb4e57e2d76d7
+>>>>>>> 520145bf7dcce65a6d0363bccd423613e6bde90d
languageName: node
linkType: hard
@@ -262,6 +328,7 @@ __metadata:
languageName: node
linkType: hard
+<<<<<<< HEAD
"@aws-sdk/credential-provider-cognito-identity@npm:3.223.0":
version: 3.223.0
resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.223.0"
@@ -271,6 +338,17 @@ __metadata:
"@aws-sdk/types": 3.222.0
tslib: ^2.3.1
checksum: e0f03110b120699ef9c458edd5b1a248f5e3f360931b2e8be7ebb7fc33da51ac1c3fdf96bb05a755a2d303c00c7effee7a582706da2333b4ee43c0040ff551a5
+=======
+"@aws-sdk/credential-provider-cognito-identity@npm:3.222.0":
+ version: 3.222.0
+ resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.222.0"
+ dependencies:
+ "@aws-sdk/client-cognito-identity": 3.222.0
+ "@aws-sdk/property-provider": 3.222.0
+ "@aws-sdk/types": 3.222.0
+ tslib: ^2.3.1
+ checksum: e6a61cf601825907931ed0cc42050b895b150468feb95c1052e053ce00d33e8d225663ca337da1c5825eee7e24438311ba0d28b2a6021868d3e6796aa81fdeeb
+>>>>>>> 520145bf7dcce65a6d0363bccd423613e6bde90d
languageName: node
linkType: hard
@@ -298,6 +376,7 @@ __metadata:
languageName: node
linkType: hard
+<<<<<<< HEAD
"@aws-sdk/credential-provider-ini@npm:3.223.0":
version: 3.223.0
resolution: "@aws-sdk/credential-provider-ini@npm:3.223.0"
@@ -305,11 +384,21 @@ __metadata:
"@aws-sdk/credential-provider-env": 3.222.0
"@aws-sdk/credential-provider-imds": 3.222.0
"@aws-sdk/credential-provider-sso": 3.223.0
+=======
+"@aws-sdk/credential-provider-ini@npm:3.222.0":
+ version: 3.222.0
+ resolution: "@aws-sdk/credential-provider-ini@npm:3.222.0"
+ dependencies:
+ "@aws-sdk/credential-provider-env": 3.222.0
+ "@aws-sdk/credential-provider-imds": 3.222.0
+ "@aws-sdk/credential-provider-sso": 3.222.0
+>>>>>>> 520145bf7dcce65a6d0363bccd423613e6bde90d
"@aws-sdk/credential-provider-web-identity": 3.222.0
"@aws-sdk/property-provider": 3.222.0
"@aws-sdk/shared-ini-file-loader": 3.222.0
"@aws-sdk/types": 3.222.0
tslib: ^2.3.1
+<<<<<<< HEAD
checksum: f407fe591999f1da1d5580b182af261ceeb4455da9a53d18ae871c9cf244e6e72fa10ef28036419790e2b5787d64c5de5b4daf4c7f69acb866894410baa880d0
languageName: node
linkType: hard
@@ -323,12 +412,31 @@ __metadata:
"@aws-sdk/credential-provider-ini": 3.223.0
"@aws-sdk/credential-provider-process": 3.222.0
"@aws-sdk/credential-provider-sso": 3.223.0
+=======
+ checksum: eac19a9b52066f76cf23bee102369df7d50097dfee3be14b12c2e178c16868acd1a79b13c00d3e3ac40d2fbc14b4e2b06119d0c51c5d875c6be3606c33514d62
+ languageName: node
+ linkType: hard
+
+"@aws-sdk/credential-provider-node@npm:3.222.0":
+ version: 3.222.0
+ resolution: "@aws-sdk/credential-provider-node@npm:3.222.0"
+ dependencies:
+ "@aws-sdk/credential-provider-env": 3.222.0
+ "@aws-sdk/credential-provider-imds": 3.222.0
+ "@aws-sdk/credential-provider-ini": 3.222.0
+ "@aws-sdk/credential-provider-process": 3.222.0
+ "@aws-sdk/credential-provider-sso": 3.222.0
+>>>>>>> 520145bf7dcce65a6d0363bccd423613e6bde90d
"@aws-sdk/credential-provider-web-identity": 3.222.0
"@aws-sdk/property-provider": 3.222.0
"@aws-sdk/shared-ini-file-loader": 3.222.0
"@aws-sdk/types": 3.222.0
tslib: ^2.3.1
+<<<<<<< HEAD
checksum: 6ce5f88f75a6e879344ea76fa2b390c779d74f1b3657fa15367b15797b09d9713ef0d2f14c95421254a6bc0b8bde1acd2634978a6549e02a74c33160ae6130fd
+=======
+ checksum: f17ce6c9b45d48d9bebd63766b5d85e45f6a1d50b02bea4784d0055269a0f5c05e5ba343c6b138cd29086b94c6bb4511568e9fb59f340f3988526b2d7950cb4c
+>>>>>>> 520145bf7dcce65a6d0363bccd423613e6bde90d
languageName: node
linkType: hard
@@ -344,6 +452,7 @@ __metadata:
languageName: node
linkType: hard
+<<<<<<< HEAD
"@aws-sdk/credential-provider-sso@npm:3.223.0":
version: 3.223.0
resolution: "@aws-sdk/credential-provider-sso@npm:3.223.0"
@@ -355,6 +464,19 @@ __metadata:
"@aws-sdk/types": 3.222.0
tslib: ^2.3.1
checksum: 4593a94dc86ef7218517061cf875285c2c6087f1d4a1199442055e6165701f11f9921612a04ab3c1b3f29b3132d46a8ce8cd26070fad132509e20eca1b89f217
+=======
+"@aws-sdk/credential-provider-sso@npm:3.222.0":
+ version: 3.222.0
+ resolution: "@aws-sdk/credential-provider-sso@npm:3.222.0"
+ dependencies:
+ "@aws-sdk/client-sso": 3.222.0
+ "@aws-sdk/property-provider": 3.222.0
+ "@aws-sdk/shared-ini-file-loader": 3.222.0
+ "@aws-sdk/token-providers": 3.222.0
+ "@aws-sdk/types": 3.222.0
+ tslib: ^2.3.1
+ checksum: 8e0a39a722fd6548b9758ab4c711eac9128a64bae1fa9bfce5f0b92c2df34883fdcd544c9a48f501d3a7b695e6d0b51a9b5e1be1b7eac626a1818860cfc86072
+>>>>>>> 520145bf7dcce65a6d0363bccd423613e6bde90d
languageName: node
linkType: hard
@@ -370,6 +492,7 @@ __metadata:
linkType: hard
"@aws-sdk/credential-providers@npm:^3.186.0":
+<<<<<<< HEAD
version: 3.223.0
resolution: "@aws-sdk/credential-providers@npm:3.223.0"
dependencies:
@@ -383,12 +506,31 @@ __metadata:
"@aws-sdk/credential-provider-node": 3.223.0
"@aws-sdk/credential-provider-process": 3.222.0
"@aws-sdk/credential-provider-sso": 3.223.0
+=======
+ version: 3.222.0
+ resolution: "@aws-sdk/credential-providers@npm:3.222.0"
+ dependencies:
+ "@aws-sdk/client-cognito-identity": 3.222.0
+ "@aws-sdk/client-sso": 3.222.0
+ "@aws-sdk/client-sts": 3.222.0
+ "@aws-sdk/credential-provider-cognito-identity": 3.222.0
+ "@aws-sdk/credential-provider-env": 3.222.0
+ "@aws-sdk/credential-provider-imds": 3.222.0
+ "@aws-sdk/credential-provider-ini": 3.222.0
+ "@aws-sdk/credential-provider-node": 3.222.0
+ "@aws-sdk/credential-provider-process": 3.222.0
+ "@aws-sdk/credential-provider-sso": 3.222.0
+>>>>>>> 520145bf7dcce65a6d0363bccd423613e6bde90d
"@aws-sdk/credential-provider-web-identity": 3.222.0
"@aws-sdk/property-provider": 3.222.0
"@aws-sdk/shared-ini-file-loader": 3.222.0
"@aws-sdk/types": 3.222.0
tslib: ^2.3.1
+<<<<<<< HEAD
checksum: 289d043f41460751e90c3adc323f3a56e517f67c0a7f8889249e0969b3302f19d093eef4a10d3528bdf34f1043f95fa41555ed5c91af4d2ca636cded1775c81c
+=======
+ checksum: a6c159abbc210d62ed7d1153278b423595493583f53ec2a9143b402ee149cc1ae39be41615c76c3b658e1e9f70e89019a594c8e7a6a320cf7ea37443714a79ac
+>>>>>>> 520145bf7dcce65a6d0363bccd423613e6bde90d
languageName: node
linkType: hard
@@ -674,16 +816,28 @@ __metadata:
languageName: node
linkType: hard
+<<<<<<< HEAD
"@aws-sdk/token-providers@npm:3.223.0":
version: 3.223.0
resolution: "@aws-sdk/token-providers@npm:3.223.0"
dependencies:
"@aws-sdk/client-sso-oidc": 3.223.0
+=======
+"@aws-sdk/token-providers@npm:3.222.0":
+ version: 3.222.0
+ resolution: "@aws-sdk/token-providers@npm:3.222.0"
+ dependencies:
+ "@aws-sdk/client-sso-oidc": 3.222.0
+>>>>>>> 520145bf7dcce65a6d0363bccd423613e6bde90d
"@aws-sdk/property-provider": 3.222.0
"@aws-sdk/shared-ini-file-loader": 3.222.0
"@aws-sdk/types": 3.222.0
tslib: ^2.3.1
+<<<<<<< HEAD
checksum: 08d724bc685b90761159b449413c9dddb581cc61cd982ee9a189e8682d1a703acc70663beec2ae31d1ebf6fe9a86480b63fb65da531e35b2e8772a2c3906969f
+=======
+ checksum: e0d2d9af50570ca1e9ae4cfe32889a9146a0e49ce3004dfc4d5305ba0f64b7561da95d09ccaf18927638417d3bd1eb9772cb58256aef242beab03a56e4e68883
+>>>>>>> 520145bf7dcce65a6d0363bccd423613e6bde90d
languageName: node
linkType: hard
@@ -812,6 +966,19 @@ __metadata:
dependencies:
tslib: ^2.3.1
checksum: 807dd36731c7aa59658e4eea5747d6d363b5e5715d0d2c5554c265df6729735f31e790e8e6130d5d56b4923e29080a656e19978631a7ff667f969bfdae8c6320
+<<<<<<< HEAD
+=======
+ languageName: node
+ linkType: hard
+
+"@aws-sdk/util-retry@npm:3.222.0":
+ version: 3.222.0
+ resolution: "@aws-sdk/util-retry@npm:3.222.0"
+ dependencies:
+ "@aws-sdk/service-error-classification": 3.222.0
+ tslib: ^2.3.1
+ checksum: d4b38a23a310d44d211db2cfb2ae53ef41cf805308d08e56d9ca786fc69fd6b244f331d40ea35023bbc53625c7b2c1f4fab9fabd32d0a10396d4359ac50eff09
+>>>>>>> 520145bf7dcce65a6d0363bccd423613e6bde90d
languageName: node
linkType: hard
@@ -935,7 +1102,11 @@ __metadata:
dependencies:
dotenv: ^16.0.3
mongodb: ^4.11.0
+<<<<<<< HEAD
stormdb: ^0.6.0
+=======
+ mysql2: ^2.3.3
+>>>>>>> 520145bf7dcce65a6d0363bccd423613e6bde90d
languageName: unknown
linkType: soft
@@ -1243,16 +1414,16 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/android-arm@npm:0.15.16":
- version: 0.15.16
- resolution: "@esbuild/android-arm@npm:0.15.16"
+"@esbuild/android-arm@npm:0.15.18":
+ version: 0.15.18
+ resolution: "@esbuild/android-arm@npm:0.15.18"
conditions: os=android & cpu=arm
languageName: node
linkType: hard
-"@esbuild/linux-loong64@npm:0.15.16":
- version: 0.15.16
- resolution: "@esbuild/linux-loong64@npm:0.15.16"
+"@esbuild/linux-loong64@npm:0.15.18":
+ version: 0.15.18
+ resolution: "@esbuild/linux-loong64@npm:0.15.18"
conditions: os=linux & cpu=loong64
languageName: node
linkType: hard
@@ -2112,6 +2283,24 @@ __metadata:
languageName: node
linkType: hard
+"acorn-node@npm:^1.8.2":
+ version: 1.8.2
+ resolution: "acorn-node@npm:1.8.2"
+ dependencies:
+ acorn: ^7.0.0
+ acorn-walk: ^7.0.0
+ xtend: ^4.0.2
+ checksum: 02e1564a1ccf8bd1fcefcd01235398af4a9effaf032c5397994ddd275590a72894cb3e26e4b82579ccdda1e48ade7486aef61e771ddae3563ca452b927f443d8
+ languageName: node
+ linkType: hard
+
+"acorn-walk@npm:^7.0.0":
+ version: 7.2.0
+ resolution: "acorn-walk@npm:7.2.0"
+ checksum: 9252158a79b9d92f1bc0dd6acc0fcfb87a67339e84bcc301bb33d6078936d27e35d606b4d35626d2962cd43c256d6f27717e70cbe15c04fff999ab0b2260b21f
+ languageName: node
+ linkType: hard
+
"acorn-walk@npm:^8.1.1":
version: 8.2.0
resolution: "acorn-walk@npm:8.2.0"
@@ -2119,6 +2308,15 @@ __metadata:
languageName: node
linkType: hard
+"acorn@npm:^7.0.0":
+ version: 7.4.1
+ resolution: "acorn@npm:7.4.1"
+ bin:
+ acorn: bin/acorn
+ checksum: 1860f23c2107c910c6177b7b7be71be350db9e1080d814493fae143ae37605189504152d1ba8743ba3178d0b37269ce1ffc42b101547fdc1827078f82671e407
+ languageName: node
+ linkType: hard
+
"acorn@npm:^8.0.0, acorn@npm:^8.4.1, acorn@npm:^8.8.0":
version: 8.8.1
resolution: "acorn@npm:8.8.1"
@@ -2264,6 +2462,13 @@ __metadata:
languageName: node
linkType: hard
+"arg@npm:^5.0.2":
+ version: 5.0.2
+ resolution: "arg@npm:5.0.2"
+ checksum: 6c69ada1a9943d332d9e5382393e897c500908d91d5cb735a01120d5f71daf1b339b7b8980cbeaba8fd1afc68e658a739746179e4315a26e8a28951ff9930078
+ languageName: node
+ linkType: hard
+
"argparse@npm:^2.0.1":
version: 2.0.1
resolution: "argparse@npm:2.0.1"
@@ -2315,6 +2520,24 @@ __metadata:
languageName: node
linkType: hard
+"autoprefixer@npm:10.4.11":
+ version: 10.4.11
+ resolution: "autoprefixer@npm:10.4.11"
+ dependencies:
+ browserslist: ^4.21.3
+ caniuse-lite: ^1.0.30001399
+ fraction.js: ^4.2.0
+ normalize-range: ^0.1.2
+ picocolors: ^1.0.0
+ postcss-value-parser: ^4.2.0
+ peerDependencies:
+ postcss: ^8.1.0
+ bin:
+ autoprefixer: bin/autoprefixer
+ checksum: fb8b2abbb0ce5e3c6bc957ffb714b84aa2e6a9f24cf9c139bcfec33ba5e3334f61a132c606a621e04097d026c1f653fe1bda2d1c3dc47b87c9f6b00d90732daa
+ languageName: node
+ linkType: hard
+
"bail@npm:^2.0.0":
version: 2.0.2
resolution: "bail@npm:2.0.2"
@@ -2360,10 +2583,13 @@ __metadata:
"@types/node": latest
"@typescript-eslint/eslint-plugin": 5.43.0
"@typescript-eslint/parser": 5.43.0
+ autoprefixer: 10.4.11
eslint: 8.28.0
eslint-plugin-qwik: 0.14.1
node-fetch: 3.3.0
+ postcss: ^8.4.16
prettier: 2.7.1
+ tailwindcss: ^3.1.8
typescript: 4.9.3
vite: 3.2.4
vite-tsconfig-paths: 3.5.0
@@ -2422,6 +2648,20 @@ __metadata:
languageName: node
linkType: hard
+"browserslist@npm:^4.21.3":
+ version: 4.21.4
+ resolution: "browserslist@npm:4.21.4"
+ dependencies:
+ caniuse-lite: ^1.0.30001400
+ electron-to-chromium: ^1.4.251
+ node-releases: ^2.0.6
+ update-browserslist-db: ^1.0.9
+ bin:
+ browserslist: cli.js
+ checksum: 4af3793704dbb4615bcd29059ab472344dc7961c8680aa6c4bb84f05340e14038d06a5aead58724eae69455b8fade8b8c69f1638016e87e5578969d74c078b79
+ languageName: node
+ linkType: hard
+
"bson@npm:^4.7.0":
version: 4.7.0
resolution: "bson@npm:4.7.0"
@@ -2528,6 +2768,13 @@ __metadata:
languageName: node
linkType: hard
+"camelcase-css@npm:^2.0.1":
+ version: 2.0.1
+ resolution: "camelcase-css@npm:2.0.1"
+ checksum: 1cec2b3b3dcb5026688a470b00299a8db7d904c4802845c353dbd12d9d248d3346949a814d83bfd988d4d2e5b9904c07efe76fecd195a1d4f05b543e7c0b56b1
+ languageName: node
+ linkType: hard
+
"camelcase-keys@npm:^6.2.2":
version: 6.2.2
resolution: "camelcase-keys@npm:6.2.2"
@@ -2546,6 +2793,13 @@ __metadata:
languageName: node
linkType: hard
+"caniuse-lite@npm:^1.0.30001399, caniuse-lite@npm:^1.0.30001400":
+ version: 1.0.30001436
+ resolution: "caniuse-lite@npm:1.0.30001436"
+ checksum: 7928ac7d93741a81b3005ca4623b133e7d790828be70b26ee55e4860facc59bc344f4092e20034981070a4714f70814c8be4929be4b22728031784f267f69099
+ languageName: node
+ linkType: hard
+
"ccount@npm:^2.0.0":
version: 2.0.1
resolution: "ccount@npm:2.0.1"
@@ -2699,7 +2953,7 @@ __metadata:
languageName: node
linkType: hard
-"color-name@npm:~1.1.4":
+"color-name@npm:^1.1.4, color-name@npm:~1.1.4":
version: 1.1.4
resolution: "color-name@npm:1.1.4"
checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610
@@ -3039,6 +3293,16 @@ __metadata:
languageName: node
linkType: hard
+"create-bot-whatsapp@workspace:packages/create-bot-whatsapp":
+ version: 0.0.0-use.local
+ resolution: "create-bot-whatsapp@workspace:packages/create-bot-whatsapp"
+ dependencies:
+ "@bot-whatsapp/cli": "*"
+ bin:
+ bot: ./lib/bin/bundle.create.cjs
+ languageName: unknown
+ linkType: soft
+
"create-require@npm:^1.1.0":
version: 1.1.1
resolution: "create-require@npm:1.1.1"
@@ -3076,6 +3340,15 @@ __metadata:
languageName: node
linkType: hard
+"cssesc@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "cssesc@npm:3.0.0"
+ bin:
+ cssesc: bin/cssesc
+ checksum: f8c4ababffbc5e2ddf2fa9957dda1ee4af6048e22aeda1869d0d00843223c1b13ad3f5d88b51caa46c994225eacb636b764eb807a8883e2fb6f99b4f4e8c48b2
+ languageName: node
+ linkType: hard
+
"dargs@npm:^7.0.0":
version: 7.0.0
resolution: "dargs@npm:7.0.0"
@@ -3149,6 +3422,13 @@ __metadata:
languageName: node
linkType: hard
+"defined@npm:^1.0.0":
+ version: 1.0.1
+ resolution: "defined@npm:1.0.1"
+ checksum: b1a852300bdb57f297289b55eafdd0c517afaa3ec8190e78fce91b9d8d0c0369d4505ecbdacfd3d98372e664f4a267d9bd793938d4a8c76209c9d9516fbe2101
+ languageName: node
+ linkType: hard
+
"delegates@npm:^1.0.0":
version: 1.0.0
resolution: "delegates@npm:1.0.0"
@@ -3156,6 +3436,13 @@ __metadata:
languageName: node
linkType: hard
+"denque@npm:^2.0.1":
+ version: 2.1.0
+ resolution: "denque@npm:2.1.0"
+ checksum: 1d4ae1d05e59ac3a3481e7b478293f4b4c813819342273f3d5b826c7ffa9753c520919ba264f377e09108d24ec6cf0ec0ac729a5686cbb8f32d797126c5dae74
+ languageName: node
+ linkType: hard
+
"depd@npm:^1.1.2":
version: 1.1.2
resolution: "depd@npm:1.1.2"
@@ -3193,6 +3480,26 @@ __metadata:
languageName: node
linkType: hard
+"detective@npm:^5.2.1":
+ version: 5.2.1
+ resolution: "detective@npm:5.2.1"
+ dependencies:
+ acorn-node: ^1.8.2
+ defined: ^1.0.0
+ minimist: ^1.2.6
+ bin:
+ detective: bin/detective.js
+ checksum: dc4601bbc6be850edb3c2dab7a0eaf5a6169a15ad201679c66d40ea1986df816eeaecd590047f15b0780285f3eeea13b82dca0d4c52a47e744a571e326a72dc9
+ languageName: node
+ linkType: hard
+
+"didyoumean@npm:^1.2.2":
+ version: 1.2.2
+ resolution: "didyoumean@npm:1.2.2"
+ checksum: d5d98719d58b3c2fa59663c4c42ba9716f1fd01245c31d5fce31915bd3aa26e6aac149788e007358f778ebbd68a2256eb5973e8ca6f221df221ba060115acf2e
+ languageName: node
+ linkType: hard
+
"diff@npm:^4.0.1":
version: 4.0.2
resolution: "diff@npm:4.0.2"
@@ -3216,6 +3523,13 @@ __metadata:
languageName: node
linkType: hard
+"dlv@npm:^1.1.3":
+ version: 1.1.3
+ resolution: "dlv@npm:1.1.3"
+ checksum: d7381bca22ed11933a1ccf376db7a94bee2c57aa61e490f680124fa2d1cd27e94eba641d9f45be57caab4f9a6579de0983466f620a2cd6230d7ec93312105ae7
+ languageName: node
+ linkType: hard
+
"doctrine@npm:^3.0.0":
version: 3.0.0
resolution: "doctrine@npm:3.0.0"
@@ -3258,6 +3572,13 @@ __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
+ languageName: node
+ linkType: hard
+
"emoji-regex@npm:^8.0.0":
version: 8.0.0
resolution: "emoji-regex@npm:8.0.0"
@@ -3313,9 +3634,9 @@ __metadata:
languageName: node
linkType: hard
-"esbuild-android-64@npm:0.15.16":
- version: 0.15.16
- resolution: "esbuild-android-64@npm:0.15.16"
+"esbuild-android-64@npm:0.15.18":
+ version: 0.15.18
+ resolution: "esbuild-android-64@npm:0.15.18"
conditions: os=android & cpu=x64
languageName: node
linkType: hard
@@ -3327,9 +3648,9 @@ __metadata:
languageName: node
linkType: hard
-"esbuild-android-arm64@npm:0.15.16":
- version: 0.15.16
- resolution: "esbuild-android-arm64@npm:0.15.16"
+"esbuild-android-arm64@npm:0.15.18":
+ version: 0.15.18
+ resolution: "esbuild-android-arm64@npm:0.15.18"
conditions: os=android & cpu=arm64
languageName: node
linkType: hard
@@ -3341,9 +3662,9 @@ __metadata:
languageName: node
linkType: hard
-"esbuild-darwin-64@npm:0.15.16":
- version: 0.15.16
- resolution: "esbuild-darwin-64@npm:0.15.16"
+"esbuild-darwin-64@npm:0.15.18":
+ version: 0.15.18
+ resolution: "esbuild-darwin-64@npm:0.15.18"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
@@ -3355,9 +3676,9 @@ __metadata:
languageName: node
linkType: hard
-"esbuild-darwin-arm64@npm:0.15.16":
- version: 0.15.16
- resolution: "esbuild-darwin-arm64@npm:0.15.16"
+"esbuild-darwin-arm64@npm:0.15.18":
+ version: 0.15.18
+ resolution: "esbuild-darwin-arm64@npm:0.15.18"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
@@ -3369,9 +3690,9 @@ __metadata:
languageName: node
linkType: hard
-"esbuild-freebsd-64@npm:0.15.16":
- version: 0.15.16
- resolution: "esbuild-freebsd-64@npm:0.15.16"
+"esbuild-freebsd-64@npm:0.15.18":
+ version: 0.15.18
+ resolution: "esbuild-freebsd-64@npm:0.15.18"
conditions: os=freebsd & cpu=x64
languageName: node
linkType: hard
@@ -3383,9 +3704,9 @@ __metadata:
languageName: node
linkType: hard
-"esbuild-freebsd-arm64@npm:0.15.16":
- version: 0.15.16
- resolution: "esbuild-freebsd-arm64@npm:0.15.16"
+"esbuild-freebsd-arm64@npm:0.15.18":
+ version: 0.15.18
+ resolution: "esbuild-freebsd-arm64@npm:0.15.18"
conditions: os=freebsd & cpu=arm64
languageName: node
linkType: hard
@@ -3397,9 +3718,9 @@ __metadata:
languageName: node
linkType: hard
-"esbuild-linux-32@npm:0.15.16":
- version: 0.15.16
- resolution: "esbuild-linux-32@npm:0.15.16"
+"esbuild-linux-32@npm:0.15.18":
+ version: 0.15.18
+ resolution: "esbuild-linux-32@npm:0.15.18"
conditions: os=linux & cpu=ia32
languageName: node
linkType: hard
@@ -3411,9 +3732,9 @@ __metadata:
languageName: node
linkType: hard
-"esbuild-linux-64@npm:0.15.16":
- version: 0.15.16
- resolution: "esbuild-linux-64@npm:0.15.16"
+"esbuild-linux-64@npm:0.15.18":
+ version: 0.15.18
+ resolution: "esbuild-linux-64@npm:0.15.18"
conditions: os=linux & cpu=x64
languageName: node
linkType: hard
@@ -3425,9 +3746,9 @@ __metadata:
languageName: node
linkType: hard
-"esbuild-linux-arm64@npm:0.15.16":
- version: 0.15.16
- resolution: "esbuild-linux-arm64@npm:0.15.16"
+"esbuild-linux-arm64@npm:0.15.18":
+ version: 0.15.18
+ resolution: "esbuild-linux-arm64@npm:0.15.18"
conditions: os=linux & cpu=arm64
languageName: node
linkType: hard
@@ -3439,9 +3760,9 @@ __metadata:
languageName: node
linkType: hard
-"esbuild-linux-arm@npm:0.15.16":
- version: 0.15.16
- resolution: "esbuild-linux-arm@npm:0.15.16"
+"esbuild-linux-arm@npm:0.15.18":
+ version: 0.15.18
+ resolution: "esbuild-linux-arm@npm:0.15.18"
conditions: os=linux & cpu=arm
languageName: node
linkType: hard
@@ -3453,9 +3774,9 @@ __metadata:
languageName: node
linkType: hard
-"esbuild-linux-mips64le@npm:0.15.16":
- version: 0.15.16
- resolution: "esbuild-linux-mips64le@npm:0.15.16"
+"esbuild-linux-mips64le@npm:0.15.18":
+ version: 0.15.18
+ resolution: "esbuild-linux-mips64le@npm:0.15.18"
conditions: os=linux & cpu=mips64el
languageName: node
linkType: hard
@@ -3467,9 +3788,9 @@ __metadata:
languageName: node
linkType: hard
-"esbuild-linux-ppc64le@npm:0.15.16":
- version: 0.15.16
- resolution: "esbuild-linux-ppc64le@npm:0.15.16"
+"esbuild-linux-ppc64le@npm:0.15.18":
+ version: 0.15.18
+ resolution: "esbuild-linux-ppc64le@npm:0.15.18"
conditions: os=linux & cpu=ppc64
languageName: node
linkType: hard
@@ -3481,9 +3802,9 @@ __metadata:
languageName: node
linkType: hard
-"esbuild-linux-riscv64@npm:0.15.16":
- version: 0.15.16
- resolution: "esbuild-linux-riscv64@npm:0.15.16"
+"esbuild-linux-riscv64@npm:0.15.18":
+ version: 0.15.18
+ resolution: "esbuild-linux-riscv64@npm:0.15.18"
conditions: os=linux & cpu=riscv64
languageName: node
linkType: hard
@@ -3495,9 +3816,9 @@ __metadata:
languageName: node
linkType: hard
-"esbuild-linux-s390x@npm:0.15.16":
- version: 0.15.16
- resolution: "esbuild-linux-s390x@npm:0.15.16"
+"esbuild-linux-s390x@npm:0.15.18":
+ version: 0.15.18
+ resolution: "esbuild-linux-s390x@npm:0.15.18"
conditions: os=linux & cpu=s390x
languageName: node
linkType: hard
@@ -3509,9 +3830,9 @@ __metadata:
languageName: node
linkType: hard
-"esbuild-netbsd-64@npm:0.15.16":
- version: 0.15.16
- resolution: "esbuild-netbsd-64@npm:0.15.16"
+"esbuild-netbsd-64@npm:0.15.18":
+ version: 0.15.18
+ resolution: "esbuild-netbsd-64@npm:0.15.18"
conditions: os=netbsd & cpu=x64
languageName: node
linkType: hard
@@ -3523,9 +3844,9 @@ __metadata:
languageName: node
linkType: hard
-"esbuild-openbsd-64@npm:0.15.16":
- version: 0.15.16
- resolution: "esbuild-openbsd-64@npm:0.15.16"
+"esbuild-openbsd-64@npm:0.15.18":
+ version: 0.15.18
+ resolution: "esbuild-openbsd-64@npm:0.15.18"
conditions: os=openbsd & cpu=x64
languageName: node
linkType: hard
@@ -3537,9 +3858,9 @@ __metadata:
languageName: node
linkType: hard
-"esbuild-sunos-64@npm:0.15.16":
- version: 0.15.16
- resolution: "esbuild-sunos-64@npm:0.15.16"
+"esbuild-sunos-64@npm:0.15.18":
+ version: 0.15.18
+ resolution: "esbuild-sunos-64@npm:0.15.18"
conditions: os=sunos & cpu=x64
languageName: node
linkType: hard
@@ -3551,9 +3872,9 @@ __metadata:
languageName: node
linkType: hard
-"esbuild-windows-32@npm:0.15.16":
- version: 0.15.16
- resolution: "esbuild-windows-32@npm:0.15.16"
+"esbuild-windows-32@npm:0.15.18":
+ version: 0.15.18
+ resolution: "esbuild-windows-32@npm:0.15.18"
conditions: os=win32 & cpu=ia32
languageName: node
linkType: hard
@@ -3565,9 +3886,9 @@ __metadata:
languageName: node
linkType: hard
-"esbuild-windows-64@npm:0.15.16":
- version: 0.15.16
- resolution: "esbuild-windows-64@npm:0.15.16"
+"esbuild-windows-64@npm:0.15.18":
+ version: 0.15.18
+ resolution: "esbuild-windows-64@npm:0.15.18"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
@@ -3579,9 +3900,9 @@ __metadata:
languageName: node
linkType: hard
-"esbuild-windows-arm64@npm:0.15.16":
- version: 0.15.16
- resolution: "esbuild-windows-arm64@npm:0.15.16"
+"esbuild-windows-arm64@npm:0.15.18":
+ version: 0.15.18
+ resolution: "esbuild-windows-arm64@npm:0.15.18"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
@@ -3658,31 +3979,31 @@ __metadata:
linkType: hard
"esbuild@npm:^0.15.9":
- version: 0.15.16
- resolution: "esbuild@npm:0.15.16"
+ version: 0.15.18
+ resolution: "esbuild@npm:0.15.18"
dependencies:
- "@esbuild/android-arm": 0.15.16
- "@esbuild/linux-loong64": 0.15.16
- esbuild-android-64: 0.15.16
- esbuild-android-arm64: 0.15.16
- esbuild-darwin-64: 0.15.16
- esbuild-darwin-arm64: 0.15.16
- esbuild-freebsd-64: 0.15.16
- esbuild-freebsd-arm64: 0.15.16
- esbuild-linux-32: 0.15.16
- esbuild-linux-64: 0.15.16
- esbuild-linux-arm: 0.15.16
- esbuild-linux-arm64: 0.15.16
- esbuild-linux-mips64le: 0.15.16
- esbuild-linux-ppc64le: 0.15.16
- esbuild-linux-riscv64: 0.15.16
- esbuild-linux-s390x: 0.15.16
- esbuild-netbsd-64: 0.15.16
- esbuild-openbsd-64: 0.15.16
- esbuild-sunos-64: 0.15.16
- esbuild-windows-32: 0.15.16
- esbuild-windows-64: 0.15.16
- esbuild-windows-arm64: 0.15.16
+ "@esbuild/android-arm": 0.15.18
+ "@esbuild/linux-loong64": 0.15.18
+ esbuild-android-64: 0.15.18
+ esbuild-android-arm64: 0.15.18
+ esbuild-darwin-64: 0.15.18
+ esbuild-darwin-arm64: 0.15.18
+ esbuild-freebsd-64: 0.15.18
+ esbuild-freebsd-arm64: 0.15.18
+ esbuild-linux-32: 0.15.18
+ esbuild-linux-64: 0.15.18
+ esbuild-linux-arm: 0.15.18
+ esbuild-linux-arm64: 0.15.18
+ esbuild-linux-mips64le: 0.15.18
+ esbuild-linux-ppc64le: 0.15.18
+ esbuild-linux-riscv64: 0.15.18
+ esbuild-linux-s390x: 0.15.18
+ esbuild-netbsd-64: 0.15.18
+ esbuild-openbsd-64: 0.15.18
+ esbuild-sunos-64: 0.15.18
+ esbuild-windows-32: 0.15.18
+ esbuild-windows-64: 0.15.18
+ esbuild-windows-arm64: 0.15.18
dependenciesMeta:
"@esbuild/android-arm":
optional: true
@@ -3730,7 +4051,7 @@ __metadata:
optional: true
bin:
esbuild: bin/esbuild
- checksum: 6f9262784b115363290cc9aa54692b3b646cd0508364333a609cc7be5ede4d93f91561ae8da48125e077da2e7add5368105486233ac2258f7169b171e8d78564
+ checksum: ec12682b2cb2d4f0669d0e555028b87a9284ca7f6a1b26e35e69a8697165b35cc682ad598abc70f0bbcfdc12ca84ef888caf5ceee389237862e8f8c17da85f89
languageName: node
linkType: hard
@@ -4102,7 +4423,7 @@ __metadata:
languageName: node
linkType: hard
-"fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.9":
+"fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.12, fast-glob@npm:^3.2.9":
version: 3.2.12
resolution: "fast-glob@npm:3.2.12"
dependencies:
@@ -4260,6 +4581,13 @@ __metadata:
languageName: node
linkType: hard
+"fraction.js@npm:^4.2.0":
+ version: 4.2.0
+ resolution: "fraction.js@npm:4.2.0"
+ checksum: 8c76a6e21dedea87109d6171a0ac77afa14205794a565d71cb10d2925f629a3922da61bf45ea52dbc30bce4d8636dc0a27213a88cbd600eab047d82f9a3a94c5
+ languageName: node
+ linkType: hard
+
"fs-extra@npm:^10.0.0":
version: 10.1.0
resolution: "fs-extra@npm:10.1.0"
@@ -4351,6 +4679,15 @@ __metadata:
languageName: node
linkType: hard
+"generate-function@npm:^2.3.1":
+ version: 2.3.1
+ resolution: "generate-function@npm:2.3.1"
+ dependencies:
+ is-property: ^1.0.2
+ checksum: 652f083de206ead2bae4caf9c7eeb465e8d98c0b8ed2a29c6afc538cef0785b5c6eea10548f1e13cc586d3afd796c13c830c2cb3dc612ec2457b2aadda5f57c9
+ languageName: node
+ linkType: hard
+
"get-caller-file@npm:^2.0.5":
version: 2.0.5
resolution: "get-caller-file@npm:2.0.5"
@@ -4761,7 +5098,7 @@ __metadata:
languageName: node
linkType: hard
-"iconv-lite@npm:^0.6.2":
+"iconv-lite@npm:^0.6.2, iconv-lite@npm:^0.6.3":
version: 0.6.3
resolution: "iconv-lite@npm:0.6.3"
dependencies:
@@ -5004,6 +5341,13 @@ __metadata:
languageName: node
linkType: hard
+"is-property@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "is-property@npm:1.0.2"
+ checksum: 33b661a3690bcc88f7e47bb0a21b9e3187e76a317541ea7ec5e8096d954f441b77a46d8930c785f7fbf4ef8dfd624c25495221e026e50f74c9048fe501773be5
+ languageName: node
+ linkType: hard
+
"is-reference@npm:1.2.1":
version: 1.2.1
resolution: "is-reference@npm:1.2.1"
@@ -5237,6 +5581,13 @@ __metadata:
languageName: node
linkType: hard
+"lilconfig@npm:^2.0.5, lilconfig@npm:^2.0.6":
+ version: 2.0.6
+ resolution: "lilconfig@npm:2.0.6"
+ checksum: 40a3cd72f103b1be5975f2ac1850810b61d4053e20ab09be8d3aeddfe042187e1ba70b4651a7e70f95efa1642e7dc8b2ae395b317b7d7753b241b43cef7c0f7d
+ languageName: node
+ linkType: hard
+
"lines-and-columns@npm:^1.1.6":
version: 1.2.4
resolution: "lines-and-columns@npm:1.2.4"
@@ -5378,6 +5729,13 @@ __metadata:
languageName: node
linkType: hard
+"long@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "long@npm:4.0.0"
+ checksum: 16afbe8f749c7c849db1f4de4e2e6a31ac6e617cead3bdc4f9605cb703cd20e1e9fc1a7baba674ffcca57d660a6e5b53a9e236d7b25a295d3855cca79cc06744
+ languageName: node
+ linkType: hard
+
"longest-streak@npm:^3.0.0":
version: 3.1.0
resolution: "longest-streak@npm:3.1.0"
@@ -5385,6 +5743,16 @@ __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"
@@ -5986,7 +6354,7 @@ __metadata:
languageName: node
linkType: hard
-"micromatch@npm:^4.0.4":
+"micromatch@npm:^4.0.4, micromatch@npm:^4.0.5":
version: 4.0.5
resolution: "micromatch@npm:4.0.5"
dependencies:
@@ -6261,6 +6629,22 @@ __metadata:
languageName: node
linkType: hard
+"mysql2@npm:^2.3.3":
+ version: 2.3.3
+ resolution: "mysql2@npm:2.3.3"
+ dependencies:
+ denque: ^2.0.1
+ generate-function: ^2.3.1
+ iconv-lite: ^0.6.3
+ long: ^4.0.0
+ lru-cache: ^6.0.0
+ named-placeholders: ^1.1.2
+ seq-queue: ^0.0.5
+ sqlstring: ^2.3.2
+ checksum: 45e479d0cbdb24ceb9d1846a1708ae2c33aa64f603f7899279b33560b1eec441f1b7a596075896f1305f701cfbc083bceb88bc72ba5d2f3656a3d6102611286a
+ languageName: node
+ linkType: hard
+
"mz@npm:^2.7.0":
version: 2.7.0
resolution: "mz@npm:2.7.0"
@@ -6272,6 +6656,15 @@ __metadata:
languageName: node
linkType: hard
+"named-placeholders@npm:^1.1.2":
+ version: 1.1.2
+ resolution: "named-placeholders@npm:1.1.2"
+ dependencies:
+ lru-cache: ^4.1.3
+ checksum: c9317d1b479d6733b3baedfde209c6c866cf387c2d625837f93355fdb6a9055b1e8180b883fe00bcb20edb3ba4dd21128ec2f1ed8cb884385cef7698cbcadcc4
+ languageName: node
+ linkType: hard
+
"nanoid@npm:^3.3.3, nanoid@npm:^3.3.4":
version: 3.3.4
resolution: "nanoid@npm:3.3.4"
@@ -6354,6 +6747,13 @@ __metadata:
languageName: node
linkType: hard
+"node-releases@npm:^2.0.6":
+ version: 2.0.6
+ resolution: "node-releases@npm:2.0.6"
+ checksum: e86a926dc9fbb3b41b4c4a89d998afdf140e20a4e8dbe6c0a807f7b2948b42ea97d7fd3ad4868041487b6e9ee98409829c6e4d84a734a4215dff060a7fbeb4bf
+ languageName: node
+ linkType: hard
+
"nopt@npm:^6.0.0":
version: 6.0.0
resolution: "nopt@npm:6.0.0"
@@ -6396,6 +6796,13 @@ __metadata:
languageName: node
linkType: hard
+"normalize-range@npm:^0.1.2":
+ version: 0.1.2
+ resolution: "normalize-range@npm:0.1.2"
+ checksum: 9b2f14f093593f367a7a0834267c24f3cb3e887a2d9809c77d8a7e5fd08738bcd15af46f0ab01cc3a3d660386f015816b5c922cea8bf2ee79777f40874063184
+ languageName: node
+ linkType: hard
+
"npm-run-path@npm:^4.0.0, npm-run-path@npm:^4.0.1":
version: 4.0.1
resolution: "npm-run-path@npm:4.0.1"
@@ -6445,6 +6852,13 @@ __metadata:
languageName: node
linkType: hard
+"object-hash@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "object-hash@npm:3.0.0"
+ checksum: 80b4904bb3857c52cc1bfd0b52c0352532ca12ed3b8a6ff06a90cd209dfda1b95cee059a7625eb9da29537027f68ac4619363491eedb2f5d3dddbba97494fd6c
+ languageName: node
+ linkType: hard
+
"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0":
version: 1.4.0
resolution: "once@npm:1.4.0"
@@ -6755,7 +7169,77 @@ __metadata:
languageName: node
linkType: hard
-"postcss@npm:^8.4.18":
+"postcss-import@npm:^14.1.0":
+ version: 14.1.0
+ resolution: "postcss-import@npm:14.1.0"
+ dependencies:
+ postcss-value-parser: ^4.0.0
+ read-cache: ^1.0.0
+ resolve: ^1.1.7
+ peerDependencies:
+ postcss: ^8.0.0
+ checksum: cd45d406e90f67cdab9524352e573cc6b4462b790934a05954e929a6653ebd31288ceebc8ce3c3ed7117ae672d9ebbec57df0bceec0a56e9b259c2e71d47ca86
+ languageName: node
+ linkType: hard
+
+"postcss-js@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "postcss-js@npm:4.0.0"
+ dependencies:
+ camelcase-css: ^2.0.1
+ peerDependencies:
+ postcss: ^8.3.3
+ checksum: 14be8a58670b4c5d037d40f179240a4f736d53530db727e2635638fa296bc4bff18149ca860928398aace422e55d07c9f5729eeccd395340944985199cdc82a5
+ languageName: node
+ linkType: hard
+
+"postcss-load-config@npm:^3.1.4":
+ version: 3.1.4
+ resolution: "postcss-load-config@npm:3.1.4"
+ dependencies:
+ lilconfig: ^2.0.5
+ yaml: ^1.10.2
+ peerDependencies:
+ postcss: ">=8.0.9"
+ ts-node: ">=9.0.0"
+ peerDependenciesMeta:
+ postcss:
+ optional: true
+ ts-node:
+ optional: true
+ checksum: 1c589504c2d90b1568aecae8238ab993c17dba2c44f848a8f13619ba556d26a1c09644d5e6361b5784e721e94af37b604992f9f3dc0483e687a0cc1cc5029a34
+ languageName: node
+ linkType: hard
+
+"postcss-nested@npm:6.0.0":
+ version: 6.0.0
+ resolution: "postcss-nested@npm:6.0.0"
+ dependencies:
+ postcss-selector-parser: ^6.0.10
+ peerDependencies:
+ postcss: ^8.2.14
+ checksum: 2105dc52cd19747058f1a46862c9e454b5a365ac2e7135fc1015d67a8fe98ada2a8d9ee578e90f7a093bd55d3994dd913ba5ff1d5e945b4ed9a8a2992ecc8f10
+ languageName: node
+ linkType: hard
+
+"postcss-selector-parser@npm:^6.0.10":
+ version: 6.0.11
+ resolution: "postcss-selector-parser@npm:6.0.11"
+ dependencies:
+ cssesc: ^3.0.0
+ util-deprecate: ^1.0.2
+ checksum: 0b01aa9c2d2c8dbeb51e9b204796b678284be9823abc8d6d40a8b16d4149514e922c264a8ed4deb4d6dbced564b9be390f5942c058582d8656351516d6c49cde
+ languageName: node
+ linkType: hard
+
+"postcss-value-parser@npm:^4.0.0, postcss-value-parser@npm:^4.2.0":
+ version: 4.2.0
+ resolution: "postcss-value-parser@npm:4.2.0"
+ checksum: 819ffab0c9d51cf0acbabf8996dffbfafbafa57afc0e4c98db88b67f2094cb44488758f06e5da95d7036f19556a4a732525e84289a425f4f6fd8e412a9d7442f
+ languageName: node
+ linkType: hard
+
+"postcss@npm:^8.4.16, postcss@npm:^8.4.18":
version: 8.4.19
resolution: "postcss@npm:8.4.19"
dependencies:
@@ -6850,6 +7334,13 @@ __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
+
"pump@npm:^3.0.0":
version: 3.0.0
resolution: "pump@npm:3.0.0"
@@ -6895,6 +7386,22 @@ __metadata:
languageName: node
linkType: hard
+"quick-lru@npm:^5.1.1":
+ version: 5.1.1
+ resolution: "quick-lru@npm:5.1.1"
+ checksum: a516faa25574be7947969883e6068dbe4aa19e8ef8e8e0fd96cddd6d36485e9106d85c0041a27153286b0770b381328f4072aa40d3b18a19f5f7d2b78b94b5ed
+ languageName: node
+ linkType: hard
+
+"read-cache@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "read-cache@npm:1.0.0"
+ dependencies:
+ pify: ^2.3.0
+ checksum: cffc728b9ede1e0667399903f9ecaf3789888b041c46ca53382fa3a06303e5132774dc0a96d0c16aa702dbac1ea0833d5a868d414f5ab2af1e1438e19e6657c6
+ languageName: node
+ linkType: hard
+
"read-pkg-up@npm:^3.0.0":
version: 3.0.0
resolution: "read-pkg-up@npm:3.0.0"
@@ -7074,7 +7581,7 @@ __metadata:
languageName: node
linkType: hard
-"resolve@npm:^1.10.0, resolve@npm:^1.22.1":
+"resolve@npm:^1.1.7, resolve@npm:^1.10.0, resolve@npm:^1.22.1":
version: 1.22.1
resolution: "resolve@npm:1.22.1"
dependencies:
@@ -7087,7 +7594,7 @@ __metadata:
languageName: node
linkType: hard
-"resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin":
+"resolve@patch:resolve@^1.1.7#~builtin, resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin":
version: 1.22.1
resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=c3c19d"
dependencies:
@@ -7194,8 +7701,8 @@ __metadata:
linkType: hard
"rollup@npm:^3.2.3":
- version: 3.5.1
- resolution: "rollup@npm:3.5.1"
+ version: 3.6.0
+ resolution: "rollup@npm:3.6.0"
dependencies:
fsevents: ~2.3.2
dependenciesMeta:
@@ -7203,7 +7710,7 @@ __metadata:
optional: true
bin:
rollup: dist/bin/rollup
- checksum: 9206af1fca3c05a519adf6cd81fa9c86d3262370256c2480b480e11f19dda212aac388d1893da6193d660071c54e57ae5981f54e0e52fe27e45245b991fbf6d3
+ checksum: 9aefeddf54623cefdbf9d3f75ac4c3e68f08a4e7f0685ac70c49acbc7963307eb80492c519c76010e15af429d40086ab3b3301add09cb8da892bdf89c605cd52
languageName: node
linkType: hard
@@ -7311,6 +7818,13 @@ __metadata:
languageName: node
linkType: hard
+"seq-queue@npm:^0.0.5":
+ version: 0.0.5
+ resolution: "seq-queue@npm:0.0.5"
+ checksum: f8695a6cb613e1b378b9686cde4ea626944091a412fc1c9d24c5039283d4351dd115f4505e4cf103d3a2e4a9a6a72fc7698fdce703839fb1fec9627aa4ce5563
+ languageName: node
+ linkType: hard
+
"set-blocking@npm:^2.0.0":
version: 2.0.0
resolution: "set-blocking@npm:2.0.0"
@@ -7503,6 +8017,13 @@ __metadata:
languageName: node
linkType: hard
+"sqlstring@npm:^2.3.2":
+ version: 2.3.3
+ resolution: "sqlstring@npm:2.3.3"
+ checksum: 1e7e2d51c38a0cf7372e875408ca100b6e0c9a941ab7773975ea41fb36e5528e404dc787689be855780cf6d0a829ff71027964ae3a05a7446e91dce26672fda7
+ languageName: node
+ linkType: hard
+
"ssri@npm:^9.0.0":
version: 9.0.1
resolution: "ssri@npm:9.0.1"
@@ -7707,6 +8228,42 @@ __metadata:
languageName: node
linkType: hard
+"tailwindcss@npm:^3.1.8":
+ version: 3.2.4
+ resolution: "tailwindcss@npm:3.2.4"
+ dependencies:
+ arg: ^5.0.2
+ chokidar: ^3.5.3
+ color-name: ^1.1.4
+ detective: ^5.2.1
+ didyoumean: ^1.2.2
+ dlv: ^1.1.3
+ fast-glob: ^3.2.12
+ glob-parent: ^6.0.2
+ is-glob: ^4.0.3
+ lilconfig: ^2.0.6
+ micromatch: ^4.0.5
+ normalize-path: ^3.0.0
+ object-hash: ^3.0.0
+ picocolors: ^1.0.0
+ postcss: ^8.4.18
+ 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-value-parser: ^4.2.0
+ quick-lru: ^5.1.1
+ resolve: ^1.22.1
+ peerDependencies:
+ postcss: ^8.0.9
+ bin:
+ tailwind: lib/cli.js
+ tailwindcss: lib/cli.js
+ checksum: ec187d180c722ec4f57537f2216c7b21269b525f12aaf353cea464d939c3e6286a1221eb3e1206e45d1f015f296171309ad4d9952899b0245cd07d9500a9401f
+ languageName: node
+ linkType: hard
+
"tar@npm:^6.1.11, tar@npm:^6.1.2":
version: 6.1.12
resolution: "tar@npm:6.1.12"
@@ -8125,6 +8682,20 @@ __metadata:
languageName: node
linkType: hard
+"update-browserslist-db@npm:^1.0.9":
+ version: 1.0.10
+ resolution: "update-browserslist-db@npm:1.0.10"
+ dependencies:
+ escalade: ^3.1.1
+ picocolors: ^1.0.0
+ peerDependencies:
+ browserslist: ">= 4.21.0"
+ bin:
+ browserslist-lint: cli.js
+ checksum: 12db73b4f63029ac407b153732e7cd69a1ea8206c9100b482b7d12859cd3cd0bc59c602d7ae31e652706189f1acb90d42c53ab24a5ba563ed13aebdddc5561a0
+ languageName: node
+ linkType: hard
+
"uri-js@npm:^4.2.2":
version: 4.4.1
resolution: "uri-js@npm:4.4.1"
@@ -8141,7 +8712,7 @@ __metadata:
languageName: node
linkType: hard
-"util-deprecate@npm:^1.0.1, util-deprecate@npm:~1.0.1":
+"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1":
version: 1.0.2
resolution: "util-deprecate@npm:1.0.2"
checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2
@@ -8429,7 +9000,7 @@ wrangler@latest:
languageName: node
linkType: hard
-"xtend@npm:~4.0.1":
+"xtend@npm:^4.0.2, xtend@npm:~4.0.1":
version: 4.0.2
resolution: "xtend@npm:4.0.2"
checksum: ac5dfa738b21f6e7f0dd6e65e1b3155036d68104e67e5d5d1bde74892e327d7e5636a076f625599dc394330a731861e87343ff184b0047fef1360a7ec0a5a36a
@@ -8450,6 +9021,13 @@ wrangler@latest:
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"
@@ -8457,7 +9035,7 @@ wrangler@latest:
languageName: node
linkType: hard
-"yaml@npm:^1.10.0":
+"yaml@npm:^1.10.0, yaml@npm:^1.10.2":
version: 1.10.2
resolution: "yaml@npm:1.10.2"
checksum: ce4ada136e8a78a0b08dc10b4b900936912d15de59905b2bf415b4d33c63df1d555d23acb2a41b23cf9fb5da41c256441afca3d6509de7247daa062fd2c5ea5f