kibana-with-account
Version:
kibana-with-account is develop based kibana project
43 lines (39 loc) • 1.11 kB
JavaScript
function toPojo(obj) {
return JSON.parse(JSON.stringify(obj));
}
function replacer(match, group) {
return (new Array(group.length + 1).join('X'));
}
function apply(obj, key, action) {
for (let k in obj) {
if (obj.hasOwnProperty(k)) {
let val = obj[k];
if (k === key) {
if (action === 'remove') {
delete obj[k];
}
else if (action === 'censor' && typeof val === 'object') {
delete obj[key];
}
else if (action === 'censor') {
obj[k] = ('' + val).replace(/./g, 'X');
}
else if (/\/.+\//.test(action)) {
var matches = action.match(/\/(.+)\//);
if (matches) {
let regex = new RegExp(matches[1]);
obj[k] = ('' + val).replace(regex, replacer);
}
}
} else if (typeof val === 'object') {
val = apply(val, key, action);
}
}
}
return obj;
}
module.exports = function (obj, actionsByKey) {
return Object.keys(actionsByKey).reduce((output, key) => {
return apply(output, key, actionsByKey[key]);
}, toPojo(obj));
};