@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/README.md +66 -0
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/index.d.ts +205 -30
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/index.umd.js +2 -2
- package/dist/index.umd.js.map +1 -1
- package/package.json +2 -2
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
|
-
|
|
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
|
|
199
|
-
start: (loginId: string, origin: string, token
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
817
|
-
start: (loginId: string, origin: string, token
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
1435
|
-
start: (loginId: string, origin: string, token
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
2060
|
-
start: (loginId: string, origin: string, token
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
2678
|
-
start: (loginId: string, origin: string, token
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
3296
|
-
start: (loginId: string, origin: string, token
|
|
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
|
-
|
|
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
|
-
|
|
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
|