import color from "colors"; const logType = { LOG: 0, DEBUG: 1, WARN: 2, ERR: 3, }; class Logger { constructor() {} print(header: string, message: string, type: number) { const content = `[${this._timestamp}] - [${header}] -- ${message}`; switch (type) { case logType.LOG: console.log(content); break; case logType.DEBUG: console.debug(content); break; case logType.WARN: console.warn(content); break; case logType.ERR: console.error(content); break; } } log = (...message: any[]) => this.print("LOG", `${message}`, logType.LOG); err = (...message: any[]) => this.print("ERR", `${message}`, logType.ERR); warn = (...message: any[]) => this.print("WARN", `${message}`, logType.WARN); debug = (...message: any[]) => this.print("DEBUG", `${message}`, logType.DEBUG); success = (...message: any[]) => this.print("SUCCESS".green, `${message}`, logType.LOG); get = (url: string, state: string, ...message: string[]) => this.print("GET".green, `[${state} - ${url}]: ${message}`, logType.LOG); post = (url: string, state: string, ...message: string[]) => this.print("POST".blue, `[${state} - ${url}]: ${message}`, logType.LOG); put = (url: string, state: string, ...message: string[]) => this.print("PUT".yellow, `[${state} - ${url}]: ${message}`, logType.LOG); del = (url: string, state: string, ...message: string[]) => this.print("DEL".red, `[${state} - ${url}]: ${message}`, logType.LOG); get _timestamp() { return new Date().toLocaleString("en-GB", { hour12: false }); } } const logger = new Logger(); export default logger;