@descope/web-js-sdk 1.10.25 → 1.10.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("tslib"),t=require("@descope/core-js-sdk"),n=require("@fingerprintjs/fingerprintjs-pro"),a=require("js-cookie");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=i(t),r=i(a);const s=(e,t)=>{var n;return["beforeRequest","afterRequest"].reduce(((n,a)=>{var i;return n[a]=[].concat((null===(i=e.hooks)||void 0===i?void 0:i[a])||[]).concat((null==t?void 0:t[a])||[]),n}),null!==(n=e.hooks)&&void 0!==n?n:e.hooks={}),e},l=async e=>{if(!(null==e?void 0:e.ok))return{};const t=await(null==e?void 0:e.clone().json());return(null==t?void 0:t.authInfo)||t||{}},c=async e=>{const t=await l(e);return(null==t?void 0:t.user)||((null==t?void 0:t.hasOwnProperty("userId"))?t:void 0)},u="undefined"!=typeof localStorage,d=(e,t)=>u&&(null===localStorage||void 0===localStorage?void 0:localStorage.setItem(e,t)),g=e=>u&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem(e)),p=e=>u&&(null===localStorage||void 0===localStorage?void 0:localStorage.removeItem(e)),f=(...e)=>{console.debug(...e)},w="undefined"!=typeof window,h=Math.pow(2,31)-1,v=w&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem("fingerprint.endpoint.url"))||"https://api.descope.com",b="fp",y=(e=!1)=>{const t=localStorage.getItem(b);if(!t)return null;const n=JSON.parse(t);return(new Date).getTime()>n.expiry&&!e?null:n.value},m=async(e,t=v)=>{try{if(y())return;const a=(Date.now().toString(36)+Math.random().toString(36).substring(2)+Math.random().toString(36).substring(2)).substring(0,27),i=new URL(t);i.pathname="/fXj8gt3x8VulJBna/x96Emn69oZwcd7I6";const o=new URL(t);o.pathname="/fXj8gt3x8VulJBna/w78aRZnnDZ3Aqw0I";const r=o.toString()+"?apiKey=<apiKey>&version=<version>&loaderVersion=<loaderVersion>",s=n.load({apiKey:e,endpoint:[i.toString(),n.defaultEndpoint],scriptUrlPattern:[r,n.defaultScriptUrlPattern]}),l=await s,{requestId:c}=await l.get({linkedId:a}),u=((e,t)=>({vsid:e,vrid:t}))(a,c);(e=>{const t={value:e,expiry:(new Date).getTime()+864e5};localStorage.setItem(b,JSON.stringify(t))})(u)}catch(e){console.warn("Could not load fingerprint",e)}},S=e=>{const t=y(!0);return t&&e.body&&(e.body.fpData=t),e},I="dls_last_user_login_id",O="dls_last_user_display_name",_=()=>g(I),j=()=>g(O),k=e=>async(...t)=>{var n;t[1]=t[1]||{};const[,a={}]=t,i=_(),o=j();i&&(null!==(n=a.lastAuth)&&void 0!==n||(a.lastAuth={}),a.lastAuth.loginId=i,a.lastAuth.name=o);return await e(...t)},U=e=>async(...t)=>{const n=await e(...t);return p(I),p(O),n};function D(){const e=[];return{pub:t=>{e.forEach((e=>e(t)))},sub:t=>{const n=e.push(t)-1;return()=>e.splice(n,1)}}}const T="DS",x="DSR";function A(e,t,{cookiePath:n,cookieDomain:a,cookieExpiration:i}){if(t){const o=new Date(1e3*i),s=function(e){const t=window.location.hostname.split("."),n=e.split(".");return t.slice(-n.length).join(".")===e}(a);r.default.set(e,t,{path:n,domain:s?a:void 0,expires:o,sameSite:"Strict",secure:!0})}}function J(e=""){return g(`${e}${x}`)||""}function K(e=""){p(`${e}${x}`),p(`${e}${T}`),r.default.remove(T)}const R=e=>t=>async(...n)=>{const a=await t(...n);return K(e),a};async function N(e){const t=function(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=L(n.publicKey.challenge),n.publicKey.user.id=L(n.publicKey.user.id),null===(t=n.publicKey.excludeCredentials)||void 0===t||t.forEach((e=>{e.id=L(e.id)})),n}(e),n=await navigator.credentials.create(t);return a=n,JSON.stringify({id:a.id,rawId:V(a.rawId),type:a.type,response:{attestationObject:V(a.response.attestationObject),clientDataJSON:V(a.response.clientDataJSON)}});var a}async function E(e){const t=P(e);return q(await navigator.credentials.get(t))}async function $(e,t){const n=P(e);n.signal=t.signal,n.mediation="conditional";return q(await navigator.credentials.get(n))}async function C(e=!1){if(!w)return Promise.resolve(!1);const t=!!(window.PublicKeyCredential&&navigator.credentials&&navigator.credentials.create&&navigator.credentials.get);return t&&e&&PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable?PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable():t}function P(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=L(n.publicKey.challenge),null===(t=n.publicKey.allowCredentials)||void 0===t||t.forEach((e=>{e.id=L(e.id)})),n}function q(e){return JSON.stringify({id:e.id,rawId:V(e.rawId),type:e.type,response:{authenticatorData:V(e.response.authenticatorData),clientDataJSON:V(e.response.clientDataJSON),signature:V(e.response.signature),userHandle:e.response.userHandle?V(e.response.userHandle):void 0}})}function L(e){const t=e.replace(/_/g,"/").replace(/-/g,"+");return Uint8Array.from(atob(t),(e=>e.charCodeAt(0))).buffer}function V(e){return btoa(String.fromCharCode.apply(null,new Uint8Array(e))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}var F,H=(F=e=>({async signUp(t,n){const a=await e.webauthn.signUp.start(t,window.location.origin,n);if(!a.ok)return a;const i=await N(a.data.options);return await e.webauthn.signUp.finish(a.data.transactionId,i)},async signIn(t){const n=await e.webauthn.signIn.start(t,window.location.origin);if(!n.ok)return n;const a=await E(n.data.options);return await e.webauthn.signIn.finish(n.data.transactionId,a)},async signUpOrIn(t){var n;const a=await e.webauthn.signUpOrIn.start(t,window.location.origin);if(!a.ok)return a;if(null===(n=a.data)||void 0===n?void 0:n.create){const t=await N(a.data.options);return await e.webauthn.signUp.finish(a.data.transactionId,t)}{const t=await E(a.data.options);return await e.webauthn.signIn.finish(a.data.transactionId,t)}},async update(t,n){const a=await e.webauthn.update.start(t,window.location.origin,n);if(!a.ok)return a;const i=await N(a.data.options);return await e.webauthn.update.finish(a.data.transactionId,i)},helpers:{create:N,get:E,isSupported:C,conditional:$}}),(...e)=>{const t=F(...e);return Object.assign(t.signUp,e[0].webauthn.signUp),Object.assign(t.signIn,e[0].webauthn.signIn),Object.assign(t.signUpOrIn,e[0].webauthn.signUpOrIn),Object.assign(t.update,e[0].webauthn.update),t});const M=e=>({async oneTap(t,n,a,i){const o=null!=t?t:"google",r=await e.oauth.startNative(o,a);if(!r.ok)return r;const{clientId:s,stateId:l,nonce:c}=r.data,u=await async function(){return new Promise(((e,t)=>{if(window.google)return void e(window.google.accounts.id);let n=document.getElementById("google-gsi-client-script");n||(n=document.createElement("script"),document.head.appendChild(n),n.async=!0,n.defer=!0,n.id="google-gsi-client-script",n.src="https://accounts.google.com/gsi/client"),n.onload=function(){window.google?e(window.google.accounts.id):t("Failed to load Google GSI client script - not loaded properly")},n.onerror=function(){t("Failed to load Google GSI client script - failed to load")}}))}();return new Promise((t=>{var a,r;u.initialize(Object.assign(Object.assign({},n),{itp_support:null===(a=null==n?void 0:n.itp_support)||void 0===a||a,use_fedcm_for_prompt:null===(r=null==n?void 0:n.use_fedcm_for_prompt)||void 0===r||r,client_id:s,callback:n=>{t(e.oauth.finishNative(o,l,"","",n.credential))},nonce:c})),u.prompt((e=>{(null==e?void 0:e.isSkippedMoment())&&(null==i||i())}))}))}});var W=e=>Object.assign(Object.assign({},e.flow),{start:async(...t)=>{const n=await C(),a=Object.assign(Object.assign({location:window.location.href},t[1]),{deviceInfo:{webAuthnSupport:n},startOptionsVersion:1});return t[1]=a,e.flow.start(...t)}});const G=function(...e){return t=>e.reduce(((e,t)=>t(e)),t)}((t=>n=>{var{fpKey:a,fpLoad:i}=n,o=e.__rest(n,["fpKey","fpLoad"]);return w?(a&&i&&m(a).catch((()=>null)),t(s(o,{beforeRequest:S}))):(console.warn("Fingerprint is a client side only capability and will not work when running in the server"),t(o))}),(n=>a=>{var{autoRefresh:i}=a,o=e.__rest(a,["autoRefresh"]);if(!i)return n(o);const{clearAllTimers:r,setTimer:c}=(()=>{const e=[];return{clearAllTimers:()=>{for(;e.length;)clearTimeout(e.pop())},setTimer:(t,n)=>{e.push(setTimeout(t,n))}}})();let u,d;document.addEventListener("visibilitychange",(()=>{"visible"===document.visibilityState&&new Date>u&&(f("Expiration time passed, refreshing session"),g.refresh(d))}));const g=n(s(o,{afterRequest:async(e,t)=>{const{refreshJwt:n,sessionJwt:a}=await l(t);if(401===(null==t?void 0:t.status))f("Received 401, canceling all timers"),r();else if(a){u=(e=>{const t=e.split(".");try{if(3===t.length){const e=JSON.parse(window.atob(t[1]));if(e.exp)return new Date(1e3*e.exp)}}catch(e){}return null})(a),d=n;let e=((i=u)?i.getTime()-(new Date).getTime():0)-2e4;e>h&&(f(`Timeout is too large (${e}ms), setting it to ${h}ms`),e=h),r();const t=new Date(Date.now()+e).toLocaleTimeString("en-US",{hour12:!1});f(`Setting refresh timer for ${t}. (${e}ms)`),c((()=>{f("Refreshing session due to timer"),g.refresh(n)}),e)}var i}}));return t.wrapWith(g,["logout","logoutAll"],(e=>async(...t)=>{const n=await e(...t);return f("Clearing all timers"),r(),n}))}),(e=>t=>e(Object.assign(Object.assign({},t),{baseHeaders:Object.assign({"x-descope-sdk-name":"web-js","x-descope-sdk-version":"1.10.25"},t.baseHeaders)}))),(e=>n=>{const a=D(),i=D(),o=e(s(n,{afterRequest:async(e,t)=>{if(401===(null==t?void 0:t.status))a.pub(null),i.pub(null);else{const e=await c(t);e&&i.pub(e);const{sessionJwt:n}=await l(t);n&&a.pub(n)}}})),r=t.wrapWith(o,["logout","logoutAll"],(e=>async(...t)=>{const n=await e(...t);return a.pub(null),i.pub(null),n}));return Object.assign(r,{onSessionTokenChange:a.sub,onUserChange:i.sub})}),(n=>a=>{var{storeLastAuthenticatedUser:i=!0}=a,o=e.__rest(a,["storeLastAuthenticatedUser"]);if(!i)return Object.assign(n(o),{getLastUserLoginId:_,getLastUserDisplayName:j});const r=n(s(o,{afterRequest:async(e,t)=>{var n;const a=await c(t),i=null===(n=null==a?void 0:a.loginIds)||void 0===n?void 0:n[0],o=null==a?void 0:a.name;i&&((e=>{d(I,e)})(i),(e=>{d(O,e)})(o))}}));let l=t.wrapWith(r,["flow.start"],k);return l=t.wrapWith(l,["logout","logoutAll"],U),Object.assign(l,{getLastUserLoginId:_,getLastUserDisplayName:j})}),(n=>a=>{var{persistTokens:i,sessionTokenViaCookie:o,storagePrefix:c}=a,u=e.__rest(a,["persistTokens","sessionTokenViaCookie","storagePrefix"]);if(!i||!w)return i&&console.warn("Storing auth tokens in local storage and cookies are a client side only capabilities and will not be done when running in the server"),n(u);const p=n(s(u,{beforeRequest:(f=c,e=>Object.assign(e,{token:e.token||J(f)})),afterRequest:async(t,n)=>{401===(null==n?void 0:n.status)?K(c):((t={},n,a)=>{var{refreshJwt:i,sessionJwt:o}=t,r=e.__rest(t,["refreshJwt","sessionJwt"]);void 0===n&&(n=!1),void 0===a&&(a=""),i&&d(`${a}${x}`,i),o&&(n?A(T,o,r):d(`${a}${T}`,o))})(await l(n),o,c)}}));var f;const h=t.wrapWith(p,["logout","logoutAll"],R(c));return Object.assign(h,{getRefreshToken:()=>J(c),getSessionToken:()=>function(e=""){return r.default.get(T)||g(`${e}${T}`)||""}(c)})}))(((...e)=>{const t=o.default(...e);return Object.assign(Object.assign({},t),{flow:W(t),webauthn:H(t),fedcm:M(t)})}));exports.REFRESH_TOKEN_KEY=x,exports.SESSION_TOKEN_KEY=T,exports.clearFingerprintData=()=>{localStorage.removeItem(b)},exports.default=G,exports.ensureFingerprintIds=m;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("tslib"),t=require("@descope/core-js-sdk"),n=require("@fingerprintjs/fingerprintjs-pro"),a=require("js-cookie");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=i(t),r=i(a);const s=(e,t)=>{var n;return["beforeRequest","afterRequest"].reduce(((n,a)=>{var i;return n[a]=[].concat((null===(i=e.hooks)||void 0===i?void 0:i[a])||[]).concat((null==t?void 0:t[a])||[]),n}),null!==(n=e.hooks)&&void 0!==n?n:e.hooks={}),e},l=async e=>{if(!(null==e?void 0:e.ok))return{};const t=await(null==e?void 0:e.clone().json());return(null==t?void 0:t.authInfo)||t||{}},c=async e=>{const t=await l(e);return(null==t?void 0:t.user)||((null==t?void 0:t.hasOwnProperty("userId"))?t:void 0)},u="undefined"!=typeof localStorage,d=(e,t)=>u&&(null===localStorage||void 0===localStorage?void 0:localStorage.setItem(e,t)),g=e=>u&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem(e)),p=e=>u&&(null===localStorage||void 0===localStorage?void 0:localStorage.removeItem(e)),f=(...e)=>{console.debug(...e)},w="undefined"!=typeof window,h=Math.pow(2,31)-1,v=w&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem("fingerprint.endpoint.url"))||"https://api.descope.com",b="fp",y=(e=!1)=>{const t=localStorage.getItem(b);if(!t)return null;const n=JSON.parse(t);return(new Date).getTime()>n.expiry&&!e?null:n.value},m=async(e,t=v)=>{try{if(y())return;const a=(Date.now().toString(36)+Math.random().toString(36).substring(2)+Math.random().toString(36).substring(2)).substring(0,27),i=new URL(t);i.pathname="/fXj8gt3x8VulJBna/x96Emn69oZwcd7I6";const o=new URL(t);o.pathname="/fXj8gt3x8VulJBna/w78aRZnnDZ3Aqw0I";const r=o.toString()+"?apiKey=<apiKey>&version=<version>&loaderVersion=<loaderVersion>",s=n.load({apiKey:e,endpoint:[i.toString(),n.defaultEndpoint],scriptUrlPattern:[r,n.defaultScriptUrlPattern]}),l=await s,{requestId:c}=await l.get({linkedId:a}),u=((e,t)=>({vsid:e,vrid:t}))(a,c);(e=>{const t={value:e,expiry:(new Date).getTime()+864e5};localStorage.setItem(b,JSON.stringify(t))})(u)}catch(e){console.warn("Could not load fingerprint",e)}},S=e=>{const t=y(!0);return t&&e.body&&(e.body.fpData=t),e},I="dls_last_user_login_id",O="dls_last_user_display_name",_=()=>g(I),j=()=>g(O),k=e=>async(...t)=>{var n;t[1]=t[1]||{};const[,a={}]=t,i=_(),o=j();i&&(null!==(n=a.lastAuth)&&void 0!==n||(a.lastAuth={}),a.lastAuth.loginId=i,a.lastAuth.name=o);return await e(...t)},U=e=>async(...t)=>{const n=await e(...t);return p(I),p(O),n};function D(){const e=[];return{pub:t=>{e.forEach((e=>e(t)))},sub:t=>{const n=e.push(t)-1;return()=>e.splice(n,1)}}}const T="DS",x="DSR";function A(e,t,{cookiePath:n,cookieDomain:a,cookieExpiration:i}){if(t){const o=new Date(1e3*i),s=function(e){const t=window.location.hostname.split("."),n=e.split(".");return t.slice(-n.length).join(".")===e}(a);r.default.set(e,t,{path:n,domain:s?a:void 0,expires:o,sameSite:"Strict",secure:!0})}}function J(e=""){return g(`${e}${x}`)||""}function K(e=""){p(`${e}${x}`),p(`${e}${T}`),r.default.remove(T)}const R=e=>t=>async(...n)=>{const a=await t(...n);return K(e),a};async function N(e){const t=function(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=L(n.publicKey.challenge),n.publicKey.user.id=L(n.publicKey.user.id),null===(t=n.publicKey.excludeCredentials)||void 0===t||t.forEach((e=>{e.id=L(e.id)})),n}(e),n=await navigator.credentials.create(t);return a=n,JSON.stringify({id:a.id,rawId:V(a.rawId),type:a.type,response:{attestationObject:V(a.response.attestationObject),clientDataJSON:V(a.response.clientDataJSON)}});var a}async function E(e){const t=P(e);return q(await navigator.credentials.get(t))}async function $(e,t){const n=P(e);n.signal=t.signal,n.mediation="conditional";return q(await navigator.credentials.get(n))}async function C(e=!1){if(!w)return Promise.resolve(!1);const t=!!(window.PublicKeyCredential&&navigator.credentials&&navigator.credentials.create&&navigator.credentials.get);return t&&e&&PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable?PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable():t}function P(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=L(n.publicKey.challenge),null===(t=n.publicKey.allowCredentials)||void 0===t||t.forEach((e=>{e.id=L(e.id)})),n}function q(e){return JSON.stringify({id:e.id,rawId:V(e.rawId),type:e.type,response:{authenticatorData:V(e.response.authenticatorData),clientDataJSON:V(e.response.clientDataJSON),signature:V(e.response.signature),userHandle:e.response.userHandle?V(e.response.userHandle):void 0}})}function L(e){const t=e.replace(/_/g,"/").replace(/-/g,"+");return Uint8Array.from(atob(t),(e=>e.charCodeAt(0))).buffer}function V(e){return btoa(String.fromCharCode.apply(null,new Uint8Array(e))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}var F,H=(F=e=>({async signUp(t,n){const a=await e.webauthn.signUp.start(t,window.location.origin,n);if(!a.ok)return a;const i=await N(a.data.options);return await e.webauthn.signUp.finish(a.data.transactionId,i)},async signIn(t){const n=await e.webauthn.signIn.start(t,window.location.origin);if(!n.ok)return n;const a=await E(n.data.options);return await e.webauthn.signIn.finish(n.data.transactionId,a)},async signUpOrIn(t){var n;const a=await e.webauthn.signUpOrIn.start(t,window.location.origin);if(!a.ok)return a;if(null===(n=a.data)||void 0===n?void 0:n.create){const t=await N(a.data.options);return await e.webauthn.signUp.finish(a.data.transactionId,t)}{const t=await E(a.data.options);return await e.webauthn.signIn.finish(a.data.transactionId,t)}},async update(t,n){const a=await e.webauthn.update.start(t,window.location.origin,n);if(!a.ok)return a;const i=await N(a.data.options);return await e.webauthn.update.finish(a.data.transactionId,i)},helpers:{create:N,get:E,isSupported:C,conditional:$}}),(...e)=>{const t=F(...e);return Object.assign(t.signUp,e[0].webauthn.signUp),Object.assign(t.signIn,e[0].webauthn.signIn),Object.assign(t.signUpOrIn,e[0].webauthn.signUpOrIn),Object.assign(t.update,e[0].webauthn.update),t});const M=e=>({async oneTap(t,n,a,i){const o=null!=t?t:"google",r=await e.oauth.startNative(o,a);if(!r.ok)return r;const{clientId:s,stateId:l,nonce:c}=r.data,u=await async function(){return new Promise(((e,t)=>{if(window.google)return void e(window.google.accounts.id);let n=document.getElementById("google-gsi-client-script");n||(n=document.createElement("script"),document.head.appendChild(n),n.async=!0,n.defer=!0,n.id="google-gsi-client-script",n.src="https://accounts.google.com/gsi/client"),n.onload=function(){window.google?e(window.google.accounts.id):t("Failed to load Google GSI client script - not loaded properly")},n.onerror=function(){t("Failed to load Google GSI client script - failed to load")}}))}();return new Promise((t=>{var a,r;u.initialize(Object.assign(Object.assign({},n),{itp_support:null===(a=null==n?void 0:n.itp_support)||void 0===a||a,use_fedcm_for_prompt:null===(r=null==n?void 0:n.use_fedcm_for_prompt)||void 0===r||r,client_id:s,callback:n=>{t(e.oauth.finishNative(o,l,"","",n.credential))},nonce:c})),u.prompt((e=>{(null==e?void 0:e.isSkippedMoment())&&(null==i||i())}))}))}});var W=e=>Object.assign(Object.assign({},e.flow),{start:async(...t)=>{const n=await C(),a=Object.assign(Object.assign({location:window.location.href},t[1]),{deviceInfo:{webAuthnSupport:n},startOptionsVersion:1});return t[1]=a,e.flow.start(...t)}});const G=function(...e){return t=>e.reduce(((e,t)=>t(e)),t)}((t=>n=>{var{fpKey:a,fpLoad:i}=n,o=e.__rest(n,["fpKey","fpLoad"]);return w?(a&&i&&m(a).catch((()=>null)),t(s(o,{beforeRequest:S}))):(console.warn("Fingerprint is a client side only capability and will not work when running in the server"),t(o))}),(n=>a=>{var{autoRefresh:i}=a,o=e.__rest(a,["autoRefresh"]);if(!i)return n(o);const{clearAllTimers:r,setTimer:c}=(()=>{const e=[];return{clearAllTimers:()=>{for(;e.length;)clearTimeout(e.pop())},setTimer:(t,n)=>{e.push(setTimeout(t,n))}}})();let u,d;document.addEventListener("visibilitychange",(()=>{"visible"===document.visibilityState&&new Date>u&&(f("Expiration time passed, refreshing session"),g.refresh(d))}));const g=n(s(o,{afterRequest:async(e,t)=>{const{refreshJwt:n,sessionJwt:a}=await l(t);if(401===(null==t?void 0:t.status))f("Received 401, canceling all timers"),r();else if(a){u=(e=>{const t=e.split(".");try{if(3===t.length){const e=JSON.parse(window.atob(t[1]));if(e.exp)return new Date(1e3*e.exp)}}catch(e){}return null})(a),d=n;let e=((i=u)?i.getTime()-(new Date).getTime():0)-2e4;e>h&&(f(`Timeout is too large (${e}ms), setting it to ${h}ms`),e=h),r();const t=new Date(Date.now()+e).toLocaleTimeString("en-US",{hour12:!1});f(`Setting refresh timer for ${t}. (${e}ms)`),c((()=>{f("Refreshing session due to timer"),g.refresh(n)}),e)}var i}}));return t.wrapWith(g,["logout","logoutAll"],(e=>async(...t)=>{const n=await e(...t);return f("Clearing all timers"),r(),n}))}),(e=>t=>e(Object.assign(Object.assign({},t),{baseHeaders:Object.assign({"x-descope-sdk-name":"web-js","x-descope-sdk-version":"1.10.27"},t.baseHeaders)}))),(e=>n=>{const a=D(),i=D(),o=e(s(n,{afterRequest:async(e,t)=>{if(401===(null==t?void 0:t.status))a.pub(null),i.pub(null);else{const e=await c(t);e&&i.pub(e);const{sessionJwt:n}=await l(t);n&&a.pub(n)}}})),r=t.wrapWith(o,["logout","logoutAll"],(e=>async(...t)=>{const n=await e(...t);return a.pub(null),i.pub(null),n}));return Object.assign(r,{onSessionTokenChange:a.sub,onUserChange:i.sub})}),(n=>a=>{var{storeLastAuthenticatedUser:i=!0}=a,o=e.__rest(a,["storeLastAuthenticatedUser"]);if(!i)return Object.assign(n(o),{getLastUserLoginId:_,getLastUserDisplayName:j});const r=n(s(o,{afterRequest:async(e,t)=>{var n;const a=await c(t),i=null===(n=null==a?void 0:a.loginIds)||void 0===n?void 0:n[0],o=null==a?void 0:a.name;i&&((e=>{d(I,e)})(i),(e=>{d(O,e)})(o))}}));let l=t.wrapWith(r,["flow.start"],k);return l=t.wrapWith(l,["logout","logoutAll"],U),Object.assign(l,{getLastUserLoginId:_,getLastUserDisplayName:j})}),(n=>a=>{var{persistTokens:i,sessionTokenViaCookie:o,storagePrefix:c}=a,u=e.__rest(a,["persistTokens","sessionTokenViaCookie","storagePrefix"]);if(!i||!w)return i&&console.warn("Storing auth tokens in local storage and cookies are a client side only capabilities and will not be done when running in the server"),n(u);const p=n(s(u,{beforeRequest:(f=c,e=>Object.assign(e,{token:e.token||J(f)})),afterRequest:async(t,n)=>{401===(null==n?void 0:n.status)?K(c):((t={},n,a)=>{var{refreshJwt:i,sessionJwt:o}=t,r=e.__rest(t,["refreshJwt","sessionJwt"]);void 0===n&&(n=!1),void 0===a&&(a=""),i&&d(`${a}${x}`,i),o&&(n?A(T,o,r):d(`${a}${T}`,o))})(await l(n),o,c)}}));var f;const h=t.wrapWith(p,["logout","logoutAll"],R(c));return Object.assign(h,{getRefreshToken:()=>J(c),getSessionToken:()=>function(e=""){return r.default.get(T)||g(`${e}${T}`)||""}(c)})}))(((...e)=>{const t=o.default(...e);return Object.assign(Object.assign({},t),{flow:W(t),webauthn:H(t),fedcm:M(t)})}));exports.REFRESH_TOKEN_KEY=x,exports.SESSION_TOKEN_KEY=T,exports.clearFingerprintData=()=>{localStorage.removeItem(b)},exports.default=G,exports.ensureFingerprintIds=m;
2
2
  //# sourceMappingURL=index.cjs.js.map
package/dist/index.d.ts CHANGED
@@ -184,6 +184,7 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
184
184
  otp: {
185
185
  verify: {
186
186
  sms: (loginId: string, code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
187
+ voice: (loginId: string, code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
187
188
  whatsapp: (loginId: string, code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
188
189
  email: (loginId: string, code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
189
190
  };
@@ -191,6 +192,9 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
191
192
  sms: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
192
193
  maskedPhone: string;
193
194
  }>>;
195
+ voice: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
196
+ maskedPhone: string;
197
+ }>>;
194
198
  whatsapp: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
195
199
  maskedPhone: string;
196
200
  }>>;
@@ -214,6 +218,21 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
214
218
  }) => Promise<_descope_core_js_sdk.SdkResponse<{
215
219
  maskedPhone: string;
216
220
  }>>;
221
+ voice: (loginId: string, user?: {
222
+ email?: string;
223
+ name?: string;
224
+ givenName?: string;
225
+ middleName?: string;
226
+ familyName?: string;
227
+ phone?: string;
228
+ }, signUpOptions?: {
229
+ customClaims?: Record<string, any>;
230
+ templateOptions?: {
231
+ [x: string]: string;
232
+ };
233
+ }) => Promise<_descope_core_js_sdk.SdkResponse<{
234
+ maskedPhone: string;
235
+ }>>;
217
236
  whatsapp: (loginId: string, user?: {
218
237
  email?: string;
219
238
  name?: string;
@@ -249,6 +268,9 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
249
268
  sms: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
250
269
  maskedPhone: string;
251
270
  }>>;
271
+ voice: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
272
+ maskedPhone: string;
273
+ }>>;
252
274
  whatsapp: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
253
275
  maskedPhone: string;
254
276
  }>>;
