"use strict"; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.DeltaParser = void 0; class DeltaParser { constructor(deltaRegistry) { this.deltaRegistry = deltaRegistry; } getDependency(hash) { const result = this.deltaRegistry.deltas.get(hash); if (result === undefined) throw new Error("Could not dependency: " + hash); return result; } loadTarget(_a) { var { type } = _a, rest = __rest(_a, ["type"]); if (type === "TargetValue") { const { value } = rest; return value; } if (type === "TargetNode") { const { node } = rest; return this.getDependency(node); } throw new Error("Unknown edge target type: " + type); } loadEdge(_a) { var { type } = _a, rest = __rest(_a, ["type"]); if (type === "NewEdge") { const { source, label } = rest; return this.getDependency(source).createOutgoingEdge(label); } else if (type === "ExistingEdge") { const { overwrites } = rest; return this.getDependency(overwrites).overwrite(); } throw new Error("Unknown edge type: " + type); } loadDelta(_a) { var { type } = _a, rest = __rest(_a, ["type"]); if (type === "NodeCreation") { const { id } = rest; return this.deltaRegistry.newNodeCreation(id); } else if (type === "EdgeUpdate") { const { overwrites, reads, target } = rest; return this.deltaRegistry.newEdgeUpdate(this.loadEdge(overwrites), this.loadTarget(target), reads.map(r => this.loadEdge(r))); } else if (type === "NodeDeletion") { const { node, afterSrc, afterTgt } = rest; return this.deltaRegistry.newNodeDeletion(this.getDependency(node), afterSrc.map(a => this.getDependency(a)), afterTgt.map(a => this.getDependency(a))); } else if (type === "Transaction") { const { type, deltas, dependencies, description } = rest; return this.deltaRegistry.newTransaction(deltas.map(d => this.getDependency(d)), description, dependencies.map(d => this.getDependency(d))); } throw new Error("Unknown delta type: " + type); } } exports.DeltaParser = DeltaParser; //# sourceMappingURL=delta_parser.js.map