@nhost/nhost-js
Version:
Nhost JavaScript SDK
2 lines • 1.3 kB
JavaScript
var e="undefined"!=typeof navigator&&navigator.locks?navigator.locks:new class{async request(e,s,r){return r()}},s=async(e,s,n=60)=>{try{return await r(e,s,n)}catch(o){try{return console.warn("error refreshing session, retrying:",o),await r(e,s,n)}catch(o){return 401===o?.status&&(console.error("session probably expired"),s.remove()),null}}},r=async(s,r,o=60)=>{const{session:t,needsRefresh:i}=await e.request("nhostSessionLock",{mode:"shared"},(async()=>n(r,o)));return t?i?await e.request("nhostSessionLock",{mode:"exclusive"},(async()=>{const{session:e,needsRefresh:t,sessionExpired:i}=n(r,o);if(!e)return null;if(!t)return e;try{const n=await s.refreshToken({refreshToken:e.refreshToken});return r.set(n.body),n.body}catch(a){if(!i)return e;throw a}})):t:null},n=(e,s=60)=>{const r=e.get();if(!r)return{session:null,needsRefresh:!1,sessionExpired:!1};if(!r.decodedToken?.exp)return{session:r,needsRefresh:!0,sessionExpired:!0};if(0===s)return{session:r,needsRefresh:!0,sessionExpired:!1};const n=Date.now();return r.decodedToken.exp-n>1e3*s?{session:r,needsRefresh:!1,sessionExpired:!1}:{session:r,needsRefresh:!0,sessionExpired:r.decodedToken.exp<n}};Object.defineProperty(exports,"refreshSession",{enumerable:!0,get:function(){return s}});
//# sourceMappingURL=refreshSession-B_E2FLUs.cjs.map