Something went wrong. Try again.
A fork of @slices.network/slices forked from slices.network/slices
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091import { cyan, green, red, yellow, bold, dim, gray } from "@std/fmt/colors";
export enum LogLevel { DEBUG = 0, INFO = 1, WARN = 2, ERROR = 3,}
class Logger { private level: LogLevel = LogLevel.INFO; private verbose = false;
setVerbose(verbose: boolean) { this.verbose = verbose; if (verbose) { this.level = LogLevel.DEBUG; } }
debug(message: string, ...args: unknown[]) { if (this.level <= LogLevel.DEBUG) { console.log(dim(" debug"), message, ...args); } }
info(message: string, ...args: unknown[]) { if (this.level <= LogLevel.INFO) { console.log("• ", message, ...args); } }
warn(message: string, ...args: unknown[]) { if (this.level <= LogLevel.WARN) { console.warn(yellow("!"), message, ...args); } }
error(message: string, ...args: unknown[]) { if (this.level <= LogLevel.ERROR) { console.error(red("✗"), message, ...args); } }
success(message: string, ...args: unknown[]) { console.log(green("✓"), message, ...args); }
step(message: string, ...args: unknown[]) { console.log(cyan("→"), message, ...args); }
progress(message: string, current: number, total: number) { const percentage = Math.round((current / total) * 100); const filled = Math.floor(percentage / 4); const bar = "█".repeat(filled) + gray("░".repeat(25 - filled)); Deno.stdout.writeSync(new TextEncoder().encode(`\r ${cyan("→")} ${message} ${bar} ${current}/${total}`)); if (current === total) { console.log(); } }
section(title: string) { console.log(); console.log(bold(title)); }
result(message: string, value?: string) { if (value) { console.log(` ${message} ${dim(value)}`); } else { console.log(` ${message}`); } }
list(items: string[]) { items.forEach(item => { console.log(`• ${item}`); }); }
table(headers: string[], rows: string[][]) { console.log(` ${headers.join(" ")}`); console.log(` ${headers.map(h => "─".repeat(h.length)).join(" ")}`); rows.forEach(row => { console.log(` ${row.join(" ")}`); }); }}
export const logger = new Logger();