"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.VersionParser = void 0; const buffer_1 = require("buffer"); // NodeJS library class VersionParser { constructor(deltaParser, versionRegistry) { this.deltaParser = deltaParser; this.versionRegistry = versionRegistry; } load({ externalDependencies, deltas, versions }, onLoadDelta, onLoadVersion) { for (const e of externalDependencies) { if (this.versionRegistry.lookupOptional(buffer_1.Buffer.from(e, 'hex')) === undefined) { throw new Error("Cannot load versions: missing dependency: " + e); } } for (const d of deltas) { const loadedDelta = this.deltaParser.loadDelta(d); onLoadDelta(loadedDelta); } for (const { id, delta, parent, embeddings } of versions) { const parentVersion = this.versionRegistry.lookup(buffer_1.Buffer.from(parent, 'hex')); const parentDelta = this.deltaParser.deltaRegistry.deltas.get(delta); const theEmbeddings = new Map(); const selfEmbeddingKeys = new Set(); for (const { guestId, v, ovr } of embeddings) { console.log({ guestId, v, id }); if (v === id) { selfEmbeddingKeys.add(guestId); } else { const guestVersion = this.versionRegistry.lookupOptional(buffer_1.Buffer.from(v, 'hex')); for (const [key, val] of Object.entries(ovr)) { const guestDelta = this.deltaParser.deltaRegistry.deltas.get(key); const hostDelta = this.deltaParser.deltaRegistry.deltas.get(val); theEmbeddings.set(guestDelta, hostDelta); } } } const loadedVersion = this.versionRegistry.createVersion(parentVersion, parentDelta, newVersion => { for (const guestId of selfEmbeddingKeys) { theEmbeddings.set(guestId, { version: newVersion, overridings: new Map() }); } return theEmbeddings; }); onLoadVersion(loadedVersion); } } } exports.VersionParser = VersionParser; //# sourceMappingURL=version_parser.js.map