@descope/web-js-sdk
Advanced tools
Comparing version 1.16.2 to 1.16.3
@@ -1,2 +0,2 @@ | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("tslib"),e=require("@descope/core-js-sdk"),n=require("jwt-decode"),a=require("js-cookie"),i=require("@fingerprintjs/fingerprintjs-pro");function o(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var r=o(e),s=o(n),l=o(a);const c=(t,e)=>{var n;return["beforeRequest","afterRequest"].reduce(((n,a)=>{var i;return n[a]=[].concat((null===(i=t.hooks)||void 0===i?void 0:i[a])||[]).concat((null==e?void 0:e[a])||[]),n}),null!==(n=t.hooks)&&void 0!==n?n:t.hooks={}),t},u=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||{}},d=async t=>{const e=await u(t);return(null==e?void 0:e.user)||((null==e?void 0:e.hasOwnProperty("userId"))?e:void 0)},g="undefined"!=typeof localStorage,p=(t,e)=>g&&(null===localStorage||void 0===localStorage?void 0:localStorage.setItem(t,e)),f=t=>g&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem(t)),w=t=>g&&(null===localStorage||void 0===localStorage?void 0:localStorage.removeItem(t)),v=(...t)=>{console.debug(...t)},h="undefined"!=typeof window,b=Math.pow(2,31)-1,m="DS",y="DSR";function S(t,e,{cookiePath:n,cookieDomain:a,cookieExpiration:i}){if(e){const o=new Date(1e3*i),r=function(t){const e=window.location.hostname.split("."),n=t.split(".");return e.slice(-n.length).join(".")===t}(a);l.default.set(t,e,{path:n,domain:r?a:void 0,expires:o,sameSite:"Strict",secure:!0})}}function I(t=""){return f(`${t}${y}`)||""}function O(t=""){w(`${t}${y}`),w(`${t}${m}`),l.default.remove(m)}const j=h&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem("fingerprint.endpoint.url"))||"https://api.descope.com",_="fp",k=(t=!1)=>{const e=localStorage.getItem(_);if(!e)return null;const n=JSON.parse(e);return(new Date).getTime()>n.expiry&&!t?null:n.value},U=async(t,e=j)=>{try{if(k())return;const n=(Date.now().toString(36)+Math.random().toString(36).substring(2)+Math.random().toString(36).substring(2)).substring(0,27),a=new URL(e);a.pathname="/fXj8gt3x8VulJBna/x96Emn69oZwcd7I6";const o=new URL(e);o.pathname="/fXj8gt3x8VulJBna/w78aRZnnDZ3Aqw0I";const r=o.toString()+"?apiKey=<apiKey>&version=<version>&loaderVersion=<loaderVersion>",s=i.load({apiKey:t,endpoint:[a.toString(),i.defaultEndpoint],scriptUrlPattern:[r,i.defaultScriptUrlPattern]}),l=await s,{requestId:c}=await l.get({linkedId:n}),u=((t,e)=>({vsid:t,vrid:e}))(n,c);(t=>{const e={value:t,expiry:(new Date).getTime()+864e5};localStorage.setItem(_,JSON.stringify(e))})(u)}catch(t){console.warn("Could not load fingerprint",t)}},A=t=>{const e=k(!0);return e&&t.body&&(t.body.fpData=e),t},x="dls_last_user_login_id",D="dls_last_user_display_name",T=()=>f(x),K=()=>f(D),R=t=>async(...e)=>{var n;e[1]=e[1]||{};const[,a={}]=e,i=T(),o=K();i&&(null!==(n=a.lastAuth)&&void 0!==n||(a.lastAuth={}),a.lastAuth.loginId=i,a.lastAuth.name=o);return await t(...e)},J=t=>e=>async(...n)=>{const a=await e(...n);return t||(w(x),w(D)),a};function L(){const t=[];return{pub:e=>{t.forEach((t=>t(e)))},sub:e=>{const n=t.push(e)-1;return()=>t.splice(n,1)}}}const C=t=>e=>async(...n)=>{const a=await e(...n);return O(t),a};async function E(t){const e=function(t){var e;const n=JSON.parse(t);return n.publicKey.challenge=H(n.publicKey.challenge),n.publicKey.user.id=H(n.publicKey.user.id),null===(e=n.publicKey.excludeCredentials)||void 0===e||e.forEach((t=>{t.id=H(t.id)})),n}(t),n=await navigator.credentials.create(e);return a=n,JSON.stringify({id:a.id,rawId:F(a.rawId),type:a.type,response:{attestationObject:F(a.response.attestationObject),clientDataJSON:F(a.response.clientDataJSON)}});var a}async function N(t){const e=P(t);return V(await navigator.credentials.get(e))}async function $(t,e){const n=P(t);n.signal=e.signal,n.mediation="conditional";return V(await navigator.credentials.get(n))}async function q(t=!1){if(!h)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 P(t){var e;const n=JSON.parse(t);return n.publicKey.challenge=H(n.publicKey.challenge),null===(e=n.publicKey.allowCredentials)||void 0===e||e.forEach((t=>{t.id=H(t.id)})),n}function V(t){return JSON.stringify({id:t.id,rawId:F(t.rawId),type:t.type,response:{authenticatorData:F(t.response.authenticatorData),clientDataJSON:F(t.response.clientDataJSON),signature:F(t.response.signature),userHandle:t.response.userHandle?F(t.response.userHandle):void 0}})}function H(t){const e=t.replace(/_/g,"/").replace(/-/g,"+");return Uint8Array.from(atob(e),(t=>t.charCodeAt(0))).buffer}function F(t){return btoa(String.fromCharCode.apply(null,new Uint8Array(t))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}var M,W=(M=t=>({async signUp(e,n){const a=await t.webauthn.signUp.start(e,window.location.origin,n);if(!a.ok)return a;const i=await E(a.data.options);return await t.webauthn.signUp.finish(a.data.transactionId,i)},async signIn(e){const n=await t.webauthn.signIn.start(e,window.location.origin);if(!n.ok)return n;const a=await N(n.data.options);return await t.webauthn.signIn.finish(n.data.transactionId,a)},async signUpOrIn(e){var n;const a=await t.webauthn.signUpOrIn.start(e,window.location.origin);if(!a.ok)return a;if(null===(n=a.data)||void 0===n?void 0:n.create){const e=await E(a.data.options);return await t.webauthn.signUp.finish(a.data.transactionId,e)}{const e=await N(a.data.options);return await t.webauthn.signIn.finish(a.data.transactionId,e)}},async update(e,n){const a=await t.webauthn.update.start(e,window.location.origin,n);if(!a.ok)return a;const i=await E(a.data.options);return await t.webauthn.update.finish(a.data.transactionId,i)},helpers:{create:E,get:N,isSupported:q,conditional:$}}),(...t)=>{const e=M(...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 G={config:"/fedcm/config"},B=(t,e)=>({async oneTap(e,n,a,i){const o=null!=e?e:"google",r=await t.oauth.startNative(o,a,!0);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 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=>{e(t.oauth.finishNative(o,l,"","",n.credential))},nonce:c})),u.prompt((t=>{(null==t?void 0:t.isSkippedMoment())&&(null==i||i())}))}))},async launch(n){var a;const i={identity:{context:n||"signin",providers:[{configURL:t.httpClient.buildUrl(e+G.config),clientId:e}]}},o=await(null===(a=navigator.credentials)||void 0===a?void 0:a.get(i));return t.refresh(o.token)},isSupported:()=>h&&"IdentityCredential"in window});var Z=t=>Object.assign(Object.assign({},t.flow),{start:async(...e)=>{const n=await q(),a=Object.assign(Object.assign({location:window.location.href},e[1]),{deviceInfo:{webAuthnSupport:n},startOptionsVersion:1});return e[1]=a,t.flow.start(...e)}});const X=function(...t){return e=>t.reduce(((t,e)=>e(t)),e)}((e=>n=>{var{fpKey:a,fpLoad:i}=n,o=t.__rest(n,["fpKey","fpLoad"]);return h?(a&&i&&U(a).catch((()=>null)),e(c(o,{beforeRequest:A}))):e(o)}),(n=>a=>{var{autoRefresh:i}=a,o=t.__rest(a,["autoRefresh"]);if(!i)return n(o);const{clearAllTimers:r,setTimer:l}=(()=>{const t=[];return{clearAllTimers:()=>{for(;t.length;)clearTimeout(t.pop())},setTimer:(e,n)=>{t.push(setTimeout(e,n))}}})();let d,g;h&&document.addEventListener("visibilitychange",(()=>{"visible"===document.visibilityState&&new Date>d&&(v("Expiration time passed, refreshing session"),p.refresh(I()||g))}));const p=n(c(o,{afterRequest:async(t,e)=>{const{refreshJwt:n,sessionJwt:a}=await u(e);if(401===(null==e?void 0:e.status))v("Received 401, canceling all timers"),r();else if(a){if(d=(t=>{try{const e=s.default(t);if(e.exp)return new Date(1e3*e.exp)}catch(t){return null}})(a),!d)return void v("Could not extract expiration time from session token");g=n;let t=((i=d)?i.getTime()-(new Date).getTime():0)-2e4;t>b&&(v(`Timeout is too large (${t}ms), setting it to ${b}ms`),t=b),r();const e=new Date(Date.now()+t).toLocaleTimeString("en-US",{hour12:!1});v(`Setting refresh timer for ${e}. (${t}ms)`),l((()=>{v("Refreshing session due to timer"),p.refresh(I()||n)}),t)}var i}}));return e.wrapWith(p,["logout","logoutAll"],(t=>async(...e)=>{const n=await t(...e);return v("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.16.2"},e.baseHeaders)}))),(t=>n=>{const a=L(),i=L(),o=t(c(n,{afterRequest:async(t,e)=>{if(401===(null==e?void 0:e.status))a.pub(null),i.pub(null);else{const t=await d(e);t&&i.pub(t);const{sessionJwt:n}=await u(e);n&&a.pub(n)}}})),r=e.wrapWith(o,["logout","logoutAll"],(t=>async(...e)=>{const n=await t(...e);return a.pub(null),i.pub(null),n}));return Object.assign(r,{onSessionTokenChange:a.sub,onUserChange:i.sub})}),(n=>a=>{var{storeLastAuthenticatedUser:i=!0,keepLastAuthenticatedUserAfterLogout:o=!1}=a,r=t.__rest(a,["storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout"]);if(!i)return Object.assign(n(r),{getLastUserLoginId:T,getLastUserDisplayName:K});const s=n(c(r,{afterRequest:async(t,e)=>{var n;const a=await d(e),i=null===(n=null==a?void 0:a.loginIds)||void 0===n?void 0:n[0],o=null==a?void 0:a.name;i&&((t=>{p(x,t)})(i),(t=>{p(D,t)})(o))}}));let l=e.wrapWith(s,["flow.start"],R);return l=e.wrapWith(l,["logout","logoutAll"],J(o)),Object.assign(l,{getLastUserLoginId:T,getLastUserDisplayName:K})}),(n=>a=>{var{persistTokens:i,sessionTokenViaCookie:o,storagePrefix:r}=a,s=t.__rest(a,["persistTokens","sessionTokenViaCookie","storagePrefix"]);if(!i||!h)return n(s);const d=n(c(s,{beforeRequest:(g=r,t=>Object.assign(t,{token:t.token||I(g)})),afterRequest:async(e,n)=>{const a=/^\/v\d+\/mgmt\//.test(e.path);401===(null==n?void 0:n.status)?a||O(r):((e={},n,a)=>{var{refreshJwt:i,sessionJwt:o}=e,r=t.__rest(e,["refreshJwt","sessionJwt"]);void 0===n&&(n=!1),void 0===a&&(a=""),i&&p(`${a}${y}`,i),o&&(n?S(m,o,r):p(`${a}${m}`,o))})(await u(n),o,r)}}));var g;const w=e.wrapWith(d,["logout","logoutAll"],C(r));return Object.assign(w,{getRefreshToken:()=>I(r),getSessionToken:()=>function(t=""){return l.default.get(m)||f(`${t}${m}`)||""}(r)})}))(((...t)=>{const e=r.default(...t);return Object.assign(Object.assign({},e),{flow:Z(e),webauthn:W(e),fedcm:B(e,t[0].projectId)})}));exports.REFRESH_TOKEN_KEY=y,exports.SESSION_TOKEN_KEY=m,exports.clearFingerprintData=()=>{localStorage.removeItem(_)},exports.default=X,exports.ensureFingerprintIds=U; | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("tslib"),e=require("@descope/core-js-sdk"),n=require("jwt-decode"),a=require("js-cookie"),i=require("@fingerprintjs/fingerprintjs-pro");function o(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var r=o(e),s=o(n),l=o(a);const c=(t,e)=>{var n;return["beforeRequest","afterRequest"].reduce(((n,a)=>{var i;return n[a]=[].concat((null===(i=t.hooks)||void 0===i?void 0:i[a])||[]).concat((null==e?void 0:e[a])||[]),n}),null!==(n=t.hooks)&&void 0!==n?n:t.hooks={}),t},u=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||{}},d=async t=>{const e=await u(t);return(null==e?void 0:e.user)||((null==e?void 0:e.hasOwnProperty("userId"))?e:void 0)},g="undefined"!=typeof localStorage,p=(t,e)=>g&&(null===localStorage||void 0===localStorage?void 0:localStorage.setItem(t,e)),f=t=>g&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem(t)),w=t=>g&&(null===localStorage||void 0===localStorage?void 0:localStorage.removeItem(t)),h=(...t)=>{console.debug(...t)},v="undefined"!=typeof window,b=Math.pow(2,31)-1,m="DS",y="DSR";function S(t,e,{cookiePath:n,cookieDomain:a,cookieExpiration:i}){if(e){const o=new Date(1e3*i),r=function(t){const e=window.location.hostname.split("."),n=t.split(".");return e.slice(-n.length).join(".")===t}(a);l.default.set(t,e,{path:n,domain:r?a:void 0,expires:o,sameSite:"Strict",secure:!0})}}function I(t=""){return f(`${t}${y}`)||""}function O(t=""){return l.default.get(m)||f(`${t}${m}`)||""}function j(t=""){w(`${t}${y}`),w(`${t}${m}`),l.default.remove(m)}const _=v&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem("fingerprint.endpoint.url"))||"https://api.descope.com",k="fp",U=(t=!1)=>{const e=localStorage.getItem(k);if(!e)return null;const n=JSON.parse(e);return(new Date).getTime()>n.expiry&&!t?null:n.value},A=async(t,e=_)=>{try{if(U())return;const n=(Date.now().toString(36)+Math.random().toString(36).substring(2)+Math.random().toString(36).substring(2)).substring(0,27),a=new URL(e);a.pathname="/fXj8gt3x8VulJBna/x96Emn69oZwcd7I6";const o=new URL(e);o.pathname="/fXj8gt3x8VulJBna/w78aRZnnDZ3Aqw0I";const r=o.toString()+"?apiKey=<apiKey>&version=<version>&loaderVersion=<loaderVersion>",s=i.load({apiKey:t,endpoint:[a.toString(),i.defaultEndpoint],scriptUrlPattern:[r,i.defaultScriptUrlPattern]}),l=await s,{requestId:c}=await l.get({linkedId:n}),u=((t,e)=>({vsid:t,vrid:e}))(n,c);(t=>{const e={value:t,expiry:(new Date).getTime()+864e5};localStorage.setItem(k,JSON.stringify(e))})(u)}catch(t){console.warn("Could not load fingerprint",t)}},x=t=>{const e=U(!0);return e&&t.body&&(t.body.fpData=e),t},D="dls_last_user_login_id",T="dls_last_user_display_name",K=()=>f(D),R=()=>f(T),J=t=>async(...e)=>{var n;e[1]=e[1]||{};const[,a={}]=e,i=K(),o=R();i&&(null!==(n=a.lastAuth)&&void 0!==n||(a.lastAuth={}),a.lastAuth.loginId=i,a.lastAuth.name=o);return await t(...e)},L=t=>e=>async(...n)=>{const a=await e(...n);return t||(w(D),w(T)),a};function C(){const t=[];return{pub:e=>{t.forEach((t=>t(e)))},sub:e=>{const n=t.push(e)-1;return()=>t.splice(n,1)}}}const E=t=>e=>async(...n)=>{const a=await e(...n);return j(t),a};async function N(t){const e=function(t){var e;const n=JSON.parse(t);return n.publicKey.challenge=F(n.publicKey.challenge),n.publicKey.user.id=F(n.publicKey.user.id),null===(e=n.publicKey.excludeCredentials)||void 0===e||e.forEach((t=>{t.id=F(t.id)})),n}(t),n=await navigator.credentials.create(e);return a=n,JSON.stringify({id:a.id,rawId:M(a.rawId),type:a.type,response:{attestationObject:M(a.response.attestationObject),clientDataJSON:M(a.response.clientDataJSON)}});var a}async function $(t){const e=V(t);return H(await navigator.credentials.get(e))}async function q(t,e){const n=V(t);n.signal=e.signal,n.mediation="conditional";return H(await navigator.credentials.get(n))}async function P(t=!1){if(!v)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 V(t){var e;const n=JSON.parse(t);return n.publicKey.challenge=F(n.publicKey.challenge),null===(e=n.publicKey.allowCredentials)||void 0===e||e.forEach((t=>{t.id=F(t.id)})),n}function H(t){return JSON.stringify({id:t.id,rawId:M(t.rawId),type:t.type,response:{authenticatorData:M(t.response.authenticatorData),clientDataJSON:M(t.response.clientDataJSON),signature:M(t.response.signature),userHandle:t.response.userHandle?M(t.response.userHandle):void 0}})}function F(t){const e=t.replace(/_/g,"/").replace(/-/g,"+");return Uint8Array.from(atob(e),(t=>t.charCodeAt(0))).buffer}function M(t){return btoa(String.fromCharCode.apply(null,new Uint8Array(t))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}var W,G=(W=t=>({async signUp(e,n){const a=await t.webauthn.signUp.start(e,window.location.origin,n);if(!a.ok)return a;const i=await N(a.data.options);return await t.webauthn.signUp.finish(a.data.transactionId,i)},async signIn(e){const n=await t.webauthn.signIn.start(e,window.location.origin);if(!n.ok)return n;const a=await $(n.data.options);return await t.webauthn.signIn.finish(n.data.transactionId,a)},async signUpOrIn(e){var n;const a=await t.webauthn.signUpOrIn.start(e,window.location.origin);if(!a.ok)return a;if(null===(n=a.data)||void 0===n?void 0:n.create){const e=await N(a.data.options);return await t.webauthn.signUp.finish(a.data.transactionId,e)}{const e=await $(a.data.options);return await t.webauthn.signIn.finish(a.data.transactionId,e)}},async update(e,n){const a=await t.webauthn.update.start(e,window.location.origin,n);if(!a.ok)return a;const i=await N(a.data.options);return await t.webauthn.update.finish(a.data.transactionId,i)},helpers:{create:N,get:$,isSupported:P,conditional:q}}),(...t)=>{const e=W(...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={config:"/fedcm/config"},Z=(t,e)=>({async oneTap(e,n,a,i){const o=null!=e?e:"google",r=await t.oauth.startNative(o,a,!0);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 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=>{e(t.oauth.finishNative(o,l,"","",n.credential))},nonce:c})),u.prompt((t=>{(null==t?void 0:t.isSkippedMoment())&&(null==i||i())}))}))},async launch(n){var a;const i={identity:{context:n||"signin",providers:[{configURL:t.httpClient.buildUrl(e+B.config),clientId:e}]}},o=await(null===(a=navigator.credentials)||void 0===a?void 0:a.get(i));return t.refresh(o.token)},isSupported:()=>v&&"IdentityCredential"in window});var X=t=>Object.assign(Object.assign({},t.flow),{start:async(...e)=>{const n=await P(),a=Object.assign(Object.assign({location:window.location.href},e[1]),{deviceInfo:{webAuthnSupport:n},startOptionsVersion:1});return e[1]=a,t.flow.start(...e)}});const Y=function(...t){return e=>t.reduce(((t,e)=>e(t)),e)}((e=>n=>{var{fpKey:a,fpLoad:i}=n,o=t.__rest(n,["fpKey","fpLoad"]);return v?(a&&i&&A(a).catch((()=>null)),e(c(o,{beforeRequest:x}))):e(o)}),(n=>a=>{var{autoRefresh:i}=a,o=t.__rest(a,["autoRefresh"]);if(!i)return n(o);const{clearAllTimers:r,setTimer:l}=(()=>{const t=[];return{clearAllTimers:()=>{for(;t.length;)clearTimeout(t.pop())},setTimer:(e,n)=>{t.push(setTimeout(e,n))}}})();let d,g;v&&document.addEventListener("visibilitychange",(()=>{"visible"===document.visibilityState&&new Date>d&&(h("Expiration time passed, refreshing session"),p.refresh(I()||g))}));const p=n(c(o,{afterRequest:async(t,e)=>{const{refreshJwt:n,sessionJwt:a}=await u(e);if(401===(null==e?void 0:e.status))h("Received 401, canceling all timers"),r();else if(a){if(d=(t=>{try{const e=s.default(t);if(e.exp)return new Date(1e3*e.exp)}catch(t){return null}})(a),!d)return void h("Could not extract expiration time from session token");g=n;let t=((i=d)?i.getTime()-(new Date).getTime():0)-2e4;t>b&&(h(`Timeout is too large (${t}ms), setting it to ${b}ms`),t=b),r();const e=new Date(Date.now()+t).toLocaleTimeString("en-US",{hour12:!1});h(`Setting refresh timer for ${e}. (${t}ms)`),l((()=>{h("Refreshing session due to timer"),p.refresh(I()||n)}),t)}var i}}));return e.wrapWith(p,["logout","logoutAll"],(t=>async(...e)=>{const n=await t(...e);return h("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.16.3"},e.baseHeaders)}))),(t=>n=>{const a=C(),i=C(),o=t(c(n,{afterRequest:async(t,e)=>{if(401===(null==e?void 0:e.status))a.pub(null),i.pub(null);else{const t=await d(e);t&&i.pub(t);const{sessionJwt:n}=await u(e);n&&a.pub(n)}}})),r=e.wrapWith(o,["logout","logoutAll"],(t=>async(...e)=>{const n=await t(...e);return a.pub(null),i.pub(null),n}));return Object.assign(r,{onSessionTokenChange:a.sub,onUserChange:i.sub})}),(n=>a=>{var{storeLastAuthenticatedUser:i=!0,keepLastAuthenticatedUserAfterLogout:o=!1}=a,r=t.__rest(a,["storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout"]);if(!i)return Object.assign(n(r),{getLastUserLoginId:K,getLastUserDisplayName:R});const s=n(c(r,{afterRequest:async(t,e)=>{var n;const a=await d(e),i=null===(n=null==a?void 0:a.loginIds)||void 0===n?void 0:n[0],o=null==a?void 0:a.name;i&&((t=>{p(D,t)})(i),(t=>{p(T,t)})(o))}}));let l=e.wrapWith(s,["flow.start"],J);return l=e.wrapWith(l,["logout","logoutAll"],L(o)),Object.assign(l,{getLastUserLoginId:K,getLastUserDisplayName:R})}),(n=>a=>{var{persistTokens:i,sessionTokenViaCookie:o,storagePrefix:r}=a,s=t.__rest(a,["persistTokens","sessionTokenViaCookie","storagePrefix"]);if(!i||!v)return n(s);const l=n(c(s,{beforeRequest:(d=r,t=>Object.assign(t,{token:t.token||I(d)})),afterRequest:async(e,n)=>{const a=/^\/v\d+\/mgmt\//.test(e.path);401===(null==n?void 0:n.status)?a||j(r):((e={},n,a)=>{var{refreshJwt:i,sessionJwt:o}=e,r=t.__rest(e,["refreshJwt","sessionJwt"]);void 0===n&&(n=!1),void 0===a&&(a=""),i&&p(`${a}${y}`,i),o&&(n?S(m,o,r):p(`${a}${m}`,o))})(await u(n),o,r)}}));var d;const g=e.wrapWith(l,["logout","logoutAll"],E(r));return Object.assign(g,{getRefreshToken:()=>I(r),getSessionToken:()=>O(r)})}))(((...t)=>{const e=r.default(...t);return Object.assign(Object.assign({},e),{refresh:t=>{const n=O();return e.refresh(t,{dcs:n?"t":"f"})},flow:X(e),webauthn:G(e),fedcm:Z(e,t[0].projectId)})}));exports.REFRESH_TOKEN_KEY=y,exports.SESSION_TOKEN_KEY=m,exports.clearFingerprintData=()=>{localStorage.removeItem(k)},exports.default=Y,exports.ensureFingerprintIds=A; | ||
//# sourceMappingURL=index.cjs.js.map |
@@ -1,2 +0,2 @@ | ||
import{__rest as t}from"tslib";import e,{wrapWith as n}from"@descope/core-js-sdk";import o from"jwt-decode";import a from"js-cookie";import{load as i,defaultEndpoint as r,defaultScriptUrlPattern as s}from"@fingerprintjs/fingerprintjs-pro";const l=(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},c=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||{}},u=async t=>{const e=await c(t);return(null==e?void 0:e.user)||((null==e?void 0:e.hasOwnProperty("userId"))?e:void 0)},d="undefined"!=typeof localStorage,g=(t,e)=>d&&(null===localStorage||void 0===localStorage?void 0:localStorage.setItem(t,e)),p=t=>d&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem(t)),f=t=>d&&(null===localStorage||void 0===localStorage?void 0:localStorage.removeItem(t)),w=(...t)=>{console.debug(...t)},v="undefined"!=typeof window,h=Math.pow(2,31)-1,m="DS",b="DSR";function y(t,e,{cookiePath:n,cookieDomain:o,cookieExpiration:i}){if(e){const r=new Date(1e3*i),s=function(t){const e=window.location.hostname.split("."),n=t.split(".");return e.slice(-n.length).join(".")===t}(o);a.set(t,e,{path:n,domain:s?o:void 0,expires:r,sameSite:"Strict",secure:!0})}}function S(t=""){return p(`${t}${b}`)||""}function I(t=""){f(`${t}${b}`),f(`${t}${m}`),a.remove(m)}const O=v&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem("fingerprint.endpoint.url"))||"https://api.descope.com",k="fp",j=(t=!1)=>{const e=localStorage.getItem(k);if(!e)return null;const n=JSON.parse(e);return(new Date).getTime()>n.expiry&&!t?null:n.value},U=async(t,e=O)=>{try{if(j())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(e);o.pathname="/fXj8gt3x8VulJBna/x96Emn69oZwcd7I6";const a=new URL(e);a.pathname="/fXj8gt3x8VulJBna/w78aRZnnDZ3Aqw0I";const l=a.toString()+"?apiKey=<apiKey>&version=<version>&loaderVersion=<loaderVersion>",c=i({apiKey:t,endpoint:[o.toString(),r],scriptUrlPattern:[l,s]}),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(k,JSON.stringify(e))})(g)}catch(t){console.warn("Could not load fingerprint",t)}},A=()=>{localStorage.removeItem(k)},D=t=>{const e=j(!0);return e&&t.body&&(t.body.fpData=e),t},T="dls_last_user_login_id",x="dls_last_user_display_name",J=()=>p(T),L=()=>p(x),_=t=>async(...e)=>{var n;e[1]=e[1]||{};const[,o={}]=e,a=J(),i=L();a&&(null!==(n=o.lastAuth)&&void 0!==n||(o.lastAuth={}),o.lastAuth.loginId=a,o.lastAuth.name=i);return await t(...e)},C=t=>e=>async(...n)=>{const o=await e(...n);return t||(f(T),f(x)),o};function R(){const t=[];return{pub:e=>{t.forEach((t=>t(e)))},sub:e=>{const n=t.push(e)-1;return()=>t.splice(n,1)}}}const K=t=>e=>async(...n)=>{const o=await e(...n);return I(t),o};async function $(t){const e=function(t){var e;const n=JSON.parse(t);return n.publicKey.challenge=H(n.publicKey.challenge),n.publicKey.user.id=H(n.publicKey.user.id),null===(e=n.publicKey.excludeCredentials)||void 0===e||e.forEach((t=>{t.id=H(t.id)})),n}(t),n=await navigator.credentials.create(e);return o=n,JSON.stringify({id:o.id,rawId:G(o.rawId),type:o.type,response:{attestationObject:G(o.response.attestationObject),clientDataJSON:G(o.response.clientDataJSON)}});var o}async function N(t){const e=E(t);return V(await navigator.credentials.get(e))}async function P(t,e){const n=E(t);n.signal=e.signal,n.mediation="conditional";return V(await navigator.credentials.get(n))}async function q(t=!1){if(!v)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=H(n.publicKey.challenge),null===(e=n.publicKey.allowCredentials)||void 0===e||e.forEach((t=>{t.id=H(t.id)})),n}function V(t){return JSON.stringify({id:t.id,rawId:G(t.rawId),type:t.type,response:{authenticatorData:G(t.response.authenticatorData),clientDataJSON:G(t.response.clientDataJSON),signature:G(t.response.signature),userHandle:t.response.userHandle?G(t.response.userHandle):void 0}})}function H(t){const e=t.replace(/_/g,"/").replace(/-/g,"+");return Uint8Array.from(atob(e),(t=>t.charCodeAt(0))).buffer}function G(t){return btoa(String.fromCharCode.apply(null,new Uint8Array(t))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}var M,B=(M=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 $(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 $(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 $(o.data.options);return await t.webauthn.update.finish(o.data.transactionId,a)},helpers:{create:$,get:N,isSupported:q,conditional:P}}),(...t)=>{const e=M(...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 Z={config:"/fedcm/config"},F=(t,e)=>({async oneTap(e,n,o,a){const i=null!=e?e:"google",r=await t.oauth.startNative(i,o,!0);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())}))}))},async launch(n){var o;const a={identity:{context:n||"signin",providers:[{configURL:t.httpClient.buildUrl(e+Z.config),clientId:e}]}},i=await(null===(o=navigator.credentials)||void 0===o?void 0:o.get(a));return t.refresh(i.token)},isSupported:()=>v&&"IdentityCredential"in window});var X=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 v?(o&&a&&U(o).catch((()=>null)),e(l(i,{beforeRequest:D}))):e(i)}),(e=>a=>{var{autoRefresh:i}=a,r=t(a,["autoRefresh"]);if(!i)return e(r);const{clearAllTimers:s,setTimer:u}=(()=>{const t=[];return{clearAllTimers:()=>{for(;t.length;)clearTimeout(t.pop())},setTimer:(e,n)=>{t.push(setTimeout(e,n))}}})();let d,g;v&&document.addEventListener("visibilitychange",(()=>{"visible"===document.visibilityState&&new Date>d&&(w("Expiration time passed, refreshing session"),p.refresh(S()||g))}));const p=e(l(r,{afterRequest:async(t,e)=>{const{refreshJwt:n,sessionJwt:a}=await c(e);if(401===(null==e?void 0:e.status))w("Received 401, canceling all timers"),s();else if(a){if(d=(t=>{try{const e=o(t);if(e.exp)return new Date(1e3*e.exp)}catch(t){return null}})(a),!d)return void w("Could not extract expiration time from session token");g=n;let t=((i=d)?i.getTime()-(new Date).getTime():0)-2e4;t>h&&(w(`Timeout is too large (${t}ms), setting it to ${h}ms`),t=h),s();const e=new Date(Date.now()+t).toLocaleTimeString("en-US",{hour12:!1});w(`Setting refresh timer for ${e}. (${t}ms)`),u((()=>{w("Refreshing session due to timer"),p.refresh(S()||n)}),t)}var i}}));return n(p,["logout","logoutAll"],(t=>async(...e)=>{const n=await t(...e);return w("Clearing all timers"),s(),n}))}),(t=>e=>t(Object.assign(Object.assign({},e),{baseHeaders:Object.assign({"x-descope-sdk-name":"web-js","x-descope-sdk-version":"1.16.2"},e.baseHeaders)}))),(t=>e=>{const o=R(),a=R(),i=t(l(e,{afterRequest:async(t,e)=>{if(401===(null==e?void 0:e.status))o.pub(null),a.pub(null);else{const t=await u(e);t&&a.pub(t);const{sessionJwt:n}=await c(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})}),(e=>o=>{var{storeLastAuthenticatedUser:a=!0,keepLastAuthenticatedUserAfterLogout:i=!1}=o,r=t(o,["storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout"]);if(!a)return Object.assign(e(r),{getLastUserLoginId:J,getLastUserDisplayName:L});const s=e(l(r,{afterRequest:async(t,e)=>{var n;const o=await u(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=>{g(T,t)})(a),(t=>{g(x,t)})(i))}}));let c=n(s,["flow.start"],_);return c=n(c,["logout","logoutAll"],C(i)),Object.assign(c,{getLastUserLoginId:J,getLastUserDisplayName:L})}),(e=>o=>{var{persistTokens:i,sessionTokenViaCookie:r,storagePrefix:s}=o,u=t(o,["persistTokens","sessionTokenViaCookie","storagePrefix"]);if(!i||!v)return e(u);const d=e(l(u,{beforeRequest:(f=s,t=>Object.assign(t,{token:t.token||S(f)})),afterRequest:async(e,n)=>{const o=/^\/v\d+\/mgmt\//.test(e.path);401===(null==n?void 0:n.status)?o||I(s):((e={},n,o)=>{var{refreshJwt:a,sessionJwt:i}=e,r=t(e,["refreshJwt","sessionJwt"]);void 0===n&&(n=!1),void 0===o&&(o=""),a&&g(`${o}${b}`,a),i&&(n?y(m,i,r):g(`${o}${m}`,i))})(await c(n),r,s)}}));var f;const w=n(d,["logout","logoutAll"],K(s));return Object.assign(w,{getRefreshToken:()=>S(s),getSessionToken:()=>function(t=""){return a.get(m)||p(`${t}${m}`)||""}(s)})}))(((...t)=>{const n=e(...t);return Object.assign(Object.assign({},n),{flow:X(n),webauthn:B(n),fedcm:F(n,t[0].projectId)})}));export{b as REFRESH_TOKEN_KEY,m as SESSION_TOKEN_KEY,A as clearFingerprintData,z as default,U as ensureFingerprintIds}; | ||
import{__rest as t}from"tslib";import e,{wrapWith as n}from"@descope/core-js-sdk";import o from"jwt-decode";import a from"js-cookie";import{load as i,defaultEndpoint as r,defaultScriptUrlPattern as s}from"@fingerprintjs/fingerprintjs-pro";const l=(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},c=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||{}},u=async t=>{const e=await c(t);return(null==e?void 0:e.user)||((null==e?void 0:e.hasOwnProperty("userId"))?e:void 0)},d="undefined"!=typeof localStorage,g=(t,e)=>d&&(null===localStorage||void 0===localStorage?void 0:localStorage.setItem(t,e)),p=t=>d&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem(t)),f=t=>d&&(null===localStorage||void 0===localStorage?void 0:localStorage.removeItem(t)),w=(...t)=>{console.debug(...t)},v="undefined"!=typeof window,h=Math.pow(2,31)-1,m="DS",b="DSR";function y(t,e,{cookiePath:n,cookieDomain:o,cookieExpiration:i}){if(e){const r=new Date(1e3*i),s=function(t){const e=window.location.hostname.split("."),n=t.split(".");return e.slice(-n.length).join(".")===t}(o);a.set(t,e,{path:n,domain:s?o:void 0,expires:r,sameSite:"Strict",secure:!0})}}function S(t=""){return p(`${t}${b}`)||""}function I(t=""){return a.get(m)||p(`${t}${m}`)||""}function O(t=""){f(`${t}${b}`),f(`${t}${m}`),a.remove(m)}const k=v&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem("fingerprint.endpoint.url"))||"https://api.descope.com",j="fp",U=(t=!1)=>{const e=localStorage.getItem(j);if(!e)return null;const n=JSON.parse(e);return(new Date).getTime()>n.expiry&&!t?null:n.value},A=async(t,e=k)=>{try{if(U())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(e);o.pathname="/fXj8gt3x8VulJBna/x96Emn69oZwcd7I6";const a=new URL(e);a.pathname="/fXj8gt3x8VulJBna/w78aRZnnDZ3Aqw0I";const l=a.toString()+"?apiKey=<apiKey>&version=<version>&loaderVersion=<loaderVersion>",c=i({apiKey:t,endpoint:[o.toString(),r],scriptUrlPattern:[l,s]}),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(j,JSON.stringify(e))})(g)}catch(t){console.warn("Could not load fingerprint",t)}},D=()=>{localStorage.removeItem(j)},T=t=>{const e=U(!0);return e&&t.body&&(t.body.fpData=e),t},x="dls_last_user_login_id",J="dls_last_user_display_name",L=()=>p(x),_=()=>p(J),C=t=>async(...e)=>{var n;e[1]=e[1]||{};const[,o={}]=e,a=L(),i=_();a&&(null!==(n=o.lastAuth)&&void 0!==n||(o.lastAuth={}),o.lastAuth.loginId=a,o.lastAuth.name=i);return await t(...e)},R=t=>e=>async(...n)=>{const o=await e(...n);return t||(f(x),f(J)),o};function K(){const t=[];return{pub:e=>{t.forEach((t=>t(e)))},sub:e=>{const n=t.push(e)-1;return()=>t.splice(n,1)}}}const $=t=>e=>async(...n)=>{const o=await e(...n);return O(t),o};async function N(t){const e=function(t){var e;const n=JSON.parse(t);return n.publicKey.challenge=G(n.publicKey.challenge),n.publicKey.user.id=G(n.publicKey.user.id),null===(e=n.publicKey.excludeCredentials)||void 0===e||e.forEach((t=>{t.id=G(t.id)})),n}(t),n=await navigator.credentials.create(e);return o=n,JSON.stringify({id:o.id,rawId:M(o.rawId),type:o.type,response:{attestationObject:M(o.response.attestationObject),clientDataJSON:M(o.response.clientDataJSON)}});var o}async function P(t){const e=V(t);return H(await navigator.credentials.get(e))}async function q(t,e){const n=V(t);n.signal=e.signal,n.mediation="conditional";return H(await navigator.credentials.get(n))}async function E(t=!1){if(!v)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 V(t){var e;const n=JSON.parse(t);return n.publicKey.challenge=G(n.publicKey.challenge),null===(e=n.publicKey.allowCredentials)||void 0===e||e.forEach((t=>{t.id=G(t.id)})),n}function H(t){return JSON.stringify({id:t.id,rawId:M(t.rawId),type:t.type,response:{authenticatorData:M(t.response.authenticatorData),clientDataJSON:M(t.response.clientDataJSON),signature:M(t.response.signature),userHandle:t.response.userHandle?M(t.response.userHandle):void 0}})}function G(t){const e=t.replace(/_/g,"/").replace(/-/g,"+");return Uint8Array.from(atob(e),(t=>t.charCodeAt(0))).buffer}function M(t){return btoa(String.fromCharCode.apply(null,new Uint8Array(t))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}var B,Z=(B=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 N(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 P(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 N(o.data.options);return await t.webauthn.signUp.finish(o.data.transactionId,e)}{const e=await P(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 N(o.data.options);return await t.webauthn.update.finish(o.data.transactionId,a)},helpers:{create:N,get:P,isSupported:E,conditional:q}}),(...t)=>{const e=B(...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 F={config:"/fedcm/config"},X=(t,e)=>({async oneTap(e,n,o,a){const i=null!=e?e:"google",r=await t.oauth.startNative(i,o,!0);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())}))}))},async launch(n){var o;const a={identity:{context:n||"signin",providers:[{configURL:t.httpClient.buildUrl(e+F.config),clientId:e}]}},i=await(null===(o=navigator.credentials)||void 0===o?void 0:o.get(a));return t.refresh(i.token)},isSupported:()=>v&&"IdentityCredential"in window});var z=t=>Object.assign(Object.assign({},t.flow),{start:async(...e)=>{const n=await E(),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 Q=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 v?(o&&a&&A(o).catch((()=>null)),e(l(i,{beforeRequest:T}))):e(i)}),(e=>a=>{var{autoRefresh:i}=a,r=t(a,["autoRefresh"]);if(!i)return e(r);const{clearAllTimers:s,setTimer:u}=(()=>{const t=[];return{clearAllTimers:()=>{for(;t.length;)clearTimeout(t.pop())},setTimer:(e,n)=>{t.push(setTimeout(e,n))}}})();let d,g;v&&document.addEventListener("visibilitychange",(()=>{"visible"===document.visibilityState&&new Date>d&&(w("Expiration time passed, refreshing session"),p.refresh(S()||g))}));const p=e(l(r,{afterRequest:async(t,e)=>{const{refreshJwt:n,sessionJwt:a}=await c(e);if(401===(null==e?void 0:e.status))w("Received 401, canceling all timers"),s();else if(a){if(d=(t=>{try{const e=o(t);if(e.exp)return new Date(1e3*e.exp)}catch(t){return null}})(a),!d)return void w("Could not extract expiration time from session token");g=n;let t=((i=d)?i.getTime()-(new Date).getTime():0)-2e4;t>h&&(w(`Timeout is too large (${t}ms), setting it to ${h}ms`),t=h),s();const e=new Date(Date.now()+t).toLocaleTimeString("en-US",{hour12:!1});w(`Setting refresh timer for ${e}. (${t}ms)`),u((()=>{w("Refreshing session due to timer"),p.refresh(S()||n)}),t)}var i}}));return n(p,["logout","logoutAll"],(t=>async(...e)=>{const n=await t(...e);return w("Clearing all timers"),s(),n}))}),(t=>e=>t(Object.assign(Object.assign({},e),{baseHeaders:Object.assign({"x-descope-sdk-name":"web-js","x-descope-sdk-version":"1.16.3"},e.baseHeaders)}))),(t=>e=>{const o=K(),a=K(),i=t(l(e,{afterRequest:async(t,e)=>{if(401===(null==e?void 0:e.status))o.pub(null),a.pub(null);else{const t=await u(e);t&&a.pub(t);const{sessionJwt:n}=await c(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})}),(e=>o=>{var{storeLastAuthenticatedUser:a=!0,keepLastAuthenticatedUserAfterLogout:i=!1}=o,r=t(o,["storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout"]);if(!a)return Object.assign(e(r),{getLastUserLoginId:L,getLastUserDisplayName:_});const s=e(l(r,{afterRequest:async(t,e)=>{var n;const o=await u(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=>{g(x,t)})(a),(t=>{g(J,t)})(i))}}));let c=n(s,["flow.start"],C);return c=n(c,["logout","logoutAll"],R(i)),Object.assign(c,{getLastUserLoginId:L,getLastUserDisplayName:_})}),(e=>o=>{var{persistTokens:a,sessionTokenViaCookie:i,storagePrefix:r}=o,s=t(o,["persistTokens","sessionTokenViaCookie","storagePrefix"]);if(!a||!v)return e(s);const u=e(l(s,{beforeRequest:(d=r,t=>Object.assign(t,{token:t.token||S(d)})),afterRequest:async(e,n)=>{const o=/^\/v\d+\/mgmt\//.test(e.path);401===(null==n?void 0:n.status)?o||O(r):((e={},n,o)=>{var{refreshJwt:a,sessionJwt:i}=e,r=t(e,["refreshJwt","sessionJwt"]);void 0===n&&(n=!1),void 0===o&&(o=""),a&&g(`${o}${b}`,a),i&&(n?y(m,i,r):g(`${o}${m}`,i))})(await c(n),i,r)}}));var d;const p=n(u,["logout","logoutAll"],$(r));return Object.assign(p,{getRefreshToken:()=>S(r),getSessionToken:()=>I(r)})}))(((...t)=>{const n=e(...t);return Object.assign(Object.assign({},n),{refresh:t=>{const e=I();return n.refresh(t,{dcs:e?"t":"f"})},flow:z(n),webauthn:Z(n),fedcm:X(n,t[0].projectId)})}));export{b as REFRESH_TOKEN_KEY,m as SESSION_TOKEN_KEY,D as clearFingerprintData,Q as default,A as ensureFingerprintIds}; | ||
//# sourceMappingURL=index.esm.js.map |
@@ -1,4 +0,4 @@ | ||
!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)),s=e=>o&&(null===localStorage||void 0===localStorage?void 0:localStorage.removeItem(e));var a=function(){return a=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},a.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 l(e){this.message=e}"function"==typeof SuppressedError&&SuppressedError,l.prototype=new Error,l.prototype.name="InvalidCharacterError";var u="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(e){var t=String(e).replace(/=+$/,"");if(t.length%4==1)throw new l("'atob' failed: The string to be decoded is not correctly encoded.");for(var n,o,r=0,i=0,s="";o=t.charAt(i++);~o&&(n=r%4?64*n+o:o,r++%4)?s+=String.fromCharCode(255&n>>(-2*r&6)):0)o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(o);return s};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(u(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 u(t)}}(e.split(".")[n]))}catch(e){throw new d("Invalid token specified: "+e.message)}}d.prototype=new Error,d.prototype.name="InvalidTokenError";var g="/v1/auth/accesskey/exchange",f="/v1/auth/otp/verify",h="/v1/auth/otp/signin",v="/v1/auth/otp/signup",m={email:"/v1/auth/otp/update/email",phone:"/v1/auth/otp/update/phone"},w="/v1/auth/otp/signup-in",b="/v1/auth/magiclink/verify",y="/v1/auth/magiclink/signin",I="/v1/auth/magiclink/signup",k={email:"/v1/auth/magiclink/update/email",phone:"/v1/auth/magiclink/update/phone"},O="/v1/auth/magiclink/signup-in",j="/v1/auth/enchantedlink/verify",U="/v1/auth/enchantedlink/signin",S="/v1/auth/enchantedlink/signup",P="/v1/auth/enchantedlink/pending-session",R={email:"/v1/auth/enchantedlink/update/email"},E="/v1/auth/enchantedlink/signup-in",x="/v1/auth/oauth/authorize",A="/v1/auth/oauth/exchange",T="v1/auth/oauth/native/start",C="v1/auth/oauth/native/finish",$="/v1/auth/saml/authorize",q="/v1/auth/saml/exchange",D="/v1/auth/totp/verify",L="/v1/auth/totp/signup",_="/v1/auth/totp/update",J="/v1/auth/notp/whatsapp/signin",N="/v1/auth/notp/whatsapp/signup",K="/v1/auth/notp/whatsapp/signup-in",M="/v1/auth/notp/pending-session",H={start:"/v1/auth/webauthn/signup/start",finish:"/v1/auth/webauthn/signup/finish"},V={start:"/v1/auth/webauthn/signin/start",finish:"/v1/auth/webauthn/signin/finish"},B={start:"/v1/auth/webauthn/signup-in/start"},F={start:"v1/auth/webauthn/update/start",finish:"/v1/auth/webauthn/update/finish"},z="/v1/auth/password/signup",Z="/v1/auth/password/signin",G="/v1/auth/password/reset",X="/v1/auth/password/update",Y="/v1/auth/password/replace",Q="/v1/auth/password/policy",W="/v1/auth/refresh",ee="/v1/auth/tenant/select",te="/v1/auth/logout",ne="/v1/auth/logoutall",oe="/v1/auth/me",re="/v1/auth/me/history",ie="/v1/flow/start",se="/v1/flow/next";const ae="<region>",ce=`https://api.${ae}descope.com`,le=6e5,ue="dct",de=()=>{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 pe;!function(e){e.get="GET",e.delete="DELETE",e.post="POST",e.put="PUT",e.patch="PATCH"}(pe||(pe={}));const ge=({path:e,baseUrl:t,queryParams:n,projectId:o})=>{const r=o.slice(1,-27);t=t.replace(ae,r?r+".":"");let i=e?`${t.replace(/\/$/,"")}/${null==e?void 0:e.replace(/^\//,"")}`:t;if(n){i=`${i}?`;const e=Object.keys(n);e.forEach(((t,o)=>{i=`${i}${t}=${n[t]}${o===e.length-1?"":"&"}`}))}return i},fe=(...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}),{})),he={"Content-Type":"application/json"},ve=(e,t="")=>{let n=e;return t&&(n=n+":"+t),{Authorization:`Bearer ${n}`}},me=e=>{try{e=JSON.parse(e)}catch(e){return!1}return"object"==typeof e&&null!==e},we=({baseUrl:e,projectId:t,baseConfig:n,logger:o,hooks:r,cookiePolicy:i,fetch:s})=>{const a=((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=>de().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 de().title("Response").url(e.url.toString()).status(`${e.status} ${e.statusText}`).headers(e.headers).body(t).build()})(o)),o}:n})(o,s),c=async o=>{var s;const c=(null==r?void 0:r.beforeRequest)?r.beforeRequest(o):o,{path:l,body:u,headers:d,queryParams:p,method:g,token:f}=c,h=(e=>void 0===e?void 0:JSON.stringify(e))(u),v={headers:fe(ve(t,f),{"x-descope-sdk-name":"core-js","x-descope-sdk-version":"2.24.2"},(null==n?void 0:n.baseHeaders)||{},me(h)?he:{},d),method:g,body:h};null!==i&&(v.credentials=i||"include");const m=await a(ge({path:l,baseUrl:e,queryParams:p,projectId:t}),v);if((null==r?void 0:r.afterRequest)&&await r.afterRequest(o,null==m?void 0:m.clone()),null==r?void 0:r.transformResponse){const e=await m.json(),t=((null===(s=m.headers)||void 0===s?void 0:s.get("set-cookie"))||"").split(";").reduce(((e,t)=>{const[n,o]=t.split("=");return Object.assign(Object.assign({},e),{[n.trim()]:o})}),{}),n=Object.assign(Object.assign({},m),{json:()=>Promise.resolve(e),cookies:t});return n.clone=()=>n,r.transformResponse(n)}return m};return{get:(e,{headers:t,queryParams:n,token:o}={})=>c({path:e,headers:t,queryParams:n,body:void 0,method:pe.get,token:o}),post:(e,t,{headers:n,queryParams:o,token:r}={})=>c({path:e,headers:n,queryParams:o,body:t,method:pe.post,token:r}),patch:(e,t,{headers:n,queryParams:o,token:r}={})=>c({path:e,headers:n,queryParams:o,body:t,method:pe.patch,token:r}),put:(e,t,{headers:n,queryParams:o,token:r}={})=>c({path:e,headers:n,queryParams:o,body:t,method:pe.put,token:r}),delete:(e,{headers:t,queryParams:n,token:o}={})=>c({path:e,headers:t,queryParams:n,body:void 0,method:pe.delete,token:o}),hooks:r,buildUrl:(n,o)=>ge({projectId:t,baseUrl:e,path:n,queryParams:o})}};var be=429;function ye(e,t,n){var o;let r=Ie(e);if(t){if(!(null==r?void 0:r.tenants)&&(null==r?void 0:r[ue])===t)return(null==r?void 0:r[n])||[];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 Ie(e){if("string"!=typeof e||!e)throw new Error("Invalid token provided");return p(e)}function ke(e){const{exp:t}=Ie(e);return(new Date).getTime()/1e3>t}function Oe(e){let t=Ie(e);const n=Object.keys(null==t?void 0:t.tenants);return Array.isArray(n)?n:[]}function je(e,t){return ye(e,t,"permissions")}function Ue(e,t){return ye(e,t,"roles")}const Se=(...e)=>e.join("/").replace(/\/{2,}/g,"/");async function Pe(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===be&&Object.assign(r.error,{retryAfter:Number.parseInt(null===(n=o.headers)||void 0===n?void 0:n.get("retry-after"))||0})),r}const Re=(e,t)=>(n=t)=>t=>!e(t)&&n.replace("{val}",t),Ee=(...e)=>({validate:t=>(e.forEach((e=>{const n=e(t);if(n)throw new Error(n)})),!0)}),xe=e=>t=>e.test(t),Ae=xe(/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/),Te=xe(/^\+[1-9]{1}[0-9]{3,14}$/),Ce=Re(Ae,'"{val}" is not a valid email'),$e=Re(Te,'"{val}" is not a valid phone number'),qe=Re((1,e=>e.length>=1),"Minimum length is 1");const De=Re((e=>"string"==typeof e),"Input is not a string"),Le=Re((e=>void 0===e),"Input is defined"),_e=(Je=[De(),Le()],"Input is not a string or undefined",(e="Input is not a string or undefined")=>t=>{const n=Je.filter((e=>e(t)));return!(n.length<Je.length)&&(e?e.replace("{val}",t):n.join(" OR "))});var Je;const Ne=(...e)=>t=>(...n)=>(e.forEach(((e,t)=>Ee(...e).validate(n[t]))),t(...n)),Ke=e=>[De(`"${e}" must be a string`)],Me=e=>[De(`"${e}" must be a string`),qe(`"${e}" must not be empty`)],He=e=>[De(`"${e}" must be a string`),Ce()],Ve=e=>[De(`"${e}" must be a string`),$e()],Be=Ne(Me("accessKey")),Fe=e=>({exchange:Be(((t,n)=>Pe(e.post(g,{loginOptions:n},{token:t}))))}),ze=(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 s=i[r];i[r]=n(s)})),e),Ze=({pollingIntervalMs:e=1e3,timeoutMs:t=6e5}={})=>({pollingIntervalMs:Math.max(e||1e3,1e3),timeoutMs:Math.min(t||le,le)});var Ge,Xe;!function(e){e.sms="sms",e.voice="voice",e.whatsapp="whatsapp"}(Ge||(Ge={})),function(e){e.email="email"}(Xe||(Xe={}));const Ye=Object.assign(Object.assign({},Ge),Xe);var Qe;!function(e){e.waiting="waiting",e.running="running",e.completed="completed",e.failed="failed"}(Qe||(Qe={}));const We=Me("loginId"),et=Ne(Me("token")),tt=Ne(We),nt=Ne(Me("pendingRef")),ot=Ne(We,He("email")),rt=e=>({verify:et((t=>Pe(e.post(j,{token:t})))),signIn:tt(((t,n,o,r)=>Pe(e.post(Se(U,Ye.email),{loginId:t,URI:n,loginOptions:o},{token:r})))),signUpOrIn:tt(((t,n,o)=>Pe(e.post(Se(E,Ye.email),{loginId:t,URI:n,loginOptions:o})))),signUp:tt(((t,n,o,r)=>Pe(e.post(Se(S,Ye.email),{loginId:t,URI:n,user:o,loginOptions:r})))),waitForSession:nt(((t,n)=>new Promise((o=>{const{pollingIntervalMs:r,timeoutMs:i}=Ze(n);let s;const a=setInterval((async()=>{const n=await e.post(P,{pendingRef:t});n.ok&&(clearInterval(a),s&&clearTimeout(s),o(Pe(Promise.resolve(n))))}),r);s=setTimeout((()=>{o({error:{errorDescription:`Session polling timeout exceeded: ${i}ms`,errorCode:"0"},ok:!1}),clearInterval(a)}),i)})))),update:{email:ot(((t,n,o,r,i)=>Pe(e.post(R.email,Object.assign({loginId:t,email:n,URI:o},i),{token:r}))))}}),it=Ne(Me("flowId")),st=Ne(Me("executionId"),Me("stepId"),Me("interactionId")),at=e=>({start:it(((t,n,o,r,i,s,a)=>Pe(e.post(ie,{flowId:t,options:n,conditionInteractionId:o,interactionId:r,version:i,componentsVersion:s,input:a})))),next:st(((t,n,o,r,i,s)=>Pe(e.post(se,{executionId:t,stepId:n,interactionId:o,version:r,componentsVersion:i,input:s}))))}),ct=Me("loginId"),lt=Ne(Me("token")),ut=Ne(ct),dt=Ne(ct,Ve("phone")),pt=Ne(ct,He("email")),gt=Object.keys(Ye).filter((e=>e!==Ge.voice)),ft=e=>({verify:lt((t=>Pe(e.post(b,{token:t})))),signIn:gt.reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:ut(((t,o,r,i)=>Pe(e.post(Se(y,n),{loginId:t,URI:o,loginOptions:r},{token:i}))))})),{}),signUp:gt.reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:ut(((t,o,r,i)=>Pe(e.post(Se(I,n),{loginId:t,URI:o,user:r,loginOptions:i}))))})),{}),signUpOrIn:gt.reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:ut(((t,o,r)=>Pe(e.post(Se(O,n),{loginId:t,URI:o,loginOptions:r}))))})),{}),update:{email:pt(((t,n,o,r,i)=>Pe(e.post(k.email,Object.assign({loginId:t,email:n,URI:o},i),{token:r})))),phone:Object.keys(Ge).filter((e=>e!==Ge.voice)).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:dt(((t,o,r,i,s)=>Pe(e.post(Se(k.phone,n),Object.assign({loginId:t,phone:o,URI:r},s),{token:i}))))})),{})}});var ht;!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"}(ht||(ht={}));const vt=Ne(Me("code")),mt=e=>({start:Object.assign(((t,n,o,r)=>Pe(e.post(x,o||{},{queryParams:Object.assign({provider:t},n&&{redirectURL:n}),token:r}))),Object.keys(ht).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:(t,o,r)=>Pe(e.post(x,o||{},{queryParams:Object.assign({provider:n},t&&{redirectURL:t}),token:r}))})),{})),exchange:vt((t=>Pe(e.post(A,{code:t})))),startNative:(t,n,o)=>Pe(e.post(T,{provider:t,loginOptions:n,implicit:o})),finishNative:(t,n,o,r,i)=>Pe(e.post(C,{provider:t,stateId:n,user:o,code:r,idToken:i}))}),wt=Me("loginId"),bt=Ne(wt,Me("code")),yt=Ne(wt),It=Ne(wt,Ve("phone")),kt=Ne(wt,He("email")),Ot=e=>({verify:Object.keys(Ye).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:bt(((t,o)=>Pe(e.post(Se(f,n),{code:o,loginId:t}))))})),{}),signIn:Object.keys(Ye).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:yt(((t,o,r)=>Pe(e.post(Se(h,n),{loginId:t,loginOptions:o},{token:r}))))})),{}),signUp:Object.keys(Ye).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:yt(((t,o,r)=>Pe(e.post(Se(v,n),{loginId:t,user:o,loginOptions:r}))))})),{}),signUpOrIn:Object.keys(Ye).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:yt(((t,o)=>Pe(e.post(Se(w,n),{loginId:t,loginOptions:o}))))})),{}),update:{email:kt(((t,n,o,r)=>Pe(e.post(m.email,Object.assign({loginId:t,email:n},r),{token:o})))),phone:Object.keys(Ge).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:It(((t,o,r,i)=>Pe(e.post(Se(m.phone,n),Object.assign({loginId:t,phone:o},i),{token:r}))))})),{})}}),jt=Ne(Me("tenant")),Ut=Ne(Me("code")),St=e=>({start:jt(((t,n,o,r)=>Pe(e.post($,o||{},{queryParams:{tenant:t,redirectURL:n},token:r})))),exchange:Ut((t=>Pe(e.post(q,{code:t}))))}),Pt=Me("loginId"),Rt=Ne(Pt,Me("code")),Et=Ne(Pt),xt=Ne(Pt),At=e=>({signUp:Et(((t,n)=>Pe(e.post(L,{loginId:t,user:n})))),verify:Rt(((t,n,o,r)=>Pe(e.post(D,{loginId:t,code:n,loginOptions:o},{token:r})))),update:xt(((t,n)=>Pe(e.post(_,{loginId:t},{token:n}))))}),Tt=Me("loginId"),Ct=Me("newPassword"),$t=Ne(Tt,Me("password")),qt=Ne(Tt),Dt=Ne(Tt,Ct),Lt=Ne(Tt,Me("oldPassword"),Ct),_t=e=>({signUp:$t(((t,n,o,r)=>Pe(e.post(z,{loginId:t,password:n,user:o,loginOptions:r})))),signIn:$t(((t,n,o)=>Pe(e.post(Z,{loginId:t,password:n,loginOptions:o})))),sendReset:qt(((t,n,o)=>Pe(e.post(G,{loginId:t,redirectUrl:n,templateOptions:o})))),update:Dt(((t,n,o)=>Pe(e.post(X,{loginId:t,newPassword:n},{token:o})))),replace:Lt(((t,n,o)=>Pe(e.post(Y,{loginId:t,oldPassword:n,newPassword:o})))),policy:()=>Pe(e.get(Q))}),Jt=Ke("loginId"),Nt=Me("loginId"),Kt=Me("origin"),Mt=Ne(Nt,Kt,Me("name")),Ht=Ne(Nt,Kt),Vt=Ne(Jt,Kt),Bt=Ne(Nt,Kt,Me("token")),Ft=Ne(Me("transactionId"),Me("response")),zt=e=>({signUp:{start:Mt(((t,n,o)=>Pe(e.post(H.start,{user:{loginId:t,name:o},origin:n})))),finish:Ft(((t,n)=>Pe(e.post(H.finish,{transactionId:t,response:n}))))},signIn:{start:Vt(((t,n,o,r)=>Pe(e.post(V.start,{loginId:t,origin:n,loginOptions:o},{token:r})))),finish:Ft(((t,n)=>Pe(e.post(V.finish,{transactionId:t,response:n}))))},signUpOrIn:{start:Ht(((t,n)=>Pe(e.post(B.start,{loginId:t,origin:n}))))},update:{start:Bt(((t,n,o)=>Pe(e.post(F.start,{loginId:t,origin:n},{token:o})))),finish:Ft(((t,n)=>Pe(e.post(F.finish,{transactionId:t,response:n}))))}}),Zt=Ke("loginId"),Gt=Ne(Zt),Xt=Ne(Me("pendingRef")),Yt=e=>({signUpOrIn:Gt(((t,n)=>Pe(e.post(K,{loginId:t,loginOptions:n})))),signUp:Gt(((t,n,o)=>Pe(e.post(N,{loginId:t,user:n,loginOptions:o})))),signIn:Gt(((t,n,o)=>Pe(e.post(J,{loginId:t,loginOptions:n},{token:o})))),waitForSession:Xt(((t,n)=>new Promise((o=>{const{pollingIntervalMs:r,timeoutMs:i}=Ze(n);let s;const a=setInterval((async()=>{const n=await e.post(M,{pendingRef:t});n.ok&&(clearInterval(a),s&&clearTimeout(s),o(Pe(Promise.resolve(n))))}),r);s=setTimeout((()=>{o({error:{errorDescription:`Session polling timeout exceeded: ${i}ms`,errorCode:"0"},ok:!1}),clearInterval(a)}),i)}))))}),Qt=Ne(Me("token")),Wt=Ne([_e('"token" must be string or undefined')]);var en,tn=Ne([("projectId",en=Me("projectId"),Re(((e,t)=>n=>Ee(...t).validate(((e,t,n)=>{const o=(Array.isArray(t)?t.join("."):String(t)).replace(/\[\\?("|')?(\w|d)+\\?("|')?\]/g,((e,t,n)=>"."+n)).split("."),r=o.length;let i=0,s=e===Object(e)?e:void 0;for(;null!=s&&i<r;)s=s[o[i++]];return i&&i===r&&void 0!==s?s:void 0})(n,e)))("projectId",en))())])((e=>{var t;return(({projectId:e,logger:t,baseUrl:n,hooks:o,cookiePolicy:r,baseHeaders:i={},fetch:s})=>{return a=we({baseUrl:n||ce,projectId:e,logger:t,hooks:o,cookiePolicy:r,baseConfig:{baseHeaders:i},fetch:s}),{accessKey:Fe(a),otp:Ot(a),magicLink:ft(a),enchantedLink:rt(a),oauth:mt(a),saml:St(a),totp:At(a),notp:Yt(a),webauthn:zt(a),password:_t(a),flow:at(a),refresh:Wt((e=>Pe(a.post(W,{},{token:e})))),selectTenant:Ne([De("tenantId")],[_e('"token" must be string or undefined')])(((e,t)=>Pe(a.post(ee,{tenant:e},{token:t})))),logout:Wt((e=>Pe(a.post(te,{},{token:e})))),logoutAll:Wt((e=>Pe(a.post(ne,{},{token:e})))),me:Wt((e=>Pe(a.get(oe,{token:e})))),history:Wt((e=>Pe(a.get(re,{token:e})))),isJwtExpired:Qt(ke),getTenants:Qt(Oe),getJwtPermissions:Qt(je),getJwtRoles:Qt(Ue),httpClient:a};var a})(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)||[]);0!=r.length&&(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))}))},transformResponse:null===(t=e.hooks)||void 0===t?void 0:t.transformResponse}}))})),nn=Object.assign(tn,{DeliveryMethods:Ye});const on=(...e)=>{console.debug(...e)},rn="undefined"!=typeof window,sn=Math.pow(2,31)-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)),s=e=>o&&(null===localStorage||void 0===localStorage?void 0:localStorage.removeItem(e));var a=function(){return a=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},a.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 l(e){this.message=e}"function"==typeof SuppressedError&&SuppressedError,l.prototype=new Error,l.prototype.name="InvalidCharacterError";var u="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(e){var t=String(e).replace(/=+$/,"");if(t.length%4==1)throw new l("'atob' failed: The string to be decoded is not correctly encoded.");for(var n,o,r=0,i=0,s="";o=t.charAt(i++);~o&&(n=r%4?64*n+o:o,r++%4)?s+=String.fromCharCode(255&n>>(-2*r&6)):0)o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(o);return s};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(u(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 u(t)}}(e.split(".")[n]))}catch(e){throw new d("Invalid token specified: "+e.message)}}d.prototype=new Error,d.prototype.name="InvalidTokenError";var g="/v1/auth/accesskey/exchange",f="/v1/auth/otp/verify",h="/v1/auth/otp/signin",v="/v1/auth/otp/signup",m={email:"/v1/auth/otp/update/email",phone:"/v1/auth/otp/update/phone"},w="/v1/auth/otp/signup-in",b="/v1/auth/magiclink/verify",y="/v1/auth/magiclink/signin",I="/v1/auth/magiclink/signup",k={email:"/v1/auth/magiclink/update/email",phone:"/v1/auth/magiclink/update/phone"},O="/v1/auth/magiclink/signup-in",j="/v1/auth/enchantedlink/verify",U="/v1/auth/enchantedlink/signin",S="/v1/auth/enchantedlink/signup",P="/v1/auth/enchantedlink/pending-session",R={email:"/v1/auth/enchantedlink/update/email"},E="/v1/auth/enchantedlink/signup-in",x="/v1/auth/oauth/authorize",A="/v1/auth/oauth/exchange",T="v1/auth/oauth/native/start",C="v1/auth/oauth/native/finish",$="/v1/auth/saml/authorize",q="/v1/auth/saml/exchange",D="/v1/auth/totp/verify",L="/v1/auth/totp/signup",_="/v1/auth/totp/update",J="/v1/auth/notp/whatsapp/signin",N="/v1/auth/notp/whatsapp/signup",K="/v1/auth/notp/whatsapp/signup-in",M="/v1/auth/notp/pending-session",H={start:"/v1/auth/webauthn/signup/start",finish:"/v1/auth/webauthn/signup/finish"},V={start:"/v1/auth/webauthn/signin/start",finish:"/v1/auth/webauthn/signin/finish"},B={start:"/v1/auth/webauthn/signup-in/start"},F={start:"v1/auth/webauthn/update/start",finish:"/v1/auth/webauthn/update/finish"},z="/v1/auth/password/signup",Z="/v1/auth/password/signin",G="/v1/auth/password/reset",X="/v1/auth/password/update",Y="/v1/auth/password/replace",Q="/v1/auth/password/policy",W="/v1/auth/refresh",ee="/v1/auth/tenant/select",te="/v1/auth/logout",ne="/v1/auth/logoutall",oe="/v1/auth/me",re="/v1/auth/me/history",ie="/v1/flow/start",se="/v1/flow/next";const ae="<region>",ce=`https://api.${ae}descope.com`,le=6e5,ue="dct",de=()=>{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 pe;!function(e){e.get="GET",e.delete="DELETE",e.post="POST",e.put="PUT",e.patch="PATCH"}(pe||(pe={}));const ge=({path:e,baseUrl:t,queryParams:n,projectId:o})=>{const r=o.slice(1,-27);t=t.replace(ae,r?r+".":"");let i=e?`${t.replace(/\/$/,"")}/${null==e?void 0:e.replace(/^\//,"")}`:t;if(n){i=`${i}?`;const e=Object.keys(n);e.forEach(((t,o)=>{i=`${i}${t}=${n[t]}${o===e.length-1?"":"&"}`}))}return i},fe=(...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}),{})),he={"Content-Type":"application/json"},ve=(e,t="")=>{let n=e;return t&&(n=n+":"+t),{Authorization:`Bearer ${n}`}},me=e=>{try{e=JSON.parse(e)}catch(e){return!1}return"object"==typeof e&&null!==e},we=({baseUrl:e,projectId:t,baseConfig:n,logger:o,hooks:r,cookiePolicy:i,fetch:s})=>{const a=((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=>de().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 de().title("Response").url(e.url.toString()).status(`${e.status} ${e.statusText}`).headers(e.headers).body(t).build()})(o)),o}:n})(o,s),c=async o=>{var s;const c=(null==r?void 0:r.beforeRequest)?r.beforeRequest(o):o,{path:l,body:u,headers:d,queryParams:p,method:g,token:f}=c,h=(e=>void 0===e?void 0:JSON.stringify(e))(u),v={headers:fe(ve(t,f),{"x-descope-sdk-name":"core-js","x-descope-sdk-version":"2.24.3"},(null==n?void 0:n.baseHeaders)||{},me(h)?he:{},d),method:g,body:h};null!==i&&(v.credentials=i||"include");const m=await a(ge({path:l,baseUrl:e,queryParams:p,projectId:t}),v);if((null==r?void 0:r.afterRequest)&&await r.afterRequest(o,null==m?void 0:m.clone()),null==r?void 0:r.transformResponse){const e=await m.json(),t=((null===(s=m.headers)||void 0===s?void 0:s.get("set-cookie"))||"").split(";").reduce(((e,t)=>{const[n,o]=t.split("=");return Object.assign(Object.assign({},e),{[n.trim()]:o})}),{}),n=Object.assign(Object.assign({},m),{json:()=>Promise.resolve(e),cookies:t});return n.clone=()=>n,r.transformResponse(n)}return m};return{get:(e,{headers:t,queryParams:n,token:o}={})=>c({path:e,headers:t,queryParams:n,body:void 0,method:pe.get,token:o}),post:(e,t,{headers:n,queryParams:o,token:r}={})=>c({path:e,headers:n,queryParams:o,body:t,method:pe.post,token:r}),patch:(e,t,{headers:n,queryParams:o,token:r}={})=>c({path:e,headers:n,queryParams:o,body:t,method:pe.patch,token:r}),put:(e,t,{headers:n,queryParams:o,token:r}={})=>c({path:e,headers:n,queryParams:o,body:t,method:pe.put,token:r}),delete:(e,{headers:t,queryParams:n,token:o}={})=>c({path:e,headers:t,queryParams:n,body:void 0,method:pe.delete,token:o}),hooks:r,buildUrl:(n,o)=>ge({projectId:t,baseUrl:e,path:n,queryParams:o})}};var be=429;function ye(e,t,n){var o;let r=Ie(e);if(t){if(!(null==r?void 0:r.tenants)&&(null==r?void 0:r[ue])===t)return(null==r?void 0:r[n])||[];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 Ie(e){if("string"!=typeof e||!e)throw new Error("Invalid token provided");return p(e)}function ke(e){const{exp:t}=Ie(e);return(new Date).getTime()/1e3>t}function Oe(e){let t=Ie(e);const n=Object.keys(null==t?void 0:t.tenants);return Array.isArray(n)?n:[]}function je(e,t){return ye(e,t,"permissions")}function Ue(e,t){return ye(e,t,"roles")}const Se=(...e)=>e.join("/").replace(/\/{2,}/g,"/");async function Pe(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===be&&Object.assign(r.error,{retryAfter:Number.parseInt(null===(n=o.headers)||void 0===n?void 0:n.get("retry-after"))||0})),r}const Re=(e,t)=>(n=t)=>t=>!e(t)&&n.replace("{val}",t),Ee=(...e)=>({validate:t=>(e.forEach((e=>{const n=e(t);if(n)throw new Error(n)})),!0)}),xe=e=>t=>e.test(t),Ae=xe(/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/),Te=xe(/^\+[1-9]{1}[0-9]{3,14}$/),Ce=Re(Ae,'"{val}" is not a valid email'),$e=Re(Te,'"{val}" is not a valid phone number'),qe=Re((1,e=>e.length>=1),"Minimum length is 1");const De=Re((e=>"string"==typeof e),"Input is not a string"),Le=Re((e=>void 0===e),"Input is defined"),_e=(Je=[De(),Le()],"Input is not a string or undefined",(e="Input is not a string or undefined")=>t=>{const n=Je.filter((e=>e(t)));return!(n.length<Je.length)&&(e?e.replace("{val}",t):n.join(" OR "))});var Je;const Ne=(...e)=>t=>(...n)=>(e.forEach(((e,t)=>Ee(...e).validate(n[t]))),t(...n)),Ke=e=>[De(`"${e}" must be a string`)],Me=e=>[De(`"${e}" must be a string`),qe(`"${e}" must not be empty`)],He=e=>[De(`"${e}" must be a string`),Ce()],Ve=e=>[De(`"${e}" must be a string`),$e()],Be=Ne(Me("accessKey")),Fe=e=>({exchange:Be(((t,n)=>Pe(e.post(g,{loginOptions:n},{token:t}))))}),ze=(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 s=i[r];i[r]=n(s)})),e),Ze=({pollingIntervalMs:e=1e3,timeoutMs:t=6e5}={})=>({pollingIntervalMs:Math.max(e||1e3,1e3),timeoutMs:Math.min(t||le,le)});var Ge,Xe;!function(e){e.sms="sms",e.voice="voice",e.whatsapp="whatsapp"}(Ge||(Ge={})),function(e){e.email="email"}(Xe||(Xe={}));const Ye=Object.assign(Object.assign({},Ge),Xe);var Qe;!function(e){e.waiting="waiting",e.running="running",e.completed="completed",e.failed="failed"}(Qe||(Qe={}));const We=Me("loginId"),et=Ne(Me("token")),tt=Ne(We),nt=Ne(Me("pendingRef")),ot=Ne(We,He("email")),rt=e=>({verify:et((t=>Pe(e.post(j,{token:t})))),signIn:tt(((t,n,o,r)=>Pe(e.post(Se(U,Ye.email),{loginId:t,URI:n,loginOptions:o},{token:r})))),signUpOrIn:tt(((t,n,o)=>Pe(e.post(Se(E,Ye.email),{loginId:t,URI:n,loginOptions:o})))),signUp:tt(((t,n,o,r)=>Pe(e.post(Se(S,Ye.email),{loginId:t,URI:n,user:o,loginOptions:r})))),waitForSession:nt(((t,n)=>new Promise((o=>{const{pollingIntervalMs:r,timeoutMs:i}=Ze(n);let s;const a=setInterval((async()=>{const n=await e.post(P,{pendingRef:t});n.ok&&(clearInterval(a),s&&clearTimeout(s),o(Pe(Promise.resolve(n))))}),r);s=setTimeout((()=>{o({error:{errorDescription:`Session polling timeout exceeded: ${i}ms`,errorCode:"0"},ok:!1}),clearInterval(a)}),i)})))),update:{email:ot(((t,n,o,r,i)=>Pe(e.post(R.email,Object.assign({loginId:t,email:n,URI:o},i),{token:r}))))}}),it=Ne(Me("flowId")),st=Ne(Me("executionId"),Me("stepId"),Me("interactionId")),at=e=>({start:it(((t,n,o,r,i,s,a)=>Pe(e.post(ie,{flowId:t,options:n,conditionInteractionId:o,interactionId:r,version:i,componentsVersion:s,input:a})))),next:st(((t,n,o,r,i,s)=>Pe(e.post(se,{executionId:t,stepId:n,interactionId:o,version:r,componentsVersion:i,input:s}))))}),ct=Me("loginId"),lt=Ne(Me("token")),ut=Ne(ct),dt=Ne(ct,Ve("phone")),pt=Ne(ct,He("email")),gt=Object.keys(Ye).filter((e=>e!==Ge.voice)),ft=e=>({verify:lt((t=>Pe(e.post(b,{token:t})))),signIn:gt.reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:ut(((t,o,r,i)=>Pe(e.post(Se(y,n),{loginId:t,URI:o,loginOptions:r},{token:i}))))})),{}),signUp:gt.reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:ut(((t,o,r,i)=>Pe(e.post(Se(I,n),{loginId:t,URI:o,user:r,loginOptions:i}))))})),{}),signUpOrIn:gt.reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:ut(((t,o,r)=>Pe(e.post(Se(O,n),{loginId:t,URI:o,loginOptions:r}))))})),{}),update:{email:pt(((t,n,o,r,i)=>Pe(e.post(k.email,Object.assign({loginId:t,email:n,URI:o},i),{token:r})))),phone:Object.keys(Ge).filter((e=>e!==Ge.voice)).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:dt(((t,o,r,i,s)=>Pe(e.post(Se(k.phone,n),Object.assign({loginId:t,phone:o,URI:r},s),{token:i}))))})),{})}});var ht;!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"}(ht||(ht={}));const vt=Ne(Me("code")),mt=e=>({start:Object.assign(((t,n,o,r)=>Pe(e.post(x,o||{},{queryParams:Object.assign({provider:t},n&&{redirectURL:n}),token:r}))),Object.keys(ht).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:(t,o,r)=>Pe(e.post(x,o||{},{queryParams:Object.assign({provider:n},t&&{redirectURL:t}),token:r}))})),{})),exchange:vt((t=>Pe(e.post(A,{code:t})))),startNative:(t,n,o)=>Pe(e.post(T,{provider:t,loginOptions:n,implicit:o})),finishNative:(t,n,o,r,i)=>Pe(e.post(C,{provider:t,stateId:n,user:o,code:r,idToken:i}))}),wt=Me("loginId"),bt=Ne(wt,Me("code")),yt=Ne(wt),It=Ne(wt,Ve("phone")),kt=Ne(wt,He("email")),Ot=e=>({verify:Object.keys(Ye).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:bt(((t,o)=>Pe(e.post(Se(f,n),{code:o,loginId:t}))))})),{}),signIn:Object.keys(Ye).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:yt(((t,o,r)=>Pe(e.post(Se(h,n),{loginId:t,loginOptions:o},{token:r}))))})),{}),signUp:Object.keys(Ye).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:yt(((t,o,r)=>Pe(e.post(Se(v,n),{loginId:t,user:o,loginOptions:r}))))})),{}),signUpOrIn:Object.keys(Ye).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:yt(((t,o)=>Pe(e.post(Se(w,n),{loginId:t,loginOptions:o}))))})),{}),update:{email:kt(((t,n,o,r)=>Pe(e.post(m.email,Object.assign({loginId:t,email:n},r),{token:o})))),phone:Object.keys(Ge).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:It(((t,o,r,i)=>Pe(e.post(Se(m.phone,n),Object.assign({loginId:t,phone:o},i),{token:r}))))})),{})}}),jt=Ne(Me("tenant")),Ut=Ne(Me("code")),St=e=>({start:jt(((t,n,o,r)=>Pe(e.post($,o||{},{queryParams:{tenant:t,redirectURL:n},token:r})))),exchange:Ut((t=>Pe(e.post(q,{code:t}))))}),Pt=Me("loginId"),Rt=Ne(Pt,Me("code")),Et=Ne(Pt),xt=Ne(Pt),At=e=>({signUp:Et(((t,n)=>Pe(e.post(L,{loginId:t,user:n})))),verify:Rt(((t,n,o,r)=>Pe(e.post(D,{loginId:t,code:n,loginOptions:o},{token:r})))),update:xt(((t,n)=>Pe(e.post(_,{loginId:t},{token:n}))))}),Tt=Me("loginId"),Ct=Me("newPassword"),$t=Ne(Tt,Me("password")),qt=Ne(Tt),Dt=Ne(Tt,Ct),Lt=Ne(Tt,Me("oldPassword"),Ct),_t=e=>({signUp:$t(((t,n,o,r)=>Pe(e.post(z,{loginId:t,password:n,user:o,loginOptions:r})))),signIn:$t(((t,n,o)=>Pe(e.post(Z,{loginId:t,password:n,loginOptions:o})))),sendReset:qt(((t,n,o)=>Pe(e.post(G,{loginId:t,redirectUrl:n,templateOptions:o})))),update:Dt(((t,n,o)=>Pe(e.post(X,{loginId:t,newPassword:n},{token:o})))),replace:Lt(((t,n,o)=>Pe(e.post(Y,{loginId:t,oldPassword:n,newPassword:o})))),policy:()=>Pe(e.get(Q))}),Jt=Ke("loginId"),Nt=Me("loginId"),Kt=Me("origin"),Mt=Ne(Nt,Kt,Me("name")),Ht=Ne(Nt,Kt),Vt=Ne(Jt,Kt),Bt=Ne(Nt,Kt,Me("token")),Ft=Ne(Me("transactionId"),Me("response")),zt=e=>({signUp:{start:Mt(((t,n,o)=>Pe(e.post(H.start,{user:{loginId:t,name:o},origin:n})))),finish:Ft(((t,n)=>Pe(e.post(H.finish,{transactionId:t,response:n}))))},signIn:{start:Vt(((t,n,o,r)=>Pe(e.post(V.start,{loginId:t,origin:n,loginOptions:o},{token:r})))),finish:Ft(((t,n)=>Pe(e.post(V.finish,{transactionId:t,response:n}))))},signUpOrIn:{start:Ht(((t,n)=>Pe(e.post(B.start,{loginId:t,origin:n}))))},update:{start:Bt(((t,n,o)=>Pe(e.post(F.start,{loginId:t,origin:n},{token:o})))),finish:Ft(((t,n)=>Pe(e.post(F.finish,{transactionId:t,response:n}))))}}),Zt=Ke("loginId"),Gt=Ne(Zt),Xt=Ne(Me("pendingRef")),Yt=e=>({signUpOrIn:Gt(((t,n)=>Pe(e.post(K,{loginId:t,loginOptions:n})))),signUp:Gt(((t,n,o)=>Pe(e.post(N,{loginId:t,user:n,loginOptions:o})))),signIn:Gt(((t,n,o)=>Pe(e.post(J,{loginId:t,loginOptions:n},{token:o})))),waitForSession:Xt(((t,n)=>new Promise((o=>{const{pollingIntervalMs:r,timeoutMs:i}=Ze(n);let s;const a=setInterval((async()=>{const n=await e.post(M,{pendingRef:t});n.ok&&(clearInterval(a),s&&clearTimeout(s),o(Pe(Promise.resolve(n))))}),r);s=setTimeout((()=>{o({error:{errorDescription:`Session polling timeout exceeded: ${i}ms`,errorCode:"0"},ok:!1}),clearInterval(a)}),i)}))))}),Qt=Ne(Me("token")),Wt=Ne([_e('"token" must be string or undefined')]);var en,tn=Ne([("projectId",en=Me("projectId"),Re(((e,t)=>n=>Ee(...t).validate(((e,t,n)=>{const o=(Array.isArray(t)?t.join("."):String(t)).replace(/\[\\?("|')?(\w|d)+\\?("|')?\]/g,((e,t,n)=>"."+n)).split("."),r=o.length;let i=0,s=e===Object(e)?e:void 0;for(;null!=s&&i<r;)s=s[o[i++]];return i&&i===r&&void 0!==s?s:void 0})(n,e)))("projectId",en))())])((e=>{var t;return(({projectId:e,logger:t,baseUrl:n,hooks:o,cookiePolicy:r,baseHeaders:i={},fetch:s})=>{return a=we({baseUrl:n||ce,projectId:e,logger:t,hooks:o,cookiePolicy:r,baseConfig:{baseHeaders:i},fetch:s}),{accessKey:Fe(a),otp:Ot(a),magicLink:ft(a),enchantedLink:rt(a),oauth:mt(a),saml:St(a),totp:At(a),notp:Yt(a),webauthn:zt(a),password:_t(a),flow:at(a),refresh:Wt(((e,t)=>Pe(a.post(W,{},{token:e,queryParams:t})))),selectTenant:Ne([De("tenantId")],[_e('"token" must be string or undefined')])(((e,t)=>Pe(a.post(ee,{tenant:e},{token:t})))),logout:Wt((e=>Pe(a.post(te,{},{token:e})))),logoutAll:Wt((e=>Pe(a.post(ne,{},{token:e})))),me:Wt((e=>Pe(a.get(oe,{token:e})))),history:Wt((e=>Pe(a.get(re,{token:e})))),isJwtExpired:Qt(ke),getTenants:Qt(Oe),getJwtPermissions:Qt(je),getJwtRoles:Qt(Ue),httpClient:a};var a})(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)||[]);0!=r.length&&(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))}))},transformResponse:null===(t=e.hooks)||void 0===t?void 0:t.transformResponse}}))})),nn=Object.assign(tn,{DeliveryMethods:Ye});const on=(...e)=>{console.debug(...e)},rn="undefined"!=typeof window,sn=Math.pow(2,31)-1; | ||
/*! js-cookie v3.0.5 | MIT */ | ||
function an(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 cn=function e(t,n){function o(e,o,r){if("undefined"!=typeof document){"number"==typeof(r=an({},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 s in r)r[s]&&(i+="; "+s,!0!==r[s]&&(i+="="+r[s].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("="),s=i.slice(1).join("=");try{var a=decodeURIComponent(i[0]);if(o[a]=t.read(s,a),e===a)break}catch(e){}}return e?o[e]:o}},remove:function(e,t){o(e,"",an({},t,{expires:-1}))},withAttributes:function(t){return e(this.converter,an({},this.attributes,t))},withConverter:function(t){return e(an({},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 ln="DS",un="DSR";function dn(e,t,{cookiePath:n,cookieDomain:o,cookieExpiration:r}){if(t){const i=new Date(1e3*r),s=function(e){const t=window.location.hostname.split("."),n=e.split(".");return t.slice(-n.length).join(".")===e}(o);cn.set(e,t,{path:n,domain:s?o:void 0,expires:i,sameSite:"Strict",secure:!0})}}function pn(e=""){return i(`${e}${un}`)||""}function gn(e=""){s(`${e}${un}`),s(`${e}${ln}`),cn.remove(ln)}const fn=rn&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem("fingerprint.endpoint.url"))||"https://api.descope.com";var hn={default:"endpoint"},vn="Blocked by CSP",mn="The endpoint parameter is not a valid URL",wn="Failed to load the JS script of the agent",bn="9319";function yn(e,t){var n,o,r,i,s=[],a=(n=function(e){var t=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);return{current:function(){return t[0]},postpone:function(){var e=t.shift();void 0!==e&&t.push(e)},exclude:function(){t.shift()}}}(e),100,3e3,i=0,o=function(){return Math.random()*Math.min(3e3,100*Math.pow(2,i++))},r=new Set,[n.current(),function(e,t){var i,s=t instanceof Error?t.message:"";if(s===vn||s===mn)n.exclude(),i=0;else if(s===bn)n.exclude();else if(s===wn){var a=Date.now()-e.getTime()<50,c=n.current();c&&a&&!r.has(c)&&(r.add(c),i=0),n.postpone()}else n.postpone();var l=n.current();return void 0===l?void 0:[l,null!=i?i:e.getTime()+o()-Date.now()]}]),c=a[0],l=a[1];if(void 0===c)return Promise.reject(new TypeError("The list of script URL patterns is empty"));var u=function(e){var n=new Date,o=function(t){return s.push({url:e,startedAt:n,finishedAt:new Date,error:t})},r=t(e);return r.then((function(){return o()}),o),r.catch((function(e){if(s.length>=5)throw e;var t=l(n,e);if(!t)throw e;var o,r=t[0],i=t[1];return(o=i,new Promise((function(e){return setTimeout(e,o)}))).then((function(){return u(r)}))}))};return u(c).then((function(e){return[e,s]}))}var In="https://fpnpmcdn.net/v<version>/<apiKey>/loader_v<loaderVersion>.js",kn=In;function On(e){var t;e.scriptUrlPattern;var n=e.token,o=e.apiKey,r=void 0===o?n:o,i=c(e,["scriptUrlPattern","token","apiKey"]),s=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:In,l=function(){var e=[],t=function(){e.push({time:new Date,state:document.visibilityState})},n=function(e,t,n,o){return e.addEventListener(t,n,o),function(){return e.removeEventListener(t,n,o)}}(document,"visibilitychange",t);return t(),[e,n]}(),u=l[0],d=l[1];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.9.9"):e}))}(String(e),t)}))}(s,r);return yn(e,jn)})).catch((function(e){throw d(),function(e){return e instanceof Error&&e.message===bn?new Error(wn):e}(e)})).then((function(e){var t=e[0],n=e[1];return d(),t.load(a(a({},i),{ldi:{attempts:n,visibilityStates:u}}))}))}function jn(e){return function(e,t,n,o){var r,i=document,s="securitypolicyviolation",a=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(s,a);var c=function(){return i.removeEventListener(s,a)};return null==o||o.then(c,c),Promise.resolve().then(t).then((function(e){return c(),e}),(function(e){return new Promise((function(e){var t=new MessageChannel;t.port1.onmessage=function(){return e()},t.port2.postMessage(null)})).then((function(){if(c(),r)return n(r);throw e}))}))}(e,(function(){return function(e){return new Promise((function(t,n){if(function(e){if(URL.prototype)try{return new URL(e,location.href),!1}catch(e){if(e instanceof Error&&"TypeError"===e.name)return!0;throw e}}(e))throw new Error(mn);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(wn))},o.async=!0,o.src=e,i.appendChild(o)}))}(e)}),(function(){throw new Error(vn)})).then(Un)}function Un(){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(bn);return n}const Sn=(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},Pn=async(e,t=fn)=>{try{if(Sn())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>",s=On({apiKey:e,endpoint:[o.toString(),hn],scriptUrlPattern:[i,kn]}),a=await s,{requestId:c}=await a.get({linkedId:n}),l=((e,t)=>({vsid:e,vrid:t}))(n,c);(e=>{const t={value:e,expiry:(new Date).getTime()+864e5};localStorage.setItem("fp",JSON.stringify(t))})(l)}catch(e){console.warn("Could not load fingerprint",e)}},Rn=e=>{const t=Sn(!0);return t&&e.body&&(e.body.fpData=t),e},En="dls_last_user_login_id",xn="dls_last_user_display_name",An=()=>i(En),Tn=()=>i(xn),Cn=e=>async(...t)=>{var n;t[1]=t[1]||{};const[,o={}]=t,r=An(),i=Tn();r&&(null!==(n=o.lastAuth)&&void 0!==n||(o.lastAuth={}),o.lastAuth.loginId=r,o.lastAuth.name=i);return await e(...t)},$n=e=>t=>async(...n)=>{const o=await t(...n);return e||(s(En),s(xn)),o};function qn(){const e=[];return{pub:t=>{e.forEach((e=>e(t)))},sub:t=>{const n=e.push(t)-1;return()=>e.splice(n,1)}}}const Dn=e=>t=>async(...n)=>{const o=await t(...n);return gn(e),o};async function Ln(e){const t=function(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=Hn(n.publicKey.challenge),n.publicKey.user.id=Hn(n.publicKey.user.id),null===(t=n.publicKey.excludeCredentials)||void 0===t||t.forEach((e=>{e.id=Hn(e.id)})),n}(e),n=await navigator.credentials.create(t);return o=n,JSON.stringify({id:o.id,rawId:Vn(o.rawId),type:o.type,response:{attestationObject:Vn(o.response.attestationObject),clientDataJSON:Vn(o.response.clientDataJSON)}});var o}async function _n(e){const t=Kn(e);return Mn(await navigator.credentials.get(t))}async function Jn(e,t){const n=Kn(e);n.signal=t.signal,n.mediation="conditional";return Mn(await navigator.credentials.get(n))}async function Nn(e=!1){if(!rn)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 Kn(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=Hn(n.publicKey.challenge),null===(t=n.publicKey.allowCredentials)||void 0===t||t.forEach((e=>{e.id=Hn(e.id)})),n}function Mn(e){return JSON.stringify({id:e.id,rawId:Vn(e.rawId),type:e.type,response:{authenticatorData:Vn(e.response.authenticatorData),clientDataJSON:Vn(e.response.clientDataJSON),signature:Vn(e.response.signature),userHandle:e.response.userHandle?Vn(e.response.userHandle):void 0}})}function Hn(e){const t=e.replace(/_/g,"/").replace(/-/g,"+");return Uint8Array.from(atob(t),(e=>e.charCodeAt(0))).buffer}function Vn(e){return btoa(String.fromCharCode.apply(null,new Uint8Array(e))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}var Bn,Fn=(Bn=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 Ln(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 _n(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 Ln(o.data.options);return await e.webauthn.signUp.finish(o.data.transactionId,t)}{const t=await _n(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 Ln(o.data.options);return await e.webauthn.update.finish(o.data.transactionId,r)},helpers:{create:Ln,get:_n,isSupported:Nn,conditional:Jn}}),(...e)=>{const t=Bn(...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 zn={config:"/fedcm/config"},Zn=(e,t)=>({async oneTap(t,n,o,r){const i=null!=t?t:"google",s=await e.oauth.startNative(i,o,!0);if(!s.ok)return s;const{clientId:a,stateId:c,nonce:l}=s.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 o,s;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===(s=null==n?void 0:n.use_fedcm_for_prompt)||void 0===s||s,client_id:a,callback:n=>{t(e.oauth.finishNative(i,c,"","",n.credential))},nonce:l})),u.prompt((e=>{(null==e?void 0:e.isSkippedMoment())&&(null==r||r())}))}))},async launch(n){var o;const r={identity:{context:n||"signin",providers:[{configURL:e.httpClient.buildUrl(t+zn.config),clientId:t}]}},i=await(null===(o=navigator.credentials)||void 0===o?void 0:o.get(r));return e.refresh(i.token)},isSupported:()=>rn&&"IdentityCredential"in window});var Gn=e=>Object.assign(Object.assign({},e.flow),{start:async(...t)=>{const n=await Nn(),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 Xn=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 rn?(o&&r&&Pn(o).catch((()=>null)),t(e(i,{beforeRequest:Rn}))):t(i)}),(n=>o=>{var{autoRefresh:r}=o,i=c(o,["autoRefresh"]);if(!r)return n(i);const{clearAllTimers:s,setTimer:a}=(()=>{const e=[];return{clearAllTimers:()=>{for(;e.length;)clearTimeout(e.pop())},setTimer:(t,n)=>{e.push(setTimeout(t,n))}}})();let l,u;rn&&document.addEventListener("visibilitychange",(()=>{"visible"===document.visibilityState&&new Date>l&&(on("Expiration time passed, refreshing session"),d.refresh(pn()||u))}));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))on("Received 401, canceling all timers"),s();else if(r){if(l=(e=>{try{const t=p(e);if(t.exp)return new Date(1e3*t.exp)}catch(e){return null}})(r),!l)return void on("Could not extract expiration time from session token");u=o;let e=((i=l)?i.getTime()-(new Date).getTime():0)-2e4;e>sn&&(on(`Timeout is too large (${e}ms), setting it to ${sn}ms`),e=sn),s();const t=new Date(Date.now()+e).toLocaleTimeString("en-US",{hour12:!1});on(`Setting refresh timer for ${t}. (${e}ms)`),a((()=>{on("Refreshing session due to timer"),d.refresh(pn()||o)}),e)}var i}}));return ze(d,["logout","logoutAll"],(e=>async(...t)=>{const n=await e(...t);return on("Clearing all timers"),s(),n}))}),(e=>t=>e(Object.assign(Object.assign({},t),{baseHeaders:Object.assign({"x-descope-sdk-name":"web-js","x-descope-sdk-version":"1.16.2"},t.baseHeaders)}))),(o=>r=>{const i=qn(),s=qn(),a=o(e(r,{afterRequest:async(e,o)=>{if(401===(null==o?void 0:o.status))i.pub(null),s.pub(null);else{const e=await n(o);e&&s.pub(e);const{sessionJwt:r}=await t(o);r&&i.pub(r)}}})),c=ze(a,["logout","logoutAll"],(e=>async(...t)=>{const n=await e(...t);return i.pub(null),s.pub(null),n}));return Object.assign(c,{onSessionTokenChange:i.sub,onUserChange:s.sub})}),(t=>o=>{var{storeLastAuthenticatedUser:i=!0,keepLastAuthenticatedUserAfterLogout:s=!1}=o,a=c(o,["storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout"]);if(!i)return Object.assign(t(a),{getLastUserLoginId:An,getLastUserDisplayName:Tn});const l=t(e(a,{afterRequest:async(e,t)=>{var o;const i=await n(t),s=null===(o=null==i?void 0:i.loginIds)||void 0===o?void 0:o[0],a=null==i?void 0:i.name;s&&((e=>{r(En,e)})(s),(e=>{r(xn,e)})(a))}}));let u=ze(l,["flow.start"],Cn);return u=ze(u,["logout","logoutAll"],$n(s)),Object.assign(u,{getLastUserLoginId:An,getLastUserDisplayName:Tn})}),(n=>o=>{var{persistTokens:s,sessionTokenViaCookie:a,storagePrefix:l}=o,u=c(o,["persistTokens","sessionTokenViaCookie","storagePrefix"]);if(!s||!rn)return n(u);const d=n(e(u,{beforeRequest:(p=l,e=>Object.assign(e,{token:e.token||pn(p)})),afterRequest:async(e,n)=>{const o=/^\/v\d+\/mgmt\//.test(e.path);401===(null==n?void 0:n.status)?o||gn(l):((e={},t,n)=>{var{refreshJwt:o,sessionJwt:i}=e,s=c(e,["refreshJwt","sessionJwt"]);void 0===t&&(t=!1),void 0===n&&(n=""),o&&r(`${n}${un}`,o),i&&(t?dn(ln,i,s):r(`${n}${ln}`,i))})(await t(n),a,l)}}));var p;const g=ze(d,["logout","logoutAll"],Dn(l));return Object.assign(g,{getRefreshToken:()=>pn(l),getSessionToken:()=>function(e=""){return cn.get(ln)||i(`${e}${ln}`)||""}(l)})}))(((...e)=>{const t=nn(...e);return Object.assign(Object.assign({},t),{flow:Gn(t),webauthn:Fn(t),fedcm:Zn(t,e[0].projectId)})}));return Xn.REFRESH_TOKEN_KEY=un,Xn.SESSION_TOKEN_KEY=ln,Xn})); | ||
function an(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 cn=function e(t,n){function o(e,o,r){if("undefined"!=typeof document){"number"==typeof(r=an({},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 s in r)r[s]&&(i+="; "+s,!0!==r[s]&&(i+="="+r[s].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("="),s=i.slice(1).join("=");try{var a=decodeURIComponent(i[0]);if(o[a]=t.read(s,a),e===a)break}catch(e){}}return e?o[e]:o}},remove:function(e,t){o(e,"",an({},t,{expires:-1}))},withAttributes:function(t){return e(this.converter,an({},this.attributes,t))},withConverter:function(t){return e(an({},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 ln="DS",un="DSR";function dn(e,t,{cookiePath:n,cookieDomain:o,cookieExpiration:r}){if(t){const i=new Date(1e3*r),s=function(e){const t=window.location.hostname.split("."),n=e.split(".");return t.slice(-n.length).join(".")===e}(o);cn.set(e,t,{path:n,domain:s?o:void 0,expires:i,sameSite:"Strict",secure:!0})}}function pn(e=""){return i(`${e}${un}`)||""}function gn(e=""){return cn.get(ln)||i(`${e}${ln}`)||""}function fn(e=""){s(`${e}${un}`),s(`${e}${ln}`),cn.remove(ln)}const hn=rn&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem("fingerprint.endpoint.url"))||"https://api.descope.com";var vn={default:"endpoint"},mn="Blocked by CSP",wn="The endpoint parameter is not a valid URL",bn="Failed to load the JS script of the agent",yn="9319";function In(e,t){var n,o,r,i,s=[],a=(n=function(e){var t=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);return{current:function(){return t[0]},postpone:function(){var e=t.shift();void 0!==e&&t.push(e)},exclude:function(){t.shift()}}}(e),100,3e3,i=0,o=function(){return Math.random()*Math.min(3e3,100*Math.pow(2,i++))},r=new Set,[n.current(),function(e,t){var i,s=t instanceof Error?t.message:"";if(s===mn||s===wn)n.exclude(),i=0;else if(s===yn)n.exclude();else if(s===bn){var a=Date.now()-e.getTime()<50,c=n.current();c&&a&&!r.has(c)&&(r.add(c),i=0),n.postpone()}else n.postpone();var l=n.current();return void 0===l?void 0:[l,null!=i?i:e.getTime()+o()-Date.now()]}]),c=a[0],l=a[1];if(void 0===c)return Promise.reject(new TypeError("The list of script URL patterns is empty"));var u=function(e){var n=new Date,o=function(t){return s.push({url:e,startedAt:n,finishedAt:new Date,error:t})},r=t(e);return r.then((function(){return o()}),o),r.catch((function(e){if(s.length>=5)throw e;var t=l(n,e);if(!t)throw e;var o,r=t[0],i=t[1];return(o=i,new Promise((function(e){return setTimeout(e,o)}))).then((function(){return u(r)}))}))};return u(c).then((function(e){return[e,s]}))}var kn="https://fpnpmcdn.net/v<version>/<apiKey>/loader_v<loaderVersion>.js",On=kn;function jn(e){var t;e.scriptUrlPattern;var n=e.token,o=e.apiKey,r=void 0===o?n:o,i=c(e,["scriptUrlPattern","token","apiKey"]),s=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:kn,l=function(){var e=[],t=function(){e.push({time:new Date,state:document.visibilityState})},n=function(e,t,n,o){return e.addEventListener(t,n,o),function(){return e.removeEventListener(t,n,o)}}(document,"visibilitychange",t);return t(),[e,n]}(),u=l[0],d=l[1];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.9.9"):e}))}(String(e),t)}))}(s,r);return In(e,Un)})).catch((function(e){throw d(),function(e){return e instanceof Error&&e.message===yn?new Error(bn):e}(e)})).then((function(e){var t=e[0],n=e[1];return d(),t.load(a(a({},i),{ldi:{attempts:n,visibilityStates:u}}))}))}function Un(e){return function(e,t,n,o){var r,i=document,s="securitypolicyviolation",a=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(s,a);var c=function(){return i.removeEventListener(s,a)};return null==o||o.then(c,c),Promise.resolve().then(t).then((function(e){return c(),e}),(function(e){return new Promise((function(e){var t=new MessageChannel;t.port1.onmessage=function(){return e()},t.port2.postMessage(null)})).then((function(){if(c(),r)return n(r);throw e}))}))}(e,(function(){return function(e){return new Promise((function(t,n){if(function(e){if(URL.prototype)try{return new URL(e,location.href),!1}catch(e){if(e instanceof Error&&"TypeError"===e.name)return!0;throw e}}(e))throw new Error(wn);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(bn))},o.async=!0,o.src=e,i.appendChild(o)}))}(e)}),(function(){throw new Error(mn)})).then(Sn)}function Sn(){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(yn);return n}const Pn=(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},Rn=async(e,t=hn)=>{try{if(Pn())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>",s=jn({apiKey:e,endpoint:[o.toString(),vn],scriptUrlPattern:[i,On]}),a=await s,{requestId:c}=await a.get({linkedId:n}),l=((e,t)=>({vsid:e,vrid:t}))(n,c);(e=>{const t={value:e,expiry:(new Date).getTime()+864e5};localStorage.setItem("fp",JSON.stringify(t))})(l)}catch(e){console.warn("Could not load fingerprint",e)}},En=e=>{const t=Pn(!0);return t&&e.body&&(e.body.fpData=t),e},xn="dls_last_user_login_id",An="dls_last_user_display_name",Tn=()=>i(xn),Cn=()=>i(An),$n=e=>async(...t)=>{var n;t[1]=t[1]||{};const[,o={}]=t,r=Tn(),i=Cn();r&&(null!==(n=o.lastAuth)&&void 0!==n||(o.lastAuth={}),o.lastAuth.loginId=r,o.lastAuth.name=i);return await e(...t)},qn=e=>t=>async(...n)=>{const o=await t(...n);return e||(s(xn),s(An)),o};function Dn(){const e=[];return{pub:t=>{e.forEach((e=>e(t)))},sub:t=>{const n=e.push(t)-1;return()=>e.splice(n,1)}}}const Ln=e=>t=>async(...n)=>{const o=await t(...n);return fn(e),o};async function _n(e){const t=function(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=Vn(n.publicKey.challenge),n.publicKey.user.id=Vn(n.publicKey.user.id),null===(t=n.publicKey.excludeCredentials)||void 0===t||t.forEach((e=>{e.id=Vn(e.id)})),n}(e),n=await navigator.credentials.create(t);return o=n,JSON.stringify({id:o.id,rawId:Bn(o.rawId),type:o.type,response:{attestationObject:Bn(o.response.attestationObject),clientDataJSON:Bn(o.response.clientDataJSON)}});var o}async function Jn(e){const t=Mn(e);return Hn(await navigator.credentials.get(t))}async function Nn(e,t){const n=Mn(e);n.signal=t.signal,n.mediation="conditional";return Hn(await navigator.credentials.get(n))}async function Kn(e=!1){if(!rn)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 Mn(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=Vn(n.publicKey.challenge),null===(t=n.publicKey.allowCredentials)||void 0===t||t.forEach((e=>{e.id=Vn(e.id)})),n}function Hn(e){return JSON.stringify({id:e.id,rawId:Bn(e.rawId),type:e.type,response:{authenticatorData:Bn(e.response.authenticatorData),clientDataJSON:Bn(e.response.clientDataJSON),signature:Bn(e.response.signature),userHandle:e.response.userHandle?Bn(e.response.userHandle):void 0}})}function Vn(e){const t=e.replace(/_/g,"/").replace(/-/g,"+");return Uint8Array.from(atob(t),(e=>e.charCodeAt(0))).buffer}function Bn(e){return btoa(String.fromCharCode.apply(null,new Uint8Array(e))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}var Fn,zn=(Fn=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 _n(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 Jn(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 _n(o.data.options);return await e.webauthn.signUp.finish(o.data.transactionId,t)}{const t=await Jn(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 _n(o.data.options);return await e.webauthn.update.finish(o.data.transactionId,r)},helpers:{create:_n,get:Jn,isSupported:Kn,conditional:Nn}}),(...e)=>{const t=Fn(...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 Zn={config:"/fedcm/config"},Gn=(e,t)=>({async oneTap(t,n,o,r){const i=null!=t?t:"google",s=await e.oauth.startNative(i,o,!0);if(!s.ok)return s;const{clientId:a,stateId:c,nonce:l}=s.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 o,s;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===(s=null==n?void 0:n.use_fedcm_for_prompt)||void 0===s||s,client_id:a,callback:n=>{t(e.oauth.finishNative(i,c,"","",n.credential))},nonce:l})),u.prompt((e=>{(null==e?void 0:e.isSkippedMoment())&&(null==r||r())}))}))},async launch(n){var o;const r={identity:{context:n||"signin",providers:[{configURL:e.httpClient.buildUrl(t+Zn.config),clientId:t}]}},i=await(null===(o=navigator.credentials)||void 0===o?void 0:o.get(r));return e.refresh(i.token)},isSupported:()=>rn&&"IdentityCredential"in window});var Xn=e=>Object.assign(Object.assign({},e.flow),{start:async(...t)=>{const n=await Kn(),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 Yn=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 rn?(o&&r&&Rn(o).catch((()=>null)),t(e(i,{beforeRequest:En}))):t(i)}),(n=>o=>{var{autoRefresh:r}=o,i=c(o,["autoRefresh"]);if(!r)return n(i);const{clearAllTimers:s,setTimer:a}=(()=>{const e=[];return{clearAllTimers:()=>{for(;e.length;)clearTimeout(e.pop())},setTimer:(t,n)=>{e.push(setTimeout(t,n))}}})();let l,u;rn&&document.addEventListener("visibilitychange",(()=>{"visible"===document.visibilityState&&new Date>l&&(on("Expiration time passed, refreshing session"),d.refresh(pn()||u))}));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))on("Received 401, canceling all timers"),s();else if(r){if(l=(e=>{try{const t=p(e);if(t.exp)return new Date(1e3*t.exp)}catch(e){return null}})(r),!l)return void on("Could not extract expiration time from session token");u=o;let e=((i=l)?i.getTime()-(new Date).getTime():0)-2e4;e>sn&&(on(`Timeout is too large (${e}ms), setting it to ${sn}ms`),e=sn),s();const t=new Date(Date.now()+e).toLocaleTimeString("en-US",{hour12:!1});on(`Setting refresh timer for ${t}. (${e}ms)`),a((()=>{on("Refreshing session due to timer"),d.refresh(pn()||o)}),e)}var i}}));return ze(d,["logout","logoutAll"],(e=>async(...t)=>{const n=await e(...t);return on("Clearing all timers"),s(),n}))}),(e=>t=>e(Object.assign(Object.assign({},t),{baseHeaders:Object.assign({"x-descope-sdk-name":"web-js","x-descope-sdk-version":"1.16.3"},t.baseHeaders)}))),(o=>r=>{const i=Dn(),s=Dn(),a=o(e(r,{afterRequest:async(e,o)=>{if(401===(null==o?void 0:o.status))i.pub(null),s.pub(null);else{const e=await n(o);e&&s.pub(e);const{sessionJwt:r}=await t(o);r&&i.pub(r)}}})),c=ze(a,["logout","logoutAll"],(e=>async(...t)=>{const n=await e(...t);return i.pub(null),s.pub(null),n}));return Object.assign(c,{onSessionTokenChange:i.sub,onUserChange:s.sub})}),(t=>o=>{var{storeLastAuthenticatedUser:i=!0,keepLastAuthenticatedUserAfterLogout:s=!1}=o,a=c(o,["storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout"]);if(!i)return Object.assign(t(a),{getLastUserLoginId:Tn,getLastUserDisplayName:Cn});const l=t(e(a,{afterRequest:async(e,t)=>{var o;const i=await n(t),s=null===(o=null==i?void 0:i.loginIds)||void 0===o?void 0:o[0],a=null==i?void 0:i.name;s&&((e=>{r(xn,e)})(s),(e=>{r(An,e)})(a))}}));let u=ze(l,["flow.start"],$n);return u=ze(u,["logout","logoutAll"],qn(s)),Object.assign(u,{getLastUserLoginId:Tn,getLastUserDisplayName:Cn})}),(n=>o=>{var{persistTokens:i,sessionTokenViaCookie:s,storagePrefix:a}=o,l=c(o,["persistTokens","sessionTokenViaCookie","storagePrefix"]);if(!i||!rn)return n(l);const u=n(e(l,{beforeRequest:(d=a,e=>Object.assign(e,{token:e.token||pn(d)})),afterRequest:async(e,n)=>{const o=/^\/v\d+\/mgmt\//.test(e.path);401===(null==n?void 0:n.status)?o||fn(a):((e={},t,n)=>{var{refreshJwt:o,sessionJwt:i}=e,s=c(e,["refreshJwt","sessionJwt"]);void 0===t&&(t=!1),void 0===n&&(n=""),o&&r(`${n}${un}`,o),i&&(t?dn(ln,i,s):r(`${n}${ln}`,i))})(await t(n),s,a)}}));var d;const p=ze(u,["logout","logoutAll"],Ln(a));return Object.assign(p,{getRefreshToken:()=>pn(a),getSessionToken:()=>gn(a)})}))(((...e)=>{const t=nn(...e);return Object.assign(Object.assign({},t),{refresh:e=>{const n=gn();return t.refresh(e,{dcs:n?"t":"f"})},flow:Xn(t),webauthn:zn(t),fedcm:Gn(t,e[0].projectId)})}));return Yn.REFRESH_TOKEN_KEY=un,Yn.SESSION_TOKEN_KEY=ln,Yn})); | ||
//# sourceMappingURL=index.umd.js.map |
{ | ||
"name": "@descope/web-js-sdk", | ||
"version": "1.16.2", | ||
"version": "1.16.3", | ||
"author": "Descope Team <info@descope.com>", | ||
@@ -86,3 +86,3 @@ "homepage": "https://github.com/descope/descope-js", | ||
"tslib": "2.6.3", | ||
"@descope/core-js-sdk": "2.24.2" | ||
"@descope/core-js-sdk": "2.24.3" | ||
}, | ||
@@ -89,0 +89,0 @@ "overrides": { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
462462
+ Added@descope/core-js-sdk@2.24.3(transitive)
- Removed@descope/core-js-sdk@2.24.2(transitive)
Updated@descope/core-js-sdk@2.24.3