{"version":3,"file":"StytchB2BClient.mjs","sources":["../../../../../../../web/src/b2b/StytchB2BClient.ts"],"sourcesContent":["import {\n  checkB2BNotSSR,\n  checkPublicToken,\n  DFPProtectedAuthProvider,\n  HeadlessB2BDiscoveryClient,\n  HeadlessB2BIDPClient,\n  HeadlessB2BImpersonationClient,\n  HeadlessB2BMagicLinksClient,\n  HeadlessB2BOrganizationClient,\n  HeadlessB2BOTPsClient,\n  HeadlessB2BPasswordsClient,\n  HeadlessB2BRBACClient,\n  HeadlessB2BRecoveryCodesClient,\n  HeadlessB2BSCIMClient,\n  HeadlessB2BSelfClient,\n  HeadlessB2BSessionClient,\n  HeadlessB2BSSOClient,\n  HeadlessB2BTOTPsClient,\n  INetworkClient,\n  logger,\n  SearchDataManager,\n  SessionManager,\n  StateChangeClient,\n  StateChangeRegisterFunction,\n  VERTICAL_CONSUMER,\n} from '@stytch/core';\nimport {\n  B2BState,\n  IHeadlessB2BDiscoveryClient,\n  IHeadlessB2BImpersonationClient,\n  IHeadlessB2BMagicLinksClient,\n  IHeadlessB2BMemberClient,\n  IHeadlessB2BOrganizationClient,\n  IHeadlessB2BOTPsClient,\n  IHeadlessB2BPasswordClient,\n  IHeadlessB2BRBACClient,\n  IHeadlessB2BRecoveryCodesClient,\n  IHeadlessB2BSCIMClient,\n  IHeadlessB2BSelfClient,\n  IHeadlessB2BSessionClient,\n  IHeadlessB2BSSOClient,\n  IHeadlessB2BTOTPsClient,\n  StytchClientOptions,\n  StytchProjectConfigurationInput,\n} from '@stytch/core/public';\n\nimport { BootstrapDataManager } from '../BootstrapDataManager';\nimport { CaptchaProvider } from '../CaptchaProvider';\nimport { ClientsideServicesProvider } from '../ClientsideServicesProvider';\nimport { NetworkClient } from '../NetworkClient';\nimport { PKCEManager } from '../PKCEManager';\nimport { B2BSubscriptionDataLayer, B2BSubscriptionService, getB2BDataLayer } from '../SubscriptionService';\nimport { buildFinalConfig, hasCustomApiEndpoint } from '../utils/config';\nimport { AuthenticateByUrl, createAuthUrlHandler, ParseAuthenticateUrl } from '../utils/createAuthUrlHandler';\nimport { B2BInternals, writeB2BInternals } from '../utils/internal';\nimport { HeadlessB2BOAuthClient, IWebB2BOAuthClient } from './HeadlessB2BOAuthClient';\nimport { B2BOneTapProvider } from './oneTap/B2BOneTapProvider';\n\nexport type HandledTokenType =\n  | 'discovery'\n  | 'discovery_oauth'\n  | 'oauth'\n  | 'sso'\n  | 'multi_tenant_magic_links'\n  | 'multi_tenant_impersonation';\n\n/**\n * A headless client used for invoking Stytch's B2B APIs.\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/b2b/sdks/javascript-sdk online}.\n *\n * @example\n * const stytch = new StytchB2BClient('public-token-<find yours in the stytch dashboard>');\n * stytch.magicLinks.email.loginOrCreate({\n *   email: 'sandbox@stytch.com',\n *   organization_id: 'organization-test-123',\n * });\n */\nexport class StytchB2BClient<\n  TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n> {\n  private readonly _subscriptionService: B2BSubscriptionService<TProjectConfiguration>;\n  private readonly _sessionManager: SessionManager<TProjectConfiguration>;\n  private readonly _networkClient: INetworkClient;\n  private readonly _dataLayer: B2BSubscriptionDataLayer;\n  private readonly _stateChangeClient: StateChangeClient<B2BState>;\n\n  // External API Clients\n  magicLinks: IHeadlessB2BMagicLinksClient<TProjectConfiguration>;\n  session: IHeadlessB2BSessionClient<TProjectConfiguration>;\n  /** @deprecated Please use client.self instead. This will be removed in a future release. */\n  member: IHeadlessB2BMemberClient;\n  self: IHeadlessB2BSelfClient;\n  organization: IHeadlessB2BOrganizationClient;\n  oauth: IWebB2BOAuthClient<TProjectConfiguration>;\n  sso: IHeadlessB2BSSOClient<TProjectConfiguration>;\n  discovery: IHeadlessB2BDiscoveryClient<TProjectConfiguration>;\n  passwords: IHeadlessB2BPasswordClient<TProjectConfiguration>;\n  otps: IHeadlessB2BOTPsClient<TProjectConfiguration>;\n  totp: IHeadlessB2BTOTPsClient<TProjectConfiguration>;\n  recoveryCodes: IHeadlessB2BRecoveryCodesClient<TProjectConfiguration>;\n  rbac: IHeadlessB2BRBACClient;\n  scim: IHeadlessB2BSCIMClient;\n  impersonation: IHeadlessB2BImpersonationClient;\n  idp: HeadlessB2BIDPClient;\n\n  // External methods\n  /**\n   * Register a callback function to be invoked whenever certain state changes\n   * occur, like a member or session object being updated.\n   *\n   * This is an alternative to more specific methods like `self.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 `self.onChange` and `session.onChange` instead.\n   */\n  onStateChange: StateChangeRegisterFunction<B2BState>;\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   * - SSO\n   * - Impersonation\n   *\n   * If the current URL do not have the required query params, the promise returned will resolve to null.\n   * If the token type is not supported (e.g. reset_password), the promise returned will resolve to this\n   * object allowing you to handle the token.\n   * {\n   *   handled: false,\n   *   tokenType: 'token_type',\n   *   token: '<token>'\n   * }\n   */\n  authenticateByUrl: AuthenticateByUrl<HandledTokenType>;\n\n  constructor(rawPublicToken: string, options?: StytchClientOptions) {\n    checkB2BNotSSR();\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(rawPublicToken);\n    const _PUBLIC_TOKEN = rawPublicToken ?? '';\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 = getB2BDataLayer(_PUBLIC_TOKEN, config);\n    this._subscriptionService = new B2BSubscriptionService(_PUBLIC_TOKEN, this._dataLayer, { usingCustomApiEndpoint });\n    this._stateChangeClient = new StateChangeClient(this._subscriptionService, {});\n    this.onStateChange = (...args) => this._stateChangeClient.onStateChange(...args);\n\n    const additionalTelemetryDataFn = () => ({\n      stytch_member_id: this._dataLayer.state?.member?.member_id,\n      stytch_member_session_id: this._dataLayer.state?.session?.member_session_id,\n    });\n\n    const passwordsPKCEManager = new PKCEManager(this._dataLayer, 'passwords');\n\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, 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 pkceManagerForOAuth = new PKCEManager(this._dataLayer, 'oauth');\n    const oneTap = new B2BOneTapProvider(networkClient, pkceManagerForOAuth, bootstrap.getAsync());\n\n    this.organization = new HeadlessB2BOrganizationClient(networkClient, networkClient, this._subscriptionService);\n    this.member = new HeadlessB2BSelfClient(networkClient, networkClient, this._subscriptionService);\n    this.self = new HeadlessB2BSelfClient(networkClient, networkClient, this._subscriptionService);\n    this.session = new HeadlessB2BSessionClient(networkClient, this._subscriptionService);\n    this.magicLinks = new HeadlessB2BMagicLinksClient(\n      networkClient,\n      this._subscriptionService,\n      new PKCEManager(this._dataLayer, 'magic_links'),\n      passwordsPKCEManager,\n      bootstrap.getAsync(),\n      dfpProtectedAuth,\n    );\n    this.oauth = new HeadlessB2BOAuthClient(\n      networkClient,\n      this._subscriptionService,\n      pkceManagerForOAuth,\n      bootstrap.getAsync(),\n      {\n        publicToken: _PUBLIC_TOKEN,\n        testAPIURL: config.endpoints.testAPIURL,\n        liveAPIURL: config.endpoints.liveAPIURL,\n      },\n      dfpProtectedAuth,\n      oneTap,\n    );\n    this.sso = new HeadlessB2BSSOClient(\n      networkClient,\n      this._subscriptionService,\n      new PKCEManager(this._dataLayer, 'sso'),\n      bootstrap.getAsync(),\n      {\n        publicToken: _PUBLIC_TOKEN,\n        testAPIURL: config.endpoints.testAPIURL,\n        liveAPIURL: config.endpoints.liveAPIURL,\n      },\n      dfpProtectedAuth,\n    );\n    this.discovery = new HeadlessB2BDiscoveryClient(networkClient, this._subscriptionService);\n    this.passwords = new HeadlessB2BPasswordsClient(\n      networkClient,\n      this._subscriptionService,\n      passwordsPKCEManager,\n      bootstrap.getAsync(),\n      dfpProtectedAuth,\n    );\n    this.otps = new HeadlessB2BOTPsClient(networkClient, this._subscriptionService, dfpProtectedAuth);\n    this.totp = new HeadlessB2BTOTPsClient(networkClient, this._subscriptionService, dfpProtectedAuth);\n    this.recoveryCodes = new HeadlessB2BRecoveryCodesClient(networkClient, this._subscriptionService, dfpProtectedAuth);\n    this.rbac = new HeadlessB2BRBACClient(bootstrap.getSync(), bootstrap.getAsync(), this._subscriptionService);\n    this.scim = new HeadlessB2BSCIMClient(this._networkClient, this._subscriptionService);\n    this.impersonation = new HeadlessB2BImpersonationClient(\n      this._networkClient,\n      this._subscriptionService,\n      dfpProtectedAuth,\n    );\n    this.idp = new HeadlessB2BIDPClient(networkClient);\n    this._sessionManager = new SessionManager(this._subscriptionService, this.session, _PUBLIC_TOKEN, {\n      keepSessionAlive: config.keepSessionAlive,\n    });\n    const searchManager = new SearchDataManager(networkClient, dfpProtectedAuth);\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    const { authenticateByUrl, parseAuthenticateUrl } = createAuthUrlHandler<HandledTokenType>({\n      discovery: (token) => this.magicLinks.discovery.authenticate({ discovery_magic_links_token: token }),\n      discovery_oauth: (token) => this.oauth.discovery.authenticate({ discovery_oauth_token: token }),\n      oauth: (token, options) => this.oauth.authenticate({ oauth_token: token, ...options }),\n      sso: (token, options) => this.sso.authenticate({ sso_token: token, ...options }),\n      multi_tenant_magic_links: (token, options) =>\n        this.magicLinks.authenticate({ magic_links_token: token, ...options }),\n      multi_tenant_impersonation: (token) => this.impersonation.authenticate({ impersonation_token: token }),\n    });\n\n    this.authenticateByUrl = authenticateByUrl;\n    this.parseAuthenticateUrl = parseAuthenticateUrl;\n\n    networkClient.logEvent({\n      name: 'b2b_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_CONSUMER) {\n        logger.error(\n          'This application is using a Stytch client for B2B projects, but the public token is for a Stytch Consumer project. Use a Consumer Stytch client instead, or verify that the public token is correct.',\n        );\n      }\n    });\n\n    const internals: B2BInternals = {\n      bootstrap,\n      clientsideServices,\n      publicToken: _PUBLIC_TOKEN,\n      searchManager,\n      dataLayer: this._dataLayer,\n      networkClient: networkClient,\n      oneTap,\n    };\n\n    writeB2BInternals(this, internals);\n  }\n}\n"],"names":["StytchB2BClient","_subscriptionService","_sessionManager","_networkClient","_dataLayer","_stateChangeClient","magicLinks","session","member","self","organization","oauth","sso","discovery","passwords","otps","totp","recoveryCodes","rbac","scim","impersonation","idp","onStateChange","parseAuthenticateUrl","authenticateByUrl","rawPublicToken","options","checkB2BNotSSR","checkPublicToken","_PUBLIC_TOKEN","config","buildFinalConfig","name","usingCustomApiEndpoint","hasCustomApiEndpoint","getB2BDataLayer","B2BSubscriptionService","StateChangeClient","args","additionalTelemetryDataFn","stytch_member_id","state","member_id","stytch_member_session_id","member_session_id","passwordsPKCEManager","PKCEManager","networkClient","NetworkClient","endpoints","liveAPIURL","testAPIURL","bootstrap","BootstrapDataManager","captcha","CaptchaProvider","getAsync","dfpProtectedAuth","DFPProtectedAuthProvider","dfpBackendURL","dfpCdnURL","executeRecaptcha","clientsideServices","ClientsideServicesProvider","clientsideServicesIframeURL","pkceManagerForOAuth","oneTap","B2BOneTapProvider","HeadlessB2BOrganizationClient","HeadlessB2BSelfClient","HeadlessB2BSessionClient","HeadlessB2BMagicLinksClient","HeadlessB2BOAuthClient","publicToken","HeadlessB2BSSOClient","HeadlessB2BDiscoveryClient","HeadlessB2BPasswordsClient","HeadlessB2BOTPsClient","HeadlessB2BTOTPsClient","HeadlessB2BRecoveryCodesClient","HeadlessB2BRBACClient","getSync","HeadlessB2BSCIMClient","HeadlessB2BImpersonationClient","HeadlessB2BIDPClient","SessionManager","keepSessionAlive","searchManager","SearchDataManager","readSessionCookie","session_token","performBackgroundRefresh","createAuthUrlHandler","token","authenticate","discovery_magic_links_token","discovery_oauth","discovery_oauth_token","oauth_token","sso_token","multi_tenant_magic_links","magic_links_token","multi_tenant_impersonation","impersonation_token","logEvent","details","event_callback_registered","error_callback_registered","success_callback_registered","then","bootstrapData","vertical","VERTICAL_CONSUMER","logger","error","internals","dataLayer","writeB2BInternals"],"mappings":"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"}