Initial Commit

This commit is contained in:
2026-01-15 21:52:12 +01:00
parent 3ed42cdeb6
commit 9c5b22667c
6699 changed files with 1387815 additions and 0 deletions

View File

@@ -0,0 +1,15 @@
export interface CompareLinesResult {
/**
* Whether compared lines are identical.
*/
isEqual: boolean;
/**
* Lines that were not compared due to unbalanced buffers.
*/
restLines1: string[];
/**
* Lines that were not compared due to unbalanced buffers.
*/
restLines2: string[];
}
//# sourceMappingURL=CompareLinesResult.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"CompareLinesResult.d.ts","sourceRoot":"","sources":["../../../../../src/fileCompareHandler/lines/compare/CompareLinesResult.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IAC/B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAA;IAChB;;OAEG;IACH,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB;;OAEG;IACH,UAAU,EAAE,MAAM,EAAE,CAAA;CACvB"}

View File

@@ -0,0 +1,3 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=CompareLinesResult.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"CompareLinesResult.js","sourceRoot":"","sources":["../../../../../src/fileCompareHandler/lines/compare/CompareLinesResult.ts"],"names":[],"mappings":""}

View File

@@ -0,0 +1,27 @@
import { Options } from '../../../index';
import { LineBatch } from '../lineReader/LineBatch';
interface RestLines {
restLines1: string[];
restLines2: string[];
}
interface CompareLineBatchResult {
reachedEof: boolean;
batchIsEqual: boolean;
/**
* Lines that were not compared because the two line batches
* contained different number of lines.
* These remaining lines will be compared in the next step.
*/
restLines: RestLines;
}
/**
* Compares two batches of lines.
*
* @param lineBatch1 Batch to compare.
* @param lineBatch2 Batch to compare.
* @param context Comparison context.
* @param options Comparison options.
*/
export declare function compareLineBatches(lineBatch1: LineBatch, lineBatch2: LineBatch, options: Options): CompareLineBatchResult;
export {};
//# sourceMappingURL=compareLineBatches.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"compareLineBatches.d.ts","sourceRoot":"","sources":["../../../../../src/fileCompareHandler/lines/compare/compareLineBatches.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAGnD,UAAU,SAAS;IACf,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,UAAU,EAAE,MAAM,EAAE,CAAA;CACvB;AAED,UAAU,sBAAsB;IAC5B,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,EAAE,OAAO,CAAA;IACrB;;;;OAIG;IACH,SAAS,EAAE,SAAS,CAAA;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,sBAAsB,CAuBzH"}

View File

@@ -0,0 +1,40 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.compareLineBatches = void 0;
const compareLines_1 = require("./compareLines");
/**
* Compares two batches of lines.
*
* @param lineBatch1 Batch to compare.
* @param lineBatch2 Batch to compare.
* @param context Comparison context.
* @param options Comparison options.
*/
function compareLineBatches(lineBatch1, lineBatch2, options) {
const compareResult = compareLines_1.compareLines(lineBatch1.lines, lineBatch2.lines, options);
if (!compareResult.isEqual) {
return { batchIsEqual: false, reachedEof: false, restLines: emptyRestLines() };
}
const reachedEof = lineBatch1.reachedEof && lineBatch2.reachedEof;
const hasMoreLinesToProcess = compareResult.restLines1.length > 0 || compareResult.restLines2.length > 0;
if (reachedEof && hasMoreLinesToProcess) {
return { batchIsEqual: false, reachedEof: true, restLines: emptyRestLines() };
}
if (reachedEof) {
return { batchIsEqual: true, reachedEof: true, restLines: emptyRestLines() };
}
return { batchIsEqual: true, reachedEof: false,
restLines: {
restLines1: compareResult.restLines1,
restLines2: compareResult.restLines2,
}
};
}
exports.compareLineBatches = compareLineBatches;
function emptyRestLines() {
return {
restLines1: [],
restLines2: []
};
}
//# sourceMappingURL=compareLineBatches.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"compareLineBatches.js","sourceRoot":"","sources":["../../../../../src/fileCompareHandler/lines/compare/compareLineBatches.ts"],"names":[],"mappings":";;;AAEA,iDAA6C;AAkB7C;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAAC,UAAqB,EAAE,UAAqB,EAAE,OAAgB;IAE7F,MAAM,aAAa,GAAG,2BAAY,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAC/E,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;QACxB,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,EAAC,CAAA;KAChF;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,UAAU,CAAC,UAAU,CAAA;IACjE,MAAM,qBAAqB,GAAG,aAAa,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAA;IACxG,IAAI,UAAU,IAAI,qBAAqB,EAAE;QACrC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAG,SAAS,EAAE,cAAc,EAAE,EAAC,CAAA;KAChF;IAED,IAAI,UAAU,EAAE;QACZ,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAG,SAAS,EAAE,cAAc,EAAE,EAAC,CAAA;KAC/E;IAED,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK;QAC1C,SAAS,EAAE;YACP,UAAU,EAAE,aAAa,CAAC,UAAU;YACpC,UAAU,EAAE,aAAa,CAAC,UAAU;SACvC;KACJ,CAAA;AACL,CAAC;AAvBD,gDAuBC;AAED,SAAS,cAAc;IACnB,OAAO;QACH,UAAU,EAAE,EAAE;QACd,UAAU,EAAE,EAAE;KACjB,CAAA;AACL,CAAC"}

