sales-frontend-api 0.0.1 → 0.0.2
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/client.cjs +420 -0
- package/dist/client.cjs.map +1 -0
- package/dist/client.d.cts +45 -0
- package/dist/client.d.ts +45 -0
- package/dist/client.js +412 -0
- package/dist/client.js.map +1 -0
- package/dist/common.cjs +207 -0
- package/dist/common.cjs.map +1 -0
- package/dist/common.d.cts +34 -0
- package/dist/common.d.ts +34 -0
- package/dist/common.js +198 -0
- package/dist/common.js.map +1 -0
- package/dist/http-client-axios-B9ZYGJ9f.d.cts +132 -0
- package/dist/http-client-axios-B9ZYGJ9f.d.ts +132 -0
- package/dist/server.cjs +752 -0
- package/dist/server.cjs.map +1 -0
- package/dist/server.d.cts +116 -0
- package/dist/server.d.ts +116 -0
- package/dist/server.js +742 -0
- package/dist/server.js.map +1 -0
- package/package.json +42 -9
- package/dist/index.cjs +0 -29
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -19
- package/dist/index.d.ts +0 -19
- package/dist/index.js +0 -22
- package/dist/index.js.map +0 -1
package/dist/client.cjs
ADDED
|
@@ -0,0 +1,420 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var axios = require('axios');
|
|
4
|
+
var salesFrontendDesignSystem = require('sales-frontend-design-system');
|
|
5
|
+
|
|
6
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
|
+
|
|
8
|
+
var axios__default = /*#__PURE__*/_interopDefault(axios);
|
|
9
|
+
|
|
10
|
+
var __defProp = Object.defineProperty;
|
|
11
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
12
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
13
|
+
|
|
14
|
+
// src/http-client/helper.ts
|
|
15
|
+
var HTTP_STATUS = {
|
|
16
|
+
BAD_REQUEST: 400,
|
|
17
|
+
UNAUTHORIZED: 401,
|
|
18
|
+
FORBIDDEN: 403,
|
|
19
|
+
NOT_FOUND: 404,
|
|
20
|
+
INTERNAL_SERVER_ERROR: 500
|
|
21
|
+
};
|
|
22
|
+
var ApiError = class extends Error {
|
|
23
|
+
constructor(error, message) {
|
|
24
|
+
super(message ?? error.message);
|
|
25
|
+
__publicField(this, "config");
|
|
26
|
+
__publicField(this, "code");
|
|
27
|
+
__publicField(this, "request");
|
|
28
|
+
__publicField(this, "response");
|
|
29
|
+
__publicField(this, "isAxiosError");
|
|
30
|
+
__publicField(this, "toJSON");
|
|
31
|
+
__publicField(this, "cause");
|
|
32
|
+
const errorStatus = error.response?.status || 0;
|
|
33
|
+
let name = "apiError";
|
|
34
|
+
switch (errorStatus) {
|
|
35
|
+
case HTTP_STATUS.BAD_REQUEST:
|
|
36
|
+
name = "apiBadRequestError";
|
|
37
|
+
break;
|
|
38
|
+
case HTTP_STATUS.UNAUTHORIZED:
|
|
39
|
+
name = "apiUnauthorizedError";
|
|
40
|
+
break;
|
|
41
|
+
case HTTP_STATUS.FORBIDDEN:
|
|
42
|
+
name = "apiForbiddenError";
|
|
43
|
+
break;
|
|
44
|
+
case HTTP_STATUS.NOT_FOUND:
|
|
45
|
+
name = "apiNotFoundError";
|
|
46
|
+
break;
|
|
47
|
+
case HTTP_STATUS.INTERNAL_SERVER_ERROR:
|
|
48
|
+
name = "apiInternalServerError";
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
this.name = name;
|
|
52
|
+
this.stack = error.stack;
|
|
53
|
+
this.config = error.config;
|
|
54
|
+
this.code = error.code;
|
|
55
|
+
this.request = error.request;
|
|
56
|
+
this.response = error.response;
|
|
57
|
+
this.isAxiosError = error.isAxiosError;
|
|
58
|
+
this.toJSON = error.toJSON;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
function logApiErrorToSentry(response) {
|
|
62
|
+
new ApiError(
|
|
63
|
+
response,
|
|
64
|
+
`Request failed:: [${response.config.method?.toUpperCase()}] url: ${response.config.url} ${response.data?.errorCode && `| errorCode: ${response.data?.errorCode} | errorMsg: ${response.data?.errorMsg}`}`
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// src/http-client/custom-error.ts
|
|
69
|
+
var CustomError = class extends Error {
|
|
70
|
+
constructor({
|
|
71
|
+
elapsedTime,
|
|
72
|
+
errorCode,
|
|
73
|
+
errorMsg,
|
|
74
|
+
returnCode,
|
|
75
|
+
returnData,
|
|
76
|
+
returnMsg,
|
|
77
|
+
error,
|
|
78
|
+
config,
|
|
79
|
+
requestData
|
|
80
|
+
}) {
|
|
81
|
+
super();
|
|
82
|
+
__publicField(this, "elapsedTime");
|
|
83
|
+
__publicField(this, "errorCode");
|
|
84
|
+
__publicField(this, "errorMsg");
|
|
85
|
+
__publicField(this, "returnCode");
|
|
86
|
+
__publicField(this, "returnData");
|
|
87
|
+
__publicField(this, "returnMsg");
|
|
88
|
+
__publicField(this, "error");
|
|
89
|
+
__publicField(this, "config");
|
|
90
|
+
__publicField(this, "requestData");
|
|
91
|
+
this.elapsedTime = elapsedTime;
|
|
92
|
+
this.errorCode = errorCode;
|
|
93
|
+
this.errorMsg = errorMsg;
|
|
94
|
+
this.returnCode = returnCode;
|
|
95
|
+
this.returnData = returnData;
|
|
96
|
+
this.returnMsg = returnMsg;
|
|
97
|
+
this.error = error;
|
|
98
|
+
this.config = config;
|
|
99
|
+
this.requestData = requestData;
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
// src/http-client/axios/error-handler.ts
|
|
104
|
+
var ErrorHandler = class {
|
|
105
|
+
constructor() {
|
|
106
|
+
__publicField(this, "localThrow");
|
|
107
|
+
/** 개별처리 + 글로벌처리 모두 사용할경우 : true , 개별처리만 사용할 경우 : false */
|
|
108
|
+
__publicField(this, "globalCheck");
|
|
109
|
+
this.globalCheck = true;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* csr용 에러 throw
|
|
113
|
+
* 에러코드에 맞는 ClientError에러 객체를 throw 및 Sentry 리포팅 영역
|
|
114
|
+
* @todo 에러 응답에 data가 없다면 , config.data(=payload) 를 에러로그로 넣는건 어떨까요?
|
|
115
|
+
*/
|
|
116
|
+
globalThrow(error, config) {
|
|
117
|
+
const { response, request, code } = error;
|
|
118
|
+
if (response) {
|
|
119
|
+
const { data, status, statusText } = response;
|
|
120
|
+
const err = new CustomError({
|
|
121
|
+
elapsedTime: "",
|
|
122
|
+
errorCode: code || "",
|
|
123
|
+
errorMsg: "",
|
|
124
|
+
requestData: config.data,
|
|
125
|
+
returnData: data,
|
|
126
|
+
returnCode: status,
|
|
127
|
+
returnMsg: statusText,
|
|
128
|
+
error,
|
|
129
|
+
config
|
|
130
|
+
});
|
|
131
|
+
if (status >= 400 && status < 500) {
|
|
132
|
+
if (status === 401) {
|
|
133
|
+
err.errorMsg = "\uC778\uC99D \uC2E4\uD328";
|
|
134
|
+
return err;
|
|
135
|
+
}
|
|
136
|
+
if (status === 403) {
|
|
137
|
+
err.errorMsg = "\uAD8C\uD55C \uC5C6\uC74C: \uC811\uADFC \uAC70\uBD80";
|
|
138
|
+
return err;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
if (status >= 500 && status < 600) {
|
|
142
|
+
err.errorMsg = `\uC11C\uBC84 \uC624\uB958 \uBC1C\uC0DD: ${status}`;
|
|
143
|
+
return err;
|
|
144
|
+
}
|
|
145
|
+
err.errorMsg = `\uC54C \uC218 \uC5C6\uB294 \uC624\uB958 \uCF54\uB4DC: ${status}`;
|
|
146
|
+
return err;
|
|
147
|
+
} else if (request) {
|
|
148
|
+
return new CustomError({
|
|
149
|
+
elapsedTime: "",
|
|
150
|
+
errorCode: code || "",
|
|
151
|
+
errorMsg: "\uC694\uCCAD\uC774 \uC774\uB8E8\uC5B4 \uC84C\uC73C\uB098 \uC751\uB2F5\uC744 \uBC1B\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.",
|
|
152
|
+
requestData: config.data,
|
|
153
|
+
returnData: "",
|
|
154
|
+
returnCode: 0,
|
|
155
|
+
returnMsg: "",
|
|
156
|
+
error,
|
|
157
|
+
config
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
setLocalHandler(func) {
|
|
162
|
+
this.localThrow = func;
|
|
163
|
+
}
|
|
164
|
+
do(error, config) {
|
|
165
|
+
const dialog = config.dialog;
|
|
166
|
+
if (!dialog) {
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
const res = this.localThrow && this.localThrow(error, config);
|
|
170
|
+
if (this.globalCheck) {
|
|
171
|
+
return res || this.globalThrow(error, config);
|
|
172
|
+
}
|
|
173
|
+
return res;
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
var CsrErrorHandler = class extends ErrorHandler {
|
|
177
|
+
constructor() {
|
|
178
|
+
super();
|
|
179
|
+
}
|
|
180
|
+
setGlobalCheck(global) {
|
|
181
|
+
this.globalCheck = !!global;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* @todo 발생한 CustomError 설정값에 따른 에러 처리 추가영역
|
|
185
|
+
* 별도의 처리가 없다면 작성할 필요없음.
|
|
186
|
+
* toast팝업을 보여주는 공통함수 확인 필요..
|
|
187
|
+
*/
|
|
188
|
+
errorHandler(e) {
|
|
189
|
+
console.log(" global error handler", e instanceof CustomError);
|
|
190
|
+
if (e instanceof CustomError && axios.isAxiosError(e.error)) {
|
|
191
|
+
const { response, request, message } = e.error;
|
|
192
|
+
if (response) {
|
|
193
|
+
const { data, status, headers } = response;
|
|
194
|
+
console.error("\uC694\uCCAD\uC774 \uC774\uB8E8\uC5B4\uC84C\uC73C\uBA70 \uC11C\uBC84\uAC00 2xx\uC758 \uBC94\uC704\uB97C \uBC97\uC5B4\uB098\uB294 \uC0C1\uD0DC \uCF54\uB4DC\uB85C \uC751\uB2F5\uD588\uC2B5\uB2C8\uB2E4.");
|
|
195
|
+
console.error("HTTP data, status, headers:::", data, status, headers);
|
|
196
|
+
logApiErrorToSentry(response);
|
|
197
|
+
} else if (request) {
|
|
198
|
+
console.error("\uC694\uCCAD\uC774 \uC774\uB8E8\uC5B4\uC84C\uC73C\uB098 \uC751\uB2F5\uC744 \uBC1B\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.");
|
|
199
|
+
console.error(request);
|
|
200
|
+
} else {
|
|
201
|
+
console.error("\uC624\uB958\uB97C \uBC1C\uC0DD\uC2DC\uD0A8 \uC694\uCCAD\uC744 \uC124\uC815\uD558\uB294 \uC911\uC5D0 \uBB38\uC81C\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.");
|
|
202
|
+
console.error("Error", message);
|
|
203
|
+
}
|
|
204
|
+
switch (e.returnCode) {
|
|
205
|
+
case 401:
|
|
206
|
+
salesFrontendDesignSystem.ModalUtils.alert("\uC778\uC99D \uC624\uB958\uC785\uB2C8\uB2E4.\n\uB2E4\uC2DC \uB85C\uADF8\uC778\uD574\uC8FC\uC138\uC694.", "\uC5D0\uB7EC globalHandler\uD14C\uC2A4\uD2B8", {
|
|
207
|
+
modalSize: "small",
|
|
208
|
+
modalId: "401Error"
|
|
209
|
+
});
|
|
210
|
+
break;
|
|
211
|
+
case 404:
|
|
212
|
+
salesFrontendDesignSystem.ModalUtils.alert("\uC798\uBABB\uB41C \uC811\uADFC\uC785\uB2C8\uB2E4.", "\uC5D0\uB7EC globalHandler\uD14C\uC2A4\uD2B8", {
|
|
213
|
+
modalSize: "small",
|
|
214
|
+
modalId: "404Error"
|
|
215
|
+
});
|
|
216
|
+
break;
|
|
217
|
+
default:
|
|
218
|
+
salesFrontendDesignSystem.ModalUtils.alert("\uC77C\uC2DC\uC801\uC778 \uC624\uB958\uC785\uB2C8\uB2E4.\n\uC7A0\uC2DC \uD6C4 \uB2E4\uC2DC \uC2DC\uB3C4\uD574\uC8FC\uC138\uC694.", "\uD398\uC774\uC9C0 \uC624\uB958", {
|
|
219
|
+
modalSize: "small",
|
|
220
|
+
modalId: "500Error"
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
var csrErrorHandler = new CsrErrorHandler();
|
|
227
|
+
|
|
228
|
+
// src/http-client/abstract-http-client.ts
|
|
229
|
+
var AbstractHttpClient = class {
|
|
230
|
+
};
|
|
231
|
+
|
|
232
|
+
// src/http-client/axios/http-client-axios.ts
|
|
233
|
+
var HttpClientAxios = class extends AbstractHttpClient {
|
|
234
|
+
constructor(config) {
|
|
235
|
+
super();
|
|
236
|
+
/**
|
|
237
|
+
* API연동 실패시, 공통 에러 핸들러
|
|
238
|
+
* extends된 런타임 동작환경에 맞는 SSR,CSR 방식으로 에러핸들링처리
|
|
239
|
+
*/
|
|
240
|
+
__publicField(this, "errorHandler");
|
|
241
|
+
/**
|
|
242
|
+
* AxiosRequestConfig 를 확장한 interface
|
|
243
|
+
* axios create시 기본설정값 및 기타 필요한 정보들을 추가 가능
|
|
244
|
+
*/
|
|
245
|
+
__publicField(this, "config");
|
|
246
|
+
/**
|
|
247
|
+
* axios의 request interceptor 동작시, 헤더에 주입될 헤더의 key,value
|
|
248
|
+
*/
|
|
249
|
+
__publicField(this, "headers");
|
|
250
|
+
/**
|
|
251
|
+
* api연동을 수행할 실제 객체(axios, fetch 등의 다른 라이브러리로 교체가능한 영역)
|
|
252
|
+
* 현재 버전에서는 axios를 사용하여 구현됨.
|
|
253
|
+
*/
|
|
254
|
+
__publicField(this, "api");
|
|
255
|
+
if (!this.headers) {
|
|
256
|
+
this.headers = {};
|
|
257
|
+
}
|
|
258
|
+
this.config = config;
|
|
259
|
+
this.errorHandler = null;
|
|
260
|
+
this.api = axios__default.default.create({
|
|
261
|
+
baseURL: "\uC804\uCCB4\uACF5\uD1B5URL\uC774 \uC788\uC73C\uBA74 \uC14B\uD305",
|
|
262
|
+
withCredentials: true,
|
|
263
|
+
...config
|
|
264
|
+
});
|
|
265
|
+
this.api.interceptors.request.use(async (config2) => {
|
|
266
|
+
const headerEntries = Object.entries(this.headers);
|
|
267
|
+
headerEntries.forEach(([key, value]) => {
|
|
268
|
+
config2.headers.set(key, value);
|
|
269
|
+
});
|
|
270
|
+
return config2;
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
async put(url, data, config) {
|
|
274
|
+
try {
|
|
275
|
+
const res = await this.api.put(url, data, config);
|
|
276
|
+
return res;
|
|
277
|
+
} catch (e) {
|
|
278
|
+
throw this.errorHandler && this.errorHandler(e);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
async get(url, config) {
|
|
282
|
+
try {
|
|
283
|
+
const res = await this.api.get(url, config);
|
|
284
|
+
return res;
|
|
285
|
+
} catch (e) {
|
|
286
|
+
throw this.errorHandler && this.errorHandler(e);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
async delete(url, config) {
|
|
290
|
+
try {
|
|
291
|
+
const res = await this.api.delete(url, config);
|
|
292
|
+
return res;
|
|
293
|
+
} catch (e) {
|
|
294
|
+
throw this.errorHandler && this.errorHandler(e);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
async post(url, data, config) {
|
|
298
|
+
try {
|
|
299
|
+
const res = await this.api.post(url, data, config);
|
|
300
|
+
return res;
|
|
301
|
+
} catch (e) {
|
|
302
|
+
throw this.errorHandler && this.errorHandler(e);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
setHeader(key, value) {
|
|
306
|
+
this.headers[key] = value;
|
|
307
|
+
}
|
|
308
|
+
};
|
|
309
|
+
|
|
310
|
+
// src/http-client/axios/csr-http-client-axios.ts
|
|
311
|
+
var isRefreshed = true;
|
|
312
|
+
var axiosQueue = [];
|
|
313
|
+
var initConfig = {
|
|
314
|
+
baseURL: "",
|
|
315
|
+
dialog: true
|
|
316
|
+
};
|
|
317
|
+
var CsrHttpClientAxios = class extends HttpClientAxios {
|
|
318
|
+
constructor(config) {
|
|
319
|
+
super({
|
|
320
|
+
...initConfig,
|
|
321
|
+
...config
|
|
322
|
+
});
|
|
323
|
+
this.errorHandler = csrErrorHandler.errorHandler;
|
|
324
|
+
this.api.interceptors.request.use(
|
|
325
|
+
async (config2) => {
|
|
326
|
+
const authClient = new AuthClient();
|
|
327
|
+
const accessToken = await authClient.getAT();
|
|
328
|
+
if (accessToken) {
|
|
329
|
+
config2.headers.Authorization = `Bearer ${accessToken}`;
|
|
330
|
+
}
|
|
331
|
+
if (!isRefreshed) {
|
|
332
|
+
return new Promise((resolve, reject) => {
|
|
333
|
+
axiosQueue.push({ resolve, reject, config: config2 });
|
|
334
|
+
}).then(() => config2);
|
|
335
|
+
}
|
|
336
|
+
return config2;
|
|
337
|
+
},
|
|
338
|
+
(error) => {
|
|
339
|
+
return Promise.reject(error);
|
|
340
|
+
}
|
|
341
|
+
);
|
|
342
|
+
this.api.interceptors.response.use(
|
|
343
|
+
(response) => {
|
|
344
|
+
return response;
|
|
345
|
+
},
|
|
346
|
+
async (error) => {
|
|
347
|
+
const originalRequest = error.config;
|
|
348
|
+
if (error.response?.status === 401) {
|
|
349
|
+
isRefreshed = false;
|
|
350
|
+
const client = new AuthClient();
|
|
351
|
+
client.refreshToken().then(() => {
|
|
352
|
+
isRefreshed = true;
|
|
353
|
+
while (axiosQueue.length > 0) {
|
|
354
|
+
const p = axiosQueue.shift();
|
|
355
|
+
if (p) {
|
|
356
|
+
this.api(p.config).then((response) => p.resolve(response)).catch((err) => p.reject(err));
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
});
|
|
360
|
+
return new Promise((resolve, reject) => {
|
|
361
|
+
originalRequest && axiosQueue.push({ resolve, reject, config: originalRequest });
|
|
362
|
+
});
|
|
363
|
+
} else {
|
|
364
|
+
throw csrErrorHandler.do(error, this.config);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
);
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* API 연동 실패시, 에러핸들러 셋팅 (특정페이지에서만 동작하는 개별 핸들러)
|
|
371
|
+
* @param handler csrErrorHandler
|
|
372
|
+
*/
|
|
373
|
+
setLocalErrorHandler(handler, global = false) {
|
|
374
|
+
csrErrorHandler.setLocalHandler(handler);
|
|
375
|
+
csrErrorHandler.setGlobalCheck(global);
|
|
376
|
+
}
|
|
377
|
+
};
|
|
378
|
+
|
|
379
|
+
// src/http-client/auth/auth-client.ts
|
|
380
|
+
var AuthClient = class {
|
|
381
|
+
/**
|
|
382
|
+
* App인지 확인
|
|
383
|
+
* @returns boolean
|
|
384
|
+
*/
|
|
385
|
+
isApp() {
|
|
386
|
+
return true;
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
*
|
|
390
|
+
* @returns Promise<string | undefined>
|
|
391
|
+
*/
|
|
392
|
+
async getAT() {
|
|
393
|
+
if (this.isApp()) {
|
|
394
|
+
return "";
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* RT를 이용하여 신규 AT/RT발행
|
|
399
|
+
* 기존토큰은 무효화처리
|
|
400
|
+
* 쿠키에 저장.
|
|
401
|
+
* @returns Promise<string> 액세스토큰
|
|
402
|
+
*/
|
|
403
|
+
async refreshToken() {
|
|
404
|
+
if (this.isApp()) {
|
|
405
|
+
return await bridge.callToNative("", "", "refreshToken", {});
|
|
406
|
+
} else {
|
|
407
|
+
const csrHttpClient = new CsrHttpClientAxios({
|
|
408
|
+
baseURL: ""
|
|
409
|
+
});
|
|
410
|
+
const res = await csrHttpClient.get("/internal/api/auth/refresh");
|
|
411
|
+
return res?.data.accessToken;
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
};
|
|
415
|
+
|
|
416
|
+
exports.AuthClient = AuthClient;
|
|
417
|
+
exports.CsrHttpClientAxios = CsrHttpClientAxios;
|
|
418
|
+
exports.csrErrorHandler = csrErrorHandler;
|
|
419
|
+
//# sourceMappingURL=client.cjs.map
|
|
420
|
+
//# sourceMappingURL=client.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/http-client/helper.ts","../src/http-client/custom-error.ts","../src/http-client/axios/error-handler.ts","../src/http-client/axios/csr-error-handler.ts","../src/http-client/abstract-http-client.ts","../src/http-client/axios/http-client-axios.ts","../src/http-client/axios/csr-http-client-axios.ts","../src/http-client/auth/auth-client.ts"],"names":["isAxiosError","ModalUtils","axios","config"],"mappings":"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","file":"client.cjs","sourcesContent":["// import { BASE_PATH } from '@/constants/path';\nimport { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\n// import * as Sentry from '@hanwhalife/shared-libs/sentry';\n\n/**\n * 커스텀헤더키 모음\n * 예시> 쿠키변수명 : '헤더변수명'\n * @todo 스펙에 맞게 수정필요\n */\nexport const HEADER_KEYS = {\n /**\n * 액세스 토큰\n */\n AT: 'Authorization',\n\n /**\n * 디바이스유형(예: phone or tablet)\n */\n DEVICE_TYPE: 'X-Channel-DeviceType',\n\n /**\n * Lang Code\n */\n LANG: 'Accept-Language',\n\n /**\n * 디바이스 식별번호(웹: 브라우저 식별자)\n */\n DEVICE_ID: 'X-Channel-DeviceId',\n\n /**\n * 로그인 구분\n */\n LOGIN_TYPE: 'X-Channel-LoginType',\n\n /**\n * 스마트폰OS(웹:OS)\n */\n PLATFORM_NAME: 'X-Channel-PlatformName',\n\n /**\n * 스마트폰OS버전(웹:OS버전)\n */\n PLATFORM_VERSION: 'X-Channel-PlatformVersion',\n\n /**\n * 앱버전(웹:브라우저정보)\n */\n APP_VERSION: 'X-Channel-AppVersion',\n\n /**\n * 통신사\n */\n CARRIER_NAME: 'X-Channel-CarrierName',\n\n /**\n * 네트워크 접속 타입\n */\n NETWORK_TYPE: 'X-Channel-NetworkType',\n\n /**\n * 디바이스 모델\n */\n DEVICE_MODEL: 'X-Channel-DeviceModel',\n\n /**\n * 로그인 채널\n */\n LOGIN_CHANNEL: 'X-Channel-LoginChannel'\n};\n\n/**\n * 기존코드\n */\nconst HTTP_STATUS = {\n BAD_REQUEST: 400,\n UNAUTHORIZED: 401,\n FORBIDDEN: 403,\n NOT_FOUND: 404,\n INTERNAL_SERVER_ERROR: 500\n};\n\n/**\n * 기존코드\n */\nexport class ApiError<T = unknown> extends Error implements AxiosError<T> {\n config: InternalAxiosRequestConfig;\n code?: string;\n request?: any;\n response?: AxiosResponse<T>;\n isAxiosError: boolean;\n toJSON: () => any;\n cause?: Error;\n\n constructor(error: AxiosError<T>, message?: string) {\n super(message ?? error.message);\n\n const errorStatus = error.response?.status || 0;\n let name = 'apiError';\n\n switch (errorStatus) {\n case HTTP_STATUS.BAD_REQUEST: // 400\n name = 'apiBadRequestError';\n break;\n case HTTP_STATUS.UNAUTHORIZED: // 401\n name = 'apiUnauthorizedError';\n break;\n case HTTP_STATUS.FORBIDDEN: // 403\n name = 'apiForbiddenError';\n break;\n case HTTP_STATUS.NOT_FOUND: // 404\n name = 'apiNotFoundError';\n break;\n case HTTP_STATUS.INTERNAL_SERVER_ERROR: // 500\n name = 'apiInternalServerError';\n break;\n }\n\n this.name = name;\n this.stack = error.stack;\n\n this.config = error.config!;\n this.code = error.code;\n this.request = error.request;\n this.response = error.response;\n this.isAxiosError = error.isAxiosError;\n this.toJSON = error.toJSON;\n }\n}\n\n/**\n *\n * @param response\n * 기존코드\n */\nexport function logApiErrorToSentry(response: AxiosResponse) {\n const apiErrorInstance = new ApiError(\n response as unknown as AxiosError,\n `Request failed:: [${response.config.method?.toUpperCase()}] url: ${response.config.url} ${\n response.data?.errorCode && `| errorCode: ${response.data?.errorCode} | errorMsg: ${response.data?.errorMsg}`\n }`\n );\n\n /**\n * @todo 센트리 모듈 추가필요\n * 기존코드\n */\n // Sentry.setContext('API Response Detail', {\n // config: {\n // baseURL: response.config.baseURL,\n // data: response.config.data,\n // headers: response.config.headers,\n // method: response.config.method,\n // url: response.config.url\n // },\n // data: response.data\n // });\n\n /**\n * @todo base_path constants 추가 필요\n */\n // const apiServerName = BASE_PATH;\n\n /**\n * @todo 센트리모듈 추가필요\n * 기존코드\n */\n // Sentry.withScope((scope) => {\n // scope.setTags({\n // type: 'api',\n // channel: apiServerName === 'unknown' ? 'unknown' : apiServerName.serverName\n // });\n // scope.setFingerprint([\n // response.config.method!,\n // String(response.status),\n // response.config.url!,\n // response.data.errorCode ?? ''\n // ]);\n\n // Sentry.captureException(apiErrorInstance);\n // });\n}\n","/**\n * 디버깅시 필요한 정보들을 에러객체에 저장\n * @todo sentry로 전달할 에러내용들\n */\nexport interface errorParams {\n elapsedTime: string;\n errorCode: string;\n errorMsg: string;\n returnCode: number;\n returnData: unknown;\n returnMsg: string;\n error: unknown;\n config: unknown;\n requestData: unknown;\n}\nexport class CustomError extends Error {\n elapsedTime: string;\n errorCode: string;\n errorMsg: string;\n returnCode: number;\n returnData: unknown;\n returnMsg: string;\n error: unknown;\n config: unknown;\n requestData: unknown;\n constructor({\n elapsedTime,\n errorCode,\n errorMsg,\n returnCode,\n returnData,\n returnMsg,\n error,\n config,\n requestData\n }: errorParams) {\n super();\n this.elapsedTime = elapsedTime;\n this.errorCode = errorCode;\n this.errorMsg = errorMsg;\n this.returnCode = returnCode;\n this.returnData = returnData;\n this.returnMsg = returnMsg;\n this.error = error;\n this.config = config;\n this.requestData = requestData;\n }\n}\n","import type { AxiosError } from 'axios';\nimport type { customConfig } from './types';\nimport { CustomError } from '../custom-error';\n// import * as Sentry from '@hanwhalife/shared-libs/sentry';\n\nexport type errorHandler = (response: AxiosError, config: customConfig) => void;\nexport abstract class ErrorHandler {\n protected localThrow?: errorHandler;\n\n /** 개별처리 + 글로벌처리 모두 사용할경우 : true , 개별처리만 사용할 경우 : false */\n protected globalCheck: boolean;\n\n constructor() {\n /**\n * 에러핸들링 개별처리 + 글로벌처리 모두 사용으로 기본셋팅\n */\n this.globalCheck = true;\n }\n\n /**\n * csr용 에러 throw\n * 에러코드에 맞는 ClientError에러 객체를 throw 및 Sentry 리포팅 영역\n * @todo 에러 응답에 data가 없다면 , config.data(=payload) 를 에러로그로 넣는건 어떨까요?\n */\n private globalThrow(error: AxiosError, config: customConfig) {\n const { response, request, code } = error;\n\n /**\n * 응답이 있는 경우\n */\n if (response) {\n const { data, status, statusText } = response;\n\n const err = new CustomError({\n elapsedTime: '',\n errorCode: code || '',\n errorMsg: '',\n requestData: config.data,\n returnData: data,\n returnCode: status,\n returnMsg: statusText,\n error,\n config\n });\n\n /**\n * 클라이언트 오류\n */\n if (status >= 400 && status < 500) {\n /**\n * 401(Unauthorized)\n */\n if (status === 401) {\n err.errorMsg = '인증 실패';\n /**\n * 재발급요청...\n *\n */\n return err;\n }\n\n /**\n * 403(Forbidden)에 대한 추가 처리\n */\n if (status === 403) {\n err.errorMsg = '권한 없음: 접근 거부';\n return err;\n }\n }\n\n /**\n * 5xx서버 오류\n */\n if (status >= 500 && status < 600) {\n err.errorMsg = `서버 오류 발생: ${status}`;\n return err;\n }\n\n // 그 외 상태 코드\n err.errorMsg = `알 수 없는 오류 코드: ${status}`;\n return err;\n } else if (request) {\n /**\n * 요청은 있고, 응답이 없는 경우\n */\n return new CustomError({\n elapsedTime: '',\n errorCode: code || '',\n errorMsg: '요청이 이루어 졌으나 응답을 받지 못했습니다.',\n requestData: config.data,\n returnData: '',\n returnCode: 0,\n returnMsg: '',\n error,\n config\n });\n }\n }\n public setLocalHandler(func: errorHandler) {\n this.localThrow = func;\n }\n\n public do(error: AxiosError, config: customConfig) {\n const dialog = config.dialog;\n //dialog가 false이면 에러핸들없음.\n if (!dialog) {\n return;\n }\n\n /**\n * 개별에러처리가 정의된 경우 실행\n */\n const res = this.localThrow && this.localThrow(error, config);\n\n /**\n * globalCheck가 true이면 개별에러처리 검증후 이상 없을경우 global 처리로직 이어서 수행\n */\n if (this.globalCheck) {\n return res || this.globalThrow(error, config);\n }\n\n /**\n * global 처리는 수행하지 않고, 설정한 개별에러처리만 실행\n */\n return res;\n }\n\n /**\n * 발생한 CustomError 설정값에 따른 에러 처리 추가영역\n * 상속한 server/client 에서 에러 핸들링\n */\n public abstract errorHandler(e: CustomError): void;\n}\n","import { isAxiosError } from 'axios';\nimport { logApiErrorToSentry } from '../helper';\nimport { CustomError } from '../custom-error';\nimport { ErrorHandler } from './error-handler';\nimport { ModalUtils } from 'sales-frontend-design-system';\n// import * as Sentry from '@hanwhalife/shared-libs/sentry';\n\nclass CsrErrorHandler extends ErrorHandler {\n constructor() {\n super();\n }\n\n setGlobalCheck(global: boolean) {\n this.globalCheck = !!global;\n }\n\n /**\n * @todo 발생한 CustomError 설정값에 따른 에러 처리 추가영역\n * 별도의 처리가 없다면 작성할 필요없음.\n * toast팝업을 보여주는 공통함수 확인 필요..\n */\n errorHandler(e: CustomError) {\n console.log(' global error handler', e instanceof CustomError);\n if (e instanceof CustomError && isAxiosError(e.error)) {\n const { response, request, message } = e.error;\n if (response) {\n const { data, status, headers } = response;\n console.error('요청이 이루어졌으며 서버가 2xx의 범위를 벗어나는 상태 코드로 응답했습니다.');\n console.error('HTTP data, status, headers:::', data, status, headers);\n logApiErrorToSentry(response);\n } else if (request) {\n /**\n * 요청은 있고, 응답이 없는 경우\n */\n console.error('요청이 이루어졌으나 응답을 받지 못했습니다.');\n console.error(request);\n\n /**\n * @todo 센트리모듈추가필요\n */\n // Sentry.captureException(request);\n } else {\n /**\n * 기존 hlp-http-client쪽 참고해서 동일하게 작성한 부분인데,\n * 혹시 이건 어떤 케이스일때 발생할까요?\n * @todo 정확한 발생케이스 확인필요\n */\n console.error('오류를 발생시킨 요청을 설정하는 중에 문제가 발생했습니다.');\n console.error('Error', message);\n\n /**\n * @todo 센트리모듈추가필요\n */\n // Sentry.captureException(e.error);\n }\n\n /**\n * 에러 메세지 모달출력\n * @todo 케이스별 오류 추후 수정필요\n */\n switch (e.returnCode) {\n case 401:\n ModalUtils.alert('인증 오류입니다.\\n다시 로그인해주세요.', '에러 globalHandler테스트', {\n modalSize: 'small',\n modalId: '401Error'\n });\n break;\n case 404:\n ModalUtils.alert('잘못된 접근입니다.', '에러 globalHandler테스트', {\n modalSize: 'small',\n modalId: '404Error'\n });\n break;\n default:\n ModalUtils.alert('일시적인 오류입니다.\\n잠시 후 다시 시도해주세요.', '페이지 오류', {\n modalSize: 'small',\n modalId: '500Error'\n });\n }\n }\n }\n}\n\nexport const csrErrorHandler = new CsrErrorHandler();\n","/**\n * HttpClientFetch, HttpClientAxios 에서 공통\n */\nexport abstract class AbstractHttpClient<configType, InstanceType, errorType> {\n protected abstract config: configType;\n protected abstract headers: Record<string, string>;\n protected abstract api: InstanceType;\n protected abstract errorHandler: null | ((e: errorType) => void);\n\n abstract put<dataType>(url: string, data?: any, config?: configType): Promise<dataType | undefined>;\n abstract get<dataType>(url: string, config?: configType): Promise<dataType | undefined>;\n abstract post<dataType>(url: string, data?: any, config?: configType): Promise<dataType | undefined>;\n abstract delete<dataType>(url: string, config?: configType): Promise<dataType | undefined>;\n abstract setHeader(key: string, value: string): void;\n}\n","import axios, { AxiosRequestConfig, AxiosResponse, type AxiosInstance } from 'axios';\nimport type { customConfig } from './types';\nimport { AbstractHttpClient } from '../abstract-http-client';\n\nexport class HttpClientAxios<errorType extends Error> extends AbstractHttpClient<\n customConfig,\n AxiosInstance,\n errorType\n> {\n /**\n * API연동 실패시, 공통 에러 핸들러\n * extends된 런타임 동작환경에 맞는 SSR,CSR 방식으로 에러핸들링처리\n */\n protected errorHandler: null | ((e: errorType) => void);\n\n /**\n * AxiosRequestConfig 를 확장한 interface\n * axios create시 기본설정값 및 기타 필요한 정보들을 추가 가능\n */\n protected config: customConfig;\n\n /**\n * axios의 request interceptor 동작시, 헤더에 주입될 헤더의 key,value\n */\n protected headers!: Record<string, string>;\n\n /**\n * api연동을 수행할 실제 객체(axios, fetch 등의 다른 라이브러리로 교체가능한 영역)\n * 현재 버전에서는 axios를 사용하여 구현됨.\n */\n protected api: AxiosInstance;\n constructor(config: customConfig) {\n super();\n if (!this.headers) {\n this.headers = {};\n }\n\n this.config = config;\n this.errorHandler = null;\n\n /**\n * api수행객체 최초 생성,\n * 공통으로 적용할 설정값이 있는경우 셋팅\n * @todo baseURL process.env.BaseURL ?\n */\n this.api = axios.create({\n baseURL: '전체공통URL이 있으면 셋팅',\n withCredentials: true,\n ...config\n });\n\n /**\n * @todo 이 부분도 추후 api스펙에따라 부분 셋팅필요.\n * request 헤더,token처리 interceptor 등록\n */\n this.api.interceptors.request.use(async (config) => {\n /**\n * @todo\n * x-channel-[] 공통헤더 추가\n */\n // this.setHeader('x-channel-adfaf', '');\n // this.setHeader('x-channel-adfaf', '');\n // this.setHeader('x-channel-adfaf', '');\n\n /**\n * this.headers설정된 값을 config headers에 주입\n */\n const headerEntries = Object.entries(this.headers);\n headerEntries.forEach(([key, value]) => {\n config.headers.set(key, value);\n });\n\n return config;\n });\n }\n\n async put<T = any, R = AxiosResponse<T>, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>) {\n try {\n const res = await this.api.put<T, R, D>(url, data, config);\n return res;\n } catch (e: any) {\n throw this.errorHandler && this.errorHandler(e);\n }\n }\n\n async get<T = any, R = AxiosResponse<T>, D = any>(url: string, config?: AxiosRequestConfig<D>) {\n try {\n const res = await this.api.get<T, R, D>(url, config);\n return res;\n } catch (e: any) {\n throw this.errorHandler && this.errorHandler(e);\n }\n }\n\n async delete<T = any, R = AxiosResponse<T>, D = any>(url: string, config?: AxiosRequestConfig<D>) {\n try {\n const res = await this.api.delete<T, R, D>(url, config);\n return res;\n } catch (e: any) {\n throw this.errorHandler && this.errorHandler(e);\n }\n }\n\n async post<T = any, R = AxiosResponse<T>, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>) {\n try {\n const res = await this.api.post<T, R, D>(url, data, config);\n return res;\n } catch (e: any) {\n throw this.errorHandler && this.errorHandler(e);\n }\n }\n\n setHeader(key: string, value: string) {\n this.headers[key] = value;\n }\n}\n","import { csrErrorHandler } from './csr-error-handler';\nimport type { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\nimport type { customConfig } from './types';\nimport { HttpClientAxios } from './http-client-axios';\nimport { CustomError } from '../custom-error';\nimport { errorHandler } from './error-handler';\nimport { AuthClient } from '../auth/auth-client';\nlet isRefreshed = true;\nlet axiosQueue: {\n resolve: (value?: unknown) => void;\n reject: (reason?: unknown) => void;\n config: InternalAxiosRequestConfig;\n}[] = [];\n/**\n * @todo 추후 env. baseUrl 또는 getBaseUrl() 등으로 치환\n */\nconst initConfig: customConfig = {\n baseURL: '',\n dialog: true\n};\n\nexport class CsrHttpClientAxios extends HttpClientAxios<CustomError> {\n constructor(config?: customConfig) {\n super({\n ...initConfig,\n ...config\n });\n\n /**\n * csr global errorhandler 주입\n */\n this.errorHandler = csrErrorHandler.errorHandler;\n\n /**\n * 401에러 Queue처리 Request interceptor 등록\n */\n this.api.interceptors.request.use(\n async (config) => {\n /**\n * AT토큰 주입\n */\n const authClient = new AuthClient();\n const accessToken = await authClient.getAT();\n if (accessToken) {\n config.headers.Authorization = `Bearer ${accessToken}`;\n }\n\n /**\n * isRefreshed가 false이면(= 에러발생하여 token재발행중을 의미)\n * 새로운 요청들을 처리하지 않고,큐에 저장\n */\n if (!isRefreshed) {\n return new Promise((resolve, reject) => {\n axiosQueue.push({ resolve, reject, config });\n }).then(() => config);\n }\n\n return config;\n },\n (error) => {\n return Promise.reject(error);\n }\n );\n\n /**\n * 401에러 Queue처리 Response interceptor 등록\n */\n this.api.interceptors.response.use(\n (response: AxiosResponse) => {\n return response;\n },\n async (error: AxiosError) => {\n const originalRequest = error.config;\n\n // 401 에러가 발생한 경우 처리\n if (error.response?.status === 401) {\n isRefreshed = false;\n const client = new AuthClient();\n client.refreshToken().then(() => {\n /**\n * 토큰 갱신 성공, 플래그를 true로 설정\n */\n isRefreshed = true;\n\n /**\n * 큐에 쌓여있던 모든 요청 재시도\n */\n while (axiosQueue.length > 0) {\n const p = axiosQueue.shift(); // axiosQueue에서 첫 번째 요소를 제거하고 반환합니다.\n if (p) {\n /**\n * api 인스턴스를 통해 요청을 재시도합니다. 따라서 재요청들은 다시 인터셉터를 타게 됩니다.\n * 신규토큰을 주입받고 정상처리\n * @todo 재시도후 reject시에는 로그인페이지로 보내는 브릿지 함수를 호출하도록 처리가 필요해보임.\n */\n this.api(p.config)\n .then((response) => p.resolve(response))\n .catch((err) => p.reject(err));\n }\n }\n });\n\n return new Promise((resolve, reject) => {\n originalRequest && axiosQueue.push({ resolve, reject, config: originalRequest });\n });\n } else {\n /**\n * api 연동 에러시 처리영역\n */\n throw csrErrorHandler.do(error, this.config);\n }\n }\n );\n }\n\n /**\n * API 연동 실패시, 에러핸들러 셋팅 (특정페이지에서만 동작하는 개별 핸들러)\n * @param handler csrErrorHandler\n */\n setLocalErrorHandler(handler: errorHandler, global: boolean = false) {\n csrErrorHandler.setLocalHandler(handler);\n csrErrorHandler.setGlobalCheck(global);\n }\n}\n","// import { bridge } from '@/app/responsive/bridge/tmp-bridge';\nimport { CsrHttpClientAxios } from '../axios/csr-http-client-axios';\n\nexport class AuthClient {\n /**\n * App인지 확인\n * @returns boolean\n */\n isApp() {\n const userAgent = navigator.userAgent;\n /**\n * @todo utils package에서 추후 임포트\n */\n // return isUserAgentMobile(userAgent);\n return true;\n }\n\n /**\n *\n * @returns Promise<string | undefined>\n */\n async getAT(): Promise<string | undefined> {\n if (this.isApp()) {\n /**\n * @todo : 브릿지 함수 호출 스펙에 맞게 수정필요\n */\n // return await bridge.callToNative('', '', 'getAT', {});\n return '';\n } else {\n /**\n * pc인 경우는, middleware.ts 에서 요청헤더에 주입\n */\n }\n }\n\n /**\n * RT를 이용하여 신규 AT/RT발행\n * 기존토큰은 무효화처리\n * 쿠키에 저장.\n * @returns Promise<string> 액세스토큰\n */\n async refreshToken(): Promise<string> {\n if (this.isApp()) {\n /**\n * @todo : 브릿지 함수 호출 스펙에 맞게 수정필요\n */\n // @ts-ignore\n return await bridge.callToNative('', '', 'refreshToken', {});\n } else {\n /**\n * @todo : 내부api호출\n */\n const csrHttpClient = new CsrHttpClientAxios({\n baseURL: ''\n });\n const res = await csrHttpClient.get('/internal/api/auth/refresh');\n return res?.data.accessToken;\n }\n }\n}\n//\n"]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { E as ErrorHandler, C as CustomError, H as HttpClientAxios, c as customConfig, e as errorHandler } from './http-client-axios-B9ZYGJ9f.cjs';
|
|
2
|
+
import 'axios';
|
|
3
|
+
|
|
4
|
+
declare class AuthClient {
|
|
5
|
+
/**
|
|
6
|
+
* App인지 확인
|
|
7
|
+
* @returns boolean
|
|
8
|
+
*/
|
|
9
|
+
isApp(): boolean;
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
* @returns Promise<string | undefined>
|
|
13
|
+
*/
|
|
14
|
+
getAT(): Promise<string | undefined>;
|
|
15
|
+
/**
|
|
16
|
+
* RT를 이용하여 신규 AT/RT발행
|
|
17
|
+
* 기존토큰은 무효화처리
|
|
18
|
+
* 쿠키에 저장.
|
|
19
|
+
* @returns Promise<string> 액세스토큰
|
|
20
|
+
*/
|
|
21
|
+
refreshToken(): Promise<string>;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
declare class CsrErrorHandler extends ErrorHandler {
|
|
25
|
+
constructor();
|
|
26
|
+
setGlobalCheck(global: boolean): void;
|
|
27
|
+
/**
|
|
28
|
+
* @todo 발생한 CustomError 설정값에 따른 에러 처리 추가영역
|
|
29
|
+
* 별도의 처리가 없다면 작성할 필요없음.
|
|
30
|
+
* toast팝업을 보여주는 공통함수 확인 필요..
|
|
31
|
+
*/
|
|
32
|
+
errorHandler(e: CustomError): void;
|
|
33
|
+
}
|
|
34
|
+
declare const csrErrorHandler: CsrErrorHandler;
|
|
35
|
+
|
|
36
|
+
declare class CsrHttpClientAxios extends HttpClientAxios<CustomError> {
|
|
37
|
+
constructor(config?: customConfig);
|
|
38
|
+
/**
|
|
39
|
+
* API 연동 실패시, 에러핸들러 셋팅 (특정페이지에서만 동작하는 개별 핸들러)
|
|
40
|
+
* @param handler csrErrorHandler
|
|
41
|
+
*/
|
|
42
|
+
setLocalErrorHandler(handler: errorHandler, global?: boolean): void;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export { AuthClient, CsrHttpClientAxios, csrErrorHandler };
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { E as ErrorHandler, C as CustomError, H as HttpClientAxios, c as customConfig, e as errorHandler } from './http-client-axios-B9ZYGJ9f.js';
|
|
2
|
+
import 'axios';
|
|
3
|
+
|
|
4
|
+
declare class AuthClient {
|
|
5
|
+
/**
|
|
6
|
+
* App인지 확인
|
|
7
|
+
* @returns boolean
|
|
8
|
+
*/
|
|
9
|
+
isApp(): boolean;
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
* @returns Promise<string | undefined>
|
|
13
|
+
*/
|
|
14
|
+
getAT(): Promise<string | undefined>;
|
|
15
|
+
/**
|
|
16
|
+
* RT를 이용하여 신규 AT/RT발행
|
|
17
|
+
* 기존토큰은 무효화처리
|
|
18
|
+
* 쿠키에 저장.
|
|
19
|
+
* @returns Promise<string> 액세스토큰
|
|
20
|
+
*/
|
|
21
|
+
refreshToken(): Promise<string>;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
declare class CsrErrorHandler extends ErrorHandler {
|
|
25
|
+
constructor();
|
|
26
|
+
setGlobalCheck(global: boolean): void;
|
|
27
|
+
/**
|
|
28
|
+
* @todo 발생한 CustomError 설정값에 따른 에러 처리 추가영역
|
|
29
|
+
* 별도의 처리가 없다면 작성할 필요없음.
|
|
30
|
+
* toast팝업을 보여주는 공통함수 확인 필요..
|
|
31
|
+
*/
|
|
32
|
+
errorHandler(e: CustomError): void;
|
|
33
|
+
}
|
|
34
|
+
declare const csrErrorHandler: CsrErrorHandler;
|
|
35
|
+
|
|
36
|
+
declare class CsrHttpClientAxios extends HttpClientAxios<CustomError> {
|
|
37
|
+
constructor(config?: customConfig);
|
|
38
|
+
/**
|
|
39
|
+
* API 연동 실패시, 에러핸들러 셋팅 (특정페이지에서만 동작하는 개별 핸들러)
|
|
40
|
+
* @param handler csrErrorHandler
|
|
41
|
+
*/
|
|
42
|
+
setLocalErrorHandler(handler: errorHandler, global?: boolean): void;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export { AuthClient, CsrHttpClientAxios, csrErrorHandler };
|