version_parser.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.VersionParser = void 0;
  4. const buffer_1 = require("buffer"); // NodeJS library
  5. class VersionParser {
  6. constructor(deltaParser, versionRegistry) {
  7. this.deltaParser = deltaParser;
  8. this.versionRegistry = versionRegistry;
  9. }
  10. load({ externalDependencies, deltas, versions }, onLoadDelta, onLoadVersion) {
  11. for (const e of externalDependencies) {
  12. if (this.versionRegistry.lookupOptional(buffer_1.Buffer.from(e, 'hex')) === undefined) {
  13. throw new Error("Cannot load versions: missing dependency: " + e);
  14. }
  15. }
  16. for (const d of deltas) {
  17. const loadedDelta = this.deltaParser.loadDelta(d);
  18. onLoadDelta(loadedDelta);
  19. }
  20. for (const { id, delta, parent, embeddings } of versions) {
  21. const parentVersion = this.versionRegistry.lookup(buffer_1.Buffer.from(parent, 'hex'));
  22. const parentDelta = this.deltaParser.deltaRegistry.deltas.get(delta);
  23. const theEmbeddings = new Map();
  24. const selfEmbeddingKeys = new Set();
  25. for (const { guestId, v, ovr } of embeddings) {
  26. console.log({ guestId, v, id });
  27. if (v === id) {
  28. selfEmbeddingKeys.add(guestId);
  29. }
  30. else {
  31. const guestVersion = this.versionRegistry.lookupOptional(buffer_1.Buffer.from(v, 'hex'));
  32. for (const [key, val] of Object.entries(ovr)) {
  33. const guestDelta = this.deltaParser.deltaRegistry.deltas.get(key);
  34. const hostDelta = this.deltaParser.deltaRegistry.deltas.get(val);
  35. theEmbeddings.set(guestDelta, hostDelta);
  36. }
  37. }
  38. }
  39. const loadedVersion = this.versionRegistry.createVersion(parentVersion, parentDelta, newVersion => {
  40. for (const guestId of selfEmbeddingKeys) {
  41. theEmbeddings.set(guestId, { version: newVersion, overridings: new Map() });
  42. }
  43. return theEmbeddings;
  44. });
  45. onLoadVersion(loadedVersion);
  46. }
  47. }
  48. }
  49. exports.VersionParser = VersionParser;
  50. //# sourceMappingURL=version_parser.js.map