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].
- Mutan :
function
definition acording to the json standard
- Mutanter :
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,
}
definition acording to the json standard
Kind: global typedef
Param | Type | Description |
---|---|---|
op | "remove" | "replace" | operation |
value | any |
Kind: global typedef
Param | Type |
---|---|
es | Mutan | Array.<Mutan> |
Kind: global typedef
Param | Type |
---|---|
mutate | Mutationer |
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 | |
[er] | function | er function |