@instantdb/core 0.22.164 → 0.22.165

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.
Files changed (60) hide show
  1. package/__tests__/src/infiniteQuery.e2e.test.ts +384 -0
  2. package/__tests__/src/simple.e2e.test.ts +0 -1
  3. package/__tests__/src/utils/e2e.ts +1 -1
  4. package/dist/commonjs/Reactor.d.ts +1 -1
  5. package/dist/commonjs/Reactor.js +3 -3
  6. package/dist/commonjs/Reactor.js.map +1 -1
  7. package/dist/commonjs/index.d.ts +23 -2
  8. package/dist/commonjs/index.d.ts.map +1 -1
  9. package/dist/commonjs/index.js +25 -1
  10. package/dist/commonjs/index.js.map +1 -1
  11. package/dist/commonjs/infiniteQuery.d.ts +26 -0
  12. package/dist/commonjs/infiniteQuery.d.ts.map +1 -0
  13. package/dist/commonjs/infiniteQuery.js +422 -0
  14. package/dist/commonjs/infiniteQuery.js.map +1 -0
  15. package/dist/commonjs/instaql.d.ts.map +1 -1
  16. package/dist/commonjs/instaql.js +18 -5
  17. package/dist/commonjs/instaql.js.map +1 -1
  18. package/dist/commonjs/queryTypes.d.ts +2 -2
  19. package/dist/commonjs/queryTypes.d.ts.map +1 -1
  20. package/dist/commonjs/queryTypes.js.map +1 -1
  21. package/dist/commonjs/utils/Deferred.d.ts +5 -4
  22. package/dist/commonjs/utils/Deferred.d.ts.map +1 -1
  23. package/dist/commonjs/utils/Deferred.js.map +1 -1
  24. package/dist/commonjs/utils/weakHash.d.ts.map +1 -1
  25. package/dist/commonjs/utils/weakHash.js +4 -0
  26. package/dist/commonjs/utils/weakHash.js.map +1 -1
  27. package/dist/esm/Reactor.d.ts +1 -1
  28. package/dist/esm/Reactor.js +1 -1
  29. package/dist/esm/Reactor.js.map +1 -1
  30. package/dist/esm/index.d.ts +23 -2
  31. package/dist/esm/index.d.ts.map +1 -1
  32. package/dist/esm/index.js +25 -0
  33. package/dist/esm/index.js.map +1 -1
  34. package/dist/esm/infiniteQuery.d.ts +26 -0
  35. package/dist/esm/infiniteQuery.d.ts.map +1 -0
  36. package/dist/esm/infiniteQuery.js +417 -0
  37. package/dist/esm/infiniteQuery.js.map +1 -0
  38. package/dist/esm/instaql.d.ts.map +1 -1
  39. package/dist/esm/instaql.js +18 -5
  40. package/dist/esm/instaql.js.map +1 -1
  41. package/dist/esm/queryTypes.d.ts +2 -2
  42. package/dist/esm/queryTypes.d.ts.map +1 -1
  43. package/dist/esm/queryTypes.js.map +1 -1
  44. package/dist/esm/utils/Deferred.d.ts +5 -4
  45. package/dist/esm/utils/Deferred.d.ts.map +1 -1
  46. package/dist/esm/utils/Deferred.js.map +1 -1
  47. package/dist/esm/utils/weakHash.d.ts.map +1 -1
  48. package/dist/esm/utils/weakHash.js +4 -0
  49. package/dist/esm/utils/weakHash.js.map +1 -1
  50. package/dist/standalone/index.js +1731 -1432
  51. package/dist/standalone/index.umd.cjs +3 -3
  52. package/package.json +2 -2
  53. package/src/Reactor.js +1 -1
  54. package/src/index.ts +49 -0
  55. package/src/infiniteQuery.ts +573 -0
  56. package/src/instaql.ts +25 -7
  57. package/src/queryTypes.ts +1 -2
  58. package/src/utils/{Deferred.js → Deferred.ts} +4 -4
  59. package/src/utils/weakHash.ts +4 -0
  60. package/vitest.config.ts +6 -0
