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/TODO.md b/TODO.md index 9388f54..5f3179a 100644 --- a/TODO.md +++ b/TODO.md @@ -13,6 +13,7 @@ - [ ] colocar mensaje esperando conectando whatsapp (provider) - [ ] createDatabase validar implementacion de funciones - [ ] limitar caracteres de mensajes +- [ ] cuando envias numeros (5 o 1) se dispara el flujo ### @bot-whatsapp/database - [X] agregar export package 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 ba69dff..c5062bb 100644 --- a/packages/bot/core/core.class.js +++ b/packages/bot/core/core.class.js @@ -1,6 +1,11 @@ const { toCtx } = require('../io/methods') 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 * [ ] Guardar historial en db @@ -56,6 +61,7 @@ class CoreClass { * @returns */ handleMsg = async (messageInComming) => { + logger.log(`[handleMsg]: `, messageInComming) const { body, from } = messageInComming let msgToSend = [] let fallBackFlag = false 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/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/src/mysql/index.js b/packages/database/src/mysql/index.js index de69e4a..63e6e7d 100644 --- a/packages/database/src/mysql/index.js +++ b/packages/database/src/mysql/index.js @@ -1,4 +1,3 @@ -require('dotenv').config() const mysql = require('mysql2') class MyslAdapter { 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/yarn.lock b/yarn.lock index 8d6a213..a62b2db 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3136,6 +3136,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"