UNPKG

@electric-sql/d2mini

Version:

D2Mini is a minimal implementation of Differential Dataflow for performing in-memory incremental view maintenance.

38 lines 1.32 kB
import { DifferenceStreamWriter, UnaryOperator } from '../graph.js'; import { StreamBuilder } from '../d2.js'; import { MultiSet } from '../multiset.js'; /** * Operator that consolidates collections */ export class ConsolidateOperator extends UnaryOperator { run() { const messages = this.inputMessages(); if (messages.length === 0) { return; } // Combine all messages into a single MultiSet const combined = new MultiSet(); for (const message of messages) { combined.extend(message); } // Consolidate the combined MultiSet const consolidated = combined.consolidate(); // Only send if there are results if (consolidated.getInner().length > 0) { this.output.sendData(consolidated); } } } /** * Consolidates the elements in the stream */ export function consolidate() { return (stream) => { const output = new StreamBuilder(stream.graph, new DifferenceStreamWriter()); const operator = new ConsolidateOperator(stream.graph.getNextOperatorId(), stream.connectReader(), output.writer); stream.graph.addOperator(operator); stream.graph.addStream(output.connectReader()); return output; }; } //# sourceMappingURL=consolidate.js.map