From 4233c304d83a39b5a17bf6a6003a0eff1e048c57 Mon Sep 17 00:00:00 2001
From: JounQin <admin@1stg.me>
Date: Tue, 30 Jan 2024 22:02:00 +0800
Subject: [PATCH] fix: should await data, add request into error

---
 src/index.ts | 3 ++-
 src/types.ts | 7 +++----
 src/utils.ts | 4 ++--
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/index.ts b/src/index.ts
index b33660a..1a975f8 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -97,7 +97,8 @@ export const createFetchApi = (fetch = globalThis.fetch) => {
         return response
       }
       throw Object.assign(new Error(response.statusText), {
-        data: extractDataFromResponse(response, type, true),
+        data: await extractDataFromResponse(response, type, true),
+        request,
         response,
       })
     }
diff --git a/src/types.ts b/src/types.ts
index 18573d9..8fe5af8 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -1,6 +1,4 @@
-export type Nil = null | undefined | void
-
-export type Nilable<T> = Nil | T
+export type Nullable<T> = T | null | undefined
 
 export type Readonlyable<T> = Readonly<T> | T
 
@@ -22,7 +20,7 @@ export type URLSearchParamsInit = ConstructorParameters<
 >[0]
 
 export type URLSearchParamsOptions =
-  | Record<string, Nilable<Arrayable<number | string>>>
+  | Record<string, Nullable<Arrayable<number | string>>>
   | URLSearchParamsInit
   | object
 
@@ -61,5 +59,6 @@ export type ApiInterceptor = (
 
 export interface ResponseError<T = never> extends Error {
   data?: T | null
+  request: Request
   response?: Response | null
 }
diff --git a/src/utils.ts b/src/utils.ts
index 7c5967a..e970155 100644
--- a/src/utils.ts
+++ b/src/utils.ts
@@ -1,5 +1,5 @@
 import {
-  Nilable,
+  Nullable,
   ResponseType,
   URLSearchParamsOptions,
   ValueOf,
@@ -22,7 +22,7 @@ export const cleanNilValues = <T = unknown>(input: T, empty?: boolean): T => {
 
   for (const _key of Object.keys(input)) {
     const key = _key as keyof T
-    const value = input[key] as Nilable<ValueOf<T>>
+    const value = input[key] as Nullable<ValueOf<T>>
     if (empty ? !value : value == null) {
       delete input[key]
     } else {