UNPKG

@tanstack/db

Version:

A reactive client store for building super fast apps on sync

67 lines (66 loc) 2.33 kB
import { BaseQueryBuilder } from "./query/builder/index.js"; import { isCollection } from "./live-query-adapter.js"; import { getStableQueryBuilderHash, getStableValueHash } from "./query/ir-stable-identity.js"; function createInitialQueryBuilder(dbClient, deferredCollections) { return new BaseQueryBuilder( {}, dbClient ? (options) => { const collection = dbClient._materializeCollectionForRender( options ); if (collection._deferSyncStart()) deferredCollections.add(collection); return collection; } : void 0 ); } function prepareLiveQueryValue(value, dbClient, deferredCollections) { if (typeof value === `function`) { return prepareLiveQueryValue( value(createInitialQueryBuilder(dbClient, deferredCollections)), dbClient, deferredCollections ); } if (value && typeof value === `object` && !isCollection(value) && !(value instanceof BaseQueryBuilder) && `query` in value) { const { query, queryKey: _queryKey, client: _client, ...config } = value; return { ...config, query: typeof query === `function` ? query(createInitialQueryBuilder(dbClient, deferredCollections)) : query }; } return value; } function getPreparedLiveQueryIdentity(value) { if (isCollection(value)) return [`collection`, value.id]; if (value instanceof BaseQueryBuilder) { return [`query`, getStableQueryBuilderHash(value)]; } if (value && typeof value === `object` && `query` in value) { const config = value; return [ `config`, getPreparedLiveQueryIdentity(config.query), [`getKey`, config.getKey], [`schema`, config.schema], [`singleResult`, config.singleResult === true], [`defaultStringCollation`, config.defaultStringCollation] ]; } if (value === void 0 || value === null) return [`disabled`]; return [`value`, value]; } function getLiveQueryHash(preparedValue, queryKey) { const identity = queryKey?.length ? [`queryKey`, queryKey] : isCollection(preparedValue) ? [`collection`, preparedValue.id] : [`derived`, getPreparedLiveQueryIdentity(preparedValue)]; return getStableValueHash(identity, `queryKey`); } export { getLiveQueryHash, getPreparedLiveQueryIdentity, prepareLiveQueryValue }; //# sourceMappingURL=live-query-options.js.map