UNPKG

json-joy

Version:

Collection of libraries for building collaborative editing apps.

29 lines (28 loc) 861 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.applyOp = applyOp; exports.applyOps = applyOps; exports.applyPatch = applyPatch; const clone_1 = require("@jsonjoy.com/util/lib/json-clone/clone"); const json_1 = require("../codec/json"); function applyOp(doc, op, mutate) { if (!mutate) doc = (0, clone_1.clone)(doc); return op.apply(doc); } function applyOps(doc, ops, mutate) { if (!mutate) doc = (0, clone_1.clone)(doc); const res = []; const length = ops.length; for (let i = 0; i < length; i++) { const opResult = ops[i].apply(doc); doc = opResult.doc; res.push(opResult); } return { doc, res }; } function applyPatch(doc, patch, options) { const result = applyOps(doc, (0, json_1.decode)(patch, options), options.mutate); return result; }