@entro314labs/at3-toolkit
Version:
Advanced development toolkit for AT3 Stack projects
96 lines (95 loc) • 2.49 kB
JavaScript
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}`);
}
},
};
}
}