Socket
Socket
Sign inDemoInstall

tiny-merge-patch

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

tiny-merge-patch

JSON Merge Patch (RFC 7396) Implementation


Version published
Weekly downloads
66K
increased by8.5%
Maintainers
1
Weekly downloads
 
Created
Source

Tiny Merge Patch

Build Status codecov dependencies Status devDependencies Status

An implementation of the JSON Merge Patch RFC 7396: a standard format used to describe modifications to JSON documents.

This library complies with the functional programming style: it does not mutate the original target, but recycles what it can.

tiny-merge-patch passes all RFC 7396 tests.

Install

Install the current version (and save it as a dependency):

npm

npm install tiny-merge-patch --save

Import

CommonJs with node

// Fetch `apply` from the module.
const mergePatch = require('tiny-merge-patch').apply;

ES modules in the browser

// `apply` is also the default export.
import mergePatch from 'https://unpkg.com/tiny-merge-patch/esm/index.js'

Usage

// Original document / object.
const doc = {
  a: 'b',
  c: { d: 'e', f: 'g' },
  h: { i: 0 }
};

// JSON merge patch to apply.
const patch = {
  a: 'z',
  c: { f: null } // null marks deletions.
};

// Apply the patch.
const patchedDoc = mergePatch(doc, patch);

// tiny-merge-patch complies with the RFC specification.
assert.deepEqual(patchedDoc, {
  a: 'z',
  c: { d: 'e' },
  h: { i: 0 },
});

// Additionally, it does not mutate the original document...
assert(patchedDoc !== doc);

// ...nor its content...
assert(patchedDoc.c !== doc.c);

// ...but recycles what it can.
assert(patchedDoc.h === doc.h);

Alternatives

All are in-place. To avoid mutations of the original object, one can deep-clone beforehand, but it can be expensive. At the contrary, tiny-merge-patch does not alter any of its arguments—but recycles what it can. Recycling also allows efficient strict identity-based memoization (used by React's PureComponent for example).

All of the above libraries also embed additional functionalities, such as patch generation from two objects or merge of patches. tiny-merge-patch only focuses on the IETF standard and on patch applications.

(None of the above libraries are particularly big. Still, tiny-merge-patch is smaller if you only need to apply patches. It is also worth mentioning that unlike JSON patches, there is no way to implement merge of merge patches that reliably preserves deletion.)

JSON merge patch implementation for Immutable.js.

License

MIT

Keywords

FAQs

Package last updated on 09 Oct 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