@n3okill/utils
Version:
Many javascript helpers
34 lines • 1.39 kB
JavaScript
;
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
/* eslint-disable @typescript-eslint/no-explicit-any */
Object.defineProperty(exports, "__esModule", { value: true });
exports.merge = merge;
const isNullOrUndefined_1 = require("../type/isNullOrUndefined");
const isObject_1 = require("../type/isObject");
const clone_1 = require("./clone");
/**
* Merge given objects into a new one, cloning the values
* @param args Objects to be merged
* @returns The merged and cloned object
*/
function merge(...args) {
const target = {};
for (const obj of args) {
if (!(0, isNullOrUndefined_1.isNullOrUndefined)(obj)) {
for (const [key, value] of Object.entries(obj)) {
// eslint-disable-next-line security/detect-object-injection
if ((0, isObject_1.isObject)(value) && (0, isObject_1.isObject)(target[key])) {
// eslint-disable-next-line security/detect-object-injection
target[key] = merge(target[key], value);
}
else {
// eslint-disable-next-line security/detect-object-injection
target[key] = (0, clone_1.clone)(value, true);
}
}
}
}
return target;
}
//# sourceMappingURL=merge.js.map