Cleanup and new features
Cleaned up some code, and added the types property to the constructor and log methods. Added a private checkTypes method to the class. Migrated changelogs to CHANGELOGS.md. Re-styled README.md. All changelogs inside their proper file.
This commit is contained in:
parent
230b7062f2
commit
d7ecab02bd
4 changed files with 178 additions and 113 deletions
26
CHANGELOGS.md
Normal file
26
CHANGELOGS.md
Normal file
|
@ -0,0 +1,26 @@
|
|||
# Changelogs
|
||||
|
||||
Here are the changelogs since the first package version.
|
||||
|
||||
## 2023.09.02
|
||||
|
||||
- Migrated to CHANGELOGS.md
|
||||
- Now debugLevel is required and no more optional
|
||||
- Added types, to choose which debug message should be logged or not
|
||||
- Cleaned up some code
|
||||
- Restyled README.md
|
||||
- Repository moved to [Thunder Network Source](https://source.thundernetwork.org/ThunderNetworkRaD/node-cout)
|
||||
|
||||
## 2023.07.08-2
|
||||
|
||||
- Fix emoji for Debug
|
||||
|
||||
## 2023.07.08-1
|
||||
|
||||
- Fix info Emoji
|
||||
|
||||
## 2023.07.08
|
||||
|
||||
- Exported the main class as default
|
||||
- Add Stringify to all functions
|
||||
- Changed the string type in the function to "any"
|
11
package.json
11
package.json
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "node-cout",
|
||||
"version": "2023.07.08-2",
|
||||
"version": "2023.09.02",
|
||||
"description": "Standard output module for JavaScript / TypeScript",
|
||||
"main": "build/index.js",
|
||||
"types": "build/index.d.ts",
|
||||
|
@ -10,7 +10,7 @@
|
|||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/ThunderNetworkRaD/node-cout.git"
|
||||
"url": "git+https://source.thundernetwork.org/ThunderNetworkRaD/node-cout.git"
|
||||
},
|
||||
"keywords": [
|
||||
"std",
|
||||
|
@ -22,14 +22,15 @@
|
|||
"typescript",
|
||||
"input",
|
||||
"cout",
|
||||
"await"
|
||||
"await",
|
||||
"log"
|
||||
],
|
||||
"author": "Thunder Network RaD | Killer Boss Original",
|
||||
"license": "Mozilla Public License 2.0",
|
||||
"bugs": {
|
||||
"url": "https://github.com/ThunderNetworkRaD/node-cout/issues"
|
||||
"url": "https://source.thundernetwork.org/ThunderNetworkRaD/node-cout/issues"
|
||||
},
|
||||
"homepage": "https://github.com/ThunderNetworkRaD/node-cout#readme",
|
||||
"homepage": "https://source.thundernetwork.org/ThunderNetworkRaD/node-cout#readme",
|
||||
"dependencies": {
|
||||
"@thundernetworkrad/logs": "^2023.2.5-1",
|
||||
"@thundernetworkrad/time": "^2023.2.5-2",
|
||||
|
|
68
readme.md
68
readme.md
|
@ -1,35 +1,57 @@
|
|||
# COUT
|
||||
|
||||
This module allow you to make COUT and Debugs in NodeJS
|
||||
This package allows you to use `cout` and debug levels in Node.js.
|
||||
|
||||
## MJS or TypeScript
|
||||
```js
|
||||
import cc from 'node-cout';
|
||||
## Installation
|
||||
|
||||
const cout = new cc(0, true, true); // debugLevel, logs enabled (file), emojis enabled
|
||||
Run this in your project folder:
|
||||
|
||||
cout.debug('test', 0) // console.log time and the string, if the number is >= to the debugLevel
|
||||
cout.log('test')
|
||||
cout.error('test')
|
||||
cout.warn('test')
|
||||
cout.info('test')
|
||||
```bash
|
||||
npm install node-cout
|
||||
```
|
||||
|
||||
## CJS
|
||||
use `await import("")`
|
||||
## Usage
|
||||
|
||||
Learn how to use `node-cout` here:
|
||||
|
||||
### Import
|
||||
|
||||
```js
|
||||
const { default } = await import('node-cout'); // ti put in an async function
|
||||
const cout = new default(); // from here equal to MJS example
|
||||
const cc = require('node-cout'); // CommonJS
|
||||
|
||||
import cc from 'node-cout'; // MJS or TypeScript
|
||||
|
||||
const cout = new cc(1, { save: true, emoji: true, types: ['loading', 'uploading'] });
|
||||
```
|
||||
|
||||
## Changelogs
|
||||
### 2023.07.08-2
|
||||
- Fix emoji for Debug
|
||||
> Parameters:
|
||||
> ```
|
||||
> debugLevel: number
|
||||
> options?: {
|
||||
> save?: boolean
|
||||
> emoji?: boolean
|
||||
> types?: string[]
|
||||
> }
|
||||
> ```
|
||||
|
||||
### 2023.07.08-1
|
||||
- Fix info Emoji
|
||||
### Logging
|
||||
|
||||
### v2023.07.08
|
||||
- Exported the main class as default
|
||||
- Add Stringify to all functions
|
||||
- Changed the string type in the function to "any"
|
||||
```js
|
||||
cout.debug('Hello World', 1); // Sends a debug log (1 is debug level, if its higher than the one defined in the constructor, its not going to be logged.)
|
||||
|
||||
cout.info('Hello World'); // Sends an info log
|
||||
|
||||
cout.warn('Hello World'); // Sends a warning log
|
||||
|
||||
cout.error('Hello World'); // Sends an error log
|
||||
|
||||
cout.log('Hello World'); // Sends a normal log
|
||||
```
|
||||
|
||||
If you want to use the `types` option, you can do it like this:
|
||||
|
||||
```js
|
||||
cout.debug('Hello World', 1, types);
|
||||
```
|
||||
|
||||
`types` can either be a string or an array of strings, and if one of them matches with one of the types defined in the constructor, the log is going to be logged.
|
184
src/index.ts
184
src/index.ts
|
@ -1,99 +1,115 @@
|
|||
import { getTime } from '@thundernetworkrad/time';
|
||||
import { log } from '@thundernetworkrad/logs';
|
||||
import { getTime } from "@thundernetworkrad/time";
|
||||
import { log } from "@thundernetworkrad/logs";
|
||||
import chalk from "chalk";
|
||||
|
||||
export default class cout {
|
||||
private debugLevel: number
|
||||
private file: boolean
|
||||
private emoji: boolean
|
||||
private debugLevel: number
|
||||
private save: boolean
|
||||
private emoji: boolean
|
||||
private types: string[]
|
||||
|
||||
/**
|
||||
*
|
||||
* @param debugLevel The debug level of the logging
|
||||
* @param file Do you want put the logs in a file?
|
||||
* @param emoji Do you want put the logs in an emoji?
|
||||
*/
|
||||
constructor(debugLevel?: number, file?: boolean, emoji?: boolean) {
|
||||
this.debugLevel = debugLevel || 0;
|
||||
this.file = file || false;
|
||||
this.emoji = emoji || false;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param debugLevel The maximum debug level preferred
|
||||
* @param options.save Whetever logs are saved in a file or not
|
||||
* @param options.emoji If logs are followed by an emoji
|
||||
* @param options.types Types of logs that are allowed to appear
|
||||
*
|
||||
*/
|
||||
constructor(debugLevel: number, options?: { save?: boolean, emoji?: boolean, types?: string[] }) {
|
||||
const { save, emoji, types } = options || {};
|
||||
this.debugLevel = debugLevel || 0;
|
||||
this.save = save || false;
|
||||
this.emoji = emoji || false;
|
||||
this.types = types || [];
|
||||
}
|
||||
|
||||
private l(string: string, type: string) {
|
||||
let time = `${getTime().hours}:${getTime().minutes}:${getTime().seconds}`;
|
||||
type = type.toUpperCase();
|
||||
private l(string: string, type: string) {
|
||||
let time = `${getTime().hours}:${getTime().minutes}:${getTime().seconds}`;
|
||||
type = type.toUpperCase();
|
||||
|
||||
if (getTime().hours < 10) time += " ";
|
||||
if (getTime().minutes < 10) time += " ";
|
||||
if (getTime().seconds < 10) time += " ";
|
||||
if (getTime().hours < 10) time += " ";
|
||||
if (getTime().minutes < 10) time += " ";
|
||||
if (getTime().seconds < 10) time += " ";
|
||||
|
||||
let timec = chalk.blue(time), stringc: string = " ", typec: string, emoji: string, emojic: string;
|
||||
let timec = chalk.blue(time), stringc: string = " ", typec: string, emoji: string, emojic: string;
|
||||
|
||||
switch (type) {
|
||||
case "DEBUG":
|
||||
stringc = chalk.grey(string);
|
||||
typec = chalk.grey(type);
|
||||
emoji = "📝";
|
||||
emojic = "📝 ";
|
||||
break;
|
||||
case "LOG":
|
||||
stringc = chalk.white(string);
|
||||
type = " " + type;
|
||||
typec = chalk.white(type);
|
||||
emoji = "🪵";
|
||||
emojic = "🪵 ";
|
||||
break;
|
||||
case "INFO":
|
||||
stringc = chalk.cyan(string);
|
||||
type = " " + type;
|
||||
typec = chalk.cyan(type);
|
||||
emoji = "ℹ️ ";
|
||||
emojic = "ℹ️ ";
|
||||
break;
|
||||
case "WARN":
|
||||
stringc = chalk.yellow(string);
|
||||
type = " " + type;
|
||||
typec = chalk.yellow(type);
|
||||
emoji = "⚠️";
|
||||
emojic = "⚠️ ";
|
||||
break;
|
||||
case "ERROR":
|
||||
stringc = chalk.red(string);
|
||||
typec = chalk.red(type);
|
||||
emoji = "❌";
|
||||
emojic = "❌ ";
|
||||
break;
|
||||
}
|
||||
if (this.file) {
|
||||
string.split("\n").forEach((line) => {
|
||||
log(`${this.emoji ? emoji : ""}[${time} ${type}] | ${line}`);
|
||||
})
|
||||
}
|
||||
switch (type) {
|
||||
case "DEBUG":
|
||||
stringc = chalk.grey(string);
|
||||
typec = chalk.grey(type);
|
||||
emoji = "📝";
|
||||
emojic = "📝 ";
|
||||
break;
|
||||
case "LOG":
|
||||
stringc = chalk.white(string);
|
||||
type = " " + type;
|
||||
typec = chalk.white(type);
|
||||
emoji = "🪵";
|
||||
emojic = "🪵 ";
|
||||
break;
|
||||
case "INFO":
|
||||
stringc = chalk.cyan(string);
|
||||
type = " " + type;
|
||||
typec = chalk.cyan(type);
|
||||
emoji = "ℹ️ ";
|
||||
emojic = "ℹ️ ";
|
||||
break;
|
||||
case "WARN":
|
||||
stringc = chalk.yellow(string);
|
||||
type = " " + type;
|
||||
typec = chalk.yellow(type);
|
||||
emoji = "⚠️";
|
||||
emojic = "⚠️ ";
|
||||
break;
|
||||
case "ERROR":
|
||||
stringc = chalk.red(string);
|
||||
typec = chalk.red(type);
|
||||
emoji = "❌";
|
||||
emojic = "❌ ";
|
||||
break;
|
||||
}
|
||||
if (this.save) {
|
||||
string.split("\n").forEach((line) => {
|
||||
log(`${this.emoji ? emoji : ""}[${time} ${type}] | ${line}`);
|
||||
})
|
||||
}
|
||||
|
||||
stringc.split("\n").forEach((line) => {
|
||||
console.log(`${this.emoji ? emojic : ""}[${timec} ${typec}] | ${line}`);
|
||||
})
|
||||
}
|
||||
stringc.split("\n").forEach((line) => {
|
||||
console.log(`${this.emoji ? emojic : ""}[${timec} ${typec}] | ${line}`);
|
||||
})
|
||||
}
|
||||
|
||||
debug(string: any, level?: number) {
|
||||
if (this.debugLevel >= (level || 0)) {
|
||||
this.l(String(string), "DEBUG")
|
||||
}
|
||||
}
|
||||
private checkTypes(types: string | string[]) {
|
||||
if (!Array.isArray(types)) types = [types];
|
||||
return types.some((type) => this.types.includes(type));
|
||||
|
||||
log(string: any) {
|
||||
this.l(String(string), "LOG");
|
||||
}
|
||||
}
|
||||
|
||||
info(string: any) {
|
||||
this.l(String(string), "INFO");
|
||||
}
|
||||
debug(string: any, level: number, types?: string | string[]) {
|
||||
if ((level || 0) <= this.debugLevel) {
|
||||
if (types && !this.checkTypes(types)) return;
|
||||
this.l(String(string), "DEBUG");
|
||||
}
|
||||
}
|
||||
|
||||
warn(string: any) {
|
||||
this.l(String(string), "WARN");
|
||||
}
|
||||
log(string: any, types?: string | string[]) {
|
||||
if (types && !this.checkTypes(types)) return;
|
||||
this.l(String(string), "LOG");
|
||||
}
|
||||
|
||||
error(string: any) {
|
||||
this.l(String(string), "ERROR");
|
||||
}
|
||||
info(string: any, types?: string | string[]) {
|
||||
if (types && !this.checkTypes(types)) return;
|
||||
this.l(String(string), "INFO");
|
||||
}
|
||||
|
||||
warn(string: any, types?: string | string[]) {
|
||||
if (types && !this.checkTypes(types)) return;
|
||||
this.l(String(string), "WARN");
|
||||
}
|
||||
|
||||
error(string: any, types?: string | string[]) {
|
||||
if (types && !this.checkTypes(types)) return;
|
||||
this.l(String(string), "ERROR");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue