Makes your JSON Patch application sequential
Implements a queue of JSON Patches, based on Versioned JSON Patch convention, that will resolve a problem of sequential application of JSON Patches.
Full Versioned JSON Patch + OT visualization
Specific visualization will come soon.
Install the component using NPM
$ npm install json-patch-ot-agent --saveOr
Install the component using Bower:
$ bower install json-patch-ot-agent --saveOr download as ZIP.
var targetObject = {};
// create queue
var myQueue = new new JSONPatchOTAgent(targetObject,
jsonpatchTransform,
['/localVersion', '/remoteVersion'],
jsonpatch
);
// to compose versioned JSON Patch, to be send somewhere?
var versionedPatchToBeSent = myQueue.send(regularPatch);
// to apply/queue/transform received versioned JSON Patch
myQueue.receive(receivedVersionedPatch);Agent requires a specific transform function (as a first argument), if you do not have your own, we advise you JSON-Patch-OT (bower install json-patch-ot).
You will also need function to apply JSON Patch, we suggest fast JSON Patch (bower install fast-json-patch).
| Name | Arguments | Default | Description |
|---|---|---|---|
send |
JSONPatch sequence | Changes given JSON Patch to Versioned JSON Patch | |
receive |
VersionedJSONPatch sequence | Versioned JSON Patch to be queued and applied | |
JSONPatchQueue |
Object obj | Target object where patches are applied | |
| __ | Function transform | function(patch, againstPatch_es) function to transform given JSON Patch against others |
|
| __ | Array JSONPointer [localVersionPath, remoteVersionPath] | Paths where to store the versions | |
| __ | Function apply | function(object, patch) function to apply JSON Patch, must return the final state of the object |
|
| __ | Boolean purist | false |
set to true to enable pure/unoptimized Versioned JSON Patch convention |
| Name | Type | Description |
|---|---|---|
obj |
Object obj |
Target object where patches are applied |
waiting |
Array JSONPatch | Array of JSON Patches waiting in queue |
localVersion |
Number | local version |
remoteVersion |
Number | acknowledged remote version |
ackLocalVersion |
Number | local version that is for sure acknowledged by remote |
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature - Commit your changes:
git commit -m 'Add some feature' - Push to the branch:
git push origin my-new-feature - Submit a pull request :D
For detailed changelog, check Releases.
MIT
- fast JSON Patch
- JSON Patch Queue
- JSON Patch OT
- ...putting it all together: Palindrom