@@ -1 +1 @@
1
- {"version":3,"file":"instaql.js","sourceRoot":"","sources":["../../src/instaql.ts"],"names":[],"mappings":"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","sourcesContent":["import { query as datalogQuery } from './datalog.js';\nimport { uuidCompare } from './utils/id.ts';\nimport { stringCompare } from './utils/strings.ts';\nimport * as s from './store.ts';\nimport { InstantDBAttr } from './attrTypes.ts';\nimport { Cursor } from './queryTypes.ts';\nimport { warningEnabled } from './warningToggle.ts';\n\ntype Pat = [string | any, string, string | any, string | number];\ntype Pats = Array<Pat>;\ntype OrPat = {\n or: {\n patterns: FullPats;\n joinSym: string;\n };\n};\ntype AndPat = {\n and: {\n patterns: FullPats;\n joinSym: string;\n };\n};\ntype FullPat = Pat | OrPat | AndPat;\ntype FullPats = Array<FullPat>;\n\n// Pattern variables\n// -----------------\n\ntype MakeVar = (x: string, level: number) => string;\n\nlet _seed = 0;\n\nfunction wildcard(friendlyName: string) {\n return makeVarImpl(`_${friendlyName}`, _seed++);\n}\n\nfunction makeVarImpl(x: string, level: number): string {\n return `?${x}-${level}`;\n}\n\n// Where\n// -----------------\n\nclass AttrNotFoundError extends Error {\n constructor(message) {\n super(message);\n this.name = 'AttrNotFoundError';\n }\n}\n\nfunction idAttr(attrsStore: s.AttrsStore, ns: string): InstantDBAttr {\n const attr = s.getPrimaryKeyAttr(attrsStore, ns);\n\n if (!attr) {\n throw new AttrNotFoundError(`Could not find id attr for ${ns}`);\n }\n return attr;\n}\n\nfunction defaultWhere(\n makeVar: MakeVar,\n attrsStore: s.AttrsStore,\n etype: string,\n level: number,\n): Pats {\n return [eidWhere(makeVar, attrsStore, etype, level)];\n}\n\nfunction eidWhere(\n makeVar: MakeVar,\n attrsStore: s.AttrsStore,\n etype: string,\n level: number,\n): Pat {\n return [\n makeVar(etype, level),\n idAttr(attrsStore, etype).id,\n makeVar(etype, level),\n makeVar('time', level),\n ];\n}\n\nfunction replaceInAttrPat(attrPat: Pat, needle: string, v: any): Pat {\n return attrPat.map((x) => (x === needle ? v : x)) as Pat;\n}\n\nfunction refAttrPat(\n makeVar: MakeVar,\n attrsStore: s.AttrsStore,\n etype: string,\n level: number,\n label: string,\n): [string, number, Pat, InstantDBAttr, boolean] {\n const fwdAttr = s.getAttrByFwdIdentName(attrsStore, etype, label);\n const revAttr = s.getAttrByReverseIdentName(attrsStore, etype, label);\n const attr = fwdAttr || revAttr;\n\n if (!attr) {\n throw new AttrNotFoundError(`Could not find attr for ${[etype, label]}`);\n }\n\n if (attr['value-type'] !== 'ref') {\n throw new Error(`Attr ${attr.id} is not a ref`);\n }\n\n const [_f, fwdEtype] = attr['forward-identity'];\n const [_r, revEtype] = attr['reverse-identity']!;\n const nextLevel = level + 1;\n const attrPat: Pat = fwdAttr\n ? [\n makeVar(fwdEtype, level),\n attr.id,\n makeVar(revEtype, nextLevel),\n wildcard('time'),\n ]\n : [\n makeVar(fwdEtype, nextLevel),\n attr.id,\n makeVar(revEtype, level),\n wildcard('time'),\n ];\n\n const nextEtype = fwdAttr ? revEtype : fwdEtype;\n\n const isForward = Boolean(fwdAttr);\n\n return [nextEtype, nextLevel, attrPat, attr, isForward];\n}\n\nfunction makeLikeMatcher(caseSensitive: boolean, pattern: string) {\n if (typeof pattern !== 'string') {\n return function likeMatcher(_value) {\n return false;\n };\n }\n\n const escapedPattern = pattern.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n const regexPattern = escapedPattern.replace(/%/g, '.*').replace(/_/g, '.');\n\n const regex = new RegExp(\n `^${regexPattern}$`,\n caseSensitive ? undefined : 'i',\n );\n\n return function likeMatcher(value) {\n if (typeof value !== 'string') {\n return false;\n }\n return regex.test(value);\n };\n}\n\nfunction parseValue(attr: InstantDBAttr, v: any) {\n if (\n typeof v !== 'object' ||\n v.hasOwnProperty('$in') ||\n v.hasOwnProperty('in')\n ) {\n return v;\n }\n\n const isDate = attr['checked-data-type'] === 'date';\n\n if (v.hasOwnProperty('$gt')) {\n return {\n $comparator: true,\n $op: isDate\n ? function gtDate(triple) {\n return new Date(triple[2]) > new Date(v.$gt);\n }\n : function gt(triple) {\n return triple[2] > v.$gt;\n },\n };\n }\n if (v.hasOwnProperty('$gte')) {\n return {\n $comparator: true,\n $op: isDate\n ? function gteDate(triple) {\n return new Date(triple[2]) >= new Date(v.$gte);\n }\n : function gte(triple) {\n return triple[2] >= v.$gte;\n },\n };\n }\n\n if (v.hasOwnProperty('$lt')) {\n return {\n $comparator: true,\n $op: isDate\n ? function ltDate(triple) {\n return new Date(triple[2]) < new Date(v.$lt);\n }\n : function lt(triple) {\n return triple[2] < v.$lt;\n },\n };\n }\n if (v.hasOwnProperty('$lte')) {\n return {\n $comparator: true,\n $op: isDate\n ? function lteDate(triple) {\n return new Date(triple[2]) <= new Date(v.$lte);\n }\n : function lte(triple) {\n return triple[2] <= v.$lte;\n },\n };\n }\n\n if (v.hasOwnProperty('$like')) {\n const matcher = makeLikeMatcher(true, v.$like);\n return {\n $comparator: true,\n $op: function like(triple) {\n return matcher(triple[2]);\n },\n };\n }\n\n if (v.hasOwnProperty('$ilike')) {\n const matcher = makeLikeMatcher(false, v.$ilike);\n return {\n $comparator: true,\n $op: function ilike(triple) {\n return matcher(triple[2]);\n },\n };\n }\n\n return v;\n}\n\nfunction valueAttrPat(\n makeVar: MakeVar,\n attrsStore: s.AttrsStore,\n valueEtype: string,\n valueLevel: number,\n valueLabel: string,\n v: any,\n): Pat {\n const fwdAttr = s.getAttrByFwdIdentName(attrsStore, valueEtype, valueLabel);\n const revAttr = s.getAttrByReverseIdentName(\n attrsStore,\n valueEtype,\n valueLabel,\n );\n const attr = fwdAttr || revAttr;\n\n if (!attr) {\n throw new AttrNotFoundError(\n `No attr for etype = ${valueEtype} label = ${valueLabel}`,\n );\n }\n\n if (v?.hasOwnProperty('$isNull')) {\n const idAttr = s.getAttrByFwdIdentName(attrsStore, valueEtype, 'id');\n if (!idAttr) {\n throw new AttrNotFoundError(\n `No attr for etype = ${valueEtype} label = id`,\n );\n }\n\n return [\n makeVar(valueEtype, valueLevel),\n idAttr.id,\n { $isNull: { attrId: attr.id, isNull: v.$isNull, reverse: !fwdAttr } },\n wildcard('time'),\n ];\n }\n\n if (fwdAttr) {\n return [\n makeVar(valueEtype, valueLevel),\n attr.id,\n parseValue(attr, v),\n wildcard('time'),\n ];\n }\n return [v, attr.id, makeVar(valueEtype, valueLevel), wildcard('time')];\n}\n\nfunction refAttrPats(\n makeVar: MakeVar,\n attrsStore: s.AttrsStore,\n etype: string,\n level: number,\n refsPath: string[],\n): [string, number, Pats] {\n const [lastEtype, lastLevel, attrPats] = refsPath.reduce(\n (acc, label) => {\n const [etype, level, attrPats] = acc;\n const [nextEtype, nextLevel, attrPat] = refAttrPat(\n makeVar,\n attrsStore,\n etype,\n level,\n label,\n );\n return [nextEtype, nextLevel, [...attrPats, attrPat]];\n },\n [etype, level, []],\n );\n\n return [lastEtype, lastLevel, attrPats];\n}\n\nfunction whereCondAttrPats(\n makeVar: MakeVar,\n attrsStore: s.AttrsStore,\n etype: string,\n level: number,\n path: string[],\n v: any,\n): Pats {\n const refsPath = path.slice(0, path.length - 1);\n const valueLabel = path[path.length - 1];\n const [lastEtype, lastLevel, refPats] = refAttrPats(\n makeVar,\n attrsStore,\n etype,\n level,\n refsPath,\n );\n const valuePat = valueAttrPat(\n makeVar,\n attrsStore,\n lastEtype,\n lastLevel,\n valueLabel,\n v,\n );\n\n return refPats.concat([valuePat]);\n}\n\nfunction withJoin(where, join) {\n return join ? [join].concat(where) : where;\n}\n\nfunction isOrClauses([k, v]): boolean {\n return k === 'or' && Array.isArray(v);\n}\n\nfunction isAndClauses([k, v]): boolean {\n return k === 'and' && Array.isArray(v);\n}\n\n// Creates a makeVar that will namespace symbols for or clauses\n// to prevent conflicts, except for the base etype\nfunction genMakeVar(baseMakeVar: MakeVar, joinSym: string, orIdx: number) {\n return (x, lvl) => {\n const base = baseMakeVar(x, lvl);\n if (joinSym == base) {\n return base;\n }\n return `${base}-${orIdx}`;\n };\n}\n\nfunction parseWhereClauses(\n makeVar: MakeVar,\n clauseType: 'or' | 'and' /* 'or' | 'and' */,\n attrsStore: s.AttrsStore,\n etype: string,\n level: number,\n whereValue: any,\n): FullPat {\n const joinSym = makeVar(etype, level);\n const patterns: FullPats = whereValue.map((w, i) => {\n const makeNamespacedVar = genMakeVar(makeVar, joinSym, i);\n return parseWhere(makeNamespacedVar, attrsStore, etype, level, w);\n });\n return { [clauseType]: { patterns, joinSym } } as AndPat | OrPat;\n}\n\n// Given a path, returns a list of paths leading up to this path:\n// growPath([1, 2, 3]) -> [[1], [1, 2], [1, 2, 3]]\nfunction growPath<T>(path: T[]) {\n const ret: Array<T[]> = [];\n for (let i = 1; i <= path.length; i++) {\n ret.push(path.slice(0, i));\n }\n return ret;\n}\n\n// Returns array of pattern arrays that should be grouped in OR\n// to capture any intermediate nulls\nfunction whereCondAttrPatsForNullIsTrue(\n makeVar: MakeVar,\n attrsStore: s.AttrsStore,\n etype: string,\n level: number,\n path: string[],\n): Pats[] {\n return growPath(path).map((path) =>\n whereCondAttrPats(makeVar, attrsStore, etype, level, path, {\n $isNull: true,\n }),\n );\n}\n\nfunction parseWhere(\n makeVar: MakeVar,\n attrsStore: s.AttrsStore,\n etype: string,\n level: number,\n where: Record<string, any>,\n): FullPats {\n return Object.entries(where).flatMap(([k, v]) => {\n if (isOrClauses([k, v])) {\n return parseWhereClauses(makeVar, 'or', attrsStore, etype, level, v);\n }\n if (isAndClauses([k, v])) {\n return parseWhereClauses(makeVar, 'and', attrsStore, etype, level, v);\n }\n\n // Temporary hack until we have support for a uuid index on `id`\n if (k === '$entityIdStartsWith') {\n return [];\n }\n\n const path = k.split('.');\n\n // Normalize $ne to $not\n if (v?.hasOwnProperty('$ne')) {\n v = { ...v, $not: v.$ne };\n delete v.$ne;\n }\n\n if (v?.hasOwnProperty('$not')) {\n // `$not` won't pick up entities that are missing the attr, so we\n // add in a `$isNull` to catch those too.\n const notPats = whereCondAttrPats(\n makeVar,\n attrsStore,\n etype,\n level,\n path,\n v,\n );\n const nilPats = whereCondAttrPatsForNullIsTrue(\n makeVar,\n attrsStore,\n etype,\n level,\n path,\n );\n return [\n {\n or: {\n patterns: [notPats, ...nilPats],\n joinSym: makeVar(etype, level),\n },\n },\n ];\n }\n\n if (v?.hasOwnProperty('$isNull') && v.$isNull === true && path.length > 1) {\n // Make sure we're capturing all of the intermediate paths that might be null\n // by checking for null at each step along the path\n return [\n {\n or: {\n patterns: whereCondAttrPatsForNullIsTrue(\n makeVar,\n attrsStore,\n etype,\n level,\n path,\n ),\n joinSym: makeVar(etype, level),\n },\n },\n ];\n }\n\n return whereCondAttrPats(makeVar, attrsStore, etype, level, path, v);\n });\n}\n\nfunction makeWhere(\n attrsStore: s.AttrsStore,\n etype: string,\n level: number,\n where: Record<string, any> | null,\n): FullPats {\n const makeVar = makeVarImpl;\n if (!where) {\n return defaultWhere(makeVar, attrsStore, etype, level);\n }\n const parsedWhere = parseWhere(makeVar, attrsStore, etype, level, where);\n return parsedWhere.concat(defaultWhere(makeVar, attrsStore, etype, level));\n}\n\n// Find\n// -----------------\n\nfunction makeFind(makeVar: MakeVar, etype: string, level: number) {\n return [makeVar(etype, level), makeVar('time', level)];\n}\n\n// extendObjects\n// -----------------\n\nfunction makeJoin(\n makeVar: MakeVar,\n attrsStore: s.AttrsStore,\n etype: string,\n level: number,\n label: string,\n eid: string,\n) {\n const [nextEtype, nextLevel, pat, attr, isForward] = refAttrPat(\n makeVar,\n attrsStore,\n etype,\n level,\n label,\n );\n const actualized = replaceInAttrPat(pat, makeVar(etype, level), eid);\n return [nextEtype, nextLevel, actualized, attr, isForward];\n}\n\nfunction extendObjects(\n makeVar: MakeVar,\n store: s.Store,\n attrsStore: s.AttrsStore,\n { etype, level, form },\n objects,\n) {\n const childQueries = Object.keys(form).filter((c) => c !== '$');\n if (!childQueries.length) {\n return Object.values(objects);\n }\n return Object.entries(objects).map(function extendChildren([eid, parent]) {\n const childResults = childQueries.map(function getChildResult(label) {\n const isSingular = Boolean(\n store.cardinalityInference &&\n attrsStore.linkIndex?.[etype]?.[label]?.isSingular,\n );\n\n try {\n const [nextEtype, nextLevel, join] = makeJoin(\n makeVar,\n attrsStore,\n etype,\n level,\n label,\n eid,\n );\n\n const childrenArray = queryOne(store, attrsStore, {\n etype: nextEtype,\n level: nextLevel,\n form: form[label],\n join,\n });\n\n const childOrChildren = isSingular ? childrenArray[0] : childrenArray;\n\n return { [label]: childOrChildren };\n } catch (e) {\n if (e instanceof AttrNotFoundError) {\n return { [label]: isSingular ? undefined : [] };\n }\n throw e;\n }\n });\n\n return childResults.reduce(function reduceChildren(parent, child) {\n return { ...parent, ...child };\n }, parent);\n });\n}\n\n// resolveObjects\n// -----------------\n\nfunction shouldIgnoreAttr(attrs, id) {\n const attr = attrs[id];\n return attr['value-type'] === 'ref' && attr['forward-identity'][2] !== 'id';\n}\n\n// Compares values where we already know that the two values are distinct\n// and not null.\n// Takes into account the data type.\nfunction compareDisparateValues(a, b, dataType) {\n if (dataType === 'string') {\n return stringCompare(a, b);\n }\n if (a > b) {\n return 1;\n }\n return -1;\n}\n\nexport function compareOrder(id_a: string, v_a, id_b: string, v_b, dataType) {\n if (v_a === v_b || (v_a == null && v_b == null)) {\n return uuidCompare(id_a, id_b);\n }\n\n if (v_b == null) {\n return 1;\n }\n if (v_a == null) {\n return -1;\n }\n\n return compareDisparateValues(v_a, v_b, dataType);\n}\n\nfunction compareOrderTriples(\n [id_a, v_a]: [string, any],\n [id_b, v_b]: [string, any],\n dataType,\n) {\n return compareOrder(id_a, v_a, id_b, v_b, dataType);\n}\n\nfunction comparableDate(x) {\n if (x == null) {\n return x;\n }\n return new Date(x).getTime();\n}\n\nfunction isBefore(startCursor, orderAttr, direction, idVec) {\n const [c_e, _c_a, c_v, c_t] = startCursor;\n const compareVal = direction === 'desc' ? 1 : -1;\n if (orderAttr['forward-identity']?.[2] === 'id') {\n return compareOrderTriples(idVec, [c_e, c_t], null) === compareVal;\n }\n const [e, v] = idVec;\n const dataType = orderAttr['checked-data-type'];\n const v_new = dataType === 'date' ? comparableDate(v) : v;\n const c_v_new = dataType === 'date' ? comparableDate(c_v) : c_v;\n\n return (\n compareOrderTriples([e, v_new], [c_e, c_v_new], dataType) === compareVal\n );\n}\n\nfunction orderAttrFromCursor(attrsStore: s.AttrsStore, cursor) {\n const cursorAttrId = cursor[1];\n return attrsStore.getAttr(cursorAttrId);\n}\n\nfunction orderAttrFromOrder(attrsStore: s.AttrsStore, etype, order) {\n const label = Object.keys(order)[0];\n return s.getAttrByFwdIdentName(attrsStore, etype, label);\n}\n\nfunction getOrderAttr(attrsStore: s.AttrsStore, etype, cursor, order) {\n if (cursor) {\n return orderAttrFromCursor(attrsStore, cursor);\n }\n if (order) {\n return orderAttrFromOrder(attrsStore, etype, order);\n }\n}\n\nfunction objectAttrs(\n attrsStore: s.AttrsStore,\n etype,\n dq,\n): Map<string, InstantDBAttr> | undefined {\n if (!Array.isArray(dq.fields)) {\n return s.getBlobAttrs(attrsStore, etype);\n }\n\n const attrs = new Map();\n\n for (const field of dq.fields) {\n const attr = s.getAttrByFwdIdentName(attrsStore, etype, field);\n const label = attr?.['forward-identity']?.[2];\n if (label && s.isBlob(attr)) {\n attrs.set(label, attr);\n }\n }\n // Ensure we add the id field to avoid empty objects\n if (!attrs.has('id')) {\n const attr = s.getAttrByFwdIdentName(attrsStore, etype, 'id');\n const label = attr?.['forward-identity']?.[2];\n if (label) {\n attrs.set(label, attr);\n }\n }\n\n return attrs;\n}\n\nfunction runDataloadAndReturnObjects(\n store: s.Store,\n attrsStore: s.AttrsStore,\n { etype, pageInfo, dq, form },\n) {\n const order = form?.$?.order;\n const isLeadingQuery = isLeading(form);\n const direction = determineDirection(form);\n\n let idVecs = datalogQuery(store, dq);\n\n const startCursor = pageInfo?.['start-cursor'];\n const orderAttr = getOrderAttr(attrsStore, etype, startCursor, order);\n\n if (orderAttr && orderAttr?.['forward-identity']?.[2] !== 'id') {\n const isDate = orderAttr['checked-data-type'] === 'date';\n const a = orderAttr.id;\n idVecs = idVecs.map(([id]) => {\n // order attr is required to be cardinality one, so there will\n // be at most one value here\n let v = store.eav.get(id)?.get(a)?.values()?.next()?.value?.[2];\n if (isDate) {\n v = comparableDate(v);\n }\n return [id, v];\n });\n }\n\n idVecs.sort(\n direction === 'asc'\n ? function compareIdVecs(a, b) {\n return compareOrderTriples(a, b, orderAttr?.['checked-data-type']);\n }\n : function compareIdVecs(a, b) {\n return compareOrderTriples(b, a, orderAttr?.['checked-data-type']);\n },\n );\n\n let objects = {};\n const attrs = objectAttrs(attrsStore, etype, dq);\n\n for (const idVec of idVecs) {\n const [id] = idVec;\n if (objects[id]) {\n continue;\n }\n if (\n !isLeadingQuery &&\n startCursor &&\n orderAttr &&\n isBefore(startCursor, orderAttr, direction, idVec)\n ) {\n continue;\n }\n\n const obj = s.getAsObject(store, attrs, id);\n if (obj) {\n objects[id] = obj;\n }\n }\n return objects;\n}\n\nfunction determineDirection(form) {\n const orderOpts = form.$?.order;\n if (!orderOpts) {\n return 'asc';\n }\n\n return orderOpts[Object.keys(orderOpts)[0]] || 'asc';\n}\n\n/**\n * A \"leading\" query has no `offset`, `before`, or `after`\n *\n * It is at the 'beginning' of the order\n */\nfunction isLeading(form) {\n const offset = form.$?.offset;\n const before = form.$?.before;\n const after = form.$?.after;\n return !offset && !before && !after;\n}\n\n/**\n * Given a query like:\n *\n * {\n * users: {\n * $: { where: { name: \"Joe\" } },\n * },\n * };\n *\n * `resolveObjects`, turns where clause: `{ name: \"Joe\" }`\n * into a datalog query. We then run the datalog query,\n * and reduce all the triples into objects.\n */\nfunction resolveObjects(\n store: s.Store,\n attrsStore: s.AttrsStore,\n { etype, level, form, join, pageInfo },\n) {\n // Wait for server to tell us where we start if we don't start from the beginning\n if (!isLeading(form) && (!pageInfo || !pageInfo['start-cursor'])) {\n return [];\n }\n\n const where = withJoin(\n makeWhere(attrsStore, etype, level, form.$?.where),\n join,\n );\n const find = makeFind(makeVarImpl, etype, level);\n const fields = form.$?.fields;\n\n const objs = runDataloadAndReturnObjects(store, attrsStore, {\n etype,\n pageInfo,\n form,\n dq: { where, find, fields },\n });\n\n const limit = form.$?.limit || form.$?.first || form.$?.last;\n if (limit != null) {\n if (level > 0 && warningEnabled) {\n console.warn(\n 'WARNING: Limits in child queries are only run client-side. Data returned from the server will not have a limit.',\n );\n }\n\n const entries = Object.entries(objs);\n if (entries.length <= limit) {\n return objs;\n }\n return Object.fromEntries(entries.slice(0, limit));\n }\n\n return objs;\n}\n\n/**\n * It's possible that we query\n * for an attribute that doesn't exist yet.\n *\n * { users: { $: { where: { nonExistentProperty: \"foo\" } } } }\n *\n * This swallows the missing attr error and returns\n * an empty result instead\n */\nfunction guardedResolveObjects(store: s.Store, attrsStore: s.AttrsStore, opts) {\n try {\n return resolveObjects(store, attrsStore, opts);\n } catch (e) {\n if (e instanceof AttrNotFoundError) {\n return {};\n }\n throw e;\n }\n}\n/**\n * Given a query like:\n *\n * {\n * users: {\n * $: { where: { name: \"Joe\" } },\n * posts: {},\n * },\n * };\n *\n * `guardResolveObjects` will return the relevant `users` objects\n * `extendObjects` will then extend each `user` object with relevant `posts`.\n */\nfunction queryOne(store: s.Store, attrsStore: s.AttrsStore, opts) {\n const objects = guardedResolveObjects(store, attrsStore, opts);\n return extendObjects(makeVarImpl, store, attrsStore, opts, objects);\n}\n\nfunction formatPageInfo(\n pageInfo: Record<\n string,\n {\n 'start-cursor'?: Cursor | null;\n 'end-cursor'?: Cursor | null;\n 'has-next-page?'?: boolean | null;\n 'has-previous-page?'?: boolean | null;\n }\n >,\n) {\n const res = {};\n for (const [k, v] of Object.entries(pageInfo)) {\n res[k] = {\n startCursor: v['start-cursor'],\n endCursor: v['end-cursor'],\n hasNextPage: v['has-next-page?'],\n hasPreviousPage: v['has-previous-page?'],\n };\n }\n return res;\n}\n\nexport default function query(\n {\n store,\n attrsStore,\n pageInfo,\n aggregate,\n }: {\n store: s.Store;\n attrsStore: s.AttrsStore;\n pageInfo?: any;\n aggregate?: any;\n },\n q,\n) {\n const data = Object.keys(q).reduce(function reduceResult(res, k) {\n if (aggregate?.[k] || '$$ruleParams' === k) {\n // Aggregate doesn't return any join rows and has no children,\n // so don't bother querying further\n return res;\n }\n res[k] = queryOne(store, attrsStore, {\n etype: k,\n form: q[k],\n level: 0,\n pageInfo: pageInfo?.[k],\n });\n return res;\n }, {});\n\n const result: { data: any; pageInfo?: any; aggregate?: any } = { data };\n if (pageInfo) {\n result.pageInfo = formatPageInfo(pageInfo);\n }\n\n if (aggregate) {\n result.aggregate = aggregate;\n }\n\n return result;\n}\n"]}
1
+ {"version":3,"file":"instaql.js","sourceRoot":"","sources":["../../src/instaql.ts"],"names":[],"mappings":"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","sourcesContent":["import { query as datalogQuery } from './datalog.js';\nimport { uuidCompare } from './utils/id.ts';\nimport { stringCompare } from './utils/strings.ts';\nimport * as s from './store.ts';\nimport { InstantDBAttr } from './attrTypes.ts';\nimport { Cursor } from './queryTypes.ts';\nimport { warningEnabled } from './warningToggle.ts';\n\ntype Pat = [string | any, string, string | any, string | number];\ntype Pats = Array<Pat>;\ntype OrPat = {\n or: {\n patterns: FullPats;\n joinSym: string;\n };\n};\ntype AndPat = {\n and: {\n patterns: FullPats;\n joinSym: string;\n };\n};\ntype FullPat = Pat | OrPat | AndPat;\ntype FullPats = Array<FullPat>;\n\n// Pattern variables\n// -----------------\n\ntype MakeVar = (x: string, level: number) => string;\n\nlet _seed = 0;\n\nfunction wildcard(friendlyName: string) {\n return makeVarImpl(`_${friendlyName}`, _seed++);\n}\n\nfunction makeVarImpl(x: string, level: number): string {\n return `?${x}-${level}`;\n}\n\n// Where\n// -----------------\n\nclass AttrNotFoundError extends Error {\n constructor(message) {\n super(message);\n this.name = 'AttrNotFoundError';\n }\n}\n\nfunction idAttr(attrsStore: s.AttrsStore, ns: string): InstantDBAttr {\n const attr = s.getPrimaryKeyAttr(attrsStore, ns);\n\n if (!attr) {\n throw new AttrNotFoundError(`Could not find id attr for ${ns}`);\n }\n return attr;\n}\n\nfunction defaultWhere(\n makeVar: MakeVar,\n attrsStore: s.AttrsStore,\n etype: string,\n level: number,\n): Pats {\n return [eidWhere(makeVar, attrsStore, etype, level)];\n}\n\nfunction eidWhere(\n makeVar: MakeVar,\n attrsStore: s.AttrsStore,\n etype: string,\n level: number,\n): Pat {\n return [\n makeVar(etype, level),\n idAttr(attrsStore, etype).id,\n makeVar(etype, level),\n makeVar('time', level),\n ];\n}\n\nfunction replaceInAttrPat(attrPat: Pat, needle: string, v: any): Pat {\n return attrPat.map((x) => (x === needle ? v : x)) as Pat;\n}\n\nfunction refAttrPat(\n makeVar: MakeVar,\n attrsStore: s.AttrsStore,\n etype: string,\n level: number,\n label: string,\n): [string, number, Pat, InstantDBAttr, boolean] {\n const fwdAttr = s.getAttrByFwdIdentName(attrsStore, etype, label);\n const revAttr = s.getAttrByReverseIdentName(attrsStore, etype, label);\n const attr = fwdAttr || revAttr;\n\n if (!attr) {\n throw new AttrNotFoundError(`Could not find attr for ${[etype, label]}`);\n }\n\n if (attr['value-type'] !== 'ref') {\n throw new Error(`Attr ${attr.id} is not a ref`);\n }\n\n const [_f, fwdEtype] = attr['forward-identity'];\n const [_r, revEtype] = attr['reverse-identity']!;\n const nextLevel = level + 1;\n const attrPat: Pat = fwdAttr\n ? [\n makeVar(fwdEtype, level),\n attr.id,\n makeVar(revEtype, nextLevel),\n wildcard('time'),\n ]\n : [\n makeVar(fwdEtype, nextLevel),\n attr.id,\n makeVar(revEtype, level),\n wildcard('time'),\n ];\n\n const nextEtype = fwdAttr ? revEtype : fwdEtype;\n\n const isForward = Boolean(fwdAttr);\n\n return [nextEtype, nextLevel, attrPat, attr, isForward];\n}\n\nfunction makeLikeMatcher(caseSensitive: boolean, pattern: string) {\n if (typeof pattern !== 'string') {\n return function likeMatcher(_value) {\n return false;\n };\n }\n\n const escapedPattern = pattern.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n const regexPattern = escapedPattern.replace(/%/g, '.*').replace(/_/g, '.');\n\n const regex = new RegExp(\n `^${regexPattern}$`,\n caseSensitive ? undefined : 'i',\n );\n\n return function likeMatcher(value) {\n if (typeof value !== 'string') {\n return false;\n }\n return regex.test(value);\n };\n}\n\nfunction parseValue(attr: InstantDBAttr, v: any) {\n if (\n typeof v !== 'object' ||\n v.hasOwnProperty('$in') ||\n v.hasOwnProperty('in')\n ) {\n return v;\n }\n\n const isDate = attr['checked-data-type'] === 'date';\n\n if (v.hasOwnProperty('$gt')) {\n return {\n $comparator: true,\n $op: isDate\n ? function gtDate(triple) {\n return new Date(triple[2]) > new Date(v.$gt);\n }\n : function gt(triple) {\n return triple[2] > v.$gt;\n },\n };\n }\n if (v.hasOwnProperty('$gte')) {\n return {\n $comparator: true,\n $op: isDate\n ? function gteDate(triple) {\n return new Date(triple[2]) >= new Date(v.$gte);\n }\n : function gte(triple) {\n return triple[2] >= v.$gte;\n },\n };\n }\n\n if (v.hasOwnProperty('$lt')) {\n return {\n $comparator: true,\n $op: isDate\n ? function ltDate(triple) {\n return new Date(triple[2]) < new Date(v.$lt);\n }\n : function lt(triple) {\n return triple[2] < v.$lt;\n },\n };\n }\n if (v.hasOwnProperty('$lte')) {\n return {\n $comparator: true,\n $op: isDate\n ? function lteDate(triple) {\n return new Date(triple[2]) <= new Date(v.$lte);\n }\n : function lte(triple) {\n return triple[2] <= v.$lte;\n },\n };\n }\n\n if (v.hasOwnProperty('$like')) {\n const matcher = makeLikeMatcher(true, v.$like);\n return {\n $comparator: true,\n $op: function like(triple) {\n return matcher(triple[2]);\n },\n };\n }\n\n if (v.hasOwnProperty('$ilike')) {\n const matcher = makeLikeMatcher(false, v.$ilike);\n return {\n $comparator: true,\n $op: function ilike(triple) {\n return matcher(triple[2]);\n },\n };\n }\n\n return v;\n}\n\nfunction valueAttrPat(\n makeVar: MakeVar,\n attrsStore: s.AttrsStore,\n valueEtype: string,\n valueLevel: number,\n valueLabel: string,\n v: any,\n): Pat {\n const fwdAttr = s.getAttrByFwdIdentName(attrsStore, valueEtype, valueLabel);\n const revAttr = s.getAttrByReverseIdentName(\n attrsStore,\n valueEtype,\n valueLabel,\n );\n const attr = fwdAttr || revAttr;\n\n if (!attr) {\n throw new AttrNotFoundError(\n `No attr for etype = ${valueEtype} label = ${valueLabel}`,\n );\n }\n\n if (v?.hasOwnProperty('$isNull')) {\n const idAttr = s.getAttrByFwdIdentName(attrsStore, valueEtype, 'id');\n if (!idAttr) {\n throw new AttrNotFoundError(\n `No attr for etype = ${valueEtype} label = id`,\n );\n }\n\n return [\n makeVar(valueEtype, valueLevel),\n idAttr.id,\n { $isNull: { attrId: attr.id, isNull: v.$isNull, reverse: !fwdAttr } },\n wildcard('time'),\n ];\n }\n\n if (fwdAttr) {\n return [\n makeVar(valueEtype, valueLevel),\n attr.id,\n parseValue(attr, v),\n wildcard('time'),\n ];\n }\n return [v, attr.id, makeVar(valueEtype, valueLevel), wildcard('time')];\n}\n\nfunction refAttrPats(\n makeVar: MakeVar,\n attrsStore: s.AttrsStore,\n etype: string,\n level: number,\n refsPath: string[],\n): [string, number, Pats] {\n const [lastEtype, lastLevel, attrPats] = refsPath.reduce(\n (acc, label) => {\n const [etype, level, attrPats] = acc;\n const [nextEtype, nextLevel, attrPat] = refAttrPat(\n makeVar,\n attrsStore,\n etype,\n level,\n label,\n );\n return [nextEtype, nextLevel, [...attrPats, attrPat]];\n },\n [etype, level, []],\n );\n\n return [lastEtype, lastLevel, attrPats];\n}\n\nfunction whereCondAttrPats(\n makeVar: MakeVar,\n attrsStore: s.AttrsStore,\n etype: string,\n level: number,\n path: string[],\n v: any,\n): Pats {\n const refsPath = path.slice(0, path.length - 1);\n const valueLabel = path[path.length - 1];\n const [lastEtype, lastLevel, refPats] = refAttrPats(\n makeVar,\n attrsStore,\n etype,\n level,\n refsPath,\n );\n const valuePat = valueAttrPat(\n makeVar,\n attrsStore,\n lastEtype,\n lastLevel,\n valueLabel,\n v,\n );\n\n return refPats.concat([valuePat]);\n}\n\nfunction withJoin(where, join) {\n return join ? [join].concat(where) : where;\n}\n\nfunction isOrClauses([k, v]): boolean {\n return k === 'or' && Array.isArray(v);\n}\n\nfunction isAndClauses([k, v]): boolean {\n return k === 'and' && Array.isArray(v);\n}\n\n// Creates a makeVar that will namespace symbols for or clauses\n// to prevent conflicts, except for the base etype\nfunction genMakeVar(baseMakeVar: MakeVar, joinSym: string, orIdx: number) {\n return (x, lvl) => {\n const base = baseMakeVar(x, lvl);\n if (joinSym == base) {\n return base;\n }\n return `${base}-${orIdx}`;\n };\n}\n\nfunction parseWhereClauses(\n makeVar: MakeVar,\n clauseType: 'or' | 'and' /* 'or' | 'and' */,\n attrsStore: s.AttrsStore,\n etype: string,\n level: number,\n whereValue: any,\n): FullPat {\n const joinSym = makeVar(etype, level);\n const patterns: FullPats = whereValue.map((w, i) => {\n const makeNamespacedVar = genMakeVar(makeVar, joinSym, i);\n return parseWhere(makeNamespacedVar, attrsStore, etype, level, w);\n });\n return { [clauseType]: { patterns, joinSym } } as AndPat | OrPat;\n}\n\n// Given a path, returns a list of paths leading up to this path:\n// growPath([1, 2, 3]) -> [[1], [1, 2], [1, 2, 3]]\nfunction growPath<T>(path: T[]) {\n const ret: Array<T[]> = [];\n for (let i = 1; i <= path.length; i++) {\n ret.push(path.slice(0, i));\n }\n return ret;\n}\n\n// Returns array of pattern arrays that should be grouped in OR\n// to capture any intermediate nulls\nfunction whereCondAttrPatsForNullIsTrue(\n makeVar: MakeVar,\n attrsStore: s.AttrsStore,\n etype: string,\n level: number,\n path: string[],\n): Pats[] {\n return growPath(path).map((path) =>\n whereCondAttrPats(makeVar, attrsStore, etype, level, path, {\n $isNull: true,\n }),\n );\n}\n\nfunction parseWhere(\n makeVar: MakeVar,\n attrsStore: s.AttrsStore,\n etype: string,\n level: number,\n where: Record<string, any>,\n): FullPats {\n return Object.entries(where).flatMap(([k, v]) => {\n if (isOrClauses([k, v])) {\n return parseWhereClauses(makeVar, 'or', attrsStore, etype, level, v);\n }\n if (isAndClauses([k, v])) {\n return parseWhereClauses(makeVar, 'and', attrsStore, etype, level, v);\n }\n\n // Temporary hack until we have support for a uuid index on `id`\n if (k === '$entityIdStartsWith') {\n return [];\n }\n\n const path = k.split('.');\n\n // Normalize $ne to $not\n if (v?.hasOwnProperty('$ne')) {\n v = { ...v, $not: v.$ne };\n delete v.$ne;\n }\n\n if (v?.hasOwnProperty('$not')) {\n // `$not` won't pick up entities that are missing the attr, so we\n // add in a `$isNull` to catch those too.\n const notPats = whereCondAttrPats(\n makeVar,\n attrsStore,\n etype,\n level,\n path,\n v,\n );\n const nilPats = whereCondAttrPatsForNullIsTrue(\n makeVar,\n attrsStore,\n etype,\n level,\n path,\n );\n return [\n {\n or: {\n patterns: [notPats, ...nilPats],\n joinSym: makeVar(etype, level),\n },\n },\n ];\n }\n\n if (v?.hasOwnProperty('$isNull') && v.$isNull === true && path.length > 1) {\n // Make sure we're capturing all of the intermediate paths that might be null\n // by checking for null at each step along the path\n return [\n {\n or: {\n patterns: whereCondAttrPatsForNullIsTrue(\n makeVar,\n attrsStore,\n etype,\n level,\n path,\n ),\n joinSym: makeVar(etype, level),\n },\n },\n ];\n }\n\n return whereCondAttrPats(makeVar, attrsStore, etype, level, path, v);\n });\n}\n\nfunction makeWhere(\n attrsStore: s.AttrsStore,\n etype: string,\n level: number,\n where: Record<string, any> | null,\n): FullPats {\n const makeVar = makeVarImpl;\n if (!where) {\n return defaultWhere(makeVar, attrsStore, etype, level);\n }\n const parsedWhere = parseWhere(makeVar, attrsStore, etype, level, where);\n return parsedWhere.concat(defaultWhere(makeVar, attrsStore, etype, level));\n}\n\n// Find\n// -----------------\n\nfunction makeFind(makeVar: MakeVar, etype: string, level: number) {\n return [makeVar(etype, level), makeVar('time', level)];\n}\n\n// extendObjects\n// -----------------\n\nfunction makeJoin(\n makeVar: MakeVar,\n attrsStore: s.AttrsStore,\n etype: string,\n level: number,\n label: string,\n eid: string,\n) {\n const [nextEtype, nextLevel, pat, attr, isForward] = refAttrPat(\n makeVar,\n attrsStore,\n etype,\n level,\n label,\n );\n const actualized = replaceInAttrPat(pat, makeVar(etype, level), eid);\n return [nextEtype, nextLevel, actualized, attr, isForward];\n}\n\nfunction extendObjects(\n makeVar: MakeVar,\n store: s.Store,\n attrsStore: s.AttrsStore,\n { etype, level, form },\n objects,\n) {\n const childQueries = Object.keys(form).filter((c) => c !== '$');\n if (!childQueries.length) {\n return Object.values(objects);\n }\n return Object.entries(objects).map(function extendChildren([eid, parent]) {\n const childResults = childQueries.map(function getChildResult(label) {\n const isSingular = Boolean(\n store.cardinalityInference &&\n attrsStore.linkIndex?.[etype]?.[label]?.isSingular,\n );\n\n try {\n const [nextEtype, nextLevel, join] = makeJoin(\n makeVar,\n attrsStore,\n etype,\n level,\n label,\n eid,\n );\n\n const childrenArray = queryOne(store, attrsStore, {\n etype: nextEtype,\n level: nextLevel,\n form: form[label],\n join,\n });\n\n const childOrChildren = isSingular ? childrenArray[0] : childrenArray;\n\n return { [label]: childOrChildren };\n } catch (e) {\n if (e instanceof AttrNotFoundError) {\n return { [label]: isSingular ? undefined : [] };\n }\n throw e;\n }\n });\n\n return childResults.reduce(function reduceChildren(parent, child) {\n return { ...parent, ...child };\n }, parent);\n });\n}\n\n// resolveObjects\n// -----------------\n\nfunction shouldIgnoreAttr(attrs, id) {\n const attr = attrs[id];\n return attr['value-type'] === 'ref' && attr['forward-identity'][2] !== 'id';\n}\n\n// Compares values where we already know that the two values are distinct\n// and not null.\n// Takes into account the data type.\nfunction compareDisparateValues(a, b, dataType) {\n if (dataType === 'string') {\n return stringCompare(a, b);\n }\n if (a > b) {\n return 1;\n }\n return -1;\n}\n\nexport function compareOrder(id_a: string, v_a, id_b: string, v_b, dataType) {\n if (v_a === v_b || (v_a == null && v_b == null)) {\n return uuidCompare(id_a, id_b);\n }\n\n if (v_b == null) {\n return 1;\n }\n if (v_a == null) {\n return -1;\n }\n\n return compareDisparateValues(v_a, v_b, dataType);\n}\n\nfunction compareOrderTriples(\n [id_a, v_a]: [string, any],\n [id_b, v_b]: [string, any],\n dataType,\n) {\n return compareOrder(id_a, v_a, id_b, v_b, dataType);\n}\n\nfunction comparableDate(x) {\n if (x == null) {\n return x;\n }\n return new Date(x).getTime();\n}\n\nfunction compareToCursor(cursor, orderAttr, idVec) {\n const [c_e, _c_a, c_v, c_t] = cursor;\n\n if (orderAttr['forward-identity']?.[2] === 'id') {\n return compareOrderTriples(idVec, [c_e, c_t], null);\n }\n\n const [e, v] = idVec;\n const dataType = orderAttr['checked-data-type'];\n const v_new = dataType === 'date' ? comparableDate(v) : v;\n const c_v_new = dataType === 'date' ? comparableDate(c_v) : c_v;\n\n return compareOrderTriples([e, v_new], [c_e, c_v_new], dataType);\n}\n\nfunction isBefore(startCursor, orderAttr, direction, idVec) {\n const cmp = compareToCursor(startCursor, orderAttr, idVec);\n return direction === 'desc' ? cmp > 0 : cmp < 0;\n}\n\nfunction isAfter(endCursor, orderAttr, direction, idVec) {\n const cmp = compareToCursor(endCursor, orderAttr, idVec);\n return direction === 'desc' ? cmp < 0 : cmp > 0;\n}\n\nfunction orderAttrFromCursor(attrsStore: s.AttrsStore, cursor) {\n const cursorAttrId = cursor[1];\n return attrsStore.getAttr(cursorAttrId);\n}\n\nfunction orderAttrFromOrder(attrsStore: s.AttrsStore, etype, order) {\n const label = Object.keys(order)[0];\n return s.getAttrByFwdIdentName(attrsStore, etype, label);\n}\n\nfunction getOrderAttr(attrsStore: s.AttrsStore, etype, cursor, order) {\n if (cursor) {\n return orderAttrFromCursor(attrsStore, cursor);\n }\n if (order) {\n return orderAttrFromOrder(attrsStore, etype, order);\n }\n}\n\nfunction objectAttrs(\n attrsStore: s.AttrsStore,\n etype,\n dq,\n): Map<string, InstantDBAttr> | undefined {\n if (!Array.isArray(dq.fields)) {\n return s.getBlobAttrs(attrsStore, etype);\n }\n\n const attrs = new Map();\n\n for (const field of dq.fields) {\n const attr = s.getAttrByFwdIdentName(attrsStore, etype, field);\n const label = attr?.['forward-identity']?.[2];\n if (label && s.isBlob(attr)) {\n attrs.set(label, attr);\n }\n }\n // Ensure we add the id field to avoid empty objects\n if (!attrs.has('id')) {\n const attr = s.getAttrByFwdIdentName(attrsStore, etype, 'id');\n const label = attr?.['forward-identity']?.[2];\n if (label) {\n attrs.set(label, attr);\n }\n }\n\n return attrs;\n}\n\nfunction runDataloadAndReturnObjects(\n store: s.Store,\n attrsStore: s.AttrsStore,\n { etype, pageInfo, dq, form },\n) {\n const order = form?.$?.order;\n const isLeadingQuery = isLeading(form);\n const direction = determineDirection(form);\n\n let idVecs = datalogQuery(store, dq);\n\n const startCursor = pageInfo?.['start-cursor'];\n const endCursor = pageInfo?.['end-cursor'];\n const orderAttr = getOrderAttr(attrsStore, etype, startCursor, order);\n\n if (orderAttr && orderAttr?.['forward-identity']?.[2] !== 'id') {\n const isDate = orderAttr['checked-data-type'] === 'date';\n const a = orderAttr.id;\n idVecs = idVecs.map(([id]) => {\n // order attr is required to be cardinality one, so there will\n // be at most one value here\n let v = store.eav.get(id)?.get(a)?.values()?.next()?.value?.[2];\n if (isDate) {\n v = comparableDate(v);\n }\n return [id, v];\n });\n }\n\n idVecs.sort(\n direction === 'asc'\n ? function compareIdVecs(a, b) {\n return compareOrderTriples(a, b, orderAttr?.['checked-data-type']);\n }\n : function compareIdVecs(a, b) {\n return compareOrderTriples(b, a, orderAttr?.['checked-data-type']);\n },\n );\n\n let objects = {};\n const attrs = objectAttrs(attrsStore, etype, dq);\n\n for (const idVec of idVecs) {\n const [id] = idVec;\n if (objects[id]) {\n continue;\n }\n if (\n !isLeadingQuery &&\n startCursor &&\n orderAttr &&\n isBefore(startCursor, orderAttr, direction, idVec)\n ) {\n continue;\n }\n\n if (\n endCursor &&\n orderAttr &&\n isAfter(endCursor, orderAttr, direction, idVec)\n ) {\n continue;\n }\n\n const obj = s.getAsObject(store, attrs, id);\n if (obj) {\n objects[id] = obj;\n }\n }\n return objects;\n}\n\nfunction determineDirection(form) {\n const orderOpts = form.$?.order;\n if (!orderOpts) {\n return 'asc';\n }\n\n return orderOpts[Object.keys(orderOpts)[0]] || 'asc';\n}\n\n/**\n * A \"leading\" query has no `offset`, `before`, or `after`\n *\n * It is at the 'beginning' of the order\n */\nfunction isLeading(form) {\n const offset = form.$?.offset;\n const before = form.$?.before;\n const after = form.$?.after;\n return !offset && !before && !after;\n}\n\n/**\n * Given a query like:\n *\n * {\n * users: {\n * $: { where: { name: \"Joe\" } },\n * },\n * };\n *\n * `resolveObjects`, turns where clause: `{ name: \"Joe\" }`\n * into a datalog query. We then run the datalog query,\n * and reduce all the triples into objects.\n */\nfunction resolveObjects(\n store: s.Store,\n attrsStore: s.AttrsStore,\n { etype, level, form, join, pageInfo },\n) {\n // Wait for server to tell us where we start if we don't start from the beginning\n if (!isLeading(form) && (!pageInfo || !pageInfo['start-cursor'])) {\n return [];\n }\n\n const where = withJoin(\n makeWhere(attrsStore, etype, level, form.$?.where),\n join,\n );\n const find = makeFind(makeVarImpl, etype, level);\n const fields = form.$?.fields;\n\n const objs = runDataloadAndReturnObjects(store, attrsStore, {\n etype,\n pageInfo,\n form,\n dq: { where, find, fields },\n });\n\n const limit = form.$?.limit || form.$?.first || form.$?.last;\n if (limit != null) {\n if (level > 0 && warningEnabled) {\n console.warn(\n 'WARNING: Limits in child queries are only run client-side. Data returned from the server will not have a limit.',\n );\n }\n\n const entries = Object.entries(objs);\n if (entries.length <= limit) {\n return objs;\n }\n return Object.fromEntries(entries.slice(0, limit));\n }\n\n return objs;\n}\n\n/**\n * It's possible that we query\n * for an attribute that doesn't exist yet.\n *\n * { users: { $: { where: { nonExistentProperty: \"foo\" } } } }\n *\n * This swallows the missing attr error and returns\n * an empty result instead\n */\nfunction guardedResolveObjects(store: s.Store, attrsStore: s.AttrsStore, opts) {\n try {\n return resolveObjects(store, attrsStore, opts);\n } catch (e) {\n if (e instanceof AttrNotFoundError) {\n return {};\n }\n throw e;\n }\n}\n/**\n * Given a query like:\n *\n * {\n * users: {\n * $: { where: { name: \"Joe\" } },\n * posts: {},\n * },\n * };\n *\n * `guardResolveObjects` will return the relevant `users` objects\n * `extendObjects` will then extend each `user` object with relevant `posts`.\n */\nfunction queryOne(store: s.Store, attrsStore: s.AttrsStore, opts) {\n const objects = guardedResolveObjects(store, attrsStore, opts);\n return extendObjects(makeVarImpl, store, attrsStore, opts, objects);\n}\n\nfunction formatPageInfo(\n pageInfo: Record<\n string,\n {\n 'start-cursor'?: Cursor | null;\n 'end-cursor'?: Cursor | null;\n 'has-next-page?'?: boolean | null;\n 'has-previous-page?'?: boolean | null;\n }\n >,\n) {\n const res = {};\n for (const [k, v] of Object.entries(pageInfo)) {\n res[k] = {\n startCursor: v['start-cursor'],\n endCursor: v['end-cursor'],\n hasNextPage: v['has-next-page?'],\n hasPreviousPage: v['has-previous-page?'],\n };\n }\n return res;\n}\n\nexport default function query(\n {\n store,\n attrsStore,\n pageInfo,\n aggregate,\n }: {\n store: s.Store;\n attrsStore: s.AttrsStore;\n pageInfo?: any;\n aggregate?: any;\n },\n q,\n) {\n const data = Object.keys(q).reduce(function reduceResult(res, k) {\n if (aggregate?.[k] || '$$ruleParams' === k) {\n // Aggregate doesn't return any join rows and has no children,\n // so don't bother querying further\n return res;\n }\n res[k] = queryOne(store, attrsStore, {\n etype: k,\n form: q[k],\n level: 0,\n pageInfo: pageInfo?.[k],\n });\n return res;\n }, {});\n\n const result: { data: any; pageInfo?: any; aggregate?: any } = { data };\n if (pageInfo) {\n result.pageInfo = formatPageInfo(pageInfo);\n }\n\n if (aggregate) {\n result.aggregate = aggregate;\n }\n\n return result;\n}\n"]}
@@ -160,7 +160,7 @@ type ComputeAttrs<AllAttrs, Fields extends readonly string[] | undefined> = Fiel
160
160
  type InstaQLEntity<Schema extends IContainEntitiesAndLinks<EntitiesDef, any>, EntityName extends keyof Schema['entities'], Subquery extends InstaQLEntitySubquery<Schema, EntityName> | undefined = {}, Fields extends InstaQLFields<Schema, EntityName> | undefined = undefined, UseDates extends boolean = false> = Expand<{
161
161
  id: string;
162
162
  } & ComputeAttrs<ResolveEntityAttrs<Schema['entities'][EntityName], UseDates>, Fields> & InstaQLEntitySubqueryResult<Schema, EntityName, Subquery, UseDates>>;
