UNPKG

@backtrace/javascript-cli

Version:
100 lines 2.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createLogger = exports.CliLogger = void 0; const util_1 = require("util"); class CliLogger { constructor(options) { this.options = options; this._levelMap = this.createLevelMap(options.level); } clone(options) { return new CliLogger({ ...this.options, ...options }); } output(value, ...args) { return this.log('output', value, ...args); } fatal(value, ...args) { return this.log('fatal', value, ...args); } error(value, ...args) { return this.log('error', value, ...args); } warn(value, ...args) { return this.log('warn', value, ...args); } info(value, ...args) { return this.log('info', value, ...args); } debug(value, ...args) { return this.log('debug', value, ...args); } trace(value, ...args) { return this.log('trace', value, ...args); } log(level, value, ...args) { const isOutput = level === 'output'; if (this.options.silent) { return; } if (!this._levelMap[level]) { return; } const logger = isOutput ? (...args) => console.log(...args) : (...args) => console.error(...args); const message = []; if (this.options.prefix) { message.push(`${this.options.prefix}`); } if (!isOutput) { message.push(`${level}:`); } if (value instanceof Error) { message.push(...args, value); } else { message.push(value, ...args); } logger((0, util_1.format)(...message)); } createLevelMap(level) { const levelMap = { output: 0, fatal: 1, error: 2, warn: 3, info: 4, debug: 5, trace: 6, }; return { output: levelMap[level] >= levelMap['output'], fatal: levelMap[level] >= levelMap['fatal'], error: levelMap[level] >= levelMap['error'], warn: levelMap[level] >= levelMap['warn'], info: levelMap[level] >= levelMap['info'], debug: levelMap[level] >= levelMap['debug'], trace: levelMap[level] >= levelMap['trace'], }; } } exports.CliLogger = CliLogger; function createLogger(options) { let level; if (options?.['log-level']) { level = options?.['log-level']; } else if (options?.verbose) { switch (options.verbose.length) { case 1: level = 'debug'; break; case 2: level = 'trace'; break; } } return new CliLogger({ level: level ?? 'info', silent: options?.quiet }); } exports.createLogger = createLogger; //# sourceMappingURL=logger.js.map