@trpc/react-query
Version:
272 lines (252 loc) • 7.08 kB
text/typescript
import type {
DataTag,
DefinedInitialDataInfiniteOptions,
DefinedInitialDataOptions,
InfiniteData,
QueryClient,
UndefinedInitialDataInfiniteOptions,
UndefinedInitialDataOptions,
UnusedSkipTokenInfiniteOptions,
UnusedSkipTokenOptions,
} from '/react-query';
import type {
AnyRouter,
coerceAsyncIterableToArray,
DistributiveOmit,
MaybePromise,
} from '/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>;
}