@instantdb/core 0.22.86-experimental.split-store.20249342206.1 → 0.22.86-experimental.split-store.20250097559.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"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"}
@@ -399,6 +399,7 @@ function mergeTriple(store, attrsStore, rawTriple) {
399
399
  getCreatedAt(store, attr, currentTriple),
400
400
  ];
401
401
  setInMap(store.eav, [eid, aid], new Map([[updatedValue, enhancedTriple]]));
402
+ setInMap(store.aev, [aid, eid], new Map([[updatedValue, enhancedTriple]]));
402
403
  }
403
404
  function deleteEntity(store, attrsStore, args) {
404
405
  var _a, _b;
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"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","sourcesContent":["import { create } from 'mutative';\nimport { immutableDeepMerge } from './utils/object.js';\nimport { coerceToDate } from './utils/dates.ts';\nimport { InstantDBAttr } from './attrTypes.ts';\nimport { LinkIndex } from './utils/linkIndex.ts';\n\ntype Triple = [string, string, any, number];\ntype Attrs = Record<string, InstantDBAttr>;\n\ninterface AttrIndexes {\n blobAttrs: Map<string, Map<string, InstantDBAttr>>;\n primaryKeys: Map<string, InstantDBAttr>;\n forwardIdents: Map<string, Map<string, InstantDBAttr>>;\n revIdents: Map<string, Map<string, InstantDBAttr>>;\n}\n\nexport type Store = {\n eav: Map<string, Map<string, Map<any, Triple>>>;\n aev: Map<string, Map<string, Map<any, Triple>>>;\n vae: Map<any, Map<string, Map<string, Triple>>>;\n useDateObjects: boolean | null | undefined;\n cardinalityInference: boolean | null | undefined;\n};\n\ntype StoreJsonVersion0 = {\n __type: 'store';\n attrs: Attrs;\n triples: Triple[];\n cardinalityInference: boolean | null | undefined;\n linkIndex: LinkIndex | null;\n useDateObjects: boolean | null | undefined;\n};\n\ntype StoreJsonVersion1 = {\n triples: Triple[];\n cardinalityInference: boolean | null | undefined;\n useDateObjects: boolean | null | undefined;\n version: 1;\n};\n\nexport type StoreJson = StoreJsonVersion0 | StoreJsonVersion1;\n\nexport type AttrsStoreJson = {\n attrs: Attrs;\n linkIndex: LinkIndex | null;\n};\n\nexport interface AttrsStore {\n attrs: Attrs;\n linkIndex: LinkIndex | null;\n resetAttrIndexes(): void;\n addAttr(attr: InstantDBAttr): void;\n deleteAttr(attrId: string): void;\n updateAttr(partialAttr: Partial<InstantDBAttr> & { id: string }): void;\n getAttr(id: string): InstantDBAttr | undefined;\n blobAttrs: Map<string, Map<string, InstantDBAttr>>;\n primaryKeys: Map<string, InstantDBAttr>;\n forwardIdents: Map<string, Map<string, InstantDBAttr>>;\n revIdents: Map<string, Map<string, InstantDBAttr>>;\n toJSON(): AttrsStoreJson;\n}\n\nexport class AttrsStoreClass implements AttrsStore {\n public attrs: Attrs;\n public linkIndex: LinkIndex | null;\n private _blobAttrs: Map<string, Map<string, InstantDBAttr>> | null = null;\n private _primaryKeys: Map<string, InstantDBAttr> | null = null;\n private _forwardIdents: Map<string, Map<string, InstantDBAttr>> | null = null;\n private _revIdents: Map<string, Map<string, InstantDBAttr>> | null = null;\n constructor(attrs: Attrs, linkIndex: LinkIndex | null) {\n this.attrs = attrs;\n this.linkIndex = linkIndex;\n }\n\n public resetAttrIndexes() {\n this._blobAttrs = null;\n this._primaryKeys = null;\n this._forwardIdents = null;\n this._revIdents = null;\n }\n\n public addAttr(attr: InstantDBAttr) {\n this.attrs[attr.id] = attr;\n this.resetAttrIndexes();\n }\n\n public deleteAttr(attrId: string) {\n delete this.attrs[attrId];\n this.resetAttrIndexes();\n }\n\n public updateAttr(partialAttr: Partial<InstantDBAttr> & { id: string }) {\n const attr = this.attrs[partialAttr.id];\n if (!attr) return;\n this.attrs[partialAttr.id] = { ...attr, ...partialAttr };\n this.resetAttrIndexes();\n }\n\n public getAttr(id: string): InstantDBAttr | undefined {\n return this.attrs[id];\n }\n\n get blobAttrs(): Map<string, Map<string, InstantDBAttr>> {\n if (this._blobAttrs) {\n return this._blobAttrs;\n }\n this._blobAttrs = new Map();\n for (const attr of Object.values(this.attrs)) {\n if (isBlob(attr)) {\n const [_, fwdEtype, fwdLabel] = attr['forward-identity'];\n setInMap(this.blobAttrs, [fwdEtype, fwdLabel], attr);\n }\n }\n return this._blobAttrs;\n }\n\n get primaryKeys(): Map<string, InstantDBAttr> {\n if (this._primaryKeys) {\n return this._primaryKeys;\n }\n this._primaryKeys = new Map();\n\n for (const attr of Object.values(this.attrs)) {\n if (attr['primary?']) {\n const [_, fwdEtype] = attr['forward-identity'];\n setInMap(this._primaryKeys, [fwdEtype], attr);\n }\n }\n return this._primaryKeys;\n }\n\n get forwardIdents(): Map<string, Map<string, InstantDBAttr>> {\n if (this._forwardIdents) {\n return this._forwardIdents;\n }\n this._forwardIdents = new Map();\n\n for (const attr of Object.values(this.attrs)) {\n const fwdIdent = attr['forward-identity'];\n const [_, fwdEtype, fwdLabel] = fwdIdent;\n setInMap(this._forwardIdents, [fwdEtype, fwdLabel], attr);\n }\n return this._forwardIdents;\n }\n\n get revIdents(): Map<string, Map<string, InstantDBAttr>> {\n if (this._revIdents) {\n return this._revIdents;\n }\n this._revIdents = new Map();\n\n for (const attr of Object.values(this.attrs)) {\n const revIdent = attr['reverse-identity'];\n if (revIdent) {\n const [_, revEtype, revLabel] = revIdent;\n setInMap(this._revIdents, [revEtype, revLabel], attr);\n }\n }\n return this._revIdents;\n }\n\n public toJSON(): AttrsStoreJson {\n return { attrs: this.attrs, linkIndex: this.linkIndex };\n }\n}\n\nfunction hasEA(attr: InstantDBAttr) {\n return attr['cardinality'] === 'one';\n}\n\nfunction isRef(attr: InstantDBAttr) {\n return attr['value-type'] === 'ref';\n}\n\nexport function isBlob(attr: InstantDBAttr) {\n return attr['value-type'] === 'blob';\n}\n\nfunction getAttr(attrs: Attrs, attrId: string): InstantDBAttr | undefined {\n return attrs[attrId];\n}\n\nexport function getInMap(obj, path) {\n return path.reduce((acc, key) => acc && acc.get(key), obj);\n}\n\nfunction deleteInMap(m, path) {\n if (path.length === 0) throw new Error('path must have at least one element');\n if (path.length === 1) {\n m.delete(path[0]);\n return;\n }\n const [head, ...tail] = path;\n if (!m.has(head)) return;\n deleteInMap(m.get(head), tail);\n}\n\nfunction setInMap(m: Map<any, any>, path: any[], value: any) {\n let current = m;\n const lastI = path.length - 1;\n for (let i = 0; i < lastI; i++) {\n const part = path[i];\n\n let nextMap = current.get(part);\n if (nextMap === undefined) {\n nextMap = new Map();\n current.set(part, nextMap);\n }\n current = nextMap;\n }\n if (lastI > -1) {\n current.set(path[lastI], value);\n }\n}\n\nfunction isDateAttr(attr: InstantDBAttr) {\n return attr['checked-data-type'] === 'date';\n}\n\nfunction createTripleIndexes(\n attrsStore: AttrsStore,\n triples: Triple[],\n useDateObjects: boolean | null | undefined,\n): Pick<Store, 'eav' | 'aev' | 'vae'> {\n const eav = new Map();\n const aev = new Map();\n const vae = new Map();\n for (const triple of triples) {\n let [eid, aid, v] = triple;\n const attr = attrsStore.getAttr(aid);\n if (!attr) {\n console.warn('no such attr', aid, eid);\n continue;\n }\n\n if (attr['checked-data-type'] === 'date' && useDateObjects) {\n v = coerceToDate(v);\n triple[2] = v;\n }\n\n if (isRef(attr)) {\n setInMap(vae, [v, aid, eid], triple);\n }\n\n setInMap(eav, [eid, aid, v], triple);\n setInMap(aev, [aid, eid, v], triple);\n }\n return { eav, aev, vae };\n}\n\nfunction createAttrIndexes(attrs: Record<string, InstantDBAttr>): AttrIndexes {\n const blobAttrs = new Map();\n const primaryKeys = new Map();\n const forwardIdents = new Map();\n const revIdents = new Map();\n for (const attr of Object.values(attrs)) {\n const fwdIdent = attr['forward-identity'];\n const [_, fwdEtype, fwdLabel] = fwdIdent;\n const revIdent = attr['reverse-identity'];\n\n setInMap(forwardIdents, [fwdEtype, fwdLabel], attr);\n if (isBlob(attr)) {\n setInMap(blobAttrs, [fwdEtype, fwdLabel], attr);\n }\n if (attr['primary?']) {\n setInMap(primaryKeys, [fwdEtype], attr);\n }\n if (revIdent) {\n const [_, revEtype, revLabel] = revIdent;\n setInMap(revIdents, [revEtype, revLabel], attr);\n }\n }\n\n return { blobAttrs, primaryKeys, forwardIdents, revIdents };\n}\n\nexport function toJSON(store: Store): StoreJsonVersion1 {\n return {\n triples: allMapValues(store.eav, 3),\n cardinalityInference: store.cardinalityInference,\n useDateObjects: store.useDateObjects,\n version: 1,\n };\n}\n\nexport function fromJSON(attrsStore: AttrsStore, storeJSON: StoreJson): Store {\n return createStore(\n attrsStore,\n storeJSON.triples,\n storeJSON.cardinalityInference,\n storeJSON.useDateObjects,\n );\n}\n\nexport function attrsStoreFromJSON(\n attrsStoreJSON: AttrsStoreJson | null,\n storeJSON: StoreJson | null,\n): AttrsStore | undefined {\n if (attrsStoreJSON) {\n return new AttrsStoreClass(attrsStoreJSON.attrs, attrsStoreJSON.linkIndex);\n }\n if (storeJSON && '__type' in storeJSON) {\n return new AttrsStoreClass(storeJSON.attrs, storeJSON.linkIndex);\n }\n}\n\nexport function hasTriple(store: Store, [e, a, v]: [string, string, any]) {\n return getInMap(store.eav, [e, a, v]) !== undefined;\n}\n\nexport function hasEntity(store: Store, e: string) {\n return getInMap(store.eav, [e]) !== undefined;\n}\n\nexport function createStore(\n attrsStore: AttrsStore,\n triples: Triple[],\n enableCardinalityInference?: boolean | null,\n useDateObjects?: boolean | null,\n): Store {\n const store = createTripleIndexes(\n attrsStore,\n triples,\n useDateObjects,\n ) as unknown as Store;\n store.cardinalityInference = enableCardinalityInference;\n store.useDateObjects = useDateObjects;\n return store;\n}\n\n// We may have local triples with lookup refs in them,\n// we need to convert those lookup refs to eids to insert them\n// into the store. If we can't find the lookup ref locally,\n// then we drop the triple and have to wait for the server response\n// to see the optimistic updates.\nfunction resolveLookupRefs(store: Store, triple: Triple): Triple | null {\n let eid;\n\n // Check if `e` is a lookup ref\n if (Array.isArray(triple[0])) {\n const [a, v] = triple[0];\n const eMaps = store.aev.get(a);\n if (!eMaps) {\n // We don't have the attr, so don't try to add the\n // triple to the store\n return null;\n }\n // This would be a lot more efficient with a ave index\n const triples = allMapValues(eMaps, 2);\n eid = triples.find((x) => x[2] === v)?.[0];\n } else {\n eid = triple[0];\n }\n\n if (!eid) {\n // We don't know the eid that the ref refers to, so\n // we can't add the triple to the store.\n return null;\n }\n\n // Check if v is a lookup ref\n const lookupV = triple[2];\n if (\n Array.isArray(lookupV) &&\n lookupV.length === 2 &&\n store.aev.get(lookupV[0])\n ) {\n const [a, v] = lookupV;\n const eMaps = store.aev.get(a);\n if (!eMaps) {\n // We don't have the attr, so don't try to add the\n // triple to the store\n return null;\n }\n const triples = allMapValues(eMaps, 2);\n const value = triples.find((x) => x[2] === v)?.[0];\n if (!value) {\n return null;\n }\n const [_e, aid, _v, ...rest] = triple;\n return [eid, aid, value, ...rest];\n } else {\n const [_, ...rest] = triple;\n return [eid, ...rest];\n }\n}\n\nexport function retractTriple(\n store: Store,\n attrsStore: AttrsStore,\n rawTriple: Triple,\n): void {\n const triple = resolveLookupRefs(store, rawTriple);\n if (!triple) {\n return;\n }\n const [eid, aid, v] = triple;\n const attr = attrsStore.getAttr(aid);\n if (!attr) {\n return;\n }\n\n deleteInMap(store.eav, [eid, aid, v]);\n deleteInMap(store.aev, [aid, eid, v]);\n if (isRef(attr)) {\n deleteInMap(store.vae, [v, aid, eid]);\n }\n}\n\nlet _seed = 0;\nfunction getCreatedAt(\n store: Store,\n attr: InstantDBAttr,\n triple: Triple,\n): Number {\n const [eid, aid, v] = triple;\n let createdAt;\n\n const t = getInMap(store.eav, [eid, aid, v]);\n if (t) {\n createdAt = t[3];\n }\n\n /**\n * (XXX)\n * Two hacks here, for generating a `createdAt`\n *\n * 1. We multiply Date.now() by 10, to make sure that\n * `createdAt` is always greater than anything the server\n * could return\n *\n * We do this because right now we know we _only_ insert\n * triples as optimistic updates.\n *\n * 2. We increment by `_seed`, to make sure there are no\n * two triples with the same `createdAt`. This is\n * done to make tests more predictable.\n *\n * We may need to rethink this. Because we * 10, we can't\n * use this value as an _actual_ `createdAt` timestamp.\n * Eventually we may want too though; For example, we could\n * use `createdAt` for each triple, to infer a `createdAt` and\n * `updatedAt` value for each object.\n */\n return createdAt || Date.now() * 10 + _seed++;\n}\n\nexport function addTriple(\n store: Store,\n attrsStore: AttrsStore,\n rawTriple: Triple,\n) {\n const triple = resolveLookupRefs(store, rawTriple);\n if (!triple) {\n return;\n }\n let [eid, aid, v] = triple;\n const attr = attrsStore.getAttr(aid);\n if (!attr) {\n // (XXX): Due to the way we're handling attrs, it's\n // possible to enter a state where we receive a triple without an attr.\n // See: https://github.com/jsventures/instant-local/pull/132 for details.\n // For now, if we receive a command without an attr, we no-op.\n return;\n }\n\n if (attr['checked-data-type'] === 'date' && store.useDateObjects) {\n v = coerceToDate(v);\n }\n\n const existingTriple = getInMap(store.eav, [eid, aid, v]);\n // Reuse the created_at for a triple if it's already in the store.\n // Prevents updates from temporarily pushing an entity to the top\n // while waiting for the server response.\n const t = existingTriple?.[3] ?? getCreatedAt(store, attr, triple);\n const enhancedTriple = [eid, aid, v, t];\n\n if (hasEA(attr)) {\n setInMap(store.eav, [eid, aid], new Map([[v, enhancedTriple]]));\n setInMap(store.aev, [aid, eid], new Map([[v, enhancedTriple]]));\n } else {\n setInMap(store.eav, [eid, aid, v], enhancedTriple);\n setInMap(store.aev, [aid, eid, v], enhancedTriple);\n }\n\n if (isRef(attr)) {\n setInMap(store.vae, [v, aid, eid], enhancedTriple);\n }\n}\n\nfunction mergeTriple(store: Store, attrsStore: AttrsStore, rawTriple: Triple) {\n const triple = resolveLookupRefs(store, rawTriple);\n if (!triple) {\n return;\n }\n\n const [eid, aid, update] = triple;\n const attr = attrsStore.getAttr(aid);\n\n if (!attr) return;\n\n if (!isBlob(attr))\n throw new Error('merge operation is not supported for links');\n\n const eavValuesMap = getInMap(store.eav, [eid, aid]);\n if (!eavValuesMap) return;\n\n const currentTriple = eavValuesMap.values().next()?.value;\n if (!currentTriple) return;\n\n const currentValue = currentTriple[2];\n\n const updatedValue = immutableDeepMerge(currentValue, update);\n const enhancedTriple = [\n eid,\n aid,\n updatedValue,\n getCreatedAt(store, attr, currentTriple),\n ];\n\n setInMap(store.eav, [eid, aid], new Map([[updatedValue, enhancedTriple]]));\n}\n\nfunction deleteEntity(store: Store, attrsStore: AttrsStore, args: any[]) {\n const [lookup, etype] = args;\n const triple = resolveLookupRefs(store, [lookup] as unknown as Triple);\n\n if (!triple) {\n return;\n }\n const [id] = triple;\n\n // delete forward links and attributes + cardinality one links\n const eMap = store.eav.get(id);\n if (eMap) {\n for (const a of eMap.keys()) {\n const attr = attrsStore.getAttr(a);\n\n // delete cascade refs\n if (attr && attr['on-delete-reverse'] === 'cascade') {\n allMapValues(eMap.get(a), 1).forEach(\n ([e, a, v]: [string, string, any]) =>\n deleteEntity(store, attrsStore, [v, attr['reverse-identity']?.[1]]),\n );\n }\n\n if (\n // Fall back to deleting everything if we've rehydrated tx-steps from\n // the store that didn't set `etype` in deleteEntity\n !etype ||\n // If we don't know about the attr, let's just get rid of it\n !attr ||\n // Make sure it matches the etype\n attr['forward-identity']?.[1] === etype\n ) {\n deleteInMap(store.aev, [a, id]);\n deleteInMap(store.eav, [id, a]);\n }\n }\n // Clear out the eav index for `id` if we deleted all of the attributes\n if (eMap.size === 0) {\n deleteInMap(store.eav, [id]);\n }\n }\n\n // delete reverse links\n const vaeTriples = store.vae.get(id) && allMapValues(store.vae.get(id), 2);\n\n if (vaeTriples) {\n vaeTriples.forEach((triple: Triple) => {\n const [e, a, v] = triple;\n const attr = attrsStore.getAttr(a);\n if (!etype || !attr || attr['reverse-identity']?.[1] === etype) {\n deleteInMap(store.eav, [e, a, v]);\n deleteInMap(store.aev, [a, e, v]);\n deleteInMap(store.vae, [v, a, e]);\n }\n if (\n attr &&\n attr['on-delete'] === 'cascade' &&\n attr['reverse-identity']?.[1] === etype\n ) {\n deleteEntity(store, attrsStore, [e, attr['forward-identity']?.[1]]);\n }\n });\n }\n // Clear out vae index for `id` if we deleted all the reverse attributes\n if (store.vae.get(id)?.size === 0) {\n deleteInMap(store.vae, [id]);\n }\n}\n\n// (XXX): Whenever we change/delete attrs,\n// We indiscriminately reset the index map.\n// There are lots of opportunities for optimization:\n// * We _only_ need to run this indexes change. We could detect that\n// * We could batch this reset at the end\n// * We could add an ave index for all triples, so removing the\n// right triples is easy and fast.\nfunction resetIndexMap(store: Store, attrsStore, newTriples: Triple[]) {\n const newIndexMap = createTripleIndexes(\n attrsStore,\n newTriples,\n store.useDateObjects,\n );\n Object.keys(newIndexMap).forEach((key) => {\n store[key] = newIndexMap[key];\n });\n}\n\nfunction addAttr(attrsStore: AttrsStore, [attr]: [InstantDBAttr]) {\n attrsStore.addAttr(attr);\n}\n\nfunction getAllTriples(store: Store): Triple[] {\n return allMapValues(store.eav, 3);\n}\n\nfunction deleteAttr(store: Store, attrsStore: AttrsStore, [id]: [string]) {\n if (!attrsStore.getAttr(id)) return;\n const newTriples = getAllTriples(store).filter(([_, aid]) => aid !== id);\n attrsStore.deleteAttr(id);\n resetIndexMap(store, attrsStore, newTriples);\n}\n\nfunction updateAttr(\n store: Store,\n attrsStore: AttrsStore,\n [partialAttr]: [Partial<InstantDBAttr> & { id: string }],\n) {\n const attr = attrsStore.getAttr(partialAttr.id);\n if (!attr) return;\n attrsStore.updateAttr(partialAttr);\n resetIndexMap(store, attrsStore, getAllTriples(store));\n}\n\nfunction applyTxStep(store: Store, attrsStore: AttrsStore, txStep) {\n const [action, ...args] = txStep;\n switch (action) {\n case 'add-triple':\n addTriple(store, attrsStore, args);\n break;\n case 'deep-merge-triple':\n mergeTriple(store, attrsStore, args);\n break;\n case 'retract-triple':\n retractTriple(store, attrsStore, args);\n break;\n case 'delete-entity':\n deleteEntity(store, attrsStore, args);\n break;\n case 'add-attr':\n addAttr(attrsStore, args);\n break;\n case 'delete-attr':\n deleteAttr(store, attrsStore, args);\n break;\n case 'update-attr':\n updateAttr(store, attrsStore, args);\n break;\n case 'restore-attr':\n break;\n case 'rule-params':\n break;\n default:\n throw new Error(`unhandled transaction action: ${action}`);\n }\n}\n\nexport function allMapValues(m, level, res: any[] = []) {\n if (!m) {\n return res;\n }\n if (level === 0) {\n return res;\n }\n if (level === 1) {\n for (const v of m.values()) {\n res.push(v);\n }\n return res;\n }\n for (const v of m.values()) {\n allMapValues(v, level - 1, res);\n }\n\n return res;\n}\n\nfunction triplesByValue(store: Store, m: Map<any, Triple>, v: any) {\n const res: Triple[] = [];\n if (v?.hasOwnProperty('$not')) {\n for (const candidate of m.keys()) {\n if (v.$not !== candidate) {\n res.push(m.get(candidate) as Triple);\n }\n }\n return res;\n }\n\n if (v?.hasOwnProperty('$isNull')) {\n const { attrId, isNull, reverse } = v.$isNull;\n\n if (reverse) {\n for (const candidate of m.keys()) {\n const vMap = store.vae.get(candidate);\n const isValNull = !vMap || !vMap.get(attrId);\n if (isNull ? isValNull : !isValNull) {\n res.push(m.get(candidate) as Triple);\n }\n }\n } else {\n const aMap = store.aev.get(attrId);\n for (const candidate of m.keys()) {\n const isValNull =\n !aMap || aMap.get(candidate)?.get(null) || !aMap.get(candidate);\n if (isNull ? isValNull : !isValNull) {\n res.push(m.get(candidate) as Triple);\n }\n }\n }\n return res;\n }\n\n if (v?.$comparator) {\n // TODO: A sorted index would be nice here\n return allMapValues(m, 1).filter(v.$op);\n }\n\n const values = v.in || v.$in || [v];\n\n for (const value of values) {\n const triple = m.get(value);\n if (triple) {\n res.push(triple);\n }\n }\n\n return res;\n}\n\n// A poor man's pattern matching\n// Returns either eav, ea, ev, av, v, or ''\nfunction whichIdx(e, a, v): 'eav' | 'ea' | 'ev' | 'av' | 'e' | 'a' | 'v' | '' {\n let res = '';\n if (e !== undefined) {\n res += 'e';\n }\n if (a !== undefined) {\n res += 'a';\n }\n if (v !== undefined) {\n res += 'v';\n }\n return res as 'eav' | 'ea' | 'ev' | 'av' | 'e' | 'a' | 'v' | '';\n}\n\nexport function getTriples(store, [e, a, v]) {\n const idx = whichIdx(e, a, v);\n switch (idx) {\n case 'e': {\n const eMap = store.eav.get(e);\n return allMapValues(eMap, 2);\n }\n case 'ea': {\n const aMap = store.eav.get(e)?.get(a);\n return allMapValues(aMap, 1);\n }\n case 'eav': {\n const aMap = store.eav.get(e)?.get(a);\n if (!aMap) {\n return [];\n }\n return triplesByValue(store, aMap, v);\n }\n case 'ev': {\n const eMap = store.eav.get(e);\n if (!eMap) {\n return [];\n }\n const res: Triple[] = [];\n for (const aMap of eMap.values()) {\n res.push(...triplesByValue(store, aMap, v));\n }\n return res;\n }\n case 'a': {\n const aMap = store.aev.get(a);\n return allMapValues(aMap, 2);\n }\n case 'av': {\n const aMap = store.aev.get(a);\n if (!aMap) {\n return [];\n }\n const res: Triple[] = [];\n for (const eMap of aMap.values()) {\n res.push(...triplesByValue(store, eMap, v));\n }\n return res;\n }\n case 'v': {\n const res: Triple[] = [];\n for (const eMap of store.eav.values()) {\n for (const aMap of eMap.values()) {\n res.push(...triplesByValue(store, aMap, v));\n }\n }\n return res;\n }\n default: {\n return allMapValues(store.eav, 3);\n }\n }\n}\n\nexport function getAsObject(\n store: Store,\n attrs: Map<string, InstantDBAttr> | undefined,\n e: string,\n) {\n const obj = {};\n\n if (!attrs) {\n return obj;\n }\n\n for (const [label, attr] of attrs.entries()) {\n const aMap = store.eav.get(e)?.get(attr.id);\n const triples = allMapValues(aMap, 1);\n for (const triple of triples) {\n obj[label] = triple[2];\n }\n }\n\n return obj;\n}\n\nexport function getAttrByFwdIdentName(\n attrsStore: AttrsStore,\n inputEtype: string,\n inputLabel: string,\n) {\n return attrsStore.forwardIdents.get(inputEtype)?.get(inputLabel);\n}\n\nexport function getAttrByReverseIdentName(\n attrsStore: AttrsStore,\n inputEtype: string,\n inputLabel: string,\n) {\n return attrsStore.revIdents.get(inputEtype)?.get(inputLabel);\n}\n\nexport function getBlobAttrs(attrsStore: AttrsStore, etype: string) {\n return attrsStore.blobAttrs.get(etype);\n}\n\nexport function getPrimaryKeyAttr(attrsStore: AttrsStore, etype: string) {\n const fromPrimary = attrsStore.primaryKeys.get(etype);\n if (fromPrimary) {\n return fromPrimary;\n }\n return attrsStore.forwardIdents.get(etype)?.get('id');\n}\n\nfunction findTriple(\n store: Store,\n attrsStore: AttrsStore,\n rawTriple: [string, string, any] | Triple,\n): Triple | undefined {\n const triple = resolveLookupRefs(store, rawTriple as Triple);\n if (!triple) {\n return;\n }\n\n const [eid, aid, v] = triple;\n const attr = attrsStore.getAttr(aid);\n if (!attr) {\n // (XXX): Due to the way we're handling attrs, it's\n // possible to enter a state where we receive a triple without an attr.\n // See: https://github.com/jsventures/instant-local/pull/132 for details.\n // For now, if we receive a command without an attr, we no-op.\n return;\n }\n\n return getInMap(store.eav, [eid, aid]);\n}\n\nexport function transact(\n store: Store,\n attrsStore: AttrsStore,\n txSteps,\n): { store: Store; attrsStore: AttrsStore } {\n const txStepsFiltered = txSteps.filter(\n ([action, eid, attrId, value, opts]) => {\n if (action !== 'add-triple' && action !== 'deep-merge-triple') {\n return true;\n }\n\n const mode = opts?.mode;\n if (mode !== 'create' && mode !== 'update') {\n return true;\n }\n\n let exists = false;\n\n const attr = attrsStore.getAttr(attrId);\n if (attr) {\n const idAttr = getPrimaryKeyAttr(\n attrsStore,\n attr['forward-identity'][1],\n );\n exists = !!findTriple(store, attrsStore, [\n eid as string,\n idAttr?.id as string,\n eid,\n ]);\n }\n\n if (mode === 'create' && exists) {\n return false;\n }\n\n if (mode === 'update' && !exists) {\n return false;\n }\n\n return true;\n },\n );\n\n return create(\n { store, attrsStore },\n (draft) => {\n txStepsFiltered.forEach((txStep) => {\n applyTxStep(draft.store, draft.attrsStore, txStep);\n });\n },\n {\n mark: (target) => {\n if (target instanceof AttrsStoreClass) {\n return 'immutable';\n }\n },\n },\n );\n}\n"]}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"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","sourcesContent":["import { create } from 'mutative';\nimport { immutableDeepMerge } from './utils/object.js';\nimport { coerceToDate } from './utils/dates.ts';\nimport { InstantDBAttr } from './attrTypes.ts';\nimport { LinkIndex } from './utils/linkIndex.ts';\n\ntype Triple = [string, string, any, number];\ntype Attrs = Record<string, InstantDBAttr>;\n\ninterface AttrIndexes {\n blobAttrs: Map<string, Map<string, InstantDBAttr>>;\n primaryKeys: Map<string, InstantDBAttr>;\n forwardIdents: Map<string, Map<string, InstantDBAttr>>;\n revIdents: Map<string, Map<string, InstantDBAttr>>;\n}\n\nexport type Store = {\n eav: Map<string, Map<string, Map<any, Triple>>>;\n aev: Map<string, Map<string, Map<any, Triple>>>;\n vae: Map<any, Map<string, Map<string, Triple>>>;\n useDateObjects: boolean | null | undefined;\n cardinalityInference: boolean | null | undefined;\n};\n\ntype StoreJsonVersion0 = {\n __type: 'store';\n attrs: Attrs;\n triples: Triple[];\n cardinalityInference: boolean | null | undefined;\n linkIndex: LinkIndex | null;\n useDateObjects: boolean | null | undefined;\n};\n\ntype StoreJsonVersion1 = {\n triples: Triple[];\n cardinalityInference: boolean | null | undefined;\n useDateObjects: boolean | null | undefined;\n version: 1;\n};\n\nexport type StoreJson = StoreJsonVersion0 | StoreJsonVersion1;\n\nexport type AttrsStoreJson = {\n attrs: Attrs;\n linkIndex: LinkIndex | null;\n};\n\nexport interface AttrsStore {\n attrs: Attrs;\n linkIndex: LinkIndex | null;\n resetAttrIndexes(): void;\n addAttr(attr: InstantDBAttr): void;\n deleteAttr(attrId: string): void;\n updateAttr(partialAttr: Partial<InstantDBAttr> & { id: string }): void;\n getAttr(id: string): InstantDBAttr | undefined;\n blobAttrs: Map<string, Map<string, InstantDBAttr>>;\n primaryKeys: Map<string, InstantDBAttr>;\n forwardIdents: Map<string, Map<string, InstantDBAttr>>;\n revIdents: Map<string, Map<string, InstantDBAttr>>;\n toJSON(): AttrsStoreJson;\n}\n\nexport class AttrsStoreClass implements AttrsStore {\n public attrs: Attrs;\n public linkIndex: LinkIndex | null;\n private _blobAttrs: Map<string, Map<string, InstantDBAttr>> | null = null;\n private _primaryKeys: Map<string, InstantDBAttr> | null = null;\n private _forwardIdents: Map<string, Map<string, InstantDBAttr>> | null = null;\n private _revIdents: Map<string, Map<string, InstantDBAttr>> | null = null;\n constructor(attrs: Attrs, linkIndex: LinkIndex | null) {\n this.attrs = attrs;\n this.linkIndex = linkIndex;\n }\n\n public resetAttrIndexes() {\n this._blobAttrs = null;\n this._primaryKeys = null;\n this._forwardIdents = null;\n this._revIdents = null;\n }\n\n public addAttr(attr: InstantDBAttr) {\n this.attrs[attr.id] = attr;\n this.resetAttrIndexes();\n }\n\n public deleteAttr(attrId: string) {\n delete this.attrs[attrId];\n this.resetAttrIndexes();\n }\n\n public updateAttr(partialAttr: Partial<InstantDBAttr> & { id: string }) {\n const attr = this.attrs[partialAttr.id];\n if (!attr) return;\n this.attrs[partialAttr.id] = { ...attr, ...partialAttr };\n this.resetAttrIndexes();\n }\n\n public getAttr(id: string): InstantDBAttr | undefined {\n return this.attrs[id];\n }\n\n get blobAttrs(): Map<string, Map<string, InstantDBAttr>> {\n if (this._blobAttrs) {\n return this._blobAttrs;\n }\n this._blobAttrs = new Map();\n for (const attr of Object.values(this.attrs)) {\n if (isBlob(attr)) {\n const [_, fwdEtype, fwdLabel] = attr['forward-identity'];\n setInMap(this.blobAttrs, [fwdEtype, fwdLabel], attr);\n }\n }\n return this._blobAttrs;\n }\n\n get primaryKeys(): Map<string, InstantDBAttr> {\n if (this._primaryKeys) {\n return this._primaryKeys;\n }\n this._primaryKeys = new Map();\n\n for (const attr of Object.values(this.attrs)) {\n if (attr['primary?']) {\n const [_, fwdEtype] = attr['forward-identity'];\n setInMap(this._primaryKeys, [fwdEtype], attr);\n }\n }\n return this._primaryKeys;\n }\n\n get forwardIdents(): Map<string, Map<string, InstantDBAttr>> {\n if (this._forwardIdents) {\n return this._forwardIdents;\n }\n this._forwardIdents = new Map();\n\n for (const attr of Object.values(this.attrs)) {\n const fwdIdent = attr['forward-identity'];\n const [_, fwdEtype, fwdLabel] = fwdIdent;\n setInMap(this._forwardIdents, [fwdEtype, fwdLabel], attr);\n }\n return this._forwardIdents;\n }\n\n get revIdents(): Map<string, Map<string, InstantDBAttr>> {\n if (this._revIdents) {\n return this._revIdents;\n }\n this._revIdents = new Map();\n\n for (const attr of Object.values(this.attrs)) {\n const revIdent = attr['reverse-identity'];\n if (revIdent) {\n const [_, revEtype, revLabel] = revIdent;\n setInMap(this._revIdents, [revEtype, revLabel], attr);\n }\n }\n return this._revIdents;\n }\n\n public toJSON(): AttrsStoreJson {\n return { attrs: this.attrs, linkIndex: this.linkIndex };\n }\n}\n\nfunction hasEA(attr: InstantDBAttr) {\n return attr['cardinality'] === 'one';\n}\n\nfunction isRef(attr: InstantDBAttr) {\n return attr['value-type'] === 'ref';\n}\n\nexport function isBlob(attr: InstantDBAttr) {\n return attr['value-type'] === 'blob';\n}\n\nfunction getAttr(attrs: Attrs, attrId: string): InstantDBAttr | undefined {\n return attrs[attrId];\n}\n\nexport function getInMap(obj, path) {\n return path.reduce((acc, key) => acc && acc.get(key), obj);\n}\n\nfunction deleteInMap(m, path) {\n if (path.length === 0) throw new Error('path must have at least one element');\n if (path.length === 1) {\n m.delete(path[0]);\n return;\n }\n const [head, ...tail] = path;\n if (!m.has(head)) return;\n deleteInMap(m.get(head), tail);\n}\n\nfunction setInMap(m: Map<any, any>, path: any[], value: any) {\n let current = m;\n const lastI = path.length - 1;\n for (let i = 0; i < lastI; i++) {\n const part = path[i];\n\n let nextMap = current.get(part);\n if (nextMap === undefined) {\n nextMap = new Map();\n current.set(part, nextMap);\n }\n current = nextMap;\n }\n if (lastI > -1) {\n current.set(path[lastI], value);\n }\n}\n\nfunction isDateAttr(attr: InstantDBAttr) {\n return attr['checked-data-type'] === 'date';\n}\n\nfunction createTripleIndexes(\n attrsStore: AttrsStore,\n triples: Triple[],\n useDateObjects: boolean | null | undefined,\n): Pick<Store, 'eav' | 'aev' | 'vae'> {\n const eav = new Map();\n const aev = new Map();\n const vae = new Map();\n for (const triple of triples) {\n let [eid, aid, v] = triple;\n const attr = attrsStore.getAttr(aid);\n if (!attr) {\n console.warn('no such attr', aid, eid);\n continue;\n }\n\n if (attr['checked-data-type'] === 'date' && useDateObjects) {\n v = coerceToDate(v);\n triple[2] = v;\n }\n\n if (isRef(attr)) {\n setInMap(vae, [v, aid, eid], triple);\n }\n\n setInMap(eav, [eid, aid, v], triple);\n setInMap(aev, [aid, eid, v], triple);\n }\n return { eav, aev, vae };\n}\n\nfunction createAttrIndexes(attrs: Record<string, InstantDBAttr>): AttrIndexes {\n const blobAttrs = new Map();\n const primaryKeys = new Map();\n const forwardIdents = new Map();\n const revIdents = new Map();\n for (const attr of Object.values(attrs)) {\n const fwdIdent = attr['forward-identity'];\n const [_, fwdEtype, fwdLabel] = fwdIdent;\n const revIdent = attr['reverse-identity'];\n\n setInMap(forwardIdents, [fwdEtype, fwdLabel], attr);\n if (isBlob(attr)) {\n setInMap(blobAttrs, [fwdEtype, fwdLabel], attr);\n }\n if (attr['primary?']) {\n setInMap(primaryKeys, [fwdEtype], attr);\n }\n if (revIdent) {\n const [_, revEtype, revLabel] = revIdent;\n setInMap(revIdents, [revEtype, revLabel], attr);\n }\n }\n\n return { blobAttrs, primaryKeys, forwardIdents, revIdents };\n}\n\nexport function toJSON(store: Store): StoreJsonVersion1 {\n return {\n triples: allMapValues(store.eav, 3),\n cardinalityInference: store.cardinalityInference,\n useDateObjects: store.useDateObjects,\n version: 1,\n };\n}\n\nexport function fromJSON(attrsStore: AttrsStore, storeJSON: StoreJson): Store {\n return createStore(\n attrsStore,\n storeJSON.triples,\n storeJSON.cardinalityInference,\n storeJSON.useDateObjects,\n );\n}\n\nexport function attrsStoreFromJSON(\n attrsStoreJSON: AttrsStoreJson | null,\n storeJSON: StoreJson | null,\n): AttrsStore | undefined {\n if (attrsStoreJSON) {\n return new AttrsStoreClass(attrsStoreJSON.attrs, attrsStoreJSON.linkIndex);\n }\n if (storeJSON && '__type' in storeJSON) {\n return new AttrsStoreClass(storeJSON.attrs, storeJSON.linkIndex);\n }\n}\n\nexport function hasTriple(store: Store, [e, a, v]: [string, string, any]) {\n return getInMap(store.eav, [e, a, v]) !== undefined;\n}\n\nexport function hasEntity(store: Store, e: string) {\n return getInMap(store.eav, [e]) !== undefined;\n}\n\nexport function createStore(\n attrsStore: AttrsStore,\n triples: Triple[],\n enableCardinalityInference?: boolean | null,\n useDateObjects?: boolean | null,\n): Store {\n const store = createTripleIndexes(\n attrsStore,\n triples,\n useDateObjects,\n ) as unknown as Store;\n store.cardinalityInference = enableCardinalityInference;\n store.useDateObjects = useDateObjects;\n return store;\n}\n\n// We may have local triples with lookup refs in them,\n// we need to convert those lookup refs to eids to insert them\n// into the store. If we can't find the lookup ref locally,\n// then we drop the triple and have to wait for the server response\n// to see the optimistic updates.\nfunction resolveLookupRefs(store: Store, triple: Triple): Triple | null {\n let eid;\n\n // Check if `e` is a lookup ref\n if (Array.isArray(triple[0])) {\n const [a, v] = triple[0];\n const eMaps = store.aev.get(a);\n if (!eMaps) {\n // We don't have the attr, so don't try to add the\n // triple to the store\n return null;\n }\n // This would be a lot more efficient with a ave index\n const triples = allMapValues(eMaps, 2);\n eid = triples.find((x) => x[2] === v)?.[0];\n } else {\n eid = triple[0];\n }\n\n if (!eid) {\n // We don't know the eid that the ref refers to, so\n // we can't add the triple to the store.\n return null;\n }\n\n // Check if v is a lookup ref\n const lookupV = triple[2];\n if (\n Array.isArray(lookupV) &&\n lookupV.length === 2 &&\n store.aev.get(lookupV[0])\n ) {\n const [a, v] = lookupV;\n const eMaps = store.aev.get(a);\n if (!eMaps) {\n // We don't have the attr, so don't try to add the\n // triple to the store\n return null;\n }\n const triples = allMapValues(eMaps, 2);\n const value = triples.find((x) => x[2] === v)?.[0];\n if (!value) {\n return null;\n }\n const [_e, aid, _v, ...rest] = triple;\n return [eid, aid, value, ...rest];\n } else {\n const [_, ...rest] = triple;\n return [eid, ...rest];\n }\n}\n\nexport function retractTriple(\n store: Store,\n attrsStore: AttrsStore,\n rawTriple: Triple,\n): void {\n const triple = resolveLookupRefs(store, rawTriple);\n if (!triple) {\n return;\n }\n const [eid, aid, v] = triple;\n const attr = attrsStore.getAttr(aid);\n if (!attr) {\n return;\n }\n\n deleteInMap(store.eav, [eid, aid, v]);\n deleteInMap(store.aev, [aid, eid, v]);\n if (isRef(attr)) {\n deleteInMap(store.vae, [v, aid, eid]);\n }\n}\n\nlet _seed = 0;\nfunction getCreatedAt(\n store: Store,\n attr: InstantDBAttr,\n triple: Triple,\n): Number {\n const [eid, aid, v] = triple;\n let createdAt;\n\n const t = getInMap(store.eav, [eid, aid, v]);\n if (t) {\n createdAt = t[3];\n }\n\n /**\n * (XXX)\n * Two hacks here, for generating a `createdAt`\n *\n * 1. We multiply Date.now() by 10, to make sure that\n * `createdAt` is always greater than anything the server\n * could return\n *\n * We do this because right now we know we _only_ insert\n * triples as optimistic updates.\n *\n * 2. We increment by `_seed`, to make sure there are no\n * two triples with the same `createdAt`. This is\n * done to make tests more predictable.\n *\n * We may need to rethink this. Because we * 10, we can't\n * use this value as an _actual_ `createdAt` timestamp.\n * Eventually we may want too though; For example, we could\n * use `createdAt` for each triple, to infer a `createdAt` and\n * `updatedAt` value for each object.\n */\n return createdAt || Date.now() * 10 + _seed++;\n}\n\nexport function addTriple(\n store: Store,\n attrsStore: AttrsStore,\n rawTriple: Triple,\n) {\n const triple = resolveLookupRefs(store, rawTriple);\n if (!triple) {\n return;\n }\n let [eid, aid, v] = triple;\n const attr = attrsStore.getAttr(aid);\n if (!attr) {\n // (XXX): Due to the way we're handling attrs, it's\n // possible to enter a state where we receive a triple without an attr.\n // See: https://github.com/jsventures/instant-local/pull/132 for details.\n // For now, if we receive a command without an attr, we no-op.\n return;\n }\n\n if (attr['checked-data-type'] === 'date' && store.useDateObjects) {\n v = coerceToDate(v);\n }\n\n const existingTriple = getInMap(store.eav, [eid, aid, v]);\n // Reuse the created_at for a triple if it's already in the store.\n // Prevents updates from temporarily pushing an entity to the top\n // while waiting for the server response.\n const t = existingTriple?.[3] ?? getCreatedAt(store, attr, triple);\n const enhancedTriple = [eid, aid, v, t];\n\n if (hasEA(attr)) {\n setInMap(store.eav, [eid, aid], new Map([[v, enhancedTriple]]));\n setInMap(store.aev, [aid, eid], new Map([[v, enhancedTriple]]));\n } else {\n setInMap(store.eav, [eid, aid, v], enhancedTriple);\n setInMap(store.aev, [aid, eid, v], enhancedTriple);\n }\n\n if (isRef(attr)) {\n setInMap(store.vae, [v, aid, eid], enhancedTriple);\n }\n}\n\nfunction mergeTriple(store: Store, attrsStore: AttrsStore, rawTriple: Triple) {\n const triple = resolveLookupRefs(store, rawTriple);\n if (!triple) {\n return;\n }\n\n const [eid, aid, update] = triple;\n const attr = attrsStore.getAttr(aid);\n\n if (!attr) return;\n\n if (!isBlob(attr))\n throw new Error('merge operation is not supported for links');\n\n const eavValuesMap = getInMap(store.eav, [eid, aid]);\n if (!eavValuesMap) return;\n\n const currentTriple = eavValuesMap.values().next()?.value;\n if (!currentTriple) return;\n\n const currentValue = currentTriple[2];\n\n const updatedValue = immutableDeepMerge(currentValue, update);\n const enhancedTriple = [\n eid,\n aid,\n updatedValue,\n getCreatedAt(store, attr, currentTriple),\n ];\n\n setInMap(store.eav, [eid, aid], new Map([[updatedValue, enhancedTriple]]));\n setInMap(store.aev, [aid, eid], new Map([[updatedValue, enhancedTriple]]));\n}\n\nfunction deleteEntity(store: Store, attrsStore: AttrsStore, args: any[]) {\n const [lookup, etype] = args;\n const triple = resolveLookupRefs(store, [lookup] as unknown as Triple);\n\n if (!triple) {\n return;\n }\n const [id] = triple;\n\n // delete forward links and attributes + cardinality one links\n const eMap = store.eav.get(id);\n if (eMap) {\n for (const a of eMap.keys()) {\n const attr = attrsStore.getAttr(a);\n\n // delete cascade refs\n if (attr && attr['on-delete-reverse'] === 'cascade') {\n allMapValues(eMap.get(a), 1).forEach(\n ([e, a, v]: [string, string, any]) =>\n deleteEntity(store, attrsStore, [v, attr['reverse-identity']?.[1]]),\n );\n }\n\n if (\n // Fall back to deleting everything if we've rehydrated tx-steps from\n // the store that didn't set `etype` in deleteEntity\n !etype ||\n // If we don't know about the attr, let's just get rid of it\n !attr ||\n // Make sure it matches the etype\n attr['forward-identity']?.[1] === etype\n ) {\n deleteInMap(store.aev, [a, id]);\n deleteInMap(store.eav, [id, a]);\n }\n }\n // Clear out the eav index for `id` if we deleted all of the attributes\n if (eMap.size === 0) {\n deleteInMap(store.eav, [id]);\n }\n }\n\n // delete reverse links\n const vaeTriples = store.vae.get(id) && allMapValues(store.vae.get(id), 2);\n\n if (vaeTriples) {\n vaeTriples.forEach((triple: Triple) => {\n const [e, a, v] = triple;\n const attr = attrsStore.getAttr(a);\n if (!etype || !attr || attr['reverse-identity']?.[1] === etype) {\n deleteInMap(store.eav, [e, a, v]);\n deleteInMap(store.aev, [a, e, v]);\n deleteInMap(store.vae, [v, a, e]);\n }\n if (\n attr &&\n attr['on-delete'] === 'cascade' &&\n attr['reverse-identity']?.[1] === etype\n ) {\n deleteEntity(store, attrsStore, [e, attr['forward-identity']?.[1]]);\n }\n });\n }\n // Clear out vae index for `id` if we deleted all the reverse attributes\n if (store.vae.get(id)?.size === 0) {\n deleteInMap(store.vae, [id]);\n }\n}\n\n// (XXX): Whenever we change/delete attrs,\n// We indiscriminately reset the index map.\n// There are lots of opportunities for optimization:\n// * We _only_ need to run this indexes change. We could detect that\n// * We could batch this reset at the end\n// * We could add an ave index for all triples, so removing the\n// right triples is easy and fast.\nfunction resetIndexMap(store: Store, attrsStore, newTriples: Triple[]) {\n const newIndexMap = createTripleIndexes(\n attrsStore,\n newTriples,\n store.useDateObjects,\n );\n Object.keys(newIndexMap).forEach((key) => {\n store[key] = newIndexMap[key];\n });\n}\n\nfunction addAttr(attrsStore: AttrsStore, [attr]: [InstantDBAttr]) {\n attrsStore.addAttr(attr);\n}\n\nfunction getAllTriples(store: Store): Triple[] {\n return allMapValues(store.eav, 3);\n}\n\nfunction deleteAttr(store: Store, attrsStore: AttrsStore, [id]: [string]) {\n if (!attrsStore.getAttr(id)) return;\n const newTriples = getAllTriples(store).filter(([_, aid]) => aid !== id);\n attrsStore.deleteAttr(id);\n resetIndexMap(store, attrsStore, newTriples);\n}\n\nfunction updateAttr(\n store: Store,\n attrsStore: AttrsStore,\n [partialAttr]: [Partial<InstantDBAttr> & { id: string }],\n) {\n const attr = attrsStore.getAttr(partialAttr.id);\n if (!attr) return;\n attrsStore.updateAttr(partialAttr);\n resetIndexMap(store, attrsStore, getAllTriples(store));\n}\n\nfunction applyTxStep(store: Store, attrsStore: AttrsStore, txStep) {\n const [action, ...args] = txStep;\n switch (action) {\n case 'add-triple':\n addTriple(store, attrsStore, args);\n break;\n case 'deep-merge-triple':\n mergeTriple(store, attrsStore, args);\n break;\n case 'retract-triple':\n retractTriple(store, attrsStore, args);\n break;\n case 'delete-entity':\n deleteEntity(store, attrsStore, args);\n break;\n case 'add-attr':\n addAttr(attrsStore, args);\n break;\n case 'delete-attr':\n deleteAttr(store, attrsStore, args);\n break;\n case 'update-attr':\n updateAttr(store, attrsStore, args);\n break;\n case 'restore-attr':\n break;\n case 'rule-params':\n break;\n default:\n throw new Error(`unhandled transaction action: ${action}`);\n }\n}\n\nexport function allMapValues(m, level, res: any[] = []) {\n if (!m) {\n return res;\n }\n if (level === 0) {\n return res;\n }\n if (level === 1) {\n for (const v of m.values()) {\n res.push(v);\n }\n return res;\n }\n for (const v of m.values()) {\n allMapValues(v, level - 1, res);\n }\n\n return res;\n}\n\nfunction triplesByValue(store: Store, m: Map<any, Triple>, v: any) {\n const res: Triple[] = [];\n if (v?.hasOwnProperty('$not')) {\n for (const candidate of m.keys()) {\n if (v.$not !== candidate) {\n res.push(m.get(candidate) as Triple);\n }\n }\n return res;\n }\n\n if (v?.hasOwnProperty('$isNull')) {\n const { attrId, isNull, reverse } = v.$isNull;\n\n if (reverse) {\n for (const candidate of m.keys()) {\n const vMap = store.vae.get(candidate);\n const isValNull = !vMap || !vMap.get(attrId);\n if (isNull ? isValNull : !isValNull) {\n res.push(m.get(candidate) as Triple);\n }\n }\n } else {\n const aMap = store.aev.get(attrId);\n for (const candidate of m.keys()) {\n const isValNull =\n !aMap || aMap.get(candidate)?.get(null) || !aMap.get(candidate);\n if (isNull ? isValNull : !isValNull) {\n res.push(m.get(candidate) as Triple);\n }\n }\n }\n return res;\n }\n\n if (v?.$comparator) {\n // TODO: A sorted index would be nice here\n return allMapValues(m, 1).filter(v.$op);\n }\n\n const values = v.in || v.$in || [v];\n\n for (const value of values) {\n const triple = m.get(value);\n if (triple) {\n res.push(triple);\n }\n }\n\n return res;\n}\n\n// A poor man's pattern matching\n// Returns either eav, ea, ev, av, v, or ''\nfunction whichIdx(e, a, v): 'eav' | 'ea' | 'ev' | 'av' | 'e' | 'a' | 'v' | '' {\n let res = '';\n if (e !== undefined) {\n res += 'e';\n }\n if (a !== undefined) {\n res += 'a';\n }\n if (v !== undefined) {\n res += 'v';\n }\n return res as 'eav' | 'ea' | 'ev' | 'av' | 'e' | 'a' | 'v' | '';\n}\n\nexport function getTriples(store, [e, a, v]) {\n const idx = whichIdx(e, a, v);\n switch (idx) {\n case 'e': {\n const eMap = store.eav.get(e);\n return allMapValues(eMap, 2);\n }\n case 'ea': {\n const aMap = store.eav.get(e)?.get(a);\n return allMapValues(aMap, 1);\n }\n case 'eav': {\n const aMap = store.eav.get(e)?.get(a);\n if (!aMap) {\n return [];\n }\n return triplesByValue(store, aMap, v);\n }\n case 'ev': {\n const eMap = store.eav.get(e);\n if (!eMap) {\n return [];\n }\n const res: Triple[] = [];\n for (const aMap of eMap.values()) {\n res.push(...triplesByValue(store, aMap, v));\n }\n return res;\n }\n case 'a': {\n const aMap = store.aev.get(a);\n return allMapValues(aMap, 2);\n }\n case 'av': {\n const aMap = store.aev.get(a);\n if (!aMap) {\n return [];\n }\n const res: Triple[] = [];\n for (const eMap of aMap.values()) {\n res.push(...triplesByValue(store, eMap, v));\n }\n return res;\n }\n case 'v': {\n const res: Triple[] = [];\n for (const eMap of store.eav.values()) {\n for (const aMap of eMap.values()) {\n res.push(...triplesByValue(store, aMap, v));\n }\n }\n return res;\n }\n default: {\n return allMapValues(store.eav, 3);\n }\n }\n}\n\nexport function getAsObject(\n store: Store,\n attrs: Map<string, InstantDBAttr> | undefined,\n e: string,\n) {\n const obj = {};\n\n if (!attrs) {\n return obj;\n }\n\n for (const [label, attr] of attrs.entries()) {\n const aMap = store.eav.get(e)?.get(attr.id);\n const triples = allMapValues(aMap, 1);\n for (const triple of triples) {\n obj[label] = triple[2];\n }\n }\n\n return obj;\n}\n\nexport function getAttrByFwdIdentName(\n attrsStore: AttrsStore,\n inputEtype: string,\n inputLabel: string,\n) {\n return attrsStore.forwardIdents.get(inputEtype)?.get(inputLabel);\n}\n\nexport function getAttrByReverseIdentName(\n attrsStore: AttrsStore,\n inputEtype: string,\n inputLabel: string,\n) {\n return attrsStore.revIdents.get(inputEtype)?.get(inputLabel);\n}\n\nexport function getBlobAttrs(attrsStore: AttrsStore, etype: string) {\n return attrsStore.blobAttrs.get(etype);\n}\n\nexport function getPrimaryKeyAttr(attrsStore: AttrsStore, etype: string) {\n const fromPrimary = attrsStore.primaryKeys.get(etype);\n if (fromPrimary) {\n return fromPrimary;\n }\n return attrsStore.forwardIdents.get(etype)?.get('id');\n}\n\nfunction findTriple(\n store: Store,\n attrsStore: AttrsStore,\n rawTriple: [string, string, any] | Triple,\n): Triple | undefined {\n const triple = resolveLookupRefs(store, rawTriple as Triple);\n if (!triple) {\n return;\n }\n\n const [eid, aid, v] = triple;\n const attr = attrsStore.getAttr(aid);\n if (!attr) {\n // (XXX): Due to the way we're handling attrs, it's\n // possible to enter a state where we receive a triple without an attr.\n // See: https://github.com/jsventures/instant-local/pull/132 for details.\n // For now, if we receive a command without an attr, we no-op.\n return;\n }\n\n return getInMap(store.eav, [eid, aid]);\n}\n\nexport function transact(\n store: Store,\n attrsStore: AttrsStore,\n txSteps,\n): { store: Store; attrsStore: AttrsStore } {\n const txStepsFiltered = txSteps.filter(\n ([action, eid, attrId, value, opts]) => {\n if (action !== 'add-triple' && action !== 'deep-merge-triple') {\n return true;\n }\n\n const mode = opts?.mode;\n if (mode !== 'create' && mode !== 'update') {\n return true;\n }\n\n let exists = false;\n\n const attr = attrsStore.getAttr(attrId);\n if (attr) {\n const idAttr = getPrimaryKeyAttr(\n attrsStore,\n attr['forward-identity'][1],\n );\n exists = !!findTriple(store, attrsStore, [\n eid as string,\n idAttr?.id as string,\n eid,\n ]);\n }\n\n if (mode === 'create' && exists) {\n return false;\n }\n\n if (mode === 'update' && !exists) {\n return false;\n }\n\n return true;\n },\n );\n\n return create(\n { store, attrsStore },\n (draft) => {\n txStepsFiltered.forEach((txStep) => {\n applyTxStep(draft.store, draft.attrsStore, txStep);\n });\n },\n {\n mark: (target) => {\n if (target instanceof AttrsStoreClass) {\n return 'immutable';\n }\n },\n },\n );\n}\n"]}
@@ -3,8 +3,8 @@
3
3
  */
4
4
  export default class Reactor<RoomSchema extends import("./presence.ts").RoomSchemaShape = {}> {
5
5
  constructor(config: any, Storage: typeof IndexedDBStorage | undefined, NetworkListener: typeof WindowNetworkListener | undefined, versions: any, EventSourceConstructor: any);
6
- /** @type {sts.AttrsStore | undefined} */
7
- attrs: sts.AttrsStore | undefined;
6
+ /** @type {s.AttrsStore | undefined} */
7
+ attrs: s.AttrsStore | undefined;
8
8
  _isOnline: boolean;
9
9
  _isShutdown: boolean;
10
10
  status: string;
@@ -79,7 +79,7 @@ export default class Reactor<RoomSchema extends import("./presence.ts").RoomSche
79
79
  queryCacheLimit: any;
80
80
  versions: any;
81
81
  _beforeUnload(): void;
82
- ensureAttrs(): sts.AttrsStore;
82
+ ensureAttrs(): s.AttrsStore;
83
83
  updateSchema(schema: any): void;
84
84
  _reactorStats(): {
85
85
  inFlightMutationCount: number;
@@ -143,16 +143,16 @@ export default class Reactor<RoomSchema extends import("./presence.ts").RoomSche
143
143
  _cleanupQuery(q: any, hash: any): void;
144
144
  /**
145
145
  *
146
- * @param {sts.AttrsStore} attrs
146
+ * @param {s.AttrsStore} attrs
147
147
  * @param {any} muts
148
148
  * @param {number} [processedTxId]
149
149
  */
150
- _rewriteMutations(attrs: sts.AttrsStore, muts: any, processedTxId?: number): any;
150
+ _rewriteMutations(attrs: s.AttrsStore, muts: any, processedTxId?: number): any;
151
151
  _rewriteMutationsSorted(attrs: any, muts: any): any[];
152
152
  /**
153
- * @returns {sts.AttrsStore}
153
+ * @returns {s.AttrsStore}
154
154
  */
155
- optimisticAttrs(): sts.AttrsStore;
155
+ optimisticAttrs(): s.AttrsStore;
156
156
  /** Runs instaql on a query and a store */
157
157
  dataForQuery(hash: any): any;
158
158
  _applyOptimisticUpdates(store: any, attrsStore: any, mutations: any, processedTxId: any): {
@@ -354,7 +354,7 @@ export type TransportType = import("./Connection.ts").TransportType;
354
354
  export type EventSourceConstructor = import("./Connection.ts").EventSourceConstructor;
355
355
  export type QuerySub = import("./reactorTypes.ts").QuerySub;
356
356
  export type QuerySubInStorage = import("./reactorTypes.ts").QuerySubInStorage;
357
- import * as sts from './store.ts';
357
+ import * as s from './store.ts';
358
358
  import { PersistedObject } from './utils/PersistedObject.ts';
359
359
  import { SyncTable } from './SyncTable.ts';
360
360
  import { Deferred } from './utils/Deferred.js';
@@ -1 +1 @@
1
- {"version":3,"file":"Reactor.d.ts","sourceRoot":"","sources":["../../src/Reactor.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Reactor.d.ts","sourceRoot":"","sources":["../../src/Reactor.js"],"names":[],"mappings":"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"}
@@ -22,7 +22,7 @@ var __rest = (this && this.__rest) || function (s, e) {
22
22
  import weakHash from "./utils/weakHash.js";
23
23
  import instaql from "./instaql.js";
24
24
  import * as instaml from "./instaml.js";
25
- import * as sts from "./store.js";
25
+ import * as s from "./store.js";
26
26
  import uuid from "./utils/uuid.js";
27
27
  import IndexedDBStorage from "./IndexedDBStorage.js";
28
28
  import WindowNetworkListener from './WindowNetworkListener.js';
@@ -112,10 +112,10 @@ function querySubFromStorage(x, useDateObjects) {
112
112
  var _a;
113
113
  const v = typeof x === 'string' ? JSON.parse(x) : x;
114
114
  if ((_a = v === null || v === void 0 ? void 0 : v.result) === null || _a === void 0 ? void 0 : _a.store) {
115
- const attrsStore = sts.attrsStoreFromJSON(v.result.attrsStore, v.result.store);
115
+ const attrsStore = s.attrsStoreFromJSON(v.result.attrsStore, v.result.store);
116
116
  if (attrsStore) {
117
117
  const storeJSON = v.result.store;
118
- v.result.store = sts.fromJSON(attrsStore, Object.assign(Object.assign({}, storeJSON), { useDateObjects: useDateObjects }));
118
+ v.result.store = s.fromJSON(attrsStore, Object.assign(Object.assign({}, storeJSON), { useDateObjects: useDateObjects }));
119
119
  v.result.attrsStore = attrsStore;
120
120
  }
121
121
  }
@@ -132,7 +132,7 @@ function querySubToStorage(_key, sub) {
132
132
  const jsonSub = /** @type {import('./reactorTypes.ts').QuerySubInStorage} */ (rest);
133
133
  if (result) {
134
134
  /** @type {import('./reactorTypes.ts').QuerySubResultInStorage} */
135
- const jsonResult = Object.assign(Object.assign({}, result), { store: sts.toJSON(result.store), attrsStore: result.attrsStore.toJSON() });
135
+ const jsonResult = Object.assign(Object.assign({}, result), { store: s.toJSON(result.store), attrsStore: result.attrsStore.toJSON() });
136
136
  jsonSub.result = jsonResult;
137
137
  }
138
138
  return jsonSub;
@@ -445,7 +445,7 @@ export default class Reactor {
445
445
  this._syncTable = new SyncTable(this._trySendAuthed.bind(this), new Storage(this.config.appId, 'syncSubs'), {
446
446
  useDateObjects: this.config.useDateObjects,
447
447
  }, this._log, (triples) => {
448
- return sts.createStore(this.ensureAttrs(), triples, this.config.enableCardinalityInference, this.config.useDateObjects);
448
+ return s.createStore(this.ensureAttrs(), triples, this.config.enableCardinalityInference, this.config.useDateObjects);
449
449
  }, () => this.ensureAttrs());
450
450
  this._oauthCallbackResponse = this._oauthLoginInit();
451
451
  // kick off a request to cache it
@@ -640,7 +640,7 @@ export default class Reactor {
640
640
  const aggregate = (_f = (_e = result === null || result === void 0 ? void 0 : result[0]) === null || _e === void 0 ? void 0 : _e.data) === null || _f === void 0 ? void 0 : _f['aggregate'];
641
641
  const triples = extractTriples(result);
642
642
  const attrsStore = this.ensureAttrs();
643
- const store = sts.createStore(attrsStore, triples, enableCardinalityInference, this.config.useDateObjects);
643
+ const store = s.createStore(attrsStore, triples, enableCardinalityInference, this.config.useDateObjects);
644
644
  this.querySubs.updateInPlace((prev) => {
645
645
  if (!prev[hash]) {
646
646
  this._log.info('Missing value in querySubs', { hash, q });
@@ -700,7 +700,7 @@ export default class Reactor {
700
700
  const hash = weakHash(q);
701
701
  const triples = extractTriples(result);
702
702
  const attrsStore = this.ensureAttrs();
703
- const store = sts.createStore(attrsStore, triples, enableCardinalityInference, this.config.useDateObjects);
703
+ const store = s.createStore(attrsStore, triples, enableCardinalityInference, this.config.useDateObjects);
704
704
  const { store: newStore, attrsStore: newAttrsStore } = this._applyOptimisticUpdates(store, attrsStore, mutations, processedTxId);
705
705
  const pageInfo = (_b = (_a = result === null || result === void 0 ? void 0 : result[0]) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b['page-info'];
706
706
  const aggregate = (_d = (_c = result === null || result === void 0 ? void 0 : result[0]) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d['aggregate'];
@@ -756,7 +756,6 @@ export default class Reactor {
756
756
  if (newAttrs.length) {
757
757
  const existingAttrs = Object.values(this.ensureAttrs().attrs);
758
758
  this._setAttrs([...existingAttrs, ...newAttrs]);
759
- this._setAttrs(newAttrs);
760
759
  }
761
760
  this._finishTransaction('synced', eventId);
762
761
  this._cleanupPendingMutationsTimeout();
@@ -918,7 +917,7 @@ export default class Reactor {
918
917
  this._completeQueryOnce(q, hash, r.dfd);
919
918
  }
920
919
  _setAttrs(attrs) {
921
- this.attrs = new sts.AttrsStoreClass(attrs.reduce((acc, attr) => {
920
+ this.attrs = new s.AttrsStoreClass(attrs.reduce((acc, attr) => {
922
921
  acc[attr.id] = attr;
923
922
  return acc;
924
923
  }, {}), this._linkIndex);
@@ -1029,7 +1028,7 @@ export default class Reactor {
1029
1028
  // server attr-ids.
1030
1029
  /**
1031
1030
  *
1032
- * @param {sts.AttrsStore} attrs
1031
+ * @param {s.AttrsStore} attrs
1033
1032
  * @param {any} muts
1034
1033
  * @param {number} [processedTxId]
1035
1034
  */
@@ -1040,12 +1039,12 @@ export default class Reactor {
1040
1039
  return new Map();
1041
1040
  const findExistingAttr = (attr) => {
1042
1041
  const [_, etype, label] = attr['forward-identity'];
1043
- const existing = sts.getAttrByFwdIdentName(attrs, etype, label);
1042
+ const existing = s.getAttrByFwdIdentName(attrs, etype, label);
1044
1043
  return existing;
1045
1044
  };
1046
1045
  const findReverseAttr = (attr) => {
1047
1046
  const [_, etype, label] = attr['forward-identity'];
1048
- const revAttr = sts.getAttrByReverseIdentName(attrs, etype, label);
1047
+ const revAttr = s.getAttrByReverseIdentName(attrs, etype, label);
1049
1048
  return revAttr;
1050
1049
  };
1051
1050
  const mapping = { attrIdMap: {}, refSwapAttrIds: new Set() };
@@ -1109,7 +1108,7 @@ export default class Reactor {
1109
1108
  // ---------------------------
1110
1109
  // Transact
1111
1110
  /**
1112
- * @returns {sts.AttrsStore}
1111
+ * @returns {s.AttrsStore}
1113
1112
  */
1114
1113
  optimisticAttrs() {
1115
1114
  var _a, _b;
@@ -1131,7 +1130,7 @@ export default class Reactor {
1131
1130
  }
1132
1131
  }
1133
1132
  if (!deletedAttrIds.size && !pendingAttrs.length) {
1134
- return this.attrs || new sts.AttrsStoreClass({}, this._linkIndex);
1133
+ return this.attrs || new s.AttrsStoreClass({}, this._linkIndex);
1135
1134
  }
1136
1135
  const attrs = Object.assign({}, (((_b = this.attrs) === null || _b === void 0 ? void 0 : _b.attrs) || {}));
1137
1136
  for (const attr of pendingAttrs) {
@@ -1140,7 +1139,7 @@ export default class Reactor {
1140
1139
  for (const id of deletedAttrIds) {
1141
1140
  delete attrs[id];
1142
1141
  }
1143
- return new sts.AttrsStoreClass(attrs, this._linkIndex);
1142
+ return new s.AttrsStoreClass(attrs, this._linkIndex);
1144
1143
  }
1145
1144
  /** Runs instaql on a query and a store */
1146
1145
  dataForQuery(hash) {
@@ -1174,7 +1173,7 @@ export default class Reactor {
1174
1173
  _applyOptimisticUpdates(store, attrsStore, mutations, processedTxId) {
1175
1174
  for (const [_, mut] of mutations) {
1176
1175
  if (!mut['tx-id'] || (processedTxId && mut['tx-id'] > processedTxId)) {
1177
- const result = sts.transact(store, attrsStore, mut['tx-steps']);
1176
+ const result = s.transact(store, attrsStore, mut['tx-steps']);
1178
1177
  store = result.store;
1179
1178
  attrsStore = result.attrsStore;
1180
1179
  }