Skip to content

grindcode/deep-patch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Deep Patch

Build Status Dependency Status devDependency Status

Modify an object recursively by an array of sequential patches.

Get Started

npm install deep-patch

API

patch(input, patches)

Returns new Object modified recursively by mods, an array of one or more sequential patches.

  • input: Object input. (Object)
  • patches: Array of patches. (Array)

patch operations

If path is not found in input, a new value is created. Type is defined by expected value.

  • {path: {$set: value}}: Set a mixed value to path.
  • {path: {$push: value}}: Push value to Array in path.
  • {path: {$unshift: value}}: Unshift value to Array in path.
  • {path: {$filter: value}}: Runs value as filter Function to Array in path.
  • {path: {$map: value}}: Runs value as map Function to Array in path.
  • {path: {$apply: value}}: Runs value as Function to any value in path. Input value in same path is provided as first argument.
  • {path: {$merge: value}}: Merges value into path Object.

Usage

var patch = require("deep-patch");

var data = {
  a: { aa: { aaa: "string" } },
  b: "string",
};

patch(data, [
  { a: { aa: { aaa: { $set: "modified string" } } } },
  { b: { $set: "modified string" } },
]);

// →
// {
//   a: {aa: {aaa: 'modified string' }},
//   b: 'modified string'
// }

Benchmark

node benchmark.js

Results

$set x 135,799 ops/sec ±0.85% (85 runs sampled)

License

See the License file.