@descope/web-js-sdk 1.8.1 → 1.8.2

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 r=i(t),o=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,b=Math.pow(2,31)-1,h=w&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem("fingerprint.endpoint.url"))||"https://fp.descope.com",v="fp",y=(e=!1)=>{const t=localStorage.getItem(v);if(!t)return null;const n=JSON.parse(t);return(new Date).getTime()>n.expiry&&!e?null:n.value},m=async e=>{try{if(y())return;const t=(Date.now().toString(36)+Math.random().toString(36).substring(2)+Math.random().toString(36).substring(2)).substring(0,27),a=n.load({apiKey:e,endpoint:h}),i=await a,{requestId:r}=await i.get({linkedId:t}),o=((e,t)=>({vsid:e,vrid:t}))(t,r);(e=>{const t={value:e,expiry:(new Date).getTime()+864e5};localStorage.setItem(v,JSON.stringify(t))})(o)}catch(e){global.FB_DEBUG&&console.error(e)}},S=e=>{const t=y(!0);return t&&e.body&&(e.body.fpData=t),e},O="dls_last_user_login_id",I="dls_last_user_display_name",k=()=>g(O),j=()=>g(I),_=e=>async(...t)=>{var n;t[1]=t[1]||{};const[,a={}]=t,i=k(),r=j();i&&(null!==(n=a.lastAuth)&&void 0!==n||(a.lastAuth={}),a.lastAuth.loginId=i,a.lastAuth.name=r);return await e(...t)},D=e=>async(...t)=>{const n=await e(...t);return p(O),p(I),n};function T(){const e=[];return{pub:t=>{e.forEach((e=>e(t)))},sub:t=>{const n=e.push(t)-1;return()=>e.splice(n,1)}}}const U="DS",x="DSR";const A=(t={},n,a)=>{var{refreshJwt:i,sessionJwt:r}=t,s=e.__rest(t,["refreshJwt","sessionJwt"]);void 0===n&&(n=!1),void 0===a&&(a=""),i&&d(`${a}${x}`,i),r&&(n?function(e,t,{cookiePath:n,cookieDomain:a,cookieExpiration:i}){if(t){const r=new Date(1e3*i);o.default.set(e,t,{path:n,domain:a,expires:r,sameSite:"Strict",secure:!0})}}(U,r,s):d(`${a}${U}`,r))};function J(e=""){return g(`${e}${x}`)||""}function K(e=""){p(`${e}${x}`),p(`${e}${U}`),o.default.remove(U)}const R=e=>t=>async(...n)=>{const a=await t(...n);return K(e),a};async function $(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:H(a.rawId),type:a.type,response:{attestationObject:H(a.response.attestationObject),clientDataJSON:H(a.response.clientDataJSON)}});var a}async function N(e){const t=C(e);return P(await navigator.credentials.get(t))}async function E(e,t){const n=C(e);n.signal=t.signal,n.mediation="conditional";return P(await navigator.credentials.get(n))}async function q(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 C(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 P(e){return JSON.stringify({id:e.id,rawId:H(e.rawId),type:e.type,response:{authenticatorData:H(e.response.authenticatorData),clientDataJSON:H(e.response.clientDataJSON),signature:H(e.response.signature),userHandle:e.response.userHandle?H(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 H(e){return btoa(String.fromCharCode.apply(null,new Uint8Array(e))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}var F,V=(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 $(a.data.options);return await e.webauthn.signUp.finish(a.data.transactionId,i)},async signIn(t){const n=await e.webauthn.signIn.start(t,window.location.origin);if(!n.ok)return n;const a=await N(n.data.options);return await e.webauthn.signIn.finish(n.data.transactionId,a)},async signUpOrIn(t){var n;const a=await e.webauthn.signUpOrIn.start(t,window.location.origin);if(!a.ok)return a;if(null===(n=a.data)||void 0===n?void 0:n.create){const t=await $(a.data.options);return await e.webauthn.signUp.finish(a.data.transactionId,t)}{const t=await N(a.data.options);return await e.webauthn.signIn.finish(a.data.transactionId,t)}},async update(t,n){const a=await e.webauthn.update.start(t,window.location.origin,n);if(!a.ok)return a;const i=await $(a.data.options);return await e.webauthn.update.finish(a.data.transactionId,i)},helpers:{create:$,get:N,isSupported:q,conditional:E}}),(...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});var W=e=>Object.assign(Object.assign({},e.flow),{start:async(...t)=>{const n=await q(),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 M=function(...e){return t=>e.reduce(((e,t)=>t(e)),t)}((t=>n=>{var{fpKey:a,fpLoad:i}=n,r=e.__rest(n,["fpKey","fpLoad"]);return w?(a&&i&&m(a).catch((()=>null)),t(s(r,{beforeRequest:S}))):(console.warn("Fingerprint is a client side only capability and will not work when running in the server"),t(r))}),(n=>a=>{var{autoRefresh:i}=a,r=e.__rest(a,["autoRefresh"]);if(!i)return n(r);const{clearAllTimers:o,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(r,{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"),o();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>b&&(f(`Timeout is too large (${e}ms), setting it to ${b}ms`),e=b),o();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"),o(),n}))}),(e=>t=>e(Object.assign(Object.assign({},t),{baseHeaders:Object.assign({"x-descope-sdk-name":"web-js","x-descope-sdk-version":"1.8.1"},t.baseHeaders)}))),(e=>n=>{const a=T(),i=T(),r=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)}}})),o=t.wrapWith(r,["logout","logoutAll"],(e=>async(...t)=>{const n=await e(...t);return a.pub(null),i.pub(null),n}));return Object.assign(o,{onSessionTokenChange:a.sub,onUserChange:i.sub})}),(e=>n=>{const a=e(s(n,{afterRequest:async(e,t)=>{var n;const a=await c(t),i=null===(n=null==a?void 0:a.loginIds)||void 0===n?void 0:n[0],r=null==a?void 0:a.name;i&&((e=>{d(O,e)})(i),(e=>{d(I,e)})(r))}}));let i=t.wrapWith(a,["flow.start"],_);return i=t.wrapWith(i,["logout","logoutAll"],D),Object.assign(i,{getLastUserLoginId:k,getLastUserDisplayName:j})}),(n=>a=>{var{persistTokens:i,sessionTokenViaCookie:r,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 d=n(s(u,{beforeRequest:(p=c,e=>Object.assign(e,{token:e.token||J(p)})),afterRequest:async(e,t)=>{401===(null==t?void 0:t.status)?K(c):A(await l(t),r,c)}}));var p;const f=t.wrapWith(d,["logout","logoutAll"],R(c));return Object.assign(f,{getRefreshToken:()=>J(c),getSessionToken:()=>function(e=""){return o.default.get(U)||g(`${e}${U}`)||""}(c)})}))(((...e)=>{const t=r.default(...e);return Object.assign(Object.assign({},t),{flow:W(t),webauthn:V(t)})}));exports.REFRESH_TOKEN_KEY=x,exports.SESSION_TOKEN_KEY=U,exports.clearFingerprintData=()=>{localStorage.removeItem(v)},exports.default=M,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 r=i(t),o=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,b=Math.pow(2,31)-1,h=w&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem("fingerprint.endpoint.url"))||"https://fp.descope.com",v="fp",y=(e=!1)=>{const t=localStorage.getItem(v);if(!t)return null;const n=JSON.parse(t);return(new Date).getTime()>n.expiry&&!e?null:n.value},m=async e=>{try{if(y())return;const t=(Date.now().toString(36)+Math.random().toString(36).substring(2)+Math.random().toString(36).substring(2)).substring(0,27),a=n.load({apiKey:e,endpoint:h}),i=await a,{requestId:r}=await i.get({linkedId:t}),o=((e,t)=>({vsid:e,vrid:t}))(t,r);(e=>{const t={value:e,expiry:(new Date).getTime()+864e5};localStorage.setItem(v,JSON.stringify(t))})(o)}catch(e){global.FB_DEBUG&&console.error(e)}},S=e=>{const t=y(!0);return t&&e.body&&(e.body.fpData=t),e},O="dls_last_user_login_id",I="dls_last_user_display_name",k=()=>g(O),j=()=>g(I),_=e=>async(...t)=>{var n;t[1]=t[1]||{};const[,a={}]=t,i=k(),r=j();i&&(null!==(n=a.lastAuth)&&void 0!==n||(a.lastAuth={}),a.lastAuth.loginId=i,a.lastAuth.name=r);return await e(...t)},D=e=>async(...t)=>{const n=await e(...t);return p(O),p(I),n};function T(){const e=[];return{pub:t=>{e.forEach((e=>e(t)))},sub:t=>{const n=e.push(t)-1;return()=>e.splice(n,1)}}}const U="DS",x="DSR";const A=(t={},n,a)=>{var{refreshJwt:i,sessionJwt:r}=t,s=e.__rest(t,["refreshJwt","sessionJwt"]);void 0===n&&(n=!1),void 0===a&&(a=""),i&&d(`${a}${x}`,i),r&&(n?function(e,t,{cookiePath:n,cookieDomain:a,cookieExpiration:i}){if(t){const r=new Date(1e3*i);o.default.set(e,t,{path:n,domain:a,expires:r,sameSite:"Strict",secure:!0})}}(U,r,s):d(`${a}${U}`,r))};function J(e=""){return g(`${e}${x}`)||""}function K(e=""){p(`${e}${x}`),p(`${e}${U}`),o.default.remove(U)}const R=e=>t=>async(...n)=>{const a=await t(...n);return K(e),a};async function $(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:H(a.rawId),type:a.type,response:{attestationObject:H(a.response.attestationObject),clientDataJSON:H(a.response.clientDataJSON)}});var a}async function N(e){const t=C(e);return P(await navigator.credentials.get(t))}async function E(e,t){const n=C(e);n.signal=t.signal,n.mediation="conditional";return P(await navigator.credentials.get(n))}async function q(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 C(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 P(e){return JSON.stringify({id:e.id,rawId:H(e.rawId),type:e.type,response:{authenticatorData:H(e.response.authenticatorData),clientDataJSON:H(e.response.clientDataJSON),signature:H(e.response.signature),userHandle:e.response.userHandle?H(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 H(e){return btoa(String.fromCharCode.apply(null,new Uint8Array(e))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}var F,V=(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 $(a.data.options);return await e.webauthn.signUp.finish(a.data.transactionId,i)},async signIn(t){const n=await e.webauthn.signIn.start(t,window.location.origin);if(!n.ok)return n;const a=await N(n.data.options);return await e.webauthn.signIn.finish(n.data.transactionId,a)},async signUpOrIn(t){var n;const a=await e.webauthn.signUpOrIn.start(t,window.location.origin);if(!a.ok)return a;if(null===(n=a.data)||void 0===n?void 0:n.create){const t=await $(a.data.options);return await e.webauthn.signUp.finish(a.data.transactionId,t)}{const t=await N(a.data.options);return await e.webauthn.signIn.finish(a.data.transactionId,t)}},async update(t,n){const a=await e.webauthn.update.start(t,window.location.origin,n);if(!a.ok)return a;const i=await $(a.data.options);return await e.webauthn.update.finish(a.data.transactionId,i)},helpers:{create:$,get:N,isSupported:q,conditional:E}}),(...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});var W=e=>Object.assign(Object.assign({},e.flow),{start:async(...t)=>{const n=await q(),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 M=function(...e){return t=>e.reduce(((e,t)=>t(e)),t)}((t=>n=>{var{fpKey:a,fpLoad:i}=n,r=e.__rest(n,["fpKey","fpLoad"]);return w?(a&&i&&m(a).catch((()=>null)),t(s(r,{beforeRequest:S}))):(console.warn("Fingerprint is a client side only capability and will not work when running in the server"),t(r))}),(n=>a=>{var{autoRefresh:i}=a,r=e.__rest(a,["autoRefresh"]);if(!i)return n(r);const{clearAllTimers:o,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(r,{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"),o();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>b&&(f(`Timeout is too large (${e}ms), setting it to ${b}ms`),e=b),o();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"),o(),n}))}),(e=>t=>e(Object.assign(Object.assign({},t),{baseHeaders:Object.assign({"x-descope-sdk-name":"web-js","x-descope-sdk-version":"1.8.2"},t.baseHeaders)}))),(e=>n=>{const a=T(),i=T(),r=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)}}})),o=t.wrapWith(r,["logout","logoutAll"],(e=>async(...t)=>{const n=await e(...t);return a.pub(null),i.pub(null),n}));return Object.assign(o,{onSessionTokenChange:a.sub,onUserChange:i.sub})}),(e=>n=>{const a=e(s(n,{afterRequest:async(e,t)=>{var n;const a=await c(t),i=null===(n=null==a?void 0:a.loginIds)||void 0===n?void 0:n[0],r=null==a?void 0:a.name;i&&((e=>{d(O,e)})(i),(e=>{d(I,e)})(r))}}));let i=t.wrapWith(a,["flow.start"],_);return i=t.wrapWith(i,["logout","logoutAll"],D),Object.assign(i,{getLastUserLoginId:k,getLastUserDisplayName:j})}),(n=>a=>{var{persistTokens:i,sessionTokenViaCookie:r,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 d=n(s(u,{beforeRequest:(p=c,e=>Object.assign(e,{token:e.token||J(p)})),afterRequest:async(e,t)=>{401===(null==t?void 0:t.status)?K(c):A(await l(t),r,c)}}));var p;const f=t.wrapWith(d,["logout","logoutAll"],R(c));return Object.assign(f,{getRefreshToken:()=>J(c),getSessionToken:()=>function(e=""){return o.default.get(U)||g(`${e}${U}`)||""}(c)})}))(((...e)=>{const t=r.default(...e);return Object.assign(Object.assign({},t),{flow:W(t),webauthn:V(t)})}));exports.REFRESH_TOKEN_KEY=x,exports.SESSION_TOKEN_KEY=U,exports.clearFingerprintData=()=>{localStorage.removeItem(v)},exports.default=M,exports.ensureFingerprintIds=m;
2
2
  //# sourceMappingURL=index.cjs.js.map