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
JavaScript
;
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;