yale-doorman
Version:
SDK for Yale Doorman through the Yale cloud API
25 lines (24 loc) • 1.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.deepMerge = void 0;
function isObject(val) {
return typeof val === "object" && val !== null && !Array.isArray(val);
}
function deepMerge(...objects) {
return objects
.reduce((result, current) => {
for (const key of Object.keys(current)) {
// Only consider deep merging objects. Check if the value is an object.
if (isObject(current[key])) {
// CHeck if this object is present on the result object. If not, we can merging.
if (key in result) {
// Merge the objects and piggy-back the final return statement for doing the actual merge.
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unused-vars
current[key] = deepMerge(result[key], current[key]);
}
}
}
return Object.assign({}, result, current);
}, {});
}
exports.deepMerge = deepMerge;