diff --git a/src/utils/Logger.ts b/src/utils/Logger.ts index 4ef4693..6dc87b2 100644 --- a/src/utils/Logger.ts +++ b/src/utils/Logger.ts @@ -1,21 +1,63 @@ -import { colorCustom as c } from "./Functions/colors.js" +import chalk from "chalk" import { logTimeFormatter } from "./Functions/intlFormaters.js" +const colors = { + red: "#f38ba8", + lavender: "#b4befe", + green: "#a6e3a1", + pink: "#f5c2e7" +} + +type Colors = keyof typeof colors + const AllLogs = { info: { m: "INFO", c: null }, error: { m: "ERROR", c: "#ff6666" }, warn: { m: "WARN", c: "#ffcc99" }, - debug: { m: "DEBUG", c: "#66ff66" } + debug: { m: "DEBUG", c: "#66ff66" }, + custom: { m: "CUSTOM", c: null } } as const type LogType = keyof typeof AllLogs -export function log(m: string, t: LogType = "info"): void { +type CustomColorProps = { + type: "preset" + color: Colors +} | { + type: "custom" + color: string +} + +export function log(m: string, t: LogType = "info", c?: CustomColorProps): void { const date = new Date() const time = logTimeFormatter(date) const logType = AllLogs[t].m const logColor = AllLogs[t].c const message = `[${logType}] ${time} | ${m}` - console.log(logColor ? c(message, logColor) : message) + if (t === "info") { + console.log(message) + return + } + + if (t === "custom") { + if (!c) { + console.error("Custom log type requires a color.") + return + } + + if (c.type === "preset") { + const color = colors[c.color] + console.log(cc(message, color)) + } else { + console.log(cc(message, c.color)) + } + return + } + + console.log(cc(message, logColor!)) +} + +function cc(text: string, color: string) { + return chalk.hex(color)(text) }