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
? never
: ReturnJsonOrTextOrResponse< : ReturnJsonOrTextOrResponse<
keyof R['responses'][Status]['content'], keyof R['responses'][Status]['content'],
ExtractContent<R['responses'][Status]['content']>, ExtractContent<R['responses'][Status]['content']>,
Status 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
? never
: ReturnJsonOrTextOrResponse< : ReturnJsonOrTextOrResponse<
keyof R['responses']['default']['content'], keyof Content,
ExtractContent<R['responses']['default']['content']>, ExtractContent<Content>,
Exclude<StatusCode, ExtractStatusCode<DefinedStatusCodes<R>>> 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> = (