carbon-components-angular
Version:
Next generation components
23 lines • 2.76 kB
JavaScript
// custom deep object merge
export const merge = (target, ...objects) => {
for (const object of objects) {
for (const key in object) {
if (object.hasOwnProperty(key)) {
// since we're dealing just with JSON this simple check should be enough
if (object[key] instanceof Object) {
if (!target[key]) {
target[key] = {};
}
// recursively merge into the target
// most translations only run 3 or 4 levels deep, so no stack explosions
target[key] = merge(target[key], object[key]);
}
else {
target[key] = object[key];
}
}
}
}
return target;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL29iamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQkFBMkI7QUFDM0IsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsT0FBTyxFQUFFLEVBQUU7SUFDM0MsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUU7UUFDN0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUU7WUFDekIsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUMvQix3RUFBd0U7Z0JBQ3hFLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLE1BQU0sRUFBRTtvQkFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTt3QkFDakIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztxQkFDakI7b0JBQ0Qsb0NBQW9DO29CQUNwQyx3RUFBd0U7b0JBQ3hFLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2lCQUM5QztxQkFBTTtvQkFDTixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUMxQjthQUNEO1NBQ0Q7S0FDRDtJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gY3VzdG9tIGRlZXAgb2JqZWN0IG1lcmdlXG5leHBvcnQgY29uc3QgbWVyZ2UgPSAodGFyZ2V0LCAuLi5vYmplY3RzKSA9PiB7XG5cdGZvciAoY29uc3Qgb2JqZWN0IG9mIG9iamVjdHMpIHtcblx0XHRmb3IgKGNvbnN0IGtleSBpbiBvYmplY3QpIHtcblx0XHRcdGlmIChvYmplY3QuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuXHRcdFx0XHQvLyBzaW5jZSB3ZSdyZSBkZWFsaW5nIGp1c3Qgd2l0aCBKU09OIHRoaXMgc2ltcGxlIGNoZWNrIHNob3VsZCBiZSBlbm91Z2hcblx0XHRcdFx0aWYgKG9iamVjdFtrZXldIGluc3RhbmNlb2YgT2JqZWN0KSB7XG5cdFx0XHRcdFx0aWYgKCF0YXJnZXRba2V5XSkge1xuXHRcdFx0XHRcdFx0dGFyZ2V0W2tleV0gPSB7fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gcmVjdXJzaXZlbHkgbWVyZ2UgaW50byB0aGUgdGFyZ2V0XG5cdFx0XHRcdFx0Ly8gbW9zdCB0cmFuc2xhdGlvbnMgb25seSBydW4gMyBvciA0IGxldmVscyBkZWVwLCBzbyBubyBzdGFjayBleHBsb3Npb25zXG5cdFx0XHRcdFx0dGFyZ2V0W2tleV0gPSBtZXJnZSh0YXJnZXRba2V5XSwgb2JqZWN0W2tleV0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRhcmdldFtrZXldID0gb2JqZWN0W2tleV07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIHRhcmdldDtcbn07XG4iXX0=