@descope/web-js-sdk 1.10.5 → 1.10.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("tslib"),t=require("@descope/core-js-sdk"),n=require("@fingerprintjs/fingerprintjs-pro"),a=require("js-cookie");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=i(t),r=i(a);const s=(e,t)=>{var n;return["beforeRequest","afterRequest"].reduce(((n,a)=>{var i;return n[a]=[].concat((null===(i=e.hooks)||void 0===i?void 0:i[a])||[]).concat((null==t?void 0:t[a])||[]),n}),null!==(n=e.hooks)&&void 0!==n?n:e.hooks={}),e},l=async e=>{if(!(null==e?void 0:e.ok))return{};const t=await(null==e?void 0:e.clone().json());return(null==t?void 0:t.authInfo)||t||{}},c=async e=>{const t=await l(e);return(null==t?void 0:t.user)||((null==t?void 0:t.hasOwnProperty("userId"))?t:void 0)},u="undefined"!=typeof localStorage,d=(e,t)=>u&&(null===localStorage||void 0===localStorage?void 0:localStorage.setItem(e,t)),g=e=>u&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem(e)),p=e=>u&&(null===localStorage||void 0===localStorage?void 0:localStorage.removeItem(e)),w=(...e)=>{console.debug(...e)},f="undefined"!=typeof window,h=Math.pow(2,31)-1,v=f&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem("fingerprint.endpoint.url"))||"https://api.descope.com",b="fp",y=(e=!1)=>{const t=localStorage.getItem(b);if(!t)return null;const n=JSON.parse(t);return(new Date).getTime()>n.expiry&&!e?null:n.value},m=async(e,t=v)=>{try{if(y())return;const a=(Date.now().toString(36)+Math.random().toString(36).substring(2)+Math.random().toString(36).substring(2)).substring(0,27),i=new URL(t);i.pathname="/fXj8gt3x8VulJBna/x96Emn69oZwcd7I6";const o=new URL(t);o.pathname="/fXj8gt3x8VulJBna/w78aRZnnDZ3Aqw0I";const r=o.toString()+"?apiKey=<apiKey>&version=<version>&loaderVersion=<loaderVersion>",s=n.load({apiKey:e,endpoint:[i.toString(),n.defaultEndpoint],scriptUrlPattern:[r,n.defaultScriptUrlPattern]}),l=await s,{requestId:c}=await l.get({linkedId:a}),u=((e,t)=>({vsid:e,vrid:t}))(a,c);(e=>{const t={value:e,expiry:(new Date).getTime()+864e5};localStorage.setItem(b,JSON.stringify(t))})(u)}catch(e){console.warn("Could not load fingerprint",e)}},S=e=>{const t=y(!0);return t&&e.body&&(e.body.fpData=t),e},I="dls_last_user_login_id",O="dls_last_user_display_name",k=()=>g(I),_=()=>g(O),j=e=>async(...t)=>{var n;t[1]=t[1]||{};const[,a={}]=t,i=k(),o=_();i&&(null!==(n=a.lastAuth)&&void 0!==n||(a.lastAuth={}),a.lastAuth.loginId=i,a.lastAuth.name=o);return await e(...t)},D=e=>async(...t)=>{const n=await e(...t);return p(I),p(O),n};function T(){const e=[];return{pub:t=>{e.forEach((e=>e(t)))},sub:t=>{const n=e.push(t)-1;return()=>e.splice(n,1)}}}const U="DS",x="DSR";function J(e,t,{cookiePath:n,cookieDomain:a,cookieExpiration:i}){if(t){const o=new Date(1e3*i),s=function(e){const t=window.location.hostname.split("."),n=e.split(".");return t.slice(-n.length).join(".")===e}(a);r.default.set(e,t,{path:n,domain:s?a:void 0,expires:o,sameSite:"Strict",secure:!0})}}function K(e=""){return g(`${e}${x}`)||""}function A(e=""){p(`${e}${x}`),p(`${e}${U}`),r.default.remove(U)}const R=e=>t=>async(...n)=>{const a=await t(...n);return A(e),a};async function E(e){const t=function(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=L(n.publicKey.challenge),n.publicKey.user.id=L(n.publicKey.user.id),null===(t=n.publicKey.excludeCredentials)||void 0===t||t.forEach((e=>{e.id=L(e.id)})),n}(e),n=await navigator.credentials.create(t);return a=n,JSON.stringify({id:a.id,rawId:V(a.rawId),type:a.type,response:{attestationObject:V(a.response.attestationObject),clientDataJSON:V(a.response.clientDataJSON)}});var a}async function N(e){const t=P(e);return q(await navigator.credentials.get(t))}async function $(e,t){const n=P(e);n.signal=t.signal,n.mediation="conditional";return q(await navigator.credentials.get(n))}async function C(e=!1){if(!f)return Promise.resolve(!1);const t=!!(window.PublicKeyCredential&&navigator.credentials&&navigator.credentials.create&&navigator.credentials.get);return t&&e&&PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable?PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable():t}function P(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=L(n.publicKey.challenge),null===(t=n.publicKey.allowCredentials)||void 0===t||t.forEach((e=>{e.id=L(e.id)})),n}function q(e){return JSON.stringify({id:e.id,rawId:V(e.rawId),type:e.type,response:{authenticatorData:V(e.response.authenticatorData),clientDataJSON:V(e.response.clientDataJSON),signature:V(e.response.signature),userHandle:e.response.userHandle?V(e.response.userHandle):void 0}})}function L(e){const t=e.replace(/_/g,"/").replace(/-/g,"+");return Uint8Array.from(atob(t),(e=>e.charCodeAt(0))).buffer}function V(e){return btoa(String.fromCharCode.apply(null,new Uint8Array(e))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}var F,H=(F=e=>({async signUp(t,n){const a=await e.webauthn.signUp.start(t,window.location.origin,n);if(!a.ok)return a;const i=await E(a.data.options);return await e.webauthn.signUp.finish(a.data.transactionId,i)},async signIn(t){const n=await e.webauthn.signIn.start(t,window.location.origin);if(!n.ok)return n;const a=await N(n.data.options);return await e.webauthn.signIn.finish(n.data.transactionId,a)},async signUpOrIn(t){var n;const a=await e.webauthn.signUpOrIn.start(t,window.location.origin);if(!a.ok)return a;if(null===(n=a.data)||void 0===n?void 0:n.create){const t=await E(a.data.options);return await e.webauthn.signUp.finish(a.data.transactionId,t)}{const t=await N(a.data.options);return await e.webauthn.signIn.finish(a.data.transactionId,t)}},async update(t,n){const a=await e.webauthn.update.start(t,window.location.origin,n);if(!a.ok)return a;const i=await E(a.data.options);return await e.webauthn.update.finish(a.data.transactionId,i)},helpers:{create:E,get:N,isSupported:C,conditional:$}}),(...e)=>{const t=F(...e);return Object.assign(t.signUp,e[0].webauthn.signUp),Object.assign(t.signIn,e[0].webauthn.signIn),Object.assign(t.signUpOrIn,e[0].webauthn.signUpOrIn),Object.assign(t.update,e[0].webauthn.update),t});const M=e=>({async oneTap(t,n,a,i){const o=null!=t?t:"google",r=await e.oauth.startNative(o,a);if(!r.ok)return r;const{clientId:s,stateId:l,nonce:c}=r.data,u=await async function(){return new Promise(((e,t)=>{if(window.google)return void e(window.google.accounts.id);let n=document.getElementById("google-gsi-client-script");n||(n=document.createElement("script"),document.head.appendChild(n),n.async=!0,n.defer=!0,n.id="google-gsi-client-script",n.src="https://accounts.google.com/gsi/client"),n.onload=function(){window.google?e(window.google.accounts.id):t("Failed to load Google GSI client script - not loaded properly")},n.onerror=function(){t("Failed to load Google GSI client script - failed to load")}}))}();return new Promise((t=>{var a,r;u.initialize(Object.assign(Object.assign({},n),{itp_support:null===(a=null==n?void 0:n.itp_support)||void 0===a||a,use_fedcm_for_prompt:null===(r=null==n?void 0:n.use_fedcm_for_prompt)||void 0===r||r,client_id:s,callback:n=>{t(e.oauth.finishNative(o,l,"","",n.credential))},nonce:c})),u.prompt((e=>{(null==e?void 0:e.isSkippedMoment())&&(null==i||i())}))}))}});var W=e=>Object.assign(Object.assign({},e.flow),{start:async(...t)=>{const n=await C(),a=Object.assign(Object.assign({location:window.location.href},t[1]),{deviceInfo:{webAuthnSupport:n},startOptionsVersion:1});return t[1]=a,e.flow.start(...t)}});const G=function(...e){return t=>e.reduce(((e,t)=>t(e)),t)}((t=>n=>{var{fpKey:a,fpLoad:i}=n,o=e.__rest(n,["fpKey","fpLoad"]);return f?(a&&i&&m(a).catch((()=>null)),t(s(o,{beforeRequest:S}))):(console.warn("Fingerprint is a client side only capability and will not work when running in the server"),t(o))}),(n=>a=>{var{autoRefresh:i}=a,o=e.__rest(a,["autoRefresh"]);if(!i)return n(o);const{clearAllTimers:r,setTimer:c}=(()=>{const e=[];return{clearAllTimers:()=>{for(;e.length;)clearTimeout(e.pop())},setTimer:(t,n)=>{e.push(setTimeout(t,n))}}})();let u,d;document.addEventListener("visibilitychange",(()=>{"visible"===document.visibilityState&&new Date>u&&(w("Expiration time passed, refreshing session"),g.refresh(d))}));const g=n(s(o,{afterRequest:async(e,t)=>{const{refreshJwt:n,sessionJwt:a}=await l(t);if(401===(null==t?void 0:t.status))w("Received 401, canceling all timers"),r();else if(a){u=(e=>{const t=e.split(".");try{if(3===t.length){const e=JSON.parse(window.atob(t[1]));if(e.exp)return new Date(1e3*e.exp)}}catch(e){}return null})(a),d=n;let e=((i=u)?i.getTime()-(new Date).getTime():0)-2e4;e>h&&(w(`Timeout is too large (${e}ms), setting it to ${h}ms`),e=h),r();const t=new Date(Date.now()+e).toLocaleTimeString("en-US",{hour12:!1});w(`Setting refresh timer for ${t}. (${e}ms)`),c((()=>{w("Refreshing session due to timer"),g.refresh(n)}),e)}var i}}));return t.wrapWith(g,["logout","logoutAll"],(e=>async(...t)=>{const n=await e(...t);return w("Clearing all timers"),r(),n}))}),(e=>t=>e(Object.assign(Object.assign({},t),{baseHeaders:Object.assign({"x-descope-sdk-name":"web-js","x-descope-sdk-version":"1.10.5"},t.baseHeaders)}))),(e=>n=>{const a=T(),i=T(),o=e(s(n,{afterRequest:async(e,t)=>{if(401===(null==t?void 0:t.status))a.pub(null),i.pub(null);else{const e=await c(t);e&&i.pub(e);const{sessionJwt:n}=await l(t);n&&a.pub(n)}}})),r=t.wrapWith(o,["logout","logoutAll"],(e=>async(...t)=>{const n=await e(...t);return a.pub(null),i.pub(null),n}));return Object.assign(r,{onSessionTokenChange:a.sub,onUserChange:i.sub})}),(e=>n=>{const a=e(s(n,{afterRequest:async(e,t)=>{var n;const a=await c(t),i=null===(n=null==a?void 0:a.loginIds)||void 0===n?void 0:n[0],o=null==a?void 0:a.name;i&&((e=>{d(I,e)})(i),(e=>{d(O,e)})(o))}}));let i=t.wrapWith(a,["flow.start"],j);return i=t.wrapWith(i,["logout","logoutAll"],D),Object.assign(i,{getLastUserLoginId:k,getLastUserDisplayName:_})}),(n=>a=>{var{persistTokens:i,sessionTokenViaCookie:o,storagePrefix:c}=a,u=e.__rest(a,["persistTokens","sessionTokenViaCookie","storagePrefix"]);if(!i||!f)return i&&console.warn("Storing auth tokens in local storage and cookies are a client side only capabilities and will not be done when running in the server"),n(u);const p=n(s(u,{beforeRequest:(w=c,e=>Object.assign(e,{token:e.token||K(w)})),afterRequest:async(t,n)=>{401===(null==n?void 0:n.status)?A(c):((t={},n,a)=>{var{refreshJwt:i,sessionJwt:o}=t,r=e.__rest(t,["refreshJwt","sessionJwt"]);void 0===n&&(n=!1),void 0===a&&(a=""),i&&d(`${a}${x}`,i),o&&(n?J(U,o,r):d(`${a}${U}`,o))})(await l(n),o,c)}}));var w;const h=t.wrapWith(p,["logout","logoutAll"],R(c));return Object.assign(h,{getRefreshToken:()=>K(c),getSessionToken:()=>function(e=""){return r.default.get(U)||g(`${e}${U}`)||""}(c)})}))(((...e)=>{const t=o.default(...e);return Object.assign(Object.assign({},t),{flow:W(t),webauthn:H(t),fedcm:M(t)})}));exports.REFRESH_TOKEN_KEY=x,exports.SESSION_TOKEN_KEY=U,exports.clearFingerprintData=()=>{localStorage.removeItem(b)},exports.default=G,exports.ensureFingerprintIds=m;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("tslib"),t=require("@descope/core-js-sdk"),n=require("@fingerprintjs/fingerprintjs-pro"),a=require("js-cookie");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=i(t),r=i(a);const s=(e,t)=>{var n;return["beforeRequest","afterRequest"].reduce(((n,a)=>{var i;return n[a]=[].concat((null===(i=e.hooks)||void 0===i?void 0:i[a])||[]).concat((null==t?void 0:t[a])||[]),n}),null!==(n=e.hooks)&&void 0!==n?n:e.hooks={}),e},l=async e=>{if(!(null==e?void 0:e.ok))return{};const t=await(null==e?void 0:e.clone().json());return(null==t?void 0:t.authInfo)||t||{}},c=async e=>{const t=await l(e);return(null==t?void 0:t.user)||((null==t?void 0:t.hasOwnProperty("userId"))?t:void 0)},u="undefined"!=typeof localStorage,d=(e,t)=>u&&(null===localStorage||void 0===localStorage?void 0:localStorage.setItem(e,t)),g=e=>u&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem(e)),p=e=>u&&(null===localStorage||void 0===localStorage?void 0:localStorage.removeItem(e)),w=(...e)=>{console.debug(...e)},f="undefined"!=typeof window,h=Math.pow(2,31)-1,v=f&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem("fingerprint.endpoint.url"))||"https://api.descope.com",b="fp",y=(e=!1)=>{const t=localStorage.getItem(b);if(!t)return null;const n=JSON.parse(t);return(new Date).getTime()>n.expiry&&!e?null:n.value},m=async(e,t=v)=>{try{if(y())return;const a=(Date.now().toString(36)+Math.random().toString(36).substring(2)+Math.random().toString(36).substring(2)).substring(0,27),i=new URL(t);i.pathname="/fXj8gt3x8VulJBna/x96Emn69oZwcd7I6";const o=new URL(t);o.pathname="/fXj8gt3x8VulJBna/w78aRZnnDZ3Aqw0I";const r=o.toString()+"?apiKey=<apiKey>&version=<version>&loaderVersion=<loaderVersion>",s=n.load({apiKey:e,endpoint:[i.toString(),n.defaultEndpoint],scriptUrlPattern:[r,n.defaultScriptUrlPattern]}),l=await s,{requestId:c}=await l.get({linkedId:a}),u=((e,t)=>({vsid:e,vrid:t}))(a,c);(e=>{const t={value:e,expiry:(new Date).getTime()+864e5};localStorage.setItem(b,JSON.stringify(t))})(u)}catch(e){console.warn("Could not load fingerprint",e)}},S=e=>{const t=y(!0);return t&&e.body&&(e.body.fpData=t),e},I="dls_last_user_login_id",O="dls_last_user_display_name",k=()=>g(I),_=()=>g(O),j=e=>async(...t)=>{var n;t[1]=t[1]||{};const[,a={}]=t,i=k(),o=_();i&&(null!==(n=a.lastAuth)&&void 0!==n||(a.lastAuth={}),a.lastAuth.loginId=i,a.lastAuth.name=o);return await e(...t)},D=e=>async(...t)=>{const n=await e(...t);return p(I),p(O),n};function T(){const e=[];return{pub:t=>{e.forEach((e=>e(t)))},sub:t=>{const n=e.push(t)-1;return()=>e.splice(n,1)}}}const U="DS",x="DSR";function J(e,t,{cookiePath:n,cookieDomain:a,cookieExpiration:i}){if(t){const o=new Date(1e3*i),s=function(e){const t=window.location.hostname.split("."),n=e.split(".");return t.slice(-n.length).join(".")===e}(a);r.default.set(e,t,{path:n,domain:s?a:void 0,expires:o,sameSite:"Strict",secure:!0})}}function K(e=""){return g(`${e}${x}`)||""}function A(e=""){p(`${e}${x}`),p(`${e}${U}`),r.default.remove(U)}const R=e=>t=>async(...n)=>{const a=await t(...n);return A(e),a};async function E(e){const t=function(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=L(n.publicKey.challenge),n.publicKey.user.id=L(n.publicKey.user.id),null===(t=n.publicKey.excludeCredentials)||void 0===t||t.forEach((e=>{e.id=L(e.id)})),n}(e),n=await navigator.credentials.create(t);return a=n,JSON.stringify({id:a.id,rawId:V(a.rawId),type:a.type,response:{attestationObject:V(a.response.attestationObject),clientDataJSON:V(a.response.clientDataJSON)}});var a}async function N(e){const t=P(e);return q(await navigator.credentials.get(t))}async function $(e,t){const n=P(e);n.signal=t.signal,n.mediation="conditional";return q(await navigator.credentials.get(n))}async function C(e=!1){if(!f)return Promise.resolve(!1);const t=!!(window.PublicKeyCredential&&navigator.credentials&&navigator.credentials.create&&navigator.credentials.get);return t&&e&&PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable?PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable():t}function P(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=L(n.publicKey.challenge),null===(t=n.publicKey.allowCredentials)||void 0===t||t.forEach((e=>{e.id=L(e.id)})),n}function q(e){return JSON.stringify({id:e.id,rawId:V(e.rawId),type:e.type,response:{authenticatorData:V(e.response.authenticatorData),clientDataJSON:V(e.response.clientDataJSON),signature:V(e.response.signature),userHandle:e.response.userHandle?V(e.response.userHandle):void 0}})}function L(e){const t=e.replace(/_/g,"/").replace(/-/g,"+");return Uint8Array.from(atob(t),(e=>e.charCodeAt(0))).buffer}function V(e){return btoa(String.fromCharCode.apply(null,new Uint8Array(e))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}var F,H=(F=e=>({async signUp(t,n){const a=await e.webauthn.signUp.start(t,window.location.origin,n);if(!a.ok)return a;const i=await E(a.data.options);return await e.webauthn.signUp.finish(a.data.transactionId,i)},async signIn(t){const n=await e.webauthn.signIn.start(t,window.location.origin);if(!n.ok)return n;const a=await N(n.data.options);return await e.webauthn.signIn.finish(n.data.transactionId,a)},async signUpOrIn(t){var n;const a=await e.webauthn.signUpOrIn.start(t,window.location.origin);if(!a.ok)return a;if(null===(n=a.data)||void 0===n?void 0:n.create){const t=await E(a.data.options);return await e.webauthn.signUp.finish(a.data.transactionId,t)}{const t=await N(a.data.options);return await e.webauthn.signIn.finish(a.data.transactionId,t)}},async update(t,n){const a=await e.webauthn.update.start(t,window.location.origin,n);if(!a.ok)return a;const i=await E(a.data.options);return await e.webauthn.update.finish(a.data.transactionId,i)},helpers:{create:E,get:N,isSupported:C,conditional:$}}),(...e)=>{const t=F(...e);return Object.assign(t.signUp,e[0].webauthn.signUp),Object.assign(t.signIn,e[0].webauthn.signIn),Object.assign(t.signUpOrIn,e[0].webauthn.signUpOrIn),Object.assign(t.update,e[0].webauthn.update),t});const M=e=>({async oneTap(t,n,a,i){const o=null!=t?t:"google",r=await e.oauth.startNative(o,a);if(!r.ok)return r;const{clientId:s,stateId:l,nonce:c}=r.data,u=await async function(){return new Promise(((e,t)=>{if(window.google)return void e(window.google.accounts.id);let n=document.getElementById("google-gsi-client-script");n||(n=document.createElement("script"),document.head.appendChild(n),n.async=!0,n.defer=!0,n.id="google-gsi-client-script",n.src="https://accounts.google.com/gsi/client"),n.onload=function(){window.google?e(window.google.accounts.id):t("Failed to load Google GSI client script - not loaded properly")},n.onerror=function(){t("Failed to load Google GSI client script - failed to load")}}))}();return new Promise((t=>{var a,r;u.initialize(Object.assign(Object.assign({},n),{itp_support:null===(a=null==n?void 0:n.itp_support)||void 0===a||a,use_fedcm_for_prompt:null===(r=null==n?void 0:n.use_fedcm_for_prompt)||void 0===r||r,client_id:s,callback:n=>{t(e.oauth.finishNative(o,l,"","",n.credential))},nonce:c})),u.prompt((e=>{(null==e?void 0:e.isSkippedMoment())&&(null==i||i())}))}))}});var W=e=>Object.assign(Object.assign({},e.flow),{start:async(...t)=>{const n=await C(),a=Object.assign(Object.assign({location:window.location.href},t[1]),{deviceInfo:{webAuthnSupport:n},startOptionsVersion:1});return t[1]=a,e.flow.start(...t)}});const G=function(...e){return t=>e.reduce(((e,t)=>t(e)),t)}((t=>n=>{var{fpKey:a,fpLoad:i}=n,o=e.__rest(n,["fpKey","fpLoad"]);return f?(a&&i&&m(a).catch((()=>null)),t(s(o,{beforeRequest:S}))):(console.warn("Fingerprint is a client side only capability and will not work when running in the server"),t(o))}),(n=>a=>{var{autoRefresh:i}=a,o=e.__rest(a,["autoRefresh"]);if(!i)return n(o);const{clearAllTimers:r,setTimer:c}=(()=>{const e=[];return{clearAllTimers:()=>{for(;e.length;)clearTimeout(e.pop())},setTimer:(t,n)=>{e.push(setTimeout(t,n))}}})();let u,d;document.addEventListener("visibilitychange",(()=>{"visible"===document.visibilityState&&new Date>u&&(w("Expiration time passed, refreshing session"),g.refresh(d))}));const g=n(s(o,{afterRequest:async(e,t)=>{const{refreshJwt:n,sessionJwt:a}=await l(t);if(401===(null==t?void 0:t.status))w("Received 401, canceling all timers"),r();else if(a){u=(e=>{const t=e.split(".");try{if(3===t.length){const e=JSON.parse(window.atob(t[1]));if(e.exp)return new Date(1e3*e.exp)}}catch(e){}return null})(a),d=n;let e=((i=u)?i.getTime()-(new Date).getTime():0)-2e4;e>h&&(w(`Timeout is too large (${e}ms), setting it to ${h}ms`),e=h),r();const t=new Date(Date.now()+e).toLocaleTimeString("en-US",{hour12:!1});w(`Setting refresh timer for ${t}. (${e}ms)`),c((()=>{w("Refreshing session due to timer"),g.refresh(n)}),e)}var i}}));return t.wrapWith(g,["logout","logoutAll"],(e=>async(...t)=>{const n=await e(...t);return w("Clearing all timers"),r(),n}))}),(e=>t=>e(Object.assign(Object.assign({},t),{baseHeaders:Object.assign({"x-descope-sdk-name":"web-js","x-descope-sdk-version":"1.10.6"},t.baseHeaders)}))),(e=>n=>{const a=T(),i=T(),o=e(s(n,{afterRequest:async(e,t)=>{if(401===(null==t?void 0:t.status))a.pub(null),i.pub(null);else{const e=await c(t);e&&i.pub(e);const{sessionJwt:n}=await l(t);n&&a.pub(n)}}})),r=t.wrapWith(o,["logout","logoutAll"],(e=>async(...t)=>{const n=await e(...t);return a.pub(null),i.pub(null),n}));return Object.assign(r,{onSessionTokenChange:a.sub,onUserChange:i.sub})}),(e=>n=>{const a=e(s(n,{afterRequest:async(e,t)=>{var n;const a=await c(t),i=null===(n=null==a?void 0:a.loginIds)||void 0===n?void 0:n[0],o=null==a?void 0:a.name;i&&((e=>{d(I,e)})(i),(e=>{d(O,e)})(o))}}));let i=t.wrapWith(a,["flow.start"],j);return i=t.wrapWith(i,["logout","logoutAll"],D),Object.assign(i,{getLastUserLoginId:k,getLastUserDisplayName:_})}),(n=>a=>{var{persistTokens:i,sessionTokenViaCookie:o,storagePrefix:c}=a,u=e.__rest(a,["persistTokens","sessionTokenViaCookie","storagePrefix"]);if(!i||!f)return i&&console.warn("Storing auth tokens in local storage and cookies are a client side only capabilities and will not be done when running in the server"),n(u);const p=n(s(u,{beforeRequest:(w=c,e=>Object.assign(e,{token:e.token||K(w)})),afterRequest:async(t,n)=>{401===(null==n?void 0:n.status)?A(c):((t={},n,a)=>{var{refreshJwt:i,sessionJwt:o}=t,r=e.__rest(t,["refreshJwt","sessionJwt"]);void 0===n&&(n=!1),void 0===a&&(a=""),i&&d(`${a}${x}`,i),o&&(n?J(U,o,r):d(`${a}${U}`,o))})(await l(n),o,c)}}));var w;const h=t.wrapWith(p,["logout","logoutAll"],R(c));return Object.assign(h,{getRefreshToken:()=>K(c),getSessionToken:()=>function(e=""){return r.default.get(U)||g(`${e}${U}`)||""}(c)})}))(((...e)=>{const t=o.default(...e);return Object.assign(Object.assign({},t),{flow:W(t),webauthn:H(t),fedcm:M(t)})}));exports.REFRESH_TOKEN_KEY=x,exports.SESSION_TOKEN_KEY=U,exports.clearFingerprintData=()=>{localStorage.removeItem(b)},exports.default=G,exports.ensureFingerprintIds=m;
2
2
  //# sourceMappingURL=index.cjs.js.map
package/dist/index.esm.js CHANGED
@@ -1,2 +1,2 @@
1
- import{__rest as t}from"tslib";import e,{wrapWith as n}from"@descope/core-js-sdk";import{load as o,defaultEndpoint as a,defaultScriptUrlPattern as i}from"@fingerprintjs/fingerprintjs-pro";import r from"js-cookie";const s=(t,e)=>{var n;return["beforeRequest","afterRequest"].reduce(((n,o)=>{var a;return n[o]=[].concat((null===(a=t.hooks)||void 0===a?void 0:a[o])||[]).concat((null==e?void 0:e[o])||[]),n}),null!==(n=t.hooks)&&void 0!==n?n:t.hooks={}),t},l=async t=>{if(!(null==t?void 0:t.ok))return{};const e=await(null==t?void 0:t.clone().json());return(null==e?void 0:e.authInfo)||e||{}},c=async t=>{const e=await l(t);return(null==e?void 0:e.user)||((null==e?void 0:e.hasOwnProperty("userId"))?e:void 0)},u="undefined"!=typeof localStorage,d=(t,e)=>u&&(null===localStorage||void 0===localStorage?void 0:localStorage.setItem(t,e)),g=t=>u&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem(t)),p=t=>u&&(null===localStorage||void 0===localStorage?void 0:localStorage.removeItem(t)),w=(...t)=>{console.debug(...t)},f="undefined"!=typeof window,h=Math.pow(2,31)-1,v=f&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem("fingerprint.endpoint.url"))||"https://api.descope.com",b="fp",m=(t=!1)=>{const e=localStorage.getItem(b);if(!e)return null;const n=JSON.parse(e);return(new Date).getTime()>n.expiry&&!t?null:n.value},y=async(t,e=v)=>{try{if(m())return;const n=(Date.now().toString(36)+Math.random().toString(36).substring(2)+Math.random().toString(36).substring(2)).substring(0,27),r=new URL(e);r.pathname="/fXj8gt3x8VulJBna/x96Emn69oZwcd7I6";const s=new URL(e);s.pathname="/fXj8gt3x8VulJBna/w78aRZnnDZ3Aqw0I";const l=s.toString()+"?apiKey=<apiKey>&version=<version>&loaderVersion=<loaderVersion>",c=o({apiKey:t,endpoint:[r.toString(),a],scriptUrlPattern:[l,i]}),u=await c,{requestId:d}=await u.get({linkedId:n}),g=((t,e)=>({vsid:t,vrid:e}))(n,d);(t=>{const e={value:t,expiry:(new Date).getTime()+864e5};localStorage.setItem(b,JSON.stringify(e))})(g)}catch(t){console.warn("Could not load fingerprint",t)}},S=()=>{localStorage.removeItem(b)},I=t=>{const e=m(!0);return e&&t.body&&(t.body.fpData=e),t},O="dls_last_user_login_id",k="dls_last_user_display_name",j=()=>g(O),D=()=>g(k),U=t=>async(...e)=>{var n;e[1]=e[1]||{};const[,o={}]=e,a=j(),i=D();a&&(null!==(n=o.lastAuth)&&void 0!==n||(o.lastAuth={}),o.lastAuth.loginId=a,o.lastAuth.name=i);return await t(...e)},J=t=>async(...e)=>{const n=await t(...e);return p(O),p(k),n};function T(){const t=[];return{pub:e=>{t.forEach((t=>t(e)))},sub:e=>{const n=t.push(e)-1;return()=>t.splice(n,1)}}}const A="DS",_="DSR";function R(t,e,{cookiePath:n,cookieDomain:o,cookieExpiration:a}){if(e){const i=new Date(1e3*a),s=function(t){const e=window.location.hostname.split("."),n=t.split(".");return e.slice(-n.length).join(".")===t}(o);r.set(t,e,{path:n,domain:s?o:void 0,expires:i,sameSite:"Strict",secure:!0})}}function x(t=""){return g(`${t}${_}`)||""}function K(t=""){p(`${t}${_}`),p(`${t}${A}`),r.remove(A)}const $=t=>e=>async(...n)=>{const o=await e(...n);return K(t),o};async function C(t){const e=function(t){var e;const n=JSON.parse(t);return n.publicKey.challenge=V(n.publicKey.challenge),n.publicKey.user.id=V(n.publicKey.user.id),null===(e=n.publicKey.excludeCredentials)||void 0===e||e.forEach((t=>{t.id=V(t.id)})),n}(t),n=await navigator.credentials.create(e);return o=n,JSON.stringify({id:o.id,rawId:H(o.rawId),type:o.type,response:{attestationObject:H(o.response.attestationObject),clientDataJSON:H(o.response.clientDataJSON)}});var o}async function N(t){const e=E(t);return L(await navigator.credentials.get(e))}async function P(t,e){const n=E(t);n.signal=e.signal,n.mediation="conditional";return L(await navigator.credentials.get(n))}async function q(t=!1){if(!f)return Promise.resolve(!1);const e=!!(window.PublicKeyCredential&&navigator.credentials&&navigator.credentials.create&&navigator.credentials.get);return e&&t&&PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable?PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable():e}function E(t){var e;const n=JSON.parse(t);return n.publicKey.challenge=V(n.publicKey.challenge),null===(e=n.publicKey.allowCredentials)||void 0===e||e.forEach((t=>{t.id=V(t.id)})),n}function L(t){return JSON.stringify({id:t.id,rawId:H(t.rawId),type:t.type,response:{authenticatorData:H(t.response.authenticatorData),clientDataJSON:H(t.response.clientDataJSON),signature:H(t.response.signature),userHandle:t.response.userHandle?H(t.response.userHandle):void 0}})}function V(t){const e=t.replace(/_/g,"/").replace(/-/g,"+");return Uint8Array.from(atob(e),(t=>t.charCodeAt(0))).buffer}function H(t){return btoa(String.fromCharCode.apply(null,new Uint8Array(t))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}var G,M=(G=t=>({async signUp(e,n){const o=await t.webauthn.signUp.start(e,window.location.origin,n);if(!o.ok)return o;const a=await C(o.data.options);return await t.webauthn.signUp.finish(o.data.transactionId,a)},async signIn(e){const n=await t.webauthn.signIn.start(e,window.location.origin);if(!n.ok)return n;const o=await N(n.data.options);return await t.webauthn.signIn.finish(n.data.transactionId,o)},async signUpOrIn(e){var n;const o=await t.webauthn.signUpOrIn.start(e,window.location.origin);if(!o.ok)return o;if(null===(n=o.data)||void 0===n?void 0:n.create){const e=await C(o.data.options);return await t.webauthn.signUp.finish(o.data.transactionId,e)}{const e=await N(o.data.options);return await t.webauthn.signIn.finish(o.data.transactionId,e)}},async update(e,n){const o=await t.webauthn.update.start(e,window.location.origin,n);if(!o.ok)return o;const a=await C(o.data.options);return await t.webauthn.update.finish(o.data.transactionId,a)},helpers:{create:C,get:N,isSupported:q,conditional:P}}),(...t)=>{const e=G(...t);return Object.assign(e.signUp,t[0].webauthn.signUp),Object.assign(e.signIn,t[0].webauthn.signIn),Object.assign(e.signUpOrIn,t[0].webauthn.signUpOrIn),Object.assign(e.update,t[0].webauthn.update),e});const B=t=>({async oneTap(e,n,o,a){const i=null!=e?e:"google",r=await t.oauth.startNative(i,o);if(!r.ok)return r;const{clientId:s,stateId:l,nonce:c}=r.data,u=await async function(){return new Promise(((t,e)=>{if(window.google)return void t(window.google.accounts.id);let n=document.getElementById("google-gsi-client-script");n||(n=document.createElement("script"),document.head.appendChild(n),n.async=!0,n.defer=!0,n.id="google-gsi-client-script",n.src="https://accounts.google.com/gsi/client"),n.onload=function(){window.google?t(window.google.accounts.id):e("Failed to load Google GSI client script - not loaded properly")},n.onerror=function(){e("Failed to load Google GSI client script - failed to load")}}))}();return new Promise((e=>{var o,r;u.initialize(Object.assign(Object.assign({},n),{itp_support:null===(o=null==n?void 0:n.itp_support)||void 0===o||o,use_fedcm_for_prompt:null===(r=null==n?void 0:n.use_fedcm_for_prompt)||void 0===r||r,client_id:s,callback:n=>{e(t.oauth.finishNative(i,l,"","",n.credential))},nonce:c})),u.prompt((t=>{(null==t?void 0:t.isSkippedMoment())&&(null==a||a())}))}))}});var F=t=>Object.assign(Object.assign({},t.flow),{start:async(...e)=>{const n=await q(),o=Object.assign(Object.assign({location:window.location.href},e[1]),{deviceInfo:{webAuthnSupport:n},startOptionsVersion:1});return e[1]=o,t.flow.start(...e)}});const Z=function(...t){return e=>t.reduce(((t,e)=>e(t)),e)}((e=>n=>{var{fpKey:o,fpLoad:a}=n,i=t(n,["fpKey","fpLoad"]);return f?(o&&a&&y(o).catch((()=>null)),e(s(i,{beforeRequest:I}))):(console.warn("Fingerprint is a client side only capability and will not work when running in the server"),e(i))}),(e=>o=>{var{autoRefresh:a}=o,i=t(o,["autoRefresh"]);if(!a)return e(i);const{clearAllTimers:r,setTimer:c}=(()=>{const t=[];return{clearAllTimers:()=>{for(;t.length;)clearTimeout(t.pop())},setTimer:(e,n)=>{t.push(setTimeout(e,n))}}})();let u,d;document.addEventListener("visibilitychange",(()=>{"visible"===document.visibilityState&&new Date>u&&(w("Expiration time passed, refreshing session"),g.refresh(d))}));const g=e(s(i,{afterRequest:async(t,e)=>{const{refreshJwt:n,sessionJwt:o}=await l(e);if(401===(null==e?void 0:e.status))w("Received 401, canceling all timers"),r();else if(o){u=(t=>{const e=t.split(".");try{if(3===e.length){const t=JSON.parse(window.atob(e[1]));if(t.exp)return new Date(1e3*t.exp)}}catch(t){}return null})(o),d=n;let t=((a=u)?a.getTime()-(new Date).getTime():0)-2e4;t>h&&(w(`Timeout is too large (${t}ms), setting it to ${h}ms`),t=h),r();const e=new Date(Date.now()+t).toLocaleTimeString("en-US",{hour12:!1});w(`Setting refresh timer for ${e}. (${t}ms)`),c((()=>{w("Refreshing session due to timer"),g.refresh(n)}),t)}var a}}));return n(g,["logout","logoutAll"],(t=>async(...e)=>{const n=await t(...e);return w("Clearing all timers"),r(),n}))}),(t=>e=>t(Object.assign(Object.assign({},e),{baseHeaders:Object.assign({"x-descope-sdk-name":"web-js","x-descope-sdk-version":"1.10.5"},e.baseHeaders)}))),(t=>e=>{const o=T(),a=T(),i=t(s(e,{afterRequest:async(t,e)=>{if(401===(null==e?void 0:e.status))o.pub(null),a.pub(null);else{const t=await c(e);t&&a.pub(t);const{sessionJwt:n}=await l(e);n&&o.pub(n)}}})),r=n(i,["logout","logoutAll"],(t=>async(...e)=>{const n=await t(...e);return o.pub(null),a.pub(null),n}));return Object.assign(r,{onSessionTokenChange:o.sub,onUserChange:a.sub})}),(t=>e=>{const o=t(s(e,{afterRequest:async(t,e)=>{var n;const o=await c(e),a=null===(n=null==o?void 0:o.loginIds)||void 0===n?void 0:n[0],i=null==o?void 0:o.name;a&&((t=>{d(O,t)})(a),(t=>{d(k,t)})(i))}}));let a=n(o,["flow.start"],U);return a=n(a,["logout","logoutAll"],J),Object.assign(a,{getLastUserLoginId:j,getLastUserDisplayName:D})}),(e=>o=>{var{persistTokens:a,sessionTokenViaCookie:i,storagePrefix:c}=o,u=t(o,["persistTokens","sessionTokenViaCookie","storagePrefix"]);if(!a||!f)return a&&console.warn("Storing auth tokens in local storage and cookies are a client side only capabilities and will not be done when running in the server"),e(u);const p=e(s(u,{beforeRequest:(w=c,t=>Object.assign(t,{token:t.token||x(w)})),afterRequest:async(e,n)=>{401===(null==n?void 0:n.status)?K(c):((e={},n,o)=>{var{refreshJwt:a,sessionJwt:i}=e,r=t(e,["refreshJwt","sessionJwt"]);void 0===n&&(n=!1),void 0===o&&(o=""),a&&d(`${o}${_}`,a),i&&(n?R(A,i,r):d(`${o}${A}`,i))})(await l(n),i,c)}}));var w;const h=n(p,["logout","logoutAll"],$(c));return Object.assign(h,{getRefreshToken:()=>x(c),getSessionToken:()=>function(t=""){return r.get(A)||g(`${t}${A}`)||""}(c)})}))(((...t)=>{const n=e(...t);return Object.assign(Object.assign({},n),{flow:F(n),webauthn:M(n),fedcm:B(n)})}));export{_ as REFRESH_TOKEN_KEY,A as SESSION_TOKEN_KEY,S as clearFingerprintData,Z as default,y as ensureFingerprintIds};
1
+ import{__rest as t}from"tslib";import e,{wrapWith as n}from"@descope/core-js-sdk";import{load as o,defaultEndpoint as a,defaultScriptUrlPattern as i}from"@fingerprintjs/fingerprintjs-pro";import r from"js-cookie";const s=(t,e)=>{var n;return["beforeRequest","afterRequest"].reduce(((n,o)=>{var a;return n[o]=[].concat((null===(a=t.hooks)||void 0===a?void 0:a[o])||[]).concat((null==e?void 0:e[o])||[]),n}),null!==(n=t.hooks)&&void 0!==n?n:t.hooks={}),t},l=async t=>{if(!(null==t?void 0:t.ok))return{};const e=await(null==t?void 0:t.clone().json());return(null==e?void 0:e.authInfo)||e||{}},c=async t=>{const e=await l(t);return(null==e?void 0:e.user)||((null==e?void 0:e.hasOwnProperty("userId"))?e:void 0)},u="undefined"!=typeof localStorage,d=(t,e)=>u&&(null===localStorage||void 0===localStorage?void 0:localStorage.setItem(t,e)),g=t=>u&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem(t)),p=t=>u&&(null===localStorage||void 0===localStorage?void 0:localStorage.removeItem(t)),w=(...t)=>{console.debug(...t)},f="undefined"!=typeof window,h=Math.pow(2,31)-1,v=f&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem("fingerprint.endpoint.url"))||"https://api.descope.com",b="fp",m=(t=!1)=>{const e=localStorage.getItem(b);if(!e)return null;const n=JSON.parse(e);return(new Date).getTime()>n.expiry&&!t?null:n.value},y=async(t,e=v)=>{try{if(m())return;const n=(Date.now().toString(36)+Math.random().toString(36).substring(2)+Math.random().toString(36).substring(2)).substring(0,27),r=new URL(e);r.pathname="/fXj8gt3x8VulJBna/x96Emn69oZwcd7I6";const s=new URL(e);s.pathname="/fXj8gt3x8VulJBna/w78aRZnnDZ3Aqw0I";const l=s.toString()+"?apiKey=<apiKey>&version=<version>&loaderVersion=<loaderVersion>",c=o({apiKey:t,endpoint:[r.toString(),a],scriptUrlPattern:[l,i]}),u=await c,{requestId:d}=await u.get({linkedId:n}),g=((t,e)=>({vsid:t,vrid:e}))(n,d);(t=>{const e={value:t,expiry:(new Date).getTime()+864e5};localStorage.setItem(b,JSON.stringify(e))})(g)}catch(t){console.warn("Could not load fingerprint",t)}},S=()=>{localStorage.removeItem(b)},I=t=>{const e=m(!0);return e&&t.body&&(t.body.fpData=e),t},O="dls_last_user_login_id",k="dls_last_user_display_name",j=()=>g(O),D=()=>g(k),U=t=>async(...e)=>{var n;e[1]=e[1]||{};const[,o={}]=e,a=j(),i=D();a&&(null!==(n=o.lastAuth)&&void 0!==n||(o.lastAuth={}),o.lastAuth.loginId=a,o.lastAuth.name=i);return await t(...e)},J=t=>async(...e)=>{const n=await t(...e);return p(O),p(k),n};function T(){const t=[];return{pub:e=>{t.forEach((t=>t(e)))},sub:e=>{const n=t.push(e)-1;return()=>t.splice(n,1)}}}const A="DS",_="DSR";function R(t,e,{cookiePath:n,cookieDomain:o,cookieExpiration:a}){if(e){const i=new Date(1e3*a),s=function(t){const e=window.location.hostname.split("."),n=t.split(".");return e.slice(-n.length).join(".")===t}(o);r.set(t,e,{path:n,domain:s?o:void 0,expires:i,sameSite:"Strict",secure:!0})}}function x(t=""){return g(`${t}${_}`)||""}function K(t=""){p(`${t}${_}`),p(`${t}${A}`),r.remove(A)}const $=t=>e=>async(...n)=>{const o=await e(...n);return K(t),o};async function C(t){const e=function(t){var e;const n=JSON.parse(t);return n.publicKey.challenge=V(n.publicKey.challenge),n.publicKey.user.id=V(n.publicKey.user.id),null===(e=n.publicKey.excludeCredentials)||void 0===e||e.forEach((t=>{t.id=V(t.id)})),n}(t),n=await navigator.credentials.create(e);return o=n,JSON.stringify({id:o.id,rawId:H(o.rawId),type:o.type,response:{attestationObject:H(o.response.attestationObject),clientDataJSON:H(o.response.clientDataJSON)}});var o}async function N(t){const e=E(t);return L(await navigator.credentials.get(e))}async function P(t,e){const n=E(t);n.signal=e.signal,n.mediation="conditional";return L(await navigator.credentials.get(n))}async function q(t=!1){if(!f)return Promise.resolve(!1);const e=!!(window.PublicKeyCredential&&navigator.credentials&&navigator.credentials.create&&navigator.credentials.get);return e&&t&&PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable?PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable():e}function E(t){var e;const n=JSON.parse(t);return n.publicKey.challenge=V(n.publicKey.challenge),null===(e=n.publicKey.allowCredentials)||void 0===e||e.forEach((t=>{t.id=V(t.id)})),n}function L(t){return JSON.stringify({id:t.id,rawId:H(t.rawId),type:t.type,response:{authenticatorData:H(t.response.authenticatorData),clientDataJSON:H(t.response.clientDataJSON),signature:H(t.response.signature),userHandle:t.response.userHandle?H(t.response.userHandle):void 0}})}function V(t){const e=t.replace(/_/g,"/").replace(/-/g,"+");return Uint8Array.from(atob(e),(t=>t.charCodeAt(0))).buffer}function H(t){return btoa(String.fromCharCode.apply(null,new Uint8Array(t))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}var G,M=(G=t=>({async signUp(e,n){const o=await t.webauthn.signUp.start(e,window.location.origin,n);if(!o.ok)return o;const a=await C(o.data.options);return await t.webauthn.signUp.finish(o.data.transactionId,a)},async signIn(e){const n=await t.webauthn.signIn.start(e,window.location.origin);if(!n.ok)return n;const o=await N(n.data.options);return await t.webauthn.signIn.finish(n.data.transactionId,o)},async signUpOrIn(e){var n;const o=await t.webauthn.signUpOrIn.start(e,window.location.origin);if(!o.ok)return o;if(null===(n=o.data)||void 0===n?void 0:n.create){const e=await C(o.data.options);return await t.webauthn.signUp.finish(o.data.transactionId,e)}{const e=await N(o.data.options);return await t.webauthn.signIn.finish(o.data.transactionId,e)}},async update(e,n){const o=await t.webauthn.update.start(e,window.location.origin,n);if(!o.ok)return o;const a=await C(o.data.options);return await t.webauthn.update.finish(o.data.transactionId,a)},helpers:{create:C,get:N,isSupported:q,conditional:P}}),(...t)=>{const e=G(...t);return Object.assign(e.signUp,t[0].webauthn.signUp),Object.assign(e.signIn,t[0].webauthn.signIn),Object.assign(e.signUpOrIn,t[0].webauthn.signUpOrIn),Object.assign(e.update,t[0].webauthn.update),e});const B=t=>({async oneTap(e,n,o,a){const i=null!=e?e:"google",r=await t.oauth.startNative(i,o);if(!r.ok)return r;const{clientId:s,stateId:l,nonce:c}=r.data,u=await async function(){return new Promise(((t,e)=>{if(window.google)return void t(window.google.accounts.id);let n=document.getElementById("google-gsi-client-script");n||(n=document.createElement("script"),document.head.appendChild(n),n.async=!0,n.defer=!0,n.id="google-gsi-client-script",n.src="https://accounts.google.com/gsi/client"),n.onload=function(){window.google?t(window.google.accounts.id):e("Failed to load Google GSI client script - not loaded properly")},n.onerror=function(){e("Failed to load Google GSI client script - failed to load")}}))}();return new Promise((e=>{var o,r;u.initialize(Object.assign(Object.assign({},n),{itp_support:null===(o=null==n?void 0:n.itp_support)||void 0===o||o,use_fedcm_for_prompt:null===(r=null==n?void 0:n.use_fedcm_for_prompt)||void 0===r||r,client_id:s,callback:n=>{e(t.oauth.finishNative(i,l,"","",n.credential))},nonce:c})),u.prompt((t=>{(null==t?void 0:t.isSkippedMoment())&&(null==a||a())}))}))}});var F=t=>Object.assign(Object.assign({},t.flow),{start:async(...e)=>{const n=await q(),o=Object.assign(Object.assign({location:window.location.href},e[1]),{deviceInfo:{webAuthnSupport:n},startOptionsVersion:1});return e[1]=o,t.flow.start(...e)}});const Z=function(...t){return e=>t.reduce(((t,e)=>e(t)),e)}((e=>n=>{var{fpKey:o,fpLoad:a}=n,i=t(n,["fpKey","fpLoad"]);return f?(o&&a&&y(o).catch((()=>null)),e(s(i,{beforeRequest:I}))):(console.warn("Fingerprint is a client side only capability and will not work when running in the server"),e(i))}),(e=>o=>{var{autoRefresh:a}=o,i=t(o,["autoRefresh"]);if(!a)return e(i);const{clearAllTimers:r,setTimer:c}=(()=>{const t=[];return{clearAllTimers:()=>{for(;t.length;)clearTimeout(t.pop())},setTimer:(e,n)=>{t.push(setTimeout(e,n))}}})();let u,d;document.addEventListener("visibilitychange",(()=>{"visible"===document.visibilityState&&new Date>u&&(w("Expiration time passed, refreshing session"),g.refresh(d))}));const g=e(s(i,{afterRequest:async(t,e)=>{const{refreshJwt:n,sessionJwt:o}=await l(e);if(401===(null==e?void 0:e.status))w("Received 401, canceling all timers"),r();else if(o){u=(t=>{const e=t.split(".");try{if(3===e.length){const t=JSON.parse(window.atob(e[1]));if(t.exp)return new Date(1e3*t.exp)}}catch(t){}return null})(o),d=n;let t=((a=u)?a.getTime()-(new Date).getTime():0)-2e4;t>h&&(w(`Timeout is too large (${t}ms), setting it to ${h}ms`),t=h),r();const e=new Date(Date.now()+t).toLocaleTimeString("en-US",{hour12:!1});w(`Setting refresh timer for ${e}. (${t}ms)`),c((()=>{w("Refreshing session due to timer"),g.refresh(n)}),t)}var a}}));return n(g,["logout","logoutAll"],(t=>async(...e)=>{const n=await t(...e);return w("Clearing all timers"),r(),n}))}),(t=>e=>t(Object.assign(Object.assign({},e),{baseHeaders:Object.assign({"x-descope-sdk-name":"web-js","x-descope-sdk-version":"1.10.6"},e.baseHeaders)}))),(t=>e=>{const o=T(),a=T(),i=t(s(e,{afterRequest:async(t,e)=>{if(401===(null==e?void 0:e.status))o.pub(null),a.pub(null);else{const t=await c(e);t&&a.pub(t);const{sessionJwt:n}=await l(e);n&&o.pub(n)}}})),r=n(i,["logout","logoutAll"],(t=>async(...e)=>{const n=await t(...e);return o.pub(null),a.pub(null),n}));return Object.assign(r,{onSessionTokenChange:o.sub,onUserChange:a.sub})}),(t=>e=>{const o=t(s(e,{afterRequest:async(t,e)=>{var n;const o=await c(e),a=null===(n=null==o?void 0:o.loginIds)||void 0===n?void 0:n[0],i=null==o?void 0:o.name;a&&((t=>{d(O,t)})(a),(t=>{d(k,t)})(i))}}));let a=n(o,["flow.start"],U);return a=n(a,["logout","logoutAll"],J),Object.assign(a,{getLastUserLoginId:j,getLastUserDisplayName:D})}),(e=>o=>{var{persistTokens:a,sessionTokenViaCookie:i,storagePrefix:c}=o,u=t(o,["persistTokens","sessionTokenViaCookie","storagePrefix"]);if(!a||!f)return a&&console.warn("Storing auth tokens in local storage and cookies are a client side only capabilities and will not be done when running in the server"),e(u);const p=e(s(u,{beforeRequest:(w=c,t=>Object.assign(t,{token:t.token||x(w)})),afterRequest:async(e,n)=>{401===(null==n?void 0:n.status)?K(c):((e={},n,o)=>{var{refreshJwt:a,sessionJwt:i}=e,r=t(e,["refreshJwt","sessionJwt"]);void 0===n&&(n=!1),void 0===o&&(o=""),a&&d(`${o}${_}`,a),i&&(n?R(A,i,r):d(`${o}${A}`,i))})(await l(n),i,c)}}));var w;const h=n(p,["logout","logoutAll"],$(c));return Object.assign(h,{getRefreshToken:()=>x(c),getSessionToken:()=>function(t=""){return r.get(A)||g(`${t}${A}`)||""}(c)})}))(((...t)=>{const n=e(...t);return Object.assign(Object.assign({},n),{flow:F(n),webauthn:M(n),fedcm:B(n)})}));export{_ as REFRESH_TOKEN_KEY,A as SESSION_TOKEN_KEY,S as clearFingerprintData,Z as default,y as ensureFingerprintIds};
2
2
  //# sourceMappingURL=index.esm.js.map
package/dist/index.umd.js CHANGED
@@ -1,4 +1,4 @@
1
1
  !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Descope=t()}(this,(function(){"use strict";const e=(e,t)=>{var n;return["beforeRequest","afterRequest"].reduce(((n,o)=>{var r;return n[o]=[].concat((null===(r=e.hooks)||void 0===r?void 0:r[o])||[]).concat((null==t?void 0:t[o])||[]),n}),null!==(n=e.hooks)&&void 0!==n?n:e.hooks={}),e},t=async e=>{if(!(null==e?void 0:e.ok))return{};const t=await(null==e?void 0:e.clone().json());return(null==t?void 0:t.authInfo)||t||{}},n=async e=>{const n=await t(e);return(null==n?void 0:n.user)||((null==n?void 0:n.hasOwnProperty("userId"))?n:void 0)},o="undefined"!=typeof localStorage,r=(e,t)=>o&&(null===localStorage||void 0===localStorage?void 0:localStorage.setItem(e,t)),i=e=>o&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem(e)),a=e=>o&&(null===localStorage||void 0===localStorage?void 0:localStorage.removeItem(e));var s=function(){return s=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},s.apply(this,arguments)};function c(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n}function u(e){this.message=e}"function"==typeof SuppressedError&&SuppressedError,u.prototype=new Error,u.prototype.name="InvalidCharacterError";var l="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(e){var t=String(e).replace(/=+$/,"");if(t.length%4==1)throw new u("'atob' failed: The string to be decoded is not correctly encoded.");for(var n,o,r=0,i=0,a="";o=t.charAt(i++);~o&&(n=r%4?64*n+o:o,r++%4)?a+=String.fromCharCode(255&n>>(-2*r&6)):0)o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(o);return a};function d(e){this.message=e}function p(e,t){if("string"!=typeof e)throw new d("Invalid token specified");var n=!0===(t=t||{}).header?0:1;try{return JSON.parse(function(e){var t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:t+="==";break;case 3:t+="=";break;default:throw"Illegal base64url string!"}try{return function(e){return decodeURIComponent(l(e).replace(/(.)/g,(function(e,t){var n=t.charCodeAt(0).toString(16).toUpperCase();return n.length<2&&(n="0"+n),"%"+n})))}(t)}catch(e){return l(t)}}(e.split(".")[n]))}catch(e){throw new d("Invalid token specified: "+e.message)}}d.prototype=new Error,d.prototype.name="InvalidTokenError";var f="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function g(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var h="__lodash_hash_undefined__",v=1/0,y="[object Function]",b="[object GeneratorFunction]",w="[object Symbol]",m=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,I=/^\w*$/,O=/^\./,k=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,j=/\\(\\)?/g,_=/^\[object .+?Constructor\]$/,S="object"==typeof f&&f&&f.Object===Object&&f,U="object"==typeof self&&self&&self.Object===Object&&self,P=S||U||Function("return this")();var R,E=Array.prototype,x=Function.prototype,T=Object.prototype,A=P["__core-js_shared__"],C=(R=/[^.]+$/.exec(A&&A.keys&&A.keys.IE_PROTO||""))?"Symbol(src)_1."+R:"",$=x.toString,q=T.hasOwnProperty,D=T.toString,J=RegExp("^"+$.call(q).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),K=P.Symbol,N=E.splice,L=Q(P,"Map"),M=Q(Object,"create"),F=K?K.prototype:void 0,V=F?F.toString:void 0;function H(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var o=e[t];this.set(o[0],o[1])}}function B(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var o=e[t];this.set(o[0],o[1])}}function z(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var o=e[t];this.set(o[0],o[1])}}function G(e,t){for(var n,o,r=e.length;r--;)if((n=e[r][0])===(o=t)||n!=n&&o!=o)return r;return-1}function Z(e,t){var n;t=function(e,t){if(ne(e))return!1;var n=typeof e;if("number"==n||"symbol"==n||"boolean"==n||null==e||re(e))return!0;return I.test(e)||!m.test(e)||null!=t&&e in Object(t)}(t,e)?[t]:ne(n=t)?n:W(n);for(var o=0,r=t.length;null!=e&&o<r;)e=e[ee(t[o++])];return o&&o==r?e:void 0}function X(e){if(!oe(e)||(t=e,C&&C in t))return!1;var t,n=function(e){var t=oe(e)?D.call(e):"";return t==y||t==b}(e)||function(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(e){}return t}(e)?J:_;return n.test(function(e){if(null!=e){try{return $.call(e)}catch(e){}try{return e+""}catch(e){}}return""}(e))}function Y(e,t){var n,o,r=e.__data__;return("string"==(o=typeof(n=t))||"number"==o||"symbol"==o||"boolean"==o?"__proto__"!==n:null===n)?r["string"==typeof t?"string":"hash"]:r.map}function Q(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return X(n)?n:void 0}H.prototype.clear=function(){this.__data__=M?M(null):{}},H.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},H.prototype.get=function(e){var t=this.__data__;if(M){var n=t[e];return n===h?void 0:n}return q.call(t,e)?t[e]:void 0},H.prototype.has=function(e){var t=this.__data__;return M?void 0!==t[e]:q.call(t,e)},H.prototype.set=function(e,t){return this.__data__[e]=M&&void 0===t?h:t,this},B.prototype.clear=function(){this.__data__=[]},B.prototype.delete=function(e){var t=this.__data__,n=G(t,e);return!(n<0)&&(n==t.length-1?t.pop():N.call(t,n,1),!0)},B.prototype.get=function(e){var t=this.__data__,n=G(t,e);return n<0?void 0:t[n][1]},B.prototype.has=function(e){return G(this.__data__,e)>-1},B.prototype.set=function(e,t){var n=this.__data__,o=G(n,e);return o<0?n.push([e,t]):n[o][1]=t,this},z.prototype.clear=function(){this.__data__={hash:new H,map:new(L||B),string:new H}},z.prototype.delete=function(e){return Y(this,e).delete(e)},z.prototype.get=function(e){return Y(this,e).get(e)},z.prototype.has=function(e){return Y(this,e).has(e)},z.prototype.set=function(e,t){return Y(this,e).set(e,t),this};var W=te((function(e){var t;e=null==(t=e)?"":function(e){if("string"==typeof e)return e;if(re(e))return V?V.call(e):"";var t=e+"";return"0"==t&&1/e==-v?"-0":t}(t);var n=[];return O.test(e)&&n.push(""),e.replace(k,(function(e,t,o,r){n.push(o?r.replace(j,"$1"):t||e)})),n}));function ee(e){if("string"==typeof e||re(e))return e;var t=e+"";return"0"==t&&1/e==-v?"-0":t}function te(e,t){if("function"!=typeof e||t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var o=arguments,r=t?t.apply(this,o):o[0],i=n.cache;if(i.has(r))return i.get(r);var a=e.apply(this,o);return n.cache=i.set(r,a),a};return n.cache=new(te.Cache||z),n}te.Cache=z;var ne=Array.isArray;function oe(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function re(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&D.call(e)==w}var ie=g((function(e,t,n){var o=null==e?void 0:Z(e,t);return void 0===o?n:o})),ae="/v1/auth/accesskey/exchange",se="/v1/auth/otp/verify",ce="/v1/auth/otp/signin",ue="/v1/auth/otp/signup",le={email:"/v1/auth/otp/update/email",phone:"/v1/auth/otp/update/phone"},de="/v1/auth/otp/signup-in",pe="/v1/auth/magiclink/verify",fe="/v1/auth/magiclink/signin",ge="/v1/auth/magiclink/signup",he={email:"/v1/auth/magiclink/update/email",phone:"/v1/auth/magiclink/update/phone"},ve="/v1/auth/magiclink/signup-in",ye="/v1/auth/enchantedlink/verify",be="/v1/auth/enchantedlink/signin",we="/v1/auth/enchantedlink/signup",me="/v1/auth/enchantedlink/pending-session",Ie={email:"/v1/auth/enchantedlink/update/email"},Oe="/v1/auth/enchantedlink/signup-in",ke="/v1/auth/oauth/authorize",je="/v1/auth/oauth/exchange",_e="v1/auth/oauth/native/start",Se="v1/auth/oauth/native/finish",Ue="/v1/auth/saml/authorize",Pe="/v1/auth/saml/exchange",Re="/v1/auth/totp/verify",Ee="/v1/auth/totp/signup",xe="/v1/auth/totp/update",Te={start:"/v1/auth/webauthn/signup/start",finish:"/v1/auth/webauthn/signup/finish"},Ae={start:"/v1/auth/webauthn/signin/start",finish:"/v1/auth/webauthn/signin/finish"},Ce={start:"/v1/auth/webauthn/signup-in/start"},$e={start:"v1/auth/webauthn/update/start",finish:"/v1/auth/webauthn/update/finish"},qe="/v1/auth/password/signup",De="/v1/auth/password/signin",Je="/v1/auth/password/reset",Ke="/v1/auth/password/update",Ne="/v1/auth/password/replace",Le="/v1/auth/password/policy",Me="/v1/auth/refresh",Fe="/v1/auth/tenant/select",Ve="/v1/auth/logout",He="/v1/auth/logoutall",Be="/v1/auth/me",ze="/v1/auth/me/history",Ge="/v1/flow/start",Ze="/v1/flow/next";const Xe="<region>",Ye=`https://api.${Xe}descope.com`,Qe=6e5,We=()=>{const e={};return{headers(t){const n="function"==typeof t.entries?Object.fromEntries(t.entries()):t;return e.Headers=JSON.stringify(n),this},body(t){return e.Body=t,this},url(t){return e.Url=t.toString(),this},method(t){return e.Method=t,this},title(t){return e.Title=t,this},status(t){return e.Status=t,this},build:()=>Object.keys(e).flatMap((t=>e[t]?[`${"Title"!==t?`${t}: `:""}${e[t]}`]:[])).join("\n")}};var et;!function(e){e.get="GET",e.delete="DELETE",e.post="POST",e.put="PUT"}(et||(et={}));const tt=(...e)=>new Headers(e.reduce(((e,t)=>{const n=(e=>Array.isArray(e)?e:e instanceof Headers?Array.from(e.entries()):e?Object.entries(e):[])(t);return n.reduce(((t,[n,o])=>(e[n]=o,e)),e),e}),{})),nt=e=>void 0===e?void 0:JSON.stringify(e),ot=(e,t="")=>{let n=e;return t&&(n=n+":"+t),{Authorization:`Bearer ${n}`}},rt=({baseUrl:e,projectId:t,baseConfig:n,logger:o,hooks:r,cookiePolicy:i,fetch:a})=>{const s=((e,t)=>{const n=(e=>async(...t)=>{const n=await e(...t),o=await n.text();return n.text=()=>Promise.resolve(o),n.json=()=>Promise.resolve(JSON.parse(o)),n.clone=()=>n,n})(t||fetch);return n||null==e||e.warn("Fetch is not defined, you will not be able to send http requests, if you are running in a test, make sure fetch is defined globally"),e?async(...t)=>{if(!n)throw Error("Cannot send http request, fetch is not defined, if you are running in a test, make sure fetch is defined globally");e.log((e=>We().title("Request").url(e[0]).method(e[1].method).headers(e[1].headers).body(e[1].body).build())(t));const o=await n(...t);return e[o.ok?"log":"error"](await(async e=>{const t=await e.text();return We().title("Response").url(e.url.toString()).status(`${e.status} ${e.statusText}`).headers(e.headers).body(t).build()})(o)),o}:n})(o,a),c=async o=>{const a=(null==r?void 0:r.beforeRequest)?r.beforeRequest(o):o,{path:c,body:u,headers:l,queryParams:d,method:p,token:f}=a,g={headers:tt(ot(t,f),{"x-descope-sdk-name":"core-js","x-descope-sdk-version":"2.11.3"},(null==n?void 0:n.baseHeaders)||{},l),method:p,body:nt(u)};null!==i&&(g.credentials=i||"include");const h=await s((({path:e,baseUrl:t,queryParams:n,projectId:o})=>{const r=o.slice(1,-27);t=t.replace(Xe,r?r+".":"");const i=new URL(e,t);return n&&(i.search=new URLSearchParams(n).toString()),i})({path:c,baseUrl:e,queryParams:d,projectId:t}),g);return(null==r?void 0:r.afterRequest)&&await r.afterRequest(o,null==h?void 0:h.clone()),h};return{get:(e,{headers:t,queryParams:n,token:o}={})=>c({path:e,headers:t,queryParams:n,body:void 0,method:et.get,token:o}),post:(e,t,{headers:n,queryParams:o,token:r}={})=>c({path:e,headers:n,queryParams:o,body:t,method:et.post,token:r}),put:(e,t,{headers:n,queryParams:o,token:r}={})=>c({path:e,headers:n,queryParams:o,body:t,method:et.put,token:r}),delete:(e,{headers:t,queryParams:n,token:o}={})=>c({path:e,headers:t,queryParams:n,body:void 0,method:et.delete,token:o}),hooks:r}};var it=429;function at(e,t,n){var o;let r=st(e);t&&(r=null===(o=null==r?void 0:r.tenants)||void 0===o?void 0:o[t]);const i=null==r?void 0:r[n];return Array.isArray(i)?i:[]}function st(e){if("string"!=typeof e||!e)throw new Error("Invalid token provided");return p(e)}function ct(e){const{exp:t}=st(e);return(new Date).getTime()/1e3>t}function ut(e){let t=st(e);const n=Object.keys(null==t?void 0:t.tenants);return Array.isArray(n)?n:[]}function lt(e,t){return at(e,t,"permissions")}function dt(e,t){return at(e,t,"roles")}const pt=(...e)=>e.join("/").replace(/\/{2,}/g,"/");async function ft(e,t){var n;const o=await e,r={code:o.status,ok:o.ok,response:o},i=await o.clone().json();return o.ok?r.data=t?t(i):i:(r.error=i,o.status===it&&Object.assign(r.error,{retryAfter:Number.parseInt(null===(n=o.headers)||void 0===n?void 0:n.get("retry-after"))||0})),r}const gt=(e,t)=>(n=t)=>t=>!e(t)&&n.replace("{val}",t),ht=(...e)=>({validate:t=>(e.forEach((e=>{const n=e(t);if(n)throw new Error(n)})),!0)}),vt=e=>t=>e.test(t),yt=vt(/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/),bt=vt(/^\+[1-9]{1}[0-9]{3,14}$/),wt=gt(yt,'"{val}" is not a valid email'),mt=gt(bt,'"{val}" is not a valid phone number'),It=gt((1,e=>e.length>=1),"Minimum length is 1");const Ot=gt((e=>"string"==typeof e),"Input is not a string"),kt=gt((e=>void 0===e),"Input is defined"),jt=(_t=[Ot(),kt()],"Input is not a string or undefined",(e="Input is not a string or undefined")=>t=>{const n=_t.filter((e=>e(t)));return!(n.length<_t.length)&&(e?e.replace("{val}",t):n.join(" OR "))});var _t;const St=(...e)=>t=>(...n)=>(e.forEach(((e,t)=>ht(...e).validate(n[t]))),t(...n)),Ut=e=>[Ot(`"${e}" must be a string`),It(`"${e}" must not be empty`)],Pt=e=>[Ot(`"${e}" must be a string`),wt()],Rt=e=>[Ot(`"${e}" must be a string`),mt()],Et=St(Ut("accessKey")),xt=e=>({exchange:Et(((t,n)=>ft(e.post(ae,{loginOptions:n},{token:t}))))});var Tt,At;!function(e){e.sms="sms",e.whatsapp="whatsapp"}(Tt||(Tt={})),function(e){e.email="email"}(At||(At={}));const Ct=Object.assign(Object.assign({},Tt),At);var $t;!function(e){e.waiting="waiting",e.running="running",e.completed="completed",e.failed="failed"}($t||($t={}));const qt=Ut("loginId"),Dt=St(Ut("token")),Jt=St(qt),Kt=St(Ut("pendingRef")),Nt=St(qt,Pt("email")),Lt=e=>({verify:Dt((t=>ft(e.post(ye,{token:t})))),signIn:Jt(((t,n,o,r)=>ft(e.post(pt(be,Ct.email),{loginId:t,URI:n,loginOptions:o},{token:r})))),signUpOrIn:Jt(((t,n,o)=>ft(e.post(pt(Oe,Ct.email),{loginId:t,URI:n,loginOptions:o})))),signUp:Jt(((t,n,o,r)=>ft(e.post(pt(we,Ct.email),{loginId:t,URI:n,user:o,loginOptions:r})))),waitForSession:Kt(((t,n)=>new Promise((o=>{const{pollingIntervalMs:r,timeoutMs:i}=(({pollingIntervalMs:e=1e3,timeoutMs:t=6e5}={})=>({pollingIntervalMs:Math.max(e||1e3,1e3),timeoutMs:Math.min(t||Qe,Qe)}))(n);let a;const s=setInterval((async()=>{const n=await e.post(me,{pendingRef:t});n.ok&&(clearInterval(s),a&&clearTimeout(a),o(ft(Promise.resolve(n))))}),r);a=setTimeout((()=>{o({error:{errorDescription:`Session polling timeout exceeded: ${i}ms`,errorCode:"0"},ok:!1}),clearInterval(s)}),i)})))),update:{email:Nt(((t,n,o,r,i)=>ft(e.post(Ie.email,Object.assign({loginId:t,email:n,URI:o},i),{token:r}))))}}),Mt=St(Ut("flowId")),Ft=St(Ut("executionId"),Ut("stepId"),Ut("interactionId")),Vt=e=>({start:Mt(((t,n,o,r,i,a,s)=>ft(e.post(Ge,{flowId:t,options:n,conditionInteractionId:o,interactionId:r,version:i,componentsVersion:a,input:s})))),next:Ft(((t,n,o,r,i,a)=>ft(e.post(Ze,{executionId:t,stepId:n,interactionId:o,version:r,componentsVersion:i,input:a}))))}),Ht=Ut("loginId"),Bt=St(Ut("token")),zt=St(Ht),Gt=St(Ht,Rt("phone")),Zt=St(Ht,Pt("email")),Xt=e=>({verify:Bt((t=>ft(e.post(pe,{token:t})))),signIn:Object.keys(Ct).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:zt(((t,o,r,i)=>ft(e.post(pt(fe,n),{loginId:t,URI:o,loginOptions:r},{token:i}))))})),{}),signUp:Object.keys(Ct).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:zt(((t,o,r,i)=>ft(e.post(pt(ge,n),{loginId:t,URI:o,user:r,loginOptions:i}))))})),{}),signUpOrIn:Object.keys(Ct).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:zt(((t,o,r)=>ft(e.post(pt(ve,n),{loginId:t,URI:o,loginOptions:r}))))})),{}),update:{email:Zt(((t,n,o,r,i)=>ft(e.post(he.email,Object.assign({loginId:t,email:n,URI:o},i),{token:r})))),phone:Object.keys(Tt).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:Gt(((t,o,r,i,a)=>ft(e.post(pt(he.phone,n),Object.assign({loginId:t,phone:o,URI:r},a),{token:i}))))})),{})}});var Yt;!function(e){e.facebook="facebook",e.github="github",e.google="google",e.microsoft="microsoft",e.gitlab="gitlab",e.apple="apple",e.discord="discord",e.linkedin="linkedin",e.slack="slack"}(Yt||(Yt={}));const Qt=St(Ut("code")),Wt=e=>({start:Object.assign(((t,n,o,r)=>ft(e.post(ke,o||{},{queryParams:Object.assign({provider:t},n&&{redirectURL:n}),token:r}))),Object.keys(Yt).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:(t,o,r)=>ft(e.post(ke,o||{},{queryParams:Object.assign({provider:n},t&&{redirectURL:t}),token:r}))})),{})),exchange:Qt((t=>ft(e.post(je,{code:t})))),startNative:(t,n)=>ft(e.post(_e,{provider:t,loginOptions:n})),finishNative:(t,n,o,r,i)=>ft(e.post(Se,{provider:t,stateId:n,user:o,code:r,idToken:i}))}),en=Ut("loginId"),tn=St(en,Ut("code")),nn=St(en),on=St(en,Rt("phone")),rn=St(en,Pt("email")),an=e=>({verify:Object.keys(Ct).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:tn(((t,o)=>ft(e.post(pt(se,n),{code:o,loginId:t}))))})),{}),signIn:Object.keys(Ct).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:nn(((t,o,r)=>ft(e.post(pt(ce,n),{loginId:t,loginOptions:o},{token:r}))))})),{}),signUp:Object.keys(Ct).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:nn(((t,o,r)=>ft(e.post(pt(ue,n),{loginId:t,user:o,loginOptions:r}))))})),{}),signUpOrIn:Object.keys(Ct).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:nn(((t,o)=>ft(e.post(pt(de,n),{loginId:t,loginOptions:o}))))})),{}),update:{email:rn(((t,n,o,r)=>ft(e.post(le.email,Object.assign({loginId:t,email:n},r),{token:o})))),phone:Object.keys(Tt).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:on(((t,o,r,i)=>ft(e.post(pt(le.phone,n),Object.assign({loginId:t,phone:o},i),{token:r}))))})),{})}}),sn=St(Ut("tenant")),cn=St(Ut("code")),un=e=>({start:sn(((t,n,o,r)=>ft(e.post(Ue,o||{},{queryParams:{tenant:t,redirectURL:n},token:r})))),exchange:cn((t=>ft(e.post(Pe,{code:t}))))}),ln=Ut("loginId"),dn=St(ln,Ut("code")),pn=St(ln),fn=St(ln),gn=e=>({signUp:pn(((t,n)=>ft(e.post(Ee,{loginId:t,user:n})))),verify:dn(((t,n,o,r)=>ft(e.post(Re,{loginId:t,code:n,loginOptions:o},{token:r})))),update:fn(((t,n)=>ft(e.post(xe,{loginId:t},{token:n}))))}),hn=Ut("loginId"),vn=Ut("newPassword"),yn=St(hn,Ut("password")),bn=St(hn),wn=St(hn,vn),mn=St(hn,Ut("oldPassword"),vn),In=e=>({signUp:yn(((t,n,o)=>ft(e.post(qe,{loginId:t,password:n,user:o})))),signIn:yn(((t,n)=>ft(e.post(De,{loginId:t,password:n})))),sendReset:bn(((t,n,o)=>ft(e.post(Je,{loginId:t,redirectUrl:n,templateOptions:o})))),update:wn(((t,n,o)=>ft(e.post(Ke,{loginId:t,newPassword:n},{token:o})))),replace:mn(((t,n,o)=>ft(e.post(Ne,{loginId:t,oldPassword:n,newPassword:o})))),policy:()=>ft(e.get(Le))}),On=[Ot('"loginId" must be a string')],kn=Ut("loginId"),jn=Ut("origin"),_n=St(kn,jn,Ut("name")),Sn=St(kn,jn),Un=St(On,jn),Pn=St(kn,jn,Ut("token")),Rn=St(Ut("transactionId"),Ut("response")),En=e=>({signUp:{start:_n(((t,n,o)=>ft(e.post(Te.start,{user:{loginId:t,name:o},origin:n})))),finish:Rn(((t,n)=>ft(e.post(Te.finish,{transactionId:t,response:n}))))},signIn:{start:Un(((t,n,o,r)=>ft(e.post(Ae.start,{loginId:t,origin:n,loginOptions:o},{token:r})))),finish:Rn(((t,n)=>ft(e.post(Ae.finish,{transactionId:t,response:n}))))},signUpOrIn:{start:Sn(((t,n)=>ft(e.post(Ce.start,{loginId:t,origin:n}))))},update:{start:Pn(((t,n,o)=>ft(e.post($e.start,{loginId:t,origin:n},{token:o})))),finish:Rn(((t,n)=>ft(e.post($e.finish,{transactionId:t,response:n}))))}}),xn=St(Ut("token")),Tn=St([jt('"token" must be string or undefined')]);var An,Cn=St([("projectId",An=Ut("projectId"),gt(((e,t)=>n=>ht(...t).validate(ie(n,e)))("projectId",An))())])((e=>(({projectId:e,logger:t,baseUrl:n,hooks:o,cookiePolicy:r,baseHeaders:i={},fetch:a})=>{return s=rt({baseUrl:n||Ye,projectId:e,logger:t,hooks:o,cookiePolicy:r,baseConfig:{baseHeaders:i},fetch:a}),{accessKey:xt(s),otp:an(s),magicLink:Xt(s),enchantedLink:Lt(s),oauth:Wt(s),saml:un(s),totp:gn(s),webauthn:En(s),password:In(s),flow:Vt(s),refresh:Tn((e=>ft(s.post(Me,{},{token:e})))),selectTenant:St([Ot("tenantId")],[jt('"token" must be string or undefined')])(((e,t)=>ft(s.post(Fe,{tenant:e},{token:t})))),logout:Tn((e=>ft(s.post(Ve,{},{token:e})))),logoutAll:Tn((e=>ft(s.post(He,{},{token:e})))),me:Tn((e=>ft(s.get(Be,{token:e})))),history:Tn((e=>ft(s.get(ze,{token:e})))),isJwtExpired:xn(ct),getTenants:xn(ut),getJwtPermissions:xn(lt),getJwtRoles:xn(dt),httpClient:s};var s})(Object.assign(Object.assign({},e),{hooks:{beforeRequest:t=>{var n;const o=[].concat((null===(n=e.hooks)||void 0===n?void 0:n.beforeRequest)||[]);return null==o?void 0:o.reduce(((e,t)=>t(e)),t)},afterRequest:async(t,n)=>{var o;const r=[].concat((null===(o=e.hooks)||void 0===o?void 0:o.afterRequest)||[]);(await Promise.allSettled(null==r?void 0:r.map((e=>e(t,null==n?void 0:n.clone()))))).forEach((t=>{var n;return"rejected"===t.status&&(null===(n=e.logger)||void 0===n?void 0:n.error(t.reason))}))}}}))));const $n=(e,t,n)=>(t.forEach((t=>{const o=t.split(".");let r=o.shift(),i=e;for(;o.length>0;){if(i=i[r],!r||!i)throw Error(`Invalid path "${t}", "${r}" is missing or has no value`);r=o.shift()}if("function"!=typeof i[r])throw Error(`"${t}" is not a function`);const a=i[r];i[r]=n(a)})),e);var qn=Object.assign(Cn,{DeliveryMethods:Ct});const Dn=(...e)=>{console.debug(...e)},Jn="undefined"!=typeof window,Kn=Math.pow(2,31)-1,Nn=Jn&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem("fingerprint.endpoint.url"))||"https://api.descope.com";var Ln={default:"endpoint"},Mn="Blocked by CSP",Fn="9319";function Vn(e,t){var n=[];return function(e,t){var n,o,r=(o=function(e,t,n){if(n||2===arguments.length)for(var o,r=0,i=t.length;r<i;r++)!o&&r in t||(o||(o=Array.prototype.slice.call(t,0,r)),o[r]=t[r]);return e.concat(o||Array.prototype.slice.call(t))}([],e,!0),{current:function(){return o[0]},postpone:function(){var e=o.shift();void 0!==e&&o.push(e)},exclude:function(){o.shift()}}),i=(100,3e3,n=0,function(){return Math.random()*Math.min(3e3,100*Math.pow(2,n++))}),a=r.current();if(void 0===a)return Promise.reject(new TypeError("The list of script URL patterns is empty"));var s=function(e,n){return t(e).catch((function(e){if(n+1>=5)throw e;!function(e){if(!(e instanceof Error))return!1;var t=e.message;return t===Mn||t===Fn}(e)?r.postpone():r.exclude();var t,o=r.current();if(void 0===o)throw e;return(t=i(),new Promise((function(e){return setTimeout(e,t)}))).then((function(){return s(o,n+1)}))}))};return s(a,0)}(e,(function(e){var o=new Date,r=function(t){return n.push({url:e,startedAt:o,finishedAt:new Date,error:t})},i=t(e);return i.then((function(){return r()}),r),i})).then((function(e){return[e,{attempts:n}]}))}var Hn="https://fpnpmcdn.net/v<version>/<apiKey>/loader_v<loaderVersion>.js",Bn=Hn,zn="Failed to load the JS script of the agent";function Gn(e){var t;e.scriptUrlPattern;var n=e.token,o=e.apiKey,r=void 0===o?n:o,i=c(e,["scriptUrlPattern","token","apiKey"]),a=null!==(t=function(e,t){return function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}(e,t)?e[t]:void 0}(e,"scriptUrlPattern"))&&void 0!==t?t:Hn;return Promise.resolve().then((function(){if(!r||"string"!=typeof r)throw new Error("API key required");var e=function(e,t){return(Array.isArray(e)?e:[e]).map((function(e){return function(e,t){var n=encodeURIComponent;return e.replace(/<[^<>]+>/g,(function(e){return"<version>"===e?"3":"<apiKey>"===e?n(t):"<loaderVersion>"===e?n("3.8.5"):e}))}(String(e),t)}))}(a,r);return Vn(e,Zn).catch(Yn)})).then((function(e){var t=e[0],n=e[1];return t.load(s(s({},i),{ldi:n}))}))}function Zn(e){return function(e,t,n,o){var r,i=document,a="securitypolicyviolation",s=function(t){var n=new URL(e,location.href),o=t.blockedURI;o!==n.href&&o!==n.protocol.slice(0,-1)&&o!==n.origin||(r=t,c())};i.addEventListener(a,s);var c=function(){return i.removeEventListener(a,s)};return Promise.resolve().then(t).then((function(e){return c(),e}),(function(e){return new Promise((function(e){return setTimeout(e)})).then((function(){if(c(),r)return function(){throw new Error(Mn)}();throw e}))}))}(e,(function(){return function(e){return new Promise((function(t,n){var o=document.createElement("script"),r=function(){var e;return null===(e=o.parentNode)||void 0===e?void 0:e.removeChild(o)},i=document.head||document.getElementsByTagName("head")[0];o.onload=function(){r(),t()},o.onerror=function(){r(),n(new Error(zn))},o.async=!0,o.src=e,i.appendChild(o)}))}(e)})).then(Xn)}function Xn(){var e=window,t="__fpjs_p_l_b",n=e[t];if(function(e,t){var n,o=null===(n=Object.getOwnPropertyDescriptor)||void 0===n?void 0:n.call(Object,e,t);(null==o?void 0:o.configurable)?delete e[t]:o&&!o.writable||(e[t]=void 0)}(e,t),"function"!=typeof(null==n?void 0:n.load))throw new Error(Fn);return n}function Yn(e){throw e instanceof Error&&e.message===Fn?new Error(zn):e}const Qn=(e=!1)=>{const t=localStorage.getItem("fp");if(!t)return null;const n=JSON.parse(t);return(new Date).getTime()>n.expiry&&!e?null:n.value},Wn=async(e,t=Nn)=>{try{if(Qn())return;const n=(Date.now().toString(36)+Math.random().toString(36).substring(2)+Math.random().toString(36).substring(2)).substring(0,27),o=new URL(t);o.pathname="/fXj8gt3x8VulJBna/x96Emn69oZwcd7I6";const r=new URL(t);r.pathname="/fXj8gt3x8VulJBna/w78aRZnnDZ3Aqw0I";const i=r.toString()+"?apiKey=<apiKey>&version=<version>&loaderVersion=<loaderVersion>",a=Gn({apiKey:e,endpoint:[o.toString(),Ln],scriptUrlPattern:[i,Bn]}),s=await a,{requestId:c}=await s.get({linkedId:n}),u=((e,t)=>({vsid:e,vrid:t}))(n,c);(e=>{const t={value:e,expiry:(new Date).getTime()+864e5};localStorage.setItem("fp",JSON.stringify(t))})(u)}catch(e){console.warn("Could not load fingerprint",e)}},eo=e=>{const t=Qn(!0);return t&&e.body&&(e.body.fpData=t),e},to="dls_last_user_login_id",no="dls_last_user_display_name",oo=()=>i(to),ro=()=>i(no),io=e=>async(...t)=>{var n;t[1]=t[1]||{};const[,o={}]=t,r=oo(),i=ro();r&&(null!==(n=o.lastAuth)&&void 0!==n||(o.lastAuth={}),o.lastAuth.loginId=r,o.lastAuth.name=i);return await e(...t)},ao=e=>async(...t)=>{const n=await e(...t);return a(to),a(no),n};function so(){const e=[];return{pub:t=>{e.forEach((e=>e(t)))},sub:t=>{const n=e.push(t)-1;return()=>e.splice(n,1)}}}
2
2
  /*! js-cookie v3.0.5 | MIT */
3
- function co(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)e[o]=n[o]}return e}var uo=function e(t,n){function o(e,o,r){if("undefined"!=typeof document){"number"==typeof(r=co({},n,r)).expires&&(r.expires=new Date(Date.now()+864e5*r.expires)),r.expires&&(r.expires=r.expires.toUTCString()),e=encodeURIComponent(e).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var i="";for(var a in r)r[a]&&(i+="; "+a,!0!==r[a]&&(i+="="+r[a].split(";")[0]));return document.cookie=e+"="+t.write(o,e)+i}}return Object.create({set:o,get:function(e){if("undefined"!=typeof document&&(!arguments.length||e)){for(var n=document.cookie?document.cookie.split("; "):[],o={},r=0;r<n.length;r++){var i=n[r].split("="),a=i.slice(1).join("=");try{var s=decodeURIComponent(i[0]);if(o[s]=t.read(a,s),e===s)break}catch(e){}}return e?o[e]:o}},remove:function(e,t){o(e,"",co({},t,{expires:-1}))},withAttributes:function(t){return e(this.converter,co({},this.attributes,t))},withConverter:function(t){return e(co({},this.converter,t),this.attributes)}},{attributes:{value:Object.freeze(n)},converter:{value:Object.freeze(t)}})}({read:function(e){return'"'===e[0]&&(e=e.slice(1,-1)),e.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(e){return encodeURIComponent(e).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}},{path:"/"});const lo="DS",po="DSR";function fo(e,t,{cookiePath:n,cookieDomain:o,cookieExpiration:r}){if(t){const i=new Date(1e3*r),a=function(e){const t=window.location.hostname.split("."),n=e.split(".");return t.slice(-n.length).join(".")===e}(o);uo.set(e,t,{path:n,domain:a?o:void 0,expires:i,sameSite:"Strict",secure:!0})}}function go(e=""){return i(`${e}${po}`)||""}function ho(e=""){a(`${e}${po}`),a(`${e}${lo}`),uo.remove(lo)}const vo=e=>t=>async(...n)=>{const o=await t(...n);return ho(e),o};async function yo(e){const t=function(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=ko(n.publicKey.challenge),n.publicKey.user.id=ko(n.publicKey.user.id),null===(t=n.publicKey.excludeCredentials)||void 0===t||t.forEach((e=>{e.id=ko(e.id)})),n}(e),n=await navigator.credentials.create(t);return o=n,JSON.stringify({id:o.id,rawId:jo(o.rawId),type:o.type,response:{attestationObject:jo(o.response.attestationObject),clientDataJSON:jo(o.response.clientDataJSON)}});var o}async function bo(e){const t=Io(e);return Oo(await navigator.credentials.get(t))}async function wo(e,t){const n=Io(e);n.signal=t.signal,n.mediation="conditional";return Oo(await navigator.credentials.get(n))}async function mo(e=!1){if(!Jn)return Promise.resolve(!1);const t=!!(window.PublicKeyCredential&&navigator.credentials&&navigator.credentials.create&&navigator.credentials.get);return t&&e&&PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable?PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable():t}function Io(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=ko(n.publicKey.challenge),null===(t=n.publicKey.allowCredentials)||void 0===t||t.forEach((e=>{e.id=ko(e.id)})),n}function Oo(e){return JSON.stringify({id:e.id,rawId:jo(e.rawId),type:e.type,response:{authenticatorData:jo(e.response.authenticatorData),clientDataJSON:jo(e.response.clientDataJSON),signature:jo(e.response.signature),userHandle:e.response.userHandle?jo(e.response.userHandle):void 0}})}function ko(e){const t=e.replace(/_/g,"/").replace(/-/g,"+");return Uint8Array.from(atob(t),(e=>e.charCodeAt(0))).buffer}function jo(e){return btoa(String.fromCharCode.apply(null,new Uint8Array(e))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}var _o,So=(_o=e=>({async signUp(t,n){const o=await e.webauthn.signUp.start(t,window.location.origin,n);if(!o.ok)return o;const r=await yo(o.data.options);return await e.webauthn.signUp.finish(o.data.transactionId,r)},async signIn(t){const n=await e.webauthn.signIn.start(t,window.location.origin);if(!n.ok)return n;const o=await bo(n.data.options);return await e.webauthn.signIn.finish(n.data.transactionId,o)},async signUpOrIn(t){var n;const o=await e.webauthn.signUpOrIn.start(t,window.location.origin);if(!o.ok)return o;if(null===(n=o.data)||void 0===n?void 0:n.create){const t=await yo(o.data.options);return await e.webauthn.signUp.finish(o.data.transactionId,t)}{const t=await bo(o.data.options);return await e.webauthn.signIn.finish(o.data.transactionId,t)}},async update(t,n){const o=await e.webauthn.update.start(t,window.location.origin,n);if(!o.ok)return o;const r=await yo(o.data.options);return await e.webauthn.update.finish(o.data.transactionId,r)},helpers:{create:yo,get:bo,isSupported:mo,conditional:wo}}),(...e)=>{const t=_o(...e);return Object.assign(t.signUp,e[0].webauthn.signUp),Object.assign(t.signIn,e[0].webauthn.signIn),Object.assign(t.signUpOrIn,e[0].webauthn.signUpOrIn),Object.assign(t.update,e[0].webauthn.update),t});const Uo=e=>({async oneTap(t,n,o,r){const i=null!=t?t:"google",a=await e.oauth.startNative(i,o);if(!a.ok)return a;const{clientId:s,stateId:c,nonce:u}=a.data,l=await async function(){return new Promise(((e,t)=>{if(window.google)return void e(window.google.accounts.id);let n=document.getElementById("google-gsi-client-script");n||(n=document.createElement("script"),document.head.appendChild(n),n.async=!0,n.defer=!0,n.id="google-gsi-client-script",n.src="https://accounts.google.com/gsi/client"),n.onload=function(){window.google?e(window.google.accounts.id):t("Failed to load Google GSI client script - not loaded properly")},n.onerror=function(){t("Failed to load Google GSI client script - failed to load")}}))}();return new Promise((t=>{var o,a;l.initialize(Object.assign(Object.assign({},n),{itp_support:null===(o=null==n?void 0:n.itp_support)||void 0===o||o,use_fedcm_for_prompt:null===(a=null==n?void 0:n.use_fedcm_for_prompt)||void 0===a||a,client_id:s,callback:n=>{t(e.oauth.finishNative(i,c,"","",n.credential))},nonce:u})),l.prompt((e=>{(null==e?void 0:e.isSkippedMoment())&&(null==r||r())}))}))}});var Po=e=>Object.assign(Object.assign({},e.flow),{start:async(...t)=>{const n=await mo(),o=Object.assign(Object.assign({location:window.location.href},t[1]),{deviceInfo:{webAuthnSupport:n},startOptionsVersion:1});return t[1]=o,e.flow.start(...t)}});const Ro=function(...e){return t=>e.reduce(((e,t)=>t(e)),t)}((t=>n=>{var{fpKey:o,fpLoad:r}=n,i=c(n,["fpKey","fpLoad"]);return Jn?(o&&r&&Wn(o).catch((()=>null)),t(e(i,{beforeRequest:eo}))):(console.warn("Fingerprint is a client side only capability and will not work when running in the server"),t(i))}),(n=>o=>{var{autoRefresh:r}=o,i=c(o,["autoRefresh"]);if(!r)return n(i);const{clearAllTimers:a,setTimer:s}=(()=>{const e=[];return{clearAllTimers:()=>{for(;e.length;)clearTimeout(e.pop())},setTimer:(t,n)=>{e.push(setTimeout(t,n))}}})();let u,l;document.addEventListener("visibilitychange",(()=>{"visible"===document.visibilityState&&new Date>u&&(Dn("Expiration time passed, refreshing session"),d.refresh(l))}));const d=n(e(i,{afterRequest:async(e,n)=>{const{refreshJwt:o,sessionJwt:r}=await t(n);if(401===(null==n?void 0:n.status))Dn("Received 401, canceling all timers"),a();else if(r){u=(e=>{const t=e.split(".");try{if(3===t.length){const e=JSON.parse(window.atob(t[1]));if(e.exp)return new Date(1e3*e.exp)}}catch(e){}return null})(r),l=o;let e=((i=u)?i.getTime()-(new Date).getTime():0)-2e4;e>Kn&&(Dn(`Timeout is too large (${e}ms), setting it to ${Kn}ms`),e=Kn),a();const t=new Date(Date.now()+e).toLocaleTimeString("en-US",{hour12:!1});Dn(`Setting refresh timer for ${t}. (${e}ms)`),s((()=>{Dn("Refreshing session due to timer"),d.refresh(o)}),e)}var i}}));return $n(d,["logout","logoutAll"],(e=>async(...t)=>{const n=await e(...t);return Dn("Clearing all timers"),a(),n}))}),(e=>t=>e(Object.assign(Object.assign({},t),{baseHeaders:Object.assign({"x-descope-sdk-name":"web-js","x-descope-sdk-version":"1.10.5"},t.baseHeaders)}))),(o=>r=>{const i=so(),a=so(),s=o(e(r,{afterRequest:async(e,o)=>{if(401===(null==o?void 0:o.status))i.pub(null),a.pub(null);else{const e=await n(o);e&&a.pub(e);const{sessionJwt:r}=await t(o);r&&i.pub(r)}}})),c=$n(s,["logout","logoutAll"],(e=>async(...t)=>{const n=await e(...t);return i.pub(null),a.pub(null),n}));return Object.assign(c,{onSessionTokenChange:i.sub,onUserChange:a.sub})}),(t=>o=>{const i=t(e(o,{afterRequest:async(e,t)=>{var o;const i=await n(t),a=null===(o=null==i?void 0:i.loginIds)||void 0===o?void 0:o[0],s=null==i?void 0:i.name;a&&((e=>{r(to,e)})(a),(e=>{r(no,e)})(s))}}));let a=$n(i,["flow.start"],io);return a=$n(a,["logout","logoutAll"],ao),Object.assign(a,{getLastUserLoginId:oo,getLastUserDisplayName:ro})}),(n=>o=>{var{persistTokens:a,sessionTokenViaCookie:s,storagePrefix:u}=o,l=c(o,["persistTokens","sessionTokenViaCookie","storagePrefix"]);if(!a||!Jn)return a&&console.warn("Storing auth tokens in local storage and cookies are a client side only capabilities and will not be done when running in the server"),n(l);const d=n(e(l,{beforeRequest:(p=u,e=>Object.assign(e,{token:e.token||go(p)})),afterRequest:async(e,n)=>{401===(null==n?void 0:n.status)?ho(u):((e={},t,n)=>{var{refreshJwt:o,sessionJwt:i}=e,a=c(e,["refreshJwt","sessionJwt"]);void 0===t&&(t=!1),void 0===n&&(n=""),o&&r(`${n}${po}`,o),i&&(t?fo(lo,i,a):r(`${n}${lo}`,i))})(await t(n),s,u)}}));var p;const f=$n(d,["logout","logoutAll"],vo(u));return Object.assign(f,{getRefreshToken:()=>go(u),getSessionToken:()=>function(e=""){return uo.get(lo)||i(`${e}${lo}`)||""}(u)})}))(((...e)=>{const t=qn(...e);return Object.assign(Object.assign({},t),{flow:Po(t),webauthn:So(t),fedcm:Uo(t)})}));return Ro.REFRESH_TOKEN_KEY=po,Ro.SESSION_TOKEN_KEY=lo,Ro}));
3
+ function co(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)e[o]=n[o]}return e}var uo=function e(t,n){function o(e,o,r){if("undefined"!=typeof document){"number"==typeof(r=co({},n,r)).expires&&(r.expires=new Date(Date.now()+864e5*r.expires)),r.expires&&(r.expires=r.expires.toUTCString()),e=encodeURIComponent(e).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var i="";for(var a in r)r[a]&&(i+="; "+a,!0!==r[a]&&(i+="="+r[a].split(";")[0]));return document.cookie=e+"="+t.write(o,e)+i}}return Object.create({set:o,get:function(e){if("undefined"!=typeof document&&(!arguments.length||e)){for(var n=document.cookie?document.cookie.split("; "):[],o={},r=0;r<n.length;r++){var i=n[r].split("="),a=i.slice(1).join("=");try{var s=decodeURIComponent(i[0]);if(o[s]=t.read(a,s),e===s)break}catch(e){}}return e?o[e]:o}},remove:function(e,t){o(e,"",co({},t,{expires:-1}))},withAttributes:function(t){return e(this.converter,co({},this.attributes,t))},withConverter:function(t){return e(co({},this.converter,t),this.attributes)}},{attributes:{value:Object.freeze(n)},converter:{value:Object.freeze(t)}})}({read:function(e){return'"'===e[0]&&(e=e.slice(1,-1)),e.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(e){return encodeURIComponent(e).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}},{path:"/"});const lo="DS",po="DSR";function fo(e,t,{cookiePath:n,cookieDomain:o,cookieExpiration:r}){if(t){const i=new Date(1e3*r),a=function(e){const t=window.location.hostname.split("."),n=e.split(".");return t.slice(-n.length).join(".")===e}(o);uo.set(e,t,{path:n,domain:a?o:void 0,expires:i,sameSite:"Strict",secure:!0})}}function go(e=""){return i(`${e}${po}`)||""}function ho(e=""){a(`${e}${po}`),a(`${e}${lo}`),uo.remove(lo)}const vo=e=>t=>async(...n)=>{const o=await t(...n);return ho(e),o};async function yo(e){const t=function(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=ko(n.publicKey.challenge),n.publicKey.user.id=ko(n.publicKey.user.id),null===(t=n.publicKey.excludeCredentials)||void 0===t||t.forEach((e=>{e.id=ko(e.id)})),n}(e),n=await navigator.credentials.create(t);return o=n,JSON.stringify({id:o.id,rawId:jo(o.rawId),type:o.type,response:{attestationObject:jo(o.response.attestationObject),clientDataJSON:jo(o.response.clientDataJSON)}});var o}async function bo(e){const t=Io(e);return Oo(await navigator.credentials.get(t))}async function wo(e,t){const n=Io(e);n.signal=t.signal,n.mediation="conditional";return Oo(await navigator.credentials.get(n))}async function mo(e=!1){if(!Jn)return Promise.resolve(!1);const t=!!(window.PublicKeyCredential&&navigator.credentials&&navigator.credentials.create&&navigator.credentials.get);return t&&e&&PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable?PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable():t}function Io(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=ko(n.publicKey.challenge),null===(t=n.publicKey.allowCredentials)||void 0===t||t.forEach((e=>{e.id=ko(e.id)})),n}function Oo(e){return JSON.stringify({id:e.id,rawId:jo(e.rawId),type:e.type,response:{authenticatorData:jo(e.response.authenticatorData),clientDataJSON:jo(e.response.clientDataJSON),signature:jo(e.response.signature),userHandle:e.response.userHandle?jo(e.response.userHandle):void 0}})}function ko(e){const t=e.replace(/_/g,"/").replace(/-/g,"+");return Uint8Array.from(atob(t),(e=>e.charCodeAt(0))).buffer}function jo(e){return btoa(String.fromCharCode.apply(null,new Uint8Array(e))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}var _o,So=(_o=e=>({async signUp(t,n){const o=await e.webauthn.signUp.start(t,window.location.origin,n);if(!o.ok)return o;const r=await yo(o.data.options);return await e.webauthn.signUp.finish(o.data.transactionId,r)},async signIn(t){const n=await e.webauthn.signIn.start(t,window.location.origin);if(!n.ok)return n;const o=await bo(n.data.options);return await e.webauthn.signIn.finish(n.data.transactionId,o)},async signUpOrIn(t){var n;const o=await e.webauthn.signUpOrIn.start(t,window.location.origin);if(!o.ok)return o;if(null===(n=o.data)||void 0===n?void 0:n.create){const t=await yo(o.data.options);return await e.webauthn.signUp.finish(o.data.transactionId,t)}{const t=await bo(o.data.options);return await e.webauthn.signIn.finish(o.data.transactionId,t)}},async update(t,n){const o=await e.webauthn.update.start(t,window.location.origin,n);if(!o.ok)return o;const r=await yo(o.data.options);return await e.webauthn.update.finish(o.data.transactionId,r)},helpers:{create:yo,get:bo,isSupported:mo,conditional:wo}}),(...e)=>{const t=_o(...e);return Object.assign(t.signUp,e[0].webauthn.signUp),Object.assign(t.signIn,e[0].webauthn.signIn),Object.assign(t.signUpOrIn,e[0].webauthn.signUpOrIn),Object.assign(t.update,e[0].webauthn.update),t});const Uo=e=>({async oneTap(t,n,o,r){const i=null!=t?t:"google",a=await e.oauth.startNative(i,o);if(!a.ok)return a;const{clientId:s,stateId:c,nonce:u}=a.data,l=await async function(){return new Promise(((e,t)=>{if(window.google)return void e(window.google.accounts.id);let n=document.getElementById("google-gsi-client-script");n||(n=document.createElement("script"),document.head.appendChild(n),n.async=!0,n.defer=!0,n.id="google-gsi-client-script",n.src="https://accounts.google.com/gsi/client"),n.onload=function(){window.google?e(window.google.accounts.id):t("Failed to load Google GSI client script - not loaded properly")},n.onerror=function(){t("Failed to load Google GSI client script - failed to load")}}))}();return new Promise((t=>{var o,a;l.initialize(Object.assign(Object.assign({},n),{itp_support:null===(o=null==n?void 0:n.itp_support)||void 0===o||o,use_fedcm_for_prompt:null===(a=null==n?void 0:n.use_fedcm_for_prompt)||void 0===a||a,client_id:s,callback:n=>{t(e.oauth.finishNative(i,c,"","",n.credential))},nonce:u})),l.prompt((e=>{(null==e?void 0:e.isSkippedMoment())&&(null==r||r())}))}))}});var Po=e=>Object.assign(Object.assign({},e.flow),{start:async(...t)=>{const n=await mo(),o=Object.assign(Object.assign({location:window.location.href},t[1]),{deviceInfo:{webAuthnSupport:n},startOptionsVersion:1});return t[1]=o,e.flow.start(...t)}});const Ro=function(...e){return t=>e.reduce(((e,t)=>t(e)),t)}((t=>n=>{var{fpKey:o,fpLoad:r}=n,i=c(n,["fpKey","fpLoad"]);return Jn?(o&&r&&Wn(o).catch((()=>null)),t(e(i,{beforeRequest:eo}))):(console.warn("Fingerprint is a client side only capability and will not work when running in the server"),t(i))}),(n=>o=>{var{autoRefresh:r}=o,i=c(o,["autoRefresh"]);if(!r)return n(i);const{clearAllTimers:a,setTimer:s}=(()=>{const e=[];return{clearAllTimers:()=>{for(;e.length;)clearTimeout(e.pop())},setTimer:(t,n)=>{e.push(setTimeout(t,n))}}})();let u,l;document.addEventListener("visibilitychange",(()=>{"visible"===document.visibilityState&&new Date>u&&(Dn("Expiration time passed, refreshing session"),d.refresh(l))}));const d=n(e(i,{afterRequest:async(e,n)=>{const{refreshJwt:o,sessionJwt:r}=await t(n);if(401===(null==n?void 0:n.status))Dn("Received 401, canceling all timers"),a();else if(r){u=(e=>{const t=e.split(".");try{if(3===t.length){const e=JSON.parse(window.atob(t[1]));if(e.exp)return new Date(1e3*e.exp)}}catch(e){}return null})(r),l=o;let e=((i=u)?i.getTime()-(new Date).getTime():0)-2e4;e>Kn&&(Dn(`Timeout is too large (${e}ms), setting it to ${Kn}ms`),e=Kn),a();const t=new Date(Date.now()+e).toLocaleTimeString("en-US",{hour12:!1});Dn(`Setting refresh timer for ${t}. (${e}ms)`),s((()=>{Dn("Refreshing session due to timer"),d.refresh(o)}),e)}var i}}));return $n(d,["logout","logoutAll"],(e=>async(...t)=>{const n=await e(...t);return Dn("Clearing all timers"),a(),n}))}),(e=>t=>e(Object.assign(Object.assign({},t),{baseHeaders:Object.assign({"x-descope-sdk-name":"web-js","x-descope-sdk-version":"1.10.6"},t.baseHeaders)}))),(o=>r=>{const i=so(),a=so(),s=o(e(r,{afterRequest:async(e,o)=>{if(401===(null==o?void 0:o.status))i.pub(null),a.pub(null);else{const e=await n(o);e&&a.pub(e);const{sessionJwt:r}=await t(o);r&&i.pub(r)}}})),c=$n(s,["logout","logoutAll"],(e=>async(...t)=>{const n=await e(...t);return i.pub(null),a.pub(null),n}));return Object.assign(c,{onSessionTokenChange:i.sub,onUserChange:a.sub})}),(t=>o=>{const i=t(e(o,{afterRequest:async(e,t)=>{var o;const i=await n(t),a=null===(o=null==i?void 0:i.loginIds)||void 0===o?void 0:o[0],s=null==i?void 0:i.name;a&&((e=>{r(to,e)})(a),(e=>{r(no,e)})(s))}}));let a=$n(i,["flow.start"],io);return a=$n(a,["logout","logoutAll"],ao),Object.assign(a,{getLastUserLoginId:oo,getLastUserDisplayName:ro})}),(n=>o=>{var{persistTokens:a,sessionTokenViaCookie:s,storagePrefix:u}=o,l=c(o,["persistTokens","sessionTokenViaCookie","storagePrefix"]);if(!a||!Jn)return a&&console.warn("Storing auth tokens in local storage and cookies are a client side only capabilities and will not be done when running in the server"),n(l);const d=n(e(l,{beforeRequest:(p=u,e=>Object.assign(e,{token:e.token||go(p)})),afterRequest:async(e,n)=>{401===(null==n?void 0:n.status)?ho(u):((e={},t,n)=>{var{refreshJwt:o,sessionJwt:i}=e,a=c(e,["refreshJwt","sessionJwt"]);void 0===t&&(t=!1),void 0===n&&(n=""),o&&r(`${n}${po}`,o),i&&(t?fo(lo,i,a):r(`${n}${lo}`,i))})(await t(n),s,u)}}));var p;const f=$n(d,["logout","logoutAll"],vo(u));return Object.assign(f,{getRefreshToken:()=>go(u),getSessionToken:()=>function(e=""){return uo.get(lo)||i(`${e}${lo}`)||""}(u)})}))(((...e)=>{const t=qn(...e);return Object.assign(Object.assign({},t),{flow:Po(t),webauthn:So(t),fedcm:Uo(t)})}));return Ro.REFRESH_TOKEN_KEY=po,Ro.SESSION_TOKEN_KEY=lo,Ro}));
4
4
  //# sourceMappingURL=index.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.js","sources":["../src/enhancers/helpers/index.ts","../../../node_modules/.pnpm/@rollup+plugin-typescript@11.1.0_rollup@3.21.0_tslib@2.6.2_typescript@4.9.5/node_modules/tslib/tslib.es6.js","../../../node_modules/.pnpm/jwt-decode@3.1.2/node_modules/jwt-decode/build/jwt-decode.esm.js","../../../node_modules/.pnpm/lodash.get@4.4.2/node_modules/lodash.get/index.js","../../core-js-sdk/dist/index.esm.js","../src/enhancers/withAutoRefresh/helpers.ts","../src/enhancers/helpers/logger.ts","../src/constants.ts","../src/enhancers/withFingerprint/constants.ts","../../../node_modules/.pnpm/@fingerprintjs+fingerprintjs-pro@3.8.5/node_modules/@fingerprintjs/fingerprintjs-pro/dist/fp.esm.min.js","../src/enhancers/withFingerprint/helpers.ts","../src/enhancers/withFingerprint/index.ts","../src/enhancers/withLastLoggedInUser/constants.ts","../src/enhancers/withLastLoggedInUser/helpers.ts","../src/enhancers/withLastLoggedInUser/index.ts","../src/enhancers/withNotifications/helpers.ts","../../../node_modules/.pnpm/js-cookie@3.0.5/node_modules/js-cookie/dist/js.cookie.mjs","../src/enhancers/withPersistTokens/constants.ts","../src/enhancers/withPersistTokens/helpers.ts","../src/enhancers/withPersistTokens/index.ts","../src/sdk/webauthn.ts","../src/sdk/fedcm.ts","../src/sdk/flow.ts","../src/sdk/index.ts","../src/index.ts","../src/enhancers/helpers/compose.ts","../src/enhancers/withAutoRefresh/index.ts","../src/enhancers/withAnalytics.ts","../src/enhancers/withNotifications/index.ts","../src/index.umd.ts"],"sourcesContent":["import { JWTResponse, UserResponse } from '@descope/core-js-sdk';\nimport { CoreSdkConfig } from '../../types';\n\n/**\n * Add hooks to an existing core-sdk config\n */\nexport const addHooks = <Config extends CoreSdkConfig>(\n config: Config,\n hooks: Config['hooks']\n): Config => {\n ['beforeRequest', 'afterRequest'].reduce((acc, key) => {\n acc[key] = [].concat(config.hooks?.[key] || []).concat(hooks?.[key] || []);\n\n return acc;\n }, (config.hooks ??= {}));\n\n return config;\n};\n\nexport { compose } from './compose';\n\n/**\n * Extract auth info (JWT response) from fetch response\n * We assume that the auth info is under a \"authInfo\" attribute (flow response)\n * Or the body itself (other auth methods response)\n */\nexport const getAuthInfoFromResponse = async (\n res: Response\n): Promise<Partial<JWTResponse>> => {\n if (!res?.ok) return {};\n const body = await res?.clone().json();\n return body?.authInfo || body || {};\n};\n\n/**\n * Extract user from fetch response\n * User my exist under \"user\" attribute (auth methods response)\n * Or the body itself (when calling \"me\")\n */\nexport const getUserFromResponse = async (\n res: Response\n): Promise<UserResponse> | undefined => {\n const authInfo = await getAuthInfoFromResponse(res);\n\n return (\n authInfo?.user ||\n (authInfo?.hasOwnProperty('userId')\n ? (authInfo as UserResponse)\n : undefined)\n );\n};\n\nexport const isLocalStorage = typeof localStorage !== 'undefined';\n\nexport const setLocalStorage = (key: string, value: string) =>\n isLocalStorage && localStorage?.setItem(key, value);\nexport const getLocalStorage = (key: string) =>\n isLocalStorage && localStorage?.getItem(key);\nexport const removeLocalStorage = (key: string) =>\n isLocalStorage && localStorage?.removeItem(key);\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","function e(e){this.message=e}e.prototype=new Error,e.prototype.name=\"InvalidCharacterError\";var r=\"undefined\"!=typeof window&&window.atob&&window.atob.bind(window)||function(r){var t=String(r).replace(/=+$/,\"\");if(t.length%4==1)throw new e(\"'atob' failed: The string to be decoded is not correctly encoded.\");for(var n,o,a=0,i=0,c=\"\";o=t.charAt(i++);~o&&(n=a%4?64*n+o:o,a++%4)?c+=String.fromCharCode(255&n>>(-2*a&6)):0)o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(o);return c};function t(e){var t=e.replace(/-/g,\"+\").replace(/_/g,\"/\");switch(t.length%4){case 0:break;case 2:t+=\"==\";break;case 3:t+=\"=\";break;default:throw\"Illegal base64url string!\"}try{return function(e){return decodeURIComponent(r(e).replace(/(.)/g,(function(e,r){var t=r.charCodeAt(0).toString(16).toUpperCase();return t.length<2&&(t=\"0\"+t),\"%\"+t})))}(t)}catch(e){return r(t)}}function n(e){this.message=e}function o(e,r){if(\"string\"!=typeof e)throw new n(\"Invalid token specified\");var o=!0===(r=r||{}).header?0:1;try{return JSON.parse(t(e.split(\".\")[o]))}catch(e){throw new n(\"Invalid token specified: \"+e.message)}}n.prototype=new Error,n.prototype.name=\"InvalidTokenError\";export default o;export{n as InvalidTokenError};\n//# sourceMappingURL=jwt-decode.esm.js.map\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n symbolTag = '[object Symbol]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n splice = arrayProto.splice;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n string = toString(string);\n\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","import e from\"jwt-decode\";import t from\"lodash.get\";var n={exchange:\"/v1/auth/accesskey/exchange\"},s={verify:\"/v1/auth/otp/verify\",signIn:\"/v1/auth/otp/signin\",signUp:\"/v1/auth/otp/signup\",update:{email:\"/v1/auth/otp/update/email\",phone:\"/v1/auth/otp/update/phone\"},signUpOrIn:\"/v1/auth/otp/signup-in\"},o={verify:\"/v1/auth/magiclink/verify\",signIn:\"/v1/auth/magiclink/signin\",signUp:\"/v1/auth/magiclink/signup\",update:{email:\"/v1/auth/magiclink/update/email\",phone:\"/v1/auth/magiclink/update/phone\"},signUpOrIn:\"/v1/auth/magiclink/signup-in\"},i={verify:\"/v1/auth/enchantedlink/verify\",signIn:\"/v1/auth/enchantedlink/signin\",signUp:\"/v1/auth/enchantedlink/signup\",session:\"/v1/auth/enchantedlink/pending-session\",update:{email:\"/v1/auth/enchantedlink/update/email\"},signUpOrIn:\"/v1/auth/enchantedlink/signup-in\"},a={start:\"/v1/auth/oauth/authorize\",exchange:\"/v1/auth/oauth/exchange\",startNative:\"v1/auth/oauth/native/start\",finishNative:\"v1/auth/oauth/native/finish\"},r={start:\"/v1/auth/saml/authorize\",exchange:\"/v1/auth/saml/exchange\"},d={verify:\"/v1/auth/totp/verify\",signUp:\"/v1/auth/totp/signup\",update:\"/v1/auth/totp/update\"},u={signUp:{start:\"/v1/auth/webauthn/signup/start\",finish:\"/v1/auth/webauthn/signup/finish\"},signIn:{start:\"/v1/auth/webauthn/signin/start\",finish:\"/v1/auth/webauthn/signin/finish\"},signUpOrIn:{start:\"/v1/auth/webauthn/signup-in/start\"},update:{start:\"v1/auth/webauthn/update/start\",finish:\"/v1/auth/webauthn/update/finish\"}},l={signUp:\"/v1/auth/password/signup\",signIn:\"/v1/auth/password/signin\",sendReset:\"/v1/auth/password/reset\",update:\"/v1/auth/password/update\",replace:\"/v1/auth/password/replace\",policy:\"/v1/auth/password/policy\"},p=\"/v1/auth/refresh\",c=\"/v1/auth/tenant/select\",g=\"/v1/auth/logout\",h=\"/v1/auth/logoutall\",v=\"/v1/auth/me\",f=\"/v1/auth/me/history\",m={start:\"/v1/flow/start\",next:\"/v1/flow/next\"};const I=\"<region>\",b=`https://api.${I}descope.com`,k=1e3,y=6e5,O=()=>{const e={};return{headers(t){const n=\"function\"==typeof t.entries?Object.fromEntries(t.entries()):t;return e.Headers=JSON.stringify(n),this},body(t){return e.Body=t,this},url(t){return e.Url=t.toString(),this},method(t){return e.Method=t,this},title(t){return e.Title=t,this},status(t){return e.Status=t,this},build:()=>Object.keys(e).flatMap((t=>e[t]?[`${\"Title\"!==t?`${t}: `:\"\"}${e[t]}`]:[])).join(\"\\n\")}},w=(e,t)=>{const n=(e=>async(...t)=>{const n=await e(...t),s=await n.text();return n.text=()=>Promise.resolve(s),n.json=()=>Promise.resolve(JSON.parse(s)),n.clone=()=>n,n})(t||fetch);return n||null==e||e.warn(\"Fetch is not defined, you will not be able to send http requests, if you are running in a test, make sure fetch is defined globally\"),e?async(...t)=>{if(!n)throw Error(\"Cannot send http request, fetch is not defined, if you are running in a test, make sure fetch is defined globally\");e.log((e=>O().title(\"Request\").url(e[0]).method(e[1].method).headers(e[1].headers).body(e[1].body).build())(t));const s=await n(...t);return e[s.ok?\"log\":\"error\"](await(async e=>{const t=await e.text();return O().title(\"Response\").url(e.url.toString()).status(`${e.status} ${e.statusText}`).headers(e.headers).body(t).build()})(s)),s}:n};var j;!function(e){e.get=\"GET\",e.delete=\"DELETE\",e.post=\"POST\",e.put=\"PUT\"}(j||(j={}));const U=(...e)=>new Headers(e.reduce(((e,t)=>{const n=(e=>Array.isArray(e)?e:e instanceof Headers?Array.from(e.entries()):e?Object.entries(e):[])(t);return n.reduce(((t,[n,s])=>(e[n]=s,e)),e),e}),{})),R=e=>void 0===e?void 0:JSON.stringify(e),P=(e,t=\"\")=>{let n=e;return t&&(n=n+\":\"+t),{Authorization:`Bearer ${n}`}},x=({baseUrl:e,projectId:t,baseConfig:n,logger:s,hooks:o,cookiePolicy:i,fetch:a})=>{const r=w(s,a),d=async s=>{const a=(null==o?void 0:o.beforeRequest)?o.beforeRequest(s):s,{path:d,body:u,headers:l,queryParams:p,method:c,token:g}=a,h={headers:U(P(t,g),{\"x-descope-sdk-name\":\"core-js\",\"x-descope-sdk-version\":\"2.11.3\"},(null==n?void 0:n.baseHeaders)||{},l),method:c,body:R(u)};null!==i&&(h.credentials=i||\"include\");const v=await r((({path:e,baseUrl:t,queryParams:n,projectId:s})=>{const o=s.slice(1,-27);t=t.replace(I,o?o+\".\":\"\");const i=new URL(e,t);return n&&(i.search=new URLSearchParams(n).toString()),i})({path:d,baseUrl:e,queryParams:p,projectId:t}),h);return(null==o?void 0:o.afterRequest)&&await o.afterRequest(s,null==v?void 0:v.clone()),v};return{get:(e,{headers:t,queryParams:n,token:s}={})=>d({path:e,headers:t,queryParams:n,body:void 0,method:j.get,token:s}),post:(e,t,{headers:n,queryParams:s,token:o}={})=>d({path:e,headers:n,queryParams:s,body:t,method:j.post,token:o}),put:(e,t,{headers:n,queryParams:s,token:o}={})=>d({path:e,headers:n,queryParams:s,body:t,method:j.put,token:o}),delete:(e,{headers:t,queryParams:n,token:s}={})=>d({path:e,headers:t,queryParams:n,body:void 0,method:j.delete,token:s}),hooks:o}};var q={TOO_MANY_REQUESTS:429};function $(e,t,n){var s;let o=E(e);t&&(o=null===(s=null==o?void 0:o.tenants)||void 0===s?void 0:s[t]);const i=null==o?void 0:o[n];return Array.isArray(i)?i:[]}function E(t){if(\"string\"!=typeof t||!t)throw new Error(\"Invalid token provided\");return e(t)}function T(e){const{exp:t}=E(e);return(new Date).getTime()/1e3>t}function S(e){let t=E(e);const n=Object.keys(null==t?void 0:t.tenants);return Array.isArray(n)?n:[]}function A(e,t){return $(e,t,\"permissions\")}function M(e,t){return $(e,t,\"roles\")}const N=(...e)=>e.join(\"/\").replace(/\\/{2,}/g,\"/\");async function L(e,t){var n;const s=await e,o={code:s.status,ok:s.ok,response:s},i=await s.clone().json();return s.ok?o.data=t?t(i):i:(o.error=i,s.status===q.TOO_MANY_REQUESTS&&Object.assign(o.error,{retryAfter:Number.parseInt(null===(n=s.headers)||void 0===n?void 0:n.get(\"retry-after\"))||0})),o}const z=(e,t)=>(n=t)=>t=>!e(t)&&n.replace(\"{val}\",t),H=(...e)=>({validate:t=>(e.forEach((e=>{const n=e(t);if(n)throw new Error(n)})),!0)}),J=e=>t=>e.test(t),C=J(/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/),_=J(/^\\+[1-9]{1}[0-9]{3,14}$/),D=z(C,'\"{val}\" is not a valid email'),Z=z(_,'\"{val}\" is not a valid phone number'),B=z((F=1,e=>e.length>=F),\"Minimum length is 1\");var F;const K=z((e=>\"string\"==typeof e),\"Input is not a string\"),Q=z((e=>void 0===e),\"Input is defined\"),V=(Y=[K(),Q()],G=\"Input is not a string or undefined\",(e=G)=>t=>{const n=Y.filter((e=>e(t)));return!(n.length<Y.length)&&(e?e.replace(\"{val}\",t):n.join(\" OR \"))});var Y,G;const W=(...e)=>t=>(...n)=>(e.forEach(((e,t)=>H(...e).validate(n[t]))),t(...n)),X=e=>[K(`\"${e}\" must be a string`),B(`\"${e}\" must not be empty`)],ee=e=>[K(`\"${e}\" must be a string`),D()],te=e=>[K(`\"${e}\" must be a string`),Z()],ne=W(X(\"accessKey\")),se=e=>({exchange:ne(((t,s)=>L(e.post(n.exchange,{loginOptions:s},{token:t}))))});var oe,ie;!function(e){e.sms=\"sms\",e.whatsapp=\"whatsapp\"}(oe||(oe={})),function(e){e.email=\"email\"}(ie||(ie={}));const ae=Object.assign(Object.assign({},oe),ie);var re;!function(e){e.waiting=\"waiting\",e.running=\"running\",e.completed=\"completed\",e.failed=\"failed\"}(re||(re={}));const de=X(\"loginId\"),ue=W(X(\"token\")),le=W(de),pe=W(X(\"pendingRef\")),ce=W(de,ee(\"email\")),ge=e=>({verify:ue((t=>L(e.post(i.verify,{token:t})))),signIn:le(((t,n,s,o)=>L(e.post(N(i.signIn,ae.email),{loginId:t,URI:n,loginOptions:s},{token:o})))),signUpOrIn:le(((t,n,s)=>L(e.post(N(i.signUpOrIn,ae.email),{loginId:t,URI:n,loginOptions:s})))),signUp:le(((t,n,s,o)=>L(e.post(N(i.signUp,ae.email),{loginId:t,URI:n,user:s,loginOptions:o})))),waitForSession:pe(((t,n)=>new Promise((s=>{const{pollingIntervalMs:o,timeoutMs:a}=(({pollingIntervalMs:e=1e3,timeoutMs:t=6e5}={})=>({pollingIntervalMs:Math.max(e||k,k),timeoutMs:Math.min(t||y,y)}))(n);let r;const d=setInterval((async()=>{const n=await e.post(i.session,{pendingRef:t});n.ok&&(clearInterval(d),r&&clearTimeout(r),s(L(Promise.resolve(n))))}),o);r=setTimeout((()=>{s({error:{errorDescription:`Session polling timeout exceeded: ${a}ms`,errorCode:\"0\"},ok:!1}),clearInterval(d)}),a)})))),update:{email:ce(((t,n,s,o,a)=>L(e.post(i.update.email,Object.assign({loginId:t,email:n,URI:s},a),{token:o}))))}}),he=W(X(\"flowId\")),ve=W(X(\"executionId\"),X(\"stepId\"),X(\"interactionId\")),fe=e=>({start:he(((t,n,s,o,i,a,r)=>L(e.post(m.start,{flowId:t,options:n,conditionInteractionId:s,interactionId:o,version:i,componentsVersion:a,input:r})))),next:ve(((t,n,s,o,i,a)=>L(e.post(m.next,{executionId:t,stepId:n,interactionId:s,version:o,componentsVersion:i,input:a}))))}),me=X(\"loginId\"),Ie=W(X(\"token\")),be=W(me),ke=W(me,te(\"phone\")),ye=W(me,ee(\"email\")),Oe=e=>({verify:Ie((t=>L(e.post(o.verify,{token:t})))),signIn:Object.keys(ae).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:be(((t,s,i,a)=>L(e.post(N(o.signIn,n),{loginId:t,URI:s,loginOptions:i},{token:a}))))})),{}),signUp:Object.keys(ae).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:be(((t,s,i,a)=>L(e.post(N(o.signUp,n),{loginId:t,URI:s,user:i,loginOptions:a}))))})),{}),signUpOrIn:Object.keys(ae).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:be(((t,s,i)=>L(e.post(N(o.signUpOrIn,n),{loginId:t,URI:s,loginOptions:i}))))})),{}),update:{email:ye(((t,n,s,i,a)=>L(e.post(o.update.email,Object.assign({loginId:t,email:n,URI:s},a),{token:i})))),phone:Object.keys(oe).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:ke(((t,s,i,a,r)=>L(e.post(N(o.update.phone,n),Object.assign({loginId:t,phone:s,URI:i},r),{token:a}))))})),{})}});var we;!function(e){e.facebook=\"facebook\",e.github=\"github\",e.google=\"google\",e.microsoft=\"microsoft\",e.gitlab=\"gitlab\",e.apple=\"apple\",e.discord=\"discord\",e.linkedin=\"linkedin\",e.slack=\"slack\"}(we||(we={}));const je=W(X(\"code\")),Ue=e=>({start:Object.assign(((t,n,s,o)=>L(e.post(a.start,s||{},{queryParams:Object.assign({provider:t},n&&{redirectURL:n}),token:o}))),Object.keys(we).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:(t,s,o)=>L(e.post(a.start,s||{},{queryParams:Object.assign({provider:n},t&&{redirectURL:t}),token:o}))})),{})),exchange:je((t=>L(e.post(a.exchange,{code:t})))),startNative:(t,n)=>L(e.post(a.startNative,{provider:t,loginOptions:n})),finishNative:(t,n,s,o,i)=>L(e.post(a.finishNative,{provider:t,stateId:n,user:s,code:o,idToken:i}))}),Re=X(\"loginId\"),Pe=W(Re,X(\"code\")),xe=W(Re),qe=W(Re,te(\"phone\")),$e=W(Re,ee(\"email\")),Ee=e=>({verify:Object.keys(ae).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:Pe(((t,o)=>L(e.post(N(s.verify,n),{code:o,loginId:t}))))})),{}),signIn:Object.keys(ae).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:xe(((t,o,i)=>L(e.post(N(s.signIn,n),{loginId:t,loginOptions:o},{token:i}))))})),{}),signUp:Object.keys(ae).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:xe(((t,o,i)=>L(e.post(N(s.signUp,n),{loginId:t,user:o,loginOptions:i}))))})),{}),signUpOrIn:Object.keys(ae).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:xe(((t,o)=>L(e.post(N(s.signUpOrIn,n),{loginId:t,loginOptions:o}))))})),{}),update:{email:$e(((t,n,o,i)=>L(e.post(s.update.email,Object.assign({loginId:t,email:n},i),{token:o})))),phone:Object.keys(oe).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:qe(((t,o,i,a)=>L(e.post(N(s.update.phone,n),Object.assign({loginId:t,phone:o},a),{token:i}))))})),{})}}),Te=W(X(\"tenant\")),Se=W(X(\"code\")),Ae=e=>({start:Te(((t,n,s,o)=>L(e.post(r.start,s||{},{queryParams:{tenant:t,redirectURL:n},token:o})))),exchange:Se((t=>L(e.post(r.exchange,{code:t}))))}),Me=X(\"loginId\"),Ne=W(Me,X(\"code\")),Le=W(Me),ze=W(Me),He=e=>({signUp:Le(((t,n)=>L(e.post(d.signUp,{loginId:t,user:n})))),verify:Ne(((t,n,s,o)=>L(e.post(d.verify,{loginId:t,code:n,loginOptions:s},{token:o})))),update:ze(((t,n)=>L(e.post(d.update,{loginId:t},{token:n}))))}),Je=X(\"loginId\"),Ce=X(\"newPassword\"),_e=W(Je,X(\"password\")),De=W(Je),Ze=W(Je,Ce),Be=W(Je,X(\"oldPassword\"),Ce),Fe=e=>({signUp:_e(((t,n,s)=>L(e.post(l.signUp,{loginId:t,password:n,user:s})))),signIn:_e(((t,n)=>L(e.post(l.signIn,{loginId:t,password:n})))),sendReset:De(((t,n,s)=>L(e.post(l.sendReset,{loginId:t,redirectUrl:n,templateOptions:s})))),update:Ze(((t,n,s)=>L(e.post(l.update,{loginId:t,newPassword:n},{token:s})))),replace:Be(((t,n,s)=>L(e.post(l.replace,{loginId:t,oldPassword:n,newPassword:s})))),policy:()=>L(e.get(l.policy))}),Ke=[K(`\"${\"loginId\"}\" must be a string`)];const Qe=X(\"loginId\"),Ve=X(\"origin\"),Ye=W(Qe,Ve,X(\"name\")),Ge=W(Qe,Ve),We=W(Ke,Ve),Xe=W(Qe,Ve,X(\"token\")),et=W(X(\"transactionId\"),X(\"response\")),tt=e=>({signUp:{start:Ye(((t,n,s)=>L(e.post(u.signUp.start,{user:{loginId:t,name:s},origin:n})))),finish:et(((t,n)=>L(e.post(u.signUp.finish,{transactionId:t,response:n}))))},signIn:{start:We(((t,n,s,o)=>L(e.post(u.signIn.start,{loginId:t,origin:n,loginOptions:s},{token:o})))),finish:et(((t,n)=>L(e.post(u.signIn.finish,{transactionId:t,response:n}))))},signUpOrIn:{start:Ge(((t,n)=>L(e.post(u.signUpOrIn.start,{loginId:t,origin:n}))))},update:{start:Xe(((t,n,s)=>L(e.post(u.update.start,{loginId:t,origin:n},{token:s})))),finish:et(((t,n)=>L(e.post(u.update.finish,{transactionId:t,response:n}))))}}),nt=W(X(\"token\")),st=W((e=>[V(`\"${e}\" must be string or undefined`)])(\"token\"));var ot,it;var at=W([(ot=\"projectId\",it=X(\"projectId\"),z(((e,n)=>s=>H(...n).validate(t(s,e)))(ot,it))())])((e=>t=>e(Object.assign(Object.assign({},t),{hooks:{beforeRequest:e=>{var n;const s=[].concat((null===(n=t.hooks)||void 0===n?void 0:n.beforeRequest)||[]);return null==s?void 0:s.reduce(((e,t)=>t(e)),e)},afterRequest:async(e,n)=>{var s;const o=[].concat((null===(s=t.hooks)||void 0===s?void 0:s.afterRequest)||[]);(await Promise.allSettled(null==o?void 0:o.map((t=>t(e,null==n?void 0:n.clone()))))).forEach((e=>{var n;return\"rejected\"===e.status&&(null===(n=t.logger)||void 0===n?void 0:n.error(e.reason))}))}}})))((({projectId:e,logger:t,baseUrl:n,hooks:s,cookiePolicy:o,baseHeaders:i={},fetch:a})=>{return r=x({baseUrl:n||b,projectId:e,logger:t,hooks:s,cookiePolicy:o,baseConfig:{baseHeaders:i},fetch:a}),{accessKey:se(r),otp:Ee(r),magicLink:Oe(r),enchantedLink:ge(r),oauth:Ue(r),saml:Ae(r),totp:He(r),webauthn:tt(r),password:Fe(r),flow:fe(r),refresh:st((e=>L(r.post(p,{},{token:e})))),selectTenant:W([K(\"tenantId\")],[V('\"token\" must be string or undefined')])(((e,t)=>L(r.post(c,{tenant:e},{token:t})))),logout:st((e=>L(r.post(g,{},{token:e})))),logoutAll:st((e=>L(r.post(h,{},{token:e})))),me:st((e=>L(r.get(v,{token:e})))),history:st((e=>L(r.get(f,{token:e})))),isJwtExpired:nt(T),getTenants:nt(S),getJwtPermissions:nt(A),getJwtRoles:nt(M),httpClient:r};var r})));const rt=(e,t,n)=>(t.forEach((t=>{const s=t.split(\".\");let o=s.shift(),i=e;for(;s.length>0;){if(i=i[o],!o||!i)throw Error(`Invalid path \"${t}\", \"${o}\" is missing or has no value`);o=s.shift()}if(\"function\"!=typeof i[o])throw Error(`\"${t}\" is not a function`);const a=i[o];i[o]=n(a)})),e);var dt=Object.assign(at,{DeliveryMethods:ae});export{q as HttpStatusCodes,dt as default,L as transformResponse,rt as wrapWith};\n//# sourceMappingURL=index.esm.js.map\n","/**\n * Get the JWT expiration WITHOUT VALIDATING the JWT\n * @param token The JWT to extract expiration from\n * @returns The Date for when the JWT expires or null if there is an issue\n */\nexport const getTokenExpiration = (token: string) => {\n const parts = token.split('.');\n try {\n if (parts.length === 3) {\n const claims = JSON.parse(window.atob(parts[1]));\n if (claims.exp) {\n return new Date(claims.exp * 1000);\n }\n }\n } catch (e) {}\n return null;\n};\n\nexport const millisecondsUntilDate = (date: Date) =>\n date ? date.getTime() - new Date().getTime() : 0;\n\nexport const createTimerFunctions = () => {\n const timerIds: NodeJS.Timeout[] = [];\n\n const clearAllTimers = () => {\n while (timerIds.length) {\n clearTimeout(timerIds.pop());\n }\n };\n\n const setTimer = (cb: () => void, timeout: number) => {\n timerIds.push(setTimeout(cb, timeout));\n };\n\n return { clearAllTimers, setTimer };\n};\n","const logger = {\n debug: (...args: any[]) => {\n // eslint-disable-next-line no-console\n console.debug(...args);\n },\n};\n\nexport default logger;\n","// This sdk can be used in SSR apps\nexport const IS_BROWSER = typeof window !== 'undefined';\n\n// Maximum timeout value for setTimeout\n// For more information, refer to https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#maximum_delay_value\nexport const MAX_TIMEOUT = Math.pow(2, 31) - 1;\n","import { IS_BROWSER } from '../../constants';\n\nconst FINGERPRINT_PUBLIC_KEY = 'fingerprint.public.key';\nconst FINGERPRINT_ENDPOINT_URL = 'fingerprint.endpoint.url';\n\n/** Fingerprint.js cloudflare integration */\nexport const FP_EP_URL =\n (IS_BROWSER && localStorage?.getItem(FINGERPRINT_ENDPOINT_URL)) ||\n 'https://api.descope.com';\nexport const FP_CF_ENDPOINT_PATH = '/fXj8gt3x8VulJBna/x96Emn69oZwcd7I6';\nexport const FP_CF_SCRIPT_PATH = '/fXj8gt3x8VulJBna/w78aRZnnDZ3Aqw0I';\n/** Fingerprint visitor data */\nexport const FP_BODY_DATA = 'fpData';\n/** Session ID for visitor */\nexport const VISITOR_SESSION_ID_PARAM = 'vsid';\n/** Request ID for visitor */\nexport const VISITOR_REQUEST_ID_PARAM = 'vrid';\n/** FP storage key */\nexport const FP_STORAGE_KEY = 'fp';\n// Storage FP Keys TTL is 24 hours\nexport const STORAGE_TTL_MS = 24 * 60 * 60 * 1000;\n","/**\n * FingerprintJS Pro v3.8.5 - Copyright (c) FingerprintJS, Inc, 2023 (https://fingerprint.com)\n *\n * This software contains code from open-source projects:\n * MurmurHash3 by Karan Lyons (https://github.com/karanlyons/murmurHash3.js)\n */\n\nimport{__spreadArray as e,__rest as t,__assign as n}from\"tslib\";function r(e){for(var t=\"\",n=0;n<e.length;++n)if(n>0){var r=e[n].toLowerCase();r!==e[n]?t+=\" \".concat(r):t+=e[n]}else t+=e[n].toUpperCase();return t}function o(e,t){return function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}(e,t)?e[t]:void 0}var i={default:\"endpoint\"},u={default:\"tlsEndpoint\"},R=\"Client timeout\",a=\"Network connection error\",c=\"Network request aborted\",E=\"Response cannot be parsed\",s=\"Blocked by CSP\",f=\"The endpoint parameter is not a valid URL\",d=/*#__PURE__*/r(\"WrongRegion\"),l=/*#__PURE__*/r(\"SubscriptionNotActive\"),_=/*#__PURE__*/r(\"UnsupportedVersion\"),p=/*#__PURE__*/r(\"InstallationMethodRestricted\"),O=/*#__PURE__*/r(\"HostnameRestricted\"),v=/*#__PURE__*/r(\"IntegrationFailed\"),I=\"API key required\",h=\"API key not found\",N=\"API key expired\",T=\"Request cannot be parsed\",m=\"Request failed\",A=\"Request failed to process\",w=\"Too many requests, rate limit exceeded\",P=\"Not available for this origin\",D=\"Not available with restricted header\",y=I,S=h,L=N,U=\"3.8.5\",g=\"9319\";function C(t,n){var r=[];return function(t,n){var r=5,o=(E=t,f=e([],E,!0),{current:function(){return f[0]},postpone:function(){var e=f.shift();void 0!==e&&f.push(e)},exclude:function(){f.shift()}}),i=(R=100,a=3e3,c=0,function(){return Math.random()*Math.min(a,R*Math.pow(2,c++))}),u=o.current();var R,a,c;var E,f;if(void 0===u)return Promise.reject(new TypeError(\"The list of script URL patterns is empty\"));var d=function(e,t){return n(e).catch((function(e){if(t+1>=r)throw e;!function(e){if(!(e instanceof Error))return!1;var t=e.message;return t===s||t===g}(e)?o.postpone():o.exclude();var n,u=o.current();if(void 0===u)throw e;return(n=i(),new Promise((function(e){return setTimeout(e,n)}))).then((function(){return d(u,t+1)}))}))};return d(u,0)}(t,(function(e){var t=new Date,o=function(n){return r.push({url:e,startedAt:t,finishedAt:new Date,error:n})},i=n(e);return i.then((function(){return o()}),o),i})).then((function(e){return[e,{attempts:r}]}))}var b=\"https://fpnpmcdn.net/v<version>/<apiKey>/loader_v<loaderVersion>.js\",K=b,M=\"Failed to load the JS script of the agent\";function B(e){var r;e.scriptUrlPattern;var i=e.token,u=e.apiKey,R=void 0===u?i:u,a=t(e,[\"scriptUrlPattern\",\"token\",\"apiKey\"]),c=null!==(r=o(e,\"scriptUrlPattern\"))&&void 0!==r?r:b;return Promise.resolve().then((function(){if(!R||\"string\"!=typeof R)throw new Error(I);var e=function(e,t){return(Array.isArray(e)?e:[e]).map((function(e){return function(e,t){var n=encodeURIComponent;return e.replace(/<[^<>]+>/g,(function(e){return\"<version>\"===e?\"3\":\"<apiKey>\"===e?n(t):\"<loaderVersion>\"===e?n(U):e}))}(String(e),t)}))}(c,R);return C(e,F).catch(k)})).then((function(e){var t=e[0],r=e[1];return t.load(n(n({},a),{ldi:r}))}))}function F(e){return function(e,t,n,r){var o,i=document,u=\"securitypolicyviolation\",R=function(t){var n=new URL(e,location.href),r=t.blockedURI;r!==n.href&&r!==n.protocol.slice(0,-1)&&r!==n.origin||(o=t,a())};i.addEventListener(u,R);var a=function(){return i.removeEventListener(u,R)};return null==r||r.then(a,a),Promise.resolve().then(t).then((function(e){return a(),e}),(function(e){return new Promise((function(e){return setTimeout(e)})).then((function(){if(a(),o)return n(o);throw e}))}))}(e,(function(){return function(e){return new Promise((function(t,n){var r=document.createElement(\"script\"),o=function(){var e;return null===(e=r.parentNode)||void 0===e?void 0:e.removeChild(r)},i=document.head||document.getElementsByTagName(\"head\")[0];r.onload=function(){o(),t()},r.onerror=function(){o(),n(new Error(M))},r.async=!0,r.src=e,i.appendChild(r)}))}(e)}),(function(){throw new Error(s)})).then(V)}function V(){var e=window,t=\"__fpjs_p_l_b\",n=e[t];if(function(e,t){var n,r=null===(n=Object.getOwnPropertyDescriptor)||void 0===n?void 0:n.call(Object,e,t);(null==r?void 0:r.configurable)?delete e[t]:r&&!r.writable||(e[t]=void 0)}(e,t),\"function\"!=typeof(null==n?void 0:n.load))throw new Error(g);return n}function k(e){throw e instanceof Error&&e.message===g?new Error(M):e}var G={load:B,defaultScriptUrlPattern:K,ERROR_SCRIPT_LOAD_FAIL:M,ERROR_API_KEY_EXPIRED:N,ERROR_API_KEY_INVALID:h,ERROR_API_KEY_MISSING:I,ERROR_BAD_REQUEST_FORMAT:T,ERROR_BAD_RESPONSE_FORMAT:E,ERROR_CLIENT_TIMEOUT:R,ERROR_CSP_BLOCK:s,ERROR_FORBIDDEN_ENDPOINT:O,ERROR_FORBIDDEN_HEADER:D,ERROR_FORBIDDEN_ORIGIN:P,ERROR_GENERAL_SERVER_FAILURE:m,ERROR_INSTALLATION_METHOD_RESTRICTED:p,ERROR_INTEGRATION_FAILURE:v,ERROR_INVALID_ENDPOINT:f,ERROR_NETWORK_ABORT:c,ERROR_NETWORK_CONNECTION:a,ERROR_RATE_LIMIT:w,ERROR_SERVER_TIMEOUT:A,ERROR_SUBSCRIPTION_NOT_ACTIVE:l,ERROR_TOKEN_EXPIRED:L,ERROR_TOKEN_INVALID:S,ERROR_TOKEN_MISSING:y,ERROR_UNSUPPORTED_VERSION:_,ERROR_WRONG_REGION:d,defaultEndpoint:i,defaultTlsEndpoint:u};export{N as ERROR_API_KEY_EXPIRED,h as ERROR_API_KEY_INVALID,I as ERROR_API_KEY_MISSING,T as ERROR_BAD_REQUEST_FORMAT,E as ERROR_BAD_RESPONSE_FORMAT,R as ERROR_CLIENT_TIMEOUT,s as ERROR_CSP_BLOCK,O as ERROR_FORBIDDEN_ENDPOINT,D as ERROR_FORBIDDEN_HEADER,P as ERROR_FORBIDDEN_ORIGIN,m as ERROR_GENERAL_SERVER_FAILURE,p as ERROR_INSTALLATION_METHOD_RESTRICTED,v as ERROR_INTEGRATION_FAILURE,f as ERROR_INVALID_ENDPOINT,c as ERROR_NETWORK_ABORT,a as ERROR_NETWORK_CONNECTION,w as ERROR_RATE_LIMIT,M as ERROR_SCRIPT_LOAD_FAIL,A as ERROR_SERVER_TIMEOUT,l as ERROR_SUBSCRIPTION_NOT_ACTIVE,L as ERROR_TOKEN_EXPIRED,S as ERROR_TOKEN_INVALID,y as ERROR_TOKEN_MISSING,_ as ERROR_UNSUPPORTED_VERSION,d as ERROR_WRONG_REGION,G as default,i as defaultEndpoint,K as defaultScriptUrlPattern,u as defaultTlsEndpoint,B as load};\n","import {\n load,\n defaultEndpoint,\n defaultScriptUrlPattern,\n} from '@fingerprintjs/fingerprintjs-pro';\nimport {\n FP_EP_URL,\n FP_CF_ENDPOINT_PATH,\n FP_CF_SCRIPT_PATH,\n FP_STORAGE_KEY,\n STORAGE_TTL_MS,\n VISITOR_REQUEST_ID_PARAM,\n VISITOR_SESSION_ID_PARAM,\n} from './constants';\nimport { FingerprintObject } from './types';\n\nconst createFingerprintObject = (\n sessionId: string,\n requestId: string,\n): FingerprintObject => ({\n [VISITOR_SESSION_ID_PARAM]: sessionId,\n [VISITOR_REQUEST_ID_PARAM]: requestId,\n});\n\n/** Generate UUID based on current time and some randomness */\nconst generateUUID = () => {\n // return alphanumeric, sortable uuid of 27 characters\n return (\n Date.now().toString(36) +\n Math.random().toString(36).substring(2) + // removing '0.' prefix\n Math.random().toString(36).substring(2)\n ).substring(0, 27);\n};\n\n// Set FP data to storage with expiration\n// We set the request id and session id together so they will have the same TTL\n// This implementation is based on https://www.sohamkamani.com/javascript/localstorage-with-ttl-expiry/\nconst setFPToStorage = (value: FingerprintObject) => {\n const now = new Date();\n // `item` is an object which contains the value\n // as well as the time when it's supposed to expire\n const item = {\n value,\n expiry: now.getTime() + STORAGE_TTL_MS,\n };\n localStorage.setItem(FP_STORAGE_KEY, JSON.stringify(item));\n};\n\n// Get Fingerprint from storage, will return null if not exists, or if expired\nconst getFPFromStorage = (returnExpired = false): FingerprintObject => {\n const itemStr = localStorage.getItem(FP_STORAGE_KEY);\n // if the item doesn't exist, return null\n if (!itemStr) {\n return null;\n }\n const item = JSON.parse(itemStr);\n const now = new Date();\n // compare the expiry time of the item with the current time\n // return null if needed\n if (now.getTime() > item.expiry && !returnExpired) {\n return null;\n }\n return item.value;\n};\n\n/**\n * Ensure fingerprint ids (request id, session id) exist.\n * If not, It will generate and load them into to browser storage.\n * NOTE: Using fingerprintJS data has cost, use considerably.\n * @param fpKey FingerprintJS API key\n */\nexport const ensureFingerprintIds = async (\n fpKey: string,\n baseUrl = FP_EP_URL,\n) => {\n try {\n if (getFPFromStorage()) {\n // FP is already in storage, no need to\n return;\n }\n\n const sessionId = generateUUID();\n\n const endpointUrl = new URL(baseUrl);\n endpointUrl.pathname = FP_CF_ENDPOINT_PATH;\n\n const patterUrl = new URL(baseUrl);\n patterUrl.pathname = FP_CF_SCRIPT_PATH;\n const scriptUrlPattern =\n patterUrl.toString() +\n '?apiKey=<apiKey>&version=<version>&loaderVersion=<loaderVersion>';\n\n // load from FingerprintJS\n const agentP = load({\n apiKey: fpKey,\n endpoint: [\n endpointUrl.toString(),\n defaultEndpoint, // Fallback to default endpoint in case of error\n ],\n scriptUrlPattern: [\n scriptUrlPattern,\n defaultScriptUrlPattern, // Fallback to default CDN in case of error\n ],\n });\n\n const agent = await agentP;\n const { requestId } = await agent.get({ linkedId: sessionId });\n const fpData = createFingerprintObject(sessionId, requestId);\n setFPToStorage(fpData);\n } catch (ex) {\n // eslint-disable-next-line no-console\n console.warn('Could not load fingerprint', ex);\n }\n};\n\n/**\n * Get Fingerprint data (request ids) from storage, or create empty object\n * If data is expired, return it anyway\n */\nexport const getFingerprintData = (): FingerprintObject | null => {\n // get from storage if exists\n return getFPFromStorage(true);\n};\n\n/** Clear Fingerprint data from storage */\nexport const clearFingerprintData = () => {\n localStorage.removeItem(FP_STORAGE_KEY);\n};\n","import { IS_BROWSER } from '../../constants';\nimport { CreateWebSdk } from '../../sdk';\nimport { BeforeRequestHook } from '../../types';\nimport { addHooks } from '../helpers';\nimport { FP_BODY_DATA } from './constants';\nimport { ensureFingerprintIds, getFingerprintData } from './helpers';\nimport { FingerprintOptions } from './types';\n\nconst beforeRequest: BeforeRequestHook = (config) => {\n const data = getFingerprintData();\n if (data && config.body) {\n config.body[FP_BODY_DATA] = data;\n }\n\n return config;\n};\n\n/**\n * Add fingerprint data to outgoing requests\n */\nexport const withFingerprint =\n <T extends CreateWebSdk>(createSdk: T) =>\n ({ fpKey, fpLoad, ...config }: Parameters<T>[0] & FingerprintOptions) => {\n if (!IS_BROWSER) {\n // eslint-disable-next-line no-console\n console.warn(\n 'Fingerprint is a client side only capability and will not work when running in the server',\n );\n return createSdk(config);\n }\n\n // load fingerprint now if needed\n if (fpKey && fpLoad) {\n ensureFingerprintIds(fpKey).catch(\n // istanbul ignore next\n () => null,\n );\n }\n\n // Hook added always because fingerprint can be dynamic using flows\n return createSdk(addHooks(config, { beforeRequest }));\n };\n","/** Login Id of the last user logged in */\nexport const LOCAL_STORAGE_LAST_USER_LOGIN_ID = 'dls_last_user_login_id';\n\n/** Display name of the last user logged in */\nexport const LOCAL_STORAGE_LAST_USER_DISPLAY_NAME =\n 'dls_last_user_display_name';\n","import {\n getLocalStorage,\n removeLocalStorage,\n setLocalStorage,\n} from '../helpers';\nimport {\n LOCAL_STORAGE_LAST_USER_LOGIN_ID,\n LOCAL_STORAGE_LAST_USER_DISPLAY_NAME,\n} from './constants';\n\nexport const setLastUserLoginId = (loginId: string) => {\n return setLocalStorage(LOCAL_STORAGE_LAST_USER_LOGIN_ID, loginId);\n};\n\nexport const getLastUserLoginId = () => {\n return getLocalStorage(LOCAL_STORAGE_LAST_USER_LOGIN_ID);\n};\n\nexport const removeLastUserLoginId = () => {\n return removeLocalStorage(LOCAL_STORAGE_LAST_USER_LOGIN_ID);\n};\n\nexport const setLastUserDisplayName = (displayName: string) => {\n return setLocalStorage(LOCAL_STORAGE_LAST_USER_DISPLAY_NAME, displayName);\n};\n\nexport const getLastUserDisplayName = () => {\n return getLocalStorage(LOCAL_STORAGE_LAST_USER_DISPLAY_NAME);\n};\n\nexport const removeLastUserDisplayName = () => {\n return removeLocalStorage(LOCAL_STORAGE_LAST_USER_DISPLAY_NAME);\n};\n","import { SdkFnWrapper, wrapWith } from '@descope/core-js-sdk';\nimport { CreateWebSdk } from '../../sdk';\nimport { AfterRequestHook, CoreSdk } from '../../types';\nimport { addHooks, getUserFromResponse } from '../helpers';\nimport {\n getLastUserLoginId,\n removeLastUserLoginId,\n setLastUserLoginId,\n getLastUserDisplayName,\n removeLastUserDisplayName,\n setLastUserDisplayName,\n} from './helpers';\n\n/**\n * Adds last logged in user to flow start request\n */\n// eslint-disable-next-line import/exports-last\nexport const withLastLoggedInUser =\n <T extends CreateWebSdk>(createSdk: T) =>\n (\n config: Parameters<T>[0]\n ): ReturnType<T> & {\n getLastUserLoginId: typeof getLastUserLoginId;\n getLastUserDisplayName: typeof getLastUserDisplayName;\n } => {\n const afterRequest: AfterRequestHook = async (_req, res) => {\n const userDetails = await getUserFromResponse(res);\n const loginId = userDetails?.loginIds?.[0];\n const displayName = userDetails?.name;\n if (loginId) {\n setLastUserLoginId(loginId);\n setLastUserDisplayName(displayName);\n }\n };\n\n const sdk = createSdk(addHooks(config, { afterRequest }));\n\n let wrappedSdk = wrapWith(sdk, ['flow.start'], startWrapper);\n wrappedSdk = wrapWith(wrappedSdk, ['logout', 'logoutAll'], logoutWrapper);\n return Object.assign(wrappedSdk, {\n getLastUserLoginId,\n getLastUserDisplayName,\n }) as any;\n };\n\nconst startWrapper: SdkFnWrapper<{}> =\n (fn) =>\n async (...args) => {\n args[1] = args[1] || {};\n const [, options = {}] = args as unknown as Parameters<\n CoreSdk['flow']['start']\n >;\n const loginId = getLastUserLoginId();\n const displayName = getLastUserDisplayName();\n\n if (loginId) {\n options.lastAuth ??= {};\n options.lastAuth.loginId = loginId;\n options.lastAuth.name = displayName;\n }\n\n const resp = await fn(...args);\n\n return resp;\n };\n\nconst logoutWrapper: SdkFnWrapper<{}> =\n (fn) =>\n async (...args) => {\n const resp = await fn(...args);\n\n removeLastUserLoginId();\n removeLastUserDisplayName();\n\n return resp;\n };\n","// create publisher/subscriber instances\nexport function createPubSub<T extends any>() {\n const cbs = [];\n\n const sub = (cb: (data: T) => void) => {\n const idx = cbs.push(cb) - 1;\n return () => cbs.splice(idx, 1);\n };\n\n const pub = (data: T) => {\n cbs.forEach((cb) => cb(data));\n };\n\n return { pub, sub };\n}\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","/** Default name for the session cookie name / local storage key */\nexport const SESSION_TOKEN_KEY = 'DS';\n/** Default name for the refresh local storage key */\nexport const REFRESH_TOKEN_KEY = 'DSR';\n","import { JWTResponse } from '@descope/core-js-sdk';\nimport Cookies from 'js-cookie';\nimport { BeforeRequestHook } from '../../types';\nimport { REFRESH_TOKEN_KEY, SESSION_TOKEN_KEY } from './constants';\nimport {\n getLocalStorage,\n removeLocalStorage,\n setLocalStorage,\n} from '../helpers';\n\n/**\n * Store the session JWT as a cookie on the given domain and path with the given expiration.\n * This is useful so that the application backend will automatically get the cookie for the session\n * @param name cookie name\n * @param value The JWT to store as a cookie\n * @param cookieParams configuration that is usually returned from the JWT\n */\nfunction setJwtTokenCookie(\n name: string,\n value: string,\n { cookiePath, cookieDomain, cookieExpiration }: Partial<JWTResponse>,\n) {\n if (value) {\n const expires = new Date(cookieExpiration * 1000); // we are getting response from the server in seconds instead of ms\n // Since its a JS cookie, we don't set the domain because we want the cookie to be on the same domain as the application\n const domainMatches = isCurrentDomainOrParentDomain(cookieDomain);\n Cookies.set(name, value, {\n path: cookiePath,\n domain: domainMatches ? cookieDomain : undefined,\n expires,\n sameSite: 'Strict',\n secure: true,\n });\n }\n}\n\n/*\n * Check if the cookie domain is the same as the current domain or the parent domain\n * Examples:\n * 1. cookie domain: 'example.com', current domain: 'example.com' => true\n * 2. cookie domain: 'example.com', current domain: 'sub.example.com' => true\n * 3. cookie domain: 'example.com', current domain: 'sub.sub.example.com' => true\n * 4. cookie domain: 'example.com', current domain: 'another.com' => false\n * 5. cookie domain: 'example.com', current domain: 'example.co.il' => false\n */\nfunction isCurrentDomainOrParentDomain(cookieDomain: string): boolean {\n const currentDomain = window.location.hostname;\n const currentDomainParts = currentDomain.split('.');\n const cookieDomainParts = cookieDomain.split('.');\n\n // check if the cookie domain items are the last items in the current domain\n const currentDomainSuffix = currentDomainParts\n .slice(-cookieDomainParts.length)\n .join('.');\n return currentDomainSuffix === cookieDomain;\n}\n\nexport const persistTokens = (\n { refreshJwt, sessionJwt, ...cookieParams } = {} as Partial<JWTResponse>,\n sessionTokenViaCookie = false,\n storagePrefix = '',\n) => {\n // persist refresh token\n refreshJwt &&\n setLocalStorage(`${storagePrefix}${REFRESH_TOKEN_KEY}`, refreshJwt);\n\n // persist session token\n if (sessionJwt) {\n sessionTokenViaCookie\n ? setJwtTokenCookie(SESSION_TOKEN_KEY, sessionJwt, cookieParams)\n : setLocalStorage(`${storagePrefix}${SESSION_TOKEN_KEY}`, sessionJwt);\n }\n};\n\n/** Return the refresh token from the localStorage. Not for production usage because refresh token will not be saved in localStorage. */\nexport function getRefreshToken(prefix: string = '') {\n return getLocalStorage(`${prefix}${REFRESH_TOKEN_KEY}`) || '';\n}\n\n/**\n * Return the session token. first try to get from cookie, and fallback to local storage\n * See sessionTokenViaCookie option for more details about session token location\n */\nexport function getSessionToken(prefix: string = ''): string {\n return (\n Cookies.get(SESSION_TOKEN_KEY) ||\n getLocalStorage(`${prefix}${SESSION_TOKEN_KEY}`) ||\n ''\n );\n}\n\n/** Remove both the localStorage refresh JWT and the session cookie */\nexport function clearTokens(prefix: string = '') {\n removeLocalStorage(`${prefix}${REFRESH_TOKEN_KEY}`);\n removeLocalStorage(`${prefix}${SESSION_TOKEN_KEY}`);\n Cookies.remove(SESSION_TOKEN_KEY);\n}\n\nexport const beforeRequest =\n (prefix?: string): BeforeRequestHook =>\n (config) =>\n Object.assign(config, { token: config.token || getRefreshToken(prefix) });\n","/* eslint-disable import/exports-last */\nimport { SdkFnWrapper, wrapWith } from '@descope/core-js-sdk';\nimport { IS_BROWSER } from '../../constants';\nimport { CreateWebSdk } from '../../sdk';\nimport { AfterRequestHook } from '../../types';\nimport { addHooks, getAuthInfoFromResponse } from '../helpers';\nimport {\n beforeRequest,\n clearTokens,\n getRefreshToken,\n getSessionToken,\n persistTokens,\n} from './helpers';\nimport { PersistTokensOptions } from './types';\n\n/**\n * Persist authentication tokens in cookie/storage\n */\nexport const withPersistTokens =\n <T extends CreateWebSdk>(createSdk: T) =>\n <A extends boolean>({\n persistTokens: isPersistTokens,\n sessionTokenViaCookie,\n storagePrefix,\n ...config\n }: Parameters<T>[0] & PersistTokensOptions<A>): A extends true\n ? ReturnType<T> & {\n getRefreshToken: () => string;\n getSessionToken: () => string;\n }\n : ReturnType<T> => {\n if (!isPersistTokens || !IS_BROWSER) {\n if (isPersistTokens) {\n // eslint-disable-next-line no-console\n console.warn(\n 'Storing auth tokens in local storage and cookies are a client side only capabilities and will not be done when running in the server'\n );\n }\n return createSdk(config) as any;\n }\n\n const afterRequest: AfterRequestHook = async (_req, res) => {\n if (res?.status === 401) {\n clearTokens(storagePrefix);\n } else {\n persistTokens(\n await getAuthInfoFromResponse(res),\n sessionTokenViaCookie,\n storagePrefix\n );\n }\n };\n\n const sdk = createSdk(\n addHooks(config, {\n beforeRequest: beforeRequest(storagePrefix),\n afterRequest,\n })\n );\n\n const wrappedSdk = wrapWith(\n sdk,\n ['logout', 'logoutAll'],\n wrapper(storagePrefix)\n );\n\n const refreshToken = () => getRefreshToken(storagePrefix);\n const sessionToken = () => getSessionToken(storagePrefix);\n\n return Object.assign(wrappedSdk, {\n getRefreshToken: refreshToken,\n getSessionToken: sessionToken,\n }) as any;\n };\n\nconst wrapper =\n (prefix?: string): SdkFnWrapper<{}> =>\n (fn) =>\n async (...args) => {\n const resp = await fn(...args);\n\n clearTokens(prefix);\n\n return resp;\n };\n\nexport default withPersistTokens;\n","import { JWTResponse, SdkResponse, ResponseData } from '@descope/core-js-sdk';\nimport { IS_BROWSER } from '../constants';\nimport { CoreSdk } from '../types';\n\ntype CreateWebauthn = typeof createWebAuthn;\n\nconst withCoreFns =\n <I extends Parameters<CreateWebauthn>, O extends ReturnType<CreateWebauthn>>(\n creator: (...args: I) => O\n ) =>\n (...args: I) => {\n const obj = creator(...args);\n\n Object.assign(obj.signUp, args[0].webauthn.signUp);\n Object.assign(obj.signIn, args[0].webauthn.signIn);\n Object.assign(obj.signUpOrIn, args[0].webauthn.signUpOrIn);\n Object.assign(obj.update, args[0].webauthn.update);\n\n return obj as {\n [K in keyof O]: K extends keyof I[0]['webauthn']\n ? O[K] & I[0]['webauthn'][K]\n : O[K];\n };\n };\n\n/** Constructs a higher level WebAuthn API that wraps the functions from code-js-sdk */\nconst createWebAuthn = (sdk: CoreSdk) => ({\n async signUp(identifier: string, name: string) {\n const startResponse = await sdk.webauthn.signUp.start(\n identifier,\n window.location.origin,\n name\n );\n if (!startResponse.ok) {\n return startResponse as unknown as SdkResponse<JWTResponse>;\n }\n const createResponse = await create(startResponse.data.options);\n const finishResponse = await sdk.webauthn.signUp.finish(\n startResponse.data.transactionId,\n createResponse\n );\n return finishResponse;\n },\n\n async signIn(identifier: string) {\n const startResponse = await sdk.webauthn.signIn.start(\n identifier,\n window.location.origin\n );\n if (!startResponse.ok) {\n return startResponse as unknown as SdkResponse<JWTResponse>;\n }\n const getResponse = await get(startResponse.data.options);\n const finishResponse = await sdk.webauthn.signIn.finish(\n startResponse.data.transactionId,\n getResponse\n );\n return finishResponse;\n },\n\n async signUpOrIn(identifier: string) {\n const startResponse = await sdk.webauthn.signUpOrIn.start(\n identifier,\n window.location.origin\n );\n if (!startResponse.ok) {\n return startResponse as unknown as SdkResponse<JWTResponse>;\n }\n if (startResponse.data?.create) {\n const createResponse = await create(startResponse.data.options);\n const finishResponse = await sdk.webauthn.signUp.finish(\n startResponse.data.transactionId,\n createResponse\n );\n return finishResponse;\n } else {\n const getResponse = await get(startResponse.data.options);\n const finishResponse = await sdk.webauthn.signIn.finish(\n startResponse.data.transactionId,\n getResponse\n );\n return finishResponse;\n }\n },\n\n async update(identifier: string, token: string) {\n const startResponse = await sdk.webauthn.update.start(\n identifier,\n window.location.origin,\n token\n );\n if (!startResponse.ok) {\n return startResponse as SdkResponse<ResponseData>;\n }\n const createResponse = await create(startResponse.data.options);\n const finishResponse = await sdk.webauthn.update.finish(\n startResponse.data.transactionId,\n createResponse\n );\n return finishResponse;\n },\n\n /** Helper functions for working with WebAuthn browser APIs using JSON data */\n helpers: {\n /** Wraps the navigation.credentials.create call to translate JSON inputs and outputs */\n create,\n /** Wraps the navigation.credentials.get call to translate JSON inputs and outputs */\n get,\n /** Checks if the browser supports WebAuthn, and can optionally require in\n * addition that the browser supports WebAuthn with built-in biometrics */\n isSupported,\n conditional,\n },\n});\n\n// Helpers functions\n\nasync function create(options: string): Promise<string> {\n const createOptions = decodeCreateOptions(options);\n const createResponse = (await navigator.credentials.create(\n createOptions\n )) as AttestationPublicKeyCredential;\n return encodeCreateResponse(createResponse);\n}\n\nasync function get(options: string): Promise<string> {\n const getOptions = decodeGetOptions(options);\n const getResponse = (await navigator.credentials.get(\n getOptions\n )) as AssertionPublicKeyCredential;\n return encodeGetResponse(getResponse);\n}\n\n/**\n * This function should be used in passkeys autofill (conditional UI)\n * It handles the call to \"navigator.credentials.get\" and adds the required options\n * @param options webauthn start options\n * @param abort: AbortController instance\n * @returns encoded \"navigator.credentials.get\" response\n */\nasync function conditional(\n options: string,\n abort: AbortController\n): Promise<string> {\n const getOptions = decodeGetOptions(options);\n getOptions.signal = abort.signal;\n getOptions.mediation = 'conditional' as any;\n const getResponse = (await navigator.credentials.get(\n getOptions\n )) as AssertionPublicKeyCredential;\n return encodeGetResponse(getResponse);\n}\n\n// eslint-disable-next-line import/exports-last\nexport async function isSupported(\n requirePlatformAuthenticator: boolean = false\n): Promise<boolean> {\n if (!IS_BROWSER) {\n return Promise.resolve(false);\n }\n const supported = !!(\n window.PublicKeyCredential &&\n navigator.credentials &&\n navigator.credentials.create &&\n navigator.credentials.get\n );\n if (\n supported &&\n requirePlatformAuthenticator &&\n PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable\n ) {\n return PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable();\n }\n return supported;\n}\n\n// Conversion of data structures for Create/Attestation/Register ceremony\n\ntype AttestationPublicKeyCredential = PublicKeyCredential & {\n response: AuthenticatorAttestationResponse;\n};\n\nfunction decodeCreateOptions(value: string): CredentialCreationOptions {\n const options = JSON.parse(value);\n options.publicKey.challenge = decodeBase64Url(options.publicKey.challenge);\n options.publicKey.user.id = decodeBase64Url(options.publicKey.user.id);\n options.publicKey.excludeCredentials?.forEach((item: any) => {\n item.id = decodeBase64Url(item.id);\n });\n return options;\n}\n\nfunction encodeCreateResponse(\n credential: AttestationPublicKeyCredential\n): string {\n return JSON.stringify({\n id: credential.id,\n rawId: encodeBase64Url(credential.rawId),\n type: credential.type,\n response: {\n attestationObject: encodeBase64Url(credential.response.attestationObject),\n clientDataJSON: encodeBase64Url(credential.response.clientDataJSON),\n },\n });\n}\n\n// Conversion of data structures for Get/Assertion/Login ceremony\n\ntype AssertionPublicKeyCredential = PublicKeyCredential & {\n response: AuthenticatorAssertionResponse;\n};\n\nfunction decodeGetOptions(value: string): CredentialRequestOptions {\n const options = JSON.parse(value);\n options.publicKey.challenge = decodeBase64Url(options.publicKey.challenge);\n options.publicKey.allowCredentials?.forEach((item: any) => {\n item.id = decodeBase64Url(item.id);\n });\n return options;\n}\n\nfunction encodeGetResponse(credential: AssertionPublicKeyCredential): string {\n return JSON.stringify({\n id: credential.id,\n rawId: encodeBase64Url(credential.rawId),\n type: credential.type,\n response: {\n authenticatorData: encodeBase64Url(credential.response.authenticatorData),\n clientDataJSON: encodeBase64Url(credential.response.clientDataJSON),\n signature: encodeBase64Url(credential.response.signature),\n userHandle: credential.response.userHandle\n ? encodeBase64Url(credential.response.userHandle)\n : undefined,\n },\n });\n}\n\n// Conversion between ArrayBuffers and Base64Url strings\n\nfunction decodeBase64Url(value: string): ArrayBufferLike {\n const base64 = value.replace(/_/g, '/').replace(/-/g, '+');\n return Uint8Array.from(atob(base64), (c) => c.charCodeAt(0)).buffer;\n}\n\nfunction encodeBase64Url(value: ArrayBufferLike): string {\n const base64 = btoa(String.fromCharCode.apply(null, new Uint8Array(value)));\n return base64.replace(/\\//g, '_').replace(/\\+/g, '-').replace(/=/g, '');\n}\n\n// Exports\nexport default withCoreFns(createWebAuthn);\n","import { JWTResponse, SdkResponse, LoginOptions } from '@descope/core-js-sdk';\nimport { CoreSdk } from '../types';\n\n/**\n * Configuration for OneTap.\n */\ninterface OneTapConfig {\n /** Whether to auto select. Optional. */\n auto_select?: boolean;\n\n /** Whether to cancel on tap outside. Optional. */\n cancel_on_tap_outside?: boolean;\n\n /** ID of the prompt parent. Optional. */\n prompt_parent_id?: string;\n\n /** Context. Optional. */\n context?: 'signin' | 'signup' | 'use';\n\n /** Callback function to handle the intermediate iframe close event. Optional. */\n intermediate_iframe_close_callback?: () => void;\n\n /** Whether to support ITP. Optional. */\n itp_support?: boolean;\n\n /** Login hint. Optional. */\n login_hint?: string;\n\n /** HD. Optional. */\n hd?: string;\n\n /** Whether to use FedCM for prompt. Optional. */\n use_fedcm_for_prompt?: boolean;\n}\n\n/**\n * Response from the credential.\n */\ninterface CredentialResponse {\n /** Credential. */\n credential: string;\n\n /** How the selection was made. */\n select_by:\n | 'auto'\n | 'user'\n | 'user_1tap'\n | 'user_2tap'\n | 'btn'\n | 'btn_confirm'\n | 'btn_add_session'\n | 'btn_confirm_add_session';\n}\n\ntype OneTapInitialize = ({\n client_id,\n callback,\n nonce,\n}: {\n client_id: string;\n callback: (res: CredentialResponse) => void;\n nonce: string;\n} & OneTapConfig) => void;\n\ntype PromptNotification = {\n isSkippedMoment: () => boolean;\n};\n\n/**\n * Constructs a higher level FedCM API that wraps the functions from code-js-sdk.\n * @param sdk The CoreSdk instance.\n * @returns The FedCM API.\n */\nconst createFedCM = (sdk: CoreSdk) => ({\n async oneTap(\n provider?: string,\n oneTapConfig?: OneTapConfig,\n loginOptions?: LoginOptions,\n onSkip?: () => void,\n ) {\n const readyProvider = provider ?? 'google';\n const startResponse = await sdk.oauth.startNative(\n readyProvider,\n loginOptions,\n );\n if (!startResponse.ok) {\n return startResponse as unknown as SdkResponse<JWTResponse>;\n }\n\n const { clientId, stateId, nonce } = startResponse.data;\n const googleClient = await getGoogleClient();\n return new Promise((resolve) => {\n const callback = (res: CredentialResponse) => {\n resolve(\n sdk.oauth.finishNative(\n readyProvider,\n stateId,\n '',\n '',\n res.credential,\n ),\n );\n };\n\n // initialize google client\n googleClient.initialize({\n ...oneTapConfig,\n itp_support: oneTapConfig?.itp_support ?? true,\n use_fedcm_for_prompt: oneTapConfig?.use_fedcm_for_prompt ?? true,\n client_id: clientId,\n callback,\n nonce,\n });\n\n googleClient.prompt((notification) => {\n if (notification?.isSkippedMoment()) {\n onSkip?.();\n }\n });\n });\n },\n});\n\n// Helpers functions\nasync function getGoogleClient(): Promise<{\n initialize: OneTapInitialize;\n prompt: (cb: (notification: PromptNotification) => void) => void;\n}> {\n return new Promise((resolve, reject) => {\n if ((window as any).google) {\n resolve((window as any).google.accounts.id);\n return;\n }\n\n /* istanbul ignore next */\n let googleScript = document.getElementById(\n 'google-gsi-client-script',\n ) as HTMLScriptElement;\n\n /* istanbul ignore next */\n if (!googleScript) {\n googleScript = document.createElement('script');\n document.head.appendChild(googleScript);\n googleScript.async = true;\n googleScript.defer = true;\n googleScript.id = 'google-gsi-client-script';\n googleScript.src = 'https://accounts.google.com/gsi/client';\n }\n\n /* istanbul ignore next */\n googleScript.onload = function () {\n if ((window as any).google) {\n resolve((window as any).google.accounts.id);\n } else {\n reject('Failed to load Google GSI client script - not loaded properly');\n }\n };\n /* istanbul ignore next */\n googleScript.onerror = function () {\n reject('Failed to load Google GSI client script - failed to load');\n };\n });\n}\n\nexport default createFedCM;\nexport type { OneTapConfig };\n","import { CoreSdk, ReplaceParam } from '../types';\nimport { isSupported } from './webauthn';\n\ntype CoreSdkFlowStartArgs = Parameters<CoreSdk['flow']['start']>;\ntype Options = Pick<\n CoreSdkFlowStartArgs[1],\n | 'tenant'\n | 'redirectUrl'\n | 'redirectAuth'\n | 'oidcIdpStateId'\n | 'samlIdpStateId'\n | 'samlIdpUsername'\n | 'ssoAppId'\n | 'oidcLoginHint'\n | 'preview'\n | 'abTestingKey'\n | 'client'\n> & {\n lastAuth?: Omit<CoreSdkFlowStartArgs[1]['lastAuth'], 'loginId' | 'name'>;\n};\n\nconst START_OPTIONS_VERSION_PREFER_START_REDIRECT_URL = 1;\n\nexport default (coreSdk: CoreSdk) => ({\n ...coreSdk.flow,\n // wrap start fn and adds more data to the start options\n start: async (...args: ReplaceParam<CoreSdkFlowStartArgs, '1', Options>) => {\n const webAuthnSupport = await isSupported();\n const decoratedOptions = {\n location: window.location.href,\n ...args[1],\n deviceInfo: {\n webAuthnSupport,\n },\n startOptionsVersion: START_OPTIONS_VERSION_PREFER_START_REDIRECT_URL,\n };\n\n args[1] = decoratedOptions;\n\n return coreSdk.flow.start(...args);\n },\n});\n","import createCoreSdk from '@descope/core-js-sdk';\nimport createWebAuthn from './webauthn';\nimport createFedCM from './fedcm';\nimport withFlow from './flow';\n\nconst createSdk = (...args: Parameters<typeof createCoreSdk>) => {\n const coreSdk = createCoreSdk(...args);\n\n return {\n ...coreSdk,\n flow: withFlow(coreSdk),\n webauthn: createWebAuthn(coreSdk),\n fedcm: createFedCM(coreSdk),\n };\n};\n\nexport default createSdk;\n\nexport type CreateWebSdk = typeof createSdk;\nexport type WebSdk = ReturnType<CreateWebSdk>;\n","import { compose } from './enhancers/helpers';\nimport { withAnalytics } from './enhancers/withAnalytics';\nimport { withAutoRefresh } from './enhancers/withAutoRefresh';\nimport { withFingerprint } from './enhancers/withFingerprint';\nimport { withLastLoggedInUser } from './enhancers/withLastLoggedInUser';\nimport { withNotifications } from './enhancers/withNotifications';\nimport withPersistTokens from './enhancers/withPersistTokens';\nimport createSdk from './sdk';\n\nconst decoratedCreateSdk = compose(\n withFingerprint,\n withAutoRefresh,\n withAnalytics,\n withNotifications,\n withLastLoggedInUser, // must be one before last due to TS types\n withPersistTokens, // must be last due to TS known limitation https://github.com/microsoft/TypeScript/issues/30727\n)(createSdk);\n\nexport type { UserResponse } from './types';\n\n// Note: make sure to update packages/web-js-sdk/test/umd.test.ts when adding new constants\nexport {\n REFRESH_TOKEN_KEY,\n SESSION_TOKEN_KEY,\n} from './enhancers/withPersistTokens/constants';\n\nexport {\n ensureFingerprintIds,\n clearFingerprintData,\n} from './enhancers/withFingerprint/helpers';\n\nexport type { OneTapConfig } from './sdk/fedcm';\n\nexport default decoratedCreateSdk;\n","import { CreateWebSdk, WebSdk } from '../../sdk';\n\ntype Fn = (arg: any) => any;\n\nexport function compose<Input, A1>(\n fn1: (input: Input) => A1\n): (input: Input) => A1;\n\nexport function compose<Input, A1, A2>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2\n): (input: Input) => A2;\n\nexport function compose<Input, A1, A2, A3>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3\n): (input: Input) => A3;\n\nexport function compose<Input, A1, A2, A3, A4>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4\n): (input: Input) => A4;\n\nexport function compose<Input, A1, A2, A3, A4, A5>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5\n): (input: Input) => A5;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6\n): (input: Input) => A6;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7\n): (input: Input) => A7;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7, A8>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8\n): (input: Input) => A8;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7, A8, A9>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9\n): (input: Input) => A9;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10\n): (input: Input) => A10;\n\n/**\n * Currently there is no way to create a compose function in Typescript without using overloading\n * This function currently support up to 10 wrappers\n * If needed you can add more by duplicating the type and add more parameters\n */\n\nexport function compose(...args: Fn[]) {\n return (data: any) => args.reduce((acc, elem) => elem(acc), data) as any;\n}\n","import { SdkFnWrapper, wrapWith } from '@descope/core-js-sdk';\nimport { CreateWebSdk } from '../../sdk';\nimport { AfterRequestHook } from '../../types';\nimport { addHooks, getAuthInfoFromResponse } from '../helpers';\nimport {\n createTimerFunctions,\n getTokenExpiration,\n millisecondsUntilDate,\n} from './helpers';\nimport { AutoRefreshOptions } from './types';\nimport logger from '../helpers/logger';\nimport { MAX_TIMEOUT } from '../../constants';\n\n// The amount of time (ms) to trigger the refresh before session expires\nconst REFRESH_THRESHOLD = 20 * 1000; // 20 sec\n\n/**\n * Automatically refresh the session token before it expires\n * It uses the the refresh token that is extracted from API response to do that\n */\nexport const withAutoRefresh =\n <T extends CreateWebSdk>(createSdk: T) =>\n ({ autoRefresh, ...config }: Parameters<T>[0] & AutoRefreshOptions) => {\n if (!autoRefresh) return createSdk(config);\n\n // if we hold a single timer id, there might be a case where we override it before canceling the timer, this might cause many calls to refresh\n // in order to prevent it, we hold a list of timers and cancel all of them when a new timer is set, which means we should have one active timer only at a time\n const { clearAllTimers, setTimer } = createTimerFunctions();\n\n // we need to hold the expiration time and the refresh token in order to refresh the session\n // when the user comes back to the tab or from background/lock screen/etc.\n let sessionExpiration: Date;\n let refreshToken: string;\n document.addEventListener('visibilitychange', () => {\n // tab becomes visible and the session is expired, do a refresh\n if (\n document.visibilityState === 'visible' &&\n new Date() > sessionExpiration\n ) {\n logger.debug('Expiration time passed, refreshing session');\n sdk.refresh(refreshToken);\n }\n });\n\n const afterRequest: AfterRequestHook = async (_req, res) => {\n const { refreshJwt, sessionJwt } = await getAuthInfoFromResponse(res);\n\n // if we got 401 we want to cancel all timers\n if (res?.status === 401) {\n logger.debug('Received 401, canceling all timers');\n clearAllTimers();\n } else if (sessionJwt) {\n sessionExpiration = getTokenExpiration(sessionJwt);\n refreshToken = refreshJwt;\n let timeout =\n millisecondsUntilDate(sessionExpiration) - REFRESH_THRESHOLD;\n\n if (timeout > MAX_TIMEOUT) {\n logger.debug(\n `Timeout is too large (${timeout}ms), setting it to ${MAX_TIMEOUT}ms`\n );\n timeout = MAX_TIMEOUT;\n }\n clearAllTimers();\n\n const refreshTimeStr = new Date(\n Date.now() + timeout\n ).toLocaleTimeString('en-US', { hour12: false });\n logger.debug(\n `Setting refresh timer for ${refreshTimeStr}. (${timeout}ms)`\n );\n\n setTimer(() => {\n logger.debug('Refreshing session due to timer');\n sdk.refresh(refreshJwt);\n }, timeout);\n }\n };\n\n const sdk = createSdk(addHooks(config, { afterRequest }));\n\n const wrapper: SdkFnWrapper<{}> =\n (fn) =>\n async (...args) => {\n const resp = await fn(...args);\n logger.debug('Clearing all timers');\n clearAllTimers();\n\n return resp;\n };\n\n return wrapWith(sdk, ['logout', 'logoutAll'], wrapper);\n };\n","import { CreateWebSdk } from '../sdk';\nimport { BeforeRequestHook } from '../types';\nimport { addHooks } from './helpers';\n\n// this is replaced in build time\ndeclare const BUILD_VERSION: string;\n/**\n * Adds analytics headers to requests\n */\nexport const withAnalytics =\n <T extends CreateWebSdk>(createSdk: T) =>\n (config: Parameters<T>[0]) =>\n createSdk({\n ...config,\n baseHeaders: {\n 'x-descope-sdk-name': 'web-js',\n 'x-descope-sdk-version': BUILD_VERSION,\n ...config.baseHeaders,\n },\n });\n","import { SdkFnWrapper, UserResponse, wrapWith } from '@descope/core-js-sdk';\nimport { CreateWebSdk, WebSdk } from '../../sdk';\nimport { AfterRequestHook } from '../../types';\nimport {\n addHooks,\n getAuthInfoFromResponse,\n getUserFromResponse,\n} from '../helpers';\nimport { createPubSub } from './helpers';\n\n/**\n * Adds 2 event functions to the sdk,\n * onSessionTokenChange: Gets a callback and call it whenever there is a change in session token\n * onUserChange: Gets a callback and call it whenever there is a change in current logged in user\n */\nexport const withNotifications =\n <T extends CreateWebSdk>(createSdk: T) =>\n (config: Parameters<T>[0]) => {\n const sessionPS = createPubSub<string | null>();\n const userPS = createPubSub<UserResponse | null>();\n\n const afterRequest: AfterRequestHook = async (_req, res) => {\n if (res?.status === 401) {\n sessionPS.pub(null);\n userPS.pub(null);\n } else {\n const userDetails = await getUserFromResponse(res);\n if (userDetails) userPS.pub(userDetails);\n\n const { sessionJwt } = await getAuthInfoFromResponse(res);\n if (sessionJwt) sessionPS.pub(sessionJwt);\n }\n };\n\n const sdk = createSdk(addHooks(config, { afterRequest }));\n\n const wrapper: SdkFnWrapper<{}> =\n (fn) =>\n async (...args) => {\n const resp = await fn(...args);\n\n sessionPS.pub(null);\n userPS.pub(null);\n\n return resp;\n };\n\n const wrappedSdk = wrapWith(sdk, ['logout', 'logoutAll'], wrapper);\n\n return Object.assign(wrappedSdk, {\n onSessionTokenChange: sessionPS.sub,\n onUserChange: userPS.sub,\n });\n };\n","import sdk, { REFRESH_TOKEN_KEY, SESSION_TOKEN_KEY } from './index';\n\n// We export the tokens constant in this way so that umd bundles will have the constants as properties of the default export\n// But still can use the default export as a function (e.g. Descope({ projectId: 'pid'}))\nsdk['REFRESH_TOKEN_KEY'] = REFRESH_TOKEN_KEY;\nsdk['SESSION_TOKEN_KEY'] = SESSION_TOKEN_KEY;\n\nexport default sdk;\n"],"names":["addHooks","config","hooks","reduce","acc","key","concat","_a","getAuthInfoFromResponse","async","res","ok","body","clone","json","authInfo","getUserFromResponse","user","hasOwnProperty","undefined","isLocalStorage","localStorage","setLocalStorage","value","setItem","getLocalStorage","getItem","removeLocalStorage","removeItem","__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","call","apply","this","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","message","SuppressedError","Error","name","r","window","atob","bind","String","replace","o","a","c","charAt","fromCharCode","header","JSON","parse","decodeURIComponent","charCodeAt","toString","toUpperCase","split","HASH_UNDEFINED","INFINITY","funcTag","genTag","symbolTag","reIsDeepProp","reIsPlainProp","reLeadingDot","rePropName","reEscapeChar","reIsHostCtor","freeGlobal","global","freeSelf","self","root","Function","uid","arrayProto","Array","funcProto","objectProto","coreJsData","maskSrcKey","exec","keys","IE_PROTO","funcToString","objectToString","reIsNative","RegExp","Symbol","splice","Map","getNative","nativeCreate","symbolProto","symbolToString","Hash","entries","index","clear","entry","set","ListCache","MapCache","assocIndexOf","array","other","baseGet","object","path","isArray","type","isSymbol","test","isKey","stringToPath","toKey","baseIsNative","isObject","func","pattern","tag","isFunction","result","isHostObject","toSource","getMapData","map","data","__data__","getValue","has","get","pop","push","hash","string","memoize","baseToString","match","number","quote","resolver","TypeError","memoized","args","cache","Cache","isObjectLike","defaultValue","email","phone","d","u","start","finish","l","g","h","v","f","m","I","b","y","O","headers","fromEntries","Headers","stringify","Body","url","Url","method","Method","title","Title","status","Status","build","flatMap","join","j","delete","post","put","U","from","R","P","Authorization","x","baseUrl","projectId","baseConfig","logger","cookiePolicy","fetch","text","Promise","resolve","warn","log","statusText","w","beforeRequest","queryParams","token","baseHeaders","credentials","slice","URL","search","URLSearchParams","afterRequest","q","$","E","tenants","T","exp","Date","getTime","S","A","M","N","L","code","response","error","retryAfter","Number","parseInt","z","H","validate","forEach","J","C","_","D","Z","B","K","Q","V","Y","filter","W","X","ee","te","ne","se","exchange","loginOptions","oe","ie","sms","whatsapp","ae","re","waiting","running","completed","failed","de","ue","le","pe","ce","ge","verify","signIn","loginId","URI","signUpOrIn","signUp","waitForSession","pollingIntervalMs","timeoutMs","Math","max","min","setInterval","pendingRef","clearInterval","clearTimeout","setTimeout","errorDescription","errorCode","update","he","ve","fe","flowId","options","conditionInteractionId","interactionId","version","componentsVersion","input","next","executionId","stepId","me","Ie","be","ke","ye","Oe","we","facebook","github","google","microsoft","gitlab","apple","discord","linkedin","slack","je","Ue","provider","redirectURL","startNative","finishNative","stateId","idToken","Re","Pe","xe","qe","$e","Ee","Te","Se","Ae","tenant","Me","Ne","Le","ze","He","Je","Ce","_e","De","Ze","Be","Fe","password","sendReset","redirectUrl","templateOptions","newPassword","oldPassword","policy","Ke","Qe","Ve","Ye","Ge","We","Xe","et","tt","origin","transactionId","nt","st","it","at","accessKey","otp","magicLink","enchantedLink","oauth","saml","totp","webauthn","flow","refresh","selectTenant","logout","logoutAll","history","isJwtExpired","getTenants","getJwtPermissions","getJwtRoles","httpClient","allSettled","reason","rt","shift","dt","DeliveryMethods","console","debug","IS_BROWSER","MAX_TIMEOUT","pow","FP_EP_URL","default","to","pack","ar","current","postpone","exclude","random","reject","catch","then","startedAt","finishedAt","attempts","scriptUrlPattern","apiKey","encodeURIComponent","F","k","load","ldi","document","location","href","blockedURI","protocol","addEventListener","removeEventListener","createElement","parentNode","removeChild","head","getElementsByTagName","onload","onerror","src","appendChild","getOwnPropertyDescriptor","configurable","writable","getFPFromStorage","returnExpired","itemStr","item","expiry","ensureFingerprintIds","fpKey","sessionId","now","substring","endpointUrl","pathname","patterUrl","agentP","endpoint","defaultEndpoint","defaultScriptUrlPattern","agent","requestId","linkedId","fpData","vsid","vrid","createFingerprintObject","setFPToStorage","ex","LOCAL_STORAGE_LAST_USER_LOGIN_ID","LOCAL_STORAGE_LAST_USER_DISPLAY_NAME","getLastUserLoginId","getLastUserDisplayName","startWrapper","fn","displayName","lastAuth","logoutWrapper","resp","createPubSub","cbs","pub","cb","sub","idx","target","source","api","init","converter","defaultAttributes","attributes","expires","toUTCString","escape","stringifiedAttributes","attributeName","cookie","write","create","cookies","jar","parts","found","read","remove","withAttributes","withConverter","freeze","SESSION_TOKEN_KEY","REFRESH_TOKEN_KEY","setJwtTokenCookie","cookiePath","cookieDomain","cookieExpiration","domainMatches","currentDomainParts","hostname","cookieDomainParts","isCurrentDomainOrParentDomain","Cookies","domain","sameSite","secure","getRefreshToken","prefix","clearTokens","wrapper","createOptions","publicKey","challenge","decodeBase64Url","id","excludeCredentials","decodeCreateOptions","createResponse","navigator","credential","rawId","encodeBase64Url","attestationObject","clientDataJSON","getOptions","decodeGetOptions","encodeGetResponse","conditional","abort","signal","mediation","isSupported","requirePlatformAuthenticator","supported","PublicKeyCredential","isUserVerifyingPlatformAuthenticatorAvailable","allowCredentials","authenticatorData","signature","userHandle","base64","Uint8Array","buffer","btoa","creator","createWebAuthn$1","sdk","identifier","startResponse","getResponse","helpers","obj","createFedCM","oneTapConfig","onSkip","readyProvider","clientId","nonce","googleClient","accounts","googleScript","getElementById","defer","getGoogleClient","initialize","itp_support","use_fedcm_for_prompt","_b","client_id","callback","prompt","notification","isSkippedMoment","withFlow","coreSdk","webAuthnSupport","decoratedOptions","deviceInfo","startOptionsVersion","decoratedCreateSdk","elem","compose","createSdk","fpLoad","autoRefresh","clearAllTimers","setTimer","timerIds","timeout","createTimerFunctions","sessionExpiration","refreshToken","visibilityState","_req","refreshJwt","sessionJwt","claims","getTokenExpiration","date","refreshTimeStr","toLocaleTimeString","hour12","wrapWith","sessionPS","userPS","userDetails","wrappedSdk","onSessionTokenChange","onUserChange","loginIds","setLastUserLoginId","setLastUserDisplayName","persistTokens","isPersistTokens","sessionTokenViaCookie","storagePrefix","cookieParams","getSessionToken","createCoreSdk","createWebAuthn","fedcm"],"mappings":"wOAMO,MAAMA,EAAW,CACtBC,EACAC,WAQA,MANA,CAAC,gBAAiB,gBAAgBC,QAAO,CAACC,EAAKC,WAG7C,OAFAD,EAAIC,GAAO,GAAGC,QAAmB,UAAZL,EAAOC,aAAK,IAAAK,OAAA,EAAAA,EAAGF,KAAQ,IAAIC,QAAOJ,aAAA,EAAAA,EAAQG,KAAQ,IAEhED,CAAG,GACI,QAAbG,EAACN,EAAOC,aAAK,IAAAK,EAAAA,EAAZN,EAAOC,MAAU,CAAA,GAEdD,CAAM,EAUFO,EAA0BC,MACrCC,IAEA,KAAKA,aAAA,EAAAA,EAAKC,IAAI,MAAO,GACrB,MAAMC,QAAaF,aAAA,EAAAA,EAAKG,QAAQC,QAChC,OAAOF,aAAA,EAAAA,EAAMG,WAAYH,GAAQ,CAAA,CAAE,EAQxBI,EAAsBP,MACjCC,IAEA,MAAMK,QAAiBP,EAAwBE,GAE/C,OACEK,aAAA,EAAAA,EAAUE,SACTF,aAAQ,EAARA,EAAUG,eAAe,WACrBH,OACDI,EACJ,EAGSC,EAAyC,oBAAjBC,aAExBC,EAAkB,CAACjB,EAAakB,IAC3CH,IAAkB,OAAAC,mBAAA,IAAAA,kBAAA,EAAAA,aAAcG,QAAQnB,EAAKkB,IAClCE,EAAmBpB,GAC9Be,IAAkB,OAAAC,uBAAAA,oBAAAA,aAAcK,QAAQrB,IAC7BsB,EAAsBtB,GACjCe,IAAkB,OAAAC,uBAAAA,oBAAAA,aAAcO,WAAWvB,IC5BtC,IAAIwB,EAAW,WAQlB,OAPAA,EAAWC,OAAOC,QAAU,SAAkBC,GAC1C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAII,KADTL,EAAIG,UAAUF,GACOJ,OAAOS,UAAUrB,eAAesB,KAAKP,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,IAE9E,OAAON,CACV,EACMH,EAASY,MAAMC,KAAMN,UAChC,EAEO,SAASO,EAAOV,EAAGW,GACtB,IAAIZ,EAAI,CAAA,EACR,IAAK,IAAIM,KAAKL,EAAOH,OAAOS,UAAUrB,eAAesB,KAAKP,EAAGK,IAAMM,EAAEC,QAAQP,GAAK,IAC9EN,EAAEM,GAAKL,EAAEK,IACb,GAAS,MAALL,GAAqD,mBAAjCH,OAAOgB,sBACtB,KAAIZ,EAAI,EAAb,IAAgBI,EAAIR,OAAOgB,sBAAsBb,GAAIC,EAAII,EAAED,OAAQH,IAC3DU,EAAEC,QAAQP,EAAEJ,IAAM,GAAKJ,OAAOS,UAAUQ,qBAAqBP,KAAKP,EAAGK,EAAEJ,MACvEF,EAAEM,EAAEJ,IAAMD,EAAEK,EAAEJ,IAF4B,CAItD,OAAOF,CACX,CCpDA,SAASY,EAAEA,GAAGF,KAAKM,QAAQJ,CAAC,CD2TsB,mBAApBK,iBAAiCA,gBC3TlCL,EAAEL,UAAU,IAAIW,MAAMN,EAAEL,UAAUY,KAAK,wBAAwB,IAAIC,EAAE,oBAAoBC,QAAQA,OAAOC,MAAMD,OAAOC,KAAKC,KAAKF,SAAS,SAASD,GAAG,IAAIpB,EAAEwB,OAAOJ,GAAGK,QAAQ,MAAM,IAAI,GAAGzB,EAAEK,OAAO,GAAG,EAAE,MAAM,IAAIO,EAAE,qEAAqE,IAAI,IAAIT,EAAEuB,EAAEC,EAAE,EAAEzB,EAAE,EAAE0B,EAAE,GAAGF,EAAE1B,EAAE6B,OAAO3B,MAAMwB,IAAIvB,EAAEwB,EAAE,EAAE,GAAGxB,EAAEuB,EAAEA,EAAEC,IAAI,GAAGC,GAAGJ,OAAOM,aAAa,IAAI3B,KAAK,EAAEwB,EAAE,IAAI,EAAED,EAAE,oEAAoEb,QAAQa,GAAG,OAAOE,CAAC,EAAoX,SAASzB,EAAES,GAAGF,KAAKM,QAAQJ,CAAC,CAAC,SAASc,EAAEd,EAAEQ,GAAG,GAAG,iBAAiBR,EAAE,MAAM,IAAIT,EAAE,2BAA2B,IAAIuB,GAAE,KAAMN,EAAEA,GAAG,CAAE,GAAEW,OAAO,EAAE,EAAE,IAAI,OAAOC,KAAKC,MAA5gB,SAAWrB,GAAG,IAAIZ,EAAEY,EAAEa,QAAQ,KAAK,KAAKA,QAAQ,KAAK,KAAK,OAAOzB,EAAEK,OAAO,GAAG,KAAK,EAAE,MAAM,KAAK,EAAEL,GAAG,KAAK,MAAM,KAAK,EAAEA,GAAG,IAAI,MAAM,QAAQ,KAAK,4BAA4B,IAAI,OAAO,SAASY,GAAG,OAAOsB,mBAAmBd,EAAER,GAAGa,QAAQ,QAAQ,SAASb,EAAEQ,GAAG,IAAIpB,EAAEoB,EAAEe,WAAW,GAAGC,SAAS,IAAIC,cAAc,OAAOrC,EAAEK,OAAO,IAAIL,EAAE,IAAIA,GAAG,IAAIA,CAAE,IAAG,CAAhK,CAAkKA,EAAE,CAAC,MAAMY,GAAG,OAAOQ,EAAEpB,EAAE,CAAC,CAAiKA,CAAEY,EAAE0B,MAAM,KAAKZ,IAAI,CAAC,MAAMd,GAAG,MAAM,IAAIT,EAAE,4BAA4BS,EAAEI,QAAQ,CAAC,CAACb,EAAEI,UAAU,IAAIW,MAAMf,EAAEI,UAAUY,KAAK,6QCUxoC,IAGIoB,EAAiB,4BAGjBC,EAAW,IAGXC,EAAU,oBACVC,EAAS,6BACTC,EAAY,kBAGZC,EAAe,mDACfC,EAAgB,QAChBC,EAAe,MACfC,EAAa,mGASbC,EAAe,WAGfC,EAAe,8BAGfC,EAA8B,iBAAVC,GAAsBA,GAAUA,EAAOrD,SAAWA,QAAUqD,EAGhFC,EAA0B,iBAARC,MAAoBA,MAAQA,KAAKvD,SAAWA,QAAUuD,KAGxEC,EAAOJ,GAAcE,GAAYG,SAAS,cAATA,GAkCrC,IASMC,EATFC,EAAaC,MAAMnD,UACnBoD,EAAYJ,SAAShD,UACrBqD,EAAc9D,OAAOS,UAGrBsD,EAAaP,EAAK,sBAGlBQ,GACEN,EAAM,SAASO,KAAKF,GAAcA,EAAWG,MAAQH,EAAWG,KAAKC,UAAY,KACvE,iBAAmBT,EAAO,GAItCU,EAAeP,EAAUvB,SAGzBlD,EAAiB0E,EAAY1E,eAO7BiF,EAAiBP,EAAYxB,SAG7BgC,EAAaC,OAAO,IACtBH,EAAa1D,KAAKtB,GAAgBuC,QA7EjB,sBA6EuC,QACvDA,QAAQ,yDAA0D,SAAW,KAI5E6C,EAAShB,EAAKgB,OACdC,EAASd,EAAWc,OAGpBC,EAAMC,EAAUnB,EAAM,OACtBoB,EAAeD,EAAU3E,OAAQ,UAGjC6E,EAAcL,EAASA,EAAO/D,eAAYpB,EAC1CyF,EAAiBD,EAAcA,EAAYvC,cAAWjD,EAS1D,SAAS0F,EAAKC,GACZ,IAAIC,GAAS,EACT1E,EAASyE,EAAUA,EAAQzE,OAAS,EAGxC,IADAK,KAAKsE,UACID,EAAQ1E,GAAQ,CACvB,IAAI4E,EAAQH,EAAQC,GACpBrE,KAAKwE,IAAID,EAAM,GAAIA,EAAM,GAC1B,CACH,CAyFA,SAASE,EAAUL,GACjB,IAAIC,GAAS,EACT1E,EAASyE,EAAUA,EAAQzE,OAAS,EAGxC,IADAK,KAAKsE,UACID,EAAQ1E,GAAQ,CACvB,IAAI4E,EAAQH,EAAQC,GACpBrE,KAAKwE,IAAID,EAAM,GAAIA,EAAM,GAC1B,CACH,CAuGA,SAASG,EAASN,GAChB,IAAIC,GAAS,EACT1E,EAASyE,EAAUA,EAAQzE,OAAS,EAGxC,IADAK,KAAKsE,UACID,EAAQ1E,GAAQ,CACvB,IAAI4E,EAAQH,EAAQC,GACpBrE,KAAKwE,IAAID,EAAM,GAAIA,EAAM,GAC1B,CACH,CAsFA,SAASI,EAAaC,EAAOjH,GAE3B,IADA,IA+SUkB,EAAOgG,EA/SblF,EAASiF,EAAMjF,OACZA,KACL,IA6SQd,EA7SD+F,EAAMjF,GAAQ,OA6SNkF,EA7SUlH,IA8SAkB,GAAUA,GAASgG,GAAUA,EA7SpD,OAAOlF,EAGX,OAAQ,CACV,CAUA,SAASmF,EAAQC,EAAQC,GAuDzB,IAAkBnG,EAtDhBmG,EA8FF,SAAenG,EAAOkG,GACpB,GAAIE,GAAQpG,GACV,OAAO,EAET,IAAIqG,SAAcrG,EAClB,GAAY,UAARqG,GAA4B,UAARA,GAA4B,WAARA,GAC/B,MAATrG,GAAiBsG,GAAStG,GAC5B,OAAO,EAET,OAAOsD,EAAciD,KAAKvG,KAAWqD,EAAakD,KAAKvG,IAC1C,MAAVkG,GAAkBlG,KAASO,OAAO2F,EACvC,CAzGSM,CAAML,EAAMD,GAAU,CAACC,GAuDvBC,GADSpG,EAtD+BmG,GAuDvBnG,EAAQyG,EAAazG,GAlD7C,IAHA,IAAIwF,EAAQ,EACR1E,EAASqF,EAAKrF,OAED,MAAVoF,GAAkBV,EAAQ1E,GAC/BoF,EAASA,EAAOQ,GAAMP,EAAKX,OAE7B,OAAQA,GAASA,GAAS1E,EAAUoF,OAAStG,CAC/C,CAUA,SAAS+G,EAAa3G,GACpB,IAAK4G,GAAS5G,KA4GE6G,EA5GiB7G,EA6GxBuE,GAAeA,KAAcsC,GA5GpC,OAAO,EA2GX,IAAkBA,EAzGZC,EAoTN,SAAoB9G,GAGlB,IAAI+G,EAAMH,GAAS5G,GAAS4E,EAAe3D,KAAKjB,GAAS,GACzD,OAAO+G,GAAO7D,GAAW6D,GAAO5D,CAClC,CAzTiB6D,CAAWhH,IA3Z5B,SAAsBA,GAGpB,IAAIiH,GAAS,EACb,GAAa,MAATjH,GAA0C,mBAAlBA,EAAM6C,SAChC,IACEoE,KAAYjH,EAAQ,GAC1B,CAAM,MAAOqB,GAAK,CAEhB,OAAO4F,CACT,CAiZsCC,CAAalH,GAAU6E,EAAanB,EACxE,OAAOoD,EAAQP,KAsJjB,SAAkBM,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOlC,EAAa1D,KAAK4F,EAC/B,CAAM,MAAOxF,GAAK,CACd,IACE,OAAQwF,EAAO,EACrB,CAAM,MAAOxF,GAAK,CACf,CACD,MAAO,EACT,CAhKsB8F,CAASnH,GAC/B,CAyCA,SAASoH,EAAWC,EAAKvI,GACvB,IA+CiBkB,EACbqG,EAhDAiB,EAAOD,EAAIE,SACf,OAgDgB,WADZlB,SADarG,EA9CAlB,KAgDmB,UAARuH,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVrG,EACU,OAAVA,GAjDDsH,EAAmB,iBAAPxI,EAAkB,SAAW,QACzCwI,EAAKD,GACX,CAUA,SAASnC,EAAUgB,EAAQpH,GACzB,IAAIkB,EAjeN,SAAkBkG,EAAQpH,GACxB,OAAiB,MAAVoH,OAAiBtG,EAAYsG,EAAOpH,EAC7C,CA+dc0I,CAAStB,EAAQpH,GAC7B,OAAO6H,EAAa3G,GAASA,OAAQJ,CACvC,CAnUA0F,EAAKtE,UAAUyE,MAnEf,WACEtE,KAAKoG,SAAWpC,EAAeA,EAAa,MAAQ,CAAA,CACtD,EAkEAG,EAAKtE,UAAkB,OAtDvB,SAAoBlC,GAClB,OAAOqC,KAAKsG,IAAI3I,WAAeqC,KAAKoG,SAASzI,EAC/C,EAqDAwG,EAAKtE,UAAU0G,IA1Cf,SAAiB5I,GACf,IAAIwI,EAAOnG,KAAKoG,SAChB,GAAIpC,EAAc,CAChB,IAAI8B,EAASK,EAAKxI,GAClB,OAAOmI,IAAWjE,OAAiBpD,EAAYqH,CAChD,CACD,OAAOtH,EAAesB,KAAKqG,EAAMxI,GAAOwI,EAAKxI,QAAOc,CACtD,EAoCA0F,EAAKtE,UAAUyG,IAzBf,SAAiB3I,GACf,IAAIwI,EAAOnG,KAAKoG,SAChB,OAAOpC,OAA6BvF,IAAd0H,EAAKxI,GAAqBa,EAAesB,KAAKqG,EAAMxI,EAC5E,EAuBAwG,EAAKtE,UAAU2E,IAXf,SAAiB7G,EAAKkB,GAGpB,OAFWmB,KAAKoG,SACXzI,GAAQqG,QAA0BvF,IAAVI,EAAuBgD,EAAiBhD,EAC9DmB,IACT,EAmHAyE,EAAU5E,UAAUyE,MAjFpB,WACEtE,KAAKoG,SAAW,EAClB,EAgFA3B,EAAU5E,UAAkB,OArE5B,SAAyBlC,GACvB,IAAIwI,EAAOnG,KAAKoG,SACZ/B,EAAQM,EAAawB,EAAMxI,GAE/B,QAAI0G,EAAQ,KAIRA,GADY8B,EAAKxG,OAAS,EAE5BwG,EAAKK,MAEL3C,EAAO/D,KAAKqG,EAAM9B,EAAO,IAEpB,EACT,EAwDAI,EAAU5E,UAAU0G,IA7CpB,SAAsB5I,GACpB,IAAIwI,EAAOnG,KAAKoG,SACZ/B,EAAQM,EAAawB,EAAMxI,GAE/B,OAAO0G,EAAQ,OAAI5F,EAAY0H,EAAK9B,GAAO,EAC7C,EAyCAI,EAAU5E,UAAUyG,IA9BpB,SAAsB3I,GACpB,OAAOgH,EAAa3E,KAAKoG,SAAUzI,IAAQ,CAC7C,EA6BA8G,EAAU5E,UAAU2E,IAjBpB,SAAsB7G,EAAKkB,GACzB,IAAIsH,EAAOnG,KAAKoG,SACZ/B,EAAQM,EAAawB,EAAMxI,GAO/B,OALI0G,EAAQ,EACV8B,EAAKM,KAAK,CAAC9I,EAAKkB,IAEhBsH,EAAK9B,GAAO,GAAKxF,EAEZmB,IACT,EAiGA0E,EAAS7E,UAAUyE,MA/DnB,WACEtE,KAAKoG,SAAW,CACdM,KAAQ,IAAIvC,EACZ+B,IAAO,IAAKpC,GAAOW,GACnBkC,OAAU,IAAIxC,EAElB,EA0DAO,EAAS7E,UAAkB,OA/C3B,SAAwBlC,GACtB,OAAOsI,EAAWjG,KAAMrC,GAAa,OAAEA,EACzC,EA8CA+G,EAAS7E,UAAU0G,IAnCnB,SAAqB5I,GACnB,OAAOsI,EAAWjG,KAAMrC,GAAK4I,IAAI5I,EACnC,EAkCA+G,EAAS7E,UAAUyG,IAvBnB,SAAqB3I,GACnB,OAAOsI,EAAWjG,KAAMrC,GAAK2I,IAAI3I,EACnC,EAsBA+G,EAAS7E,UAAU2E,IAVnB,SAAqB7G,EAAKkB,GAExB,OADAoH,EAAWjG,KAAMrC,GAAK6G,IAAI7G,EAAKkB,GACxBmB,IACT,EA+KA,IAAIsF,EAAesB,IAAQ,SAASD,GA4SpC,IAAkB9H,EA3ShB8H,EA4SgB,OADA9H,EA3SE8H,GA4SK,GArZzB,SAAsB9H,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIsG,GAAStG,GACX,OAAOqF,EAAiBA,EAAepE,KAAKjB,GAAS,GAEvD,IAAIiH,EAAUjH,EAAQ,GACtB,MAAkB,KAAViH,GAAkB,EAAIjH,IAAWiD,EAAY,KAAOgE,CAC9D,CA2Y8Be,CAAahI,GA1SzC,IAAIiH,EAAS,GAOb,OANI1D,EAAagD,KAAKuB,IACpBb,EAAOW,KAAK,IAEdE,EAAO5F,QAAQsB,GAAY,SAASyE,EAAOC,EAAQC,EAAOL,GACxDb,EAAOW,KAAKO,EAAQL,EAAO5F,QAAQuB,EAAc,MAASyE,GAAUD,EACxE,IACShB,CACT,IASA,SAASP,GAAM1G,GACb,GAAoB,iBAATA,GAAqBsG,GAAStG,GACvC,OAAOA,EAET,IAAIiH,EAAUjH,EAAQ,GACtB,MAAkB,KAAViH,GAAkB,EAAIjH,IAAWiD,EAAY,KAAOgE,CAC9D,CAiEA,SAASc,GAAQlB,EAAMuB,GACrB,GAAmB,mBAARvB,GAAuBuB,GAA+B,mBAAZA,EACnD,MAAM,IAAIC,UAvqBQ,uBAyqBpB,IAAIC,EAAW,WACb,IAAIC,EAAO1H,UACP/B,EAAMsJ,EAAWA,EAASlH,MAAMC,KAAMoH,GAAQA,EAAK,GACnDC,EAAQF,EAASE,MAErB,GAAIA,EAAMf,IAAI3I,GACZ,OAAO0J,EAAMd,IAAI5I,GAEnB,IAAImI,EAASJ,EAAK3F,MAAMC,KAAMoH,GAE9B,OADAD,EAASE,MAAQA,EAAM7C,IAAI7G,EAAKmI,GACzBA,CACX,EAEE,OADAqB,EAASE,MAAQ,IAAKT,GAAQU,OAAS5C,GAChCyC,CACT,CAGAP,GAAQU,MAAQ5C,EA6DhB,IAAIO,GAAUjC,MAAMiC,QAmDpB,SAASQ,GAAS5G,GAChB,IAAIqG,SAAcrG,EAClB,QAASA,IAAkB,UAARqG,GAA4B,YAARA,EACzC,CA+CA,SAASC,GAAStG,GAChB,MAAuB,iBAATA,GAtBhB,SAAsBA,GACpB,QAASA,GAAyB,iBAATA,CAC3B,CAqBK0I,CAAa1I,IAAU4E,EAAe3D,KAAKjB,IAAUoD,CAC1D,CAyDA,UALA,SAAa8C,EAAQC,EAAMwC,GACzB,IAAI1B,EAAmB,MAAVf,OAAiBtG,EAAYqG,EAAQC,EAAQC,GAC1D,YAAkBvG,IAAXqH,EAAuB0B,EAAe1B,CAC/C,ICh6BwDrG,GAAY,8BAA+BF,GAAU,sBAAVA,GAAuC,sBAAvCA,GAAoE,sBAApEA,GAAiG,CAACkI,MAAM,4BAA4BC,MAAM,6BAA1InI,GAAkL,yBAA0ByB,GAAU,4BAAVA,GAA6C,4BAA7CA,GAAgF,4BAAhFA,GAAmH,CAACyG,MAAM,kCAAkCC,MAAM,mCAAlK1G,GAAgN,+BAAgCxB,GAAU,gCAAVA,GAAiD,gCAAjDA,GAAwF,gCAAxFA,GAAgI,yCAAhIA,GAAgL,CAACiI,MAAM,uCAAvLjI,GAAyO,mCAAoCyB,GAAS,2BAATA,GAA6C,0BAA7CA,GAAmF,6BAAnFA,GAA6H,8BAA+BP,GAAS,0BAATA,GAA4C,yBAA0BiH,GAAU,uBAAVA,GAAwC,uBAAxCA,GAAsE,uBAAwBC,GAAU,CAACC,MAAM,iCAAiCC,OAAO,mCAAzDF,GAAmG,CAACC,MAAM,iCAAiCC,OAAO,mCAAlJF,GAAgM,CAACC,MAAM,qCAAvMD,GAAmP,CAACC,MAAM,gCAAgCC,OAAO,mCAAoCC,GAAU,2BAAVA,GAA4C,2BAA5CA,GAAiF,0BAAjFA,GAAkH,2BAAlHA,GAAqJ,4BAArJA,GAAwL,2BAA4BnI,GAAE,mBAAmBsB,GAAE,yBAAyB8G,GAAE,kBAAkBC,GAAE,qBAAqBC,GAAE,cAAcC,GAAE,sBAAsBC,GAAS,iBAATA,GAA+B,gBAAiB,MAAMC,GAAE,WAAWC,GAAE,eAAeD,gBAAqBE,GAAE,IAAIC,GAAE,KAAK,MAAMtI,EAAE,CAAA,EAAG,MAAM,CAACuI,QAAQnJ,GAAG,MAAMG,EAAE,mBAAmBH,EAAE8E,QAAQhF,OAAOsJ,YAAYpJ,EAAE8E,WAAW9E,EAAE,OAAOY,EAAEyI,QAAQrH,KAAKsH,UAAUnJ,GAAGO,IAAI,EAAE9B,KAAKoB,GAAG,OAAOY,EAAE2I,KAAKvJ,EAAEU,IAAI,EAAE8I,IAAIxJ,GAAG,OAAOY,EAAE6I,IAAIzJ,EAAEoC,WAAW1B,IAAI,EAAEgJ,OAAO1J,GAAG,OAAOY,EAAE+I,OAAO3J,EAAEU,IAAI,EAAEkJ,MAAM5J,GAAG,OAAOY,EAAEiJ,MAAM7J,EAAEU,IAAI,EAAEoJ,OAAO9J,GAAG,OAAOY,EAAEmJ,OAAO/J,EAAEU,IAAI,EAAEsJ,MAAM,IAAIlK,OAAOkE,KAAKpD,GAAGqJ,SAASjK,GAAGY,EAAEZ,GAAG,CAAC,GAAG,UAAUA,EAAE,GAAGA,MAAM,KAAKY,EAAEZ,MAAM,KAAKkK,KAAK,MAAK,EAAm0B,IAAIC,IAAG,SAASvJ,GAAGA,EAAEqG,IAAI,MAAMrG,EAAEwJ,OAAO,SAASxJ,EAAEyJ,KAAK,OAAOzJ,EAAE0J,IAAI,KAAK,CAAnE,CAAqEH,KAAIA,GAAE,CAAE,IAAG,MAAMI,GAAE,IAAI3J,IAAI,IAAIyI,QAAQzI,EAAEzC,SAASyC,EAAEZ,KAAK,MAAMG,EAAE,CAACS,GAAG8C,MAAMiC,QAAQ/E,GAAGA,EAAEA,aAAayI,QAAQ3F,MAAM8G,KAAK5J,EAAEkE,WAAWlE,EAAEd,OAAOgF,QAAQlE,GAAG,GAAxF,CAA4FZ,GAAG,OAAOG,EAAEhC,QAAM,CAAG6B,GAAGG,EAAEF,MAAMW,EAAET,GAAGF,EAAEW,IAAIA,GAAGA,CAAE,GAAE,CAAE,IAAG6J,GAAE7J,QAAG,IAASA,OAAE,EAAOoB,KAAKsH,UAAU1I,GAAG8J,GAAE,CAAC9J,EAAEZ,EAAE,MAAM,IAAIG,EAAES,EAAE,OAAOZ,IAAIG,EAAEA,EAAE,IAAIH,GAAG,CAAC2K,cAAc,UAAUxK,IAAG,EAAGyK,GAAE,EAAEC,QAAQjK,EAAEkK,UAAU9K,EAAE+K,WAAW5K,EAAE6K,OAAO/K,EAAE/B,MAAMwD,EAAEuJ,aAAa/K,EAAEgL,MAAMvJ,MAAM,MAAMP,EAA1yC,EAACR,EAAEZ,KAAK,MAAMG,EAAE,CAACS,GAAGnC,SAASuB,KAAK,MAAMG,QAAQS,KAAKZ,GAAGC,QAAQE,EAAEgL,OAAO,OAAOhL,EAAEgL,KAAK,IAAIC,QAAQC,QAAQpL,GAAGE,EAAErB,KAAK,IAAIsM,QAAQC,QAAQrJ,KAAKC,MAAMhC,IAAIE,EAAEtB,MAAM,IAAIsB,EAAEA,GAAtJ,CAA0JH,GAAGkL,OAAO,OAAO/K,GAAG,MAAMS,GAAGA,EAAE0K,KAAK,uIAAuI1K,EAAEnC,SAASuB,KAAK,IAAIG,EAAE,MAAMe,MAAM,qHAAqHN,EAAE2K,IAAI,CAAC3K,GAAGsI,KAAIU,MAAM,WAAWJ,IAAI5I,EAAE,IAAI8I,OAAO9I,EAAE,GAAG8I,QAAQP,QAAQvI,EAAE,GAAGuI,SAASvK,KAAKgC,EAAE,GAAGhC,MAAMoL,QAA7F,CAAsGhK,IAAI,MAAMC,QAAQE,KAAKH,GAAG,OAAOY,EAAEX,EAAEtB,GAAG,MAAM,cAAc,OAACF,IAAU,MAAMuB,QAAQY,EAAEuK,OAAO,OAAOjC,KAAIU,MAAM,YAAYJ,IAAI5I,EAAE4I,IAAIpH,YAAY0H,OAAO,GAAGlJ,EAAEkJ,UAAUlJ,EAAE4K,cAAcrC,QAAQvI,EAAEuI,SAASvK,KAAKoB,GAAGgK,OAAQ,EAA9J,CAAgK/J,IAAIA,GAAGE,GAAifsL,CAAExL,EAAE0B,GAAG0G,EAAE5J,UAAU,MAAMkD,GAAG,MAAMD,OAAE,EAAOA,EAAEgK,eAAehK,EAAEgK,cAAczL,GAAGA,GAAGyF,KAAK2C,EAAEzJ,KAAK0J,EAAEa,QAAQV,EAAEkD,YAAYrL,EAAEoJ,OAAO9H,EAAEgK,MAAMlD,GAAG/G,EAAEgH,EAAE,CAACQ,QAAQoB,GAAEG,GAAE1K,EAAE0I,GAAG,CAAC,qBAAqB,UAAU,wBAAwB,WAAW,MAAMvI,OAAE,EAAOA,EAAE0L,cAAc,GAAGpD,GAAGiB,OAAO9H,EAAEhD,KAAK6L,GAAEnC,IAAI,OAAOpI,IAAIyI,EAAEmD,YAAY5L,GAAG,WAAW,MAAM0I,QAAQxH,EAAE,GAAGsE,KAAK9E,EAAEiK,QAAQ7K,EAAE2L,YAAYxL,EAAE2K,UAAU7K,MAAM,MAAMyB,EAAEzB,EAAE8L,MAAM,GAAG,IAAI/L,EAAEA,EAAEyB,QAAQsH,GAAErH,EAAEA,EAAE,IAAI,IAAI,MAAMxB,EAAE,IAAI8L,IAAIpL,EAAEZ,GAAG,OAAOG,IAAID,EAAE+L,OAAO,IAAIC,gBAAgB/L,GAAGiC,YAAYlC,CAAE,EAAjL,CAAmL,CAACwF,KAAK2C,EAAEwC,QAAQjK,EAAE+K,YAAYrL,EAAEwK,UAAU9K,IAAI2I,GAAG,OAAO,MAAMjH,OAAE,EAAOA,EAAEyK,qBAAqBzK,EAAEyK,aAAalM,EAAE,MAAM2I,OAAE,EAAOA,EAAE/J,SAAS+J,GAAG,MAAM,CAAC3B,IAAI,CAACrG,GAAGuI,QAAQnJ,EAAE2L,YAAYxL,EAAEyL,MAAM3L,GAAG,CAAA,IAAKoI,EAAE,CAAC3C,KAAK9E,EAAEuI,QAAQnJ,EAAE2L,YAAYxL,EAAEvB,UAAK,EAAO8K,OAAOS,GAAElD,IAAI2E,MAAM3L,IAAIoK,KAAK,CAACzJ,EAAEZ,GAAGmJ,QAAQhJ,EAAEwL,YAAY1L,EAAE2L,MAAMlK,GAAG,CAAE,IAAG2G,EAAE,CAAC3C,KAAK9E,EAAEuI,QAAQhJ,EAAEwL,YAAY1L,EAAErB,KAAKoB,EAAE0J,OAAOS,GAAEE,KAAKuB,MAAMlK,IAAI4I,IAAI,CAAC1J,EAAEZ,GAAGmJ,QAAQhJ,EAAEwL,YAAY1L,EAAE2L,MAAMlK,GAAG,CAAA,IAAK2G,EAAE,CAAC3C,KAAK9E,EAAEuI,QAAQhJ,EAAEwL,YAAY1L,EAAErB,KAAKoB,EAAE0J,OAAOS,GAAEG,IAAIsB,MAAMlK,IAAI0I,OAAO,CAACxJ,GAAGuI,QAAQnJ,EAAE2L,YAAYxL,EAAEyL,MAAM3L,GAAG,CAAE,IAAGoI,EAAE,CAAC3C,KAAK9E,EAAEuI,QAAQnJ,EAAE2L,YAAYxL,EAAEvB,UAAK,EAAO8K,OAAOS,GAAEC,OAAOwB,MAAM3L,IAAI/B,MAAMwD,EAAC,EAAG,IAAI0K,GAAqB,IAAK,SAASC,GAAEzL,EAAEZ,EAAEG,GAAG,IAAIF,EAAE,IAAIyB,EAAE4K,GAAE1L,GAAGZ,IAAI0B,EAAE,QAAQzB,EAAE,MAAMyB,OAAE,EAAOA,EAAE6K,eAAU,IAAStM,OAAE,EAAOA,EAAED,IAAI,MAAME,EAAE,MAAMwB,OAAE,EAAOA,EAAEvB,GAAG,OAAOuD,MAAMiC,QAAQzF,GAAGA,EAAE,EAAE,CAAC,SAASoM,GAAEtM,GAAG,GAAG,iBAAiBA,IAAIA,EAAE,MAAM,IAAIkB,MAAM,0BAA0B,OAAON,EAAEZ,EAAE,CAAC,SAASwM,GAAE5L,GAAG,MAAM6L,IAAIzM,GAAGsM,GAAE1L,GAAG,OAAM,IAAK8L,MAAMC,UAAU,IAAI3M,CAAC,CAAC,SAAS4M,GAAEhM,GAAG,IAAIZ,EAAEsM,GAAE1L,GAAG,MAAMT,EAAEL,OAAOkE,KAAK,MAAMhE,OAAE,EAAOA,EAAEuM,SAAS,OAAO7I,MAAMiC,QAAQxF,GAAGA,EAAE,EAAE,CAAC,SAAS0M,GAAEjM,EAAEZ,GAAG,OAAOqM,GAAEzL,EAAEZ,EAAE,cAAc,CAAC,SAAS8M,GAAElM,EAAEZ,GAAG,OAAOqM,GAAEzL,EAAEZ,EAAE,QAAQ,CAAC,MAAM+M,GAAE,IAAInM,IAAIA,EAAEsJ,KAAK,KAAKzI,QAAQ,UAAU,KAAKhD,eAAeuO,GAAEpM,EAAEZ,GAAG,IAAIG,EAAE,MAAMF,QAAQW,EAAEc,EAAE,CAACuL,KAAKhN,EAAE6J,OAAOnL,GAAGsB,EAAEtB,GAAGuO,SAASjN,GAAGC,QAAQD,EAAEpB,QAAQC,OAAO,OAAOmB,EAAEtB,GAAG+C,EAAEmF,KAAK7G,EAAEA,EAAEE,GAAGA,GAAGwB,EAAEyL,MAAMjN,EAAED,EAAE6J,SAASsC,IAAqBtM,OAAOC,OAAO2B,EAAEyL,MAAM,CAACC,WAAWC,OAAOC,SAAS,QAAQnN,EAAEF,EAAEkJ,eAAU,IAAShJ,OAAE,EAAOA,EAAE8G,IAAI,iBAAiB,KAAKvF,CAAC,CAAC,MAAM6L,GAAE,CAAC3M,EAAEZ,IAAI,CAACG,EAAEH,IAAIA,IAAIY,EAAEZ,IAAIG,EAAEsB,QAAQ,QAAQzB,GAAGwN,GAAE,IAAI5M,KAAC,CAAK6M,SAASzN,IAAIY,EAAE8M,SAAS9M,IAAI,MAAMT,EAAES,EAAEZ,GAAG,GAAGG,EAAE,MAAM,IAAIe,MAAMf,EAAG,KAAG,KAAMwN,GAAE/M,GAAGZ,GAAGY,EAAEkF,KAAK9F,GAAG4N,GAAED,GAAE,wEAAwEE,GAAEF,GAAE,2BAA2BG,GAAEP,GAAEK,GAAE,gCAAgCG,GAAER,GAAEM,GAAE,uCAAuCG,GAAET,IAAK,EAAE3M,GAAGA,EAAEP,QAAP,GAAkB,uBAA6B,MAAM4N,GAAEV,IAAG3M,GAAG,iBAAiBA,GAAG,yBAAyBsN,GAAEX,IAAG3M,QAAG,IAASA,GAAG,oBAAoBuN,IAAGC,GAAE,CAACH,KAAIC,MAAO,qCAAqC,CAACtN,EAAtC,uCAA4CZ,IAAI,MAAMG,EAAEiO,GAAEC,QAAQzN,GAAGA,EAAEZ,KAAK,QAAQG,EAAEE,OAAO+N,GAAE/N,UAAUO,EAAEA,EAAEa,QAAQ,QAAQzB,GAAGG,EAAE+J,KAAK,QAAO,GAAI,IAAIkE,GAAI,MAAME,GAAE,IAAI1N,IAAIZ,GAAG,IAAIG,KAAKS,EAAE8M,SAAS,CAAC9M,EAAEZ,IAAIwN,MAAK5M,GAAG6M,SAAStN,EAAEH,MAAMA,KAAKG,IAAIoO,GAAE3N,GAAG,CAACqN,GAAE,IAAIrN,uBAAuBoN,GAAE,IAAIpN,yBAAyB4N,GAAG5N,GAAG,CAACqN,GAAE,IAAIrN,uBAAuBkN,MAAKW,GAAG7N,GAAG,CAACqN,GAAE,IAAIrN,uBAAuBmN,MAAKW,GAAGJ,GAAEC,GAAE,cAAcI,GAAG/N,IAAI,CAACgO,SAASF,KAAK1O,EAAEC,IAAI+M,GAAEpM,EAAEyJ,KAAKlK,GAAW,CAAC0O,aAAa5O,GAAG,CAAC2L,MAAM5L,SAAS,IAAI8O,GAAGC,IAAI,SAASnO,GAAGA,EAAEoO,IAAI,MAAMpO,EAAEqO,SAAS,UAAU,CAA7C,CAA+CH,KAAKA,GAAG,CAAE,IAAG,SAASlO,GAAGA,EAAEuH,MAAM,OAAO,CAA3B,CAA6B4G,KAAKA,GAAG,CAAA,IAAK,MAAMG,GAAGpP,OAAOC,OAAOD,OAAOC,OAAO,GAAG+O,IAAIC,IAAI,IAAII,IAAI,SAASvO,GAAGA,EAAEwO,QAAQ,UAAUxO,EAAEyO,QAAQ,UAAUzO,EAAE0O,UAAU,YAAY1O,EAAE2O,OAAO,QAAQ,CAA7F,CAA+FJ,KAAKA,GAAG,CAAE,IAAG,MAAMK,GAAGjB,GAAE,WAAWkB,GAAGnB,GAAEC,GAAE,UAAUmB,GAAGpB,GAAEkB,IAAIG,GAAGrB,GAAEC,GAAE,eAAeqB,GAAGtB,GAAEkB,GAAGhB,GAAG,UAAUqB,GAAGjP,IAAI,CAACkP,OAAOL,IAAIzP,GAAGgN,GAAEpM,EAAEyJ,KAAKnK,GAAS,CAAC0L,MAAM5L,OAAO+P,OAAOL,IAAI,CAAC1P,EAAEG,EAAEF,EAAEyB,IAAIsL,GAAEpM,EAAEyJ,KAAK0C,GAAE7M,GAASgP,GAAG/G,OAAO,CAAC6H,QAAQhQ,EAAEiQ,IAAI9P,EAAE0O,aAAa5O,GAAG,CAAC2L,MAAMlK,OAAOwO,WAAWR,IAAE,CAAG1P,EAAEG,EAAEF,IAAI+M,GAAEpM,EAAEyJ,KAAK0C,GAAE7M,GAAagP,GAAG/G,OAAO,CAAC6H,QAAQhQ,EAAEiQ,IAAI9P,EAAE0O,aAAa5O,OAAOkQ,OAAOT,KAAK1P,EAAEG,EAAEF,EAAEyB,IAAIsL,GAAEpM,EAAEyJ,KAAK0C,GAAE7M,GAASgP,GAAG/G,OAAO,CAAC6H,QAAQhQ,EAAEiQ,IAAI9P,EAAElB,KAAKgB,EAAE4O,aAAanN,OAAO0O,eAAeT,KAAK3P,EAAEG,IAAI,IAAIiL,SAASnL,IAAI,MAAMoQ,kBAAkB3O,EAAE4O,UAAU3O,GAAG,GAAG0O,kBAAkBzP,EAAE,IAAI0P,UAAUtQ,EAAE,KAAK,MAAM,CAACqQ,kBAAkBE,KAAKC,IAAI5P,GAAvgL,SAA+gL0P,UAAUC,KAAKE,IAAIzQ,GAAGiJ,GAAEA,MAA9G,CAAoH9I,GAAG,IAAIiB,EAAE,MAAMiH,EAAEqI,uBAAuB,MAAMvQ,QAAQS,EAAEyJ,KAAKnK,GAAU,CAACyQ,WAAW3Q,IAAIG,EAAExB,KAAKiS,cAAcvI,GAAGjH,GAAGyP,aAAazP,GAAGnB,EAAE+M,GAAE5B,QAAQC,QAAQlL,KAAM,GAAEuB,GAAGN,EAAE0P,YAAY,KAAK7Q,EAAE,CAACkN,MAAM,CAAC4D,iBAAiB,qCAAqCpP,MAAMqP,UAAU,KAAKrS,IAAG,IAAKiS,cAAcvI,EAAG,GAAE1G,EAAG,MAAKsP,OAAO,CAAC9I,MAAMyH,IAAE,CAAG5P,EAAEG,EAAEF,EAAEyB,EAAEC,IAAIqL,GAAEpM,EAAEyJ,KAAKnK,GAASiI,MAAMrI,OAAOC,OAAO,CAACiQ,QAAQhQ,EAAEmI,MAAMhI,EAAE8P,IAAIhQ,GAAG0B,GAAG,CAACiK,MAAMlK,UAAUwP,GAAG5C,GAAEC,GAAE,WAAW4C,GAAG7C,GAAEC,GAAE,eAAeA,GAAE,UAAUA,GAAE,kBAAkB6C,GAAGxQ,IAAI,CAAC2H,MAAM2I,KAAKlR,EAAEG,EAAEF,EAAEyB,EAAExB,EAAEyB,EAAEP,IAAI4L,GAAEpM,EAAEyJ,KAAKvB,GAAQ,CAACuI,OAAOrR,EAAEsR,QAAQnR,EAAEoR,uBAAuBtR,EAAEuR,cAAc9P,EAAE+P,QAAQvR,EAAEwR,kBAAkB/P,EAAEgQ,MAAMvQ,OAAOwQ,KAAKT,KAAKnR,EAAEG,EAAEF,EAAEyB,EAAExB,EAAEyB,IAAIqL,GAAEpM,EAAEyJ,KAAKvB,GAAO,CAAC+I,YAAY7R,EAAE8R,OAAO3R,EAAEqR,cAAcvR,EAAEwR,QAAQ/P,EAAEgQ,kBAAkBxR,EAAEyR,MAAMhQ,SAASoQ,GAAGxD,GAAE,WAAWyD,GAAG1D,GAAEC,GAAE,UAAU0D,GAAG3D,GAAEyD,IAAIG,GAAG5D,GAAEyD,GAAGtD,GAAG,UAAU0D,GAAG7D,GAAEyD,GAAGvD,GAAG,UAAU4D,GAAGxR,IAAC,CAAIkP,OAAOkC,IAAIhS,GAAGgN,GAAEpM,EAAEyJ,KAAK3I,GAAS,CAACkK,MAAM5L,OAAO+P,OAAOjQ,OAAOkE,KAAKkL,IAAI/Q,QAAQ,CAAC6B,EAAEG,IAAIL,OAAOC,OAAOD,OAAOC,OAAO,GAAGC,GAAG,CAACG,CAACA,GAAG8R,IAAI,CAACjS,EAAEC,EAAEC,EAAEyB,IAAIqL,GAAEpM,EAAEyJ,KAAK0C,GAAErL,GAASvB,GAAG,CAAC6P,QAAQhQ,EAAEiQ,IAAIhQ,EAAE4O,aAAa3O,GAAG,CAAC0L,MAAMjK,UAAU,CAAE,GAAEwO,OAAOrQ,OAAOkE,KAAKkL,IAAI/Q,QAAM,CAAG6B,EAAEG,IAAIL,OAAOC,OAAOD,OAAOC,OAAO,CAAE,EAACC,GAAG,CAACG,CAACA,GAAG8R,IAAE,CAAGjS,EAAEC,EAAEC,EAAEyB,IAAIqL,GAAEpM,EAAEyJ,KAAK0C,GAAErL,GAASvB,GAAG,CAAC6P,QAAQhQ,EAAEiQ,IAAIhQ,EAAEhB,KAAKiB,EAAE2O,aAAalN,UAAU,IAAIuO,WAAWpQ,OAAOkE,KAAKkL,IAAI/Q,QAAM,CAAG6B,EAAEG,IAAIL,OAAOC,OAAOD,OAAOC,OAAO,CAAE,EAACC,GAAG,CAACG,CAACA,GAAG8R,IAAE,CAAGjS,EAAEC,EAAEC,IAAI8M,GAAEpM,EAAEyJ,KAAK0C,GAAErL,GAAavB,GAAG,CAAC6P,QAAQhQ,EAAEiQ,IAAIhQ,EAAE4O,aAAa3O,UAAU,IAAI+Q,OAAO,CAAC9I,MAAMgK,KAAKnS,EAAEG,EAAEF,EAAEC,EAAEyB,IAAIqL,GAAEpM,EAAEyJ,KAAK3I,GAASyG,MAAMrI,OAAOC,OAAO,CAACiQ,QAAQhQ,EAAEmI,MAAMhI,EAAE8P,IAAIhQ,GAAG0B,GAAG,CAACiK,MAAM1L,OAAOkI,MAAMtI,OAAOkE,KAAK8K,IAAI3Q,QAAM,CAAG6B,EAAEG,IAAIL,OAAOC,OAAOD,OAAOC,OAAO,CAAE,EAACC,GAAG,CAACG,CAACA,GAAG+R,IAAE,CAAGlS,EAAEC,EAAEC,EAAEyB,EAAEP,IAAI4L,GAAEpM,EAAEyJ,KAAK0C,GAAErL,GAAS0G,MAAMjI,GAAGL,OAAOC,OAAO,CAACiQ,QAAQhQ,EAAEoI,MAAMnI,EAAEgQ,IAAI/P,GAAGkB,GAAG,CAACwK,MAAMjK,UAAU,CAAE,MAAK,IAAI0Q,IAAI,SAASzR,GAAGA,EAAE0R,SAAS,WAAW1R,EAAE2R,OAAO,SAAS3R,EAAE4R,OAAO,SAAS5R,EAAE6R,UAAU,YAAY7R,EAAE8R,OAAO,SAAS9R,EAAE+R,MAAM,QAAQ/R,EAAEgS,QAAQ,UAAUhS,EAAEiS,SAAS,WAAWjS,EAAEkS,MAAM,OAAO,CAAzL,CAA2LT,KAAKA,GAAG,KAAK,MAAMU,GAAGzE,GAAEC,GAAE,SAASyE,GAAGpS,KAAK2H,MAAMzI,OAAOC,QAAQ,CAACC,EAAEG,EAAEF,EAAEyB,IAAIsL,GAAEpM,EAAEyJ,KAAK1I,GAAQ1B,GAAG,GAAG,CAAC0L,YAAY7L,OAAOC,OAAO,CAACkT,SAASjT,GAAGG,GAAG,CAAC+S,YAAY/S,IAAIyL,MAAMlK,MAAM5B,OAAOkE,KAAKqO,IAAIlU,QAAQ,CAAC6B,EAAEG,IAAIL,OAAOC,OAAOD,OAAOC,OAAO,GAAGC,GAAG,CAACG,CAACA,GAAG,CAACH,EAAEC,EAAEyB,IAAIsL,GAAEpM,EAAEyJ,KAAK1I,GAAQ1B,GAAG,CAAA,EAAG,CAAC0L,YAAY7L,OAAOC,OAAO,CAACkT,SAAS9S,GAAGH,GAAG,CAACkT,YAAYlT,IAAI4L,MAAMlK,QAAQ,CAAA,IAAKkN,SAASmE,IAAI/S,GAAGgN,GAAEpM,EAAEyJ,KAAK1I,GAAW,CAACsL,KAAKjN,OAAOmT,YAAY,CAACnT,EAAEG,IAAI6M,GAAEpM,EAAEyJ,KAAK1I,GAAc,CAACsR,SAASjT,EAAE6O,aAAa1O,KAAKiT,aAAa,CAACpT,EAAEG,EAAEF,EAAEyB,EAAExB,IAAI8M,GAAEpM,EAAEyJ,KAAK1I,GAAe,CAACsR,SAASjT,EAAEqT,QAAQlT,EAAElB,KAAKgB,EAAEgN,KAAKvL,EAAE4R,QAAQpT,OAAOqT,GAAGhF,GAAE,WAAWiF,GAAGlF,GAAEiF,GAAGhF,GAAE,SAASkF,GAAGnF,GAAEiF,IAAIG,GAAGpF,GAAEiF,GAAG9E,GAAG,UAAUkF,GAAGrF,GAAEiF,GAAG/E,GAAG,UAAUoF,GAAGhT,KAAKkP,OAAOhQ,OAAOkE,KAAKkL,IAAI/Q,SAAS6B,EAAEG,IAAIL,OAAOC,OAAOD,OAAOC,OAAO,CAAA,EAAGC,GAAG,CAACG,CAACA,GAAGqT,KAAKxT,EAAE0B,IAAIsL,GAAEpM,EAAEyJ,KAAK0C,GAAE9M,GAASE,GAAG,CAAC8M,KAAKvL,EAAEsO,QAAQhQ,UAAU,IAAI+P,OAAOjQ,OAAOkE,KAAKkL,IAAI/Q,QAAQ,CAAC6B,EAAEG,IAAIL,OAAOC,OAAOD,OAAOC,OAAO,CAAE,EAACC,GAAG,CAACG,CAACA,GAAGsT,IAAE,CAAGzT,EAAE0B,EAAExB,IAAI8M,GAAEpM,EAAEyJ,KAAK0C,GAAE9M,GAASE,GAAG,CAAC6P,QAAQhQ,EAAE6O,aAAanN,GAAG,CAACkK,MAAM1L,UAAU,CAAA,GAAIiQ,OAAOrQ,OAAOkE,KAAKkL,IAAI/Q,SAAS6B,EAAEG,IAAIL,OAAOC,OAAOD,OAAOC,OAAO,CAAA,EAAGC,GAAG,CAACG,CAACA,GAAGsT,IAAI,CAACzT,EAAE0B,EAAExB,IAAI8M,GAAEpM,EAAEyJ,KAAK0C,GAAE9M,GAASE,GAAG,CAAC6P,QAAQhQ,EAAEf,KAAKyC,EAAEmN,aAAa3O,UAAU,CAAE,GAAEgQ,WAAWpQ,OAAOkE,KAAKkL,IAAI/Q,QAAM,CAAG6B,EAAEG,IAAIL,OAAOC,OAAOD,OAAOC,OAAO,CAAE,EAACC,GAAG,CAACG,CAACA,GAAGsT,IAAE,CAAGzT,EAAE0B,IAAIsL,GAAEpM,EAAEyJ,KAAK0C,GAAE9M,GAAaE,GAAG,CAAC6P,QAAQhQ,EAAE6O,aAAanN,UAAU,IAAIuP,OAAO,CAAC9I,MAAMwL,KAAK3T,EAAEG,EAAEuB,EAAExB,IAAI8M,GAAEpM,EAAEyJ,KAAKpK,GAASkI,MAAMrI,OAAOC,OAAO,CAACiQ,QAAQhQ,EAAEmI,MAAMhI,GAAGD,GAAG,CAAC0L,MAAMlK,OAAO0G,MAAMtI,OAAOkE,KAAK8K,IAAI3Q,SAAS6B,EAAEG,IAAIL,OAAOC,OAAOD,OAAOC,OAAO,CAAA,EAAGC,GAAG,CAACG,CAACA,GAAGuT,KAAK1T,EAAE0B,EAAExB,EAAEyB,IAAIqL,GAAEpM,EAAEyJ,KAAK0C,GAAE9M,GAASmI,MAAMjI,GAAGL,OAAOC,OAAO,CAACiQ,QAAQhQ,EAAEoI,MAAM1G,GAAGC,GAAG,CAACiK,MAAM1L,UAAU,CAAE,MAAK2T,GAAGvF,GAAEC,GAAE,WAAWuF,GAAGxF,GAAEC,GAAE,SAASwF,GAAGnT,IAAI,CAAC2H,MAAMsL,KAAK7T,EAAEG,EAAEF,EAAEyB,IAAIsL,GAAEpM,EAAEyJ,KAAKjJ,GAAQnB,GAAG,CAAE,EAAC,CAAC0L,YAAY,CAACqI,OAAOhU,EAAEkT,YAAY/S,GAAGyL,MAAMlK,OAAOkN,SAASkF,IAAI9T,GAAGgN,GAAEpM,EAAEyJ,KAAKjJ,GAAW,CAAC6L,KAAKjN,SAASiU,GAAG1F,GAAE,WAAW2F,GAAG5F,GAAE2F,GAAG1F,GAAE,SAAS4F,GAAG7F,GAAE2F,IAAIG,GAAG9F,GAAE2F,IAAII,GAAGzT,IAAC,CAAIuP,OAAOgE,IAAI,CAACnU,EAAEG,IAAI6M,GAAEpM,EAAEyJ,KAAKhC,GAAS,CAAC2H,QAAQhQ,EAAEf,KAAKkB,OAAO2P,OAAOoE,KAAKlU,EAAEG,EAAEF,EAAEyB,IAAIsL,GAAEpM,EAAEyJ,KAAKhC,GAAS,CAAC2H,QAAQhQ,EAAEiN,KAAK9M,EAAE0O,aAAa5O,GAAG,CAAC2L,MAAMlK,OAAOuP,OAAOmD,IAAE,CAAGpU,EAAEG,IAAI6M,GAAEpM,EAAEyJ,KAAKhC,GAAS,CAAC2H,QAAQhQ,GAAG,CAAC4L,MAAMzL,SAASmU,GAAG/F,GAAE,WAAWgG,GAAGhG,GAAE,eAAeiG,GAAGlG,GAAEgG,GAAG/F,GAAE,aAAakG,GAAGnG,GAAEgG,IAAII,GAAGpG,GAAEgG,GAAGC,IAAII,GAAGrG,GAAEgG,GAAG/F,GAAE,eAAegG,IAAIK,GAAGhU,KAAKuP,OAAOqE,IAAE,CAAGxU,EAAEG,EAAEF,IAAI+M,GAAEpM,EAAEyJ,KAAK5B,GAAS,CAACuH,QAAQhQ,EAAE6U,SAAS1U,EAAElB,KAAKgB,OAAO8P,OAAOyE,IAAI,CAACxU,EAAEG,IAAI6M,GAAEpM,EAAEyJ,KAAK5B,GAAS,CAACuH,QAAQhQ,EAAE6U,SAAS1U,OAAO2U,UAAUL,IAAI,CAACzU,EAAEG,EAAEF,IAAI+M,GAAEpM,EAAEyJ,KAAK5B,GAAY,CAACuH,QAAQhQ,EAAE+U,YAAY5U,EAAE6U,gBAAgB/U,OAAOgR,OAAOyD,KAAK1U,EAAEG,EAAEF,IAAI+M,GAAEpM,EAAEyJ,KAAK5B,GAAS,CAACuH,QAAQhQ,EAAEiV,YAAY9U,GAAG,CAACyL,MAAM3L,OAAOwB,QAAQkT,IAAE,CAAG3U,EAAEG,EAAEF,IAAI+M,GAAEpM,EAAEyJ,KAAK5B,GAAU,CAACuH,QAAQhQ,EAAEkV,YAAY/U,EAAE8U,YAAYhV,OAAOkV,OAAO,IAAInI,GAAEpM,EAAEqG,IAAIwB,OAAa2M,GAAG,CAACnH,GAAE,+BAA0CoH,GAAG9G,GAAE,WAAW+G,GAAG/G,GAAE,UAAUgH,GAAGjH,GAAE+G,GAAGC,GAAG/G,GAAE,SAASiH,GAAGlH,GAAE+G,GAAGC,IAAIG,GAAGnH,GAAE8G,GAAGE,IAAII,GAAGpH,GAAE+G,GAAGC,GAAG/G,GAAE,UAAUoH,GAAGrH,GAAEC,GAAE,iBAAiBA,GAAE,aAAaqH,GAAGhV,KAAKuP,OAAO,CAAC5H,MAAMgN,IAAE,CAAGvV,EAAEG,EAAEF,IAAI+M,GAAEpM,EAAEyJ,KAAK/B,GAASC,MAAM,CAACtJ,KAAK,CAAC+Q,QAAQhQ,EAAEmB,KAAKlB,GAAG4V,OAAO1V,OAAOqI,OAAOmN,IAAE,CAAG3V,EAAEG,IAAI6M,GAAEpM,EAAEyJ,KAAK/B,GAASE,OAAO,CAACsN,cAAc9V,EAAEkN,SAAS/M,QAAQ4P,OAAO,CAACxH,MAAMkN,IAAE,CAAGzV,EAAEG,EAAEF,EAAEyB,IAAIsL,GAAEpM,EAAEyJ,KAAK/B,GAASC,MAAM,CAACyH,QAAQhQ,EAAE6V,OAAO1V,EAAE0O,aAAa5O,GAAG,CAAC2L,MAAMlK,OAAO8G,OAAOmN,IAAE,CAAG3V,EAAEG,IAAI6M,GAAEpM,EAAEyJ,KAAK/B,GAASE,OAAO,CAACsN,cAAc9V,EAAEkN,SAAS/M,QAAQ+P,WAAW,CAAC3H,MAAMiN,IAAE,CAAGxV,EAAEG,IAAI6M,GAAEpM,EAAEyJ,KAAK/B,GAAaC,MAAM,CAACyH,QAAQhQ,EAAE6V,OAAO1V,QAAQ8Q,OAAO,CAAC1I,MAAMmN,IAAE,CAAG1V,EAAEG,EAAEF,IAAI+M,GAAEpM,EAAEyJ,KAAK/B,GAASC,MAAM,CAACyH,QAAQhQ,EAAE6V,OAAO1V,GAAG,CAACyL,MAAM3L,OAAOuI,OAAOmN,KAAK3V,EAAEG,IAAI6M,GAAEpM,EAAEyJ,KAAK/B,GAASE,OAAO,CAACsN,cAAc9V,EAAEkN,SAAS/M,UAAU4V,GAAGzH,GAAEC,GAAE,UAAUyH,GAAG1H,GAAM,CAACH,GAAE,yCAAkD,IAAO8H,GAAOC,GAAG5H,GAAE,EAAK,YAAY2H,GAAG1H,GAAE,aAAahB,GAAE,EAAE3M,EAAET,IAAIF,GAAGuN,MAAKrN,GAAGsN,SAASzN,GAAEC,EAAEW,IAAhC,CAAhC,YAAwEqV,IAA1C1I,KAArCe,EAA6FtO,GAA+f,GAAE8K,UAAUlK,EAAEoK,OAAOhL,EAAE6K,QAAQ1K,EAAEjC,MAAM+B,EAAEgL,aAAavJ,EAAEmK,YAAY3L,EAAE,CAAA,EAAGgL,MAAMvJ,MAAM,OAAOP,EAAEwJ,GAAE,CAACC,QAAQ1K,GAAG6I,GAAE8B,UAAUlK,EAAEoK,OAAOhL,EAAE9B,MAAM+B,EAAEgL,aAAavJ,EAAEqJ,WAAW,CAACc,YAAY3L,GAAGgL,MAAMvJ,IAAI,CAACwU,UAAUxH,GAAGvN,GAAGgV,IAAIxC,GAAGxS,GAAGiV,UAAUjE,GAAGhR,GAAGkV,cAAczG,GAAGzO,GAAGmV,MAAMvD,GAAG5R,GAAGoV,KAAKzC,GAAG3S,GAAGqV,KAAKpC,GAAGjT,GAAGsV,SAASd,GAAGxU,GAAGyT,SAASD,GAAGxT,GAAGuV,KAAKvF,GAAGhQ,GAAGwV,QAAQZ,IAAIpV,GAAGoM,GAAE5L,EAAEiJ,KAAK/J,GAAE,GAAG,CAACsL,MAAMhL,OAAOiW,aAAavI,GAAE,CAACL,GAAE,aAAa,CAACE,GAAE,wCAArBG,GAAgE1N,EAAEZ,IAAIgN,GAAE5L,EAAEiJ,KAAKzI,GAAE,CAACoS,OAAOpT,GAAG,CAACgL,MAAM5L,OAAO8W,OAAOd,IAAIpV,GAAGoM,GAAE5L,EAAEiJ,KAAK3B,GAAE,CAAA,EAAG,CAACkD,MAAMhL,OAAOmW,UAAUf,IAAIpV,GAAGoM,GAAE5L,EAAEiJ,KAAK1B,GAAE,GAAG,CAACiD,MAAMhL,OAAOmR,GAAGiE,IAAIpV,GAAGoM,GAAE5L,EAAE6F,IAAI2B,GAAE,CAACgD,MAAMhL,OAAOoW,QAAQhB,IAAIpV,GAAGoM,GAAE5L,EAAE6F,IAAI4B,GAAE,CAAC+C,MAAMhL,OAAOqW,aAAalB,GAAGvJ,IAAG0K,WAAWnB,GAAGnJ,IAAGuK,kBAAkBpB,GAAGlJ,IAAGuK,YAAYrB,GAAGjJ,IAAGuK,WAAWjW,GAAG,IAAIA,CAAE,EAAzuCR,CAAEd,OAAOC,OAAOD,OAAOC,OAAO,CAAE,EAACC,GAAG,CAAC9B,MAAM,CAACwN,cAAc9K,IAAI,IAAIT,EAAE,MAAMF,EAAE,GAAG3B,QAAQ,QAAQ6B,EAAEH,EAAE9B,aAAQ,IAASiC,OAAE,EAAOA,EAAEuL,gBAAgB,IAAI,OAAO,MAAMzL,OAAE,EAAOA,EAAE9B,QAAM,CAAGyC,EAAEZ,IAAIA,EAAEY,IAAIA,EAAC,EAAGuL,aAAa1N,MAAMmC,EAAET,KAAK,IAAIF,EAAE,MAAMyB,EAAE,GAAGpD,QAAQ,QAAQ2B,EAAED,EAAE9B,aAAQ,IAAS+B,OAAE,EAAOA,EAAEkM,eAAe,WAAWf,QAAQkM,WAAW,MAAM5V,OAAE,EAAOA,EAAEkF,KAAK5G,GAAGA,EAAEY,EAAE,MAAMT,OAAE,EAAOA,EAAEtB,aAAa6O,SAAS9M,IAAI,IAAIT,EAAE,MAAM,aAAaS,EAAEkJ,SAAS,QAAQ3J,EAAEH,EAAEgL,cAAS,IAAS7K,OAAE,EAAOA,EAAEgN,MAAMvM,EAAE2W,QAAS,GAAE,QAAyvB,MAAMC,GAAG,CAAC5W,EAAEZ,EAAEG,KAAKH,EAAE0N,SAAS1N,IAAI,MAAMC,EAAED,EAAEsC,MAAM,KAAK,IAAIZ,EAAEzB,EAAEwX,QAAQvX,EAAEU,EAAE,KAAKX,EAAEI,OAAO,GAAG,CAAC,GAAGH,EAAEA,EAAEwB,IAAIA,IAAIxB,EAAE,MAAMgB,MAAM,iBAAiBlB,QAAQ0B,iCAAiCA,EAAEzB,EAAEwX,OAAO,CAAC,GAAG,mBAAmBvX,EAAEwB,GAAG,MAAMR,MAAM,IAAIlB,wBAAwB,MAAM2B,EAAEzB,EAAEwB,GAAGxB,EAAEwB,GAAGvB,EAAEwB,EAAG,IAAGf,GAAG,IAAI8W,GAAG5X,OAAOC,OAAOmW,GAAG,CAACyB,gBAAgBzI,KCKpxc,MCLDlE,GACG,IAAIlD,KAET8P,QAAQC,SAAS/P,EAAK,ECFbgQ,GAA+B,oBAAXzW,OAIpB0W,GAAcxH,KAAKyH,IAAI,EAAG,IAAM,ECChCC,GACVH,KAA0B,OAAZzY,mBAAY,IAAZA,kBAAY,EAAZA,aAAcK,QAJE,8BAK/B,0BCD8T,IAACQ,GAAE,CAACgY,QAAQ,YAAgJjY,GAAE,iBAAukByI,GAAE,OAAO,SAASkF,GAAE5N,EAAEG,GAAG,IAAIiB,EAAE,GAAG,OAAO,SAASpB,EAAEG,GAAG,IAAiQyB,EAAQiH,EAAjQnH,GAAOmH,ER8MpmC,SAAuBsP,EAAI3N,EAAM4N,GACpC,GAAIA,GAA6B,IAArBhY,UAAUC,OAAc,IAAK,IAA4BgY,EAAxBnY,EAAI,EAAGuI,EAAI+B,EAAKnK,OAAYH,EAAIuI,EAAGvI,KACxEmY,GAAQnY,KAAKsK,IACR6N,IAAIA,EAAK3U,MAAMnD,UAAUwL,MAAMvL,KAAKgK,EAAM,EAAGtK,IAClDmY,EAAGnY,GAAKsK,EAAKtK,IAGrB,OAAOiY,EAAG7Z,OAAO+Z,GAAM3U,MAAMnD,UAAUwL,MAAMvL,KAAKgK,GACtD,CQtN6mC5J,CAAE,GAANZ,GAAW,GAAI,CAACsY,QAAQ,WAAW,OAAOzP,EAAE,EAAE,EAAE0P,SAAS,WAAW,IAAI3X,EAAEiI,EAAE4O,aAAQ,IAAS7W,GAAGiI,EAAE1B,KAAKvG,EAAE,EAAE4X,QAAQ,WAAW3P,EAAE4O,OAAO,IAAIvX,GAAK,IAAM,IAAI0B,EAAE,EAAE,WAAW,OAAO2O,KAAKkI,SAASlI,KAAKE,IAA7C,IAAN,IAA2DF,KAAKyH,IAAI,EAAEpW,KAAK,GAAG0G,EAAE5G,EAAE4W,UAA4B,QAAG,IAAShQ,EAAE,OAAO8C,QAAQsN,OAAO,IAAI9Q,UAAU,6CAA6C,IAAIS,EAAE,SAASzH,EAAEZ,GAAG,OAAOG,EAAES,GAAG+X,OAAK,SAAW/X,GAAG,GAAGZ,EAAE,GAA5Z,EAAia,MAAMY,GAAG,SAASA,GAAG,KAAKA,aAAaM,OAAO,OAAM,EAAG,IAAIlB,EAAEY,EAAEI,QAAQ,OAAOhB,IAAIC,IAAGD,IAAI0I,EAAC,CAAjF,CAAmF9H,GAAGc,EAAE6W,WAAW7W,EAAE8W,UAAU,IAAIrY,EAAEmI,EAAE5G,EAAE4W,UAAU,QAAG,IAAShQ,EAAE,MAAM1H,EAAE,OAAOT,EAAED,IAAI,IAAIkL,SAAS,SAASxK,GAAG,OAAOkQ,WAAWlQ,EAAET,EAAG,KAAIyY,iBAAiB,OAAOvQ,EAAEC,EAAEtI,EAAE,EAAG,GAAG,GAAE,EAAE,OAAOqI,EAAEC,EAAE,EAAE,CAA7sB,CAA+sBtI,GAAG,SAASY,GAAG,IAAIZ,EAAE,IAAI0M,KAAKhL,EAAE,SAASvB,GAAG,OAAOiB,EAAE+F,KAAK,CAACqC,IAAI5I,EAAEiY,UAAU7Y,EAAE8Y,WAAW,IAAIpM,KAAKS,MAAMhN,GAAG,EAAED,EAAEC,EAAES,GAAG,OAAOV,EAAE0Y,MAAI,WAAa,OAAOlX,GAAI,GAAEA,GAAGxB,CAAE,IAAG0Y,eAAehY,GAAG,MAAM,CAACA,EAAE,CAACmY,SAAS3X,GAAI,GAAE,CAAC,IAAI4H,GAAE,sEAAsEiF,GAAEjF,GAAE8D,GAAE,4CAA4C,SAASkB,GAAEpN,GAAG,IAAIQ,EAAER,EAAEoY,iBAAiB,IAAI9Y,EAAEU,EAAEgL,MAAMtD,EAAE1H,EAAEqY,OAAOxO,OAAE,IAASnC,EAAEpI,EAAEoI,EAAE3G,EAAE3B,EAAEY,EAAE,CAAC,mBAAmB,QAAQ,WAAWgB,EAAE,QAAQR,EAA5hE,SAAWR,EAAEZ,GAAG,OAAO,SAASY,EAAEZ,GAAG,OAAOF,OAAOS,UAAUrB,eAAesB,KAAKI,EAAEZ,EAAE,CAA9D,CAAgEY,EAAEZ,GAAGY,EAAEZ,QAAG,CAAM,CAAu7D0B,CAAEd,EAAE,2BAAsB,IAASQ,EAAEA,EAAE4H,GAAE,OAAOoC,QAAQC,UAAUuN,MAAM,WAAW,IAAInO,GAAG,iBAAiBA,EAAE,MAAM,IAAIvJ,MAA5lD,oBAAqmD,IAAIN,EAAE,SAASA,EAAEZ,GAAG,OAAO0D,MAAMiC,QAAQ/E,GAAGA,EAAE,CAACA,IAAIgG,KAAK,SAAShG,GAAG,OAAO,SAASA,EAAEZ,GAAG,IAAIG,EAAE+Y,mBAAmB,OAAOtY,EAAEa,QAAQ,sBAAsBb,GAAG,MAAM,cAAcA,EAAE,IAAI,aAAaA,EAAET,EAAEH,GAAG,oBAAoBY,EAAET,EAAtjD,SAA2jDS,CAAE,GAAE,CAA9J,CAAgKY,OAAOZ,GAAGZ,EAAG,GAAE,CAApP,CAAsP4B,EAAE6I,GAAG,OAAOmD,GAAEhN,EAAEuY,IAAGR,MAAMS,GAAG,IAAGR,MAAI,SAAWhY,GAAG,IAAIZ,EAAEY,EAAE,GAAGQ,EAAER,EAAE,GAAG,OAAOZ,EAAEqZ,KAAKlZ,EAAEA,EAAE,CAAE,EAACwB,GAAG,CAAC2X,IAAIlY,IAAK,GAAE,CAAC,SAAS+X,GAAEvY,GAAG,OAAO,SAASA,EAAEZ,EAAEG,EAAEiB,GAAG,IAAIM,EAAExB,EAAEqZ,SAASjR,EAAE,0BAA0BmC,EAAE,SAASzK,GAAG,IAAIG,EAAE,IAAI6L,IAAIpL,EAAE4Y,SAASC,MAAMrY,EAAEpB,EAAE0Z,WAAWtY,IAAIjB,EAAEsZ,MAAMrY,IAAIjB,EAAEwZ,SAAS5N,MAAM,GAAG,IAAI3K,IAAIjB,EAAE0V,SAASnU,EAAE1B,EAAE2B,IAAI,EAAEzB,EAAE0Z,iBAAiBtR,EAAEmC,GAAG,IAAI9I,EAAE,WAAW,OAAOzB,EAAE2Z,oBAAoBvR,EAAEmC,EAAE,EAAE,OAA4BW,QAAQC,UAAUuN,KAAK5Y,GAAG4Y,eAAehY,GAAG,OAAOe,IAAIf,CAAE,IAAA,SAAYA,GAAG,OAAO,IAAIwK,kBAAkBxK,GAAG,OAAOkQ,WAAWlQ,EAAG,IAAGgY,MAAI,WAAa,GAAGjX,IAAID,EAAE,OAAwY,WAAc,MAAM,IAAIR,MAAMjB,GAAG,CAAlaE,GAAK,MAAMS,CAAE,GAAG,GAAE,CAAvd,CAAydA,GAAC,WAAa,OAAO,SAASA,GAAG,OAAO,IAAIwK,kBAAkBpL,EAAEG,GAAG,IAAIiB,EAAEmY,SAASO,cAAc,UAAUpY,EAAE,WAAW,IAAId,EAAE,OAAO,QAAQA,EAAEQ,EAAE2Y,kBAAa,IAASnZ,OAAE,EAAOA,EAAEoZ,YAAY5Y,EAAE,EAAElB,EAAEqZ,SAASU,MAAMV,SAASW,qBAAqB,QAAQ,GAAG9Y,EAAE+Y,OAAO,WAAWzY,IAAI1B,GAAG,EAAEoB,EAAEgZ,QAAQ,WAAW1Y,IAAIvB,EAAE,IAAIe,MAAM4L,IAAG,EAAE1L,EAAE3C,OAAM,EAAG2C,EAAEiZ,IAAIzZ,EAAEV,EAAEoa,YAAYlZ,EAAG,GAAE,CAAnV,CAAqVR,EAAG,IAAoCgY,KAAKzK,GAAE,CAAC,SAASA,KAAI,IAAIvN,EAAES,OAAOrB,EAAE,eAAeG,EAAES,EAAEZ,GAAG,GAAG,SAASY,EAAEZ,GAAG,IAAIG,EAAEiB,EAAE,QAAQjB,EAAEL,OAAOya,gCAA2B,IAASpa,OAAE,EAAOA,EAAEK,KAAKV,OAAOc,EAAEZ,IAAI,MAAMoB,OAAE,EAAOA,EAAEoZ,qBAAqB5Z,EAAEZ,GAAGoB,IAAIA,EAAEqZ,WAAW7Z,EAAEZ,QAAG,EAAO,CAAhL,CAAkLY,EAAEZ,GAAG,mBAAmB,MAAMG,OAAE,EAAOA,EAAEkZ,MAAM,MAAM,IAAInY,MAAMwH,IAAG,OAAOvI,CAAC,CAAC,SAASiZ,GAAExY,GAAG,MAAMA,aAAaM,OAAON,EAAEI,UAAU0H,GAAE,IAAIxH,MAAM4L,IAAGlM,CAAC,CCSp9H,MAiCM8Z,GAAmB,CAACC,GAAgB,KACxC,MAAMC,EAAUvb,aAAaK,QFhCD,MEkC5B,IAAKkb,EACH,OAAO,KAET,MAAMC,EAAO7Y,KAAKC,MAAM2Y,GAIxB,OAHY,IAAIlO,MAGRC,UAAYkO,EAAKC,SAAWH,EAC3B,KAEFE,EAAKtb,KAAK,EASNwb,GAAuBtc,MAClCuc,EACAnQ,EAAUoN,MAEV,IACE,GAAIyC,KAEF,OAGF,MAAMO,GArDNvO,KAAKwO,MAAM9Y,SAAS,IACpBmO,KAAKkI,SAASrW,SAAS,IAAI+Y,UAAU,GACrC5K,KAAKkI,SAASrW,SAAS,IAAI+Y,UAAU,IACrCA,UAAU,EAAG,IAoDPC,EAAc,IAAIpP,IAAInB,GAC5BuQ,EAAYC,SF3EmB,qCE6E/B,MAAMC,EAAY,IAAItP,IAAInB,GAC1ByQ,EAAUD,SF7EmB,qCE8E7B,MAAMrC,EACJsC,EAAUlZ,WACV,mEAGImZ,EAASlC,GAAK,CAClBJ,OAAQ+B,EACRQ,SAAU,CACRJ,EAAYhZ,WACZqZ,IAEFzC,iBAAkB,CAChBA,EACA0C,MAIEC,QAAcJ,GACdK,UAAEA,SAAoBD,EAAM1U,IAAI,CAAE4U,SAAUZ,IAC5Ca,EA3FsB,EAC9Bb,EACAW,KACuB,CACvBG,KAA4Bd,EAC5Be,KAA4BJ,IAsFXK,CAAwBhB,EAAWW,GAtE/B,CAACrc,IACtB,MAGMsb,EAAO,CACXtb,QACAub,QALU,IAAIpO,MAKFC,UFvBc,OEyB5BtN,aAAaG,QF3Be,KE2BSwC,KAAKsH,UAAUuR,GAAM,EA+DxDqB,CAAeJ,EAChB,CAAC,MAAOK,GAEPvE,QAAQtM,KAAK,6BAA8B6Q,EAC5C,GCxGGzQ,GAAoCzN,IACxC,MAAM4I,EDgHC6T,IAAiB,GC3GxB,OAJI7T,GAAQ5I,EAAOW,OACjBX,EAAOW,KAAiB,OAAIiI,GAGvB5I,CAAM,ECbFme,GAAmC,yBAGnCC,GACX,6BCSWC,GAAqB,IACzB7c,EAAgB2c,IAWZG,GAAyB,IAC7B9c,EAAgB4c,ICkBnBG,GACHC,GACDhe,SAAUqJ,WACRA,EAAK,GAAKA,EAAK,IAAM,CAAA,EACrB,OAASwJ,EAAU,IAAMxJ,EAGnBkI,EAAUsM,KACVI,EAAcH,KAEhBvM,IACc,QAAhBzR,EAAA+S,EAAQqL,gBAAQ,IAAApe,IAAhB+S,EAAQqL,SAAa,CAAE,GACvBrL,EAAQqL,SAAS3M,QAAUA,EAC3BsB,EAAQqL,SAASxb,KAAOub,GAK1B,aAFmBD,KAAM3U,EAEd,EAGT8U,GACHH,GACDhe,SAAUqJ,KACR,MAAM+U,QAAaJ,KAAM3U,GAKzB,ODvDKnI,EAAmByc,IAYnBzc,EAAmB0c,IC2CjBQ,CAAI,WCzECC,KACd,MAAMC,EAAM,GAWZ,MAAO,CAAEC,IAJInW,IACXkW,EAAIrP,SAASuP,GAAOA,EAAGpW,IAAM,EAGjBqW,IATDD,IACX,MAAME,EAAMJ,EAAI5V,KAAK8V,GAAM,EAC3B,MAAO,IAAMF,EAAIxY,OAAO4Y,EAAK,EAAE,EAQnC;;ACZA,SAASpd,GAAQqd,GACf,IAAK,IAAIld,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CACzC,IAAImd,EAASjd,UAAUF,GACvB,IAAK,IAAI7B,KAAOgf,EACdD,EAAO/e,GAAOgf,EAAOhf,EAExB,CACD,OAAO+e,CACT,CAwHA,IAAIE,GAlGJ,SAASC,EAAMC,EAAWC,GACxB,SAASvY,EAAK/D,EAAM5B,EAAOme,GACzB,GAAwB,oBAAbnE,SAAX,CAMkC,iBAFlCmE,EAAa3d,GAAO,CAAA,EAAI0d,EAAmBC,IAErBC,UACpBD,EAAWC,QAAU,IAAIjR,KAAKA,KAAKwO,MAA6B,MAArBwC,EAAWC,UAEpDD,EAAWC,UACbD,EAAWC,QAAUD,EAAWC,QAAQC,eAG1Czc,EAAO+X,mBAAmB/X,GACvBM,QAAQ,uBAAwBS,oBAChCT,QAAQ,QAASoc,QAEpB,IAAIC,EAAwB,GAC5B,IAAK,IAAIC,KAAiBL,EACnBA,EAAWK,KAIhBD,GAAyB,KAAOC,GAEE,IAA9BL,EAAWK,KAWfD,GAAyB,IAAMJ,EAAWK,GAAezb,MAAM,KAAK,KAGtE,OAAQiX,SAASyE,OACf7c,EAAO,IAAMqc,EAAUS,MAAM1e,EAAO4B,GAAQ2c,CAtC7C,CAuCF,CA4BD,OAAOhe,OAAOoe,OACZ,CACEhZ,MACA+B,IA7BJ,SAAc9F,GACZ,GAAwB,oBAAboY,YAA6BnZ,UAAUC,QAAWc,GAA7D,CAQA,IAFA,IAAIgd,EAAU5E,SAASyE,OAASzE,SAASyE,OAAO1b,MAAM,MAAQ,GAC1D8b,EAAM,CAAA,EACDle,EAAI,EAAGA,EAAIie,EAAQ9d,OAAQH,IAAK,CACvC,IAAIme,EAAQF,EAAQje,GAAGoC,MAAM,KACzB/C,EAAQ8e,EAAMtS,MAAM,GAAG7B,KAAK,KAEhC,IACE,IAAIoU,EAAQpc,mBAAmBmc,EAAM,IAGrC,GAFAD,EAAIE,GAASd,EAAUe,KAAKhf,EAAO+e,GAE/Bnd,IAASmd,EACX,KAEV,CAAQ,MAAO1d,GAAK,CACf,CAED,OAAOO,EAAOid,EAAIjd,GAAQid,CApBzB,CAqBF,EAMGI,OAAQ,SAAUrd,EAAMuc,GACtBxY,EACE/D,EACA,GACApB,GAAO,CAAE,EAAE2d,EAAY,CACrBC,SAAU,IAGf,EACDc,eAAgB,SAAUf,GACxB,OAAOH,EAAK7c,KAAK8c,UAAWzd,GAAO,CAAA,EAAIW,KAAKgd,WAAYA,GACzD,EACDgB,cAAe,SAAUlB,GACvB,OAAOD,EAAKxd,GAAO,GAAIW,KAAK8c,UAAWA,GAAY9c,KAAKgd,WACzD,GAEH,CACEA,WAAY,CAAEne,MAAOO,OAAO6e,OAAOlB,IACnCD,UAAW,CAAEje,MAAOO,OAAO6e,OAAOnB,KAGxC,CAEUD,CApHa,CACrBgB,KAAM,SAAUhf,GAId,MAHiB,MAAbA,EAAM,KACRA,EAAQA,EAAMwM,MAAM,GAAI,IAEnBxM,EAAMkC,QAAQ,mBAAoBS,mBAC1C,EACD+b,MAAO,SAAU1e,GACf,OAAO2Z,mBAAmB3Z,GAAOkC,QAC/B,2CACAS,mBAEH,GAwG8B,CAAEwD,KAAM,MCjIlC,MAAMkZ,GAAoB,KAEpBC,GAAoB,MCcjC,SAASC,GACP3d,EACA5B,GACAwf,WAAEA,EAAUC,aAAEA,EAAYC,iBAAEA,IAE5B,GAAI1f,EAAO,CACT,MAAMoe,EAAU,IAAIjR,KAAwB,IAAnBuS,GAEnBC,EAoBV,SAAuCF,GACrC,MACMG,EADgB9d,OAAOmY,SAAS4F,SACG9c,MAAM,KACzC+c,EAAoBL,EAAa1c,MAAM,KAM7C,OAH4B6c,EACzBpT,OAAOsT,EAAkBhf,QACzB6J,KAAK,OACuB8U,CACjC,CA9B0BM,CAA8BN,GACpDO,GAAQra,IAAI/D,EAAM5B,EAAO,CACvBmG,KAAMqZ,EACNS,OAAQN,EAAgBF,OAAe7f,EACvCwe,UACA8B,SAAU,SACVC,QAAQ,GAEX,CACH,CAyCgB,SAAAC,GAAgBC,EAAiB,IAC/C,OAAOngB,EAAgB,GAAGmgB,IAASf,OAAwB,EAC7D,CAegB,SAAAgB,GAAYD,EAAiB,IAC3CjgB,EAAmB,GAAGigB,IAASf,MAC/Blf,EAAmB,GAAGigB,IAAShB,MAC/BW,GAAQf,OAAOI,GACjB,CAEO,MCvBDkB,GACHF,GACAnD,GACDhe,SAAUqJ,KACR,MAAM+U,QAAaJ,KAAM3U,GAIzB,OAFA+X,GAAYD,GAEL/C,CAAI,ECkCfpe,eAAeyf,GAAO5M,GACpB,MAAMyO,EAgER,SAA6BxgB,SAC3B,MAAM+R,EAAUtP,KAAKC,MAAM1C,GAM3B,OALA+R,EAAQ0O,UAAUC,UAAYC,GAAgB5O,EAAQ0O,UAAUC,WAChE3O,EAAQ0O,UAAU/gB,KAAKkhB,GAAKD,GAAgB5O,EAAQ0O,UAAU/gB,KAAKkhB,IAC7B,QAAtC5hB,EAAA+S,EAAQ0O,UAAUI,0BAAoB,IAAA7hB,GAAAA,EAAAmP,SAASmN,IAC7CA,EAAKsF,GAAKD,GAAgBrF,EAAKsF,GAAG,IAE7B7O,CACT,CAxEwB+O,CAAoB/O,GACpCgP,QAAwBC,UAAUzU,YAAYoS,OAClD6B,GAEF,OAuEAS,EAvE4BF,EAyErBte,KAAKsH,UAAU,CACpB6W,GAAIK,EAAWL,GACfM,MAAOC,GAAgBF,EAAWC,OAClC7a,KAAM4a,EAAW5a,KACjBsH,SAAU,CACRyT,kBAAmBD,GAAgBF,EAAWtT,SAASyT,mBACvDC,eAAgBF,GAAgBF,EAAWtT,SAAS0T,mBAT1D,IACEJ,CAtEF,CAEA/hB,eAAewI,GAAIqK,GACjB,MAAMuP,EAAaC,GAAiBxP,GAIpC,OAAOyP,SAHoBR,UAAUzU,YAAY7E,IAC/C4Z,GAGJ,CASApiB,eAAeuiB,GACb1P,EACA2P,GAEA,MAAMJ,EAAaC,GAAiBxP,GACpCuP,EAAWK,OAASD,EAAMC,OAC1BL,EAAWM,UAAY,cAIvB,OAAOJ,SAHoBR,UAAUzU,YAAY7E,IAC/C4Z,GAGJ,CAGOpiB,eAAe2iB,GACpBC,GAAwC,GAExC,IAAKvJ,GACH,OAAO1M,QAAQC,SAAQ,GAEzB,MAAMiW,KACJjgB,OAAOkgB,qBACPhB,UAAUzU,aACVyU,UAAUzU,YAAYoS,QACtBqC,UAAUzU,YAAY7E,KAExB,OACEqa,GACAD,GACAE,oBAAoBC,8CAEbD,oBAAoBC,gDAEtBF,CACT,CAsCA,SAASR,GAAiBvhB,SACxB,MAAM+R,EAAUtP,KAAKC,MAAM1C,GAK3B,OAJA+R,EAAQ0O,UAAUC,UAAYC,GAAgB5O,EAAQ0O,UAAUC,WAC5B,QAApC1hB,EAAA+S,EAAQ0O,UAAUyB,wBAAkB,IAAAljB,GAAAA,EAAAmP,SAASmN,IAC3CA,EAAKsF,GAAKD,GAAgBrF,EAAKsF,GAAG,IAE7B7O,CACT,CAEA,SAASyP,GAAkBP,GACzB,OAAOxe,KAAKsH,UAAU,CACpB6W,GAAIK,EAAWL,GACfM,MAAOC,GAAgBF,EAAWC,OAClC7a,KAAM4a,EAAW5a,KACjBsH,SAAU,CACRwU,kBAAmBhB,GAAgBF,EAAWtT,SAASwU,mBACvDd,eAAgBF,GAAgBF,EAAWtT,SAAS0T,gBACpDe,UAAWjB,GAAgBF,EAAWtT,SAASyU,WAC/CC,WAAYpB,EAAWtT,SAAS0U,WAC5BlB,GAAgBF,EAAWtT,SAAS0U,iBACpCziB,IAGV,CAIA,SAAS+gB,GAAgB3gB,GACvB,MAAMsiB,EAAStiB,EAAMkC,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KACtD,OAAOqgB,WAAWtX,KAAKlJ,KAAKugB,IAAUjgB,GAAMA,EAAEO,WAAW,KAAI4f,MAC/D,CAEA,SAASrB,GAAgBnhB,GAEvB,OADeyiB,KAAKxgB,OAAOM,aAAarB,MAAM,KAAM,IAAIqhB,WAAWviB,KACrDkC,QAAQ,MAAO,KAAKA,QAAQ,MAAO,KAAKA,QAAQ,KAAM,GACtE,CAGe,IAlPXwgB,GAkPWC,IAlPXD,GAkBoBE,IAAkB,CACxC1jB,aAAa2jB,EAAoBjhB,GAC/B,MAAMkhB,QAAsBF,EAAIzL,SAASvG,OAAO5H,MAC9C6Z,EACA/gB,OAAOmY,SAAS3D,OAChB1U,GAEF,IAAKkhB,EAAc1jB,GACjB,OAAO0jB,EAET,MAAM/B,QAAuBpC,GAAOmE,EAAcxb,KAAKyK,SAKvD,aAJ6B6Q,EAAIzL,SAASvG,OAAO3H,OAC/C6Z,EAAcxb,KAAKiP,cACnBwK,EAGH,EAED7hB,aAAa2jB,GACX,MAAMC,QAAsBF,EAAIzL,SAAS3G,OAAOxH,MAC9C6Z,EACA/gB,OAAOmY,SAAS3D,QAElB,IAAKwM,EAAc1jB,GACjB,OAAO0jB,EAET,MAAMC,QAAoBrb,GAAIob,EAAcxb,KAAKyK,SAKjD,aAJ6B6Q,EAAIzL,SAAS3G,OAAOvH,OAC/C6Z,EAAcxb,KAAKiP,cACnBwM,EAGH,EAED7jB,iBAAiB2jB,SACf,MAAMC,QAAsBF,EAAIzL,SAASxG,WAAW3H,MAClD6Z,EACA/gB,OAAOmY,SAAS3D,QAElB,IAAKwM,EAAc1jB,GACjB,OAAO0jB,EAET,GAAsB,UAAlBA,EAAcxb,YAAI,IAAAtI,OAAA,EAAAA,EAAE2f,OAAQ,CAC9B,MAAMoC,QAAuBpC,GAAOmE,EAAcxb,KAAKyK,SAKvD,aAJ6B6Q,EAAIzL,SAASvG,OAAO3H,OAC/C6Z,EAAcxb,KAAKiP,cACnBwK,EAGH,CAAM,CACL,MAAMgC,QAAoBrb,GAAIob,EAAcxb,KAAKyK,SAKjD,aAJ6B6Q,EAAIzL,SAAS3G,OAAOvH,OAC/C6Z,EAAcxb,KAAKiP,cACnBwM,EAGH,CACF,EAED7jB,aAAa2jB,EAAoBxW,GAC/B,MAAMyW,QAAsBF,EAAIzL,SAASzF,OAAO1I,MAC9C6Z,EACA/gB,OAAOmY,SAAS3D,OAChBjK,GAEF,IAAKyW,EAAc1jB,GACjB,OAAO0jB,EAET,MAAM/B,QAAuBpC,GAAOmE,EAAcxb,KAAKyK,SAKvD,aAJ6B6Q,EAAIzL,SAASzF,OAAOzI,OAC/C6Z,EAAcxb,KAAKiP,cACnBwK,EAGH,EAGDiC,QAAS,CAEPrE,UAEAjX,OAGAma,eACAJ,kBArGF,IAAIlZ,KACF,MAAM0a,EAAMP,MAAWna,GAOvB,OALAhI,OAAOC,OAAOyiB,EAAIrS,OAAQrI,EAAK,GAAG4O,SAASvG,QAC3CrQ,OAAOC,OAAOyiB,EAAIzS,OAAQjI,EAAK,GAAG4O,SAAS3G,QAC3CjQ,OAAOC,OAAOyiB,EAAItS,WAAYpI,EAAK,GAAG4O,SAASxG,YAC/CpQ,OAAOC,OAAOyiB,EAAIvR,OAAQnJ,EAAK,GAAG4O,SAASzF,QAEpCuR,CAIN,GCmDL,MAAMC,GAAeN,IAAkB,CACrC1jB,aACEwU,EACAyP,EACA7T,EACA8T,GAEA,MAAMC,EAAgB3P,QAAAA,EAAY,SAC5BoP,QAAsBF,EAAI5L,MAAMpD,YACpCyP,EACA/T,GAEF,IAAKwT,EAAc1jB,GACjB,OAAO0jB,EAGT,MAAMQ,SAAEA,EAAQxP,QAAEA,EAAOyP,MAAEA,GAAUT,EAAcxb,KAC7Ckc,QAkCVtkB,iBAIE,OAAO,IAAI2M,SAAQ,CAACC,EAASqN,KAC3B,GAAKrX,OAAemR,OAElB,YADAnH,EAAShK,OAAemR,OAAOwQ,SAAS7C,IAK1C,IAAI8C,EAAe1J,SAAS2J,eAC1B,4BAIGD,IACHA,EAAe1J,SAASO,cAAc,UACtCP,SAASU,KAAKK,YAAY2I,GAC1BA,EAAaxkB,OAAQ,EACrBwkB,EAAaE,OAAQ,EACrBF,EAAa9C,GAAK,2BAClB8C,EAAa5I,IAAM,0CAIrB4I,EAAa9I,OAAS,WACf9Y,OAAemR,OAClBnH,EAAShK,OAAemR,OAAOwQ,SAAS7C,IAExCzH,EAAO,gEAEX,EAEAuK,EAAa7I,QAAU,WACrB1B,EAAO,2DACT,CAAC,GAEL,CAxE+B0K,GAC3B,OAAO,IAAIhY,SAASC,YAclB0X,EAAaM,WACRvjB,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EAAA2iB,IACHY,YAA0C,QAA7B/kB,EAAAmkB,aAAY,EAAZA,EAAcY,mBAAe,IAAA/kB,GAAAA,EAC1CglB,qBAAwD,QAAlCC,EAAAd,eAAAA,EAAca,4BAAoB,IAAAC,GAAAA,EACxDC,UAAWZ,EACXa,SAlBgBhlB,IAChB2M,EACE8W,EAAI5L,MAAMnD,aACRwP,EACAvP,EACA,GACA,GACA3U,EAAI8hB,YAEP,EAUDsC,WAGFC,EAAaY,QAAQC,KACfA,aAAY,EAAZA,EAAcC,qBAChBlB,SAAAA,IACD,GACD,GAEL,ICjGH,IAAAmB,GAAgBC,GACXjkB,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EAAAgkB,EAAQpN,MAAI,CAEfpO,MAAO9J,SAAUqJ,KACf,MAAMkc,QAAwB5C,KACxB6C,EACJnkB,OAAAC,OAAAD,OAAAC,OAAA,CAAAyZ,SAAUnY,OAAOmY,SAASC,MACvB3R,EAAK,IAAE,CACVoc,WAAY,CACVF,mBAEFG,oBAbkD,IAkBpD,OAFArc,EAAK,GAAKmc,EAEHF,EAAQpN,KAAKpO,SAAST,EAAK,IClCtC,MCIMsc,GCsFU,YAAWtc,GACzB,OAAQjB,GAAciB,EAAK3J,QAAO,CAACC,EAAKimB,IAASA,EAAKjmB,IAAMyI,EAC9D,CDxF2Byd,EbYAC,GACxBhmB,QAAAyc,MAAEA,EAAKwJ,OAAEA,GAAMjmB,EAAKN,EAAM0C,EAAApC,EAA1B,oBACC,OAAKuZ,IASDkD,GAASwJ,GACXzJ,GAAqBC,GAAOrC,OAE1B,IAAM,OAKH4L,EAAUvmB,EAASC,EAAQ,CAAAyN,cAAEA,QAflCkM,QAAQtM,KACN,6FAEKiZ,EAAUtmB,GAYkC,IenB9BsmB,GACxBhmB,IAAA,IAAAkmB,YAAEA,GAA+DlmB,EAA/CN,EAAM0C,EAAApC,EAAxB,iBACC,IAAKkmB,EAAa,OAAOF,EAAUtmB,GAInC,MAAMymB,eAAEA,EAAcC,SAAEA,GrBNQ,MAClC,MAAMC,EAA6B,GAYnC,MAAO,CAAEF,eAVc,KACrB,KAAOE,EAASvkB,QACdwQ,aAAa+T,EAAS1d,MACvB,EAOsByd,SAJR,CAAC1H,EAAgB4H,KAChCD,EAASzd,KAAK2J,WAAWmM,EAAI4H,GAAS,EAGL,EqBPIC,GAIrC,IAAIC,EACAC,EACJzL,SAASK,iBAAiB,oBAAoB,KAGb,YAA7BL,SAAS0L,iBACT,IAAIvY,KAASqY,IAEb/Z,GAAa,8CACbmX,EAAIvL,QAAQoO,GACb,IAGH,MAmCM7C,EAAMoC,EAAUvmB,EAASC,EAAQ,CAAEkO,aAnCF1N,MAAOymB,EAAMxmB,KAClD,MAAMymB,WAAEA,EAAUC,WAAEA,SAAqB5mB,EAAwBE,GAGjE,GAAoB,OAAhBA,aAAG,EAAHA,EAAKoL,QACPkB,GAAa,sCACb0Z,SACK,GAAIU,EAAY,CACrBL,ErB/C0B,CAACnZ,IACjC,MAAMyS,EAAQzS,EAAMtJ,MAAM,KAC1B,IACE,GAAqB,IAAjB+b,EAAMhe,OAAc,CACtB,MAAMglB,EAASrjB,KAAKC,MAAMZ,OAAOC,KAAK+c,EAAM,KAC5C,GAAIgH,EAAO5Y,IACT,OAAO,IAAIC,KAAkB,IAAb2Y,EAAO5Y,IAE1B,CACF,CAAC,MAAO7L,GAAK,CACd,OAAO,IAAI,EqBqCe0kB,CAAmBF,GACvCJ,EAAeG,EACf,IAAIN,IrBpC0BU,EqBqCNR,GrBpCvBQ,EAAK5Y,WAAY,IAAID,MAAOC,UAAY,GqBLvB,IA2CdkY,EAAU9M,KACZ/M,GACE,yBAAyB6Z,uBAA6B9M,QAExD8M,EAAU9M,IAEZ2M,IAEA,MAAMc,EAAiB,IAAI9Y,KACzBA,KAAKwO,MAAQ2J,GACbY,mBAAmB,QAAS,CAAEC,QAAQ,IACxC1a,GACE,6BAA6Bwa,OAAoBX,QAGnDF,GAAS,KACP3Z,GAAa,mCACbmX,EAAIvL,QAAQuO,EAAW,GACtBN,EACJ,CrB1D8B,IAACU,CqB0D/B,KAeH,OAAOI,GAASxD,EAAK,CAAC,SAAU,cAT7B1F,GACDhe,SAAUqJ,KACR,MAAM+U,QAAaJ,KAAM3U,GAIzB,OAHAkD,GAAa,uBACb0Z,IAEO7H,CAAI,GAGuC,ICjF/B0H,GACxBtmB,GACCsmB,EAASzkB,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EACJ9B,GAAM,CACT4N,YAAW/L,OAAAC,OAAA,CACT,qBAAsB,SACtB,wBAAyB,UACtB9B,EAAO4N,kBCDS0Y,GACxBtmB,IACC,MAAM2nB,EAAY9I,KACZ+I,EAAS/I,KAeTqF,EAAMoC,EAAUvmB,EAASC,EAAQ,CAAEkO,aAbF1N,MAAOymB,EAAMxmB,KAClD,GAAoB,OAAhBA,aAAG,EAAHA,EAAKoL,QACP8b,EAAU5I,IAAI,MACd6I,EAAO7I,IAAI,UACN,CACL,MAAM8I,QAAoB9mB,EAAoBN,GAC1ConB,GAAaD,EAAO7I,IAAI8I,GAE5B,MAAMV,WAAEA,SAAqB5mB,EAAwBE,GACjD0mB,GAAYQ,EAAU5I,IAAIoI,EAC/B,MAgBGW,EAAaJ,GAASxD,EAAK,CAAC,SAAU,cAVzC1F,GACDhe,SAAUqJ,KACR,MAAM+U,QAAaJ,KAAM3U,GAKzB,OAHA8d,EAAU5I,IAAI,MACd6I,EAAO7I,IAAI,MAEJH,CAAI,IAKf,OAAO/c,OAAOC,OAAOgmB,EAAY,CAC/BC,qBAAsBJ,EAAU1I,IAChC+I,aAAcJ,EAAO3I,KACrB,IdlCqBqH,GAEvBtmB,IAKA,MAUMkkB,EAAMoC,EAAUvmB,EAASC,EAAQ,CAAEkO,aAVF1N,MAAOymB,EAAMxmB,WAClD,MAAMonB,QAAoB9mB,EAAoBN,GACxCsR,EAAkC,QAAxBzR,EAAAunB,aAAA,EAAAA,EAAaI,gBAAW,IAAA3nB,OAAA,EAAAA,EAAA,GAClCme,EAAcoJ,aAAA,EAAAA,EAAa3kB,KAC7B6O,IDnBwB,CAACA,IAC1B1Q,EAAgB8c,GAAkCpM,EAAQ,ECmB3DmW,CAAmBnW,GDRW,CAAC0M,IAC9Bpd,EAAgB+c,GAAsCK,EAAY,ECQnE0J,CAAuB1J,GACxB,KAKH,IAAIqJ,EAAaJ,GAASxD,EAAK,CAAC,cAAe3F,IAE/C,OADAuJ,EAAaJ,GAASI,EAAY,CAAC,SAAU,aAAcnJ,IACpD9c,OAAOC,OAAOgmB,EAAY,CAC/BzJ,sBACAC,2BACO,IKvBcgI,GACLhmB,IAAA,IAClB8nB,cAAeC,EAAeC,sBAC9BA,EAAqBC,cACrBA,GAAajoB,EACVN,EAJe0C,EAAApC,EAAA,CAAA,gBAAA,wBAAA,kBAWlB,IAAK+nB,IAAoBxO,GAOvB,OANIwO,GAEF1O,QAAQtM,KACN,wIAGGiZ,EAAUtmB,GAGnB,MAYMkkB,EAAMoC,EACVvmB,EAASC,EAAQ,CACfyN,eD4CLkU,EC5CkC4G,ED6ClCvoB,GACC6B,OAAOC,OAAO9B,EAAQ,CAAE2N,MAAO3N,EAAO2N,OAAS+T,GAAgBC,MC7C3DzT,aAfmC1N,MAAOymB,EAAMxmB,KAC9B,OAAhBA,aAAG,EAAHA,EAAKoL,QACP+V,GAAY2G,GDcS,EAC3BjoB,EAA8C,GAC9CgoB,EACAC,SAFArB,WAAEA,EAAUC,WAAEA,GAAU7mB,EAAKkoB,EAAY9lB,EAAApC,EAAzC,kCACA,IAAAgoB,IAAAA,GAA6B,QAC7B,IAAAC,IAAAA,EAAkB,IAGlBrB,GACE7lB,EAAgB,GAAGknB,IAAgB3H,KAAqBsG,GAGtDC,IACFmB,EACIzH,GAAkBF,GAAmBwG,EAAYqB,GACjDnnB,EAAgB,GAAGknB,IAAgB5H,KAAqBwG,GAC7D,EC1BKiB,OACQ7nB,EAAwBE,GAC9B6nB,EACAC,EAEH,KDiDL,IAAC5G,ECvCC,MAAMmG,EAAaJ,GACjBxD,EACA,CAAC,SAAU,aACXrC,GAAQ0G,IAMV,OAAO1mB,OAAOC,OAAOgmB,EAAY,CAC/BpG,gBAJmB,IAAMA,GAAgB6G,GAKzCE,gBAJmB,IDgBT,SAAgB9G,EAAiB,IAC/C,OACEL,GAAQtY,IAAI2X,KACZnf,EAAgB,GAAGmgB,IAAShB,OAC5B,EAEJ,CCtB+B8H,CAAgBF,IAKlC,GK/DclC,EDJT,IAAIxc,KACpB,MAAMic,EAAU4C,MAAiB7e,GAEjC,OACKhI,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EAAAgkB,IACHpN,KAAMmN,GAASC,GACfrN,SAAUkQ,GAAe7C,GACzB8C,MAAOpE,GAAYsB,IACnB,WMTJ5B,GAAuB,kBAAItD,GAC3BsD,GAAuB,kBAAIvD","x_google_ignoreList":[1,2,3,9,16]}
1
+ {"version":3,"file":"index.umd.js","sources":["../src/enhancers/helpers/index.ts","../../../node_modules/.pnpm/@rollup+plugin-typescript@11.1.0_qg2iy7bpgipnhmjgd6ykszyjf4/node_modules/tslib/tslib.es6.js","../../../node_modules/.pnpm/jwt-decode@3.1.2/node_modules/jwt-decode/build/jwt-decode.esm.js","../../../node_modules/.pnpm/lodash.get@4.4.2/node_modules/lodash.get/index.js","../../core-js-sdk/dist/index.esm.js","../src/enhancers/withAutoRefresh/helpers.ts","../src/enhancers/helpers/logger.ts","../src/constants.ts","../src/enhancers/withFingerprint/constants.ts","../../../node_modules/.pnpm/@fingerprintjs+fingerprintjs-pro@3.8.5/node_modules/@fingerprintjs/fingerprintjs-pro/dist/fp.esm.min.js","../src/enhancers/withFingerprint/helpers.ts","../src/enhancers/withFingerprint/index.ts","../src/enhancers/withLastLoggedInUser/constants.ts","../src/enhancers/withLastLoggedInUser/helpers.ts","../src/enhancers/withLastLoggedInUser/index.ts","../src/enhancers/withNotifications/helpers.ts","../../../node_modules/.pnpm/js-cookie@3.0.5/node_modules/js-cookie/dist/js.cookie.mjs","../src/enhancers/withPersistTokens/constants.ts","../src/enhancers/withPersistTokens/helpers.ts","../src/enhancers/withPersistTokens/index.ts","../src/sdk/webauthn.ts","../src/sdk/fedcm.ts","../src/sdk/flow.ts","../src/sdk/index.ts","../src/index.ts","../src/enhancers/helpers/compose.ts","../src/enhancers/withAutoRefresh/index.ts","../src/enhancers/withAnalytics.ts","../src/enhancers/withNotifications/index.ts","../src/index.umd.ts"],"sourcesContent":["import { JWTResponse, UserResponse } from '@descope/core-js-sdk';\nimport { CoreSdkConfig } from '../../types';\n\n/**\n * Add hooks to an existing core-sdk config\n */\nexport const addHooks = <Config extends CoreSdkConfig>(\n config: Config,\n hooks: Config['hooks']\n): Config => {\n ['beforeRequest', 'afterRequest'].reduce((acc, key) => {\n acc[key] = [].concat(config.hooks?.[key] || []).concat(hooks?.[key] || []);\n\n return acc;\n }, (config.hooks ??= {}));\n\n return config;\n};\n\nexport { compose } from './compose';\n\n/**\n * Extract auth info (JWT response) from fetch response\n * We assume that the auth info is under a \"authInfo\" attribute (flow response)\n * Or the body itself (other auth methods response)\n */\nexport const getAuthInfoFromResponse = async (\n res: Response\n): Promise<Partial<JWTResponse>> => {\n if (!res?.ok) return {};\n const body = await res?.clone().json();\n return body?.authInfo || body || {};\n};\n\n/**\n * Extract user from fetch response\n * User my exist under \"user\" attribute (auth methods response)\n * Or the body itself (when calling \"me\")\n */\nexport const getUserFromResponse = async (\n res: Response\n): Promise<UserResponse> | undefined => {\n const authInfo = await getAuthInfoFromResponse(res);\n\n return (\n authInfo?.user ||\n (authInfo?.hasOwnProperty('userId')\n ? (authInfo as UserResponse)\n : undefined)\n );\n};\n\nexport const isLocalStorage = typeof localStorage !== 'undefined';\n\nexport const setLocalStorage = (key: string, value: string) =>\n isLocalStorage && localStorage?.setItem(key, value);\nexport const getLocalStorage = (key: string) =>\n isLocalStorage && localStorage?.getItem(key);\nexport const removeLocalStorage = (key: string) =>\n isLocalStorage && localStorage?.removeItem(key);\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","function e(e){this.message=e}e.prototype=new Error,e.prototype.name=\"InvalidCharacterError\";var r=\"undefined\"!=typeof window&&window.atob&&window.atob.bind(window)||function(r){var t=String(r).replace(/=+$/,\"\");if(t.length%4==1)throw new e(\"'atob' failed: The string to be decoded is not correctly encoded.\");for(var n,o,a=0,i=0,c=\"\";o=t.charAt(i++);~o&&(n=a%4?64*n+o:o,a++%4)?c+=String.fromCharCode(255&n>>(-2*a&6)):0)o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(o);return c};function t(e){var t=e.replace(/-/g,\"+\").replace(/_/g,\"/\");switch(t.length%4){case 0:break;case 2:t+=\"==\";break;case 3:t+=\"=\";break;default:throw\"Illegal base64url string!\"}try{return function(e){return decodeURIComponent(r(e).replace(/(.)/g,(function(e,r){var t=r.charCodeAt(0).toString(16).toUpperCase();return t.length<2&&(t=\"0\"+t),\"%\"+t})))}(t)}catch(e){return r(t)}}function n(e){this.message=e}function o(e,r){if(\"string\"!=typeof e)throw new n(\"Invalid token specified\");var o=!0===(r=r||{}).header?0:1;try{return JSON.parse(t(e.split(\".\")[o]))}catch(e){throw new n(\"Invalid token specified: \"+e.message)}}n.prototype=new Error,n.prototype.name=\"InvalidTokenError\";export default o;export{n as InvalidTokenError};\n//# sourceMappingURL=jwt-decode.esm.js.map\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n symbolTag = '[object Symbol]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n splice = arrayProto.splice;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n string = toString(string);\n\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","import e from\"jwt-decode\";import t from\"lodash.get\";var n={exchange:\"/v1/auth/accesskey/exchange\"},s={verify:\"/v1/auth/otp/verify\",signIn:\"/v1/auth/otp/signin\",signUp:\"/v1/auth/otp/signup\",update:{email:\"/v1/auth/otp/update/email\",phone:\"/v1/auth/otp/update/phone\"},signUpOrIn:\"/v1/auth/otp/signup-in\"},o={verify:\"/v1/auth/magiclink/verify\",signIn:\"/v1/auth/magiclink/signin\",signUp:\"/v1/auth/magiclink/signup\",update:{email:\"/v1/auth/magiclink/update/email\",phone:\"/v1/auth/magiclink/update/phone\"},signUpOrIn:\"/v1/auth/magiclink/signup-in\"},i={verify:\"/v1/auth/enchantedlink/verify\",signIn:\"/v1/auth/enchantedlink/signin\",signUp:\"/v1/auth/enchantedlink/signup\",session:\"/v1/auth/enchantedlink/pending-session\",update:{email:\"/v1/auth/enchantedlink/update/email\"},signUpOrIn:\"/v1/auth/enchantedlink/signup-in\"},a={start:\"/v1/auth/oauth/authorize\",exchange:\"/v1/auth/oauth/exchange\",startNative:\"v1/auth/oauth/native/start\",finishNative:\"v1/auth/oauth/native/finish\"},r={start:\"/v1/auth/saml/authorize\",exchange:\"/v1/auth/saml/exchange\"},d={verify:\"/v1/auth/totp/verify\",signUp:\"/v1/auth/totp/signup\",update:\"/v1/auth/totp/update\"},u={signUp:{start:\"/v1/auth/webauthn/signup/start\",finish:\"/v1/auth/webauthn/signup/finish\"},signIn:{start:\"/v1/auth/webauthn/signin/start\",finish:\"/v1/auth/webauthn/signin/finish\"},signUpOrIn:{start:\"/v1/auth/webauthn/signup-in/start\"},update:{start:\"v1/auth/webauthn/update/start\",finish:\"/v1/auth/webauthn/update/finish\"}},l={signUp:\"/v1/auth/password/signup\",signIn:\"/v1/auth/password/signin\",sendReset:\"/v1/auth/password/reset\",update:\"/v1/auth/password/update\",replace:\"/v1/auth/password/replace\",policy:\"/v1/auth/password/policy\"},p=\"/v1/auth/refresh\",c=\"/v1/auth/tenant/select\",g=\"/v1/auth/logout\",h=\"/v1/auth/logoutall\",v=\"/v1/auth/me\",f=\"/v1/auth/me/history\",m={start:\"/v1/flow/start\",next:\"/v1/flow/next\"};const I=\"<region>\",b=`https://api.${I}descope.com`,k=1e3,y=6e5,O=()=>{const e={};return{headers(t){const n=\"function\"==typeof t.entries?Object.fromEntries(t.entries()):t;return e.Headers=JSON.stringify(n),this},body(t){return e.Body=t,this},url(t){return e.Url=t.toString(),this},method(t){return e.Method=t,this},title(t){return e.Title=t,this},status(t){return e.Status=t,this},build:()=>Object.keys(e).flatMap((t=>e[t]?[`${\"Title\"!==t?`${t}: `:\"\"}${e[t]}`]:[])).join(\"\\n\")}},w=(e,t)=>{const n=(e=>async(...t)=>{const n=await e(...t),s=await n.text();return n.text=()=>Promise.resolve(s),n.json=()=>Promise.resolve(JSON.parse(s)),n.clone=()=>n,n})(t||fetch);return n||null==e||e.warn(\"Fetch is not defined, you will not be able to send http requests, if you are running in a test, make sure fetch is defined globally\"),e?async(...t)=>{if(!n)throw Error(\"Cannot send http request, fetch is not defined, if you are running in a test, make sure fetch is defined globally\");e.log((e=>O().title(\"Request\").url(e[0]).method(e[1].method).headers(e[1].headers).body(e[1].body).build())(t));const s=await n(...t);return e[s.ok?\"log\":\"error\"](await(async e=>{const t=await e.text();return O().title(\"Response\").url(e.url.toString()).status(`${e.status} ${e.statusText}`).headers(e.headers).body(t).build()})(s)),s}:n};var j;!function(e){e.get=\"GET\",e.delete=\"DELETE\",e.post=\"POST\",e.put=\"PUT\"}(j||(j={}));const U=(...e)=>new Headers(e.reduce(((e,t)=>{const n=(e=>Array.isArray(e)?e:e instanceof Headers?Array.from(e.entries()):e?Object.entries(e):[])(t);return n.reduce(((t,[n,s])=>(e[n]=s,e)),e),e}),{})),R=e=>void 0===e?void 0:JSON.stringify(e),P=(e,t=\"\")=>{let n=e;return t&&(n=n+\":\"+t),{Authorization:`Bearer ${n}`}},x=({baseUrl:e,projectId:t,baseConfig:n,logger:s,hooks:o,cookiePolicy:i,fetch:a})=>{const r=w(s,a),d=async s=>{const a=(null==o?void 0:o.beforeRequest)?o.beforeRequest(s):s,{path:d,body:u,headers:l,queryParams:p,method:c,token:g}=a,h={headers:U(P(t,g),{\"x-descope-sdk-name\":\"core-js\",\"x-descope-sdk-version\":\"2.11.3\"},(null==n?void 0:n.baseHeaders)||{},l),method:c,body:R(u)};null!==i&&(h.credentials=i||\"include\");const v=await r((({path:e,baseUrl:t,queryParams:n,projectId:s})=>{const o=s.slice(1,-27);t=t.replace(I,o?o+\".\":\"\");const i=new URL(e,t);return n&&(i.search=new URLSearchParams(n).toString()),i})({path:d,baseUrl:e,queryParams:p,projectId:t}),h);return(null==o?void 0:o.afterRequest)&&await o.afterRequest(s,null==v?void 0:v.clone()),v};return{get:(e,{headers:t,queryParams:n,token:s}={})=>d({path:e,headers:t,queryParams:n,body:void 0,method:j.get,token:s}),post:(e,t,{headers:n,queryParams:s,token:o}={})=>d({path:e,headers:n,queryParams:s,body:t,method:j.post,token:o}),put:(e,t,{headers:n,queryParams:s,token:o}={})=>d({path:e,headers:n,queryParams:s,body:t,method:j.put,token:o}),delete:(e,{headers:t,queryParams:n,token:s}={})=>d({path:e,headers:t,queryParams:n,body:void 0,method:j.delete,token:s}),hooks:o}};var q={TOO_MANY_REQUESTS:429};function $(e,t,n){var s;let o=E(e);t&&(o=null===(s=null==o?void 0:o.tenants)||void 0===s?void 0:s[t]);const i=null==o?void 0:o[n];return Array.isArray(i)?i:[]}function E(t){if(\"string\"!=typeof t||!t)throw new Error(\"Invalid token provided\");return e(t)}function T(e){const{exp:t}=E(e);return(new Date).getTime()/1e3>t}function S(e){let t=E(e);const n=Object.keys(null==t?void 0:t.tenants);return Array.isArray(n)?n:[]}function A(e,t){return $(e,t,\"permissions\")}function M(e,t){return $(e,t,\"roles\")}const N=(...e)=>e.join(\"/\").replace(/\\/{2,}/g,\"/\");async function L(e,t){var n;const s=await e,o={code:s.status,ok:s.ok,response:s},i=await s.clone().json();return s.ok?o.data=t?t(i):i:(o.error=i,s.status===q.TOO_MANY_REQUESTS&&Object.assign(o.error,{retryAfter:Number.parseInt(null===(n=s.headers)||void 0===n?void 0:n.get(\"retry-after\"))||0})),o}const z=(e,t)=>(n=t)=>t=>!e(t)&&n.replace(\"{val}\",t),H=(...e)=>({validate:t=>(e.forEach((e=>{const n=e(t);if(n)throw new Error(n)})),!0)}),J=e=>t=>e.test(t),C=J(/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/),_=J(/^\\+[1-9]{1}[0-9]{3,14}$/),D=z(C,'\"{val}\" is not a valid email'),Z=z(_,'\"{val}\" is not a valid phone number'),B=z((F=1,e=>e.length>=F),\"Minimum length is 1\");var F;const K=z((e=>\"string\"==typeof e),\"Input is not a string\"),Q=z((e=>void 0===e),\"Input is defined\"),V=(Y=[K(),Q()],G=\"Input is not a string or undefined\",(e=G)=>t=>{const n=Y.filter((e=>e(t)));return!(n.length<Y.length)&&(e?e.replace(\"{val}\",t):n.join(\" OR \"))});var Y,G;const W=(...e)=>t=>(...n)=>(e.forEach(((e,t)=>H(...e).validate(n[t]))),t(...n)),X=e=>[K(`\"${e}\" must be a string`),B(`\"${e}\" must not be empty`)],ee=e=>[K(`\"${e}\" must be a string`),D()],te=e=>[K(`\"${e}\" must be a string`),Z()],ne=W(X(\"accessKey\")),se=e=>({exchange:ne(((t,s)=>L(e.post(n.exchange,{loginOptions:s},{token:t}))))});var oe,ie;!function(e){e.sms=\"sms\",e.whatsapp=\"whatsapp\"}(oe||(oe={})),function(e){e.email=\"email\"}(ie||(ie={}));const ae=Object.assign(Object.assign({},oe),ie);var re;!function(e){e.waiting=\"waiting\",e.running=\"running\",e.completed=\"completed\",e.failed=\"failed\"}(re||(re={}));const de=X(\"loginId\"),ue=W(X(\"token\")),le=W(de),pe=W(X(\"pendingRef\")),ce=W(de,ee(\"email\")),ge=e=>({verify:ue((t=>L(e.post(i.verify,{token:t})))),signIn:le(((t,n,s,o)=>L(e.post(N(i.signIn,ae.email),{loginId:t,URI:n,loginOptions:s},{token:o})))),signUpOrIn:le(((t,n,s)=>L(e.post(N(i.signUpOrIn,ae.email),{loginId:t,URI:n,loginOptions:s})))),signUp:le(((t,n,s,o)=>L(e.post(N(i.signUp,ae.email),{loginId:t,URI:n,user:s,loginOptions:o})))),waitForSession:pe(((t,n)=>new Promise((s=>{const{pollingIntervalMs:o,timeoutMs:a}=(({pollingIntervalMs:e=1e3,timeoutMs:t=6e5}={})=>({pollingIntervalMs:Math.max(e||k,k),timeoutMs:Math.min(t||y,y)}))(n);let r;const d=setInterval((async()=>{const n=await e.post(i.session,{pendingRef:t});n.ok&&(clearInterval(d),r&&clearTimeout(r),s(L(Promise.resolve(n))))}),o);r=setTimeout((()=>{s({error:{errorDescription:`Session polling timeout exceeded: ${a}ms`,errorCode:\"0\"},ok:!1}),clearInterval(d)}),a)})))),update:{email:ce(((t,n,s,o,a)=>L(e.post(i.update.email,Object.assign({loginId:t,email:n,URI:s},a),{token:o}))))}}),he=W(X(\"flowId\")),ve=W(X(\"executionId\"),X(\"stepId\"),X(\"interactionId\")),fe=e=>({start:he(((t,n,s,o,i,a,r)=>L(e.post(m.start,{flowId:t,options:n,conditionInteractionId:s,interactionId:o,version:i,componentsVersion:a,input:r})))),next:ve(((t,n,s,o,i,a)=>L(e.post(m.next,{executionId:t,stepId:n,interactionId:s,version:o,componentsVersion:i,input:a}))))}),me=X(\"loginId\"),Ie=W(X(\"token\")),be=W(me),ke=W(me,te(\"phone\")),ye=W(me,ee(\"email\")),Oe=e=>({verify:Ie((t=>L(e.post(o.verify,{token:t})))),signIn:Object.keys(ae).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:be(((t,s,i,a)=>L(e.post(N(o.signIn,n),{loginId:t,URI:s,loginOptions:i},{token:a}))))})),{}),signUp:Object.keys(ae).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:be(((t,s,i,a)=>L(e.post(N(o.signUp,n),{loginId:t,URI:s,user:i,loginOptions:a}))))})),{}),signUpOrIn:Object.keys(ae).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:be(((t,s,i)=>L(e.post(N(o.signUpOrIn,n),{loginId:t,URI:s,loginOptions:i}))))})),{}),update:{email:ye(((t,n,s,i,a)=>L(e.post(o.update.email,Object.assign({loginId:t,email:n,URI:s},a),{token:i})))),phone:Object.keys(oe).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:ke(((t,s,i,a,r)=>L(e.post(N(o.update.phone,n),Object.assign({loginId:t,phone:s,URI:i},r),{token:a}))))})),{})}});var we;!function(e){e.facebook=\"facebook\",e.github=\"github\",e.google=\"google\",e.microsoft=\"microsoft\",e.gitlab=\"gitlab\",e.apple=\"apple\",e.discord=\"discord\",e.linkedin=\"linkedin\",e.slack=\"slack\"}(we||(we={}));const je=W(X(\"code\")),Ue=e=>({start:Object.assign(((t,n,s,o)=>L(e.post(a.start,s||{},{queryParams:Object.assign({provider:t},n&&{redirectURL:n}),token:o}))),Object.keys(we).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:(t,s,o)=>L(e.post(a.start,s||{},{queryParams:Object.assign({provider:n},t&&{redirectURL:t}),token:o}))})),{})),exchange:je((t=>L(e.post(a.exchange,{code:t})))),startNative:(t,n)=>L(e.post(a.startNative,{provider:t,loginOptions:n})),finishNative:(t,n,s,o,i)=>L(e.post(a.finishNative,{provider:t,stateId:n,user:s,code:o,idToken:i}))}),Re=X(\"loginId\"),Pe=W(Re,X(\"code\")),xe=W(Re),qe=W(Re,te(\"phone\")),$e=W(Re,ee(\"email\")),Ee=e=>({verify:Object.keys(ae).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:Pe(((t,o)=>L(e.post(N(s.verify,n),{code:o,loginId:t}))))})),{}),signIn:Object.keys(ae).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:xe(((t,o,i)=>L(e.post(N(s.signIn,n),{loginId:t,loginOptions:o},{token:i}))))})),{}),signUp:Object.keys(ae).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:xe(((t,o,i)=>L(e.post(N(s.signUp,n),{loginId:t,user:o,loginOptions:i}))))})),{}),signUpOrIn:Object.keys(ae).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:xe(((t,o)=>L(e.post(N(s.signUpOrIn,n),{loginId:t,loginOptions:o}))))})),{}),update:{email:$e(((t,n,o,i)=>L(e.post(s.update.email,Object.assign({loginId:t,email:n},i),{token:o})))),phone:Object.keys(oe).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:qe(((t,o,i,a)=>L(e.post(N(s.update.phone,n),Object.assign({loginId:t,phone:o},a),{token:i}))))})),{})}}),Te=W(X(\"tenant\")),Se=W(X(\"code\")),Ae=e=>({start:Te(((t,n,s,o)=>L(e.post(r.start,s||{},{queryParams:{tenant:t,redirectURL:n},token:o})))),exchange:Se((t=>L(e.post(r.exchange,{code:t}))))}),Me=X(\"loginId\"),Ne=W(Me,X(\"code\")),Le=W(Me),ze=W(Me),He=e=>({signUp:Le(((t,n)=>L(e.post(d.signUp,{loginId:t,user:n})))),verify:Ne(((t,n,s,o)=>L(e.post(d.verify,{loginId:t,code:n,loginOptions:s},{token:o})))),update:ze(((t,n)=>L(e.post(d.update,{loginId:t},{token:n}))))}),Je=X(\"loginId\"),Ce=X(\"newPassword\"),_e=W(Je,X(\"password\")),De=W(Je),Ze=W(Je,Ce),Be=W(Je,X(\"oldPassword\"),Ce),Fe=e=>({signUp:_e(((t,n,s)=>L(e.post(l.signUp,{loginId:t,password:n,user:s})))),signIn:_e(((t,n)=>L(e.post(l.signIn,{loginId:t,password:n})))),sendReset:De(((t,n,s)=>L(e.post(l.sendReset,{loginId:t,redirectUrl:n,templateOptions:s})))),update:Ze(((t,n,s)=>L(e.post(l.update,{loginId:t,newPassword:n},{token:s})))),replace:Be(((t,n,s)=>L(e.post(l.replace,{loginId:t,oldPassword:n,newPassword:s})))),policy:()=>L(e.get(l.policy))}),Ke=[K(`\"${\"loginId\"}\" must be a string`)];const Qe=X(\"loginId\"),Ve=X(\"origin\"),Ye=W(Qe,Ve,X(\"name\")),Ge=W(Qe,Ve),We=W(Ke,Ve),Xe=W(Qe,Ve,X(\"token\")),et=W(X(\"transactionId\"),X(\"response\")),tt=e=>({signUp:{start:Ye(((t,n,s)=>L(e.post(u.signUp.start,{user:{loginId:t,name:s},origin:n})))),finish:et(((t,n)=>L(e.post(u.signUp.finish,{transactionId:t,response:n}))))},signIn:{start:We(((t,n,s,o)=>L(e.post(u.signIn.start,{loginId:t,origin:n,loginOptions:s},{token:o})))),finish:et(((t,n)=>L(e.post(u.signIn.finish,{transactionId:t,response:n}))))},signUpOrIn:{start:Ge(((t,n)=>L(e.post(u.signUpOrIn.start,{loginId:t,origin:n}))))},update:{start:Xe(((t,n,s)=>L(e.post(u.update.start,{loginId:t,origin:n},{token:s})))),finish:et(((t,n)=>L(e.post(u.update.finish,{transactionId:t,response:n}))))}}),nt=W(X(\"token\")),st=W((e=>[V(`\"${e}\" must be string or undefined`)])(\"token\"));var ot,it;var at=W([(ot=\"projectId\",it=X(\"projectId\"),z(((e,n)=>s=>H(...n).validate(t(s,e)))(ot,it))())])((e=>t=>e(Object.assign(Object.assign({},t),{hooks:{beforeRequest:e=>{var n;const s=[].concat((null===(n=t.hooks)||void 0===n?void 0:n.beforeRequest)||[]);return null==s?void 0:s.reduce(((e,t)=>t(e)),e)},afterRequest:async(e,n)=>{var s;const o=[].concat((null===(s=t.hooks)||void 0===s?void 0:s.afterRequest)||[]);(await Promise.allSettled(null==o?void 0:o.map((t=>t(e,null==n?void 0:n.clone()))))).forEach((e=>{var n;return\"rejected\"===e.status&&(null===(n=t.logger)||void 0===n?void 0:n.error(e.reason))}))}}})))((({projectId:e,logger:t,baseUrl:n,hooks:s,cookiePolicy:o,baseHeaders:i={},fetch:a})=>{return r=x({baseUrl:n||b,projectId:e,logger:t,hooks:s,cookiePolicy:o,baseConfig:{baseHeaders:i},fetch:a}),{accessKey:se(r),otp:Ee(r),magicLink:Oe(r),enchantedLink:ge(r),oauth:Ue(r),saml:Ae(r),totp:He(r),webauthn:tt(r),password:Fe(r),flow:fe(r),refresh:st((e=>L(r.post(p,{},{token:e})))),selectTenant:W([K(\"tenantId\")],[V('\"token\" must be string or undefined')])(((e,t)=>L(r.post(c,{tenant:e},{token:t})))),logout:st((e=>L(r.post(g,{},{token:e})))),logoutAll:st((e=>L(r.post(h,{},{token:e})))),me:st((e=>L(r.get(v,{token:e})))),history:st((e=>L(r.get(f,{token:e})))),isJwtExpired:nt(T),getTenants:nt(S),getJwtPermissions:nt(A),getJwtRoles:nt(M),httpClient:r};var r})));const rt=(e,t,n)=>(t.forEach((t=>{const s=t.split(\".\");let o=s.shift(),i=e;for(;s.length>0;){if(i=i[o],!o||!i)throw Error(`Invalid path \"${t}\", \"${o}\" is missing or has no value`);o=s.shift()}if(\"function\"!=typeof i[o])throw Error(`\"${t}\" is not a function`);const a=i[o];i[o]=n(a)})),e);var dt=Object.assign(at,{DeliveryMethods:ae});export{q as HttpStatusCodes,dt as default,L as transformResponse,rt as wrapWith};\n//# sourceMappingURL=index.esm.js.map\n","/**\n * Get the JWT expiration WITHOUT VALIDATING the JWT\n * @param token The JWT to extract expiration from\n * @returns The Date for when the JWT expires or null if there is an issue\n */\nexport const getTokenExpiration = (token: string) => {\n const parts = token.split('.');\n try {\n if (parts.length === 3) {\n const claims = JSON.parse(window.atob(parts[1]));\n if (claims.exp) {\n return new Date(claims.exp * 1000);\n }\n }\n } catch (e) {}\n return null;\n};\n\nexport const millisecondsUntilDate = (date: Date) =>\n date ? date.getTime() - new Date().getTime() : 0;\n\nexport const createTimerFunctions = () => {\n const timerIds: NodeJS.Timeout[] = [];\n\n const clearAllTimers = () => {\n while (timerIds.length) {\n clearTimeout(timerIds.pop());\n }\n };\n\n const setTimer = (cb: () => void, timeout: number) => {\n timerIds.push(setTimeout(cb, timeout));\n };\n\n return { clearAllTimers, setTimer };\n};\n","const logger = {\n debug: (...args: any[]) => {\n // eslint-disable-next-line no-console\n console.debug(...args);\n },\n};\n\nexport default logger;\n","// This sdk can be used in SSR apps\nexport const IS_BROWSER = typeof window !== 'undefined';\n\n// Maximum timeout value for setTimeout\n// For more information, refer to https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#maximum_delay_value\nexport const MAX_TIMEOUT = Math.pow(2, 31) - 1;\n","import { IS_BROWSER } from '../../constants';\n\nconst FINGERPRINT_PUBLIC_KEY = 'fingerprint.public.key';\nconst FINGERPRINT_ENDPOINT_URL = 'fingerprint.endpoint.url';\n\n/** Fingerprint.js cloudflare integration */\nexport const FP_EP_URL =\n (IS_BROWSER && localStorage?.getItem(FINGERPRINT_ENDPOINT_URL)) ||\n 'https://api.descope.com';\nexport const FP_CF_ENDPOINT_PATH = '/fXj8gt3x8VulJBna/x96Emn69oZwcd7I6';\nexport const FP_CF_SCRIPT_PATH = '/fXj8gt3x8VulJBna/w78aRZnnDZ3Aqw0I';\n/** Fingerprint visitor data */\nexport const FP_BODY_DATA = 'fpData';\n/** Session ID for visitor */\nexport const VISITOR_SESSION_ID_PARAM = 'vsid';\n/** Request ID for visitor */\nexport const VISITOR_REQUEST_ID_PARAM = 'vrid';\n/** FP storage key */\nexport const FP_STORAGE_KEY = 'fp';\n// Storage FP Keys TTL is 24 hours\nexport const STORAGE_TTL_MS = 24 * 60 * 60 * 1000;\n","/**\n * FingerprintJS Pro v3.8.5 - Copyright (c) FingerprintJS, Inc, 2023 (https://fingerprint.com)\n *\n * This software contains code from open-source projects:\n * MurmurHash3 by Karan Lyons (https://github.com/karanlyons/murmurHash3.js)\n */\n\nimport{__spreadArray as e,__rest as t,__assign as n}from\"tslib\";function r(e){for(var t=\"\",n=0;n<e.length;++n)if(n>0){var r=e[n].toLowerCase();r!==e[n]?t+=\" \".concat(r):t+=e[n]}else t+=e[n].toUpperCase();return t}function o(e,t){return function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}(e,t)?e[t]:void 0}var i={default:\"endpoint\"},u={default:\"tlsEndpoint\"},R=\"Client timeout\",a=\"Network connection error\",c=\"Network request aborted\",E=\"Response cannot be parsed\",s=\"Blocked by CSP\",f=\"The endpoint parameter is not a valid URL\",d=/*#__PURE__*/r(\"WrongRegion\"),l=/*#__PURE__*/r(\"SubscriptionNotActive\"),_=/*#__PURE__*/r(\"UnsupportedVersion\"),p=/*#__PURE__*/r(\"InstallationMethodRestricted\"),O=/*#__PURE__*/r(\"HostnameRestricted\"),v=/*#__PURE__*/r(\"IntegrationFailed\"),I=\"API key required\",h=\"API key not found\",N=\"API key expired\",T=\"Request cannot be parsed\",m=\"Request failed\",A=\"Request failed to process\",w=\"Too many requests, rate limit exceeded\",P=\"Not available for this origin\",D=\"Not available with restricted header\",y=I,S=h,L=N,U=\"3.8.5\",g=\"9319\";function C(t,n){var r=[];return function(t,n){var r=5,o=(E=t,f=e([],E,!0),{current:function(){return f[0]},postpone:function(){var e=f.shift();void 0!==e&&f.push(e)},exclude:function(){f.shift()}}),i=(R=100,a=3e3,c=0,function(){return Math.random()*Math.min(a,R*Math.pow(2,c++))}),u=o.current();var R,a,c;var E,f;if(void 0===u)return Promise.reject(new TypeError(\"The list of script URL patterns is empty\"));var d=function(e,t){return n(e).catch((function(e){if(t+1>=r)throw e;!function(e){if(!(e instanceof Error))return!1;var t=e.message;return t===s||t===g}(e)?o.postpone():o.exclude();var n,u=o.current();if(void 0===u)throw e;return(n=i(),new Promise((function(e){return setTimeout(e,n)}))).then((function(){return d(u,t+1)}))}))};return d(u,0)}(t,(function(e){var t=new Date,o=function(n){return r.push({url:e,startedAt:t,finishedAt:new Date,error:n})},i=n(e);return i.then((function(){return o()}),o),i})).then((function(e){return[e,{attempts:r}]}))}var b=\"https://fpnpmcdn.net/v<version>/<apiKey>/loader_v<loaderVersion>.js\",K=b,M=\"Failed to load the JS script of the agent\";function B(e){var r;e.scriptUrlPattern;var i=e.token,u=e.apiKey,R=void 0===u?i:u,a=t(e,[\"scriptUrlPattern\",\"token\",\"apiKey\"]),c=null!==(r=o(e,\"scriptUrlPattern\"))&&void 0!==r?r:b;return Promise.resolve().then((function(){if(!R||\"string\"!=typeof R)throw new Error(I);var e=function(e,t){return(Array.isArray(e)?e:[e]).map((function(e){return function(e,t){var n=encodeURIComponent;return e.replace(/<[^<>]+>/g,(function(e){return\"<version>\"===e?\"3\":\"<apiKey>\"===e?n(t):\"<loaderVersion>\"===e?n(U):e}))}(String(e),t)}))}(c,R);return C(e,F).catch(k)})).then((function(e){var t=e[0],r=e[1];return t.load(n(n({},a),{ldi:r}))}))}function F(e){return function(e,t,n,r){var o,i=document,u=\"securitypolicyviolation\",R=function(t){var n=new URL(e,location.href),r=t.blockedURI;r!==n.href&&r!==n.protocol.slice(0,-1)&&r!==n.origin||(o=t,a())};i.addEventListener(u,R);var a=function(){return i.removeEventListener(u,R)};return null==r||r.then(a,a),Promise.resolve().then(t).then((function(e){return a(),e}),(function(e){return new Promise((function(e){return setTimeout(e)})).then((function(){if(a(),o)return n(o);throw e}))}))}(e,(function(){return function(e){return new Promise((function(t,n){var r=document.createElement(\"script\"),o=function(){var e;return null===(e=r.parentNode)||void 0===e?void 0:e.removeChild(r)},i=document.head||document.getElementsByTagName(\"head\")[0];r.onload=function(){o(),t()},r.onerror=function(){o(),n(new Error(M))},r.async=!0,r.src=e,i.appendChild(r)}))}(e)}),(function(){throw new Error(s)})).then(V)}function V(){var e=window,t=\"__fpjs_p_l_b\",n=e[t];if(function(e,t){var n,r=null===(n=Object.getOwnPropertyDescriptor)||void 0===n?void 0:n.call(Object,e,t);(null==r?void 0:r.configurable)?delete e[t]:r&&!r.writable||(e[t]=void 0)}(e,t),\"function\"!=typeof(null==n?void 0:n.load))throw new Error(g);return n}function k(e){throw e instanceof Error&&e.message===g?new Error(M):e}var G={load:B,defaultScriptUrlPattern:K,ERROR_SCRIPT_LOAD_FAIL:M,ERROR_API_KEY_EXPIRED:N,ERROR_API_KEY_INVALID:h,ERROR_API_KEY_MISSING:I,ERROR_BAD_REQUEST_FORMAT:T,ERROR_BAD_RESPONSE_FORMAT:E,ERROR_CLIENT_TIMEOUT:R,ERROR_CSP_BLOCK:s,ERROR_FORBIDDEN_ENDPOINT:O,ERROR_FORBIDDEN_HEADER:D,ERROR_FORBIDDEN_ORIGIN:P,ERROR_GENERAL_SERVER_FAILURE:m,ERROR_INSTALLATION_METHOD_RESTRICTED:p,ERROR_INTEGRATION_FAILURE:v,ERROR_INVALID_ENDPOINT:f,ERROR_NETWORK_ABORT:c,ERROR_NETWORK_CONNECTION:a,ERROR_RATE_LIMIT:w,ERROR_SERVER_TIMEOUT:A,ERROR_SUBSCRIPTION_NOT_ACTIVE:l,ERROR_TOKEN_EXPIRED:L,ERROR_TOKEN_INVALID:S,ERROR_TOKEN_MISSING:y,ERROR_UNSUPPORTED_VERSION:_,ERROR_WRONG_REGION:d,defaultEndpoint:i,defaultTlsEndpoint:u};export{N as ERROR_API_KEY_EXPIRED,h as ERROR_API_KEY_INVALID,I as ERROR_API_KEY_MISSING,T as ERROR_BAD_REQUEST_FORMAT,E as ERROR_BAD_RESPONSE_FORMAT,R as ERROR_CLIENT_TIMEOUT,s as ERROR_CSP_BLOCK,O as ERROR_FORBIDDEN_ENDPOINT,D as ERROR_FORBIDDEN_HEADER,P as ERROR_FORBIDDEN_ORIGIN,m as ERROR_GENERAL_SERVER_FAILURE,p as ERROR_INSTALLATION_METHOD_RESTRICTED,v as ERROR_INTEGRATION_FAILURE,f as ERROR_INVALID_ENDPOINT,c as ERROR_NETWORK_ABORT,a as ERROR_NETWORK_CONNECTION,w as ERROR_RATE_LIMIT,M as ERROR_SCRIPT_LOAD_FAIL,A as ERROR_SERVER_TIMEOUT,l as ERROR_SUBSCRIPTION_NOT_ACTIVE,L as ERROR_TOKEN_EXPIRED,S as ERROR_TOKEN_INVALID,y as ERROR_TOKEN_MISSING,_ as ERROR_UNSUPPORTED_VERSION,d as ERROR_WRONG_REGION,G as default,i as defaultEndpoint,K as defaultScriptUrlPattern,u as defaultTlsEndpoint,B as load};\n","import {\n load,\n defaultEndpoint,\n defaultScriptUrlPattern,\n} from '@fingerprintjs/fingerprintjs-pro';\nimport {\n FP_EP_URL,\n FP_CF_ENDPOINT_PATH,\n FP_CF_SCRIPT_PATH,\n FP_STORAGE_KEY,\n STORAGE_TTL_MS,\n VISITOR_REQUEST_ID_PARAM,\n VISITOR_SESSION_ID_PARAM,\n} from './constants';\nimport { FingerprintObject } from './types';\n\nconst createFingerprintObject = (\n sessionId: string,\n requestId: string,\n): FingerprintObject => ({\n [VISITOR_SESSION_ID_PARAM]: sessionId,\n [VISITOR_REQUEST_ID_PARAM]: requestId,\n});\n\n/** Generate UUID based on current time and some randomness */\nconst generateUUID = () => {\n // return alphanumeric, sortable uuid of 27 characters\n return (\n Date.now().toString(36) +\n Math.random().toString(36).substring(2) + // removing '0.' prefix\n Math.random().toString(36).substring(2)\n ).substring(0, 27);\n};\n\n// Set FP data to storage with expiration\n// We set the request id and session id together so they will have the same TTL\n// This implementation is based on https://www.sohamkamani.com/javascript/localstorage-with-ttl-expiry/\nconst setFPToStorage = (value: FingerprintObject) => {\n const now = new Date();\n // `item` is an object which contains the value\n // as well as the time when it's supposed to expire\n const item = {\n value,\n expiry: now.getTime() + STORAGE_TTL_MS,\n };\n localStorage.setItem(FP_STORAGE_KEY, JSON.stringify(item));\n};\n\n// Get Fingerprint from storage, will return null if not exists, or if expired\nconst getFPFromStorage = (returnExpired = false): FingerprintObject => {\n const itemStr = localStorage.getItem(FP_STORAGE_KEY);\n // if the item doesn't exist, return null\n if (!itemStr) {\n return null;\n }\n const item = JSON.parse(itemStr);\n const now = new Date();\n // compare the expiry time of the item with the current time\n // return null if needed\n if (now.getTime() > item.expiry && !returnExpired) {\n return null;\n }\n return item.value;\n};\n\n/**\n * Ensure fingerprint ids (request id, session id) exist.\n * If not, It will generate and load them into to browser storage.\n * NOTE: Using fingerprintJS data has cost, use considerably.\n * @param fpKey FingerprintJS API key\n */\nexport const ensureFingerprintIds = async (\n fpKey: string,\n baseUrl = FP_EP_URL,\n) => {\n try {\n if (getFPFromStorage()) {\n // FP is already in storage, no need to\n return;\n }\n\n const sessionId = generateUUID();\n\n const endpointUrl = new URL(baseUrl);\n endpointUrl.pathname = FP_CF_ENDPOINT_PATH;\n\n const patterUrl = new URL(baseUrl);\n patterUrl.pathname = FP_CF_SCRIPT_PATH;\n const scriptUrlPattern =\n patterUrl.toString() +\n '?apiKey=<apiKey>&version=<version>&loaderVersion=<loaderVersion>';\n\n // load from FingerprintJS\n const agentP = load({\n apiKey: fpKey,\n endpoint: [\n endpointUrl.toString(),\n defaultEndpoint, // Fallback to default endpoint in case of error\n ],\n scriptUrlPattern: [\n scriptUrlPattern,\n defaultScriptUrlPattern, // Fallback to default CDN in case of error\n ],\n });\n\n const agent = await agentP;\n const { requestId } = await agent.get({ linkedId: sessionId });\n const fpData = createFingerprintObject(sessionId, requestId);\n setFPToStorage(fpData);\n } catch (ex) {\n // eslint-disable-next-line no-console\n console.warn('Could not load fingerprint', ex);\n }\n};\n\n/**\n * Get Fingerprint data (request ids) from storage, or create empty object\n * If data is expired, return it anyway\n */\nexport const getFingerprintData = (): FingerprintObject | null => {\n // get from storage if exists\n return getFPFromStorage(true);\n};\n\n/** Clear Fingerprint data from storage */\nexport const clearFingerprintData = () => {\n localStorage.removeItem(FP_STORAGE_KEY);\n};\n","import { IS_BROWSER } from '../../constants';\nimport { CreateWebSdk } from '../../sdk';\nimport { BeforeRequestHook } from '../../types';\nimport { addHooks } from '../helpers';\nimport { FP_BODY_DATA } from './constants';\nimport { ensureFingerprintIds, getFingerprintData } from './helpers';\nimport { FingerprintOptions } from './types';\n\nconst beforeRequest: BeforeRequestHook = (config) => {\n const data = getFingerprintData();\n if (data && config.body) {\n config.body[FP_BODY_DATA] = data;\n }\n\n return config;\n};\n\n/**\n * Add fingerprint data to outgoing requests\n */\nexport const withFingerprint =\n <T extends CreateWebSdk>(createSdk: T) =>\n ({ fpKey, fpLoad, ...config }: Parameters<T>[0] & FingerprintOptions) => {\n if (!IS_BROWSER) {\n // eslint-disable-next-line no-console\n console.warn(\n 'Fingerprint is a client side only capability and will not work when running in the server',\n );\n return createSdk(config);\n }\n\n // load fingerprint now if needed\n if (fpKey && fpLoad) {\n ensureFingerprintIds(fpKey).catch(\n // istanbul ignore next\n () => null,\n );\n }\n\n // Hook added always because fingerprint can be dynamic using flows\n return createSdk(addHooks(config, { beforeRequest }));\n };\n","/** Login Id of the last user logged in */\nexport const LOCAL_STORAGE_LAST_USER_LOGIN_ID = 'dls_last_user_login_id';\n\n/** Display name of the last user logged in */\nexport const LOCAL_STORAGE_LAST_USER_DISPLAY_NAME =\n 'dls_last_user_display_name';\n","import {\n getLocalStorage,\n removeLocalStorage,\n setLocalStorage,\n} from '../helpers';\nimport {\n LOCAL_STORAGE_LAST_USER_LOGIN_ID,\n LOCAL_STORAGE_LAST_USER_DISPLAY_NAME,\n} from './constants';\n\nexport const setLastUserLoginId = (loginId: string) => {\n return setLocalStorage(LOCAL_STORAGE_LAST_USER_LOGIN_ID, loginId);\n};\n\nexport const getLastUserLoginId = () => {\n return getLocalStorage(LOCAL_STORAGE_LAST_USER_LOGIN_ID);\n};\n\nexport const removeLastUserLoginId = () => {\n return removeLocalStorage(LOCAL_STORAGE_LAST_USER_LOGIN_ID);\n};\n\nexport const setLastUserDisplayName = (displayName: string) => {\n return setLocalStorage(LOCAL_STORAGE_LAST_USER_DISPLAY_NAME, displayName);\n};\n\nexport const getLastUserDisplayName = () => {\n return getLocalStorage(LOCAL_STORAGE_LAST_USER_DISPLAY_NAME);\n};\n\nexport const removeLastUserDisplayName = () => {\n return removeLocalStorage(LOCAL_STORAGE_LAST_USER_DISPLAY_NAME);\n};\n","import { SdkFnWrapper, wrapWith } from '@descope/core-js-sdk';\nimport { CreateWebSdk } from '../../sdk';\nimport { AfterRequestHook, CoreSdk } from '../../types';\nimport { addHooks, getUserFromResponse } from '../helpers';\nimport {\n getLastUserLoginId,\n removeLastUserLoginId,\n setLastUserLoginId,\n getLastUserDisplayName,\n removeLastUserDisplayName,\n setLastUserDisplayName,\n} from './helpers';\n\n/**\n * Adds last logged in user to flow start request\n */\n// eslint-disable-next-line import/exports-last\nexport const withLastLoggedInUser =\n <T extends CreateWebSdk>(createSdk: T) =>\n (\n config: Parameters<T>[0]\n ): ReturnType<T> & {\n getLastUserLoginId: typeof getLastUserLoginId;\n getLastUserDisplayName: typeof getLastUserDisplayName;\n } => {\n const afterRequest: AfterRequestHook = async (_req, res) => {\n const userDetails = await getUserFromResponse(res);\n const loginId = userDetails?.loginIds?.[0];\n const displayName = userDetails?.name;\n if (loginId) {\n setLastUserLoginId(loginId);\n setLastUserDisplayName(displayName);\n }\n };\n\n const sdk = createSdk(addHooks(config, { afterRequest }));\n\n let wrappedSdk = wrapWith(sdk, ['flow.start'], startWrapper);\n wrappedSdk = wrapWith(wrappedSdk, ['logout', 'logoutAll'], logoutWrapper);\n return Object.assign(wrappedSdk, {\n getLastUserLoginId,\n getLastUserDisplayName,\n }) as any;\n };\n\nconst startWrapper: SdkFnWrapper<{}> =\n (fn) =>\n async (...args) => {\n args[1] = args[1] || {};\n const [, options = {}] = args as unknown as Parameters<\n CoreSdk['flow']['start']\n >;\n const loginId = getLastUserLoginId();\n const displayName = getLastUserDisplayName();\n\n if (loginId) {\n options.lastAuth ??= {};\n options.lastAuth.loginId = loginId;\n options.lastAuth.name = displayName;\n }\n\n const resp = await fn(...args);\n\n return resp;\n };\n\nconst logoutWrapper: SdkFnWrapper<{}> =\n (fn) =>\n async (...args) => {\n const resp = await fn(...args);\n\n removeLastUserLoginId();\n removeLastUserDisplayName();\n\n return resp;\n };\n","// create publisher/subscriber instances\nexport function createPubSub<T extends any>() {\n const cbs = [];\n\n const sub = (cb: (data: T) => void) => {\n const idx = cbs.push(cb) - 1;\n return () => cbs.splice(idx, 1);\n };\n\n const pub = (data: T) => {\n cbs.forEach((cb) => cb(data));\n };\n\n return { pub, sub };\n}\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","/** Default name for the session cookie name / local storage key */\nexport const SESSION_TOKEN_KEY = 'DS';\n/** Default name for the refresh local storage key */\nexport const REFRESH_TOKEN_KEY = 'DSR';\n","import { JWTResponse } from '@descope/core-js-sdk';\nimport Cookies from 'js-cookie';\nimport { BeforeRequestHook } from '../../types';\nimport { REFRESH_TOKEN_KEY, SESSION_TOKEN_KEY } from './constants';\nimport {\n getLocalStorage,\n removeLocalStorage,\n setLocalStorage,\n} from '../helpers';\n\n/**\n * Store the session JWT as a cookie on the given domain and path with the given expiration.\n * This is useful so that the application backend will automatically get the cookie for the session\n * @param name cookie name\n * @param value The JWT to store as a cookie\n * @param cookieParams configuration that is usually returned from the JWT\n */\nfunction setJwtTokenCookie(\n name: string,\n value: string,\n { cookiePath, cookieDomain, cookieExpiration }: Partial<JWTResponse>,\n) {\n if (value) {\n const expires = new Date(cookieExpiration * 1000); // we are getting response from the server in seconds instead of ms\n // Since its a JS cookie, we don't set the domain because we want the cookie to be on the same domain as the application\n const domainMatches = isCurrentDomainOrParentDomain(cookieDomain);\n Cookies.set(name, value, {\n path: cookiePath,\n domain: domainMatches ? cookieDomain : undefined,\n expires,\n sameSite: 'Strict',\n secure: true,\n });\n }\n}\n\n/*\n * Check if the cookie domain is the same as the current domain or the parent domain\n * Examples:\n * 1. cookie domain: 'example.com', current domain: 'example.com' => true\n * 2. cookie domain: 'example.com', current domain: 'sub.example.com' => true\n * 3. cookie domain: 'example.com', current domain: 'sub.sub.example.com' => true\n * 4. cookie domain: 'example.com', current domain: 'another.com' => false\n * 5. cookie domain: 'example.com', current domain: 'example.co.il' => false\n */\nfunction isCurrentDomainOrParentDomain(cookieDomain: string): boolean {\n const currentDomain = window.location.hostname;\n const currentDomainParts = currentDomain.split('.');\n const cookieDomainParts = cookieDomain.split('.');\n\n // check if the cookie domain items are the last items in the current domain\n const currentDomainSuffix = currentDomainParts\n .slice(-cookieDomainParts.length)\n .join('.');\n return currentDomainSuffix === cookieDomain;\n}\n\nexport const persistTokens = (\n { refreshJwt, sessionJwt, ...cookieParams } = {} as Partial<JWTResponse>,\n sessionTokenViaCookie = false,\n storagePrefix = '',\n) => {\n // persist refresh token\n refreshJwt &&\n setLocalStorage(`${storagePrefix}${REFRESH_TOKEN_KEY}`, refreshJwt);\n\n // persist session token\n if (sessionJwt) {\n sessionTokenViaCookie\n ? setJwtTokenCookie(SESSION_TOKEN_KEY, sessionJwt, cookieParams)\n : setLocalStorage(`${storagePrefix}${SESSION_TOKEN_KEY}`, sessionJwt);\n }\n};\n\n/** Return the refresh token from the localStorage. Not for production usage because refresh token will not be saved in localStorage. */\nexport function getRefreshToken(prefix: string = '') {\n return getLocalStorage(`${prefix}${REFRESH_TOKEN_KEY}`) || '';\n}\n\n/**\n * Return the session token. first try to get from cookie, and fallback to local storage\n * See sessionTokenViaCookie option for more details about session token location\n */\nexport function getSessionToken(prefix: string = ''): string {\n return (\n Cookies.get(SESSION_TOKEN_KEY) ||\n getLocalStorage(`${prefix}${SESSION_TOKEN_KEY}`) ||\n ''\n );\n}\n\n/** Remove both the localStorage refresh JWT and the session cookie */\nexport function clearTokens(prefix: string = '') {\n removeLocalStorage(`${prefix}${REFRESH_TOKEN_KEY}`);\n removeLocalStorage(`${prefix}${SESSION_TOKEN_KEY}`);\n Cookies.remove(SESSION_TOKEN_KEY);\n}\n\nexport const beforeRequest =\n (prefix?: string): BeforeRequestHook =>\n (config) =>\n Object.assign(config, { token: config.token || getRefreshToken(prefix) });\n","/* eslint-disable import/exports-last */\nimport { SdkFnWrapper, wrapWith } from '@descope/core-js-sdk';\nimport { IS_BROWSER } from '../../constants';\nimport { CreateWebSdk } from '../../sdk';\nimport { AfterRequestHook } from '../../types';\nimport { addHooks, getAuthInfoFromResponse } from '../helpers';\nimport {\n beforeRequest,\n clearTokens,\n getRefreshToken,\n getSessionToken,\n persistTokens,\n} from './helpers';\nimport { PersistTokensOptions } from './types';\n\n/**\n * Persist authentication tokens in cookie/storage\n */\nexport const withPersistTokens =\n <T extends CreateWebSdk>(createSdk: T) =>\n <A extends boolean>({\n persistTokens: isPersistTokens,\n sessionTokenViaCookie,\n storagePrefix,\n ...config\n }: Parameters<T>[0] & PersistTokensOptions<A>): A extends true\n ? ReturnType<T> & {\n getRefreshToken: () => string;\n getSessionToken: () => string;\n }\n : ReturnType<T> => {\n if (!isPersistTokens || !IS_BROWSER) {\n if (isPersistTokens) {\n // eslint-disable-next-line no-console\n console.warn(\n 'Storing auth tokens in local storage and cookies are a client side only capabilities and will not be done when running in the server'\n );\n }\n return createSdk(config) as any;\n }\n\n const afterRequest: AfterRequestHook = async (_req, res) => {\n if (res?.status === 401) {\n clearTokens(storagePrefix);\n } else {\n persistTokens(\n await getAuthInfoFromResponse(res),\n sessionTokenViaCookie,\n storagePrefix\n );\n }\n };\n\n const sdk = createSdk(\n addHooks(config, {\n beforeRequest: beforeRequest(storagePrefix),\n afterRequest,\n })\n );\n\n const wrappedSdk = wrapWith(\n sdk,\n ['logout', 'logoutAll'],\n wrapper(storagePrefix)\n );\n\n const refreshToken = () => getRefreshToken(storagePrefix);\n const sessionToken = () => getSessionToken(storagePrefix);\n\n return Object.assign(wrappedSdk, {\n getRefreshToken: refreshToken,\n getSessionToken: sessionToken,\n }) as any;\n };\n\nconst wrapper =\n (prefix?: string): SdkFnWrapper<{}> =>\n (fn) =>\n async (...args) => {\n const resp = await fn(...args);\n\n clearTokens(prefix);\n\n return resp;\n };\n\nexport default withPersistTokens;\n","import { JWTResponse, SdkResponse, ResponseData } from '@descope/core-js-sdk';\nimport { IS_BROWSER } from '../constants';\nimport { CoreSdk } from '../types';\n\ntype CreateWebauthn = typeof createWebAuthn;\n\nconst withCoreFns =\n <I extends Parameters<CreateWebauthn>, O extends ReturnType<CreateWebauthn>>(\n creator: (...args: I) => O\n ) =>\n (...args: I) => {\n const obj = creator(...args);\n\n Object.assign(obj.signUp, args[0].webauthn.signUp);\n Object.assign(obj.signIn, args[0].webauthn.signIn);\n Object.assign(obj.signUpOrIn, args[0].webauthn.signUpOrIn);\n Object.assign(obj.update, args[0].webauthn.update);\n\n return obj as {\n [K in keyof O]: K extends keyof I[0]['webauthn']\n ? O[K] & I[0]['webauthn'][K]\n : O[K];\n };\n };\n\n/** Constructs a higher level WebAuthn API that wraps the functions from code-js-sdk */\nconst createWebAuthn = (sdk: CoreSdk) => ({\n async signUp(identifier: string, name: string) {\n const startResponse = await sdk.webauthn.signUp.start(\n identifier,\n window.location.origin,\n name\n );\n if (!startResponse.ok) {\n return startResponse as unknown as SdkResponse<JWTResponse>;\n }\n const createResponse = await create(startResponse.data.options);\n const finishResponse = await sdk.webauthn.signUp.finish(\n startResponse.data.transactionId,\n createResponse\n );\n return finishResponse;\n },\n\n async signIn(identifier: string) {\n const startResponse = await sdk.webauthn.signIn.start(\n identifier,\n window.location.origin\n );\n if (!startResponse.ok) {\n return startResponse as unknown as SdkResponse<JWTResponse>;\n }\n const getResponse = await get(startResponse.data.options);\n const finishResponse = await sdk.webauthn.signIn.finish(\n startResponse.data.transactionId,\n getResponse\n );\n return finishResponse;\n },\n\n async signUpOrIn(identifier: string) {\n const startResponse = await sdk.webauthn.signUpOrIn.start(\n identifier,\n window.location.origin\n );\n if (!startResponse.ok) {\n return startResponse as unknown as SdkResponse<JWTResponse>;\n }\n if (startResponse.data?.create) {\n const createResponse = await create(startResponse.data.options);\n const finishResponse = await sdk.webauthn.signUp.finish(\n startResponse.data.transactionId,\n createResponse\n );\n return finishResponse;\n } else {\n const getResponse = await get(startResponse.data.options);\n const finishResponse = await sdk.webauthn.signIn.finish(\n startResponse.data.transactionId,\n getResponse\n );\n return finishResponse;\n }\n },\n\n async update(identifier: string, token: string) {\n const startResponse = await sdk.webauthn.update.start(\n identifier,\n window.location.origin,\n token\n );\n if (!startResponse.ok) {\n return startResponse as SdkResponse<ResponseData>;\n }\n const createResponse = await create(startResponse.data.options);\n const finishResponse = await sdk.webauthn.update.finish(\n startResponse.data.transactionId,\n createResponse\n );\n return finishResponse;\n },\n\n /** Helper functions for working with WebAuthn browser APIs using JSON data */\n helpers: {\n /** Wraps the navigation.credentials.create call to translate JSON inputs and outputs */\n create,\n /** Wraps the navigation.credentials.get call to translate JSON inputs and outputs */\n get,\n /** Checks if the browser supports WebAuthn, and can optionally require in\n * addition that the browser supports WebAuthn with built-in biometrics */\n isSupported,\n conditional,\n },\n});\n\n// Helpers functions\n\nasync function create(options: string): Promise<string> {\n const createOptions = decodeCreateOptions(options);\n const createResponse = (await navigator.credentials.create(\n createOptions\n )) as AttestationPublicKeyCredential;\n return encodeCreateResponse(createResponse);\n}\n\nasync function get(options: string): Promise<string> {\n const getOptions = decodeGetOptions(options);\n const getResponse = (await navigator.credentials.get(\n getOptions\n )) as AssertionPublicKeyCredential;\n return encodeGetResponse(getResponse);\n}\n\n/**\n * This function should be used in passkeys autofill (conditional UI)\n * It handles the call to \"navigator.credentials.get\" and adds the required options\n * @param options webauthn start options\n * @param abort: AbortController instance\n * @returns encoded \"navigator.credentials.get\" response\n */\nasync function conditional(\n options: string,\n abort: AbortController\n): Promise<string> {\n const getOptions = decodeGetOptions(options);\n getOptions.signal = abort.signal;\n getOptions.mediation = 'conditional' as any;\n const getResponse = (await navigator.credentials.get(\n getOptions\n )) as AssertionPublicKeyCredential;\n return encodeGetResponse(getResponse);\n}\n\n// eslint-disable-next-line import/exports-last\nexport async function isSupported(\n requirePlatformAuthenticator: boolean = false\n): Promise<boolean> {\n if (!IS_BROWSER) {\n return Promise.resolve(false);\n }\n const supported = !!(\n window.PublicKeyCredential &&\n navigator.credentials &&\n navigator.credentials.create &&\n navigator.credentials.get\n );\n if (\n supported &&\n requirePlatformAuthenticator &&\n PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable\n ) {\n return PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable();\n }\n return supported;\n}\n\n// Conversion of data structures for Create/Attestation/Register ceremony\n\ntype AttestationPublicKeyCredential = PublicKeyCredential & {\n response: AuthenticatorAttestationResponse;\n};\n\nfunction decodeCreateOptions(value: string): CredentialCreationOptions {\n const options = JSON.parse(value);\n options.publicKey.challenge = decodeBase64Url(options.publicKey.challenge);\n options.publicKey.user.id = decodeBase64Url(options.publicKey.user.id);\n options.publicKey.excludeCredentials?.forEach((item: any) => {\n item.id = decodeBase64Url(item.id);\n });\n return options;\n}\n\nfunction encodeCreateResponse(\n credential: AttestationPublicKeyCredential\n): string {\n return JSON.stringify({\n id: credential.id,\n rawId: encodeBase64Url(credential.rawId),\n type: credential.type,\n response: {\n attestationObject: encodeBase64Url(credential.response.attestationObject),\n clientDataJSON: encodeBase64Url(credential.response.clientDataJSON),\n },\n });\n}\n\n// Conversion of data structures for Get/Assertion/Login ceremony\n\ntype AssertionPublicKeyCredential = PublicKeyCredential & {\n response: AuthenticatorAssertionResponse;\n};\n\nfunction decodeGetOptions(value: string): CredentialRequestOptions {\n const options = JSON.parse(value);\n options.publicKey.challenge = decodeBase64Url(options.publicKey.challenge);\n options.publicKey.allowCredentials?.forEach((item: any) => {\n item.id = decodeBase64Url(item.id);\n });\n return options;\n}\n\nfunction encodeGetResponse(credential: AssertionPublicKeyCredential): string {\n return JSON.stringify({\n id: credential.id,\n rawId: encodeBase64Url(credential.rawId),\n type: credential.type,\n response: {\n authenticatorData: encodeBase64Url(credential.response.authenticatorData),\n clientDataJSON: encodeBase64Url(credential.response.clientDataJSON),\n signature: encodeBase64Url(credential.response.signature),\n userHandle: credential.response.userHandle\n ? encodeBase64Url(credential.response.userHandle)\n : undefined,\n },\n });\n}\n\n// Conversion between ArrayBuffers and Base64Url strings\n\nfunction decodeBase64Url(value: string): ArrayBufferLike {\n const base64 = value.replace(/_/g, '/').replace(/-/g, '+');\n return Uint8Array.from(atob(base64), (c) => c.charCodeAt(0)).buffer;\n}\n\nfunction encodeBase64Url(value: ArrayBufferLike): string {\n const base64 = btoa(String.fromCharCode.apply(null, new Uint8Array(value)));\n return base64.replace(/\\//g, '_').replace(/\\+/g, '-').replace(/=/g, '');\n}\n\n// Exports\nexport default withCoreFns(createWebAuthn);\n","import { JWTResponse, SdkResponse, LoginOptions } from '@descope/core-js-sdk';\nimport { CoreSdk } from '../types';\n\n/**\n * Configuration for OneTap.\n */\ninterface OneTapConfig {\n /** Whether to auto select. Optional. */\n auto_select?: boolean;\n\n /** Whether to cancel on tap outside. Optional. */\n cancel_on_tap_outside?: boolean;\n\n /** ID of the prompt parent. Optional. */\n prompt_parent_id?: string;\n\n /** Context. Optional. */\n context?: 'signin' | 'signup' | 'use';\n\n /** Callback function to handle the intermediate iframe close event. Optional. */\n intermediate_iframe_close_callback?: () => void;\n\n /** Whether to support ITP. Optional. */\n itp_support?: boolean;\n\n /** Login hint. Optional. */\n login_hint?: string;\n\n /** HD. Optional. */\n hd?: string;\n\n /** Whether to use FedCM for prompt. Optional. */\n use_fedcm_for_prompt?: boolean;\n}\n\n/**\n * Response from the credential.\n */\ninterface CredentialResponse {\n /** Credential. */\n credential: string;\n\n /** How the selection was made. */\n select_by:\n | 'auto'\n | 'user'\n | 'user_1tap'\n | 'user_2tap'\n | 'btn'\n | 'btn_confirm'\n | 'btn_add_session'\n | 'btn_confirm_add_session';\n}\n\ntype OneTapInitialize = ({\n client_id,\n callback,\n nonce,\n}: {\n client_id: string;\n callback: (res: CredentialResponse) => void;\n nonce: string;\n} & OneTapConfig) => void;\n\ntype PromptNotification = {\n isSkippedMoment: () => boolean;\n};\n\n/**\n * Constructs a higher level FedCM API that wraps the functions from code-js-sdk.\n * @param sdk The CoreSdk instance.\n * @returns The FedCM API.\n */\nconst createFedCM = (sdk: CoreSdk) => ({\n async oneTap(\n provider?: string,\n oneTapConfig?: OneTapConfig,\n loginOptions?: LoginOptions,\n onSkip?: () => void,\n ) {\n const readyProvider = provider ?? 'google';\n const startResponse = await sdk.oauth.startNative(\n readyProvider,\n loginOptions,\n );\n if (!startResponse.ok) {\n return startResponse as unknown as SdkResponse<JWTResponse>;\n }\n\n const { clientId, stateId, nonce } = startResponse.data;\n const googleClient = await getGoogleClient();\n return new Promise((resolve) => {\n const callback = (res: CredentialResponse) => {\n resolve(\n sdk.oauth.finishNative(\n readyProvider,\n stateId,\n '',\n '',\n res.credential,\n ),\n );\n };\n\n // initialize google client\n googleClient.initialize({\n ...oneTapConfig,\n itp_support: oneTapConfig?.itp_support ?? true,\n use_fedcm_for_prompt: oneTapConfig?.use_fedcm_for_prompt ?? true,\n client_id: clientId,\n callback,\n nonce,\n });\n\n googleClient.prompt((notification) => {\n if (notification?.isSkippedMoment()) {\n onSkip?.();\n }\n });\n });\n },\n});\n\n// Helpers functions\nasync function getGoogleClient(): Promise<{\n initialize: OneTapInitialize;\n prompt: (cb: (notification: PromptNotification) => void) => void;\n}> {\n return new Promise((resolve, reject) => {\n if ((window as any).google) {\n resolve((window as any).google.accounts.id);\n return;\n }\n\n /* istanbul ignore next */\n let googleScript = document.getElementById(\n 'google-gsi-client-script',\n ) as HTMLScriptElement;\n\n /* istanbul ignore next */\n if (!googleScript) {\n googleScript = document.createElement('script');\n document.head.appendChild(googleScript);\n googleScript.async = true;\n googleScript.defer = true;\n googleScript.id = 'google-gsi-client-script';\n googleScript.src = 'https://accounts.google.com/gsi/client';\n }\n\n /* istanbul ignore next */\n googleScript.onload = function () {\n if ((window as any).google) {\n resolve((window as any).google.accounts.id);\n } else {\n reject('Failed to load Google GSI client script - not loaded properly');\n }\n };\n /* istanbul ignore next */\n googleScript.onerror = function () {\n reject('Failed to load Google GSI client script - failed to load');\n };\n });\n}\n\nexport default createFedCM;\nexport type { OneTapConfig };\n","import { CoreSdk, ReplaceParam } from '../types';\nimport { isSupported } from './webauthn';\n\ntype CoreSdkFlowStartArgs = Parameters<CoreSdk['flow']['start']>;\ntype Options = Pick<\n CoreSdkFlowStartArgs[1],\n | 'tenant'\n | 'redirectUrl'\n | 'redirectAuth'\n | 'oidcIdpStateId'\n | 'samlIdpStateId'\n | 'samlIdpUsername'\n | 'ssoAppId'\n | 'oidcLoginHint'\n | 'preview'\n | 'abTestingKey'\n | 'client'\n> & {\n lastAuth?: Omit<CoreSdkFlowStartArgs[1]['lastAuth'], 'loginId' | 'name'>;\n};\n\nconst START_OPTIONS_VERSION_PREFER_START_REDIRECT_URL = 1;\n\nexport default (coreSdk: CoreSdk) => ({\n ...coreSdk.flow,\n // wrap start fn and adds more data to the start options\n start: async (...args: ReplaceParam<CoreSdkFlowStartArgs, '1', Options>) => {\n const webAuthnSupport = await isSupported();\n const decoratedOptions = {\n location: window.location.href,\n ...args[1],\n deviceInfo: {\n webAuthnSupport,\n },\n startOptionsVersion: START_OPTIONS_VERSION_PREFER_START_REDIRECT_URL,\n };\n\n args[1] = decoratedOptions;\n\n return coreSdk.flow.start(...args);\n },\n});\n","import createCoreSdk from '@descope/core-js-sdk';\nimport createWebAuthn from './webauthn';\nimport createFedCM from './fedcm';\nimport withFlow from './flow';\n\nconst createSdk = (...args: Parameters<typeof createCoreSdk>) => {\n const coreSdk = createCoreSdk(...args);\n\n return {\n ...coreSdk,\n flow: withFlow(coreSdk),\n webauthn: createWebAuthn(coreSdk),\n fedcm: createFedCM(coreSdk),\n };\n};\n\nexport default createSdk;\n\nexport type CreateWebSdk = typeof createSdk;\nexport type WebSdk = ReturnType<CreateWebSdk>;\n","import { compose } from './enhancers/helpers';\nimport { withAnalytics } from './enhancers/withAnalytics';\nimport { withAutoRefresh } from './enhancers/withAutoRefresh';\nimport { withFingerprint } from './enhancers/withFingerprint';\nimport { withLastLoggedInUser } from './enhancers/withLastLoggedInUser';\nimport { withNotifications } from './enhancers/withNotifications';\nimport withPersistTokens from './enhancers/withPersistTokens';\nimport createSdk from './sdk';\n\nconst decoratedCreateSdk = compose(\n withFingerprint,\n withAutoRefresh,\n withAnalytics,\n withNotifications,\n withLastLoggedInUser, // must be one before last due to TS types\n withPersistTokens, // must be last due to TS known limitation https://github.com/microsoft/TypeScript/issues/30727\n)(createSdk);\n\nexport type { UserResponse } from './types';\n\n// Note: make sure to update packages/web-js-sdk/test/umd.test.ts when adding new constants\nexport {\n REFRESH_TOKEN_KEY,\n SESSION_TOKEN_KEY,\n} from './enhancers/withPersistTokens/constants';\n\nexport {\n ensureFingerprintIds,\n clearFingerprintData,\n} from './enhancers/withFingerprint/helpers';\n\nexport type { OneTapConfig } from './sdk/fedcm';\n\nexport default decoratedCreateSdk;\n","import { CreateWebSdk, WebSdk } from '../../sdk';\n\ntype Fn = (arg: any) => any;\n\nexport function compose<Input, A1>(\n fn1: (input: Input) => A1\n): (input: Input) => A1;\n\nexport function compose<Input, A1, A2>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2\n): (input: Input) => A2;\n\nexport function compose<Input, A1, A2, A3>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3\n): (input: Input) => A3;\n\nexport function compose<Input, A1, A2, A3, A4>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4\n): (input: Input) => A4;\n\nexport function compose<Input, A1, A2, A3, A4, A5>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5\n): (input: Input) => A5;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6\n): (input: Input) => A6;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7\n): (input: Input) => A7;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7, A8>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8\n): (input: Input) => A8;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7, A8, A9>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9\n): (input: Input) => A9;\n\nexport function compose<Input, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>(\n fn1: (input: Input) => A1,\n fn2: (input: A1) => A2,\n fn3: (input: A2) => A3,\n fn4: (input: A3) => A4,\n fn5: (input: A4) => A5,\n fn6: (input: A5) => A6,\n fn7: (input: A6) => A7,\n fn8: (input: A7) => A8,\n fn9: (input: A8) => A9,\n fn10: (input: A9) => A10\n): (input: Input) => A10;\n\n/**\n * Currently there is no way to create a compose function in Typescript without using overloading\n * This function currently support up to 10 wrappers\n * If needed you can add more by duplicating the type and add more parameters\n */\n\nexport function compose(...args: Fn[]) {\n return (data: any) => args.reduce((acc, elem) => elem(acc), data) as any;\n}\n","import { SdkFnWrapper, wrapWith } from '@descope/core-js-sdk';\nimport { CreateWebSdk } from '../../sdk';\nimport { AfterRequestHook } from '../../types';\nimport { addHooks, getAuthInfoFromResponse } from '../helpers';\nimport {\n createTimerFunctions,\n getTokenExpiration,\n millisecondsUntilDate,\n} from './helpers';\nimport { AutoRefreshOptions } from './types';\nimport logger from '../helpers/logger';\nimport { MAX_TIMEOUT } from '../../constants';\n\n// The amount of time (ms) to trigger the refresh before session expires\nconst REFRESH_THRESHOLD = 20 * 1000; // 20 sec\n\n/**\n * Automatically refresh the session token before it expires\n * It uses the the refresh token that is extracted from API response to do that\n */\nexport const withAutoRefresh =\n <T extends CreateWebSdk>(createSdk: T) =>\n ({ autoRefresh, ...config }: Parameters<T>[0] & AutoRefreshOptions) => {\n if (!autoRefresh) return createSdk(config);\n\n // if we hold a single timer id, there might be a case where we override it before canceling the timer, this might cause many calls to refresh\n // in order to prevent it, we hold a list of timers and cancel all of them when a new timer is set, which means we should have one active timer only at a time\n const { clearAllTimers, setTimer } = createTimerFunctions();\n\n // we need to hold the expiration time and the refresh token in order to refresh the session\n // when the user comes back to the tab or from background/lock screen/etc.\n let sessionExpiration: Date;\n let refreshToken: string;\n document.addEventListener('visibilitychange', () => {\n // tab becomes visible and the session is expired, do a refresh\n if (\n document.visibilityState === 'visible' &&\n new Date() > sessionExpiration\n ) {\n logger.debug('Expiration time passed, refreshing session');\n sdk.refresh(refreshToken);\n }\n });\n\n const afterRequest: AfterRequestHook = async (_req, res) => {\n const { refreshJwt, sessionJwt } = await getAuthInfoFromResponse(res);\n\n // if we got 401 we want to cancel all timers\n if (res?.status === 401) {\n logger.debug('Received 401, canceling all timers');\n clearAllTimers();\n } else if (sessionJwt) {\n sessionExpiration = getTokenExpiration(sessionJwt);\n refreshToken = refreshJwt;\n let timeout =\n millisecondsUntilDate(sessionExpiration) - REFRESH_THRESHOLD;\n\n if (timeout > MAX_TIMEOUT) {\n logger.debug(\n `Timeout is too large (${timeout}ms), setting it to ${MAX_TIMEOUT}ms`\n );\n timeout = MAX_TIMEOUT;\n }\n clearAllTimers();\n\n const refreshTimeStr = new Date(\n Date.now() + timeout\n ).toLocaleTimeString('en-US', { hour12: false });\n logger.debug(\n `Setting refresh timer for ${refreshTimeStr}. (${timeout}ms)`\n );\n\n setTimer(() => {\n logger.debug('Refreshing session due to timer');\n sdk.refresh(refreshJwt);\n }, timeout);\n }\n };\n\n const sdk = createSdk(addHooks(config, { afterRequest }));\n\n const wrapper: SdkFnWrapper<{}> =\n (fn) =>\n async (...args) => {\n const resp = await fn(...args);\n logger.debug('Clearing all timers');\n clearAllTimers();\n\n return resp;\n };\n\n return wrapWith(sdk, ['logout', 'logoutAll'], wrapper);\n };\n","import { CreateWebSdk } from '../sdk';\nimport { BeforeRequestHook } from '../types';\nimport { addHooks } from './helpers';\n\n// this is replaced in build time\ndeclare const BUILD_VERSION: string;\n/**\n * Adds analytics headers to requests\n */\nexport const withAnalytics =\n <T extends CreateWebSdk>(createSdk: T) =>\n (config: Parameters<T>[0]) =>\n createSdk({\n ...config,\n baseHeaders: {\n 'x-descope-sdk-name': 'web-js',\n 'x-descope-sdk-version': BUILD_VERSION,\n ...config.baseHeaders,\n },\n });\n","import { SdkFnWrapper, UserResponse, wrapWith } from '@descope/core-js-sdk';\nimport { CreateWebSdk, WebSdk } from '../../sdk';\nimport { AfterRequestHook } from '../../types';\nimport {\n addHooks,\n getAuthInfoFromResponse,\n getUserFromResponse,\n} from '../helpers';\nimport { createPubSub } from './helpers';\n\n/**\n * Adds 2 event functions to the sdk,\n * onSessionTokenChange: Gets a callback and call it whenever there is a change in session token\n * onUserChange: Gets a callback and call it whenever there is a change in current logged in user\n */\nexport const withNotifications =\n <T extends CreateWebSdk>(createSdk: T) =>\n (config: Parameters<T>[0]) => {\n const sessionPS = createPubSub<string | null>();\n const userPS = createPubSub<UserResponse | null>();\n\n const afterRequest: AfterRequestHook = async (_req, res) => {\n if (res?.status === 401) {\n sessionPS.pub(null);\n userPS.pub(null);\n } else {\n const userDetails = await getUserFromResponse(res);\n if (userDetails) userPS.pub(userDetails);\n\n const { sessionJwt } = await getAuthInfoFromResponse(res);\n if (sessionJwt) sessionPS.pub(sessionJwt);\n }\n };\n\n const sdk = createSdk(addHooks(config, { afterRequest }));\n\n const wrapper: SdkFnWrapper<{}> =\n (fn) =>\n async (...args) => {\n const resp = await fn(...args);\n\n sessionPS.pub(null);\n userPS.pub(null);\n\n return resp;\n };\n\n const wrappedSdk = wrapWith(sdk, ['logout', 'logoutAll'], wrapper);\n\n return Object.assign(wrappedSdk, {\n onSessionTokenChange: sessionPS.sub,\n onUserChange: userPS.sub,\n });\n };\n","import sdk, { REFRESH_TOKEN_KEY, SESSION_TOKEN_KEY } from './index';\n\n// We export the tokens constant in this way so that umd bundles will have the constants as properties of the default export\n// But still can use the default export as a function (e.g. Descope({ projectId: 'pid'}))\nsdk['REFRESH_TOKEN_KEY'] = REFRESH_TOKEN_KEY;\nsdk['SESSION_TOKEN_KEY'] = SESSION_TOKEN_KEY;\n\nexport default sdk;\n"],"names":["addHooks","config","hooks","reduce","acc","key","concat","_a","getAuthInfoFromResponse","async","res","ok","body","clone","json","authInfo","getUserFromResponse","user","hasOwnProperty","undefined","isLocalStorage","localStorage","setLocalStorage","value","setItem","getLocalStorage","getItem","removeLocalStorage","removeItem","__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","call","apply","this","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","message","SuppressedError","Error","name","r","window","atob","bind","String","replace","o","a","c","charAt","fromCharCode","header","JSON","parse","decodeURIComponent","charCodeAt","toString","toUpperCase","split","HASH_UNDEFINED","INFINITY","funcTag","genTag","symbolTag","reIsDeepProp","reIsPlainProp","reLeadingDot","rePropName","reEscapeChar","reIsHostCtor","freeGlobal","global","freeSelf","self","root","Function","uid","arrayProto","Array","funcProto","objectProto","coreJsData","maskSrcKey","exec","keys","IE_PROTO","funcToString","objectToString","reIsNative","RegExp","Symbol","splice","Map","getNative","nativeCreate","symbolProto","symbolToString","Hash","entries","index","clear","entry","set","ListCache","MapCache","assocIndexOf","array","other","baseGet","object","path","isArray","type","isSymbol","test","isKey","stringToPath","toKey","baseIsNative","isObject","func","pattern","tag","isFunction","result","isHostObject","toSource","getMapData","map","data","__data__","getValue","has","get","pop","push","hash","string","memoize","baseToString","match","number","quote","resolver","TypeError","memoized","args","cache","Cache","isObjectLike","defaultValue","email","phone","d","u","start","finish","l","g","h","v","f","m","I","b","y","O","headers","fromEntries","Headers","stringify","Body","url","Url","method","Method","title","Title","status","Status","build","flatMap","join","j","delete","post","put","U","from","R","P","Authorization","x","baseUrl","projectId","baseConfig","logger","cookiePolicy","fetch","text","Promise","resolve","warn","log","statusText","w","beforeRequest","queryParams","token","baseHeaders","credentials","slice","URL","search","URLSearchParams","afterRequest","q","$","E","tenants","T","exp","Date","getTime","S","A","M","N","L","code","response","error","retryAfter","Number","parseInt","z","H","validate","forEach","J","C","_","D","Z","B","K","Q","V","Y","filter","W","X","ee","te","ne","se","exchange","loginOptions","oe","ie","sms","whatsapp","ae","re","waiting","running","completed","failed","de","ue","le","pe","ce","ge","verify","signIn","loginId","URI","signUpOrIn","signUp","waitForSession","pollingIntervalMs","timeoutMs","Math","max","min","setInterval","pendingRef","clearInterval","clearTimeout","setTimeout","errorDescription","errorCode","update","he","ve","fe","flowId","options","conditionInteractionId","interactionId","version","componentsVersion","input","next","executionId","stepId","me","Ie","be","ke","ye","Oe","we","facebook","github","google","microsoft","gitlab","apple","discord","linkedin","slack","je","Ue","provider","redirectURL","startNative","finishNative","stateId","idToken","Re","Pe","xe","qe","$e","Ee","Te","Se","Ae","tenant","Me","Ne","Le","ze","He","Je","Ce","_e","De","Ze","Be","Fe","password","sendReset","redirectUrl","templateOptions","newPassword","oldPassword","policy","Ke","Qe","Ve","Ye","Ge","We","Xe","et","tt","origin","transactionId","nt","st","it","at","accessKey","otp","magicLink","enchantedLink","oauth","saml","totp","webauthn","flow","refresh","selectTenant","logout","logoutAll","history","isJwtExpired","getTenants","getJwtPermissions","getJwtRoles","httpClient","allSettled","reason","rt","shift","dt","DeliveryMethods","console","debug","IS_BROWSER","MAX_TIMEOUT","pow","FP_EP_URL","default","to","pack","ar","current","postpone","exclude","random","reject","catch","then","startedAt","finishedAt","attempts","scriptUrlPattern","apiKey","encodeURIComponent","F","k","load","ldi","document","location","href","blockedURI","protocol","addEventListener","removeEventListener","createElement","parentNode","removeChild","head","getElementsByTagName","onload","onerror","src","appendChild","getOwnPropertyDescriptor","configurable","writable","getFPFromStorage","returnExpired","itemStr","item","expiry","ensureFingerprintIds","fpKey","sessionId","now","substring","endpointUrl","pathname","patterUrl","agentP","endpoint","defaultEndpoint","defaultScriptUrlPattern","agent","requestId","linkedId","fpData","vsid","vrid","createFingerprintObject","setFPToStorage","ex","LOCAL_STORAGE_LAST_USER_LOGIN_ID","LOCAL_STORAGE_LAST_USER_DISPLAY_NAME","getLastUserLoginId","getLastUserDisplayName","startWrapper","fn","displayName","lastAuth","logoutWrapper","resp","createPubSub","cbs","pub","cb","sub","idx","target","source","api","init","converter","defaultAttributes","attributes","expires","toUTCString","escape","stringifiedAttributes","attributeName","cookie","write","create","cookies","jar","parts","found","read","remove","withAttributes","withConverter","freeze","SESSION_TOKEN_KEY","REFRESH_TOKEN_KEY","setJwtTokenCookie","cookiePath","cookieDomain","cookieExpiration","domainMatches","currentDomainParts","hostname","cookieDomainParts","isCurrentDomainOrParentDomain","Cookies","domain","sameSite","secure","getRefreshToken","prefix","clearTokens","wrapper","createOptions","publicKey","challenge","decodeBase64Url","id","excludeCredentials","decodeCreateOptions","createResponse","navigator","credential","rawId","encodeBase64Url","attestationObject","clientDataJSON","getOptions","decodeGetOptions","encodeGetResponse","conditional","abort","signal","mediation","isSupported","requirePlatformAuthenticator","supported","PublicKeyCredential","isUserVerifyingPlatformAuthenticatorAvailable","allowCredentials","authenticatorData","signature","userHandle","base64","Uint8Array","buffer","btoa","creator","createWebAuthn$1","sdk","identifier","startResponse","getResponse","helpers","obj","createFedCM","oneTapConfig","onSkip","readyProvider","clientId","nonce","googleClient","accounts","googleScript","getElementById","defer","getGoogleClient","initialize","itp_support","use_fedcm_for_prompt","_b","client_id","callback","prompt","notification","isSkippedMoment","withFlow","coreSdk","webAuthnSupport","decoratedOptions","deviceInfo","startOptionsVersion","decoratedCreateSdk","elem","compose","createSdk","fpLoad","autoRefresh","clearAllTimers","setTimer","timerIds","timeout","createTimerFunctions","sessionExpiration","refreshToken","visibilityState","_req","refreshJwt","sessionJwt","claims","getTokenExpiration","date","refreshTimeStr","toLocaleTimeString","hour12","wrapWith","sessionPS","userPS","userDetails","wrappedSdk","onSessionTokenChange","onUserChange","loginIds","setLastUserLoginId","setLastUserDisplayName","persistTokens","isPersistTokens","sessionTokenViaCookie","storagePrefix","cookieParams","getSessionToken","createCoreSdk","createWebAuthn","fedcm"],"mappings":"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","x_google_ignoreList":[1,2,3,9,16]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@descope/web-js-sdk",
3
- "version": "1.10.5",
3
+ "version": "1.10.6",
4
4
  "author": "Descope Team <info@descope.com>",
5
5
  "homepage": "https://github.com/descope/web-js-sdk",
6
6
  "bugs": {
@@ -42,7 +42,7 @@
42
42
  "@rollup/plugin-terser": "^0.4.0",
43
43
  "@rollup/plugin-typescript": "^11.0.0",
44
44
  "@types/jest": "^29.0.0",
45
- "@types/node": "20.11.19",
45
+ "@types/node": "20.11.20",
46
46
  "@types/js-cookie": "^3.0.2",
47
47
  "@types/lodash.get": "^4.4.7",
48
48
  "@typescript-eslint/parser": "^7.0.0",