UNPKG

@akala/core

Version:
149 lines 5.04 kB
import { bold, italic, strikethrough, underline } from 'yoctocolors'; import { each } from '../each.js'; /** * Enum representing logging levels mapped to numeric priorities * @enum {number} * @property {number} error - Highest priority error level (0) * @property {number} warn - Warning level (1) * @property {number} help - Help information (2) * @property {number} data - Data tracing (3) * @property {number} info - General information (4) * @property {number} debug - Debug-level messages (5) * @property {number} prompt - Prompt messages (6) * @property {number} verbose - Verbose output (7) * @property {number} input - Input tracing (8) * @property {number} silly - Lowest priority tracing (9) */ export var LogLevels; (function (LogLevels) { LogLevels[LogLevels["error"] = 0] = "error"; LogLevels[LogLevels["warn"] = 1] = "warn"; LogLevels[LogLevels["help"] = 2] = "help"; LogLevels[LogLevels["data"] = 3] = "data"; LogLevels[LogLevels["info"] = 4] = "info"; LogLevels[LogLevels["debug"] = 5] = "debug"; LogLevels[LogLevels["prompt"] = 6] = "prompt"; LogLevels[LogLevels["verbose"] = 7] = "verbose"; LogLevels[LogLevels["input"] = 8] = "input"; LogLevels[LogLevels["silly"] = 9] = "silly"; })(LogLevels || (LogLevels = {})); export class LoggerAdapterMiddleware { logger; constructor(logger) { this.logger = logger; } handle(logLevel, namespaces, ...context) { return this.logger[LogLevels[logLevel]].handle(logLevel, namespaces, ...context); } } export const logConfig = { defaultLevel: LogLevels.error, namespaceConfig: {} }; export function configureLogging(config) { if (typeof config.defaultLevel !== 'undefined') logConfig.defaultLevel = config.defaultLevel; if (typeof config.namespaceConfig != 'undefined') { deepMerge(logConfig.namespaceConfig, config.namespaceConfig); } } function deepMerge(a, b) { each(b, (c, k) => { if (typeof a[k] == 'undefined') if (typeof c == 'number') a[k] = { level: c }; else deepMerge(a[k] = {}, c); else if (typeof c == 'number') a[k].level = c; else deepMerge(a[k], c); }); } export class LoggerMiddleware { logger; logLevel; namespace; constructor(logger, logLevel, namespace) { this.logger = logger; this.logLevel = logLevel; this.namespace = namespace; } handle(logLevel, namespaces, ...context) { if (this.shouldHandle(logLevel, namespaces)) return this.logger(logLevel, namespaces, ...context); } shouldHandle(logLevel, namespaces) { if (this.logLevel < logLevel) return false; if (this.namespace !== '*' && this.namespace !== namespaces[0]) return false; return true; } } export class LogMiddlewareWrapper { logger; logLevel; namespace; constructor(logger, logLevel, namespace) { this.logger = logger; this.logLevel = logLevel; this.namespace = namespace; } handle(logLevel, namespaces, ...context) { if (this.shouldHandle(logLevel, namespaces)) return this.logger.handle(logLevel, namespaces, ...context); return; } shouldHandle(logLevel, namespaces) { if (this.logLevel < logLevel) return false; if (this.namespace !== '*' && this.namespace != namespaces[0]) return false; return this.logger.shouldHandle(logLevel, namespaces.slice(1)); } } export const emojiMap = { smile: '😄', thumbsup: '👍', heart: '❤️', fire: '🔥', star: '⭐', cry: '😢', laugh: '😂', wink: '😉', clap: '👏', angry: '😠', shocked: '😲', cool: '😎', poop: '💩', party: '🥳', thinking: '🤔', pray: '🙏', hug: '🤗', ok: '👌', eyes: '👀', grin: '😁', sleepy: '😴', kiss: '😘', celebration: '🎉', check: '✅', cross: '❌', question: '❓', wave: '👋', rocket: '🚀', 100: '💯' }; const oldErrorLog = console.error; console.error = function (format, ...args) { if (typeof format == 'string') oldErrorLog.call(console, format .replace(/__((?:[^_]|_[^_])+)__/g, (_, text) => bold(text)) .replace(/\*\*((?:[^\*]|\*[^\*])+)\*\*/g, (_, text) => bold(text)) .replace(/_([^_]+)_/g, (_, text) => underline(text)) .replace(/\*([^\*]+)\*/g, (_, text) => italic(text)) .replace(/```.*\n((?:[^`]|\n)+)\n```/g, (_, text) => italic(bold(text))) .replace(/`([^`]+)`/g, (_, text) => italic(bold(text))) .replace(/~~((?:[^~]|~[^~])+)~~/g, (_, text) => strikethrough(text)) .replace(/:([a-z_]+):/g, (_, emojiName) => emojiMap[emojiName] || `:${emojiName}:`), ...args); else oldErrorLog.call(console, format, ...args); }; //# sourceMappingURL=shared.js.map