Skip to content

Commit 077d57b

Browse files
committed
Fix client support for zod
1 parent 948187c commit 077d57b

4 files changed

Lines changed: 20 additions & 9 deletions

File tree

.changeset/eighty-schools-fix.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
'@ts-rest/core': patch
3+
'@ts-rest/express': patch
4+
'@ts-rest/nest': patch
5+
'@ts-rest/open-api': patch
6+
'@ts-rest/react-query': patch
7+
---
8+
9+
Update client to have zod response type

libs/ts-rest/core/src/lib/client.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { z, ZodTypeAny } from 'zod';
22
import { AppRoute, AppRouteMutation, AppRouter, isAppRoute } from './dsl';
3-
import { Without } from './type-utils';
3+
import { Without, ZodInferOrType } from './type-utils';
44

55
type RecursiveProxyObj<T extends AppRouter> = {
66
[TKey in keyof T]: T[TKey] extends AppRouter
@@ -30,7 +30,7 @@ type DataReturnArgs<TRoute extends AppRoute> = {
3030
export type DataReturn<TRoute extends AppRoute> = (
3131
args: Without<DataReturnArgs<TRoute>, never>
3232
) => Promise<
33-
| { data: TRoute['response']; error: null; status: number }
33+
| { data: ZodInferOrType<TRoute['response']>; error: null; status: number }
3434
| { data: null; error: string; status: number }
3535
>;
3636

libs/ts-rest/express/src/lib/ts-rest-express.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
getAppRoutePathRoute,
1010
getValue,
1111
Without,
12+
ZodInferOrType,
1213
} from '@ts-rest/core';
1314

1415
type AppRouteQueryImplementation<T extends AppRouteQuery> = (
@@ -21,7 +22,7 @@ type AppRouteQueryImplementation<T extends AppRouteQuery> = (
2122
},
2223
never
2324
>
24-
) => Promise<T['response']>;
25+
) => Promise<ZodInferOrType<T['response']>>;
2526

2627
type AppRouteMutationImplementation<T extends AppRouteMutation> = (
2728
input: Without<
@@ -32,7 +33,7 @@ type AppRouteMutationImplementation<T extends AppRouteMutation> = (
3233
},
3334
never
3435
>
35-
) => Promise<T['response']>;
36+
) => Promise<ZodInferOrType<T['response']>>;
3637

3738
type AppRouteImplementation<T extends AppRoute> = T extends AppRouteMutation
3839
? AppRouteMutationImplementation<T>

libs/ts-rest/react-query/src/lib/ts-rest-client.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
getRouteQuery,
1212
isAppRoute,
1313
Without,
14+
ZodInferOrType,
1415
} from '@ts-rest/core';
1516
import {
1617
QueryKey,
@@ -63,19 +64,19 @@ type DataReturnArgs<TRoute extends AppRoute> = {
6364
type DataReturnQuery<TAppRoute extends AppRoute> = (
6465
queryKey: QueryKey,
6566
args: Without<DataReturnArgs<TAppRoute>, never>,
66-
options?: UseQueryOptions<TAppRoute['response']>
67-
) => UseQueryResult<TAppRoute['response']>;
67+
options?: UseQueryOptions<ZodInferOrType<TAppRoute['response']>>
68+
) => UseQueryResult<ZodInferOrType<TAppRoute['response']>>;
6869

6970
// Used pn X.useMutation
7071
type DataReturnMutation<TAppRoute extends AppRoute> = (
7172
options?: UseMutationOptions<
72-
TAppRoute['response'],
73+
ZodInferOrType<TAppRoute['response']>,
7374
unknown,
7475
Without<DataReturnArgs<TAppRoute>, never>,
7576
unknown
7677
>
7778
) => UseMutationResult<
78-
TAppRoute['response'],
79+
ZodInferOrType<TAppRoute['response']>,
7980
unknown,
8081
Without<DataReturnArgs<TAppRoute>, never>,
8182
unknown
@@ -156,7 +157,7 @@ const getRouteUseMutation = <TAppRoute extends AppRoute>(
156157
};
157158

158159
return useMutation(
159-
mutationFunction as () => Promise<TAppRoute['response']>,
160+
mutationFunction as () => Promise<ZodInferOrType<TAppRoute['response']>>,
160161
options
161162
);
162163
};

0 commit comments

Comments
 (0)