sales-frontend-api 0.0.7 → 0.0.8

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 CHANGED
@@ -11,6 +11,41 @@ var __defProp = Object.defineProperty;
11
11
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
12
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
13
13
 
14
+ // src/http-client/custom-error.ts
15
+ var CustomError = class extends Error {
16
+ constructor({
17
+ elapsedTime,
18
+ errorCode,
19
+ errorMsg,
20
+ returnCode,
21
+ returnData,
22
+ returnMsg,
23
+ error,
24
+ config,
25
+ requestData
26
+ }) {
27
+ super();
28
+ __publicField(this, "elapsedTime");
29
+ __publicField(this, "errorCode");
30
+ __publicField(this, "errorMsg");
31
+ __publicField(this, "returnCode");
32
+ __publicField(this, "returnData");
33
+ __publicField(this, "returnMsg");
34
+ __publicField(this, "error");
35
+ __publicField(this, "config");
36
+ __publicField(this, "requestData");
37
+ this.elapsedTime = elapsedTime;
38
+ this.errorCode = errorCode;
39
+ this.errorMsg = errorMsg;
40
+ this.returnCode = returnCode;
41
+ this.returnData = returnData;
42
+ this.returnMsg = returnMsg;
43
+ this.error = error;
44
+ this.config = config;
45
+ this.requestData = requestData;
46
+ }
47
+ };
48
+
14
49
  // src/http-client/helper.ts
15
50
  var HTTP_STATUS = {
16
51
  BAD_REQUEST: 400,
@@ -65,41 +100,6 @@ function logApiErrorToSentry(response) {
65
100
  );
66
101
  }
67
102
 
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
103
  // src/http-client/axios/error-handler.ts
