@ts-rest/solid-query
Version:
solid-query client integration for @ts-rest
23 lines (22 loc) • 3.13 kB
TypeScript
import { CreateInfiniteQueryOptions, CreateInfiniteQueryResult, CreateMutationOptions, CreateMutationResult, CreateQueryOptions, CreateQueryResult, QueryFunctionContext, QueryKey } from '@tanstack/solid-query';
import { AppRoute, AppRouteFunction, AppRouteMutation, AppRouteQuery, AppRouter, ClientArgs, ClientInferResponses, ErrorHttpStatusCode, PartialClientInferRequest, SuccessfulHttpStatusCode, Without } from '@ts-rest/core';
type RecursiveProxyObj<T extends AppRouter, TClientArgs extends ClientArgs> = {
[TKey in keyof T]: T[TKey] extends AppRoute ? Without<UseQueryArgs<T[TKey], TClientArgs>, never> : T[TKey] extends AppRouter ? RecursiveProxyObj<T[TKey], TClientArgs> : never;
};
type UseQueryArgs<TAppRoute extends AppRoute, TClientArgs extends ClientArgs> = {
createQuery: TAppRoute extends AppRouteQuery ? DataReturnQuery<TAppRoute, TClientArgs> : never;
createInfiniteQuery: TAppRoute extends AppRouteQuery ? DataReturnInfiniteQuery<TAppRoute, TClientArgs> : never;
query: TAppRoute extends AppRouteQuery ? AppRouteFunction<TAppRoute, TClientArgs> : never;
createMutation: TAppRoute extends AppRouteMutation ? DataReturnMutation<TAppRoute, TClientArgs> : never;
mutation: TAppRoute extends AppRouteMutation ? AppRouteFunction<TAppRoute, TClientArgs> : never;
};
type DataResponse<TAppRoute extends AppRoute> = ClientInferResponses<TAppRoute, SuccessfulHttpStatusCode, 'force'>;
type ErrorResponse<TAppRoute extends AppRoute> = ClientInferResponses<TAppRoute, ErrorHttpStatusCode, 'ignore'>;
type DataReturnQuery<TAppRoute extends AppRoute, TClientArgs extends ClientArgs> = <TData = DataResponse<TAppRoute>>(queryKey: () => QueryKey, args: PartialClientInferRequest<TAppRoute, TClientArgs>, options?: CreateQueryOptions<DataResponse<TAppRoute>, ErrorResponse<TAppRoute>, TData>) => CreateQueryResult<TData, ErrorResponse<TAppRoute>>;
type DataReturnInfiniteQuery<TAppRoute extends AppRoute, TClientArgs extends ClientArgs> = <TData = DataResponse<TAppRoute>>(queryKey: () => QueryKey, args: (context: QueryFunctionContext<QueryKey>) => PartialClientInferRequest<TAppRoute, TClientArgs>, options?: CreateInfiniteQueryOptions<DataResponse<TAppRoute>, ErrorResponse<TAppRoute>, TData>) => CreateInfiniteQueryResult<TData, ErrorResponse<TAppRoute>>;
type DataReturnMutation<TAppRoute extends AppRoute, TClientArgs extends ClientArgs> = (options?: CreateMutationOptions<DataResponse<TAppRoute>, ErrorResponse<TAppRoute>, PartialClientInferRequest<TAppRoute, TClientArgs>, unknown>) => CreateMutationResult<DataResponse<TAppRoute>, ErrorResponse<TAppRoute>, PartialClientInferRequest<TAppRoute, TClientArgs>, unknown>;
/** @deprecated Use `TsRestSolidQueryClient` instead */
export type InitClientReturn<T extends AppRouter, TClientArgs extends ClientArgs> = TsRestSolidQueryClient<T, TClientArgs>;
export type TsRestSolidQueryClient<T extends AppRouter, TClientArgs extends ClientArgs> = RecursiveProxyObj<T, TClientArgs>;
export declare const initQueryClient: <T extends AppRouter, TClientArgs extends ClientArgs>(router: T, args: TClientArgs) => RecursiveProxyObj<T, TClientArgs>;
export {};