{"version":3,"file":"live-query-options.cjs","sources":["../../src/live-query-options.ts"],"sourcesContent":["import { BaseQueryBuilder } from './query/builder/index.js'\nimport { isCollection } from './live-query-adapter.js'\nimport {\n  getStableQueryBuilderHash,\n  getStableValueHash,\n} from './query/ir-stable-identity.js'\nimport type { CollectionImpl } from './collection/index.js'\nimport type { CollectionOptionsIdentity } from './collection-options.js'\nimport type { CollectionOptions, DbClient } from './client.js'\nimport type {\n  InitialQueryBuilder,\n  LiveQueryCollectionConfig,\n} from './query/index.js'\n\nexport type LiveQueryKey = ReadonlyArray<unknown>\n\nexport type LiveQueryOptions = LiveQueryCollectionConfig<any> & {\n  queryKey?: LiveQueryKey\n}\n\nexport type DeferredLiveQueryCollections = Set<\n  CollectionImpl<any, string | number, any, any, any>\n>\n\nfunction createInitialQueryBuilder(\n  dbClient: DbClient | undefined,\n  deferredCollections: DeferredLiveQueryCollections,\n): InitialQueryBuilder {\n  return new BaseQueryBuilder(\n    {},\n    dbClient\n      ? (\n          options: CollectionOptionsIdentity<\n            any,\n            string | number,\n            any,\n            any,\n            any\n          >,\n        ) => {\n          const collection = dbClient._materializeCollectionForRender(\n            options as CollectionOptions<any, string | number, any, any>,\n          ) as CollectionImpl<any, string | number, any, any, any>\n          if (collection._deferSyncStart()) deferredCollections.add(collection)\n          return collection\n        }\n      : undefined,\n  ) as InitialQueryBuilder\n}\n\nexport function prepareLiveQueryValue(\n  value: unknown,\n  dbClient: DbClient | undefined,\n  deferredCollections: DeferredLiveQueryCollections,\n): unknown {\n  if (typeof value === `function`) {\n    return prepareLiveQueryValue(\n      value(createInitialQueryBuilder(dbClient, deferredCollections)),\n      dbClient,\n      deferredCollections,\n    )\n  }\n\n  if (\n    value &&\n    typeof value === `object` &&\n    !isCollection(value) &&\n    !(value instanceof BaseQueryBuilder) &&\n    `query` in value\n  ) {\n    const {\n      query,\n      queryKey: _queryKey,\n      client: _client,\n      ...config\n    } = value as LiveQueryCollectionConfig<any> & {\n      queryKey?: LiveQueryKey\n      client?: DbClient\n    }\n\n    return {\n      ...config,\n      query:\n        typeof query === `function`\n          ? query(createInitialQueryBuilder(dbClient, deferredCollections))\n          : query,\n    }\n  }\n\n  return value\n}\n\nexport function getPreparedLiveQueryIdentity(value: unknown): unknown {\n  if (isCollection(value)) return [`collection`, value.id]\n  if (value instanceof BaseQueryBuilder) {\n    return [`query`, getStableQueryBuilderHash(value)]\n  }\n  if (value && typeof value === `object` && `query` in value) {\n    const config = value as LiveQueryCollectionConfig<any>\n    return [\n      `config`,\n      getPreparedLiveQueryIdentity(config.query),\n      [`getKey`, config.getKey],\n      [`schema`, config.schema],\n      [`singleResult`, config.singleResult === true],\n      [`defaultStringCollation`, config.defaultStringCollation],\n    ]\n  }\n  if (value === undefined || value === null) return [`disabled`]\n  return [`value`, value]\n}\n\nexport function getLiveQueryHash(\n  preparedValue: unknown,\n  queryKey?: LiveQueryKey,\n): string {\n  const identity = queryKey?.length\n    ? [`queryKey`, queryKey]\n    : isCollection(preparedValue)\n      ? [`collection`, preparedValue.id]\n      : [`derived`, getPreparedLiveQueryIdentity(preparedValue)]\n\n  return getStableValueHash(identity, `queryKey`)\n}\n"],"names":["BaseQueryBuilder","isCollection","getStableQueryBuilderHash","getStableValueHash"],"mappings":";;;;;AAwBA,SAAS,0BACP,UACA,qBACqB;AACrB,SAAO,IAAIA,MAAAA;AAAAA,IACT,CAAA;AAAA,IACA,WACI,CACE,YAOG;AACH,YAAM,aAAa,SAAS;AAAA,QAC1B;AAAA,MAAA;AAEF,UAAI,WAAW,gBAAA,EAAmB,qBAAoB,IAAI,UAAU;AACpE,aAAO;AAAA,IACT,IACA;AAAA,EAAA;AAER;AAEO,SAAS,sBACd,OACA,UACA,qBACS;AACT,MAAI,OAAO,UAAU,YAAY;AAC/B,WAAO;AAAA,MACL,MAAM,0BAA0B,UAAU,mBAAmB,CAAC;AAAA,MAC9D;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AAEA,MACE,SACA,OAAO,UAAU,YACjB,CAACC,iBAAAA,aAAa,KAAK,KACnB,EAAE,iBAAiBD,MAAAA,qBACnB,WAAW,OACX;AACA,UAAM;AAAA,MACJ;AAAA,MACA,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,GAAG;AAAA,IAAA,IACD;AAKJ,WAAO;AAAA,MACL,GAAG;AAAA,MACH,OACE,OAAO,UAAU,aACb,MAAM,0BAA0B,UAAU,mBAAmB,CAAC,IAC9D;AAAA,IAAA;AAAA,EAEV;AAEA,SAAO;AACT;AAEO,SAAS,6BAA6B,OAAyB;AACpE,MAAIC,iBAAAA,aAAa,KAAK,UAAU,CAAC,cAAc,MAAM,EAAE;AACvD,MAAI,iBAAiBD,MAAAA,kBAAkB;AACrC,WAAO,CAAC,SAASE,iBAAAA,0BAA0B,KAAK,CAAC;AAAA,EACnD;AACA,MAAI,SAAS,OAAO,UAAU,YAAY,WAAW,OAAO;AAC1D,UAAM,SAAS;AACf,WAAO;AAAA,MACL;AAAA,MACA,6BAA6B,OAAO,KAAK;AAAA,MACzC,CAAC,UAAU,OAAO,MAAM;AAAA,MACxB,CAAC,UAAU,OAAO,MAAM;AAAA,MACxB,CAAC,gBAAgB,OAAO,iBAAiB,IAAI;AAAA,MAC7C,CAAC,0BAA0B,OAAO,sBAAsB;AAAA,IAAA;AAAA,EAE5D;AACA,MAAI,UAAU,UAAa,UAAU,KAAM,QAAO,CAAC,UAAU;AAC7D,SAAO,CAAC,SAAS,KAAK;AACxB;AAEO,SAAS,iBACd,eACA,UACQ;AACR,QAAM,WAAW,UAAU,SACvB,CAAC,YAAY,QAAQ,IACrBD,iBAAAA,aAAa,aAAa,IACxB,CAAC,cAAc,cAAc,EAAE,IAC/B,CAAC,WAAW,6BAA6B,aAAa,CAAC;AAE7D,SAAOE,oCAAmB,UAAU,UAAU;AAChD;;;;"}