@fctc/interface-logic 3.8.9 → 3.8.10

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/configs.js CHANGED
@@ -2276,12 +2276,10 @@ var axiosClient = {
2276
2276
  timeout: 5e4,
2277
2277
  paramsSerializer: (params) => new URLSearchParams(params).toString()
2278
2278
  });
2279
- instance.interceptors.request.use(async (config2) => {
2280
- const useRefreshToken = config2.headers["X-Use-Refresh-Token"] === "true";
2281
- const useActionToken = config2.headers["X-Use-Action-Token"] === "true";
2282
- const actionToken = config2.headers["X-Action-Token"];
2283
- console.log("config", config2);
2284
- console.log("useRefreshToken", useRefreshToken);
2279
+ instance.interceptors.request.use(async (configReq) => {
2280
+ const useRefreshToken = configReq.headers["X-Use-Refresh-Token"] === "true";
2281
+ const useActionToken = configReq.headers["X-Use-Action-Token"] === "true";
2282
+ const actionToken = configReq.headers["X-Action-Token"];
2285
2283
  let token = null;
2286
2284
  if (useActionToken && actionToken) {
2287
2285
  token = actionToken;
@@ -2290,14 +2288,109 @@ var axiosClient = {
2290
2288
  token = await getToken?.();
2291
2289
  }
2292
2290
  if (token) {
2293
- config2.headers["Authorization"] = `Bearer ${token}`;
2291
+ configReq.headers["Authorization"] = `Bearer ${token}`;
2294
2292
  }
2295
2293
  if (database) {
2296
- config2.headers["DATABASE"] = database;
2294
+ configReq.headers["DATABASE"] = database;
2297
2295
  }
2298
- if (token) config2.headers["Authorization"] = `Bearer ${token}`;
2299
- return config2;
2296
+ return configReq;
2300
2297
  }, Promise.reject);
2298
+ const buildRefreshUrl = () => {
2299
+ if (!config.refreshTokenEndpoint) {
2300
+ return `${getBaseUrl(config?.baseUrl)}${"/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`;
2301
+ }
2302
+ const ep = String(config.refreshTokenEndpoint);
2303
+ if (/^https?:\/\//i.test(ep)) return ep;
2304
+ const cleanBase = String(config?.baseUrl || "").replace(/\/$/, "");
2305
+ const cleanEp = ep.startsWith("/") ? ep : `/${ep}`;
2306
+ return `${cleanBase}${cleanEp}`;
2307
+ };
2308
+ instance.interceptors.response.use(
2309
+ (response) => handleResponse(response),
2310
+ async (error) => {
2311
+ const handleError3 = async (err) => {
2312
+ if (!err.response) return err;
2313
+ const { data } = err.response;
2314
+ if (data && data.code === 400 && ["invalid_grant"].includes(data.data?.error)) {
2315
+ await clearAuthToken();
2316
+ }
2317
+ return data;
2318
+ };
2319
+ const originalRequest = error.config;
2320
+ if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
2321
+ error.response.data.code
2322
+ )) {
2323
+ if (isRefreshing) {
2324
+ return new Promise(function(resolve, reject) {
2325
+ failedQueue.push({ resolve, reject });
2326
+ }).then((newToken) => {
2327
+ originalRequest.headers["Authorization"] = "Bearer " + newToken;
2328
+ originalRequest.data = updateTokenParamInOriginalRequest(
2329
+ originalRequest,
2330
+ newToken
2331
+ );
2332
+ return instance.request(originalRequest);
2333
+ }).catch(async (err) => {
2334
+ if ((err.response?.status === 400 || err.response?.status === 401) && ["invalid_grant"].includes(err.response.data.error)) {
2335
+ await clearAuthToken();
2336
+ }
2337
+ });
2338
+ }
2339
+ const browserSession = await sessionStorage2.getBrowserSession();
2340
+ const refreshToken = await localStorage2.getRefreshToken();
2341
+ const accessTokenExp = await localStorage2.getAccessToken();
2342
+ isRefreshing = true;
2343
+ if (!refreshToken && (!browserSession || browserSession == "unActive")) {
2344
+ await clearAuthToken();
2345
+ } else {
2346
+ const payload = Object.fromEntries(
2347
+ Object.entries({
2348
+ refresh_token: refreshToken,
2349
+ grant_type: "refresh_token",
2350
+ client_id: config.config.clientId,
2351
+ client_secret: config.config.clientSecret
2352
+ }).filter(([_, v]) => !!v)
2353
+ );
2354
+ const refreshUrl = buildRefreshUrl();
2355
+ return new Promise(function(resolve) {
2356
+ import_axios.default.post(refreshUrl, payload, {
2357
+ headers: {
2358
+ "Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
2359
+ Authorization: `Bearer ${accessTokenExp}`
2360
+ }
2361
+ }).then(async (res) => {
2362
+ const data = res.data;
2363
+ await localStorage2.setToken(data.access_token);
2364
+ await localStorage2.setRefreshToken(data.refresh_token);
2365
+ import_axios.default.defaults.headers.common["Authorization"] = "Bearer " + data.access_token;
2366
+ originalRequest.headers["Authorization"] = "Bearer " + data.access_token;
2367
+ originalRequest.data = updateTokenParamInOriginalRequest(
2368
+ originalRequest,
2369
+ data.access_token
2370
+ );
2371
+ processQueue(null, data.access_token);
2372
+ resolve(instance.request(originalRequest));
2373
+ }).catch(async (err) => {
2374
+ if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_2FA_006")) {
2375
+ await clearAuthToken();
2376
+ }
2377
+ if (err && err.response) {
2378
+ const { error_code } = err.response?.data || {};
2379
+ const { code } = err;
2380
+ if (error_code === "AUTHEN_FAIL" || code === "ERR_2FA_006") {
2381
+ await clearAuthToken();
2382
+ }
2383
+ }
2384
+ processQueue(err, null);
2385
+ }).finally(() => {
2386
+ isRefreshing = false;
2387
+ });
2388
+ });
2389
+ }
2390
+ }
2391
+ return Promise.reject(await handleError3(error));
2392
+ }
2393
+ );
2301
2394
  instance.interceptors.response.use(
2302
2395
  (response) => {
2303
2396
  return handleResponse(response);
@@ -2317,7 +2410,6 @@ var axiosClient = {
2317
2410
  if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
2318
2411
  error.response.data.code
2319
2412
  )) {
2320
- console.log("isRefreshing", isRefreshing);
2321
2413
  if (isRefreshing) {
2322
2414
  return new Promise(function(resolve, reject) {
2323
2415
  failedQueue.push({ resolve, reject });
@@ -2339,7 +2431,6 @@ var axiosClient = {
2339
2431
  const accessTokenExp = await localStorage2.getAccessToken();
2340
2432
  isRefreshing = true;
2341
2433
  if (!refreshToken && (!browserSession || browserSession == "unActive")) {
2342
- console.log("222");
2343
2434
  await clearAuthToken();
2344
2435
  } else {
2345
2436
  const payload = Object.fromEntries(
@@ -2350,7 +2441,6 @@ var axiosClient = {
2350
2441
  client_secret: config.config.clientSecret
2351
2442
  }).filter(([_, value]) => !!value)
2352
2443
  );
2353
- console.log("111");
2354
2444
  return new Promise(function(resolve) {
2355
2445
  import_axios.default.post(
2356
2446
  `${config?.baseUrl}${config.refreshTokenEndpoint ?? "/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
package/dist/configs.mjs CHANGED
@@ -2240,12 +2240,10 @@ var axiosClient = {
2240
2240
  timeout: 5e4,
2241
2241
  paramsSerializer: (params) => new URLSearchParams(params).toString()
2242
2242
  });
2243
- instance.interceptors.request.use(async (config2) => {
2244
- const useRefreshToken = config2.headers["X-Use-Refresh-Token"] === "true";
2245
- const useActionToken = config2.headers["X-Use-Action-Token"] === "true";
2246
- const actionToken = config2.headers["X-Action-Token"];
2247
- console.log("config", config2);
2248
- console.log("useRefreshToken", useRefreshToken);
2243
+ instance.interceptors.request.use(async (configReq) => {
2244
+ const useRefreshToken = configReq.headers["X-Use-Refresh-Token"] === "true";
2245
+ const useActionToken = configReq.headers["X-Use-Action-Token"] === "true";
2246
+ const actionToken = configReq.headers["X-Action-Token"];
2249
2247
  let token = null;
2250
2248
  if (useActionToken && actionToken) {
2251
2249
  token = actionToken;
@@ -2254,14 +2252,109 @@ var axiosClient = {
2254
2252
  token = await getToken?.();
2255
2253
  }
2256
2254
  if (token) {
2257
- config2.headers["Authorization"] = `Bearer ${token}`;
2255
+ configReq.headers["Authorization"] = `Bearer ${token}`;
2258
2256
  }
2259
2257
  if (database) {
2260
- config2.headers["DATABASE"] = database;
2258
+ configReq.headers["DATABASE"] = database;
2261
2259
  }
2262
- if (token) config2.headers["Authorization"] = `Bearer ${token}`;
2263
- return config2;
2260
+ return configReq;
2264
2261
  }, Promise.reject);
2262
+ const buildRefreshUrl = () => {
2263
+ if (!config.refreshTokenEndpoint) {
2264
+ return `${getBaseUrl(config?.baseUrl)}${"/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`;
2265
+ }
2266
+ const ep = String(config.refreshTokenEndpoint);
2267
+ if (/^https?:\/\//i.test(ep)) return ep;
2268
+ const cleanBase = String(config?.baseUrl || "").replace(/\/$/, "");
2269
+ const cleanEp = ep.startsWith("/") ? ep : `/${ep}`;
2270
+ return `${cleanBase}${cleanEp}`;
2271
+ };
2272
+ instance.interceptors.response.use(
2273
+ (response) => handleResponse(response),
2274
+ async (error) => {
2275
+ const handleError3 = async (err) => {
2276
+ if (!err.response) return err;
2277
+ const { data } = err.response;
2278
+ if (data && data.code === 400 && ["invalid_grant"].includes(data.data?.error)) {
2279
+ await clearAuthToken();
2280
+ }
2281
+ return data;
2282
+ };
2283
+ const originalRequest = error.config;
2284
+ if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
2285
+ error.response.data.code
2286
+ )) {
2287
+ if (isRefreshing) {
2288
+ return new Promise(function(resolve, reject) {
2289
+ failedQueue.push({ resolve, reject });
2290
+ }).then((newToken) => {
2291
+ originalRequest.headers["Authorization"] = "Bearer " + newToken;
2292
+ originalRequest.data = updateTokenParamInOriginalRequest(
2293
+ originalRequest,
2294
+ newToken
2295
+ );
2296
+ return instance.request(originalRequest);
2297
+ }).catch(async (err) => {
2298
+ if ((err.response?.status === 400 || err.response?.status === 401) && ["invalid_grant"].includes(err.response.data.error)) {
2299
+ await clearAuthToken();
2300
+ }
2301
+ });
2302
+ }
2303
+ const browserSession = await sessionStorage2.getBrowserSession();
2304
+ const refreshToken = await localStorage2.getRefreshToken();
2305
+ const accessTokenExp = await localStorage2.getAccessToken();
2306
+ isRefreshing = true;
2307
+ if (!refreshToken && (!browserSession || browserSession == "unActive")) {
2308
+ await clearAuthToken();
2309
+ } else {
2310
+ const payload = Object.fromEntries(
2311
+ Object.entries({
2312
+ refresh_token: refreshToken,
2313
+ grant_type: "refresh_token",
2314
+ client_id: config.config.clientId,
2315
+ client_secret: config.config.clientSecret
2316
+ }).filter(([_, v]) => !!v)
2317
+ );
2318
+ const refreshUrl = buildRefreshUrl();
2319
+ return new Promise(function(resolve) {
2320
+ axios.post(refreshUrl, payload, {
2321
+ headers: {
2322
+ "Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
2323
+ Authorization: `Bearer ${accessTokenExp}`
2324
+ }
2325
+ }).then(async (res) => {
2326
+ const data = res.data;
2327
+ await localStorage2.setToken(data.access_token);
2328
+ await localStorage2.setRefreshToken(data.refresh_token);
2329
+ axios.defaults.headers.common["Authorization"] = "Bearer " + data.access_token;
2330
+ originalRequest.headers["Authorization"] = "Bearer " + data.access_token;
2331
+ originalRequest.data = updateTokenParamInOriginalRequest(
2332
+ originalRequest,
2333
+ data.access_token
2334
+ );
2335
+ processQueue(null, data.access_token);
2336
+ resolve(instance.request(originalRequest));
2337
+ }).catch(async (err) => {
2338
+ if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_2FA_006")) {
2339
+ await clearAuthToken();
2340
+ }
2341
+ if (err && err.response) {
2342
+ const { error_code } = err.response?.data || {};
2343
+ const { code } = err;
2344
+ if (error_code === "AUTHEN_FAIL" || code === "ERR_2FA_006") {
2345
+ await clearAuthToken();
2346
+ }
2347
+ }
2348
+ processQueue(err, null);
2349
+ }).finally(() => {
2350
+ isRefreshing = false;
2351
+ });
2352
+ });
2353
+ }
2354
+ }
2355
+ return Promise.reject(await handleError3(error));
2356
+ }
2357
+ );
2265
2358
  instance.interceptors.response.use(
2266
2359
  (response) => {
2267
2360
  return handleResponse(response);
@@ -2281,7 +2374,6 @@ var axiosClient = {
2281
2374
  if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
2282
2375
  error.response.data.code
2283
2376
  )) {
2284
- console.log("isRefreshing", isRefreshing);
2285
2377
  if (isRefreshing) {
2286
2378
  return new Promise(function(resolve, reject) {
2287
2379
  failedQueue.push({ resolve, reject });
@@ -2303,7 +2395,6 @@ var axiosClient = {
2303
2395
  const accessTokenExp = await localStorage2.getAccessToken();
2304
2396
  isRefreshing = true;
2305
2397
  if (!refreshToken && (!browserSession || browserSession == "unActive")) {
2306
- console.log("222");
2307
2398
  await clearAuthToken();
2308
2399
  } else {
2309
2400
  const payload = Object.fromEntries(
@@ -2314,7 +2405,6 @@ var axiosClient = {
2314
2405
  client_secret: config.config.clientSecret
2315
2406
  }).filter(([_, value]) => !!value)
2316
2407
  );
2317
- console.log("111");
2318
2408
  return new Promise(function(resolve) {
2319
2409
  axios.post(
2320
2410
  `${config?.baseUrl}${config.refreshTokenEndpoint ?? "/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
@@ -2278,12 +2278,10 @@ var axiosClient = {
2278
2278
  timeout: 5e4,
2279
2279
  paramsSerializer: (params) => new URLSearchParams(params).toString()
2280
2280
  });
2281
- instance.interceptors.request.use(async (config2) => {
2282
- const useRefreshToken = config2.headers["X-Use-Refresh-Token"] === "true";
2283
- const useActionToken = config2.headers["X-Use-Action-Token"] === "true";
2284
- const actionToken = config2.headers["X-Action-Token"];
2285
- console.log("config", config2);
2286
- console.log("useRefreshToken", useRefreshToken);
2281
+ instance.interceptors.request.use(async (configReq) => {
2282
+ const useRefreshToken = configReq.headers["X-Use-Refresh-Token"] === "true";
2283
+ const useActionToken = configReq.headers["X-Use-Action-Token"] === "true";
2284
+ const actionToken = configReq.headers["X-Action-Token"];
2287
2285
  let token = null;
2288
2286
  if (useActionToken && actionToken) {
2289
2287
  token = actionToken;
@@ -2292,14 +2290,109 @@ var axiosClient = {
2292
2290
  token = await getToken?.();
2293
2291
  }
2294
2292
  if (token) {
2295
- config2.headers["Authorization"] = `Bearer ${token}`;
2293
+ configReq.headers["Authorization"] = `Bearer ${token}`;
2296
2294
  }
2297
2295
  if (database) {
2298
- config2.headers["DATABASE"] = database;
2296
+ configReq.headers["DATABASE"] = database;
2299
2297
  }
2300
- if (token) config2.headers["Authorization"] = `Bearer ${token}`;
2301
- return config2;
2298
+ return configReq;
2302
2299
  }, Promise.reject);
2300
+ const buildRefreshUrl = () => {
2301
+ if (!config.refreshTokenEndpoint) {
2302
+ return `${getBaseUrl(config?.baseUrl)}${"/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`;
2303
+ }
2304
+ const ep = String(config.refreshTokenEndpoint);
2305
+ if (/^https?:\/\//i.test(ep)) return ep;
2306
+ const cleanBase = String(config?.baseUrl || "").replace(/\/$/, "");
2307
+ const cleanEp = ep.startsWith("/") ? ep : `/${ep}`;
2308
+ return `${cleanBase}${cleanEp}`;
2309
+ };
2310
+ instance.interceptors.response.use(
2311
+ (response) => handleResponse(response),
2312
+ async (error) => {
2313
+ const handleError3 = async (err) => {
2314
+ if (!err.response) return err;
2315
+ const { data } = err.response;
2316
+ if (data && data.code === 400 && ["invalid_grant"].includes(data.data?.error)) {
2317
+ await clearAuthToken();
2318
+ }
2319
+ return data;
2320
+ };
2321
+ const originalRequest = error.config;
2322
+ if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
2323
+ error.response.data.code
2324
+ )) {
2325
+ if (isRefreshing) {
2326
+ return new Promise(function(resolve, reject) {
2327
+ failedQueue.push({ resolve, reject });
2328
+ }).then((newToken) => {
2329
+ originalRequest.headers["Authorization"] = "Bearer " + newToken;
2330
+ originalRequest.data = updateTokenParamInOriginalRequest(
2331
+ originalRequest,
2332
+ newToken
2333
+ );
2334
+ return instance.request(originalRequest);
2335
+ }).catch(async (err) => {
2336
+ if ((err.response?.status === 400 || err.response?.status === 401) && ["invalid_grant"].includes(err.response.data.error)) {
2337
+ await clearAuthToken();
2338
+ }
2339
+ });
2340
+ }
2341
+ const browserSession = await sessionStorage2.getBrowserSession();
2342
+ const refreshToken = await localStorage2.getRefreshToken();
2343
+ const accessTokenExp = await localStorage2.getAccessToken();
2344
+ isRefreshing = true;
2345
+ if (!refreshToken && (!browserSession || browserSession == "unActive")) {
2346
+ await clearAuthToken();
2347
+ } else {
2348
+ const payload = Object.fromEntries(
2349
+ Object.entries({
2350
+ refresh_token: refreshToken,
2351
+ grant_type: "refresh_token",
2352
+ client_id: config.config.clientId,
2353
+ client_secret: config.config.clientSecret
2354
+ }).filter(([_, v]) => !!v)
2355
+ );
2356
+ const refreshUrl = buildRefreshUrl();
2357
+ return new Promise(function(resolve) {
2358
+ import_axios.default.post(refreshUrl, payload, {
2359
+ headers: {
2360
+ "Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
2361
+ Authorization: `Bearer ${accessTokenExp}`
2362
+ }
2363
+ }).then(async (res) => {
2364
+ const data = res.data;
2365
+ await localStorage2.setToken(data.access_token);
2366
+ await localStorage2.setRefreshToken(data.refresh_token);
2367
+ import_axios.default.defaults.headers.common["Authorization"] = "Bearer " + data.access_token;
2368
+ originalRequest.headers["Authorization"] = "Bearer " + data.access_token;
2369
+ originalRequest.data = updateTokenParamInOriginalRequest(
2370
+ originalRequest,
2371
+ data.access_token
2372
+ );
2373
+ processQueue(null, data.access_token);
2374
+ resolve(instance.request(originalRequest));
2375
+ }).catch(async (err) => {
2376
+ if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_2FA_006")) {
2377
+ await clearAuthToken();
2378
+ }
2379
+ if (err && err.response) {
2380
+ const { error_code } = err.response?.data || {};
2381
+ const { code } = err;
2382
+ if (error_code === "AUTHEN_FAIL" || code === "ERR_2FA_006") {
2383
+ await clearAuthToken();
2384
+ }
2385
+ }
2386
+ processQueue(err, null);
2387
+ }).finally(() => {
2388
+ isRefreshing = false;
2389
+ });
2390
+ });
2391
+ }
2392
+ }
2393
+ return Promise.reject(await handleError3(error));
2394
+ }
2395
+ );
2303
2396
  instance.interceptors.response.use(
2304
2397
  (response) => {
2305
2398
  return handleResponse(response);
@@ -2319,7 +2412,6 @@ var axiosClient = {
2319
2412
  if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
2320
2413
  error.response.data.code
2321
2414
  )) {
2322
- console.log("isRefreshing", isRefreshing);
2323
2415
  if (isRefreshing) {
2324
2416
  return new Promise(function(resolve, reject) {
2325
2417
  failedQueue.push({ resolve, reject });
@@ -2341,7 +2433,6 @@ var axiosClient = {
2341
2433
  const accessTokenExp = await localStorage2.getAccessToken();
2342
2434
  isRefreshing = true;
2343
2435
  if (!refreshToken && (!browserSession || browserSession == "unActive")) {
2344
- console.log("222");
2345
2436
  await clearAuthToken();
2346
2437
  } else {
2347
2438
  const payload = Object.fromEntries(
@@ -2352,7 +2443,6 @@ var axiosClient = {
2352
2443
  client_secret: config.config.clientSecret
2353
2444
  }).filter(([_, value]) => !!value)
2354
2445
  );
2355
- console.log("111");
2356
2446
  return new Promise(function(resolve) {
2357
2447
  import_axios.default.post(
2358
2448
  `${config?.baseUrl}${config.refreshTokenEndpoint ?? "/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
@@ -2240,12 +2240,10 @@ var axiosClient = {
2240
2240
  timeout: 5e4,
2241
2241
  paramsSerializer: (params) => new URLSearchParams(params).toString()
2242
2242
  });
2243
- instance.interceptors.request.use(async (config2) => {
2244
- const useRefreshToken = config2.headers["X-Use-Refresh-Token"] === "true";
2245
- const useActionToken = config2.headers["X-Use-Action-Token"] === "true";
2246
- const actionToken = config2.headers["X-Action-Token"];
2247
- console.log("config", config2);
2248
- console.log("useRefreshToken", useRefreshToken);
2243
+ instance.interceptors.request.use(async (configReq) => {
2244
+ const useRefreshToken = configReq.headers["X-Use-Refresh-Token"] === "true";
2245
+ const useActionToken = configReq.headers["X-Use-Action-Token"] === "true";
2246
+ const actionToken = configReq.headers["X-Action-Token"];
2249
2247
  let token = null;
2250
2248
  if (useActionToken && actionToken) {
2251
2249
  token = actionToken;
@@ -2254,14 +2252,109 @@ var axiosClient = {
2254
2252
  token = await getToken?.();
2255
2253
  }
2256
2254
  if (token) {
2257
- config2.headers["Authorization"] = `Bearer ${token}`;
2255
+ configReq.headers["Authorization"] = `Bearer ${token}`;
2258
2256
  }
2259
2257
  if (database) {
2260
- config2.headers["DATABASE"] = database;
2258
+ configReq.headers["DATABASE"] = database;
2261
2259
  }
2262
- if (token) config2.headers["Authorization"] = `Bearer ${token}`;
2263
- return config2;
2260
+ return configReq;
2264
2261
  }, Promise.reject);
2262
+ const buildRefreshUrl = () => {
2263
+ if (!config.refreshTokenEndpoint) {
2264
+ return `${getBaseUrl(config?.baseUrl)}${"/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`;
2265
+ }
2266
+ const ep = String(config.refreshTokenEndpoint);
2267
+ if (/^https?:\/\//i.test(ep)) return ep;
2268
+ const cleanBase = String(config?.baseUrl || "").replace(/\/$/, "");
2269
+ const cleanEp = ep.startsWith("/") ? ep : `/${ep}`;
2270
+ return `${cleanBase}${cleanEp}`;
2271
+ };
2272
+ instance.interceptors.response.use(
2273
+ (response) => handleResponse(response),
2274
+ async (error) => {
2275
+ const handleError3 = async (err) => {
2276
+ if (!err.response) return err;
2277
+ const { data } = err.response;
2278
+ if (data && data.code === 400 && ["invalid_grant"].includes(data.data?.error)) {
2279
+ await clearAuthToken();
2280
+ }
2281
+ return data;
2282
+ };
2283
+ const originalRequest = error.config;
2284
+ if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
2285
+ error.response.data.code
2286
+ )) {
2287
+ if (isRefreshing) {
2288
+ return new Promise(function(resolve, reject) {
2289
+ failedQueue.push({ resolve, reject });
2290
+ }).then((newToken) => {
2291
+ originalRequest.headers["Authorization"] = "Bearer " + newToken;
2292
+ originalRequest.data = updateTokenParamInOriginalRequest(
2293
+ originalRequest,
2294
+ newToken
2295
+ );
2296
+ return instance.request(originalRequest);
2297
+ }).catch(async (err) => {
2298
+ if ((err.response?.status === 400 || err.response?.status === 401) && ["invalid_grant"].includes(err.response.data.error)) {
2299
+ await clearAuthToken();
2300
+ }
2301
+ });
2302
+ }
2303
+ const browserSession = await sessionStorage2.getBrowserSession();
2304
+ const refreshToken = await localStorage2.getRefreshToken();
2305
+ const accessTokenExp = await localStorage2.getAccessToken();
2306
+ isRefreshing = true;
2307
+ if (!refreshToken && (!browserSession || browserSession == "unActive")) {
2308
+ await clearAuthToken();
2309
+ } else {
2310
+ const payload = Object.fromEntries(
2311
+ Object.entries({
2312
+ refresh_token: refreshToken,
2313
+ grant_type: "refresh_token",
2314
+ client_id: config.config.clientId,
2315
+ client_secret: config.config.clientSecret
2316
+ }).filter(([_, v]) => !!v)
2317
+ );
2318
+ const refreshUrl = buildRefreshUrl();
2319
+ return new Promise(function(resolve) {
2320
+ axios.post(refreshUrl, payload, {
2321
+ headers: {
2322
+ "Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
2323
+ Authorization: `Bearer ${accessTokenExp}`
2324
+ }
2325
+ }).then(async (res) => {
2326
+ const data = res.data;
2327
+ await localStorage2.setToken(data.access_token);
2328
+ await localStorage2.setRefreshToken(data.refresh_token);
2329
+ axios.defaults.headers.common["Authorization"] = "Bearer " + data.access_token;
2330
+ originalRequest.headers["Authorization"] = "Bearer " + data.access_token;
2331
+ originalRequest.data = updateTokenParamInOriginalRequest(
2332
+ originalRequest,
2333
+ data.access_token
2334
+ );
2335
+ processQueue(null, data.access_token);
2336
+ resolve(instance.request(originalRequest));
2337
+ }).catch(async (err) => {
2338
+ if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_2FA_006")) {
2339
+ await clearAuthToken();
2340
+ }
2341
+ if (err && err.response) {
2342
+ const { error_code } = err.response?.data || {};
2343
+ const { code } = err;
2344
+ if (error_code === "AUTHEN_FAIL" || code === "ERR_2FA_006") {
2345
+ await clearAuthToken();
2346
+ }
2347
+ }
2348
+ processQueue(err, null);
2349
+ }).finally(() => {
2350
+ isRefreshing = false;
2351
+ });
2352
+ });
2353
+ }
2354
+ }
2355
+ return Promise.reject(await handleError3(error));
2356
+ }
2357
+ );
2265
2358
  instance.interceptors.response.use(
2266
2359
  (response) => {
2267
2360
  return handleResponse(response);
@@ -2281,7 +2374,6 @@ var axiosClient = {
2281
2374
  if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
2282
2375
  error.response.data.code
2283
2376
  )) {
2284
- console.log("isRefreshing", isRefreshing);
2285
2377
  if (isRefreshing) {
2286
2378
  return new Promise(function(resolve, reject) {
2287
2379
  failedQueue.push({ resolve, reject });
@@ -2303,7 +2395,6 @@ var axiosClient = {
2303
2395
  const accessTokenExp = await localStorage2.getAccessToken();
2304
2396
  isRefreshing = true;
2305
2397
  if (!refreshToken && (!browserSession || browserSession == "unActive")) {
2306
- console.log("222");
2307
2398
  await clearAuthToken();
2308
2399
  } else {
2309
2400
  const payload = Object.fromEntries(
@@ -2314,7 +2405,6 @@ var axiosClient = {
2314
2405
  client_secret: config.config.clientSecret
2315
2406
  }).filter(([_, value]) => !!value)
2316
2407
  );
2317
- console.log("111");
2318
2408
  return new Promise(function(resolve) {
2319
2409
  axios.post(
2320
2410
  `${config?.baseUrl}${config.refreshTokenEndpoint ?? "/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
package/dist/provider.js CHANGED
@@ -5915,12 +5915,10 @@ var axiosClient = {
5915
5915
  timeout: 5e4,
5916
5916
  paramsSerializer: (params) => new URLSearchParams(params).toString()
5917
5917
  });
5918
- instance.interceptors.request.use(async (config2) => {
5919
- const useRefreshToken = config2.headers["X-Use-Refresh-Token"] === "true";
5920
- const useActionToken = config2.headers["X-Use-Action-Token"] === "true";
5921
- const actionToken = config2.headers["X-Action-Token"];
5922
- console.log("config", config2);
5923
- console.log("useRefreshToken", useRefreshToken);
5918
+ instance.interceptors.request.use(async (configReq) => {
5919
+ const useRefreshToken = configReq.headers["X-Use-Refresh-Token"] === "true";
5920
+ const useActionToken = configReq.headers["X-Use-Action-Token"] === "true";
5921
+ const actionToken = configReq.headers["X-Action-Token"];
5924
5922
  let token = null;
5925
5923
  if (useActionToken && actionToken) {
5926
5924
  token = actionToken;
@@ -5929,14 +5927,109 @@ var axiosClient = {
5929
5927
  token = await getToken?.();
5930
5928
  }
5931
5929
  if (token) {
5932
- config2.headers["Authorization"] = `Bearer ${token}`;
5930
+ configReq.headers["Authorization"] = `Bearer ${token}`;
5933
5931
  }
5934
5932
  if (database) {
5935
- config2.headers["DATABASE"] = database;
5933
+ configReq.headers["DATABASE"] = database;
5936
5934
  }
5937
- if (token) config2.headers["Authorization"] = `Bearer ${token}`;
5938
- return config2;
5935
+ return configReq;
5939
5936
  }, Promise.reject);
5937
+ const buildRefreshUrl = () => {
5938
+ if (!config.refreshTokenEndpoint) {
5939
+ return `${getBaseUrl(config?.baseUrl)}${"/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`;
5940
+ }
5941
+ const ep = String(config.refreshTokenEndpoint);
5942
+ if (/^https?:\/\//i.test(ep)) return ep;
5943
+ const cleanBase = String(config?.baseUrl || "").replace(/\/$/, "");
5944
+ const cleanEp = ep.startsWith("/") ? ep : `/${ep}`;
5945
+ return `${cleanBase}${cleanEp}`;
5946
+ };
5947
+ instance.interceptors.response.use(
5948
+ (response) => handleResponse(response),
5949
+ async (error) => {
5950
+ const handleError3 = async (err) => {
5951
+ if (!err.response) return err;
5952
+ const { data } = err.response;
5953
+ if (data && data.code === 400 && ["invalid_grant"].includes(data.data?.error)) {
5954
+ await clearAuthToken();
5955
+ }
5956
+ return data;
5957
+ };
5958
+ const originalRequest = error.config;
5959
+ if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
5960
+ error.response.data.code
5961
+ )) {
5962
+ if (isRefreshing) {
5963
+ return new Promise(function(resolve, reject) {
5964
+ failedQueue.push({ resolve, reject });
5965
+ }).then((newToken) => {
5966
+ originalRequest.headers["Authorization"] = "Bearer " + newToken;
5967
+ originalRequest.data = updateTokenParamInOriginalRequest(
5968
+ originalRequest,
5969
+ newToken
5970
+ );
5971
+ return instance.request(originalRequest);
5972
+ }).catch(async (err) => {
5973
+ if ((err.response?.status === 400 || err.response?.status === 401) && ["invalid_grant"].includes(err.response.data.error)) {
5974
+ await clearAuthToken();
5975
+ }
5976
+ });
5977
+ }
5978
+ const browserSession = await sessionStorage2.getBrowserSession();
5979
+ const refreshToken = await localStorage2.getRefreshToken();
5980
+ const accessTokenExp = await localStorage2.getAccessToken();
5981
+ isRefreshing = true;
5982
+ if (!refreshToken && (!browserSession || browserSession == "unActive")) {
5983
+ await clearAuthToken();
5984
+ } else {
5985
+ const payload = Object.fromEntries(
5986
+ Object.entries({
5987
+ refresh_token: refreshToken,
5988
+ grant_type: "refresh_token",
5989
+ client_id: config.config.clientId,
5990
+ client_secret: config.config.clientSecret
5991
+ }).filter(([_, v]) => !!v)
5992
+ );
5993
+ const refreshUrl = buildRefreshUrl();
5994
+ return new Promise(function(resolve) {
5995
+ import_axios.default.post(refreshUrl, payload, {
5996
+ headers: {
5997
+ "Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
5998
+ Authorization: `Bearer ${accessTokenExp}`
5999
+ }
6000
+ }).then(async (res) => {
6001
+ const data = res.data;
6002
+ await localStorage2.setToken(data.access_token);
6003
+ await localStorage2.setRefreshToken(data.refresh_token);
6004
+ import_axios.default.defaults.headers.common["Authorization"] = "Bearer " + data.access_token;
6005
+ originalRequest.headers["Authorization"] = "Bearer " + data.access_token;
6006
+ originalRequest.data = updateTokenParamInOriginalRequest(
6007
+ originalRequest,
6008
+ data.access_token
6009
+ );
6010
+ processQueue(null, data.access_token);
6011
+ resolve(instance.request(originalRequest));
6012
+ }).catch(async (err) => {
6013
+ if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_2FA_006")) {
6014
+ await clearAuthToken();
6015
+ }
6016
+ if (err && err.response) {
6017
+ const { error_code } = err.response?.data || {};
6018
+ const { code } = err;
6019
+ if (error_code === "AUTHEN_FAIL" || code === "ERR_2FA_006") {
6020
+ await clearAuthToken();
6021
+ }
6022
+ }
6023
+ processQueue(err, null);
6024
+ }).finally(() => {
6025
+ isRefreshing = false;
6026
+ });
6027
+ });
6028
+ }
6029
+ }
6030
+ return Promise.reject(await handleError3(error));
6031
+ }
6032
+ );
5940
6033
  instance.interceptors.response.use(
5941
6034
  (response) => {
5942
6035
  return handleResponse(response);
@@ -5956,7 +6049,6 @@ var axiosClient = {
5956
6049
  if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
5957
6050
  error.response.data.code
5958
6051
  )) {
5959
- console.log("isRefreshing", isRefreshing);
5960
6052
  if (isRefreshing) {
5961
6053
  return new Promise(function(resolve, reject) {
5962
6054
  failedQueue.push({ resolve, reject });
@@ -5978,7 +6070,6 @@ var axiosClient = {
5978
6070
  const accessTokenExp = await localStorage2.getAccessToken();
5979
6071
  isRefreshing = true;
5980
6072
  if (!refreshToken && (!browserSession || browserSession == "unActive")) {
5981
- console.log("222");
5982
6073
  await clearAuthToken();
5983
6074
  } else {
5984
6075
  const payload = Object.fromEntries(
@@ -5989,7 +6080,6 @@ var axiosClient = {
5989
6080
  client_secret: config.config.clientSecret
5990
6081
  }).filter(([_, value]) => !!value)
5991
6082
  );
5992
- console.log("111");
5993
6083
  return new Promise(function(resolve) {
5994
6084
  import_axios.default.post(
5995
6085
  `${config?.baseUrl}${config.refreshTokenEndpoint ?? "/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
package/dist/provider.mjs CHANGED
@@ -5872,12 +5872,10 @@ var axiosClient = {
5872
5872
  timeout: 5e4,
5873
5873
  paramsSerializer: (params) => new URLSearchParams(params).toString()
5874
5874
  });
5875
- instance.interceptors.request.use(async (config2) => {
5876
- const useRefreshToken = config2.headers["X-Use-Refresh-Token"] === "true";
5877
- const useActionToken = config2.headers["X-Use-Action-Token"] === "true";
5878
- const actionToken = config2.headers["X-Action-Token"];
5879
- console.log("config", config2);
5880
- console.log("useRefreshToken", useRefreshToken);
5875
+ instance.interceptors.request.use(async (configReq) => {
5876
+ const useRefreshToken = configReq.headers["X-Use-Refresh-Token"] === "true";
5877
+ const useActionToken = configReq.headers["X-Use-Action-Token"] === "true";
5878
+ const actionToken = configReq.headers["X-Action-Token"];
5881
5879
  let token = null;
5882
5880
  if (useActionToken && actionToken) {
5883
5881
  token = actionToken;
@@ -5886,14 +5884,109 @@ var axiosClient = {
5886
5884
  token = await getToken?.();
5887
5885
  }
5888
5886
  if (token) {
5889
- config2.headers["Authorization"] = `Bearer ${token}`;
5887
+ configReq.headers["Authorization"] = `Bearer ${token}`;
5890
5888
  }
5891
5889
  if (database) {
5892
- config2.headers["DATABASE"] = database;
5890
+ configReq.headers["DATABASE"] = database;
5893
5891
  }
5894
- if (token) config2.headers["Authorization"] = `Bearer ${token}`;
5895
- return config2;
5892
+ return configReq;
5896
5893
  }, Promise.reject);
5894
+ const buildRefreshUrl = () => {
5895
+ if (!config.refreshTokenEndpoint) {
5896
+ return `${getBaseUrl(config?.baseUrl)}${"/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`;
5897
+ }
5898
+ const ep = String(config.refreshTokenEndpoint);
5899
+ if (/^https?:\/\//i.test(ep)) return ep;
5900
+ const cleanBase = String(config?.baseUrl || "").replace(/\/$/, "");
5901
+ const cleanEp = ep.startsWith("/") ? ep : `/${ep}`;
5902
+ return `${cleanBase}${cleanEp}`;
5903
+ };
5904
+ instance.interceptors.response.use(
5905
+ (response) => handleResponse(response),
5906
+ async (error) => {
5907
+ const handleError3 = async (err) => {
5908
+ if (!err.response) return err;
5909
+ const { data } = err.response;
5910
+ if (data && data.code === 400 && ["invalid_grant"].includes(data.data?.error)) {
5911
+ await clearAuthToken();
5912
+ }
5913
+ return data;
5914
+ };
5915
+ const originalRequest = error.config;
5916
+ if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
5917
+ error.response.data.code
5918
+ )) {
5919
+ if (isRefreshing) {
5920
+ return new Promise(function(resolve, reject) {
5921
+ failedQueue.push({ resolve, reject });
5922
+ }).then((newToken) => {
5923
+ originalRequest.headers["Authorization"] = "Bearer " + newToken;
5924
+ originalRequest.data = updateTokenParamInOriginalRequest(
5925
+ originalRequest,
5926
+ newToken
5927
+ );
5928
+ return instance.request(originalRequest);
5929
+ }).catch(async (err) => {
5930
+ if ((err.response?.status === 400 || err.response?.status === 401) && ["invalid_grant"].includes(err.response.data.error)) {
5931
+ await clearAuthToken();
5932
+ }
5933
+ });
5934
+ }
5935
+ const browserSession = await sessionStorage2.getBrowserSession();
5936
+ const refreshToken = await localStorage2.getRefreshToken();
5937
+ const accessTokenExp = await localStorage2.getAccessToken();
5938
+ isRefreshing = true;
5939
+ if (!refreshToken && (!browserSession || browserSession == "unActive")) {
5940
+ await clearAuthToken();
5941
+ } else {
5942
+ const payload = Object.fromEntries(
5943
+ Object.entries({
5944
+ refresh_token: refreshToken,
5945
+ grant_type: "refresh_token",
5946
+ client_id: config.config.clientId,
5947
+ client_secret: config.config.clientSecret
5948
+ }).filter(([_, v]) => !!v)
5949
+ );
5950
+ const refreshUrl = buildRefreshUrl();
5951
+ return new Promise(function(resolve) {
5952
+ axios.post(refreshUrl, payload, {
5953
+ headers: {
5954
+ "Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
5955
+ Authorization: `Bearer ${accessTokenExp}`
5956
+ }
5957
+ }).then(async (res) => {
5958
+ const data = res.data;
5959
+ await localStorage2.setToken(data.access_token);
5960
+ await localStorage2.setRefreshToken(data.refresh_token);
5961
+ axios.defaults.headers.common["Authorization"] = "Bearer " + data.access_token;
5962
+ originalRequest.headers["Authorization"] = "Bearer " + data.access_token;
5963
+ originalRequest.data = updateTokenParamInOriginalRequest(
5964
+ originalRequest,
5965
+ data.access_token
5966
+ );
5967
+ processQueue(null, data.access_token);
5968
+ resolve(instance.request(originalRequest));
5969
+ }).catch(async (err) => {
5970
+ if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_2FA_006")) {
5971
+ await clearAuthToken();
5972
+ }
5973
+ if (err && err.response) {
5974
+ const { error_code } = err.response?.data || {};
5975
+ const { code } = err;
5976
+ if (error_code === "AUTHEN_FAIL" || code === "ERR_2FA_006") {
5977
+ await clearAuthToken();
5978
+ }
5979
+ }
5980
+ processQueue(err, null);
5981
+ }).finally(() => {
5982
+ isRefreshing = false;
5983
+ });
5984
+ });
5985
+ }
5986
+ }
5987
+ return Promise.reject(await handleError3(error));
5988
+ }
5989
+ );
5897
5990
  instance.interceptors.response.use(
5898
5991
  (response) => {
5899
5992
  return handleResponse(response);
@@ -5913,7 +6006,6 @@ var axiosClient = {
5913
6006
  if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
5914
6007
  error.response.data.code
5915
6008
  )) {
5916
- console.log("isRefreshing", isRefreshing);
5917
6009
  if (isRefreshing) {
5918
6010
  return new Promise(function(resolve, reject) {
5919
6011
  failedQueue.push({ resolve, reject });
@@ -5935,7 +6027,6 @@ var axiosClient = {
5935
6027
  const accessTokenExp = await localStorage2.getAccessToken();
5936
6028
  isRefreshing = true;
5937
6029
  if (!refreshToken && (!browserSession || browserSession == "unActive")) {
5938
- console.log("222");
5939
6030
  await clearAuthToken();
5940
6031
  } else {
5941
6032
  const payload = Object.fromEntries(
@@ -5946,7 +6037,6 @@ var axiosClient = {
5946
6037
  client_secret: config.config.clientSecret
5947
6038
  }).filter(([_, value]) => !!value)
5948
6039
  );
5949
- console.log("111");
5950
6040
  return new Promise(function(resolve) {
5951
6041
  axios.post(
5952
6042
  `${config?.baseUrl}${config.refreshTokenEndpoint ?? "/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fctc/interface-logic",
3
- "version": "3.8.9",
3
+ "version": "3.8.10",
4
4
  "types": "dist/index.d.ts",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.mjs",