@electric-sql/d2ts
Version:
D2TS is a TypeScript implementation of Differential Dataflow.
40 lines (39 loc) • 1.61 kB
TypeScript
import { Version, Antichain } from './order.js';
import { MultiSet } from './multiset.js';
import { DefaultMap } from './utils.js';
type VersionMap<T> = DefaultMap<Version, T[]>;
export interface IndexType<K, V> {
reconstructAt(key: K, requestedVersion: Version): [V, number][];
versions(key: K): Version[];
addValue(key: K, version: Version, value: [V, number]): void;
append(other: IndexType<K, V>): void;
join<V2>(other: IndexType<K, V2>): [Version, MultiSet<[K, [V, V2]]>][];
compact(compactionFrontier: Antichain, keys: K[]): void;
keys(): K[];
has(key: K): boolean;
}
/**
* A map from a difference collection trace's keys -> versions at which
* the key has nonzero multiplicity -> (value, multiplicities) that changed.
*
* Used in operations like join and reduce where the operation needs to
* exploit the key-value structure of the data to run efficiently.
*
* This implementation supports the general case of partially ordered versions.
*/
export declare class Index<K, V> implements IndexType<K, V> {
#private;
constructor();
toString(indent?: boolean): string;
reconstructAt(key: K, requestedVersion: Version): [V, number][];
get(key: K): VersionMap<[V, number]>;
entries(): [K, VersionMap<[V, number]>][];
versions(key: K): Version[];
addValue(key: K, version: Version, value: [V, number]): void;
append(other: Index<K, V>): void;
join<V2>(other: Index<K, V2>): [Version, MultiSet<[K, [V, V2]]>][];
compact(compactionFrontier: Antichain, keys?: K[]): void;
keys(): K[];
has(key: K): boolean;
}
export {};