generate-differences
Version:
Generate differences between original source and formmated source
103 lines (98 loc) • 2.52 kB
text/typescript
interface DiffMatchPathOptions {
/**
* Number of seconds to map a diff before giving up (0 for infinity).
* @default 1.0
*/
diffTimeout?: number;
/**
* Cost of an empty edit operation in terms of edit characters.
* @default 4
*/
diffEditCost?: number;
/**
* At what point is no match declared (0.0 = perfection, 1.0 = very loose).
* @default 0.5
*/
matchThreshold?: number;
/**
* How far to search for a match (0 = exact location, 1000+ = broad match).
* @default 1000
*/
matchDistance?: number;
/**
* When deleting a large block of text (over ~64 characters), how close do
* the contents have to be to match the expected contents.
* (0.0 = perfection, 1.0 = very loose).
* @default 0.5
*/
patchDeleteThreshold?: number;
/**
* Chunk size for context length.
* @default 4
*/
patchMargin?: number;
/**
* The number of bits in an int.
* @default 32
*/
matchMaxBits?: number;
}
type DifferenceDelete = {
deleteText: string;
offset: number;
operation: 'delete';
};
type DifferenceInsert = {
insertText: string;
offset: number;
operation: 'insert';
};
type DifferenceReplace = {
deleteText: string;
insertText: string;
offset: number;
operation: 'replace';
};
/**
* @pg
*/
type Difference = DifferenceDelete | DifferenceInsert | DifferenceReplace;
interface Options extends DiffMatchPathOptions {
/**
* @default 0
*/
offset?: number;
}
declare const DIFFERENCE: {
readonly DELETE: "delete";
readonly INSERT: "insert";
readonly REPLACE: "replace";
};
/**
* Generate differences between original source and formmated source
*
* @param source - original source
* @param formatted - formatted source
* @param options - diff-match-patch options
* @returns generated differences
*
* @example
*
* ```ts
* import { generateDifferences } from 'generate-differences'
*
* const differences = generateDifferences('abc', 'edf')
*
* console.log({ differences })
* // [
* // {
* // "deleteText": "abc",
* // "insertText": "edf",
* // "offset": 0,
* // "operation": "replace",
* // },
* // ]
* ```
*/
declare function generateDifferences(source: string, formatted: string, options?: Options): Difference[];
export { DIFFERENCE, type Difference, type DifferenceDelete, type DifferenceInsert, type DifferenceReplace, type Options, generateDifferences };