@tanstack/db
Version:
A reactive client store for building super fast apps on sync
67 lines (66 loc) • 2.57 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const index = require("./query/builder/index.cjs");
const liveQueryAdapter = require("./live-query-adapter.cjs");
const irStableIdentity = require("./query/ir-stable-identity.cjs");
function createInitialQueryBuilder(dbClient, deferredCollections) {
return new index.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` && !liveQueryAdapter.isCollection(value) && !(value instanceof index.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 (liveQueryAdapter.isCollection(value)) return [`collection`, value.id];
if (value instanceof index.BaseQueryBuilder) {
return [`query`, irStableIdentity.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] : liveQueryAdapter.isCollection(preparedValue) ? [`collection`, preparedValue.id] : [`derived`, getPreparedLiveQueryIdentity(preparedValue)];
return irStableIdentity.getStableValueHash(identity, `queryKey`);
}
exports.getLiveQueryHash = getLiveQueryHash;
exports.getPreparedLiveQueryIdentity = getPreparedLiveQueryIdentity;
exports.prepareLiveQueryValue = prepareLiveQueryValue;
//# sourceMappingURL=live-query-options.cjs.map