UNPKG

infra-cli

Version:
31 lines (28 loc) 1.02 kB
const mergeObject = (target = {}, resource = {}) => { const result = { ...target } for (const key in resource) { const value = resource[key] const targetValue = result[key] if (targetValue) { if (typeof value === 'object' && typeof targetValue === 'object') { if (Array.isArray(targetValue) && Array.isArray(value)) { result[key] = [...targetValue, ...value] } else if (!Array.isArray(targetValue) && !Array.isArray(value)) { result[key] = { ...targetValue, ...value } } } else if (Array.isArray(value) && typeof targetValue !== 'object') { result[key] = [targetValue, ...value] } else if (Array.isArray(targetValue) && typeof value !== 'object') { result[key] = [...targetValue, value] } else if (typeof value !== 'object' && typeof targetValue !== 'object') { result[key] = [targetValue, value] } } else { result[key] = value } } return result } module.exports = { mergeObject }