Skip to content

Commit

Permalink
fix: correct types and input for infinite queries
Browse files Browse the repository at this point in the history
  • Loading branch information
vishalbalaji committed May 31, 2024
1 parent ad828fd commit 709e274
Showing 1 changed file with 26 additions and 17 deletions.
43 changes: 26 additions & 17 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -303,16 +303,16 @@ type CreateQueryProcedure<TInput, TOutput, TError> = {
>;
} & {};

type CreateTRPCInfiniteQueryOptions<TOutput, TError, TData> = Omit<
CreateInfiniteQueryOptions<TOutput, TError, TData>,
"queryKey" | "queryFn"
type CreateTRPCInfiniteQueryOptions<TInput, TOutput, TError, TData> = Omit<
CreateInfiniteQueryOptions<TOutput, TError, TData, TData, any, ExtractCursorType<TInput>>,
"queryKey" | "queryFn" | "initialPageParam"
>;
type CreateTRPCServerInfiniteQueryOptions<TOutput, TError, TData> =
CreateTRPCInfiniteQueryOptions<TOutput, TError, TData> & {
type CreateTRPCServerInfiniteQueryOptions<TInput, TOutput, TError, TData> =
CreateTRPCInfiniteQueryOptions<TInput, TOutput, TError, TData> & {
ssr?: boolean;
};

export type ExtractCursorType<TInput> = TInput extends { cursor: any }
export type ExtractCursorType<TInput> = TInput extends { cursor?: any }
? TInput["cursor"]
: unknown;

Expand All @@ -326,19 +326,19 @@ type CreateInfiniteQueryProcedure<TInput, TOutput, TError> = (TInput extends {
? {
[ProcedureNames.infiniteQuery]: <TData = TOutput>(
input: Omit<TInput, "cursor">,
opts?: CreateTRPCInfiniteQueryOptions<TOutput, TError, TData> &
opts: CreateTRPCInfiniteQueryOptions<TInput, TOutput, TError, TData> &
InfiniteQueryOpts<TInput> &
TRPCQueryOpts,
) => CreateInfiniteQueryResult<InfiniteData<TData>, TError>;
) => CreateInfiniteQueryResult<InfiniteData<TData, NonNullable<ExtractCursorType<TInput>> | null>, TError>;
[ProcedureNames.serverInfiniteQuery]: <TData = TOutput>(
input: Omit<TInput, "cursor">,
opts?: CreateTRPCServerInfiniteQueryOptions<TOutput, TError, TData> &
opts: CreateTRPCServerInfiniteQueryOptions<TInput, TOutput, TError, TData> &
InfiniteQueryOpts<TInput> &
TRPCQueryOpts,
) => Promise<
(
...args: [TInput | ((old: TInput) => TInput)] | []
) => CreateInfiniteQueryResult<InfiniteData<TData>, TError>
) => CreateInfiniteQueryResult<InfiniteData<TData, NonNullable<ExtractCursorType<TInput>> | null>, TError>
>;
}
: {}) & {};
Expand Down Expand Up @@ -664,11 +664,13 @@ const procedures: Record<
const shouldAbortOnUnmount = opts?.trpc?.abortOnUnmount ?? abortOnUnmount;
return createInfiniteQuery({
...opts,
initialPageParam: opts.initialCursor ?? null,
queryKey: getArrayQueryKey(path, input, "infinite"),
queryFn: ({ pageParam, signal }) =>
target.query({
...input,
cursor: pageParam ?? opts?.initialCursor,
}, {
...(shouldAbortOnUnmount && { signal }),
}),
});
Expand All @@ -687,11 +689,14 @@ const procedures: Record<
const query: Omit<FetchInfiniteQueryOptions, "initialPageParam"> = {
queryKey: getArrayQueryKey(path, input, "infinite"),
queryFn: ({ pageParam, signal }) =>
targetFn({
...input,
cursor: pageParam ?? opts?.initialCursor,
...(shouldAbortOnUnmount && { signal }),
}),
targetFn(
{
...input,
cursor: pageParam ?? opts?.initialCursor,
},
{
...(shouldAbortOnUnmount && { signal }),
}),
};

const cache = queryClient
Expand All @@ -711,10 +716,12 @@ const procedures: Record<
if (typeof newInput === "function") i = newInput(input);
newQuery = {
queryKey: getArrayQueryKey(path, i, "infinite"),
queryFn: ({ pageParam, signal }) =>
targetFn({
queryFn: ({ pageParam, signal }) => targetFn(
{
...i,
cursor: pageParam ?? opts?.initialCursor,
},
{
...(shouldAbortOnUnmount && { signal }),
}),
};
Expand All @@ -724,6 +731,7 @@ const procedures: Record<

return createInfiniteQuery({
...opts,
initialPageParam: opts.initialCursor ?? null,
...newQuery,
...(cacheNotFound
? {
Expand Down Expand Up @@ -930,3 +938,4 @@ export function svelteQueryWrapper<TRouter extends AnyRouter>({
},
);
}

0 comments on commit 709e274

Please sign in to comment.