UNPKG

@sapphire/plugin-logger

Version:

Plugin for @sapphire/framework to have pretty console output

96 lines (93 loc) 3.88 kB
'use strict'; var framework = require('@sapphire/framework'); var colorette = require('colorette'); var console = require('console'); var util = require('util'); var LoggerLevel_cjs = require('./LoggerLevel.cjs'); var __defProp = Object.defineProperty; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); var _Logger = class _Logger extends framework.Logger { constructor(options = {}) { super(options.level ?? framework.LogLevel.Info); /** * The console this writes to. * @since 1.0.0 */ __publicField(this, "console"); /** * The formats supported by the logger. * @since 1.0.0 */ __publicField(this, "formats"); /** * The string `write` will join values by. * @since 1.0.0 */ __publicField(this, "join"); /** * The inspect depth when logging objects. * @since 1.0.0 */ __publicField(this, "depth"); this.console = new console.Console(options.stdout ?? process.stdout, options.stderr ?? process.stderr); this.formats = _Logger.createFormatMap(options.format, options.defaultFormat); this.join = options.join ?? " "; this.depth = options.depth ?? 0; } /** * Writes the log message given a level and the value(s). * @param level The log level. * @param values The values to log. */ write(level, ...values) { if (level < this.level) return; const method = this.levels.get(level) ?? "log"; const formatter = this.formats.get(level) ?? this.formats.get(framework.LogLevel.None); this.console[method](formatter.run(this.preprocess(values))); } /** * Pre-processes an array of values. * @since 1.0.0 * @param values The values to pre-process. */ preprocess(values) { const inspectOptions = { colors: colorette.isColorSupported, depth: this.depth }; return values.map((value) => typeof value === "string" ? value : util.inspect(value, inspectOptions)).join(this.join); } get levels() { return Reflect.get(framework.Logger, "levels"); } /** * Gets whether or not colorette is enabled. * @since 1.0.0 */ static get stylize() { return colorette.isColorSupported; } static createFormatMap(options = {}, defaults = options.none ?? {}) { return /* @__PURE__ */ new Map([ [framework.LogLevel.Trace, _Logger.ensureDefaultLevel(options.trace, defaults, colorette.gray, "TRACE")], [framework.LogLevel.Debug, _Logger.ensureDefaultLevel(options.debug, defaults, colorette.magenta, "DEBUG")], [framework.LogLevel.Info, _Logger.ensureDefaultLevel(options.info, defaults, colorette.cyan, "INFO")], [framework.LogLevel.Warn, _Logger.ensureDefaultLevel(options.warn, defaults, colorette.yellow, "WARN")], [framework.LogLevel.Error, _Logger.ensureDefaultLevel(options.error, defaults, colorette.red, "ERROR")], [framework.LogLevel.Fatal, _Logger.ensureDefaultLevel(options.fatal, defaults, colorette.bgRed, "FATAL")], [framework.LogLevel.None, _Logger.ensureDefaultLevel(options.none, defaults, colorette.white, "")] ]); } static ensureDefaultLevel(options, defaults, color, name) { if (options) return new LoggerLevel_cjs.LoggerLevel(options); return new LoggerLevel_cjs.LoggerLevel({ ...defaults, timestamp: defaults.timestamp === null ? null : { ...defaults.timestamp ?? {}, color }, infix: name.length ? `${color(name.padEnd(5, " "))} - ` : "" }); } }; __name(_Logger, "Logger"); var Logger = _Logger; exports.Logger = Logger; //# sourceMappingURL=Logger.cjs.map //# sourceMappingURL=Logger.cjs.map