log-vault
Version:
A generator of Winston logger instance with pre-defined configurable transports and formats and extra functionality.
38 lines (37 loc) • 1.28 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.formatMaskFields = void 0;
const winston_1 = require("winston");
const __1 = require("..");
const obj_walker_1 = require("obj-walker");
const defaults_1 = require("../defaults");
exports.formatMaskFields = (0, winston_1.format)((info, opts) => {
const { message, extra, error } = info;
const { fields, maskLabel } = opts;
if (fields === null || fields === void 0 ? void 0 : fields.length) {
if (message) {
mask(message);
info[__1.MESSAGE] = message;
}
if (extra)
mask(extra);
if (error)
mask(error);
}
return info;
function mask(data) {
return (0, obj_walker_1.map)(data, ({ key, val }) => {
if (key && fields.includes(key))
val = maskLabel || defaults_1.defaultMaskFieldsOptions.maskLabel;
if (typeof val === "string") {
try {
const parsed = JSON.parse(val);
val = JSON.stringify(mask(parsed));
// eslint-disable-next-line no-empty
}
catch (error) { }
}
return val;
}, { modifyInPlace: true });
}
});