@tanstack/react-db
Version:
React integration for @tanstack/db
30 lines (27 loc) • 938 B
text/typescript
import { getPreparedLiveQuerySources } from '@tanstack/db'
import type { DbClient } from '@tanstack/db'
/**
* Reports a descriptor source that no DbClient bound, naming the provider a
* React tree needs. Returns `undefined` when a client can bind descriptors.
*/
export function getUnboundDescriptorReporter(
client: DbClient | undefined,
hookName: string,
): ((alias: string) => never) | undefined {
if (client) return undefined
return (alias) => {
throw new Error(
`[${hookName}] Collection descriptor "${alias}" requires a DbClient when the query is consumed. Wrap this component in <DbProvider client={client}> or use a concrete Collection.`,
)
}
}
export function getPreparedSources(
preparedValue: unknown,
client: DbClient | undefined,
hookName: string,
): Array<{ id: string }> {
return getPreparedLiveQuerySources(
preparedValue,
getUnboundDescriptorReporter(client, hookName),
)
}