fix(bot): fix sensitive case

This commit is contained in:
Leifer Mendez
2022-12-06 19:35:21 +01:00
parent 4350dff22a
commit 24ac9fbf48
12 changed files with 77 additions and 16 deletions

2
.gitignore vendored
View File

@@ -18,6 +18,8 @@ config.json
coverage/ coverage/
*.lcov *.lcov
log log
log/*
*.log
lib lib
tmp/ tmp/
.yarn/* .yarn/*

View File

@@ -13,6 +13,7 @@
- [ ] colocar mensaje esperando conectando whatsapp (provider) - [ ] colocar mensaje esperando conectando whatsapp (provider)
- [ ] createDatabase validar implementacion de funciones - [ ] createDatabase validar implementacion de funciones
- [ ] limitar caracteres de mensajes - [ ] limitar caracteres de mensajes
- [ ] cuando envias numeros (5 o 1) se dispara el flujo
### @bot-whatsapp/database ### @bot-whatsapp/database
- [X] agregar export package - [X] agregar export package

View File

@@ -7,6 +7,7 @@
"scripts": { "scripts": {
"commit": "git-cz", "commit": "git-cz",
"cli:rollup": "rollup --config ./packages/cli/rollup-cli.config.js ", "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", "bot:rollup": "rollup --config ./packages/bot/rollup-bot.config.js",
"provider:rollup": "rollup --config ./packages/provider/rollup-provider.config.js ", "provider:rollup": "rollup --config ./packages/provider/rollup-provider.config.js ",
"database:rollup": "rollup --config ./packages/database/rollup-database.config.js", "database:rollup": "rollup --config ./packages/database/rollup-database.config.js",
@@ -16,12 +17,12 @@
"lint:check": "eslint ./packages", "lint:check": "eslint ./packages",
"lint:fix": "eslint --fix ./packages", "lint:fix": "eslint --fix ./packages",
"build": "yarn run cli:rollup && yarn run bot:rollup && yarn run provider:rollup && yarn run database:rollup", "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", "copy.lib": "node ./scripts/move.js",
"test.unit": "node ./node_modules/uvu/bin.js packages test", "test.unit": "node ./node_modules/uvu/bin.js packages test",
"test.coverage": "node ./node_modules/c8/bin/c8.js npm run test.unit", "test.coverage": "node ./node_modules/c8/bin/c8.js npm run test.unit",
"test": "npm run test.coverage", "test": "npm run test.coverage",
"cli": "node ./packages/cli/bin/cli.js", "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:debug": "node --inspect ./example-app/app.js",
"dev": "node ./example-app/app.js", "dev": "node ./example-app/app.js",
"prepare": "npx husky install", "prepare": "npx husky install",
@@ -30,6 +31,7 @@
"release": "standard-version" "release": "standard-version"
}, },
"workspaces": [ "workspaces": [
"packages/create-bot-whatsapp",
"packages/bot", "packages/bot",
"packages/cli", "packages/cli",
"packages/database", "packages/database",

View File

@@ -1,6 +1,11 @@
const { toCtx } = require('../io/methods') const { toCtx } = require('../io/methods')
const { printer } = require('../utils/interactive') const { printer } = require('../utils/interactive')
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 * [ ] Escuchar eventos del provider asegurarte que los provider emitan eventos
* [ ] Guardar historial en db * [ ] Guardar historial en db
@@ -56,6 +61,7 @@ class CoreClass {
* @returns * @returns
*/ */
handleMsg = async (messageInComming) => { handleMsg = async (messageInComming) => {
logger.log(`[handleMsg]: `, messageInComming)
const { body, from } = messageInComming const { body, from } = messageInComming
let msgToSend = [] let msgToSend = []
let fallBackFlag = false let fallBackFlag = false

View File

@@ -21,29 +21,25 @@ class FlowClass {
} }
find = (keyOrWord, symbol = false, overFlow = null) => { find = (keyOrWord, symbol = false, overFlow = null) => {
keyOrWord = `${keyOrWord}`
let capture = false let capture = false
let messages = [] let messages = []
let refSymbol = null let refSymbol = null
overFlow = overFlow ?? this.flowSerialize overFlow = overFlow ?? this.flowSerialize
const mapSensitiveString = (str, flag = false) => { /** Retornar expresion regular para buscar coincidencia */
if (!flag && Array.isArray(str)) { const mapSensitive = (str, flag = false) => {
return str.map((c) => c.toLowerCase()) const regexSensitive = flag ? 'g' : 'i'
if (Array.isArray(str)) {
return new RegExp(str.join('|'), regexSensitive)
} }
return new RegExp(str, regexSensitive)
if (!flag && typeof str === 'string') {
return str.toLowerCase()
}
return str
} }
const findIn = (keyOrWord, symbol = false, flow = overFlow) => { const findIn = (keyOrWord, symbol = false, flow = overFlow) => {
const sensitive = refSymbol?.options?.sensitive || false const sensitive = refSymbol?.options?.sensitive || false
capture = refSymbol?.options?.capture || false capture = refSymbol?.options?.capture || false
keyOrWord = mapSensitiveString(keyOrWord, sensitive)
if (capture) return messages if (capture) return messages
if (symbol) { if (symbol) {
@@ -51,9 +47,9 @@ class FlowClass {
if (refSymbol?.answer) messages.push(refSymbol) if (refSymbol?.answer) messages.push(refSymbol)
if (refSymbol?.ref) findIn(refSymbol.ref, true) if (refSymbol?.ref) findIn(refSymbol.ref, true)
} else { } else {
refSymbol = flow.find((c) => refSymbol = flow.find((c) => {
mapSensitiveString(c.keyword, sensitive).includes(keyOrWord) return mapSensitive(c.keyword, sensitive).test(keyOrWord)
) })
if (refSymbol?.ref) findIn(refSymbol.ref, true) if (refSymbol?.ref) findIn(refSymbol.ref, true)
return messages return messages
} }

View File

@@ -0,0 +1,3 @@
#!/usr/bin/env node
const main = require('../lib/bin/bundle.create.cjs')
main()

View File

@@ -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

View File

@@ -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"
}
}

View File

@@ -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()],
}

View File

@@ -1,4 +1,3 @@
require('dotenv').config()
const mysql = require('mysql2') const mysql = require('mysql2')
class MyslAdapter { class MyslAdapter {

View File

@@ -11,6 +11,7 @@ const copyLibPkg = async (pkgName, to) => {
} }
Promise.all([ Promise.all([
copyLibPkg('create-bot-whatsapp', appDir),
copyLibPkg('bot', appDir), copyLibPkg('bot', appDir),
copyLibPkg('database', appDir), copyLibPkg('database', appDir),
copyLibPkg('provider', appDir), copyLibPkg('provider', appDir),

View File

@@ -3136,6 +3136,16 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "create-require@npm:^1.1.0":
version: 1.1.1 version: 1.1.1
resolution: "create-require@npm:1.1.1" resolution: "create-require@npm:1.1.1"