@tanstack/vue-db
Version:
Vue integration for @tanstack/db
56 lines (55 loc) • 3.15 kB
text/typescript
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 {};