UNPKG

jsondiffpatch

Version:

JSON diff & patch (object and array diff, text diff, multiple output formats)

45 lines (44 loc) 1.87 kB
import clone from "./clone.js"; import DiffContext from "./contexts/diff.js"; import PatchContext from "./contexts/patch.js"; import ReverseContext from "./contexts/reverse.js"; import Pipe from "./pipe.js"; import Processor from "./processor.js"; import * as arrays from "./filters/arrays.js"; import * as dates from "./filters/dates.js"; import * as nested from "./filters/nested.js"; import * as texts from "./filters/texts.js"; import * as trivial from "./filters/trivial.js"; class DiffPatcher { constructor(options) { this.processor = new Processor(options); this.processor.pipe(new Pipe("diff") .append(nested.collectChildrenDiffFilter, trivial.diffFilter, dates.diffFilter, texts.diffFilter, nested.objectsDiffFilter, arrays.diffFilter) .shouldHaveResult()); this.processor.pipe(new Pipe("patch") .append(nested.collectChildrenPatchFilter, arrays.collectChildrenPatchFilter, trivial.patchFilter, texts.patchFilter, nested.patchFilter, arrays.patchFilter) .shouldHaveResult()); this.processor.pipe(new Pipe("reverse") .append(nested.collectChildrenReverseFilter, arrays.collectChildrenReverseFilter, trivial.reverseFilter, texts.reverseFilter, nested.reverseFilter, arrays.reverseFilter) .shouldHaveResult()); } options(options) { return this.processor.options(options); } diff(left, right) { return this.processor.process(new DiffContext(left, right)); } patch(left, delta) { return this.processor.process(new PatchContext(left, delta)); } reverse(delta) { return this.processor.process(new ReverseContext(delta)); } unpatch(right, delta) { return this.patch(right, this.reverse(delta)); } clone(value) { return clone(value); } } export default DiffPatcher;