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 --saveyarn 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 |