Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

json-patch

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

json-patch

A JavaScript implementation of the JSON Object Notation (JSON) Patch http://tools.ietf.org/html/rfc6902 and JSON Pointer http://tools.ietf.org/html/rfc6901 specifications.

  • 0.7.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
16K
decreased by-14.72%
Maintainers
1
Weekly downloads
 
Created
Source

jsonpatch-js

Bitdeli Badge

Library to apply JSON Patches in JavaScript

jsonpatch-js works as in the browser as a script, as a Node module and as an AMD module.

Install

Bower

bower install json-patch

NPM

npm install json-patch

Note: at this time, all operations are applied in-place.

Methods

jsonpatch.apply(document, patch)

Applies a patch to the document

jsonpatch.compile(patch)

Compiles a patch and returns a function that takes a document to apply the patch to.

Patch Operations

Add

Patch syntax: {op: 'add', path: <path>, value: <value>}

// Add property, result: {foo: 'bar'}
jsonpatch.apply({}, [{op: 'add', path: '/foo', value: 'bar'}]);

// Add array element, result: {foo: [1, 2, 3]}
jsonpatch.apply({foo: [1, 3]}, [{op: 'add', path: '/foo/1', value: 2}]);

// Complex, result: {foo: [{bar: 'baz'}]}
jsonpatch.apply({foo: [{}]}, [{op: 'add', path: '/foo/0/bar', value: 'baz'}]);

Remove

Patch syntax: {op: 'remove', path: <path>}

// Remove property, result: {}
jsonpatch.apply({foo: 'bar'}, [{op: 'remove', path: '/foo'}]);

// Remove array element, result: {foo: [1, 3]}
jsonpatch.apply({foo: [1, 2, 3]}, [{op: 'remove', path: '/foo/1'}]);

// Complex, result: {foo: [{}]}
jsonpatch.apply({foo: [{bar: 'baz'}]}, [{op: 'remove', path: '/foo/0/bar'}]);

Replace

Patch syntax: {op: 'replace', path: <path>, value: <value>}

// Replace property, result: {foo: 1}
jsonpatch.apply({foo: 'bar'}, [{op: 'replace', path: '/foo', value: 1}]);

// Replace array element, result: {foo: [1, 4, 3]}
jsonpatch.apply({foo: [1, 2, 3]}, [{op: 'replace', path: '/foo/1', value: 4}]);

// Complex, result: {foo: [{bar: 1}]}
jsonpatch.apply({foo: [{bar: 'baz'}]}, [{op: 'replace', path: '/foo/0/bar', value: 1}]);

Move

Patch syntax: {op: 'move', from: <path>, path: <path>}

// Move property, result {bar: [1, 2, 3]}
jsonpatch.apply({foo: [1, 2, 3]}, [{op: 'move', from: '/foo', path: '/bar'}]);

Copy

Patch syntax: {op: 'copy', from: <path>, path: <path>}

// Copy property, result {foo: [1, 2, 3], bar: 2}
jsonpatch.apply({foo: [1, 2, 3]}, [{op: 'copy', from: '/foo/1', path: '/bar'}]);

Test

Patch syntax: {op: 'test', path: <path>, value: <value>}

// Test equality of property to value, result: true
jsonpatch.apply({foo: 'bar'}, [{op: 'test', path: '/foo', value: 'bar'}]

Changed in 0.5.0

The return value is no longer a boolean, but now the the document itself which adheres correctly to the specification. It the test fails, a PatchTestFailed error will be thrown.

Error Types

JSONPatchError

Base error type which all patch errors extend from.

InvalidPointerError

Thrown when the pointer is invalid.

InvalidPatchError

Thrown when the patch itself has an invalid syntax.

PatchConflictError

Thrown when there is a conflic with applying the patch to the document.

PatchTestFailed

Thrown when a test operation is applied and fails.

Keywords

FAQs

Package last updated on 21 Aug 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc