Skip to content

Commit 88d3b5c

Browse files
authored
refactor(zod-openapi): fix type errors (#1078)
* refactor(zod-openapi): fix type errors * fix types
1 parent 0d6c13b commit 88d3b5c

File tree

1 file changed

+18
-14
lines changed

1 file changed

+18
-14
lines changed

packages/zod-openapi/src/index.ts

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -198,22 +198,26 @@ type ExtractStatusCode<T extends RouteConfigStatusCode> = T extends keyof Status
198198
type DefinedStatusCodes<R extends RouteConfig> = keyof R['responses'] & RouteConfigStatusCode
199199
export type RouteConfigToTypedResponse<R extends RouteConfig> =
200200
| {
201-
[Status in DefinedStatusCodes<R>]: undefined extends R['responses'][Status]['content']
202-
? TypedResponse<{}, ExtractStatusCode<Status>, string>
203-
: ReturnJsonOrTextOrResponse<
204-
keyof R['responses'][Status]['content'],
205-
ExtractContent<R['responses'][Status]['content']>,
206-
Status
207-
>
201+
[Status in DefinedStatusCodes<R>]: R['responses'][Status] extends { content: infer Content }
202+
? undefined extends Content
203+
? never
204+
: ReturnJsonOrTextOrResponse<
205+
keyof R['responses'][Status]['content'],
206+
ExtractContent<R['responses'][Status]['content']>,
207+
Status
208+
>
209+
: TypedResponse<{}, ExtractStatusCode<Status>, string>
208210
}[DefinedStatusCodes<R>]
209211
| ('default' extends keyof R['responses']
210-
? undefined extends R['responses']['default']['content']
211-
? TypedResponse<{}, Exclude<StatusCode, ExtractStatusCode<DefinedStatusCodes<R>>>, string>
212-
: ReturnJsonOrTextOrResponse<
213-
keyof R['responses']['default']['content'],
214-
ExtractContent<R['responses']['default']['content']>,
215-
Exclude<StatusCode, ExtractStatusCode<DefinedStatusCodes<R>>>
216-
>
212+
? R['responses']['default'] extends { content: infer Content }
213+
? undefined extends Content
214+
? never
215+
: ReturnJsonOrTextOrResponse<
216+
keyof Content,
217+
ExtractContent<Content>,
218+
Exclude<StatusCode, ExtractStatusCode<DefinedStatusCodes<R>>>
219+
>
220+
: TypedResponse<{}, Exclude<StatusCode, ExtractStatusCode<DefinedStatusCodes<R>>>, string>
217221
: never)
218222

219223
export type Hook<T, E extends Env, P extends string, R> = (

0 commit comments

Comments
 (0)