diff --git a/.changepacks/changepack_log_p7naE2C6FFGDsKHtw0qGs.json b/.changepacks/changepack_log_p7naE2C6FFGDsKHtw0qGs.json new file mode 100644 index 0000000..2db9bc5 --- /dev/null +++ b/.changepacks/changepack_log_p7naE2C6FFGDsKHtw0qGs.json @@ -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"} \ No newline at end of file diff --git a/packages/fetch/src/api.ts b/packages/fetch/src/api.ts index 5719940..16af265 100644 --- a/packages/fetch/src/api.ts +++ b/packages/fetch/src/api.ts @@ -29,11 +29,15 @@ export type DevupApiResponse = | { data: T error?: undefined + isOk: true + isError: false response: Response } | { data?: undefined error: E + isOk: false + isError: true response: Response } @@ -289,6 +293,7 @@ export class DevupApi> { > let response = ret.response + const hasError = !ret.response.ok let error: unknown = ret.error for (const middleware of finalMiddleware) { @@ -307,15 +312,15 @@ export class DevupApi> { 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, }) } @@ -334,6 +339,8 @@ export class DevupApi> { return { data: ret.data, error: error, + isOk: !hasError, + isError: hasError, response, } as DevupApiResponse, ExtractValue> } diff --git a/packages/react-query/src/query-client.ts b/packages/react-query/src/query-client.ts index d97273d..b7a32bc 100644 --- a/packages/react-query/src/query-client.ts +++ b/packages/react-query/src/query-client.ts @@ -94,8 +94,8 @@ export class DevupQueryClient> { signal, ...(options[0] as DevupApiRequestInit), }) - .then(({ data, error }: DevupApiResponse) => { - if (error) throw error + .then(({ data, error, isError }: DevupApiResponse) => { + if (isError) throw error return data }), ...options[1], @@ -149,8 +149,8 @@ export class DevupQueryClient> { // 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) => { - if (error) throw error + .then(({ data, error, isError }: DevupApiResponse) => { + if (isError) throw error return data }), ...queryOptions, @@ -214,8 +214,8 @@ export class DevupQueryClient> { signal, ...(options[0] as DevupApiRequestInit), }) - .then(({ data, error }: DevupApiResponse) => { - if (error) throw error + .then(({ data, error, isError }: DevupApiResponse) => { + if (isError) throw error return data }), ...options[1], @@ -290,8 +290,8 @@ export class DevupQueryClient> { }, } as DevupApiRequestInit, ) - .then(({ data, error }: DevupApiResponse) => { - if (error) throw error + .then(({ data, error, isError }: DevupApiResponse) => { + if (isError) throw error return data as D }) }, @@ -366,8 +366,8 @@ export class DevupQueryClient> { signal, ...(restOptions[0] as DevupApiRequestInit), }) - .then(({ data, error }: DevupApiResponse) => { - if (error) throw error + .then(({ data, error, isError }: DevupApiResponse) => { + if (isError) throw error return data }), ...queryOptions,