Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including patcher with all npm packages installed. Try it out:

var patcher = require("patcher")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

patcher v0.0.6

Object patching and replication for JavaScript

          _        _               _     
         | |      | |             (_)    

_ __ __ | | __| |__ ___ _ __ _ ___ | ' \ / _` | __|/ __| '_ \ / _ \ '__| / __| | |_) | (_| | |_| (__| | | | __/ | | _
| .__/ __,_|__|___|_| |_|___|_|(_) |___/ | | _/ |
|_| |__/

=================================================

A JSON patching and diffing library

(c) 2011 Mikola Lysenko

=================================================

  1. About

patcher.js is a simple javascript library for diffing and patching JSON documents. This can be useful, for example, in a networked environment where retransmitting large JSON documents is too expensive.

  1. Example:

//Start with two distinct objects on the server // prev represents a copy of the state of the object on the client // next represents a copy of the state of the object on the server // //1. Compute a patch patch = patcher.computePatch(prev, next);

//2. Send patch over the network

//3. Apply the patch on the client patcher.applyPatch(prev, patch);

//Final invariant: // prev represents an equivalent object to JSON.parse(JSON.stringify(next))

  1. API

There are two functions in patcher.js:

function computePatch(prev, next, update_in_place);

The argument prev is the object which the patch targets.

* If update_in_place is set to true, then the function
will simultaneously update both prev and next at the same
time.
* If prev and next are equal, then the method returns null
* Constructing this patch requires time linear on the 
size of the two documents.
* Patches are computed at the level of the objects and
arrays.  String modifications are simply retransmitted

function applyPatch(obj, patch)

This function applies a patch to the JSON document obj

  1. Future
  • More test cases!
  • Use data types cleverly
  • Binary serialization

Metadata

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free