sales-frontend-api 0.0.1 → 0.0.3

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/server.js ADDED
@@ -0,0 +1,742 @@
1
+ import axios from 'axios';
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
6
+
7
+ // src/http-client/custom-error.ts
8
+ var CustomError = class extends Error {
9
+ constructor({
10
+ elapsedTime,
11
+ errorCode,
12
+ errorMsg,
13
+ returnCode,
14
+ returnData,
15
+ returnMsg,
16
+ error,
17
+ config,
18
+ requestData
19
+ }) {
20
+ super();
21
+ __publicField(this, "elapsedTime");
22
+ __publicField(this, "errorCode");
23
+ __publicField(this, "errorMsg");
24
+ __publicField(this, "returnCode");
25
+ __publicField(this, "returnData");
26
+ __publicField(this, "returnMsg");
27
+ __publicField(this, "error");
28
+ __publicField(this, "config");
29
+ __publicField(this, "requestData");
30
+ this.elapsedTime = elapsedTime;
31
+ this.errorCode = errorCode;
32
+ this.errorMsg = errorMsg;
33
+ this.returnCode = returnCode;
34
+ this.returnData = returnData;
35
+ this.returnMsg = returnMsg;
36
+ this.error = error;
37
+ this.config = config;
38
+ this.requestData = requestData;
39
+ }
40
+ };
41
+
42
+ // src/http-client/fetch/ssr-error-handler-fetch.ts
43
+ var SsrErrorHandlerFetch = class {
44
+ constructor() {
45
+ __publicField(this, "localThrow");
46
+ __publicField(this, "globalCheck");
47
+ this.globalCheck = false;
48
+ }
49
+ setGlobalCheck(global) {
50
+ this.globalCheck = !!global;
51
+ }
52
+ /**
53
+ * ssr용 에러 throw
54
+ * 에러코드에 맞는 ServerError에러 객체를 throw 및 Sentry 리포팅 영역
55
+ */
56
+ globalThrow(error, config) {
57
+ const { returnCode, requestData, returnData } = error;
58
+ if (returnData) {
59
+ if (!!returnCode && returnCode >= 400 && returnCode < 500) {
60
+ if (returnCode === 401) {
61
+ error.errorMsg = "\uC778\uC99D \uC2E4\uD328";
62
+ return error;
63
+ }
64
+ if (returnCode === 403) {
65
+ error.errorMsg = "\uAD8C\uD55C \uC5C6\uC74C: \uC811\uADFC \uAC70\uBD80";
66
+ return error;
67
+ }
68
+ }
69
+ if (!!returnCode && returnCode >= 500 && returnCode < 600) {
70
+ error.errorMsg = `\uC11C\uBC84 \uC624\uB958 \uBC1C\uC0DD: ${returnCode}`;
71
+ return error;
72
+ }
73
+ error.errorMsg = `\uC54C \uC218 \uC5C6\uB294 \uC624\uB958 \uCF54\uB4DC: ${returnCode}`;
74
+ return error;
75
+ } else if (requestData) {
76
+ error.errorMsg = "\uC694\uCCAD\uC774 \uC774\uB8E8\uC5B4 \uC84C\uC73C\uB098 \uC751\uB2F5\uC744 \uBC1B\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.";
77
+ return error;
78
+ }
79
+ }
80
+ setLocalHandler(func) {
81
+ this.localThrow = func;
82
+ }
83
+ do(error, config) {
84
+ const defaultError = new CustomError({
85
+ elapsedTime: "",
86
+ errorCode: "",
87
+ errorMsg: "default Error",
88
+ requestData: "",
89
+ returnData: "",
90
+ returnCode: 0,
91
+ returnMsg: "",
92
+ error,
93
+ config
94
+ });
95
+ const result = this.localThrow && this.localThrow(error, config);
96
+ if (this.globalCheck) {
97
+ throw result || this.globalThrow(error, config) || defaultError;
98
+ }
99
+ throw defaultError;
100
+ }
101
+ /**
102
+ * serverError 설정값에 따른 에러 처리 추가영역
103
+ */
104
+ errorHandler(e) {
105
+ if (e instanceof CustomError) {
106
+ const { returnData, requestData, message, returnCode } = e;
107
+ if (returnData) {
108
+ 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.");
109
+ console.error("HTTP data, status, headers:::", returnData, returnCode);
110
+ } else if (requestData) {
111
+ console.error("\uC694\uCCAD\uC774 \uC774\uB8E8\uC5B4\uC84C\uC73C\uB098 \uC751\uB2F5\uC744 \uBC1B\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.");
112
+ console.error(requestData);
113
+ } else {
114
+ 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.");
115
+ console.error("Error", message);
116
+ }
117
+ switch (e.returnCode) {
118
+ }
119
+ }
120
+ }
121
+ };
122
+ var ssrErrorHandlerFetch = new SsrErrorHandlerFetch();
123
+
124
+ // src/http-client/abstract-http-client.ts
125
+ var AbstractHttpClient = class {
126
+ };
127
+
128
+ // src/http-client/fetch/fetch-instance.ts
129
+ var FetchInstance = class {
130
+ constructor(config) {
131
+ /**
132
+ * fetch 인스턴스 생성시 기본설정값 및 기타 필요한 정보들을 추가 가능
133
+ */
134
+ __publicField(this, "config");
135
+ __publicField(this, "interceptors", {
136
+ request: [],
137
+ response: []
138
+ });
139
+ this.config = config;
140
+ }
141
+ async doFetch(config) {
142
+ const finalConfig = await this.handleRequest(config);
143
+ const { headers, method, fetchOptions, body } = finalConfig;
144
+ const url = config.baseURL + this.getUrlWithParams(finalConfig);
145
+ const finalHeaders = new Headers(headers);
146
+ const options = {
147
+ method,
148
+ mode: "same-origin",
149
+ //동일사이트만 허용
150
+ cache: "no-store",
151
+ //민감정보를 다룰경우: 캐시에 데이터저장없이, 항상 최신 데이터유지
152
+ credentials: "same-origin",
153
+ referrerPolicy: "same-origin",
154
+ ...fetchOptions,
155
+ headers: finalHeaders
156
+ };
157
+ if (!!body) {
158
+ if (typeof body === "object" && body !== null && !(body instanceof FormData) && !(body instanceof Blob) && !(body instanceof URLSearchParams)) {
159
+ finalHeaders.set("Content-Type", "application/json");
160
+ options.body = JSON.stringify(body);
161
+ } else {
162
+ options.body = body;
163
+ }
164
+ }
165
+ const result = new Promise((resolve, reject) => {
166
+ fetch(url, options).then(async (response) => {
167
+ const customResponse = {
168
+ response,
169
+ config: finalConfig,
170
+ data: await response.json()
171
+ };
172
+ return this.handleResponse(customResponse);
173
+ }).then((interceptedCustomResponse) => {
174
+ resolve(interceptedCustomResponse.data);
175
+ }).catch((e) => {
176
+ if (e instanceof Error) {
177
+ reject(
178
+ this.handleResponseError(
179
+ new CustomError({
180
+ elapsedTime: "",
181
+ errorCode: "",
182
+ errorMsg: e.message,
183
+ returnCode: 0,
184
+ returnData: "",
185
+ returnMsg: "",
186
+ error: e,
187
+ config: finalConfig,
188
+ requestData: finalConfig.body
189
+ })
190
+ )
191
+ );
192
+ }
193
+ });
194
+ });
195
+ return result;
196
+ }
197
+ getUrlWithParams(config) {
198
+ const { params } = config || {};
199
+ const url = config?.url || "";
200
+ if (!params) {
201
+ return url;
202
+ }
203
+ const sanitizedParams = {};
204
+ for (const [key, value] of Object.entries(params)) {
205
+ if (typeof value !== "undefined" && value !== null) {
206
+ sanitizedParams[key] = String(value);
207
+ }
208
+ }
209
+ const queryString = new URLSearchParams(sanitizedParams).toString();
210
+ const delimiter = url.indexOf("?") === -1 ? "?" : "&";
211
+ return queryString ? `${url}${delimiter}${queryString}` : url;
212
+ }
213
+ async get(url, config) {
214
+ const finalConfig = {
215
+ ...this.config,
216
+ ...config,
217
+ url,
218
+ method: "GET"
219
+ };
220
+ return this.doFetch(finalConfig);
221
+ }
222
+ async post(url, data, config) {
223
+ const finalConfig = {
224
+ ...this.config,
225
+ ...config,
226
+ url,
227
+ method: "POST",
228
+ body: data
229
+ };
230
+ return this.doFetch(finalConfig);
231
+ }
232
+ async put(url, data, config) {
233
+ const finalConfig = {
234
+ ...this.config,
235
+ ...config,
236
+ url,
237
+ method: "PUT",
238
+ body: data
239
+ };
240
+ return this.doFetch(finalConfig);
241
+ }
242
+ async delete(url, data, config) {
243
+ const finalConfig = {
244
+ ...this.config,
245
+ ...config,
246
+ url,
247
+ method: "DELETE",
248
+ body: data
249
+ };
250
+ return this.doFetch(finalConfig);
251
+ }
252
+ addRequestInterceptor(onFulfilled, onRejected = (e) => e) {
253
+ this.interceptors.request.push({
254
+ onFulfilled,
255
+ onRejected
256
+ });
257
+ }
258
+ addResponseInterceptor(onFulfilled, onRejected = (e) => e) {
259
+ this.interceptors.response.push({
260
+ onFulfilled,
261
+ onRejected
262
+ });
263
+ }
264
+ async getValue(val) {
265
+ if (typeof val.then === "function") {
266
+ return await val;
267
+ } else {
268
+ return val;
269
+ }
270
+ }
271
+ async handleRequest(config) {
272
+ let _config = config;
273
+ for (const interceptor of this.interceptors.request) {
274
+ const { onFulfilled, onRejected } = interceptor;
275
+ try {
276
+ _config = {
277
+ ...this.config,
278
+ ..._config,
279
+ ...await this.getValue(onFulfilled(_config))
280
+ };
281
+ } catch (e) {
282
+ if (e instanceof Error) {
283
+ await onRejected(
284
+ new CustomError({
285
+ elapsedTime: "",
286
+ errorCode: "",
287
+ errorMsg: e.message,
288
+ returnCode: 0,
289
+ returnData: "",
290
+ returnMsg: "",
291
+ error: e,
292
+ config: _config,
293
+ requestData: _config.body
294
+ })
295
+ );
296
+ }
297
+ }
298
+ }
299
+ return _config;
300
+ }
301
+ async handleResponse(customResponse) {
302
+ let _customResponse = customResponse;
303
+ for (const interceptor of this.interceptors.response) {
304
+ const { onFulfilled } = interceptor;
305
+ _customResponse = {
306
+ ..._customResponse,
307
+ ...await this.getValue(onFulfilled(_customResponse))
308
+ };
309
+ }
310
+ return _customResponse;
311
+ }
312
+ async handleResponseError(e) {
313
+ for (const interceptor of this.interceptors.response) {
314
+ const { onRejected } = interceptor;
315
+ await onRejected(e);
316
+ }
317
+ }
318
+ };
319
+
320
+ // src/http-client/fetch/http-client-fetch.ts
321
+ var defaultConfig = {
322
+ method: "GET"
323
+ };
324
+ var HttpClientFetch = class extends AbstractHttpClient {
325
+ constructor(config) {
326
+ super();
327
+ __publicField(this, "errorHandler");
328
+ /**
329
+ * HttpClientFetch request interceptor 동작시, 헤더에 주입될 헤더의 key,value
330
+ */
331
+ __publicField(this, "headers");
332
+ /**
333
+ * fetch 인스턴스 생성시 기본설정값 및 기타 필요한 정보들을 추가 가능
334
+ */
335
+ __publicField(this, "config");
336
+ /**
337
+ * api연동을 수행할 실제 객체(axios, fetch 등의 다른 라이브러리로 교체가능한 영역)
338
+ * 현재 버전에서는 axios를 사용하여 구현됨.
339
+ */
340
+ __publicField(this, "api");
341
+ if (!this.headers) {
342
+ this.headers = {};
343
+ }
344
+ this.config = config || defaultConfig;
345
+ this.errorHandler = null;
346
+ this.api = new FetchInstance(this.config);
347
+ this.api.addRequestInterceptor((config2) => {
348
+ const headerEntries = Object.entries(this.headers);
349
+ const headers = new Headers();
350
+ headerEntries.forEach(([key, value]) => {
351
+ headers.set(key, value);
352
+ });
353
+ config2.headers = headers;
354
+ return config2;
355
+ });
356
+ this.api.addResponseInterceptor((res) => {
357
+ return res;
358
+ });
359
+ }
360
+ async put(url, data, config) {
361
+ try {
362
+ const res = await this.api.put(url, data, config);
363
+ return res;
364
+ } catch (e) {
365
+ throw this.errorHandler && this.errorHandler(e);
366
+ }
367
+ }
368
+ async get(url, config) {
369
+ try {
370
+ const res = await this.api.get(url, config);
371
+ return res;
372
+ } catch (e) {
373
+ throw this.errorHandler && this.errorHandler(e);
374
+ }
375
+ }
376
+ async delete(url, config) {
377
+ try {
378
+ const res = await this.api.delete(url, config);
379
+ return res;
380
+ } catch (e) {
381
+ throw this.errorHandler && this.errorHandler(e);
382
+ }
383
+ }
384
+ async post(url, data, config) {
385
+ try {
386
+ const res = await this.api.post(url, data, config);
387
+ return res;
388
+ } catch (e) {
389
+ throw this.errorHandler && this.errorHandler(e);
390
+ }
391
+ }
392
+ setHeader(key, value) {
393
+ this.headers[key] = value;
394
+ }
395
+ };
396
+
397
+ // src/http-client/fetch/ssr-http-client-fetch.ts
398
+ var initConfig = {
399
+ baseURL: ""
400
+ };
401
+ var SsrHttpClientFetch = class extends HttpClientFetch {
402
+ constructor(config) {
403
+ super({
404
+ ...initConfig,
405
+ ...config
406
+ });
407
+ this.errorHandler = ssrErrorHandlerFetch.errorHandler;
408
+ this.api.addRequestInterceptor(
409
+ (config2) => {
410
+ return config2;
411
+ },
412
+ (e) => {
413
+ if (e instanceof CustomError) {
414
+ if (e) {
415
+ throw ssrErrorHandlerFetch.do(e, this.config);
416
+ }
417
+ }
418
+ }
419
+ );
420
+ this.api.addResponseInterceptor(
421
+ (res) => {
422
+ return res;
423
+ },
424
+ (e) => {
425
+ if (e instanceof CustomError) {
426
+ if (e) {
427
+ throw ssrErrorHandlerFetch.do(e, this.config);
428
+ }
429
+ }
430
+ }
431
+ );
432
+ }
433
+ /**
434
+ * API 연동 실패시, 에러핸들러 셋팅 (특정페이지에서만 동작하는 개별 핸들러)
435
+ * @param handler ssrErrorHandler
436
+ */
437
+ setLocalErrorHandler(handler) {
438
+ ssrErrorHandlerFetch.setLocalHandler(handler);
439
+ }
440
+ };
441
+ __publicField(SsrHttpClientFetch, "query");
442
+
443
+ // src/http-client/auth/auth-server.ts
444
+ var AuthServer = class {
445
+ /**
446
+ * App인지 확인
447
+ * @returns boolean
448
+ * @todo 보완필요
449
+ */
450
+ isApp(userAgent) {
451
+ return /mobile|iphone|android/i.test(userAgent);
452
+ }
453
+ /**
454
+ * RT를 이용하여 신규 AT/RT발행
455
+ * 기존토큰은 무효화처리
456
+ * 쿠키에 저장.
457
+ * @returns Promise<string> 액세스토큰
458
+ */
459
+ async refreshToken() {
460
+ const ssrHttpClient = new SsrHttpClientFetch({
461
+ baseURL: ""
462
+ });
463
+ const res = await ssrHttpClient.get("/internal/api/auth/refresh");
464
+ return res?.data.accessToken;
465
+ }
466
+ };
467
+
468
+ // src/http-client/axios/error-handler.ts
469
+ var ErrorHandler = class {
470
+ constructor() {
471
+ __publicField(this, "localThrow");
472
+ /** 개별처리 + 글로벌처리 모두 사용할경우 : true , 개별처리만 사용할 경우 : false */
473
+ __publicField(this, "globalCheck");
474
+ this.globalCheck = true;
475
+ }
476
+ /**
477
+ * csr용 에러 throw
478
+ * 에러코드에 맞는 ClientError에러 객체를 throw 및 Sentry 리포팅 영역
479
+ * @todo 에러 응답에 data가 없다면 , config.data(=payload) 를 에러로그로 넣는건 어떨까요?
480
+ */
481
+ globalThrow(error, config) {
482
+ const { response, request, code } = error;
483
+ if (response) {
484
+ const { data, status, statusText } = response;
485
+ const err = new CustomError({
486
+ elapsedTime: "",
487
+ errorCode: code || "",
488
+ errorMsg: "",
489
+ requestData: config.data,
490
+ returnData: data,
491
+ returnCode: status,
492
+ returnMsg: statusText,
493
+ error,
494
+ config
495
+ });
496
+ if (status >= 400 && status < 500) {
497
+ if (status === 401) {
498
+ err.errorMsg = "\uC778\uC99D \uC2E4\uD328";
499
+ return err;
500
+ }
501
+ if (status === 403) {
502
+ err.errorMsg = "\uAD8C\uD55C \uC5C6\uC74C: \uC811\uADFC \uAC70\uBD80";
503
+ return err;
504
+ }
505
+ }
506
+ if (status >= 500 && status < 600) {
507
+ err.errorMsg = `\uC11C\uBC84 \uC624\uB958 \uBC1C\uC0DD: ${status}`;
508
+ return err;
509
+ }
510
+ err.errorMsg = `\uC54C \uC218 \uC5C6\uB294 \uC624\uB958 \uCF54\uB4DC: ${status}`;
511
+ return err;
512
+ } else if (request) {
513
+ return new CustomError({
514
+ elapsedTime: "",
515
+ errorCode: code || "",
516
+ errorMsg: "\uC694\uCCAD\uC774 \uC774\uB8E8\uC5B4 \uC84C\uC73C\uB098 \uC751\uB2F5\uC744 \uBC1B\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.",
517
+ requestData: config.data,
518
+ returnData: "",
519
+ returnCode: 0,
520
+ returnMsg: "",
521
+ error,
522
+ config
523
+ });
524
+ }
525
+ }
526
+ setLocalHandler(func) {
527
+ this.localThrow = func;
528
+ }
529
+ do(error, config) {
530
+ const dialog = config.dialog;
531
+ if (!dialog) {
532
+ return;
533
+ }
534
+ const res = this.localThrow && this.localThrow(error, config);
535
+ if (this.globalCheck) {
536
+ return res || this.globalThrow(error, config);
537
+ }
538
+ return res;
539
+ }
540
+ };
541
+
542
+ // src/http-client/helper.ts
543
+ var HTTP_STATUS = {
544
+ BAD_REQUEST: 400,
545
+ UNAUTHORIZED: 401,
546
+ FORBIDDEN: 403,
547
+ NOT_FOUND: 404,
548
+ INTERNAL_SERVER_ERROR: 500
549
+ };
550
+ var ApiError = class extends Error {
551
+ constructor(error, message) {
552
+ super(message ?? error.message);
553
+ __publicField(this, "config");
554
+ __publicField(this, "code");
555
+ __publicField(this, "request");
556
+ __publicField(this, "response");
557
+ __publicField(this, "isAxiosError");
558
+ __publicField(this, "toJSON");
559
+ __publicField(this, "cause");
560
+ const errorStatus = error.response?.status || 0;
561
+ let name = "apiError";
562
+ switch (errorStatus) {
563
+ case HTTP_STATUS.BAD_REQUEST:
564
+ name = "apiBadRequestError";
565
+ break;
566
+ case HTTP_STATUS.UNAUTHORIZED:
567
+ name = "apiUnauthorizedError";
568
+ break;
569
+ case HTTP_STATUS.FORBIDDEN:
570
+ name = "apiForbiddenError";
571
+ break;
572
+ case HTTP_STATUS.NOT_FOUND:
573
+ name = "apiNotFoundError";
574
+ break;
575
+ case HTTP_STATUS.INTERNAL_SERVER_ERROR:
576
+ name = "apiInternalServerError";
577
+ break;
578
+ }
579
+ this.name = name;
580
+ this.stack = error.stack;
581
+ this.config = error.config;
582
+ this.code = error.code;
583
+ this.request = error.request;
584
+ this.response = error.response;
585
+ this.isAxiosError = error.isAxiosError;
586
+ this.toJSON = error.toJSON;
587
+ }
588
+ };
589
+ function logApiErrorToSentry(response) {
590
+ new ApiError(
591
+ response,
592
+ `Request failed:: [${response.config.method?.toUpperCase()}] url: ${response.config.url} ${response.data?.errorCode && `| errorCode: ${response.data?.errorCode} | errorMsg: ${response.data?.errorMsg}`}`
593
+ );
594
+ }
595
+
596
+ // src/http-client/axios/ssr-error-handler.ts
597
+ var SsrErrorHandler = class extends ErrorHandler {
598
+ constructor() {
599
+ super();
600
+ }
601
+ setGlobalCheck(global) {
602
+ this.globalCheck = !!global;
603
+ }
604
+ /**
605
+ * throw된 serverError 설정값에 따른 에러 처리 추가영역
606
+ * 별도의 처리가 없다면 작성할 필요없음.
607
+ */
608
+ errorHandler(e) {
609
+ if (e instanceof CustomError) {
610
+ const { response, request, message } = e.error;
611
+ if (response) {
612
+ const { data, status, headers } = response;
613
+ 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.");
614
+ console.error("HTTP data, status, headers:::", data, status, headers);
615
+ logApiErrorToSentry(response);
616
+ } else if (request) {
617
+ console.error("\uC694\uCCAD\uC774 \uC774\uB8E8\uC5B4\uC84C\uC73C\uB098 \uC751\uB2F5\uC744 \uBC1B\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.");
618
+ console.error(request);
619
+ } else {
620
+ 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.");
621
+ console.error("Error", message);
622
+ }
623
+ switch (e.returnCode) {
624
+ }
625
+ }
626
+ }
627
+ };
628
+ var ssrErrorHandler = new SsrErrorHandler();
629
+ var HttpClientAxios = class extends AbstractHttpClient {
630
+ constructor(config) {
631
+ super();
632
+ /**
633
+ * API연동 실패시, 공통 에러 핸들러
634
+ * extends된 런타임 동작환경에 맞는 SSR,CSR 방식으로 에러핸들링처리
635
+ */
636
+ __publicField(this, "errorHandler");
637
+ /**
638
+ * AxiosRequestConfig 를 확장한 interface
639
+ * axios create시 기본설정값 및 기타 필요한 정보들을 추가 가능
640
+ */
641
+ __publicField(this, "config");
642
+ /**
643
+ * axios의 request interceptor 동작시, 헤더에 주입될 헤더의 key,value
644
+ */
645
+ __publicField(this, "headers");
646
+ /**
647
+ * api연동을 수행할 실제 객체(axios, fetch 등의 다른 라이브러리로 교체가능한 영역)
648
+ * 현재 버전에서는 axios를 사용하여 구현됨.
649
+ */
650
+ __publicField(this, "api");
651
+ if (!this.headers) {
652
+ this.headers = {};
653
+ }
654
+ this.config = config;
655
+ this.errorHandler = null;
656
+ this.api = axios.create({
657
+ baseURL: "\uC804\uCCB4\uACF5\uD1B5URL\uC774 \uC788\uC73C\uBA74 \uC14B\uD305",
658
+ withCredentials: true,
659
+ ...config
660
+ });
661
+ this.api.interceptors.request.use(async (config2) => {
662
+ const headerEntries = Object.entries(this.headers);
663
+ headerEntries.forEach(([key, value]) => {
664
+ config2.headers.set(key, value);
665
+ });
666
+ return config2;
667
+ });
668
+ }
669
+ async put(url, data, config) {
670
+ try {
671
+ const res = await this.api.put(url, data, config);
672
+ return res;
673
+ } catch (e) {
674
+ throw this.errorHandler && this.errorHandler(e);
675
+ }
676
+ }
677
+ async get(url, config) {
678
+ try {
679
+ const res = await this.api.get(url, config);
680
+ return res;
681
+ } catch (e) {
682
+ throw this.errorHandler && this.errorHandler(e);
683
+ }
684
+ }
685
+ async delete(url, config) {
686
+ try {
687
+ const res = await this.api.delete(url, config);
688
+ return res;
689
+ } catch (e) {
690
+ throw this.errorHandler && this.errorHandler(e);
691
+ }
692
+ }
693
+ async post(url, data, config) {
694
+ try {
695
+ const res = await this.api.post(url, data, config);
696
+ return res;
697
+ } catch (e) {
698
+ throw this.errorHandler && this.errorHandler(e);
699
+ }
700
+ }
701
+ setHeader(key, value) {
702
+ this.headers[key] = value;
703
+ }
704
+ };
705
+
706
+ // src/http-client/axios/ssr-http-client-axios.ts
707
+ var initConfig2 = {
708
+ baseURL: "",
709
+ dialog: true
710
+ };
711
+ var SsrHttpClientAxios = class extends HttpClientAxios {
712
+ constructor(config) {
713
+ super({
714
+ ...initConfig2,
715
+ ...config
716
+ });
717
+ this.errorHandler = ssrErrorHandler.errorHandler;
718
+ this.api.interceptors.request.use((config2) => {
719
+ return config2;
720
+ });
721
+ this.api.interceptors.response.use(
722
+ (response) => {
723
+ return response;
724
+ },
725
+ (error) => {
726
+ throw ssrErrorHandler.do(error, this.config);
727
+ }
728
+ );
729
+ }
730
+ /**
731
+ * API 연동 실패시, 에러핸들러 셋팅 (특정페이지에서만 동작하는 개별 핸들러)
732
+ * @param handler ssrErrorHandler
733
+ */
734
+ setLocalErrorHandler(handler) {
735
+ ssrErrorHandler.setLocalHandler(handler);
736
+ }
737
+ };
738
+ __publicField(SsrHttpClientAxios, "query");
739
+
740
+ export { AuthServer, SsrHttpClientAxios, SsrHttpClientFetch, ssrErrorHandler, ssrErrorHandlerFetch };
741
+ //# sourceMappingURL=server.js.map
742
+ //# sourceMappingURL=server.js.map