{"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;;"}