@electric-sql/d2ts
Version:
D2TS is a TypeScript implementation of Differential Dataflow.
30 lines • 1.18 kB
JavaScript
import { MessageType } from '../types.js';
import { UnaryOperator } from '../graph.js';
/**
* Base class for operators that process a single input stream
*/
export class LinearUnaryOperator extends UnaryOperator {
run() {
for (const message of this.inputMessages()) {
if (message.type === MessageType.DATA) {
const { version, collection } = message.data;
this.output.sendData(version, this.inner(collection));
}
else if (message.type === MessageType.FRONTIER) {
const frontier = message.data;
if (!this.inputFrontier().lessEqual(frontier)) {
throw new Error('Invalid frontier update');
}
this.setInputFrontier(frontier);
}
}
if (!this.outputFrontier.lessEqual(this.inputFrontier())) {
throw new Error('Invalid frontier state');
}
if (this.outputFrontier.lessThan(this.inputFrontier())) {
this.outputFrontier = this.inputFrontier();
this.output.sendFrontier(this.outputFrontier);
}
}
}
//# sourceMappingURL=base.js.map