From a8e488f5db58b980eda6fcf19e25cd96dd2d0f82 Mon Sep 17 00:00:00 2001 From: muhammedaltug Date: Wed, 11 Nov 2020 14:56:12 +0300 Subject: [PATCH] feat: add Node instance control to deepMerge --- .../packages/core/src/lib/utils/common-utils.ts | 8 ++++++++ .../packages/core/src/lib/utils/object-utils.ts | 15 ++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/utils/common-utils.ts b/npm/ng-packs/packages/core/src/lib/utils/common-utils.ts index fb634d6dda..3b0446240b 100644 --- a/npm/ng-packs/packages/core/src/lib/utils/common-utils.ts +++ b/npm/ng-packs/packages/core/src/lib/utils/common-utils.ts @@ -27,3 +27,11 @@ export function isArray(obj) { export function isObjectAndNotArray(obj) { return isObject(obj) && !isArray(obj); } + +export function isNode(obj) { + return obj instanceof Node; +} + +export function isObjectAndNotArrayNotNode(obj) { + return isObjectAndNotArray(obj) && !isNode(obj); +} diff --git a/npm/ng-packs/packages/core/src/lib/utils/object-utils.ts b/npm/ng-packs/packages/core/src/lib/utils/object-utils.ts index b38c8a62ef..29382ee738 100644 --- a/npm/ng-packs/packages/core/src/lib/utils/object-utils.ts +++ b/npm/ng-packs/packages/core/src/lib/utils/object-utils.ts @@ -1,7 +1,14 @@ -import { isObjectAndNotArray, isNullOrUndefined, exists, isArray, isObject } from './common-utils'; +import { + exists, + isArray, + isNode, + isNullOrUndefined, + isObject, + isObjectAndNotArrayNotNode, +} from './common-utils'; export function deepMerge(target, source) { - if (isObjectAndNotArray(target) && isObjectAndNotArray(source)) { + if (isObjectAndNotArrayNotNode(target) && isObjectAndNotArrayNotNode(source)) { return deepMergeRecursively(target, source); } else if (isNullOrUndefined(target) && isNullOrUndefined(source)) { return {}; @@ -17,7 +24,9 @@ function deepMergeRecursively(target, source) { isArray(target) || isArray(source) || // at least one array !isObject(target) || - !isObject(source); // at least one not an object + !isObject(source) || // at least one not an object + isNode(target) || + isNode(source); // at least one node /** * if we will not recurse any further,