UNPKG

@directus/sdk

Version:

Directus JavaScript SDK

2 lines 2.25 kB
const e=require(`../rest/utils/get-auth-endpoint.cjs`),t=require(`../utils/get-request-url.cjs`),n=require(`../utils/request.cjs`),r=require(`./utils/memory-storage.cjs`),i={msRefreshBeforeExpires:3e4,autoRefresh:!0},a=2**31-1,o=(o=`cookie`,s={})=>c=>{let l={...i,...s},u=null,d=null,f=l.storage??r.memoryStorage(),p=async()=>f.set({access_token:null,refresh_token:null,expires:null,expires_at:null}),m=async()=>{try{await u}finally{u=null}},h=async()=>{let e=await f.get();return u||!e?.expires_at||e.expires_at<new Date().getTime()+l.msRefreshBeforeExpires&&_().catch(e=>{}),m()},g=async e=>{let t=e.expires??0;e.expires_at=new Date().getTime()+t,await f.set(e),l.autoRefresh&&t>l.msRefreshBeforeExpires&&t<a&&(d&&clearTimeout(d),d=setTimeout(()=>{d=null,_().catch(e=>{})},t-l.msRefreshBeforeExpires))},_=async(e={})=>(u=(async()=>{let r=await f.get(),i={method:`POST`,headers:{"Content-Type":`application/json`}};`credentials`in l&&(i.credentials=l.credentials);let a={mode:e.mode??o};o===`json`&&r?.refresh_token&&(a.refresh_token=r.refresh_token),i.body=JSON.stringify(a);let s=await n.request(t.getRequestUrl(c.url,`/auth/refresh`).toString(),i,c.globals.fetch);return await p(),await g(s),s})(),u);async function v(r,i={}){let a=r;`otp`in i&&(a.otp=i.otp),a.mode=i.mode??o;let s=e.getAuthEndpoint(i.provider),u=t.getRequestUrl(c.url,s),d={method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(a)};`credentials`in l&&(d.credentials=l.credentials);let f=await n.request(u.toString(),d,c.globals.fetch);return await p(),await g(f),f}return{refresh:_,login:v,async logout(e={}){let r=await f.get(),i={method:`POST`,headers:{"Content-Type":`application/json`}};`credentials`in l&&(i.credentials=l.credentials);let a={mode:e.mode??o};o===`json`&&r?.refresh_token&&(a.refresh_token=r.refresh_token),i.body=JSON.stringify(a),await n.request(t.getRequestUrl(c.url,`/auth/logout`).toString(),i,c.globals.fetch),this.stopRefreshing(),await p()},stopRefreshing(){d&&clearTimeout(d)},async getToken(){return await h().catch(()=>{}),(await f.get())?.access_token??null},async setToken(e){return f.set({access_token:e,refresh_token:null,expires:null,expires_at:null})}}};exports.authentication=o; //# sourceMappingURL=composable.cjs.map