/* Logger class for easy and aesthetically pleasing console logging */ const { bgBlue, black, green } = require("chalk"); function dateTimePad(value, digits) { let number = value; while (number.toString().length < digits) number = "0" + number; return number; }; function format(tDate) { return (tDate.getFullYear() + "-" + dateTimePad((tDate.getMonth() + 1), 2) + "-" + dateTimePad(tDate.getDate(), 2) + " " + dateTimePad(tDate.getHours(), 2) + ":" + dateTimePad(tDate.getMinutes(), 2) + ":" + dateTimePad(tDate.getSeconds(), 2) + "." + dateTimePad(tDate.getMilliseconds(), 3)); }; module.exports = class Logger { static log (content, type = "log") { const date = `[${format(new Date(Date.now()))}]:`; switch (type) { // Check the message type and then print him in the console case "log": { return console.log(`${date} ${bgBlue(type.toUpperCase())} ${content} `); }; case "warn": { return console.log(`${date} ${black.bgYellow(type.toUpperCase())} ${content} `); }; case "error": { return console.log(`${date} ${black.bgRed(type.toUpperCase())} ${content} `); }; case "debug": { return console.log(`${date} ${green(type.toUpperCase())} ${content} `); }; case "cmd": { return console.log(`${date} ${black.bgWhite(type.toUpperCase())} ${content}`); }; case "ready": { return console.log(`${date} ${black.bgGreen(type.toUpperCase())} ${content}`); }; default: throw new TypeError("Logger type must be either warn, debug, log, ready, cmd or error."); }; } };