UNPKG

@ts-rest/solid-query

Version:

solid-query client integration for @ts-rest

23 lines (22 loc) 3.13 kB
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 {};