@yeepay/client-utils 2.2.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -106,6 +106,24 @@ function compatibleCallback(compatibleCallbacks = []) {
106
106
  return compatibleCallbacks[0];
107
107
  }
108
108
  }
109
+ function blobToJson(blob) {
110
+ return new Promise((resolve, reject) => {
111
+ const reader = new FileReader();
112
+ reader.onload = (event) => {
113
+ try {
114
+ const jsonString = event.target?.result;
115
+ const jsonObject = JSON.parse(jsonString);
116
+ resolve(jsonObject);
117
+ } catch (error) {
118
+ reject(error);
119
+ }
120
+ };
121
+ reader.onerror = (event) => {
122
+ reject(new Error(`Resolve Blob JSON error: ${event.target?.error?.message || "unknown error"}`));
123
+ };
124
+ reader.readAsText(blob);
125
+ });
126
+ }
109
127
  function serviceFactory(options, ...callbacks) {
110
128
  const {
111
129
  baseUrl = "/",
@@ -156,6 +174,20 @@ function serviceFactory(options, ...callbacks) {
156
174
  void Promise.reject(error);
157
175
  }
158
176
  );
177
+ service.interceptors.response.use(
178
+ async (response) => {
179
+ if (response.data instanceof Blob && response.headers["content-type"]?.split(";")[0]?.trim() === "application/json") {
180
+ response.data = await blobToJson(response.data);
181
+ return response;
182
+ }
183
+ return response;
184
+ },
185
+ async (error) => {
186
+ if (error.response.data instanceof Blob && error.response.headers["content-type"]?.split(";")[0]?.trim() === "application/json")
187
+ error.response.data = await blobToJson(error.response.data);
188
+ return Promise.reject(error);
189
+ }
190
+ );
159
191
  service.interceptors.response.use(
160
192
  (response) => {
161
193
  if (response.status && response.status === 401)
@@ -190,9 +222,9 @@ function serviceFactory(options, ...callbacks) {
190
222
  else if (status === 404)
191
223
  notfoundCallback(error);
192
224
  else
193
- failCallback(error.response);
225
+ failCallback(error);
194
226
  } else {
195
- failCallback(error.response);
227
+ failCallback(error);
196
228
  }
197
229
  return Promise.reject(error);
198
230
  }
package/dist/index.mjs CHANGED
@@ -66,6 +66,24 @@ function compatibleCallback(compatibleCallbacks = []) {
66
66
  return compatibleCallbacks[0];
67
67
  }
68
68
  }
69
+ function blobToJson(blob) {
70
+ return new Promise((resolve, reject) => {
71
+ const reader = new FileReader();
72
+ reader.onload = (event) => {
73
+ try {
74
+ const jsonString = event.target?.result;
75
+ const jsonObject = JSON.parse(jsonString);
76
+ resolve(jsonObject);
77
+ } catch (error) {
78
+ reject(error);
79
+ }
80
+ };
81
+ reader.onerror = (event) => {
82
+ reject(new Error(`Resolve Blob JSON error: ${event.target?.error?.message || "unknown error"}`));
83
+ };
84
+ reader.readAsText(blob);
85
+ });
86
+ }
69
87
  function serviceFactory(options, ...callbacks) {
70
88
  const {
71
89
  baseUrl = "/",
@@ -116,6 +134,20 @@ function serviceFactory(options, ...callbacks) {
116
134
  void Promise.reject(error);
117
135
  }
118
136
  );
137
+ service.interceptors.response.use(
138
+ async (response) => {
139
+ if (response.data instanceof Blob && response.headers["content-type"]?.split(";")[0]?.trim() === "application/json") {
140
+ response.data = await blobToJson(response.data);
141
+ return response;
142
+ }
143
+ return response;
144
+ },
145
+ async (error) => {
146
+ if (error.response.data instanceof Blob && error.response.headers["content-type"]?.split(";")[0]?.trim() === "application/json")
147
+ error.response.data = await blobToJson(error.response.data);
148
+ return Promise.reject(error);
149
+ }
150
+ );
119
151
  service.interceptors.response.use(
120
152
  (response) => {
121
153
  if (response.status && response.status === 401)
@@ -150,9 +182,9 @@ function serviceFactory(options, ...callbacks) {
150
182
  else if (status === 404)
151
183
  notfoundCallback(error);
152
184
  else
153
- failCallback(error.response);
185
+ failCallback(error);
154
186
  } else {
155
- failCallback(error.response);
187
+ failCallback(error);
156
188
  }
157
189
  return Promise.reject(error);
158
190
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yeepay/client-utils",
3
- "version": "2.2.0",
3
+ "version": "2.4.0",
4
4
  "description": "shared utilities for yeepay client packages",
5
5
  "author": "Angus Yang",
6
6
  "homepage": "http://gitlab.yeepay.com/ued/client-utils#readme",