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/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/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/provider/provider.class.js b/packages/bot/provider/provider.class.js
index 212f042..57d7185 100644
--- a/packages/bot/provider/provider.class.js
+++ b/packages/bot/provider/provider.class.js
@@ -20,8 +20,7 @@ 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
}
}
diff --git a/packages/bot/tests/bot.class.test.js b/packages/bot/tests/bot.class.test.js
index d74fdad..4db4ca8 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 }
@@ -100,20 +94,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 +108,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 +144,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 +158,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 +196,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 +210,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 6a7cda0..33df66b 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/mongo/index.js b/packages/database/src/mongo/index.js
index 6af68f0..9ea3fa5 100644
--- a/packages/database/src/mongo/index.js
+++ b/packages/database/src/mongo/index.js
@@ -24,12 +24,7 @@ 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]
}
diff --git a/packages/database/src/mysql/index.js b/packages/database/src/mysql/index.js
index 2a9b0c4..0beea56 100644
--- a/packages/database/src/mysql/index.js
+++ b/packages/database/src/mysql/index.js
@@ -1,76 +1,66 @@
-const mysql = require("mysql2");
+const mysql = require('mysql2')
class MyslAdapter {
- db;
- listHistory = [];
- credentials = { host: null, user: null, database: null, password: null };
+ db
+ listHistory = []
+ credentials = { host: null, user: null, database: null, password: null }
- constructor(_credentials) {
- this.credentials = _credentials;
- this.init().then();
- }
+ constructor(_credentials) {
+ this.credentials = _credentials
+ this.init().then()
+ }
- async init() {
- this.db = mysql.createConnection(this.credentials);
+ async init() {
+ this.db = mysql.createConnection(this.credentials)
- await this.db.connect(async (error) => {
- if (!error) {
- console.log(`Solicitud de conexión a base de datos exitosa`);
- await this.checkTableExists();
- }
+ await this.db.connect(async (error) => {
+ if (!error) {
+ console.log(`Solicitud de conexión a base de datos exitosa`)
+ await this.checkTableExists()
+ }
- if (error) {
- console.log(`Solicitud de conexión fallida ${error.stack}`);
- }
- });
- }
+ 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);
- }
+ 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) {
+ const [row] = rows
+ row.options = JSON.parse(row.options)
+ resolve(row)
+ }
- if (!rows.length) {
- resolve(null);
- }
- });
- });
+ 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 ?";
+ 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);
- };
+ this.db.query(sql, [values], (err) => {
+ if (err) throw err
+ console.log('Guardado en DB...', values)
+ })
+ this.listHistory.push(ctx)
+ }
- createTable = () =>
- new Promise((resolve) => {
- const tableName = "history";
+ createTable = () =>
+ new Promise((resolve) => {
+ const tableName = 'history'
- const sql = `CREATE TABLE ${tableName}
+ const sql = `CREATE TABLE ${tableName}
(id INT AUTO_INCREMENT PRIMARY KEY,
ref varchar(255) NOT NULL,
keyword varchar(255) NOT NULL,
@@ -78,29 +68,29 @@ class MyslAdapter {
refSerialize varchar(255) NOT NULL,
phone varchar(255) NOT NULL,
options longtext NOT NULL)
- CHARACTER SET utf8mb4 COLLATE utf8mb4_General_ci`;
+ CHARACTER SET utf8mb4 COLLATE utf8mb4_General_ci`
- this.db.query(sql, (err) => {
- if (err) throw err;
- console.log(`Tabla ${tableName} creada correctamente `);
- resolve(true);
- });
- });
+ this.db.query(sql, (err) => {
+ if (err) throw err
+ console.log(`Tabla ${tableName} creada correctamente `)
+ resolve(true)
+ })
+ })
- checkTableExists = () =>
- new Promise((resolve) => {
- const sql = "SHOW TABLES LIKE 'history'";
+ checkTableExists = () =>
+ new Promise((resolve) => {
+ const sql = "SHOW TABLES LIKE 'history'"
- this.db.query(sql, (err, rows) => {
- if (err) throw err;
+ this.db.query(sql, (err, rows) => {
+ if (err) throw err
- if (!rows.length) {
- this.createTable();
- }
+ if (!rows.length) {
+ this.createTable()
+ }
- resolve(!!rows.length);
- });
- });
+ resolve(!!rows.length)
+ })
+ })
}
-module.exports = MyslAdapter;
+module.exports = MyslAdapter
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/components/atoms/DigitalOcean.tsx b/packages/docs/src/components/atoms/DigitalOcean.tsx
index dc16647..fc97537 100644
--- a/packages/docs/src/components/atoms/DigitalOcean.tsx
+++ b/packages/docs/src/components/atoms/DigitalOcean.tsx
@@ -56,10 +56,7 @@ export const DigitalOcean = () => (
h-3.1V2h3.2V14.9z M361.9,21.1v1.1c0,4.4,2.6,6.6,6.2,6.6c3.7,0,6.5-2.5,6.5-7.2c0-4.6-2.8-7.1-6.5-7.1
C364.5,14.5,361.9,16.8,361.9,21.1z"
/>
-
+
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 = () => (
-
- 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.
- {description} -
+{description}
- - 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.
- 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 ( -Downloads
Stars
Forks
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- 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
- 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.
+
- 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.