LearningSalesForceCommerceC.../storefront-reference-architecture/test/integration/helpers/jsonUtils.js

56 lines
1.3 KiB
JavaScript
Raw Normal View History

2021-12-21 10:57:31 -08:00
var _ = require('lodash');
function jsonUtils() {}
/**
* Duplicate the source object and delete specified key(s) from the new object.
*
* @param {JSON} srcObj
* @param {String[]} keys
* @returns {Object} - A new object with key(s) removed
*/
jsonUtils.deleteProperties = function (srcObj, keys) {
var newObj = _.cloneDeep(srcObj);
jsonUtils.removeProps(newObj, keys);
return newObj;
};
/**
* Delete specified key(s) from the object.
*
* @param {JSON} obj
* @param {String[]} keys
*/
jsonUtils.removeProps = function (obj, keys) {
if (obj instanceof Array && obj[0] !== null) {
obj.forEach(function (item) {
jsonUtils.removeProps(item, keys);
});
} else if (typeof obj === 'object') {
Object.getOwnPropertyNames(obj).forEach(function (key) {
if (keys.indexOf(key) !== -1) {
delete obj[key]; // eslint-disable-line no-param-reassign
} else if (obj[key] != null) {
jsonUtils.removeProps(obj[key], keys);
}
});
}
};
/**
* Return pretty-print JSON string
*
* @param {JSON} obj
*/
jsonUtils.toPrettyString = function (obj) {
var prettyString;
if (obj) {
prettyString = JSON.stringify(obj, null, '\t');
}
return prettyString;
};
module.exports = jsonUtils;