From 354e07817d00ebd6e0ce689b762062fb6d118e35 Mon Sep 17 00:00:00 2001 From: zombieb Date: Wed, 13 Nov 2024 20:24:24 -0500 Subject: [PATCH] add documentation, fix package meta, bump the minor version, why not - yolo --- README.md | 32 ++++++++++++++++++++++++++++++++ deno.json | 2 +- mod.ts | 39 ++++++++++++++++++++++++++++++++++----- 3 files changed, 67 insertions(+), 6 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..c799490 --- /dev/null +++ b/README.md @@ -0,0 +1,32 @@ +# Undead Logging +Logging for stupid idiots like me + +```ts +import Logging from "@proxnet/undead-logging" + +const log = new Logging("Main"); + +log.i("Hello World!"); +``` + +Disable a source: +```ts +// .. logging source is in the scope +log.visible = false; + +log.debug("I can't be seen!"); +// no output +``` + +Change a source's name: +```ts +// .. logging source "Main" is in the scope + +log.n("Network is networking"); +log.source = "Main2"; +log.n("Something happened"); + +// output: +// 2024-11-14T01:21:40.350Z Main [NETWORK] Network is networking +// 2024-11-14T01:21:40.350Z Main2 [NETWORK] Something happened +``` \ No newline at end of file diff --git a/deno.json b/deno.json index 8d2ea91..1c7a30c 100644 --- a/deno.json +++ b/deno.json @@ -4,7 +4,7 @@ "chalk": "npm:chalk@^5.3.0" }, "exports": "./mod.ts", - "version": "1.0.0", + "version": "1.1.0", "name": "@proxnet/undead-logging", "license": "MIT" } diff --git a/mod.ts b/mod.ts index e3b9031..a129cb8 100644 --- a/mod.ts +++ b/mod.ts @@ -1,13 +1,24 @@ import chalk from "chalk"; +/** + * A source for pretty and cool and fun logging + */ class Logging { + /** Can I be seen by the console? */ visible: boolean + /** What is my name? */ source: string /** - * @param {string} source Module identifier. Used in every line to identify the module that sent the message. - * @param {boolean} silent Set to false to log a message when the logger instantiates. Useful for debugging. + * Create a logging source + * ```ts + * const log = new Logging("Main"); + * + * log.i("Hello World!"); + * ``` + * @param source Module identifier. Used in every line to identify the module that sent the message. + * @param silent Set to false to log a message when the logger instantiates. Useful for debugging. * @returns A source for logging messages to the console. Functions for info, warnings, errors, debug statements, and network events are provided and have shorthands. */ constructor(source: string, silent?: boolean) { @@ -16,6 +27,11 @@ class Logging { if (typeof silent == 'boolean' && !silent) this.info(`Instantiated module logging`); } + /** + * + * @param type The kind of message to log + * @param msgs Your message(s) + */ log(type: MessageType, ...msgs: string[]) { if (type == MessageType.Info) this.i(...msgs); if (type == MessageType.Warn) this.w(...msgs); @@ -24,31 +40,41 @@ class Logging { if (type == MessageType.Network) this.n(...msgs); } + /** Logging Function */ i(...msgs: string[]) {this.info(...msgs);} + /** Logging Function */ info(...msgs: string[]) { if (this.visible !== true) return; console.log(chalk.gray(`${new Date().toISOString()} `) + chalk.bgWhite.black(`${this.source} [INFO]`) + chalk.whiteBright(' ' + msgs.join(' '))); } - + + /** Logging Function */ w(...msgs: string[]) {this.warn(...msgs);} + /** Logging Function */ warn(...msgs: string[]) { if (this.visible !== true) return; console.warn(chalk.gray(`${new Date().toISOString()} `) + chalk.bgYellow.black(`${this.source} [WARN]`) + chalk.yellowBright(' ' + msgs.join(' '))); } + /** Logging Function */ e(...msgs: string[]) {this.error(...msgs);} + /** Logging Function */ error(...msgs: string[]) { if (this.visible !== true) return; console.error(chalk.gray(`${new Date().toISOString()} `) + chalk.bgRed.black(`${this.source} [ERROR]`) + chalk.redBright(' ' + msgs.join(' '))); } - + + /** Logging Function */ d(...msgs: string[]) {this.debug(...msgs);} + /** Logging Function */ debug(...msgs: string[]) { if (this.visible !== true) return; console.debug(chalk.gray(`${new Date().toISOString()} `) + chalk.bgGreen.black(`${this.source} [DEBUG]`) + chalk.greenBright(' ' + msgs.join(' '))); } - + + /** Logging Function */ n(...msgs: string[]) {this.network(...msgs);} + /** Logging Function */ network(...msgs: string[]) { if (this.visible !== true) return; console.log(chalk.gray(`${new Date().toISOString()} `) + chalk.bgCyan.black(`${this.source} [NETWORK]`) + chalk.cyanBright(' ' + msgs.join(' '))); @@ -56,6 +82,9 @@ class Logging { } +/** + * Useful for conditional logging in the `log` function. + */ enum MessageType { Info, Warn,