sanitise
Version:
A simple utility function that sanitises specified object key values.
53 lines (41 loc) • 1.55 kB
JavaScript
;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var DEFAULT_REPLACEMENT = '******';
var isObject = function isObject(obj) {
return Object.prototype.toString.call(obj) === '[object Object]';
};
var isArrayOfObjects = function isArrayOfObjects(obj) {
return Array.isArray(obj) && obj.length && obj.every(function (x) {
return isObject(x);
});
};
var replaceValueIfMatchedKey = function replaceValueIfMatchedKey(blacklist, obj, key) {
var cloneObj = _extends({}, obj);
var matchedProperty = blacklist.find(function (x) {
return x.key === key;
});
if (matchedProperty) {
cloneObj[key] = matchedProperty.replaceWith || DEFAULT_REPLACEMENT;
}
return cloneObj;
};
var sanitise = function sanitise(blacklist) {
return function (obj) {
if (!isArrayOfObjects(blacklist)) {
throw new Error('Blacklist supplied must be an array of objects.');
}
if (!isObject(obj)) {
throw new Error('Object supplied to sanitise is not of type object.');
}
var cloneObj = _extends({}, obj);
for (var key in cloneObj) {
if (isObject(cloneObj[key])) {
cloneObj[key] = sanitise(blacklist)(cloneObj[key]);
} else {
cloneObj = replaceValueIfMatchedKey(blacklist, cloneObj, key);
}
}
return cloneObj;
};
};
module.exports = sanitise;