@descope/web-js-sdk 0.0.0-alpha.0 → 0.0.0-alpha.1

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
@@ -116,6 +116,7 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
116
116
  };
117
117
  } & {
118
118
  oidcConfig?: OidcConfig;
119
+ getExternalToken?: () => Promise<string>;
119
120
  } & FingerprintOptions & AutoRefreshOptions & LastLoggedInUserOptions & PersistTokensOptions<A>) => A extends false ? (({
120
121
  refresh: (token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
121
122
  logout: (token?: string) => Promise<_descope_core_js_sdk.SdkResponse<never>>;
@@ -157,7 +158,9 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
157
158
  };
158
159
  thirdPartyAppStateId?: string;
159
160
  applicationScopes?: string;
160
- }, "tenant" | "redirectUrl" | "redirectAuth" | "oidcIdpStateId" | "samlIdpStateId" | "samlIdpUsername" | "ssoAppId" | "thirdPartyAppId" | "oidcLoginHint" | "preview" | "abTestingKey" | "client" | "locale" | "oidcPrompt" | "oidcErrorRedirectUri" | "nativeOptions" | "thirdPartyAppStateId" | "applicationScopes"> & {
161
+ outboundAppId?: string;
162
+ outboundAppScopes?: string[];
163
+ }, "tenant" | "redirectUrl" | "redirectAuth" | "oidcIdpStateId" | "samlIdpStateId" | "samlIdpUsername" | "ssoAppId" | "thirdPartyAppId" | "oidcLoginHint" | "preview" | "abTestingKey" | "client" | "locale" | "oidcPrompt" | "oidcErrorRedirectUri" | "nativeOptions" | "thirdPartyAppStateId" | "applicationScopes" | "outboundAppId" | "outboundAppScopes"> & {
161
164
  lastAuth?: Omit<{
162
165
  authMethod?: "webauthn" | "otp" | "oauth" | "saml" | "totp" | "magiclink" | "enchantedlink";
163
166
  oauthProvider?: string;
@@ -195,8 +198,8 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
195
198
  create: boolean;
196
199
  }>>;
197
200
  };
198
- update: ((identifier: string, token: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
199
- start: (loginId: string, origin: string, token: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
201
+ update: ((identifier: string, token?: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
202
+ start: (loginId: string, origin: string, token?: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
200
203
  transactionId: string;
201
204
  options: string;
202
205
  create: boolean;
@@ -211,13 +214,33 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
211
214
  };
212
215
  };
213
216
  fedcm: {
214
- oneTap(provider?: string, oneTapConfig?: OneTapConfig, loginOptions?: _descope_core_js_sdk.LoginOptions, onSkip?: (reason?: string) => void, onDismissed?: (reason?: string) => void): Promise<unknown>;
217
+ onetap: {
218
+ requestExchangeCode(options: {
219
+ provider?: string;
220
+ oneTapConfig?: OneTapConfig;
221
+ loginOptions?: _descope_core_js_sdk.LoginOptions;
222
+ onSkipped?: (reason?: string) => void;
223
+ onDismissed?: (reason?: string) => void;
224
+ onFailed?: (error: Error) => void;
225
+ onCodeReceived: (code: string) => void;
226
+ }): void;
227
+ requestAuthentication(options?: {
228
+ provider?: string;
229
+ oneTapConfig?: OneTapConfig;
230
+ loginOptions?: _descope_core_js_sdk.LoginOptions;
231
+ onSkipped?: (reason?: string) => void;
232
+ onDismissed?: (reason?: string) => void;
233
+ onFailed?: (error: Error) => void;
234
+ onAuthenticated?: (response: _descope_core_js_sdk.JWTResponse) => void;
235
+ }): void;
236
+ };
237
+ oneTap(provider?: string, oneTapConfig?: OneTapConfig, loginOptions?: _descope_core_js_sdk.LoginOptions, onSkipped?: (reason?: string) => void, onDismissed?: (reason?: string) => void): void;
215
238
  launch(context?: "signin" | "signup" | "use" | "continue"): Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
216
239
  isSupported(): boolean;
217
240
  isLoggedIn(context?: "signin" | "signup" | "use" | "continue"): Promise<boolean>;
218
241
  };
219
242
  oidc: {
220
- login: (arg?: oidc_client_ts.CreateSigninRequestArgs, disableNavigation?: boolean) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
243
+ loginWithRedirect: (arg?: oidc_client_ts.CreateSigninRequestArgs, disableNavigation?: boolean) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
221
244
  finishLogin: (url?: string) => Promise<any>;
222
245
  finishLoginIfNeed: (url?: string) => Promise<any>;
223
246
  refreshToken: (refreshToken: string) => Promise<oidc_client_ts.SigninResponse>;
@@ -582,6 +605,13 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
582
605
  exchange: (code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
583
606
  startNative: (provider: string, loginOptions?: _descope_core_js_sdk.LoginOptions, implicit?: boolean) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>;
584
607
  finishNative: (provider: string, stateId: string, user?: string, code?: string, idToken?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>;
608
+ getOneTapClientId: (provider: string) => Promise<_descope_core_js_sdk.SdkResponse<{
609
+ clientId: string;
610
+ }>>;
611
+ verifyOneTapIDToken: (provider: string, idToken: string, nonce: string, loginOptions?: _descope_core_js_sdk.LoginOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
612
+ code: string;
613
+ }>>;
614
+ exchangeOneTapIDToken: (provider: string, idToken: string, nonce: string, loginOptions?: _descope_core_js_sdk.LoginOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
585
615
  };
586
616
  saml: {
587
617
  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>>;
@@ -775,7 +805,9 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
775
805
  };
776
806
  thirdPartyAppStateId?: string;
777
807
  applicationScopes?: string;
778
- }, "tenant" | "redirectUrl" | "redirectAuth" | "oidcIdpStateId" | "samlIdpStateId" | "samlIdpUsername" | "ssoAppId" | "thirdPartyAppId" | "oidcLoginHint" | "preview" | "abTestingKey" | "client" | "locale" | "oidcPrompt" | "oidcErrorRedirectUri" | "nativeOptions" | "thirdPartyAppStateId" | "applicationScopes"> & {
808
+ outboundAppId?: string;
809
+ outboundAppScopes?: string[];
810
+ }, "tenant" | "redirectUrl" | "redirectAuth" | "oidcIdpStateId" | "samlIdpStateId" | "samlIdpUsername" | "ssoAppId" | "thirdPartyAppId" | "oidcLoginHint" | "preview" | "abTestingKey" | "client" | "locale" | "oidcPrompt" | "oidcErrorRedirectUri" | "nativeOptions" | "thirdPartyAppStateId" | "applicationScopes" | "outboundAppId" | "outboundAppScopes"> & {
779
811
  lastAuth?: Omit<{
780
812
  authMethod?: "webauthn" | "otp" | "oauth" | "saml" | "totp" | "magiclink" | "enchantedlink";
781
813
  oauthProvider?: string;
@@ -813,8 +845,8 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
813
845
  create: boolean;
814
846
  }>>;
815
847
  };
816
- update: ((identifier: string, token: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
817
- start: (loginId: string, origin: string, token: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
848
+ update: ((identifier: string, token?: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
849
+ start: (loginId: string, origin: string, token?: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
818
850
  transactionId: string;
819
851
  options: string;
820
852
  create: boolean;
@@ -829,13 +861,33 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
829
861
  };
830
862
  };
831
863
  fedcm: {
832
- oneTap(provider?: string, oneTapConfig?: OneTapConfig, loginOptions?: _descope_core_js_sdk.LoginOptions, onSkip?: (reason?: string) => void, onDismissed?: (reason?: string) => void): Promise<unknown>;
864
+ onetap: {
865
+ requestExchangeCode(options: {
866
+ provider?: string;
867
+ oneTapConfig?: OneTapConfig;
868
+ loginOptions?: _descope_core_js_sdk.LoginOptions;
869
+ onSkipped?: (reason?: string) => void;
870
+ onDismissed?: (reason?: string) => void;
871
+ onFailed?: (error: Error) => void;
872
+ onCodeReceived: (code: string) => void;
873
+ }): void;
874
+ requestAuthentication(options?: {
875
+ provider?: string;
876
+ oneTapConfig?: OneTapConfig;
877
+ loginOptions?: _descope_core_js_sdk.LoginOptions;
878
+ onSkipped?: (reason?: string) => void;
879
+ onDismissed?: (reason?: string) => void;
880
+ onFailed?: (error: Error) => void;
881
+ onAuthenticated?: (response: _descope_core_js_sdk.JWTResponse) => void;
882
+ }): void;
883
+ };
884
+ oneTap(provider?: string, oneTapConfig?: OneTapConfig, loginOptions?: _descope_core_js_sdk.LoginOptions, onSkipped?: (reason?: string) => void, onDismissed?: (reason?: string) => void): void;
833
885
  launch(context?: "signin" | "signup" | "use" | "continue"): Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
834
886
  isSupported(): boolean;
835
887
  isLoggedIn(context?: "signin" | "signup" | "use" | "continue"): Promise<boolean>;
836
888
  };
837
889
  oidc: {
838
- login: (arg?: oidc_client_ts.CreateSigninRequestArgs, disableNavigation?: boolean) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
890
+ loginWithRedirect: (arg?: oidc_client_ts.CreateSigninRequestArgs, disableNavigation?: boolean) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
839
891
  finishLogin: (url?: string) => Promise<any>;
840
892
  finishLoginIfNeed: (url?: string) => Promise<any>;
841
893
  refreshToken: (refreshToken: string) => Promise<oidc_client_ts.SigninResponse>;
@@ -1200,6 +1252,13 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
1200
1252
  exchange: (code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
1201
1253
  startNative: (provider: string, loginOptions?: _descope_core_js_sdk.LoginOptions, implicit?: boolean) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>;
1202
1254
  finishNative: (provider: string, stateId: string, user?: string, code?: string, idToken?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>;
1255
+ getOneTapClientId: (provider: string) => Promise<_descope_core_js_sdk.SdkResponse<{
1256
+ clientId: string;
1257
+ }>>;
1258
+ verifyOneTapIDToken: (provider: string, idToken: string, nonce: string, loginOptions?: _descope_core_js_sdk.LoginOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
1259
+ code: string;
1260
+ }>>;
1261
+ exchangeOneTapIDToken: (provider: string, idToken: string, nonce: string, loginOptions?: _descope_core_js_sdk.LoginOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
1203
1262
  };
1204
1263
  saml: {
1205
1264
  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>>;
@@ -1393,7 +1452,9 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
1393
1452
  };
1394
1453
  thirdPartyAppStateId?: string;
1395
1454
  applicationScopes?: string;
1396
- }, "tenant" | "redirectUrl" | "redirectAuth" | "oidcIdpStateId" | "samlIdpStateId" | "samlIdpUsername" | "ssoAppId" | "thirdPartyAppId" | "oidcLoginHint" | "preview" | "abTestingKey" | "client" | "locale" | "oidcPrompt" | "oidcErrorRedirectUri" | "nativeOptions" | "thirdPartyAppStateId" | "applicationScopes"> & {
1455
+ outboundAppId?: string;
1456
+ outboundAppScopes?: string[];
1457
+ }, "tenant" | "redirectUrl" | "redirectAuth" | "oidcIdpStateId" | "samlIdpStateId" | "samlIdpUsername" | "ssoAppId" | "thirdPartyAppId" | "oidcLoginHint" | "preview" | "abTestingKey" | "client" | "locale" | "oidcPrompt" | "oidcErrorRedirectUri" | "nativeOptions" | "thirdPartyAppStateId" | "applicationScopes" | "outboundAppId" | "outboundAppScopes"> & {
1397
1458
  lastAuth?: Omit<{
1398
1459
  authMethod?: "webauthn" | "otp" | "oauth" | "saml" | "totp" | "magiclink" | "enchantedlink";
1399
1460
  oauthProvider?: string;
@@ -1431,8 +1492,8 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
1431
1492
  create: boolean;
1432
1493
  }>>;
1433
1494
  };
1434
- update: ((identifier: string, token: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
1435
- start: (loginId: string, origin: string, token: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
1495
+ update: ((identifier: string, token?: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
1496
+ start: (loginId: string, origin: string, token?: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
1436
1497
  transactionId: string;
1437
1498
  options: string;
1438
1499
  create: boolean;
@@ -1447,13 +1508,33 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
1447
1508
  };
1448
1509
  };
1449
1510
  fedcm: {
1450
- oneTap(provider?: string, oneTapConfig?: OneTapConfig, loginOptions?: _descope_core_js_sdk.LoginOptions, onSkip?: (reason?: string) => void, onDismissed?: (reason?: string) => void): Promise<unknown>;
1511
+ onetap: {
1512
+ requestExchangeCode(options: {
1513
+ provider?: string;
1514
+ oneTapConfig?: OneTapConfig;
1515
+ loginOptions?: _descope_core_js_sdk.LoginOptions;
1516
+ onSkipped?: (reason?: string) => void;
1517
+ onDismissed?: (reason?: string) => void;
1518
+ onFailed?: (error: Error) => void;
1519
+ onCodeReceived: (code: string) => void;
1520
+ }): void;
1521
+ requestAuthentication(options?: {
1522
+ provider?: string;
1523
+ oneTapConfig?: OneTapConfig;
1524
+ loginOptions?: _descope_core_js_sdk.LoginOptions;
1525
+ onSkipped?: (reason?: string) => void;
1526
+ onDismissed?: (reason?: string) => void;
1527
+ onFailed?: (error: Error) => void;
1528
+ onAuthenticated?: (response: _descope_core_js_sdk.JWTResponse) => void;
1529
+ }): void;
1530
+ };
1531
+ oneTap(provider?: string, oneTapConfig?: OneTapConfig, loginOptions?: _descope_core_js_sdk.LoginOptions, onSkipped?: (reason?: string) => void, onDismissed?: (reason?: string) => void): void;
1451
1532
  launch(context?: "signin" | "signup" | "use" | "continue"): Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
1452
1533
  isSupported(): boolean;
1453
1534
  isLoggedIn(context?: "signin" | "signup" | "use" | "continue"): Promise<boolean>;
1454
1535
  };
1455
1536
  oidc: {
1456
- login: (arg?: oidc_client_ts.CreateSigninRequestArgs, disableNavigation?: boolean) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1537
+ loginWithRedirect: (arg?: oidc_client_ts.CreateSigninRequestArgs, disableNavigation?: boolean) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
1457
1538
  finishLogin: (url?: string) => Promise<any>;
1458
1539
  finishLoginIfNeed: (url?: string) => Promise<any>;
1459
1540
  refreshToken: (refreshToken: string) => Promise<oidc_client_ts.SigninResponse>;
@@ -1818,6 +1899,13 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
1818
1899
  exchange: (code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
1819
1900
  startNative: (provider: string, loginOptions?: _descope_core_js_sdk.LoginOptions, implicit?: boolean) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>;
1820
1901
  finishNative: (provider: string, stateId: string, user?: string, code?: string, idToken?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>;
1902
+ getOneTapClientId: (provider: string) => Promise<_descope_core_js_sdk.SdkResponse<{
1903
+ clientId: string;
1904
+ }>>;
1905
+ verifyOneTapIDToken: (provider: string, idToken: string, nonce: string, loginOptions?: _descope_core_js_sdk.LoginOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
1906
+ code: string;
1907
+ }>>;
1908
+ exchangeOneTapIDToken: (provider: string, idToken: string, nonce: string, loginOptions?: _descope_core_js_sdk.LoginOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
1821
1909
  };
1822
1910
  saml: {
1823
1911
  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>>;
@@ -2018,7 +2106,9 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
2018
2106
  };
2019
2107
  thirdPartyAppStateId?: string;
2020
2108
  applicationScopes?: string;
2021
- }, "tenant" | "redirectUrl" | "redirectAuth" | "oidcIdpStateId" | "samlIdpStateId" | "samlIdpUsername" | "ssoAppId" | "thirdPartyAppId" | "oidcLoginHint" | "preview" | "abTestingKey" | "client" | "locale" | "oidcPrompt" | "oidcErrorRedirectUri" | "nativeOptions" | "thirdPartyAppStateId" | "applicationScopes"> & {
2109
+ outboundAppId?: string;
2110
+ outboundAppScopes?: string[];
2111
+ }, "tenant" | "redirectUrl" | "redirectAuth" | "oidcIdpStateId" | "samlIdpStateId" | "samlIdpUsername" | "ssoAppId" | "thirdPartyAppId" | "oidcLoginHint" | "preview" | "abTestingKey" | "client" | "locale" | "oidcPrompt" | "oidcErrorRedirectUri" | "nativeOptions" | "thirdPartyAppStateId" | "applicationScopes" | "outboundAppId" | "outboundAppScopes"> & {
2022
2112
  lastAuth?: Omit<{
2023
2113
  authMethod?: "webauthn" | "otp" | "oauth" | "saml" | "totp" | "magiclink" | "enchantedlink";
2024
2114
  oauthProvider?: string;
@@ -2056,8 +2146,8 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
2056
2146
  create: boolean;
2057
2147
  }>>;
2058
2148
  };
2059
- update: ((identifier: string, token: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
2060
- start: (loginId: string, origin: string, token: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
2149
+ update: ((identifier: string, token?: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
2150
+ start: (loginId: string, origin: string, token?: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
2061
2151
  transactionId: string;
2062
2152
  options: string;
2063
2153
  create: boolean;
@@ -2072,13 +2162,33 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
2072
2162
  };
2073
2163
  };
2074
2164
  fedcm: {
2075
- oneTap(provider?: string, oneTapConfig?: OneTapConfig, loginOptions?: _descope_core_js_sdk.LoginOptions, onSkip?: (reason?: string) => void, onDismissed?: (reason?: string) => void): Promise<unknown>;
2165
+ onetap: {
2166
+ requestExchangeCode(options: {
2167
+ provider?: string;
2168
+ oneTapConfig?: OneTapConfig;
2169
+ loginOptions?: _descope_core_js_sdk.LoginOptions;
2170
+ onSkipped?: (reason?: string) => void;
2171
+ onDismissed?: (reason?: string) => void;
2172
+ onFailed?: (error: Error) => void;
2173
+ onCodeReceived: (code: string) => void;
2174
+ }): void;
2175
+ requestAuthentication(options?: {
2176
+ provider?: string;
2177
+ oneTapConfig?: OneTapConfig;
2178
+ loginOptions?: _descope_core_js_sdk.LoginOptions;
2179
+ onSkipped?: (reason?: string) => void;
2180
+ onDismissed?: (reason?: string) => void;
2181
+ onFailed?: (error: Error) => void;
2182
+ onAuthenticated?: (response: _descope_core_js_sdk.JWTResponse) => void;
2183
+ }): void;
2184
+ };
2185
+ oneTap(provider?: string, oneTapConfig?: OneTapConfig, loginOptions?: _descope_core_js_sdk.LoginOptions, onSkipped?: (reason?: string) => void, onDismissed?: (reason?: string) => void): void;
2076
2186
  launch(context?: "signin" | "signup" | "use" | "continue"): Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
2077
2187
  isSupported(): boolean;
2078
2188
  isLoggedIn(context?: "signin" | "signup" | "use" | "continue"): Promise<boolean>;
2079
2189
  };
2080
2190
  oidc: {
2081
- login: (arg?: oidc_client_ts.CreateSigninRequestArgs, disableNavigation?: boolean) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
2191
+ loginWithRedirect: (arg?: oidc_client_ts.CreateSigninRequestArgs, disableNavigation?: boolean) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
2082
2192
  finishLogin: (url?: string) => Promise<any>;
2083
2193
  finishLoginIfNeed: (url?: string) => Promise<any>;
2084
2194
  refreshToken: (refreshToken: string) => Promise<oidc_client_ts.SigninResponse>;
@@ -2443,6 +2553,13 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
2443
2553
  exchange: (code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
2444
2554
  startNative: (provider: string, loginOptions?: _descope_core_js_sdk.LoginOptions, implicit?: boolean) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>;
2445
2555
  finishNative: (provider: string, stateId: string, user?: string, code?: string, idToken?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>;
2556
+ getOneTapClientId: (provider: string) => Promise<_descope_core_js_sdk.SdkResponse<{
2557
+ clientId: string;
2558
+ }>>;
2559
+ verifyOneTapIDToken: (provider: string, idToken: string, nonce: string, loginOptions?: _descope_core_js_sdk.LoginOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
2560
+ code: string;
2561
+ }>>;
2562
+ exchangeOneTapIDToken: (provider: string, idToken: string, nonce: string, loginOptions?: _descope_core_js_sdk.LoginOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
2446
2563
  };
2447
2564
  saml: {
2448
2565
  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>>;
@@ -2636,7 +2753,9 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
2636
2753
  };
2637
2754
  thirdPartyAppStateId?: string;
2638
2755
  applicationScopes?: string;
2639
- }, "tenant" | "redirectUrl" | "redirectAuth" | "oidcIdpStateId" | "samlIdpStateId" | "samlIdpUsername" | "ssoAppId" | "thirdPartyAppId" | "oidcLoginHint" | "preview" | "abTestingKey" | "client" | "locale" | "oidcPrompt" | "oidcErrorRedirectUri" | "nativeOptions" | "thirdPartyAppStateId" | "applicationScopes"> & {
2756
+ outboundAppId?: string;
2757
+ outboundAppScopes?: string[];
2758
+ }, "tenant" | "redirectUrl" | "redirectAuth" | "oidcIdpStateId" | "samlIdpStateId" | "samlIdpUsername" | "ssoAppId" | "thirdPartyAppId" | "oidcLoginHint" | "preview" | "abTestingKey" | "client" | "locale" | "oidcPrompt" | "oidcErrorRedirectUri" | "nativeOptions" | "thirdPartyAppStateId" | "applicationScopes" | "outboundAppId" | "outboundAppScopes"> & {
2640
2759
  lastAuth?: Omit<{
2641
2760
  authMethod?: "webauthn" | "otp" | "oauth" | "saml" | "totp" | "magiclink" | "enchantedlink";
2642
2761
  oauthProvider?: string;
@@ -2674,8 +2793,8 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
2674
2793
  create: boolean;
2675
2794
  }>>;
2676
2795
  };
2677
- update: ((identifier: string, token: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
2678
- start: (loginId: string, origin: string, token: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
2796
+ update: ((identifier: string, token?: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
2797
+ start: (loginId: string, origin: string, token?: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
2679
2798
  transactionId: string;
2680
2799
  options: string;
2681
2800
  create: boolean;
@@ -2690,13 +2809,33 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
2690
2809
  };
2691
2810
  };
2692
2811
  fedcm: {
2693
- oneTap(provider?: string, oneTapConfig?: OneTapConfig, loginOptions?: _descope_core_js_sdk.LoginOptions, onSkip?: (reason?: string) => void, onDismissed?: (reason?: string) => void): Promise<unknown>;
2812
+ onetap: {
2813
+ requestExchangeCode(options: {
2814
+ provider?: string;
2815
+ oneTapConfig?: OneTapConfig;
2816
+ loginOptions?: _descope_core_js_sdk.LoginOptions;
2817
+ onSkipped?: (reason?: string) => void;
2818
+ onDismissed?: (reason?: string) => void;
2819
+ onFailed?: (error: Error) => void;
2820
+ onCodeReceived: (code: string) => void;
2821
+ }): void;
2822
+ requestAuthentication(options?: {
2823
+ provider?: string;
2824
+ oneTapConfig?: OneTapConfig;
2825
+ loginOptions?: _descope_core_js_sdk.LoginOptions;
2826
+ onSkipped?: (reason?: string) => void;
2827
+ onDismissed?: (reason?: string) => void;
2828
+ onFailed?: (error: Error) => void;
2829
+ onAuthenticated?: (response: _descope_core_js_sdk.JWTResponse) => void;
2830
+ }): void;
2831
+ };
2832
+ oneTap(provider?: string, oneTapConfig?: OneTapConfig, loginOptions?: _descope_core_js_sdk.LoginOptions, onSkipped?: (reason?: string) => void, onDismissed?: (reason?: string) => void): void;
2694
2833
  launch(context?: "signin" | "signup" | "use" | "continue"): Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
2695
2834
  isSupported(): boolean;
2696
2835
  isLoggedIn(context?: "signin" | "signup" | "use" | "continue"): Promise<boolean>;
2697
2836
  };
2698
2837
  oidc: {
2699
- login: (arg?: oidc_client_ts.CreateSigninRequestArgs, disableNavigation?: boolean) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
2838
+ loginWithRedirect: (arg?: oidc_client_ts.CreateSigninRequestArgs, disableNavigation?: boolean) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
2700
2839
  finishLogin: (url?: string) => Promise<any>;
2701
2840
  finishLoginIfNeed: (url?: string) => Promise<any>;
2702
2841
  refreshToken: (refreshToken: string) => Promise<oidc_client_ts.SigninResponse>;
@@ -3061,6 +3200,13 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
3061
3200
  exchange: (code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
3062
3201
  startNative: (provider: string, loginOptions?: _descope_core_js_sdk.LoginOptions, implicit?: boolean) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>;
3063
3202
  finishNative: (provider: string, stateId: string, user?: string, code?: string, idToken?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>;
3203
+ getOneTapClientId: (provider: string) => Promise<_descope_core_js_sdk.SdkResponse<{
3204
+ clientId: string;
3205
+ }>>;
3206
+ verifyOneTapIDToken: (provider: string, idToken: string, nonce: string, loginOptions?: _descope_core_js_sdk.LoginOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
3207
+ code: string;
3208
+ }>>;
3209
+ exchangeOneTapIDToken: (provider: string, idToken: string, nonce: string, loginOptions?: _descope_core_js_sdk.LoginOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
3064
3210
  };
3065
3211
  saml: {
3066
3212
  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>>;
@@ -3254,7 +3400,9 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
3254
3400
  };
3255
3401
  thirdPartyAppStateId?: string;
3256
3402
  applicationScopes?: string;
3257
- }, "tenant" | "redirectUrl" | "redirectAuth" | "oidcIdpStateId" | "samlIdpStateId" | "samlIdpUsername" | "ssoAppId" | "thirdPartyAppId" | "oidcLoginHint" | "preview" | "abTestingKey" | "client" | "locale" | "oidcPrompt" | "oidcErrorRedirectUri" | "nativeOptions" | "thirdPartyAppStateId" | "applicationScopes"> & {
3403
+ outboundAppId?: string;
3404
+ outboundAppScopes?: string[];
3405
+ }, "tenant" | "redirectUrl" | "redirectAuth" | "oidcIdpStateId" | "samlIdpStateId" | "samlIdpUsername" | "ssoAppId" | "thirdPartyAppId" | "oidcLoginHint" | "preview" | "abTestingKey" | "client" | "locale" | "oidcPrompt" | "oidcErrorRedirectUri" | "nativeOptions" | "thirdPartyAppStateId" | "applicationScopes" | "outboundAppId" | "outboundAppScopes"> & {
3258
3406
  lastAuth?: Omit<{
3259
3407
  authMethod?: "webauthn" | "otp" | "oauth" | "saml" | "totp" | "magiclink" | "enchantedlink";
3260
3408
  oauthProvider?: string;
@@ -3292,8 +3440,8 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
3292
3440
  create: boolean;
3293
3441
  }>>;
3294
3442
  };
3295
- update: ((identifier: string, token: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
3296
- start: (loginId: string, origin: string, token: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
3443
+ update: ((identifier: string, token?: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
3444
+ start: (loginId: string, origin: string, token?: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
3297
3445
  transactionId: string;
3298
3446
  options: string;
3299
3447
  create: boolean;
@@ -3308,13 +3456,33 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
3308
3456
  };
3309
3457
  };
3310
3458
  fedcm: {
3311
- oneTap(provider?: string, oneTapConfig?: OneTapConfig, loginOptions?: _descope_core_js_sdk.LoginOptions, onSkip?: (reason?: string) => void, onDismissed?: (reason?: string) => void): Promise<unknown>;
3459
+ onetap: {
3460
+ requestExchangeCode(options: {
3461
+ provider?: string;
3462
+ oneTapConfig?: OneTapConfig;
3463
+ loginOptions?: _descope_core_js_sdk.LoginOptions;
3464
+ onSkipped?: (reason?: string) => void;
3465
+ onDismissed?: (reason?: string) => void;
3466
+ onFailed?: (error: Error) => void;
3467
+ onCodeReceived: (code: string) => void;
3468
+ }): void;
3469
+ requestAuthentication(options?: {
3470
+ provider?: string;
3471
+ oneTapConfig?: OneTapConfig;
3472
+ loginOptions?: _descope_core_js_sdk.LoginOptions;
3473
+ onSkipped?: (reason?: string) => void;
3474
+ onDismissed?: (reason?: string) => void;
3475
+ onFailed?: (error: Error) => void;
3476
+ onAuthenticated?: (response: _descope_core_js_sdk.JWTResponse) => void;
3477
+ }): void;
3478
+ };
3479
+ oneTap(provider?: string, oneTapConfig?: OneTapConfig, loginOptions?: _descope_core_js_sdk.LoginOptions, onSkipped?: (reason?: string) => void, onDismissed?: (reason?: string) => void): void;
3312
3480
  launch(context?: "signin" | "signup" | "use" | "continue"): Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
3313
3481
  isSupported(): boolean;
3314
3482
  isLoggedIn(context?: "signin" | "signup" | "use" | "continue"): Promise<boolean>;
3315
3483
  };
3316
3484
  oidc: {
3317
- login: (arg?: oidc_client_ts.CreateSigninRequestArgs, disableNavigation?: boolean) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
3485
+ loginWithRedirect: (arg?: oidc_client_ts.CreateSigninRequestArgs, disableNavigation?: boolean) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
3318
3486
  finishLogin: (url?: string) => Promise<any>;
3319
3487
  finishLoginIfNeed: (url?: string) => Promise<any>;
3320
3488
  refreshToken: (refreshToken: string) => Promise<oidc_client_ts.SigninResponse>;
@@ -3679,6 +3847,13 @@ declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPe
3679
3847
  exchange: (code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
3680
3848
  startNative: (provider: string, loginOptions?: _descope_core_js_sdk.LoginOptions, implicit?: boolean) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>;
3681
3849
  finishNative: (provider: string, stateId: string, user?: string, code?: string, idToken?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>;
3850
+ getOneTapClientId: (provider: string) => Promise<_descope_core_js_sdk.SdkResponse<{
3851
+ clientId: string;
3852
+ }>>;
3853
+ verifyOneTapIDToken: (provider: string, idToken: string, nonce: string, loginOptions?: _descope_core_js_sdk.LoginOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
3854
+ code: string;
3855
+ }>>;
3856
+ exchangeOneTapIDToken: (provider: string, idToken: string, nonce: string, loginOptions?: _descope_core_js_sdk.LoginOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
3682
3857
  };
3683
3858
  saml: {
3684
3859
  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 e}from"tslib";import{jwtDecode as t}from"jwt-decode";import n,{wrapWith as o}from"@descope/core-js-sdk";import i from"js-cookie";import{load as r,defaultEndpoint as s,defaultScriptUrlPattern as a}from"@fingerprintjs/fingerprintjs-pro";const c=e=>{try{return t(e).exp}catch(e){return null}},l=e=>{const{refresh_expire_in:t,refresh_token:n}=e;return t?Math.floor(Date.now()/1e3)+t:c(n)},u=e=>{const{expires_in:t,expires_at:n,access_token:o}=e;return n||(t?Math.floor(Date.now()/1e3)+t:o?c(o):void 0)},d=(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},g=async t=>{if(!(null==t?void 0:t.ok))return{};const n=await(null==t?void 0:t.clone().json());return(t=>{const{access_token:n,id_token:o,refresh_token:i,refresh_expire_in:r}=t,s=e(t,["access_token","id_token","refresh_token","refresh_expire_in"]);return Object.assign({sessionJwt:t.sessionJwt||n,idToken:o,refreshJwt:t.refreshJwt||i,sessionExpiration:t.sessionExpiration||u(t),cookieExpiration:t.cookieExpiration||l(t)},s)})((null==n?void 0:n.authInfo)||n||{})},p=async e=>{const t=await g(e);return(null==t?void 0:t.user)||((null==t?void 0:t.hasOwnProperty("userId"))?t:void 0)},f="undefined"!=typeof localStorage,w=(e,t)=>f&&(null===localStorage||void 0===localStorage?void 0:localStorage.setItem(e,t)),h=e=>f&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem(e)),v=e=>f&&(null===localStorage||void 0===localStorage?void 0:localStorage.removeItem(e)),m=(...e)=>{console.debug(...e)},y="3.2.0",b="undefined"!=typeof window,S=Math.pow(2,31)-1,k=`https://descopecdn.com/npm/oidc-client-ts@${y}/dist/browser/oidc-client-ts.min.js`,_=`https://cdn.jsdelivr.net/npm/oidc-client-ts@${y}/dist/browser/oidc-client-ts.min.js`,I=e=>{let t=((n=e)?n.getTime()-(new Date).getTime():0)-2e4;var n;return t>S&&(m(`Timeout is too large (${t}ms), setting it to ${S}ms`),t=S),t},O="DS",U="DSR",j="DSI";function x(e,t,n){if(t){const{cookieDomain:o,cookiePath:r,cookieSameSite:s,cookieExpiration:a,cookieSecure:c}=n,l=new Date(1e3*a),u=function(e){const t=window.location.hostname.split("."),n=e.split(".");return t.slice(-n.length).join(".")===e}(o);i.set(e,t,{path:r,domain:u?o:void 0,expires:l,sameSite:s,secure:c})}}function C(e=""){return h(`${e}${U}`)||""}function R(e=""){return i.get(O)||h(`${e}${O}`)||""}function D(e=""){return h(`${e}${j}`)||""}function A(e=""){v(`${e}${U}`),v(`${e}${O}`),v(`${e}${j}`),i.remove(O)}const J=b&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem("fingerprint.endpoint.url"))||"https://api.descope.com",L="vsid",T="vrid",$="fp",K=(e=!1)=>{const t=localStorage.getItem($);if(!t)return null;const n=JSON.parse(t);return(new Date).getTime()>n.expiry&&!e?null:n.value},E=async(e,t=J)=>{try{if(K())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 c=i.toString()+"?apiKey=<apiKey>&version=<version>&loaderVersion=<loaderVersion>",l=r({apiKey:e,endpoint:[o.toString(),s],scriptUrlPattern:[c,a]}),u=await l,{requestId:d}=await u.get({linkedId:n}),g=((e,t)=>({[L]:e,[T]:t}))(n,d);(e=>{const t={value:e,expiry:(new Date).getTime()+864e5};localStorage.setItem($,JSON.stringify(t))})(g)}catch(e){console.warn("Could not load fingerprint",e)}},P=()=>{localStorage.removeItem($)},N=e=>{const t=K(!0);return t&&e.body&&(e.body.fpData=t),e},q="dls_last_user_login_id",V="dls_last_user_display_name",M=()=>h(q),H=()=>h(V),G=e=>async(...t)=>{var n;t[1]=t[1]||{};const[,o={}]=t,i=M(),r=H();i&&(null!==(n=o.lastAuth)&&void 0!==n||(o.lastAuth={}),o.lastAuth.loginId=i,o.lastAuth.name=r);return await e(...t)},B=e=>t=>async(...n)=>{const o=await t(...n);return e||(v(q),v(V)),o};function F(){const e=[];return{pub:t=>{e.forEach((e=>e(t)))},sub:t=>{const n=e.push(t)-1;return()=>e.splice(n,1)}}}const Z=e=>t=>async(...n)=>{const o=await t(...n);return A(e),o};async function W(e){const t=function(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=te(n.publicKey.challenge),n.publicKey.user.id=te(n.publicKey.user.id),null===(t=n.publicKey.excludeCredentials)||void 0===t||t.forEach((e=>{e.id=te(e.id)})),n}(e),n=await navigator.credentials.create(t);return o=n,JSON.stringify({id:o.id,rawId:ne(o.rawId),type:o.type,response:{attestationObject:ne(o.response.attestationObject),clientDataJSON:ne(o.response.clientDataJSON)}});var o}async function X(e){const t=Y(e);return ee(await navigator.credentials.get(t))}async function z(e,t){const n=Y(e);n.signal=t.signal,n.mediation="conditional";return ee(await navigator.credentials.get(n))}async function Q(e=!1){if(!b)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 Y(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=te(n.publicKey.challenge),null===(t=n.publicKey.allowCredentials)||void 0===t||t.forEach((e=>{e.id=te(e.id)})),n}function ee(e){return JSON.stringify({id:e.id,rawId:ne(e.rawId),type:e.type,response:{authenticatorData:ne(e.response.authenticatorData),clientDataJSON:ne(e.response.clientDataJSON),signature:ne(e.response.signature),userHandle:e.response.userHandle?ne(e.response.userHandle):void 0}})}function te(e){const t=e.replace(/_/g,"/").replace(/-/g,"+");return Uint8Array.from(atob(t),(e=>e.charCodeAt(0))).buffer}function ne(e){return btoa(String.fromCharCode.apply(null,new Uint8Array(e))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}var oe,ie=(oe=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 r=await W(i.data.options);return await e.webauthn.signUp.finish(i.data.transactionId,r)},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 X(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 W(i.data.options);return await e.webauthn.signUp.finish(i.data.transactionId,t)}{const t=await X(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 r=await W(i.data.options);return await e.webauthn.update.finish(i.data.transactionId,r)},helpers:{create:W,get:X,isSupported:Q,conditional:z}}),(...e)=>{const t=oe(...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 re={config:"/fedcm/config"},se=(e,t)=>({async oneTap(t,n,o,i,r){const s=null!=t?t:"google",a=await e.oauth.startNative(s,o,!0);if(!a.ok)return a;const{clientId:c,stateId:l,nonce:u}=a.data,d=await async function(){return new Promise(((e,t)=>{if(window.google)return void e(window.google.accounts.id);let n=document.getElementById("google-gsi-client-script");n||(n=document.createElement("script"),document.head.appendChild(n),n.async=!0,n.defer=!0,n.id="google-gsi-client-script",n.src="https://accounts.google.com/gsi/client"),n.onload=function(){window.google?e(window.google.accounts.id):t("Failed to load Google GSI client script - not loaded properly")},n.onerror=function(){t("Failed to load Google GSI client script - failed to load")}}))}();return new Promise((t=>{var o,a;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===(a=null==n?void 0:n.use_fedcm_for_prompt)||void 0===a||a,client_id:c,callback:n=>{t(e.oauth.finishNative(s,l,"","",n.credential))},nonce:u})),d.prompt((e=>{var t,n;if(r&&(null==e?void 0:e.isDismissedMoment())){const n=null===(t=e.getDismissedReason)||void 0===t?void 0:t.call(e);null==r||r(n)}else if(i&&(null==e?void 0:e.isSkippedMoment())){const t=null===(n=e.getSkippedReason)||void 0===n?void 0:n.call(e);null==i||i(t)}else;}))}))},async launch(n){var o;const i={identity:{context:n||"signin",providers:[{configURL:e.httpClient.buildUrl(t+re.config),clientId:t}]}},r=await(null===(o=navigator.credentials)||void 0===o?void 0:o.get(i));return e.refresh(r.token)},isSupported:()=>b&&"IdentityCredential"in window,async isLoggedIn(n){var o;const i=e.httpClient.buildUrl(t+re.config);try{const e={identity:{context:n||"signin",providers:[{configURL:i,clientId:t}]}},r=await(null===(o=navigator.credentials)||void 0===o?void 0:o.get(e));return!!r&&!!r.token}catch(e){return!1}}});var ae=e=>Object.assign(Object.assign({},e.flow),{start:async(...t)=>{const n=await Q(),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 ce=()=>window.location.search.includes("code")&&window.location.search.includes("state");let le;const ue=(e,t)=>new Promise(((n,o)=>{if(!e.length)return o(new Error("No URLs provided to loadScriptWithFallback"));const i=t();if(i)return n(i);const r=e.shift(),s=document.createElement("script");s.src=r,s.id=(e=>{let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return Math.abs(t).toString(16)})(r),s.onload=()=>{const e=t();if(e)return n(e);throw new Error("Could not get entry after loading script from URL")},s.addEventListener("error",(()=>{ue(e,t),s.setAttribute("data-error","true")})),document.body.appendChild(s)}));const de=async(e,t,n)=>{le||(le=(async()=>{try{return import("oidc-client-ts")}catch(e){return ue([k,_],(()=>window.oidc))}})());const{OidcClient:o,WebStorageStateStore:i}=await le;if(!o)throw new Error("oidc-client-ts is not installed. Please install it by running `npm install oidc-client-ts`");const r=t,s=(null==n?void 0:n.redirectUri)||window.location.href,a=(null==n?void 0:n.scope)||"openid email roles descope.custom_claims offline_access",c=`${r}_user`;let l=e.httpClient.buildUrl(t);(null==n?void 0:n.applicationId)&&(l=`${l}/${n.applicationId}`);const u={authority:l,client_id:t,redirect_uri:s,response_type:"code",scope:a,stateStore:new i({store:window.localStorage,prefix:r}),loadUserInfo:!0,fetchRequestCredentials:"same-origin"};return(null==n?void 0:n.redirectUri)&&(u.redirect_uri=n.redirectUri),(null==n?void 0:n.scope)&&(u.scope=n.scope),{client:new o(u),stateUserKey:c}},ge=(e,t,n)=>{const o=async()=>{let o,i;return o&&i||({client:o,stateUserKey:i}=await de(e,t,n)),{client:o,stateUserKey:i}},i=async(t="")=>{var n;const{client:i,stateUserKey:r}=await o(),s=await i.processSigninResponse(t||window.location.href);var a;return await(null===(n=e.httpClient.hooks)||void 0===n?void 0:n.afterRequest({},new Response(JSON.stringify(s)))),window.localStorage.setItem(r,JSON.stringify({id_token:(a=s).id_token,session_state:a.session_state,profile:a.profile})),(()=>{const e=new URL(window.location.href);e.searchParams.delete("code"),e.searchParams.delete("state"),window.history.replaceState({},document.title,e.toString())})(),s};return{login:async(e={},t=!1)=>{const{client:n}=await o(),i=await n.createSigninRequest(e),{url:r}=i;return t||(window.location.href=r),{ok:!0,data:i}},finishLogin:i,finishLoginIfNeed:async(e="")=>{if(ce())return await i(e)},refreshToken:async t=>{var n;const{client:i,stateUserKey:r}=await o(),s=(e=>{const t=window.localStorage.getItem(e);return t?JSON.parse(t):null})(r);if(!s)throw new Error("User not found in storage to refresh token");let a=t;if(!a){const t={};e.httpClient.hooks.beforeRequest(t),a=t.token}const c=await i.useRefreshToken({state:{refresh_token:a,session_state:s.session_state,profile:s.profile}});return await(null===(n=e.httpClient.hooks)||void 0===n?void 0:n.afterRequest({},new Response(JSON.stringify(c)))),c},logout:async(e,t=!1)=>{const{client:n,stateUserKey:i}=await o();e||(e={}),e.id_token_hint=e.id_token_hint||D(),e.post_logout_redirect_uri=e.post_logout_redirect_uri||window.location.href;const r=await n.createSignoutRequest(e),{url:s}=r;return window.localStorage.removeItem(i),t||window.location.replace(s),r}}},pe=function(...e){return t=>e.reduce(((e,t)=>t(e)),t)}((t=>n=>{var{fpKey:o,fpLoad:i}=n,r=e(n,["fpKey","fpLoad"]);return b?(o&&i&&E(o).catch((()=>null)),t(d(r,{beforeRequest:N}))):t(r)}),(n=>i=>{var{autoRefresh:r}=i,s=e(i,["autoRefresh"]);if(!r)return n(s);const{clearAllTimers:a,setTimer:c}=(()=>{const e=[];return{clearAllTimers:()=>{for(;e.length;)clearTimeout(e.pop())},setTimer:(t,n)=>{e.push(setTimeout(t,n))}}})();let l,u;b&&document.addEventListener("visibilitychange",(()=>{"visible"===document.visibilityState&&l&&new Date>l&&(m("Expiration time passed, refreshing session"),p.refresh(C()||u))}));const p=n(d(s,{afterRequest:async(e,n)=>{const{sessionJwt:o,refreshJwt:i,sessionExpiration:r}=await g(n);if(401===(null==n?void 0:n.status))m("Received 401, canceling all timers"),a();else if(o||r){if(l=((e,n)=>{if(n)return new Date(1e3*n);m("Could not extract expiration time from session token, trying to decode the token");try{const n=t(e);if(n.exp)return new Date(1e3*n.exp)}catch(e){return null}})(o,r),!l)return void m("Could not extract expiration time from session token");u=i;const e=I(l);if(a(),e<=2e4)return void m("Session is too close to expiration, not setting refresh timer");const n=new Date(Date.now()+e).toLocaleTimeString("en-US",{hour12:!1});m(`Setting refresh timer for ${n}. (${e}ms)`),c((()=>{m("Refreshing session due to timer"),p.refresh(C()||i)}),e)}}}));return o(p,["logout","logoutAll","oidc.logout"],(e=>async(...t)=>{const n=await e(...t);return m("Clearing all timers"),a(),n}))}),(e=>t=>e(Object.assign(Object.assign({},t),{baseHeaders:Object.assign({"x-descope-sdk-name":"web-js","x-descope-sdk-version":"1.27.1"},t.baseHeaders)}))),(e=>t=>{const n=F(),i=F(),r=F(),s=e(d(t,{afterRequest:async(e,t)=>{if(401===(null==t?void 0:t.status))i.pub(null),r.pub(null),n.pub(null);else{const e=await p(t);e&&r.pub(e);const{sessionJwt:o,sessionExpiration:s}=await g(t);o&&i.pub(o),(s||o)&&n.pub(s||42)}}})),a=o(s,["logout","logoutAll","oidc.logout"],(e=>async(...t)=>{const o=await e(...t);return i.pub(null),r.pub(null),n.pub(null),o}));return Object.assign(a,{onSessionTokenChange:i.sub,onUserChange:r.sub,onIsAuthenticatedChange:e=>n.sub((t=>{e(!!t)}))})}),(t=>n=>{var{storeLastAuthenticatedUser:i=!0,keepLastAuthenticatedUserAfterLogout:r=!1}=n,s=e(n,["storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout"]);if(!i)return Object.assign(t(s),{getLastUserLoginId:M,getLastUserDisplayName:H});const a=t(d(s,{afterRequest:async(e,t)=>{var n;const o=await p(t),i=null===(n=null==o?void 0:o.loginIds)||void 0===n?void 0:n[0],r=null==o?void 0:o.name;i&&((e=>{w(q,e)})(i),(e=>{w(V,e)})(r))}}));let c=o(a,["flow.start"],G);return c=o(c,["logout","logoutAll"],B(r)),Object.assign(c,{getLastUserLoginId:M,getLastUserDisplayName:H})}),(t=>n=>{var{persistTokens:i,sessionTokenViaCookie:r,storagePrefix:s}=n,a=e(n,["persistTokens","sessionTokenViaCookie","storagePrefix"]);if(!i||!b)return t(a);const c=t(d(a,{beforeRequest:(l=s,e=>Object.assign(e,{token:e.token||C(l)})),afterRequest:async(e,t)=>{const n=/^\/v\d+\/mgmt\//.test(e.path);401===(null==t?void 0:t.status)?n||A(s):((e={},t=!1,n="")=>{var o;const{sessionJwt:i,refreshJwt:r}=e;if(r&&w(`${n}${U}`,r),i)if(t){const n=t.sameSite||"Strict",r=null===(o=t.secure)||void 0===o||o;x(O,i,Object.assign(Object.assign({},e),{cookieSameSite:n,cookieSecure:r}))}else w(`${n}${O}`,i);e.idToken&&w(`${n}${j}`,e.idToken)})(await g(t),r,s)}}));var l;const u=o(c,["logout","logoutAll","oidc.logout"],Z(s));return Object.assign(u,{getRefreshToken:()=>C(s),getSessionToken:()=>R(s),getIdToken:()=>D(s)})}))((e=>{const t=n(e),o=ge(t,e.projectId,e.oidcConfig);return Object.assign(Object.assign({},t),{refresh:async n=>{if(e.oidcConfig)try{await o.refreshToken(n);return Promise.resolve({ok:!0})}catch(e){return Promise.resolve({ok:!1,error:{errorCode:"J161001",errorDescription:e.toString()}})}const i=R(),r=C();return t.refresh(n,{dcs:i?"t":"f",dcr:r?"t":"f"})},logout:async n=>{if(e.oidcConfig)try{return await o.logout({id_token_hint:n}),Promise.resolve({ok:!0})}catch(e){return Promise.resolve({ok:!1,error:{errorCode:"J161000",errorDescription:e.toString()}})}return t.logout(n)},flow:ae(t),webauthn:ie(t),fedcm:se(t,e.projectId),oidc:o})}));export{U as REFRESH_TOKEN_KEY,O as SESSION_TOKEN_KEY,P as clearFingerprintData,pe as default,E as ensureFingerprintIds,ce as hasOidcParamsInUrl};
1
+ import{__rest as e}from"tslib";import{jwtDecode as t}from"jwt-decode";import n,{wrapWith as o}from"@descope/core-js-sdk";import i from"js-cookie";import{load as r,defaultEndpoint as a,defaultScriptUrlPattern as s}from"@fingerprintjs/fingerprintjs-pro";const l=e=>{try{return t(e).exp}catch(e){return null}},c=e=>{const{refresh_expire_in:t,refresh_token:n}=e;return t?Math.floor(Date.now()/1e3)+t:l(n)},d=e=>{const{expires_in:t,expires_at:n,access_token:o}=e;return n||(t?Math.floor(Date.now()/1e3)+t:o?l(o):void 0)},u=(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},g=async t=>{if(!(null==t?void 0:t.ok))return{};const n=await(null==t?void 0:t.clone().json());return(t=>{const{access_token:n,id_token:o,refresh_token:i,refresh_expire_in:r}=t,a=e(t,["access_token","id_token","refresh_token","refresh_expire_in"]);return Object.assign({sessionJwt:t.sessionJwt||n,idToken:o,refreshJwt:t.refreshJwt||i,sessionExpiration:t.sessionExpiration||d(t),cookieExpiration:t.cookieExpiration||c(t)},a)})((null==n?void 0:n.authInfo)||n||{})},p=async e=>{const t=await g(e);return(null==t?void 0:t.user)||((null==t?void 0:t.hasOwnProperty("userId"))?t:void 0)},f="undefined"!=typeof localStorage,w=(e,t)=>f&&(null===localStorage||void 0===localStorage?void 0:localStorage.setItem(e,t)),h=e=>f&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem(e)),v=e=>f&&(null===localStorage||void 0===localStorage?void 0:localStorage.removeItem(e)),m=(...e)=>{console.debug(...e)},y="3.2.0",b="undefined"!=typeof window,S=Math.pow(2,31)-1,k=`https://descopecdn.com/npm/oidc-client-ts@${y}/dist/browser/oidc-client-ts.min.js`,I=`https://cdn.jsdelivr.net/npm/oidc-client-ts@${y}/dist/browser/oidc-client-ts.min.js`,_=e=>{let t=((n=e)?n.getTime()-(new Date).getTime():0)-2e4;var n;return t>S&&(m(`Timeout is too large (${t}ms), setting it to ${S}ms`),t=S),t},O="DS",U="DSR",x="DSI";function j(e,t,n,o=void 0){var r,a;if(t){const{cookieDomain:s,cookiePath:l,cookieSameSite:c,cookieExpiration:d,cookieSecure:u}=n,g=new Date(1e3*d),p=function(e){const t=window.location.hostname.split("."),n=e.split(".");return t.slice(-n.length).join(".")===e}(s);null===(r=null==o?void 0:o.debug)||void 0===r||r.call(o,"Setting session cookie",{authInfo:n,domainMatches:p,expires:g}),i.set(e,t,{path:l,domain:p?s:void 0,expires:g,sameSite:c,secure:u});const f=i.get(e);f!==t&&(null===(a=null==o?void 0:o.warn)||void 0===a||a.call(o,"Failed to set cookie",{currentSessionSuffix:null==f?void 0:f.slice(-10),requestSessionSuffix:t.slice(-10)}))}}function C(e=""){return h(`${e}${U}`)||""}function R(e=""){return i.get(O)||h(`${e}${O}`)||""}function T(e=""){return h(`${e}${x}`)||""}function D(e=""){v(`${e}${U}`),v(`${e}${O}`),v(`${e}${x}`),i.remove(O)}const A=b&&(null===localStorage||void 0===localStorage?void 0:localStorage.getItem("fingerprint.endpoint.url"))||"https://api.descope.com",E="vsid",J="vrid",L="fp",$=(e=!1)=>{const t=localStorage.getItem(L);if(!t)return null;const n=JSON.parse(t);return(new Date).getTime()>n.expiry&&!e?null:n.value},K=async(e,t=A)=>{try{if($())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=r({apiKey:e,endpoint:[o.toString(),a],scriptUrlPattern:[l,s]}),d=await c,{requestId:u}=await d.get({linkedId:n}),g=((e,t)=>({[E]:e,[J]:t}))(n,u);(e=>{const t={value:e,expiry:(new Date).getTime()+864e5};localStorage.setItem(L,JSON.stringify(t))})(g)}catch(e){console.warn("Could not load fingerprint",e)}},P=()=>{localStorage.removeItem(L)},q=e=>{const t=$(!0);return t&&e.body&&(e.body.fpData=t),e},N="dls_last_user_login_id",V="dls_last_user_display_name",M=()=>h(N),F=()=>h(V),H=e=>async(...t)=>{var n;t[1]=t[1]||{};const[,o={}]=t,i=M(),r=F();i&&(null!==(n=o.lastAuth)&&void 0!==n||(o.lastAuth={}),o.lastAuth.loginId=i,o.lastAuth.name=r);return await e(...t)},G=e=>t=>async(...n)=>{const o=await t(...n);return e||(v(N),v(V)),o};function B(){const e=[];return{pub:t=>{e.forEach((e=>e(t)))},sub:t=>{const n=e.push(t)-1;return()=>e.splice(n,1)}}}const W=e=>t=>async(...n)=>{const o=await t(...n);return D(e),o};async function Z(e){const t=function(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=te(n.publicKey.challenge),n.publicKey.user.id=te(n.publicKey.user.id),null===(t=n.publicKey.excludeCredentials)||void 0===t||t.forEach((e=>{e.id=te(e.id)})),n}(e),n=await navigator.credentials.create(t);return o=n,JSON.stringify({id:o.id,rawId:ne(o.rawId),type:o.type,response:{attestationObject:ne(o.response.attestationObject),clientDataJSON:ne(o.response.clientDataJSON)}});var o}async function X(e){const t=Y(e);return ee(await navigator.credentials.get(t))}async function z(e,t){const n=Y(e);n.signal=t.signal,n.mediation="conditional";return ee(await navigator.credentials.get(n))}async function Q(e=!1){if(!b)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 Y(e){var t;const n=JSON.parse(e);return n.publicKey.challenge=te(n.publicKey.challenge),null===(t=n.publicKey.allowCredentials)||void 0===t||t.forEach((e=>{e.id=te(e.id)})),n}function ee(e){return JSON.stringify({id:e.id,rawId:ne(e.rawId),type:e.type,response:{authenticatorData:ne(e.response.authenticatorData),clientDataJSON:ne(e.response.clientDataJSON),signature:ne(e.response.signature),userHandle:e.response.userHandle?ne(e.response.userHandle):void 0}})}function te(e){const t=e.replace(/_/g,"/").replace(/-/g,"+");return Uint8Array.from(atob(t),(e=>e.charCodeAt(0))).buffer}function ne(e){return btoa(String.fromCharCode.apply(null,new Uint8Array(e))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}var oe,ie=(oe=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 r=await Z(i.data.options);return await e.webauthn.signUp.finish(i.data.transactionId,r)},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 X(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 Z(i.data.options);return await e.webauthn.signUp.finish(i.data.transactionId,t)}{const t=await X(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 r=await Z(i.data.options);return await e.webauthn.update.finish(i.data.transactionId,r)},helpers:{create:Z,get:X,isSupported:Q,conditional:z}}),(...e)=>{const t=oe(...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 re={config:"/fedcm/config"},ae=()=>{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 se(e,t){var n,o,i;try{const i=await async function(e,t="google",n,o,i){const r=ae(),a=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 d=n=>{e({provider:t,nonce:r,credential:null==n?void 0:n.credential})};a.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:d,nonce:r})),a.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 d()}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 d()}}))}))}(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 le=e=>Object.assign(Object.assign({},e.flow),{start:async(...t)=>{const n=await Q(),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 ce=()=>window.location.search.includes("code")&&window.location.search.includes("state");let de;const ue=(e,t)=>new Promise(((n,o)=>{if(!e.length)return o(new Error("No URLs provided to loadScriptWithFallback"));const i=t();if(i)return n(i);const r=e.shift(),a=document.createElement("script");a.src=r,a.id=(e=>{let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return Math.abs(t).toString(16)})(r),a.onload=()=>{const e=t();if(e)return n(e);throw new Error("Could not get entry after loading script from URL")},a.addEventListener("error",(()=>{ue(e,t),a.setAttribute("data-error","true")})),document.body.appendChild(a)}));const ge=async(e,t,n)=>{de||(de=(async()=>{try{return require("oidc-client-ts")}catch(e){return ue([k,I],(()=>window.oidc))}})());const{OidcClient:o,WebStorageStateStore:i}=await de;if(!o)throw new Error("oidc-client-ts is not installed. Please install it by running `npm install oidc-client-ts`");const r=t,a=(null==n?void 0:n.redirectUri)||window.location.href,s=(null==n?void 0:n.scope)||"openid email roles descope.custom_claims offline_access",l=`${r}_user`;let c=e.httpClient.buildUrl(t);(null==n?void 0:n.applicationId)&&(c=`${c}/${n.applicationId}`);const d={authority:c,client_id:t,redirect_uri:a,response_type:"code",scope:s,stateStore:new i({store:window.localStorage,prefix:r}),loadUserInfo:!0,fetchRequestCredentials:"same-origin"};return(null==n?void 0:n.redirectUri)&&(d.redirect_uri=n.redirectUri),(null==n?void 0:n.scope)&&(d.scope=n.scope),{client:new o(d),stateUserKey:l}},pe=(e,t,n)=>{const o=async()=>{let o,i;return o&&i||({client:o,stateUserKey:i}=await ge(e,t,n)),{client:o,stateUserKey:i}},i=async(t="")=>{var n;const{client:i,stateUserKey:r}=await o(),a=await i.processSigninResponse(t||window.location.href);var s;return await(null===(n=e.httpClient.hooks)||void 0===n?void 0:n.afterRequest({},new Response(JSON.stringify(a)))),window.localStorage.setItem(r,JSON.stringify({id_token:(s=a).id_token,session_state:s.session_state,profile:s.profile})),(()=>{const e=new URL(window.location.href);e.searchParams.delete("code"),e.searchParams.delete("state"),window.history.replaceState({},document.title,e.toString())})(),a};return{loginWithRedirect:async(e={},t=!1)=>{const{client:n}=await o(),i=await n.createSigninRequest(e),{url:r}=i;return t||(window.location.href=r),{ok:!0,data:i}},finishLogin:i,finishLoginIfNeed:async(e="")=>{if(ce())return await i(e)},refreshToken:async t=>{var n;const{client:i,stateUserKey:r}=await o(),a=(e=>{const t=window.localStorage.getItem(e);return t?JSON.parse(t):null})(r);if(!a)throw new Error("User not found in storage to refresh token");let s=t;if(!s){const t={};e.httpClient.hooks.beforeRequest(t),s=t.token}const l=await i.useRefreshToken({state:{refresh_token:s,session_state:a.session_state,profile:a.profile}});return await(null===(n=e.httpClient.hooks)||void 0===n?void 0:n.afterRequest({},new Response(JSON.stringify(l)))),l},logout:async(e,t=!1)=>{const{client:n,stateUserKey:i}=await o();e||(e={}),e.id_token_hint=e.id_token_hint||T(),e.post_logout_redirect_uri=e.post_logout_redirect_uri||window.location.href;const r=await n.createSignoutRequest(e),{url:a}=r;return window.localStorage.removeItem(i),t||window.location.replace(a),r}}},fe=function(...e){return t=>e.reduce(((e,t)=>t(e)),t)}((t=>n=>{var{fpKey:o,fpLoad:i}=n,r=e(n,["fpKey","fpLoad"]);return b?(o&&i&&K(o).catch((()=>null)),t(u(r,{beforeRequest:q}))):t(r)}),(n=>i=>{var{autoRefresh:r}=i,a=e(i,["autoRefresh"]);if(!r)return n(a);const{clearAllTimers:s,setTimer:l}=(()=>{const e=[];return{clearAllTimers:()=>{for(;e.length;)clearTimeout(e.pop())},setTimer:(t,n)=>{e.push(setTimeout(t,n))}}})();let c,d;b&&document.addEventListener("visibilitychange",(()=>{"visible"===document.visibilityState&&c&&new Date>c&&(m("Expiration time passed, refreshing session"),p.refresh(C()||d))}));const p=n(u(a,{afterRequest:async(e,n)=>{const{sessionJwt:o,refreshJwt:i,sessionExpiration:r}=await g(n);if(401===(null==n?void 0:n.status))m("Received 401, canceling all timers"),s();else if(o||r){if(c=((e,n)=>{if(n)return new Date(1e3*n);m("Could not extract expiration time from session token, trying to decode the token");try{const n=t(e);if(n.exp)return new Date(1e3*n.exp)}catch(e){return null}})(o,r),!c)return void m("Could not extract expiration time from session token");d=i;const e=_(c);if(s(),e<=2e4)return void m("Session is too close to expiration, not setting refresh timer");const n=new Date(Date.now()+e).toLocaleTimeString("en-US",{hour12:!1});m(`Setting refresh timer for ${n}. (${e}ms)`),l((()=>{m("Refreshing session due to timer"),p.refresh(C()||i)}),e)}}}));return o(p,["logout","logoutAll","oidc.logout"],(e=>async(...t)=>{const n=await e(...t);return m("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.30.0"},t.baseHeaders)}))),(e=>t=>{const n=B(),i=B(),r=B(),a=e(u(t,{afterRequest:async(e,t)=>{if(401===(null==t?void 0:t.status))i.pub(null),r.pub(null),n.pub(null);else{const e=await p(t);e&&r.pub(e);const{sessionJwt:o,sessionExpiration:a}=await g(t);o&&i.pub(o),(a||o)&&n.pub(a||42)}}})),s=o(a,["logout","logoutAll","oidc.logout"],(e=>async(...t)=>{const o=await e(...t);return i.pub(null),r.pub(null),n.pub(null),o}));return Object.assign(s,{onSessionTokenChange:i.sub,onUserChange:r.sub,onIsAuthenticatedChange:e=>n.sub((t=>{e(!!t)}))})}),(t=>n=>{var{storeLastAuthenticatedUser:i=!0,keepLastAuthenticatedUserAfterLogout:r=!1}=n,a=e(n,["storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout"]);if(!i)return Object.assign(t(a),{getLastUserLoginId:M,getLastUserDisplayName:F});const s=t(u(a,{afterRequest:async(e,t)=>{var n;const o=await p(t),i=null===(n=null==o?void 0:o.loginIds)||void 0===n?void 0:n[0],r=null==o?void 0:o.name;i&&((e=>{w(N,e)})(i),(e=>{w(V,e)})(r))}}));let l=o(s,["flow.start"],H);return l=o(l,["logout","logoutAll"],G(r)),Object.assign(l,{getLastUserLoginId:M,getLastUserDisplayName:F})}),(t=>n=>{var{persistTokens:i,sessionTokenViaCookie:r,storagePrefix:a}=n,s=e(n,["persistTokens","sessionTokenViaCookie","storagePrefix"]);if(!i||!b)return t(s);const l=t(u(s,{beforeRequest:(c=a,e=>Object.assign(e,{token:e.token||C(c)})),afterRequest:async(e,t)=>{const n=/^\/v\d+\/mgmt\//.test(e.path);401===(null==t?void 0:t.status)?n||D(a):((e={},t=!1,n="",o)=>{var i;const{sessionJwt:r,refreshJwt:a}=e;if(a&&w(`${n}${U}`,a),r)if(t){const n=t.sameSite||"Strict",a=null===(i=t.secure)||void 0===i||i;j(O,r,Object.assign(Object.assign({},e),{cookieSameSite:n,cookieSecure:a}),o)}else w(`${n}${O}`,r);e.idToken&&w(`${n}${x}`,e.idToken)})(await g(t),r,a,s.logger)}}));var c;const d=o(l,["logout","logoutAll","oidc.logout"],W(a));return Object.assign(d,{getRefreshToken:()=>C(a),getSessionToken:()=>R(a),getIdToken:()=>T(a)})}))((e=>{const t=n(e),o=pe(t,e.projectId,e.oidcConfig);return Object.assign(Object.assign({},t),{refresh:async n=>{var i;if(e.oidcConfig)try{return await o.refreshToken(n),Promise.resolve({ok:!0})}catch(e){return Promise.resolve({ok:!1,error:{errorCode:"J161001",errorDescription:e.toString()}})}const r=R(),a=C();let s="";if(e.getExternalToken)try{s=await(null===(i=e.getExternalToken)||void 0===i?void 0:i.call(e))}catch(e){m("Error getting external token while refreshing",e)}return t.refresh(n,{dcs:r?"t":"f",dcr:a?"t":"f"},s)},logout:async n=>{if(e.oidcConfig)try{return await o.logout({id_token_hint:n}),Promise.resolve({ok:!0})}catch(e){return Promise.resolve({ok:!1,error:{errorCode:"J161000",errorDescription:e.toString()}})}return t.logout(n)},flow:le(t),webauthn:ie(t),fedcm:(i=t,r=e.projectId,{onetap:{requestExchangeCode(e){se(i,e)},requestAuthentication(e){se(i,e)}},oneTap(e,t,n,o,r){se(i,{provider:e,oneTapConfig:t,loginOptions:n,onSkipped:o,onDismissed:r})},async launch(e){var t;const n={identity:{context:e||"signin",providers:[{configURL:i.httpClient.buildUrl(r+re.config),clientId:r}]}},o=await(null===(t=navigator.credentials)||void 0===t?void 0:t.get(n));return i.refresh(o.token)},isSupported:()=>b&&"IdentityCredential"in window,async isLoggedIn(e){var t;const n=i.httpClient.buildUrl(r+re.config);try{const o={identity:{context:e||"signin",providers:[{configURL:n,clientId:r}]}},i=await(null===(t=navigator.credentials)||void 0===t?void 0:t.get(o));return!!i&&!!i.token}catch(e){return!1}}}),oidc:o});var i,r}));export{U as REFRESH_TOKEN_KEY,O as SESSION_TOKEN_KEY,P as clearFingerprintData,fe as default,K as ensureFingerprintIds,ce as hasOidcParamsInUrl};
2
2
  //# sourceMappingURL=index.esm.js.map