A complete mutant json which uses traverse-json to enable traverse filtering.
Many time I've encontered with the difficult task of mutate a object with nested properties by filtering properties using a single function, so a mutant-json
solves this using traverse-json
with multiple options for traversing.
npm install mutant-json --save
yarn add mutant-json
- mutantJson(target, process, opts)
Iterates through the given iterator and applies mutation whereas the iterator entry returns. Also works with promises. The iteratee must return an entry of [path, value].
- MutanPatch :
function
Patch definition acording to the jsonpatch standard
- MutantPatcher :
function
- MutantProcess :
function
- MutantJsonEntry :
Array
- MutantOptions :
Object
Iterates through the given iterator and applies mutation whereas the iterator entry returns. Also works with promises. The iteratee must return an entry of [path, value].
Kind: global function
Param | Type |
---|---|
target | any |
process | MutantProcess |
opts | MutantOptions |
Example
const mutateJson = require('mutant-json');
const recursiveObjectPromises = {
foo: 0,
nested: Promise.resolve({
depth: 1,
nested: Promise.resolve({
depth: 2,
nested: Promise.resolve({
depth: 3,
nested: Promise.resolve({
depth: 4,
}),
}),
}),
}),
bar: 1,
};
const actual = await mutateJson(recursiveObjectPromises, (mutate, value) => {
mutate({
value: value * 2,
});
});
console.log(actual);
{
foo: 0,
nested: {
depth: 2,
nested: {
depth: 4,
nested: {
depth: 6,
nested: {
depth: 8,
},
},
},
},
bar: 2,
}
Patch definition acording to the jsonpatch standard
Kind: global typedef
Param | Type | Description |
---|---|---|
op | "remove" | "replace" |
Patch operation |
value | any |
Kind: global typedef
Param | Type |
---|---|
patches | MutanPatch | Array.<MutanPatch> |
Kind: global typedef
Param | Type |
---|---|
mutate | MutationPatcher |
value | any |
path | string |
result | any |
Kind: global typedef
Properties
Name | Type | Description |
---|---|---|
0 | string |
JSONPointer |
1 | any |
Value |
Kind: global typedef
Properties
Name | Type | Default | Description |
---|---|---|---|
[recursive] | Boolean |
true |
enable/disable nested arrays and objects recursion |
[nested] | Boolean |
false |
also emit nested array or objects |
[step] | Boolean |
1 |
the step to increment, default 1 |
[test] | String | function | RegeExp |
false |
regexp, string minimatch or function to filter properties |
[once] | Boolean |
false |
Stops when applies the first mutation |
[promises] | Boolean |
true |
Processing promises taking the resolved as part of the result |
[promise] | Boolean |
false |
Forces to return a promise even if no promises detected |
[iterator] | Array.<MutationJsonEntry> | Iterable | Iterator |
Iterator default traverse-json | |
[patcher] | function |
Patcher function |