@vivianhealth/braze-segment-debounce
Version:
Segment utilities to debounce data before it reaches the Braze destination
58 lines (46 loc) • 1.87 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.diffObject = void 0;
var _index = require("./index");
var _diffObject = function _diffObject(object, base) {
var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
_ref$diffArray = _ref.diffArray,
diffArray = _ref$diffArray === void 0 ? true : _ref$diffArray;
var changes = function changes(_object, _base) {
var arrayIndexCounter = 0;
return (0, _index.transform)(_object, function (result, value, key) {
if (!(0, _index.isEqual)(value, _base[key])) {
var resultKey = key;
if (Array.isArray(_base)) {
resultKey = arrayIndexCounter;
arrayIndexCounter += 1;
}
if (diffArray) {
result[resultKey] = (0, _index.isObject)(value) && (0, _index.isObject)(_base[key]) ? changes(value, _base[key]) : value;
} else {
result[resultKey] = (0, _index.isObject)(value) && (0, _index.isObject)(_base[key]) && !Array.isArray(value) && !Array.isArray(_base[key]) ? changes(value, _base[key]) : value;
}
}
});
};
return changes(object, base);
};
/*
* Returns Finds the differece between two objects
* @param {Object} object The first object to compare
* @param {Object} base The object to compare against
* @param {boolean} options.diffArray Whether to also diff the contents
* of any Array. Defaults to true.
*/
var diffObject = function diffObject(object, base) {
var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
_ref2$diffArray = _ref2.diffArray,
diffArray = _ref2$diffArray === void 0 ? true : _ref2$diffArray;
var diff = _diffObject(object, base, {
diffArray: diffArray
});
return !Object.keys(diff).length ? null : diff;
};
exports.diffObject = diffObject;