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

nested-object-diff

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

nested-object-diff

A lightweight javascript diff library for comparing two javascript object nested with supporting matching by value of the object's choosen key name in array.

  • 1.0.2
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
11K
decreased by-13.21%
Maintainers
1
Weekly downloads
 
Created
Source

Nested Object Diff

MIT License version

A lightweight javascript diff library for comparing two javascript object nested with supporting matching by value of the object's choosen key name in array.

Installation

npm i --save nested-object-diff

Importing

NodeJs / ES5:

var diff = require('nested-object-diff').diff;

ES6 / Babel:

import diff from 'nested-object-diff';

Usage:

var diff = require('./dist/index').diff;

var lhs = {
  shop: {
    products: [{ id: 1, name: 'a' }, { id: 2, name: 'b' }, { id: 3, name: 'c' }]
  },
  name: 'foo'
};

var rhs = {
  shop: {
    products: [
      { id: 1, name: 'a' },
      { id: 2, name: 'bb' },
      { id: 4, name: 'd' },
      { id: 3, name: 'cc' }
    ]
  },
  name: 'baz'
};

var differences = diff(lhs, rhs, { matchKey: 'id' });

The code snippet above would result in the following structure describing the differences:

[
  { type: 'E', path: 'shop.products.1.name', lhs: 'b', rhs: 'bb' },
  { type: 'E', path: 'shop.products.3.name', lhs: 'c', rhs: 'cc' },
  { type: 'A', path: 'shop.products.2', rhs: { id: 4, name: 'd' } },
  { type: 'E', path: 'name', lhs: 'foo', rhs: 'baz' }
]

Function Arguments

  • lhs - the left-hand operand; the origin object.
  • rhs - the right-hand operand; the object being compared structurally with the origin object.
  • options - A configuration object that can have the following properties:
    • matchKey: used to match objects when diffing arrays, by default only === operator is used

Differences

Differences are reported as one or more change records. Change records have the following structure:

  • type - indicates the kind of change; will be one of the following:
    • A - indicates a newly added property
    • D - indicates a property was deleted
    • E - indicates a property was edited
  • path - the property path
  • lhs - the value on the left-hand-side of the comparison (undefined if kind === 'A')
  • rhs - the value on the right-hand-side of the comparison (undefined if kind === 'D')

Contributing

You discovered a bug or have an idea for a new feature? Great, why don't you send me a PR or open an issue so everyone can benefit from it? If you decide to send PR please run the unit tests before submitting your PR: npm test. Hopefully your PR includes additional unit tests to illustrate your changemodification!

License

MIT

Keywords

FAQs

Package last updated on 22 Sep 2019

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