@descope/web-js-sdk 1.37.1 → 1.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/index.d.ts +145 -49
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/index.umd.js +2 -2
- package/dist/index.umd.js.map +1 -1
- package/package.json +2 -2
package/dist/index.umd.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
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";var e=function(){return e=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},e.apply(this,arguments)};function t(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"==typeof SuppressedError&&SuppressedError;class n extends Error{}function o(e){let t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:t+="==";break;case 3:t+="=";break;default:throw new Error("base64 string is not of the correct length")}try{return function(e){return decodeURIComponent(atob(e).replace(/(.)/g,((e,t)=>{let n=t.charCodeAt(0).toString(16).toUpperCase();return n.length<2&&(n="0"+n),"%"+n})))}(t)}catch(e){return atob(t)}}function r(e,t){if("string"!=typeof e)throw new n("Invalid token specified: must be a string");t||(t={});const r=!0===t.header?0:1,i=e.split(".")[r];if("string"!=typeof i)throw new n(`Invalid token specified: missing part #${r+1}`);let s;try{s=o(i)}catch(e){throw new n(`Invalid token specified: invalid base64 for part #${r+1} (${e.message})`)}try{return JSON.parse(s)}catch(e){throw new n(`Invalid token specified: invalid json for part #${r+1} (${e.message})`)}}let i;n.prototype.name="InvalidTokenError";const s=e=>{try{return r(e).exp}catch(e){return null}},a=e=>{const{refresh_expire_in:t,refresh_token:n}=e;return t?Math.floor(Date.now()/1e3)+t:s(n)},l=e=>{const{expires_in:t,expires_at:n,access_token:o}=e;return n||(t?Math.floor(Date.now()/1e3)+t:o?s(o):void 0)},c=e=>{const{access_token:n,id_token:o,refresh_token:r,refresh_expire_in:i}=e,s=t(e,["access_token","id_token","refresh_token","refresh_expire_in"]);return Object.assign({sessionJwt:e.sessionJwt||n,idToken:o,refreshJwt:e.refreshJwt||r,sessionExpiration:e.sessionExpiration||l(e),cookieExpiration:e.cookieExpiration||a(e)},s)},u=(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},d=async e=>{if(!(null==e?void 0:e.ok))return{};const t=await(null==e?void 0:e.clone().json()),n=(null==t?void 0:t.authInfo)||t||{};return c(n)},p=void 0!==i||"undefined"!=typeof localStorage,g=(e,t)=>{var n,o;return null===(o=null===(n=i||localStorage)||void 0===n?void 0:n.setItem)||void 0===o?void 0:o.call(n,e,t)},h=e=>{var t,n;return null===(n=null===(t=i||localStorage)||void 0===t?void 0:t.getItem)||void 0===n?void 0:n.call(t,e)},f=e=>{var t,n;return null===(n=null===(t=i||localStorage)||void 0===t?void 0:t.removeItem)||void 0===n?void 0:n.call(t,e)},v=e=>{var t,n,o,r;return null!==(r=null!==(n=null===(t=null==i?void 0:i.key)||void 0===t?void 0:t.call(i,e))&&void 0!==n?n:null===(o=null===localStorage||void 0===localStorage?void 0:localStorage.key)||void 0===o?void 0:o.call(localStorage,e))&&void 0!==r?r:null};var w={accessKey:{exchange:"/v1/auth/accesskey/exchange"},otp:{verify:"/v1/auth/otp/verify",signIn:"/v1/auth/otp/signin",signUp:"/v1/auth/otp/signup",update:{email:"/v1/auth/otp/update/email",phone:"/v1/auth/otp/update/phone"},signUpOrIn:"/v1/auth/otp/signup-in"},magicLink:{verify:"/v1/auth/magiclink/verify",signIn:"/v1/auth/magiclink/signin",signUp:"/v1/auth/magiclink/signup",update:{email:"/v1/auth/magiclink/update/email",phone:"/v1/auth/magiclink/update/phone"},signUpOrIn:"/v1/auth/magiclink/signup-in"},enchantedLink:{verify:"/v1/auth/enchantedlink/verify",signIn:"/v1/auth/enchantedlink/signin",signUp:"/v1/auth/enchantedlink/signup",session:"/v1/auth/enchantedlink/pending-session",update:{email:"/v1/auth/enchantedlink/update/email"},signUpOrIn:"/v1/auth/enchantedlink/signup-in"},oauth:{start:"/v1/auth/oauth/authorize",exchange:"/v1/auth/oauth/exchange",startNative:"v1/auth/oauth/native/start",finishNative:"v1/auth/oauth/native/finish",oneTap:{getOneTapClientId:"/v1/auth/onetap/clientid/{provider}",exchangeOneTapIDToken:"/v1/auth/onetap/idtoken/exchange",verifyOneTapIDToken:"/v1/auth/onetap/idtoken/verify"}},outbound:{connect:"/v1/outbound/oauth/connect"},saml:{start:"/v1/auth/saml/authorize",exchange:"/v1/auth/saml/exchange"},totp:{verify:"/v1/auth/totp/verify",signUp:"/v1/auth/totp/signup",update:"/v1/auth/totp/update"},notp:{signIn:"/v1/auth/notp/whatsapp/signin",signUp:"/v1/auth/notp/whatsapp/signup",signUpOrIn:"/v1/auth/notp/whatsapp/signup-in",session:"/v1/auth/notp/pending-session"},webauthn:{signUp:{start:"/v1/auth/webauthn/signup/start",finish:"/v1/auth/webauthn/signup/finish"},signIn:{start:"/v1/auth/webauthn/signin/start",finish:"/v1/auth/webauthn/signin/finish"},signUpOrIn:{start:"/v1/auth/webauthn/signup-in/start"},update:{start:"v1/auth/webauthn/update/start",finish:"/v1/auth/webauthn/update/finish"}},password:{signUp:"/v1/auth/password/signup",signIn:"/v1/auth/password/signin",sendReset:"/v1/auth/password/reset",update:"/v1/auth/password/update",replace:"/v1/auth/password/replace",policy:"/v1/auth/password/policy"},refresh:"/v1/auth/refresh",tryRefresh:"/v1/auth/try-refresh",selectTenant:"/v1/auth/tenant/select",logout:"/v1/auth/logout",logoutAll:"/v1/auth/logoutall",me:"/v1/auth/me",myTenants:"/v1/auth/me/tenants",history:"/v1/auth/me/history",flow:{start:"/v1/flow/start",next:"/v1/flow/next"}};const m="<region>",y=`https://api.${m}descope.com`,b=6e5,k="dct",I=()=>{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},retries(t){return e.Retries=t,this},build:()=>Object.keys(e).flatMap((t=>e[t]?[`${"Title"!==t?`${t}: `:""}${e[t]}`]:[])).join("\n")}},O=[521,524],j=e=>async(...t)=>{let n=await e(...t);O.includes(n.status)&&(n=await e(...t),n.retries=1);const o=await n.text();return n.text=()=>Promise.resolve(o),n.json=()=>Promise.resolve(JSON.parse(o)),n.clone=()=>n,n};let U;const S=()=>{if(U)return U;const e=new Date,t=`${e.getUTCFullYear().toString()}-${(e.getUTCMonth()+1).toString().padStart(2,"0")}-${e.getUTCDate().toString().padStart(2,"0")}-${e.getUTCHours().toString().padStart(2,"0")}:${e.getUTCMinutes().toString().padStart(2,"0")}:${e.getUTCSeconds().toString().padStart(2,"0")}:${e.getUTCMilliseconds().toString()}`,n=Math.floor(1e3+9e3*Math.random());return U=`${t}-${n}`,U};var x,T;(T=x||(x={})).get="GET",T.delete="DELETE",T.post="POST",T.put="PUT",T.patch="PATCH";const R=({path:e,baseUrl:t,queryParams:n,projectId:o})=>{const r=o.slice(1,-27);t=t.replace(m,r?r+".":"");let i=e?`${t.replace(/\/$/,"")}/${null==e?void 0:e.replace(/^\//,"")}`:t;if(n){const e=Object.keys(n);e.forEach(((t,o)=>{i=`${i}${0===o?"?":""}${t}=${encodeURIComponent(n[t])}${o===e.length-1?"":"&"}`}))}return i},C=(...e)=>new Headers(e.reduce(((e,t)=>((e=>Array.isArray(e)?e:e instanceof Headers?Array.from(e.entries()):e?Object.entries(e):[])(t).forEach((([t,n])=>{e[t]="function"==typeof n?n():n})),e)),{})),E={"Content-Type":"application/json"},P=(e,t="")=>{let n=e;return t&&(n=n+":"+t),{Authorization:`Bearer ${n}`}},_=(e,t)=>{const n={"x-descope-sdk-session-id":S(),"x-descope-sdk-name":"core-js","x-descope-sdk-version":"2.50.1","x-descope-project-id":e};return t&&(n["x-descope-refresh-cookie-name"]=t),n},$=e=>{try{e=JSON.parse(e)}catch(e){return!1}return"object"==typeof e&&null!==e};var A=e=>{var t;return(({baseUrl:e,projectId:t,baseConfig:n,refreshCookieName:o,logger:r,hooks:i,cookiePolicy:s,fetch:a})=>{const l=e||y,c=((e,t)=>{const 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=>I().title("Request").url(e[0]).method(e[1].method).headers(e[1].headers).body(e[1].body).build())(t));const o=await j(n)(...t);return e[o.ok?"log":"error"](await(async e=>{const t=await e.text();return I().title("Response").url(e.url.toString()).status(`${e.status} ${e.statusText}`).headers(e.headers).body(t).retries(e.retries).build()})(o)),o}:j(n)})(r,a),u=async e=>{var r;const a=(null==i?void 0:i.beforeRequest)?i.beforeRequest(e):e,{path:u,body:d,headers:p,queryParams:g,method:h,token:f}=a,v=(e=>void 0===e?void 0:JSON.stringify(e))(d),w={headers:C(P(t,f),_(t,o),(null==n?void 0:n.baseHeaders)||{},$(v)?E:{},p),method:h,body:v};null!==s&&(w.credentials=s||"include");const m=await c(R({path:u,baseUrl:l,queryParams:g,projectId:t}),w);if((null==i?void 0:i.afterRequest)&&await i.afterRequest(e,null==m?void 0:m.clone()),null==i?void 0:i.transformResponse){const e=await m.json(),t=((null===(r=m.headers)||void 0===r?void 0:r.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,i.transformResponse(n)}return m};return{get:(e,{headers:t,queryParams:n,token:o}={})=>u({path:e,headers:t,queryParams:n,body:void 0,method:x.get,token:o}),post:(e,t,{headers:n,queryParams:o,token:r}={})=>u({path:e,headers:n,queryParams:o,body:t,method:x.post,token:r}),patch:(e,t,{headers:n,queryParams:o,token:r}={})=>u({path:e,headers:n,queryParams:o,body:t,method:x.patch,token:r}),put:(e,t,{headers:n,queryParams:o,token:r}={})=>u({path:e,headers:n,queryParams:o,body:t,method:x.put,token:r}),delete:(e,{headers:t,queryParams:n,token:o}={})=>u({path:e,headers:t,queryParams:n,body:void 0,method:x.delete,token:o}),hooks:i,buildUrl:(e,n)=>R({projectId:t,baseUrl:l,path:e,queryParams:n})}})(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}}))},D=429;function L(e,t,n){var o;let r=q(e);if(t){if(!(null==r?void 0:r.tenants)&&(null==r?void 0:r[k])===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 q(e){if("string"!=typeof e||!e)throw new Error("Invalid token provided");return r(e)}function N(e){const{exp:t}=q(e);return(new Date).getTime()/1e3>t}function J(e){let t=q(e);const n=Object.keys(null==t?void 0:t.tenants);return Array.isArray(n)?n:[]}function K(e,t){return L(e,t,"permissions")}function M(e,t){return L(e,t,"roles")}const F=(...e)=>e.join("/").replace(/\/{2,}/g,"/");async function H(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=i:(r.error=i,o.status===D&&Object.assign(r.error,{retryAfter:Number.parseInt(null===(n=o.headers)||void 0===n?void 0:n.get("retry-after"))||0})),r}function V(e){var t;return(null===(t=q(e))||void 0===t?void 0:t[k])||""}const B=(e,t)=>(n=t)=>t=>!e(t)&&n.replace("{val}",t),z=(e,t)=>(n=t)=>t=>{const o=e.filter((e=>e(t)));return!(o.length<e.length)&&(n?n.replace("{val}",t):o.join(" OR "))},Z=(...e)=>({validate:t=>(e.forEach((e=>{const n=e(t);if(n)throw new Error(n)})),!0)}),G=e=>t=>e.test(t),W=G(/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/),X=G(/^\+[1-9]{1}[0-9]{3,14}$/),Y=B(W,'"{val}" is not a valid email'),Q=B(X,'"{val}" is not a valid phone number'),ee=B((e=>e.length>=1),"Minimum length is 1");const te=B((e=>"string"==typeof e),"Input is not a string"),ne=B((e=>Array.isArray(e)),"Input is not an array"),oe=B((e=>"boolean"==typeof e),"Input is not a boolean"),re=B((e=>void 0===e),"Input is defined"),ie=z([te(),re()],"Input is not a string or undefined"),se=z([ne(),oe()],"Input is not an array or boolean"),ae=(...e)=>t=>(...n)=>(e.forEach(((e,t)=>Z(...e).validate(n[t]))),t(...n)),le=e=>[te(`"${e}" must be a string`)],ce=e=>[ie(`"${e}" must be string or undefined`)],ue=e=>[te(`"${e}" must be a string`),ee(`"${e}" must not be empty`)],de=e=>[te(`"${e}" must be a string`),Y()],pe=e=>[te(`"${e}" must be a string`),Q()],ge=ae(ue("accessKey")),he=e=>({exchange:ge(((t,n)=>H(e.post(w.accessKey.exchange,{loginOptions:n},{token:t}))))}),fe=(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),ve=({pollingIntervalMs:e=1e3,timeoutMs:t=6e5}={})=>({pollingIntervalMs:Math.max(e||1e3,1e3),timeoutMs:Math.min(t||b,b)});var we,me;!function(e){e.sms="sms",e.voice="voice",e.whatsapp="whatsapp"}(we||(we={})),function(e){e.email="email"}(me||(me={}));const ye=Object.assign(Object.assign({},we),me);var be;!function(e){e.waiting="waiting",e.running="running",e.completed="completed",e.failed="failed"}(be||(be={}));const ke=ue("loginId"),Ie=ae(ue("token")),Oe=ae(ke),je=ae(ue("pendingRef")),Ue=ae(ke,de("email")),Se=e=>({verify:Ie((t=>H(e.post(w.enchantedLink.verify,{token:t})))),signIn:Oe(((t,n,o,r)=>H(e.post(F(w.enchantedLink.signIn,ye.email),{loginId:t,URI:n,loginOptions:o},{token:r})))),signUpOrIn:Oe(((t,n,o)=>H(e.post(F(w.enchantedLink.signUpOrIn,ye.email),{loginId:t,URI:n,loginOptions:o})))),signUp:Oe(((t,n,o,r)=>H(e.post(F(w.enchantedLink.signUp,ye.email),{loginId:t,URI:n,user:o,loginOptions:r})))),waitForSession:je(((t,n)=>new Promise((o=>{const{pollingIntervalMs:r,timeoutMs:i}=ve(n);let s;const a=setInterval((async()=>{const n=await e.post(w.enchantedLink.session,{pendingRef:t});n.ok&&(clearInterval(a),s&&clearTimeout(s),o(H(Promise.resolve(n))))}),r);s=setTimeout((()=>{o({error:{errorDescription:`Session polling timeout exceeded: ${i}ms`,errorCode:"0"},ok:!1}),clearInterval(a)}),i)})))),update:{email:Ue(((t,n,o,r,i)=>H(e.post(w.enchantedLink.update.email,Object.assign({loginId:t,email:n,URI:o},i),{token:r}))))}}),xe=ae(ue("flowId")),Te=ae(ue("executionId"),ue("stepId"),ue("interactionId")),Re=e=>({start:xe(((t,n,o,r,i,s,a)=>H(e.post(w.flow.start,{flowId:t,options:n,conditionInteractionId:o,interactionId:r,componentsVersion:i,flowVersions:s,input:a})))),next:Te(((t,n,o,r,i,s)=>H(e.post(w.flow.next,{executionId:t,stepId:n,interactionId:o,version:r,componentsVersion:i,input:s}))))}),Ce=ue("loginId"),Ee=ae(ue("token")),Pe=ae(Ce),_e=ae(Ce,pe("phone")),$e=ae(Ce,de("email")),Ae=Object.keys(ye).filter((e=>e!==we.voice)),De=e=>({verify:Ee((t=>H(e.post(w.magicLink.verify,{token:t})))),signIn:Ae.reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:Pe(((t,o,r,i)=>H(e.post(F(w.magicLink.signIn,n),{loginId:t,URI:o,loginOptions:r},{token:i}))))})),{}),signUp:Ae.reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:Pe(((t,o,r,i)=>H(e.post(F(w.magicLink.signUp,n),{loginId:t,URI:o,user:r,loginOptions:i}))))})),{}),signUpOrIn:Ae.reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:Pe(((t,o,r)=>H(e.post(F(w.magicLink.signUpOrIn,n),{loginId:t,URI:o,loginOptions:r}))))})),{}),update:{email:$e(((t,n,o,r,i)=>H(e.post(w.magicLink.update.email,Object.assign({loginId:t,email:n,URI:o},i),{token:r})))),phone:Object.keys(we).filter((e=>e!==we.voice)).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:_e(((t,o,r,i,s)=>H(e.post(F(w.magicLink.update.phone,n),Object.assign({loginId:t,phone:o,URI:r},s),{token:i}))))})),{})}});var Le;!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"}(Le||(Le={}));const qe=ae(ue("code")),Ne=e=>({start:Object.assign(((t,n,o,r,i)=>H(e.post(w.oauth.start,o||{},{queryParams:Object.assign(Object.assign({provider:t},n&&{redirectURL:n}),i&&{loginHint:i}),token:r}))),Object.keys(Le).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:(t,o,r,i)=>H(e.post(w.oauth.start,o||{},{queryParams:Object.assign(Object.assign({provider:n},t&&{redirectURL:t}),i&&{loginHint:i}),token:r}))})),{})),exchange:qe((t=>H(e.post(w.oauth.exchange,{code:t})))),startNative:(t,n,o)=>H(e.post(w.oauth.startNative,{provider:t,loginOptions:n,implicit:o})),finishNative:(t,n,o,r,i)=>H(e.post(w.oauth.finishNative,{provider:t,stateId:n,user:o,code:r,idToken:i})),getOneTapClientId:t=>H(e.get(w.oauth.oneTap.getOneTapClientId.replace("{provider}",t))),verifyOneTapIDToken:(t,n,o,r)=>H(e.post(w.oauth.oneTap.verifyOneTapIDToken,{provider:t,idToken:n,nonce:o,loginOptions:r})),exchangeOneTapIDToken:(t,n,o,r)=>H(e.post(w.oauth.oneTap.exchangeOneTapIDToken,{provider:t,idToken:n,nonce:o,loginOptions:r}))}),Je=ue("appId"),Ke=ae(Je),Me=e=>({connect:Ke(((t,n,o)=>{const r=null==n?void 0:n.tenantId,i=null==n?void 0:n.tenantLevel;return null==n||delete n.tenantId,null==n||delete n.tenantLevel,H(e.post(w.outbound.connect,{appId:t,tenantId:r,tenantLevel:i,options:n},{token:o}))}))}),Fe=ue("loginId"),He=ae(Fe,ue("code")),Ve=ae(Fe),Be=ae(Fe,pe("phone")),ze=ae(Fe,de("email")),Ze=e=>({verify:Object.keys(ye).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:He(((t,o)=>H(e.post(F(w.otp.verify,n),{code:o,loginId:t}))))})),{}),signIn:Object.keys(ye).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:Ve(((t,o,r)=>H(e.post(F(w.otp.signIn,n),{loginId:t,loginOptions:o},{token:r}))))})),{}),signUp:Object.keys(ye).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:Ve(((t,o,r)=>H(e.post(F(w.otp.signUp,n),{loginId:t,user:o,loginOptions:r}))))})),{}),signUpOrIn:Object.keys(ye).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:Ve(((t,o)=>H(e.post(F(w.otp.signUpOrIn,n),{loginId:t,loginOptions:o}))))})),{}),update:{email:ze(((t,n,o,r)=>H(e.post(w.otp.update.email,Object.assign({loginId:t,email:n},r),{token:o})))),phone:Object.keys(we).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:Be(((t,o,r,i)=>H(e.post(F(w.otp.update.phone,n),Object.assign({loginId:t,phone:o},i),{token:r}))))})),{})}}),Ge=ae(ue("tenant")),We=ae(ue("code")),Xe=e=>({start:Ge(((t,n,o,r,i,s,a)=>H(e.post(w.saml.start,o||{},Object.assign({queryParams:Object.assign(Object.assign(Object.assign(Object.assign({tenant:t},n&&{redirectURL:n}),i&&{ssoId:i}),s&&{forceAuthn:"true"}),a&&{loginHint:a})},r&&{token:r}))))),exchange:We((t=>H(e.post(w.saml.exchange,{code:t}))))}),Ye=ue("loginId"),Qe=ae(Ye,ue("code")),et=ae(Ye),tt=ae(Ye),nt=e=>({signUp:et(((t,n)=>H(e.post(w.totp.signUp,{loginId:t,user:n})))),verify:Qe(((t,n,o,r)=>H(e.post(w.totp.verify,{loginId:t,code:n,loginOptions:o},{token:r})))),update:tt(((t,n)=>H(e.post(w.totp.update,{loginId:t},{token:n}))))}),ot=ue("loginId"),rt=ue("newPassword"),it=ae(ot,ue("password")),st=ae(ot),at=ae(ot,rt),lt=ae(ot,ue("oldPassword"),rt),ct=e=>({signUp:it(((t,n,o,r)=>H(e.post(w.password.signUp,{loginId:t,password:n,user:o,loginOptions:r})))),signIn:it(((t,n,o)=>H(e.post(w.password.signIn,{loginId:t,password:n,loginOptions:o})))),sendReset:st(((t,n,o)=>H(e.post(w.password.sendReset,{loginId:t,redirectUrl:n,templateOptions:o})))),update:at(((t,n,o)=>H(e.post(w.password.update,{loginId:t,newPassword:n},{token:o})))),replace:lt(((t,n,o)=>H(e.post(w.password.replace,{loginId:t,oldPassword:n,newPassword:o})))),policy:()=>H(e.get(w.password.policy))}),ut=le("loginId"),dt=ue("loginId"),pt=ue("origin"),gt=ae(dt,pt,ue("name")),ht=ae(dt,pt),ft=ae(ut,pt),vt=ae(dt,pt,ce("token")),wt=ae(ue("transactionId"),ue("response")),mt=e=>({signUp:{start:gt(((t,n,o,r)=>H(e.post(w.webauthn.signUp.start,{user:{loginId:t,name:o},origin:n,passkeyOptions:r})))),finish:wt(((t,n)=>H(e.post(w.webauthn.signUp.finish,{transactionId:t,response:n}))))},signIn:{start:ft(((t,n,o,r,i)=>H(e.post(w.webauthn.signIn.start,{loginId:t,origin:n,loginOptions:o,passkeyOptions:i},{token:r})))),finish:wt(((t,n)=>H(e.post(w.webauthn.signIn.finish,{transactionId:t,response:n}))))},signUpOrIn:{start:ht(((t,n,o)=>H(e.post(w.webauthn.signUpOrIn.start,{loginId:t,origin:n,passkeyOptions:o}))))},update:{start:vt(((t,n,o,r)=>H(e.post(w.webauthn.update.start,{loginId:t,origin:n,passkeyOptions:r},{token:o})))),finish:wt(((t,n)=>H(e.post(w.webauthn.update.finish,{transactionId:t,response:n}))))}}),yt=le("loginId"),bt=ae(yt),kt=ae(ue("pendingRef")),It=e=>({signUpOrIn:bt(((t,n)=>H(e.post(w.notp.signUpOrIn,{loginId:t,loginOptions:n})))),signUp:bt(((t,n,o)=>H(e.post(w.notp.signUp,{loginId:t,user:n,loginOptions:o})))),signIn:bt(((t,n,o)=>H(e.post(w.notp.signIn,{loginId:t,loginOptions:n},{token:o})))),waitForSession:kt(((t,n)=>new Promise((o=>{const{pollingIntervalMs:r,timeoutMs:i}=ve(n);let s;const a=setInterval((async()=>{const n=await e.post(w.notp.session,{pendingRef:t});n.ok&&(clearInterval(a),s&&clearTimeout(s),o(H(Promise.resolve(n))))}),r);s=setTimeout((()=>{o({error:{errorDescription:`Session polling timeout exceeded: ${i}ms`,errorCode:"0"},ok:!1}),clearInterval(a)}),i)}))))}),Ot=ae(ue("token")),jt=ae(ce("token"));var Ut,St=ae([(Ut=ue("projectId"),B(((e,t)=>n=>Z(...t).validate(((e,t)=>{const n=(Array.isArray(t)?t.join("."):String(t)).replace(/\[\\?("|')?(\w|d)+\\?("|')?\]/g,((e,t,n)=>"."+n)).split("."),o=n.length;let r=0,i=e===Object(e)?e:void 0;for(;null!=i&&r<o;)i=i[n[r++]];return r&&r===o&&void 0!==i?i:void 0})(n,e)))("projectId",Ut))())])((e=>{const{projectId:t,logger:n,baseUrl:o,cookiePolicy:r,baseHeaders:i={},refreshCookieName:s,fetch:a}=e;return l=A({baseUrl:o,projectId:t,logger:n,hooks:{get beforeRequest(){var t;return null===(t=e.hooks)||void 0===t?void 0:t.beforeRequest},get afterRequest(){var t;return null===(t=e.hooks)||void 0===t?void 0:t.afterRequest},get transformResponse(){var t;return null===(t=e.hooks)||void 0===t?void 0:t.transformResponse}},cookiePolicy:r,baseConfig:{baseHeaders:i},refreshCookieName:s,fetch:a}),{accessKey:he(l),otp:Ze(l),magicLink:De(l),enchantedLink:Se(l),oauth:Ne(l),outbound:Me(l),saml:Xe(l),totp:nt(l),notp:It(l),webauthn:mt(l),password:ct(l),flow:Re(l),refresh:jt(((e,t,n,o)=>{const r={};n&&(r.externalToken=n);const i=o?w.tryRefresh:w.refresh;return H(l.post(i,r,{token:e,queryParams:t}))})),selectTenant:ae([te("tenantId")],[ie('"token" must be string or undefined')])(((e,t)=>H(l.post(w.selectTenant,{tenant:e},{token:t})))),logout:jt((e=>H(l.post(w.logout,{},{token:e})))),logoutAll:jt((e=>H(l.post(w.logoutAll,{},{token:e})))),me:jt((e=>H(l.get(w.me,{token:e})))),myTenants:ae([se('"tenants" must a string array or a boolean')],[ie('"token" must be string or undefined')])(((e,t)=>{const n={};return"boolean"==typeof e?n.dct=e:n.ids=e,H(l.post(w.myTenants,n,{token:t}))})),history:jt((e=>H(l.get(w.history,{token:e})))),isJwtExpired:Ot(N),getTenants:Ot(J),getJwtPermissions:Ot(K),getJwtRoles:Ot(M),getCurrentTenant:Ot(V),httpClient:l};var l})),xt=Object.assign(St,{DeliveryMethods:ye});const Tt=(...e)=>{console.debug(...e)},Rt="3.2.0",Ct="undefined"!=typeof window,Et=Math.pow(2,31)-1,Pt=`https://descopecdn.com/npm/oidc-client-ts@${Rt}/dist/browser/oidc-client-ts.min.js`,_t=`https://cdn.jsdelivr.net/npm/oidc-client-ts@${Rt}/dist/browser/oidc-client-ts.min.js`,$t=e=>{let t=((n=e)?n.getTime()-(new Date).getTime():0)-2e4;var n;return t>Et&&(Tt(`Timeout is too large (${t}ms), setting it to ${Et}ms`),t=Et),t};
|
|
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";var e=function(){return e=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},e.apply(this,arguments)};function t(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"==typeof SuppressedError&&SuppressedError;class n extends Error{}function o(e){let t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:t+="==";break;case 3:t+="=";break;default:throw new Error("base64 string is not of the correct length")}try{return function(e){return decodeURIComponent(atob(e).replace(/(.)/g,((e,t)=>{let n=t.charCodeAt(0).toString(16).toUpperCase();return n.length<2&&(n="0"+n),"%"+n})))}(t)}catch(e){return atob(t)}}function r(e,t){if("string"!=typeof e)throw new n("Invalid token specified: must be a string");t||(t={});const r=!0===t.header?0:1,i=e.split(".")[r];if("string"!=typeof i)throw new n(`Invalid token specified: missing part #${r+1}`);let s;try{s=o(i)}catch(e){throw new n(`Invalid token specified: invalid base64 for part #${r+1} (${e.message})`)}try{return JSON.parse(s)}catch(e){throw new n(`Invalid token specified: invalid json for part #${r+1} (${e.message})`)}}let i;n.prototype.name="InvalidTokenError";const s=e=>{try{return r(e).exp}catch(e){return null}},a=e=>{const{refresh_expire_in:t,refresh_token:n}=e;return t?Math.floor(Date.now()/1e3)+t:s(n)},l=e=>{const{expires_in:t,expires_at:n,access_token:o}=e;return n||(t?Math.floor(Date.now()/1e3)+t:o?s(o):void 0)},c=e=>{const{access_token:n,id_token:o,refresh_token:r,refresh_expire_in:i}=e,s=t(e,["access_token","id_token","refresh_token","refresh_expire_in"]);return Object.assign({sessionJwt:e.sessionJwt||n,idToken:o,refreshJwt:e.refreshJwt||r,sessionExpiration:e.sessionExpiration||l(e),cookieExpiration:e.cookieExpiration||a(e)},s)},u=(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},d=async e=>{if(!(null==e?void 0:e.ok))return{};const t=await(null==e?void 0:e.clone().json()),n=(null==t?void 0:t.authInfo)||t||{};return c(n)},p=void 0!==i||"undefined"!=typeof localStorage,g=(e,t)=>{var n,o;return null===(o=null===(n=i||localStorage)||void 0===n?void 0:n.setItem)||void 0===o?void 0:o.call(n,e,t)},v=e=>{var t,n;return null===(n=null===(t=i||localStorage)||void 0===t?void 0:t.getItem)||void 0===n?void 0:n.call(t,e)},h=e=>{var t,n;return null===(n=null===(t=i||localStorage)||void 0===t?void 0:t.removeItem)||void 0===n?void 0:n.call(t,e)},f=e=>{var t,n,o,r;return null!==(r=null!==(n=null===(t=null==i?void 0:i.key)||void 0===t?void 0:t.call(i,e))&&void 0!==n?n:null===(o=null===localStorage||void 0===localStorage?void 0:localStorage.key)||void 0===o?void 0:o.call(localStorage,e))&&void 0!==r?r:null};var w={accessKey:{exchange:"/v1/auth/accesskey/exchange"},otp:{verify:"/v1/auth/otp/verify",signIn:"/v1/auth/otp/signin",signUp:"/v1/auth/otp/signup",update:{email:"/v1/auth/otp/update/email",phone:"/v1/auth/otp/update/phone"},signUpOrIn:"/v1/auth/otp/signup-in"},magicLink:{verify:"/v1/auth/magiclink/verify",signIn:"/v1/auth/magiclink/signin",signUp:"/v1/auth/magiclink/signup",update:{email:"/v1/auth/magiclink/update/email",phone:"/v1/auth/magiclink/update/phone"},signUpOrIn:"/v1/auth/magiclink/signup-in"},enchantedLink:{verify:"/v1/auth/enchantedlink/verify",signIn:"/v1/auth/enchantedlink/signin",signUp:"/v1/auth/enchantedlink/signup",session:"/v1/auth/enchantedlink/pending-session",update:{email:"/v1/auth/enchantedlink/update/email"},signUpOrIn:"/v1/auth/enchantedlink/signup-in"},oauth:{start:"/v1/auth/oauth/authorize",exchange:"/v1/auth/oauth/exchange",startNative:"v1/auth/oauth/native/start",finishNative:"v1/auth/oauth/native/finish",oneTap:{getOneTapClientId:"/v1/auth/onetap/clientid/{provider}",exchangeOneTapIDToken:"/v1/auth/onetap/idtoken/exchange",verifyOneTapIDToken:"/v1/auth/onetap/idtoken/verify"}},outbound:{connect:"/v1/outbound/oauth/connect"},saml:{start:"/v1/auth/saml/authorize",exchange:"/v1/auth/saml/exchange"},totp:{verify:"/v1/auth/totp/verify",signUp:"/v1/auth/totp/signup",update:"/v1/auth/totp/update"},notp:{signIn:"/v1/auth/notp/whatsapp/signin",signUp:"/v1/auth/notp/whatsapp/signup",signUpOrIn:"/v1/auth/notp/whatsapp/signup-in",session:"/v1/auth/notp/pending-session"},webauthn:{signUp:{start:"/v1/auth/webauthn/signup/start",finish:"/v1/auth/webauthn/signup/finish"},signIn:{start:"/v1/auth/webauthn/signin/start",finish:"/v1/auth/webauthn/signin/finish"},signUpOrIn:{start:"/v1/auth/webauthn/signup-in/start"},update:{start:"v1/auth/webauthn/update/start",finish:"/v1/auth/webauthn/update/finish"}},password:{signUp:"/v1/auth/password/signup",signIn:"/v1/auth/password/signin",sendReset:"/v1/auth/password/reset",update:"/v1/auth/password/update",replace:"/v1/auth/password/replace",policy:"/v1/auth/password/policy"},refresh:"/v1/auth/refresh",tryRefresh:"/v1/auth/try-refresh",selectTenant:"/v1/auth/tenant/select",logout:"/v1/auth/logout",logoutAll:"/v1/auth/logoutall",me:"/v1/auth/me",myTenants:"/v1/auth/me/tenants",history:"/v1/auth/me/history",flow:{start:"/v1/flow/start",next:"/v1/flow/next"}};const m="<region>",y=`https://api.${m}descope.com`,b=6e5,I="dct",k=()=>{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},retries(t){return e.Retries=t,this},build:()=>Object.keys(e).flatMap((t=>e[t]?[`${"Title"!==t?`${t}: `:""}${e[t]}`]:[])).join("\n")}},O=[521,524],j=e=>async(...t)=>{let n=await e(...t);O.includes(n.status)&&(n=await e(...t),n.retries=1);const o=await n.text();return n.text=()=>Promise.resolve(o),n.json=()=>Promise.resolve(JSON.parse(o)),n.clone=()=>n,n},U=(e,t)=>{const 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=>k().title("Request").url(e[0]).method(e[1].method).headers(e[1].headers).body(e[1].body).build())(t));const o=await j(n)(...t);return e[o.ok?"log":"error"](await(async e=>{const t=await e.text();return k().title("Response").url(e.url.toString()).status(`${e.status} ${e.statusText}`).headers(e.headers).body(t).retries(e.retries).build()})(o)),o}:j(n)};let S;const x=()=>{if(S)return S;const e=new Date,t=`${e.getUTCFullYear().toString()}-${(e.getUTCMonth()+1).toString().padStart(2,"0")}-${e.getUTCDate().toString().padStart(2,"0")}-${e.getUTCHours().toString().padStart(2,"0")}:${e.getUTCMinutes().toString().padStart(2,"0")}:${e.getUTCSeconds().toString().padStart(2,"0")}:${e.getUTCMilliseconds().toString()}`,n=Math.floor(1e3+9e3*Math.random());return S=`${t}-${n}`,S};var T,R;(R=T||(T={})).get="GET",R.delete="DELETE",R.post="POST",R.put="PUT",R.patch="PATCH";const C=({path:e,baseUrl:t,queryParams:n,projectId:o})=>{const r=o.slice(1,-27);t=t.replace(m,r?r+".":"");let i=e?`${t.replace(/\/$/,"")}/${null==e?void 0:e.replace(/^\//,"")}`:t;if(n){const e=Object.keys(n);e.forEach(((t,o)=>{i=`${i}${0===o?"?":""}${t}=${encodeURIComponent(n[t])}${o===e.length-1?"":"&"}`}))}return i},E=(...e)=>new Headers(e.reduce(((e,t)=>((e=>Array.isArray(e)?e:e instanceof Headers?Array.from(e.entries()):e?Object.entries(e):[])(t).forEach((([t,n])=>{e[t]="function"==typeof n?n():n})),e)),{})),P={"Content-Type":"application/json"},_=(e,t="")=>{let n=e;return t&&(n=n+":"+t),{Authorization:`Bearer ${n}`}},$=(e,t)=>{const n={"x-descope-sdk-session-id":x(),"x-descope-sdk-name":"core-js","x-descope-sdk-version":"2.52.0","x-descope-project-id":e};return t&&(n["x-descope-refresh-cookie-name"]=t),n},A=e=>{try{e=JSON.parse(e)}catch(e){return!1}return"object"==typeof e&&null!==e};var D=e=>{var t;return(({baseUrl:e,projectId:t,baseConfig:n,refreshCookieName:o,logger:r,hooks:i,cookiePolicy:s,fetch:a})=>{const l=e||y,c=U(r,a),u=async e=>{var r;const a=(null==i?void 0:i.beforeRequest)?i.beforeRequest(e):e,{path:u,body:d,headers:p,queryParams:g,method:v,token:h}=a,f=(e=>void 0===e?void 0:JSON.stringify(e))(d),w={headers:E(_(t,h),$(t,o),(null==n?void 0:n.baseHeaders)||{},A(f)?P:{},p),method:v,body:f};null!==s&&(w.credentials=s||"include");const m=await c(C({path:u,baseUrl:l,queryParams:g,projectId:t}),w);if((null==i?void 0:i.afterRequest)&&await i.afterRequest(e,null==m?void 0:m.clone()),null==i?void 0:i.transformResponse){const e=await m.json(),t=((null===(r=m.headers)||void 0===r?void 0:r.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,i.transformResponse(n)}return m};return{get:(e,{headers:t,queryParams:n,token:o}={})=>u({path:e,headers:t,queryParams:n,body:void 0,method:T.get,token:o}),post:(e,t,{headers:n,queryParams:o,token:r}={})=>u({path:e,headers:n,queryParams:o,body:t,method:T.post,token:r}),patch:(e,t,{headers:n,queryParams:o,token:r}={})=>u({path:e,headers:n,queryParams:o,body:t,method:T.patch,token:r}),put:(e,t,{headers:n,queryParams:o,token:r}={})=>u({path:e,headers:n,queryParams:o,body:t,method:T.put,token:r}),delete:(e,{headers:t,queryParams:n,token:o}={})=>u({path:e,headers:t,queryParams:n,body:void 0,method:T.delete,token:o}),hooks:i,buildUrl:(e,n)=>C({projectId:t,baseUrl:l,path:e,queryParams:n})}})(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}}))},L=429;function q(e,t,n){var o;let r=N(e);if(t){if(!(null==r?void 0:r.tenants)&&(null==r?void 0:r[I])===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 N(e){if("string"!=typeof e||!e)throw new Error("Invalid token provided");return r(e)}function J(e){const{exp:t}=N(e);return(new Date).getTime()/1e3>t}function K(e){let t=N(e);const n=Object.keys(null==t?void 0:t.tenants);return Array.isArray(n)?n:[]}function M(e,t){return q(e,t,"permissions")}function F(e,t){return q(e,t,"roles")}const H=(...e)=>e.join("/").replace(/\/{2,}/g,"/");async function V(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=i:(r.error=i,o.status===L&&Object.assign(r.error,{retryAfter:Number.parseInt(null===(n=o.headers)||void 0===n?void 0:n.get("retry-after"))||0})),r}function B(e){var t;return(null===(t=N(e))||void 0===t?void 0:t[I])||""}const z=(e,t)=>(n=t)=>t=>!e(t)&&n.replace("{val}",t),Z=(e,t)=>(n=t)=>t=>{const o=e.filter((e=>e(t)));return!(o.length<e.length)&&(n?n.replace("{val}",t):o.join(" OR "))},G=(...e)=>({validate:t=>(e.forEach((e=>{const n=e(t);if(n)throw new Error(n)})),!0)}),W=e=>t=>e.test(t),X=W(/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/),Y=W(/^\+[1-9]{1}[0-9]{3,14}$/),Q=z(X,'"{val}" is not a valid email'),ee=z(Y,'"{val}" is not a valid phone number'),te=z((e=>e.length>=1),"Minimum length is 1");const ne=z((e=>"string"==typeof e),"Input is not a string"),oe=z((e=>Array.isArray(e)),"Input is not an array"),re=z((e=>"boolean"==typeof e),"Input is not a boolean"),ie=z((e=>void 0===e),"Input is defined"),se=Z([ne(),ie()],"Input is not a string or undefined"),ae=Z([oe(),re()],"Input is not an array or boolean"),le=(...e)=>t=>(...n)=>(e.forEach(((e,t)=>G(...e).validate(n[t]))),t(...n)),ce=e=>[ne(`"${e}" must be a string`)],ue=e=>[se(`"${e}" must be string or undefined`)],de=e=>[ne(`"${e}" must be a string`),te(`"${e}" must not be empty`)],pe=e=>[ne(`"${e}" must be a string`),Q()],ge=e=>[ne(`"${e}" must be a string`),ee()],ve=le(de("accessKey")),he=e=>({exchange:ve(((t,n)=>V(e.post(w.accessKey.exchange,{loginOptions:n},{token:t}))))}),fe=(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),we=({pollingIntervalMs:e=1e3,timeoutMs:t=6e5}={})=>({pollingIntervalMs:Math.max(e||1e3,1e3),timeoutMs:Math.min(t||b,b)});var me,ye;!function(e){e.sms="sms",e.voice="voice",e.whatsapp="whatsapp"}(me||(me={})),function(e){e.email="email"}(ye||(ye={}));const be=Object.assign(Object.assign({},me),ye);var Ie;!function(e){e.waiting="waiting",e.running="running",e.completed="completed",e.failed="failed"}(Ie||(Ie={}));const ke=de("loginId"),Oe=le(de("token")),je=le(ke),Ue=le(de("pendingRef")),Se=le(ke,pe("email")),xe=e=>({verify:Oe((t=>V(e.post(w.enchantedLink.verify,{token:t})))),signIn:je(((n,o,r={},i)=>{var{providerId:s}=r,a=t(r,["providerId"]);return V(e.post(H(w.enchantedLink.signIn,be.email),{loginId:n,URI:o,loginOptions:a,providerId:s},{token:i}))})),signUpOrIn:je(((n,o,r={})=>{var{providerId:i}=r,s=t(r,["providerId"]);return V(e.post(H(w.enchantedLink.signUpOrIn,be.email),{loginId:n,URI:o,loginOptions:s,providerId:i}))})),signUp:je(((n,o,r,i={})=>{var{providerId:s}=i,a=t(i,["providerId"]);return V(e.post(H(w.enchantedLink.signUp,be.email),{loginId:n,URI:o,user:r,loginOptions:a,providerId:s}))})),waitForSession:Ue(((t,n)=>new Promise((o=>{const{pollingIntervalMs:r,timeoutMs:i}=we(n);let s;const a=setInterval((async()=>{const n=await e.post(w.enchantedLink.session,{pendingRef:t});n.ok&&(clearInterval(a),s&&clearTimeout(s),o(V(Promise.resolve(n))))}),r);s=setTimeout((()=>{o({error:{errorDescription:`Session polling timeout exceeded: ${i}ms`,errorCode:"0"},ok:!1}),clearInterval(a)}),i)})))),update:{email:Se(((t,n,o,r,i)=>V(e.post(w.enchantedLink.update.email,Object.assign({loginId:t,email:n,URI:o},i),{token:r}))))}}),Te=le(de("flowId")),Re=le(de("executionId"),de("stepId"),de("interactionId")),Ce=e=>({start:Te(((t,n,o,r,i,s,a)=>V(e.post(w.flow.start,{flowId:t,options:n,conditionInteractionId:o,interactionId:r,componentsVersion:i,flowVersions:s,input:a})))),next:Re(((t,n,o,r,i,s)=>V(e.post(w.flow.next,{executionId:t,stepId:n,interactionId:o,version:r,componentsVersion:i,input:s}))))}),Ee=de("loginId"),Pe=le(de("token")),_e=le(Ee),$e=le(Ee,ge("phone")),Ae=le(Ee,pe("email")),De=Object.keys(be).filter((e=>e!==me.voice)),Le=e=>({verify:Pe((t=>V(e.post(w.magicLink.verify,{token:t})))),signIn:De.reduce(((n,o)=>Object.assign(Object.assign({},n),{[o]:_e(((n,r,i={},s)=>{var{providerId:a}=i,l=t(i,["providerId"]);return V(e.post(H(w.magicLink.signIn,o),{loginId:n,URI:r,loginOptions:l,providerId:a},{token:s}))}))})),{}),signUp:De.reduce(((n,o)=>Object.assign(Object.assign({},n),{[o]:_e(((n,r,i,s={})=>{var{providerId:a}=s,l=t(s,["providerId"]);return V(e.post(H(w.magicLink.signUp,o),{loginId:n,URI:r,user:i,loginOptions:l,providerId:a}))}))})),{}),signUpOrIn:De.reduce(((n,o)=>Object.assign(Object.assign({},n),{[o]:_e(((n,r,i={})=>{var{providerId:s}=i,a=t(i,["providerId"]);return V(e.post(H(w.magicLink.signUpOrIn,o),{loginId:n,URI:r,loginOptions:a,providerId:s}))}))})),{}),update:{email:Ae(((t,n,o,r,i)=>V(e.post(w.magicLink.update.email,Object.assign({loginId:t,email:n,URI:o},i),{token:r})))),phone:Object.keys(me).filter((e=>e!==me.voice)).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:$e(((t,o,r,i,s)=>V(e.post(H(w.magicLink.update.phone,n),Object.assign({loginId:t,phone:o,URI:r},s),{token:i}))))})),{})}});var qe;!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"}(qe||(qe={}));const Ne=le(de("code")),Je=e=>({start:Object.assign(((t,n,o,r,i)=>V(e.post(w.oauth.start,o||{},{queryParams:Object.assign(Object.assign({provider:t},n&&{redirectURL:n}),i&&{loginHint:i}),token:r}))),Object.keys(qe).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:(t,o,r,i)=>V(e.post(w.oauth.start,o||{},{queryParams:Object.assign(Object.assign({provider:n},t&&{redirectURL:t}),i&&{loginHint:i}),token:r}))})),{})),exchange:Ne((t=>V(e.post(w.oauth.exchange,{code:t})))),startNative:(t,n,o)=>V(e.post(w.oauth.startNative,{provider:t,loginOptions:n,implicit:o})),finishNative:(t,n,o,r,i)=>V(e.post(w.oauth.finishNative,{provider:t,stateId:n,user:o,code:r,idToken:i})),getOneTapClientId:t=>V(e.get(w.oauth.oneTap.getOneTapClientId.replace("{provider}",t))),verifyOneTapIDToken:(t,n,o,r)=>V(e.post(w.oauth.oneTap.verifyOneTapIDToken,{provider:t,idToken:n,nonce:o,loginOptions:r})),exchangeOneTapIDToken:(t,n,o,r)=>V(e.post(w.oauth.oneTap.exchangeOneTapIDToken,{provider:t,idToken:n,nonce:o,loginOptions:r}))}),Ke=de("appId"),Me=le(Ke),Fe=e=>({connect:Me(((t,n,o)=>{const r=null==n?void 0:n.tenantId,i=null==n?void 0:n.tenantLevel;return null==n||delete n.tenantId,null==n||delete n.tenantLevel,V(e.post(w.outbound.connect,{appId:t,tenantId:r,tenantLevel:i,options:n},{token:o}))}))}),He=de("loginId"),Ve=le(He,de("code")),Be=le(He),ze=le(He,ge("phone")),Ze=le(He,pe("email")),Ge=e=>({verify:Object.keys(be).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:Ve(((t,o)=>V(e.post(H(w.otp.verify,n),{code:o,loginId:t}))))})),{}),signIn:Object.keys(be).reduce(((n,o)=>Object.assign(Object.assign({},n),{[o]:Be(((n,r={},i)=>{var{providerId:s}=r,a=t(r,["providerId"]);return V(e.post(H(w.otp.signIn,o),{loginId:n,loginOptions:a,providerId:s},{token:i}))}))})),{}),signUp:Object.keys(be).reduce(((n,o)=>Object.assign(Object.assign({},n),{[o]:Be(((n,r,i={})=>{var{providerId:s}=i,a=t(i,["providerId"]);return V(e.post(H(w.otp.signUp,o),{loginId:n,user:r,loginOptions:a,providerId:s}))}))})),{}),signUpOrIn:Object.keys(be).reduce(((n,o)=>Object.assign(Object.assign({},n),{[o]:Be(((n,r={})=>{var{providerId:i}=r,s=t(r,["providerId"]);return V(e.post(H(w.otp.signUpOrIn,o),{loginId:n,loginOptions:s,providerId:i}))}))})),{}),update:{email:Ze(((t,n,o,r)=>V(e.post(w.otp.update.email,Object.assign({loginId:t,email:n},r),{token:o})))),phone:Object.keys(me).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:ze(((t,o,r,i)=>V(e.post(H(w.otp.update.phone,n),Object.assign({loginId:t,phone:o},i),{token:r}))))})),{})}}),We=le(de("tenant")),Xe=le(de("code")),Ye=e=>({start:We(((t,n,o,r,i,s,a)=>V(e.post(w.saml.start,o||{},Object.assign({queryParams:Object.assign(Object.assign(Object.assign(Object.assign({tenant:t},n&&{redirectURL:n}),i&&{ssoId:i}),s&&{forceAuthn:"true"}),a&&{loginHint:a})},r&&{token:r}))))),exchange:Xe((t=>V(e.post(w.saml.exchange,{code:t}))))}),Qe=de("loginId"),et=le(Qe,de("code")),tt=le(Qe),nt=le(Qe),ot=e=>({signUp:tt(((t,n)=>V(e.post(w.totp.signUp,{loginId:t,user:n})))),verify:et(((t,n,o,r)=>V(e.post(w.totp.verify,{loginId:t,code:n,loginOptions:o},{token:r})))),update:nt(((t,n)=>V(e.post(w.totp.update,{loginId:t},{token:n}))))}),rt=de("loginId"),it=de("newPassword"),st=le(rt,de("password")),at=le(rt),lt=le(rt,it),ct=le(rt,de("oldPassword"),it),ut=e=>({signUp:st(((n,o,r,i={})=>{var{providerId:s}=i,a=t(i,["providerId"]);return V(e.post(w.password.signUp,{loginId:n,password:o,user:r,loginOptions:a,providerId:s}))})),signIn:st(((n,o,r={})=>{var{providerId:i}=r,s=t(r,["providerId"]);return V(e.post(w.password.signIn,{loginId:n,password:o,loginOptions:s,providerId:i}))})),sendReset:at(((t,n,o)=>V(e.post(w.password.sendReset,{loginId:t,redirectUrl:n,templateOptions:o})))),update:lt(((t,n,o)=>V(e.post(w.password.update,{loginId:t,newPassword:n},{token:o})))),replace:ct(((t,n,o)=>V(e.post(w.password.replace,{loginId:t,oldPassword:n,newPassword:o})))),policy:()=>V(e.get(w.password.policy))}),dt=ce("loginId"),pt=de("loginId"),gt=de("origin"),vt=le(pt,gt,de("name")),ht=le(pt,gt),ft=le(dt,gt),wt=le(pt,gt,ue("token")),mt=le(de("transactionId"),de("response")),yt=e=>({signUp:{start:vt(((t,n,o,r)=>V(e.post(w.webauthn.signUp.start,{user:{loginId:t,name:o},origin:n,passkeyOptions:r})))),finish:mt(((t,n)=>V(e.post(w.webauthn.signUp.finish,{transactionId:t,response:n}))))},signIn:{start:ft(((t,n,o,r,i)=>V(e.post(w.webauthn.signIn.start,{loginId:t,origin:n,loginOptions:o,passkeyOptions:i},{token:r})))),finish:mt(((t,n)=>V(e.post(w.webauthn.signIn.finish,{transactionId:t,response:n}))))},signUpOrIn:{start:ht(((t,n,o)=>V(e.post(w.webauthn.signUpOrIn.start,{loginId:t,origin:n,passkeyOptions:o}))))},update:{start:wt(((t,n,o,r)=>V(e.post(w.webauthn.update.start,{loginId:t,origin:n,passkeyOptions:r},{token:o})))),finish:mt(((t,n)=>V(e.post(w.webauthn.update.finish,{transactionId:t,response:n}))))}}),bt=ce("loginId"),It=le(bt),kt=le(de("pendingRef")),Ot=e=>({signUpOrIn:It(((n,o={})=>{var{providerId:r}=o,i=t(o,["providerId"]);return V(e.post(w.notp.signUpOrIn,{loginId:n,loginOptions:i,providerId:r}))})),signUp:It(((n,o,r={})=>{var{providerId:i}=r,s=t(r,["providerId"]);return V(e.post(w.notp.signUp,{loginId:n,user:o,providerId:i,loginOptions:s}))})),signIn:It(((n,o={},r)=>{var{providerId:i}=o,s=t(o,["providerId"]);return V(e.post(w.notp.signIn,{loginId:n,loginOptions:s,providerId:i},{token:r}))})),waitForSession:kt(((t,n)=>new Promise((o=>{const{pollingIntervalMs:r,timeoutMs:i}=we(n);let s;const a=setInterval((async()=>{const n=await e.post(w.notp.session,{pendingRef:t});n.ok&&(clearInterval(a),s&&clearTimeout(s),o(V(Promise.resolve(n))))}),r);s=setTimeout((()=>{o({error:{errorDescription:`Session polling timeout exceeded: ${i}ms`,errorCode:"0"},ok:!1}),clearInterval(a)}),i)}))))}),jt=le(de("token")),Ut=le(ue("token"));var St,xt=le([(St=de("projectId"),z(((e,t)=>n=>G(...t).validate(((e,t)=>{const n=(Array.isArray(t)?t.join("."):String(t)).replace(/\[\\?("|')?(\w|d)+\\?("|')?\]/g,((e,t,n)=>"."+n)).split("."),o=n.length;let r=0,i=e===Object(e)?e:void 0;for(;null!=i&&r<o;)i=i[n[r++]];return r&&r===o&&void 0!==i?i:void 0})(n,e)))("projectId",St))())])((e=>{const{projectId:t,logger:n,baseUrl:o,cookiePolicy:r,baseHeaders:i={},refreshCookieName:s,fetch:a}=e;return l=D({baseUrl:o,projectId:t,logger:n,hooks:{get beforeRequest(){var t;return null===(t=e.hooks)||void 0===t?void 0:t.beforeRequest},get afterRequest(){var t;return null===(t=e.hooks)||void 0===t?void 0:t.afterRequest},get transformResponse(){var t;return null===(t=e.hooks)||void 0===t?void 0:t.transformResponse}},cookiePolicy:r,baseConfig:{baseHeaders:i},refreshCookieName:s,fetch:a}),{accessKey:he(l),otp:Ge(l),magicLink:Le(l),enchantedLink:xe(l),oauth:Je(l),outbound:Fe(l),saml:Ye(l),totp:ot(l),notp:Ot(l),webauthn:yt(l),password:ut(l),flow:Ce(l),refresh:Ut(((e,t,n,o)=>{const r={};n&&(r.externalToken=n);const i=o?w.tryRefresh:w.refresh;return V(l.post(i,r,{token:e,queryParams:t}))})),selectTenant:le([ne("tenantId")],[se('"token" must be string or undefined')])(((e,t)=>V(l.post(w.selectTenant,{tenant:e},{token:t})))),logout:Ut((e=>V(l.post(w.logout,{},{token:e})))),logoutAll:Ut((e=>V(l.post(w.logoutAll,{},{token:e})))),me:Ut((e=>V(l.get(w.me,{token:e})))),myTenants:le([ae('"tenants" must a string array or a boolean')],[se('"token" must be string or undefined')])(((e,t)=>{const n={};return"boolean"==typeof e?n.dct=e:n.ids=e,V(l.post(w.myTenants,n,{token:t}))})),history:Ut((e=>V(l.get(w.history,{token:e})))),isJwtExpired:jt(J),getTenants:jt(K),getJwtPermissions:jt(M),getJwtRoles:jt(F),getCurrentTenant:jt(B),httpClient:l};var l})),Tt=Object.assign(xt,{DeliveryMethods:be});const Rt=(...e)=>{console.debug(...e)},Ct="3.2.0",Et="undefined"!=typeof window,Pt=Math.pow(2,31)-1,_t=`https://descopecdn.com/npm/oidc-client-ts@${Ct}/dist/browser/oidc-client-ts.min.js`,$t=`https://cdn.jsdelivr.net/npm/oidc-client-ts@${Ct}/dist/browser/oidc-client-ts.min.js`,At=e=>{let t=((n=e)?n.getTime()-(new Date).getTime():0)-2e4;var n;return t>Pt&&(Rt(`Timeout is too large (${t}ms), setting it to ${Pt}ms`),t=Pt),t};
|
|
2
2
|
/*! js-cookie v3.0.5 | MIT */
|
|
3
|
-
function At(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 Dt=function e(t,n){function o(e,o,r){if("undefined"!=typeof document){"number"==typeof(r=At({},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,"",At({},t,{expires:-1}))},withAttributes:function(t){return e(this.converter,At({},this.attributes,t))},withConverter:function(t){return e(At({},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 Lt="DS",qt="DSR",Nt="DSI";function Jt(e,t,n){if(t){const{cookieDomain:o,cookiePath:r,cookieSameSite:i,cookieExpiration:s,cookieSecure:a}=n,l=new Date(1e3*s),c=function(e){const t=window.location.hostname.split("."),n=e.split(".");return t.slice(-n.length).join(".")===e}(o);Dt.set(e,t,{path:r,domain:c?o:void 0,expires:l,sameSite:i,secure:a})}}const Kt=e=>(null==e?void 0:e.cookieName)||Lt;function Mt(e=""){return h(`${e}${qt}`)||""}function Ft(e="",t){return Dt.get(Kt(t))||h(`${e}${Lt}`)||""}function Ht(e=""){return h(`${e}${Nt}`)||""}function Vt(e="",t){f(`${e}${qt}`),f(`${e}${Lt}`),f(`${e}${Nt}`);const n=Kt(t);Dt.remove(n)}const Bt=Ct&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem("fingerprint.endpoint.url"))||"https://api.descope.com",zt="vsid",Zt="vrid";var Gt={default:"endpoint"},Wt="Blocked by CSP",Xt="The endpoint parameter is not a valid URL",Yt="Failed to load the JS script of the agent",Qt="9319";function en(e,t){var n,o,r,i,s,a=[],l=(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),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===Wt||s===Xt)n.exclude(),i=0;else if(s===Qt)n.exclude();else if(s===Yt){var a=Date.now()-e.getTime()<50,l=n.current();l&&a&&!r.has(l)&&(r.add(l),i=0),n.postpone()}else n.postpone();var c=n.current();return void 0===c?void 0:[c,null!=i?i:e.getTime()+o()-Date.now()]}]),c=l[0],u=l[1];if(void 0===c)return Promise.reject(new TypeError("The list of script URL patterns is empty"));var d=function(e){var n=new Date,o=function(t){return a.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(null!=s||(s=e),a.length>=5)throw s;var t=u(n,e);if(!t)throw s;var o,r=t[0],i=t[1];return(o=i,new Promise((function(e){return setTimeout(e,o)}))).then((function(){return d(r)}))}))};return d(c).then((function(e){return[e,a]}))}var tn="https://fpnpmcdn.net/v<version>/<apiKey>/loader_v<loaderVersion>.js",nn=tn;function on(n){var o;n.scriptUrlPattern;var r=n.token,i=n.apiKey,s=void 0===i?r:i,a=t(n,["scriptUrlPattern","token","apiKey"]),l=null!==(o=function(e,t){return function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}(e,t)?e[t]:void 0}(n,"scriptUrlPattern"))&&void 0!==o?o:tn,c=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=c[0],d=c[1];return Promise.resolve().then((function(){if(!s||"string"!=typeof s)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.11.6"):e}))}(String(e),t)}))}(l,s);return en(e,rn)})).catch((function(e){throw d(),function(e){return e instanceof Error&&e.message===Qt?new Error(Yt):e}(e)})).then((function(t){var n=t[0],o=t[1];return d(),n.load(e(e({},a),{ldi:{attempts:o,visibilityStates:u}}))}))}function rn(e){return function(e,t,n){var o,r=document,i="securitypolicyviolation",s=function(t){var n=new URL(e,location.href),r=t.blockedURI;r!==n.href&&r!==n.protocol.slice(0,-1)&&r!==n.origin||(o=t,a())};r.addEventListener(i,s);var a=function(){return r.removeEventListener(i,s)};return Promise.resolve().then(t).then((function(e){return a(),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(a(),o)return n(o);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(Xt);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(Yt))},o.async=!0,o.src=e,i.appendChild(o)}))}(e)}),(function(){throw new Error(Wt)})).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(Qt);return n}const an=(e=!1)=>{const t=h("fp");if(!t)return null;const n=JSON.parse(t);return(new Date).getTime()>n.expiry&&!e?null:n.value},ln=async(e,t=Bt)=>{try{if(an())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(),Gt],scriptUrlPattern:[i,nn]}),a=await s,{requestId:l}=await a.get({linkedId:n}),c=((e,t)=>({[zt]:e,[Zt]:t}))(n,l);(e=>{const t={value:e,expiry:(new Date).getTime()+864e5};g("fp",JSON.stringify(t))})(c)}catch(e){console.warn("Could not load fingerprint",e)}},cn=e=>{const t=an(!0);return t&&e.body&&(e.body.fpData=t),e},un="descopeFlowNonce",dn="X-Descope-Flow-Nonce",pn="/v1/flow/start",gn="/v1/flow/next",hn=(e,t=un)=>`${t}${e}`,fn=(e,t=un)=>{try{const n=hn(e,t);f(n)}catch(e){console.error("Error removing flow nonce:",e)}},vn=e=>{var t;return(null===(t=/.*\|#\|(.*)/.exec(e))||void 0===t?void 0:t[1])||null},wn=e=>{var t;return e.path===gn&&(null===(t=e.body)||void 0===t?void 0:t.executionId)?vn(e.body.executionId):null},mn="dls_last_user_login_id",yn="dls_last_user_display_name",bn=e=>g(mn,e),kn=()=>h(mn),In=()=>h(yn),On=e=>async(...t)=>{var n;t[1]=t[1]||{};const[,o={}]=t,r=kn(),i=In();r&&(null!==(n=o.lastAuth)&&void 0!==n||(o.lastAuth={}),o.lastAuth.loginId=r,o.lastAuth.name=i);return await e(...t)},jn=e=>t=>async(...n)=>{const o=await t(...n);return e||(f(mn),f(yn)),o};function Un(){const e=[];return{pub:t=>{e.forEach((e=>e(t)))},sub:t=>{const n=e.push(t)-1;return()=>e.splice(n,1)}}}const Sn=(e,t)=>n=>async(...o)=>{const r=await n(...o);return Vt(e,t),r};async function xn(e){const t=function(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=_n(n.publicKey.challenge),n.publicKey.user.id=_n(n.publicKey.user.id),null===(t=n.publicKey.excludeCredentials)||void 0===t||t.forEach((e=>{e.id=_n(e.id)})),n}(e),n=await navigator.credentials.create(t);return o=n,JSON.stringify({id:o.id,rawId:$n(o.rawId),type:o.type,response:{attestationObject:$n(o.response.attestationObject),clientDataJSON:$n(o.response.clientDataJSON)}});var o}async function Tn(e){const t=En(e);return Pn(await navigator.credentials.get(t))}async function Rn(e,t){const n=En(e);n.signal=t.signal,n.mediation="conditional";return Pn(await navigator.credentials.get(n))}async function Cn(e=!1){if(!Ct)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 En(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=_n(n.publicKey.challenge),null===(t=n.publicKey.allowCredentials)||void 0===t||t.forEach((e=>{e.id=_n(e.id)})),n}function Pn(e){return JSON.stringify({id:e.id,rawId:$n(e.rawId),type:e.type,response:{authenticatorData:$n(e.response.authenticatorData),clientDataJSON:$n(e.response.clientDataJSON),signature:$n(e.response.signature),userHandle:e.response.userHandle?$n(e.response.userHandle):void 0}})}function _n(e){const t=e.replace(/_/g,"/").replace(/-/g,"+");return Uint8Array.from(atob(t),(e=>e.charCodeAt(0))).buffer}function $n(e){return btoa(String.fromCharCode.apply(null,new Uint8Array(e))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}var An,Dn=(An=e=>({async signUp(t,n,o){const r=await e.webauthn.signUp.start(t,window.location.origin,n,o);if(!r.ok)return r;const i=await xn(r.data.options);return await e.webauthn.signUp.finish(r.data.transactionId,i)},async signIn(t,n){const o=await e.webauthn.signIn.start(t,window.location.origin,void 0,void 0,n);if(!o.ok)return o;const r=await Tn(o.data.options);return await e.webauthn.signIn.finish(o.data.transactionId,r)},async signUpOrIn(t,n){var o;const r=await e.webauthn.signUpOrIn.start(t,window.location.origin,n);if(!r.ok)return r;if(null===(o=r.data)||void 0===o?void 0:o.create){const t=await xn(r.data.options);return await e.webauthn.signUp.finish(r.data.transactionId,t)}{const t=await Tn(r.data.options);return await e.webauthn.signIn.finish(r.data.transactionId,t)}},async update(t,n,o){const r=await e.webauthn.update.start(t,window.location.origin,n,o);if(!r.ok)return r;const i=await xn(r.data.options);return await e.webauthn.update.finish(r.data.transactionId,i)},helpers:{create:xn,get:Tn,isSupported:Cn,conditional:Rn}}),(...e)=>{const t=An(...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 Ln={config:"/fedcm/config"},qn=()=>{if(window.crypto&&window.crypto.getRandomValues){const e=new Uint8Array(16);return window.crypto.getRandomValues(e),Array.from(e,(e=>e.toString(16).padStart(2,"0"))).join("")}return Math.random().toString(36).substring(2)};async function Nn(e,t){var n;try{await Jn(e,t)}catch(e){null===(n=null==t?void 0:t.onFailed)||void 0===n||n.call(t,e)}}async function Jn(e,t){var n,o;const r=await async function(e,t="google",n,o,r){const i=qn(),s=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")}}))}(),a=await e.oauth.getOneTapClientId(t);if(!a.ok)throw new Error("Failed to get OneTap client ID for provider "+t);const l=a.data.clientId;return new Promise((e=>{var a,c;const u=n=>{e({provider:t,nonce:i,credential:null==n?void 0:n.credential})};s.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===(c=null==n?void 0:n.use_fedcm_for_prompt)||void 0===c||c,client_id:l,callback:u,nonce:i})),s.prompt((e=>{var t,n;if(r&&(null==e?void 0:e.isDismissedMoment())){const n=null===(t=e.getDismissedReason)||void 0===t?void 0:t.call(e);return null==r||r(n),void u()}if(o&&(null==e?void 0:e.isSkippedMoment())){const t=null===(n=e.getSkippedReason)||void 0===n?void 0:n.call(e);return null==o||o(t),void u()}}))}))}(e,t.provider,t.oneTapConfig,t.onSkipped,t.onDismissed);if(!r.credential)return null;if(null==t?void 0:t.onCodeReceived){const o=await e.oauth.verifyOneTapIDToken(r.provider,r.credential,r.nonce,null==t?void 0:t.loginOptions);if(!o.ok||!o.data)throw new Error("Failed to verify OneTap client ID for provider "+r.provider);null===(n=null==t?void 0:t.onCodeReceived)||void 0===n||n.call(t,o.data.code)}else{const n=await e.oauth.exchangeOneTapIDToken(r.provider,r.credential,r.nonce,null==t?void 0:t.loginOptions);if(!n.ok||!n.data)throw new Error("Failed to exchange OneTap client ID for provider "+r.provider);null===(o=null==t?void 0:t.onAuthenticated)||void 0===o||o.call(t,n.data)}}var Kn=e=>Object.assign(Object.assign({},e.flow),{start:async(...t)=>{const n=await Cn(),o=Object.assign(Object.assign({location:window.location.href},t[1]),{deviceInfo:{webAuthnSupport:n},startOptionsVersion:1});return t[1]=o,e.flow.start(...t)}});let Mn;const Fn=(e,t)=>new Promise(((n,o)=>{if(!e.length)return o(new Error("No URLs provided to loadScriptWithFallback"));const r=t();if(r)return n(r);const i=e.shift(),s=document.createElement("script");s.src=i,s.id=(e=>{let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return Math.abs(t).toString(16)})(i),s.onload=()=>{const e=t();if(e)return n(e);throw new Error("Could not get entry after loading script from URL")},s.addEventListener("error",(()=>{Fn(e,t),s.setAttribute("data-error","true")})),document.body.appendChild(s)}));const Hn=async(e,t,n)=>{Mn||(Mn=(async()=>{try{return require("oidc-client-ts")}catch(e){return Fn([Pt,_t],(()=>window.oidc))}})());const{OidcClient:o,WebStorageStateStore:r}=await Mn;if(!o)throw new Error("oidc-client-ts is not installed. Please install it by running `npm install oidc-client-ts`");const i=t,s=(null==n?void 0:n.redirectUri)||window.location.href,a=(null==n?void 0:n.scope)||"openid email roles descope.custom_claims offline_access",l=`${i}_user`;let c=e.httpClient.buildUrl(t);(null==n?void 0:n.applicationId)&&(c=`${c}/${n.applicationId}`);const u={authority:c,client_id:t,redirect_uri:s,response_type:"code",scope:a,stateStore:new r({store:window.localStorage,prefix:i}),loadUserInfo:!0,fetchRequestCredentials:"same-origin"};return(null==n?void 0:n.redirectUri)&&(u.redirect_uri=n.redirectUri),(null==n?void 0:n.scope)&&(u.scope=n.scope),{client:new o(u),stateUserKey:l}},Vn=(e,t,n)=>{const o=async()=>{let o,r;return o&&r||({client:o,stateUserKey:r}=await Hn(e,t,n)),{client:o,stateUserKey:r}},r=async(t="")=>{var n;const{client:r,stateUserKey:i}=await o(),s=await r.processSigninResponse(t||window.location.href);var a;return await(null===(n=e.httpClient.hooks)||void 0===n?void 0:n.afterRequest({},new Response(JSON.stringify(s)))),g(i,JSON.stringify({id_token:(a=s).id_token,session_state:a.session_state,profile:a.profile})),(()=>{const e=new URL(window.location.href);e.searchParams.delete("code"),e.searchParams.delete("state"),window.history.replaceState({},document.title,e.toString())})(),s};return{loginWithRedirect:async(e={},t=!1)=>{const{client:n}=await o(),r=await n.createSigninRequest(e),{url:i}=r;return t||(window.location.href=i),{ok:!0,data:r}},finishLogin:r,finishLoginIfNeed:async(e="")=>{if(window.location.search.includes("code")&&window.location.search.includes("state"))return await r(e)},refreshToken:async t=>{var n;const{client:r,stateUserKey:i}=await o(),s=(e=>{const t=h(e);return t?JSON.parse(t):null})(i);if(!s)throw new Error("User not found in storage to refresh token");let a=t;if(!a){const t={};e.httpClient.hooks.beforeRequest(t),a=t.token}const l=await r.useRefreshToken({state:{refresh_token:a,session_state:s.session_state,profile:s.profile}});return await(null===(n=e.httpClient.hooks)||void 0===n?void 0:n.afterRequest({},new Response(JSON.stringify(l)))),l},logout:async(e,t=!1)=>{const{client:n,stateUserKey:r}=await o();e||(e={}),e.id_token_hint=e.id_token_hint||Ht(),e.post_logout_redirect_uri=e.post_logout_redirect_uri||window.location.href;const i=await n.createSignoutRequest(e),{url:s}=i;return f(r),t||window.location.replace(s),i}}},Bn=function(...e){return t=>e.reduce(((e,t)=>t(e)),t)}((e=>t=>{var n;return n=t.customStorage,i=n,e(t)}),(e=>n=>{var{fpKey:o,fpLoad:r}=n,i=t(n,["fpKey","fpLoad"]);return Ct?(o&&r&&ln(o).catch((()=>null)),e(u(i,{beforeRequest:cn}))):e(i)}),(e=>n=>{var{autoRefresh:o}=n,i=t(n,["autoRefresh"]);if(!o||"undefined"!=typeof window&&window.descopeBridge)return e(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,c;Ct&&document.addEventListener("visibilitychange",(()=>{"visible"===document.visibilityState&&l&&new Date>l&&(Tt("Expiration time passed, refreshing session"),p.refresh(Mt()||c))}));const p=e(u(i,{afterRequest:async(e,t)=>{const{sessionJwt:n,refreshJwt:o,sessionExpiration:i}=await d(t);if(401===(null==t?void 0:t.status))Tt("Received 401, canceling all timers"),s();else if(n||i){if(l=((e,t)=>{if(t)return new Date(1e3*t);Tt("Could not extract expiration time from session token, trying to decode the token");try{const t=r(e);if(t.exp)return new Date(1e3*t.exp)}catch(e){return null}})(n,i),!l)return void Tt("Could not extract expiration time from session token");c=o;const e=$t(l);if(s(),e<=2e4)return void Tt("Session is too close to expiration, not setting refresh timer");const t=new Date(Date.now()+e).toLocaleTimeString("en-US",{hour12:!1});Tt(`Setting refresh timer for ${t}. (${e}ms)`),a((()=>{Tt("Refreshing session due to timer"),p.refresh(Mt()||o)}),e)}}}));return fe(p,["logout","logoutAll","oidc.logout"],(e=>async(...t)=>{const n=await e(...t);return Tt("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.37.1"},t.baseHeaders)}))),(e=>t=>{const n=Un(),o=Un(),r=Un(),i=Un(),s=e(u(t,{afterRequest:async(e,t)=>{if(401===(null==t?void 0:t.status))o.pub(null),r.pub(null),n.pub(null),i.pub(null);else{const e=await(async e=>{const t=await d(e);return(null==t?void 0:t.user)||((null==t?void 0:t.hasOwnProperty("userId"))?t:void 0)})(t);e&&r.pub(e);const{sessionJwt:s,sessionExpiration:a,claims:l}=await d(t);s&&o.pub(s),l&&i.pub(l),(a||s)&&n.pub(a||42)}}})),a=fe(s,["logout","logoutAll","oidc.logout"],(e=>async(...t)=>{const s=await e(...t);return o.pub(null),r.pub(null),n.pub(null),i.pub(null),s}));return Object.assign(a,{onSessionTokenChange:o.sub,onUserChange:r.sub,onClaimsChange:i.sub,onIsAuthenticatedChange:e=>n.sub((t=>{e(!!t)}))})}),(e=>n=>{const{enableFlowNonce:o=!0,nonceStoragePrefix:r=un}=n,s=t(n,["enableFlowNonce","nonceStoragePrefix"]);if(!o)return e(s);((e=un)=>{try{if(!p)return;for(let o=0;o<(t=void 0,n=void 0,null!==(n=null!==(t=null==i?void 0:i.length)&&void 0!==t?t:null===localStorage||void 0===localStorage?void 0:localStorage.length)&&void 0!==n?n:0);o++){const t=v(o);if(t&&t.startsWith(e)){const e=h(t);if(e)try{JSON.parse(e).expiry<Date.now()&&f(t)}catch(e){f(t)}}}}catch(e){console.error("Error cleaning up expired nonces:",e)}var t,n})(r);return e(u(s,{afterRequest:async(e,t)=>{if(e.path!==pn&&e.path!==gn)return;const{nonce:n,executionId:o}=await(async(e,t)=>{try{const n=t.headers.get(dn);let o=await t.clone().json().then((e=>(null==e?void 0:e.executionId)||null)).catch((()=>null));return o||(o=wn(e)),{nonce:n,executionId:vn(o)}}catch(e){return{nonce:null,executionId:null}}})(e,t);if(n&&o){((e,t,n,o=un)=>{try{const r=hn(e,o),i=n?172800:10800,s={value:t,expiry:Date.now()+1e3*i,isStart:n};g(r,JSON.stringify(s))}catch(e){console.error("Error setting flow nonce:",e)}})(o,n,e.path===pn,r)}},beforeRequest:e=>{if(e.path===gn){const t=wn(e);if(t){const n=((e,t=un)=>{try{const n=hn(e,t),o=h(n);if(!o)return null;const r=JSON.parse(o);return r.expiry<Date.now()?(fn(e,t),null):r.value}catch(e){return console.error("Error getting flow nonce:",e),null}})(t,r);n&&(e.headers=e.headers||{},e.headers[dn]=n)}}return e}}))}),(e=>n=>{var{storeLastAuthenticatedUser:o=!0,keepLastAuthenticatedUserAfterLogout:r=!1}=n,i=t(n,["storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout"]);if(!o)return Object.assign(e(i),{getLastUserLoginId:kn,getLastUserDisplayName:In});const s=e(u(i,{afterRequest:async(e,t)=>{var n;const{userInfo:o,lastAuth:r}=await(async e=>{if(!(null==e?void 0:e.ok))return{userInfo:void 0,lastAuth:void 0};const t=await(null==e?void 0:e.clone().json()),n=c((null==t?void 0:t.authInfo)||t||{});return{userInfo:(null==n?void 0:n.user)||((null==n?void 0:n.hasOwnProperty("userId"))?n:void 0),lastAuth:t.lastAuth}})(t),i=null===(n=null==o?void 0:o.loginIds)||void 0===n?void 0:n[0],s=null==o?void 0:o.name;i?(bn(i),(e=>{g(yn,e)})(s)):(null==r?void 0:r.loginId)&&bn(r.loginId)}}));let a=fe(s,["flow.start"],On);return a=fe(a,["logout","logoutAll"],jn(r)),Object.assign(a,{getLastUserLoginId:kn,getLastUserDisplayName:In})}),(e=>n=>{var{persistTokens:o,sessionTokenViaCookie:r,storagePrefix:i}=n,s=t(n,["persistTokens","sessionTokenViaCookie","storagePrefix"]);if(!o||!Ct)return e(s);const a=e(u(s,{beforeRequest:(l=i,e=>Object.assign(e,{token:e.token||Mt(l)})),afterRequest:async(e,t)=>{const n=/^\/v\d+\/mgmt\//.test(e.path);401===(null==t?void 0:t.status)?n||Vt(i,r):((e={},t=!1,n="")=>{var o,r;const{sessionJwt:i,refreshJwt:s}=e;if(s&&g(`${n}${qt}`,s),i)if(t){const n=t.sameSite||"Strict",s=null===(o=t.secure)||void 0===o||o,a=null!==(r=t.domain)&&void 0!==r?r:e.cookieDomain;Jt(Kt(t),i,Object.assign(Object.assign({},e),{cookieSameSite:n,cookieSecure:s,cookieDomain:a}))}else g(`${n}${Lt}`,i);e.idToken&&g(`${n}${Nt}`,e.idToken)})(await d(t),r,i)}}));var l;const c=fe(a,["logout","logoutAll","oidc.logout"],Sn(i,r));return Object.assign(c,{getRefreshToken:()=>Mt(i),getSessionToken:()=>Ft(i),getIdToken:()=>Ht(i)})}))((e=>{const t=xt(e),n=Vn(t,e.projectId,e.oidcConfig);return Object.assign(Object.assign({},t),{refresh:async(o,r)=>{var i;if(e.oidcConfig)try{return await n.refreshToken(o),Promise.resolve({ok:!0})}catch(e){return Promise.resolve({ok:!1,error:{errorCode:"J161001",errorDescription:e.toString()}})}const s=Ft(),a=Mt();let l="";if(e.getExternalToken)try{l=await(null===(i=e.getExternalToken)||void 0===i?void 0:i.call(e))}catch(e){Tt("Error getting external token while refreshing",e)}return t.refresh(o,{dcs:s?"t":"f",dcr:a?"t":"f"},l,r)},logout:async o=>{if(e.oidcConfig)try{return await n.logout({id_token_hint:o}),Promise.resolve({ok:!0})}catch(e){return Promise.resolve({ok:!1,error:{errorCode:"J161000",errorDescription:e.toString()}})}return t.logout(o)},flow:Kn(t),webauthn:Dn(t),fedcm:(o=t,r=e.projectId,{onetap:{requestExchangeCode(e){Nn(o,e)},requestAuthentication(e){Nn(o,e)}},async oneTap(e,t,n,r,i){await Jn(o,{provider:e,oneTapConfig:t,loginOptions:n,onSkipped:r,onDismissed:i})},async launch(e){var t;const n={identity:{context:e||"signin",providers:[{configURL:o.httpClient.buildUrl(r+Ln.config),clientId:r}]}},i=await(null===(t=navigator.credentials)||void 0===t?void 0:t.get(n));return o.refresh(i.token)},isSupported:()=>Ct&&"IdentityCredential"in window,async isLoggedIn(e){var t;const n=o.httpClient.buildUrl(r+Ln.config);try{const o={identity:{context:e||"signin",providers:[{configURL:n,clientId:r}]}},i=await(null===(t=navigator.credentials)||void 0===t?void 0:t.get(o));return!!i&&!!i.token}catch(e){return!1}}}),oidc:n});var o,r}));return Bn.REFRESH_TOKEN_KEY=qt,Bn.SESSION_TOKEN_KEY=Lt,Bn}));
|
|
3
|
+
function Dt(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 Lt=function e(t,n){function o(e,o,r){if("undefined"!=typeof document){"number"==typeof(r=Dt({},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,"",Dt({},t,{expires:-1}))},withAttributes:function(t){return e(this.converter,Dt({},this.attributes,t))},withConverter:function(t){return e(Dt({},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 qt="DS",Nt="DSR",Jt="DSI";function Kt(e,t,n){if(t){const{cookieDomain:o,cookiePath:r,cookieSameSite:i,cookieExpiration:s,cookieSecure:a}=n,l=new Date(1e3*s),c=function(e){const t=window.location.hostname.split("."),n=e.split(".");return t.slice(-n.length).join(".")===e}(o);Lt.set(e,t,{path:r,domain:c?o:void 0,expires:l,sameSite:i,secure:a})}}const Mt=e=>(null==e?void 0:e.cookieName)||qt;function Ft(e=""){return v(`${e}${Nt}`)||""}function Ht(e="",t){return Lt.get(Mt(t))||v(`${e}${qt}`)||""}function Vt(e=""){return v(`${e}${Jt}`)||""}function Bt(e="",t){h(`${e}${Nt}`),h(`${e}${qt}`),h(`${e}${Jt}`);const n=Mt(t);Lt.remove(n)}const zt=Et&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem("fingerprint.endpoint.url"))||"https://api.descope.com",Zt="vsid",Gt="vrid";var Wt={default:"endpoint"},Xt="Blocked by CSP",Yt="The endpoint parameter is not a valid URL",Qt="Failed to load the JS script of the agent",en="9319";function tn(e,t){var n,o,r,i,s,a=[],l=(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),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===Xt||s===Yt)n.exclude(),i=0;else if(s===en)n.exclude();else if(s===Qt){var a=Date.now()-e.getTime()<50,l=n.current();l&&a&&!r.has(l)&&(r.add(l),i=0),n.postpone()}else n.postpone();var c=n.current();return void 0===c?void 0:[c,null!=i?i:e.getTime()+o()-Date.now()]}]),c=l[0],u=l[1];if(void 0===c)return Promise.reject(new TypeError("The list of script URL patterns is empty"));var d=function(e){var n=new Date,o=function(t){return a.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(null!=s||(s=e),a.length>=5)throw s;var t=u(n,e);if(!t)throw s;var o,r=t[0],i=t[1];return(o=i,new Promise((function(e){return setTimeout(e,o)}))).then((function(){return d(r)}))}))};return d(c).then((function(e){return[e,a]}))}var nn="https://fpnpmcdn.net/v<version>/<apiKey>/loader_v<loaderVersion>.js",on=nn;function rn(n){var o;n.scriptUrlPattern;var r=n.token,i=n.apiKey,s=void 0===i?r:i,a=t(n,["scriptUrlPattern","token","apiKey"]),l=null!==(o=function(e,t){return function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}(e,t)?e[t]:void 0}(n,"scriptUrlPattern"))&&void 0!==o?o:nn,c=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=c[0],d=c[1];return Promise.resolve().then((function(){if(!s||"string"!=typeof s)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.11.6"):e}))}(String(e),t)}))}(l,s);return tn(e,sn)})).catch((function(e){throw d(),function(e){return e instanceof Error&&e.message===en?new Error(Qt):e}(e)})).then((function(t){var n=t[0],o=t[1];return d(),n.load(e(e({},a),{ldi:{attempts:o,visibilityStates:u}}))}))}function sn(e){return function(e,t,n){var o,r=document,i="securitypolicyviolation",s=function(t){var n=new URL(e,location.href),r=t.blockedURI;r!==n.href&&r!==n.protocol.slice(0,-1)&&r!==n.origin||(o=t,a())};r.addEventListener(i,s);var a=function(){return r.removeEventListener(i,s)};return Promise.resolve().then(t).then((function(e){return a(),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(a(),o)return n(o);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(Yt);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(Qt))},o.async=!0,o.src=e,i.appendChild(o)}))}(e)}),(function(){throw new Error(Xt)})).then(an)}function an(){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(en);return n}const ln=(e=!1)=>{const t=v("fp");if(!t)return null;const n=JSON.parse(t);return(new Date).getTime()>n.expiry&&!e?null:n.value},cn=async(e,t=zt)=>{try{if(ln())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=rn({apiKey:e,endpoint:[o.toString(),Wt],scriptUrlPattern:[i,on]}),a=await s,{requestId:l}=await a.get({linkedId:n}),c=((e,t)=>({[Zt]:e,[Gt]:t}))(n,l);(e=>{const t={value:e,expiry:(new Date).getTime()+864e5};g("fp",JSON.stringify(t))})(c)}catch(e){console.warn("Could not load fingerprint",e)}},un=e=>{const t=ln(!0);return t&&e.body&&(e.body.fpData=t),e},dn="descopeFlowNonce",pn="X-Descope-Flow-Nonce",gn="/v1/flow/start",vn="/v1/flow/next",hn=(e,t=dn)=>`${t}${e}`,fn=(e,t=dn)=>{try{const n=hn(e,t);h(n)}catch(e){console.error("Error removing flow nonce:",e)}},wn=e=>{var t;return(null===(t=/.*\|#\|(.*)/.exec(e))||void 0===t?void 0:t[1])||null},mn=e=>{var t;return e.path===vn&&(null===(t=e.body)||void 0===t?void 0:t.executionId)?wn(e.body.executionId):null},yn="dls_last_user_login_id",bn="dls_last_user_display_name",In=e=>g(yn,e),kn=()=>v(yn),On=()=>v(bn),jn=e=>async(...t)=>{var n;t[1]=t[1]||{};const[,o={}]=t,r=kn(),i=On();r&&(null!==(n=o.lastAuth)&&void 0!==n||(o.lastAuth={}),o.lastAuth.loginId=r,o.lastAuth.name=i);return await e(...t)},Un=e=>t=>async(...n)=>{const o=await t(...n);return e||(h(yn),h(bn)),o};function Sn(){const e=[];return{pub:t=>{e.forEach((e=>e(t)))},sub:t=>{const n=e.push(t)-1;return()=>e.splice(n,1)}}}const xn=(e,t)=>n=>async(...o)=>{const r=await n(...o);return Bt(e,t),r};async function Tn(e){const t=function(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=$n(n.publicKey.challenge),n.publicKey.user.id=$n(n.publicKey.user.id),null===(t=n.publicKey.excludeCredentials)||void 0===t||t.forEach((e=>{e.id=$n(e.id)})),n}(e),n=await navigator.credentials.create(t);return o=n,JSON.stringify({id:o.id,rawId:An(o.rawId),type:o.type,response:{attestationObject:An(o.response.attestationObject),clientDataJSON:An(o.response.clientDataJSON)}});var o}async function Rn(e){const t=Pn(e);return _n(await navigator.credentials.get(t))}async function Cn(e,t){const n=Pn(e);n.signal=t.signal,n.mediation="conditional";return _n(await navigator.credentials.get(n))}async function En(e=!1){if(!Et)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 Pn(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=$n(n.publicKey.challenge),null===(t=n.publicKey.allowCredentials)||void 0===t||t.forEach((e=>{e.id=$n(e.id)})),n}function _n(e){return JSON.stringify({id:e.id,rawId:An(e.rawId),type:e.type,response:{authenticatorData:An(e.response.authenticatorData),clientDataJSON:An(e.response.clientDataJSON),signature:An(e.response.signature),userHandle:e.response.userHandle?An(e.response.userHandle):void 0}})}function $n(e){const t=e.replace(/_/g,"/").replace(/-/g,"+");return Uint8Array.from(atob(t),(e=>e.charCodeAt(0))).buffer}function An(e){return btoa(String.fromCharCode.apply(null,new Uint8Array(e))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}var Dn,Ln=(Dn=e=>({async signUp(t,n,o){const r=await e.webauthn.signUp.start(t,window.location.origin,n,o);if(!r.ok)return r;const i=await Tn(r.data.options);return await e.webauthn.signUp.finish(r.data.transactionId,i)},async signIn(t,n){const o=await e.webauthn.signIn.start(t,window.location.origin,void 0,void 0,n);if(!o.ok)return o;const r=await Rn(o.data.options);return await e.webauthn.signIn.finish(o.data.transactionId,r)},async signUpOrIn(t,n){var o;const r=await e.webauthn.signUpOrIn.start(t,window.location.origin,n);if(!r.ok)return r;if(null===(o=r.data)||void 0===o?void 0:o.create){const t=await Tn(r.data.options);return await e.webauthn.signUp.finish(r.data.transactionId,t)}{const t=await Rn(r.data.options);return await e.webauthn.signIn.finish(r.data.transactionId,t)}},async update(t,n,o){const r=await e.webauthn.update.start(t,window.location.origin,n,o);if(!r.ok)return r;const i=await Tn(r.data.options);return await e.webauthn.update.finish(r.data.transactionId,i)},helpers:{create:Tn,get:Rn,isSupported:En,conditional:Cn}}),(...e)=>{const t=Dn(...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 qn={config:"/fedcm/config"},Nn=()=>{if(window.crypto&&window.crypto.getRandomValues){const e=new Uint8Array(16);return window.crypto.getRandomValues(e),Array.from(e,(e=>e.toString(16).padStart(2,"0"))).join("")}return Math.random().toString(36).substring(2)};async function Jn(e,t){var n;try{await Kn(e,t)}catch(e){null===(n=null==t?void 0:t.onFailed)||void 0===n||n.call(t,e)}}async function Kn(e,t){var n,o;const r=await async function(e,t="google",n,o,r){const i=Nn(),s=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")}}))}(),a=await e.oauth.getOneTapClientId(t);if(!a.ok)throw new Error("Failed to get OneTap client ID for provider "+t);const l=a.data.clientId;return new Promise((e=>{var a,c;const u=n=>{e({provider:t,nonce:i,credential:null==n?void 0:n.credential})};s.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===(c=null==n?void 0:n.use_fedcm_for_prompt)||void 0===c||c,client_id:l,callback:u,nonce:i})),s.prompt((e=>{var t,n;if(r&&(null==e?void 0:e.isDismissedMoment())){const n=null===(t=e.getDismissedReason)||void 0===t?void 0:t.call(e);return null==r||r(n),void u()}if(o&&(null==e?void 0:e.isSkippedMoment())){const t=null===(n=e.getSkippedReason)||void 0===n?void 0:n.call(e);return null==o||o(t),void u()}}))}))}(e,t.provider,t.oneTapConfig,t.onSkipped,t.onDismissed);if(!r.credential)return null;if(null==t?void 0:t.onCodeReceived){const o=await e.oauth.verifyOneTapIDToken(r.provider,r.credential,r.nonce,null==t?void 0:t.loginOptions);if(!o.ok||!o.data)throw new Error("Failed to verify OneTap client ID for provider "+r.provider);null===(n=null==t?void 0:t.onCodeReceived)||void 0===n||n.call(t,o.data.code)}else{const n=await e.oauth.exchangeOneTapIDToken(r.provider,r.credential,r.nonce,null==t?void 0:t.loginOptions);if(!n.ok||!n.data)throw new Error("Failed to exchange OneTap client ID for provider "+r.provider);null===(o=null==t?void 0:t.onAuthenticated)||void 0===o||o.call(t,n.data)}}var Mn=e=>Object.assign(Object.assign({},e.flow),{start:async(...t)=>{const n=await En(),o=Object.assign(Object.assign({location:window.location.href},t[1]),{deviceInfo:{webAuthnSupport:n},startOptionsVersion:1});return t[1]=o,e.flow.start(...t)}});let Fn;const Hn=(e,t)=>new Promise(((n,o)=>{if(!e.length)return o(new Error("No URLs provided to loadScriptWithFallback"));const r=t();if(r)return n(r);const i=e.shift(),s=document.createElement("script");s.src=i,s.id=(e=>{let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return Math.abs(t).toString(16)})(i),s.onload=()=>{const e=t();if(e)return n(e);throw new Error("Could not get entry after loading script from URL")},s.addEventListener("error",(()=>{Hn(e,t),s.setAttribute("data-error","true")})),document.body.appendChild(s)}));const Vn=async(e,t,n)=>{Fn||(Fn=(async()=>{try{return require("oidc-client-ts")}catch(e){return Hn([_t,$t],(()=>window.oidc))}})());const{OidcClient:o,WebStorageStateStore:r}=await Fn;if(!o)throw new Error("oidc-client-ts is not installed. Please install it by running `npm install oidc-client-ts`");const i=t,s=(null==n?void 0:n.redirectUri)||window.location.href,a=(null==n?void 0:n.scope)||"openid email roles descope.custom_claims offline_access",l=`${i}_user`;let c=e.httpClient.buildUrl(t);(null==n?void 0:n.applicationId)&&(c=`${c}/${n.applicationId}`);const u={authority:c,client_id:t,redirect_uri:s,response_type:"code",scope:a,stateStore:new r({store:window.localStorage,prefix:i}),loadUserInfo:!0,fetchRequestCredentials:"same-origin"};return(null==n?void 0:n.redirectUri)&&(u.redirect_uri=n.redirectUri),(null==n?void 0:n.scope)&&(u.scope=n.scope),{client:new o(u),stateUserKey:l}},Bn=(e,t,n)=>{const o=async()=>{let o,r;return o&&r||({client:o,stateUserKey:r}=await Vn(e,t,n)),{client:o,stateUserKey:r}},r=async(t="")=>{var n;const{client:r,stateUserKey:i}=await o(),s=await r.processSigninResponse(t||window.location.href);var a;return await(null===(n=e.httpClient.hooks)||void 0===n?void 0:n.afterRequest({},new Response(JSON.stringify(s)))),g(i,JSON.stringify({id_token:(a=s).id_token,session_state:a.session_state,profile:a.profile})),(()=>{const e=new URL(window.location.href);e.searchParams.delete("code"),e.searchParams.delete("state"),window.history.replaceState({},document.title,e.toString())})(),s};return{loginWithRedirect:async(e={},t=!1)=>{const{client:n}=await o(),r=await n.createSigninRequest(e),{url:i}=r;return t||(window.location.href=i),{ok:!0,data:r}},finishLogin:r,finishLoginIfNeed:async(e="")=>{if(window.location.search.includes("code")&&window.location.search.includes("state"))return await r(e)},refreshToken:async t=>{var n;const{client:r,stateUserKey:i}=await o(),s=(e=>{const t=v(e);return t?JSON.parse(t):null})(i);if(!s)throw new Error("User not found in storage to refresh token");let a=t;if(!a){const t={};e.httpClient.hooks.beforeRequest(t),a=t.token}const l=await r.useRefreshToken({state:{refresh_token:a,session_state:s.session_state,profile:s.profile}});return await(null===(n=e.httpClient.hooks)||void 0===n?void 0:n.afterRequest({},new Response(JSON.stringify(l)))),l},logout:async(e,t=!1)=>{const{client:n,stateUserKey:r}=await o();e||(e={}),e.id_token_hint=e.id_token_hint||Vt(),e.post_logout_redirect_uri=e.post_logout_redirect_uri||window.location.href;const i=await n.createSignoutRequest(e),{url:s}=i;return h(r),t||window.location.replace(s),i}}},zn=function(...e){return t=>e.reduce(((e,t)=>t(e)),t)}((e=>t=>{var n;return n=t.customStorage,i=n,e(t)}),(e=>n=>{var{fpKey:o,fpLoad:r}=n,i=t(n,["fpKey","fpLoad"]);return Et?(o&&r&&cn(o).catch((()=>null)),e(u(i,{beforeRequest:un}))):e(i)}),(e=>n=>{var{autoRefresh:o}=n,i=t(n,["autoRefresh"]);if(!o||"undefined"!=typeof window&&window.descopeBridge)return e(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,c;Et&&document.addEventListener("visibilitychange",(()=>{"visible"===document.visibilityState&&l&&new Date>l&&(Rt("Expiration time passed, refreshing session"),p.refresh(Ft()||c))}));const p=e(u(i,{afterRequest:async(e,t)=>{const{sessionJwt:n,refreshJwt:o,sessionExpiration:i}=await d(t);if(401===(null==t?void 0:t.status))Rt("Received 401, canceling all timers"),s();else if(n||i){if(l=((e,t)=>{if(t)return new Date(1e3*t);Rt("Could not extract expiration time from session token, trying to decode the token");try{const t=r(e);if(t.exp)return new Date(1e3*t.exp)}catch(e){return null}})(n,i),!l)return void Rt("Could not extract expiration time from session token");c=o;const e=At(l);if(s(),e<=2e4)return void Rt("Session is too close to expiration, not setting refresh timer");const t=new Date(Date.now()+e).toLocaleTimeString("en-US",{hour12:!1});Rt(`Setting refresh timer for ${t}. (${e}ms)`),a((()=>{Rt("Refreshing session due to timer"),p.refresh(Ft()||o)}),e)}}}));return fe(p,["logout","logoutAll","oidc.logout"],(e=>async(...t)=>{const n=await e(...t);return Rt("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.38.0"},t.baseHeaders)}))),(e=>t=>{const n=Sn(),o=Sn(),r=Sn(),i=Sn(),s=e(u(t,{afterRequest:async(e,t)=>{if(401===(null==t?void 0:t.status))o.pub(null),r.pub(null),n.pub(null),i.pub(null);else{const e=await(async e=>{const t=await d(e);return(null==t?void 0:t.user)||((null==t?void 0:t.hasOwnProperty("userId"))?t:void 0)})(t);e&&r.pub(e);const{sessionJwt:s,sessionExpiration:a,claims:l}=await d(t);s&&o.pub(s),l&&i.pub(l),(a||s)&&n.pub(a||42)}}})),a=fe(s,["logout","logoutAll","oidc.logout"],(e=>async(...t)=>{const s=await e(...t);return o.pub(null),r.pub(null),n.pub(null),i.pub(null),s}));return Object.assign(a,{onSessionTokenChange:o.sub,onUserChange:r.sub,onClaimsChange:i.sub,onIsAuthenticatedChange:e=>n.sub((t=>{e(!!t)}))})}),(e=>n=>{const{enableFlowNonce:o=!0,nonceStoragePrefix:r=dn}=n,s=t(n,["enableFlowNonce","nonceStoragePrefix"]);if(!o)return e(s);((e=dn)=>{try{if(!p)return;for(let o=0;o<(t=void 0,n=void 0,null!==(n=null!==(t=null==i?void 0:i.length)&&void 0!==t?t:null===localStorage||void 0===localStorage?void 0:localStorage.length)&&void 0!==n?n:0);o++){const t=f(o);if(t&&t.startsWith(e)){const e=v(t);if(e)try{JSON.parse(e).expiry<Date.now()&&h(t)}catch(e){h(t)}}}}catch(e){console.error("Error cleaning up expired nonces:",e)}var t,n})(r);return e(u(s,{afterRequest:async(e,t)=>{if(e.path!==gn&&e.path!==vn)return;const{nonce:n,executionId:o}=await(async(e,t)=>{try{const n=t.headers.get(pn);let o=await t.clone().json().then((e=>(null==e?void 0:e.executionId)||null)).catch((()=>null));return o||(o=mn(e)),{nonce:n,executionId:wn(o)}}catch(e){return{nonce:null,executionId:null}}})(e,t);if(n&&o){((e,t,n,o=dn)=>{try{const r=hn(e,o),i=n?172800:10800,s={value:t,expiry:Date.now()+1e3*i,isStart:n};g(r,JSON.stringify(s))}catch(e){console.error("Error setting flow nonce:",e)}})(o,n,e.path===gn,r)}},beforeRequest:e=>{if(e.path===vn){const t=mn(e);if(t){const n=((e,t=dn)=>{try{const n=hn(e,t),o=v(n);if(!o)return null;const r=JSON.parse(o);return r.expiry<Date.now()?(fn(e,t),null):r.value}catch(e){return console.error("Error getting flow nonce:",e),null}})(t,r);n&&(e.headers=e.headers||{},e.headers[pn]=n)}}return e}}))}),(e=>n=>{var{storeLastAuthenticatedUser:o=!0,keepLastAuthenticatedUserAfterLogout:r=!1}=n,i=t(n,["storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout"]);if(!o)return Object.assign(e(i),{getLastUserLoginId:kn,getLastUserDisplayName:On});const s=e(u(i,{afterRequest:async(e,t)=>{var n;const{userInfo:o,lastAuth:r}=await(async e=>{if(!(null==e?void 0:e.ok))return{userInfo:void 0,lastAuth:void 0};const t=await(null==e?void 0:e.clone().json()),n=c((null==t?void 0:t.authInfo)||t||{});return{userInfo:(null==n?void 0:n.user)||((null==n?void 0:n.hasOwnProperty("userId"))?n:void 0),lastAuth:t.lastAuth}})(t),i=null===(n=null==o?void 0:o.loginIds)||void 0===n?void 0:n[0],s=null==o?void 0:o.name;i?(In(i),(e=>{g(bn,e)})(s)):(null==r?void 0:r.loginId)&&In(r.loginId)}}));let a=fe(s,["flow.start"],jn);return a=fe(a,["logout","logoutAll"],Un(r)),Object.assign(a,{getLastUserLoginId:kn,getLastUserDisplayName:On})}),(e=>n=>{var{persistTokens:o,sessionTokenViaCookie:r,storagePrefix:i}=n,s=t(n,["persistTokens","sessionTokenViaCookie","storagePrefix"]);if(!o||!Et)return e(s);const a=e(u(s,{beforeRequest:(l=i,e=>Object.assign(e,{token:e.token||Ft(l)})),afterRequest:async(e,t)=>{const n=/^\/v\d+\/mgmt\//.test(e.path);401===(null==t?void 0:t.status)?n||Bt(i,r):((e={},t=!1,n="")=>{var o,r;const{sessionJwt:i,refreshJwt:s}=e;if(s&&g(`${n}${Nt}`,s),i)if(t){const n=t.sameSite||"Strict",s=null===(o=t.secure)||void 0===o||o,a=null!==(r=t.domain)&&void 0!==r?r:e.cookieDomain;Kt(Mt(t),i,Object.assign(Object.assign({},e),{cookieSameSite:n,cookieSecure:s,cookieDomain:a}))}else g(`${n}${qt}`,i);e.idToken&&g(`${n}${Jt}`,e.idToken)})(await d(t),r,i)}}));var l;const c=fe(a,["logout","logoutAll","oidc.logout"],xn(i,r));return Object.assign(c,{getRefreshToken:()=>Ft(i),getSessionToken:()=>Ht(i),getIdToken:()=>Vt(i)})}))((e=>{const t=Tt(e),n=Bn(t,e.projectId,e.oidcConfig);return Object.assign(Object.assign({},t),{refresh:async(o,r)=>{var i;if(e.oidcConfig)try{return await n.refreshToken(o),Promise.resolve({ok:!0})}catch(e){return Promise.resolve({ok:!1,error:{errorCode:"J161001",errorDescription:e.toString()}})}const s=Ht(),a=Ft();let l="";if(e.getExternalToken)try{l=await(null===(i=e.getExternalToken)||void 0===i?void 0:i.call(e))}catch(e){Rt("Error getting external token while refreshing",e)}return t.refresh(o,{dcs:s?"t":"f",dcr:a?"t":"f"},l,r)},logout:async o=>{if(e.oidcConfig)try{return await n.logout({id_token_hint:o}),Promise.resolve({ok:!0})}catch(e){return Promise.resolve({ok:!1,error:{errorCode:"J161000",errorDescription:e.toString()}})}return t.logout(o)},flow:Mn(t),webauthn:Ln(t),fedcm:(o=t,r=e.projectId,{onetap:{requestExchangeCode(e){Jn(o,e)},requestAuthentication(e){Jn(o,e)}},async oneTap(e,t,n,r,i){await Kn(o,{provider:e,oneTapConfig:t,loginOptions:n,onSkipped:r,onDismissed:i})},async launch(e){var t;const n={identity:{context:e||"signin",providers:[{configURL:o.httpClient.buildUrl(r+qn.config),clientId:r}]}},i=await(null===(t=navigator.credentials)||void 0===t?void 0:t.get(n));return o.refresh(i.token)},isSupported:()=>Et&&"IdentityCredential"in window,async isLoggedIn(e){var t;const n=o.httpClient.buildUrl(r+qn.config);try{const o={identity:{context:e||"signin",providers:[{configURL:n,clientId:r}]}},i=await(null===(t=navigator.credentials)||void 0===t?void 0:t.get(o));return!!i&&!!i.token}catch(e){return!1}}}),oidc:n});var o,r}));return zn.REFRESH_TOKEN_KEY=Nt,zn.SESSION_TOKEN_KEY=qt,zn}));
|
|
4
4
|
//# sourceMappingURL=index.umd.js.map
|