Compare commits

..

No commits in common. "main" and "v2023.02.05" have entirely different histories.

10 changed files with 168 additions and 264 deletions

View file

@ -1,40 +0,0 @@
{
"extends": "eslint:recommended",
"env": {
"node": true,
"es6": true
},
"parserOptions": {
"ecmaVersion": 2021
},
"rules": {
"arrow-spacing": ["warn", { "before": true, "after": true }],
"brace-style": "off",
"comma-dangle": ["error", "always-multiline"],
"comma-spacing": "error",
"comma-style": "error",
"curly": ["error", "multi-line", "consistent"],
"dot-location": ["error", "property"],
"handle-callback-err": "off",
"indent": ["error", "tab"],
"keyword-spacing": "error",
"max-nested-callbacks": ["error", { "max": 4 }],
"max-statements-per-line": ["error", { "max": 2 }],
"no-console": "off",
"no-unused-vars": "off",
"no-floating-decimal": "error",
"no-inline-comments": "error",
"no-multi-spaces": "error",
"no-multiple-empty-lines": ["error", { "max": 2, "maxEOF": 1, "maxBOF": 0 }],
"no-shadow": ["error", { "allow": ["err", "resolve", "reject"] }],
"object-curly-spacing": ["error", "always"],
"quotes": ["error", "single"],
"semi": ["error", "always"],
"space-before-blocks": "error",
"space-infix-ops": "error",
"space-unary-ops": "error",
"spaced-comment": "error",
"yoda": "error",
"no-extra-boolean-cast": "off"
}
}

22
.github/workflows/npm-publish.yml vendored Normal file
View file

@ -0,0 +1,22 @@
name: Publish to NPM
on:
release:
types: [created]
jobs:
Publish-NPM:
runs-on: node1
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Node
uses: actions/setup-node@v2
with:
node-version: '16.x'
registry-url: 'https://registry.npmjs.org'
scope: '@thundernetworkrad'
- name: Publish package on NPM 📦
run: npm publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
REGISTRY1: 'registry.npmjs.org'
REGISTRY2: 'registry=https://registry.npmjs.org/'

2
.gitignore vendored
View file

@ -107,5 +107,3 @@ dist
build
package-lock.json
package-lock.json
package-lock.json

2
.npmrc Normal file
View file

@ -0,0 +1,2 @@
//${REGISTRY1}/:_authToken=${NODE_AUTH_TOKEN}
${REGISTRY2}

View file

@ -1,31 +0,0 @@
# Changelogs
Here are the changelogs since the first package version.
## 2023.09.03
- Cleaned up some files
## 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 (also added Troubleshooting section)
- Repository moved to [Thunder Network Source](https://source.thundernetwork.org/ThunderNetworkRaD/node-cout)
- Fixed `tsc` build script in `package.json`
## 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"

94
package-lock.json generated Normal file
View file

@ -0,0 +1,94 @@
{
"name": "node-cout",
"version": "2023.02.03",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "node-cout",
"version": "2023.02.03",
"hasInstallScript": true,
"license": "Mozilla Public License 2.0",
"dependencies": {
"@thundernetworkrad/logs": "^2023.2.5",
"@thundernetworkrad/time": "^2023.2.5",
"@types/node": "^18.11.18",
"tslib": "^2.5.0",
"typescript": "^4.9.4"
}
},
"node_modules/@thundernetworkrad/logs": {
"version": "2023.2.5",
"resolved": "https://registry.npmjs.org/@thundernetworkrad/logs/-/logs-2023.2.5.tgz",
"integrity": "sha512-LsNYvpW4/Piv8UCVJf0tz5I81Gn8YWMB5VT5EG1rua816TfXafXrFxU6coc4SHHxK6putRfvtFjQqZwe4TtwYg==",
"hasInstallScript": true,
"dependencies": {
"@thundernetworkrad/time": "^2023.2.5",
"@types/node": "^18.11.18",
"tslib": "^2.5.0",
"typescript": "^4.9.4"
}
},
"node_modules/@thundernetworkrad/time": {
"version": "2023.2.5",
"resolved": "https://registry.npmjs.org/@thundernetworkrad/time/-/time-2023.2.5.tgz",
"integrity": "sha512-BKU7/ZjK3xQw/gBMj+mUbJt37FikQD7ov6Y19Y1ouEF/tnPeAEkXQtA7DrD741RPcemPRvz4a3UQ1uxheGrKsw==",
"hasInstallScript": true
},
"node_modules/@types/node": {
"version": "18.11.18",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
"integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA=="
},
"node_modules/tslib": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
"integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
},
"node_modules/typescript": {
"version": "4.9.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
"integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
"node": ">=4.2.0"
}
}
},
"dependencies": {
"@thundernetworkrad/logs": {
"version": "2023.2.5",
"resolved": "https://registry.npmjs.org/@thundernetworkrad/logs/-/logs-2023.2.5.tgz",
"integrity": "sha512-LsNYvpW4/Piv8UCVJf0tz5I81Gn8YWMB5VT5EG1rua816TfXafXrFxU6coc4SHHxK6putRfvtFjQqZwe4TtwYg==",
"requires": {
"@thundernetworkrad/time": "^2023.2.5",
"@types/node": "^18.11.18",
"tslib": "^2.5.0",
"typescript": "^4.9.4"
}
},
"@thundernetworkrad/time": {
"version": "2023.2.5",
"resolved": "https://registry.npmjs.org/@thundernetworkrad/time/-/time-2023.2.5.tgz",
"integrity": "sha512-BKU7/ZjK3xQw/gBMj+mUbJt37FikQD7ov6Y19Y1ouEF/tnPeAEkXQtA7DrD741RPcemPRvz4a3UQ1uxheGrKsw=="
},
"@types/node": {
"version": "18.11.18",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
"integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA=="
},
"tslib": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
"integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
},
"typescript": {
"version": "4.9.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
"integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g=="
}
}
}

