/* * Logger class for more detailed and comprehensible logs (with colors and timestamps) */ export enum Level { DATE = 36, LOG = 0, WARN = 93, ERROR = 31, DEBUG = 95, RESET = 0, } export default function logger( message: string | Error, level: (Level.LOG | Level.WARN | Level.ERROR | Level.DEBUG) = Level.LOG, ) { let m = message; if (message.constructor.name.includes('Error') && typeof message !== 'string') { m = (message).message; } process.stdout.write(`\x1b[${Level.DATE}m[${(new Date()).toLocaleString()}]\x1b[0m `); process.stdout.write(`\x1b[${level}m`); if (level === Level.ERROR || level === Level.WARN) { process.stderr.write(m); } else { process.stdout.write(m); } process.stdout.write(`\x1b[${Level.RESET}m\n`); }