@descope/web-js-sdk 1.6.3 → 1.6.5

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=(e="",t="")=>({vsid:e,vrid:t}),y=(e=!1)=>{const t=localStorage.getItem("fp");if(!t)return null;const n=JSON.parse(t);return(new Date).getTime()>n.expiry&&!e?null:n.value},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});(e=>{const t={value:e,expiry:(new Date).getTime()+864e5};localStorage.setItem("fp",JSON.stringify(t))})(v(t,r))}catch(e){global.FB_DEBUG&&console.error(e)}},S=e=>(e.body&&(e.body.fpData=y(!0)||v()),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",A="DSR";const J=(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}${A}`,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 K(e=""){return g(`${e}${A}`)||""}function x(e=""){p(`${e}${A}`),p(`${e}${U}`),o.default.remove(U)}const R=e=>t=>async(...n)=>{const a=await t(...n);return x(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 W,M=(W=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=W(...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}),V=e=>Object.assign(Object.assign({},e.flow),{start:async(...t)=>{const n=await q(),a=Object.assign(Object.assign({redirectUrl:window.location.href,location:window.location.href},t[1]),{deviceInfo:{webAuthnSupport:n}});return t[1]=a,e.flow.start(...t)}});const F=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 a?(w?i&&m(a).catch((()=>null)):console.warn("Fingerprint is a client side only capability and will not work when running in the server"),t(s(r,{beforeRequest:S}))):t(Object.assign({},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.6.3"},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||K(p)})),afterRequest:async(e,t)=>{401===(null==t?void 0:t.status)?x(c):J(await l(t),r,c)}}));var p;const f=t.wrapWith(d,["logout","logoutAll"],R(c));return Object.assign(f,{getRefreshToken:()=>K(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:V(t),webauthn:M(t)})}));exports.REFRESH_TOKEN_KEY=A,exports.SESSION_TOKEN_KEY=U,exports.default=F;
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=(e="",t="")=>({vsid:e,vrid:t}),y=(e=!1)=>{const t=localStorage.getItem("fp");if(!t)return null;const n=JSON.parse(t);return(new Date).getTime()>n.expiry&&!e?null:n.value},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});(e=>{const t={value:e,expiry:(new Date).getTime()+864e5};localStorage.setItem("fp",JSON.stringify(t))})(v(t,r))}catch(e){global.FB_DEBUG&&console.error(e)}},S=e=>(e.body&&(e.body.fpData=y(!0)||v()),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",A="DSR";const J=(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}${A}`,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 K(e=""){return g(`${e}${A}`)||""}function x(e=""){p(`${e}${A}`),p(`${e}${U}`),o.default.remove(U)}const R=e=>t=>async(...n)=>{const a=await t(...n);return x(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 W,M=(W=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=W(...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}),V=e=>Object.assign(Object.assign({},e.flow),{start:async(...t)=>{const n=await q(),a=Object.assign(Object.assign({redirectUrl:window.location.href,location:window.location.href},t[1]),{deviceInfo:{webAuthnSupport:n}});return t[1]=a,e.flow.start(...t)}});const F=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 a?(w?i&&m(a).catch((()=>null)):console.warn("Fingerprint is a client side only capability and will not work when running in the server"),t(s(r,{beforeRequest:S}))):t(Object.assign({},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.6.5"},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||K(p)})),afterRequest:async(e,t)=>{401===(null==t?void 0:t.status)?x(c):J(await l(t),r,c)}}));var p;const f=t.wrapWith(d,["logout","logoutAll"],R(c));return Object.assign(f,{getRefreshToken:()=>K(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:V(t),webauthn:M(t)})}));exports.REFRESH_TOKEN_KEY=A,exports.SESSION_TOKEN_KEY=U,exports.default=F;
2
2
  //# sourceMappingURL=index.cjs.js.map
package/dist/index.d.ts CHANGED
@@ -307,31 +307,56 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
307
307
  };
308
308
  };
