@trpc/react-query
Version:
157 lines • 7.53 kB
TypeScript
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