diff --git a/packages/zod-openapi/src/index.ts b/packages/zod-openapi/src/index.ts index e9e90c1f..f42a2f68 100644 --- a/packages/zod-openapi/src/index.ts +++ b/packages/zod-openapi/src/index.ts @@ -198,22 +198,26 @@ type ExtractStatusCode = T extends keyof Status type DefinedStatusCodes = keyof R['responses'] & RouteConfigStatusCode export type RouteConfigToTypedResponse = | { - [Status in DefinedStatusCodes]: undefined extends R['responses'][Status]['content'] - ? TypedResponse<{}, ExtractStatusCode, string> - : ReturnJsonOrTextOrResponse< - keyof R['responses'][Status]['content'], - ExtractContent, - Status - > + [Status in DefinedStatusCodes]: R['responses'][Status] extends { content: infer Content } + ? undefined extends Content + ? never + : ReturnJsonOrTextOrResponse< + keyof R['responses'][Status]['content'], + ExtractContent, + Status + > + : TypedResponse<{}, ExtractStatusCode, string> }[DefinedStatusCodes] | ('default' extends keyof R['responses'] - ? undefined extends R['responses']['default']['content'] - ? TypedResponse<{}, Exclude>>, string> - : ReturnJsonOrTextOrResponse< - keyof R['responses']['default']['content'], - ExtractContent, - Exclude>> - > + ? R['responses']['default'] extends { content: infer Content } + ? undefined extends Content + ? never + : ReturnJsonOrTextOrResponse< + keyof Content, + ExtractContent, + Exclude>> + > + : TypedResponse<{}, Exclude>>, string> : never) export type Hook = (