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