@@ -276,6 +298,15 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
276
298
  }) => Promise<_descope_core_js_sdk.SdkResponse<{
277
299
  maskedPhone: string;
278
300
  }>>;
301
+ voice: <T_1 extends boolean>(loginId: string, phone: string, token?: string, updateOptions?: {
302
+ addToLoginIDs?: T_1;
303
+ onMergeUseExisting?: T_1 extends true ? boolean : never;
304
+ templateOptions?: {
305
+ [x: string]: string;
306
+ };
307
+ }) => Promise<_descope_core_js_sdk.SdkResponse<{
308
+ maskedPhone: string;
309
+ }>>;
279
310
  whatsapp: <T_1 extends boolean>(loginId: string, phone: string, token?: string, updateOptions?: {
280
311
  addToLoginIDs?: T_1;
281
312
  onMergeUseExisting?: T_1 extends true ? boolean : never;
@@ -294,6 +325,9 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
294
325
  sms: (loginId: string, URI: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
295
326
  maskedPhone: string;
296
327
  }>>;
328
+ voice: (loginId: string, URI: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
329
+ maskedPhone: string;
330
+ }>>;
297
331
  whatsapp: (loginId: string, URI: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
298
332
  maskedPhone: string;
299
333
  }>>;
@@ -317,6 +351,21 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
317
351
  }) => Promise<_descope_core_js_sdk.SdkResponse<{
318
352
  maskedPhone: string;
319
353
  }>>;
