@tanstack/db-ivm
Version:
Incremental View Maintenance for TanStack DB based on Differential Dataflow
75 lines (74 loc) • 2.75 kB
JavaScript
var __typeError = (msg) => {
throw TypeError(msg);
};
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
var _inner, _ValueIndex_instances, setMultiplicity_fn;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const hash = require("./hashing/hash.cjs");
class ValueIndex {
// Maps key to the value and its multiplicity
constructor() {
__privateAdd(this, _ValueIndex_instances);
__privateAdd(this, _inner);
__privateSet(this, _inner, /* @__PURE__ */ new Map());
}
toString(indent = false) {
return `ValueIndex(${JSON.stringify(
[...__privateGet(this, _inner).entries()],
void 0,
indent ? 2 : void 0
)})`;
}
get(key) {
return __privateGet(this, _inner).get(key);
}
getMultiplicity(key) {
var _a;
return ((_a = this.get(key)) == null ? void 0 : _a[1]) ?? 0;
}
entries() {
return __privateGet(this, _inner).entries();
}
has(key) {
return __privateGet(this, _inner).has(key);
}
delete(key) {
__privateGet(this, _inner).delete(key);
}
get size() {
return __privateGet(this, _inner).size;
}
addValue(key, v) {
const [value, multiplicity] = v;
if (multiplicity === 0) {
return;
}
if (this.has(key)) {
const [currValue, currMultiplicity] = this.get(key);
if (hash.hash(value) === hash.hash(currValue)) {
__privateMethod(this, _ValueIndex_instances, setMultiplicity_fn).call(this, key, value, currMultiplicity + multiplicity);
return;
}
throw new Error(
`Cannot add value for key ${key} because it already exists in ValueIndex with a different value`
);
}
__privateGet(this, _inner).set(key, [value, multiplicity]);
}
}
_inner = new WeakMap();
_ValueIndex_instances = new WeakSet();
setMultiplicity_fn = function(key, value, multiplicity) {
if (multiplicity === 0) {
__privateGet(this, _inner).delete(key);
} else {
__privateGet(this, _inner).set(key, [value, multiplicity]);
}
};
exports.ValueIndex = ValueIndex;
//# sourceMappingURL=valueIndex.cjs.map
;