UNPKG

generate-differences

Version:

Generate differences between original source and formmated source

103 lines (98 loc) 2.52 kB
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 };