@techmely/utils
Version:
Collection of helpful JavaScript / TypeScript utils
53 lines (46 loc) • 1.14 kB
JavaScript
/*!
* @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;
;