309
309
  oauth: {
310
- start: {
311
- facebook: <B extends {
312
- redirect: boolean;
313
- }>(redirectURL?: string, config?: B) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
314
- github: <B_1 extends {
315
- redirect: boolean;
316
- }>(redirectURL?: string, config?: B_1) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
317
- google: <B_2 extends {
318
- redirect: boolean;
319
- }>(redirectURL?: string, config?: B_2) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
320
- microsoft: <B_3 extends {
321
- redirect: boolean;
322
- }>(redirectURL?: string, config?: B_3) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
323
- gitlab: <B_4 extends {
324
- redirect: boolean;
325
- }>(redirectURL?: string, config?: B_4) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
326
- apple: <B_5 extends {
327
- redirect: boolean;
328
- }>(redirectURL?: string, config?: B_5) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
329
- discord: <B_6 extends {
330
- redirect: boolean;
331
- }>(redirectURL?: string, config?: B_6) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
332
- linkedin: <B_7 extends {
333
- redirect: boolean;
334
- }>(redirectURL?: string, config?: B_7) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
310
+ start: ((provider: string, redirectUrl?: string, loginOptions?: {
311
+ stepup?: boolean;
312
+ mfa?: boolean;
313
+ customClaims?: Record<string, any>;
314
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
315
+ facebook: (redirectURL?: string, loginOptions?: {
316
+ stepup?: boolean;
317
+ mfa?: boolean;
318
+ customClaims?: Record<string, any>;
319
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
320
+ github: (redirectURL?: string, loginOptions?: {
321
+ stepup?: boolean;
322
+ mfa?: boolean;
323
+ customClaims?: Record<string, any>;
324
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
325
+ google: (redirectURL?: string, loginOptions?: {
326
+ stepup?: boolean;
327
+ mfa?: boolean;
328
+ customClaims?: Record<string, any>;
329
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
330
+ microsoft: (redirectURL?: string, loginOptions?: {
331
+ stepup?: boolean;
332
+ mfa?: boolean;
333
+ customClaims?: Record<string, any>;
334
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
335
+ gitlab: (redirectURL?: string, loginOptions?: {
336
+ stepup?: boolean;
337
+ mfa?: boolean;
338
+ customClaims?: Record<string, any>;
339
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
340
+ apple: (redirectURL?: string, loginOptions?: {
341
+ stepup?: boolean;
342
+ mfa?: boolean;
343
+ customClaims?: Record<string, any>;
344
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
345
+ discord: (redirectURL?: string, loginOptions?: {
346
+ stepup?: boolean;
347
+ mfa?: boolean;
348
+ customClaims?: Record<string, any>;
349
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
350
+ linkedin: (redirectURL?: string, loginOptions?: {
351
+ stepup?: boolean;
352
+ mfa?: boolean;
353
+ customClaims?: Record<string, any>;
354
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
355
+ slack: (redirectURL?: string, loginOptions?: {
356
+ stepup?: boolean;
357
+ mfa?: boolean;
358
+ customClaims?: Record<string, any>;
359
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
335
360
  };
336
361
  exchange: (code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
337
362
  };
@@ -670,31 +695,56 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
670
695
  };
671
696
  };
672
697
  oauth: {
673
- start: {
674
- facebook: <B extends {
675
- redirect: boolean;
676
- }>(redirectURL?: string, config?: B) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
677
- github: <B_1 extends {
678
- redirect: boolean;
679
- }>(redirectURL?: string, config?: B_1) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
680
- google: <B_2 extends {
681
- redirect: boolean;
682
- }>(redirectURL?: string, config?: B_2) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
683
- microsoft: <B_3 extends {
684
- redirect: boolean;
685
- }>(redirectURL?: string, config?: B_3) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
686
- gitlab: <B_4 extends {
687
- redirect: boolean;
688
- }>(redirectURL?: string, config?: B_4) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
689
- apple: <B_5 extends {
690
- redirect: boolean;
691
- }>(redirectURL?: string, config?: B_5) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
692
- discord: <B_6 extends {
693
- redirect: boolean;
694
- }>(redirectURL?: string, config?: B_6) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
695
- linkedin: <B_7 extends {
696
- redirect: boolean;
697
- }>(redirectURL?: string, config?: B_7) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
698
+ start: ((provider: string, redirectUrl?: string, loginOptions?: {
699
+ stepup?: boolean;
700
+ mfa?: boolean;
701
+ customClaims?: Record<string, any>;
702
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
703
+ facebook: (redirectURL?: string, loginOptions?: {
704
+ stepup?: boolean;
705
+ mfa?: boolean;
706
+ customClaims?: Record<string, any>;
707
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
708
+ github: (redirectURL?: string, loginOptions?: {
709
+ stepup?: boolean;
710
+ mfa?: boolean;
711
+ customClaims?: Record<string, any>;
712
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
713
+ google: (redirectURL?: string, loginOptions?: {
714
+ stepup?: boolean;
715
+ mfa?: boolean;
716
+ customClaims?: Record<string, any>;
717
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
718
+ microsoft: (redirectURL?: string, loginOptions?: {
719
+ stepup?: boolean;
720
+ mfa?: boolean;
721
+ customClaims?: Record<string, any>;
722
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
723
+ gitlab: (redirectURL?: string, loginOptions?: {
724
+ stepup?: boolean;
725
+ mfa?: boolean;
726
+ customClaims?: Record<string, any>;
727
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
728
+ apple: (redirectURL?: string, loginOptions?: {
729
+ stepup?: boolean;
730
+ mfa?: boolean;
731
+ customClaims?: Record<string, any>;
732
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
733
+ discord: (redirectURL?: string, loginOptions?: {
734
+ stepup?: boolean;
735
+ mfa?: boolean;
736
+ customClaims?: Record<string, any>;
737
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
738
+ linkedin: (redirectURL?: string, loginOptions?: {
739
+ stepup?: boolean;
740
+ mfa?: boolean;
741
+ customClaims?: Record<string, any>;
742
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
743
+ slack: (redirectURL?: string, loginOptions?: {
744
+ stepup?: boolean;
745
+ mfa?: boolean;
746
+ customClaims?: Record<string, any>;
747
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
698
748
  };
699
749
  exchange: (code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
700
750
  };
@@ -1042,31 +1092,56 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
1042
1092
  };
1043
1093
  };
1044
1094
  oauth: {
1045
- start: {
1046
- facebook: <B extends {
1047
- redirect: boolean;
1048
- }>(redirectURL?: string, config?: B) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1049
- github: <B_1 extends {
1050
- redirect: boolean;
1051
- }>(redirectURL?: string, config?: B_1) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1052
- google: <B_2 extends {
1053
- redirect: boolean;
1054
- }>(redirectURL?: string, config?: B_2) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1055
- microsoft: <B_3 extends {
1056
- redirect: boolean;
1057
- }>(redirectURL?: string, config?: B_3) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1058
- gitlab: <B_4 extends {
1059
- redirect: boolean;
1060
- }>(redirectURL?: string, config?: B_4) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1061
- apple: <B_5 extends {
1062
- redirect: boolean;
1063
- }>(redirectURL?: string, config?: B_5) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1064
- discord: <B_6 extends {
1065
- redirect: boolean;
1066
- }>(redirectURL?: string, config?: B_6) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1067
- linkedin: <B_7 extends {
1068
- redirect: boolean;
1069
- }>(redirectURL?: string, config?: B_7) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1095
+ start: ((provider: string, redirectUrl?: string, loginOptions?: {
1096
+ stepup?: boolean;
1097
+ mfa?: boolean;
1098
+ customClaims?: Record<string, any>;
1099
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
1100
+ facebook: (redirectURL?: string, loginOptions?: {
1101
+ stepup?: boolean;
1102
+ mfa?: boolean;
1103
+ customClaims?: Record<string, any>;
1104
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1105
+ github: (redirectURL?: string, loginOptions?: {
1106
+ stepup?: boolean;
1107
+ mfa?: boolean;
1108
+ customClaims?: Record<string, any>;
1109
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1110
+ google: (redirectURL?: string, loginOptions?: {
1111
+ stepup?: boolean;
1112
+ mfa?: boolean;
1113
+ customClaims?: Record<string, any>;
1114
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1115
+ microsoft: (redirectURL?: string, loginOptions?: {
1116
+ stepup?: boolean;
1117
+ mfa?: boolean;
1118
+ customClaims?: Record<string, any>;
1119
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1120
+ gitlab: (redirectURL?: string, loginOptions?: {
1121
+ stepup?: boolean;
1122
+ mfa?: boolean;
1123
+ customClaims?: Record<string, any>;
1124
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1125
+ apple: (redirectURL?: string, loginOptions?: {
1126
+ stepup?: boolean;
1127
+ mfa?: boolean;
1128
+ customClaims?: Record<string, any>;
1129
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1130
+ discord: (redirectURL?: string, loginOptions?: {
1131
+ stepup?: boolean;
1132
+ mfa?: boolean;
1133
+ customClaims?: Record<string, any>;
1134
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1135
+ linkedin: (redirectURL?: string, loginOptions?: {
1136
+ stepup?: boolean;
1137
+ mfa?: boolean;
1138
+ customClaims?: Record<string, any>;
1139
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1140
+ slack: (redirectURL?: string, loginOptions?: {
1141
+ stepup?: boolean;
1142
+ mfa?: boolean;
1143
+ customClaims?: Record<string, any>;
1144
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1070
1145
  };
1071
1146
  exchange: (code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
1072
1147
  };
@@ -1405,31 +1480,56 @@ declare const decoratedCreateSdk: <A extends boolean>({ persistTokens: isPersist
1405
1480
  };
1406
1481
  };
1407
1482
  oauth: {
1408
- start: {
1409
- facebook: <B extends {
1410
- redirect: boolean;
1411
- }>(redirectURL?: string, config?: B) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1412
- github: <B_1 extends {
1413
- redirect: boolean;
1414
- }>(redirectURL?: string, config?: B_1) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1415
- google: <B_2 extends {
1416
- redirect: boolean;
1417
- }>(redirectURL?: string, config?: B_2) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1418
- microsoft: <B_3 extends {
1419
- redirect: boolean;
1420
- }>(redirectURL?: string, config?: B_3) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1421
- gitlab: <B_4 extends {
1422
- redirect: boolean;
1423
- }>(redirectURL?: string, config?: B_4) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1424
- apple: <B_5 extends {
1425
- redirect: boolean;
1426
- }>(redirectURL?: string, config?: B_5) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1427
- discord: <B_6 extends {
1428
- redirect: boolean;
1429
- }>(redirectURL?: string, config?: B_6) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1430
- linkedin: <B_7 extends {
1431
- redirect: boolean;
1432
- }>(redirectURL?: string, config?: B_7) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1483
+ start: ((provider: string, redirectUrl?: string, loginOptions?: {
1484
+ stepup?: boolean;
1485
+ mfa?: boolean;
1486
+ customClaims?: Record<string, any>;
1487
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
1488
+ facebook: (redirectURL?: string, loginOptions?: {
1489
+ stepup?: boolean;
1490
+ mfa?: boolean;
1491
+ customClaims?: Record<string, any>;
1492
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1493
+ github: (redirectURL?: string, loginOptions?: {
1494
+ stepup?: boolean;
1495
+ mfa?: boolean;
1496
+ customClaims?: Record<string, any>;
1497
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1498
+ google: (redirectURL?: string, loginOptions?: {
1499
+ stepup?: boolean;
1500
+ mfa?: boolean;
1501
+ customClaims?: Record<string, any>;
1502
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1503
+ microsoft: (redirectURL?: string, loginOptions?: {
1504
+ stepup?: boolean;
1505
+ mfa?: boolean;
1506
+ customClaims?: Record<string, any>;
1507
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1508
+ gitlab: (redirectURL?: string, loginOptions?: {
1509
+ stepup?: boolean;
1510
+ mfa?: boolean;
1511
+ customClaims?: Record<string, any>;
1512
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1513
+ apple: (redirectURL?: string, loginOptions?: {
1514
+ stepup?: boolean;
1515
+ mfa?: boolean;
1516
+ customClaims?: Record<string, any>;
1517
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1518
+ discord: (redirectURL?: string, loginOptions?: {
1519
+ stepup?: boolean;
1520
+ mfa?: boolean;
1521
+ customClaims?: Record<string, any>;
1522
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1523
+ linkedin: (redirectURL?: string, loginOptions?: {
1524
+ stepup?: boolean;
1525
+ mfa?: boolean;
1526
+ customClaims?: Record<string, any>;
1527
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1528
+ slack: (redirectURL?: string, loginOptions?: {
1529
+ stepup?: boolean;
1530
+ mfa?: boolean;
1531
+ customClaims?: Record<string, any>;
1532
+ }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1433
1533
  };
1434
1534
  exchange: (code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
1435
1535
  };
package/dist/index.esm.js CHANGED
@@ -1,2 +1,2 @@
1
- import{__rest as e}from"tslib";import t,{wrapWith as n}from"@descope/core-js-sdk";import{load as a}from"@fingerprintjs/fingerprintjs-pro";import i from"js-cookie";const o=(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},s=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||{}},r=async e=>{const t=await s(e);return(null==t?void 0:t.user)||((null==t?void 0:t.hasOwnProperty("userId"))?t:void 0)},l="undefined"!=typeof localStorage,c=(e,t)=>l&&(null===localStorage||void 0===localStorage?void 0:localStorage.setItem(e,t)),u=e=>l&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem(e)),d=e=>l&&(null===localStorage||void 0===localStorage?void 0:localStorage.removeItem(e)),g=(...e)=>{console.debug(...e)},p="undefined"!=typeof window,f=Math.pow(2,31)-1,w=p&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem("fingerprint.endpoint.url"))||"https://fp.descope.com",b=(e="",t="")=>({vsid:e,vrid:t}),h=(e=!1)=>{const t=localStorage.getItem("fp");if(!t)return null;const n=JSON.parse(t);return(new Date).getTime()>n.expiry&&!e?null:n.value},v=async e=>{try{if(h())return;const t=(Date.now().toString(36)+Math.random().toString(36).substring(2)+Math.random().toString(36).substring(2)).substring(0,27),n=a({apiKey:e,endpoint:w}),i=await n,{requestId:o}=await i.get({linkedId:t});(e=>{const t={value:e,expiry:(new Date).getTime()+864e5};localStorage.setItem("fp",JSON.stringify(t))})(b(t,o))}catch(e){global.FB_DEBUG&&console.error(e)}},y=e=>(e.body&&(e.body.fpData=h(!0)||b()),e),m="dls_last_user_login_id",S="dls_last_user_display_name",O=()=>u(m),I=()=>u(S),k=e=>async(...t)=>{var n;t[1]=t[1]||{};const[,a={}]=t,i=O(),o=I();i&&(null!==(n=a.lastAuth)&&void 0!==n||(a.lastAuth={}),a.lastAuth.loginId=i,a.lastAuth.name=o);return await e(...t)},j=e=>async(...t)=>{const n=await e(...t);return d(m),d(S),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 U="DS",T="DSR";const A=(t={},n,a)=>{var{refreshJwt:o,sessionJwt:s}=t,r=e(t,["refreshJwt","sessionJwt"]);void 0===n&&(n=!1),void 0===a&&(a=""),o&&c(`${a}${T}`,o),s&&(n?function(e,t,{cookiePath:n,cookieDomain:a,cookieExpiration:o}){if(t){const s=new Date(1e3*o);i.set(e,t,{path:n,domain:a,expires:s,sameSite:"Strict",secure:!0})}}(U,s,r):c(`${a}${U}`,s))};function J(e=""){return u(`${e}${T}`)||""}function $(e=""){d(`${e}${T}`),d(`${e}${U}`),i.remove(U)}const K=e=>t=>async(...n)=>{const a=await t(...n);return $(e),a};async function R(e){const t=function(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=q(n.publicKey.challenge),n.publicKey.user.id=q(n.publicKey.user.id),null===(t=n.publicKey.excludeCredentials)||void 0===t||t.forEach((e=>{e.id=q(e.id)})),n}(e),n=await navigator.credentials.create(t);return a=n,JSON.stringify({id:a.id,rawId:E(a.rawId),type:a.type,response:{attestationObject:E(a.response.attestationObject),clientDataJSON:E(a.response.clientDataJSON)}});var a}async function x(e){const t=_(e);return P(await navigator.credentials.get(t))}async function C(e,t){const n=_(e);n.signal=t.signal,n.mediation="conditional";return P(await navigator.credentials.get(n))}async function N(e=!1){if(!p)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 _(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=q(n.publicKey.challenge),null===(t=n.publicKey.allowCredentials)||void 0===t||t.forEach((e=>{e.id=q(e.id)})),n}function P(e){return JSON.stringify({id:e.id,rawId:E(e.rawId),type:e.type,response:{authenticatorData:E(e.response.authenticatorData),clientDataJSON:E(e.response.clientDataJSON),signature:E(e.response.signature),userHandle:e.response.userHandle?E(e.response.userHandle):void 0}})}function q(e){const t=e.replace(/_/g,"/").replace(/-/g,"+");return Uint8Array.from(atob(t),(e=>e.charCodeAt(0))).buffer}function E(e){return btoa(String.fromCharCode.apply(null,new Uint8Array(e))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}var L,H=(L=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 R(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 x(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 R(a.data.options);return await e.webauthn.signUp.finish(a.data.transactionId,t)}{const t=await x(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 R(a.data.options);return await e.webauthn.update.finish(a.data.transactionId,i)},helpers:{create:R,get:x,isSupported:N,conditional:C}}),(...e)=>{const t=L(...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}),V=e=>Object.assign(Object.assign({},e.flow),{start:async(...t)=>{const n=await N(),a=Object.assign(Object.assign({redirectUrl:window.location.href,location:window.location.href},t[1]),{deviceInfo:{webAuthnSupport:n}});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,s=e(n,["fpKey","fpLoad"]);return a?(p?i&&v(a).catch((()=>null)):console.warn("Fingerprint is a client side only capability and will not work when running in the server"),t(o(s,{beforeRequest:y}))):t(Object.assign({},s))}),(t=>a=>{var{autoRefresh:i}=a,r=e(a,["autoRefresh"]);if(!i)return t(r);const{clearAllTimers:l,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&&(g("Expiration time passed, refreshing session"),p.refresh(d))}));const p=t(o(r,{afterRequest:async(e,t)=>{const{refreshJwt:n,sessionJwt:a}=await s(t);if(401===(null==t?void 0:t.status))g("Received 401, canceling all timers"),l();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>f&&(g(`Timeout is too large (${e}ms), setting it to ${f}ms`),e=f),l();const t=new Date(Date.now()+e).toLocaleTimeString("en-US",{hour12:!1});g(`Setting refresh timer for ${t}. (${e}ms)`),c((()=>{g("Refreshing session due to timer"),p.refresh(n)}),e)}var i}}));return n(p,["logout","logoutAll"],(e=>async(...t)=>{const n=await e(...t);return g("Clearing all timers"),l(),n}))}),(e=>t=>e(Object.assign(Object.assign({},t),{baseHeaders:Object.assign({"x-descope-sdk-name":"web-js","x-descope-sdk-version":"1.6.3"},t.baseHeaders)}))),(e=>t=>{const a=D(),i=D(),l=e(o(t,{afterRequest:async(e,t)=>{if(401===(null==t?void 0:t.status))a.pub(null),i.pub(null);else{const e=await r(t);e&&i.pub(e);const{sessionJwt:n}=await s(t);n&&a.pub(n)}}})),c=n(l,["logout","logoutAll"],(e=>async(...t)=>{const n=await e(...t);return a.pub(null),i.pub(null),n}));return Object.assign(c,{onSessionTokenChange:a.sub,onUserChange:i.sub})}),(e=>t=>{const a=e(o(t,{afterRequest:async(e,t)=>{var n;const a=await r(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=>{c(m,e)})(i),(e=>{c(S,e)})(o))}}));let i=n(a,["flow.start"],k);return i=n(i,["logout","logoutAll"],j),Object.assign(i,{getLastUserLoginId:O,getLastUserDisplayName:I})}),(t=>a=>{var{persistTokens:r,sessionTokenViaCookie:l,storagePrefix:c}=a,d=e(a,["persistTokens","sessionTokenViaCookie","storagePrefix"]);if(!r||!p)return r&&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"),t(d);const g=t(o(d,{beforeRequest:(f=c,e=>Object.assign(e,{token:e.token||J(f)})),afterRequest:async(e,t)=>{401===(null==t?void 0:t.status)?$(c):A(await s(t),l,c)}}));var f;const w=n(g,["logout","logoutAll"],K(c));return Object.assign(w,{getRefreshToken:()=>J(c),getSessionToken:()=>function(e=""){return i.get(U)||u(`${e}${U}`)||""}(c)})}))(((...e)=>{const n=t(...e);return Object.assign(Object.assign({},n),{flow:V(n),webauthn:H(n)})}));export{T as REFRESH_TOKEN_KEY,U as SESSION_TOKEN_KEY,M as default};
1
+ import{__rest as e}from"tslib";import t,{wrapWith as n}from"@descope/core-js-sdk";import{load as a}from"@fingerprintjs/fingerprintjs-pro";import i from"js-cookie";const o=(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},s=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||{}},r=async e=>{const t=await s(e);return(null==t?void 0:t.user)||((null==t?void 0:t.hasOwnProperty("userId"))?t:void 0)},l="undefined"!=typeof localStorage,c=(e,t)=>l&&(null===localStorage||void 0===localStorage?void 0:localStorage.setItem(e,t)),u=e=>l&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem(e)),d=e=>l&&(null===localStorage||void 0===localStorage?void 0:localStorage.removeItem(e)),g=(...e)=>{console.debug(...e)},p="undefined"!=typeof window,f=Math.pow(2,31)-1,w=p&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem("fingerprint.endpoint.url"))||"https://fp.descope.com",b=(e="",t="")=>({vsid:e,vrid:t}),h=(e=!1)=>{const t=localStorage.getItem("fp");if(!t)return null;const n=JSON.parse(t);return(new Date).getTime()>n.expiry&&!e?null:n.value},v=async e=>{try{if(h())return;const t=(Date.now().toString(36)+Math.random().toString(36).substring(2)+Math.random().toString(36).substring(2)).substring(0,27),n=a({apiKey:e,endpoint:w}),i=await n,{requestId:o}=await i.get({linkedId:t});(e=>{const t={value:e,expiry:(new Date).getTime()+864e5};localStorage.setItem("fp",JSON.stringify(t))})(b(t,o))}catch(e){global.FB_DEBUG&&console.error(e)}},y=e=>(e.body&&(e.body.fpData=h(!0)||b()),e),m="dls_last_user_login_id",S="dls_last_user_display_name",O=()=>u(m),I=()=>u(S),k=e=>async(...t)=>{var n;t[1]=t[1]||{};const[,a={}]=t,i=O(),o=I();i&&(null!==(n=a.lastAuth)&&void 0!==n||(a.lastAuth={}),a.lastAuth.loginId=i,a.lastAuth.name=o);return await e(...t)},j=e=>async(...t)=>{const n=await e(...t);return d(m),d(S),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 U="DS",T="DSR";const A=(t={},n,a)=>{var{refreshJwt:o,sessionJwt:s}=t,r=e(t,["refreshJwt","sessionJwt"]);void 0===n&&(n=!1),void 0===a&&(a=""),o&&c(`${a}${T}`,o),s&&(n?function(e,t,{cookiePath:n,cookieDomain:a,cookieExpiration:o}){if(t){const s=new Date(1e3*o);i.set(e,t,{path:n,domain:a,expires:s,sameSite:"Strict",secure:!0})}}(U,s,r):c(`${a}${U}`,s))};function J(e=""){return u(`${e}${T}`)||""}function $(e=""){d(`${e}${T}`),d(`${e}${U}`),i.remove(U)}const K=e=>t=>async(...n)=>{const a=await t(...n);return $(e),a};async function R(e){const t=function(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=q(n.publicKey.challenge),n.publicKey.user.id=q(n.publicKey.user.id),null===(t=n.publicKey.excludeCredentials)||void 0===t||t.forEach((e=>{e.id=q(e.id)})),n}(e),n=await navigator.credentials.create(t);return a=n,JSON.stringify({id:a.id,rawId:E(a.rawId),type:a.type,response:{attestationObject:E(a.response.attestationObject),clientDataJSON:E(a.response.clientDataJSON)}});var a}async function x(e){const t=_(e);return P(await navigator.credentials.get(t))}async function C(e,t){const n=_(e);n.signal=t.signal,n.mediation="conditional";return P(await navigator.credentials.get(n))}async function N(e=!1){if(!p)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 _(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=q(n.publicKey.challenge),null===(t=n.publicKey.allowCredentials)||void 0===t||t.forEach((e=>{e.id=q(e.id)})),n}function P(e){return JSON.stringify({id:e.id,rawId:E(e.rawId),type:e.type,response:{authenticatorData:E(e.response.authenticatorData),clientDataJSON:E(e.response.clientDataJSON),signature:E(e.response.signature),userHandle:e.response.userHandle?E(e.response.userHandle):void 0}})}function q(e){const t=e.replace(/_/g,"/").replace(/-/g,"+");return Uint8Array.from(atob(t),(e=>e.charCodeAt(0))).buffer}function E(e){return btoa(String.fromCharCode.apply(null,new Uint8Array(e))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}var L,H=(L=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 R(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 x(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 R(a.data.options);return await e.webauthn.signUp.finish(a.data.transactionId,t)}{const t=await x(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 R(a.data.options);return await e.webauthn.update.finish(a.data.transactionId,i)},helpers:{create:R,get:x,isSupported:N,conditional:C}}),(...e)=>{const t=L(...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}),V=e=>Object.assign(Object.assign({},e.flow),{start:async(...t)=>{const n=await N(),a=Object.assign(Object.assign({redirectUrl:window.location.href,location:window.location.href},t[1]),{deviceInfo:{webAuthnSupport:n}});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,s=e(n,["fpKey","fpLoad"]);return a?(p?i&&v(a).catch((()=>null)):console.warn("Fingerprint is a client side only capability and will not work when running in the server"),t(o(s,{beforeRequest:y}))):t(Object.assign({},s))}),(t=>a=>{var{autoRefresh:i}=a,r=e(a,["autoRefresh"]);if(!i)return t(r);const{clearAllTimers:l,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&&(g("Expiration time passed, refreshing session"),p.refresh(d))}));const p=t(o(r,{afterRequest:async(e,t)=>{const{refreshJwt:n,sessionJwt:a}=await s(t);if(401===(null==t?void 0:t.status))g("Received 401, canceling all timers"),l();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>f&&(g(`Timeout is too large (${e}ms), setting it to ${f}ms`),e=f),l();const t=new Date(Date.now()+e).toLocaleTimeString("en-US",{hour12:!1});g(`Setting refresh timer for ${t}. (${e}ms)`),c((()=>{g("Refreshing session due to timer"),p.refresh(n)}),e)}var i}}));return n(p,["logout","logoutAll"],(e=>async(...t)=>{const n=await e(...t);return g("Clearing all timers"),l(),n}))}),(e=>t=>e(Object.assign(Object.assign({},t),{baseHeaders:Object.assign({"x-descope-sdk-name":"web-js","x-descope-sdk-version":"1.6.5"},t.baseHeaders)}))),(e=>t=>{const a=D(),i=D(),l=e(o(t,{afterRequest:async(e,t)=>{if(401===(null==t?void 0:t.status))a.pub(null),i.pub(null);else{const e=await r(t);e&&i.pub(e);const{sessionJwt:n}=await s(t);n&&a.pub(n)}}})),c=n(l,["logout","logoutAll"],(e=>async(...t)=>{const n=await e(...t);return a.pub(null),i.pub(null),n}));return Object.assign(c,{onSessionTokenChange:a.sub,onUserChange:i.sub})}),(e=>t=>{const a=e(o(t,{afterRequest:async(e,t)=>{var n;const a=await r(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=>{c(m,e)})(i),(e=>{c(S,e)})(o))}}));let i=n(a,["flow.start"],k);return i=n(i,["logout","logoutAll"],j),Object.assign(i,{getLastUserLoginId:O,getLastUserDisplayName:I})}),(t=>a=>{var{persistTokens:r,sessionTokenViaCookie:l,storagePrefix:c}=a,d=e(a,["persistTokens","sessionTokenViaCookie","storagePrefix"]);if(!r||!p)return r&&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"),t(d);const g=t(o(d,{beforeRequest:(f=c,e=>Object.assign(e,{token:e.token||J(f)})),afterRequest:async(e,t)=>{401===(null==t?void 0:t.status)?$(c):A(await s(t),l,c)}}));var f;const w=n(g,["logout","logoutAll"],K(c));return Object.assign(w,{getRefreshToken:()=>J(c),getSessionToken:()=>function(e=""){return i.get(U)||u(`${e}${U}`)||""}(c)})}))(((...e)=>{const n=t(...e);return Object.assign(Object.assign({},n),{flow:V(n),webauthn:H(n)})}));export{T as REFRESH_TOKEN_KEY,U as SESSION_TOKEN_KEY,M as default};
2
2
  //# sourceMappingURL=index.esm.js.map