diff2html 3.4.36 → 3.4.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/bundles/css/diff2html.min.css +1 -1
- package/bundles/js/diff2html-ui-base.min.js +1 -1
- package/bundles/js/diff2html-ui-slim.min.js +1 -1
- package/bundles/js/diff2html-ui.min.js +1 -1
- package/bundles/js/diff2html.min.js +1 -1
- package/lib/diff-parser.js +55 -65
- package/lib/diff-parser.js.map +1 -1
- package/lib/diff2html-templates.d.ts +1 -1
- package/lib/diff2html-templates.d.ts.map +1 -1
- package/lib/diff2html-templates.js +2 -24
- package/lib/diff2html-templates.js.map +1 -1
- package/lib/diff2html.js +16 -54
- package/lib/diff2html.js.map +1 -1
- package/lib/file-list-renderer.js +15 -39
- package/lib/file-list-renderer.js.map +1 -1
- package/lib/hoganjs-utils.js +22 -59
- package/lib/hoganjs-utils.js.map +1 -1
- package/lib/line-by-line-renderer.d.ts +3 -3
- package/lib/line-by-line-renderer.d.ts.map +1 -1
- package/lib/line-by-line-renderer.js +75 -114
- package/lib/line-by-line-renderer.js.map +1 -1
- package/lib/rematch.d.ts +3 -3
- package/lib/rematch.d.ts.map +1 -1
- package/lib/rematch.js +28 -31
- package/lib/rematch.js.map +1 -1
- package/lib/render-utils.d.ts +2 -2
- package/lib/render-utils.d.ts.map +1 -1
- package/lib/render-utils.js +44 -79
- package/lib/render-utils.js.map +1 -1
- package/lib/side-by-side-renderer.d.ts +3 -3
- package/lib/side-by-side-renderer.d.ts.map +1 -1
- package/lib/side-by-side-renderer.js +83 -122
- package/lib/side-by-side-renderer.js.map +1 -1
- package/lib/types.d.ts +6 -6
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js +1 -1
- package/lib/types.js.map +1 -1
- package/lib/ui/js/diff2html-ui-base.js +61 -75
- package/lib/ui/js/diff2html-ui-base.js.map +1 -1
- package/lib/ui/js/diff2html-ui-slim.d.ts +2 -1
- package/lib/ui/js/diff2html-ui-slim.d.ts.map +1 -1
- package/lib/ui/js/diff2html-ui-slim.js +6 -24
- package/lib/ui/js/diff2html-ui-slim.js.map +1 -1
- package/lib/ui/js/diff2html-ui.d.ts +2 -1
- package/lib/ui/js/diff2html-ui.d.ts.map +1 -1
- package/lib/ui/js/diff2html-ui.js +7 -27
- package/lib/ui/js/diff2html-ui.js.map +1 -1
- package/lib/ui/js/highlight.js-helpers.d.ts +1 -1
- package/lib/ui/js/highlight.js-helpers.d.ts.map +1 -1
- package/lib/ui/js/highlight.js-helpers.js +17 -17
- package/lib/ui/js/highlight.js-helpers.js.map +1 -1
- package/lib/ui/js/highlight.js-slim.js +53 -55
- package/lib/ui/js/highlight.js-slim.js.map +1 -1
- package/lib/utils.js +4 -4
- package/lib/utils.js.map +1 -1
- package/lib-esm/diff-parser.js +53 -63
- package/lib-esm/diff-parser.js.map +1 -1
- package/lib-esm/diff2html-templates.d.ts +1 -1
- package/lib-esm/diff2html-templates.d.ts.map +1 -1
- package/lib-esm/diff2html-templates.js +1 -1
- package/lib-esm/diff2html-templates.js.map +1 -1
- package/lib-esm/diff2html.js +9 -22
- package/lib-esm/diff2html.js.map +1 -1
- package/lib-esm/file-list-renderer.js +13 -15
- package/lib-esm/file-list-renderer.js.map +1 -1
- package/lib-esm/hoganjs-utils.js +19 -35
- package/lib-esm/hoganjs-utils.js.map +1 -1
- package/lib-esm/line-by-line-renderer.d.ts +3 -3
- package/lib-esm/line-by-line-renderer.d.ts.map +1 -1
- package/lib-esm/line-by-line-renderer.js +71 -89
- package/lib-esm/line-by-line-renderer.js.map +1 -1
- package/lib-esm/rematch.d.ts +3 -3
- package/lib-esm/rematch.d.ts.map +1 -1
- package/lib-esm/rematch.js +28 -31
- package/lib-esm/rematch.js.map +1 -1
- package/lib-esm/render-utils.d.ts +2 -2
- package/lib-esm/render-utils.d.ts.map +1 -1
- package/lib-esm/render-utils.js +41 -54
- package/lib-esm/render-utils.js.map +1 -1
- package/lib-esm/side-by-side-renderer.d.ts +3 -3
- package/lib-esm/side-by-side-renderer.d.ts.map +1 -1
- package/lib-esm/side-by-side-renderer.js +79 -97
- package/lib-esm/side-by-side-renderer.js.map +1 -1
- package/lib-esm/types.d.ts +6 -6
- package/lib-esm/types.d.ts.map +1 -1
- package/lib-esm/types.js +3 -3
- package/lib-esm/types.js.map +1 -1
- package/lib-esm/ui/js/diff2html-ui-base.js +59 -74
- package/lib-esm/ui/js/diff2html-ui-base.js.map +1 -1
- package/lib-esm/ui/js/diff2html-ui-slim.d.ts +2 -1
- package/lib-esm/ui/js/diff2html-ui-slim.d.ts.map +1 -1
- package/lib-esm/ui/js/diff2html-ui-slim.js +4 -23
- package/lib-esm/ui/js/diff2html-ui-slim.js.map +1 -1
- package/lib-esm/ui/js/diff2html-ui.d.ts +2 -1
- package/lib-esm/ui/js/diff2html-ui.d.ts.map +1 -1
- package/lib-esm/ui/js/diff2html-ui.js +4 -23
- package/lib-esm/ui/js/diff2html-ui.js.map +1 -1
- package/lib-esm/ui/js/highlight.js-helpers.d.ts +1 -1
- package/lib-esm/ui/js/highlight.js-helpers.d.ts.map +1 -1
- package/lib-esm/ui/js/highlight.js-helpers.js +17 -17
- package/lib-esm/ui/js/highlight.js-helpers.js.map +1 -1
- package/lib-esm/ui/js/highlight.js-slim.js +1 -1
- package/lib-esm/ui/js/highlight.js-slim.js.map +1 -1
- package/lib-esm/utils.js +4 -4
- package/lib-esm/utils.js.map +1 -1
- package/package.json +35 -36
|
@@ -1,77 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
-
if (k2 === undefined) k2 = k;
|
|
15
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
-
}
|
|
19
|
-
Object.defineProperty(o, k2, desc);
|
|
20
|
-
}) : (function(o, m, k, k2) {
|
|
21
|
-
if (k2 === undefined) k2 = k;
|
|
22
|
-
o[k2] = m[k];
|
|
23
|
-
}));
|
|
24
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
-
}) : function(o, v) {
|
|
27
|
-
o["default"] = v;
|
|
28
|
-
});
|
|
29
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
-
if (mod && mod.__esModule) return mod;
|
|
31
|
-
var result = {};
|
|
32
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
-
__setModuleDefault(result, mod);
|
|
34
|
-
return result;
|
|
35
|
-
};
|
|
36
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
3
|
exports.defaultLineByLineRendererConfig = void 0;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const Rematch = tslib_1.__importStar(require("./rematch"));
|
|
6
|
+
const renderUtils = tslib_1.__importStar(require("./render-utils"));
|
|
7
|
+
const types_1 = require("./types");
|
|
8
|
+
exports.defaultLineByLineRendererConfig = Object.assign(Object.assign({}, renderUtils.defaultRenderConfig), { renderNothingWhenEmpty: false, matchingMaxComparisons: 2500, maxLineSizeInBlockForComparison: 200 });
|
|
9
|
+
const genericTemplatesPath = 'generic';
|
|
10
|
+
const baseTemplatesPath = 'line-by-line';
|
|
11
|
+
const iconsBaseTemplatesPath = 'icon';
|
|
12
|
+
const tagsBaseTemplatesPath = 'tag';
|
|
13
|
+
class LineByLineRenderer {
|
|
14
|
+
constructor(hoganUtils, config = {}) {
|
|
49
15
|
this.hoganUtils = hoganUtils;
|
|
50
|
-
this.config =
|
|
16
|
+
this.config = Object.assign(Object.assign({}, exports.defaultLineByLineRendererConfig), config);
|
|
51
17
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
var diffs;
|
|
18
|
+
render(diffFiles) {
|
|
19
|
+
const diffsHtml = diffFiles
|
|
20
|
+
.map(file => {
|
|
21
|
+
let diffs;
|
|
57
22
|
if (file.blocks.length) {
|
|
58
|
-
diffs =
|
|
23
|
+
diffs = this.generateFileHtml(file);
|
|
59
24
|
}
|
|
60
25
|
else {
|
|
61
|
-
diffs =
|
|
26
|
+
diffs = this.generateEmptyDiff();
|
|
62
27
|
}
|
|
63
|
-
return
|
|
28
|
+
return this.makeFileDiffHtml(file, diffs);
|
|
64
29
|
})
|
|
65
30
|
.join('\n');
|
|
66
31
|
return this.hoganUtils.render(genericTemplatesPath, 'wrapper', { content: diffsHtml });
|
|
67
|
-
}
|
|
68
|
-
|
|
32
|
+
}
|
|
33
|
+
makeFileDiffHtml(file, diffs) {
|
|
69
34
|
if (this.config.renderNothingWhenEmpty && Array.isArray(file.blocks) && file.blocks.length === 0)
|
|
70
35
|
return '';
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
36
|
+
const fileDiffTemplate = this.hoganUtils.template(baseTemplatesPath, 'file-diff');
|
|
37
|
+
const filePathTemplate = this.hoganUtils.template(genericTemplatesPath, 'file-path');
|
|
38
|
+
const fileIconTemplate = this.hoganUtils.template(iconsBaseTemplatesPath, 'file');
|
|
39
|
+
const fileTagTemplate = this.hoganUtils.template(tagsBaseTemplatesPath, renderUtils.getFileIcon(file));
|
|
75
40
|
return fileDiffTemplate.render({
|
|
76
41
|
file: file,
|
|
77
42
|
fileHtmlId: renderUtils.getHtmlId(file),
|
|
@@ -83,38 +48,35 @@ var LineByLineRenderer = (function () {
|
|
|
83
48
|
fileTag: fileTagTemplate,
|
|
84
49
|
}),
|
|
85
50
|
});
|
|
86
|
-
}
|
|
87
|
-
|
|
51
|
+
}
|
|
52
|
+
generateEmptyDiff() {
|
|
88
53
|
return this.hoganUtils.render(genericTemplatesPath, 'empty-diff', {
|
|
89
54
|
contentClass: 'd2h-code-line',
|
|
90
55
|
CSSLineClass: renderUtils.CSSLineClass,
|
|
91
56
|
});
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
var matcher = Rematch.newMatcherFn(Rematch.newDistanceFn(function (e) { return renderUtils.deconstructLine(e.content, file.isCombined).content; }));
|
|
57
|
+
}
|
|
58
|
+
generateFileHtml(file) {
|
|
59
|
+
const matcher = Rematch.newMatcherFn(Rematch.newDistanceFn((e) => renderUtils.deconstructLine(e.content, file.isCombined).content));
|
|
96
60
|
return file.blocks
|
|
97
|
-
.map(
|
|
98
|
-
|
|
61
|
+
.map(block => {
|
|
62
|
+
let lines = this.hoganUtils.render(genericTemplatesPath, 'block-header', {
|
|
99
63
|
CSSLineClass: renderUtils.CSSLineClass,
|
|
100
64
|
blockHeader: file.isTooBig ? block.header : renderUtils.escapeForHtml(block.header),
|
|
101
65
|
lineClass: 'd2h-code-linenumber',
|
|
102
66
|
contentClass: 'd2h-code-line',
|
|
103
67
|
});
|
|
104
|
-
|
|
105
|
-
var contextLines = _a[0], oldLines = _a[1], newLines = _a[2];
|
|
68
|
+
this.applyLineGroupping(block).forEach(([contextLines, oldLines, newLines]) => {
|
|
106
69
|
if (oldLines.length && newLines.length && !contextLines.length) {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
var _b = _this.processChangedLines(file, file.isCombined, oldLines, newLines), left = _b.left, right = _b.right;
|
|
70
|
+
this.applyRematchMatching(oldLines, newLines, matcher).map(([oldLines, newLines]) => {
|
|
71
|
+
const { left, right } = this.processChangedLines(file, file.isCombined, oldLines, newLines);
|
|
110
72
|
lines += left;
|
|
111
73
|
lines += right;
|
|
112
74
|
});
|
|
113
75
|
}
|
|
114
76
|
else if (contextLines.length) {
|
|
115
|
-
contextLines.forEach(
|
|
116
|
-
|
|
117
|
-
lines +=
|
|
77
|
+
contextLines.forEach(line => {
|
|
78
|
+
const { prefix, content } = renderUtils.deconstructLine(line.content, file.isCombined);
|
|
79
|
+
lines += this.generateSingleLineHtml(file, {
|
|
118
80
|
type: renderUtils.CSSLineClass.CONTEXT,
|
|
119
81
|
prefix: prefix,
|
|
120
82
|
content: content,
|
|
@@ -124,7 +86,7 @@ var LineByLineRenderer = (function () {
|
|
|
124
86
|
});
|
|
125
87
|
}
|
|
126
88
|
else if (oldLines.length || newLines.length) {
|
|
127
|
-
|
|
89
|
+
const { left, right } = this.processChangedLines(file, file.isCombined, oldLines, newLines);
|
|
128
90
|
lines += left;
|
|
129
91
|
lines += right;
|
|
130
92
|
}
|
|
@@ -135,13 +97,13 @@ var LineByLineRenderer = (function () {
|
|
|
135
97
|
return lines;
|
|
136
98
|
})
|
|
137
99
|
.join('\n');
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
for (
|
|
144
|
-
|
|
100
|
+
}
|
|
101
|
+
applyLineGroupping(block) {
|
|
102
|
+
const blockLinesGroups = [];
|
|
103
|
+
let oldLines = [];
|
|
104
|
+
let newLines = [];
|
|
105
|
+
for (let i = 0; i < block.lines.length; i++) {
|
|
106
|
+
const diffLine = block.lines[i];
|
|
145
107
|
if ((diffLine.type !== types_1.LineType.INSERT && newLines.length) ||
|
|
146
108
|
(diffLine.type === types_1.LineType.CONTEXT && oldLines.length > 0)) {
|
|
147
109
|
blockLinesGroups.push([[], oldLines, newLines]);
|
|
@@ -167,59 +129,59 @@ var LineByLineRenderer = (function () {
|
|
|
167
129
|
newLines = [];
|
|
168
130
|
}
|
|
169
131
|
return blockLinesGroups;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
132
|
+
}
|
|
133
|
+
applyRematchMatching(oldLines, newLines, matcher) {
|
|
134
|
+
const comparisons = oldLines.length * newLines.length;
|
|
135
|
+
const maxLineSizeInBlock = Math.max.apply(null, [0].concat(oldLines.concat(newLines).map(elem => elem.content.length)));
|
|
136
|
+
const doMatching = comparisons < this.config.matchingMaxComparisons &&
|
|
175
137
|
maxLineSizeInBlock < this.config.maxLineSizeInBlockForComparison &&
|
|
176
138
|
(this.config.matching === 'lines' || this.config.matching === 'words');
|
|
177
139
|
return doMatching ? matcher(oldLines, newLines) : [[oldLines, newLines]];
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
|
|
140
|
+
}
|
|
141
|
+
processChangedLines(file, isCombined, oldLines, newLines) {
|
|
142
|
+
const fileHtml = {
|
|
181
143
|
right: '',
|
|
182
144
|
left: '',
|
|
183
145
|
};
|
|
184
|
-
|
|
185
|
-
for (
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
146
|
+
const maxLinesNumber = Math.max(oldLines.length, newLines.length);
|
|
147
|
+
for (let i = 0; i < maxLinesNumber; i++) {
|
|
148
|
+
const oldLine = oldLines[i];
|
|
149
|
+
const newLine = newLines[i];
|
|
150
|
+
const diff = oldLine !== undefined && newLine !== undefined
|
|
189
151
|
? renderUtils.diffHighlight(oldLine.content, newLine.content, isCombined, this.config)
|
|
190
152
|
: undefined;
|
|
191
|
-
|
|
192
|
-
?
|
|
153
|
+
const preparedOldLine = oldLine !== undefined && oldLine.oldNumber !== undefined
|
|
154
|
+
? Object.assign(Object.assign({}, (diff !== undefined
|
|
193
155
|
? {
|
|
194
156
|
prefix: diff.oldLine.prefix,
|
|
195
157
|
content: diff.oldLine.content,
|
|
196
158
|
type: renderUtils.CSSLineClass.DELETE_CHANGES,
|
|
197
159
|
}
|
|
198
|
-
:
|
|
199
|
-
|
|
200
|
-
?
|
|
160
|
+
: Object.assign(Object.assign({}, renderUtils.deconstructLine(oldLine.content, isCombined)), { type: renderUtils.toCSSClass(oldLine.type) }))), { oldNumber: oldLine.oldNumber, newNumber: oldLine.newNumber }) : undefined;
|
|
161
|
+
const preparedNewLine = newLine !== undefined && newLine.newNumber !== undefined
|
|
162
|
+
? Object.assign(Object.assign({}, (diff !== undefined
|
|
201
163
|
? {
|
|
202
164
|
prefix: diff.newLine.prefix,
|
|
203
165
|
content: diff.newLine.content,
|
|
204
166
|
type: renderUtils.CSSLineClass.INSERT_CHANGES,
|
|
205
167
|
}
|
|
206
|
-
:
|
|
207
|
-
|
|
168
|
+
: Object.assign(Object.assign({}, renderUtils.deconstructLine(newLine.content, isCombined)), { type: renderUtils.toCSSClass(newLine.type) }))), { oldNumber: newLine.oldNumber, newNumber: newLine.newNumber }) : undefined;
|
|
169
|
+
const { left, right } = this.generateLineHtml(file, preparedOldLine, preparedNewLine);
|
|
208
170
|
fileHtml.left += left;
|
|
209
171
|
fileHtml.right += right;
|
|
210
172
|
}
|
|
211
173
|
return fileHtml;
|
|
212
|
-
}
|
|
213
|
-
|
|
174
|
+
}
|
|
175
|
+
generateLineHtml(file, oldLine, newLine) {
|
|
214
176
|
return {
|
|
215
177
|
left: this.generateSingleLineHtml(file, oldLine),
|
|
216
178
|
right: this.generateSingleLineHtml(file, newLine),
|
|
217
179
|
};
|
|
218
|
-
}
|
|
219
|
-
|
|
180
|
+
}
|
|
181
|
+
generateSingleLineHtml(file, line) {
|
|
220
182
|
if (line === undefined)
|
|
221
183
|
return '';
|
|
222
|
-
|
|
184
|
+
const lineNumberHtml = this.hoganUtils.render(baseTemplatesPath, 'numbers', {
|
|
223
185
|
oldNumber: line.oldNumber || '',
|
|
224
186
|
newNumber: line.newNumber || '',
|
|
225
187
|
});
|
|
@@ -230,11 +192,10 @@ var LineByLineRenderer = (function () {
|
|
|
230
192
|
prefix: line.prefix === ' ' ? ' ' : line.prefix,
|
|
231
193
|
content: line.content,
|
|
232
194
|
lineNumber: lineNumberHtml,
|
|
233
|
-
line
|
|
234
|
-
file
|
|
195
|
+
line,
|
|
196
|
+
file,
|
|
235
197
|
});
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
}());
|
|
198
|
+
}
|
|
199
|
+
}
|
|
239
200
|
exports.default = LineByLineRenderer;
|
|
240
201
|
//# sourceMappingURL=line-by-line-renderer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"line-by-line-renderer.js","sourceRoot":"","sources":["../src/line-by-line-renderer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"line-by-line-renderer.js","sourceRoot":"","sources":["../src/line-by-line-renderer.ts"],"names":[],"mappings":"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"}
|
package/lib/rematch.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export
|
|
1
|
+
export type BestMatch = {
|
|
2
2
|
indexA: number;
|
|
3
3
|
indexB: number;
|
|
4
4
|
score: number;
|
|
5
5
|
};
|
|
6
6
|
export declare function levenshtein(a: string, b: string): number;
|
|
7
|
-
export
|
|
7
|
+
export type DistanceFn<T> = (x: T, y: T) => number;
|
|
8
8
|
export declare function newDistanceFn<T>(str: (value: T) => string): DistanceFn<T>;
|
|
9
|
-
export
|
|
9
|
+
export type MatcherFn<T> = (a: T[], b: T[], level?: number, cache?: Map<string, number>) => T[][][];
|
|
10
10
|
export declare function newMatcherFn<T>(distance: (x: T, y: T) => number): MatcherFn<T>;
|
|
11
11
|
//# sourceMappingURL=rematch.d.ts.map
|
package/lib/rematch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rematch.d.ts","sourceRoot":"","sources":["../src/rematch.ts"],"names":[],"mappings":"AAKA,
|
|
1
|
+
{"version":3,"file":"rematch.d.ts","sourceRoot":"","sources":["../src/rematch.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAcF,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAwCxD;AAED,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC;AAEnD,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAOzE;AAED,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;AAEpG,wBAAgB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAwD9E"}
|
package/lib/rematch.js
CHANGED
|
@@ -8,12 +8,12 @@ function levenshtein(a, b) {
|
|
|
8
8
|
if (b.length === 0) {
|
|
9
9
|
return a.length;
|
|
10
10
|
}
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
const matrix = [];
|
|
12
|
+
let i;
|
|
13
13
|
for (i = 0; i <= b.length; i++) {
|
|
14
14
|
matrix[i] = [i];
|
|
15
15
|
}
|
|
16
|
-
|
|
16
|
+
let j;
|
|
17
17
|
for (j = 0; j <= a.length; j++) {
|
|
18
18
|
matrix[0][j] = j;
|
|
19
19
|
}
|
|
@@ -31,23 +31,22 @@ function levenshtein(a, b) {
|
|
|
31
31
|
}
|
|
32
32
|
exports.levenshtein = levenshtein;
|
|
33
33
|
function newDistanceFn(str) {
|
|
34
|
-
return
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
return (x, y) => {
|
|
35
|
+
const xValue = str(x).trim();
|
|
36
|
+
const yValue = str(y).trim();
|
|
37
|
+
const lev = levenshtein(xValue, yValue);
|
|
38
38
|
return lev / (xValue.length + yValue.length);
|
|
39
39
|
};
|
|
40
40
|
}
|
|
41
41
|
exports.newDistanceFn = newDistanceFn;
|
|
42
42
|
function newMatcherFn(distance) {
|
|
43
|
-
function findBestMatch(a, b, cache) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
var md = void 0;
|
|
43
|
+
function findBestMatch(a, b, cache = new Map()) {
|
|
44
|
+
let bestMatchDist = Infinity;
|
|
45
|
+
let bestMatch;
|
|
46
|
+
for (let i = 0; i < a.length; ++i) {
|
|
47
|
+
for (let j = 0; j < b.length; ++j) {
|
|
48
|
+
const cacheKey = JSON.stringify([a[i], b[j]]);
|
|
49
|
+
let md;
|
|
51
50
|
if (!(cache.has(cacheKey) && (md = cache.get(cacheKey)))) {
|
|
52
51
|
md = distance(a[i], b[j]);
|
|
53
52
|
cache.set(cacheKey, md);
|
|
@@ -60,25 +59,23 @@ function newMatcherFn(distance) {
|
|
|
60
59
|
}
|
|
61
60
|
return bestMatch;
|
|
62
61
|
}
|
|
63
|
-
function group(a, b, level, cache) {
|
|
64
|
-
|
|
65
|
-
if (cache === void 0) { cache = new Map(); }
|
|
66
|
-
var bm = findBestMatch(a, b, cache);
|
|
62
|
+
function group(a, b, level = 0, cache = new Map()) {
|
|
63
|
+
const bm = findBestMatch(a, b, cache);
|
|
67
64
|
if (!bm || a.length + b.length < 3) {
|
|
68
65
|
return [[a, b]];
|
|
69
66
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
67
|
+
const a1 = a.slice(0, bm.indexA);
|
|
68
|
+
const b1 = b.slice(0, bm.indexB);
|
|
69
|
+
const aMatch = [a[bm.indexA]];
|
|
70
|
+
const bMatch = [b[bm.indexB]];
|
|
71
|
+
const tailA = bm.indexA + 1;
|
|
72
|
+
const tailB = bm.indexB + 1;
|
|
73
|
+
const a2 = a.slice(tailA);
|
|
74
|
+
const b2 = b.slice(tailB);
|
|
75
|
+
const group1 = group(a1, b1, level + 1, cache);
|
|
76
|
+
const groupMatch = group(aMatch, bMatch, level + 1, cache);
|
|
77
|
+
const group2 = group(a2, b2, level + 1, cache);
|
|
78
|
+
let result = groupMatch;
|
|
82
79
|
if (bm.indexA > 0 || bm.indexB > 0) {
|
|
83
80
|
result = group1.concat(result);
|
|
84
81
|
}
|
package/lib/rematch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rematch.js","sourceRoot":"","sources":["../src/rematch.ts"],"names":[],"mappings":";;;AAuBA,SAAgB,WAAW,CAAC,CAAS,EAAE,CAAS;IAC9C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;QAClB,OAAO,CAAC,CAAC,MAAM,CAAC;KACjB;IACD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;QAClB,OAAO,CAAC,CAAC,MAAM,CAAC;KACjB;IAED,
|
|
1
|
+
{"version":3,"file":"rematch.js","sourceRoot":"","sources":["../src/rematch.ts"],"names":[],"mappings":"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"}
|
package/lib/render-utils.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { LineMatchingType, DiffStyleType, LineType, DiffLineParts, DiffFile, DiffFileName } from './types';
|
|
2
|
-
export
|
|
2
|
+
export type CSSLineClass = 'd2h-ins' | 'd2h-del' | 'd2h-cntx' | 'd2h-info' | 'd2h-ins d2h-change' | 'd2h-del d2h-change';
|
|
3
3
|
export declare const CSSLineClass: {
|
|
4
4
|
[_: string]: CSSLineClass;
|
|
5
5
|
};
|
|
6
|
-
export
|
|
6
|
+
export type HighlightedLines = {
|
|
7
7
|
oldLine: {
|
|
8
8
|
prefix: string;
|
|
9
9
|
content: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-utils.d.ts","sourceRoot":"","sources":["../src/render-utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE3G,
|
|
1
|
+
{"version":3,"file":"render-utils.d.ts","sourceRoot":"","sources":["../src/render-utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE3G,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,SAAS,GACT,UAAU,GACV,UAAU,GACV,oBAAoB,GACpB,oBAAoB,CAAC;AAEzB,eAAO,MAAM,YAAY,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,YAAY,CAAA;CAOrD,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED,eAAO,MAAM,mBAAmB;;;;;CAK/B,CAAC;AAqBF,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAS3D;AAaD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CASjD;AAKD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,UAAO,GAAG,aAAa,CAM/F;AAaD,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CA4DvD;AAKD,wBAAgB,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAEpD;AAKD,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAiBlD;AAKD,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,OAAO,EACnB,MAAM,GAAE,YAAiB,GACxB,gBAAgB,CA4DlB"}
|