{"version":3,"sources":["../src/utils/startRefreshTokenOnInterval.ts"],"names":["intervalId","TWENTY_MINUTES","startRefreshTokenOnInterval","accountApi","tokenStore","onRefreshTokenError","refreshToken","NaluriRefreshTokenError","accessToken","err","eventsApi","EVENTS","stopRefreshTokenOnInterval"],"mappings":";yFAKA,IAAIA,EAEEC,EAAiB,GAAK,GAAK,IAEpBC,EAA8B,MACzCC,EACAC,EACAC,IACG,CACH,IAAMC,EAAeF,EAAW,QAAQ,cAAc,EACtD,GAAI,CAACE,EAAc,CACjB,GAAID,EACF,MAAMA,EAAoB,MAE1B,OAAM,IAAIE,EAGZ,MACF,CAEIP,GAAY,cAAcA,CAAU,EAuBxCA,EAAa,YArBc,SAAY,CACrC,GAAI,CACF,GAAM,CAAE,YAAAQ,CAAY,EAAI,MAAML,EAAW,QAAQG,CAAY,EAC7DF,EAAW,QAAQ,cAAeI,CAAW,EAE7CN,EAA4BC,EAAYC,EAAYC,CAAmB,CACzE,OAASI,EAAK,CAOZ,GANIC,GACFA,EAAU,MAAMC,EAAO,cAAe,CACpC,MAAOF,CACT,CAAC,EAEH,cAAcT,CAAU,EACpBK,EACF,MAAMA,EAAoB,MAE1B,OAAM,IAAIE,CAEd,CACF,EAE6CN,CAAc,CAC7D,EAEaW,EAA6B,IAAM,CAC1CZ,GAAY,cAAcA,CAAU,CAC1C","sourcesContent":["import { AccountApi } from '@/api/account.api';\nimport { eventsApi, EVENTS } from '@/api/events.api';\nimport { NaluriRefreshTokenError } from '@/errors';\nimport { TokenStore } from './tokenStore';\n\nlet intervalId: NodeJS.Timeout | string | number;\n\nconst TWENTY_MINUTES = 20 * 60 * 1000;\n\nexport const startRefreshTokenOnInterval = async (\n  accountApi: AccountApi,\n  tokenStore: TokenStore,\n  onRefreshTokenError?: () => Promise<void>\n) => {\n  const refreshToken = tokenStore.getItem('refreshToken');\n  if (!refreshToken) {\n    if (onRefreshTokenError) {\n      await onRefreshTokenError();\n    } else {\n      throw new NaluriRefreshTokenError();\n    }\n\n    return;\n  }\n\n  if (intervalId) clearInterval(intervalId);\n\n  const refreshAccessToken = async () => {\n    try {\n      const { accessToken } = await accountApi.refresh(refreshToken);\n      tokenStore.setItem('accessToken', accessToken);\n\n      startRefreshTokenOnInterval(accountApi, tokenStore, onRefreshTokenError);\n    } catch (err) {\n      if (eventsApi) {\n        eventsApi.track(EVENTS.REFRESH_ERROR, {\n          error: err,\n        });\n      }\n      clearInterval(intervalId);\n      if (onRefreshTokenError) {\n        await onRefreshTokenError();\n      } else {\n        throw new NaluriRefreshTokenError();\n      }\n    }\n  };\n\n  intervalId = setInterval(refreshAccessToken, TWENTY_MINUTES);\n};\n\nexport const stopRefreshTokenOnInterval = () => {\n  if (intervalId) clearInterval(intervalId);\n};\n"]}