what-the-diff

diff parsing library

Usage no npm install needed!

<script type="module">
  import whatTheDiff from 'https://cdn.skypack.dev/what-the-diff';
</script>

README

JavaScript Diff Parser

Credit: @eightballart

Parse unified diffs with JavaScript

Installation

what-the-diff is available via npm

npm install what-the-diff

Usage

let {parse} = require('what-the-diff')

var str = `diff --git file.txt file.txt
index 83db48f..bf269f4 100644
--- file.txt
+++ file.txt
@@ -1,3 +1,3 @@
line1
-line2
+new line
line3`

parse(diffStr)

// returns
  {
    oldPath: 'file.txt',
    newPath: 'file.txt',
    oldMode: '100644',
    newMode: '100644',
    status: 'modified',
    hunks: [
      {
        oldStartLine: 1,
        oldLineCount: 3,
        newStartLine: 1,
        newLineCount: 3,
        lines: [
          ' line1',
          '-line2',
          '+new line',
          ' line3'
        ]
      }
    ]
  }

If the diff includes a similarity index line (from a detected copy or rename), the similarity property will be set, and will be a number.