diff --git a/README.md b/README.md index 731dde7..a930444 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,343 @@ -# ducker -Simple debugging module that quacks instead of console logging. +

Welcome to Ducker Debug 🦆

+

+ Version + + Documentation + + + Maintenance + + + License: Apache-2.0 + +

+ +

Simple CLI tool to debug a Node.js based Aplication.

+ +### 🏠 [Homepage](https://github.com/a01334390/ducker#readme) + +## Installation + +```sh +npm i duckerdbg --save +``` + +## Usage +Ducker Debug can perform multiple debugging and utility functions. To use it in your application you just need to require it. +```js + const ducker = require('./index') +``` + +### quack() +Base function of this package, it logs a message to the console by either using a custom word or by leaving it empty, by printing the name of the calling function. + +#### Arguments + + +#### Use +```js + ducker.quack() + // 🦆 {Quack} > + + ducker.quack('wow',true,3) +// 🦆 {Quack} > wow +// ┌─────────┬────────────────────────────────────────┬──────────────────────┬────────┬──────┐ +// │ (index) │ fileName │ functionName │ column │ line │ +// ├─────────┼────────────────────────────────────────┼──────────────────────┼────────┼──────┤ +// │ 0 │ '/Users/xxxx/Projects/ducker/index.js' │ 'printStack' │ 32 │ 54 │ +// │ 1 │ '/Users/xxxx/Projects/ducker/index.js' │ 'Object.quack' │ 9 │ 43 │ +// │ 2 │ '/Users/xxxx/Projects/ducker/test.js' │ 'Object.' │ 8 │ 25 │ +// └─────────┴────────────────────────────────────────┴──────────────────────┴────────┴──────┘ +``` + +### check() +This method gives a detailed look at any object that is passed to it. + +#### Arguments + + +#### Use +```js + ducker.check(4) + /** + * This value is of type number + -> Its value is 4 + */ + + ducker.check([1,2,['wow',true,[{'a' : 2}]]]) + /* + This value is of type object + -> Array type + Arr[0] + This value is of type number + -> Its value is 1 + Arr[1] + This value is of type number + -> Its value is 2 + Arr[2] + This value is of type object + -> Array type + Arr[0] + This value is of type string + -> Its value is wow + Arr[1] + This value is of type boolean + -> Its value is true + Arr[2] + This value is of type object + -> Array type + Arr[0] + This value is of type object + ┌─────────┬─────┬───────┬──────────┐ + │ (index) │ Key │ Value │ Type │ + ├─────────┼─────┼───────┼──────────┤ + │ 0 │ 'a' │ 2 │ 'number' │ + └─────────┴─────┴───────┴──────────┘ + */ + +``` + +### go() and stop() +These methods are used to profile an application. All is needed from them is to be placed at any point between two blocks of code. + +#### Use +```js + ducker.go() + ducker.check([1,2,['wow',true,[{'a' : 2}]]]) + ducker.stop() + /* + ... + 🦆 {Quack}: 6.111ms + */ +``` + +### test() +This method allows you to make simple tests on sync or async code using an equality assertion. (Expected value is equal to Actual value) + +#### Arguments + + +#### Usage +```js + function sum (a,b) { + return a + b + } + + ducker.test(sum,[2,2],4) + /* + 🦆 {Quack} + Function name: sum + --Result + Function Result: 4 + Expected Result: 4 + Test successful! + */ + + ducker.test(sum,[2,2],2) + /* + 🦆 {Quack} + Function name: sum + --Result + Function Result: 4 + Expected Result: 2 + Test failed! + */ +``` + +### rename() +This method allows you to rename an object's keynames. You only need to pass down the method and an object specifying the new name of the keys. + +#### Arguments + + +#### Returns +A new object with the same values for the changed keynames. + +#### Usage +```js + const user = { 'name' : 'Johny', 'age': 23} + const changes = {'name': 'firstName'} + ducker.rename(user,changes) + // {'firstName' : 'Johny', 'age' : 23} +``` + +### xray() +This method allows you to analyze an object. Fit for the console.table() function to be better analyzed. + +#### Arguments + + +### Usage +```js + console.log(ducker.xray({ 'name' : 'Johny', 'age': 23})) + /* + [ { Key: 'name', Value: 'Johny', Type: 'string' }, + { Key: 'age', Value: 23, Type: 'number' } ] + */ + + console.table(ducker.xray({ 'name' : 'Johny', 'age': 23})) +/* +┌─────────┬────────┬─────────┬──────────┐ +│ (index) │ Key │ Value │ Type │ +├─────────┼────────┼─────────┼──────────┤ +│ 0 │ 'name' │ 'Johny' │ 'string' │ +│ 1 │ 'age' │ 23 │ 'number' │ +└─────────┴────────┴─────────┴──────────┘ +*/ +``` + +### random() +This method returns a random number. + +#### Arguments + + +#### Usage +```js + ducker.random() + // 8874205820570765 + + ducker.random(true,4,10) + // 5.868581947768592 +``` + +#### fake() +This method creates an object with fake data based on an user provided schema. + +#### Arguments +This method only retrieves a schema as an object and can recognize multiple data types such as: + + +#### Usage + +```js + ducker.fake({ + name: 'name', + email: 'email', + username: 'username', + email: 'email', + sentence: 'sentence', + paragraphs: 'paragraphs', + bloodT: 'blood', + color: 'color', + person : { + name : 'name', + age: 'age', + } +}) +/* +{ name: 'Beryl', + email: 'Beryl61_Upton@gmail.com', + username: 'Beryl61', + sentence: 'Aut voluptatum sit qui minus nam.', + paragraphs: + 'Dolores aut dolorum consequatur. Sunt praesentium quam voluptatibus harum voluptas. Aut debitis cupiditate a explicabo quae earum.\n \rSit aperiam assumenda veniam sit tenetur et ad odio odit. Quia at commodi odio voluptatum. Voluptatem est ratione. Nam repellendus dicta magni ipsam quasi ut nesciunt. Tempora consectetur cum ipsum consequatur inventore. Voluptas consequatur nulla dolorum est tempore excepturi.\n \rDolore et aut eos ut nisi aliquid qui aut. Voluptatem optio possimus sed deleniti consequatur qui odit. Corporis qui qui inventore saepe id doloremque. Repellat consectetur accusantium magnam repellendus praesentium. Assumenda dignissimos consequatur nemo exercitationem minima. Illo maxime enim placeat voluptas maxime ad voluptatibus doloremque hic.', + bloodT: { type: 'O', rh: '-' }, + color: 'lime', + person: { name: 'Dale', age: 48 } } + */ +``` + +#### stackoverflow() +This method takes an error message and creates an usable link to search for it on Stack Overflow. + +#### Arguments + + +#### Usage +```js + try { + JSON.parse({"foo": 1,}) + } catch(e){ + console.log(e) + ducker.stackoverflow(e) + } + /* + 🦆 {Quack} + Check on SO for Error > Unexpected token o in JSON at position 1 + http://stackoverflow.com/search?q=[js]+unexpected+token+o+in+json+at+position+1 + */ +``` + +### searchable() +This method takes a simple sentence and converts it into an usable string to search on a web browser. + +#### Arguments + + +#### Usage +```js + ducker.searchable('Another one biTEs tHe duST','youtube') + // https://www.youtube.com/results?search_query=another+one+bites+the+dust +``` + +## Author + +👤 **Fernando Martin Garcia Del Angel** + +* Github: [@a01334390](https://github.com/a01334390) + +## 🤝 Contributing + +Contributions, issues and feature requests are welcome!
Feel free to check [issues page](https://github.com/a01334390/ducker/issues). + +## Show your support + +Give a ⭐️ if this project helped you! + +## 📝 License + +Copyright © 2019 [Fernando Martin Garcia Del Angel](https://github.com/a01334390).
+This project is [Apache-2.0](https://github.com/a01334390/ducker/blob/master/LICENSE) licensed. + +*** +_This README was generated with ❤️ by [readme-md-generator](https://github.com/kefranabg/readme-md-generator)_ \ No newline at end of file diff --git a/index.js b/index.js index b49d8db..7aea64c 100644 --- a/index.js +++ b/index.js @@ -128,21 +128,21 @@ function stop(group = QUACK) { */ async function test(testable, args, expectedResult, debug = false, level = 3, detailed = false) { console.log(QUACK) - console.log('Function name: ' + testable.name) + console.log('Function name: ' + chalk.cyan(testable.name)) console.group('--Result') let result switch (testable.constructor.name) { case 'Function': result = testable(...args) - console.log('Function Result: ' + result) - console.log('Expected Result: ' + expectedResult) - console.log(result === expectedResult ? 'Test successful!' : 'Test failed!') + console.log('Function Result: ' + chalk.yellow(result)) + console.log('Expected Result: ' + chalk.yellow(expectedResult)) + console.log(result === expectedResult ? chalk.green('Test successful!') : chalk.red('Test failed!')) break case 'AsyncFunction': result = await testable(...args) - console.log('Function Result: ' + result) - console.log('Expected Result: ' + expectedResult) - console.log(result === expectedResult ? 'Test successful!' : 'Test failed!') + console.log('Function Result: ' + chalk.yellow(result)) + console.log('Expected Result: ' + chalk.yellow(expectedResult)) + console.log(result === expectedResult ? chalk.green('Test successful!') : chalk.red('Test failed!')) break default: console.log('dedault') @@ -251,7 +251,7 @@ function fake(schema) { fak[key] = fake(schema[key]) } else { switch (schema[key]) { - case 'age': + case 'age': case 'number' : fak[key] = random(false, 18, 100) break case 'job': diff --git a/test.js b/test.js index 8ddf1c9..86fd55c 100644 --- a/test.js +++ b/test.js @@ -15,28 +15,27 @@ async function mult (a,b) { // ducker.stackoverflow(e) // } -console.log(ducker.searchable('Amazing thing you got there baby','bing')) +console.log(ducker.searchable('Another one biTEs tHe duST','youtube')) // sum(1,2) // ducker.check([1,2,['wow',true,[{'a' : 2}]]]) // ducker.stackoverflow(new RangeError()) +// ducker.go() +// ducker.check([1,2,['wow',true,[{'a' : 2}]]]) +// ducker.stop() -// ducker.test(mult,[2,2],4,true) -// ducker.quack('',true,-1) +// console.table(ducker.xray({ 'name' : 'Johny', 'age': 23})) +// console.log(ducker.random(true,4,10)) +// ducker.fake({name: 'name'}) +// ducker.check(4) +// ducker.test(sum,[2,2],2) +// ducker.quack('wow',true,3) // console.log(ducker.random(false,5,6)) // console.log(ducker.fake({ // name: 'name', // email: 'email', // username: 'username', // email: 'email', -// address: 'address', -// phone: 'phone', -// website: 'website', -// birthday: 'dob', -// avatar: 'avatar', -// age: 'age', -// type: 'job', -// word: 'word', // sentence: 'sentence', // paragraphs: 'paragraphs', // bloodT: 'blood',