UNPKG

@trpc/react-query

Version:

The tRPC React library

272 lines (252 loc) • 7.08 kB
import type { DataTag, DefinedInitialDataInfiniteOptions, DefinedInitialDataOptions, InfiniteData, QueryClient, UndefinedInitialDataInfiniteOptions, UndefinedInitialDataOptions, UnusedSkipTokenInfiniteOptions, UnusedSkipTokenOptions, } from '@tanstack/react-query'; import type { AnyRouter, coerceAsyncIterableToArray, DistributiveOmit, MaybePromise, } from '@trpc/server/unstable-core-do-not-import'; import type { TRPCQueryKey } from '../internals/getQueryKey'; import type { ExtractCursorType, TRPCReactRequestOptions } from './hooks/types'; export interface TRPCQueryBaseOptions { /** * tRPC-related options */ trpc?: TRPCReactRequestOptions; } export interface TRPCQueryOptionsResult { trpc: { path: string; }; } type TRPCOptionOverrides = 'queryKey' | 'queryFn' | 'queryHashFn' | 'queryHash'; type TRPCInfiniteOptionOverrides = TRPCOptionOverrides | 'initialPageParam'; /** * QueryOptions API helpers */ export interface UndefinedTRPCQueryOptionsIn<TQueryFnData, TData, TError> extends DistributiveOmit< UndefinedInitialDataOptions< coerceAsyncIterableToArray<TQueryFnData>, TError, coerceAsyncIterableToArray<TData>, TRPCQueryKey >, TRPCOptionOverrides >, TRPCQueryBaseOptions {} export interface UndefinedTRPCQueryOptionsOut<TQueryFnData, TOutput, TError> extends UndefinedInitialDataOptions< coerceAsyncIterableToArray<TQueryFnData>, TError, coerceAsyncIterableToArray<TOutput>, TRPCQueryKey >, TRPCQueryOptionsResult { queryKey: DataTag<TRPCQueryKey, coerceAsyncIterableToArray<TOutput>, TError>; } export interface DefinedTRPCQueryOptionsIn<TQueryFnData, TData, TError> extends DistributiveOmit< DefinedInitialDataOptions< coerceAsyncIterableToArray<TQueryFnData>, TError, coerceAsyncIterableToArray<TData>, TRPCQueryKey >, TRPCOptionOverrides >, TRPCQueryBaseOptions {} export interface DefinedTRPCQueryOptionsOut<TQueryFnData, TData, TError> extends DefinedInitialDataOptions< coerceAsyncIterableToArray<TQueryFnData>, TError, coerceAsyncIterableToArray<TData>, TRPCQueryKey >, TRPCQueryOptionsResult { queryKey: DataTag<TRPCQueryKey, coerceAsyncIterableToArray<TData>, TError>; } export interface UnusedSkipTokenTRPCQueryOptionsIn<TQueryFnData, TData, TError> extends DistributiveOmit< UnusedSkipTokenOptions< coerceAsyncIterableToArray<TQueryFnData>, TError, coerceAsyncIterableToArray<TData>, TRPCQueryKey >, TRPCOptionOverrides >, TRPCQueryBaseOptions {} export interface UnusedSkipTokenTRPCQueryOptionsOut< TQueryFnData, TOutput, TError, > extends UnusedSkipTokenOptions< coerceAsyncIterableToArray<TQueryFnData>, TError, coerceAsyncIterableToArray<TOutput>, TRPCQueryKey >, TRPCQueryOptionsResult { queryKey: DataTag<TRPCQueryKey, coerceAsyncIterableToArray<TOutput>, TError>; } /** * InifiniteQueryOptions helpers */ export interface UndefinedTRPCInfiniteQueryOptionsIn< TInput, TQueryFnData, TData, TError, > extends DistributiveOmit< UndefinedInitialDataInfiniteOptions< TQueryFnData, TError, InfiniteData<TData, NonNullable<ExtractCursorType<TInput>> | null>, TRPCQueryKey, NonNullable<ExtractCursorType<TInput>> | null >, TRPCInfiniteOptionOverrides >, TRPCQueryBaseOptions { initialCursor?: NonNullable<ExtractCursorType<TInput>> | null; } export interface UndefinedTRPCInfiniteQueryOptionsOut< TInput, TQueryFnData, TData, TError, > extends DistributiveOmit< UndefinedInitialDataInfiniteOptions< TQueryFnData, TError, InfiniteData<TData, NonNullable<ExtractCursorType<TInput>> | null>, TRPCQueryKey, NonNullable<ExtractCursorType<TInput>> | null >, 'initialPageParam' >, TRPCQueryOptionsResult { queryKey: DataTag<TRPCQueryKey, TData, TError>; initialPageParam: NonNullable<ExtractCursorType<TInput>> | null; } export interface DefinedTRPCInfiniteQueryOptionsIn< TInput, TQueryFnData, TData, TError, > extends DistributiveOmit< DefinedInitialDataInfiniteOptions< TQueryFnData, TError, InfiniteData<TData, NonNullable<ExtractCursorType<TInput>> | null>, TRPCQueryKey, NonNullable<ExtractCursorType<TInput>> | null >, TRPCInfiniteOptionOverrides >, TRPCQueryBaseOptions { initialCursor?: NonNullable<ExtractCursorType<TInput>> | null; } export interface DefinedTRPCInfiniteQueryOptionsOut< TInput, TQueryFnData, TData, TError, > extends DistributiveOmit< DefinedInitialDataInfiniteOptions< TQueryFnData, TError, InfiniteData<TData, NonNullable<ExtractCursorType<TInput>> | null>, TRPCQueryKey, NonNullable<ExtractCursorType<TInput>> | null >, 'initialPageParam' >, TRPCQueryOptionsResult { queryKey: DataTag<TRPCQueryKey, TData, TError>; initialPageParam: NonNullable<ExtractCursorType<TInput>> | null; } export interface UnusedSkipTokenTRPCInfiniteQueryOptionsIn< TInput, TQueryFnData, TData, TError, > extends DistributiveOmit< UnusedSkipTokenInfiniteOptions< TQueryFnData, TError, InfiniteData<TData, NonNullable<ExtractCursorType<TInput>> | null>, TRPCQueryKey, NonNullable<ExtractCursorType<TInput>> | null >, TRPCInfiniteOptionOverrides >, TRPCQueryBaseOptions { initialCursor?: NonNullable<ExtractCursorType<TInput>> | null; } export interface UnusedSkipTokenTRPCInfiniteQueryOptionsOut< TInput, TQueryFnData, TData, TError, > extends DistributiveOmit< UnusedSkipTokenInfiniteOptions< TQueryFnData, TError, InfiniteData<TData, NonNullable<ExtractCursorType<TInput>> | null>, TRPCQueryKey, NonNullable<ExtractCursorType<TInput>> | null >, 'initialPageParam' >, TRPCQueryOptionsResult { queryKey: DataTag<TRPCQueryKey, TData, TError>; initialPageParam: NonNullable<ExtractCursorType<TInput>> | null; } /** * @internal */ export interface UseMutationOverride { onSuccess: (opts: { /** * Calls the original function that was defined in the query's `onSuccess` option */ originalFn: () => MaybePromise<void>; queryClient: QueryClient; /** * Meta data passed in from the `useMutation()` hook */ meta: Record<string, unknown>; }) => MaybePromise<void>; } /** * @internal */ export interface CreateTRPCReactOptions<_TRouter extends AnyRouter> { /** * Override behaviors of the built-in hooks */ overrides?: { useMutation?: Partial<UseMutationOverride>; }; /** * Abort all queries when unmounting * @default false */ abortOnUnmount?: boolean; /** * Override the default context provider * @default undefined */ context?: React.Context<any>; }