354
+ voice: (loginId: string, URI: string, user?: {
355
+ email?: string;
356
+ name?: string;
357
+ givenName?: string;
358
+ middleName?: string;
359
+ familyName?: string;
360
+ phone?: string;
361
+ }, signUpOptions?: {
362
+ customClaims?: Record<string, any>;
363
+ templateOptions?: {
364
+ [x: string]: string;
365
+ };
366
+ }) => Promise<_descope_core_js_sdk.SdkResponse<{
367
+ maskedPhone: string;
368
+ }>>;
320
369
  whatsapp: (loginId: string, URI: string, user?: {
321
370
  email?: string;
322
371
  name?: string;
@@ -357,6 +406,14 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
357
406
  }) => Promise<_descope_core_js_sdk.SdkResponse<{
358
407
  maskedPhone: string;
359
408
  }>>;
409
+ voice: (loginId: string, URI?: string, signUpOptions?: {
410
+ customClaims?: Record<string, any>;
411
+ templateOptions?: {
412
+ [x: string]: string;
413
+ };
414
+ }) => Promise<_descope_core_js_sdk.SdkResponse<{
415
+ maskedPhone: string;
416
+ }>>;
360
417
  whatsapp: (loginId: string, URI?: string, signUpOptions?: {
361
418
  customClaims?: Record<string, any>;
362
419
  templateOptions?: {
@@ -394,6 +451,15 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
394
451
  }) => Promise<_descope_core_js_sdk.SdkResponse<{
395
452
  maskedPhone: string;
396
453
  }>>;
454
+ voice: <T_3 extends boolean>(loginId: string, phone: string, URI?: string, token?: string, updateOptions?: {
455
+ addToLoginIDs?: T_3;
456
+ onMergeUseExisting?: T_3 extends true ? boolean : never;
457
+ templateOptions?: {
458
+ [x: string]: string;
459
+ };
460
+ }) => Promise<_descope_core_js_sdk.SdkResponse<{
461
+ maskedPhone: string;
462
+ }>>;
397
463
  whatsapp: <T_3 extends boolean>(loginId: string, phone: string, URI?: string, token?: string, updateOptions?: {
398
464
  addToLoginIDs?: T_3;
399
465
  onMergeUseExisting?: T_3 extends true ? boolean : never;
@@ -636,6 +702,7 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
636
702
  otp: {
637
703
  verify: {
638
704
  sms: (loginId: string, code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
705
+ voice: (loginId: string, code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
639
706
  whatsapp: (loginId: string, code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
640
707
  email: (loginId: string, code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
641
708
  };
@@ -643,6 +710,9 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
643
710
  sms: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
644
711
  maskedPhone: string;
645
712
  }>>;
713
+ voice: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
714
+ maskedPhone: string;
715
+ }>>;
646
716
  whatsapp: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
647
717
  maskedPhone: string;
648
718
  }>>;
@@ -666,6 +736,21 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
666
736
  }) => Promise<_descope_core_js_sdk.SdkResponse<{
667
737
  maskedPhone: string;
668
738
  }>>;
739
+ voice: (loginId: string, user?: {
740
+ email?: string;
741
+ name?: string;
742
+ givenName?: string;
743
+ middleName?: string;
744
+ familyName?: string;
745
+ phone?: string;
746
+ }, signUpOptions?: {
747
+ customClaims?: Record<string, any>;
748
+ templateOptions?: {
749
+ [x: string]: string;
750
+ };
751
+ }) => Promise<_descope_core_js_sdk.SdkResponse<{
752
+ maskedPhone: string;
753
+ }>>;
669
754
  whatsapp: (loginId: string, user?: {
670
755
  email?: string;
671
756
  name?: string;
@@ -701,6 +786,9 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
701
786
  sms: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
702
787
  maskedPhone: string;
703
788
  }>>;
789
+ voice: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
790
+ maskedPhone: string;
791
+ }>>;
704
792
  whatsapp: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
705
793
  maskedPhone: string;
706
794
  }>>;
@@ -728,6 +816,15 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
728
816
  }) => Promise<_descope_core_js_sdk.SdkResponse<{
729
817
  maskedPhone: string;
730
818
  }>>;
