Skip to content

Latest commit

 

History

History

diff

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

diff

npm version npm downloads Twitter Follow

This project is part of the @thi.ng/umbrella monorepo.

About

Customizable diff implementations for arrays (sequential) & objects (associative), with or without linear edit logs.

Status

STABLE - used in production

Installation

yarn add @thi.ng/diff
// ES module
<script type="module" src="https://unpkg.com/@thi.ng/diff?module" crossorigin></script>

// UMD
<script src="https://unpkg.com/@thi.ng/diff/lib/index.umd.js" crossorigin></script>

Package sizes (gzipped, pre-treeshake): ESM: 1.25 KB / CJS: 1.30 KB / UMD: 1.33 KB

Dependencies

API

Generated API docs

import { diffArray, DiffMode } from "@thi.ng/diff";

diffArray([1, 2, 3], [1, 2, 4], DiffMode.FULL);
// {
//     distance: 2,
//     adds: { 2: 4 },
//     dels: { 2: 3 },
//     const: { 0: 1, 1: 2 },
//     linear: [0, 0, 1,  0, 1, 2,  -1, 2, 3,  1, 2, 4]
// }

Breaking changes

2.0.0

The linear edit logs of both diffArray and diffObject are now returned as flat arrays, with each log entry consisting of 3 or 2 successive array items. This is to avoid allocation of various small arrays.

The order of optional args to both functions has been swapped to:

  • diffArray(old, new, mode?, equiv?)
  • diffObject(old, new, mode?, equiv?)

Authors

Karsten Schmidt

License

© 2016 - 2020 Karsten Schmidt // Apache Software License 2.0