UNPKG

@tanstack/db-ivm

Version:

Incremental View Maintenance for TanStack DB based on Differential Dataflow

75 lines (74 loc) 2.75 kB
"use strict"; 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