Security News
UK Officials Consider Banning Ransomware Payments from Public Entities
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.
deep-extend
Advanced tools
The deep-extend npm package is a utility for deep (recursive) extending of the properties of objects. It is useful for merging the contents of multiple objects into one. This can be particularly helpful when dealing with configurations or settings that need to be composed from multiple sources.
Deep Merging of Objects
This feature allows you to merge multiple objects into a single object, combining and overriding properties as necessary. The properties from later objects will override those from earlier ones.
{"const deepExtend = require('deep-extend');
const obj1 = { a: 1, b: { c: 1 } };
const obj2 = { b: { d: 2 } };
const result = deepExtend({}, obj1, obj2);
console.log(result); // Output: { a: 1, b: { c: 1, d: 2 } }}
Lodash provides a method called merge which can recursively merge own and inherited enumerable string keyed properties of source objects into the destination object. It's similar to deep-extend but comes as part of the larger lodash utility library, which offers a wide range of functions for different purposes.
The extend package is another utility that can merge objects but does not offer deep merge capabilities by default. It is less powerful for deep object merging compared to deep-extend but can be used for shallow merges.
Merge-deep is similar to deep-extend as it allows for deep merging of objects. It recursively merges own and inherited enumerable properties of source objects into the destination object, similar to deep-extend, and is a good alternative if deep-extend is not suitable for some reason.
Recursive object extending.
$ npm install deep-extend
var deepExtend = require('deep-extend');
var obj1 = {
a: 1,
b: 2,
d: {
a: 1,
b: [],
c: { test1: 123, test2: 321 }
},
f: 5,
g: 123,
i: 321,
j: [1, 2]
};
var obj2 = {
b: 3,
c: 5,
d: {
b: { first: 'one', second: 'two' },
c: { test2: 222 }
},
e: { one: 1, two: 2 },
f: [],
g: (void 0),
h: /abc/g,
i: null,
j: [3, 4]
};
deepExtend(obj1, obj2);
console.log(obj1);
/*
{ a: 1,
b: 3,
d:
{ a: 1,
b: { first: 'one', second: 'two' },
c: { test1: 123, test2: 222 } },
f: [],
g: undefined,
c: 5,
e: { one: 1, two: 2 },
h: /abc/g,
i: null,
j: [3, 4] }
*/
$ npm test
Please, report about issues here.
FAQs
Recursive object extending
The npm package deep-extend receives a total of 13,531,612 weekly downloads. As such, deep-extend popularity was classified as popular.
We found that deep-extend demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.
Security News
Snyk's use of malicious npm packages for research raises ethical concerns, highlighting risks in public deployment, data exfiltration, and unauthorized testing.
Research
Security News
Socket researchers found several malicious npm packages typosquatting Chalk and Chokidar, targeting Node.js developers with kill switches and data theft.