@descope/web-js-sdk
Version:
Descope JavaScript web SDK
991 lines (979 loc) • 203 kB
TypeScript
import * as oidc_client_ts from 'oidc-client-ts';
import * as _descope_core_js_sdk from '@descope/core-js-sdk';
export { UserResponse } from '@descope/core-js-sdk';
type OidcConfigOptions = {
applicationId?: string;
redirectUri?: string;
scope?: string;
};
type OidcConfig = boolean | OidcConfigOptions;
/**
* Configuration for OneTap.
*/
interface OneTapConfig {
/** Whether to auto select. Optional. */
auto_select?: boolean;
/** Whether to cancel on tap outside. Optional. */
cancel_on_tap_outside?: boolean;
/** ID of the prompt parent. Optional. */
prompt_parent_id?: string;
/** Context. Optional. */
context?: 'signin' | 'signup' | 'use';
/** Callback function to handle the intermediate iframe close event. Optional. */
intermediate_iframe_close_callback?: () => void;
/** Whether to support ITP. Optional. */
itp_support?: boolean;
/** Login hint. Optional. */
login_hint?: string;
/** HD. Optional. */
hd?: string;
/** Whether to use FedCM for prompt. Optional. */
use_fedcm_for_prompt?: boolean;
}
declare function isSupported(requirePlatformAuthenticator?: boolean): Promise<boolean>;
type LastLoggedInUserOptions = {
storeLastAuthenticatedUser?: boolean;
keepLastAuthenticatedUserAfterLogout?: boolean;
};
/**
* Configuration options for the flow nonce enhancer.
* These options can be passed when creating the SDK.
*/
interface FlowNonceOptions {
/**
* Enables or disables the flow nonce functionality.
* When disabled, the enhancer will not add nonces to requests
* or process nonces from responses.
*
* @default true
*/
enableFlowNonce?: boolean;
/**
* Custom prefix for localStorage keys.
* Allows multiple applications on the same domain
* to use different storage namespaces.
*
* @default 'descopeFlowNonce'
*/
nonceStoragePrefix?: string;
}
type AutoRefreshOptions = {
autoRefresh?: boolean;
};
type FingerprintOptions = {
fpKey?: string;
fpLoad?: boolean;
};
type SameSite = 'Strict' | 'Lax' | 'None';
type CookieConfig = boolean | {
sameSite?: SameSite;
secure?: boolean;
};
type PersistTokensOptions<A extends CookieConfig> = {
persistTokens?: A;
storagePrefix?: string;
preview?: boolean;
sessionTokenViaCookie?: A extends false ? never : true | CookieConfig;
};
/** Default name for the session cookie name / local storage key */
declare const SESSION_TOKEN_KEY = "DS";
/** Default name for the refresh local storage key */
declare const REFRESH_TOKEN_KEY = "DSR";
/**
* Ensure fingerprint ids (request id, session id) exist.
* If not, It will generate and load them into to browser storage.
* NOTE: Using fingerprintJS data has cost, use considerably.
* @param fpKey FingerprintJS API key
*/
declare const ensureFingerprintIds: (fpKey: string, baseUrl?: string) => Promise<void>;
/** Clear Fingerprint data from storage */
declare const clearFingerprintData: () => void;
declare const hasOidcParamsInUrl: () => boolean;
declare const decoratedCreateSdk: <A extends CookieConfig>({ persistTokens: isPersistTokens, sessionTokenViaCookie, storagePrefix, ...config }: {
projectId: string;
logger?: {
error: {
(...data: any[]): void;
(message?: any, ...optionalParams: any[]): void;
};
debug: {
(...data: any[]): void;
(message?: any, ...optionalParams: any[]): void;
};
log: {
(...data: any[]): void;
(message?: any, ...optionalParams: any[]): void;
};
warn: {
(...data: any[]): void;
(message?: any, ...optionalParams: any[]): void;
};
};
baseUrl?: string;
hooks?: {
beforeRequest?: ((config: _descope_core_js_sdk.RequestConfig) => _descope_core_js_sdk.RequestConfig) | ((config: _descope_core_js_sdk.RequestConfig) => _descope_core_js_sdk.RequestConfig)[];
afterRequest?: ((req: _descope_core_js_sdk.RequestConfig, res: Response) => void | Promise<void>) | ((req: _descope_core_js_sdk.RequestConfig, res: Response) => void | Promise<void>)[];
transformResponse?: (mutableResponse: _descope_core_js_sdk.ExtendedResponse) => Promise<_descope_core_js_sdk.ExtendedResponse>;
};
cookiePolicy?: RequestCredentials;
baseHeaders?: HeadersInit;
refreshCookieName?: string;
fetch?: typeof fetch;
} & {
oidcConfig?: OidcConfig;
getExternalToken?: () => Promise<string>;
} & FingerprintOptions & AutoRefreshOptions & FlowNonceOptions & LastLoggedInUserOptions & PersistTokensOptions<A>) => A extends false ? (({
refresh: (token?: string, tryRefresh?: boolean) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
logout: (token?: string) => Promise<_descope_core_js_sdk.SdkResponse<never>>;
flow: {
start: (flowId: string, options?: Pick<{
redirectUrl?: string;
location?: string;
tenant?: string;
deviceInfo?: {
webAuthnSupport?: boolean;
};
lastAuth?: {
authMethod?: "webauthn" | "otp" | "oauth" | "saml" | "totp" | "magiclink" | "enchantedlink";
oauthProvider?: string;
name?: string;
loginId?: string;
};
redirectAuth?: {
callbackUrl: string;
codeChallenge: string;
};
oidcIdpStateId?: string;
preview?: boolean;
samlIdpStateId?: string;
samlIdpUsername?: string;
ssoAppId?: string;
thirdPartyAppId?: string;
oidcLoginHint?: string;
abTestingKey?: number;
startOptionsVersion?: number;
client?: Record<string, any>;
locale?: string;
oidcPrompt?: string;
oidcErrorRedirectUri?: string;
oidcResource?: string;
nativeOptions?: {
platform: "ios" | "android";
oauthProvider?: string;
oauthRedirect?: string;
};
thirdPartyAppStateId?: string;
applicationScopes?: string;
outboundAppId?: string;
outboundAppScopes?: string[];
}, "tenant" | "redirectUrl" | "redirectAuth" | "oidcIdpStateId" | "samlIdpStateId" | "samlIdpUsername" | "ssoAppId" | "thirdPartyAppId" | "oidcLoginHint" | "preview" | "abTestingKey" | "client" | "locale" | "oidcPrompt" | "oidcErrorRedirectUri" | "oidcResource" | "nativeOptions" | "thirdPartyAppStateId" | "applicationScopes" | "outboundAppId" | "outboundAppScopes"> & {
lastAuth?: Omit<{
authMethod?: "webauthn" | "otp" | "oauth" | "saml" | "totp" | "magiclink" | "enchantedlink";
oauthProvider?: string;
name?: string;
loginId?: string;
}, "loginId" | "name">;
}, conditionInteractionId?: string, interactionId?: string, componentsVersion?: string, flowVersions?: Record<string, number>, input?: {
[x: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | any)[])[])[])[])[])[])[])[])[])[])[];
}) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.FlowResponse>>;
next: (executionId: string, stepId: string, interactionId: string, version?: number, componentsVersion?: string, input?: {
[x: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | any)[])[])[])[])[])[])[])[])[])[])[];
}) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.FlowResponse>>;
};
webauthn: {
signUp: ((identifier: string, name: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>) & {
start: (loginId: string, origin: string, name: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
transactionId: string;
options: string;
create: boolean;
}>>;
finish: (transactionId: string, response: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
};
signIn: ((identifier: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>) & {
start: (loginId: string, origin: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
transactionId: string;
options: string;
create: boolean;
}>>;
finish: (transactionId: string, response: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
};
signUpOrIn: ((identifier: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>) & {
start: (loginId: string, origin: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
transactionId: string;
options: string;
create: boolean;
}>>;
};
update: ((identifier: string, token?: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
start: (loginId: string, origin: string, token?: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
transactionId: string;
options: string;
create: boolean;
}>>;
finish: (transactionId: string, response: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>;
};
helpers: {
create: (options: string) => Promise<string>;
get: (options: string) => Promise<string>;
isSupported: typeof isSupported;
conditional: (options: string, abort: AbortController) => Promise<string>;
};
};
fedcm: {
onetap: {
requestExchangeCode(options: {
provider?: string;
oneTapConfig?: OneTapConfig;
loginOptions?: _descope_core_js_sdk.LoginOptions;
onSkipped?: (reason?: string) => void;
onDismissed?: (reason?: string) => void;
onFailed?: (error: Error) => void;
onCodeReceived: (code: string) => void;
}): void;
requestAuthentication(options?: {
provider?: string;
oneTapConfig?: OneTapConfig;
loginOptions?: _descope_core_js_sdk.LoginOptions;
onSkipped?: (reason?: string) => void;
onDismissed?: (reason?: string) => void;
onFailed?: (error: Error) => void;
onAuthenticated?: (response: _descope_core_js_sdk.JWTResponse) => void;
}): void;
};
oneTap(provider?: string, oneTapConfig?: OneTapConfig, loginOptions?: _descope_core_js_sdk.LoginOptions, onSkipped?: (reason?: string) => void, onDismissed?: (reason?: string) => void): Promise<void>;
launch(context?: "signin" | "signup" | "use" | "continue"): Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
isSupported(): boolean;
isLoggedIn(context?: "signin" | "signup" | "use" | "continue"): Promise<boolean>;
};
oidc: {
loginWithRedirect: (arg?: oidc_client_ts.CreateSigninRequestArgs, disableNavigation?: boolean) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
finishLogin: (url?: string) => Promise<any>;
finishLoginIfNeed: (url?: string) => Promise<any>;
refreshToken: (refreshToken: string) => Promise<oidc_client_ts.SigninResponse>;
logout: (arg?: oidc_client_ts.CreateSignoutRequestArgs, disableNavigation?: boolean) => Promise<any>;
};
accessKey: {
exchange: (accessKey: string, loginOptions?: _descope_core_js_sdk.AccessKeyLoginOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ExchangeAccessKeyResponse>>;
};
otp: {
verify: {
sms: (loginId: string, code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
voice: (loginId: string, code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
whatsapp: (loginId: string, code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
email: (loginId: string, code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
};
signIn: {
sms: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
voice: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
whatsapp: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
email: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedEmail: string;
}>>;
};
signUp: {
sms: (loginId: string, user?: {
email?: string;
name?: string;
givenName?: string;
middleName?: string;
familyName?: string;
phone?: string;
}, signUpOptions?: {
customClaims?: Record<string, any>;
templateId?: string;
templateOptions?: {
[x: string]: string;
};
}) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
voice: (loginId: string, user?: {
email?: string;
name?: string;
givenName?: string;
middleName?: string;
familyName?: string;
phone?: string;
}, signUpOptions?: {
customClaims?: Record<string, any>;
templateId?: string;
templateOptions?: {
[x: string]: string;
};
}) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
whatsapp: (loginId: string, user?: {
email?: string;
name?: string;
givenName?: string;
middleName?: string;
familyName?: string;
phone?: string;
}, signUpOptions?: {
customClaims?: Record<string, any>;
templateId?: string;
templateOptions?: {
[x: string]: string;
};
}) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
email: (loginId: string, user?: {
email?: string;
name?: string;
givenName?: string;
middleName?: string;
familyName?: string;
phone?: string;
}, signUpOptions?: {
customClaims?: Record<string, any>;
templateId?: string;
templateOptions?: {
[x: string]: string;
};
}) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedEmail: string;
}>>;
};
signUpOrIn: {
sms: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
voice: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
whatsapp: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
email: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedEmail: string;
}>>;
};
update: {
email: <T extends boolean>(loginId: string, email: string, token?: string, updateOptions?: {
addToLoginIDs?: T;
onMergeUseExisting?: T extends true ? boolean : never;
templateOptions?: {
[x: string]: string;
};
templateId?: string;
providerId?: string;
}) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedEmail: string;
}>>;
phone: {
sms: <T_1 extends boolean>(loginId: string, phone: string, token?: string, updateOptions?: {
addToLoginIDs?: T_1;
onMergeUseExisting?: T_1 extends true ? boolean : never;
templateOptions?: {
[x: string]: string;
};
templateId?: string;
providerId?: string;
}) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
voice: <T_1 extends boolean>(loginId: string, phone: string, token?: string, updateOptions?: {
addToLoginIDs?: T_1;
onMergeUseExisting?: T_1 extends true ? boolean : never;
templateOptions?: {
[x: string]: string;
};
templateId?: string;
providerId?: string;
}) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
whatsapp: <T_1 extends boolean>(loginId: string, phone: string, token?: string, updateOptions?: {
addToLoginIDs?: T_1;
onMergeUseExisting?: T_1 extends true ? boolean : never;
templateOptions?: {
[x: string]: string;
};
templateId?: string;
providerId?: string;
}) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
};
};
};
magicLink: {
verify: (token: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
signIn: {
sms: (loginId: string, URI: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
voice: (loginId: string, URI: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
whatsapp: (loginId: string, URI: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
email: (loginId: string, URI: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedEmail: string;
}>>;
};
signUp: {
sms: (loginId: string, URI: string, user?: {
email?: string;
name?: string;
givenName?: string;
middleName?: string;
familyName?: string;
phone?: string;
}, signUpOptions?: {
customClaims?: Record<string, any>;
templateId?: string;
templateOptions?: {
[x: string]: string;
};
}) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
voice: (loginId: string, URI: string, user?: {
email?: string;
name?: string;
givenName?: string;
middleName?: string;
familyName?: string;
phone?: string;
}, signUpOptions?: {
customClaims?: Record<string, any>;
templateId?: string;
templateOptions?: {
[x: string]: string;
};
}) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
whatsapp: (loginId: string, URI: string, user?: {
email?: string;
name?: string;
givenName?: string;
middleName?: string;
familyName?: string;
phone?: string;
}, signUpOptions?: {
customClaims?: Record<string, any>;
templateId?: string;
templateOptions?: {
[x: string]: string;
};
}) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
email: (loginId: string, URI: string, user?: {
email?: string;
name?: string;
givenName?: string;
middleName?: string;
familyName?: string;
phone?: string;
}, signUpOptions?: {
customClaims?: Record<string, any>;
templateId?: string;
templateOptions?: {
[x: string]: string;
};
}) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedEmail: string;
}>>;
};
signUpOrIn: {
sms: (loginId: string, URI?: string, signUpOptions?: {
customClaims?: Record<string, any>;
templateId?: string;
templateOptions?: {
[x: string]: string;
};
}) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
voice: (loginId: string, URI?: string, signUpOptions?: {
customClaims?: Record<string, any>;
templateId?: string;
templateOptions?: {
[x: string]: string;
};
}) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
whatsapp: (loginId: string, URI?: string, signUpOptions?: {
customClaims?: Record<string, any>;
templateId?: string;
templateOptions?: {
[x: string]: string;
};
}) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
email: (loginId: string, URI?: string, signUpOptions?: {
customClaims?: Record<string, any>;
templateId?: string;
templateOptions?: {
[x: string]: string;
};
}) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedEmail: string;
}>>;
};
update: {
email: <T_2 extends boolean>(loginId: string, email: string, URI?: string, token?: string, updateOptions?: {
addToLoginIDs?: T_2;
onMergeUseExisting?: T_2 extends true ? boolean : never;
templateOptions?: {
[x: string]: string;
};
templateId?: string;
providerId?: string;
}) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedEmail: string;
}>>;
phone: {
sms: <T_3 extends boolean>(loginId: string, phone: string, URI?: string, token?: string, updateOptions?: {
addToLoginIDs?: T_3;
onMergeUseExisting?: T_3 extends true ? boolean : never;
templateOptions?: {
[x: string]: string;
};
templateId?: string;
providerId?: string;
}) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
voice: <T_3 extends boolean>(loginId: string, phone: string, URI?: string, token?: string, updateOptions?: {
addToLoginIDs?: T_3;
onMergeUseExisting?: T_3 extends true ? boolean : never;
templateOptions?: {
[x: string]: string;
};
templateId?: string;
providerId?: string;
}) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
whatsapp: <T_3 extends boolean>(loginId: string, phone: string, URI?: string, token?: string, updateOptions?: {
addToLoginIDs?: T_3;
onMergeUseExisting?: T_3 extends true ? boolean : never;
templateOptions?: {
[x: string]: string;
};
templateId?: string;
providerId?: string;
}) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
};
};
};
enchantedLink: {
verify: (token: string) => Promise<_descope_core_js_sdk.SdkResponse<never>>;
signIn: (loginId: string, URI?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.EnchantedLinkResponse>>;
signUpOrIn: (loginId: string, URI?: string, signUpOptions?: {
customClaims?: Record<string, any>;
templateId?: string;
templateOptions?: {
[x: string]: string;
};
}) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.EnchantedLinkResponse>>;
signUp: (loginId: string, URI?: string, user?: {
email?: string;
name?: string;
givenName?: string;
middleName?: string;
familyName?: string;
phone?: string;
}, signUpOptions?: {
customClaims?: Record<string, any>;
templateId?: string;
templateOptions?: {
[x: string]: string;
};
}) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.EnchantedLinkResponse>>;
waitForSession: (pendingRef: string, config?: {
pollingIntervalMs: number;
timeoutMs: number;
}) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
update: {
email: <T_4 extends boolean>(loginId: string, email: string, URI?: string, token?: string, updateOptions?: {
addToLoginIDs?: T_4;
onMergeUseExisting?: T_4 extends true ? boolean : never;
templateOptions?: {
[x: string]: string;
};
templateId?: string;
providerId?: string;
}) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.EnchantedLinkResponse>>;
};
};
oauth: {
start: ((provider: string, redirectUrl?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string, loginHint?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
google: (redirectURL?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
facebook: (redirectURL?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
github: (redirectURL?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
microsoft: (redirectURL?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
gitlab: (redirectURL?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
apple: (redirectURL?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
discord: (redirectURL?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
linkedin: (redirectURL?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
slack: (redirectURL?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
};
exchange: (code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
startNative: (provider: string, loginOptions?: _descope_core_js_sdk.LoginOptions, implicit?: boolean) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>;
finishNative: (provider: string, stateId: string, user?: string, code?: string, idToken?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>;
getOneTapClientId: (provider: string) => Promise<_descope_core_js_sdk.SdkResponse<{
clientId: string;
}>>;
verifyOneTapIDToken: (provider: string, idToken: string, nonce: string, loginOptions?: _descope_core_js_sdk.LoginOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
code: string;
}>>;
exchangeOneTapIDToken: (provider: string, idToken: string, nonce: string, loginOptions?: _descope_core_js_sdk.LoginOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
};
outbound: {
connect: (appId: string, options?: {
redirectUrl?: string;
scopes?: string[];
tenantId?: string;
tenantLevel?: boolean;
}, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
};
saml: {
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>>;
exchange: (code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
};
totp: {
signUp: (loginId: string, user?: {
email?: string;
name?: string;
givenName?: string;
middleName?: string;
familyName?: string;
phone?: string;
}) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.TOTPResponse>>;
verify: (loginId: string, code: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
update: (loginId: string, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.TOTPResponse>>;
};
notp: {
signUpOrIn: (loginId?: string, signUpOptions?: {
customClaims?: Record<string, any>;
templateId?: string;
templateOptions?: {
[x: string]: string;
};
}) => Promise<_descope_core_js_sdk.SdkResponse<{
pendingRef: string;
redirectUrl: string;
image: string;
}>>;
signUp: (loginId?: string, user?: {
email?: string;
name?: string;
givenName?: string;
middleName?: string;
familyName?: string;
phone?: string;
}, signUpOptions?: {
customClaims?: Record<string, any>;
templateId?: string;
templateOptions?: {
[x: string]: string;
};
}) => Promise<_descope_core_js_sdk.SdkResponse<{
pendingRef: string;
redirectUrl: string;
image: string;
}>>;
signIn: (loginId?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
pendingRef: string;
redirectUrl: string;
image: string;
}>>;
waitForSession: (pendingRef: string, config?: {
pollingIntervalMs: number;
timeoutMs: number;
}) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
};
password: {
signUp: (loginId: string, password: string, user?: {
email?: string;
name?: string;
givenName?: string;
middleName?: string;
familyName?: string;
phone?: string;
}, signUpOptions?: {
customClaims?: Record<string, any>;
templateId?: string;
templateOptions?: {
[x: string]: string;
};
}) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
signIn: (loginId: string, password: string, loginOptions?: _descope_core_js_sdk.LoginOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
sendReset: (loginId: string, redirectUrl?: string, templateOptions?: {
[x: string]: string;
}) => Promise<_descope_core_js_sdk.SdkResponse<{
resetMethod: string;
pendingRef?: string;
linkId?: string;
maskedEmail: string;
}>>;
update: (loginId: string, newPassword: string, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<never>>;
replace: (loginId: string, oldPassword: string, newPassword: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
policy: () => Promise<_descope_core_js_sdk.SdkResponse<{
minLength: number;
lowercase: boolean;
uppercase: boolean;
number: boolean;
nonAlphanumeric: boolean;
}>>;
};
selectTenant: (tenantId: string, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
logoutAll: (token?: string) => Promise<_descope_core_js_sdk.SdkResponse<never>>;
me: (token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.UserResponse>>;
myTenants: (tenants: true | string[], token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
tenants: {
id: string;
name: string;
customAttributes?: Record<string, any>;
}[];
}>>;
history: (token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.UserHistoryResponse>>;
isJwtExpired: (token: string) => boolean;
getTenants: (token: string) => string[];
getJwtPermissions: (token: string, tenant?: string) => string[];
getJwtRoles: (token: string, tenant?: string) => string[];
getCurrentTenant: (token: string) => string;
httpClient: _descope_core_js_sdk.HttpClient;
} | {
refresh: (token?: string, tryRefresh?: boolean) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
logout: (token?: string) => Promise<_descope_core_js_sdk.SdkResponse<never>>;
flow: {
start: (flowId: string, options?: Pick<{
redirectUrl?: string;
location?: string;
tenant?: string;
deviceInfo?: {
webAuthnSupport?: boolean;
};
lastAuth?: {
authMethod?: "webauthn" | "otp" | "oauth" | "saml" | "totp" | "magiclink" | "enchantedlink";
oauthProvider?: string;
name?: string;
loginId?: string;
};
redirectAuth?: {
callbackUrl: string;
codeChallenge: string;
};
oidcIdpStateId?: string;
preview?: boolean;
samlIdpStateId?: string;
samlIdpUsername?: string;
ssoAppId?: string;
thirdPartyAppId?: string;
oidcLoginHint?: string;
abTestingKey?: number;
startOptionsVersion?: number;
client?: Record<string, any>;
locale?: string;
oidcPrompt?: string;
oidcErrorRedirectUri?: string;
oidcResource?: string;
nativeOptions?: {
platform: "ios" | "android";
oauthProvider?: string;
oauthRedirect?: string;
};
thirdPartyAppStateId?: string;
applicationScopes?: string;
outboundAppId?: string;
outboundAppScopes?: string[];
}, "tenant" | "redirectUrl" | "redirectAuth" | "oidcIdpStateId" | "samlIdpStateId" | "samlIdpUsername" | "ssoAppId" | "thirdPartyAppId" | "oidcLoginHint" | "preview" | "abTestingKey" | "client" | "locale" | "oidcPrompt" | "oidcErrorRedirectUri" | "oidcResource" | "nativeOptions" | "thirdPartyAppStateId" | "applicationScopes" | "outboundAppId" | "outboundAppScopes"> & {
lastAuth?: Omit<{
authMethod?: "webauthn" | "otp" | "oauth" | "saml" | "totp" | "magiclink" | "enchantedlink";
oauthProvider?: string;
name?: string;
loginId?: string;
}, "loginId" | "name">;
}, conditionInteractionId?: string, interactionId?: string, componentsVersion?: string, flowVersions?: Record<string, number>, input?: {
[x: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | any)[])[])[])[])[])[])[])[])[])[])[];
}) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.FlowResponse>>;
next: (executionId: string, stepId: string, interactionId: string, version?: number, componentsVersion?: string, input?: {
[x: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | any)[])[])[])[])[])[])[])[])[])[])[];
}) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.FlowResponse>>;
};
webauthn: {
signUp: ((identifier: string, name: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>) & {
start: (loginId: string, origin: string, name: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
transactionId: string;
options: string;
create: boolean;
}>>;
finish: (transactionId: string, response: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
};
signIn: ((identifier: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>) & {
start: (loginId: string, origin: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
transactionId: string;
options: string;
create: boolean;
}>>;
finish: (transactionId: string, response: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
};
signUpOrIn: ((identifier: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>) & {
start: (loginId: string, origin: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
transactionId: string;
options: string;
create: boolean;
}>>;
};
update: ((identifier: string, token?: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
start: (loginId: string, origin: string, token?: string, passkeyOptions?: _descope_core_js_sdk.PasskeyOptions) => Promise<_descope_core_js_sdk.SdkResponse<{
transactionId: string;
options: string;
create: boolean;
}>>;
finish: (transactionId: string, response: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>;
};
helpers: {
create: (options: string) => Promise<string>;
get: (options: string) => Promise<string>;
isSupported: typeof isSupported;
conditional: (options: string, abort: AbortController) => Promise<string>;
};
};
fedcm: {
onetap: {
requestExchangeCode(options: {
provider?: string;
oneTapConfig?: OneTapConfig;
loginOptions?: _descope_core_js_sdk.LoginOptions;
onSkipped?: (reason?: string) => void;
onDismissed?: (reason?: string) => void;
onFailed?: (error: Error) => void;
onCodeReceived: (code: string) => void;
}): void;
requestAuthentication(options?: {
provider?: string;
oneTapConfig?: OneTapConfig;
loginOptions?: _descope_core_js_sdk.LoginOptions;
onSkipped?: (reason?: string) => void;
onDismissed?: (reason?: string) => void;
onFailed?: (error: Error) => void;
onAuthenticated?: (response: _descope_core_js_sdk.JWTResponse) => void;
}): void;
};
oneTap(provider?: string, oneTapConfig?: OneTapConfig, loginOptions?: _descope_core_js_sdk.LoginOptions, onSkipped?: (reason?: string) => void, onDismissed?: (reason?: string) => void): Promise<void>;
launch(context?: "signin" | "signup" | "use" | "continue"): Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
isSupported(): boolean;
isLoggedIn(context?: "signin" | "signup" | "use" | "continue"): Promise<boolean>;
};
oidc: {
loginWithRedirect: (arg?: oidc_client_ts.CreateSigninRequestArgs, disableNavigation?: boolean) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
finishLogin: (url?: string) => Promise<any>;
finishLoginIfNeed: (url?: string) => Promise<any>;
refreshToken: (refreshToken: string) => Promise<oidc_client_ts.SigninResponse>;
logout: (arg?: oidc_client_ts.CreateSignoutRequestArgs, disableNavigation?: boolean) => Promise<any>;
};
accessKey: {
exchange: (accessKey: string, loginOptions?: _descope_core_js_sdk.AccessKeyLoginOptions) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ExchangeAccessKeyResponse>>;
};
otp: {
verify: {
sms: (loginId: string, code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
voice: (loginId: string, code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
whatsapp: (loginId: string, code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
email: (loginId: string, code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
};
signIn: {
sms: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
voice: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
whatsapp: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
email: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedEmail: string;
}>>;
};
signUp: {
sms: (loginId: string, user?: {
email?: string;
name?: string;
givenName?: string;
middleName?: string;
familyName?: string;
phone?: string;
}, signUpOptions?: {
customClaims?: Record<string, any>;
templateId?: string;
templateOptions?: {
[x: string]: string;
};
}) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
voice: (loginId: string, user?: {
email?: string;
name?: string;
givenName?: string;
middleName?: string;
familyName?: string;
phone?: string;
}, signUpOptions?: {
customClaims?: Record<string, any>;
templateId?: string;
templateOptions?: {
[x: string]: string;
};
}) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
whatsapp: (loginId: string, user?: {
email?: string;
name?: string;
givenName?: string;
middleName?: string;
familyName?: string;
phone?: string;
}, signUpOptions?: {
customClaims?: Record<string, any>;
templateId?: string;
templateOptions?: {
[x: string]: string;
};
}) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
email: (loginId: string, user?: {
email?: string;
name?: string;
givenName?: string;
middleName?: string;
familyName?: string;
phone?: string;
}, signUpOptions?: {
customClaims?: Record<string, any>;
templateId?: string;
templateOptions?: {
[x: string]: string;
};
}) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedEmail: string;
}>>;
};
signUpOrIn: {
sms: (loginId: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
maskedPhone: string;
}>>;
voice: (loginId: string,