UNPKG

log-vault

Version:

A generator of Winston logger instance with pre-defined configurable transports and formats and extra functionality.

51 lines (50 loc) 1.84 kB
"use strict"; 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, replacers } = opts; if (fields === null || fields === void 0 ? void 0 : fields.length) { if (message) { info.message = mask(message); info[__1.MESSAGE] = info.message; } if (extra) info.extra = mask(extra); if (error) info.error = mask(error); } return info; function mask(data) { if (typeof data === 'string') { return maskString(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") { const trimmed = val.trimStart(); if (trimmed.startsWith("{") || trimmed.startsWith("[")) { try { const parsed = JSON.parse(val); val = JSON.stringify(mask(parsed)); // eslint-disable-next-line no-empty } catch (error) { } } val = maskString(val); } return val; }, { modifyInPlace: true }); } function maskString(val) { replacers === null || replacers === void 0 ? void 0 : replacers.forEach(([regExp, cb]) => { val = val.replace(regExp, cb); }); return val; } });