UNPKG

@smash-sdk/core

Version:

Smash Sdk Core

57 lines (56 loc) 1.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RefreshTokenManager = void 0; class RefreshTokenManager { constructor(refreshTokenMethod) { this.loading = false; this.queue = []; this.refreshTokenMethod = refreshTokenMethod; } getRefreshTokenMethod() { return (error, retries = 0) => { return new Promise(async (resolve, reject) => { try { const token = await this.refreshToken(this.refreshTokenMethod, error, retries); resolve(token); } catch (error) { reject(error); } }); }; } refreshTokenAtomic(refreshTokenMethod, error, retries = 0) { return new Promise(async (resolve, reject) => { try { this.loading = true; const token = await refreshTokenMethod(error, retries); resolve(token); this.queue.forEach(({ resolve }) => { resolve(token); }); this.loading = false; this.queue = []; } catch (error) { reject(error); this.queue.forEach(({ reject }) => { reject(error); }); this.loading = false; this.queue = []; } }); } refreshToken(refreshTokenMethod, error, retries = 0) { return new Promise((resolve, reject) => { if (this.loading === true) { this.queue.push({ resolve, reject }); } else { this.refreshTokenAtomic(refreshTokenMethod, error, retries).then(resolve).catch(reject); } }); } } exports.RefreshTokenManager = RefreshTokenManager;