+++ /dev/null
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.isObjectNotArray = exports.deepMerge = void 0;
-/**
- * Check if the variable contains an object strictly rejecting arrays
- * @param obj an object
- * @returns `true` if obj is an object
- */
-function isObjectNotArray(obj) {
- return typeof obj === 'object' && !Array.isArray(obj);
-}
-exports.isObjectNotArray = isObjectNotArray;
-/**
- * Pure function - doesn't mutate either parameter!
- * Merges two objects together deeply, overwriting the properties in first with the properties in second
- * @param first The first object
- * @param second The second object
- * @returns a new object
- */
-function deepMerge(first = {}, second = {}) {
- // get the unique set of keys across both objects
- const keys = new Set(Object.keys(first).concat(Object.keys(second)));
- return Array.from(keys).reduce((acc, key) => {
- const firstHasKey = key in first;
- const secondHasKey = key in second;
- const firstValue = first[key];
- const secondValue = second[key];
- if (firstHasKey && secondHasKey) {
- if (isObjectNotArray(firstValue) && isObjectNotArray(secondValue)) {
- // object type
- acc[key] = deepMerge(firstValue, secondValue);
- }
- else {
- // value type
- acc[key] = secondValue;
- }
- }
- else if (firstHasKey) {
- acc[key] = firstValue;
- }
- else {
- acc[key] = secondValue;
- }
- return acc;
- }, {});
-}
-exports.deepMerge = deepMerge;
-//# sourceMappingURL=deepMerge.js.map
\ No newline at end of file