Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

An FP-ready implementation of the JSON Merge Patch RFC 7396

License

NotificationsYou must be signed in to change notification settings

QuentinRoy/tiny-merge-patch

Repository files navigation

Build Statuscodecovdependencies StatusdevDependencies StatusConventional CommitsNPM version

An implementation of the JSON Merge PatchRFC 7396: a standard format used todescribe modifications to JSON documents.

This library complies with the functional programming style: it does not mutatethe original target, but recycles what it can. It is particularly appropriate to update a state used byReact, allowing selective re-rendering of the UI.

tiny-merge-patch passes allRFC 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.constmergePatch=require('tiny-merge-patch').apply;

ES modules in the browser

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

Usage

// Original document / object.constdoc={a:'b',c:{d:'e',f:'g'},h:{i:0}};// JSON merge patch to apply.constpatch={a:'z',c:{f:null}// null marks deletions.};// Apply the patch.constpatchedDoc=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—butrecycles what it can.Recycling also allows efficient strict identity-based memoization(used byReact'sPureComponent 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 unlikeJSON patches, there is no way toimplement merge of merge patches that reliably preserves deletion.)

License

MIT

About

An FP-ready implementation of the JSON Merge Patch RFC 7396

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors4

  •  
  •  
  •  
  •  

[8]ページ先頭

©2009-2025 Movatter.jp