UNPKG

@techmely/utils

Version:

Collection of helpful JavaScript / TypeScript utils

53 lines (46 loc) 1.14 kB
'use strict'; /*! * @techmely/utils * Copyright(c) 2021-2024 Techmely <techmely.creation@gmail.com> * MIT Licensed */ // src/isArray.ts function isArray(val) { return val && Array.isArray(val); } // src/isObject.ts function isObject(val) { return toString.call(val) === "[object Object]"; } // src/mergeDeep.ts function mergeDeep(target, ...sources) { if (sources.length === 0) { return target; } const source = sources.shift(); if (source === void 0) { return target; } if (isMergeableObject(target) && isMergeableObject(source)) { const sourceKeys = Object.keys(source); for (const key of sourceKeys) { if (isMergeableObject(source[key])) { if (!target[key]) { target[key] = {}; } if (isMergeableObject(target[key])) { mergeDeep(target[key], source[key]); } else { target[key] = source[key]; } } else { target[key] = source[key]; } } } return mergeDeep(target, ...sources); } function isMergeableObject(item) { return isObject(item) && !isArray(item); } exports.mergeDeep = mergeDeep;