@auth0/auth0-spa-js
Version:
Auth0 SDK for Single Page Applications using Authorization Code Grant Flow with PKCE
3 lines (2 loc) • 2.85 kB
JavaScript
!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";class e extends Error{constructor(t,r){super(r),this.error=t,this.error_description=r,Object.setPrototypeOf(this,e.prototype)}static fromPayload({error:t,error_description:r}){return new e(t,r)}}class t extends e{constructor(e,s){super("missing_refresh_token",`Missing Refresh Token (audience: '${r(e,["default"])}', scope: '${r(s)}')`),this.audience=e,this.scope=s,Object.setPrototypeOf(this,t.prototype)}}function r(e,t=[]){return e&&!t.includes(e)?e:""}"function"==typeof SuppressedError&&SuppressedError;const s=e=>{var{clientId:t}=e,r=function(e,t){var r={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.indexOf(s)<0&&(r[s]=e[s]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(s=Object.getOwnPropertySymbols(e);o<s.length;o++)t.indexOf(s[o])<0&&Object.prototype.propertyIsEnumerable.call(e,s[o])&&(r[s[o]]=e[s[o]])}return r}(e,["clientId"]);return new URLSearchParams((e=>Object.keys(e).filter((t=>void 0!==e[t])).reduce(((t,r)=>Object.assign(Object.assign({},t),{[r]:e[r]})),{}))(Object.assign({client_id:t},r))).toString()};let o={};const n=(e,t)=>`${e}|${t}`;addEventListener("message",(async({data:{timeout:e,auth:r,fetchUrl:i,fetchOptions:c,useFormData:a,useMrrt:f},ports:[p]})=>{let u,d,h={};const{audience:l,scope:y}=r||{};try{const r=a?(e=>{const t=new URLSearchParams(e),r={};return t.forEach(((e,t)=>{r[t]=e})),r})(c.body):JSON.parse(c.body);if(!r.refresh_token&&"refresh_token"===r.grant_type){if(d=((e,t)=>o[n(e,t)])(l,y),!d&&f){const e=o.latest_refresh_token,t=((e,t)=>{const r=Object.keys(o).find((r=>{if("latest_refresh_token"!==r){const s=((e,t)=>t.startsWith(`${e}|`))(t,r),o=r.split("|")[1].split(" "),n=e.split(" ").every((e=>o.includes(e)));return s&&n}}));return!!r})(y,l);e&&!t&&(d=e)}if(!d)throw new t(l,y);c.body=a?s(Object.assign(Object.assign({},r),{refresh_token:d})):JSON.stringify(Object.assign(Object.assign({},r),{refresh_token:d}))}let j,k;"function"==typeof AbortController&&(j=new AbortController,c.signal=j.signal);try{k=await Promise.race([(_=e,new Promise((e=>setTimeout(e,_)))),fetch(i,Object.assign({},c))])}catch(e){return void p.postMessage({error:e.message})}if(!k)return j&&j.abort(),void p.postMessage({error:"Timeout when executing 'fetch'"});g=k.headers,h=[...g].reduce(((e,[t,r])=>(e[t]=r,e)),{}),u=await k.json(),u.refresh_token?(f&&(o.latest_refresh_token=u.refresh_token,O=d,b=u.refresh_token,Object.entries(o).forEach((([e,t])=>{t===O&&(o[e]=b)}))),((e,t,r)=>{o[n(t,r)]=e})(u.refresh_token,l,y),delete u.refresh_token):((e,t)=>{delete o[n(e,t)]})(l,y),p.postMessage({ok:k.ok,json:u,headers:h})}catch(e){p.postMessage({ok:!1,json:{error:e.error,error_description:e.message},headers:h})}var O,b,g,_}))}));
//# sourceMappingURL=auth0-spa-js.worker.production.js.map