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-queue --saveOr
Install the component using Bower:
$ bower install json-patch-queue --saveOr download as ZIP.
vartargetObject={};// create queuevarmyQueue=newJSONPatchQueueSynchronous(targetObject,"/path_to_version",jsonpatch);// to compose versioned JSON Patch, to be send somewhere?varversionedPatchToBeSent=myQueue.send(regularpatch);// to apply/queue received versioned JSON PatchmyQueue.receive(receivedVersionedPatch);vartargetObject={};// create queuevarmyQueue=newJSONPatchQueue(targetObject,["/local_version","/remote_version"],jsonpatch);// to compose versioned JSON Patch, to be send somewhere?varversionedPatchToBeSent=myQueue.send(regularpatch);// to apply/queue received versioned JSON PatchmyQueue.receive(receivedVersionedPatch);Agent requires a 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 | Receives, and eventually applies given Versioned JSON Patch, to the object passed in the constructor |
| Name | Arguments | Default | Description |
|---|---|---|---|
JSONPatchQueue | Object obj | --- | Target object where patches are applied |
| *`Array<JSONPointer>`* `[localVersionPath, remoteVersionPath]` | | Paths where to store the versions
| *`Function`* apply | | `function(object, patch)` function to apply JSON Patch, must return the object in its final state
| *`Boolean`* purist | `false` | set to `true` to enable pure/unoptimized Versioned JSON Patch convention
| Name | Arguments | Default | Description |
|---|---|---|---|
JSONPatchQueueSynchronous | Objectobj | Target object where patches are applied |
| *`JSONPointer`* versionPath | | Path where to store the version
| *`Function`* apply | | `function(object, patch)` function to apply JSON Patch, must return the object in its final
| *`Boolean`* purist | `false` | set to `true` to enable pure/unoptimized Versioned JSON Patch convention
| Name | Type | Description |
|---|---|---|
obj | Object | Target object where patches are applied |
waiting | Array<JSONPatch> | Array of JSON Patches waiting in queue |
| Name | Type | Description |
|---|---|---|
localVersion | Number | local version |
remoteVersion | Number | acknowledged remote version |
| Name | Type | Description |
|---|---|---|
version | Number | document version |
- 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 OT
- JSON Patch OT Agent
- ...putting it all together: Palindrom