0.1.6 • Published 5 years ago
json-deep-merge-patch v0.1.6
json-deep-merge-patch
Merges and patches a target object. By default the returning object is a shallow merge of unpatched and deep merge of patched target's properties. There is an option to clone unpatched target properties as well.
Features:
- No dependencies
- Only patched properties are cloned by default
- Option: clone unpatched properties
- Option: depth based merging
- Option: keep nulls
- RFC 7396 compliant*
* As described above, the returning object is a clone, so target object is left intact. If you need RFC 7396 compliance and mutating the target object, use json-merge-patch.
Benchmarks
- Clone this repository.
- Install the dev dependencies.
npm:
npm iyarn:
yarn- Open
./bench.jsin your favourite code editor and replace thetargetandpatchvalues with the desired ones. - Run the benchmark.
npm:
npm run benchyarn:
yarn benchInstall
npm:
npm i json-deep-merge-patch --saveyarn:
yarn add json-deep-merge-patchUsage
const jsonDeepMergePatch = require('json-deep-merge-patch')
const target = {
title: 'Goodbye!',
author: {
givenName: 'John',
familyName: 'Doe'
},
tags: ['example', 'sample'],
content: 'This will be unchanged'
}
const patch = {
title: 'Hello!',
phoneNumber: '+01-123-456-7890',
author: {
familyName: null
},
tags: ['example']
}
const result = jsonDeepMergePatch(target, patch)
/*
result = {
title: 'Hello!',
author: {
givenName: 'John'
},
tags: ['example'],
content: 'This will be unchanged',
phoneNumber: '+01-123-456-7890'
}
*/API
jsonDeepMergePatch(target: Object, patch: Object, opts?: Options)Options
depth(null|Number, default:null)- Specifies the number of times to recurse while merging the object, if set to
null(default) it will recurse up to the maximum call stack.
- Specifies the number of times to recurse while merging the object, if set to
keepNulls(Boolean, default:false)- As the name suggests properties with null values in patch set matching target properties to null, instead of deleting them.
cloneUnpatchedProps(Boolean, default:false)- If set to
false(default), the returning object is a shallow merge of unpatched and deep merge of patched target's properties. - If set to
true, the returning object is a deep merge of unpatched and patched target's properties.
- If set to