104
104
  var ErrorHandler = class {
105
105
  constructor() {
@@ -162,7 +162,7 @@ var ErrorHandler = class {
162
162
  this.localThrow = func;
163
163
  }
164
164
  do(error, config) {
165
- const dialog = config.dialog;
165
+ const { dialog } = config;
166
166
  if (!dialog) {
167
167
  return;
168
168
  }
@@ -173,6 +173,8 @@ var ErrorHandler = class {
173
173
  return res;
174
174
  }
175
175
  };
176
+
177
+ // src/http-client/axios/csr-error-handler.ts
176
178
  var CsrErrorHandler = class extends ErrorHandler {
177
179
  constructor() {
178
180
  super();
@@ -1 +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"]}
1
+ {"version":3,"sources":["../src/http-client/custom-error.ts","../src/http-client/helper.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":["/**\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 { 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","import { CustomError } from '../custom-error';\n\nimport type { customConfig } from './types';\nimport type { AxiosError } from 'axios';\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 */\n return err;\n }\n\n /**\n * 403(Forbidden)에 대한 추가 처리\n */\n if (status === 403) {\n err.errorMsg = '권한 없음: 접근 거부';\n\n return err;\n }\n }\n\n /**\n * 5xx서버 오류\n */\n if (status >= 500 && status < 600) {\n err.errorMsg = `서버 오류 발생: ${status}`;\n\n return err;\n }\n\n // 그 외 상태 코드\n err.errorMsg = `알 수 없는 오류 코드: ${status}`;\n\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;\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 { ModalUtils } from 'sales-frontend-design-system';\n\nimport { CustomError } from '../custom-error';\nimport { logApiErrorToSentry } from '../helper';\n\nimport { ErrorHandler } from './error-handler';\n\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';\n\nimport { AbstractHttpClient } from '../abstract-http-client';\n\nimport type { customConfig } from './types';\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\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\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\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\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 { AuthClient } from '../auth/auth-client';\nimport { CustomError } from '../custom-error';\n\nimport { csrErrorHandler } from './csr-error-handler';\nimport { errorHandler } from './error-handler';\nimport { HttpClientAxios } from './http-client-axios';\n\nimport type { customConfig } from './types';\nimport type { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\n\n\nlet isRefreshed = true;\nconst 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 = 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;\n\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\n return res?.data.accessToken;\n }\n }\n}\n//\n"]}
package/dist/client.js CHANGED
@@ -5,6 +5,41 @@ var __defProp = Object.defineProperty;
5
5
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
6
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
7
7
 
8
+ // src/http-client/custom-error.ts
9
+ var CustomError = class extends Error {
10
+ constructor({
11
+ elapsedTime,
12
+ errorCode,
13
+ errorMsg,
14
+ returnCode,
15
+ returnData,
16
+ returnMsg,
17
+ error,
18
+ config,
19
+ requestData
20
+ }) {
21
+ super();
22
+ __publicField(this, "elapsedTime");
23
+ __publicField(this, "errorCode");
24
+ __publicField(this, "errorMsg");
25
+ __publicField(this, "returnCode");
26
+ __publicField(this, "returnData");
27
+ __publicField(this, "returnMsg");
28
+ __publicField(this, "error");
29
+ __publicField(this, "config");
30
+ __publicField(this, "requestData");
31
+ this.elapsedTime = elapsedTime;
32
+ this.errorCode = errorCode;
33
+ this.errorMsg = errorMsg;
34
+ this.returnCode = returnCode;
35
+ this.returnData = returnData;
36
+ this.returnMsg = returnMsg;
37
+ this.error = error;
38
+ this.config = config;
39
+ this.requestData = requestData;
40
+ }
41
+ };
42
+
8
43
  // src/http-client/helper.ts
9
44
  var HTTP_STATUS = {
10
45
  BAD_REQUEST: 400,
@@ -59,41 +94,6 @@ function logApiErrorToSentry(response) {
59
94
  );
60
95
  }
61
96
 
62
- // src/http-client/custom-error.ts
63
- var CustomError = class extends Error {
64
- constructor({
65
- elapsedTime,
66
- errorCode,
67
- errorMsg,
68
- returnCode,
69
- returnData,
70
- returnMsg,
71
- error,
72
- config,
73
- requestData
74
- }) {
75
- super();
76
- __publicField(this, "elapsedTime");
77
- __publicField(this, "errorCode");
78
- __publicField(this, "errorMsg");
79
- __publicField(this, "returnCode");
80
- __publicField(this, "returnData");
81
- __publicField(this, "returnMsg");
82
- __publicField(this, "error");
83
- __publicField(this, "config");
84
- __publicField(this, "requestData");
85
- this.elapsedTime = elapsedTime;
86
- this.errorCode = errorCode;
87
- this.errorMsg = errorMsg;
88
- this.returnCode = returnCode;
89
- this.returnData = returnData;
90
- this.returnMsg = returnMsg;
91
- this.error = error;
92
- this.config = config;
93
- this.requestData = requestData;
94
- }
95
- };
96
-
97
97
  // src/http-client/axios/error-handler.ts
98
98
  var ErrorHandler = class {
99
99
  constructor() {
@@ -156,7 +156,7 @@ var ErrorHandler = class {
156
156
  this.localThrow = func;
157
157
  }
158
158
  do(error, config) {
159
- const dialog = config.dialog;
159
+ const { dialog } = config;
160
160
  if (!dialog) {
161
161
  return;
162
162
  }
@@ -167,6 +167,8 @@ var ErrorHandler = class {
167
167
  return res;
168
168
  }
169
169
  };
170
+
171
+ // src/http-client/axios/csr-error-handler.ts
170
172
  var CsrErrorHandler = class extends ErrorHandler {
171
173
  constructor() {
172
174
  super();
@@ -1 +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":["config"],"mappings":"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","file":"client.js","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"]}
1
+ {"version":3,"sources":["../src/http-client/custom-error.ts","../src/http-client/helper.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":["config"],"mappings":"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","file":"client.js","sourcesContent":["/**\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 { 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","import { CustomError } from '../custom-error';\n\nimport type { customConfig } from './types';\nimport type { AxiosError } from 'axios';\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 */\n return err;\n }\n\n /**\n * 403(Forbidden)에 대한 추가 처리\n */\n if (status === 403) {\n err.errorMsg = '권한 없음: 접근 거부';\n\n return err;\n }\n }\n\n /**\n * 5xx서버 오류\n */\n if (status >= 500 && status < 600) {\n err.errorMsg = `서버 오류 발생: ${status}`;\n\n return err;\n }\n\n // 그 외 상태 코드\n err.errorMsg = `알 수 없는 오류 코드: ${status}`;\n\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;\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 { ModalUtils } from 'sales-frontend-design-system';\n\nimport { CustomError } from '../custom-error';\nimport { logApiErrorToSentry } from '../helper';\n\nimport { ErrorHandler } from './error-handler';\n\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';\n\nimport { AbstractHttpClient } from '../abstract-http-client';\n\nimport type { customConfig } from './types';\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\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\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\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\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 { AuthClient } from '../auth/auth-client';\nimport { CustomError } from '../custom-error';\n\nimport { csrErrorHandler } from './csr-error-handler';\nimport { errorHandler } from './error-handler';\nimport { HttpClientAxios } from './http-client-axios';\n\nimport type { customConfig } from './types';\nimport type { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\n\n\nlet isRefreshed = true;\nconst 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 = 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;\n\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\n return res?.data.accessToken;\n }\n }\n}\n//\n"]}
package/dist/common.cjs CHANGED
@@ -111,7 +111,7 @@ var ErrorHandler = class {
111
111
  this.localThrow = func;
112
112
  }
113
113
  do(error, config) {
114
- const dialog = config.dialog;
114
+ const { dialog } = config;
115
115
  if (!dialog) {
116
116
  return;
117
117
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/http-client/abstract-http-client.ts","../src/http-client/custom-error.ts","../src/http-client/axios/error-handler.ts","../src/http-client/axios/http-client-axios.ts"],"names":["axios","config"],"mappings":"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","file":"common.cjs","sourcesContent":["/**\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","/**\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 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"]}
1
+ {"version":3,"sources":["../src/http-client/abstract-http-client.ts","../src/http-client/custom-error.ts","../src/http-client/axios/error-handler.ts","../src/http-client/axios/http-client-axios.ts"],"names":["axios","config"],"mappings":"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","file":"common.cjs","sourcesContent":["/**\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","/**\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 { CustomError } from '../custom-error';\n\nimport type { customConfig } from './types';\nimport type { AxiosError } from 'axios';\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 */\n return err;\n }\n\n /**\n * 403(Forbidden)에 대한 추가 처리\n */\n if (status === 403) {\n err.errorMsg = '권한 없음: 접근 거부';\n\n return err;\n }\n }\n\n /**\n * 5xx서버 오류\n */\n if (status >= 500 && status < 600) {\n err.errorMsg = `서버 오류 발생: ${status}`;\n\n return err;\n }\n\n // 그 외 상태 코드\n err.errorMsg = `알 수 없는 오류 코드: ${status}`;\n\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;\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 axios, { AxiosRequestConfig, AxiosResponse, type AxiosInstance } from 'axios';\n\nimport { AbstractHttpClient } from '../abstract-http-client';\n\nimport type { customConfig } from './types';\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\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\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\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\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"]}