@auth0/auth0-spa-js
Version:
Auth0 SDK for Single Page Applications using Authorization Code Grant Flow with PKCE
3 lines (2 loc) • 6.07 kB
JavaScript
!function(e){"function"==typeof define&&define.amd?define(e):e()}(function(){"use strict";function e(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,o=Array(t);r<t;r++)o[r]=e[r];return o}function t(t,r){return function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var o,n,s,i,a=[],c=!0,l=!1;try{if(s=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(o=s.call(r)).done)&&(a.push(o.value),a.length!==t);c=!0);}catch(e){l=!0,n=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(l)throw n}}return a}}(t,r)||function(t,r){if(t){if("string"==typeof t)return e(t,r);var o={}.toString.call(t).slice(8,-1);return"Object"===o&&t.constructor&&(o=t.constructor.name),"Map"===o||"Set"===o?Array.from(t):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?e(t,r):void 0}}(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}class r extends Error{constructor(e,t){super(t),this.error=e,this.error_description=t,Object.setPrototypeOf(this,r.prototype)}static fromPayload(e){let t=e.error,o=e.error_description;return new r(t,o)}}class o extends r{constructor(e,t){super("missing_refresh_token","Missing Refresh Token (audience: '".concat(n(e,["default"]),"', scope: '").concat(n(t),"')")),this.audience=e,this.scope=t,Object.setPrototypeOf(this,o.prototype)}}function n(e){return e&&!(arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]).includes(e)?e:""}"function"==typeof SuppressedError&&SuppressedError;const s=e=>{var t=e.clientId,r=function(e,t){var r={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(o=Object.getOwnPropertySymbols(e);n<o.length;n++)t.indexOf(o[n])<0&&Object.prototype.propertyIsEnumerable.call(e,o[n])&&(r[o[n]]=e[o[n]])}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 i={},a=null;const c=(e,t)=>"".concat(e,"|").concat(t),l=(e,t)=>t.startsWith("".concat(e,"|")),u=e=>{Object.entries(i).forEach(r=>{let o=t(r,2),n=o[0];o[1]===e&&delete i[n]})},f=e=>{const t=new URLSearchParams(e),r={};return t.forEach((e,t)=>{r[t]=e}),r},d=async e=>{let r,n,a=e.data,u=a.timeout,d=a.auth,h=a.fetchUrl,p=a.fetchOptions,y=a.useFormData,g=a.useMrrt,b=a.skipTokenStorage,O=t(e.ports,1)[0],m={};const k=d||{},j=k.audience,v=k.scope;try{const e=y?f(p.body):JSON.parse(p.body);if(!e.refresh_token&&"refresh_token"===e.grant_type){if(n=((e,t)=>i[c(e,t)])(j,v),!n&&g){const e=i.latest_refresh_token,t=((e,t)=>!!Object.keys(i).find(r=>{if("latest_refresh_token"!==r){const o=l(t,r),n=r.split("|")[1].split(" "),s=e.split(" ").every(e=>n.includes(e));return o&&s}}))(v,j);e&&!t&&(n=e)}if(!n)throw new o(j,v);p.body=y?s(Object.assign(Object.assign({},e),{refresh_token:n})):JSON.stringify(Object.assign(Object.assign({},e),{refresh_token:n}))}let a,d;"function"==typeof AbortController&&(a=new AbortController,p.signal=a.signal);try{d=await Promise.race([(M=u,new Promise(e=>setTimeout(e,M))),fetch(h,Object.assign({},p))])}catch(e){return void O.postMessage({error:e.message})}if(!d)return a&&a.abort(),void O.postMessage({error:"Timeout when executing 'fetch'"});if(S=d.headers,m=[...S].reduce((e,r)=>{let o=t(r,2),n=o[0],s=o[1];return e[n]=s,e},{}),r=await d.json(),b)return delete r.refresh_token,void O.postMessage({ok:d.ok,json:r,headers:m});r.refresh_token?(g&&(i.latest_refresh_token=r.refresh_token,_=n,w=r.refresh_token,Object.entries(i).forEach(e=>{let r=t(e,2),o=r[0];r[1]===_&&(i[o]=w)})),((e,t,r)=>{i[c(t,r)]=e})(r.refresh_token,j,v),delete r.refresh_token):((e,t)=>{delete i[c(e,t)]})(j,v),O.postMessage({ok:d.ok,json:r,headers:m})}catch(e){O.postMessage({ok:!1,json:{error:e.error,error_description:e.message},headers:m})}var _,w,S,M},h=async e=>{let r=e.data,o=r.timeout,n=r.auth,a=r.fetchUrl,c=r.fetchOptions,d=r.useFormData,h=t(e.ports,1)[0];const p=(n||{}).audience;try{const e=(e=>{const r=new Set;return Object.entries(i).forEach(o=>{let n=t(o,2),s=n[0],i=n[1];l(e,s)&&r.add(i)}),Array.from(r)})(p);if(0===e.length)return void h.postMessage({ok:!0});const r=d?f(c.body):JSON.parse(c.body);for(const t of e){const e=d?s(Object.assign(Object.assign({},r),{token:t})):JSON.stringify(Object.assign(Object.assign({},r),{token:t}));let n,i,l,f;"function"==typeof AbortController&&(n=new AbortController,i=n.signal);try{f=await Promise.race([new Promise(e=>{l=setTimeout(e,o)}),fetch(a,Object.assign(Object.assign({},c),{body:e,signal:i}))]).finally(()=>clearTimeout(l))}catch(e){return void h.postMessage({error:e.message})}if(!f)return n&&n.abort(),void h.postMessage({error:"Timeout when executing 'fetch'"});if(!f.ok){let e;try{const t=JSON.parse(await f.text());e=t.error_description}catch(e){}return void h.postMessage({error:e||"HTTP error ".concat(f.status)})}u(t)}h.postMessage({ok:!0})}catch(e){h.postMessage({error:e.message||"Unknown error during token revocation"})}},p=(e,t)=>{if(!a)return!1;try{const r=new URL(a).origin,o=new URL(e.fetchUrl);return o.origin===r&&o.pathname===t}catch(e){return!1}};addEventListener("message",e=>{const r=e.data,o=t(e.ports,1)[0];if(!("type"in r)||"init"!==r.type)return"type"in r&&"clear"===r.type?(i={},void(null==o||o.postMessage({ok:!0}))):"type"in r&&"revoke"===r.type?p(r,"/oauth/revoke")?void h(e):void(null==o||o.postMessage({ok:!1,json:{error:"invalid_fetch_url",error_description:"Unauthorized fetch URL"},headers:{}})):void("fetchUrl"in r&&p(r,"/oauth/token")?d(e):null==o||o.postMessage({ok:!1,json:{error:"invalid_fetch_url",error_description:"Unauthorized fetch URL"},headers:{}}));if(null===a)try{new URL(r.allowedBaseUrl),a=r.allowedBaseUrl}catch(e){return}})});
//# sourceMappingURL=auth0-spa-js.worker.production.js.map