refactor(zod-openapi): fix type errors (#1078)

* refactor(zod-openapi): fix type errors

* fix types
pull/1017/head
Yusuke Wada 2025-03-29 08:47:19 +09:00 committed by Tim Barley
parent 7cba581041
commit 70834f9f70
1 changed files with 18 additions and 14 deletions

View File

@ -198,22 +198,26 @@ type ExtractStatusCode<T extends RouteConfigStatusCode> = T extends keyof Status
type DefinedStatusCodes<R extends RouteConfig> = keyof R['responses'] & RouteConfigStatusCode
export type RouteConfigToTypedResponse<R extends RouteConfig> =
| {
[Status in DefinedStatusCodes<R>]: undefined extends R['responses'][Status]['content']
? TypedResponse<{}, ExtractStatusCode<Status>, string>
: ReturnJsonOrTextOrResponse<
keyof R['responses'][Status]['content'],
ExtractContent<R['responses'][Status]['content']>,
Status
>
[Status in DefinedStatusCodes<R>]: R['responses'][Status] extends { content: infer Content }
? undefined extends Content
? never
: ReturnJsonOrTextOrResponse<
keyof R['responses'][Status]['content'],
ExtractContent<R['responses'][Status]['content']>,
Status
>
: TypedResponse<{}, ExtractStatusCode<Status>, string>
}[DefinedStatusCodes<R>]
| ('default' extends keyof R['responses']
? undefined extends R['responses']['default']['content']
? TypedResponse<{}, Exclude<StatusCode, ExtractStatusCode<DefinedStatusCodes<R>>>, string>
: ReturnJsonOrTextOrResponse<
keyof R['responses']['default']['content'],
ExtractContent<R['responses']['default']['content']>,
Exclude<StatusCode, ExtractStatusCode<DefinedStatusCodes<R>>>
>
? R['responses']['default'] extends { content: infer Content }
? undefined extends Content
? never
: ReturnJsonOrTextOrResponse<
keyof Content,
ExtractContent<Content>,
Exclude<StatusCode, ExtractStatusCode<DefinedStatusCodes<R>>>
>
: TypedResponse<{}, Exclude<StatusCode, ExtractStatusCode<DefinedStatusCodes<R>>>, string>
: never)
export type Hook<T, E extends Env, P extends string, R> = (