phx-uikit 1.0.216 → 1.0.217
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.
|
@@ -8,17 +8,30 @@ var constants_1 = require("./utils/constants");
|
|
|
8
8
|
var saveCookiesClient_1 = tslib_1.__importDefault(require("./components/Func/saveCookiesClient"));
|
|
9
9
|
var getCookieSession_1 = tslib_1.__importDefault(require("./components/Func/getCookieSession"));
|
|
10
10
|
var headers_1 = require("next/headers");
|
|
11
|
-
var
|
|
11
|
+
var isRefreshing = false;
|
|
12
|
+
var failedQueue = [];
|
|
12
13
|
var publicUrl = (0, read_env_config_1.getEnv)('NEXT_PUBLIC_API_GATEWAY', process.env.NEXT_PUBLIC_API_GATEWAY);
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
var
|
|
14
|
+
var internalUrl = (0, read_env_config_1.getEnv)('NEXT_PUBLIC_API_GATEWAY_INTERNAL', process.env.NEXT_PUBLIC_API_GATEWAY_INTERNAL);
|
|
15
|
+
var isServer = typeof window === 'undefined';
|
|
16
|
+
var processQueue = function (error, token) {
|
|
17
|
+
if (token === void 0) { token = null; }
|
|
18
|
+
failedQueue.forEach(function (prom) {
|
|
19
|
+
if (error) {
|
|
20
|
+
prom.reject(error);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
prom.resolve(token);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
failedQueue = [];
|
|
27
|
+
};
|
|
16
28
|
var PHXAxiosInstance = axios_1["default"].create({
|
|
17
29
|
baseURL: publicUrl
|
|
18
30
|
});
|
|
19
31
|
exports.PHXAxiosInstance = PHXAxiosInstance;
|
|
20
32
|
var getAuthHeaders = function () {
|
|
21
33
|
if (isServer) {
|
|
34
|
+
// Server-side
|
|
22
35
|
var cookieStore = (0, headers_1.cookies)();
|
|
23
36
|
var cookieHeader = cookieStore
|
|
24
37
|
.getAll()
|
|
@@ -34,6 +47,36 @@ var getAuthHeaders = function () {
|
|
|
34
47
|
}
|
|
35
48
|
return {};
|
|
36
49
|
};
|
|
50
|
+
var refreshAccessToken = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
51
|
+
var response, newToken, currentSession, err_1;
|
|
52
|
+
return tslib_1.__generator(this, function (_a) {
|
|
53
|
+
switch (_a.label) {
|
|
54
|
+
case 0:
|
|
55
|
+
_a.trys.push([0, 2, , 3]);
|
|
56
|
+
return [4 /*yield*/, axios_1["default"].post("".concat(isServer ? (0, headers_1.headers)().get('origin') : '', "/api/authenticate/refresh-token"), {}, {
|
|
57
|
+
headers: getAuthHeaders()
|
|
58
|
+
})];
|
|
59
|
+
case 1:
|
|
60
|
+
response = _a.sent();
|
|
61
|
+
newToken = response.data.token;
|
|
62
|
+
currentSession = (0, getCookieSession_1["default"])();
|
|
63
|
+
(0, saveCookiesClient_1["default"])({ value: tslib_1.__assign(tslib_1.__assign({}, currentSession), { access_token: newToken }) });
|
|
64
|
+
if (isServer) {
|
|
65
|
+
// save refresh token from server site
|
|
66
|
+
saveRefreshTokenServer(response);
|
|
67
|
+
}
|
|
68
|
+
return [2 /*return*/, newToken];
|
|
69
|
+
case 2:
|
|
70
|
+
err_1 = _a.sent();
|
|
71
|
+
if (!isServer) {
|
|
72
|
+
// Cookies.remove(COOKIE_SESSION_SIGN_IN)
|
|
73
|
+
window.location.href = constants_1.loginPage;
|
|
74
|
+
}
|
|
75
|
+
throw err_1;
|
|
76
|
+
case 3: return [2 /*return*/];
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}); };
|
|
37
80
|
var saveRefreshTokenServer = function (response) {
|
|
38
81
|
var _a;
|
|
39
82
|
var setCookieHeader = ((_a = response.headers['set-cookie']) === null || _a === void 0 ? void 0 : _a[0]) || '';
|
|
@@ -47,70 +90,37 @@ var saveRefreshTokenServer = function (response) {
|
|
|
47
90
|
expires: new Date(Date.now() + 365 * 24 * 60 * 60 * 1000)
|
|
48
91
|
});
|
|
49
92
|
};
|
|
50
|
-
var refreshAccessToken = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
51
|
-
return tslib_1.__generator(this, function (_a) {
|
|
52
|
-
if (!refreshPromise) {
|
|
53
|
-
refreshPromise = (function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
54
|
-
var response, newToken, currentSession, err_1;
|
|
55
|
-
return tslib_1.__generator(this, function (_a) {
|
|
56
|
-
switch (_a.label) {
|
|
57
|
-
case 0:
|
|
58
|
-
_a.trys.push([0, 2, 3, 4]);
|
|
59
|
-
return [4 /*yield*/, axios_1["default"].post("".concat(isServer ? (0, headers_1.headers)().get('origin') : '', "/api/authenticate/refresh-token"), {}, {
|
|
60
|
-
headers: getAuthHeaders()
|
|
61
|
-
})];
|
|
62
|
-
case 1:
|
|
63
|
-
response = _a.sent();
|
|
64
|
-
newToken = response.data.token;
|
|
65
|
-
currentSession = (0, getCookieSession_1["default"])();
|
|
66
|
-
// Lưu token mới
|
|
67
|
-
(0, saveCookiesClient_1["default"])({ value: tslib_1.__assign(tslib_1.__assign({}, currentSession), { access_token: newToken }) });
|
|
68
|
-
if (isServer) {
|
|
69
|
-
saveRefreshTokenServer(response);
|
|
70
|
-
}
|
|
71
|
-
return [2 /*return*/, newToken];
|
|
72
|
-
case 2:
|
|
73
|
-
err_1 = _a.sent();
|
|
74
|
-
if (!isServer) {
|
|
75
|
-
// Cookies.remove(COOKIE_SESSION_SIGN_IN)
|
|
76
|
-
window.location.href = constants_1.loginPage;
|
|
77
|
-
}
|
|
78
|
-
throw err_1;
|
|
79
|
-
case 3:
|
|
80
|
-
refreshPromise = null;
|
|
81
|
-
return [7 /*endfinally*/];
|
|
82
|
-
case 4: return [2 /*return*/];
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
}); })();
|
|
86
|
-
}
|
|
87
|
-
return [2 /*return*/, refreshPromise];
|
|
88
|
-
});
|
|
89
|
-
}); };
|
|
90
93
|
PHXAxiosInstance.interceptors.request.use(function (config) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
91
|
-
var currentSession,
|
|
92
|
-
|
|
93
|
-
|
|
94
|
+
var currentSession, authTokenCookie, err_2, newToken;
|
|
95
|
+
var _a;
|
|
96
|
+
return tslib_1.__generator(this, function (_b) {
|
|
97
|
+
switch (_b.label) {
|
|
94
98
|
case 0:
|
|
95
99
|
currentSession = (0, getCookieSession_1["default"])();
|
|
96
|
-
|
|
97
|
-
if (!
|
|
98
|
-
|
|
100
|
+
authTokenCookie = (currentSession === null || currentSession === void 0 ? void 0 : currentSession.access_token) || null;
|
|
101
|
+
if (!authTokenCookie) return [3 /*break*/, 7];
|
|
102
|
+
config.headers.Authorization = "Bearer ".concat(authTokenCookie);
|
|
103
|
+
if (!isServer) return [3 /*break*/, 7];
|
|
104
|
+
_b.label = 1;
|
|
99
105
|
case 1:
|
|
100
|
-
|
|
101
|
-
return [4 /*yield*/,
|
|
106
|
+
_b.trys.push([1, 3, , 7]);
|
|
107
|
+
return [4 /*yield*/, axios_1["default"].post("".concat(internalUrl, "/authen/authenticate"), {}, {
|
|
108
|
+
headers: tslib_1.__assign({ Authorization: "Bearer ".concat(authTokenCookie) }, getAuthHeaders())
|
|
109
|
+
})];
|
|
102
110
|
case 2:
|
|
103
|
-
|
|
104
|
-
return [3 /*break*/,
|
|
111
|
+
_b.sent();
|
|
112
|
+
return [3 /*break*/, 7];
|
|
105
113
|
case 3:
|
|
106
|
-
err_2 =
|
|
107
|
-
|
|
108
|
-
return [
|
|
114
|
+
err_2 = _b.sent();
|
|
115
|
+
if (!(((_a = err_2.response) === null || _a === void 0 ? void 0 : _a.status) === 401)) return [3 /*break*/, 5];
|
|
116
|
+
return [4 /*yield*/, refreshAccessToken()];
|
|
109
117
|
case 4:
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
118
|
+
newToken = _b.sent();
|
|
119
|
+
config.headers.Authorization = "Bearer ".concat(newToken);
|
|
120
|
+
return [3 /*break*/, 6];
|
|
121
|
+
case 5: throw err_2;
|
|
122
|
+
case 6: return [3 /*break*/, 7];
|
|
123
|
+
case 7: return [2 /*return*/, config];
|
|
114
124
|
}
|
|
115
125
|
});
|
|
116
126
|
}); });
|
|
@@ -122,23 +132,34 @@ PHXAxiosInstance.interceptors.response.use(function (response) { return response
|
|
|
122
132
|
case 0:
|
|
123
133
|
originalRequest = error.config;
|
|
124
134
|
if (!(((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 401 && !originalRequest._retry)) return [3 /*break*/, 5];
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
135
|
+
if (isRefreshing) {
|
|
136
|
+
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
137
|
+
failedQueue.push({
|
|
138
|
+
resolve: function (token) {
|
|
139
|
+
originalRequest.headers.Authorization = 'Bearer ' + token;
|
|
140
|
+
resolve(PHXAxiosInstance(originalRequest));
|
|
141
|
+
},
|
|
142
|
+
reject: function (err) { return reject(err); }
|
|
143
|
+
});
|
|
144
|
+
})];
|
|
128
145
|
}
|
|
146
|
+
originalRequest._retry = true;
|
|
147
|
+
isRefreshing = true;
|
|
129
148
|
_b.label = 1;
|
|
130
149
|
case 1:
|
|
131
150
|
_b.trys.push([1, 3, 4, 5]);
|
|
132
|
-
return [4 /*yield*/,
|
|
151
|
+
return [4 /*yield*/, refreshAccessToken()];
|
|
133
152
|
case 2:
|
|
134
153
|
newToken = _b.sent();
|
|
154
|
+
processQueue(null, newToken);
|
|
135
155
|
originalRequest.headers.Authorization = "Bearer ".concat(newToken);
|
|
136
156
|
return [2 /*return*/, PHXAxiosInstance(originalRequest)];
|
|
137
157
|
case 3:
|
|
138
158
|
err_3 = _b.sent();
|
|
159
|
+
processQueue(err_3, null);
|
|
139
160
|
return [2 /*return*/, Promise.reject(err_3)];
|
|
140
161
|
case 4:
|
|
141
|
-
|
|
162
|
+
isRefreshing = false;
|
|
142
163
|
return [7 /*endfinally*/];
|
|
143
164
|
case 5: return [2 /*return*/, Promise.reject(error)];
|
|
144
165
|
}
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"axiosInstance.js","sourceRoot":"","sources":["../../src/axiosInstance.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,18 +4,31 @@ import { getEnv } from './read-env-config';
|
|
|
4
4
|
import { COOKIE_REFRESH_TOKEN, loginPage } from './utils/constants';
|
|
5
5
|
import saveCookiesClient from './components/Func/saveCookiesClient';
|
|
6
6
|
import PHXFuncGetCookieSession from './components/Func/getCookieSession';
|
|
7
|
-
import { cookies
|
|
8
|
-
var
|
|
7
|
+
import { cookies, headers } from 'next/headers';
|
|
8
|
+
var isRefreshing = false;
|
|
9
|
+
var failedQueue = [];
|
|
9
10
|
var publicUrl = getEnv('NEXT_PUBLIC_API_GATEWAY', process.env.NEXT_PUBLIC_API_GATEWAY);
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
var
|
|
11
|
+
var internalUrl = getEnv('NEXT_PUBLIC_API_GATEWAY_INTERNAL', process.env.NEXT_PUBLIC_API_GATEWAY_INTERNAL);
|
|
12
|
+
var isServer = typeof window === 'undefined';
|
|
13
|
+
var processQueue = function (error, token) {
|
|
14
|
+
if (token === void 0) { token = null; }
|
|
15
|
+
failedQueue.forEach(function (prom) {
|
|
16
|
+
if (error) {
|
|
17
|
+
prom.reject(error);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
prom.resolve(token);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
failedQueue = [];
|
|
24
|
+
};
|
|
13
25
|
var PHXAxiosInstance = axios.create({
|
|
14
26
|
baseURL: publicUrl
|
|
15
27
|
});
|
|
16
28
|
var getAuthHeaders = function () {
|
|
17
29
|
if (isServer) {
|
|
18
|
-
|
|
30
|
+
// Server-side
|
|
31
|
+
var cookieStore = cookies();
|
|
19
32
|
var cookieHeader = cookieStore
|
|
20
33
|
.getAll()
|
|
21
34
|
.map(function (_a) {
|
|
@@ -25,17 +38,47 @@ var getAuthHeaders = function () {
|
|
|
25
38
|
.join('; ');
|
|
26
39
|
return {
|
|
27
40
|
Cookie: cookieHeader,
|
|
28
|
-
hostname:
|
|
41
|
+
hostname: headers().get('origin')
|
|
29
42
|
};
|
|
30
43
|
}
|
|
31
44
|
return {};
|
|
32
45
|
};
|
|
46
|
+
var refreshAccessToken = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
47
|
+
var response, newToken, currentSession, err_1;
|
|
48
|
+
return __generator(this, function (_a) {
|
|
49
|
+
switch (_a.label) {
|
|
50
|
+
case 0:
|
|
51
|
+
_a.trys.push([0, 2, , 3]);
|
|
52
|
+
return [4 /*yield*/, axios.post("".concat(isServer ? headers().get('origin') : '', "/api/authenticate/refresh-token"), {}, {
|
|
53
|
+
headers: getAuthHeaders()
|
|
54
|
+
})];
|
|
55
|
+
case 1:
|
|
56
|
+
response = _a.sent();
|
|
57
|
+
newToken = response.data.token;
|
|
58
|
+
currentSession = PHXFuncGetCookieSession();
|
|
59
|
+
saveCookiesClient({ value: __assign(__assign({}, currentSession), { access_token: newToken }) });
|
|
60
|
+
if (isServer) {
|
|
61
|
+
// save refresh token from server site
|
|
62
|
+
saveRefreshTokenServer(response);
|
|
63
|
+
}
|
|
64
|
+
return [2 /*return*/, newToken];
|
|
65
|
+
case 2:
|
|
66
|
+
err_1 = _a.sent();
|
|
67
|
+
if (!isServer) {
|
|
68
|
+
// Cookies.remove(COOKIE_SESSION_SIGN_IN)
|
|
69
|
+
window.location.href = loginPage;
|
|
70
|
+
}
|
|
71
|
+
throw err_1;
|
|
72
|
+
case 3: return [2 /*return*/];
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}); };
|
|
33
76
|
var saveRefreshTokenServer = function (response) {
|
|
34
77
|
var _a;
|
|
35
78
|
var setCookieHeader = ((_a = response.headers['set-cookie']) === null || _a === void 0 ? void 0 : _a[0]) || '';
|
|
36
79
|
var match = setCookieHeader.match(/refresh_token=([^;]+)/);
|
|
37
80
|
var refreshToken = (match === null || match === void 0 ? void 0 : match[1]) || '';
|
|
38
|
-
|
|
81
|
+
cookies().set(COOKIE_REFRESH_TOKEN, refreshToken, {
|
|
39
82
|
path: '/',
|
|
40
83
|
httpOnly: true,
|
|
41
84
|
secure: true,
|
|
@@ -43,70 +86,37 @@ var saveRefreshTokenServer = function (response) {
|
|
|
43
86
|
expires: new Date(Date.now() + 365 * 24 * 60 * 60 * 1000)
|
|
44
87
|
});
|
|
45
88
|
};
|
|
46
|
-
var refreshAccessToken = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
47
|
-
return __generator(this, function (_a) {
|
|
48
|
-
if (!refreshPromise) {
|
|
49
|
-
refreshPromise = (function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
50
|
-
var response, newToken, currentSession, err_1;
|
|
51
|
-
return __generator(this, function (_a) {
|
|
52
|
-
switch (_a.label) {
|
|
53
|
-
case 0:
|
|
54
|
-
_a.trys.push([0, 2, 3, 4]);
|
|
55
|
-
return [4 /*yield*/, axios.post("".concat(isServer ? serverHeaders().get('origin') : '', "/api/authenticate/refresh-token"), {}, {
|
|
56
|
-
headers: getAuthHeaders()
|
|
57
|
-
})];
|
|
58
|
-
case 1:
|
|
59
|
-
response = _a.sent();
|
|
60
|
-
newToken = response.data.token;
|
|
61
|
-
currentSession = PHXFuncGetCookieSession();
|
|
62
|
-
// Lưu token mới
|
|
63
|
-
saveCookiesClient({ value: __assign(__assign({}, currentSession), { access_token: newToken }) });
|
|
64
|
-
if (isServer) {
|
|
65
|
-
saveRefreshTokenServer(response);
|
|
66
|
-
}
|
|
67
|
-
return [2 /*return*/, newToken];
|
|
68
|
-
case 2:
|
|
69
|
-
err_1 = _a.sent();
|
|
70
|
-
if (!isServer) {
|
|
71
|
-
// Cookies.remove(COOKIE_SESSION_SIGN_IN)
|
|
72
|
-
window.location.href = loginPage;
|
|
73
|
-
}
|
|
74
|
-
throw err_1;
|
|
75
|
-
case 3:
|
|
76
|
-
refreshPromise = null;
|
|
77
|
-
return [7 /*endfinally*/];
|
|
78
|
-
case 4: return [2 /*return*/];
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
}); })();
|
|
82
|
-
}
|
|
83
|
-
return [2 /*return*/, refreshPromise];
|
|
84
|
-
});
|
|
85
|
-
}); };
|
|
86
89
|
PHXAxiosInstance.interceptors.request.use(function (config) { return __awaiter(void 0, void 0, void 0, function () {
|
|
87
|
-
var currentSession,
|
|
88
|
-
|
|
89
|
-
|
|
90
|
+
var currentSession, authTokenCookie, err_2, newToken;
|
|
91
|
+
var _a;
|
|
92
|
+
return __generator(this, function (_b) {
|
|
93
|
+
switch (_b.label) {
|
|
90
94
|
case 0:
|
|
91
95
|
currentSession = PHXFuncGetCookieSession();
|
|
92
|
-
|
|
93
|
-
if (!
|
|
94
|
-
|
|
96
|
+
authTokenCookie = (currentSession === null || currentSession === void 0 ? void 0 : currentSession.access_token) || null;
|
|
97
|
+
if (!authTokenCookie) return [3 /*break*/, 7];
|
|
98
|
+
config.headers.Authorization = "Bearer ".concat(authTokenCookie);
|
|
99
|
+
if (!isServer) return [3 /*break*/, 7];
|
|
100
|
+
_b.label = 1;
|
|
95
101
|
case 1:
|
|
96
|
-
|
|
97
|
-
return [4 /*yield*/,
|
|
102
|
+
_b.trys.push([1, 3, , 7]);
|
|
103
|
+
return [4 /*yield*/, axios.post("".concat(internalUrl, "/authen/authenticate"), {}, {
|
|
104
|
+
headers: __assign({ Authorization: "Bearer ".concat(authTokenCookie) }, getAuthHeaders())
|
|
105
|
+
})];
|
|
98
106
|
case 2:
|
|
99
|
-
|
|
100
|
-
return [3 /*break*/,
|
|
107
|
+
_b.sent();
|
|
108
|
+
return [3 /*break*/, 7];
|
|
101
109
|
case 3:
|
|
102
|
-
err_2 =
|
|
103
|
-
|
|
104
|
-
return [
|
|
110
|
+
err_2 = _b.sent();
|
|
111
|
+
if (!(((_a = err_2.response) === null || _a === void 0 ? void 0 : _a.status) === 401)) return [3 /*break*/, 5];
|
|
112
|
+
return [4 /*yield*/, refreshAccessToken()];
|
|
105
113
|
case 4:
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
114
|
+
newToken = _b.sent();
|
|
115
|
+
config.headers.Authorization = "Bearer ".concat(newToken);
|
|
116
|
+
return [3 /*break*/, 6];
|
|
117
|
+
case 5: throw err_2;
|
|
118
|
+
case 6: return [3 /*break*/, 7];
|
|
119
|
+
case 7: return [2 /*return*/, config];
|
|
110
120
|
}
|
|
111
121
|
});
|
|
112
122
|
}); });
|
|
@@ -118,23 +128,34 @@ PHXAxiosInstance.interceptors.response.use(function (response) { return response
|
|
|
118
128
|
case 0:
|
|
119
129
|
originalRequest = error.config;
|
|
120
130
|
if (!(((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 401 && !originalRequest._retry)) return [3 /*break*/, 5];
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
131
|
+
if (isRefreshing) {
|
|
132
|
+
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
133
|
+
failedQueue.push({
|
|
134
|
+
resolve: function (token) {
|
|
135
|
+
originalRequest.headers.Authorization = 'Bearer ' + token;
|
|
136
|
+
resolve(PHXAxiosInstance(originalRequest));
|
|
137
|
+
},
|
|
138
|
+
reject: function (err) { return reject(err); }
|
|
139
|
+
});
|
|
140
|
+
})];
|
|
124
141
|
}
|
|
142
|
+
originalRequest._retry = true;
|
|
143
|
+
isRefreshing = true;
|
|
125
144
|
_b.label = 1;
|
|
126
145
|
case 1:
|
|
127
146
|
_b.trys.push([1, 3, 4, 5]);
|
|
128
|
-
return [4 /*yield*/,
|
|
147
|
+
return [4 /*yield*/, refreshAccessToken()];
|
|
129
148
|
case 2:
|
|
130
149
|
newToken = _b.sent();
|
|
150
|
+
processQueue(null, newToken);
|
|
131
151
|
originalRequest.headers.Authorization = "Bearer ".concat(newToken);
|
|
132
152
|
return [2 /*return*/, PHXAxiosInstance(originalRequest)];
|
|
133
153
|
case 3:
|
|
134
154
|
err_3 = _b.sent();
|
|
155
|
+
processQueue(err_3, null);
|
|
135
156
|
return [2 /*return*/, Promise.reject(err_3)];
|
|
136
157
|
case 4:
|
|
137
|
-
|
|
158
|
+
isRefreshing = false;
|
|
138
159
|
return [7 /*endfinally*/];
|
|
139
160
|
case 5: return [2 /*return*/, Promise.reject(error)];
|
|
140
161
|
}
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"axiosInstance.js","sourceRoot":"","sources":["../../src/axiosInstance.ts"],"names":[],"mappings":"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"}
|