Socket
Socket
Sign inDemoInstall

deepmerge

Package Overview
Dependencies
Maintainers
4
Versions
46
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

deepmerge - npm Package Compare versions

Comparing version 1.0.3 to 1.1.0

test/custom-array-merge.js

4

changelog.md

@@ -0,1 +1,5 @@

# [1.1.0](https://github.com/KyleAMathews/deepmerge/releases/tag/v1.1.0)
- allow consumers to specify their own array merging algorithm: [Pull request 37](https://github.com/KyleAMathews/deepmerge/pull/37)
# [1.0.3](https://github.com/KyleAMathews/deepmerge/releases/tag/v1.0.3)

@@ -2,0 +6,0 @@

70

index.js

@@ -19,40 +19,48 @@ (function (root, factory) {

return function deepmerge(target, src) {
var array = Array.isArray(src);
var dst = array ? [] : {};
function defaultArrayMerge(target, source, optionsArgument) {
var destination = target.slice()
source.forEach(function(e, i) {
if (typeof destination[i] === 'undefined') {
destination[i] = e
} else if (isMergeableObject(e)) {
destination[i] = deepmerge(target[i], e, optionsArgument)
} else if (target.indexOf(e) === -1) {
destination.push(e)
}
})
return destination
}
function mergeObject(target, source, optionsArgument) {
var destination = {}
if (isMergeableObject(target)) {
Object.keys(target).forEach(function (key) {
destination[key] = target[key]
})
}
Object.keys(source).forEach(function (key) {
if (!isMergeableObject(source[key]) || !target[key]) {
destination[key] = source[key]
} else {
destination[key] = deepmerge(target[key], source[key], optionsArgument)
}
})
return destination
}
function deepmerge(target, source, optionsArgument) {
var array = Array.isArray(source);
var options = optionsArgument || { arrayMerge: defaultArrayMerge }
var arrayMerge = options.arrayMerge || defaultArrayMerge
if (array) {
target = target || [];
dst = dst.concat(target);
src.forEach(function(e, i) {
if (typeof dst[i] === 'undefined') {
dst[i] = e;
} else if (isMergeableObject(e)) {
dst[i] = deepmerge(target[i], e);
} else if (target.indexOf(e) === -1) {
dst.push(e);
}
});
return arrayMerge(target, source, optionsArgument)
} else {
if (isMergeableObject(target)) {
Object.keys(target).forEach(function (key) {
dst[key] = target[key];
})
}
Object.keys(src).forEach(function (key) {
if (!isMergeableObject(src[key])) {
dst[key] = src[key];
} else {
if (!target[key]) {
dst[key] = src[key];
} else {
dst[key] = deepmerge(target[key], src[key]);
}
}
});
return mergeObject(target, source, optionsArgument)
}
return dst;
}
return deepmerge
}));

@@ -13,3 +13,3 @@ {

],
"version": "1.0.3",
"version": "1.1.0",
"homepage": "https://github.com/KyleAMathews/deepmerge",

@@ -22,3 +22,3 @@ "repository": {

"engines": {
"node": ">=0.4.0"
"node": ">=0.10.0"
},

@@ -25,0 +25,0 @@ "scripts": {

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc