rfc6902-json-diff

0.2.1 • Public • Published

JSON diff according to RFC6902

Build Status

Diff two JS objects and receive an RFC6902 JSON patch.

var diff = require("rfc6902-json-diff");
 
var patch = diff(
  { name: "CQQL", age: 21, likes: ["api stuff"] },
  { name: "CQQL", age: 22, likes: ["api stuff", "json"] }
);
 
console.log(patch);
//=> [{ op: "replace", path: "/age", value: 22 },
//=>  { op: "add", path: "/likes/1", value: "json" }]

Implementation

The current implementation only uses the add, remove and replace operation. Usage of move and copy can and may be added later and I am always open for pull requests, but they are not needed to generate patches for every possible modification. Your patches will just be a bit bigger than they would be with move and copy.

Arrays are diffed with the Levenshtein distance. This gives us

diff([1, 2, 3, 4, 5, 6], [1, 5, 2, 3, 4, 6]) == [
  { op: "add", path: "/1", value: 5 },
  { op: "remove", path: "/5" }
]

instead of 5 replace operations.

Readme

Keywords

Package Sidebar

Install

npm i rfc6902-json-diff

Weekly Downloads

755

Version

0.2.1

License

MIT

Last publish

Collaborators

  • cqql