mutant-json
v0.6.3
Published
[![unit-testing](https://github.com/rubeniskov/mutant-json/workflows/unit-testing/badge.svg)](https://github.com/rubeniskov/mutant-json/actions?query=workflow%3Aunit-testing) [![npm-publish](https://github.com/rubeniskov/mutant-json/workflows/npm-publish/
Downloads
192
Readme
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 |