delta_parser.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. "use strict";
  2. var __rest = (this && this.__rest) || function (s, e) {
  3. var t = {};
  4. for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
  5. t[p] = s[p];
  6. if (s != null && typeof Object.getOwnPropertySymbols === "function")
  7. for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
  8. if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
  9. t[p[i]] = s[p[i]];
  10. }
  11. return t;
  12. };
  13. Object.defineProperty(exports, "__esModule", { value: true });
  14. exports.DeltaParser = void 0;
  15. class DeltaParser {
  16. constructor(deltaRegistry) {
  17. this.deltaRegistry = deltaRegistry;
  18. }
  19. getDependency(hash) {
  20. const result = this.deltaRegistry.deltas.get(hash);
  21. if (result === undefined)
  22. throw new Error("Could not dependency: " + hash);
  23. return result;
  24. }
  25. loadTarget(_a) {
  26. var { type } = _a, rest = __rest(_a, ["type"]);
  27. if (type === "TargetValue") {
  28. const { value } = rest;
  29. return value;
  30. }
  31. if (type === "TargetNode") {
  32. const { node } = rest;
  33. return this.getDependency(node);
  34. }
  35. throw new Error("Unknown edge target type: " + type);
  36. }
  37. loadEdge(_a) {
  38. var { type } = _a, rest = __rest(_a, ["type"]);
  39. if (type === "NewEdge") {
  40. const { source, label } = rest;
  41. return this.getDependency(source).createOutgoingEdge(label);
  42. }
  43. else if (type === "ExistingEdge") {
  44. const { overwrites } = rest;
  45. return this.getDependency(overwrites).overwrite();
  46. }
  47. throw new Error("Unknown edge type: " + type);
  48. }
  49. loadDelta(_a) {
  50. var { type } = _a, rest = __rest(_a, ["type"]);
  51. if (type === "NodeCreation") {
  52. const { id } = rest;
  53. return this.deltaRegistry.newNodeCreation(id);
  54. }
  55. else if (type === "EdgeUpdate") {
  56. const { overwrites, reads, target } = rest;
  57. return this.deltaRegistry.newEdgeUpdate(this.loadEdge(overwrites), this.loadTarget(target), reads.map(r => this.loadEdge(r)));
  58. }
  59. else if (type === "NodeDeletion") {
  60. const { node, afterSrc, afterTgt } = rest;
  61. return this.deltaRegistry.newNodeDeletion(this.getDependency(node), afterSrc.map(a => this.getDependency(a)), afterTgt.map(a => this.getDependency(a)));
  62. }
  63. else if (type === "Transaction") {
  64. const { type, deltas, dependencies, description } = rest;
  65. return this.deltaRegistry.newTransaction(deltas.map(d => this.getDependency(d)), description, dependencies.map(d => this.getDependency(d)));
  66. }
  67. throw new Error("Unknown delta type: " + type);
  68. }
  69. }
  70. exports.DeltaParser = DeltaParser;
  71. //# sourceMappingURL=delta_parser.js.map