diff --git a/package-lock.json b/package-lock.json index ecd5602..d5faeee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -193,26 +193,11 @@ "lodash": "^4.17.13" }, "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true } } }, @@ -688,6 +673,14 @@ "dev": true, "requires": { "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } } }, "core-js": { @@ -752,14 +745,6 @@ "log-driver": "^1.2.7", "minimist": "^1.2.0", "request": "^2.88.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } } }, "cp-file": { @@ -803,11 +788,18 @@ } }, "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } } }, "decamelize": { @@ -1027,27 +1019,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -1264,21 +1241,6 @@ "spdx-expression-parse": "^3.0.0" }, "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -1362,12 +1324,12 @@ "dev": true }, "espree": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.0.tgz", - "integrity": "sha512-Xs8airJ7RQolnDIbLtRutmfvSsAe0xqMMAantCN/GMoqf81TFbeI1T7Jpd56qYu1uuh32dOG5W/X9uO+ghPXzA==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", "dev": true, "requires": { - "acorn": "^7.1.0", + "acorn": "^7.1.1", "acorn-jsx": "^5.2.0", "eslint-visitor-keys": "^1.1.0" } @@ -1530,6 +1492,16 @@ "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", "requires": { "debug": "=3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } } }, "foreground-child": { @@ -1952,9 +1924,9 @@ "dev": true }, "inquirer": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.6.tgz", - "integrity": "sha512-7SVO4h+QIdMq6XcqIqrNte3gS5MzCCKZdsq9DO4PJziBFNYzP3PGFbDjgadDb//MCahzgjCxvQ/O2wa7kx9o4w==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", + "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", "requires": { "ansi-escapes": "^4.2.1", "chalk": "^3.0.0", @@ -2153,23 +2125,6 @@ "make-dir": "^2.1.0", "rimraf": "^2.6.3", "source-map": "^0.6.1" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } } }, "istanbul-reports": { @@ -2449,9 +2404,9 @@ } }, "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.4.tgz", + "integrity": "sha512-wTiNDqe4D2rbTJGZk1qcdZgFtY0/r+iuE6GDT7V0/+Gu5MLpIDm4+CssDECR79OJs/OxLPXMzdxy153b5Qy3hg==", "dev": true }, "mkdirp": { @@ -2461,6 +2416,14 @@ "dev": true, "requires": { "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } } }, "mocha": { @@ -3155,9 +3118,9 @@ } }, "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", "dev": true }, "safer-buffer": { diff --git a/package.json b/package.json index de556b8..f77dc3b 100644 --- a/package.json +++ b/package.json @@ -22,9 +22,9 @@ "@lorena-ssi/matrix-lib": "^1.0.7", "@lorena-ssi/zenroom-lib": "lorena-ssi/zenroom-lib#v1.3.3", "axios": "^0.19.2", - "chalk": "^3.0.0", "chalk-pipe": "^3.0.0", - "inquirer": "^7.0.4" + "debug": "^4.1.1", + "inquirer": "^7.1.0" }, "directories": { "example": "examples" diff --git a/src/index.js b/src/index.js index c4261d1..b692fc0 100644 --- a/src/index.js +++ b/src/index.js @@ -1,11 +1,14 @@ const Matrix = require('@lorena-ssi/matrix-lib') const Zen = require('@lorena-ssi/zenroom-lib') -const Logger = require('./logger') -const logger = new Logger() +const debug = require('debug')('lorena:cli') +const DEFAULT_SERVER = process.env.SERVER ? process.env.SERVER : 'https://matrix.caelumlabs.com' const { EventEmitter } = require('events') class Lorena extends EventEmitter { - constructor (serverPath = 'https://matrix.caelumlabs.com') { + constructor (serverPath, options = {}) { + if (typeof serverPath === 'object') options = serverPath + if (typeof serverPath !== 'string') serverPath = DEFAULT_SERVER + if (options.debug) debug.enabled = true super() this.matrixUser = '' this.matrixPass = '' @@ -39,7 +42,7 @@ class Lorena extends EventEmitter { const keyPair = await this.zenroom.z.newKeyPair(username) this.zenroom.keypair = keyPair[username].keypair } catch (error) { - logger.log(error) + debug('%O', error) this.emit('error', error) throw new Error('Could not create user') } @@ -55,7 +58,7 @@ class Lorena extends EventEmitter { this.matrixUser = client[0] this.matrixPass = client[1] this.did = client[2] - logger.key('Login matrix user', this.matrixUser) + debug('Login matrix user %o', this.matrixUser) try { await this.matrix.connect(this.matrixUser, this.matrixPass) @@ -70,7 +73,7 @@ class Lorena extends EventEmitter { this.loop() return true } catch (error) { - logger.log(error) + debug('%O', error) this.emit('error', error) throw error } diff --git a/src/logger.js b/src/logger.js deleted file mode 100644 index e8ba305..0000000 --- a/src/logger.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict' -const chalk = require('chalk') -const log = console.log - -const titleColor = '#FBEEC1' -const logColor = '#CCCCCC' -const keyColor = '#007711' -const errorColor = '#990000' - -/** - * Javascript Class to interact with the Console. - */ -module.exports = class Logger { - title (title, text) { - log('\n' + chalk.hex(titleColor).underline.bold(title) + '\n' + chalk.hex(titleColor)(text)) - } - - log (text) { - log(chalk.hex(logColor)(text)) - } - - key (title, key, value) { - log(chalk.hex(logColor)(title) + ' ' + chalk.hex(keyColor)(key))// + '\n' + chalk.hex(keyColor).bold(value)) - } - - error (text) { - log(chalk.hex(errorColor)(text)) - } - - debug (text) { - log(text) - } -} diff --git a/test/lorena-test.js b/test/lorena-test.js index ddb2da5..ad4d283 100644 --- a/test/lorena-test.js +++ b/test/lorena-test.js @@ -14,7 +14,31 @@ describe('Lorena API', function () { const username = 'username123456' const password = 'password' - it('should contruct a Lorena class', async () => { + it('should contruct a Lorena class with server', async () => { + lorena = new Lorena('server') + expect(lorena).to.have.keys([ + + 'matrix', + 'zenroom', + 'roomId', + 'nextBatch', + 'recipeId', + 'matrixUser', + 'matrixPass', + 'did', + // 'on', + // 'off', + // 'emit', + '_events', + '_eventsCount', + '_maxListeners', + 'processing', + 'queue', + 'ready' + ]) + }) + + it('should contruct a Lorena class without params', async () => { lorena = new Lorena() expect(lorena).to.have.keys([ @@ -38,6 +62,30 @@ describe('Lorena API', function () { ]) }) + it('should contruct a Lorena class with debug', async () => { + lorena = new Lorena({ debug: true }) + expect(lorena).to.have.keys([ + + 'matrix', + 'zenroom', + 'roomId', + 'nextBatch', + 'recipeId', + 'matrixUser', + 'matrixPass', + 'did', + // 'on', + // 'off', + // 'emit', + '_events', + '_eventsCount', + '_maxListeners', + 'processing', + 'queue', + 'ready' + ]) + }) + it('should create a new Lorena user', async () => { const a = await lorena.createUser(username, password) if (a) { @@ -63,7 +111,12 @@ describe('Lorena API', function () { expect(ready).to.have.been.called() }) - it('should receive pong', (done) => { + it('should have this private methods', () => { + expect(typeof lorena.processQueue).to.equal('function') + expect(typeof lorena.loop).to.equal('function') + }) + + it('should receive message:ping', (done) => { const pingAction = { recipe: 'ping', // Local name for your process recipeId: 0,