UNPKG

@uploadx/core

Version:
59 lines (58 loc) 1.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.logger = exports.BasicLogger = void 0; const util_1 = require("util"); const levels = ['debug', 'info', 'warn', 'error', 'none']; var PriorityOf; (function (PriorityOf) { PriorityOf[PriorityOf["debug"] = 0] = "debug"; PriorityOf[PriorityOf["info"] = 1] = "info"; PriorityOf[PriorityOf["warn"] = 2] = "warn"; PriorityOf[PriorityOf["error"] = 3] = "error"; PriorityOf[PriorityOf["none"] = 4] = "none"; })(PriorityOf || (PriorityOf = {})); /** * Basic logger implementation */ class BasicLogger { constructor(options = {}) { this.options = options; this._logLevel = 'none'; this.write = (data, level) => { if (PriorityOf[level] >= PriorityOf[this._logLevel]) { const message = (0, util_1.formatWithOptions)({ depth: 2, maxStringLength: 80 }, ...data); const timestamp = new Date().toISOString(); this.logger[level](`${timestamp} ${level.toUpperCase()} ${this.label} ${message}`); } }; this.logger = options.logger || console; this.label = options.label ?? 'uploadx:'; if (options.logLevel) this.logLevel = options.logLevel; if (options.write) this.write = options.write; } get logLevel() { return this._logLevel; } set logLevel(value) { if (value && !levels.includes(value)) { throw new Error(`Invalid log level: ${value}, supported levels are: ${levels.join(', ')}.`); } this._logLevel = value; } info(...data) { this.write(data, 'info'); } warn(...data) { this.write(data, 'warn'); } error(...data) { this.write(data, 'error'); } debug(...data) { this.write(data, 'debug'); } } exports.BasicLogger = BasicLogger; exports.logger = new BasicLogger();