0.6.3 • Published 3 years ago
mutant-json v0.6.3
mutant-json
A complete mutant json which uses traverse-json to enable traverse filtering.
Motivation
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.
Installation
Npm:
npm install mutant-json --save
Yarn:
yarn add mutant-json
Functions
Typedefs
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.
Kind: global function
Param | Type |
---|---|
target | any |
process | MutantProcess |
opts | MutantOptions |
Example
Working with promises
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);
Output
{
foo: 0,
nested: {
depth: 2,
nested: {
depth: 4,
nested: {
depth: 6,
nested: {
depth: 8,
},
},
},
},
bar: 2,
}
MutanPatch : function
Patch definition acording to the jsonpatch standard
Kind: global typedef
Param | Type | Description |
---|---|---|
op | "remove" | "replace" | Patch operation |
value | any |
MutantPatcher : function
Kind: global typedef
Param | Type |
---|---|
patches | MutanPatch | Array.<MutanPatch> |
MutantProcess : function
Kind: global typedef
Param | Type |
---|---|
mutate | MutationPatcher |
value | any |
path | string |
result | any |
MutantJsonEntry : Array
Kind: global typedef
Properties
Name | Type | Description |
---|---|---|
0 | string | JSONPointer |
1 | any | Value |
MutantOptions : Object
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 |