diff --git a/packages/vanilla/src/utils/deep-assign.ts b/packages/vanilla/src/utils/deep-assign.ts index eb74491..71fb3f1 100644 --- a/packages/vanilla/src/utils/deep-assign.ts +++ b/packages/vanilla/src/utils/deep-assign.ts @@ -2,13 +2,14 @@ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ export const deepAssign = (target: O, source: any): O => { for (const [key, value] of Object.entries(target)) { + const sourceValue = source[key]; // Use the default value if there's no value specified - target[key as keyof O] = source[key] === undefined ? target[key as keyof O] : + target[key as keyof O] = sourceValue === undefined ? target[key as keyof O] : // Check if it's a nested object and merge if required - (typeof value === 'object' && value !== null && !Array.isArray(value)) ? - deepAssign(value as O, source[key] as Partial) : source[key]; + (typeof sourceValue === 'object' && typeof value === 'object' && value !== null && !Array.isArray(value)) ? + deepAssign(value as O, sourceValue as Partial) : sourceValue; } return target;