@sentry/core
Version:
Base implementation for all Sentry JavaScript SDKs
37 lines (30 loc) • 1.09 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/**
* Shallow merge two objects.
* Does not mutate the passed in objects.
* Undefined/empty values in the merge object will overwrite existing values.
*
* By default, this merges 2 levels deep.
*/
function merge(initialObj, mergeObj, levels = 2) {
// If the merge value is not an object, or we have no merge levels left,
// we just set the value to the merge value
if (!mergeObj || typeof mergeObj !== 'object' || levels <= 0) {
return mergeObj;
}
// If the merge object is an empty object, and the initial object is not undefined, we return the initial object
if (initialObj && Object.keys(mergeObj).length === 0) {
return initialObj;
}
// Clone object
const output = { ...initialObj };
// Merge values into output, resursively
for (const key in mergeObj) {
if (Object.prototype.hasOwnProperty.call(mergeObj, key)) {
output[key] = merge(output[key], mergeObj[key], levels - 1);
}
}
return output;
}
exports.merge = merge;
//# sourceMappingURL=merge.js.map