UNPKG

@trpc/react-query

Version:

The tRPC React library

157 lines • 7.53 kB
import type { DefinedUseQueryResult, FetchInfiniteQueryOptions, FetchQueryOptions, InfiniteData, InfiniteQueryObserverSuccessResult, InitialDataFunction, QueryObserverSuccessResult, QueryOptions, UseBaseQueryOptions, UseInfiniteQueryOptions, UseInfiniteQueryResult, UseMutationOptions, UseMutationResult, UseQueryResult, UseSuspenseInfiniteQueryOptions, UseSuspenseInfiniteQueryResult, UseSuspenseQueryOptions, UseSuspenseQueryResult } from '@tanstack/react-query'; import type { CreateTRPCClientOptions, TRPCClient, TRPCRequestOptions, TRPCUntypedClient } from '@trpc/client'; import type { AnyRouter, coerceAsyncIterableToArray, DistributiveOmit } from '@trpc/server/unstable-core-do-not-import'; import type { JSX, ReactNode } from 'react'; import type { TRPCContextProps } from '../../internals/context'; import type { TRPCQueryKey } from '../../internals/getQueryKey'; export type OutputWithCursor<TData, TCursor = any> = { cursor: TCursor | null; data: TData; }; export interface TRPCReactRequestOptions extends Omit<TRPCRequestOptions, 'signal'> { /** * Opt out of SSR for this query by passing `ssr: false` */ ssr?: boolean; /** * Opt out or into aborting request on unmount */ abortOnUnmount?: boolean; } export interface TRPCUseQueryBaseOptions { /** * tRPC-related options */ trpc?: TRPCReactRequestOptions; } export interface UseTRPCQueryOptions<TOutput, TData, TError, TQueryOptsData = TOutput> extends DistributiveOmit<UseBaseQueryOptions<TOutput, TError, TData, TQueryOptsData, any>, 'queryKey'>, TRPCUseQueryBaseOptions { } export interface UseTRPCSuspenseQueryOptions<TOutput, TData, TError> extends DistributiveOmit<UseSuspenseQueryOptions<TOutput, TError, TData, any>, 'queryKey'>, TRPCUseQueryBaseOptions { } export interface UseTRPCPrefetchQueryOptions<TOutput, TData, TError> extends DistributiveOmit<FetchQueryOptions<TOutput, TError, TData, any>, 'queryKey'>, TRPCUseQueryBaseOptions { } /** @internal **/ export interface DefinedUseTRPCQueryOptions<TOutput, TData, TError, TQueryOptsData = TOutput> extends DistributiveOmit<UseTRPCQueryOptions<TOutput, TData, TError, TQueryOptsData>, 'queryKey'> { initialData: InitialDataFunction<TQueryOptsData> | TQueryOptsData; } export interface TRPCQueryOptions<TData, TError> extends DistributiveOmit<QueryOptions<TData, TError, TData, any>, 'queryKey'>, TRPCUseQueryBaseOptions { queryKey: TRPCQueryKey; } export type ExtractCursorType<TInput> = TInput extends { cursor?: any; } ? TInput['cursor'] : unknown; export interface UseTRPCInfiniteQueryOptions<TInput, TOutput, TError> extends DistributiveOmit<UseInfiniteQueryOptions<TOutput, TError, TOutput, any, ExtractCursorType<TInput>>, 'queryKey' | 'initialPageParam'>, TRPCUseQueryBaseOptions { initialCursor?: ExtractCursorType<TInput>; } export type UseTRPCPrefetchInfiniteQueryOptions<TInput, TOutput, TError> = DistributiveOmit<FetchInfiniteQueryOptions<TOutput, TError, TOutput, any, ExtractCursorType<TInput>>, 'queryKey' | 'initialPageParam'> & TRPCUseQueryBaseOptions & { initialCursor?: ExtractCursorType<TInput>; }; export interface UseTRPCSuspenseInfiniteQueryOptions<TInput, TOutput, TError> extends DistributiveOmit<UseSuspenseInfiniteQueryOptions<TOutput, TError, TOutput, any, ExtractCursorType<TInput>>, 'queryKey' | 'initialPageParam'>, TRPCUseQueryBaseOptions { initialCursor?: ExtractCursorType<TInput>; } export interface UseTRPCMutationOptions<TInput, TError, TOutput, TContext = unknown> extends UseMutationOptions<TOutput, TError, TInput, TContext>, TRPCUseQueryBaseOptions { } export interface UseTRPCSubscriptionOptions<TOutput, TError> { /** * @deprecated * use a `skipToken` from `@tanstack/react-query` instead * this will be removed in v12 */ enabled?: boolean; /** * Called when the subscription is started */ onStarted?: () => void; /** * Called when new data is received */ onData?: (data: TOutput) => void; /** * Called when an **unrecoverable error** occurs and the subscription is closed */ onError?: (err: TError) => void; /** * Called when the subscription is completed on the server */ onComplete?: () => void; } export interface TRPCSubscriptionBaseResult<TOutput, TError> { status: 'idle' | 'connecting' | 'pending' | 'error'; data: undefined | TOutput; error: null | TError; /** * Reset the subscription */ reset: () => void; } export interface TRPCSubscriptionIdleResult<TOutput> extends TRPCSubscriptionBaseResult<TOutput, null> { status: 'idle'; data: undefined; error: null; } export interface TRPCSubscriptionConnectingResult<TOutput, TError> extends TRPCSubscriptionBaseResult<TOutput, TError> { status: 'connecting'; data: undefined | TOutput; error: TError | null; } export interface TRPCSubscriptionPendingResult<TOutput> extends TRPCSubscriptionBaseResult<TOutput, undefined> { status: 'pending'; data: TOutput | undefined; error: null; } export interface TRPCSubscriptionErrorResult<TOutput, TError> extends TRPCSubscriptionBaseResult<TOutput, TError> { status: 'error'; data: TOutput | undefined; error: TError; } export type TRPCSubscriptionResult<TOutput, TError> = TRPCSubscriptionIdleResult<TOutput> | TRPCSubscriptionConnectingResult<TOutput, TError> | TRPCSubscriptionErrorResult<TOutput, TError> | TRPCSubscriptionPendingResult<TOutput>; export interface TRPCProviderProps<TRouter extends AnyRouter, TSSRContext> extends Omit<TRPCContextProps<TRouter, TSSRContext>, 'client'> { children: ReactNode; client: TRPCClient<TRouter> | TRPCUntypedClient<TRouter>; } export type TRPCProvider<TRouter extends AnyRouter, TSSRContext> = (props: TRPCProviderProps<TRouter, TSSRContext>) => JSX.Element; export type CreateClient<TRouter extends AnyRouter> = (opts: CreateTRPCClientOptions<TRouter>) => TRPCUntypedClient<TRouter>; /** * @internal */ export type UseTRPCQueryResult<TData, TError> = TRPCHookResult & UseQueryResult<coerceAsyncIterableToArray<TData>, TError>; /** * @internal */ export type DefinedUseTRPCQueryResult<TData, TError> = DefinedUseQueryResult<TData, TError> & TRPCHookResult; /** * @internal */ export type UseTRPCQuerySuccessResult<TData, TError> = QueryObserverSuccessResult<TData, TError> & TRPCHookResult; /** * @internal */ export type UseTRPCSuspenseQueryResult<TData, TError> = [ TData, UseSuspenseQueryResult<TData, TError> & TRPCHookResult ]; /** * @internal */ export type UseTRPCInfiniteQueryResult<TData, TError, TInput> = TRPCHookResult & UseInfiniteQueryResult<InfiniteData<TData, NonNullable<ExtractCursorType<TInput>> | null>, TError>; /** * @internal */ export type UseTRPCInfiniteQuerySuccessResult<TData, TError, TInput> = InfiniteQueryObserverSuccessResult<InfiniteData<TData, NonNullable<ExtractCursorType<TInput>> | null>, TError> & TRPCHookResult; /** * @internal */ export type UseTRPCSuspenseInfiniteQueryResult<TData, TError, TInput> = [ InfiniteData<TData, NonNullable<ExtractCursorType<TInput>> | null>, UseSuspenseInfiniteQueryResult<InfiniteData<TData, NonNullable<ExtractCursorType<TInput>> | null>, TError> & TRPCHookResult ]; /** * @internal */ export type UseTRPCMutationResult<TData, TError, TVariables, TContext> = TRPCHookResult & UseMutationResult<TData, TError, TVariables, TContext>; export interface TRPCHookResult { trpc: { path: string; }; } //# sourceMappingURL=types.d.ts.map