UNPKG

@hybris-software/use-query

Version:
100 lines (99 loc) 3.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateApiClient = generateApiClient; exports.generateJwtApiClient = generateJwtApiClient; require("core-js/modules/es.promise.js"); require("core-js/modules/web.dom-collections.iterator.js"); var _axios = _interopRequireDefault(require("axios")); var _parseJwt = _interopRequireDefault(require("../Utils/parseJwt")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function generateApiClient(_ref) { let { baseUrl = "", timeout = 5000, authorizationHeader = "Authorization", authorizationPrefix = "Bearer ", localStorageKey = "token", acceptLanguage = "en-en" } = _ref; const apiClient = _axios.default.create({ baseURL: baseUrl, timeout: timeout, headers: { "Content-Type": "application/json", Accept: "application/json", "Accept-Language": acceptLanguage } }); apiClient.interceptors.request.use(function (config) { config.headers = config.headers || {}; const token = localStorage.getItem(localStorageKey) || sessionStorage.getItem(localStorageKey); if (token) { config.headers[authorizationHeader] = "".concat(authorizationPrefix).concat(token); } return config; }, function (error) { return Promise.reject(error); }); apiClient.interceptors.response.use(function (response) { return response; }, function (error) { return Promise.reject(error); }); return apiClient; } function generateJwtApiClient(_ref2) { let { baseUrl = "", timeout = 5000, authorizationHeader = "Authorization", authorizationPrefix = "Bearer ", accessTokenLocalStorageKey = "accessToken", refreshTokenLocalStorageKey = "refreshToken", refreshTokenFunction = undefined } = _ref2; const apiClient = _axios.default.create({ baseURL: baseUrl, timeout: timeout, headers: { "Content-Type": "application/json", Accept: "application/json" } }); apiClient.interceptors.request.use(async function (config) { config.headers = config.headers || {}; let accessToken = localStorage.getItem(accessTokenLocalStorageKey) || sessionStorage.getItem(localStorageKey); let refreshToken = localStorage.getItem(refreshTokenLocalStorageKey) || sessionStorage.getItem(localStorageKey); let accessTokenStorage = localStorage.getItem(accessTokenLocalStorageKey) ? localStorage : sessionStorage; let refreshTokenStorage = localStorage.getItem(refreshTokenLocalStorageKey) ? localStorage : sessionStorage; if (accessToken) { // Check if the access token is expired const decoded = (0, _parseJwt.default)(accessToken); if (decoded.exp && decoded.exp < Date.now() / 1000 && refreshToken && refreshTokenFunction && refreshTokenUrl) { // If the access token is expired, try to refresh it try { const [newAccessToken, newRefreshToken] = await refreshTokenFunction({ accessToken, refreshToken }); accessTokenStorage.setItem(accessTokenLocalStorageKey, newAccessToken); refreshTokenStorage.setItem(refreshTokenLocalStorageKey, newRefreshToken); accessToken = newAccessToken; refreshToken = newRefreshToken; } catch (_unused) {} } config.headers[authorizationHeader] = "".concat(authorizationPrefix).concat(token); } return config; }, function (error) { return Promise.reject(error); }); apiClient.interceptors.response.use(function (response) { return response; }, function (error) { return Promise.reject(error); }); return apiClient; }