json-patch-queue
v3.0.0-rc.1
Published
Queue for Versioned JSON-Patch - makes sure that your JSON Patches (RFC6902) gets applied in correct order
Downloads
41
Readme
JSON-Patch-Queue
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.
Demo
Full Versioned JSON Patch + OT visualization
Specific visualization will come soon.
Install
Install the component using NPM
$ npm install json-patch-queue --save
Or
Install the component using Bower:
$ bower install json-patch-queue --save
Or download as ZIP.
Usage
Single Versioned
var targetObject = {};
// create queue
var myQueue = new JSONPatchQueueSynchronous(targetObject, "/path_to_version", jsonpatch);
// to compose versioned JSON Patch, to be send somewhere?
var versionedPatchToBeSent = myQueue.send(regularpatch);
// to apply/queue received versioned JSON Patch
myQueue.receive(receivedVersionedPatch);
Multiple Versioned
var targetObject = {};
// create queue
var myQueue = new JSONPatchQueue(targetObject, ["/local_version", "/remote_version"], jsonpatch);
// to compose versioned JSON Patch, to be send somewhere?
var versionedPatchToBeSent = myQueue.send(regularpatch);
// to apply/queue received versioned JSON Patch
myQueue.receive(receivedVersionedPatch);
Requirements
Agent requires a function to apply JSON Patch, we suggest fast JSON Patch (bower install fast-json-patch
).
Methods
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
Multiple Versioned
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
Single Versioned
Name | Arguments | Default | Description
--- | --- | --- | ---
JSONPatchQueueSynchronous
| Object
obj | | 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
Properties
Name | Type | Description
--- | --- | ---
obj
| Object
| Target object where patches are applied
waiting
| Array<JSONPatch>
| Array of JSON Patches waiting in queue
Multiple Versioned
Name | Type | Description
--- | --- | ---
localVersion
| Number | local version
remoteVersion
| Number | acknowledged remote version
Single Versioned
Name | Type | Description
--- | --- | ---
version
| Number | document version
Contributing
- 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
History
For detailed changelog, check Releases.
License
MIT
See also
- fast JSON Patch
- JSON Patch OT
- JSON Patch OT Agent
- ...putting it all together: Palindrom