0.6.3 • Published 5 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 --saveYarn:
yarn add mutant-jsonFunctions
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 |