@yeepay/client-utils 2.3.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)
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)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yeepay/client-utils",
3
- "version": "2.3.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",