diff --git a/lib/utils.js b/lib/utils.js index 4e7a205..b613f55 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -156,10 +156,17 @@ exports.parseS3 = (path) => { // Deep Merge exports.deepMerge = (a, b) => { + const blockedKeys = ['__proto__', 'prototype', 'constructor']; Object.keys(b).forEach((key) => { - if (key === '__proto__') return; - if (typeof b[key] !== 'object') return Object.assign(a, b); - return key in a ? this.deepMerge(a[key], b[key]) : Object.assign(a, b); + if (blockedKeys.includes(key)) return; + if (b[key] && typeof b[key] === 'object' && !Array.isArray(b[key])) { + if (!a[key] || typeof a[key] !== 'object' || Array.isArray(a[key])) { + a[key] = {}; + } + this.deepMerge(a[key], b[key]); + } else { + a[key] = b[key]; + } }); return a; };