@@ -20,6 +20,7 @@ describe("generator", () => {
2020 SuccessStatusCode,
2121 ErrorStatusCode,
2222 InferResponseByStatus,
23+ TypedSuccessResponse,
2324 } from "./api.client.ts";
2425 import { errorStatusCodes, TypedResponseError } from "./api.client.ts";
2526
@@ -75,6 +76,11 @@ describe("generator", () => {
7576
7677 type MaybeOptionalArg<T> = RequiredKeys<T> extends never ? [config?: T] : [config: T];
7778
79+ type InferResponseData<TEndpoint, TStatusCode> =
80+ TypedSuccessResponse<any, any, any> extends InferResponseByStatus<TEndpoint, TStatusCode>
81+ ? Extract<InferResponseByStatus<TEndpoint, TStatusCode>, { data: {} }>["data"]
82+ : Extract<InferResponseByStatus<TEndpoint, TStatusCode>["data"], {}>;
83+
7884 // </ApiClientTypes>
7985
8086 // <ApiClient>
@@ -101,7 +107,7 @@ describe("generator", () => {
101107 withResponse: false as const,
102108 };
103109 const res = await this.client.put(path, requestParams as never);
104- return res as Extract<InferResponseByStatus< TEndpoint, SuccessStatusCode>, { data: {} }>["data"] ;
110+ return res as InferResponseData< TEndpoint, SuccessStatusCode>;
105111 },
106112 queryKey: queryKey,
107113 }),
@@ -131,7 +137,7 @@ describe("generator", () => {
131137 withResponse: false as const,
132138 };
133139 const res = await this.client.post(path, requestParams as never);
134- return res as Extract<InferResponseByStatus< TEndpoint, SuccessStatusCode>, { data: {} }>["data"] ;
140+ return res as InferResponseData< TEndpoint, SuccessStatusCode>;
135141 },
136142 queryKey: queryKey,
137143 }),
@@ -161,7 +167,7 @@ describe("generator", () => {
161167 withResponse: false as const,
162168 };
163169 const res = await this.client.get(path, requestParams as never);
164- return res as Extract<InferResponseByStatus< TEndpoint, SuccessStatusCode>, { data: {} }>["data"] ;
170+ return res as InferResponseData< TEndpoint, SuccessStatusCode>;
165171 },
166172 queryKey: queryKey,
167173 }),
@@ -191,7 +197,7 @@ describe("generator", () => {
191197 withResponse: false as const,
192198 };
193199 const res = await this.client.delete(path, requestParams as never);
194- return res as Extract<InferResponseByStatus< TEndpoint, SuccessStatusCode>, { data: {} }>["data"] ;
200+ return res as InferResponseData< TEndpoint, SuccessStatusCode>;
195201 },
196202 queryKey: queryKey,
197203 }),
@@ -213,7 +219,7 @@ describe("generator", () => {
213219 TWithResponse extends boolean = false,
214220 TSelection = TWithResponse extends true
215221 ? InferResponseByStatus<TEndpoint, SuccessStatusCode>
216- : Extract<InferResponseByStatus< TEndpoint, SuccessStatusCode>, { data: {} }>["data"] ,
222+ : InferResponseData< TEndpoint, SuccessStatusCode>,
217223 TError = TEndpoint extends { responses: infer TResponses }
218224 ? TResponses extends Record<string | number, unknown>
219225 ? InferResponseByStatus<TEndpoint, ErrorStatusCode>
@@ -227,7 +233,7 @@ describe("generator", () => {
227233 selectFn?: (
228234 res: TWithResponse extends true
229235 ? InferResponseByStatus<TEndpoint, SuccessStatusCode>
230- : Extract<InferResponseByStatus< TEndpoint, SuccessStatusCode>, { data: {} }>["data"] ,
236+ : InferResponseData< TEndpoint, SuccessStatusCode>,
231237 ) => TSelection;
232238 throwOnStatusError?: boolean;
233239 throwOnError?: boolean | ((error: TError) => boolean);
@@ -238,7 +244,7 @@ describe("generator", () => {
238244 TLocalWithResponse extends boolean = TWithResponse,
239245 TLocalSelection = TLocalWithResponse extends true
240246 ? InferResponseByStatus<TEndpoint, SuccessStatusCode>
241- : Extract<InferResponseByStatus< TEndpoint, SuccessStatusCode>, { data: {} }>["data"] ,
247+ : InferResponseData< TEndpoint, SuccessStatusCode>,
242248 >(
243249 params: (TEndpoint extends { parameters: infer Parameters } ? Parameters : {}) & {
244250 withResponse?: TLocalWithResponse;
0 commit comments