@@ -965,11 +965,13 @@ type ExtractResolveFromMacro<A> =
965965type ExtractOnlyResponseFromMacro < A > =
966966 IsNever < A > extends true
967967 ? { }
968- : { } extends A
969- ? { }
970- : {
971- return : MergeResponseStatus < A >
972- }
968+ : Extract < A , AnyElysiaCustomStatusResponse > extends infer A
969+ ? IsNever < A > extends true
970+ ? { }
971+ : {
972+ return : MergeResponseStatus < A >
973+ }
974+ : { }
973975
974976type MergeResponseStatus < A > = {
975977 [ status in keyof UnionToIntersect <
@@ -978,7 +980,12 @@ type MergeResponseStatus<A> = {
978980 ? { [ A in Status ] : 1 }
979981 : never
980982 // @ts -ignore A is checked in key computation
981- > ] : Extract < A , { code : status } > [ 'response' ]
983+ > ] : Extract < A , { code : status } > [ 'response' ] extends infer Value
984+ ? IsAny < Value > extends true
985+ ? // @ts -ignore status is always in Status Map
986+ InvertedStatusMap [ status ]
987+ : Value
988+ : never
982989}
983990
984991type MergeAllStatus < T > = {
@@ -990,29 +997,24 @@ type MergeAllStatus<T> = {
990997type ExtractAllResponseFromMacro < A > =
991998 IsNever < A > extends true
992999 ? { }
993- : { } extends A
994- ? { }
995- : {
996- // Merge all status to single object first
997- return : MergeResponseStatus < A > &
998- ( Exclude <
999- A ,
1000- AnyElysiaCustomStatusResponse
1001- > extends infer A
1002- ? IsAny < A > extends true
1000+ : {
1001+ // Merge all status to single object first
1002+ return : MergeResponseStatus < A > &
1003+ ( Exclude < A , AnyElysiaCustomStatusResponse > extends infer A
1004+ ? IsAny < A > extends true
1005+ ? { }
1006+ : IsNever < A > extends true
10031007 ? { }
1004- : IsNever < A > extends true
1008+ : // FunctionArrayReturnType
1009+ NonNullable < void > extends A
10051010 ? { }
1006- : // FunctionArrayReturnType
1007- NonNullable < void > extends A
1011+ : undefined extends A
10081012 ? { }
1009- : undefined extends A
1010- ? { }
1011- : {
1012- 200 : A
1013- }
1014- : { } )
1015- }
1013+ : {
1014+ 200 : A
1015+ }
1016+ : { } )
1017+ }
10161018
10171019type FlattenMacroResponse < T > = T extends object
10181020 ? '_' extends keyof T
0 commit comments