UNPKG

@tanstack/db

Version:

A reactive client store for building super fast apps on sync

1 lines • 1.6 kB
{"version":3,"file":"find-aggregate.cjs","sources":["../../../../src/query/compiler/find-aggregate.ts"],"sourcesContent":["import { Aggregate, ConditionalSelect, Func, isExpressionLike } from '../ir.js'\n\n/**\n * Returns the first aggregate in a select, having, or orderBy value. It does\n * not enter include subqueries, which compile with their own aggregates.\n * A plain object is a nested select; its fields may use any names.\n */\nexport function findAggregate(value: unknown): Aggregate | undefined {\n if (value === null || typeof value !== `object`) return undefined\n if (Array.isArray(value)) {\n for (const item of value) {\n const aggregate = findAggregate(item)\n if (aggregate) return aggregate\n }\n return undefined\n }\n if (value instanceof Aggregate) return value\n if (value instanceof Func) return findAggregate(value.args)\n if (value instanceof ConditionalSelect)\n return findAggregate([value.branches, value.defaultValue])\n if (isExpressionLike(value)) return undefined\n return findAggregate(Object.values(value))\n}\n"],"names":["Aggregate","Func","ConditionalSelect","isExpressionLike"],"mappings":";;;AAOO,SAAS,cAAc,OAAuC;AACnE,MAAI,UAAU,QAAQ,OAAO,UAAU,SAAU,QAAO;AACxD,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,eAAW,QAAQ,OAAO;AACxB,YAAM,YAAY,cAAc,IAAI;AACpC,UAAI,UAAW,QAAO;AAAA,IACxB;AACA,WAAO;AAAA,EACT;AACA,MAAI,iBAAiBA,GAAAA,UAAW,QAAO;AACvC,MAAI,iBAAiBC,GAAAA,KAAM,QAAO,cAAc,MAAM,IAAI;AAC1D,MAAI,iBAAiBC,GAAAA;AACnB,WAAO,cAAc,CAAC,MAAM,UAAU,MAAM,YAAY,CAAC;AAC3D,MAAIC,GAAAA,iBAAiB,KAAK,EAAG,QAAO;AACpC,SAAO,cAAc,OAAO,OAAO,KAAK,CAAC;AAC3C;;"}