phx-uikit 1.0.216 → 1.0.218
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.
|
@@ -11,7 +11,6 @@ var headers_1 = require("next/headers");
|
|
|
11
11
|
var isServer = typeof window === 'undefined';
|
|
12
12
|
var publicUrl = (0, read_env_config_1.getEnv)('NEXT_PUBLIC_API_GATEWAY', process.env.NEXT_PUBLIC_API_GATEWAY);
|
|
13
13
|
// const internalUrl = getEnv('NEXT_PUBLIC_API_GATEWAY_INTERNAL', process.env.NEXT_PUBLIC_API_GATEWAY_INTERNAL)
|
|
14
|
-
// Dùng promise singleton để các request cùng chờ 1 lần refresh
|
|
15
14
|
var refreshPromise = null;
|
|
16
15
|
var PHXAxiosInstance = axios_1["default"].create({
|
|
17
16
|
baseURL: publicUrl
|
|
@@ -50,6 +49,7 @@ var saveRefreshTokenServer = function (response) {
|
|
|
50
49
|
var refreshAccessToken = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
51
50
|
return tslib_1.__generator(this, function (_a) {
|
|
52
51
|
if (!refreshPromise) {
|
|
52
|
+
console.log('[REFRESH] 🔁 Bắt đầu refresh token');
|
|
53
53
|
refreshPromise = (function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
54
54
|
var response, newToken, currentSession, err_1;
|
|
55
55
|
return tslib_1.__generator(this, function (_a) {
|
|
@@ -63,7 +63,6 @@ var refreshAccessToken = function () { return tslib_1.__awaiter(void 0, void 0,
|
|
|
63
63
|
response = _a.sent();
|
|
64
64
|
newToken = response.data.token;
|
|
65
65
|
currentSession = (0, getCookieSession_1["default"])();
|
|
66
|
-
// Lưu token mới
|
|
67
66
|
(0, saveCookiesClient_1["default"])({ value: tslib_1.__assign(tslib_1.__assign({}, currentSession), { access_token: newToken }) });
|
|
68
67
|
if (isServer) {
|
|
69
68
|
saveRefreshTokenServer(response);
|
|
@@ -78,6 +77,7 @@ var refreshAccessToken = function () { return tslib_1.__awaiter(void 0, void 0,
|
|
|
78
77
|
throw err_1;
|
|
79
78
|
case 3:
|
|
80
79
|
refreshPromise = null;
|
|
80
|
+
console.log('[REFRESH] ✅ Done');
|
|
81
81
|
return [7 /*endfinally*/];
|
|
82
82
|
case 4: return [2 /*return*/];
|
|
83
83
|
}
|
|
@@ -88,23 +88,24 @@ var refreshAccessToken = function () { return tslib_1.__awaiter(void 0, void 0,
|
|
|
88
88
|
});
|
|
89
89
|
}); };
|
|
90
90
|
PHXAxiosInstance.interceptors.request.use(function (config) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
91
|
-
var
|
|
92
|
-
|
|
93
|
-
|
|
91
|
+
var token, err_2;
|
|
92
|
+
var _a;
|
|
93
|
+
return tslib_1.__generator(this, function (_b) {
|
|
94
|
+
switch (_b.label) {
|
|
94
95
|
case 0:
|
|
95
|
-
|
|
96
|
-
token = (currentSession === null || currentSession === void 0 ? void 0 : currentSession.access_token) || null;
|
|
96
|
+
token = ((_a = (0, getCookieSession_1["default"])()) === null || _a === void 0 ? void 0 : _a.access_token) || null;
|
|
97
97
|
if (!refreshPromise) return [3 /*break*/, 4];
|
|
98
|
-
|
|
98
|
+
_b.label = 1;
|
|
99
99
|
case 1:
|
|
100
|
-
|
|
100
|
+
_b.trys.push([1, 3, , 4]);
|
|
101
|
+
console.log('[REQUEST] 🕒 Chờ token refresh xong...');
|
|
101
102
|
return [4 /*yield*/, refreshPromise];
|
|
102
103
|
case 2:
|
|
103
|
-
token =
|
|
104
|
+
token = _b.sent();
|
|
104
105
|
return [3 /*break*/, 4];
|
|
105
106
|
case 3:
|
|
106
|
-
err_2 =
|
|
107
|
-
console.warn('
|
|
107
|
+
err_2 = _b.sent();
|
|
108
|
+
console.warn('[REQUEST] ❌ Refresh thất bại khi đang đợi');
|
|
108
109
|
return [3 /*break*/, 4];
|
|
109
110
|
case 4:
|
|
110
111
|
if (token) {
|
|
@@ -121,15 +122,12 @@ PHXAxiosInstance.interceptors.response.use(function (response) { return response
|
|
|
121
122
|
switch (_b.label) {
|
|
122
123
|
case 0:
|
|
123
124
|
originalRequest = error.config;
|
|
124
|
-
if (!(((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 401 && !originalRequest._retry)) return [3 /*break*/,
|
|
125
|
+
if (!(((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 401 && !originalRequest._retry)) return [3 /*break*/, 4];
|
|
125
126
|
originalRequest._retry = true;
|
|
126
|
-
if (!refreshPromise) {
|
|
127
|
-
refreshPromise = refreshAccessToken();
|
|
128
|
-
}
|
|
129
127
|
_b.label = 1;
|
|
130
128
|
case 1:
|
|
131
|
-
_b.trys.push([1, 3,
|
|
132
|
-
return [4 /*yield*/,
|
|
129
|
+
_b.trys.push([1, 3, , 4]);
|
|
130
|
+
return [4 /*yield*/, refreshAccessToken()];
|
|
133
131
|
case 2:
|
|
134
132
|
newToken = _b.sent();
|
|
135
133
|
originalRequest.headers.Authorization = "Bearer ".concat(newToken);
|
|
@@ -137,10 +135,7 @@ PHXAxiosInstance.interceptors.response.use(function (response) { return response
|
|
|
137
135
|
case 3:
|
|
138
136
|
err_3 = _b.sent();
|
|
139
137
|
return [2 /*return*/, Promise.reject(err_3)];
|
|
140
|
-
case 4:
|
|
141
|
-
refreshPromise = null;
|
|
142
|
-
return [7 /*endfinally*/];
|
|
143
|
-
case 5: return [2 /*return*/, Promise.reject(error)];
|
|
138
|
+
case 4: return [2 /*return*/, Promise.reject(error)];
|
|
144
139
|
}
|
|
145
140
|
});
|
|
146
141
|
}); });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axiosInstance.js","sourceRoot":"","sources":["../../src/axiosInstance.ts"],"names":[],"mappings":";;;;AAAA,wDAAyB;AACzB,qDAA0C;AAC1C,+CAAmE;AACnE,kGAAmE;AACnE,gGAAwE;AACxE,wCAAiF;AAEjF,IAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,WAAW,CAAA;AAC9C,IAAM,SAAS,GAAG,IAAA,wBAAM,EAAC,yBAAyB,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;AACxF,+GAA+G;AAE/G
|
|
1
|
+
{"version":3,"file":"axiosInstance.js","sourceRoot":"","sources":["../../src/axiosInstance.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,6 @@ import { cookies as serverCookies, headers as serverHeaders } from 'next/headers
|
|
|
8
8
|
var isServer = typeof window === 'undefined';
|
|
9
9
|
var publicUrl = getEnv('NEXT_PUBLIC_API_GATEWAY', process.env.NEXT_PUBLIC_API_GATEWAY);
|
|
10
10
|
// const internalUrl = getEnv('NEXT_PUBLIC_API_GATEWAY_INTERNAL', process.env.NEXT_PUBLIC_API_GATEWAY_INTERNAL)
|
|
11
|
-
// Dùng promise singleton để các request cùng chờ 1 lần refresh
|
|
12
11
|
var refreshPromise = null;
|
|
13
12
|
var PHXAxiosInstance = axios.create({
|
|
14
13
|
baseURL: publicUrl
|
|
@@ -46,6 +45,7 @@ var saveRefreshTokenServer = function (response) {
|
|
|
46
45
|
var refreshAccessToken = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
47
46
|
return __generator(this, function (_a) {
|
|
48
47
|
if (!refreshPromise) {
|
|
48
|
+
console.log('[REFRESH] 🔁 Bắt đầu refresh token');
|
|
49
49
|
refreshPromise = (function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
50
50
|
var response, newToken, currentSession, err_1;
|
|
51
51
|
return __generator(this, function (_a) {
|
|
@@ -59,7 +59,6 @@ var refreshAccessToken = function () { return __awaiter(void 0, void 0, void 0,
|
|
|
59
59
|
response = _a.sent();
|
|
60
60
|
newToken = response.data.token;
|
|
61
61
|
currentSession = PHXFuncGetCookieSession();
|
|
62
|
-
// Lưu token mới
|
|
63
62
|
saveCookiesClient({ value: __assign(__assign({}, currentSession), { access_token: newToken }) });
|
|
64
63
|
if (isServer) {
|
|
65
64
|
saveRefreshTokenServer(response);
|
|
@@ -74,6 +73,7 @@ var refreshAccessToken = function () { return __awaiter(void 0, void 0, void 0,
|
|
|
74
73
|
throw err_1;
|
|
75
74
|
case 3:
|
|
76
75
|
refreshPromise = null;
|
|
76
|
+
console.log('[REFRESH] ✅ Done');
|
|
77
77
|
return [7 /*endfinally*/];
|
|
78
78
|
case 4: return [2 /*return*/];
|
|
79
79
|
}
|
|
@@ -84,23 +84,24 @@ var refreshAccessToken = function () { return __awaiter(void 0, void 0, void 0,
|
|
|
84
84
|
});
|
|
85
85
|
}); };
|
|
86
86
|
PHXAxiosInstance.interceptors.request.use(function (config) { return __awaiter(void 0, void 0, void 0, function () {
|
|
87
|
-
var
|
|
88
|
-
|
|
89
|
-
|
|
87
|
+
var token, err_2;
|
|
88
|
+
var _a;
|
|
89
|
+
return __generator(this, function (_b) {
|
|
90
|
+
switch (_b.label) {
|
|
90
91
|
case 0:
|
|
91
|
-
|
|
92
|
-
token = (currentSession === null || currentSession === void 0 ? void 0 : currentSession.access_token) || null;
|
|
92
|
+
token = ((_a = PHXFuncGetCookieSession()) === null || _a === void 0 ? void 0 : _a.access_token) || null;
|
|
93
93
|
if (!refreshPromise) return [3 /*break*/, 4];
|
|
94
|
-
|
|
94
|
+
_b.label = 1;
|
|
95
95
|
case 1:
|
|
96
|
-
|
|
96
|
+
_b.trys.push([1, 3, , 4]);
|
|
97
|
+
console.log('[REQUEST] 🕒 Chờ token refresh xong...');
|
|
97
98
|
return [4 /*yield*/, refreshPromise];
|
|
98
99
|
case 2:
|
|
99
|
-
token =
|
|
100
|
+
token = _b.sent();
|
|
100
101
|
return [3 /*break*/, 4];
|
|
101
102
|
case 3:
|
|
102
|
-
err_2 =
|
|
103
|
-
console.warn('
|
|
103
|
+
err_2 = _b.sent();
|
|
104
|
+
console.warn('[REQUEST] ❌ Refresh thất bại khi đang đợi');
|
|
104
105
|
return [3 /*break*/, 4];
|
|
105
106
|
case 4:
|
|
106
107
|
if (token) {
|
|
@@ -117,15 +118,12 @@ PHXAxiosInstance.interceptors.response.use(function (response) { return response
|
|
|
117
118
|
switch (_b.label) {
|
|
118
119
|
case 0:
|
|
119
120
|
originalRequest = error.config;
|
|
120
|
-
if (!(((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 401 && !originalRequest._retry)) return [3 /*break*/,
|
|
121
|
+
if (!(((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 401 && !originalRequest._retry)) return [3 /*break*/, 4];
|
|
121
122
|
originalRequest._retry = true;
|
|
122
|
-
if (!refreshPromise) {
|
|
123
|
-
refreshPromise = refreshAccessToken();
|
|
124
|
-
}
|
|
125
123
|
_b.label = 1;
|
|
126
124
|
case 1:
|
|
127
|
-
_b.trys.push([1, 3,
|
|
128
|
-
return [4 /*yield*/,
|
|
125
|
+
_b.trys.push([1, 3, , 4]);
|
|
126
|
+
return [4 /*yield*/, refreshAccessToken()];
|
|
129
127
|
case 2:
|
|
130
128
|
newToken = _b.sent();
|
|
131
129
|
originalRequest.headers.Authorization = "Bearer ".concat(newToken);
|
|
@@ -133,10 +131,7 @@ PHXAxiosInstance.interceptors.response.use(function (response) { return response
|
|
|
133
131
|
case 3:
|
|
134
132
|
err_3 = _b.sent();
|
|
135
133
|
return [2 /*return*/, Promise.reject(err_3)];
|
|
136
|
-
case 4:
|
|
137
|
-
refreshPromise = null;
|
|
138
|
-
return [7 /*endfinally*/];
|
|
139
|
-
case 5: return [2 /*return*/, Promise.reject(error)];
|
|
134
|
+
case 4: return [2 /*return*/, Promise.reject(error)];
|
|
140
135
|
}
|
|
141
136
|
});
|
|
142
137
|
}); });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axiosInstance.js","sourceRoot":"","sources":["../../src/axiosInstance.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACnE,OAAO,iBAAiB,MAAM,qCAAqC,CAAA;AACnE,OAAO,uBAAuB,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,cAAc,CAAA;AAEjF,IAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,WAAW,CAAA;AAC9C,IAAM,SAAS,GAAG,MAAM,CAAC,yBAAyB,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;AACxF,+GAA+G;AAE/G
|
|
1
|
+
{"version":3,"file":"axiosInstance.js","sourceRoot":"","sources":["../../src/axiosInstance.ts"],"names":[],"mappings":"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"}
|