View File

@@ -0,0 +1,4 @@
import { Options } from "../../../index";
import { CompareLinesResult } from "./CompareLinesResult";
export declare function compareLines(lines1: string[], lines2: string[], options: Options): CompareLinesResult;
//# sourceMappingURL=compareLines.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"compareLines.d.ts","sourceRoot":"","sources":["../../../../../src/fileCompareHandler/lines/compare/compareLines.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAMzD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,kBAAkB,CAkBrG"}

View File

@@ -0,0 +1,78 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.compareLines = void 0;
const TRIM_WHITE_SPACES_REGEXP = /^[ \f\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+|[ \f\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+$/g;
const TRIM_LINE_ENDING_REGEXP = /\r\n|\n$/g;
const REMOVE_WHITE_SPACES_REGEXP = /[ \f\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]/g;
function compareLines(lines1, lines2, options) {
if (options.ignoreEmptyLines) {
lines1 = removeEmptyLines(lines1);
lines2 = removeEmptyLines(lines2);
}
const len = Math.min(lines1.length, lines2.length);
let i = 0;
for (; i < len; i++) {
const isEqual = compareLine(options, lines1[i], lines2[i]);
if (!isEqual) {
return { isEqual: false, restLines1: [], restLines2: [] };
}
}
return {
isEqual: true,
restLines1: lines1.slice(i),
restLines2: lines2.slice(i)
};
}
exports.compareLines = compareLines;
function compareLine(options, line1, line2) {
if (options.ignoreLineEnding) {
line1 = trimLineEnding(line1);
line2 = trimLineEnding(line2);
}
if (options.ignoreWhiteSpaces) {
line1 = trimSpaces(line1);
line2 = trimSpaces(line2);
}
if (options.ignoreAllWhiteSpaces) {
line1 = removeSpaces(line1);
line2 = removeSpaces(line2);
}
return line1 === line2;
}
// Trims string like ' abc \n' into 'abc\n'
function trimSpaces(s) {
const { content, lineEnding } = separateEol(s);
const trimmed = content.replace(TRIM_WHITE_SPACES_REGEXP, '');
return trimmed + lineEnding;
}
function trimLineEnding(s) {
return s.replace(TRIM_LINE_ENDING_REGEXP, '');
}
function removeSpaces(s) {
return s.replace(REMOVE_WHITE_SPACES_REGEXP, '');
}
function removeEmptyLines(lines) {
return lines.filter(line => !isEmptyLine(line));
}
function isEmptyLine(line) {
return line === '\n' || line === '\r\n';
}
function separateEol(s) {
const len = s.length;
let lineEnding = '';
let content = s;
if (s[len - 1] === '\n') {
if (s[len - 2] === '\r') {
return {
lineEnding: '\r\n',
content: s.slice(0, len - 2)
};
}
{
lineEnding = '\n';
content = s.slice(0, len - 1);
}
}
return { content, lineEnding };
}
//# sourceMappingURL=compareLines.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"compareLines.js","sourceRoot":"","sources":["../../../../../src/fileCompareHandler/lines/compare/compareLines.ts"],"names":[],"mappings":"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"}