View file

@ -1,17 +1,15 @@
{
"name": "node-cout",
"version": "2023.09.03",
"version": "2023.02.05",
"description": "Standard output module for JavaScript / TypeScript",
"main": "build/index.js",
"types": "build/index.d.ts",
"type": "module",
"scripts": {
"install": "npm run build",
"build": "tsc"
"install": "tsc"
},
"repository": {
"type": "git",
"url": "git+https://source.thundernetwork.org/ThunderNetworkRaD/node-cout.git"
"url": "git+https://github.com/ThunderNetworkRaD/node-cout.git"
},
"keywords": [
"std",
@ -23,20 +21,18 @@
"typescript",
"input",
"cout",
"await",
"log"
"await"
],
"author": "Thunder Network RaD | Killer Boss Original, Mambuco",
"author": "Thunder Network RaD | Killer Boss Original",
"license": "Mozilla Public License 2.0",
"bugs": {
"url": "https://source.thundernetwork.org/ThunderNetworkRaD/node-cout/issues"
"url": "https://github.com/ThunderNetworkRaD/node-cout/issues"
},
"homepage": "https://source.thundernetwork.org/ThunderNetworkRaD/node-cout#readme",
"homepage": "https://github.com/ThunderNetworkRaD/node-cout#readme",
"dependencies": {
"@thundernetworkrad/logs": "^2023.2.5-1",
"@thundernetworkrad/time": "^2023.2.5-2",
"@thundernetworkrad/logs": "^2023.2.5",
"@thundernetworkrad/time": "^2023.2.5",
"@types/node": "^18.11.18",
"chalk": "^5.2.0",
"tslib": "^2.5.0",
"typescript": "^4.9.4"
}

View file

@ -1,73 +1,15 @@
# node-cout
# COUT
This package allows you to use `cout` and debug levels in Node.js.
This module allow you to make COUT and Debugs in NodeJS
## Installation
Run this in your project folder:
```bash
npm install node-cout
```
## Usage
Learn how to use `node-cout` here:
### Import
Readme work in progress
```js
import cc from 'node-cout';
import { createCout } from '@thundernetworkrad/std';
const cout = new cc(1, { save: true, emoji: true, types: ['loading', 'uploading'] });
```
> You're using CommonJS and can use `require()` instead of `import`? Go on [troubleshooting](#troubleshooting).
> Parameters:
> ```
> debugLevel: number
> options?: {
> save?: boolean
> emoji?: boolean
> types?: string[]
> }
> ```
### Logging
```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.
# Troubleshooting
Unfortunately, this is not supported anymore:
```js
const cc = require('node-cout');
```
If you want to `import` the package in your CommonJS project, add this to your `package.json` file:
```json
{
"type": "module"
}
let ccout = new createCout(0, true); // debugLevel, logs enabled (file) (like using log() )
let cout = ccout.cout;
cout('test', 0) // console.log day, time and the string, if the number is >= to the debugLevel
```

View file

@ -1,115 +1,36 @@
import { getTime } from "@thundernetworkrad/time";
import { log } from "@thundernetworkrad/logs";
import chalk from "chalk";
let debug: number, logs1: boolean|undefined|null;
import { getTime } from '@thundernetworkrad/time';
import { log } from '@thundernetworkrad/logs';
export default class cout {
private debugLevel: number
private save: boolean
private emoji: boolean
private types: string[]
export class createCout {
/**
* @constructor
* @param debugLevel from what debug level you want to log?
* @param logs do you want files log?
*/
constructor (debugLevel: number, logs?: boolean) {
if (!debugLevel) debugLevel = 0;
if (!logs) logs = false;
debug = debugLevel;
logs1 = logs;
}
/**
*
* @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 || [];
}
/**
*
* @param string what to log?
* @param debugLevel from what debug level this will logged?
* @returns
*/
cout (string: string, debugLevel?: number) {
if (!debugLevel) debugLevel = 0;
var time = getTime();
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 += " ";
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.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}`);
})
}
private checkTypes(types: string | string[]) {
if (!Array.isArray(types)) types = [types];
return types.some((type) => this.types.includes(type));
}
debug(string: any, level: number, types?: string | string[]) {
if ((level || 0) <= this.debugLevel) {
if (types && !this.checkTypes(types)) return;
this.l(String(string), "DEBUG");
}
}
log(string: any, types?: string | string[]) {
if (types && !this.checkTypes(types)) return;
this.l(String(string), "LOG");
}
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");
}
if (debug >= debugLevel) {
console.log(`[${time.year}.${time.month}.${time.day}-${time.hours}:${time.minutes}:${time.seconds}] | ${String(string)}`);
if (logs1) {
log(`[${time.year}.${time.month}.${time.day}-${time.hours}:${time.minutes}:${time.seconds}] | ${String(string)}`);
}
}
return;
};
}

View file

@ -25,7 +25,7 @@
// "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */
/* Modules */
"module": "ESNext", /* Specify what module code is generated. */
"module": "CommonJS", /* Specify what module code is generated. */
"rootDir": "./src/", /* Specify the root folder within your source files. */
"moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */
// "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */