UNPKG

@sapphire/plugin-logger

Version:

Plugin for @sapphire/framework to have pretty console output

91 lines (89 loc) 3.36 kB
import { __name, __publicField } from '../chunk-2JTKI4GS.mjs'; import { Logger as Logger$1, LogLevel } from '@sapphire/framework'; import { isColorSupported, gray, magenta, cyan, yellow, red, bgRed, white } from 'colorette'; import { Console } from 'console'; import { inspect } from 'util'; import { LoggerLevel } from './LoggerLevel.mjs'; var _Logger = class _Logger extends Logger$1 { constructor(options = {}) { super(options.level ?? 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(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(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: isColorSupported, depth: this.depth }; return values.map((value) => typeof value === "string" ? value : inspect(value, inspectOptions)).join(this.join); } get levels() { return Reflect.get(Logger$1, "levels"); } /** * Gets whether or not colorette is enabled. * @since 1.0.0 */ static get stylize() { return isColorSupported; } static createFormatMap(options = {}, defaults = options.none ?? {}) { return /* @__PURE__ */ new Map([ [LogLevel.Trace, _Logger.ensureDefaultLevel(options.trace, defaults, gray, "TRACE")], [LogLevel.Debug, _Logger.ensureDefaultLevel(options.debug, defaults, magenta, "DEBUG")], [LogLevel.Info, _Logger.ensureDefaultLevel(options.info, defaults, cyan, "INFO")], [LogLevel.Warn, _Logger.ensureDefaultLevel(options.warn, defaults, yellow, "WARN")], [LogLevel.Error, _Logger.ensureDefaultLevel(options.error, defaults, red, "ERROR")], [LogLevel.Fatal, _Logger.ensureDefaultLevel(options.fatal, defaults, bgRed, "FATAL")], [LogLevel.None, _Logger.ensureDefaultLevel(options.none, defaults, white, "")] ]); } static ensureDefaultLevel(options, defaults, color, name) { if (options) return new LoggerLevel(options); return new LoggerLevel({ ...defaults, timestamp: defaults.timestamp === null ? null : { ...defaults.timestamp ?? {}, color }, infix: name.length ? `${color(name.padEnd(5, " "))} - ` : "" }); } }; __name(_Logger, "Logger"); var Logger = _Logger; export { Logger }; //# sourceMappingURL=Logger.mjs.map //# sourceMappingURL=Logger.mjs.map