json-mini-patch
JSON Patch RFC 6902 compliant - small, simple, no dependencies, 3kb minified, 1kb gzip
• Why • What • How • License •
Why
This is a bare-bone JSON Patch implementation with the internal parsed patch exposed. This is useful for cases where additional processing and logic is required by store or database middleware.
When processing a JSON Patch, the string path must be parsed and unescaped into a series of object keys. By seperating the processing and implementation of the patch, it is easier to use this implementation as a base for more complex object stores.
What
//CJSvar jsm = var newState = jsm //standard compliantvar minPatch = jsm //[['a', ['new','key'], 'newValue']]var stdPatch = jsm // back to the original standard patchvar newState = jsm // patch
//ES6var newState = patch //standard compliantvar minPatch = patch //[['a', ['new','key'], 'newValue']]var stdPatch = patch // back to the original standard patchvar newState = patch // patch
Features
- RFC 6902 compliant with the full test-suit used
- throws for non-compliant patches but not for tests. This allows test operations to prevent throwing
- operation are atomic and the source object is immutable. If a test fails the patch is canceled and the original object is returned
- under 4kb minified
- available in
cjs
(require),es6
(import) orbrowser
(script) formats
API
jsonpatch(object, actions) => newObject
applies a JSON patch to the objectcompress(actions) => [[o, p, v]]
returns a compressed patch.o
: operation 'a':add, 'r':replace, 'd':remove, 't':test, 'm':move, 'c':copyp
: array of path keys.[]
for the rootv
:value
orfrom
field depending on the operation
patch(object, compressed) => newObject
applies a parsed patch to the objectrestore(compressed) => actions
converts a parsed patch back to a compliant JSON Patch
License
Released under the MIT License