UNPKG

@tanstack/vue-db

Version:

Vue integration for @tanstack/db

56 lines (55 loc) 3.15 kB
import { Collection, CollectionStatus, Context, GetResult, InferResultType, InitialQueryBuilder, NonSingleResult, QueryBuilder, UtilsRecord } from '@tanstack/db'; import { ComputedRef, MaybeRefOrGetter } from 'vue'; type InfiniteQueryOptions = { pageSize?: number; initialPageParam?: number; }; export type LiveInfiniteQueryConfig<TRow> = InfiniteQueryOptions & { /** * @deprecated Pagination uses the shared controller's peek-ahead strategy. * This remains for compatibility with TanStack Query conventions. */ getNextPageParam?: (lastPage: Array<TRow>, allPages: Array<Array<TRow>>, lastPageParam: number, allPageParams: Array<number>) => number | undefined; }; export type UseLiveInfiniteQueryConfig<TContext extends Context & NonSingleResult> = LiveInfiniteQueryConfig<InferResultType<TContext>[number]>; export interface UseLiveInfiniteQueryReturn<TContext extends Context & NonSingleResult> { state: ComputedRef<Map<string | number, GetResult<TContext>>>; data: ComputedRef<InferResultType<TContext>>; collection: ComputedRef<Collection<GetResult<TContext>, string | number, UtilsRecord>>; status: ComputedRef<CollectionStatus>; isLoading: ComputedRef<boolean>; isReady: ComputedRef<boolean>; isIdle: ComputedRef<boolean>; isError: ComputedRef<boolean>; isCleanedUp: ComputedRef<boolean>; pages: ComputedRef<Array<Array<InferResultType<TContext>[number]>>>; pageParams: ComputedRef<Array<number>>; fetchNextPage: () => Promise<void>; hasNextPage: ComputedRef<boolean>; isFetchingNextPage: ComputedRef<boolean>; error: ComputedRef<unknown>; } export interface UseLiveInfiniteQueryReturnWithCollection<TResult extends object, TKey extends string | number, TUtils extends UtilsRecord> { state: ComputedRef<Map<TKey, TResult>>; data: ComputedRef<Array<TResult>>; collection: ComputedRef<Collection<TResult, TKey, TUtils>>; status: ComputedRef<CollectionStatus>; isLoading: ComputedRef<boolean>; isReady: ComputedRef<boolean>; isIdle: ComputedRef<boolean>; isError: ComputedRef<boolean>; isCleanedUp: ComputedRef<boolean>; pages: ComputedRef<Array<Array<TResult>>>; pageParams: ComputedRef<Array<number>>; fetchNextPage: () => Promise<void>; hasNextPage: ComputedRef<boolean>; isFetchingNextPage: ComputedRef<boolean>; error: ComputedRef<unknown>; } /** * Create a Vue-native reactive view over the shared live-query window * controller. The query must include an `orderBy` clause. */ export declare function useLiveInfiniteQuery<TResult extends object, TKey extends string | number, TUtils extends UtilsRecord>(liveQueryCollection: MaybeRefOrGetter<Collection<TResult, TKey, TUtils> & NonSingleResult>, config: LiveInfiniteQueryConfig<TResult>): UseLiveInfiniteQueryReturnWithCollection<TResult, TKey, TUtils>; export declare function useLiveInfiniteQuery<TContext extends Context & NonSingleResult>(queryFn: (q: InitialQueryBuilder) => QueryBuilder<TContext>, config: UseLiveInfiniteQueryConfig<TContext>, deps?: Array<MaybeRefOrGetter<unknown>>): UseLiveInfiniteQueryReturn<TContext>; export {};