@nori-zk/proof-conversion
Version:
Verifying zkVM proofs inside o1js circuits, to generate Mina compatible proof
53 lines • 1.7 kB
JavaScript
import chalk from 'chalk';
import { loggingEventEmitter } from './logger.js';
export class LogPrinter {
constructor(header, enabledLevels = [
'log',
'info',
'error',
'warn',
'debug',
'verbose',
'fatal',
]) {
this.header = header;
this.enabledLevels = new Set(enabledLevels);
loggingEventEmitter.on('log', (data) => this.handleLog(data));
}
formatLog(level, message, context, timestamp) {
const color = LogPrinter.colors[level];
let formattedMessage = typeof message === 'object' ? JSON.stringify(message, null, 2) : message;
let logString = `${chalk.green(this.header)} - ${chalk.white(timestamp)} ${color(level.toUpperCase().padStart(7))}`;
if (context) {
logString += ` ${chalk.yellow(`[${context}]`)}`;
}
logString += ` ${color(formattedMessage)}`;
return logString;
}
handleLog({ level, message, context, timestamp, }) {
if (!this.enabledLevels.has(level))
return;
if (level === 'error' || level === 'fatal') {
console.error(this.formatLog(level, message, context, timestamp));
}
else {
console.log(this.formatLog(level, message, context, timestamp));
}
}
enable(level) {
this.enabledLevels.add(level);
}
disable(level) {
this.enabledLevels.delete(level);
}
}
LogPrinter.colors = {
log: chalk.green,
info: chalk.blue,
error: chalk.red,
warn: chalk.rgb(227, 71, 37),
debug: chalk.rgb(187, 154, 247),
verbose: chalk.cyan,
fatal: chalk.red.bold,
};
//# sourceMappingURL=log_printer.js.map