UNPKG

@vivianhealth/braze-segment-debounce

Version:

Segment utilities to debounce data before it reaches the Braze destination

58 lines (46 loc) 1.87 kB
"use strict"; 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;