UNPKG

@iyio/convo-lang

Version:

A conversational language.

128 lines 4.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ConvoMemoryGraphStore = void 0; const common_1 = require("@iyio/common"); const rxjs_1 = require("rxjs"); class ConvoMemoryGraphStore { get onDbChange() { return this._onDbChange; } constructor({ graphId, db = { nodes: [], edges: [], traversers: [], }, }) { this._onDbChange = new rxjs_1.Subject(); this.graphId = graphId; this.db = { nodes: db.nodes ?? [], edges: db.edges ?? [], traversers: db.traversers ?? [], inputs: db.inputs ?? [], sourceNodes: db.sourceNodes ?? [], }; if (!this.db.inputs) { this.db.inputs = []; } } saveChangesAsync() { // do nothing return Promise.resolve(); } getNodeAsync(id) { return Promise.resolve(this.db.nodes.find(g => g.id === id)); } putNodeAsync(node) { const index = this.db.nodes.findIndex(g => g.id === node.id); if (index === -1) { (0, common_1.wAryPush)(this.db.nodes, node); } else { (0, common_1.wArySplice)(this.db.nodes, index, 1, node); } this._onDbChange.next({ node, nodeId: node.id }); return Promise.resolve(); } deleteNodeAsync(id) { const index = this.db.nodes.findIndex(g => g.id === id); if (index !== -1) { (0, common_1.wArySplice)(this.db.nodes, index, 1); } this._onDbChange.next({ nodeId: id }); return Promise.resolve(); } getNodeEdgesAsync(nodeId, side) { return Promise.resolve(this.db.edges.filter(e => side === 'to' ? e.to === nodeId : e.from === nodeId)); } getEdgeAsync(id) { return Promise.resolve(this.db.edges.find(g => g.id === id)); } putEdgeAsync(edge) { const index = this.db.edges.findIndex(g => g.id === edge.id); if (index === -1) { (0, common_1.wAryPush)(this.db.edges, edge); } else { (0, common_1.wArySplice)(this.db.edges, index, 1, edge); } this._onDbChange.next({ edge, edgeId: edge.id }); return Promise.resolve(); } deleteEdgeAsync(id) { const index = this.db.edges.findIndex(g => g.id === id); if (index !== -1) { (0, common_1.wArySplice)(this.db.edges, index, 1); } this._onDbChange.next({ edgeId: id }); return Promise.resolve(); } getTraverserAsync(id) { return Promise.resolve(this.db.traversers.find(g => g.id === id)); } putTraverserAsync(traverser) { const index = this.db.traversers.findIndex(g => g.id === traverser.id); if (index === -1) { (0, common_1.wAryPush)(this.db.traversers, traverser); } else { (0, common_1.wArySplice)(this.db.traversers, index, 1, traverser); } this._onDbChange.next({ traverser, traverserId: traverser.id }); return Promise.resolve(); } deleteTraverserAsync(id) { const index = this.db.traversers.findIndex(g => g.id === id); if (index !== -1) { (0, common_1.wArySplice)(this.db.traversers, index, 1); } this._onDbChange.next({ traverserId: id }); return Promise.resolve(); } getSourceNodesAsync() { return Promise.resolve([...this.db.sourceNodes]); } getSourceNodeAsync(id) { return Promise.resolve(this.db.sourceNodes.find(g => g.id === id)); } putSourceNodeAsync(sourceNode) { const index = this.db.sourceNodes.findIndex(g => g.id === sourceNode.id); if (index === -1) { (0, common_1.wAryPush)(this.db.sourceNodes, sourceNode); } else { (0, common_1.wArySplice)(this.db.sourceNodes, index, 1, sourceNode); } this._onDbChange.next({ sourceNode, traverserId: sourceNode.id }); return Promise.resolve(); } deleteSourceNodeAsync(id) { const index = this.db.sourceNodes.findIndex(g => g.id === id); if (index !== -1) { (0, common_1.wArySplice)(this.db.sourceNodes, index, 1); } this._onDbChange.next({ traverserId: id }); return Promise.resolve(); } } exports.ConvoMemoryGraphStore = ConvoMemoryGraphStore; //# sourceMappingURL=ConvoMemoryGraphStore.js.map