UNPKG

@entro314labs/at3-toolkit

Version:

Advanced development toolkit for AT3 Stack projects

96 lines (95 loc) 2.49 kB
export class Logger { verbose; constructor(verbose = false) { this.verbose = verbose; } setVerbose(verbose) { this.verbose = verbose; } info(message, ...args) { if (this.verbose) { console.log("[INFO]", message, ...args); } } success(message, ...args) { if (this.verbose) { console.log("[SUCCESS]", message, ...args); } } warn(message, ...args) { if (this.verbose) { console.log("[WARNING]", message, ...args); } } error(message, error) { console.error("[ERROR]", message); if (error && this.verbose) { if (error instanceof Error) { console.error(error.stack); } else { console.error(JSON.stringify(error, null, 2)); } } } debug(message, ...args) { if (this.verbose) { console.log("[DEBUG]", message, ...args); } } table(data) { if (this.verbose) { console.log(); Object.entries(data).forEach(([key, value]) => { console.log(`${key.padEnd(20)} ${value}`); }); console.log(); } } list(items, prefix = "•") { if (this.verbose) { items.forEach((item) => { console.log(` ${prefix} ${item}`); }); } } step(step, total, message) { if (this.verbose) { console.log(`[${step}/${total}] ${message}`); } } section(title) { if (this.verbose) { console.log(`\n${title}`); console.log("=".repeat(title.length)); } } newline() { if (this.verbose) { console.log(); } } spinner(message) { // Simple spinner implementation for the logger if (this.verbose) { console.log(`⏳ ${message}`); } return { succeed: (msg) => { if (this.verbose) { console.log(`✅ ${msg || message}`); } }, fail: (msg) => { if (this.verbose) { console.log(`❌ ${msg || message}`); } }, stop: (msg) => { if (this.verbose && msg) { console.log(`⏸️ ${msg}`); } }, }; } }