Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
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,723,618 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.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.