@tanstack/db
Version:
A reactive client store for building super fast apps on sync
1 lines • 2.83 kB
Source Map (JSON)
{"version":3,"file":"query-equivalence.cjs","sources":["../../../../src/query/compiler/query-equivalence.ts"],"sourcesContent":["import { deepEquals } from '../../utils.js'\nimport type { From, QueryIR } from '../ir.js'\n\n/**\n * Compares query meaning while ignoring whether optional IR fields are omitted\n * or explicitly set to undefined by an optimizer copy.\n */\nexport function queriesMatchForCaching(a: QueryIR, b: QueryIR): boolean {\n return deepEquals(normalizeQuery(a), normalizeQuery(b))\n}\n\nfunction normalizeQuery(query: QueryIR): Record<string, unknown> {\n return {\n from: normalizeFrom(query.from),\n select: query.select,\n join: query.join?.map((join) => ({\n from: normalizeFrom(join.from),\n type: join.type,\n left: join.left,\n right: join.right,\n })),\n where: query.where,\n groupBy: query.groupBy,\n having: query.having,\n orderBy: query.orderBy,\n limit: query.limit,\n offset: query.offset,\n distinct: query.distinct,\n singleResult: query.singleResult,\n fnSelect: query.fnSelect,\n fnWhere: query.fnWhere,\n fnHaving: query.fnHaving,\n }\n}\n\nfunction normalizeFrom(from: From): Record<string, unknown> {\n switch (from.type) {\n case `collectionRef`:\n return {\n type: from.type,\n collection: from.collection,\n alias: from.alias,\n }\n case `queryRef`:\n return {\n type: from.type,\n query: normalizeQuery(from.query),\n alias: from.alias,\n }\n case `unionFrom`:\n return {\n type: from.type,\n sources: from.sources.map(normalizeFrom),\n }\n case `unionAll`:\n return {\n type: from.type,\n queries: from.queries.map(normalizeQuery),\n }\n }\n}\n"],"names":["deepEquals"],"mappings":";;;AAOO,SAAS,uBAAuB,GAAY,GAAqB;AACtE,SAAOA,MAAAA,WAAW,eAAe,CAAC,GAAG,eAAe,CAAC,CAAC;AACxD;AAEA,SAAS,eAAe,OAAyC;AAC/D,SAAO;AAAA,IACL,MAAM,cAAc,MAAM,IAAI;AAAA,IAC9B,QAAQ,MAAM;AAAA,IACd,MAAM,MAAM,MAAM,IAAI,CAAC,UAAU;AAAA,MAC/B,MAAM,cAAc,KAAK,IAAI;AAAA,MAC7B,MAAM,KAAK;AAAA,MACX,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,IAAA,EACZ;AAAA,IACF,OAAO,MAAM;AAAA,IACb,SAAS,MAAM;AAAA,IACf,QAAQ,MAAM;AAAA,IACd,SAAS,MAAM;AAAA,IACf,OAAO,MAAM;AAAA,IACb,QAAQ,MAAM;AAAA,IACd,UAAU,MAAM;AAAA,IAChB,cAAc,MAAM;AAAA,IACpB,UAAU,MAAM;AAAA,IAChB,SAAS,MAAM;AAAA,IACf,UAAU,MAAM;AAAA,EAAA;AAEpB;AAEA,SAAS,cAAc,MAAqC;AAC1D,UAAQ,KAAK,MAAA;AAAA,IACX,KAAK;AACH,aAAO;AAAA,QACL,MAAM,KAAK;AAAA,QACX,YAAY,KAAK;AAAA,QACjB,OAAO,KAAK;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,MAAM,KAAK;AAAA,QACX,OAAO,eAAe,KAAK,KAAK;AAAA,QAChC,OAAO,KAAK;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,MAAM,KAAK;AAAA,QACX,SAAS,KAAK,QAAQ,IAAI,aAAa;AAAA,MAAA;AAAA,IAE3C,KAAK;AACH,aAAO;AAAA,QACL,MAAM,KAAK;AAAA,QACX,SAAS,KAAK,QAAQ,IAAI,cAAc;AAAA,MAAA;AAAA,EAC1C;AAEN;;"}