sales-frontend-api 0.0.19 → 0.0.21
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 +125 -97
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +10 -4
- package/dist/client.d.ts +10 -4
- package/dist/client.js +125 -97
- package/dist/client.js.map +1 -1
- package/dist/header.types-duHbFvO0.d.cts +11 -0
- package/dist/header.types-duHbFvO0.d.ts +11 -0
- package/dist/http-client-axios-Cz6Oo35g.d.cts +43 -0
- package/dist/http-client-axios-D4Ub9Xlb.d.ts +43 -0
- package/dist/method.cjs +130 -104
- package/dist/method.cjs.map +1 -1
- package/dist/method.d.cts +13 -11
- package/dist/method.d.ts +13 -11
- package/dist/method.js +130 -104
- package/dist/method.js.map +1 -1
- package/dist/server.cjs +4533 -489
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.cts +121 -73
- package/dist/server.d.ts +121 -73
- package/dist/server.js +4527 -484
- package/dist/server.js.map +1 -1
- package/package.json +11 -31
- package/dist/common.cjs +0 -209
- package/dist/common.cjs.map +0 -1
- package/dist/common.d.cts +0 -34
- package/dist/common.d.ts +0 -34
- package/dist/common.js +0 -200
- package/dist/common.js.map +0 -1
- package/dist/csr-http-client-axios-DleS1Lqf.d.cts +0 -14
- package/dist/csr-http-client-axios-c1CKhjCe.d.ts +0 -14
- package/dist/error-handler-DCenPKx5.d.cts +0 -133
- package/dist/error-handler-DCenPKx5.d.ts +0 -133
package/dist/method.cjs
CHANGED
|
@@ -11,102 +11,126 @@ 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/
|
|
15
|
-
var
|
|
14
|
+
// src/http-client/cookie/cookie-client.ts
|
|
15
|
+
var cookieClient = {
|
|
16
|
+
getCookie(name) {
|
|
17
|
+
if (typeof document === "undefined") {
|
|
18
|
+
return "";
|
|
19
|
+
}
|
|
20
|
+
const match = document.cookie.match(new RegExp(`(^|; *)${name}=([^;]*)`));
|
|
21
|
+
return match ? decodeURIComponent(match[2] || "") : "";
|
|
22
|
+
},
|
|
23
|
+
setCookie(name, value, options = {}) {
|
|
24
|
+
if (typeof document === "undefined") {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
let cookieString = `${name}=${encodeURIComponent(value)}`;
|
|
28
|
+
if (options.expires) {
|
|
29
|
+
let expiresDate;
|
|
30
|
+
if (typeof options.expires === "number") {
|
|
31
|
+
expiresDate = /* @__PURE__ */ new Date();
|
|
32
|
+
expiresDate.setDate(expiresDate.getDate() + options.expires);
|
|
33
|
+
} else {
|
|
34
|
+
expiresDate = options.expires;
|
|
35
|
+
}
|
|
36
|
+
cookieString += `; expires=${expiresDate.toUTCString()}`;
|
|
37
|
+
}
|
|
38
|
+
cookieString += `; path=${options.path || "/"}`;
|
|
39
|
+
if (options.domain) {
|
|
40
|
+
cookieString += `; domain=${options.domain}`;
|
|
41
|
+
}
|
|
42
|
+
if (options.secure) {
|
|
43
|
+
cookieString += "; secure";
|
|
44
|
+
}
|
|
45
|
+
document.cookie = cookieString;
|
|
46
|
+
},
|
|
47
|
+
deleteCookie(name, options = {}) {
|
|
48
|
+
cookieClient.setCookie(name, "", { ...options, expires: -1 });
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
// src/http-client/header/header.types.ts
|
|
53
|
+
var customHeaderNames = [
|
|
54
|
+
"Accept-Language",
|
|
55
|
+
"DeviceId",
|
|
56
|
+
"LoginType",
|
|
57
|
+
"PlatformName",
|
|
58
|
+
"PlatformVersion",
|
|
59
|
+
"AppVersion",
|
|
60
|
+
"DeviceModel",
|
|
61
|
+
"FormFactor",
|
|
62
|
+
"LoginChannel"
|
|
63
|
+
];
|
|
64
|
+
var AT = "AT";
|
|
65
|
+
|
|
66
|
+
// src/http-client/header/header-manager.ts
|
|
67
|
+
var HeaderManager = class {
|
|
68
|
+
constructor(getter, setter) {
|
|
69
|
+
__publicField(this, "getter");
|
|
70
|
+
__publicField(this, "setter");
|
|
71
|
+
this.getter = getter;
|
|
72
|
+
this.setter = setter;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* 커스텀 헤더를 동기적으로 설정합니다.
|
|
76
|
+
*/
|
|
77
|
+
setCustomHeaders() {
|
|
78
|
+
customHeaderNames.forEach((headerName) => {
|
|
79
|
+
const customHeaderKey = `X-Channel-${headerName}`;
|
|
80
|
+
const headerValue = this.getter(customHeaderKey);
|
|
81
|
+
if (headerValue) {
|
|
82
|
+
this.setter(customHeaderKey, headerValue);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* 인증 토큰을 동기적으로 설정합니다.
|
|
88
|
+
*/
|
|
89
|
+
setAuthToken() {
|
|
90
|
+
const token = this.getter(AT);
|
|
91
|
+
if (token) {
|
|
92
|
+
this.setter("Authorization", `Bearer ${token}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* 모든 헤더를 동기적으로 설정합니다.
|
|
97
|
+
*/
|
|
98
|
+
setAllHeaders() {
|
|
99
|
+
this.setCustomHeaders();
|
|
100
|
+
this.setAuthToken();
|
|
101
|
+
}
|
|
16
102
|
};
|
|
17
103
|
|
|
18
104
|
// src/http-client/axios/http-client-axios.ts
|
|
19
|
-
var
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
* API연동 실패시, 공통 에러 핸들러
|
|
24
|
-
* extends된 런타임 동작환경에 맞는 SSR,CSR 방식으로 에러핸들링처리
|
|
25
|
-
*/
|
|
26
|
-
__publicField(this, "errorHandler");
|
|
27
|
-
/**
|
|
28
|
-
* AxiosRequestConfig 를 확장한 interface
|
|
29
|
-
* axios create시 기본설정값 및 기타 필요한 정보들을 추가 가능
|
|
30
|
-
*/
|
|
105
|
+
var isRefreshed = true;
|
|
106
|
+
var axiosQueue = [];
|
|
107
|
+
var HttpClientAxios = class {
|
|
108
|
+
constructor(config = {}) {
|
|
31
109
|
__publicField(this, "config");
|
|
110
|
+
__publicField(this, "headerManager");
|
|
32
111
|
/**
|
|
33
112
|
* axios의 request interceptor 동작시, 헤더에 주입될 헤더의 key,value
|
|
34
113
|
*/
|
|
35
|
-
__publicField(this, "headers");
|
|
114
|
+
__publicField(this, "headers", {});
|
|
36
115
|
/**
|
|
37
116
|
* api연동을 수행할 실제 객체(axios, fetch 등의 다른 라이브러리로 교체가능한 영역)
|
|
38
117
|
* 현재 버전에서는 axios를 사용하여 구현됨.
|
|
39
118
|
*/
|
|
40
119
|
__publicField(this, "api");
|
|
41
|
-
if (!this.headers) {
|
|
42
|
-
this.headers = {};
|
|
43
|
-
}
|
|
44
120
|
this.config = config;
|
|
45
|
-
|
|
121
|
+
const getter = (key) => {
|
|
122
|
+
return cookieClient.getCookie(key);
|
|
123
|
+
};
|
|
124
|
+
const setter = (key, value) => {
|
|
125
|
+
if (config?.headers) {
|
|
126
|
+
config.headers[key] = value;
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
this.headerManager = new HeaderManager(getter, setter);
|
|
46
130
|
this.api = axios__default.default.create({
|
|
47
|
-
baseURL: "\uC804\uCCB4\uACF5\uD1B5URL\uC774 \uC788\uC73C\uBA74 \uC14B\uD305",
|
|
48
131
|
withCredentials: true,
|
|
49
132
|
...config
|
|
50
133
|
});
|
|
51
|
-
this.api.interceptors.request.use(async (config2) => {
|
|
52
|
-
const headerEntries = Object.entries(this.headers);
|
|
53
|
-
headerEntries.forEach(([key, value]) => {
|
|
54
|
-
config2.headers.set(key, value);
|
|
55
|
-
});
|
|
56
|
-
return config2;
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
async put(url, data, config) {
|
|
60
|
-
try {
|
|
61
|
-
const res = await this.api.put(url, data, config);
|
|
62
|
-
return res;
|
|
63
|
-
} catch (e) {
|
|
64
|
-
throw this.errorHandler && this.errorHandler(e);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
async get(url, config) {
|
|
68
|
-
try {
|
|
69
|
-
const res = await this.api.get(url, config);
|
|
70
|
-
return res;
|
|
71
|
-
} catch (e) {
|
|
72
|
-
throw this.errorHandler && this.errorHandler(e);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
async delete(url, config) {
|
|
76
|
-
try {
|
|
77
|
-
const res = await this.api.delete(url, config);
|
|
78
|
-
return res;
|
|
79
|
-
} catch (e) {
|
|
80
|
-
throw this.errorHandler && this.errorHandler(e);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
async post(url, data, config) {
|
|
84
|
-
try {
|
|
85
|
-
const res = await this.api.post(url, data, config);
|
|
86
|
-
return res;
|
|
87
|
-
} catch (e) {
|
|
88
|
-
throw this.errorHandler && this.errorHandler(e);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
setHeader(key, value) {
|
|
92
|
-
this.headers[key] = value;
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
// src/http-client/axios/csr-http-client-axios.ts
|
|
97
|
-
var isRefreshed = true;
|
|
98
|
-
var axiosQueue = [];
|
|
99
|
-
var initConfig = {
|
|
100
|
-
baseURL: "",
|
|
101
|
-
dialog: true
|
|
102
|
-
};
|
|
103
|
-
var CsrHttpClientAxios = class extends HttpClientAxios {
|
|
104
|
-
constructor(config) {
|
|
105
|
-
super({
|
|
106
|
-
...initConfig,
|
|
107
|
-
...config
|
|
108
|
-
});
|
|
109
|
-
__publicField(this, "csrErrorHandler", null);
|
|
110
134
|
this.api.interceptors.request.use(
|
|
111
135
|
async (config2) => {
|
|
112
136
|
const authClient = new AuthClient();
|
|
@@ -114,6 +138,11 @@ var CsrHttpClientAxios = class extends HttpClientAxios {
|
|
|
114
138
|
if (accessToken) {
|
|
115
139
|
config2.headers.Authorization = `Bearer ${accessToken}`;
|
|
116
140
|
}
|
|
141
|
+
this.headerManager.setCustomHeaders();
|
|
142
|
+
const headerEntries = Object.entries(this.headers);
|
|
143
|
+
headerEntries.forEach(([key, value]) => {
|
|
144
|
+
config2.headers.set(key, value);
|
|
145
|
+
});
|
|
117
146
|
if (!isRefreshed) {
|
|
118
147
|
return new Promise((resolve, reject) => {
|
|
119
148
|
axiosQueue.push({ resolve, reject, config: config2 });
|
|
@@ -127,6 +156,9 @@ var CsrHttpClientAxios = class extends HttpClientAxios {
|
|
|
127
156
|
);
|
|
128
157
|
this.api.interceptors.response.use(
|
|
129
158
|
(response) => {
|
|
159
|
+
if (response.data.isSuccess === false) {
|
|
160
|
+
return Promise.reject(response);
|
|
161
|
+
}
|
|
130
162
|
return response;
|
|
131
163
|
},
|
|
132
164
|
async (error) => {
|
|
@@ -142,27 +174,25 @@ var CsrHttpClientAxios = class extends HttpClientAxios {
|
|
|
142
174
|
this.api(p.config).then((response) => p.resolve(response)).catch((err) => p.reject(err));
|
|
143
175
|
}
|
|
144
176
|
}
|
|
177
|
+
}).catch((error2) => {
|
|
178
|
+
return Promise.reject(error2);
|
|
145
179
|
});
|
|
146
180
|
return new Promise((resolve, reject) => {
|
|
147
|
-
|
|
181
|
+
if (originalRequest) {
|
|
182
|
+
axiosQueue.push({ resolve, reject, config: originalRequest });
|
|
183
|
+
}
|
|
148
184
|
});
|
|
149
185
|
} else {
|
|
150
|
-
|
|
186
|
+
return Promise.reject(error);
|
|
151
187
|
}
|
|
152
188
|
}
|
|
153
189
|
);
|
|
154
190
|
}
|
|
155
|
-
|
|
156
|
-
this.
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
* API 연동 실패시, 에러핸들러 셋팅 (특정페이지에서만 동작하는 개별 핸들러)
|
|
161
|
-
* @param handler csrErrorHandler
|
|
162
|
-
*/
|
|
163
|
-
setLocalErrorHandler(handler, global = false) {
|
|
164
|
-
this.csrErrorHandler?.setLocalHandler(handler);
|
|
165
|
-
this.csrErrorHandler?.setGlobalCheck(global);
|
|
191
|
+
setHeaders(headers) {
|
|
192
|
+
this.headers = {
|
|
193
|
+
...this.headers,
|
|
194
|
+
...headers
|
|
195
|
+
};
|
|
166
196
|
}
|
|
167
197
|
};
|
|
168
198
|
|
|
@@ -194,10 +224,8 @@ var AuthClient = class {
|
|
|
194
224
|
if (this.isApp()) {
|
|
195
225
|
return await bridge.callToNative("", "", "refreshToken", {});
|
|
196
226
|
} else {
|
|
197
|
-
const
|
|
198
|
-
|
|
199
|
-
});
|
|
200
|
-
const res = await csrHttpClient.get("/internal/api/auth/refresh");
|
|
227
|
+
const httpclient = new HttpClientAxios({});
|
|
228
|
+
const res = await httpclient.api.get("/internal/api/auth/refresh");
|
|
201
229
|
return res?.data.accessToken;
|
|
202
230
|
}
|
|
203
231
|
}
|
|
@@ -206,14 +234,13 @@ var AuthClient = class {
|
|
|
206
234
|
// src/http-methods/sample/sample.service.ts
|
|
207
235
|
var getTestMethod = async ({ id, config, setupFn }) => {
|
|
208
236
|
const testAPI = `https://jsonplaceholder.typicode.com/users/${id}`;
|
|
209
|
-
const
|
|
210
|
-
|
|
211
|
-
const res = await csrHttpClient.get(testAPI, config);
|
|
237
|
+
const httpClient = new HttpClientAxios(config);
|
|
238
|
+
const res = await httpClient.api.get(testAPI);
|
|
212
239
|
return res.data;
|
|
213
240
|
};
|
|
214
241
|
|
|
215
242
|
// src/http-methods/search-modal/address-search/address-search.service.ts
|
|
216
|
-
var getAddressMethod = async ({ searchKeyword, config
|
|
243
|
+
var getAddressMethod = async ({ searchKeyword, config }) => {
|
|
217
244
|
const mockAddresses = [
|
|
218
245
|
{ zipCode: "07345", address: "\uC11C\uC6B8 \uC601\uB4F1\uD3EC\uAD6C \uAD6D\uC81C\uAE08\uC735\uB85C 10", oldAddress: " \uC11C\uC6B8\uD2B9\uBCC4\uC2DC \uC601\uB4F1\uD3EC\uAD6C \uC5EC\uC758\uB3C4\uB3D9 60" },
|
|
219
246
|
{
|
|
@@ -225,7 +252,7 @@ var getAddressMethod = async ({ searchKeyword, config, setupFn }) => {
|
|
|
225
252
|
];
|
|
226
253
|
return mockAddresses;
|
|
227
254
|
};
|
|
228
|
-
var useSearchModalAddressQuery = (params, options) => {
|
|
255
|
+
var useSearchModalAddressQuery = (params, options, config) => {
|
|
229
256
|
return reactQuery.useQuery({
|
|
230
257
|
enabled: true,
|
|
231
258
|
retry: false,
|
|
@@ -233,11 +260,10 @@ var useSearchModalAddressQuery = (params, options) => {
|
|
|
233
260
|
queryFn: () => {
|
|
234
261
|
return getAddressMethod({
|
|
235
262
|
searchKeyword: params.searchKeyword,
|
|
236
|
-
config
|
|
237
|
-
setupFn: options?.setupFn
|
|
263
|
+
config
|
|
238
264
|
});
|
|
239
265
|
},
|
|
240
|
-
...options
|
|
266
|
+
...options
|
|
241
267
|
});
|
|
242
268
|
};
|
|
243
269
|
|
package/dist/method.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../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","../src/http-methods/sample/sample.service.ts","../src/http-methods/search-modal/address-search/address-search.service.ts","../src/http-methods/search-modal/address-search/useSearchAddressQuery.ts"],"names":["axios","config","useQuery"],"mappings":"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","file":"method.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","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';\n\nimport { HttpClientAxios } from './http-client-axios';\n\nimport type { ErrorHandler, errorHandler } from './error-handler';\nimport type { CustomError } from '../custom-error';\nimport type { customConfig } from './types';\nimport type { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\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 private csrErrorHandler: ErrorHandler | null = null;\n constructor(config?: customConfig) {\n super({\n ...initConfig,\n ...config\n });\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 this.csrErrorHandler?.do(error, this.config);\n }\n }\n );\n }\n\n setCsrErrorHandler(csrErrorHandler: ErrorHandler) {\n this.csrErrorHandler = csrErrorHandler;\n /**\n * csr global errorhandler 주입\n */\n this.errorHandler = csrErrorHandler.errorHandler;\n }\n\n /**\n * API 연동 실패시, 에러핸들러 셋팅 (특정페이지에서만 동작하는 개별 핸들러)\n * @param handler csrErrorHandler\n */\n setLocalErrorHandler(handler: errorHandler, global = false) {\n this.csrErrorHandler?.setLocalHandler(handler);\n this.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","import { AxiosRequestConfig } from 'axios';\n\nimport { CsrHttpClientAxios } from '../../client';\n\nimport { TestResponse } from './sample.dto';\n\ninterface TestRequest {\n id?: number;\n config?: AxiosRequestConfig;\n setupFn?: (httpClient: CsrHttpClientAxios) => void;\n}\nexport const getTestMethod = async ({ id, config, setupFn }: TestRequest) => {\n const testAPI = `https://jsonplaceholder.typicode.com/users/${id}`;\n\n const csrHttpClient = new CsrHttpClientAxios();\n setupFn && setupFn(csrHttpClient);\n\n const res = await csrHttpClient.get<TestResponse>(testAPI, config);\n\n return res.data;\n};\n","import { AxiosRequestConfig } from 'axios';\n\nimport { CsrHttpClientAxios } from '../../../client';\n\nimport { Address } from './address-search.dto';\n\ninterface AddressSearchParam {\n searchKeyword?: string;\n config?: AxiosRequestConfig;\n setupFn?: (httpClient: CsrHttpClientAxios) => void;\n}\n\nexport const getAddressMethod = async ({ searchKeyword, config, setupFn }: AddressSearchParam) => {\n /**\n * 테스트 더미 데이터\n */\n const mockAddresses: Address[] = [\n { zipCode: '07345', address: '서울 영등포구 국제금융로 10', oldAddress: ' 서울특별시 영등포구 여의도동 60' },\n {\n zipCode: '07345',\n address: '서울 영등포구 국제금융로 8길 001223456789',\n oldAddress: ' 서울특별시 영등포구 여의도동 60'\n },\n { zipCode: '07345', address: '서울 영등포구 의사당대로 971100', oldAddress: ' 서울특별시 영등포구 여의도동 60' }\n ];\n\n return mockAddresses;\n\n // const sampleAPI = `https://jsonplaceholder.typicode.com/users/${searchKeyword}`;\n\n // const csrDomainHttpClient = new CsrHttpClientAxios();\n // if (setupFn) {\n // setupFn(csrDomainHttpClient);\n // }\n\n // const res = await csrDomainHttpClient.get<Address[]>(sampleAPI, config);\n\n // return res.data;\n};\n","import { useQuery } from '@tanstack/react-query';\n\nimport { getAddressMethod } from './address-search.service';\n\nimport type { Address } from './address-search.dto';\nimport type { Options } from '../../method.types';\n\nexport const useSearchModalAddressQuery = (params: { searchKeyword: string }, options?: Options<Address[]>) => {\n return useQuery({\n enabled: true,\n retry: false,\n queryKey: [params.searchKeyword],\n queryFn: () => {\n return getAddressMethod({\n searchKeyword: params.searchKeyword,\n config: options?.config,\n setupFn: options?.setupFn\n });\n },\n ...options?.useQuery\n });\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/http-client/cookie/cookie-client.ts","../src/http-client/header/header.types.ts","../src/http-client/header/header-manager.ts","../src/http-client/axios/http-client-axios.ts","../src/http-client/auth/auth-client.ts","../src/http-methods/sample/sample.service.ts","../src/http-methods/search-modal/address-search/address-search.service.ts","../src/http-methods/search-modal/address-search/useSearchAddressQuery.ts"],"names":["axios","config","error","useQuery"],"mappings":"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","file":"method.cjs","sourcesContent":["/**\n * 클라이언트용 쿠키 함수\n */\nexport const cookieClient = {\n getCookie(name: string): string {\n if (typeof document === 'undefined') {\n return '';\n }\n const match = document.cookie.match(new RegExp(`(^|; *)${name}=([^;]*)`));\n\n return match ? decodeURIComponent(match[2] || '') : '';\n },\n\n setCookie(\n name: string,\n value: string,\n options: {\n expires?: number | Date; // number of days\n path?: string;\n domain?: string;\n secure?: boolean;\n } = {}\n ): void {\n if (typeof document === 'undefined') {\n return;\n }\n\n let cookieString = `${name}=${encodeURIComponent(value)}`;\n\n if (options.expires) {\n let expiresDate: Date;\n if (typeof options.expires === 'number') {\n expiresDate = new Date();\n expiresDate.setDate(expiresDate.getDate() + options.expires);\n } else {\n expiresDate = options.expires;\n }\n cookieString += `; expires=${expiresDate.toUTCString()}`;\n }\n\n cookieString += `; path=${options.path || '/'}`;\n\n if (options.domain) {\n cookieString += `; domain=${options.domain}`;\n }\n\n if (options.secure) {\n cookieString += '; secure';\n }\n\n document.cookie = cookieString;\n },\n deleteCookie(name: string, options: { path?: string; domain?: string } = {}): void {\n cookieClient.setCookie(name, '', { ...options, expires: -1 });\n }\n};\n","/**\n * @see https://loop.cloud.microsoft/p/eyJ3Ijp7InUiOiJodHRwczovL2hhbndoYWxpZmVtMzY1LnNoYXJlcG9pbnQuY29tLz9uYXY9Y3owbE1rWW1aRDFpSVVVd1FXdDJSbGhSV0VWUE1tUkNYMWhUZW5KWVVFdFBSVXByYWs1b1NrSlBjRk4wYm5wNmNsWmpMVUZ5YjI1UlJWOVdSREpUV25aeWVUUTJTV2swUlZrbVpqMHdNVk5OVGtkR1JsTkJXVE0xVVZaQ1ZrRkVRa1ZaVEVoRVNUSTBXRXhVVlZoV0ptTTlKbVpzZFdsa1BURSUzRCIsInIiOmZhbHNlfSwicCI6eyJ1IjoiaHR0cHM6Ly9oYW53aGFsaWZlbTM2NS5zaGFyZXBvaW50LmNvbS9jb250ZW50c3RvcmFnZS9DU1BfYmMyNDQwMTMtZDA1NS00MzVjLWI2NzQtMWZkNzRiM2FkNzNjLyVFQiVBQyVCOCVFQyU4NCU5QyUyMCVFQiU5RCVCQyVFQyU5RCVCNCVFQiVCOCU4QyVFQiU5RiVBQyVFQiVBNiVBQy9Mb29wQXBwRGF0YS8wOS0yLiUyMEJyaWRnZSUyMFNwZWMlMjAxLmxvb3A%2FbmF2PWN6MGxNa1pqYjI1MFpXNTBjM1J2Y21GblpTVXlSa05UVUY5aVl6STBOREF4TXkxa01EVTFMVFF6TldNdFlqWTNOQzB4Wm1RM05HSXpZV1EzTTJNbVpEMWlJVVV3UVd0MlJsaFJXRVZQTW1SQ1gxaFRlbkpZVUV0UFJVcHJhazVvU2tKUGNGTjBibnA2Y2xaakxVRnliMjVSUlY5V1JESlRXblp5ZVRRMlNXazBSVmttWmowd01WTk5Ua2RHUmxGRlYxTlFOelpMUWtsTFdrWkpXVUUzU1ZkWldGTklWa0ZUSm1NOUpUSkdKbVpzZFdsa1BURSUzRCIsInIiOmZhbHNlfSwiaSI6eyJpIjoiNTdkZmVhM2QtZDA2Yi00YWRlLWIxZjEtYjE4NDA4MmNlN2VjIn19\n */\nexport const customHeaderNames = [\n 'Accept-Language',\n 'DeviceId',\n 'LoginType',\n 'PlatformName',\n 'PlatformVersion',\n 'AppVersion',\n 'DeviceModel',\n 'FormFactor',\n 'LoginChannel'\n];\n\nexport const AT = 'AT';\nexport type GetterSync = (keyName: string) => string;\nexport type SetterSync = (keyName: string, value: string) => void;\n\nexport type GetterAsync = (keyName: string) => Promise<string> | string;\nexport type SetterAsync = (keyName: string, value: string) => Promise<void> | void;\n","import { AT, customHeaderNames, GetterSync, SetterSync } from './header.types';\n\nexport class HeaderManager {\n private getter: GetterSync;\n private setter: SetterSync;\n\n constructor(getter: GetterSync, setter: SetterSync) {\n this.getter = getter;\n this.setter = setter;\n }\n\n /**\n * 커스텀 헤더를 동기적으로 설정합니다.\n */\n setCustomHeaders(): void {\n customHeaderNames.forEach((headerName) => {\n const customHeaderKey = `X-Channel-${headerName}`;\n const headerValue = this.getter(customHeaderKey);\n if (headerValue) {\n this.setter(customHeaderKey, headerValue);\n }\n });\n }\n\n /**\n * 인증 토큰을 동기적으로 설정합니다.\n */\n setAuthToken(): void {\n const token = this.getter(AT);\n if (token) {\n this.setter('Authorization', `Bearer ${token}`);\n }\n }\n\n /**\n * 모든 헤더를 동기적으로 설정합니다.\n */\n setAllHeaders(): void {\n this.setCustomHeaders();\n this.setAuthToken();\n }\n}\n","import axios from 'axios';\n\nimport { AuthClient } from '../auth/auth-client';\nimport { cookieClient } from '../cookie/cookie-client';\nimport { HeaderManager } from '../header/header-manager';\n\nimport type { AxiosQueueType } from './types';\nimport type { AxiosError, AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios';\nlet isRefreshed = true;\n\nconst axiosQueue: AxiosQueueType[] = [];\n\n/**\n * 전자청약\n * CSR용 http-client 입니다.\n * cookie , redirect , tokem 처리 방식은 CSR 환경에 맞게 구현됩니다.\n */\nexport class HttpClientAxios {\n config: AxiosRequestConfig;\n headerManager: HeaderManager;\n\n /**\n * axios의 request interceptor 동작시, 헤더에 주입될 헤더의 key,value\n */\n headers: Record<string, string> = {};\n\n /**\n * api연동을 수행할 실제 객체(axios, fetch 등의 다른 라이브러리로 교체가능한 영역)\n * 현재 버전에서는 axios를 사용하여 구현됨.\n */\n api: AxiosInstance;\n constructor(config: AxiosRequestConfig = {}) {\n this.config = config;\n\n /**\n * 헤더매니저 셋팅\n */\n const getter: HeaderManager['getter'] = (key) => {\n return cookieClient.getCookie(key);\n };\n const setter: HeaderManager['setter'] = (key, value) => {\n if (config?.headers) {\n config.headers[key] = value;\n }\n };\n this.headerManager = new HeaderManager(getter, setter);\n\n /**\n * api수행객체 최초 생성,\n * 공통으로 적용할 설정값이 있는경우 셋팅\n */\n this.api = axios.create({\n withCredentials: true,\n ...config\n });\n\n /**\n * 인터셉터 요청 처리\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 * 커스텀헤더 주입\n */\n this.headerManager.setCustomHeaders();\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 /**\n * isRefreshed가 false이면(= 에러발생하여 token재발행중을 의미)\n * 새로운 요청들을 처리하지 않고,큐에 저장\n * 401에러 Queue처리 Request interceptor 등록\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 * 인터셉터 응답 처리\n */\n this.api.interceptors.response.use(\n (response: AxiosResponse) => {\n if (response.data.isSuccess === false) {\n /**\n * 200 응답이라도 , isSuccess === false인 경우 에러로 reject\n */\n return Promise.reject(response);\n }\n\n return response;\n },\n async (error: AxiosError) => {\n const originalRequest = error.config;\n\n /**\n * 401에러 Queue처리\n */\n if (error.response?.status === 401) {\n isRefreshed = false;\n const client = new AuthClient();\n client\n .refreshToken()\n .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 .catch((error) => {\n /**\n * 토큰 재발행중 에러 발생한 경우 처리\n * @todo 로그인페이지 이동(?)\n */\n return Promise.reject(error);\n });\n\n return new Promise((resolve, reject) => {\n if (originalRequest) {\n axiosQueue.push({ resolve, reject, config: originalRequest });\n }\n });\n } else {\n return Promise.reject(error);\n }\n }\n );\n }\n\n setHeaders(headers: Record<string, string>) {\n this.headers = {\n ...this.headers,\n ...headers\n };\n }\n}\n","// import { bridge } from '@/app/responsive/bridge/tmp-bridge';\n// import { CsrHttpClientAxios } from '../axios/csr-http-client-axios';\n\nimport { HttpClientAxios } from '../axios/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 httpclient = new HttpClientAxios({});\n const res = await httpclient.api.get('/internal/api/auth/refresh');\n\n return res?.data.accessToken;\n }\n }\n}\n//\n","import { HttpClientAxios } from '../../client';\n\nimport type { TestResponse } from './sample.dto';\nimport type { AxiosRequestConfig } from 'axios';\n\ninterface TestRequest {\n id?: number;\n config?: AxiosRequestConfig;\n setupFn?: (httpClient: HttpClientAxios) => void;\n}\nexport const getTestMethod = async ({ id, config, setupFn }: TestRequest) => {\n const testAPI = `https://jsonplaceholder.typicode.com/users/${id}`;\n\n const httpClient = new HttpClientAxios(config);\n\n const res = await httpClient.api.get<TestResponse>(testAPI);\n\n return res.data;\n};\n","import { AxiosRequestConfig } from 'axios';\n\nimport { HttpClientAxios } from '../../../client';\n\nimport { Address } from './address-search.dto';\n\ninterface AddressSearchParam {\n searchKeyword?: string;\n config?: AxiosRequestConfig;\n}\n\nexport const getAddressMethod = async ({ searchKeyword, config }: AddressSearchParam) => {\n /**\n * 테스트 더미 데이터\n */\n const mockAddresses: Address[] = [\n { zipCode: '07345', address: '서울 영등포구 국제금융로 10', oldAddress: ' 서울특별시 영등포구 여의도동 60' },\n {\n zipCode: '07345',\n address: '서울 영등포구 국제금융로 8길 001223456789',\n oldAddress: ' 서울특별시 영등포구 여의도동 60'\n },\n { zipCode: '07345', address: '서울 영등포구 의사당대로 971100', oldAddress: ' 서울특별시 영등포구 여의도동 60' }\n ];\n\n return mockAddresses;\n\n // const sampleAPI = `https://jsonplaceholder.typicode.com/users/${searchKeyword}`;\n\n // const csrDomainHttpClient = new CsrHttpClientAxios();\n // if (setupFn) {\n // setupFn(csrDomainHttpClient);\n // }\n\n // const res = await csrDomainHttpClient.get<Address[]>(sampleAPI, config);\n\n // return res.data;\n};\n","import { useQuery } from '@tanstack/react-query';\n\nimport { getAddressMethod } from './address-search.service';\n\nimport type { Address } from './address-search.dto';\nimport type { CustomQueryOptions } from '../../method.types';\nimport type { AxiosRequestConfig } from 'axios';\n\nexport const useSearchModalAddressQuery = (\n params: { searchKeyword: string },\n options?: CustomQueryOptions<Address[]>,\n config?: AxiosRequestConfig\n) => {\n return useQuery({\n enabled: true,\n retry: false,\n queryKey: [params.searchKeyword],\n queryFn: () => {\n return getAddressMethod({\n searchKeyword: params.searchKeyword,\n config\n });\n },\n ...options\n });\n};\n"]}
|
package/dist/method.d.cts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as axios from 'axios';
|
|
2
2
|
import { AxiosRequestConfig, AxiosError } from 'axios';
|
|
3
|
-
import {
|
|
3
|
+
import { H as HttpClientAxios } from './http-client-axios-Cz6Oo35g.cjs';
|
|
4
4
|
import * as _tanstack_react_query from '@tanstack/react-query';
|
|
5
5
|
import { UseQueryOptions } from '@tanstack/react-query';
|
|
6
|
-
import './
|
|
6
|
+
import './header.types-duHbFvO0.cjs';
|
|
7
7
|
|
|
8
8
|
interface Geo {
|
|
9
9
|
lat: string;
|
|
@@ -35,7 +35,7 @@ interface TestResponse {
|
|
|
35
35
|
interface TestRequest {
|
|
36
36
|
id?: number;
|
|
37
37
|
config?: AxiosRequestConfig;
|
|
38
|
-
setupFn?: (httpClient:
|
|
38
|
+
setupFn?: (httpClient: HttpClientAxios) => void;
|
|
39
39
|
}
|
|
40
40
|
declare const getTestMethod: ({ id, config, setupFn }: TestRequest) => Promise<TestResponse>;
|
|
41
41
|
|
|
@@ -64,18 +64,20 @@ interface SelectedAddressProps {
|
|
|
64
64
|
interface AddressSearchParam {
|
|
65
65
|
searchKeyword?: string;
|
|
66
66
|
config?: AxiosRequestConfig;
|
|
67
|
-
setupFn?: (httpClient: CsrHttpClientAxios) => void;
|
|
68
67
|
}
|
|
69
|
-
declare const getAddressMethod: ({ searchKeyword, config
|
|
68
|
+
declare const getAddressMethod: ({ searchKeyword, config }: AddressSearchParam) => Promise<Address[]>;
|
|
70
69
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
70
|
+
/**
|
|
71
|
+
* @description
|
|
72
|
+
* QueryFnReturnType QueryFn 실행시, 성공시 반환되는 데이터타입
|
|
73
|
+
* SelectReturnType Select 옵션으로 가공처리된 데이터타입
|
|
74
|
+
* AxiosError Axios 요청시 발생하는 에러타입
|
|
75
|
+
* string[] 쿼리 키 배열
|
|
76
|
+
*/
|
|
77
|
+
type CustomQueryOptions<QueryFnReturnType, SelectReturnType = QueryFnReturnType> = Omit<UseQueryOptions<QueryFnReturnType, AxiosError, SelectReturnType, string[]>, 'queryKey' | 'queryFn'>;
|
|
76
78
|
|
|
77
79
|
declare const useSearchModalAddressQuery: (params: {
|
|
78
80
|
searchKeyword: string;
|
|
79
|
-
}, options?:
|
|
81
|
+
}, options?: CustomQueryOptions<Address[]>, config?: AxiosRequestConfig) => _tanstack_react_query.UseQueryResult<Address[], axios.AxiosError<unknown, any>>;
|
|
80
82
|
|
|
81
83
|
export { type Address, type AddressSearchDetailInputProps, type AddressSearchResultProps, type FullAddress, type SelectedAddressProps, type Step, type TestResponse, getAddressMethod, getTestMethod, useSearchModalAddressQuery };
|
package/dist/method.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as axios from 'axios';
|
|
2
2
|
import { AxiosRequestConfig, AxiosError } from 'axios';
|
|
3
|
-
import {
|
|
3
|
+
import { H as HttpClientAxios } from './http-client-axios-D4Ub9Xlb.js';
|
|
4
4
|
import * as _tanstack_react_query from '@tanstack/react-query';
|
|
5
5
|
import { UseQueryOptions } from '@tanstack/react-query';
|
|
6
|
-
import './
|
|
6
|
+
import './header.types-duHbFvO0.js';
|
|
7
7
|
|
|
8
8
|
interface Geo {
|
|
9
9
|
lat: string;
|
|
@@ -35,7 +35,7 @@ interface TestResponse {
|
|
|
35
35
|
interface TestRequest {
|
|
36
36
|
id?: number;
|
|
37
37
|
config?: AxiosRequestConfig;
|
|
38
|
-
setupFn?: (httpClient:
|
|
38
|
+
setupFn?: (httpClient: HttpClientAxios) => void;
|
|
39
39
|
}
|
|
40
40
|
declare const getTestMethod: ({ id, config, setupFn }: TestRequest) => Promise<TestResponse>;
|
|
41
41
|
|
|
@@ -64,18 +64,20 @@ interface SelectedAddressProps {
|
|
|
64
64
|
interface AddressSearchParam {
|
|
65
65
|
searchKeyword?: string;
|
|
66
66
|
config?: AxiosRequestConfig;
|
|
67
|
-
setupFn?: (httpClient: CsrHttpClientAxios) => void;
|
|
68
67
|
}
|
|
69
|
-
declare const getAddressMethod: ({ searchKeyword, config
|
|
68
|
+
declare const getAddressMethod: ({ searchKeyword, config }: AddressSearchParam) => Promise<Address[]>;
|
|
70
69
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
70
|
+
/**
|
|
71
|
+
* @description
|
|
72
|
+
* QueryFnReturnType QueryFn 실행시, 성공시 반환되는 데이터타입
|
|
73
|
+
* SelectReturnType Select 옵션으로 가공처리된 데이터타입
|
|
74
|
+
* AxiosError Axios 요청시 발생하는 에러타입
|
|
75
|
+
* string[] 쿼리 키 배열
|
|
76
|
+
*/
|
|
77
|
+
type CustomQueryOptions<QueryFnReturnType, SelectReturnType = QueryFnReturnType> = Omit<UseQueryOptions<QueryFnReturnType, AxiosError, SelectReturnType, string[]>, 'queryKey' | 'queryFn'>;
|
|
76
78
|
|
|
77
79
|
declare const useSearchModalAddressQuery: (params: {
|
|
78
80
|
searchKeyword: string;
|
|
79
|
-
}, options?:
|
|
81
|
+
}, options?: CustomQueryOptions<Address[]>, config?: AxiosRequestConfig) => _tanstack_react_query.UseQueryResult<Address[], axios.AxiosError<unknown, any>>;
|
|
80
82
|
|
|
81
83
|
export { type Address, type AddressSearchDetailInputProps, type AddressSearchResultProps, type FullAddress, type SelectedAddressProps, type Step, type TestResponse, getAddressMethod, getTestMethod, useSearchModalAddressQuery };
|