163
- type InstaQLQueryEntityResult<Entities extends EntitiesDef, EntityName extends keyof Entities, Query extends {
163
+ export type InstaQLQueryEntityResult<Entities extends EntitiesDef, EntityName extends keyof Entities, Query extends {
164
164
  [QueryPropName in keyof Entities[EntityName]['links']]?: any;
165
165
  }, WithCardinalityInference extends boolean, UseDates extends boolean> = {
166
166
  id: string;
@@ -268,5 +268,5 @@ type ExtractAttrFromDotPath<Path extends string | number | symbol, Schema extend
268
268
  type ValidQuery<Q extends Record<string, any>, S extends IContainEntitiesAndLinks<any, any>> = S extends InstantUnknownSchemaDef ? InstaQLParams<S> : keyof Q extends keyof S['entities'] ? {
269
269
  [K in keyof S['entities']]?: ValidQueryObject<Q[K], S, K, true>;
270
270
  } : never;
271
- export { Query, QueryResponse, InstaQLResponse, PageInfoResponse, InstantObject, Exactly, Remove$, ValidQuery, InstaQLQueryResult, InstaQLParams, InstaQLOptions, InstaQLQueryEntityResult, InstaQLEntitySubquery, InstaQLEntity, InstaQLResult, InstaQLFields, Cursor, InstaQLQueryParams, };
271
+ export { Query, QueryResponse, InstaQLResponse, PageInfoResponse, InstantObject, Exactly, Remove$, ValidQuery, InstaQLQueryResult, InstaQLParams, InstaQLOptions, InstaQLEntitySubquery, InstaQLEntity, InstaQLResult, InstaQLFields, Cursor, InstaQLQueryParams, };
272
272
  //# sourceMappingURL=queryTypes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"queryTypes.d.ts","sourceRoot":"","sources":["../../src/queryTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queryTypes.d.ts","sourceRoot":"","sources":["../../src/queryTypes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"queryTypes.js","sourceRoot":"","sources":["../../src/queryTypes.ts"],"names":[],"mappings":";AAAA,QAAQ;AACR,QAAQ","sourcesContent":["// Query\n// -----\n\nimport type {\n EntitiesDef,\n IContainEntitiesAndLinks,\n InstantGraph,\n LinkAttrDef,\n RuleParams,\n ResolveAttrs,\n ResolveEntityAttrs,\n DataAttrDef,\n AttrsDefs,\n EntityDefFromSchema,\n InstantUnknownSchemaDef,\n} from './schemaTypes.ts';\n\ntype BuiltIn = Date | Function | Error | RegExp;\n\ntype Primitive = string | number | boolean | symbol | null | undefined;\n\nexport type Expand<T> = T extends BuiltIn | Primitive\n ? T\n : T extends object\n ? T extends infer O\n ? { [K in keyof O]: Expand<O[K]> }\n : never\n : T;\n\n// NonEmpty disallows {}, so that you must provide at least one field\nexport type NonEmpty<T> = {\n [K in keyof T]-?: Required<Pick<T, K>>;\n}[keyof T];\n\ntype BaseWhereClauseValueComplex<V> = {\n /** @deprecated use `$in` instead of `in` */\n in?: V[];\n $in?: V[];\n /** @deprecated use `$ne` instead of `not` */\n $not?: V;\n $ne?: V;\n $gt?: V;\n $lt?: V;\n $gte?: V;\n $lte?: V;\n};\n\ntype IsAny<T> = boolean extends (T extends never ? true : false) ? true : false;\n\ntype WhereClauseValueComplex<V, R, I> = BaseWhereClauseValueComplex<V> &\n (IsAny<V> extends true\n ? {\n $ilike?: string;\n $like?: string;\n $isNull?: boolean;\n }\n : (V extends string\n ? {\n $like?: string;\n }\n : {}) &\n (R extends false\n ? {\n $isNull?: boolean;\n }\n : {}) &\n (I extends true\n ? {\n $ilike?: string;\n }\n : {}));\n\n// Make type display better\ntype WhereClauseValue<\n D extends DataAttrDef<string | number | boolean, boolean, boolean, boolean>,\n> =\n D extends DataAttrDef<infer V, infer R, infer I, boolean>\n ?\n | (IsAny<V> extends true ? string | number | boolean : V)\n | NonEmpty<WhereClauseValueComplex<V, R, I>>\n : never;\n\ntype WhereClauseColumnEntries<\n T extends {\n [key: string]: DataAttrDef<any, boolean, boolean, boolean>;\n },\n> = {\n [key in keyof T]?: WhereClauseValue<T[key]>;\n};\n\ntype WhereClauseComboEntries<\n T extends Record<any, DataAttrDef<any, boolean, boolean, boolean>>,\n> = {\n or?:\n | WhereClauses<T>[]\n | WhereClauseValue<DataAttrDef<any, false, true, boolean>>;\n and?:\n | WhereClauses<T>[]\n | WhereClauseValue<DataAttrDef<any, false, true, boolean>>;\n};\n\ntype WhereClauses<\n T extends Record<any, DataAttrDef<any, boolean, boolean, boolean>>,\n> = (\n | WhereClauseComboEntries<T>\n | (WhereClauseComboEntries<T> & WhereClauseColumnEntries<T>)\n) & {\n id?: WhereClauseValue<DataAttrDef<string, false, true, boolean>>;\n [key: `${string}.${string}`]: WhereClauseValue<\n DataAttrDef<any, false, true, boolean>\n >;\n};\n\n/**\n * A tuple representing a cursor.\n * These should not be constructed manually. The current format\n * is an implementation detail that may change in the future.\n * Use the `endCursor` or `startCursor` from the PageInfoResponse as the\n * `before` or `after` field in the query options.\n */\ntype Cursor = [string, string, any, number];\n\ntype Direction = 'asc' | 'desc';\n\ntype IndexedKeys<Attrs extends AttrsDefs> = {\n [K in keyof Attrs]: Attrs[K] extends DataAttrDef<\n any,\n any,\n infer IsIndexed,\n boolean\n >\n ? IsIndexed extends true\n ? K\n : never\n : never;\n}[keyof Attrs];\n\nexport type Order<\n Schema extends IContainEntitiesAndLinks<any, any>,\n EntityName extends keyof Schema['entities'],\n> =\n IndexedKeys<Schema['entities'][EntityName]['attrs']> extends never\n ? {\n serverCreatedAt?: Direction;\n }\n : {\n [K in IndexedKeys<Schema['entities'][EntityName]['attrs']>]?: Direction;\n } & {\n serverCreatedAt?: Direction;\n };\n\ntype $Option<\n S extends IContainEntitiesAndLinks<any, any>,\n K extends keyof S['entities'],\n> = {\n $?: {\n where?: WhereClauses<EntityDefFromSchema<S, K>>;\n order?: Order<S, K>;\n limit?: number;\n last?: number;\n first?: number;\n offset?: number;\n after?: Cursor;\n afterInclusive?: boolean;\n before?: Cursor;\n beforeInclusive?: boolean;\n fields?: InstaQLFields<S, K>;\n };\n};\n\ntype NamespaceVal =\n | $Option<IContainEntitiesAndLinks<any, any>, keyof EntitiesDef>\n | ($Option<IContainEntitiesAndLinks<any, any>, keyof EntitiesDef> & Subquery);\n\ntype Subquery = { [namespace: string]: NamespaceVal };\n\ninterface Query {\n [namespace: string]: NamespaceVal;\n}\n\ntype InstantObject = {\n id: string;\n [prop: string]: any;\n};\n\ntype ResponseObject<K, Schema> = K extends keyof Schema\n ? { id: string } & Schema[K]\n : InstantObject;\n\ntype IsEmptyObject<T> = T extends Record<string, never> ? true : false;\n\ntype ResponseOf<Q, Schema> = {\n [K in keyof Q]: IsEmptyObject<Q[K]> extends true\n ? ResponseObject<K, Schema>[]\n : (ResponseOf<Q[K], Schema> & ResponseObject<K, Schema>)[];\n};\n\ntype Remove$<T> = T extends object\n ? { [K in keyof T as Exclude<K, '$'>]: Remove$<T[K]> }\n : T;\n\ntype Remove$NonRecursive<T> = T extends object\n ? { [K in keyof T as Exclude<K, '$'>]: T[K] }\n : T;\n\ntype QueryResponse<\n Q,\n Schema,\n WithCardinalityInference extends boolean = false,\n UseDates extends boolean = false,\n> =\n Schema extends InstantGraph<infer E, any>\n ? InstaQLQueryResult<E, Q, WithCardinalityInference, UseDates>\n : ResponseOf<{ [K in keyof Q]: Remove$<Q[K]> }, Schema>;\n\ntype InstaQLResponse<Schema, Q, UseDates extends boolean = false> =\n Schema extends IContainEntitiesAndLinks<any, any>\n ? Q extends InstaQLParams<Schema> | undefined\n ? InstaQLResult<Schema, Q, UseDates>\n : never\n : never;\n\ntype PageInfoResponse<T> = {\n [K in keyof T]: {\n startCursor: Cursor;\n endCursor: Cursor;\n hasNextPage: boolean;\n hasPreviousPage: boolean;\n };\n};\n\n/**\n * (XXX)\n * https://github.com/microsoft/TypeScript/issues/26051\n *\n * TypeScript can permit extra keys when a generic extends a type.\n *\n * For some reason, it makes it possible to write a query like so:\n *\n * dummyQuery({\n * users: {\n * $: { where: { \"foo\": 1 } },\n * posts: {\n * $: { \"far\": {} }\n * }\n * }\n *\n * The problem: $: { \"far\": {} }\n *\n * This passes, when it should in reality fail. I don't know why\n * adding `Exactly` fixes this, but it does.\n *\n * */\ntype Exactly<Parent, Child> = Parent & {\n [K in keyof Child]: K extends keyof Parent ? Child[K] : never;\n};\n\n// SafeLookup<T, ['A', 'B', number]> is like doing\n// T['A']['B'][number], but it will merge with undefined if any\n// of the intermediates are undefined\ntype SafeLookup<T, K extends readonly PropertyKey[]> = K extends [\n infer First,\n ...infer Rest extends readonly PropertyKey[],\n]\n ? First extends keyof NonNullable<T>\n ?\n | SafeLookup<NonNullable<T>[First], Rest>\n | (T extends null | undefined ? undefined : never)\n : undefined\n : T;\n\n// ==========\n// InstaQL helpers\n\ntype InstaQLEntitySubqueryResult<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n EntityName extends keyof Schema['entities'],\n Query extends InstaQLEntitySubquery<Schema, EntityName> | undefined = {},\n UseDates extends boolean = false,\n> = {\n [QueryPropName in keyof Query]: Schema['entities'][EntityName]['links'][QueryPropName] extends LinkAttrDef<\n infer Cardinality,\n infer LinkedEntityName\n >\n ? LinkedEntityName extends keyof Schema['entities']\n ? Cardinality extends 'one'\n ?\n | InstaQLEntity<\n Schema,\n LinkedEntityName,\n Remove$NonRecursive<SafeLookup<Query, [QueryPropName]>>,\n SafeLookup<Query, [QueryPropName, '$', 'fields']>,\n UseDates\n >\n | undefined\n : InstaQLEntity<\n Schema,\n LinkedEntityName,\n Remove$NonRecursive<SafeLookup<Query, [QueryPropName]>>,\n SafeLookup<Query, [QueryPropName, '$', 'fields']>,\n UseDates\n >[]\n : never\n : never;\n};\n\ntype InstaQLQueryEntityLinksResult<\n Entities extends EntitiesDef,\n EntityName extends keyof Entities,\n Query extends {\n [LinkAttrName in keyof Entities[EntityName]['links']]?: any;\n },\n WithCardinalityInference extends boolean,\n UseDates extends boolean = false,\n> = {\n [QueryPropName in keyof Query]: Entities[EntityName]['links'][QueryPropName] extends LinkAttrDef<\n infer Cardinality,\n infer LinkedEntityName\n >\n ? LinkedEntityName extends keyof Entities\n ? WithCardinalityInference extends true\n ? Cardinality extends 'one'\n ?\n | InstaQLQueryEntityResult<\n Entities,\n LinkedEntityName,\n Query[QueryPropName],\n WithCardinalityInference,\n UseDates\n >\n | undefined\n : InstaQLQueryEntityResult<\n Entities,\n LinkedEntityName,\n Query[QueryPropName],\n WithCardinalityInference,\n UseDates\n >[]\n : InstaQLQueryEntityResult<\n Entities,\n LinkedEntityName,\n Query[QueryPropName],\n WithCardinalityInference,\n UseDates\n >[]\n : never\n : never;\n};\n\n// Pick, but applies the pick to each union\ntype DistributePick<T, K extends string> = T extends any\n ? { [P in K]: P extends keyof T ? T[P] : never }\n : never;\n\ntype InstaQLFields<\n S extends IContainEntitiesAndLinks<any, any>,\n K extends keyof S['entities'],\n> = (Extract<keyof ResolveEntityAttrs<S['entities'][K]>, string> | 'id')[];\n\ntype ComputeAttrs<\n AllAttrs,\n Fields extends readonly string[] | undefined,\n> = Fields extends readonly string[]\n ? DistributePick<AllAttrs, Exclude<Fields[number], 'id'>>\n : AllAttrs;\n\ntype InstaQLEntity<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n EntityName extends keyof Schema['entities'],\n Subquery extends InstaQLEntitySubquery<Schema, EntityName> | undefined = {},\n Fields extends InstaQLFields<Schema, EntityName> | undefined = undefined,\n UseDates extends boolean = false,\n> = Expand<\n { id: string } & ComputeAttrs<\n ResolveEntityAttrs<Schema['entities'][EntityName], UseDates>,\n Fields\n > &\n InstaQLEntitySubqueryResult<Schema, EntityName, Subquery, UseDates>\n>;\n\ntype InstaQLQueryEntityResult<\n Entities extends EntitiesDef,\n EntityName extends keyof Entities,\n Query extends {\n [QueryPropName in keyof Entities[EntityName]['links']]?: any;\n },\n WithCardinalityInference extends boolean,\n UseDates extends boolean,\n> = { id: string } & ResolveAttrs<Entities, EntityName, UseDates> &\n InstaQLQueryEntityLinksResult<\n Entities,\n EntityName,\n Query,\n WithCardinalityInference,\n UseDates\n >;\n\ntype InstaQLQueryResult<\n Entities extends EntitiesDef,\n Query,\n WithCardinalityInference extends boolean,\n UseDates extends boolean,\n> = {\n [QueryPropName in keyof Query]: QueryPropName extends keyof Entities\n ? InstaQLQueryEntityResult<\n Entities,\n QueryPropName,\n Query[QueryPropName],\n WithCardinalityInference,\n UseDates\n >[]\n : never;\n};\n\ntype InstaQLResult<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n Query extends InstaQLParams<Schema> | undefined,\n UseDates extends boolean = false,\n> = Expand<{\n [QueryPropName in keyof Query]: QueryPropName extends keyof Schema['entities']\n ? InstaQLEntity<\n Schema,\n QueryPropName,\n Remove$NonRecursive<SafeLookup<Query, [QueryPropName]>>,\n SafeLookup<Query, [QueryPropName, '$', 'fields']>,\n UseDates\n >[]\n : never;\n}>;\n\ntype InstaQLEntitySubquery<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n EntityName extends keyof Schema['entities'],\n> = {\n [QueryPropName in keyof Schema['entities'][EntityName]['links']]?:\n | $Option<Schema, EntityName>\n | ($Option<Schema, EntityName> &\n InstaQLEntitySubquery<\n Schema,\n Schema['entities'][EntityName]['links'][QueryPropName]['entityName']\n >);\n};\n\ntype InstaQLQuerySubqueryParams<\n S extends IContainEntitiesAndLinks<any, any>,\n E extends keyof S['entities'],\n> = {\n [K in keyof S['entities'][E]['links']]?:\n | $Option<S, S['entities'][E]['links'][K]['entityName']>\n | ($Option<S, S['entities'][E]['links'][K]['entityName']> &\n InstaQLQuerySubqueryParams<\n S,\n S['entities'][E]['links'][K]['entityName']\n >);\n};\n\ntype InstaQLParams<S extends IContainEntitiesAndLinks<any, any>> = {\n [K in keyof S['entities']]?:\n | $Option<S, K>\n | ($Option<S, K> & InstaQLQuerySubqueryParams<S, K>);\n};\n\n/**\n * @deprecated\n * `InstaQLQueryParams` is deprecated. Use `InstaQLParams` instead.\n *\n * @example\n * // Before\n * const myQuery = {...} satisfies InstaQLQueryParams<Schema>\n * // After\n * const myQuery = {...} satisfies InstaQLParams<Schema>\n */\ntype InstaQLQueryParams<S extends IContainEntitiesAndLinks<any, any>> =\n InstaQLParams<S>;\n\ntype InstaQLOptions = {\n ruleParams: RuleParams;\n};\n\n// Start of new types\n\ntype ValidQueryObject<\n T extends Record<string, any>,\n Schema extends IContainEntitiesAndLinks<any, any>,\n EntityName extends keyof Schema['entities'],\n TopLevel extends boolean,\n> = keyof T extends keyof Schema['entities'][EntityName]['links'] | '$'\n ? {\n [K in keyof Schema['entities'][EntityName]['links']]?: ValidQueryObject<\n T[K],\n Schema,\n Schema['entities'][EntityName]['links'][K]['entityName'],\n false\n >;\n } & {\n $?: ValidDollarSignQuery<T['$'], Schema, EntityName, TopLevel>;\n }\n : never;\n\ntype PaginationKeys =\n | 'limit'\n | 'last'\n | 'first'\n | 'offset'\n | 'after'\n | 'afterInclusive'\n | 'before'\n | 'beforeInclusive';\n\ntype AllowedDollarSignKeys<TopLevel extends boolean> = TopLevel extends true\n ? PaginationKeys | 'where' | 'fields' | 'order'\n : 'where' | 'fields' | 'order' | 'limit';\n\ntype ValidFieldNames<\n S extends IContainEntitiesAndLinks<any, any>,\n EntityName extends keyof S['entities'],\n> = Extract<keyof ResolveEntityAttrs<S['entities'][EntityName]>, string> | 'id';\n\ntype ValidDollarSignQuery<\n Input extends { [key: string]: any },\n Schema extends IContainEntitiesAndLinks<any, any>,\n EntityName extends keyof Schema['entities'],\n TopLevel extends boolean,\n> =\n keyof Input extends AllowedDollarSignKeys<TopLevel>\n ? {\n where?: ValidWhereObject<Input['where'], Schema, EntityName>;\n fields?: ValidFieldNames<Schema, EntityName>[];\n order?: Order<Schema, EntityName>;\n limit?: number;\n } & (TopLevel extends true\n ? {\n last?: number;\n first?: number;\n offset?: number;\n after?: Cursor;\n afterInclusive?: boolean;\n before?: Cursor;\n beforeInclusive?: boolean;\n }\n : {})\n : never;\n\ntype StringifiableKey<T> = Extract<T, string | number | bigint | boolean>;\n\ntype ValidWhereNestedPath<\n T,\n K extends string | number | symbol,\n Schema extends IContainEntitiesAndLinks<any, any>,\n> = T extends object\n ? K extends keyof T\n ? K // Allow link names as valid paths (they'll default to id)\n : K extends `${infer K0}.${infer KR}`\n ? K0 extends keyof T\n ? T[K0] extends keyof Schema['entities']\n ? `${K0}.${\n | ValidWhereNestedPath<\n {\n [K in keyof Schema['entities'][T[K0]]['links']]: Schema['entities'][T[K0]]['links'][K]['entityName'];\n },\n KR,\n Schema\n >\n | StringifiableKey<keyof Schema['entities'][T[K0]]['attrs']>\n | 'id'}`\n : string & keyof T\n : string & keyof T\n : string & keyof T\n : never;\n\ntype ValidDotPath<\n Input extends string | number | symbol,\n Schema extends IContainEntitiesAndLinks<any, any>,\n EntityName extends keyof Schema['entities'],\n> = ValidWhereNestedPath<\n {\n [K in keyof Schema['entities'][EntityName]['links']]: Schema['entities'][EntityName]['links'][K]['entityName'];\n },\n Input,\n Schema\n>;\n\ntype WhereOperatorObject<Input, V, R, I> = keyof Input extends\n | keyof BaseWhereClauseValueComplex<V>\n | '$ilike'\n | '$like'\n | '$isNull'\n ? BaseWhereClauseValueComplex<V> &\n (IsAny<V> extends true\n ? {\n $ilike?: string;\n $like?: string;\n $isNull?: boolean;\n }\n : (V extends string\n ? {\n $like?: string;\n }\n : {}) &\n (R extends false\n ? {\n $isNull?: boolean;\n }\n : {}) &\n (I extends true\n ? {\n $ilike?: string;\n }\n : {}))\n : never;\n\ntype ValidWhereValue<\n Input,\n AttrDef extends DataAttrDef<any, any, any, boolean>,\n> =\n AttrDef extends DataAttrDef<infer V, infer R, infer I, boolean>\n ? Input extends V\n ? V\n : NonEmpty<WhereOperatorObject<Input, V, R, I>>\n : never;\n\ntype NoDistribute<T> = [T] extends [any] ? T : never;\n\ntype ValidWhereObject<\n Input extends { [key: string]: any } | undefined,\n Schema extends IContainEntitiesAndLinks<any, any>,\n EntityName extends keyof Schema['entities'],\n> = Input extends undefined\n ? undefined\n : keyof Input extends\n | ValidDotPath<keyof Input, Schema, EntityName>\n | keyof Schema['entities'][EntityName]['attrs']\n | 'and'\n | 'or'\n | 'id'\n ? {\n [K in ValidDotPath<keyof Input, Schema, EntityName>]?: ValidWhereValue<\n Input[K],\n ExtractAttrFromDotPath<K, Schema, EntityName>\n >;\n } & {\n [K in keyof Schema['entities'][EntityName]['attrs']]?: ValidWhereValue<\n Input[K],\n Schema['entities'][EntityName]['attrs'][K]\n >;\n } & {\n and?: Input extends {\n and: Array<infer Item extends { [key: string]: any } | undefined>;\n }\n ? ValidWhereObject<NoDistribute<Item>, Schema, EntityName>[]\n : never;\n or?: Input extends {\n or: Array<infer Item extends { [key: string]: any } | undefined>;\n }\n ? ValidWhereObject<NoDistribute<Item>, Schema, EntityName>[]\n : never;\n } & {\n // Special case for id\n id?: ValidWhereValue<\n SafeLookup<Input, ['id']>,\n DataAttrDef<string, false, false, boolean>\n >;\n }\n : never;\n\n/**\n * Extracts the attribute definition from a valid dot path.\n * Given a dot path like \"user.posts.title\", this will resolve to the type of the \"title\" attribute.\n * If the path is just a link name (e.g., \"posts\"), it defaults to the id field.\n * Returns DataAttrDef or never\n */\ntype ExtractAttrFromDotPath<\n Path extends string | number | symbol,\n Schema extends IContainEntitiesAndLinks<any, any>,\n EntityName extends keyof Schema['entities'],\n> = Path extends keyof Schema['entities'][EntityName]['attrs']\n ? Schema['entities'][EntityName]['attrs'][Path]\n : Path extends 'id'\n ? DataAttrDef<string, false, false, boolean>\n : Path extends `${infer LinkName}.${infer RestPath}`\n ? LinkName extends keyof Schema['entities'][EntityName]['links']\n ? ExtractAttrFromDotPath<\n RestPath,\n Schema,\n Schema['entities'][EntityName]['links'][LinkName]['entityName']\n >\n : never\n : Path extends keyof Schema['entities'][EntityName]['links']\n ? DataAttrDef<string, false, false, boolean>\n : never;\n\ntype ValidQuery<\n Q extends Record<string, any>,\n S extends IContainEntitiesAndLinks<any, any>,\n> = S extends InstantUnknownSchemaDef\n ? InstaQLParams<S>\n : keyof Q extends keyof S['entities']\n ? {\n [K in keyof S['entities']]?: ValidQueryObject<Q[K], S, K, true>;\n }\n : never;\n\nexport {\n Query,\n QueryResponse,\n InstaQLResponse,\n PageInfoResponse,\n InstantObject,\n Exactly,\n Remove$,\n ValidQuery,\n InstaQLQueryResult,\n InstaQLParams,\n InstaQLOptions,\n InstaQLQueryEntityResult,\n InstaQLEntitySubquery,\n InstaQLEntity,\n InstaQLResult,\n InstaQLFields,\n Cursor,\n InstaQLQueryParams,\n};\n"]}
1
+ {"version":3,"file":"queryTypes.js","sourceRoot":"","sources":["../../src/queryTypes.ts"],"names":[],"mappings":";AAAA,QAAQ;AACR,QAAQ","sourcesContent":["// Query\n// -----\n\nimport type {\n EntitiesDef,\n IContainEntitiesAndLinks,\n InstantGraph,\n LinkAttrDef,\n RuleParams,\n ResolveAttrs,\n ResolveEntityAttrs,\n DataAttrDef,\n AttrsDefs,\n EntityDefFromSchema,\n InstantUnknownSchemaDef,\n} from './schemaTypes.ts';\n\ntype BuiltIn = Date | Function | Error | RegExp;\n\ntype Primitive = string | number | boolean | symbol | null | undefined;\n\nexport type Expand<T> = T extends BuiltIn | Primitive\n ? T\n : T extends object\n ? T extends infer O\n ? { [K in keyof O]: Expand<O[K]> }\n : never\n : T;\n\n// NonEmpty disallows {}, so that you must provide at least one field\nexport type NonEmpty<T> = {\n [K in keyof T]-?: Required<Pick<T, K>>;\n}[keyof T];\n\ntype BaseWhereClauseValueComplex<V> = {\n /** @deprecated use `$in` instead of `in` */\n in?: V[];\n $in?: V[];\n /** @deprecated use `$ne` instead of `not` */\n $not?: V;\n $ne?: V;\n $gt?: V;\n $lt?: V;\n $gte?: V;\n $lte?: V;\n};\n\ntype IsAny<T> = boolean extends (T extends never ? true : false) ? true : false;\n\ntype WhereClauseValueComplex<V, R, I> = BaseWhereClauseValueComplex<V> &\n (IsAny<V> extends true\n ? {\n $ilike?: string;\n $like?: string;\n $isNull?: boolean;\n }\n : (V extends string\n ? {\n $like?: string;\n }\n : {}) &\n (R extends false\n ? {\n $isNull?: boolean;\n }\n : {}) &\n (I extends true\n ? {\n $ilike?: string;\n }\n : {}));\n\n// Make type display better\ntype WhereClauseValue<\n D extends DataAttrDef<string | number | boolean, boolean, boolean, boolean>,\n> =\n D extends DataAttrDef<infer V, infer R, infer I, boolean>\n ?\n | (IsAny<V> extends true ? string | number | boolean : V)\n | NonEmpty<WhereClauseValueComplex<V, R, I>>\n : never;\n\ntype WhereClauseColumnEntries<\n T extends {\n [key: string]: DataAttrDef<any, boolean, boolean, boolean>;\n },\n> = {\n [key in keyof T]?: WhereClauseValue<T[key]>;\n};\n\ntype WhereClauseComboEntries<\n T extends Record<any, DataAttrDef<any, boolean, boolean, boolean>>,\n> = {\n or?:\n | WhereClauses<T>[]\n | WhereClauseValue<DataAttrDef<any, false, true, boolean>>;\n and?:\n | WhereClauses<T>[]\n | WhereClauseValue<DataAttrDef<any, false, true, boolean>>;\n};\n\ntype WhereClauses<\n T extends Record<any, DataAttrDef<any, boolean, boolean, boolean>>,\n> = (\n | WhereClauseComboEntries<T>\n | (WhereClauseComboEntries<T> & WhereClauseColumnEntries<T>)\n) & {\n id?: WhereClauseValue<DataAttrDef<string, false, true, boolean>>;\n [key: `${string}.${string}`]: WhereClauseValue<\n DataAttrDef<any, false, true, boolean>\n >;\n};\n\n/**\n * A tuple representing a cursor.\n * These should not be constructed manually. The current format\n * is an implementation detail that may change in the future.\n * Use the `endCursor` or `startCursor` from the PageInfoResponse as the\n * `before` or `after` field in the query options.\n */\ntype Cursor = [string, string, any, number];\n\ntype Direction = 'asc' | 'desc';\n\ntype IndexedKeys<Attrs extends AttrsDefs> = {\n [K in keyof Attrs]: Attrs[K] extends DataAttrDef<\n any,\n any,\n infer IsIndexed,\n boolean\n >\n ? IsIndexed extends true\n ? K\n : never\n : never;\n}[keyof Attrs];\n\nexport type Order<\n Schema extends IContainEntitiesAndLinks<any, any>,\n EntityName extends keyof Schema['entities'],\n> =\n IndexedKeys<Schema['entities'][EntityName]['attrs']> extends never\n ? {\n serverCreatedAt?: Direction;\n }\n : {\n [K in IndexedKeys<Schema['entities'][EntityName]['attrs']>]?: Direction;\n } & {\n serverCreatedAt?: Direction;\n };\n\ntype $Option<\n S extends IContainEntitiesAndLinks<any, any>,\n K extends keyof S['entities'],\n> = {\n $?: {\n where?: WhereClauses<EntityDefFromSchema<S, K>>;\n order?: Order<S, K>;\n limit?: number;\n last?: number;\n first?: number;\n offset?: number;\n after?: Cursor;\n afterInclusive?: boolean;\n before?: Cursor;\n beforeInclusive?: boolean;\n fields?: InstaQLFields<S, K>;\n };\n};\n\ntype NamespaceVal =\n | $Option<IContainEntitiesAndLinks<any, any>, keyof EntitiesDef>\n | ($Option<IContainEntitiesAndLinks<any, any>, keyof EntitiesDef> & Subquery);\n\ntype Subquery = { [namespace: string]: NamespaceVal };\n\ninterface Query {\n [namespace: string]: NamespaceVal;\n}\n\ntype InstantObject = {\n id: string;\n [prop: string]: any;\n};\n\ntype ResponseObject<K, Schema> = K extends keyof Schema\n ? { id: string } & Schema[K]\n : InstantObject;\n\ntype IsEmptyObject<T> = T extends Record<string, never> ? true : false;\n\ntype ResponseOf<Q, Schema> = {\n [K in keyof Q]: IsEmptyObject<Q[K]> extends true\n ? ResponseObject<K, Schema>[]\n : (ResponseOf<Q[K], Schema> & ResponseObject<K, Schema>)[];\n};\n\ntype Remove$<T> = T extends object\n ? { [K in keyof T as Exclude<K, '$'>]: Remove$<T[K]> }\n : T;\n\ntype Remove$NonRecursive<T> = T extends object\n ? { [K in keyof T as Exclude<K, '$'>]: T[K] }\n : T;\n\ntype QueryResponse<\n Q,\n Schema,\n WithCardinalityInference extends boolean = false,\n UseDates extends boolean = false,\n> =\n Schema extends InstantGraph<infer E, any>\n ? InstaQLQueryResult<E, Q, WithCardinalityInference, UseDates>\n : ResponseOf<{ [K in keyof Q]: Remove$<Q[K]> }, Schema>;\n\ntype InstaQLResponse<Schema, Q, UseDates extends boolean = false> =\n Schema extends IContainEntitiesAndLinks<any, any>\n ? Q extends InstaQLParams<Schema> | undefined\n ? InstaQLResult<Schema, Q, UseDates>\n : never\n : never;\n\ntype PageInfoResponse<T> = {\n [K in keyof T]: {\n startCursor: Cursor;\n endCursor: Cursor;\n hasNextPage: boolean;\n hasPreviousPage: boolean;\n };\n};\n\n/**\n * (XXX)\n * https://github.com/microsoft/TypeScript/issues/26051\n *\n * TypeScript can permit extra keys when a generic extends a type.\n *\n * For some reason, it makes it possible to write a query like so:\n *\n * dummyQuery({\n * users: {\n * $: { where: { \"foo\": 1 } },\n * posts: {\n * $: { \"far\": {} }\n * }\n * }\n *\n * The problem: $: { \"far\": {} }\n *\n * This passes, when it should in reality fail. I don't know why\n * adding `Exactly` fixes this, but it does.\n *\n * */\ntype Exactly<Parent, Child> = Parent & {\n [K in keyof Child]: K extends keyof Parent ? Child[K] : never;\n};\n\n// SafeLookup<T, ['A', 'B', number]> is like doing\n// T['A']['B'][number], but it will merge with undefined if any\n// of the intermediates are undefined\ntype SafeLookup<T, K extends readonly PropertyKey[]> = K extends [\n infer First,\n ...infer Rest extends readonly PropertyKey[],\n]\n ? First extends keyof NonNullable<T>\n ?\n | SafeLookup<NonNullable<T>[First], Rest>\n | (T extends null | undefined ? undefined : never)\n : undefined\n : T;\n\n// ==========\n// InstaQL helpers\n\ntype InstaQLEntitySubqueryResult<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n EntityName extends keyof Schema['entities'],\n Query extends InstaQLEntitySubquery<Schema, EntityName> | undefined = {},\n UseDates extends boolean = false,\n> = {\n [QueryPropName in keyof Query]: Schema['entities'][EntityName]['links'][QueryPropName] extends LinkAttrDef<\n infer Cardinality,\n infer LinkedEntityName\n >\n ? LinkedEntityName extends keyof Schema['entities']\n ? Cardinality extends 'one'\n ?\n | InstaQLEntity<\n Schema,\n LinkedEntityName,\n Remove$NonRecursive<SafeLookup<Query, [QueryPropName]>>,\n SafeLookup<Query, [QueryPropName, '$', 'fields']>,\n UseDates\n >\n | undefined\n : InstaQLEntity<\n Schema,\n LinkedEntityName,\n Remove$NonRecursive<SafeLookup<Query, [QueryPropName]>>,\n SafeLookup<Query, [QueryPropName, '$', 'fields']>,\n UseDates\n >[]\n : never\n : never;\n};\n\ntype InstaQLQueryEntityLinksResult<\n Entities extends EntitiesDef,\n EntityName extends keyof Entities,\n Query extends {\n [LinkAttrName in keyof Entities[EntityName]['links']]?: any;\n },\n WithCardinalityInference extends boolean,\n UseDates extends boolean = false,\n> = {\n [QueryPropName in keyof Query]: Entities[EntityName]['links'][QueryPropName] extends LinkAttrDef<\n infer Cardinality,\n infer LinkedEntityName\n >\n ? LinkedEntityName extends keyof Entities\n ? WithCardinalityInference extends true\n ? Cardinality extends 'one'\n ?\n | InstaQLQueryEntityResult<\n Entities,\n LinkedEntityName,\n Query[QueryPropName],\n WithCardinalityInference,\n UseDates\n >\n | undefined\n : InstaQLQueryEntityResult<\n Entities,\n LinkedEntityName,\n Query[QueryPropName],\n WithCardinalityInference,\n UseDates\n >[]\n : InstaQLQueryEntityResult<\n Entities,\n LinkedEntityName,\n Query[QueryPropName],\n WithCardinalityInference,\n UseDates\n >[]\n : never\n : never;\n};\n\n// Pick, but applies the pick to each union\ntype DistributePick<T, K extends string> = T extends any\n ? { [P in K]: P extends keyof T ? T[P] : never }\n : never;\n\ntype InstaQLFields<\n S extends IContainEntitiesAndLinks<any, any>,\n K extends keyof S['entities'],\n> = (Extract<keyof ResolveEntityAttrs<S['entities'][K]>, string> | 'id')[];\n\ntype ComputeAttrs<\n AllAttrs,\n Fields extends readonly string[] | undefined,\n> = Fields extends readonly string[]\n ? DistributePick<AllAttrs, Exclude<Fields[number], 'id'>>\n : AllAttrs;\n\ntype InstaQLEntity<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n EntityName extends keyof Schema['entities'],\n Subquery extends InstaQLEntitySubquery<Schema, EntityName> | undefined = {},\n Fields extends InstaQLFields<Schema, EntityName> | undefined = undefined,\n UseDates extends boolean = false,\n> = Expand<\n { id: string } & ComputeAttrs<\n ResolveEntityAttrs<Schema['entities'][EntityName], UseDates>,\n Fields\n > &\n InstaQLEntitySubqueryResult<Schema, EntityName, Subquery, UseDates>\n>;\n\nexport type InstaQLQueryEntityResult<\n Entities extends EntitiesDef,\n EntityName extends keyof Entities,\n Query extends {\n [QueryPropName in keyof Entities[EntityName]['links']]?: any;\n },\n WithCardinalityInference extends boolean,\n UseDates extends boolean,\n> = { id: string } & ResolveAttrs<Entities, EntityName, UseDates> &\n InstaQLQueryEntityLinksResult<\n Entities,\n EntityName,\n Query,\n WithCardinalityInference,\n UseDates\n >;\n\ntype InstaQLQueryResult<\n Entities extends EntitiesDef,\n Query,\n WithCardinalityInference extends boolean,\n UseDates extends boolean,\n> = {\n [QueryPropName in keyof Query]: QueryPropName extends keyof Entities\n ? InstaQLQueryEntityResult<\n Entities,\n QueryPropName,\n Query[QueryPropName],\n WithCardinalityInference,\n UseDates\n >[]\n : never;\n};\n\ntype InstaQLResult<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n Query extends InstaQLParams<Schema> | undefined,\n UseDates extends boolean = false,\n> = Expand<{\n [QueryPropName in keyof Query]: QueryPropName extends keyof Schema['entities']\n ? InstaQLEntity<\n Schema,\n QueryPropName,\n Remove$NonRecursive<SafeLookup<Query, [QueryPropName]>>,\n SafeLookup<Query, [QueryPropName, '$', 'fields']>,\n UseDates\n >[]\n : never;\n}>;\n\ntype InstaQLEntitySubquery<\n Schema extends IContainEntitiesAndLinks<EntitiesDef, any>,\n EntityName extends keyof Schema['entities'],\n> = {\n [QueryPropName in keyof Schema['entities'][EntityName]['links']]?:\n | $Option<Schema, EntityName>\n | ($Option<Schema, EntityName> &\n InstaQLEntitySubquery<\n Schema,\n Schema['entities'][EntityName]['links'][QueryPropName]['entityName']\n >);\n};\n\ntype InstaQLQuerySubqueryParams<\n S extends IContainEntitiesAndLinks<any, any>,\n E extends keyof S['entities'],\n> = {\n [K in keyof S['entities'][E]['links']]?:\n | $Option<S, S['entities'][E]['links'][K]['entityName']>\n | ($Option<S, S['entities'][E]['links'][K]['entityName']> &\n InstaQLQuerySubqueryParams<\n S,\n S['entities'][E]['links'][K]['entityName']\n >);\n};\n\ntype InstaQLParams<S extends IContainEntitiesAndLinks<any, any>> = {\n [K in keyof S['entities']]?:\n | $Option<S, K>\n | ($Option<S, K> & InstaQLQuerySubqueryParams<S, K>);\n};\n\n/**\n * @deprecated\n * `InstaQLQueryParams` is deprecated. Use `InstaQLParams` instead.\n *\n * @example\n * // Before\n * const myQuery = {...} satisfies InstaQLQueryParams<Schema>\n * // After\n * const myQuery = {...} satisfies InstaQLParams<Schema>\n */\ntype InstaQLQueryParams<S extends IContainEntitiesAndLinks<any, any>> =\n InstaQLParams<S>;\n\ntype InstaQLOptions = {\n ruleParams: RuleParams;\n};\n\n// Start of new types\n\ntype ValidQueryObject<\n T extends Record<string, any>,\n Schema extends IContainEntitiesAndLinks<any, any>,\n EntityName extends keyof Schema['entities'],\n TopLevel extends boolean,\n> = keyof T extends keyof Schema['entities'][EntityName]['links'] | '$'\n ? {\n [K in keyof Schema['entities'][EntityName]['links']]?: ValidQueryObject<\n T[K],\n Schema,\n Schema['entities'][EntityName]['links'][K]['entityName'],\n false\n >;\n } & {\n $?: ValidDollarSignQuery<T['$'], Schema, EntityName, TopLevel>;\n }\n : never;\n\ntype PaginationKeys =\n | 'limit'\n | 'last'\n | 'first'\n | 'offset'\n | 'after'\n | 'afterInclusive'\n | 'before'\n | 'beforeInclusive';\n\ntype AllowedDollarSignKeys<TopLevel extends boolean> = TopLevel extends true\n ? PaginationKeys | 'where' | 'fields' | 'order'\n : 'where' | 'fields' | 'order' | 'limit';\n\ntype ValidFieldNames<\n S extends IContainEntitiesAndLinks<any, any>,\n EntityName extends keyof S['entities'],\n> = Extract<keyof ResolveEntityAttrs<S['entities'][EntityName]>, string> | 'id';\n\ntype ValidDollarSignQuery<\n Input extends { [key: string]: any },\n Schema extends IContainEntitiesAndLinks<any, any>,\n EntityName extends keyof Schema['entities'],\n TopLevel extends boolean,\n> =\n keyof Input extends AllowedDollarSignKeys<TopLevel>\n ? {\n where?: ValidWhereObject<Input['where'], Schema, EntityName>;\n fields?: ValidFieldNames<Schema, EntityName>[];\n order?: Order<Schema, EntityName>;\n limit?: number;\n } & (TopLevel extends true\n ? {\n last?: number;\n first?: number;\n offset?: number;\n after?: Cursor;\n afterInclusive?: boolean;\n before?: Cursor;\n beforeInclusive?: boolean;\n }\n : {})\n : never;\n\ntype StringifiableKey<T> = Extract<T, string | number | bigint | boolean>;\n\ntype ValidWhereNestedPath<\n T,\n K extends string | number | symbol,\n Schema extends IContainEntitiesAndLinks<any, any>,\n> = T extends object\n ? K extends keyof T\n ? K // Allow link names as valid paths (they'll default to id)\n : K extends `${infer K0}.${infer KR}`\n ? K0 extends keyof T\n ? T[K0] extends keyof Schema['entities']\n ? `${K0}.${\n | ValidWhereNestedPath<\n {\n [K in keyof Schema['entities'][T[K0]]['links']]: Schema['entities'][T[K0]]['links'][K]['entityName'];\n },\n KR,\n Schema\n >\n | StringifiableKey<keyof Schema['entities'][T[K0]]['attrs']>\n | 'id'}`\n : string & keyof T\n : string & keyof T\n : string & keyof T\n : never;\n\ntype ValidDotPath<\n Input extends string | number | symbol,\n Schema extends IContainEntitiesAndLinks<any, any>,\n EntityName extends keyof Schema['entities'],\n> = ValidWhereNestedPath<\n {\n [K in keyof Schema['entities'][EntityName]['links']]: Schema['entities'][EntityName]['links'][K]['entityName'];\n },\n Input,\n Schema\n>;\n\ntype WhereOperatorObject<Input, V, R, I> = keyof Input extends\n | keyof BaseWhereClauseValueComplex<V>\n | '$ilike'\n | '$like'\n | '$isNull'\n ? BaseWhereClauseValueComplex<V> &\n (IsAny<V> extends true\n ? {\n $ilike?: string;\n $like?: string;\n $isNull?: boolean;\n }\n : (V extends string\n ? {\n $like?: string;\n }\n : {}) &\n (R extends false\n ? {\n $isNull?: boolean;\n }\n : {}) &\n (I extends true\n ? {\n $ilike?: string;\n }\n : {}))\n : never;\n\ntype ValidWhereValue<\n Input,\n AttrDef extends DataAttrDef<any, any, any, boolean>,\n> =\n AttrDef extends DataAttrDef<infer V, infer R, infer I, boolean>\n ? Input extends V\n ? V\n : NonEmpty<WhereOperatorObject<Input, V, R, I>>\n : never;\n\ntype NoDistribute<T> = [T] extends [any] ? T : never;\n\ntype ValidWhereObject<\n Input extends { [key: string]: any } | undefined,\n Schema extends IContainEntitiesAndLinks<any, any>,\n EntityName extends keyof Schema['entities'],\n> = Input extends undefined\n ? undefined\n : keyof Input extends\n | ValidDotPath<keyof Input, Schema, EntityName>\n | keyof Schema['entities'][EntityName]['attrs']\n | 'and'\n | 'or'\n | 'id'\n ? {\n [K in ValidDotPath<keyof Input, Schema, EntityName>]?: ValidWhereValue<\n Input[K],\n ExtractAttrFromDotPath<K, Schema, EntityName>\n >;\n } & {\n [K in keyof Schema['entities'][EntityName]['attrs']]?: ValidWhereValue<\n Input[K],\n Schema['entities'][EntityName]['attrs'][K]\n >;\n } & {\n and?: Input extends {\n and: Array<infer Item extends { [key: string]: any } | undefined>;\n }\n ? ValidWhereObject<NoDistribute<Item>, Schema, EntityName>[]\n : never;\n or?: Input extends {\n or: Array<infer Item extends { [key: string]: any } | undefined>;\n }\n ? ValidWhereObject<NoDistribute<Item>, Schema, EntityName>[]\n : never;\n } & {\n // Special case for id\n id?: ValidWhereValue<\n SafeLookup<Input, ['id']>,\n DataAttrDef<string, false, false, boolean>\n >;\n }\n : never;\n\n/**\n * Extracts the attribute definition from a valid dot path.\n * Given a dot path like \"user.posts.title\", this will resolve to the type of the \"title\" attribute.\n * If the path is just a link name (e.g., \"posts\"), it defaults to the id field.\n * Returns DataAttrDef or never\n */\ntype ExtractAttrFromDotPath<\n Path extends string | number | symbol,\n Schema extends IContainEntitiesAndLinks<any, any>,\n EntityName extends keyof Schema['entities'],\n> = Path extends keyof Schema['entities'][EntityName]['attrs']\n ? Schema['entities'][EntityName]['attrs'][Path]\n : Path extends 'id'\n ? DataAttrDef<string, false, false, boolean>\n : Path extends `${infer LinkName}.${infer RestPath}`\n ? LinkName extends keyof Schema['entities'][EntityName]['links']\n ? ExtractAttrFromDotPath<\n RestPath,\n Schema,\n Schema['entities'][EntityName]['links'][LinkName]['entityName']\n >\n : never\n : Path extends keyof Schema['entities'][EntityName]['links']\n ? DataAttrDef<string, false, false, boolean>\n : never;\n\ntype ValidQuery<\n Q extends Record<string, any>,\n S extends IContainEntitiesAndLinks<any, any>,\n> = S extends InstantUnknownSchemaDef\n ? InstaQLParams<S>\n : keyof Q extends keyof S['entities']\n ? {\n [K in keyof S['entities']]?: ValidQueryObject<Q[K], S, K, true>;\n }\n : never;\n\nexport {\n Query,\n QueryResponse,\n InstaQLResponse,\n PageInfoResponse,\n InstantObject,\n Exactly,\n Remove$,\n ValidQuery,\n InstaQLQueryResult,\n InstaQLParams,\n InstaQLOptions,\n InstaQLEntitySubquery,\n InstaQLEntity,\n InstaQLResult,\n InstaQLFields,\n Cursor,\n InstaQLQueryParams,\n};\n"]}
@@ -1,7 +1,8 @@
1
- export class Deferred {
2
- promise: Promise<any>;
3
- _resolve: any;
4
- _reject: any;
1
+ export declare class Deferred<T = any> {
2
+ promise: Promise<T>;
3
+ _resolve: (value: T) => void;
4
+ _reject: (...reason: any) => void;
5
+ constructor();
5
6
  resolve(value: any): void;
6
7
  reject(reason: any): void;
7
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Deferred.d.ts","sourceRoot":"","sources":["../../../src/utils/Deferred.js"],"names":[],"mappings":"AAAA;IACE,sBAAQ;IACR,cAAS;IACT,aAAQ;IASR,0BAEC;IAED,0BAEC;CACF"}
1
+ {"version":3,"file":"Deferred.d.ts","sourceRoot":"","sources":["../../../src/utils/Deferred.ts"],"names":[],"mappings":"AAAA,qBAAa,QAAQ,CAAC,CAAC,GAAG,GAAG;IAC3B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC7B,OAAO,EAAE,CAAC,GAAG,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;;IASlC,OAAO,CAAC,KAAK,KAAA;IAIb,MAAM,CAAC,MAAM,KAAA;CAGd"}
@@ -1 +1 @@
1
- {"version":3,"file":"Deferred.js","sourceRoot":"","sources":["../../../src/utils/Deferred.js"],"names":[],"mappings":";;;AAAA,MAAa,QAAQ;IACnB,OAAO,CAAC;IACR,QAAQ,CAAC;IACT,OAAO,CAAC;IAER;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC7C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,KAAK;QACX,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,MAAM;QACX,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;CACF;AAnBD,4BAmBC","sourcesContent":["export class Deferred {\n promise;\n _resolve;\n _reject;\n\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n\n resolve(value) {\n this._resolve(value);\n }\n\n reject(reason) {\n this._reject(reason);\n }\n}\n"]}
1
+ {"version":3,"file":"Deferred.js","sourceRoot":"","sources":["../../../src/utils/Deferred.ts"],"names":[],"mappings":";;;AAAA,MAAa,QAAQ;IACnB,OAAO,CAAa;IACpB,QAAQ,CAAqB;IAC7B,OAAO,CAA2B;IAElC;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC7C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,KAAK;QACX,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,MAAM;QACX,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;CACF;AAnBD,4BAmBC","sourcesContent":["export class Deferred<T = any> {\n promise: Promise<T>;\n _resolve: (value: T) => void;\n _reject: (...reason: any) => void;\n\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n\n resolve(value) {\n this._resolve(value);\n }\n\n reject(reason) {\n this._reject(reason);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"weakHash.d.ts","sourceRoot":"","sources":["../../../src/utils/weakHash.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAgEnD"}
1
+ {"version":3,"file":"weakHash.d.ts","sourceRoot":"","sources":["../../../src/utils/weakHash.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAoEnD"}
@@ -59,6 +59,10 @@ function weakHash(input) {
59
59
  const keys = Object.keys(input).sort(); // Sort for consistency
60
60
  for (let i = 0; i < keys.length; i++) {
61
61
  const key = keys[i];
62
+ if (input[key] === undefined) {
63
+ // Ignore undefined keys in the hash
64
+ continue;
65
+ }
62
66
  // Hash the key using string hash
63
67
  const keyHash = weakHash(key);
64
68
  hash ^= parseInt(keyHash, 16);
@@ -1 +1 @@
1
- {"version":3,"file":"weakHash.js","sourceRoot":"","sources":["../../../src/utils/weakHash.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n *\n * Unique Hashing implementation inspired by djb2/fnv1a algorithms,\n * where we are not concerned with the hash being decoded.\n * Focuses on speed while maintaining good hash distribution\n *\n * Note: We could also use something like Murmurhash instead\n * https://github.com/jensyt/imurmurhash-js/blob/master/imurmurhash.js\n *\n * @param {any} input - Value to hash\n * @returns {string} - Hash in hex format\n */\nexport default function weakHash(input: any): string {\n // Handle primitives without JSON stringify for better performance\n if (typeof input === 'number') {\n // Use a larger number space for numeric values\n return (Math.abs(input * 2654435761) >>> 0).toString(16);\n }\n if (typeof input === 'boolean') return input ? '1' : '0';\n if (input === null) return 'null';\n if (input === undefined) return 'undefined';\n\n // For strings, use FNV-1a algorithm\n if (typeof input === 'string') {\n let hash = 0x811c9dc5; // FNV offset basis (32 bit)\n for (let i = 0; i < input.length; i++) {\n hash ^= input.charCodeAt(i);\n hash +=\n (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n hash = hash >>> 0; // Convert to unsigned 32-bit after each iteration\n }\n return hash.toString(16);\n }\n\n // For arrays, hash elements directly\n if (Array.isArray(input)) {\n let hash = 0x811c9dc5;\n for (let i = 0; i < input.length; i++) {\n // Add array position to hash calculation\n hash ^= (i + 1) * 2654435761;\n // Recursively hash array elements\n const elementHash = weakHash(input[i]);\n // Mix the element hash into the running hash\n for (let j = 0; j < elementHash.length; j++) {\n hash ^= elementHash.charCodeAt(j);\n hash *= 16777619; // FNV prime (32 bit)\n hash = hash >>> 0;\n }\n }\n return hash.toString(16);\n }\n\n // For objects, hash keys and values\n if (typeof input === 'object') {\n let hash = 0x811c9dc5;\n const keys = Object.keys(input).sort(); // Sort for consistency\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n // Hash the key using string hash\n const keyHash = weakHash(key);\n hash ^= parseInt(keyHash, 16);\n hash *= 16777619;\n hash = hash >>> 0;\n\n // Hash the value recursively\n const valueHash = weakHash(input[key]);\n hash ^= parseInt(valueHash, 16);\n hash *= 16777619;\n hash = hash >>> 0;\n }\n return hash.toString(16);\n }\n\n // Fallback for other types\n return weakHash(String(input));\n}\n"]}
1
+ {"version":3,"file":"weakHash.js","sourceRoot":"","sources":["../../../src/utils/weakHash.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n *\n * Unique Hashing implementation inspired by djb2/fnv1a algorithms,\n * where we are not concerned with the hash being decoded.\n * Focuses on speed while maintaining good hash distribution\n *\n * Note: We could also use something like Murmurhash instead\n * https://github.com/jensyt/imurmurhash-js/blob/master/imurmurhash.js\n *\n * @param {any} input - Value to hash\n * @returns {string} - Hash in hex format\n */\nexport default function weakHash(input: any): string {\n // Handle primitives without JSON stringify for better performance\n if (typeof input === 'number') {\n // Use a larger number space for numeric values\n return (Math.abs(input * 2654435761) >>> 0).toString(16);\n }\n if (typeof input === 'boolean') return input ? '1' : '0';\n if (input === null) return 'null';\n if (input === undefined) return 'undefined';\n\n // For strings, use FNV-1a algorithm\n if (typeof input === 'string') {\n let hash = 0x811c9dc5; // FNV offset basis (32 bit)\n for (let i = 0; i < input.length; i++) {\n hash ^= input.charCodeAt(i);\n hash +=\n (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n hash = hash >>> 0; // Convert to unsigned 32-bit after each iteration\n }\n return hash.toString(16);\n }\n\n // For arrays, hash elements directly\n if (Array.isArray(input)) {\n let hash = 0x811c9dc5;\n for (let i = 0; i < input.length; i++) {\n // Add array position to hash calculation\n hash ^= (i + 1) * 2654435761;\n // Recursively hash array elements\n const elementHash = weakHash(input[i]);\n // Mix the element hash into the running hash\n for (let j = 0; j < elementHash.length; j++) {\n hash ^= elementHash.charCodeAt(j);\n hash *= 16777619; // FNV prime (32 bit)\n hash = hash >>> 0;\n }\n }\n return hash.toString(16);\n }\n\n // For objects, hash keys and values\n if (typeof input === 'object') {\n let hash = 0x811c9dc5;\n const keys = Object.keys(input).sort(); // Sort for consistency\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (input[key] === undefined) {\n // Ignore undefined keys in the hash\n continue;\n }\n // Hash the key using string hash\n const keyHash = weakHash(key);\n hash ^= parseInt(keyHash, 16);\n hash *= 16777619;\n hash = hash >>> 0;\n\n // Hash the value recursively\n const valueHash = weakHash(input[key]);\n hash ^= parseInt(valueHash, 16);\n hash *= 16777619;\n hash = hash >>> 0;\n }\n return hash.toString(16);\n }\n\n // Fallback for other types\n return weakHash(String(input));\n}\n"]}
@@ -389,7 +389,7 @@ import * as s from './store.ts';
389
389
  import { PersistedObject } from './utils/PersistedObject.ts';
390
390
  import { SyncTable } from './SyncTable.ts';
391
391
  import { InstantStream } from './Stream.ts';
392
- import { Deferred } from './utils/Deferred.js';
392
+ import { Deferred } from './utils/Deferred.ts';
393
393
  import * as authAPI from './authAPI.ts';
394
394
  import * as StorageApi from './StorageAPI.ts';
395
395
  import IndexedDBStorage from './IndexedDBStorage.ts';
@@ -10,7 +10,7 @@ import * as authAPI from "./authAPI.js";
10
10
  import * as StorageApi from "./StorageAPI.js";
11
11
  import * as flags from "./utils/flags.js";
12
12
  import { buildPresenceSlice, hasPresenceResponseChanged } from "./presence.js";
13
- import { Deferred } from './utils/Deferred.js';
13
+ import { Deferred } from "./utils/Deferred.js";
14
14
  import { PersistedObject } from "./utils/PersistedObject.js";
15
15
  import { extractTriples } from './model/instaqlResult.js';
16
16
  import { areObjectsDeepEqual, assocInMutative, dissocInMutative, insertInMutative, } from './utils/object.js';