subaya 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/axios/AxiosGeneratorCommand.d.ts.map +1 -1
- package/dist/commands/axios/AxiosGeneratorCommand.js +4 -0
- package/dist/commands/axios/AxiosGeneratorCommand.js.map +1 -1
- package/dist/commands/git/PushGeneratorCommand.d.ts +5 -0
- package/dist/commands/git/PushGeneratorCommand.d.ts.map +1 -0
- package/dist/commands/git/PushGeneratorCommand.js +51 -0
- package/dist/commands/git/PushGeneratorCommand.js.map +1 -0
- package/dist/template/axios/instance.d.ts +1 -1
- package/dist/template/axios/instance.d.ts.map +1 -1
- package/dist/template/axios/instance.js +1 -1
- package/dist/template/axios/refresh.d.ts.map +1 -1
- package/dist/template/axios/refresh.js +46 -59
- package/dist/template/axios/refresh.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AxiosGeneratorCommand.d.ts","sourceRoot":"","sources":["../../../src/commands/axios/AxiosGeneratorCommand.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAEvE,qBAAa,qBAAsB,SAAQ,gBAAgB;IACnD,OAAO,CAAC,QAAQ,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"AxiosGeneratorCommand.d.ts","sourceRoot":"","sources":["../../../src/commands/axios/AxiosGeneratorCommand.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAEvE,qBAAa,qBAAsB,SAAQ,gBAAgB;IACnD,OAAO,CAAC,QAAQ,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;CAqIxD"}
|
|
@@ -93,7 +93,11 @@ export class AxiosGeneratorCommand extends BaseAxiosCommand {
|
|
|
93
93
|
}
|
|
94
94
|
else {
|
|
95
95
|
const storeDir = FileSystemService.getOutputPath("store");
|
|
96
|
+
// spinner를 잠시 멈추기 (stop 혹은 pause)
|
|
97
|
+
spinner?.stop && spinner.stop();
|
|
96
98
|
await EnsureSystem.ensureLocalStorage(storeDir, true);
|
|
99
|
+
// spinner를 다시 시작 (resume 혹은 start)
|
|
100
|
+
spinner?.start && spinner.start();
|
|
97
101
|
await FileSystemService.writeFileOrSkip({
|
|
98
102
|
dir: axiosDir,
|
|
99
103
|
file: "refresh",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AxiosGeneratorCommand.js","sourceRoot":"","sources":["../../../src/commands/axios/AxiosGeneratorCommand.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EACL,aAAa,EACb,yCAAyC,EACzC,8BAA8B,GAC/B,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAA;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAEvE,MAAM,OAAO,qBAAsB,SAAQ,gBAAgB;IACzD,KAAK,CAAC,OAAO,CAAC,WAAoB,KAAK;QACrC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QAEvB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QACzD,MAAM,UAAU,GAAG,iBAAiB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;QAC7D,MAAM,QAAQ,GAAG,iBAAiB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;QAErC,MAAM,YAAY,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QACnD,MAAM,YAAY,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;QAE5D,MAAM,EAAE,WAAW,GAAG,IAAI,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACnD;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,kEAAkE;aAC5E;SACF,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QAE3F,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;gBAC5F,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;gBAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;gBAClD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;gBAChD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;gBAEtC,MAAM,iBAAiB,CAAC,eAAe,CAAC;oBACtC,GAAG,EAAE,QAAQ;oBACb,IAAI,EAAE,KAAK;oBACX,GAAG,EAAE,IAAI;oBACT,OAAO,EAAE,OAAO,EAAE;oBAClB,QAAQ;iBACT,CAAC,CAAA;gBACF,MAAM,iBAAiB,CAAC,eAAe,CAAC;oBACtC,GAAG,EAAE,UAAU;oBACf,IAAI,EAAE,OAAO;oBACb,GAAG,EAAE,IAAI;oBACT,OAAO,EAAE,wBAAwB,EAAE;oBACnC,QAAQ;iBACT,CAAC,CAAA;gBACF,MAAM,iBAAiB,CAAC,eAAe,CAAC;oBACtC,GAAG,EAAE,YAAY;oBACjB,IAAI,EAAE,OAAO;oBACb,GAAG,EAAE,IAAI;oBACT,OAAO,EAAE,0BAA0B,EAAE;oBACrC,QAAQ;iBACT,CAAC,CAAA;gBACF,MAAM,iBAAiB,CAAC,eAAe,CAAC;oBACtC,GAAG,EAAE,WAAW;oBAChB,IAAI,EAAE,OAAO;oBACb,GAAG,EAAE,IAAI;oBACT,OAAO,EAAE,yBAAyB,EAAE;oBACpC,QAAQ;iBACT,CAAC,CAAA;gBAEF,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;gBAEhD,MAAM,iBAAiB,CAAC,eAAe,CAAC;oBACtC,GAAG,EAAE,YAAY;oBACjB,IAAI,EAAE,UAAU;oBAChB,GAAG,EAAE,IAAI;oBACT,OAAO,EAAE,YAAY,EAAE;oBACvB,QAAQ;iBACT,CAAC,CAAA;gBACF,MAAM,iBAAiB,CAAC,eAAe,CAAC;oBACtC,GAAG,EAAE,YAAY;oBACjB,IAAI,EAAE,WAAW;oBACjB,GAAG,EAAE,IAAI;oBACT,OAAO,EAAE,aAAa,EAAE;oBACxB,QAAQ;iBACT,CAAC,CAAA;gBAEF,MAAM,YAAY,CAAC,WAAW,CAAC,iBAAiB,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAA;gBAE5E,MAAM,iBAAiB,CAAC,eAAe,CAAC;oBACtC,GAAG,EAAE,MAAM;oBACX,IAAI,EAAE,OAAO;oBACb,GAAG,EAAE,IAAI;oBACT,YAAY,EAAE,aAAa;oBAC3B,OAAO,EAAE,cAAc,EAAE;iBAC1B,CAAC,CAAA;gBAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;gBACvD,MAAM,YAAY,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC,CAAA;YAC5D,CAAC;iBAAM,CAAC;gBACN,MAAM,QAAQ,GAAG,iBAAiB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;gBACzD,MAAM,YAAY,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;gBACrD,MAAM,iBAAiB,CAAC,eAAe,CAAC;oBACtC,GAAG,EAAE,QAAQ;oBACb,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,YAAY,EAAE;oBACvB,QAAQ;iBACT,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;gBACzB,MAAM,iBAAiB,CAAC,eAAe,CAAC;oBACtC,GAAG,EAAE,QAAQ;oBACb,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE,8BAA8B;oBACvC,QAAQ;iBACT,CAAC,CAAA;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,iBAAiB,CAAC,eAAe,CAAC;oBACtC,GAAG,EAAE,QAAQ;oBACb,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE,yCAAyC;oBAClD,QAAQ;iBACT,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,iBAAiB,CAAC,eAAe,CAAC;gBACtC,GAAG,EAAE,QAAQ;gBACb,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,aAAa;gBACtB,QAAQ;aACT,CAAC,CAAA;QACJ,CAAC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,EAAE,OAAO,CAAC,+CAA+C,CAAC,CAAA;QACnE,CAAC;IACH,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"AxiosGeneratorCommand.js","sourceRoot":"","sources":["../../../src/commands/axios/AxiosGeneratorCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PushGeneratorCommand.d.ts","sourceRoot":"","sources":["../../../src/commands/git/PushGeneratorCommand.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAEvD,qBAAa,oBAAqB,SAAQ,WAAW;IAC7C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAkD/B"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import fs from "fs-extra";
|
|
2
|
+
import { execSync } from "node:child_process";
|
|
3
|
+
import { cwd } from "node:process";
|
|
4
|
+
import { BaseCommand } from "../../core/BaseCommand.js";
|
|
5
|
+
export class PushGeneratorCommand extends BaseCommand {
|
|
6
|
+
async execute() {
|
|
7
|
+
await this.getContext();
|
|
8
|
+
const targetCwd = cwd();
|
|
9
|
+
try {
|
|
10
|
+
// Track untracked files in diff without staging actual content.
|
|
11
|
+
execSync("git add -N .", { cwd: targetCwd, stdio: "pipe" });
|
|
12
|
+
const statusSummary = execSync("git status --porcelain", { cwd: targetCwd, stdio: "pipe" }).toString().split("\n");
|
|
13
|
+
let finalReport = "";
|
|
14
|
+
for (const line of statusSummary) {
|
|
15
|
+
if (!line.trim())
|
|
16
|
+
continue;
|
|
17
|
+
const status = line.substring(0, 2).trim();
|
|
18
|
+
const filePath = line.substring(3).trim();
|
|
19
|
+
if (!filePath)
|
|
20
|
+
continue;
|
|
21
|
+
finalReport += `\n[${status}] FILE: ${filePath}\n`;
|
|
22
|
+
finalReport += "-------------------------------------------\n";
|
|
23
|
+
try {
|
|
24
|
+
const escapedPath = filePath.replace(/(["\\$`])/g, "\\$1");
|
|
25
|
+
const diff = execSync(`git diff --unified=0 --no-color -- "${escapedPath}"`, {
|
|
26
|
+
cwd: targetCwd,
|
|
27
|
+
stdio: "pipe",
|
|
28
|
+
}).toString();
|
|
29
|
+
const contentOnly = diff
|
|
30
|
+
.split("\n")
|
|
31
|
+
.filter((l) => (l.startsWith("+") && !l.startsWith("+++")) || (l.startsWith("-") && !l.startsWith("---")))
|
|
32
|
+
.join("\n");
|
|
33
|
+
console.log(contentOnly);
|
|
34
|
+
finalReport += contentOnly ? `${contentOnly}\n` : "";
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
finalReport += "(내용을 불러올 수 없거나 바이너리 파일입니다.)\n";
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const outputPath = `${targetCwd}/comprehensive_diff.txt`;
|
|
41
|
+
await fs.writeFile(outputPath, finalReport);
|
|
42
|
+
console.log(`✅ comprehensive_diff.txt 생성 완료! (${outputPath})`);
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
46
|
+
console.error("오류 발생:", message);
|
|
47
|
+
throw err;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=PushGeneratorCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PushGeneratorCommand.js","sourceRoot":"","sources":["../../../src/commands/git/PushGeneratorCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export declare const axiosInstanceWithLocalStorageRefreshToken = "import axios, { AxiosError, AxiosInstance, AxiosRequestConfig } from \"axios\"\nimport qs from \"qs\"\n\nimport { ENV } from \"@/configs/env\"\nimport { apiLogger } from \"@/utils/logger/api-logger\"\nimport styledConsole from \"@/utils/logger/styled-console\"\nimport { tokenStorage } from \"@/store/local/index\"\nimport { refresh } from \"./refresh\"\n\nconst isDev = ENV.NODE_ENV === \"development\"\n\nexport class HttpClient {\n private instance: AxiosInstance\n\n constructor(config?: AxiosRequestConfig) {\n this.instance = axios.create({\n baseURL: ENV.API_BASE_URL,\n timeout: 5000,\n headers: {\n \"Content-Type\": \"application/json\",\n },\n ...config,\n })\n this.setupInterceptors()\n }\n\n private setupInterceptors() {\n this.instance.interceptors.request.use(\n (config) => {\n const token = tokenStorage?.get()\n const isAccess = !!token && !!token.access\n if (isAccess) {\n config.headers.setAuthorization(`Bearer ${token.access}`);\n }\n return config\n },\n (error) => {\n return Promise.reject(error)\n },\n )\n\n this.instance.interceptors.response.use(\n (res) => {\n const { status, config: reqData, data: resData } = res\n if (isDev) apiLogger({ status, reqData, resData })\n return res\n },\n async (error: AxiosError) => {\n try {\n const { response: res, config: reqData } = error || {}\n const { status } = res || { status: 400 }\n const isUnAuthError = status === 401\n const isExpiredToken = status === 444\n\n if (isDev) apiLogger({ status, reqData, resData: error, method: \"error\" })\n\n if (isExpiredToken && reqData) {\n const refreshedConfig = await refresh(reqData)\n if (refreshedConfig) {\n return this.instance.request(refreshedConfig)\n }\n }\n\n if (isUnAuthError) {\n tokenStorage?.remove()\n }\n\n return Promise.reject(error)\n } catch (e) {\n styledConsole({\n method: \"error\",\n topic: \"UN_HANDLED\",\n title: \"axios-interceptor\",\n data: e,\n })\n return Promise.reject(e)\n }\n },\n )\n\n this.instance.defaults.paramsSerializer = (params) => {\n return qs.stringify(params, { arrayFormat: \"repeat\" })\n }\n }\n\n public getInstance(): AxiosInstance {\n return this.instance\n }\n}\n\nexport const instance = new HttpClient().getInstance()";
|
|
2
|
-
export declare const axiosInstanceWithNextServerJwt = "import axios, { AxiosError, AxiosInstance, AxiosRequestConfig } from \"axios\"\nimport qs from \"qs\"\n\nimport { ENV } from \"@/configs/env\"\nimport { apiLogger } from \"@/utils/logger/api-logger\"\nimport styledConsole from \"@/utils/logger/styled-console\"\nimport { clearTokens } from \"@/utils/jwt\"\n\nconst isDev = ENV.NODE_ENV === \"development\"\n\nlet isRefreshing = false;\nlet refreshSubscribers: ((token: string) => void)[] = [];\n\nconst onRefreshed = (token: string) => {\n refreshSubscribers.forEach((callback) => callback(token));\n refreshSubscribers = [];\n};\n\nconst addRefreshSubscriber = (callback: (token: string) => void) => {\n refreshSubscribers.push(callback);\n};\n\nexport class HttpClient {\n private instance: AxiosInstance\n\n constructor(config?: AxiosRequestConfig) {\n this.instance = axios.create({\n baseURL: ENV.API_BASE_URL,\n timeout: 5000,\n withCredentials: true, \n headers: {\n \"Content-Type\": \"application/json\",\n },\n ...config,\n })\n this.setupInterceptors()\n }\n\n private setupInterceptors() {\n this.instance.interceptors.request.use(\n (config) => config,\n (error) => Promise.reject(error),\n )\n\n this.instance.interceptors.response.use(\n (res) => {\n const { status, config: reqData, data: resData } = res\n if (isDev) apiLogger({ status, reqData, resData })\n return res\n },\n async (error: AxiosError) => {\n const { response: res, config: reqData } = error
|
|
2
|
+
export declare const axiosInstanceWithNextServerJwt = "import axios, { AxiosError, AxiosInstance, AxiosRequestConfig } from \"axios\"\nimport qs from \"qs\"\n\nimport { ENV } from \"@/configs/env\"\nimport { apiLogger } from \"@/utils/logger/api-logger\"\nimport styledConsole from \"@/utils/logger/styled-console\"\nimport { clearTokens } from \"@/utils/jwt\"\n\nconst isDev = ENV.NODE_ENV === \"development\"\n\nlet isRefreshing = false;\nlet refreshSubscribers: ((token: string) => void)[] = [];\n\nconst onRefreshed = (token: string) => {\n refreshSubscribers.forEach((callback) => callback(token));\n refreshSubscribers = [];\n};\n\nconst addRefreshSubscriber = (callback: (token: string) => void) => {\n refreshSubscribers.push(callback);\n};\n\nexport class HttpClient {\n private instance: AxiosInstance\n\n constructor(config?: AxiosRequestConfig) {\n this.instance = axios.create({\n baseURL: ENV.API_BASE_URL,\n timeout: 5000,\n withCredentials: true, \n headers: {\n \"Content-Type\": \"application/json\",\n },\n ...config,\n })\n this.setupInterceptors()\n }\n\n private setupInterceptors() {\n this.instance.interceptors.request.use(\n (config) => config,\n (error) => Promise.reject(error),\n )\n\n this.instance.interceptors.response.use(\n (res) => {\n const { status, config: reqData, data: resData } = res\n if (isDev) apiLogger({ status, reqData, resData })\n return res\n },\n async (error: AxiosError) => {\n const { response: res, config: reqData } = error\n const { status } = res || { status: 400 }\n const originalRequest = reqData as AxiosRequestConfig & { _retry?: boolean }\n const isBrowser = typeof window !== 'undefined'\n const isUnAuthError = status === 401\n const isExpiredToken = status === 444\n\n if (isExpiredToken && originalRequest && !originalRequest._retry && isBrowser) {\n originalRequest._retry = true;\n\n if (isRefreshing) {\n return new Promise((resolve) => {\n addRefreshSubscriber(() => {\n resolve(this.instance(originalRequest));\n });\n });\n }\n\n isRefreshing = true;\n\n try {\n await axios.post('/api/auth/refresh'); \n \n isRefreshing = false;\n onRefreshed('success');\n return this.instance(originalRequest);\n } catch (refreshError) {\n isRefreshing = false;\n refreshSubscribers = [];\n if (typeof window !== 'undefined') {\n window.location.href = '/login'; \n }\n return Promise.reject(refreshError);\n }\n }\n\n if (isUnAuthError) {\n await clearTokens();\n }\n\n styledConsole({\n method: \"error\",\n topic: \"UN_HANDLED\",\n title: \"axios-interceptor\",\n data: error,\n })\n return Promise.reject(error)\n },\n )\n\n this.instance.defaults.paramsSerializer = (params) => {\n return qs.stringify(params, { arrayFormat: \"repeat\" })\n }\n }\n\n public getInstance(): AxiosInstance {\n return this.instance\n }\n}\n\nexport const instance = new HttpClient().getInstance()";
|
|
3
3
|
export declare const axiosInstance = "import axios, { AxiosError, AxiosInstance, AxiosRequestConfig } from \"axios\"\nimport qs from \"qs\"\n\nimport { ENV } from \"@/configs/env\"\nimport { apiLogger } from \"@/utils/logger/api-logger\"\nimport styledConsole from \"@/utils/logger/styled-console\"\n\nconst isDev = ENV.NODE_ENV === \"development\"\n\nexport class HttpClient {\n private instance: AxiosInstance\n\n constructor(config?: AxiosRequestConfig) {\n this.instance = axios.create({\n baseURL: ENV.API_BASE_URL,\n timeout: 5000,\n headers: {\n \"Content-Type\": \"application/json\",\n },\n ...config,\n })\n this.setupInterceptors()\n }\n\n private setupInterceptors() {\n this.instance.interceptors.request.use(\n (config) => {\n return config\n },\n (error) => {\n return Promise.reject(error)\n },\n )\n\n this.instance.interceptors.response.use(\n (res) => {\n const { status, config: reqData, data: resData } = res\n if (isDev) apiLogger({ status, reqData, resData })\n return res\n },\n async (error: AxiosError) => {\n try {\n const { response: res, config: reqData } = error || {}\n const { status } = res || { status: 400 }\n\n if (isDev) apiLogger({ status, reqData, resData: error, method: \"error\" })\n\n return Promise.reject(error)\n } catch (e) {\n styledConsole({\n method: \"error\",\n topic: \"UN_HANDLED\",\n title: \"axios-interceptor\",\n data: e,\n })\n return Promise.reject(e)\n }\n },\n )\n\n this.instance.defaults.paramsSerializer = (params) => {\n return qs.stringify(params, { arrayFormat: \"repeat\" })\n }\n }\n\n public getInstance(): AxiosInstance {\n return this.instance\n }\n}\n\nexport const instance = new HttpClient().getInstance()\n";
|
|
4
4
|
//# sourceMappingURL=instance.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instance.d.ts","sourceRoot":"","sources":["../../../src/template/axios/instance.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yCAAyC,skFA0FC,CAAA;AAEvD,eAAO,MAAM,8BAA8B,
|
|
1
|
+
{"version":3,"file":"instance.d.ts","sourceRoot":"","sources":["../../../src/template/axios/instance.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yCAAyC,skFA0FC,CAAA;AAEvD,eAAO,MAAM,8BAA8B,8uGA+GY,CAAA;AAEvD,eAAO,MAAM,aAAa,u4DAuEzB,CAAA"}
|
|
@@ -140,7 +140,7 @@ export class HttpClient {
|
|
|
140
140
|
return res
|
|
141
141
|
},
|
|
142
142
|
async (error: AxiosError) => {
|
|
143
|
-
const { response: res, config: reqData } = error
|
|
143
|
+
const { response: res, config: reqData } = error
|
|
144
144
|
const { status } = res || { status: 400 }
|
|
145
145
|
const originalRequest = reqData as AxiosRequestConfig & { _retry?: boolean }
|
|
146
146
|
const isBrowser = typeof window !== 'undefined'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../../src/template/axios/refresh.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../../src/template/axios/refresh.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,cAkExB,CAAA"}
|
|
@@ -1,81 +1,68 @@
|
|
|
1
|
-
export const axiosRefresh = () => `import {
|
|
2
|
-
import
|
|
3
|
-
import { TokenType } from "@/types/localStorageType"
|
|
4
|
-
import axios, { InternalAxiosRequestConfig } from "axios"
|
|
1
|
+
export const axiosRefresh = () => `import type { AxiosRequestConfig } from 'axios'
|
|
2
|
+
import axios from 'axios'
|
|
5
3
|
|
|
6
|
-
|
|
4
|
+
import { ENV } from '@/configs/env'
|
|
5
|
+
import { tokenStorage } from '@/store/local'
|
|
6
|
+
import type { TokenType } from '@/types/localStorageType'
|
|
7
|
+
|
|
8
|
+
import { instance } from './instance'
|
|
9
|
+
|
|
10
|
+
type Request = (access: string) => void
|
|
7
11
|
|
|
8
12
|
let isTokenRefreshing = false
|
|
9
|
-
let refreshSubscribers:
|
|
13
|
+
let refreshSubscribers: Request[] = []
|
|
10
14
|
|
|
11
15
|
const onTokenRefreshed = (access: string) => {
|
|
12
|
-
refreshSubscribers.forEach((callback) => callback(access))
|
|
13
|
-
refreshSubscribers = []
|
|
16
|
+
refreshSubscribers.forEach((callback: Request) => callback(access))
|
|
14
17
|
}
|
|
15
18
|
|
|
16
|
-
const
|
|
17
|
-
refreshSubscribers.
|
|
18
|
-
refreshSubscribers = []
|
|
19
|
+
const addRefreshSubscriber = (callback: Request) => {
|
|
20
|
+
refreshSubscribers.push(callback)
|
|
19
21
|
}
|
|
20
22
|
|
|
21
|
-
const refreshToken = async ()
|
|
23
|
+
const refreshToken = async () => {
|
|
22
24
|
try {
|
|
23
|
-
const token = tokenStorage
|
|
24
|
-
if (!token
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
})
|
|
31
|
-
|
|
32
|
-
const updatedToken = { ...token, ...newToken }
|
|
33
|
-
tokenStorage?.set(updatedToken)
|
|
34
|
-
|
|
25
|
+
const token = tokenStorage.get()
|
|
26
|
+
if (!token.refresh) throw new Error('not found refresh-token')
|
|
27
|
+
const { data: newToken }: { data: TokenType } = await axios.post(
|
|
28
|
+
\`\${ENV.API_BASE_URL}/v1/user/refresh/\`,
|
|
29
|
+
{ refresh: token.refresh },
|
|
30
|
+
)
|
|
31
|
+
tokenStorage.set({ ...token, ...newToken })
|
|
35
32
|
return newToken
|
|
36
33
|
} catch (err) {
|
|
37
|
-
tokenStorage
|
|
38
|
-
|
|
39
|
-
if (typeof window !== "undefined") {
|
|
40
|
-
window.location.href = "/login"
|
|
41
|
-
}
|
|
34
|
+
tokenStorage.remove()
|
|
42
35
|
throw err
|
|
43
36
|
}
|
|
44
37
|
}
|
|
45
38
|
|
|
46
|
-
export const refresh = async (
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return new Promise((resolve, reject) => {
|
|
54
|
-
refreshSubscribers.push((access: string | null) => {
|
|
55
|
-
if (access) {
|
|
56
|
-
if (originalRequest.headers) {
|
|
57
|
-
originalRequest.headers.set("Authorization", \`Bearer \${access}\`)
|
|
58
|
-
}
|
|
59
|
-
resolve(originalRequest)
|
|
60
|
-
} else {
|
|
61
|
-
reject(new Error("Refresh token failed and cleared"))
|
|
39
|
+
export const refresh = async (reqData?: AxiosRequestConfig) => {
|
|
40
|
+
const retriedOriginalRequest = new Promise((resolve) => {
|
|
41
|
+
addRefreshSubscriber((access: string) => {
|
|
42
|
+
if (reqData?.headers) {
|
|
43
|
+
reqData.headers.Authorization = 'Bearer ' + access
|
|
44
|
+
resolve(instance(reqData))
|
|
45
|
+
return
|
|
62
46
|
}
|
|
47
|
+
resolve(null)
|
|
63
48
|
})
|
|
49
|
+
})
|
|
64
50
|
|
|
65
|
-
|
|
51
|
+
if (!isTokenRefreshing) {
|
|
52
|
+
try {
|
|
66
53
|
isTokenRefreshing = true
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
.finally(() => {
|
|
76
|
-
isTokenRefreshing = false
|
|
77
|
-
})
|
|
54
|
+
const token = await refreshToken()
|
|
55
|
+
onTokenRefreshed(token.access)
|
|
56
|
+
refreshSubscribers = []
|
|
57
|
+
} catch (error) {
|
|
58
|
+
console.log(error)
|
|
59
|
+
throw error
|
|
60
|
+
} finally {
|
|
61
|
+
isTokenRefreshing = false
|
|
78
62
|
}
|
|
79
|
-
}
|
|
80
|
-
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return retriedOriginalRequest
|
|
66
|
+
}
|
|
67
|
+
`;
|
|
81
68
|
//# sourceMappingURL=refresh.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../../src/template/axios/refresh.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC
|
|
1
|
+
{"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../../src/template/axios/refresh.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkEjC,CAAA"}
|