819
+ voice: <T_1 extends boolean>(loginId: string, phone: string, token?: string, updateOptions?: {
820
+ addToLoginIDs?: T_1;
821
+ onMergeUseExisting?: T_1 extends true ? boolean : never;
822
+ templateOptions?: {
823
+ [x: string]: string;
824
+ };
825
+ }) => Promise<_descope_core_js_sdk.SdkResponse<{
826
+ maskedPhone: string;
827
+ }>>;
731
828
  whatsapp: <T_1 extends boolean>(loginId: string, phone: string, token?: string, updateOptions?: {
732
829
  addToLoginIDs?: T_1;
733
830
  onMergeUseExisting?: T_1 extends true ? boolean : never;
@@ -746,6 +843,9 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
746
843
  sms: (loginId: string, URI: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
747
844
  maskedPhone: string;
748
845
  }>>;
846
+ voice: (loginId: string, URI: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
847
+ maskedPhone: string;
848
+ }>>;
749
849
  whatsapp: (loginId: string, URI: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
750
850
  maskedPhone: string;
751
851
  }>>;
@@ -769,6 +869,21 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
769
869
  }) => Promise<_descope_core_js_sdk.SdkResponse<{
770
870
  maskedPhone: string;
771
871
  }>>;
872
+ voice: (loginId: string, URI: string, user?: {
873
+ email?: string;
874
+ name?: string;
875
+ givenName?: string;
876
+ middleName?: string;
877
+ familyName?: string;
878
+ phone?: string;
879
+ }, signUpOptions?: {
880
+ customClaims?: Record<string, any>;
881
+ templateOptions?: {
882
+ [x: string]: string;
883
+ };
884
+ }) => Promise<_descope_core_js_sdk.SdkResponse<{
885
+ maskedPhone: string;
886
+ }>>;
772
887
  whatsapp: (loginId: string, URI: string, user?: {
773
888
  email?: string;
774
889
  name?: string;
@@ -809,6 +924,14 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
809
924
  }) => Promise<_descope_core_js_sdk.SdkResponse<{
810
925
  maskedPhone: string;
811
926
  }>>;
927
+ voice: (loginId: string, URI?: string, signUpOptions?: {
928
+ customClaims?: Record<string, any>;
929
+ templateOptions?: {
930
+ [x: string]: string;
931
+ };
932
+ }) => Promise<_descope_core_js_sdk.SdkResponse<{
933
+ maskedPhone: string;
934
+ }>>;
812
935
  whatsapp: (loginId: string, URI?: string, signUpOptions?: {
813
936
  customClaims?: Record<string, any>;
814
937
  templateOptions?: {
@@ -846,6 +969,15 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
846
969
  }) => Promise<_descope_core_js_sdk.SdkResponse<{
847
970
  maskedPhone: string;
848
971
  }>>;
972
+ voice: <T_3 extends boolean>(loginId: string, phone: string, URI?: string, token?: string, updateOptions?: {
973
+ addToLoginIDs?: T_3;
974
+ onMergeUseExisting?: T_3 extends true ? boolean : never;
975
+ templateOptions?: {
976
+ [x: string]: string;
977
+ };
978
+ }) => Promise<_descope_core_js_sdk.SdkResponse<{
979
+ maskedPhone: string;
980
+ }>>;
849
981
  whatsapp: <T_3 extends boolean>(loginId: string, phone: string, URI?: string, token?: string, updateOptions?: {
850
982
  addToLoginIDs?: T_3;
851
983
  onMergeUseExisting?: T_3 extends true ? boolean : never;
@@ -1097,6 +1229,7 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
1097
1229
  otp: {
1098
1230
  verify: {
1099
1231
  sms: (loginId: string, code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
1232
+ voice: (loginId: string, code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
1100
1233
  whatsapp: (loginId: string, code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
1101
1234
  email: (loginId: string, code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
1102
1235
  };
@@ -1104,6 +1237,9 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
1104
1237
  sms: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
1105
1238
  maskedPhone: string;
1106
1239
  }>>;
1240
+ voice: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
1241
+ maskedPhone: string;
1242
+ }>>;
1107
1243
  whatsapp: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
1108
1244
  maskedPhone: string;
1109
1245
  }>>;
@@ -1127,6 +1263,21 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
1127
1263
  }) => Promise<_descope_core_js_sdk.SdkResponse<{
1128
1264
  maskedPhone: string;
1129
1265
  }>>;
1266
+ voice: (loginId: string, user?: {
1267
+ email?: string;
1268
+ name?: string;
1269
+ givenName?: string;
1270
+ middleName?: string;
1271
+ familyName?: string;
1272
+ phone?: string;
1273
+ }, signUpOptions?: {
1274
+ customClaims?: Record<string, any>;
1275
+ templateOptions?: {
1276
+ [x: string]: string;
1277
+ };
1278
+ }) => Promise<_descope_core_js_sdk.SdkResponse<{
1279
+ maskedPhone: string;
1280
+ }>>;
1130
1281
  whatsapp: (loginId: string, user?: {
1131
1282
  email?: string;
1132
1283
  name?: string;
@@ -1162,6 +1313,9 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
1162
1313
  sms: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
1163
1314
  maskedPhone: string;
1164
1315
  }>>;
1316
+ voice: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
1317
+ maskedPhone: string;
1318
+ }>>;
1165
1319
  whatsapp: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
1166
1320
  maskedPhone: string;
1167
1321
  }>>;
@@ -1189,6 +1343,15 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
1189
1343
  }) => Promise<_descope_core_js_sdk.SdkResponse<{
1190
1344
  maskedPhone: string;
1191
1345
  }>>;
