logger.js

/**
 * @class Logger
 * @arg {DiddleEngine} diddle
 * @arg {string} prefix Log Prefix. Defaults to <code>diddle.js</code>
 */
class Logger {
	constructor(diddle,prefix) { 
		this.diddle = diddle; 
		this.prefix = prefix || "org.js.diddle";
	}

	color = {
		Reset: "\x1b[0m",
		Bright: "\x1b[1m",
		Dim: "\x1b[2m",
		Underscore: "\x1b[4m",
		Blink: "\x1b[5m",
		Reverse: "\x1b[7m",
		Hidden: "\x1b[8m",

		FgBlack: "\x1b[30m",
		FgRed: "\x1b[31m",
		FgGreen: "\x1b[32m",
		FgYellow: "\x1b[33m",
		FgBlue: "\x1b[34m",
		FgMagenta: "\x1b[35m",
		FgCyan: "\x1b[36m",
		FgWhite: "\x1b[37m",

		BgBlack: "\x1b[40m",
		BgRed: "\x1b[41m",
		BgGreen: "\x1b[42m",
		BgYellow: "\x1b[43m",
		BgBlue: "\x1b[44m",
		BgMagenta: "\x1b[45m",
		BgCyan: "\x1b[46m",
		BgWhite: "\x1b[47m",
	}

	/**
	 * Will only print if debug mode is enabled.
	 * @param  {...any} c Content to print
	 */
	debug(...c) {
		if (!this.diddle.debug) return;
		console.log(`${this.color.BgBlack}${this.color.FgMagenta}${this.prefix}:${this.color.Reset} ${c.join(' ')}`);
	}
	/**
	 * @param  {...any} c Content to Print
	 */
	info(...c) {
		console.log(`${this.color.BgBlack}${this.color.FgBlue}${this.prefix}:${this.color.Reset} ${c.join(' ')}`);
	}
	/**
	 * @param  {...any} c Content to Print
	 */
	warn(...c) {
		console.log(`${this.color.BgBlack}${this.color.FgYellow}${this.prefix}:${this.color.Reset} ${c.join(' ')}`);
	}
	/**
	 * @param  {...any} c Content to Print
	 */
	error(...c) {
		console.log(`${this.color.BgBlack}${this.color.FgRed}${this.prefix}:${this.color.Reset} ${c.join(' ')}`);
	}
}
module.exports = Logger;