@descope/web-js-sdk 1.27.1 → 1.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -182,8 +182,8 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
182
182
  create: boolean;
183
183
  }>>;
184
184
  };
185
- update: ((identifier: string, token: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
186
- start: (loginId: string, origin: string, token: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
185
+ update: ((identifier: string, token?: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
186
+ start: (loginId: string, origin: string, token?: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
187
187
  transactionId: string;
188
188
  options: string;
189
189
  create: boolean;
@@ -198,7 +198,27 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
198
198
  };
199
199
  };
200
200
  fedcm: {
201
- oneTap(provider?: string, oneTapConfig?: OneTapConfig, loginOptions?: _descope_core_js_sdk.LoginOptions, onSkip?: (reason?: string) => void, onDismissed?: (reason?: string) => void): Promise<unknown>;
201
+ onetap: {
202
+ requestExchangeCode(options: {
203
+ provider?: string;
204
+ oneTapConfig?: OneTapConfig;
205
+ loginOptions?: _descope_core_js_sdk.LoginOptions;
206
+ onSkipped?: (reason?: string) => void;
207
+ onDismissed?: (reason?: string) => void;
208
+ onFailed?: (error: Error) => void;
209
+ onCodeReceived: (code: string) => void;
210
+ }): void;
211
+ requestAuthentication(options?: {
212
+ provider?: string;
213
+ oneTapConfig?: OneTapConfig;
214
+ loginOptions?: _descope_core_js_sdk.LoginOptions;
215
+ onSkipped?: (reason?: string) => void;
216
+ onDismissed?: (reason?: string) => void;
217
+ onFailed?: (error: Error) => void;
218
+ onAuthenticated?: (response: _descope_core_js_sdk.JWTResponse) => void;
219
+ }): void;
220
+ };
221
+ oneTap(provider?: string, oneTapConfig?: OneTapConfig, loginOptions?: _descope_core_js_sdk.LoginOptions, onSkipped?: (reason?: string) => void, onDismissed?: (reason?: string) => void): void;
202
222
  launch(context?: "signin" | "signup" | "use" | "continue"): Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
203
223
  isSupported(): boolean;
204
224
  isLoggedIn(context?: "signin" | "signup" | "use" | "continue"): Promise<boolean>;
@@ -562,6 +582,13 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
562
582
  exchange: (code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
563
583
  startNative: (provider: string, loginOptions?: _descope_core_js_sdk.LoginOptions, implicit?: boolean) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>;
564
584
  finishNative: (provider: string, stateId: string, user?: string, code?: string, idToken?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>;
585
+ getOneTapClientId: (provider: string) => Promise<_descope_core_js_sdk.SdkResponse<{
586
+ clientId: string;
587
+ }>>;
588
+ verifyOneTapIDToken: (provider: string, idToken: string, nonce: string, loginOptions?: _descope_core_js_sdk.LoginOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
589
+ code: string;
590
+ }>>;
591
+ exchangeOneTapIDToken: (provider: string, idToken: string, nonce: string, loginOptions?: _descope_core_js_sdk.LoginOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
565
592
  };
566
593
  saml: {
567
594
  start: (tenantIdOrEmail: string, redirectUrl?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string, ssoId?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
@@ -793,8 +820,8 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
793
820
  create: boolean;
794
821
  }>>;
795
822
  };
796
- update: ((identifier: string, token: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
797
- start: (loginId: string, origin: string, token: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
823
+ update: ((identifier: string, token?: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
824
+ start: (loginId: string, origin: string, token?: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
798
825
  transactionId: string;
799
826
  options: string;
800
827
  create: boolean;
@@ -809,7 +836,27 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
809
836
  };
810
837
  };
811
838
  fedcm: {
812
- oneTap(provider?: string, oneTapConfig?: OneTapConfig, loginOptions?: _descope_core_js_sdk.LoginOptions, onSkip?: (reason?: string) => void, onDismissed?: (reason?: string) => void): Promise<unknown>;
839
+ onetap: {
840
+ requestExchangeCode(options: {
841
+ provider?: string;
842
+ oneTapConfig?: OneTapConfig;
843
+ loginOptions?: _descope_core_js_sdk.LoginOptions;
844
+ onSkipped?: (reason?: string) => void;
845
+ onDismissed?: (reason?: string) => void;
846
+ onFailed?: (error: Error) => void;
847
+ onCodeReceived: (code: string) => void;
848
+ }): void;
849
+ requestAuthentication(options?: {
850
+ provider?: string;
851
+ oneTapConfig?: OneTapConfig;
852
+ loginOptions?: _descope_core_js_sdk.LoginOptions;
853
+ onSkipped?: (reason?: string) => void;
854
+ onDismissed?: (reason?: string) => void;
855
+ onFailed?: (error: Error) => void;
856
+ onAuthenticated?: (response: _descope_core_js_sdk.JWTResponse) => void;
857
+ }): void;
858
+ };
859
+ oneTap(provider?: string, oneTapConfig?: OneTapConfig, loginOptions?: _descope_core_js_sdk.LoginOptions, onSkipped?: (reason?: string) => void, onDismissed?: (reason?: string) => void): void;
813
860
  launch(context?: "signin" | "signup" | "use" | "continue"): Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
814
861
  isSupported(): boolean;
815
862
  isLoggedIn(context?: "signin" | "signup" | "use" | "continue"): Promise<boolean>;
@@ -1173,6 +1220,13 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
1173
1220
  exchange: (code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
1174
1221
  startNative: (provider: string, loginOptions?: _descope_core_js_sdk.LoginOptions, implicit?: boolean) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>;
1175
1222
  finishNative: (provider: string, stateId: string, user?: string, code?: string, idToken?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>;
1223
+ getOneTapClientId: (provider: string) => Promise<_descope_core_js_sdk.SdkResponse<{
1224
+ clientId: string;
1225
+ }>>;
1226
+ verifyOneTapIDToken: (provider: string, idToken: string, nonce: string, loginOptions?: _descope_core_js_sdk.LoginOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
1227
+ code: string;
1228
+ }>>;
1229
+ exchangeOneTapIDToken: (provider: string, idToken: string, nonce: string, loginOptions?: _descope_core_js_sdk.LoginOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
1176
1230
  };
1177
1231
  saml: {
1178
1232
  start: (tenantIdOrEmail: string, redirectUrl?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string, ssoId?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
@@ -1411,8 +1465,8 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
1411
1465
  create: boolean;
1412
1466
  }>>;
1413
1467
  };
1414
- update: ((identifier: string, token: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
1415
- start: (loginId: string, origin: string, token: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
1468
+ update: ((identifier: string, token?: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
1469
+ start: (loginId: string, origin: string, token?: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
1416
1470
  transactionId: string;
1417
1471
  options: string;
1418
1472
  create: boolean;
@@ -1427,7 +1481,27 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
1427
1481
  };
1428
1482
  };
1429
1483
  fedcm: {
1430
- oneTap(provider?: string, oneTapConfig?: OneTapConfig, loginOptions?: _descope_core_js_sdk.LoginOptions, onSkip?: (reason?: string) => void, onDismissed?: (reason?: string) => void): Promise<unknown>;
1484
+ onetap: {
1485
+ requestExchangeCode(options: {
1486
+ provider?: string;
1487
+ oneTapConfig?: OneTapConfig;
1488
+ loginOptions?: _descope_core_js_sdk.LoginOptions;
1489
+ onSkipped?: (reason?: string) => void;
1490
+ onDismissed?: (reason?: string) => void;
1491
+ onFailed?: (error: Error) => void;
1492
+ onCodeReceived: (code: string) => void;
1493
+ }): void;
1494
+ requestAuthentication(options?: {
1495
+ provider?: string;
1496
+ oneTapConfig?: OneTapConfig;
1497
+ loginOptions?: _descope_core_js_sdk.LoginOptions;
1498
+ onSkipped?: (reason?: string) => void;
1499
+ onDismissed?: (reason?: string) => void;
1500
+ onFailed?: (error: Error) => void;
1501
+ onAuthenticated?: (response: _descope_core_js_sdk.JWTResponse) => void;
1502
+ }): void;
1503
+ };
1504
+ oneTap(provider?: string, oneTapConfig?: OneTapConfig, loginOptions?: _descope_core_js_sdk.LoginOptions, onSkipped?: (reason?: string) => void, onDismissed?: (reason?: string) => void): void;
1431
1505
  launch(context?: "signin" | "signup" | "use" | "continue"): Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
1432
1506
  isSupported(): boolean;
1433
1507
  isLoggedIn(context?: "signin" | "signup" | "use" | "continue"): Promise<boolean>;
@@ -1791,6 +1865,13 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
1791
1865
  exchange: (code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
1792
1866
  startNative: (provider: string, loginOptions?: _descope_core_js_sdk.LoginOptions, implicit?: boolean) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>;
1793
1867
  finishNative: (provider: string, stateId: string, user?: string, code?: string, idToken?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>;
1868
+ getOneTapClientId: (provider: string) => Promise<_descope_core_js_sdk.SdkResponse<{
1869
+ clientId: string;
1870
+ }>>;
1871
+ verifyOneTapIDToken: (provider: string, idToken: string, nonce: string, loginOptions?: _descope_core_js_sdk.LoginOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
1872
+ code: string;
1873
+ }>>;
1874
+ exchangeOneTapIDToken: (provider: string, idToken: string, nonce: string, loginOptions?: _descope_core_js_sdk.LoginOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
1794
1875
  };
1795
1876
  saml: {
1796
1877
  start: (tenantIdOrEmail: string, redirectUrl?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string, ssoId?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
@@ -2022,8 +2103,8 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
2022
2103
  create: boolean;
2023
2104
  }>>;
2024
2105
  };
2025
- update: ((identifier: string, token: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
2026
- start: (loginId: string, origin: string, token: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
2106
+ update: ((identifier: string, token?: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
2107
+ start: (loginId: string, origin: string, token?: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
2027
2108
  transactionId: string;
2028
2109
  options: string;
2029
2110
  create: boolean;
@@ -2038,7 +2119,27 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
2038
2119
  };
2039
2120
  };
2040
2121
  fedcm: {
2041
- oneTap(provider?: string, oneTapConfig?: OneTapConfig, loginOptions?: _descope_core_js_sdk.LoginOptions, onSkip?: (reason?: string) => void, onDismissed?: (reason?: string) => void): Promise<unknown>;
2122
+ onetap: {
2123
+ requestExchangeCode(options: {
2124
+ provider?: string;
2125
+ oneTapConfig?: OneTapConfig;
2126
+ loginOptions?: _descope_core_js_sdk.LoginOptions;
2127
+ onSkipped?: (reason?: string) => void;
2128
+ onDismissed?: (reason?: string) => void;
2129
+ onFailed?: (error: Error) => void;
2130
+ onCodeReceived: (code: string) => void;
2131
+ }): void;
2132
+ requestAuthentication(options?: {
2133
+ provider?: string;
2134
+ oneTapConfig?: OneTapConfig;
2135
+ loginOptions?: _descope_core_js_sdk.LoginOptions;
2136
+ onSkipped?: (reason?: string) => void;
2137
+ onDismissed?: (reason?: string) => void;
2138
+ onFailed?: (error: Error) => void;
2139
+ onAuthenticated?: (response: _descope_core_js_sdk.JWTResponse) => void;
2140
+ }): void;
2141
+ };
2142
+ oneTap(provider?: string, oneTapConfig?: OneTapConfig, loginOptions?: _descope_core_js_sdk.LoginOptions, onSkipped?: (reason?: string) => void, onDismissed?: (reason?: string) => void): void;
2042
2143
  launch(context?: "signin" | "signup" | "use" | "continue"): Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
2043
2144
  isSupported(): boolean;
2044
2145
  isLoggedIn(context?: "signin" | "signup" | "use" | "continue"): Promise<boolean>;
@@ -2402,6 +2503,13 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
2402
2503
  exchange: (code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
2403
2504
  startNative: (provider: string, loginOptions?: _descope_core_js_sdk.LoginOptions, implicit?: boolean) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>;
2404
2505
  finishNative: (provider: string, stateId: string, user?: string, code?: string, idToken?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>;
2506
+ getOneTapClientId: (provider: string) => Promise<_descope_core_js_sdk.SdkResponse<{
2507
+ clientId: string;
2508
+ }>>;
2509
+ verifyOneTapIDToken: (provider: string, idToken: string, nonce: string, loginOptions?: _descope_core_js_sdk.LoginOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
2510
+ code: string;
2511
+ }>>;
2512
+ exchangeOneTapIDToken: (provider: string, idToken: string, nonce: string, loginOptions?: _descope_core_js_sdk.LoginOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
2405
2513
  };
2406
2514
  saml: {
2407
2515
  start: (tenantIdOrEmail: string, redirectUrl?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string, ssoId?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
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{jwtDecode as o}from"jwt-decode";import i from"js-cookie";import{load as a,defaultEndpoint as s,defaultScriptUrlPattern as r}from"@fingerprintjs/fingerprintjs-pro";const l=(t,e)=>{var n;return["beforeRequest","afterRequest"].reduce(((n,o)=>{var i;return n[o]=[].concat((null===(i=t.hooks)||void 0===i?void 0:i[o])||[]).concat((null==e?void 0:e[o])||[]),n}),null!==(n=t.hooks)&&void 0!==n?n:t.hooks={}),t},c=async t=>{if(!(null==t?void 0:t.ok))return{};const e=await(null==t?void 0:t.clone().json());return(null==e?void 0:e.authInfo)||e||{}},u=async t=>{const e=await c(t);return(null==e?void 0:e.user)||((null==e?void 0:e.hasOwnProperty("userId"))?e:void 0)},d="undefined"!=typeof localStorage,g=(t,e)=>d&&(null===localStorage||void 0===localStorage?void 0:localStorage.setItem(t,e)),p=t=>d&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem(t)),f=t=>d&&(null===localStorage||void 0===localStorage?void 0:localStorage.removeItem(t)),w=(...t)=>{console.debug(...t)},v="undefined"!=typeof window,h=Math.pow(2,31)-1,m=t=>{let e=((n=t)?n.getTime()-(new Date).getTime():0)-2e4;var n;return e>h&&(w(`Timeout is too large (${e}ms), setting it to ${h}ms`),e=h),e},b="DS",y="DSR";function S(t,e,{cookiePath:n,cookieDomain:o,cookieExpiration:a,cookieSameSite:s="Strict",cookieSecure:r=!0}){if(e){const l=new Date(1e3*a),c=function(t){const e=window.location.hostname.split("."),n=t.split(".");return e.slice(-n.length).join(".")===t}(o);i.set(t,e,{path:n,domain:c?o:void 0,expires:l,sameSite:s,secure:r})}}function I(t=""){return p(`${t}${y}`)||""}function k(t=""){return i.get(b)||p(`${t}${b}`)||""}function O(t=""){f(`${t}${y}`),f(`${t}${b}`),i.remove(b)}const j=v&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem("fingerprint.endpoint.url"))||"https://api.descope.com",U="vsid",A="vrid",x="fp",D=(t=!1)=>{const e=localStorage.getItem(x);if(!e)return null;const n=JSON.parse(e);return(new Date).getTime()>n.expiry&&!t?null:n.value},C=async(t,e=j)=>{try{if(D())return;const n=(Date.now().toString(36)+Math.random().toString(36).substring(2)+Math.random().toString(36).substring(2)).substring(0,27),o=new URL(e);o.pathname="/fXj8gt3x8VulJBna/x96Emn69oZwcd7I6";const i=new URL(e);i.pathname="/fXj8gt3x8VulJBna/w78aRZnnDZ3Aqw0I";const l=i.toString()+"?apiKey=<apiKey>&version=<version>&loaderVersion=<loaderVersion>",c=a({apiKey:t,endpoint:[o.toString(),s],scriptUrlPattern:[l,r]}),u=await c,{requestId:d}=await u.get({linkedId:n}),g=((t,e)=>({[U]:t,[A]:e}))(n,d);(t=>{const e={value:t,expiry:(new Date).getTime()+864e5};localStorage.setItem(x,JSON.stringify(e))})(g)}catch(t){console.warn("Could not load fingerprint",t)}},L=()=>{localStorage.removeItem(x)},R=t=>{const e=D(!0);return e&&t.body&&(t.body.fpData=e),t},T="dls_last_user_login_id",J="dls_last_user_display_name",_=()=>p(T),K=()=>p(J),$=t=>async(...e)=>{var n;e[1]=e[1]||{};const[,o={}]=e,i=_(),a=K();i&&(null!==(n=o.lastAuth)&&void 0!==n||(o.lastAuth={}),o.lastAuth.loginId=i,o.lastAuth.name=a);return await t(...e)},N=t=>e=>async(...n)=>{const o=await e(...n);return t||(f(T),f(J)),o};function P(){const t=[];return{pub:e=>{t.forEach((t=>t(e)))},sub:e=>{const n=t.push(e)-1;return()=>t.splice(n,1)}}}const E=t=>e=>async(...n)=>{const o=await e(...n);return O(t),o};async function q(t){const e=function(t){var e;const n=JSON.parse(t);return n.publicKey.challenge=Z(n.publicKey.challenge),n.publicKey.user.id=Z(n.publicKey.user.id),null===(e=n.publicKey.excludeCredentials)||void 0===e||e.forEach((t=>{t.id=Z(t.id)})),n}(t),n=await navigator.credentials.create(e);return o=n,JSON.stringify({id:o.id,rawId:F(o.rawId),type:o.type,response:{attestationObject:F(o.response.attestationObject),clientDataJSON:F(o.response.clientDataJSON)}});var o}async function V(t){const e=G(t);return B(await navigator.credentials.get(e))}async function H(t,e){const n=G(t);n.signal=e.signal,n.mediation="conditional";return B(await navigator.credentials.get(n))}async function M(t=!1){if(!v)return Promise.resolve(!1);const e=!!(window.PublicKeyCredential&&navigator.credentials&&navigator.credentials.create&&navigator.credentials.get);return e&&t&&PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable?PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable():e}function G(t){var e;const n=JSON.parse(t);return n.publicKey.challenge=Z(n.publicKey.challenge),null===(e=n.publicKey.allowCredentials)||void 0===e||e.forEach((t=>{t.id=Z(t.id)})),n}function B(t){return JSON.stringify({id:t.id,rawId:F(t.rawId),type:t.type,response:{authenticatorData:F(t.response.authenticatorData),clientDataJSON:F(t.response.clientDataJSON),signature:F(t.response.signature),userHandle:t.response.userHandle?F(t.response.userHandle):void 0}})}function Z(t){const e=t.replace(/_/g,"/").replace(/-/g,"+");return Uint8Array.from(atob(e),(t=>t.charCodeAt(0))).buffer}function F(t){return btoa(String.fromCharCode.apply(null,new Uint8Array(t))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}var X,z=(X=t=>({async signUp(e,n,o){const i=await t.webauthn.signUp.start(e,window.location.origin,n,o);if(!i.ok)return i;const a=await q(i.data.options);return await t.webauthn.signUp.finish(i.data.transactionId,a)},async signIn(e,n){const o=await t.webauthn.signIn.start(e,window.location.origin,void 0,void 0,n);if(!o.ok)return o;const i=await V(o.data.options);return await t.webauthn.signIn.finish(o.data.transactionId,i)},async signUpOrIn(e,n){var o;const i=await t.webauthn.signUpOrIn.start(e,window.location.origin,n);if(!i.ok)return i;if(null===(o=i.data)||void 0===o?void 0:o.create){const e=await q(i.data.options);return await t.webauthn.signUp.finish(i.data.transactionId,e)}{const e=await V(i.data.options);return await t.webauthn.signIn.finish(i.data.transactionId,e)}},async update(e,n,o){const i=await t.webauthn.update.start(e,window.location.origin,n,o);if(!i.ok)return i;const a=await q(i.data.options);return await t.webauthn.update.finish(i.data.transactionId,a)},helpers:{create:q,get:V,isSupported:M,conditional:H}}),(...t)=>{const e=X(...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 Q={config:"/fedcm/config"},W=(t,e)=>({async oneTap(e,n,o,i,a){const s=null!=e?e:"google",r=await t.oauth.startNative(s,o,!0);if(!r.ok)return r;const{clientId:l,stateId:c,nonce:u}=r.data,d=await async function(){return new Promise(((t,e)=>{if(window.google)return void t(window.google.accounts.id);let n=document.getElementById("google-gsi-client-script");n||(n=document.createElement("script"),document.head.appendChild(n),n.async=!0,n.defer=!0,n.id="google-gsi-client-script",n.src="https://accounts.google.com/gsi/client"),n.onload=function(){window.google?t(window.google.accounts.id):e("Failed to load Google GSI client script - not loaded properly")},n.onerror=function(){e("Failed to load Google GSI client script - failed to load")}}))}();return new Promise((e=>{var o,r;d.initialize(Object.assign(Object.assign({},n),{itp_support:null===(o=null==n?void 0:n.itp_support)||void 0===o||o,use_fedcm_for_prompt:null===(r=null==n?void 0:n.use_fedcm_for_prompt)||void 0===r||r,client_id:l,callback:n=>{e(t.oauth.finishNative(s,c,"","",n.credential))},nonce:u})),d.prompt((t=>{var e,n;if(a&&(null==t?void 0:t.isDismissedMoment())){const n=null===(e=t.getDismissedReason)||void 0===e?void 0:e.call(t);null==a||a(n)}else if(i&&(null==t?void 0:t.isSkippedMoment())){const e=null===(n=t.getSkippedReason)||void 0===n?void 0:n.call(t);null==i||i(e)}else;}))}))},async launch(n){var o;const i={identity:{context:n||"signin",providers:[{configURL:t.httpClient.buildUrl(e+Q.config),clientId:e}]}},a=await(null===(o=navigator.credentials)||void 0===o?void 0:o.get(i));return t.refresh(a.token)},isSupported:()=>v&&"IdentityCredential"in window,async isLoggedIn(n){var o;const i=t.httpClient.buildUrl(e+Q.config);try{const t={identity:{context:n||"signin",providers:[{configURL:i,clientId:e}]}},a=await(null===(o=navigator.credentials)||void 0===o?void 0:o.get(t));return!!a&&!!a.token}catch(t){return!1}}});var Y=t=>Object.assign(Object.assign({},t.flow),{start:async(...e)=>{const n=await M(),o=Object.assign(Object.assign({location:window.location.href},e[1]),{deviceInfo:{webAuthnSupport:n},startOptionsVersion:1});return e[1]=o,t.flow.start(...e)}});const tt=function(...t){return e=>t.reduce(((t,e)=>e(t)),e)}((e=>n=>{var{fpKey:o,fpLoad:i}=n,a=t(n,["fpKey","fpLoad"]);return v?(o&&i&&C(o).catch((()=>null)),e(l(a,{beforeRequest:R}))):e(a)}),(e=>i=>{var{autoRefresh:a}=i,s=t(i,["autoRefresh"]);if(!a)return e(s);const{clearAllTimers:r,setTimer:u}=(()=>{const t=[];return{clearAllTimers:()=>{for(;t.length;)clearTimeout(t.pop())},setTimer:(e,n)=>{t.push(setTimeout(e,n))}}})();let d,g;v&&document.addEventListener("visibilitychange",(()=>{"visible"===document.visibilityState&&d&&new Date>d&&(w("Expiration time passed, refreshing session"),p.refresh(I()||g))}));const p=e(l(s,{afterRequest:async(t,e)=>{const{refreshJwt:n,sessionJwt:i,sessionExpiration:a}=await c(e);if(401===(null==e?void 0:e.status))w("Received 401, canceling all timers"),r();else if(i||a){if(d=((t,e)=>{if(e)return new Date(1e3*e);w("Could not extract expiration time from session token, trying to decode the token");try{const e=o(t);if(e.exp)return new Date(1e3*e.exp)}catch(t){return null}})(i,a),!d)return void w("Could not extract expiration time from session token");g=n;const t=m(d);if(r(),t<=2e4)return void w("Session is too close to expiration, not setting refresh timer");const e=new Date(Date.now()+t).toLocaleTimeString("en-US",{hour12:!1});w(`Setting refresh timer for ${e}. (${t}ms)`),u((()=>{w("Refreshing session due to timer"),p.refresh(I()||n)}),t)}}}));return n(p,["logout","logoutAll"],(t=>async(...e)=>{const n=await t(...e);return w("Clearing all timers"),r(),n}))}),(t=>e=>t(Object.assign(Object.assign({},e),{baseHeaders:Object.assign({"x-descope-sdk-name":"web-js","x-descope-sdk-version":"1.27.1"},e.baseHeaders)}))),(t=>e=>{const o=P(),i=P(),a=P(),s=t(l(e,{afterRequest:async(t,e)=>{if(401===(null==e?void 0:e.status))i.pub(null),a.pub(null),o.pub(null);else{const t=await u(e);t&&a.pub(t);const{sessionJwt:n,sessionExpiration:s}=await c(e);n&&i.pub(n),(s||n)&&o.pub(s||42)}}})),r=n(s,["logout","logoutAll"],(t=>async(...e)=>{const n=await t(...e);return i.pub(null),a.pub(null),o.pub(null),n}));return Object.assign(r,{onSessionTokenChange:i.sub,onUserChange:a.sub,onIsAuthenticatedChange:t=>o.sub((e=>{t(!!e)}))})}),(e=>o=>{var{storeLastAuthenticatedUser:i=!0,keepLastAuthenticatedUserAfterLogout:a=!1}=o,s=t(o,["storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout"]);if(!i)return Object.assign(e(s),{getLastUserLoginId:_,getLastUserDisplayName:K});const r=e(l(s,{afterRequest:async(t,e)=>{var n;const o=await u(e),i=null===(n=null==o?void 0:o.loginIds)||void 0===n?void 0:n[0],a=null==o?void 0:o.name;i&&((t=>{g(T,t)})(i),(t=>{g(J,t)})(a))}}));let c=n(r,["flow.start"],$);return c=n(c,["logout","logoutAll"],N(a)),Object.assign(c,{getLastUserLoginId:_,getLastUserDisplayName:K})}),(e=>o=>{var{persistTokens:i,sessionTokenViaCookie:a,storagePrefix:s}=o,r=t(o,["persistTokens","sessionTokenViaCookie","storagePrefix"]);if(!i||!v)return e(r);const u=e(l(r,{beforeRequest:(d=s,t=>Object.assign(t,{token:t.token||I(d)})),afterRequest:async(e,n)=>{const o=/^\/v\d+\/mgmt\//.test(e.path);401===(null==n?void 0:n.status)?o||O(s):((e={},n,o)=>{var i,{refreshJwt:a,sessionJwt:s}=e,r=t(e,["refreshJwt","sessionJwt"]);if(void 0===n&&(n=!1),void 0===o&&(o=""),a&&g(`${o}${y}`,a),s)if(n){const t=n.sameSite||"Strict",e=null===(i=n.secure)||void 0===i||i;S(b,s,Object.assign(Object.assign({},r),{cookieSameSite:t,cookieSecure:e}))}else g(`${o}${b}`,s)})(await c(n),a,s)}}));var d;const p=n(u,["logout","logoutAll"],E(s));return Object.assign(p,{getRefreshToken:()=>I(s),getSessionToken:()=>k(s)})}))(((...t)=>{const n=e(...t);return Object.assign(Object.assign({},n),{refresh:t=>{const e=k(),o=I();return n.refresh(t,{dcs:e?"t":"f",dcr:o?"t":"f"})},flow:Y(n),webauthn:z(n),fedcm:W(n,t[0].projectId)})}));export{y as REFRESH_TOKEN_KEY,b as SESSION_TOKEN_KEY,L as clearFingerprintData,tt as default,C as ensureFingerprintIds};
1
+ import{__rest as e}from"tslib";import t,{wrapWith as n}from"@descope/core-js-sdk";import{jwtDecode as o}from"jwt-decode";import i from"js-cookie";import{load as a,defaultEndpoint as r,defaultScriptUrlPattern as s}from"@fingerprintjs/fingerprintjs-pro";const l=(e,t)=>{var n;return["beforeRequest","afterRequest"].reduce(((n,o)=>{var i;return n[o]=[].concat((null===(i=e.hooks)||void 0===i?void 0:i[o])||[]).concat((null==t?void 0:t[o])||[]),n}),null!==(n=e.hooks)&&void 0!==n?n:e.hooks={}),e},c=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||{}},u=async e=>{const t=await c(e);return(null==t?void 0:t.user)||((null==t?void 0:t.hasOwnProperty("userId"))?t:void 0)},d="undefined"!=typeof localStorage,g=(e,t)=>d&&(null===localStorage||void 0===localStorage?void 0:localStorage.setItem(e,t)),p=e=>d&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem(e)),f=e=>d&&(null===localStorage||void 0===localStorage?void 0:localStorage.removeItem(e)),v=(...e)=>{console.debug(...e)},w="undefined"!=typeof window,h=Math.pow(2,31)-1,m=e=>{let t=((n=e)?n.getTime()-(new Date).getTime():0)-2e4;var n;return t>h&&(v(`Timeout is too large (${t}ms), setting it to ${h}ms`),t=h),t},b="DS",y="DSR";function S(e,t,{cookiePath:n,cookieDomain:o,cookieExpiration:a,cookieSameSite:r="Strict",cookieSecure:s=!0}){if(t){const l=new Date(1e3*a),c=function(e){const t=window.location.hostname.split("."),n=e.split(".");return t.slice(-n.length).join(".")===e}(o);i.set(e,t,{path:n,domain:c?o:void 0,expires:l,sameSite:r,secure:s})}}function I(e=""){return p(`${e}${y}`)||""}function O(e=""){return i.get(b)||p(`${e}${b}`)||""}function k(e=""){f(`${e}${y}`),f(`${e}${b}`),i.remove(b)}const j=w&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem("fingerprint.endpoint.url"))||"https://api.descope.com",D="vsid",U="vrid",A="fp",T=(e=!1)=>{const t=localStorage.getItem(A);if(!t)return null;const n=JSON.parse(t);return(new Date).getTime()>n.expiry&&!e?null:n.value},x=async(e,t=j)=>{try{if(T())return;const n=(Date.now().toString(36)+Math.random().toString(36).substring(2)+Math.random().toString(36).substring(2)).substring(0,27),o=new URL(t);o.pathname="/fXj8gt3x8VulJBna/x96Emn69oZwcd7I6";const i=new URL(t);i.pathname="/fXj8gt3x8VulJBna/w78aRZnnDZ3Aqw0I";const l=i.toString()+"?apiKey=<apiKey>&version=<version>&loaderVersion=<loaderVersion>",c=a({apiKey:e,endpoint:[o.toString(),r],scriptUrlPattern:[l,s]}),u=await c,{requestId:d}=await u.get({linkedId:n}),g=((e,t)=>({[D]:e,[U]:t}))(n,d);(e=>{const t={value:e,expiry:(new Date).getTime()+864e5};localStorage.setItem(A,JSON.stringify(t))})(g)}catch(e){console.warn("Could not load fingerprint",e)}},C=()=>{localStorage.removeItem(A)},R=e=>{const t=T(!0);return t&&e.body&&(e.body.fpData=t),e},L="dls_last_user_login_id",J="dls_last_user_display_name",_=()=>p(L),K=()=>p(J),$=e=>async(...t)=>{var n;t[1]=t[1]||{};const[,o={}]=t,i=_(),a=K();i&&(null!==(n=o.lastAuth)&&void 0!==n||(o.lastAuth={}),o.lastAuth.loginId=i,o.lastAuth.name=a);return await e(...t)},E=e=>t=>async(...n)=>{const o=await t(...n);return e||(f(L),f(J)),o};function P(){const e=[];return{pub:t=>{e.forEach((e=>e(t)))},sub:t=>{const n=e.push(t)-1;return()=>e.splice(n,1)}}}const q=e=>t=>async(...n)=>{const o=await t(...n);return k(e),o};async function N(e){const t=function(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=B(n.publicKey.challenge),n.publicKey.user.id=B(n.publicKey.user.id),null===(t=n.publicKey.excludeCredentials)||void 0===t||t.forEach((e=>{e.id=B(e.id)})),n}(e),n=await navigator.credentials.create(t);return o=n,JSON.stringify({id:o.id,rawId:Z(o.rawId),type:o.type,response:{attestationObject:Z(o.response.attestationObject),clientDataJSON:Z(o.response.clientDataJSON)}});var o}async function V(e){const t=H(e);return G(await navigator.credentials.get(t))}async function F(e,t){const n=H(e);n.signal=t.signal,n.mediation="conditional";return G(await navigator.credentials.get(n))}async function M(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 H(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=B(n.publicKey.challenge),null===(t=n.publicKey.allowCredentials)||void 0===t||t.forEach((e=>{e.id=B(e.id)})),n}function G(e){return JSON.stringify({id:e.id,rawId:Z(e.rawId),type:e.type,response:{authenticatorData:Z(e.response.authenticatorData),clientDataJSON:Z(e.response.clientDataJSON),signature:Z(e.response.signature),userHandle:e.response.userHandle?Z(e.response.userHandle):void 0}})}function B(e){const t=e.replace(/_/g,"/").replace(/-/g,"+");return Uint8Array.from(atob(t),(e=>e.charCodeAt(0))).buffer}function Z(e){return btoa(String.fromCharCode.apply(null,new Uint8Array(e))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}var X,z=(X=e=>({async signUp(t,n,o){const i=await e.webauthn.signUp.start(t,window.location.origin,n,o);if(!i.ok)return i;const a=await N(i.data.options);return await e.webauthn.signUp.finish(i.data.transactionId,a)},async signIn(t,n){const o=await e.webauthn.signIn.start(t,window.location.origin,void 0,void 0,n);if(!o.ok)return o;const i=await V(o.data.options);return await e.webauthn.signIn.finish(o.data.transactionId,i)},async signUpOrIn(t,n){var o;const i=await e.webauthn.signUpOrIn.start(t,window.location.origin,n);if(!i.ok)return i;if(null===(o=i.data)||void 0===o?void 0:o.create){const t=await N(i.data.options);return await e.webauthn.signUp.finish(i.data.transactionId,t)}{const t=await V(i.data.options);return await e.webauthn.signIn.finish(i.data.transactionId,t)}},async update(t,n,o){const i=await e.webauthn.update.start(t,window.location.origin,n,o);if(!i.ok)return i;const a=await N(i.data.options);return await e.webauthn.update.finish(i.data.transactionId,a)},helpers:{create:N,get:V,isSupported:M,conditional:F}}),(...e)=>{const t=X(...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 Q={config:"/fedcm/config"},W=()=>{if(window.crypto&&window.crypto.getRandomValues){const e=new Uint8Array(16);return window.crypto.getRandomValues(e),Array.from(e,(e=>e.toString(16).padStart(2,"0"))).join("")}return Math.random().toString(36).substring(2)};async function Y(e,t){var n,o,i;try{const i=await async function(e,t="google",n,o,i){const a=W(),r=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")}}))}(),s=await e.oauth.getOneTapClientId(t);if(!s.ok)throw new Error("Failed to get OneTap client ID for provider "+t);const l=s.data.clientId;return new Promise((e=>{var s,c;const u=n=>{e({provider:t,nonce:a,credential:null==n?void 0:n.credential})};r.initialize(Object.assign(Object.assign({},n),{itp_support:null===(s=null==n?void 0:n.itp_support)||void 0===s||s,use_fedcm_for_prompt:null===(c=null==n?void 0:n.use_fedcm_for_prompt)||void 0===c||c,client_id:l,callback:u,nonce:a})),r.prompt((e=>{var t,n;if(i&&(null==e?void 0:e.isDismissedMoment())){const n=null===(t=e.getDismissedReason)||void 0===t?void 0:t.call(e);return null==i||i(n),void u()}if(o&&(null==e?void 0:e.isSkippedMoment())){const t=null===(n=e.getSkippedReason)||void 0===n?void 0:n.call(e);return null==o||o(t),void u()}}))}))}(e,t.provider,t.oneTapConfig,t.onSkipped,t.onDismissed);if(!i.credential)return null;if(null==t?void 0:t.onCodeReceived){const o=await e.oauth.verifyOneTapIDToken(i.provider,i.credential,i.nonce,null==t?void 0:t.loginOptions);if(!o.ok||!o.data)throw new Error("Failed to verify OneTap client ID for provider "+i.provider);null===(n=null==t?void 0:t.onCodeReceived)||void 0===n||n.call(t,o.data.code)}else{const n=await e.oauth.exchangeOneTapIDToken(i.provider,i.credential,i.nonce,null==t?void 0:t.loginOptions);if(!n.ok||!n.data)throw new Error("Failed to exchange OneTap client ID for provider "+i.provider);null===(o=null==t?void 0:t.onAuthenticated)||void 0===o||o.call(t,n.data)}}catch(e){null===(i=null==t?void 0:t.onFailed)||void 0===i||i.call(t,e)}}var ee=e=>Object.assign(Object.assign({},e.flow),{start:async(...t)=>{const n=await M(),o=Object.assign(Object.assign({location:window.location.href},t[1]),{deviceInfo:{webAuthnSupport:n},startOptionsVersion:1});return t[1]=o,e.flow.start(...t)}});const te=function(...e){return t=>e.reduce(((e,t)=>t(e)),t)}((t=>n=>{var{fpKey:o,fpLoad:i}=n,a=e(n,["fpKey","fpLoad"]);return w?(o&&i&&x(o).catch((()=>null)),t(l(a,{beforeRequest:R}))):t(a)}),(t=>i=>{var{autoRefresh:a}=i,r=e(i,["autoRefresh"]);if(!a)return t(r);const{clearAllTimers:s,setTimer:u}=(()=>{const e=[];return{clearAllTimers:()=>{for(;e.length;)clearTimeout(e.pop())},setTimer:(t,n)=>{e.push(setTimeout(t,n))}}})();let d,g;w&&document.addEventListener("visibilitychange",(()=>{"visible"===document.visibilityState&&d&&new Date>d&&(v("Expiration time passed, refreshing session"),p.refresh(I()||g))}));const p=t(l(r,{afterRequest:async(e,t)=>{const{refreshJwt:n,sessionJwt:i,sessionExpiration:a}=await c(t);if(401===(null==t?void 0:t.status))v("Received 401, canceling all timers"),s();else if(i||a){if(d=((e,t)=>{if(t)return new Date(1e3*t);v("Could not extract expiration time from session token, trying to decode the token");try{const t=o(e);if(t.exp)return new Date(1e3*t.exp)}catch(e){return null}})(i,a),!d)return void v("Could not extract expiration time from session token");g=n;const e=m(d);if(s(),e<=2e4)return void v("Session is too close to expiration, not setting refresh timer");const t=new Date(Date.now()+e).toLocaleTimeString("en-US",{hour12:!1});v(`Setting refresh timer for ${t}. (${e}ms)`),u((()=>{v("Refreshing session due to timer"),p.refresh(I()||n)}),e)}}}));return n(p,["logout","logoutAll"],(e=>async(...t)=>{const n=await e(...t);return v("Clearing all timers"),s(),n}))}),(e=>t=>e(Object.assign(Object.assign({},t),{baseHeaders:Object.assign({"x-descope-sdk-name":"web-js","x-descope-sdk-version":"1.28.0"},t.baseHeaders)}))),(e=>t=>{const o=P(),i=P(),a=P(),r=e(l(t,{afterRequest:async(e,t)=>{if(401===(null==t?void 0:t.status))i.pub(null),a.pub(null),o.pub(null);else{const e=await u(t);e&&a.pub(e);const{sessionJwt:n,sessionExpiration:r}=await c(t);n&&i.pub(n),(r||n)&&o.pub(r||42)}}})),s=n(r,["logout","logoutAll"],(e=>async(...t)=>{const n=await e(...t);return i.pub(null),a.pub(null),o.pub(null),n}));return Object.assign(s,{onSessionTokenChange:i.sub,onUserChange:a.sub,onIsAuthenticatedChange:e=>o.sub((t=>{e(!!t)}))})}),(t=>o=>{var{storeLastAuthenticatedUser:i=!0,keepLastAuthenticatedUserAfterLogout:a=!1}=o,r=e(o,["storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout"]);if(!i)return Object.assign(t(r),{getLastUserLoginId:_,getLastUserDisplayName:K});const s=t(l(r,{afterRequest:async(e,t)=>{var n;const o=await u(t),i=null===(n=null==o?void 0:o.loginIds)||void 0===n?void 0:n[0],a=null==o?void 0:o.name;i&&((e=>{g(L,e)})(i),(e=>{g(J,e)})(a))}}));let c=n(s,["flow.start"],$);return c=n(c,["logout","logoutAll"],E(a)),Object.assign(c,{getLastUserLoginId:_,getLastUserDisplayName:K})}),(t=>o=>{var{persistTokens:i,sessionTokenViaCookie:a,storagePrefix:r}=o,s=e(o,["persistTokens","sessionTokenViaCookie","storagePrefix"]);if(!i||!w)return t(s);const u=t(l(s,{beforeRequest:(d=r,e=>Object.assign(e,{token:e.token||I(d)})),afterRequest:async(t,n)=>{const o=/^\/v\d+\/mgmt\//.test(t.path);401===(null==n?void 0:n.status)?o||k(r):((t={},n,o)=>{var i,{refreshJwt:a,sessionJwt:r}=t,s=e(t,["refreshJwt","sessionJwt"]);if(void 0===n&&(n=!1),void 0===o&&(o=""),a&&g(`${o}${y}`,a),r)if(n){const e=n.sameSite||"Strict",t=null===(i=n.secure)||void 0===i||i;S(b,r,Object.assign(Object.assign({},s),{cookieSameSite:e,cookieSecure:t}))}else g(`${o}${b}`,r)})(await c(n),a,r)}}));var d;const p=n(u,["logout","logoutAll"],q(r));return Object.assign(p,{getRefreshToken:()=>I(r),getSessionToken:()=>O(r)})}))(((...e)=>{const n=t(...e);return Object.assign(Object.assign({},n),{refresh:e=>{const t=O(),o=I();return n.refresh(e,{dcs:t?"t":"f",dcr:o?"t":"f"})},flow:ee(n),webauthn:z(n),fedcm:(o=n,i=e[0].projectId,{onetap:{requestExchangeCode(e){Y(o,e)},requestAuthentication(e){Y(o,e)}},oneTap(e,t,n,i,a){Y(o,{provider:e,oneTapConfig:t,loginOptions:n,onSkipped:i,onDismissed:a})},async launch(e){var t;const n={identity:{context:e||"signin",providers:[{configURL:o.httpClient.buildUrl(i+Q.config),clientId:i}]}},a=await(null===(t=navigator.credentials)||void 0===t?void 0:t.get(n));return o.refresh(a.token)},isSupported:()=>w&&"IdentityCredential"in window,async isLoggedIn(e){var t;const n=o.httpClient.buildUrl(i+Q.config);try{const o={identity:{context:e||"signin",providers:[{configURL:n,clientId:i}]}},a=await(null===(t=navigator.credentials)||void 0===t?void 0:t.get(o));return!!a&&!!a.token}catch(e){return!1}}})});var o,i}));export{y as REFRESH_TOKEN_KEY,b as SESSION_TOKEN_KEY,C as clearFingerprintData,te as default,x as ensureFingerprintIds};
2
2
  //# sourceMappingURL=index.esm.js.map