{"version":3,"file":"index.headless.cjs","sources":["../../../core/src/HeadlessClients/HeadlessIDPClient.ts","../../../core/src/HeadlessClients/HeadlessImpersonationClient.ts","../../../core/src/HeadlessClients/HeadlessOAuthClient.ts","../../../core/src/HeadlessClients/HeadlessOTPClient.ts","../../../core/src/HeadlessClients/HeadlessRBACClient.ts","../../../core/src/HeadlessClients/HeadlessSessionClient.ts","../../../core/src/HeadlessClients/HeadlessTOTPClient.ts","../../../core/src/HeadlessClients/HeadlessUserClient.ts","../../../../node_modules/@github/webauthn-json/dist/esm/webauthn-json.js","../../../core/src/HeadlessClients/HeadlessWebAuthnClient.ts","../../../web/src/HeadlessOAuthClient.ts","../../../web/src/StytchClient.ts","../../../web/src/index.headless.ts"],"sourcesContent":["import { INetworkClient } from '../NetworkClient';\nimport {\n  IHeadlessIDPClient,\n  OAuthAuthorizeStartOptions,\n  OAuthAuthorizeStartResponse,\n  OAuthAuthorizeSubmitOptions,\n  OAuthAuthorizeSubmitResponse,\n  OAuthLogoutStartOptions,\n  OAuthLogoutStartResponse,\n} from '../public/idp';\n\nexport class HeadlessIDPClient implements IHeadlessIDPClient {\n  constructor(private _networkClient: INetworkClient) {}\n\n  oauthAuthorizeStart = async (data: OAuthAuthorizeStartOptions): Promise<OAuthAuthorizeStartResponse> =>\n    this._networkClient.fetchSDK<OAuthAuthorizeStartResponse>({\n      url: '/idp/oauth/authorize/start',\n      method: 'POST',\n      body: data,\n    });\n\n  oauthAuthorizeSubmit = async (data: OAuthAuthorizeSubmitOptions): Promise<OAuthAuthorizeSubmitResponse> =>\n    this._networkClient.fetchSDK<OAuthAuthorizeSubmitResponse>({\n      url: '/idp/oauth/authorize/submit',\n      method: 'POST',\n      body: data,\n    });\n\n  oauthLogoutStart = async (data: OAuthLogoutStartOptions): Promise<OAuthLogoutStartResponse> =>\n    this._networkClient.fetchSDK<OAuthLogoutStartResponse>({\n      url: `/oauth/logout/start`,\n      method: 'POST',\n      body: data,\n    });\n}\n","import { IDFPProtectedAuthProvider } from '../DFPProtectedAuthProvider';\nimport { INetworkClient } from '../NetworkClient';\nimport {\n  IHeadlessImpersonationClient,\n  ImpersonationAuthenticateOptions,\n  ImpersonationAuthenticateResponse,\n} from '../public/impersonation';\nimport { StytchProjectConfigurationInput } from '../public/typeConfig';\nimport { IConsumerSubscriptionService } from '../SubscriptionService';\nimport { validateInDev } from '../utils/dev';\n\nexport class HeadlessImpersonationClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n  implements IHeadlessImpersonationClient<TProjectConfiguration>\n{\n  authenticate: (\n    data: ImpersonationAuthenticateOptions,\n  ) => Promise<ImpersonationAuthenticateResponse<TProjectConfiguration>>;\n\n  constructor(\n    private _networkClient: INetworkClient,\n    private _subscriptionService: IConsumerSubscriptionService<TProjectConfiguration>,\n    private dfpProtectedAuth: IDFPProtectedAuthProvider,\n  ) {\n    this.authenticate = this._subscriptionService.withUpdateSession(async (data: ImpersonationAuthenticateOptions) => {\n      validateInDev('stytch.impersonation.authenticate', data, {\n        impersonation_token: 'string',\n      });\n      const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n      return this._networkClient.retriableFetchSDK<ImpersonationAuthenticateResponse<TProjectConfiguration>>({\n        url: '/impersonation/authenticate',\n        body: {\n          ...data,\n          dfp_telemetry_id,\n          captcha_token,\n        },\n        method: 'POST',\n        retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n      });\n    });\n  }\n}\n","import { IConsumerSubscriptionService, INetworkClient, IPKCEManager } from '..';\nimport {\n  IHeadlessOAuthClient,\n  OAuthAttachResponse,\n  OAuthAuthenticateOptions,\n  OAuthAuthenticateResponse,\n  OAuthGetURLOptions,\n  OAuthProviders,\n  StytchProjectConfigurationInput,\n} from '../public';\nimport { isTestPublicToken, logger, omitUser, WithUser } from '../utils';\nimport { validateInDev } from '../utils/dev';\n\ntype DynamicConfig = Promise<{\n  cnameDomain: null | string;\n  pkceRequiredForOAuth: boolean;\n}>;\ntype Config = {\n  publicToken: string;\n  testAPIURL: string;\n  liveAPIURL: string;\n};\n\nexport class HeadlessOAuthClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n  implements IHeadlessOAuthClient<TProjectConfiguration>\n{\n  authenticate: (\n    token: string,\n    options: OAuthAuthenticateOptions,\n  ) => Promise<OAuthAuthenticateResponse<TProjectConfiguration>>;\n\n  constructor(\n    private _networkClient: INetworkClient,\n    private _subscriptionService: IConsumerSubscriptionService<TProjectConfiguration>,\n    private _pkceManager: IPKCEManager,\n    private _dynamicConfig: DynamicConfig,\n    private _config: Config,\n  ) {\n    this.authenticate = this._subscriptionService.withUpdateSession(\n      async (token: string, options: OAuthAuthenticateOptions) => {\n        validateInDev(\n          'stytch.oauth.authenticate',\n          { token, ...options },\n          {\n            token: 'string',\n            session_duration_minutes: 'number',\n          },\n        );\n\n        const keyPair = await this._pkceManager.getPKPair();\n\n        if (!keyPair) {\n          logger.warn(\n            'No code verifier found in local storage for OAuth flow.\\n' +\n              'Consider using stytch.oauth.$provider.start() to add PKCE to your OAuth flows for added security.\\n' +\n              'See https://stytch.com/docs/oauth#guides_pkce for more information.',\n          );\n        }\n\n        const resp = await this._networkClient.fetchSDK<WithUser<OAuthAuthenticateResponse<TProjectConfiguration>>>({\n          url: '/oauth/authenticate',\n          method: 'POST',\n          body: {\n            token,\n            code_verifier: keyPair?.code_verifier,\n            ...options,\n          },\n        });\n\n        this._pkceManager.clearPKPair();\n\n        return omitUser(resp);\n      },\n    );\n  }\n\n  google = {\n    start: this.startOAuthFlow(OAuthProviders.Google),\n  };\n\n  apple = {\n    start: this.startOAuthFlow(OAuthProviders.Apple),\n  };\n\n  microsoft = {\n    start: this.startOAuthFlow(OAuthProviders.Microsoft),\n  };\n\n  github = {\n    start: this.startOAuthFlow(OAuthProviders.Github),\n  };\n\n  gitlab = {\n    start: this.startOAuthFlow(OAuthProviders.GitLab),\n  };\n\n  facebook = {\n    start: this.startOAuthFlow(OAuthProviders.Facebook),\n  };\n\n  discord = {\n    start: this.startOAuthFlow(OAuthProviders.Discord),\n  };\n\n  salesforce = {\n    start: this.startOAuthFlow(OAuthProviders.Salesforce),\n  };\n\n  slack = {\n    start: this.startOAuthFlow(OAuthProviders.Slack),\n  };\n\n  amazon = {\n    start: this.startOAuthFlow(OAuthProviders.Amazon),\n  };\n\n  bitbucket = {\n    start: this.startOAuthFlow(OAuthProviders.Bitbucket),\n  };\n\n  linkedin = {\n    start: this.startOAuthFlow(OAuthProviders.LinkedIn),\n  };\n\n  coinbase = {\n    start: this.startOAuthFlow(OAuthProviders.Coinbase),\n  };\n\n  twitch = {\n    start: this.startOAuthFlow(OAuthProviders.Twitch),\n  };\n\n  twitter = {\n    start: this.startOAuthFlow(OAuthProviders.Twitter),\n  };\n\n  tiktok = {\n    start: this.startOAuthFlow(OAuthProviders.TikTok),\n  };\n\n  snapchat = {\n    start: this.startOAuthFlow(OAuthProviders.Snapchat),\n  };\n\n  figma = {\n    start: this.startOAuthFlow(OAuthProviders.Figma),\n  };\n\n  yahoo = {\n    start: this.startOAuthFlow(OAuthProviders.Yahoo),\n  };\n\n  async attach(provider: string): Promise<OAuthAttachResponse> {\n    validateInDev('stytch.oauth.attach', { provider }, { provider: 'string' });\n    return await this._networkClient.fetchSDK<OAuthAttachResponse>({\n      url: '/oauth/attach',\n      method: 'POST',\n      body: { provider },\n    });\n  }\n\n  private async getBaseApiUrl() {\n    const { cnameDomain } = await this._dynamicConfig;\n    if (cnameDomain) {\n      // The API returns cname domains without a protocol - assume HTTPS\n      return `https://${cnameDomain}`;\n    }\n    // Our TestAPIURL and LiveAPIURL should have the HTTPS protocol already attached\n    // Don't add it twice!\n    if (isTestPublicToken(this._config.publicToken)) {\n      return this._config.testAPIURL;\n    }\n    return this._config.liveAPIURL;\n  }\n\n  private startOAuthFlow(providerType: OAuthProviders) {\n    return async ({\n      login_redirect_url,\n      signup_redirect_url,\n      custom_scopes,\n      provider_params,\n      oauth_attach_token,\n    }: OAuthGetURLOptions = {}): Promise<void> => {\n      const { cnameDomain, pkceRequiredForOAuth } = await this._dynamicConfig;\n      const baseURL = await this.getBaseApiUrl();\n\n      this._networkClient.logEvent({\n        name: 'start_oauth_flow',\n        details: {\n          provider_type: providerType,\n          custom_scopes,\n          cname_domain: cnameDomain,\n          pkce: pkceRequiredForOAuth,\n          provider_params,\n        },\n      });\n\n      const oauthUrl = new URL(`${baseURL}/v1/public/oauth/${providerType}/start`);\n      oauthUrl.searchParams.set('public_token', this._config.publicToken);\n\n      if (pkceRequiredForOAuth) {\n        const keyPair = await this._pkceManager.startPKCETransaction();\n        oauthUrl.searchParams.set('code_challenge', keyPair.code_challenge);\n      } else {\n        this._pkceManager.clearPKPair();\n      }\n\n      if (custom_scopes) {\n        validateInDev(\n          'startOAuthFlow',\n          { custom_scopes },\n          {\n            custom_scopes: 'stringArray',\n          },\n        );\n        oauthUrl.searchParams.set('custom_scopes', custom_scopes.join(' '));\n      }\n      if (provider_params) {\n        validateInDev(\n          'startOAuthFlow',\n          { provider_params },\n          {\n            provider_params: 'optionalObject',\n          },\n        );\n        for (const key in provider_params) {\n          oauthUrl.searchParams.set('provider_' + key, provider_params[key]);\n        }\n      }\n      if (login_redirect_url) oauthUrl.searchParams.set('login_redirect_url', login_redirect_url);\n      if (signup_redirect_url) oauthUrl.searchParams.set('signup_redirect_url', signup_redirect_url);\n      if (oauth_attach_token) oauthUrl.searchParams.set('oauth_attach_token', oauth_attach_token);\n\n      this.navigate(oauthUrl);\n    };\n  }\n\n  // Public so it can be mocked in tests\n  navigate(url: URL) {\n    window.location.href = url.toString();\n  }\n}\n","import { IConsumerSubscriptionService, IDFPProtectedAuthProvider, INetworkClient } from '..';\nimport {\n  IHeadlessOTPsClient,\n  OTPAuthenticateOptions,\n  OTPCodeEmailOptions,\n  OTPCodeOptions,\n  OTPCodeSMSOptions,\n  OTPsAuthenticateResponse,\n  OTPsLoginOrCreateResponse,\n  OTPsSendResponse,\n  StytchProjectConfigurationInput,\n} from '../public';\nimport { omitUser, WithUser } from '../utils';\nimport { validateInDev } from '../utils/dev';\n\nexport class HeadlessOTPClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n  implements IHeadlessOTPsClient<TProjectConfiguration>\n{\n  authenticate: (\n    code: string,\n    method_id: string,\n    options: OTPAuthenticateOptions,\n  ) => Promise<OTPsAuthenticateResponse<TProjectConfiguration>>;\n\n  constructor(\n    private _networkClient: INetworkClient,\n    private _subscriptionService: IConsumerSubscriptionService<TProjectConfiguration>,\n    private executeRecaptcha: () => Promise<string | undefined> = () => Promise.resolve(undefined),\n    private dfpProtectedAuth: IDFPProtectedAuthProvider,\n  ) {\n    this.authenticate = this._subscriptionService.withUpdateSession(\n      async (code: string, method_id: string, options: OTPAuthenticateOptions) => {\n        validateInDev(\n          'stytch.otps.authenticate',\n          { code, ...options },\n          {\n            code: 'string',\n            session_duration_minutes: 'number',\n          },\n        );\n        const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n\n        const requestBody = {\n          token: code,\n          method_id,\n          dfp_telemetry_id,\n          captcha_token,\n          ...options,\n        };\n        const resp = await this._networkClient.retriableFetchSDK<\n          WithUser<OTPsAuthenticateResponse<TProjectConfiguration>>\n        >({\n          url: '/otps/authenticate',\n          body: requestBody,\n          method: 'POST',\n          retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n        });\n\n        return omitUser(resp);\n      },\n    );\n  }\n\n  sms = {\n    loginOrCreate: async (phone_number: string, options: OTPCodeSMSOptions): Promise<OTPsLoginOrCreateResponse> => {\n      const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n      const requestBody = { ...options, phone_number, captcha_token, dfp_telemetry_id };\n      return this._networkClient.retriableFetchSDK<OTPsLoginOrCreateResponse>({\n        url: '/otps/sms/login_or_create',\n        body: requestBody,\n        method: 'POST',\n        retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n      });\n    },\n    send: async (phone_number: string, options: OTPCodeSMSOptions): Promise<OTPsSendResponse> => {\n      const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n      const requestBody = { ...options, phone_number, captcha_token, dfp_telemetry_id };\n\n      const isLoggedIn = !!this._subscriptionService.getSession();\n\n      const endpoint = isLoggedIn ? '/otps/sms/send/secondary' : '/otps/sms/send/primary';\n\n      return this._networkClient.retriableFetchSDK<OTPsSendResponse>({\n        url: endpoint,\n        body: requestBody,\n        method: 'POST',\n        retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n      });\n    },\n  };\n\n  whatsapp = {\n    loginOrCreate: async (phone_number: string, options: OTPCodeOptions): Promise<OTPsLoginOrCreateResponse> => {\n      const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n      const requestBody = { ...options, phone_number, dfp_telemetry_id, captcha_token };\n      return this._networkClient.retriableFetchSDK<OTPsLoginOrCreateResponse>({\n        url: '/otps/whatsapp/login_or_create',\n        body: requestBody,\n        method: 'POST',\n        retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n      });\n    },\n    send: async (phone_number: string, options: OTPCodeOptions): Promise<OTPsSendResponse> => {\n      const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n      const requestBody = { ...options, phone_number, captcha_token, dfp_telemetry_id };\n\n      const isLoggedIn = !!this._subscriptionService.getSession();\n\n      const endpoint = isLoggedIn ? '/otps/whatsapp/send/secondary' : '/otps/whatsapp/send/primary';\n\n      return this._networkClient.retriableFetchSDK<OTPsSendResponse>({\n        url: endpoint,\n        body: requestBody,\n        method: 'POST',\n        retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n      });\n    },\n  };\n\n  email = {\n    loginOrCreate: async (email: string, options: OTPCodeEmailOptions): Promise<OTPsLoginOrCreateResponse> => {\n      const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n      const requestBody = { ...options, email, captcha_token, dfp_telemetry_id };\n      return this._networkClient.retriableFetchSDK<OTPsLoginOrCreateResponse>({\n        url: '/otps/email/login_or_create',\n        body: requestBody,\n        method: 'POST',\n        retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n      });\n    },\n    send: async (email: string, options: OTPCodeEmailOptions): Promise<OTPsSendResponse> => {\n      const captcha_token = await this.executeRecaptcha();\n      const requestBody = { ...options, email, captcha_token };\n\n      const isLoggedIn = !!this._subscriptionService.getSession();\n\n      const endpoint = isLoggedIn ? '/otps/email/send/secondary' : '/otps/email/send/primary';\n\n      return this._networkClient.fetchSDK<OTPsSendResponse>({\n        url: endpoint,\n        body: requestBody,\n        method: 'POST',\n      });\n    },\n  };\n}\n","import { ConsumerPermissionsMap, IHeadlessRBACClient } from '../public/rbac';\nimport { StytchProjectConfigurationInput } from '../public/typeConfig';\nimport { RBACPolicy, RBACPolicyRaw } from '../rbac';\nimport { IConsumerSubscriptionService } from '../SubscriptionService';\nimport { logger } from '../utils';\n\ntype CachedConfig = {\n  rbacPolicy: RBACPolicyRaw | null;\n};\n\ntype DynamicConfig = Promise<CachedConfig>;\n\nexport class HeadlessRBACClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n  implements IHeadlessRBACClient\n{\n  private cachedPolicy: RBACPolicy | null;\n  private policyPromise: Promise<RBACPolicy>;\n  constructor(\n    cachedConfig: CachedConfig,\n    dynamicConfig: DynamicConfig,\n    private _subscriptionService: IConsumerSubscriptionService<TProjectConfiguration>,\n  ) {\n    this.cachedPolicy = cachedConfig.rbacPolicy ? RBACPolicy.fromJSON(cachedConfig.rbacPolicy) : null;\n    this.policyPromise = dynamicConfig.then((data) => {\n      if (!data.rbacPolicy) {\n        logger.error('Unable to retrieve RBAC policy from servers. Assuming caller has no permissions.');\n        return new RBACPolicy([], []);\n      }\n      // Update the existing policy too, so isAuthorizedSync will be up-to-date\n      this.cachedPolicy = RBACPolicy.fromJSON(data.rbacPolicy);\n      return this.cachedPolicy;\n    });\n  }\n\n  allPermissions<Permissions extends Record<string, string>>() {\n    return this.policyPromise.then(\n      (policy) => policy.allPermissionsForCaller(this.roleIds()) as ConsumerPermissionsMap<Permissions>,\n    );\n  }\n\n  isAuthorizedSync: IHeadlessRBACClient['isAuthorizedSync'] = (resourceId, action) => {\n    return !!this.cachedPolicy?.callerIsAuthorized(this.roleIds(), resourceId as string, action as unknown as string);\n  };\n\n  isAuthorized: IHeadlessRBACClient['isAuthorized'] = (resourceId, action) => {\n    return this.policyPromise.then((policy) =>\n      policy.callerIsAuthorized(this.roleIds(), resourceId as string, action as unknown as string),\n    );\n  };\n\n  private roleIds() {\n    const user = this._subscriptionService.getUser();\n\n    if (!user) {\n      return [];\n    }\n\n    // Although user.roles is guaranteed to exist for fresh data, there is a chance\n    // that the user stored in localstorage clientside comes from before roles were added to\n    // the API response - in which case user.roles will be undefined and this will crash\n    // TODO: [AUTH-2294] We can safely remove this ~3mos after RBAC is released\n    return user.roles ?? [];\n  }\n}\n","import { IConsumerSubscriptionService, INetworkClient } from '..';\nimport {\n  ConsumerState,\n  IHeadlessSessionClient,\n  SessionAccessTokenExchangeOptions,\n  SessionAccessTokenExchangeResponse,\n  SessionAttestOptions,\n  SessionAttestResponse,\n  SessionAuthenticateOptions,\n  SessionAuthenticateResponse,\n  SessionInfo,\n  SessionOnChangeCallback,\n  SessionRevokeOptions,\n  SessionRevokeResponse,\n  SessionTokens,\n  SessionTokensUpdate,\n  StytchProjectConfigurationInput,\n  UNRECOVERABLE_ERROR_TYPES,\n} from '../public';\nimport { ExtractOpaqueTokens, IfOpaqueTokens } from '../typeConfig';\nimport { omitUser, WithUser } from '../utils';\nimport { validateInDev } from '../utils/dev';\n\nexport class HeadlessSessionClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n  implements IHeadlessSessionClient<TProjectConfiguration>\n{\n  authenticate: (options?: SessionAuthenticateOptions) => Promise<SessionAuthenticateResponse<TProjectConfiguration>>;\n\n  exchangeAccessToken: (\n    data: SessionAccessTokenExchangeOptions,\n  ) => Promise<SessionAccessTokenExchangeResponse<TProjectConfiguration>>;\n\n  attest: (data: SessionAttestOptions) => Promise<SessionAttestResponse<TProjectConfiguration>>;\n\n  constructor(\n    private _networkClient: INetworkClient,\n    private _subscriptionService: IConsumerSubscriptionService<TProjectConfiguration>,\n  ) {\n    this.authenticate = this._subscriptionService.withUpdateSession(this._authenticate);\n\n    this.exchangeAccessToken = this._subscriptionService.withUpdateSession(\n      async (data: SessionAccessTokenExchangeOptions) => {\n        validateInDev('stytch.session.exchangeAccessToken', data, {\n          access_token: 'string',\n          session_duration_minutes: 'number',\n        });\n        const resp = await this._networkClient.fetchSDK<\n          WithUser<SessionAccessTokenExchangeResponse<TProjectConfiguration>>\n        >({\n          url: '/sessions/exchange_access_token',\n          body: data,\n          method: 'POST',\n        });\n\n        return omitUser(resp);\n      },\n    );\n\n    this.attest = this._subscriptionService.withUpdateSession(async (data: SessionAttestOptions) => {\n      validateInDev('stytch.session.attest', data, {\n        profile_id: 'string',\n        token: 'string',\n        session_duration_minutes: 'optionalNumber',\n      });\n\n      return this._networkClient.fetchSDK<SessionAttestResponse<TProjectConfiguration>>({\n        url: '/sessions/attest',\n        body: data,\n        method: 'POST',\n      });\n    });\n  }\n\n  getSync = () => {\n    return this._subscriptionService.getSession();\n  };\n\n  getInfo = (): SessionInfo => {\n    const session = this.getSync();\n    const fromCache = this._subscriptionService.getFromCache();\n    return { session, fromCache };\n  };\n\n  onChange = (callback: SessionOnChangeCallback) => {\n    let lastVal = this._subscriptionService.getSession();\n    const listener = (state: ConsumerState | null) => {\n      if (state?.session !== lastVal) {\n        lastVal = state?.session ?? null;\n        callback(lastVal);\n      }\n    };\n    return this._subscriptionService.subscribeToState(listener);\n  };\n\n  revoke = async (options?: SessionRevokeOptions) => {\n    /**\n     * Revoke destroys the local state if the API request is successful\n     * or if we return an unrecoverable error (user is unauthenticated)\n     * or if the developer passses in a forceClear option.\n     * If the API request returns a recoverable error (the user is offline),\n     * we do not destroy the local state to let the developer manually add retry\n     * logic to call revoke again.\n     */\n\n    try {\n      const resp = await this._networkClient.fetchSDK<SessionRevokeResponse>({\n        url: `/sessions/revoke`,\n        method: 'POST',\n      });\n\n      this._subscriptionService.destroyState();\n\n      return resp;\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    } catch (error: any) {\n      if (options?.forceClear) {\n        this._subscriptionService.destroyState();\n      } else if (UNRECOVERABLE_ERROR_TYPES.includes(error.error_type)) {\n        this._subscriptionService.destroyState();\n      }\n      throw error;\n    }\n  };\n\n  private _authenticate = async (\n    options?: SessionAuthenticateOptions,\n  ): Promise<SessionAuthenticateResponse<TProjectConfiguration>> => {\n    const initialSession = this._subscriptionService.getSession();\n    const isSessionStale = () => initialSession?.session_id !== this._subscriptionService.getSession()?.session_id;\n\n    try {\n      const requestBody = {\n        session_duration_minutes: options?.session_duration_minutes,\n      };\n      const resp = await this._networkClient.fetchSDK<WithUser<SessionAuthenticateResponse<TProjectConfiguration>>>({\n        url: '/sessions/authenticate',\n        body: requestBody,\n        method: 'POST',\n      });\n\n      if (isSessionStale()) {\n        // [SDK-1336] The session was updated out from under us while the\n        // request was in flight; discard the response and retry\n        return this._authenticate(options);\n      }\n\n      return omitUser(resp);\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    } catch (error: any) {\n      if (isSessionStale()) {\n        // [SDK-1336] The session was updated out from under us while the\n        // request was in flight; discard the response and retry\n        return this._authenticate(options);\n      }\n\n      if (UNRECOVERABLE_ERROR_TYPES.includes(error.error_type)) {\n        this._subscriptionService.destroySession();\n      }\n      throw error;\n    }\n  };\n\n  getTokens() {\n    return this._subscriptionService.getTokens() as IfOpaqueTokens<\n      ExtractOpaqueTokens<TProjectConfiguration>,\n      never,\n      SessionTokens | null\n    >;\n  }\n\n  updateSession(tokens: SessionTokensUpdate): void {\n    validateInDev('stytch.session.updateSession', tokens, {\n      session_token: 'string',\n      session_jwt: 'optionalString',\n    });\n    this._subscriptionService.updateTokens(tokens);\n  }\n}\n","import { IConsumerSubscriptionService, IDFPProtectedAuthProvider, INetworkClient } from '..';\nimport {\n  IHeadlessTOTPClient,\n  StytchProjectConfigurationInput,\n  TOTPAuthenticateOptions,\n  TOTPAuthenticateResponse,\n  TOTPCreateOptions,\n  TOTPCreateResponse,\n  TOTPRecoverOptions,\n  TOTPRecoverResponse,\n  TOTPRecoveryCodesResponse,\n} from '../public';\nimport { omitUser, WithUser } from '../utils';\nimport { validateInDev } from '../utils/dev';\n\nexport class HeadlessTOTPClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n  implements IHeadlessTOTPClient<TProjectConfiguration>\n{\n  authenticate: (options: TOTPAuthenticateOptions) => Promise<TOTPAuthenticateResponse<TProjectConfiguration>>;\n\n  recover: (options: TOTPRecoverOptions) => Promise<TOTPRecoverResponse<TProjectConfiguration>>;\n\n  constructor(\n    private _networkClient: INetworkClient,\n    private _subscriptionService: IConsumerSubscriptionService<TProjectConfiguration>,\n    private dfpProtectedAuth: IDFPProtectedAuthProvider,\n  ) {\n    this.authenticate = this._subscriptionService.withUpdateSession(\n      async (options: TOTPAuthenticateOptions): Promise<TOTPAuthenticateResponse<TProjectConfiguration>> => {\n        validateInDev('stytch.totps.authenticate', options, {\n          session_duration_minutes: 'number',\n          totp_code: 'string',\n        });\n\n        const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n\n        const resp = await this._networkClient.retriableFetchSDK<\n          WithUser<TOTPAuthenticateResponse<TProjectConfiguration>>\n        >({\n          url: '/totps/authenticate',\n          method: 'POST',\n          body: {\n            session_duration_minutes: options.session_duration_minutes,\n            totp_code: options.totp_code,\n            captcha_token,\n            dfp_telemetry_id,\n          },\n          retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n        });\n\n        return omitUser(resp);\n      },\n    );\n\n    this.recover = this._subscriptionService.withUpdateSession(\n      async (options: TOTPRecoverOptions): Promise<TOTPRecoverResponse<TProjectConfiguration>> => {\n        validateInDev('stytch.totps.recover', options, {\n          session_duration_minutes: 'number',\n          recovery_code: 'string',\n        });\n        const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n\n        const resp = await this._networkClient.retriableFetchSDK<WithUser<TOTPRecoverResponse<TProjectConfiguration>>>({\n          url: '/totps/recover',\n          method: 'POST',\n          body: {\n            session_duration_minutes: options.session_duration_minutes,\n            recovery_code: options.recovery_code,\n            captcha_token,\n            dfp_telemetry_id,\n          },\n          retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n        });\n\n        return omitUser(resp);\n      },\n    );\n  }\n\n  async create(options: TOTPCreateOptions): Promise<TOTPCreateResponse> {\n    validateInDev('stytch.totps.create', options, {\n      expiration_minutes: 'number',\n    });\n\n    const resp = await this._networkClient.fetchSDK<WithUser<TOTPCreateResponse>>({\n      url: '/totps',\n      method: 'POST',\n      body: {\n        expiration_minutes: options.expiration_minutes,\n      },\n    });\n\n    this._subscriptionService.updateUser(resp.__user);\n\n    return omitUser(resp);\n  }\n\n  async recoveryCodes(): Promise<TOTPRecoveryCodesResponse> {\n    return this._networkClient.fetchSDK<TOTPRecoveryCodesResponse>({\n      url: '/totps/recovery_codes',\n      method: 'POST',\n    });\n  }\n}\n","import { INetworkClient } from '../NetworkClient';\nimport {\n  ConsumerState,\n  IHeadlessUserClient,\n  ResponseCommon,\n  StytchProjectConfigurationInput,\n  UnsubscribeFunction,\n  UpdateResponse,\n  User,\n  UserGetConnectedAppsResponse,\n  UserInfo,\n  UserOnChangeCallback,\n  UserUpdateOptions,\n  UserUpdateResponse,\n} from '../public';\nimport { IConsumerSubscriptionService } from '../SubscriptionService';\nimport { omitUser, removeResponseCommon, WithUser } from '../utils';\nimport { validateInDev } from '../utils/dev';\n\nexport class HeadlessUserClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n  implements IHeadlessUserClient\n{\n  constructor(\n    private _networkClient: INetworkClient,\n    private _subscriptionService: IConsumerSubscriptionService<TProjectConfiguration>,\n  ) {}\n\n  get = async (): Promise<User> => {\n    const resp = await this._networkClient.fetchSDK<User & ResponseCommon>({\n      url: '/users/me',\n      method: 'GET',\n    });\n    const user = removeResponseCommon(resp);\n    this._subscriptionService.updateUser(user);\n    return user;\n  };\n\n  getSync = (): User | null => {\n    return this._subscriptionService.getUser();\n  };\n\n  getInfo = (): UserInfo => ({\n    user: this.getSync(),\n    fromCache: this._subscriptionService.getFromCache(),\n  });\n\n  update = async (options: UserUpdateOptions) => {\n    validateInDev('stytch.user.update', options, {\n      untrusted_metadata: 'optionalObject',\n    });\n    const resp = await this._networkClient.fetchSDK<WithUser<UserUpdateResponse>>({\n      url: '/users/me',\n      body: options,\n      method: 'PUT',\n    });\n    const user = removeResponseCommon(resp.__user);\n    this._subscriptionService.updateUser(user);\n    return omitUser(resp);\n  };\n\n  deleteEmail = async (emailId: string) => {\n    const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n      url: `/users/emails/${emailId}`,\n      method: 'DELETE',\n    });\n    const user = removeResponseCommon(resp.__user);\n    this._subscriptionService.updateUser(user);\n    return omitUser(resp);\n  };\n\n  deletePhoneNumber = async (phoneId: string) => {\n    const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n      url: `/users/phone_numbers/${phoneId}`,\n      method: 'DELETE',\n    });\n    const user = removeResponseCommon(resp.__user);\n    this._subscriptionService.updateUser(user);\n    return omitUser(resp);\n  };\n\n  deleteTOTP = async (totpId: string) => {\n    const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n      url: `/users/totps/${totpId}`,\n      method: 'DELETE',\n    });\n    const user = removeResponseCommon(resp.__user);\n    this._subscriptionService.updateUser(user);\n    return omitUser(resp);\n  };\n\n  deleteCryptoWallet = async (cryptoWalletId: string) => {\n    const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n      url: `/users/crypto_wallets/${cryptoWalletId}`,\n      method: 'DELETE',\n    });\n    const user = removeResponseCommon(resp.__user);\n    this._subscriptionService.updateUser(user);\n    return omitUser(resp);\n  };\n\n  deleteOAuthRegistration = async (oauthUserRegistrationId: string) => {\n    const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n      url: `/users/oauth/${oauthUserRegistrationId}`,\n      method: 'DELETE',\n    });\n    const user = removeResponseCommon(resp.__user);\n    this._subscriptionService.updateUser(user);\n    return omitUser(resp);\n  };\n\n  deleteWebauthnRegistration = async (webAuthnId: string) => {\n    const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n      url: `/users/webauthn_registrations/${webAuthnId}`,\n      method: 'DELETE',\n    });\n    const user = removeResponseCommon(resp.__user);\n    this._subscriptionService.updateUser(user);\n    return omitUser(resp);\n  };\n\n  deleteBiometricRegistration = async (biometricRegistrationId: string) => {\n    const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n      url: `/users/biometric_registrations/${biometricRegistrationId}`,\n      method: 'DELETE',\n    });\n    const user = removeResponseCommon(resp.__user);\n    this._subscriptionService.updateUser(user);\n    return omitUser(resp);\n  };\n\n  onChange = (callback: UserOnChangeCallback): UnsubscribeFunction => {\n    let lastVal = this._subscriptionService.getUser();\n    const listener = (state: ConsumerState | null) => {\n      if (state?.user !== lastVal) {\n        lastVal = state?.user ?? null;\n        callback(lastVal);\n      }\n    };\n    return this._subscriptionService.subscribeToState(listener);\n  };\n\n  getConnectedApps = async () => {\n    return await this._networkClient.fetchSDK<UserGetConnectedAppsResponse>({\n      url: '/users/connected_apps',\n      method: 'GET',\n    });\n  };\n\n  revokedConnectedApp = async (connectedAppId: string) => {\n    return await this._networkClient.fetchSDK<ResponseCommon>({\n      url: `/users/connected_apps/${connectedAppId}/revoke`,\n      method: 'POST',\n    });\n  };\n}\n","// src/webauthn-json/base64url.ts\nfunction base64urlToBuffer(baseurl64String) {\n  const padding = \"==\".slice(0, (4 - baseurl64String.length % 4) % 4);\n  const base64String = baseurl64String.replace(/-/g, \"+\").replace(/_/g, \"/\") + padding;\n  const str = atob(base64String);\n  const buffer = new ArrayBuffer(str.length);\n  const byteView = new Uint8Array(buffer);\n  for (let i = 0; i < str.length; i++) {\n    byteView[i] = str.charCodeAt(i);\n  }\n  return buffer;\n}\nfunction bufferToBase64url(buffer) {\n  const byteView = new Uint8Array(buffer);\n  let str = \"\";\n  for (const charCode of byteView) {\n    str += String.fromCharCode(charCode);\n  }\n  const base64String = btoa(str);\n  const base64urlString = base64String.replace(/\\+/g, \"-\").replace(\n    /\\//g,\n    \"_\"\n  ).replace(/=/g, \"\");\n  return base64urlString;\n}\n\n// src/webauthn-json/convert.ts\nvar copyValue = \"copy\";\nvar convertValue = \"convert\";\nfunction convert(conversionFn, schema2, input) {\n  if (schema2 === copyValue) {\n    return input;\n  }\n  if (schema2 === convertValue) {\n    return conversionFn(input);\n  }\n  if (schema2 instanceof Array) {\n    return input.map((v) => convert(conversionFn, schema2[0], v));\n  }\n  if (schema2 instanceof Object) {\n    const output = {};\n    for (const [key, schemaField] of Object.entries(schema2)) {\n      if (schemaField.derive) {\n        const v = schemaField.derive(input);\n        if (v !== void 0) {\n          input[key] = v;\n        }\n      }\n      if (!(key in input)) {\n        if (schemaField.required) {\n          throw new Error(`Missing key: ${key}`);\n        }\n        continue;\n      }\n      if (input[key] == null) {\n        output[key] = null;\n        continue;\n      }\n      output[key] = convert(\n        conversionFn,\n        schemaField.schema,\n        input[key]\n      );\n    }\n    return output;\n  }\n}\nfunction derived(schema2, derive) {\n  return {\n    required: true,\n    schema: schema2,\n    derive\n  };\n}\nfunction required(schema2) {\n  return {\n    required: true,\n    schema: schema2\n  };\n}\nfunction optional(schema2) {\n  return {\n    required: false,\n    schema: schema2\n  };\n}\n\n// src/webauthn-json/basic/schema.ts\nvar publicKeyCredentialDescriptorSchema = {\n  type: required(copyValue),\n  id: required(convertValue),\n  transports: optional(copyValue)\n};\nvar simplifiedExtensionsSchema = {\n  appid: optional(copyValue),\n  appidExclude: optional(copyValue),\n  credProps: optional(copyValue)\n};\nvar simplifiedClientExtensionResultsSchema = {\n  appid: optional(copyValue),\n  appidExclude: optional(copyValue),\n  credProps: optional(copyValue)\n};\nvar credentialCreationOptions = {\n  publicKey: required({\n    rp: required(copyValue),\n    user: required({\n      id: required(convertValue),\n      name: required(copyValue),\n      displayName: required(copyValue)\n    }),\n    challenge: required(convertValue),\n    pubKeyCredParams: required(copyValue),\n    timeout: optional(copyValue),\n    excludeCredentials: optional([publicKeyCredentialDescriptorSchema]),\n    authenticatorSelection: optional(copyValue),\n    attestation: optional(copyValue),\n    extensions: optional(simplifiedExtensionsSchema)\n  }),\n  signal: optional(copyValue)\n};\nvar publicKeyCredentialWithAttestation = {\n  type: required(copyValue),\n  id: required(copyValue),\n  rawId: required(convertValue),\n  authenticatorAttachment: optional(copyValue),\n  response: required({\n    clientDataJSON: required(convertValue),\n    attestationObject: required(convertValue),\n    transports: derived(\n      copyValue,\n      (response) => {\n        var _a;\n        return ((_a = response.getTransports) == null ? void 0 : _a.call(response)) || [];\n      }\n    )\n  }),\n  clientExtensionResults: derived(\n    simplifiedClientExtensionResultsSchema,\n    (pkc) => pkc.getClientExtensionResults()\n  )\n};\nvar credentialRequestOptions = {\n  mediation: optional(copyValue),\n  publicKey: required({\n    challenge: required(convertValue),\n    timeout: optional(copyValue),\n    rpId: optional(copyValue),\n    allowCredentials: optional([publicKeyCredentialDescriptorSchema]),\n    userVerification: optional(copyValue),\n    extensions: optional(simplifiedExtensionsSchema)\n  }),\n  signal: optional(copyValue)\n};\nvar publicKeyCredentialWithAssertion = {\n  type: required(copyValue),\n  id: required(copyValue),\n  rawId: required(convertValue),\n  authenticatorAttachment: optional(copyValue),\n  response: required({\n    clientDataJSON: required(convertValue),\n    authenticatorData: required(convertValue),\n    signature: required(convertValue),\n    userHandle: required(convertValue)\n  }),\n  clientExtensionResults: derived(\n    simplifiedClientExtensionResultsSchema,\n    (pkc) => pkc.getClientExtensionResults()\n  )\n};\nvar schema = {\n  credentialCreationOptions,\n  publicKeyCredentialWithAttestation,\n  credentialRequestOptions,\n  publicKeyCredentialWithAssertion\n};\n\n// src/webauthn-json/basic/api.ts\nfunction createRequestFromJSON(requestJSON) {\n  return convert(base64urlToBuffer, credentialCreationOptions, requestJSON);\n}\nfunction createResponseToJSON(credential) {\n  return convert(\n    bufferToBase64url,\n    publicKeyCredentialWithAttestation,\n    credential\n  );\n}\nasync function create(requestJSON) {\n  const credential = await navigator.credentials.create(\n    createRequestFromJSON(requestJSON)\n  );\n  return createResponseToJSON(credential);\n}\nfunction getRequestFromJSON(requestJSON) {\n  return convert(base64urlToBuffer, credentialRequestOptions, requestJSON);\n}\nfunction getResponseToJSON(credential) {\n  return convert(\n    bufferToBase64url,\n    publicKeyCredentialWithAssertion,\n    credential\n  );\n}\nasync function get(requestJSON) {\n  const credential = await navigator.credentials.get(\n    getRequestFromJSON(requestJSON)\n  );\n  return getResponseToJSON(credential);\n}\n\n// src/webauthn-json/basic/supported.ts\nfunction supported() {\n  return !!(navigator.credentials && navigator.credentials.create && navigator.credentials.get && window.PublicKeyCredential);\n}\nexport {\n  create,\n  get,\n  schema,\n  supported\n};\n//# sourceMappingURL=webauthn-json.js.map\n","import * as webauthnJson from '@github/webauthn-json';\n\nimport { IConsumerSubscriptionService, IDFPProtectedAuthProvider, INetworkClient } from '..';\nimport {\n  IHeadlessWebAuthnClient,\n  StytchProjectConfigurationInput,\n  WebAuthnAuthenticateResponse,\n  WebAuthnAuthenticateStartOptions,\n  WebAuthnAuthenticateStartResponse,\n  WebAuthnRegisterResponse,\n  WebAuthnRegisterStartOptions,\n  WebAuthnRegisterStartResponse,\n  WebAuthnUpdateOptions,\n  WebAuthnUpdateResponse,\n} from '../public';\nimport { logger, omitUser, WithUser } from '../utils';\nimport { validateInDev } from '../utils/dev';\n\nexport class HeadlessWebAuthnClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n  implements IHeadlessWebAuthnClient<TProjectConfiguration>\n{\n  register: (options: WebAuthnRegisterStartOptions) => Promise<WebAuthnRegisterResponse<TProjectConfiguration>>;\n\n  authenticate: (\n    options: WebAuthnAuthenticateStartOptions,\n  ) => Promise<WebAuthnAuthenticateResponse<TProjectConfiguration> | null>;\n\n  constructor(\n    public _networkClient: INetworkClient,\n    private _subscriptionService: IConsumerSubscriptionService<TProjectConfiguration>,\n    private dfpProtectedAuth: IDFPProtectedAuthProvider,\n  ) {\n    this.register = this._subscriptionService.withUpdateSession(\n      async (options?: WebAuthnRegisterStartOptions): Promise<WebAuthnRegisterResponse<TProjectConfiguration>> => {\n        if (options) {\n          validateInDev('stytch.webauthn.register', options, {\n            domain: 'optionalString',\n            authenticator_type: 'optionalString',\n            is_passkey: 'optionalBoolean',\n            session_duration_minutes: 'number',\n            override_id: 'optionalString',\n            override_name: 'optionalString',\n            override_display_name: 'optionalString',\n            use_base64_url_encoding: 'optionalBoolean',\n          });\n        }\n\n        const startResp = await this._networkClient.fetchSDK<WebAuthnRegisterStartResponse>({\n          url: '/webauthn/register/start',\n          method: 'POST',\n          body: {\n            domain: options?.domain ?? window.location.hostname,\n            authenticator_type: options?.authenticator_type ?? undefined,\n            return_passkey_credential_options: options?.is_passkey,\n            override_id: options?.override_id,\n            override_name: options?.override_name,\n            override_display_name: options?.override_display_name,\n            user_agent: navigator.userAgent,\n            use_base64_url_encoding: options?.use_base64_url_encoding,\n          },\n        });\n\n        const publicKeyCredentialCreationOptions = startResp.public_key_credential_creation_options;\n        const publicKey = JSON.parse(publicKeyCredentialCreationOptions);\n\n        const credential = await webauthnJson.create({\n          publicKey: publicKey,\n        });\n\n        const resp = await this._networkClient.fetchSDK<WithUser<WebAuthnRegisterResponse<TProjectConfiguration>>>({\n          url: '/webauthn/register',\n          method: 'POST',\n          body: {\n            public_key_credential: JSON.stringify(credential),\n            session_duration_minutes: options?.session_duration_minutes,\n          },\n        });\n\n        return omitUser(resp);\n      },\n    );\n\n    this.authenticate = this._subscriptionService.withUpdateSession(\n      async (\n        options: WebAuthnAuthenticateStartOptions,\n      ): Promise<WebAuthnAuthenticateResponse<TProjectConfiguration> | null> => {\n        validateInDev('stytch.webauthn.authenticate', options, {\n          domain: 'optionalString',\n          session_duration_minutes: 'number',\n          is_passkey: 'optionalBoolean',\n          signal: 'optionalObject',\n          conditional_mediation: 'optionalBoolean',\n          disable_input_check: 'optionalBoolean',\n        });\n        const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n\n        if (options.conditional_mediation) {\n          if (!(await this.browserSupportsAutofill())) {\n            logger.error('Browser does not support WebAuthn autofill');\n            return null;\n          }\n\n          if (!options.disable_input_check && !this.checkEligibleInputs()) {\n            return null;\n          }\n        }\n\n        const isLoggedIn = !!this._subscriptionService.getSession();\n\n        const endpoint = isLoggedIn ? '/webauthn/authenticate/start/secondary' : '/webauthn/authenticate/start/primary';\n\n        const startResp = await this._networkClient.fetchSDK<WebAuthnAuthenticateStartResponse>({\n          url: endpoint,\n          method: 'POST',\n          body: {\n            domain: options.domain ?? window.location.hostname,\n            return_passkey_credential_options: options?.is_passkey,\n          },\n        });\n\n        const publicKeyCredentialRequestOptions = startResp.public_key_credential_request_options;\n        const abortController = new AbortController();\n        const credReqOptions = {\n          publicKey: JSON.parse(publicKeyCredentialRequestOptions),\n          signal: options.signal ?? abortController.signal,\n        };\n        const conditionalMediationCredReqOption = {\n          ...credReqOptions,\n          mediation: 'conditional' as CredentialMediationRequirement,\n        };\n        const credential = await webauthnJson.get(\n          options.conditional_mediation ? conditionalMediationCredReqOption : credReqOptions,\n        );\n\n        const authenticationData = await this._networkClient.retriableFetchSDK<\n          WithUser<WebAuthnAuthenticateResponse<TProjectConfiguration>>\n        >({\n          url: '/webauthn/authenticate',\n          method: 'POST',\n          body: {\n            public_key_credential: JSON.stringify(credential),\n            session_duration_minutes: options.session_duration_minutes,\n            dfp_telemetry_id,\n            captcha_token,\n          },\n          retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n        });\n\n        return omitUser(authenticationData);\n      },\n    );\n  }\n\n  async update(options: WebAuthnUpdateOptions): Promise<WebAuthnUpdateResponse> {\n    validateInDev('stytch.webauthn.update', options, {\n      webauthn_registration_id: 'string',\n      name: 'string',\n    });\n\n    const url = '/webauthn/update/' + options.webauthn_registration_id;\n    return await this._networkClient.fetchSDK<WebAuthnUpdateResponse>({\n      url: url,\n      method: 'PUT',\n      body: {\n        name: options.name,\n      },\n    });\n  }\n\n  async browserSupportsAutofill(): Promise<boolean> {\n    return (await window.PublicKeyCredential?.isConditionalMediationAvailable?.()) ?? false;\n  }\n\n  private checkEligibleInputs = (): boolean => {\n    // Check for an <input> with \"webauthn\" in its `autocomplete` attribute\n    const eligibleInputs = document.querySelectorAll(\"input[autocomplete*='webauthn']\");\n    // WebAuthn autofill requires at least one valid input\n    if (eligibleInputs.length < 1) {\n      logger.error('No <input> with `\"webauthn\"` in its `autocomplete` attribute was detected');\n      return false;\n    }\n    return true;\n  };\n}\n","import {\n  HeadlessOAuthClient as BaseHeadlessOAuthClient,\n  IConsumerSubscriptionService,\n  INetworkClient,\n  IPKCEManager,\n} from '@stytch/core';\nimport { IHeadlessOAuthClient, OneTapPositions, StytchProjectConfigurationInput } from '@stytch/core/public';\n\nimport { OneTapRenderResult } from './oneTap/GoogleOneTapClient';\nimport { OneTapProvider } from './oneTap/OneTapProvider';\n\nexport type GoogleOneTapOAuthOptions = {\n  /**\n   * The URL that Stytch redirects to after the OAuth flow is completed for a user that already exists.\n   * This URL should be an endpoint in the backend server that verifies the request by querying Stytch's /oauth/authenticate endpoint and finishes the login.\n   * The URL should be configured as a Login URL in the Stytch Dashboard's Redirect URL page.\n   * If the field is not specified, the default in the Dashboard is used.\n   */\n  login_redirect_url?: string;\n  /**\n   * The URL that Stytch redirects to after the OAuth flow is completed for a user that does not yet exist.\n   * This URL should be an endpoint in the backend server that verifies the request by querying Stytch's /oauth/authenticate endpoint and finishes the login.\n   * The URL should be configured as a Sign Up URL in the Stytch Dashboard's Redirect URL page.\n   * If the field is not specified, the default in the Dashboard is used.\n   */\n  signup_redirect_url?: string;\n  /**\n   * An optional callback function that runs when a user explicitly cancels out of the one tap flow.\n   * This callback may not be invoked immediately or at all depending on the behavior of the browser and Google's SDK.\n   */\n  onOneTapCancelled?: () => void;\n  /**\n   * Controls whether clicking outside the One Tap prompt dismisses the prompt.\n   * Defaults to true.\n   */\n  cancel_on_tap_outside?: boolean;\n};\n\ninterface IGoogleOneTapOAuthProvider {\n  /**\n   * Start an OAuth flow by showing the Google one tap prompt in the top right corner of the user's browser.\n   * You can configure this to be started by a user action (i.e Button click) or on load/render.\n   * @example\n   * const showGoogleOneTap = useCallback(()=> {\n   *   stytch.oauth.googleOneTap.start({\n   *     login_redirect_url: 'https://example.com/oauth/callback',\n   *     signup_redirect_url: 'https://example.com/oauth/callback',\n   *   })\n   * }, [stytch]);\n   * return (\n   *   <Button onClick={showGoogleOneTap}> Show Google one tap </Button>\n   * );\n   *\n   * @param options - An {@link GoogleOneTapOAuthOptions} object\n   *\n   * @returns A {@link OneTapRenderResult} object. The result object includes if the one-tap prompt\n   * was rendered, and a reason if it couldn't be rendered.\n   *\n   * @throws An Error if the one tap client cannot be created.\n   */\n  start(options?: GoogleOneTapOAuthOptions): Promise<OneTapRenderResult>;\n}\n\ntype DynamicConfig = Promise<{\n  cnameDomain: null | string;\n  pkceRequiredForOAuth: boolean;\n}>;\ntype Config = {\n  publicToken: string;\n  testAPIURL: string;\n  liveAPIURL: string;\n};\n\nexport interface IWebOAuthClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n  extends IHeadlessOAuthClient<TProjectConfiguration> {\n  googleOneTap: IGoogleOneTapOAuthProvider;\n}\n\nexport class HeadlessOAuthClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n  extends BaseHeadlessOAuthClient<TProjectConfiguration>\n  implements IWebOAuthClient<TProjectConfiguration>\n{\n  constructor(\n    _networkClient: INetworkClient,\n    _subscriptionService: IConsumerSubscriptionService<TProjectConfiguration>,\n    _pkceManager: IPKCEManager,\n    _dynamicConfig: DynamicConfig,\n    _config: Config,\n    private _oneTap: OneTapProvider,\n  ) {\n    super(_networkClient, _subscriptionService, _pkceManager, _dynamicConfig, _config);\n  }\n\n  private startOneTap = async (options: GoogleOneTapOAuthOptions): Promise<OneTapRenderResult> => {\n    const clientResult = await this._oneTap.createOneTapClient();\n    if (!clientResult.success) {\n      throw new Error(`One Tap could not load: ${clientResult.reason}`);\n    }\n\n    const { client } = clientResult;\n\n    const onSuccessCallback = this._oneTap.createOnSuccessHandler({\n      signupRedirectUrl: options.signup_redirect_url,\n      loginRedirectUrl: options.login_redirect_url,\n      onSuccess: this._oneTap.redirectOnSuccess,\n    });\n\n    return client.render({\n      style: {\n        position: OneTapPositions.floating,\n      },\n      onOneTapCancelled: options.onOneTapCancelled,\n      callback: onSuccessCallback,\n      cancelOnTapOutside: options.cancel_on_tap_outside,\n    });\n  };\n\n  googleOneTap: IGoogleOneTapOAuthProvider = {\n    start: this.startOneTap,\n  };\n}\n","import {\n  checkNotSSR,\n  checkPublicToken,\n  DFPProtectedAuthProvider,\n  HeadlessCryptoWalletClient,\n  HeadlessIDPClient,\n  HeadlessImpersonationClient,\n  HeadlessMagicLinksClient,\n  HeadlessOTPClient,\n  HeadlessPasswordClient,\n  HeadlessRBACClient,\n  HeadlessSessionClient,\n  HeadlessTOTPClient,\n  HeadlessUserClient,\n  HeadlessWebAuthnClient,\n  INetworkClient,\n  logger,\n  SearchDataManager,\n  SessionManager,\n  StateChangeClient,\n  StateChangeRegisterFunction,\n  VERTICAL_B2B,\n} from '@stytch/core';\nimport {\n  ConsumerState,\n  IHeadlessCryptoWalletClient,\n  IHeadlessImpersonationClient,\n  IHeadlessMagicLinksClient,\n  IHeadlessOTPsClient,\n  IHeadlessPasswordClient,\n  IHeadlessRBACClient,\n  IHeadlessSessionClient,\n  IHeadlessTOTPClient,\n  IHeadlessUserClient,\n  IHeadlessWebAuthnClient,\n  StytchClientOptions,\n  StytchProjectConfigurationInput,\n} from '@stytch/core/public';\n\nimport { BootstrapDataManager } from './BootstrapDataManager';\nimport { CaptchaProvider } from './CaptchaProvider';\nimport { ClientsideServicesProvider } from './ClientsideServicesProvider';\nimport { HeadlessOAuthClient, IWebOAuthClient } from './HeadlessOAuthClient';\nimport { NetworkClient } from './NetworkClient';\nimport { OneTapProvider } from './oneTap/OneTapProvider';\nimport { PKCEManager } from './PKCEManager';\nimport {\n  ConsumerSubscriptionDataLayer,\n  ConsumerSubscriptionService,\n  getConsumerDataLayer,\n} from './SubscriptionService';\nimport { buildFinalConfig, hasCustomApiEndpoint } from './utils/config';\nimport { AuthenticateByUrl, createAuthUrlHandler, ParseAuthenticateUrl } from './utils/createAuthUrlHandler';\nimport { writeB2CInternals } from './utils/internal';\n\nexport type HandledTokenType = 'magic_links' | 'oauth' | 'impersonation';\n\n/**\n * A headless client used for invoking the Stytch API.\n * The Stytch Headless Client can be used as a drop-in solution for authentication and session management.\n * Full documentation can be found {@link https://stytch.com/docs/sdks/javascript-sdk online}.\n * @example\n * const stytch = new StytchClient('public-token-<find yours in the stytch dashboard>');\n * stytch.magicLinks.email.loginOrCreate('sandbox@stytch.com', {\n *   login_magic_link_url: 'https://example.com/authenticate',\n *   login_expiration_minutes: 60,\n *   signup_magic_link_url: 'https://example.com/authenticate',\n *   signup_expiration_minutes: 60,\n * });\n */\nexport class StytchClient<\n  TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n> {\n  private readonly _subscriptionService: ConsumerSubscriptionService<TProjectConfiguration>;\n  private readonly _sessionManager: SessionManager<TProjectConfiguration>;\n  private readonly _networkClient: INetworkClient;\n  private readonly _dataLayer: ConsumerSubscriptionDataLayer;\n  private readonly _stateChangeClient: StateChangeClient<ConsumerState>;\n\n  // External API Clients\n  user: IHeadlessUserClient;\n  magicLinks: IHeadlessMagicLinksClient<TProjectConfiguration>;\n  session: IHeadlessSessionClient<TProjectConfiguration>;\n  otps: IHeadlessOTPsClient<TProjectConfiguration>;\n  oauth: IWebOAuthClient<TProjectConfiguration>;\n  cryptoWallets: IHeadlessCryptoWalletClient<TProjectConfiguration>;\n  totps: IHeadlessTOTPClient<TProjectConfiguration>;\n  webauthn: IHeadlessWebAuthnClient<TProjectConfiguration>;\n  passwords: IHeadlessPasswordClient<TProjectConfiguration>;\n  impersonation: IHeadlessImpersonationClient<TProjectConfiguration>;\n  rbac: IHeadlessRBACClient;\n  idp: HeadlessIDPClient;\n\n  // External methods\n  /**\n   * Register a callback function to be invoked whenever certain state changes\n   * occur, like a user or session object being updated.\n   *\n   * This is an alternative to more specific methods like `user.onChange` and\n   * `session.onChange`. It can be helpful if you want to be notified of related\n   * changes to different parts of state at once.\n   *\n   * If you are only interested in specific state changes, consider using more\n   * specific methods like `user.onChange` and `session.onChange` instead.\n   */\n  onStateChange: StateChangeRegisterFunction<ConsumerState>;\n\n  /**\n   * Extracts token and token type from the current page URL's query parameters.\n   * If the current URL do not have the required query params, this will return null.\n   * Otherwise, returns an object { handled: boolean, tokenType: string, token: string }\n   */\n  parseAuthenticateUrl: ParseAuthenticateUrl<HandledTokenType>;\n\n  /**\n   * Call this method to authenticate the user when the user has been redirected\n   * to this page with a token in the query parameters, such as after OAuth\n   * or through an email magic link. This method currently supports\n   *\n   * - Magic links\n   * - OAuth\n   * - Impersonation\n   *\n   * Returns null if token or stytch_token_type query parameters are not present,\n   * or returns an unhandled result if the token type is not recognized.\n   */\n  authenticateByUrl: AuthenticateByUrl<HandledTokenType>;\n\n  constructor(publicTokenRaw: string, options?: StytchClientOptions) {\n    checkNotSSR();\n\n    // Intentionally check the raw public token so that we can log a correct error message,\n    // but then coalesce to an empty string so that the UI components don't fail to render.\n    checkPublicToken(publicTokenRaw);\n    const _PUBLIC_TOKEN = publicTokenRaw ?? '';\n\n    // Not casting to InternalStytchClientOptions since InternalStytchClientOptions is currently a superset\n    const config = buildFinalConfig(this.constructor.name, options);\n    const usingCustomApiEndpoint = hasCustomApiEndpoint(_PUBLIC_TOKEN, options);\n\n    this._dataLayer = getConsumerDataLayer(_PUBLIC_TOKEN, config);\n    this._subscriptionService = new ConsumerSubscriptionService(_PUBLIC_TOKEN, this._dataLayer, {\n      usingCustomApiEndpoint,\n    });\n    this._stateChangeClient = new StateChangeClient(this._subscriptionService, {});\n    this.onStateChange = (...args) => this._stateChangeClient.onStateChange(...args);\n\n    const additionalTelemetryDataFn = () => ({\n      stytch_user_id: this._dataLayer.state?.user?.user_id,\n      stytch_session_id: this._dataLayer.state?.session?.session_id,\n    });\n\n    const passwordsPKCEManager = new PKCEManager(this._dataLayer, 'passwords');\n    const networkClient = new NetworkClient(\n      _PUBLIC_TOKEN,\n      this._dataLayer,\n      config.endpoints.liveAPIURL,\n      config.endpoints.testAPIURL,\n      additionalTelemetryDataFn,\n    );\n    this._networkClient = networkClient;\n\n    const bootstrap = new BootstrapDataManager(_PUBLIC_TOKEN, this._networkClient, this._dataLayer);\n    const captcha = new CaptchaProvider(bootstrap.getAsync());\n    const dfpProtectedAuth = new DFPProtectedAuthProvider(\n      _PUBLIC_TOKEN,\n      config.endpoints.dfpBackendURL,\n      config.endpoints.dfpCdnURL,\n      bootstrap.getAsync(),\n      captcha.executeRecaptcha,\n    );\n    const clientsideServices = new ClientsideServicesProvider(config.endpoints.clientsideServicesIframeURL);\n    const oneTap = new OneTapProvider(_PUBLIC_TOKEN, clientsideServices);\n    const searchManager = new SearchDataManager(this._networkClient, dfpProtectedAuth);\n\n    this.user = new HeadlessUserClient(this._networkClient, this._subscriptionService);\n    this.session = new HeadlessSessionClient(this._networkClient, this._subscriptionService);\n    this.magicLinks = new HeadlessMagicLinksClient(\n      this._networkClient,\n      this._subscriptionService,\n      new PKCEManager(this._dataLayer, 'magic_links'),\n      passwordsPKCEManager,\n      bootstrap.getAsync(),\n      dfpProtectedAuth,\n    );\n    this.otps = new HeadlessOTPClient(\n      this._networkClient,\n      this._subscriptionService,\n      captcha.executeRecaptcha,\n      dfpProtectedAuth,\n    );\n    this.oauth = new HeadlessOAuthClient(\n      this._networkClient,\n      this._subscriptionService,\n      new PKCEManager(this._dataLayer, 'oauth'),\n      bootstrap.getAsync(),\n      {\n        publicToken: _PUBLIC_TOKEN,\n        testAPIURL: config.endpoints.testAPIURL,\n        liveAPIURL: config.endpoints.liveAPIURL,\n      },\n      oneTap,\n    );\n    this.cryptoWallets = new HeadlessCryptoWalletClient(\n      this._networkClient,\n      this._networkClient,\n      this._subscriptionService,\n      captcha.executeRecaptcha,\n      dfpProtectedAuth,\n      bootstrap.getAsync(),\n    );\n    this.totps = new HeadlessTOTPClient(this._networkClient, this._subscriptionService, dfpProtectedAuth);\n    this.webauthn = new HeadlessWebAuthnClient(this._networkClient, this._subscriptionService, dfpProtectedAuth);\n    this.passwords = new HeadlessPasswordClient(\n      this._networkClient,\n      this._subscriptionService,\n      passwordsPKCEManager,\n      bootstrap.getAsync(),\n      dfpProtectedAuth,\n    );\n    this.impersonation = new HeadlessImpersonationClient(\n      this._networkClient,\n      this._subscriptionService,\n      dfpProtectedAuth,\n    );\n\n    this.rbac = new HeadlessRBACClient(bootstrap.getSync(), bootstrap.getAsync(), this._subscriptionService);\n    this.idp = new HeadlessIDPClient(this._networkClient);\n    this._sessionManager = new SessionManager(this._subscriptionService, this.session, _PUBLIC_TOKEN, {\n      keepSessionAlive: config.keepSessionAlive,\n    });\n\n    // If the session does not exist in localstorage (like if we are in an iframe)\n    // then the cookie might still be set and we can retrieve the session via an API call.\n    // If a custom API endpoint is being used, the session may be being managed by\n    // HttpOnly cookies, which we can't detect.\n    if (usingCustomApiEndpoint || this._dataLayer.readSessionCookie().session_token) {\n      this._sessionManager.performBackgroundRefresh();\n    }\n\n    this._networkClient.logEvent({\n      name: 'sdk_instance_instantiated',\n      details: {\n        event_callback_registered: false,\n        error_callback_registered: false,\n        success_callback_registered: false,\n      },\n    });\n\n    bootstrap.getAsync().then((bootstrapData) => {\n      if (bootstrapData.vertical === VERTICAL_B2B) {\n        logger.error(\n          'This application is using a Stytch client for Consumer projects, but the public token is for a Stytch B2B project. Use a B2B Stytch client instead, or verify that the public token is correct.',\n        );\n      }\n    });\n\n    const { authenticateByUrl, parseAuthenticateUrl } = createAuthUrlHandler({\n      magic_links: (token, options) => this.magicLinks.authenticate(token, options),\n      oauth: (token, options) => this.oauth.authenticate(token, options),\n      impersonation: (token: string) => this.impersonation.authenticate({ impersonation_token: token }),\n    });\n\n    this.authenticateByUrl = authenticateByUrl;\n    this.parseAuthenticateUrl = parseAuthenticateUrl;\n\n    writeB2CInternals(this, {\n      bootstrap,\n      clientsideServices,\n      captcha,\n      oneTap,\n      searchManager,\n      publicToken: _PUBLIC_TOKEN,\n      dataLayer: this._dataLayer,\n      networkClient: this._networkClient,\n    });\n  }\n}\n","import { StytchClient } from './StytchClient';\nimport { ssrSafeClientFactory } from './ui/react/bindings/StytchSSRProxy';\n\n/**\n * Creates a Headless Stytch client object to call the stytch APIs.\n * The Stytch client is not available serverside.\n * @example\n * const stytch = createStytchClient('public-token-<find yours in the stytch dashboard>')\n *\n * return (\n *   <StytchProvider stytch={stytch}>\n *     <App />\n *   </StytchProvider>\n * )\n * @returns A {@link StytchClient}\n */\nexport const createStytchClient = ssrSafeClientFactory(StytchClient);\n\n/**\n * @deprecated Use createStytchClient instead\n */\nexport const createStytchHeadlessClient = createStytchClient;\n\n/**\n * @deprecated Use StytchClient instead\n */\nexport const StytchHeadlessClient = StytchClient;\n\nexport { StytchClient };\n\nexport type { OAuthAuthorizeParams, OAuthLogoutParams } from './utils/idpHelpers';\nexport { parseOAuthAuthorizeParams, parseOAuthLogoutParams } from './utils/idpHelpers';\nexport * from '@stytch/core/public';\n"],"names":["HeadlessIDPClient","_networkClient","oauthAuthorizeStart","data","fetchSDK","url","method","body","oauthAuthorizeSubmit","oauthLogoutStart","HeadlessImpersonationClient","authenticate","_subscriptionService","dfpProtectedAuth","withUpdateSession","validateInDev","impersonation_token","dfp_telemetry_id","captcha_token","getDFPTelemetryIDAndCaptcha","retriableFetchSDK","retryCallback","retryWithCaptchaAndDFP","HeadlessOAuthClient","_pkceManager","_config","_dynamicConfig","token","options","session_duration_minutes","keyPair","getPKPair","logger","warn","resp","code_verifier","clearPKPair","omitUser","google","start","startOAuthFlow","OAuthProviders","Google","apple","Apple","microsoft","Microsoft","github","Github","gitlab","GitLab","facebook","Facebook","discord","Discord","salesforce","Salesforce","slack","Slack","amazon","Amazon","bitbucket","Bitbucket","linkedin","LinkedIn","coinbase","Coinbase","twitch","Twitch","twitter","Twitter","tiktok","TikTok","snapchat","Snapchat","figma","Figma","yahoo","Yahoo","attach","provider","getBaseApiUrl","cnameDomain","isTestPublicToken","publicToken","testAPIURL","liveAPIURL","providerType","login_redirect_url","signup_redirect_url","custom_scopes","provider_params","oauth_attach_token","pkceRequiredForOAuth","baseURL","logEvent","name","details","provider_type","cname_domain","pkce","oauthUrl","URL","searchParams","set","startPKCETransaction","code_challenge","join","key","navigate","window","location","href","toString","HeadlessOTPClient","executeRecaptcha","Promise","resolve","undefined","code","method_id","requestBody","sms","loginOrCreate","phone_number","send","isLoggedIn","getSession","endpoint","whatsapp","email","HeadlessRBACClient","cachedPolicy","policyPromise","cachedConfig","dynamicConfig","rbacPolicy","RBACPolicy","fromJSON","then","error","allPermissions","policy","allPermissionsForCaller","roleIds","isAuthorizedSync","resourceId","action","callerIsAuthorized","isAuthorized","user","getUser","roles","HeadlessSessionClient","exchangeAccessToken","attest","_authenticate","access_token","profile_id","getSync","getInfo","session","fromCache","getFromCache","onChange","callback","lastVal","listener","state","subscribeToState","revoke","destroyState","forceClear","UNRECOVERABLE_ERROR_TYPES","includes","error_type","initialSession","isSessionStale","session_id","destroySession","getTokens","updateSession","tokens","session_token","session_jwt","updateTokens","HeadlessTOTPClient","recover","totp_code","recovery_code","create","expiration_minutes","updateUser","__user","recoveryCodes","HeadlessUserClient","get","removeResponseCommon","update","untrusted_metadata","deleteEmail","emailId","deletePhoneNumber","phoneId","deleteTOTP","totpId","deleteCryptoWallet","cryptoWalletId","deleteOAuthRegistration","oauthUserRegistrationId","deleteWebauthnRegistration","webAuthnId","deleteBiometricRegistration","biometricRegistrationId","getConnectedApps","revokedConnectedApp","connectedAppId","HeadlessWebAuthnClient","register","domain","authenticator_type","is_passkey","override_id","override_name","override_display_name","use_base64_url_encoding","startResp","hostname","return_passkey_credential_options","user_agent","navigator","userAgent","publicKeyCredentialCreationOptions","public_key_credential_creation_options","publicKey","JSON","parse","credential","webauthnJson","public_key_credential","stringify","signal","conditional_mediation","disable_input_check","browserSupportsAutofill","checkEligibleInputs","publicKeyCredentialRequestOptions","public_key_credential_request_options","abortController","AbortController","credReqOptions","conditionalMediationCredReqOption","mediation","authenticationData","webauthn_registration_id","PublicKeyCredential","isConditionalMediationAvailable","eligibleInputs","document","querySelectorAll","length","BaseHeadlessOAuthClient","_oneTap","startOneTap","clientResult","createOneTapClient","success","Error","reason","client","onSuccessCallback","createOnSuccessHandler","signupRedirectUrl","loginRedirectUrl","onSuccess","redirectOnSuccess","render","style","position","OneTapPositions","floating","onOneTapCancelled","cancelOnTapOutside","cancel_on_tap_outside","googleOneTap","StytchClient","_sessionManager","_dataLayer","_stateChangeClient","magicLinks","otps","oauth","cryptoWallets","totps","webauthn","passwords","impersonation","rbac","idp","onStateChange","parseAuthenticateUrl","authenticateByUrl","publicTokenRaw","checkNotSSR","checkPublicToken","_PUBLIC_TOKEN","config","buildFinalConfig","usingCustomApiEndpoint","hasCustomApiEndpoint","getConsumerDataLayer","ConsumerSubscriptionService","StateChangeClient","args","additionalTelemetryDataFn","stytch_user_id","user_id","stytch_session_id","passwordsPKCEManager","PKCEManager","networkClient","NetworkClient","endpoints","bootstrap","BootstrapDataManager","captcha","CaptchaProvider","getAsync","DFPProtectedAuthProvider","dfpBackendURL","dfpCdnURL","clientsideServices","ClientsideServicesProvider","clientsideServicesIframeURL","oneTap","OneTapProvider","searchManager","SearchDataManager","HeadlessMagicLinksClient","HeadlessCryptoWalletClient","HeadlessPasswordClient","SessionManager","keepSessionAlive","readSessionCookie","performBackgroundRefresh","event_callback_registered","error_callback_registered","success_callback_registered","bootstrapData","vertical","VERTICAL_B2B","createAuthUrlHandler","magic_links","writeB2CInternals","dataLayer","createStytchClient","ssrSafeClientFactory","createStytchHeadlessClient","StytchHeadlessClient"],"mappings":"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","x_google_ignoreList":[8]}