1346
+ voice: <T_1 extends boolean>(loginId: string, phone: string, token?: string, updateOptions?: {
1347
+ addToLoginIDs?: T_1;
1348
+ onMergeUseExisting?: T_1 extends true ? boolean : never;
1349
+ templateOptions?: {
1350
+ [x: string]: string;
1351
+ };
1352
+ }) => Promise<_descope_core_js_sdk.SdkResponse<{
1353
+ maskedPhone: string;
1354
+ }>>;
1192
1355
  whatsapp: <T_1 extends boolean>(loginId: string, phone: string, token?: string, updateOptions?: {
1193
1356
  addToLoginIDs?: T_1;
1194
1357
  onMergeUseExisting?: T_1 extends true ? boolean : never;
@@ -1207,6 +1370,9 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
1207
1370
  sms: (loginId: string, URI: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
1208
1371
  maskedPhone: string;
1209
1372
  }>>;
1373
+ voice: (loginId: string, URI: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
1374
+ maskedPhone: string;
1375
+ }>>;
1210
1376
  whatsapp: (loginId: string, URI: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
1211
1377
  maskedPhone: string;
1212
1378
  }>>;
@@ -1230,6 +1396,21 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
1230
1396
  }) => Promise<_descope_core_js_sdk.SdkResponse<{
1231
1397
  maskedPhone: string;
1232
1398
  }>>;
1399
+ voice: (loginId: string, URI: string, user?: {
1400
+ email?: string;
1401
+ name?: string;
1402
+ givenName?: string;
1403
+ middleName?: string;
1404
+ familyName?: string;
1405
+ phone?: string;
1406
+ }, signUpOptions?: {
1407
+ customClaims?: Record<string, any>;
1408
+ templateOptions?: {
1409
+ [x: string]: string;
1410
+ };
1411
+ }) => Promise<_descope_core_js_sdk.SdkResponse<{
1412
+ maskedPhone: string;
1413
+ }>>;
1233
1414
  whatsapp: (loginId: string, URI: string, user?: {
1234
1415
  email?: string;
1235
1416
  name?: string;
@@ -1270,6 +1451,14 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
1270
1451
  }) => Promise<_descope_core_js_sdk.SdkResponse<{
1271
1452
  maskedPhone: string;
1272
1453
  }>>;
1454
+ voice: (loginId: string, URI?: string, signUpOptions?: {
1455
+ customClaims?: Record<string, any>;
1456
+ templateOptions?: {
1457
+ [x: string]: string;
1458
+ };
1459
+ }) => Promise<_descope_core_js_sdk.SdkResponse<{
1460
+ maskedPhone: string;
1461
+ }>>;
1273
1462
  whatsapp: (loginId: string, URI?: string, signUpOptions?: {
1274
1463
  customClaims?: Record<string, any>;
1275
1464
  templateOptions?: {
@@ -1307,6 +1496,15 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
1307
1496
  }) => Promise<_descope_core_js_sdk.SdkResponse<{
1308
1497
  maskedPhone: string;
1309
1498
  }>>;
1499
+ voice: <T_3 extends boolean>(loginId: string, phone: string, URI?: string, token?: string, updateOptions?: {
1500
+ addToLoginIDs?: T_3;
1501
+ onMergeUseExisting?: T_3 extends true ? boolean : never;
1502
+ templateOptions?: {
1503
+ [x: string]: string;
1504
+ };
1505
+ }) => Promise<_descope_core_js_sdk.SdkResponse<{
1506
+ maskedPhone: string;
1507
+ }>>;
1310
1508
  whatsapp: <T_3 extends boolean>(loginId: string, phone: string, URI?: string, token?: string, updateOptions?: {
1311
1509
  addToLoginIDs?: T_3;
1312
1510
  onMergeUseExisting?: T_3 extends true ? boolean : never;
@@ -1549,6 +1747,7 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
1549
1747
  otp: {
1550
1748
  verify: {
1551
1749
  sms: (loginId: string, code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
1750
+ voice: (loginId: string, code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
1552
1751
  whatsapp: (loginId: string, code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
1553
1752
  email: (loginId: string, code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
1554
1753
  };
@@ -1556,6 +1755,9 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
1556
1755
  sms: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
1557
1756
  maskedPhone: string;
1558
1757
  }>>;
1758
+ voice: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
1759
+ maskedPhone: string;
1760
+ }>>;
1559
1761
  whatsapp: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
1560
1762
  maskedPhone: string;
1561
1763
  }>>;
@@ -1579,6 +1781,21 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
1579
1781
  }) => Promise<_descope_core_js_sdk.SdkResponse<{
1580
1782
  maskedPhone: string;
1581
1783
  }>>;
1784
+ voice: (loginId: string, user?: {
1785
+ email?: string;
1786
+ name?: string;
1787
+ givenName?: string;
1788
+ middleName?: string;
1789
+ familyName?: string;
1790
+ phone?: string;
1791
+ }, signUpOptions?: {
1792
+ customClaims?: Record<string, any>;
1793
+ templateOptions?: {
1794
+ [x: string]: string;
1795
+ };
1796
+ }) => Promise<_descope_core_js_sdk.SdkResponse<{
1797
+ maskedPhone: string;
1798
+ }>>;
1582
1799
  whatsapp: (loginId: string, user?: {
1583
1800
  email?: string;
1584
1801
  name?: string;
@@ -1614,6 +1831,9 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
1614
1831
  sms: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
1615
1832
  maskedPhone: string;
1616
1833
  }>>;
1834
+ voice: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
1835
+ maskedPhone: string;
1836
+ }>>;
1617
1837
  whatsapp: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
1618
1838
  maskedPhone: string;
1619
1839
  }>>;
@@ -1641,6 +1861,15 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
1641
1861
  }) => Promise<_descope_core_js_sdk.SdkResponse<{
1642
1862
  maskedPhone: string;
1643
1863
  }>>;
1864
+ voice: <T_1 extends boolean>(loginId: string, phone: string, token?: string, updateOptions?: {
1865
+ addToLoginIDs?: T_1;
1866
+ onMergeUseExisting?: T_1 extends true ? boolean : never;
1867
+ templateOptions?: {
1868
+ [x: string]: string;
1869
+ };
1870
+ }) => Promise<_descope_core_js_sdk.SdkResponse<{
1871
+ maskedPhone: string;
1872
+ }>>;
1644
1873
  whatsapp: <T_1 extends boolean>(loginId: string, phone: string, token?: string, updateOptions?: {
1645
1874
  addToLoginIDs?: T_1;
1646
1875
  onMergeUseExisting?: T_1 extends true ? boolean : never;
@@ -1659,6 +1888,9 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
1659
1888
  sms: (loginId: string, URI: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
1660
1889
  maskedPhone: string;
1661
1890
  }>>;
1891
+ voice: (loginId: string, URI: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
1892
+ maskedPhone: string;
1893
+ }>>;
1662
1894
  whatsapp: (loginId: string, URI: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
1663
1895
  maskedPhone: string;
1664
1896
  }>>;
@@ -1682,6 +1914,21 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
1682
1914
  }) => Promise<_descope_core_js_sdk.SdkResponse<{
1683
1915
  maskedPhone: string;
1684
1916
  }>>;
1917
+ voice: (loginId: string, URI: string, user?: {
1918
+ email?: string;
1919
+ name?: string;
1920
+ givenName?: string;
1921
+ middleName?: string;
1922
+ familyName?: string;
1923
+ phone?: string;
1924
+ }, signUpOptions?: {
1925
+ customClaims?: Record<string, any>;
1926
+ templateOptions?: {
1927
+ [x: string]: string;
1928
+ };
1929
+ }) => Promise<_descope_core_js_sdk.SdkResponse<{
1930
+ maskedPhone: string;
1931
+ }>>;
1685
1932
  whatsapp: (loginId: string, URI: string, user?: {
1686
1933
  email?: string;
1687
1934
  name?: string;
@@ -1722,6 +1969,14 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
1722
1969
  }) => Promise<_descope_core_js_sdk.SdkResponse<{
1723
1970
  maskedPhone: string;
1724
1971
  }>>;
