UNPKG

better-logging

Version:

better-logging is a drop in replacement for the default logging methods of node.js

52 lines (51 loc) 2.27 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.formatMessage = void 0; const fast_safe_stringify_1 = __importDefault(require("fast-safe-stringify")); const messageConstructionStrategy_1 = require("./enums/messageConstructionStrategy"); const constructFormattingContext = (logType, config, message) => { const typeColor = config.color.type[logType]; const date = new Date(); const isoDate = date.toISOString(); const STAMP = (innerContent, innerColor = config.color.base) => { const stamp = config.formatStamp(innerColor(innerContent)); return config.color.base(stamp); }; return { msg: message, type: STAMP(logType, typeColor), date: STAMP(isoDate.substring(0, isoDate.indexOf('T'))), time: STAMP(isoDate.substring(isoDate.indexOf('T') + 1, isoDate.indexOf('Z'))), unix: STAMP('' + date.valueOf()), STAMP: (content, color) => STAMP(`${content}`, color), }; }; const constructMessage = (strategy, args) => { const processArgument = (arg) => { if (typeof arg === 'object') { return (0, fast_safe_stringify_1.default)(arg); } return `${arg}`; }; if (strategy === messageConstructionStrategy_1.MessageConstructionStrategy.NONE) { return ['', args]; } if (strategy === messageConstructionStrategy_1.MessageConstructionStrategy.FIRST) { const [first, ...rest] = args; return [processArgument(first), rest]; } if (strategy === messageConstructionStrategy_1.MessageConstructionStrategy.ALL) { return [args.map(processArgument).join(' '), []]; } throw new Error(`Unknown MessageConstructionStrategy: ${strategy}`); }; const formatMessage = (logType, config, args) => { const [rawMessage, remainingArgs] = constructMessage(config.messageConstructionStrategy, args); const formattingContext = constructFormattingContext(logType, config, rawMessage); const formattedMessage = config.format(formattingContext); return [formattedMessage, remainingArgs]; }; exports.formatMessage = formatMessage;