Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .changepacks/changepack_log_p7naE2C6FFGDsKHtw0qGs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"changes":{"packages/fetch/package.json":"Patch","packages/react-query/package.json":"Patch"},"note":"Fix error without body issue","date":"2026-01-27T06:44:10.883719900Z"}
13 changes: 10 additions & 3 deletions packages/fetch/src/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,15 @@ export type DevupApiResponse<T, E = any> =
| {
data: T
error?: undefined
isOk: true
isError: false
response: Response
}
| {
data?: undefined
error: E
isOk: false
isError: true
response: Response
}

Expand Down Expand Up @@ -289,6 +293,7 @@ export class DevupApi<S extends ConditionalKeys<DevupApiServers>> {
>

let response = ret.response
const hasError = !ret.response.ok
let error: unknown = ret.error

for (const middleware of finalMiddleware) {
Expand All @@ -307,15 +312,15 @@ export class DevupApi<S extends ConditionalKeys<DevupApiServers>> {
if (middleware.onResponse) {
result = await middleware.onResponse({
...middlewareParams,
response: ret.response,
response,
})
}

// Call onError if there's an error and onResponse didn't return a result
if (!result && error && middleware.onError) {
if (!result && hasError && middleware.onError) {
result = await middleware.onError({
...middlewareParams,
error: ret.error,
error,
})
}

Expand All @@ -334,6 +339,8 @@ export class DevupApi<S extends ConditionalKeys<DevupApiServers>> {
return {
data: ret.data,
error: error,
isOk: !hasError,
isError: hasError,
response,
} as DevupApiResponse<ExtractValue<O, 'response'>, ExtractValue<O, 'error'>>
}
Expand Down
20 changes: 10 additions & 10 deletions packages/react-query/src/query-client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,8 @@ export class DevupQueryClient<S extends ConditionalKeys<DevupApiServers>> {
signal,
...(options[0] as DevupApiRequestInit),
})
.then(({ data, error }: DevupApiResponse<D, E>) => {
if (error) throw error
.then(({ data, error, isError }: DevupApiResponse<D, E>) => {
if (isError) throw error
return data
}),
...options[1],
Expand Down Expand Up @@ -149,8 +149,8 @@ export class DevupQueryClient<S extends ConditionalKeys<DevupApiServers>> {
// biome-ignore lint/suspicious/noExplicitAny: can't use method as a function
(this.api as any)
[mutationKey?.[0] as string](mutationKey?.[1] as T, variables)
.then(({ data, error }: DevupApiResponse<D, E>) => {
if (error) throw error
.then(({ data, error, isError }: DevupApiResponse<D, E>) => {
if (isError) throw error
return data
}),
...queryOptions,
Expand Down Expand Up @@ -214,8 +214,8 @@ export class DevupQueryClient<S extends ConditionalKeys<DevupApiServers>> {
signal,
...(options[0] as DevupApiRequestInit),
})
.then(({ data, error }: DevupApiResponse<D, E>) => {
if (error) throw error
.then(({ data, error, isError }: DevupApiResponse<D, E>) => {
if (isError) throw error
return data
}),
...options[1],
Expand Down Expand Up @@ -290,8 +290,8 @@ export class DevupQueryClient<S extends ConditionalKeys<DevupApiServers>> {
},
} as DevupApiRequestInit,
)
.then(({ data, error }: DevupApiResponse<D, E>) => {
if (error) throw error
.then(({ data, error, isError }: DevupApiResponse<D, E>) => {
if (isError) throw error
return data as D
})
},
Expand Down Expand Up @@ -366,8 +366,8 @@ export class DevupQueryClient<S extends ConditionalKeys<DevupApiServers>> {
signal,
...(restOptions[0] as DevupApiRequestInit),
})
.then(({ data, error }: DevupApiResponse<D, E>) => {
if (error) throw error
.then(({ data, error, isError }: DevupApiResponse<D, E>) => {
if (isError) throw error
return data
}),
...queryOptions,
Expand Down