1972
+ voice: (loginId: string, URI?: string, signUpOptions?: {
1973
+ customClaims?: Record<string, any>;
1974
+ templateOptions?: {
1975
+ [x: string]: string;
1976
+ };
1977
+ }) => Promise<_descope_core_js_sdk.SdkResponse<{
1978
+ maskedPhone: string;
1979
+ }>>;
1725
1980
  whatsapp: (loginId: string, URI?: string, signUpOptions?: {
1726
1981
  customClaims?: Record<string, any>;
1727
1982
  templateOptions?: {
@@ -1759,6 +2014,15 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
1759
2014
  }) => Promise<_descope_core_js_sdk.SdkResponse<{
1760
2015
  maskedPhone: string;
1761
2016
  }>>;
2017
+ voice: <T_3 extends boolean>(loginId: string, phone: string, URI?: string, token?: string, updateOptions?: {
2018
+ addToLoginIDs?: T_3;
2019
+ onMergeUseExisting?: T_3 extends true ? boolean : never;
2020
+ templateOptions?: {
2021
+ [x: string]: string;
2022
+ };
2023
+ }) => Promise<_descope_core_js_sdk.SdkResponse<{
2024
+ maskedPhone: string;
2025
+ }>>;
1762
2026
  whatsapp: <T_3 extends boolean>(loginId: string, phone: string, URI?: string, token?: string, updateOptions?: {
1763
2027
  addToLoginIDs?: T_3;
1764
2028
  onMergeUseExisting?: T_3 extends true ? boolean : never;
package/dist/index.esm.js CHANGED
@@ -1,2 +1,2 @@
1
- import{__rest as t}from"tslib";import e,{wrapWith as n}from"@descope/core-js-sdk";import{load as a,defaultEndpoint as o,defaultScriptUrlPattern as i}from"@fingerprintjs/fingerprintjs-pro";import s from"js-cookie";const r=(t,e)=>{var n;return["beforeRequest","afterRequest"].reduce(((n,a)=>{var o;return n[a]=[].concat((null===(o=t.hooks)||void 0===o?void 0:o[a])||[]).concat((null==e?void 0:e[a])||[]),n}),null!==(n=t.hooks)&&void 0!==n?n:t.hooks={}),t},l=async t=>{if(!(null==t?void 0:t.ok))return{};const e=await(null==t?void 0:t.clone().json());return(null==e?void 0:e.authInfo)||e||{}},c=async t=>{const e=await l(t);return(null==e?void 0:e.user)||((null==e?void 0:e.hasOwnProperty("userId"))?e:void 0)},u="undefined"!=typeof localStorage,d=(t,e)=>u&&(null===localStorage||void 0===localStorage?void 0:localStorage.setItem(t,e)),g=t=>u&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem(t)),p=t=>u&&(null===localStorage||void 0===localStorage?void 0:localStorage.removeItem(t)),w=(...t)=>{console.debug(...t)},f="undefined"!=typeof window,h=Math.pow(2,31)-1,v=f&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem("fingerprint.endpoint.url"))||"https://api.descope.com",b="fp",m=(t=!1)=>{const e=localStorage.getItem(b);if(!e)return null;const n=JSON.parse(e);return(new Date).getTime()>n.expiry&&!t?null:n.value},y=async(t,e=v)=>{try{if(m())return;const n=(Date.now().toString(36)+Math.random().toString(36).substring(2)+Math.random().toString(36).substring(2)).substring(0,27),s=new URL(e);s.pathname="/fXj8gt3x8VulJBna/x96Emn69oZwcd7I6";const r=new URL(e);r.pathname="/fXj8gt3x8VulJBna/w78aRZnnDZ3Aqw0I";const l=r.toString()+"?apiKey=<apiKey>&version=<version>&loaderVersion=<loaderVersion>",c=a({apiKey:t,endpoint:[s.toString(),o],scriptUrlPattern:[l,i]}),u=await c,{requestId:d}=await u.get({linkedId:n}),g=((t,e)=>({vsid:t,vrid:e}))(n,d);(t=>{const e={value:t,expiry:(new Date).getTime()+864e5};localStorage.setItem(b,JSON.stringify(e))})(g)}catch(t){console.warn("Could not load fingerprint",t)}},S=()=>{localStorage.removeItem(b)},I=t=>{const e=m(!0);return e&&t.body&&(t.body.fpData=e),t},O="dls_last_user_login_id",k="dls_last_user_display_name",j=()=>g(O),U=()=>g(k),D=t=>async(...e)=>{var n;e[1]=e[1]||{};const[,a={}]=e,o=j(),i=U();o&&(null!==(n=a.lastAuth)&&void 0!==n||(a.lastAuth={}),a.lastAuth.loginId=o,a.lastAuth.name=i);return await t(...e)},A=t=>async(...e)=>{const n=await t(...e);return p(O),p(k),n};function J(){const t=[];return{pub:e=>{t.forEach((t=>t(e)))},sub:e=>{const n=t.push(e)-1;return()=>t.splice(n,1)}}}const T="DS",_="DSR";function R(t,e,{cookiePath:n,cookieDomain:a,cookieExpiration:o}){if(e){const i=new Date(1e3*o),r=function(t){const e=window.location.hostname.split("."),n=t.split(".");return e.slice(-n.length).join(".")===t}(a);s.set(t,e,{path:n,domain:r?a:void 0,expires:i,sameSite:"Strict",secure:!0})}}function x(t=""){return g(`${t}${_}`)||""}function K(t=""){p(`${t}${_}`),p(`${t}${T}`),s.remove(T)}const $=t=>e=>async(...n)=>{const a=await e(...n);return K(t),a};async function C(t){const e=function(t){var e;const n=JSON.parse(t);return n.publicKey.challenge=V(n.publicKey.challenge),n.publicKey.user.id=V(n.publicKey.user.id),null===(e=n.publicKey.excludeCredentials)||void 0===e||e.forEach((t=>{t.id=V(t.id)})),n}(t),n=await navigator.credentials.create(e);return a=n,JSON.stringify({id:a.id,rawId:H(a.rawId),type:a.type,response:{attestationObject:H(a.response.attestationObject),clientDataJSON:H(a.response.clientDataJSON)}});var a}async function N(t){const e=q(t);return E(await navigator.credentials.get(e))}async function L(t,e){const n=q(t);n.signal=e.signal,n.mediation="conditional";return E(await navigator.credentials.get(n))}async function P(t=!1){if(!f)return Promise.resolve(!1);const e=!!(window.PublicKeyCredential&&navigator.credentials&&navigator.credentials.create&&navigator.credentials.get);return e&&t&&PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable?PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable():e}function q(t){var e;const n=JSON.parse(t);return n.publicKey.challenge=V(n.publicKey.challenge),null===(e=n.publicKey.allowCredentials)||void 0===e||e.forEach((t=>{t.id=V(t.id)})),n}function E(t){return JSON.stringify({id:t.id,rawId:H(t.rawId),type:t.type,response:{authenticatorData:H(t.response.authenticatorData),clientDataJSON:H(t.response.clientDataJSON),signature:H(t.response.signature),userHandle:t.response.userHandle?H(t.response.userHandle):void 0}})}function V(t){const e=t.replace(/_/g,"/").replace(/-/g,"+");return Uint8Array.from(atob(e),(t=>t.charCodeAt(0))).buffer}function H(t){return btoa(String.fromCharCode.apply(null,new Uint8Array(t))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}var G,M=(G=t=>({async signUp(e,n){const a=await t.webauthn.signUp.start(e,window.location.origin,n);if(!a.ok)return a;const o=await C(a.data.options);return await t.webauthn.signUp.finish(a.data.transactionId,o)},async signIn(e){const n=await t.webauthn.signIn.start(e,window.location.origin);if(!n.ok)return n;const a=await N(n.data.options);return await t.webauthn.signIn.finish(n.data.transactionId,a)},async signUpOrIn(e){var n;const a=await t.webauthn.signUpOrIn.start(e,window.location.origin);if(!a.ok)return a;if(null===(n=a.data)||void 0===n?void 0:n.create){const e=await C(a.data.options);return await t.webauthn.signUp.finish(a.data.transactionId,e)}{const e=await N(a.data.options);return await t.webauthn.signIn.finish(a.data.transactionId,e)}},async update(e,n){const a=await t.webauthn.update.start(e,window.location.origin,n);if(!a.ok)return a;const o=await C(a.data.options);return await t.webauthn.update.finish(a.data.transactionId,o)},helpers:{create:C,get:N,isSupported:P,conditional:L}}),(...t)=>{const e=G(...t);return Object.assign(e.signUp,t[0].webauthn.signUp),Object.assign(e.signIn,t[0].webauthn.signIn),Object.assign(e.signUpOrIn,t[0].webauthn.signUpOrIn),Object.assign(e.update,t[0].webauthn.update),e});const B=t=>({async oneTap(e,n,a,o){const i=null!=e?e:"google",s=await t.oauth.startNative(i,a);if(!s.ok)return s;const{clientId:r,stateId:l,nonce:c}=s.data,u=await async function(){return new Promise(((t,e)=>{if(window.google)return void t(window.google.accounts.id);let n=document.getElementById("google-gsi-client-script");n||(n=document.createElement("script"),document.head.appendChild(n),n.async=!0,n.defer=!0,n.id="google-gsi-client-script",n.src="https://accounts.google.com/gsi/client"),n.onload=function(){window.google?t(window.google.accounts.id):e("Failed to load Google GSI client script - not loaded properly")},n.onerror=function(){e("Failed to load Google GSI client script - failed to load")}}))}();return new Promise((e=>{var a,s;u.initialize(Object.assign(Object.assign({},n),{itp_support:null===(a=null==n?void 0:n.itp_support)||void 0===a||a,use_fedcm_for_prompt:null===(s=null==n?void 0:n.use_fedcm_for_prompt)||void 0===s||s,client_id:r,callback:n=>{e(t.oauth.finishNative(i,l,"","",n.credential))},nonce:c})),u.prompt((t=>{(null==t?void 0:t.isSkippedMoment())&&(null==o||o())}))}))}});var F=t=>Object.assign(Object.assign({},t.flow),{start:async(...e)=>{const n=await P(),a=Object.assign(Object.assign({location:window.location.href},e[1]),{deviceInfo:{webAuthnSupport:n},startOptionsVersion:1});return e[1]=a,t.flow.start(...e)}});const Z=function(...t){return e=>t.reduce(((t,e)=>e(t)),e)}((e=>n=>{var{fpKey:a,fpLoad:o}=n,i=t(n,["fpKey","fpLoad"]);return f?(a&&o&&y(a).catch((()=>null)),e(r(i,{beforeRequest:I}))):(console.warn("Fingerprint is a client side only capability and will not work when running in the server"),e(i))}),(e=>a=>{var{autoRefresh:o}=a,i=t(a,["autoRefresh"]);if(!o)return e(i);const{clearAllTimers:s,setTimer:c}=(()=>{const t=[];return{clearAllTimers:()=>{for(;t.length;)clearTimeout(t.pop())},setTimer:(e,n)=>{t.push(setTimeout(e,n))}}})();let u,d;document.addEventListener("visibilitychange",(()=>{"visible"===document.visibilityState&&new Date>u&&(w("Expiration time passed, refreshing session"),g.refresh(d))}));const g=e(r(i,{afterRequest:async(t,e)=>{const{refreshJwt:n,sessionJwt:a}=await l(e);if(401===(null==e?void 0:e.status))w("Received 401, canceling all timers"),s();else if(a){u=(t=>{const e=t.split(".");try{if(3===e.length){const t=JSON.parse(window.atob(e[1]));if(t.exp)return new Date(1e3*t.exp)}}catch(t){}return null})(a),d=n;let t=((o=u)?o.getTime()-(new Date).getTime():0)-2e4;t>h&&(w(`Timeout is too large (${t}ms), setting it to ${h}ms`),t=h),s();const e=new Date(Date.now()+t).toLocaleTimeString("en-US",{hour12:!1});w(`Setting refresh timer for ${e}. (${t}ms)`),c((()=>{w("Refreshing session due to timer"),g.refresh(n)}),t)}var o}}));return n(g,["logout","logoutAll"],(t=>async(...e)=>{const n=await t(...e);return w("Clearing all timers"),s(),n}))}),(t=>e=>t(Object.assign(Object.assign({},e),{baseHeaders:Object.assign({"x-descope-sdk-name":"web-js","x-descope-sdk-version":"1.10.25"},e.baseHeaders)}))),(t=>e=>{const a=J(),o=J(),i=t(r(e,{afterRequest:async(t,e)=>{if(401===(null==e?void 0:e.status))a.pub(null),o.pub(null);else{const t=await c(e);t&&o.pub(t);const{sessionJwt:n}=await l(e);n&&a.pub(n)}}})),s=n(i,["logout","logoutAll"],(t=>async(...e)=>{const n=await t(...e);return a.pub(null),o.pub(null),n}));return Object.assign(s,{onSessionTokenChange:a.sub,onUserChange:o.sub})}),(e=>a=>{var{storeLastAuthenticatedUser:o=!0}=a,i=t(a,["storeLastAuthenticatedUser"]);if(!o)return Object.assign(e(i),{getLastUserLoginId:j,getLastUserDisplayName:U});const s=e(r(i,{afterRequest:async(t,e)=>{var n;const a=await c(e),o=null===(n=null==a?void 0:a.loginIds)||void 0===n?void 0:n[0],i=null==a?void 0:a.name;o&&((t=>{d(O,t)})(o),(t=>{d(k,t)})(i))}}));let l=n(s,["flow.start"],D);return l=n(l,["logout","logoutAll"],A),Object.assign(l,{getLastUserLoginId:j,getLastUserDisplayName:U})}),(e=>a=>{var{persistTokens:o,sessionTokenViaCookie:i,storagePrefix:c}=a,u=t(a,["persistTokens","sessionTokenViaCookie","storagePrefix"]);if(!o||!f)return o&&console.warn("Storing auth tokens in local storage and cookies are a client side only capabilities and will not be done when running in the server"),e(u);const p=e(r(u,{beforeRequest:(w=c,t=>Object.assign(t,{token:t.token||x(w)})),afterRequest:async(e,n)=>{401===(null==n?void 0:n.status)?K(c):((e={},n,a)=>{var{refreshJwt:o,sessionJwt:i}=e,s=t(e,["refreshJwt","sessionJwt"]);void 0===n&&(n=!1),void 0===a&&(a=""),o&&d(`${a}${_}`,o),i&&(n?R(T,i,s):d(`${a}${T}`,i))})(await l(n),i,c)}}));var w;const h=n(p,["logout","logoutAll"],$(c));return Object.assign(h,{getRefreshToken:()=>x(c),getSessionToken:()=>function(t=""){return s.get(T)||g(`${t}${T}`)||""}(c)})}))(((...t)=>{const n=e(...t);return Object.assign(Object.assign({},n),{flow:F(n),webauthn:M(n),fedcm:B(n)})}));export{_ as REFRESH_TOKEN_KEY,T as SESSION_TOKEN_KEY,S as clearFingerprintData,Z as default,y as ensureFingerprintIds};
1
+ import{__rest as t}from"tslib";import e,{wrapWith as n}from"@descope/core-js-sdk";import{load as a,defaultEndpoint as o,defaultScriptUrlPattern as i}from"@fingerprintjs/fingerprintjs-pro";import s from"js-cookie";const r=(t,e)=>{var n;return["beforeRequest","afterRequest"].reduce(((n,a)=>{var o;return n[a]=[].concat((null===(o=t.hooks)||void 0===o?void 0:o[a])||[]).concat((null==e?void 0:e[a])||[]),n}),null!==(n=t.hooks)&&void 0!==n?n:t.hooks={}),t},l=async t=>{if(!(null==t?void 0:t.ok))return{};const e=await(null==t?void 0:t.clone().json());return(null==e?void 0:e.authInfo)||e||{}},c=async t=>{const e=await l(t);return(null==e?void 0:e.user)||((null==e?void 0:e.hasOwnProperty("userId"))?e:void 0)},u="undefined"!=typeof localStorage,d=(t,e)=>u&&(null===localStorage||void 0===localStorage?void 0:localStorage.setItem(t,e)),g=t=>u&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem(t)),p=t=>u&&(null===localStorage||void 0===localStorage?void 0:localStorage.removeItem(t)),w=(...t)=>{console.debug(...t)},f="undefined"!=typeof window,h=Math.pow(2,31)-1,v=f&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem("fingerprint.endpoint.url"))||"https://api.descope.com",b="fp",m=(t=!1)=>{const e=localStorage.getItem(b);if(!e)return null;const n=JSON.parse(e);return(new Date).getTime()>n.expiry&&!t?null:n.value},y=async(t,e=v)=>{try{if(m())return;const n=(Date.now().toString(36)+Math.random().toString(36).substring(2)+Math.random().toString(36).substring(2)).substring(0,27),s=new URL(e);s.pathname="/fXj8gt3x8VulJBna/x96Emn69oZwcd7I6";const r=new URL(e);r.pathname="/fXj8gt3x8VulJBna/w78aRZnnDZ3Aqw0I";const l=r.toString()+"?apiKey=<apiKey>&version=<version>&loaderVersion=<loaderVersion>",c=a({apiKey:t,endpoint:[s.toString(),o],scriptUrlPattern:[l,i]}),u=await c,{requestId:d}=await u.get({linkedId:n}),g=((t,e)=>({vsid:t,vrid:e}))(n,d);(t=>{const e={value:t,expiry:(new Date).getTime()+864e5};localStorage.setItem(b,JSON.stringify(e))})(g)}catch(t){console.warn("Could not load fingerprint",t)}},S=()=>{localStorage.removeItem(b)},I=t=>{const e=m(!0);return e&&t.body&&(t.body.fpData=e),t},O="dls_last_user_login_id",k="dls_last_user_display_name",j=()=>g(O),U=()=>g(k),D=t=>async(...e)=>{var n;e[1]=e[1]||{};const[,a={}]=e,o=j(),i=U();o&&(null!==(n=a.lastAuth)&&void 0!==n||(a.lastAuth={}),a.lastAuth.loginId=o,a.lastAuth.name=i);return await t(...e)},A=t=>async(...e)=>{const n=await t(...e);return p(O),p(k),n};function J(){const t=[];return{pub:e=>{t.forEach((t=>t(e)))},sub:e=>{const n=t.push(e)-1;return()=>t.splice(n,1)}}}const T="DS",_="DSR";function R(t,e,{cookiePath:n,cookieDomain:a,cookieExpiration:o}){if(e){const i=new Date(1e3*o),r=function(t){const e=window.location.hostname.split("."),n=t.split(".");return e.slice(-n.length).join(".")===t}(a);s.set(t,e,{path:n,domain:r?a:void 0,expires:i,sameSite:"Strict",secure:!0})}}function x(t=""){return g(`${t}${_}`)||""}function K(t=""){p(`${t}${_}`),p(`${t}${T}`),s.remove(T)}const $=t=>e=>async(...n)=>{const a=await e(...n);return K(t),a};async function C(t){const e=function(t){var e;const n=JSON.parse(t);return n.publicKey.challenge=V(n.publicKey.challenge),n.publicKey.user.id=V(n.publicKey.user.id),null===(e=n.publicKey.excludeCredentials)||void 0===e||e.forEach((t=>{t.id=V(t.id)})),n}(t),n=await navigator.credentials.create(e);return a=n,JSON.stringify({id:a.id,rawId:H(a.rawId),type:a.type,response:{attestationObject:H(a.response.attestationObject),clientDataJSON:H(a.response.clientDataJSON)}});var a}async function N(t){const e=q(t);return E(await navigator.credentials.get(e))}async function L(t,e){const n=q(t);n.signal=e.signal,n.mediation="conditional";return E(await navigator.credentials.get(n))}async function P(t=!1){if(!f)return Promise.resolve(!1);const e=!!(window.PublicKeyCredential&&navigator.credentials&&navigator.credentials.create&&navigator.credentials.get);return e&&t&&PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable?PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable():e}function q(t){var e;const n=JSON.parse(t);return n.publicKey.challenge=V(n.publicKey.challenge),null===(e=n.publicKey.allowCredentials)||void 0===e||e.forEach((t=>{t.id=V(t.id)})),n}function E(t){return JSON.stringify({id:t.id,rawId:H(t.rawId),type:t.type,response:{authenticatorData:H(t.response.authenticatorData),clientDataJSON:H(t.response.clientDataJSON),signature:H(t.response.signature),userHandle:t.response.userHandle?H(t.response.userHandle):void 0}})}function V(t){const e=t.replace(/_/g,"/").replace(/-/g,"+");return Uint8Array.from(atob(e),(t=>t.charCodeAt(0))).buffer}function H(t){return btoa(String.fromCharCode.apply(null,new Uint8Array(t))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}var G,M=(G=t=>({async signUp(e,n){const a=await t.webauthn.signUp.start(e,window.location.origin,n);if(!a.ok)return a;const o=await C(a.data.options);return await t.webauthn.signUp.finish(a.data.transactionId,o)},async signIn(e){const n=await t.webauthn.signIn.start(e,window.location.origin);if(!n.ok)return n;const a=await N(n.data.options);return await t.webauthn.signIn.finish(n.data.transactionId,a)},async signUpOrIn(e){var n;const a=await t.webauthn.signUpOrIn.start(e,window.location.origin);if(!a.ok)return a;if(null===(n=a.data)||void 0===n?void 0:n.create){const e=await C(a.data.options);return await t.webauthn.signUp.finish(a.data.transactionId,e)}{const e=await N(a.data.options);return await t.webauthn.signIn.finish(a.data.transactionId,e)}},async update(e,n){const a=await t.webauthn.update.start(e,window.location.origin,n);if(!a.ok)return a;const o=await C(a.data.options);return await t.webauthn.update.finish(a.data.transactionId,o)},helpers:{create:C,get:N,isSupported:P,conditional:L}}),(...t)=>{const e=G(...t);return Object.assign(e.signUp,t[0].webauthn.signUp),Object.assign(e.signIn,t[0].webauthn.signIn),Object.assign(e.signUpOrIn,t[0].webauthn.signUpOrIn),Object.assign(e.update,t[0].webauthn.update),e});const B=t=>({async oneTap(e,n,a,o){const i=null!=e?e:"google",s=await t.oauth.startNative(i,a);if(!s.ok)return s;const{clientId:r,stateId:l,nonce:c}=s.data,u=await async function(){return new Promise(((t,e)=>{if(window.google)return void t(window.google.accounts.id);let n=document.getElementById("google-gsi-client-script");n||(n=document.createElement("script"),document.head.appendChild(n),n.async=!0,n.defer=!0,n.id="google-gsi-client-script",n.src="https://accounts.google.com/gsi/client"),n.onload=function(){window.google?t(window.google.accounts.id):e("Failed to load Google GSI client script - not loaded properly")},n.onerror=function(){e("Failed to load Google GSI client script - failed to load")}}))}();return new Promise((e=>{var a,s;u.initialize(Object.assign(Object.assign({},n),{itp_support:null===(a=null==n?void 0:n.itp_support)||void 0===a||a,use_fedcm_for_prompt:null===(s=null==n?void 0:n.use_fedcm_for_prompt)||void 0===s||s,client_id:r,callback:n=>{e(t.oauth.finishNative(i,l,"","",n.credential))},nonce:c})),u.prompt((t=>{(null==t?void 0:t.isSkippedMoment())&&(null==o||o())}))}))}});var F=t=>Object.assign(Object.assign({},t.flow),{start:async(...e)=>{const n=await P(),a=Object.assign(Object.assign({location:window.location.href},e[1]),{deviceInfo:{webAuthnSupport:n},startOptionsVersion:1});return e[1]=a,t.flow.start(...e)}});const Z=function(...t){return e=>t.reduce(((t,e)=>e(t)),e)}((e=>n=>{var{fpKey:a,fpLoad:o}=n,i=t(n,["fpKey","fpLoad"]);return f?(a&&o&&y(a).catch((()=>null)),e(r(i,{beforeRequest:I}))):(console.warn("Fingerprint is a client side only capability and will not work when running in the server"),e(i))}),(e=>a=>{var{autoRefresh:o}=a,i=t(a,["autoRefresh"]);if(!o)return e(i);const{clearAllTimers:s,setTimer:c}=(()=>{const t=[];return{clearAllTimers:()=>{for(;t.length;)clearTimeout(t.pop())},setTimer:(e,n)=>{t.push(setTimeout(e,n))}}})();let u,d;document.addEventListener("visibilitychange",(()=>{"visible"===document.visibilityState&&new Date>u&&(w("Expiration time passed, refreshing session"),g.refresh(d))}));const g=e(r(i,{afterRequest:async(t,e)=>{const{refreshJwt:n,sessionJwt:a}=await l(e);if(401===(null==e?void 0:e.status))w("Received 401, canceling all timers"),s();else if(a){u=(t=>{const e=t.split(".");try{if(3===e.length){const t=JSON.parse(window.atob(e[1]));if(t.exp)return new Date(1e3*t.exp)}}catch(t){}return null})(a),d=n;let t=((o=u)?o.getTime()-(new Date).getTime():0)-2e4;t>h&&(w(`Timeout is too large (${t}ms), setting it to ${h}ms`),t=h),s();const e=new Date(Date.now()+t).toLocaleTimeString("en-US",{hour12:!1});w(`Setting refresh timer for ${e}. (${t}ms)`),c((()=>{w("Refreshing session due to timer"),g.refresh(n)}),t)}var o}}));return n(g,["logout","logoutAll"],(t=>async(...e)=>{const n=await t(...e);return w("Clearing all timers"),s(),n}))}),(t=>e=>t(Object.assign(Object.assign({},e),{baseHeaders:Object.assign({"x-descope-sdk-name":"web-js","x-descope-sdk-version":"1.10.27"},e.baseHeaders)}))),(t=>e=>{const a=J(),o=J(),i=t(r(e,{afterRequest:async(t,e)=>{if(401===(null==e?void 0:e.status))a.pub(null),o.pub(null);else{const t=await c(e);t&&o.pub(t);const{sessionJwt:n}=await l(e);n&&a.pub(n)}}})),s=n(i,["logout","logoutAll"],(t=>async(...e)=>{const n=await t(...e);return a.pub(null),o.pub(null),n}));return Object.assign(s,{onSessionTokenChange:a.sub,onUserChange:o.sub})}),(e=>a=>{var{storeLastAuthenticatedUser:o=!0}=a,i=t(a,["storeLastAuthenticatedUser"]);if(!o)return Object.assign(e(i),{getLastUserLoginId:j,getLastUserDisplayName:U});const s=e(r(i,{afterRequest:async(t,e)=>{var n;const a=await c(e),o=null===(n=null==a?void 0:a.loginIds)||void 0===n?void 0:n[0],i=null==a?void 0:a.name;o&&((t=>{d(O,t)})(o),(t=>{d(k,t)})(i))}}));let l=n(s,["flow.start"],D);return l=n(l,["logout","logoutAll"],A),Object.assign(l,{getLastUserLoginId:j,getLastUserDisplayName:U})}),(e=>a=>{var{persistTokens:o,sessionTokenViaCookie:i,storagePrefix:c}=a,u=t(a,["persistTokens","sessionTokenViaCookie","storagePrefix"]);if(!o||!f)return o&&console.warn("Storing auth tokens in local storage and cookies are a client side only capabilities and will not be done when running in the server"),e(u);const p=e(r(u,{beforeRequest:(w=c,t=>Object.assign(t,{token:t.token||x(w)})),afterRequest:async(e,n)=>{401===(null==n?void 0:n.status)?K(c):((e={},n,a)=>{var{refreshJwt:o,sessionJwt:i}=e,s=t(e,["refreshJwt","sessionJwt"]);void 0===n&&(n=!1),void 0===a&&(a=""),o&&d(`${a}${_}`,o),i&&(n?R(T,i,s):d(`${a}${T}`,i))})(await l(n),i,c)}}));var w;const h=n(p,["logout","logoutAll"],$(c));return Object.assign(h,{getRefreshToken:()=>x(c),getSessionToken:()=>function(t=""){return s.get(T)||g(`${t}${T}`)||""}(c)})}))(((...t)=>{const n=e(...t);return Object.assign(Object.assign({},n),{flow:F(n),webauthn:M(n),fedcm:B(n)})}));export{_ as REFRESH_TOKEN_KEY,T as SESSION_TOKEN_KEY,S as clearFingerprintData,Z as default,y as ensureFingerprintIds};
2
2
  //# sourceMappingURL=index.esm.js.map