@stytch/react 20.0.0-next.0 → 20.0.0-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/cjs/{StytchSSRProxy-CUOvjF03.js → StytchSSRProxy-Bz6LNYdq.js} +186 -1
- package/dist/cjs/StytchSSRProxy-Bz6LNYdq.js.map +1 -0
- package/dist/cjs/adminPortal/index.cjs +102 -26
- package/dist/cjs/adminPortal/index.cjs.map +1 -1
- package/dist/cjs/b2b/index.cjs +176 -138
- package/dist/cjs/b2b/index.cjs.map +1 -1
- package/dist/cjs/b2b/index.headless.cjs +24 -24
- package/dist/cjs/b2b/index.headless.cjs.map +1 -1
- package/dist/cjs/{idpHelpers-eUP8j58U.js → idpHelpers-Bj_7pbfW.js} +7 -191
- package/dist/cjs/idpHelpers-Bj_7pbfW.js.map +1 -0
- package/dist/cjs/{index-DfiRrtK8.js → index-Ni_dyEsz.js} +3 -3
- package/dist/cjs/{index-DfiRrtK8.js.map → index-Ni_dyEsz.js.map} +1 -1
- package/dist/cjs/index.cjs +207 -196
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.headless.cjs +32 -32
- package/dist/cjs/index.headless.cjs.map +1 -1
- package/dist/cjs/{passwordManagerDisableAutofillProps-C0akDAKd.js → passwordManagerDisableAutofillProps-DV31RTL_.js} +2 -2
- package/dist/cjs/{passwordManagerDisableAutofillProps-C0akDAKd.js.map → passwordManagerDisableAutofillProps-DV31RTL_.js.map} +1 -1
- package/dist/cjs/{shadcn-Bbv2Hk3P.js → shadcn-B8TEzQMT.js} +99 -81
- package/dist/cjs/shadcn-B8TEzQMT.js.map +1 -0
- package/dist/cjs-dev/{StytchSSRProxy-D0B5PuT0.js → StytchSSRProxy-CxXsyme4.js} +186 -1
- package/dist/cjs-dev/StytchSSRProxy-CxXsyme4.js.map +1 -0
- package/dist/cjs-dev/adminPortal/index.cjs +102 -26
- package/dist/cjs-dev/adminPortal/index.cjs.map +1 -1
- package/dist/cjs-dev/b2b/index.cjs +176 -138
- package/dist/cjs-dev/b2b/index.cjs.map +1 -1
- package/dist/cjs-dev/b2b/index.headless.cjs +24 -24
- package/dist/cjs-dev/b2b/index.headless.cjs.map +1 -1
- package/dist/cjs-dev/{idpHelpers-DOOVv6dT.js → idpHelpers-Cf8Qq1B4.js} +7 -191
- package/dist/cjs-dev/idpHelpers-Cf8Qq1B4.js.map +1 -0
- package/dist/cjs-dev/{index-paeFcHjf.js → index-DdK3Jt4u.js} +3 -3
- package/dist/cjs-dev/{index-paeFcHjf.js.map → index-DdK3Jt4u.js.map} +1 -1
- package/dist/cjs-dev/index.cjs +207 -196
- package/dist/cjs-dev/index.cjs.map +1 -1
- package/dist/cjs-dev/index.headless.cjs +32 -32
- package/dist/cjs-dev/index.headless.cjs.map +1 -1
- package/dist/cjs-dev/{passwordManagerDisableAutofillProps-CnLBAXyr.js → passwordManagerDisableAutofillProps-D70WyvIu.js} +2 -2
- package/dist/cjs-dev/{passwordManagerDisableAutofillProps-CnLBAXyr.js.map → passwordManagerDisableAutofillProps-D70WyvIu.js.map} +1 -1
- package/dist/cjs-dev/{shadcn-CdbmlhdF.js → shadcn-C4w3DtKK.js} +99 -81
- package/dist/cjs-dev/shadcn-C4w3DtKK.js.map +1 -0
- package/dist/esm/_virtual/index.mjs +4 -4
- package/dist/esm/_virtual/index3.mjs +3 -5
- package/dist/esm/_virtual/index3.mjs.map +1 -1
- package/dist/esm/_virtual/index4.mjs +5 -3
- package/dist/esm/_virtual/index4.mjs.map +1 -1
- package/dist/esm/_virtual/index6.mjs +2 -2
- package/dist/esm/_virtual/index7.mjs +2 -2
- package/dist/esm/adminPortal/index.mjs +4 -1
- package/dist/esm/adminPortal/index.mjs.map +1 -1
- package/dist/esm/b2b/index.mjs.map +1 -1
- package/dist/esm/node_modules/lodash.merge/index.mjs +1 -1
- package/dist/esm/node_modules/use-sync-external-store/shim/index.mjs +1 -1
- package/dist/esm/packages/core/src/rpc/FrameClient.mjs +1 -0
- package/dist/esm/packages/core/src/rpc/FrameClient.mjs.map +1 -1
- package/dist/esm/packages/web/messages/b2b/en.json.mjs +10 -3
- package/dist/esm/packages/web/messages/b2b/en.json.mjs.map +1 -1
- package/dist/esm/packages/web/messages/en.json.mjs +10 -3
- package/dist/esm/packages/web/messages/en.json.mjs.map +1 -1
- package/dist/esm/packages/web/src/adminPortal/memberManagement/AccessSection.mjs +6 -3
- package/dist/esm/packages/web/src/adminPortal/memberManagement/AccessSection.mjs.map +1 -1
- package/dist/esm/packages/web/src/adminPortal/memberManagement/InviteModal.mjs +4 -1
- package/dist/esm/packages/web/src/adminPortal/memberManagement/InviteModal.mjs.map +1 -1
- package/dist/esm/packages/web/src/adminPortal/memberManagement/MemberListScreen.mjs +3 -1
- package/dist/esm/packages/web/src/adminPortal/memberManagement/MemberListScreen.mjs.map +1 -1
- package/dist/esm/packages/web/src/adminPortal/scim/SCIMConnectionRoleAssignmentsSection.mjs +6 -2
- package/dist/esm/packages/web/src/adminPortal/scim/SCIMConnectionRoleAssignmentsSection.mjs.map +1 -1
- package/dist/esm/packages/web/src/adminPortal/settings/OrgSettingsRoleAssignmentsSection.mjs +7 -3
- package/dist/esm/packages/web/src/adminPortal/settings/OrgSettingsRoleAssignmentsSection.mjs.map +1 -1
- package/dist/esm/packages/web/src/adminPortal/sso/RoleAssignmentsSection.mjs +5 -1
- package/dist/esm/packages/web/src/adminPortal/sso/RoleAssignmentsSection.mjs.map +1 -1
- package/dist/esm/packages/web/src/adminPortal/utils/theme.mjs +1 -1
- package/dist/esm/packages/web/src/adminPortal/utils/useRbac.mjs.map +1 -1
- package/dist/esm/packages/web/src/adminPortal/utils/useRoleAutocomplete.mjs +3 -3
- package/dist/esm/packages/web/src/adminPortal/utils/useRoleAutocomplete.mjs.map +1 -1
- package/dist/esm/packages/web/src/adminPortal/utils/useRoleDisplayInfo.mjs +2 -2
- package/dist/esm/packages/web/src/adminPortal/utils/useRoleDisplayInfo.mjs.map +1 -1
- package/dist/esm/packages/web/src/adminPortal/utils/useRoles.mjs +7 -2
- package/dist/esm/packages/web/src/adminPortal/utils/useRoles.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2b/components/OrganizationRow.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2b/screens/EmailConfirmation.mjs +27 -3
- package/dist/esm/packages/web/src/ui/b2b/screens/EmailConfirmation.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2b/screens/RecoveryCodeEntryScreen.mjs +2 -0
- package/dist/esm/packages/web/src/ui/b2b/screens/RecoveryCodeEntryScreen.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2b/screens/SMSOTPEntryScreen.mjs +2 -0
- package/dist/esm/packages/web/src/ui/b2b/screens/SMSOTPEntryScreen.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2b/utils.mjs +8 -1
- package/dist/esm/packages/web/src/ui/b2b/utils.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2c/components/GoogleOneTap.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2c/screens/Main/LoginForm/index.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2c/screens/Passkey/EditableRow.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2c/screens/Secondary/EmailConfirmation.mjs +10 -4
- package/dist/esm/packages/web/src/ui/b2c/screens/Secondary/EmailConfirmation.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2c/screens/Secondary/PasswordCreateAuthenticate.mjs +2 -1
- package/dist/esm/packages/web/src/ui/b2c/screens/Secondary/PasswordCreateAuthenticate.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2c/screens/Secondary/PasswordlessAuthenticate.mjs +5 -68
- package/dist/esm/packages/web/src/ui/b2c/screens/Secondary/PasswordlessAuthenticate.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2c/screens/Secondary/usePasswordlessAuthenticate.mjs +71 -0
- package/dist/esm/packages/web/src/ui/b2c/screens/Secondary/usePasswordlessAuthenticate.mjs.map +1 -0
- package/dist/esm/packages/web/src/ui/components/atoms/AnimatedContainer.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/atoms/Button.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/atoms/CircularProgress.mjs +4 -5
- package/dist/esm/packages/web/src/ui/components/atoms/CircularProgress.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/components/atoms/CodeContainer.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/atoms/Column.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/atoms/Typography.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/atoms/VerticalTransition.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/atoms/VisuallyHidden.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/atoms/Watermark.mjs +14 -23
- package/dist/esm/packages/web/src/ui/components/atoms/Watermark.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/components/atoms/Watermark.module.css.mjs +2 -2
- package/dist/esm/packages/web/src/ui/components/molecules/Badge.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/molecules/EmailInput.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/molecules/EmailInput.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/components/molecules/ErrorText.mjs +12 -4
- package/dist/esm/packages/web/src/ui/components/molecules/ErrorText.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/components/molecules/Input.mjs +3 -2
- package/dist/esm/packages/web/src/ui/components/molecules/Input.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/components/molecules/MainContainer.mjs +6 -6
- package/dist/esm/packages/web/src/ui/components/molecules/MainContainer.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/components/molecules/MainContainer.module.css.mjs +2 -2
- package/dist/esm/packages/web/src/ui/components/molecules/OtpInput.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/molecules/PasswordStrengthCheck.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/molecules/PhoneInput.mjs +3 -4
- package/dist/esm/packages/web/src/ui/components/molecules/PhoneInput.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/components/organisms/EmailConfirmationView.mjs +26 -3
- package/dist/esm/packages/web/src/ui/components/organisms/EmailConfirmationView.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/components/organisms/IDPConsentManifest.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/organisms/OneTapError.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/organisms/ResendOTPButton.mjs +2 -2
- package/dist/esm/packages/web/src/ui/components/organisms/ResendOTPButton.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/react/adminPortal/AdminPortalMemberManagement.mjs +0 -42
- package/dist/esm/packages/web/src/ui/react/adminPortal/AdminPortalMemberManagement.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/react/adminPortal/AdminPortalOrgSettings.mjs +0 -40
- package/dist/esm/packages/web/src/ui/react/adminPortal/AdminPortalOrgSettings.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/react/adminPortal/AdminPortalSCIM.mjs +0 -43
- package/dist/esm/packages/web/src/ui/react/adminPortal/AdminPortalSCIM.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/react/adminPortal/AdminPortalSSO.mjs +0 -36
- package/dist/esm/packages/web/src/ui/react/adminPortal/AdminPortalSSO.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/react/b2b/Stytch.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/react/bindings/createB2BComponent.mjs.map +1 -1
- package/dist/esm/packages/web/src/utils/crypto.mjs +1 -1
- package/dist/esm-dev/_virtual/index.mjs +4 -4
- package/dist/esm-dev/_virtual/index3.mjs +3 -5
- package/dist/esm-dev/_virtual/index3.mjs.map +1 -1
- package/dist/esm-dev/_virtual/index4.mjs +5 -3
- package/dist/esm-dev/_virtual/index4.mjs.map +1 -1
- package/dist/esm-dev/_virtual/index6.mjs +2 -2
- package/dist/esm-dev/_virtual/index7.mjs +2 -2
- package/dist/esm-dev/adminPortal/index.mjs +4 -1
- package/dist/esm-dev/adminPortal/index.mjs.map +1 -1
- package/dist/esm-dev/b2b/index.mjs.map +1 -1
- package/dist/esm-dev/node_modules/lodash.merge/index.mjs +1 -1
- package/dist/esm-dev/node_modules/use-sync-external-store/shim/index.mjs +1 -1
- package/dist/esm-dev/packages/core/src/rpc/FrameClient.mjs +1 -0
- package/dist/esm-dev/packages/core/src/rpc/FrameClient.mjs.map +1 -1
- package/dist/esm-dev/packages/web/messages/b2b/en.json.mjs +10 -3
- package/dist/esm-dev/packages/web/messages/b2b/en.json.mjs.map +1 -1
- package/dist/esm-dev/packages/web/messages/en.json.mjs +10 -3
- package/dist/esm-dev/packages/web/messages/en.json.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/memberManagement/AccessSection.mjs +6 -3
- package/dist/esm-dev/packages/web/src/adminPortal/memberManagement/AccessSection.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/memberManagement/InviteModal.mjs +4 -1
- package/dist/esm-dev/packages/web/src/adminPortal/memberManagement/InviteModal.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/memberManagement/MemberListScreen.mjs +3 -1
- package/dist/esm-dev/packages/web/src/adminPortal/memberManagement/MemberListScreen.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/scim/SCIMConnectionRoleAssignmentsSection.mjs +6 -2
- package/dist/esm-dev/packages/web/src/adminPortal/scim/SCIMConnectionRoleAssignmentsSection.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/settings/OrgSettingsRoleAssignmentsSection.mjs +7 -3
- package/dist/esm-dev/packages/web/src/adminPortal/settings/OrgSettingsRoleAssignmentsSection.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/sso/RoleAssignmentsSection.mjs +5 -1
- package/dist/esm-dev/packages/web/src/adminPortal/sso/RoleAssignmentsSection.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/utils/theme.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/utils/useRbac.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/utils/useRoleAutocomplete.mjs +3 -3
- package/dist/esm-dev/packages/web/src/adminPortal/utils/useRoleAutocomplete.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/utils/useRoleDisplayInfo.mjs +2 -2
- package/dist/esm-dev/packages/web/src/adminPortal/utils/useRoleDisplayInfo.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/utils/useRoles.mjs +7 -2
- package/dist/esm-dev/packages/web/src/adminPortal/utils/useRoles.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/components/OrganizationRow.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/screens/EmailConfirmation.mjs +27 -3
- package/dist/esm-dev/packages/web/src/ui/b2b/screens/EmailConfirmation.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/screens/RecoveryCodeEntryScreen.mjs +2 -0
- package/dist/esm-dev/packages/web/src/ui/b2b/screens/RecoveryCodeEntryScreen.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/screens/SMSOTPEntryScreen.mjs +2 -0
- package/dist/esm-dev/packages/web/src/ui/b2b/screens/SMSOTPEntryScreen.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/utils.mjs +8 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/utils.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/components/GoogleOneTap.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Main/LoginForm/index.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Passkey/EditableRow.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Secondary/EmailConfirmation.mjs +10 -4
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Secondary/EmailConfirmation.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Secondary/PasswordCreateAuthenticate.mjs +2 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Secondary/PasswordCreateAuthenticate.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Secondary/PasswordlessAuthenticate.mjs +5 -68
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Secondary/PasswordlessAuthenticate.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Secondary/usePasswordlessAuthenticate.mjs +71 -0
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Secondary/usePasswordlessAuthenticate.mjs.map +1 -0
- package/dist/esm-dev/packages/web/src/ui/components/atoms/AnimatedContainer.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/atoms/Button.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/atoms/CircularProgress.mjs +4 -5
- package/dist/esm-dev/packages/web/src/ui/components/atoms/CircularProgress.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/atoms/CodeContainer.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/atoms/Column.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/atoms/Typography.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/atoms/VerticalTransition.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/atoms/VisuallyHidden.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/atoms/Watermark.mjs +14 -23
- package/dist/esm-dev/packages/web/src/ui/components/atoms/Watermark.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/atoms/Watermark.module.css.mjs +2 -2
- package/dist/esm-dev/packages/web/src/ui/components/molecules/Badge.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/molecules/EmailInput.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/molecules/EmailInput.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/molecules/ErrorText.mjs +12 -4
- package/dist/esm-dev/packages/web/src/ui/components/molecules/ErrorText.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/molecules/Input.mjs +3 -2
- package/dist/esm-dev/packages/web/src/ui/components/molecules/Input.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/molecules/MainContainer.mjs +6 -6
- package/dist/esm-dev/packages/web/src/ui/components/molecules/MainContainer.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/molecules/MainContainer.module.css.mjs +2 -2
- package/dist/esm-dev/packages/web/src/ui/components/molecules/OtpInput.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/molecules/PasswordStrengthCheck.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/molecules/PhoneInput.mjs +3 -4
- package/dist/esm-dev/packages/web/src/ui/components/molecules/PhoneInput.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/organisms/EmailConfirmationView.mjs +26 -3
- package/dist/esm-dev/packages/web/src/ui/components/organisms/EmailConfirmationView.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/organisms/IDPConsentManifest.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/organisms/ResendOTPButton.mjs +2 -2
- package/dist/esm-dev/packages/web/src/ui/components/organisms/ResendOTPButton.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/react/adminPortal/AdminPortalMemberManagement.mjs +0 -42
- package/dist/esm-dev/packages/web/src/ui/react/adminPortal/AdminPortalMemberManagement.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/react/adminPortal/AdminPortalOrgSettings.mjs +0 -40
- package/dist/esm-dev/packages/web/src/ui/react/adminPortal/AdminPortalOrgSettings.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/react/adminPortal/AdminPortalSCIM.mjs +0 -43
- package/dist/esm-dev/packages/web/src/ui/react/adminPortal/AdminPortalSCIM.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/react/adminPortal/AdminPortalSSO.mjs +0 -36
- package/dist/esm-dev/packages/web/src/ui/react/adminPortal/AdminPortalSSO.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/react/b2b/Stytch.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/react/bindings/createB2BComponent.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/utils/crypto.mjs +1 -1
- package/dist/types/{StytchB2BClient-Dq-ITB7Q.d.ts → StytchB2BClient-C_7NUKZh.d.ts} +1 -1
- package/dist/types/{StytchClient-BV0sT3Ox.d.ts → StytchClient-Ccvk8Nj1.d.ts} +1 -2
- package/dist/types/adminPortal/index.d.ts +5 -4
- package/dist/types/b2b/index.d.ts +11 -11
- package/dist/types/b2b/index.headless.d.ts +4 -4
- package/dist/types/{createAuthUrlHandler-Ck5TyB9J.d.ts → createAuthUrlHandler-BJRA2PHG.d.ts} +939 -39
- package/dist/types/idpHelpers-aCVwNrDk.d.ts +36 -0
- package/dist/types/index.d.ts +8 -8
- package/dist/types/index.headless.d.ts +4 -4
- package/dist/types/{shadcn-CFz8Asq0.d.ts → shadcn-0e4fkV5Z.d.ts} +6 -6
- package/messages/b2b/en.po +6 -3
- package/messages/en.po +6 -3
- package/package.json +1 -1
- package/dist/cjs/StytchSSRProxy-CUOvjF03.js.map +0 -1
- package/dist/cjs/idpHelpers-eUP8j58U.js.map +0 -1
- package/dist/cjs/shadcn-Bbv2Hk3P.js.map +0 -1
- package/dist/cjs-dev/StytchSSRProxy-D0B5PuT0.js.map +0 -1
- package/dist/cjs-dev/idpHelpers-DOOVv6dT.js.map +0 -1
- package/dist/cjs-dev/shadcn-CdbmlhdF.js.map +0 -1
- package/dist/esm/packages/web/src/adminPortal/MuiClassNameSetup.mjs +0 -5
- package/dist/esm/packages/web/src/adminPortal/MuiClassNameSetup.mjs.map +0 -1
- package/dist/esm/packages/web/src/adminPortal/classNameSeed.mjs +0 -5
- package/dist/esm/packages/web/src/adminPortal/classNameSeed.mjs.map +0 -1
- package/dist/esm-dev/packages/web/src/adminPortal/MuiClassNameSetup.mjs +0 -5
- package/dist/esm-dev/packages/web/src/adminPortal/MuiClassNameSetup.mjs.map +0 -1
- package/dist/esm-dev/packages/web/src/adminPortal/classNameSeed.mjs +0 -5
- package/dist/esm-dev/packages/web/src/adminPortal/classNameSeed.mjs.map +0 -1
- package/dist/types/idpHelpers-hBhPCtAC.d.ts +0 -936
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.headless.cjs","sources":["../../../../core/src/HeadlessClients/b2b/HeadlessB2BSelfClient.ts","../../../../core/src/HeadlessClients/b2b/HeadlessB2BSSOClient.ts","../../../../core/src/HeadlessClients/b2b/HeadlessB2BSCIMClient.ts","../../../../core/src/HeadlessClients/b2b/HeadlessB2BOrganizationClient.ts","../../../../core/src/HeadlessClients/b2b/HeadlessB2BOAuthClient.ts","../../../../core/src/HeadlessClients/b2b/HeadlessB2BSessionClient.ts","../../../../core/src/HeadlessClients/b2b/HeadlessB2BDiscoveryClient.ts","../../../../core/src/HeadlessClients/b2b/HeadlessB2BOTPsClient.ts","../../../../core/src/HeadlessClients/b2b/HeadlessB2BTOTPsClient.ts","../../../../core/src/HeadlessClients/b2b/HeadlessB2BRecoveryCodesClient.ts","../../../../core/src/HeadlessClients/b2b/HeadlessB2BRBACClient.ts","../../../../core/src/HeadlessClients/b2b/HeadlessB2BImpersonationClient.ts","../../../../core/src/HeadlessClients/b2b/HeadlessB2BIDPClient.ts","../../../../web/src/b2b/HeadlessB2BOAuthClient.ts","../../../../web/src/b2b/oneTap/B2BOneTapProvider.ts","../../../../web/src/b2b/StytchB2BClient.ts","../../../../web/src/b2b/index.headless.ts"],"sourcesContent":["import {\n ResponseCommon,\n Member,\n IHeadlessB2BSelfClient,\n B2BMemberOnChangeCallback,\n B2BMemberUpdateOptions,\n B2BMemberUpdateResponse,\n B2BMemberDeleteMFAPhoneNumberResponse,\n B2BMemberDeletePasswordResponse,\n MemberInfo,\n B2BMemberUnlinkRetiredEmailRequest,\n B2BMemberUnlinkRetiredEmailResponse,\n B2BMemberStartEmailUpdateRequest,\n B2BMemberStartEmailUpdateResponse,\n StytchProjectConfigurationInput,\n B2BMemberGetConnectedAppsResponse,\n B2BMemberRevokeConnectedAppOptions,\n B2BMemberRevokeConnectedAppResponse,\n} from '../../public';\nimport { INetworkClient } from '../../NetworkClient';\nimport { IB2BSubscriptionService } from '../../SubscriptionService';\nimport { validateInDev } from '../../utils/dev';\n\nexport class HeadlessB2BSelfClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BSelfClient\n{\n constructor(\n private _networkClient: INetworkClient,\n private _apiNetworkClient: INetworkClient,\n private _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n ) {}\n\n get = async (): Promise<Member | null> => {\n const resp = await this._networkClient.fetchSDK<{ member: Member } & ResponseCommon>({\n url: `/b2b/organizations/members/me`,\n method: 'GET',\n });\n this._subscriptionService.updateMember(resp.member);\n return resp.member;\n };\n\n getSync = (): Member | null => {\n return this._subscriptionService.getMember();\n };\n\n getInfo = (): MemberInfo => ({\n member: this.getSync(),\n fromCache: this._subscriptionService.getFromCache(),\n });\n\n onChange = (callback: B2BMemberOnChangeCallback) => {\n return this._subscriptionService.subscribeToState((state) => callback(state?.member ?? null));\n };\n\n update = async (data: B2BMemberUpdateOptions): Promise<B2BMemberUpdateResponse> => {\n validateInDev('stytch.self.update', data, {\n name: 'optionalString',\n untrusted_metadata: 'optionalObject',\n mfa_enrolled: 'optionalBoolean',\n mfa_phone_number: 'optionalString',\n default_mfa_method: 'optionalString',\n });\n\n const resp = await this._networkClient.fetchSDK<B2BMemberUpdateResponse>({\n url: '/b2b/organizations/members/update',\n body: data,\n method: 'PUT',\n });\n this._subscriptionService.updateMember(resp.member);\n return resp;\n };\n\n deleteMFAPhoneNumber = async (): Promise<B2BMemberDeleteMFAPhoneNumberResponse> => {\n const resp = await this._networkClient.fetchSDK<B2BMemberDeleteMFAPhoneNumberResponse>({\n url: '/b2b/organizations/members/deletePhoneNumber',\n method: 'DELETE',\n });\n this._subscriptionService.updateMember(resp.member);\n return resp;\n };\n\n deleteMFATOTP = async (): Promise<B2BMemberDeletePasswordResponse> => {\n const resp = await this._networkClient.fetchSDK<B2BMemberDeletePasswordResponse>({\n url: `/b2b/organizations/members/deleteTOTP`,\n method: 'DELETE',\n });\n this._subscriptionService.updateMember(resp.member);\n return resp;\n };\n\n deletePassword = async (passwordId: string): Promise<B2BMemberDeletePasswordResponse> => {\n const resp = await this._networkClient.fetchSDK<B2BMemberDeletePasswordResponse>({\n url: `/b2b/organizations/members/passwords/${passwordId}`,\n method: 'DELETE',\n });\n this._subscriptionService.updateMember(resp.member);\n return resp;\n };\n\n unlinkRetiredEmail = async (\n data: B2BMemberUnlinkRetiredEmailRequest,\n ): Promise<B2BMemberUnlinkRetiredEmailResponse> => {\n const resp = await this._apiNetworkClient.fetchSDK<B2BMemberUnlinkRetiredEmailResponse>({\n url: '/b2b/organizations/members/unlink_retired_email',\n method: 'POST',\n body: data,\n });\n this._subscriptionService.updateMember(resp.member);\n return resp;\n };\n\n startEmailUpdate = async (data: B2BMemberStartEmailUpdateRequest): Promise<B2BMemberStartEmailUpdateResponse> => {\n const resp = await this._apiNetworkClient.fetchSDK<B2BMemberStartEmailUpdateResponse>({\n url: '/b2b/organizations/members/start_email_update',\n method: 'POST',\n body: data,\n });\n this._subscriptionService.updateMember(resp.member);\n return resp;\n };\n\n getConnectedApps = async (): Promise<B2BMemberGetConnectedAppsResponse> => {\n return this._networkClient.fetchSDK<B2BMemberGetConnectedAppsResponse>({\n url: '/b2b/organizations/members/connected_apps',\n method: 'GET',\n });\n };\n\n revokeConnectedApp = async (\n data: B2BMemberRevokeConnectedAppOptions,\n ): Promise<B2BMemberRevokeConnectedAppResponse> => {\n return this._networkClient.fetchSDK<B2BMemberRevokeConnectedAppResponse>({\n url: `/b2b/organizations/members/connected_apps/${data.connected_app_id}/revoke`,\n method: 'POST',\n });\n };\n}\n","import { IB2BSubscriptionService, IDFPProtectedAuthProvider, INetworkClient, IPKCEManager } from '../..';\nimport {\n B2BSSOCreateExternalConnectionOptions,\n B2BSSOCreateExternalConnectionResponse,\n B2BSSODeleteConnectionResponse,\n B2BSSODiscoverConnectionsResponse,\n B2BSSOGetConnectionsResponse,\n B2BSSOOIDCCreateConnectionOptions,\n B2BSSOOIDCCreateConnectionResponse,\n B2BSSOOIDCUpdateConnectionOptions,\n B2BSSOOIDCUpdateConnectionResponse,\n B2BSSOSAMLCreateConnectionOptions,\n B2BSSOSAMLCreateConnectionResponse,\n B2BSSOSAMLDeleteEncryptionPrivateKeyOptions,\n B2BSSOSAMLDeleteEncryptionPrivateKeyResponse,\n B2BSSOSAMLDeleteVerificationCertificateOptions,\n B2BSSOSAMLDeleteVerificationCertificateResponse,\n B2BSSOSAMLUpdateConnectionByURLOptions,\n B2BSSOSAMLUpdateConnectionByURLResponse,\n B2BSSOSAMLUpdateConnectionOptions,\n B2BSSOSAMLUpdateConnectionResponse,\n B2BSSOUpdateExternalConnectionOptions,\n B2BSSOUpdateExternalConnectionResponse,\n IHeadlessB2BSSOClient,\n SSOAuthenticateOptions,\n SSOAuthenticateResponse,\n SSOStartOptions,\n} from '../../public';\nimport { StytchProjectConfigurationInput } from '../../public/typeConfig';\nimport { isTestPublicToken, logger } from '../../utils';\nimport { validateInDev } from '../../utils/dev';\n\ntype DynamicConfig = Promise<{\n pkceRequiredForSso: boolean;\n}>;\ntype Config = {\n publicToken: string;\n testAPIURL: string;\n liveAPIURL: string;\n};\n\nexport class HeadlessB2BSSOClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BSSOClient<TProjectConfiguration>\n{\n authenticate: (options: SSOAuthenticateOptions) => Promise<SSOAuthenticateResponse<TProjectConfiguration>>;\n\n constructor(\n protected _networkClient: INetworkClient,\n protected _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n protected _pkceManager: IPKCEManager,\n protected _dynamicConfig: DynamicConfig,\n protected _config: Config,\n protected dfpProtectedAuth: IDFPProtectedAuthProvider,\n ) {\n this.authenticate = this._subscriptionService.withUpdateSession(async (options: SSOAuthenticateOptions) => {\n validateInDev('stytch.sso.authenticate', options, {\n sso_token: 'string',\n session_duration_minutes: 'number',\n locale: 'optionalString',\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 SSO flow.\\n' +\n 'Consider using stytch.sso.start() to add PKCE to your SSO flows for added security.\\n' +\n 'See https://stytch.com/docs/oauth#guides_pkce for more information.',\n );\n }\n\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n\n const resp = await this._networkClient.retriableFetchSDK<SSOAuthenticateResponse<TProjectConfiguration>>({\n url: '/b2b/sso/authenticate',\n method: 'POST',\n body: {\n pkce_code_verifier: keyPair?.code_verifier,\n ...options,\n dfp_telemetry_id,\n captcha_token,\n intermediate_session_token: this._subscriptionService.getIntermediateSessionToken() || undefined,\n },\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n\n this._pkceManager.clearPKPair();\n\n return resp;\n });\n }\n\n protected async getBaseApiUrl() {\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 async start({ connection_id, login_redirect_url, signup_redirect_url }: SSOStartOptions): Promise<void> {\n const { pkceRequiredForSso } = await this._dynamicConfig;\n const baseURL = await this.getBaseApiUrl();\n\n const startUrl = new URL(`${baseURL}/v1/public/sso/start`);\n startUrl.searchParams.set('public_token', this._config.publicToken);\n startUrl.searchParams.set('connection_id', connection_id);\n\n if (pkceRequiredForSso) {\n const keyPair = await this._pkceManager.startPKCETransaction();\n startUrl.searchParams.set('pkce_code_challenge', keyPair.code_challenge);\n } else {\n this._pkceManager.clearPKPair();\n }\n\n if (login_redirect_url) startUrl.searchParams.set('login_redirect_url', login_redirect_url);\n if (signup_redirect_url) startUrl.searchParams.set('signup_redirect_url', signup_redirect_url);\n\n this.navigate(startUrl);\n }\n\n // Public so it can be mocked in tests\n navigate(url: URL) {\n window.location.href = url.toString();\n }\n\n async getConnections(): Promise<B2BSSOGetConnectionsResponse> {\n return await this._networkClient.fetchSDK<B2BSSOGetConnectionsResponse>({\n url: '/b2b/sso',\n method: 'GET',\n });\n }\n\n async discoverConnections(emailAddress: string): Promise<B2BSSODiscoverConnectionsResponse> {\n return await this._networkClient.fetchSDK<B2BSSODiscoverConnectionsResponse>({\n url: `/b2b/sso/discovery/connections?email_address=${encodeURIComponent(emailAddress)}`,\n method: 'GET',\n });\n }\n\n async deleteConnection(connectionId: string): Promise<B2BSSODeleteConnectionResponse> {\n return this._networkClient.fetchSDK<B2BSSODeleteConnectionResponse>({\n url: `/b2b/sso/${connectionId}`,\n method: 'DELETE',\n });\n }\n\n saml = {\n createConnection: async (data: B2BSSOSAMLCreateConnectionOptions): Promise<B2BSSOSAMLCreateConnectionResponse> => {\n return await this._networkClient.fetchSDK<B2BSSOSAMLCreateConnectionResponse>({\n url: '/b2b/sso/saml',\n method: 'POST',\n body: data,\n });\n },\n updateConnection: async (data: B2BSSOSAMLUpdateConnectionOptions): Promise<B2BSSOSAMLUpdateConnectionResponse> => {\n return await this._networkClient.fetchSDK<B2BSSOSAMLUpdateConnectionResponse>({\n url: `/b2b/sso/saml/${data.connection_id}`,\n method: 'PUT',\n body: data,\n });\n },\n updateConnectionByURL: async (\n data: B2BSSOSAMLUpdateConnectionByURLOptions,\n ): Promise<B2BSSOSAMLUpdateConnectionByURLResponse> => {\n return await this._networkClient.fetchSDK<B2BSSOSAMLUpdateConnectionResponse>({\n url: `/b2b/sso/saml/${data.connection_id}/url`,\n method: 'PUT',\n body: data,\n });\n },\n deleteVerificationCertificate: async (\n data: B2BSSOSAMLDeleteVerificationCertificateOptions,\n ): Promise<B2BSSOSAMLDeleteVerificationCertificateResponse> => {\n return await this._networkClient.fetchSDK<B2BSSOSAMLDeleteVerificationCertificateResponse>({\n url: `/b2b/sso/saml/${data.connection_id}/verification_certificates/${data.certificate_id}`,\n method: 'DELETE',\n });\n },\n deleteEncryptionPrivateKey: async (\n data: B2BSSOSAMLDeleteEncryptionPrivateKeyOptions,\n ): Promise<B2BSSOSAMLDeleteEncryptionPrivateKeyResponse> => {\n return await this._networkClient.fetchSDK<B2BSSOSAMLDeleteEncryptionPrivateKeyResponse>({\n url: `/b2b/sso/saml/${data.connection_id}/encryption_private_key/${data.private_key_id}`,\n method: 'DELETE',\n });\n },\n };\n\n oidc = {\n createConnection: async (data: B2BSSOOIDCCreateConnectionOptions): Promise<B2BSSOOIDCCreateConnectionResponse> => {\n return await this._networkClient.fetchSDK<B2BSSOOIDCCreateConnectionResponse>({\n url: '/b2b/sso/oidc',\n method: 'POST',\n body: data,\n });\n },\n updateConnection: async (data: B2BSSOOIDCUpdateConnectionOptions): Promise<B2BSSOOIDCUpdateConnectionResponse> => {\n return await this._networkClient.fetchSDK<B2BSSOOIDCUpdateConnectionResponse>({\n url: `/b2b/sso/oidc/${data.connection_id}`,\n method: 'PUT',\n body: data,\n });\n },\n };\n\n external = {\n createConnection: async (\n data: B2BSSOCreateExternalConnectionOptions,\n ): Promise<B2BSSOCreateExternalConnectionResponse> => {\n return await this._networkClient.fetchSDK<B2BSSOCreateExternalConnectionResponse>({\n url: '/b2b/sso/external',\n method: 'POST',\n body: data,\n });\n },\n updateConnection: async (\n data: B2BSSOUpdateExternalConnectionOptions,\n ): Promise<B2BSSOUpdateExternalConnectionResponse> => {\n return await this._networkClient.fetchSDK<B2BSSOUpdateExternalConnectionResponse>({\n url: `/b2b/sso/external/${data.connection_id}`,\n method: 'PUT',\n body: data,\n });\n },\n };\n}\n","import {\n B2BSCIMCreateConnectionOptions,\n B2BSCIMCreateConnectionResponse,\n B2BSCIMDeleteConnectionResponse,\n B2BSCIMGetConnectionGroupsOptions,\n B2BSCIMGetConnectionGroupsResponse,\n B2BSCIMGetConnectionResponse,\n B2BSCIMRotateCancelResponse,\n B2BSCIMRotateCompleteResponse,\n B2BSCIMRotateStartResponse,\n B2BSCIMUpdateConnectionOptions,\n B2BSCIMUpdateConnectionResponse,\n IHeadlessB2BSCIMClient,\n} from '../../public/b2b/scim';\nimport { IB2BSubscriptionService, INetworkClient } from '../..';\nimport { StytchProjectConfigurationInput } from '../../public/typeConfig';\nimport { validateInDev } from '../../utils/dev';\n\nexport class HeadlessB2BSCIMClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BSCIMClient\n{\n constructor(\n protected _networkClient: INetworkClient,\n protected _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n ) {}\n\n async createConnection(data: B2BSCIMCreateConnectionOptions): Promise<B2BSCIMCreateConnectionResponse> {\n validateInDev('stytch.scim.createConnection', data, {\n display_name: 'optionalString',\n identity_provider: 'optionalString',\n });\n\n return await this._networkClient.fetchSDK<B2BSCIMCreateConnectionResponse>({\n url: '/b2b/scim',\n method: 'POST',\n body: data,\n });\n }\n\n async updateConnection(data: B2BSCIMUpdateConnectionOptions): Promise<B2BSCIMUpdateConnectionResponse> {\n validateInDev('stytch.scim.updateConnection', data, {\n connection_id: 'string',\n display_name: 'optionalString',\n identity_provider: 'optionalString',\n });\n\n return await this._networkClient.fetchSDK<B2BSCIMUpdateConnectionResponse>({\n url: `/b2b/scim/${data.connection_id}`,\n method: 'PUT',\n body: data,\n });\n }\n\n async deleteConnection(connectionId: string): Promise<B2BSCIMDeleteConnectionResponse> {\n validateInDev(\n 'stytch.scim.deleteConnection',\n { connection_id: connectionId },\n {\n connection_id: 'string',\n },\n );\n\n return await this._networkClient.fetchSDK<B2BSCIMDeleteConnectionResponse>({\n url: `/b2b/scim/${connectionId}`,\n method: 'DELETE',\n });\n }\n\n async getConnection(): Promise<B2BSCIMGetConnectionResponse> {\n return await this._networkClient.fetchSDK<B2BSCIMGetConnectionResponse>({\n url: '/b2b/scim',\n method: 'GET',\n });\n }\n\n async getConnectionGroups(data: B2BSCIMGetConnectionGroupsOptions): Promise<B2BSCIMGetConnectionGroupsResponse> {\n validateInDev('stytch.scim.getConnectionGroups', data, {\n limit: 'optionalNumber',\n cursor: 'optionalString',\n });\n\n return await this._networkClient.fetchSDK<B2BSCIMGetConnectionGroupsResponse>({\n url: '/b2b/scim/groups',\n method: 'POST',\n body: data,\n });\n }\n\n async rotateStart(connectionId: string): Promise<B2BSCIMRotateStartResponse> {\n validateInDev(\n 'stytch.scim.rotateStart',\n { connectionId },\n {\n connectionId: 'string',\n },\n );\n return await this._networkClient.fetchSDK<B2BSCIMRotateStartResponse>({\n url: `/b2b/scim/rotate/start`,\n method: 'POST',\n body: { connection_id: connectionId },\n });\n }\n\n async rotateComplete(connectionId: string): Promise<B2BSCIMRotateCompleteResponse> {\n validateInDev(\n 'stytch.scim.rotateComplete',\n { connectionId },\n {\n connectionId: 'string',\n },\n );\n\n return await this._networkClient.fetchSDK<B2BSCIMRotateCompleteResponse>({\n url: `/b2b/scim/rotate/complete`,\n method: 'POST',\n body: { connection_id: connectionId },\n });\n }\n\n async rotateCancel(connectionId: string): Promise<B2BSCIMRotateCancelResponse> {\n validateInDev(\n 'stytch.scim.rotateCancel',\n { connectionId },\n {\n connectionId: 'string',\n },\n );\n\n return await this._networkClient.fetchSDK<B2BSCIMRotateCancelResponse>({\n url: `/b2b/scim/rotate/cancel`,\n method: 'POST',\n body: { connection_id: connectionId },\n });\n }\n}\n","import { INetworkClient } from '../../NetworkClient';\nimport { IB2BSubscriptionService } from '../../SubscriptionService';\nimport {\n ResponseCommon,\n Organization,\n IHeadlessB2BOrganizationClient,\n B2BOrganizationsUpdateResponse,\n B2BOrganizationsUpdateOptions,\n B2BOrganizationsDeleteResponse,\n B2BOrganizationsMembersCreateOptions,\n B2BOrganizationsMembersCreateResponse,\n B2BOrganizationsMembersDeleteResponse,\n B2BOrganizationsMembersReactivateResponse,\n B2BOrganizationsMemberDeletePasswordResponse,\n B2BOrganizationsMemberDeleteMFAPhoneNumberResponse,\n B2BOrganizationsMembersUpdateOptions,\n B2BOrganizationsMembersUpdateResponse,\n B2BOrganizationsMembersSearchResponse,\n B2BOrganizationsMembersSearchOptions,\n B2BOrganizationsMemberDeleteMFATOTPResponse,\n OrganizationInfo,\n B2BOrganizationsGetBySlugResponse,\n B2BOrganizationsGetBySlugOptions,\n B2BOrganizationsMemberUnlinkRetiredEmailOptions,\n B2BOrganizationsMemberUnlinkRetiredEmailResponse,\n B2BOrganizationsMemberStartEmailUpdateOptions,\n B2BOrganizationsMemberStartEmailUpdateResponse,\n StytchProjectConfigurationInput,\n MemberResponseCommon,\n B2BOrganizationsGetConnectedAppsResponse,\n B2BOrganizationsGetConnectedAppResponse,\n B2BOrganizationsGetConnectedAppOptions,\n B2BOrganizationsMemberGetConnectedAppsOptions,\n B2BOrganizationsMemberGetConnectedAppsResponse,\n B2BOrganizationsMemberRevokeConnectedAppOptions,\n B2BOrganizationsMemberRevokeConnectedAppResponse,\n} from '../../public';\nimport { validateInDev } from '../../utils/dev';\n\nexport class HeadlessB2BOrganizationClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BOrganizationClient\n{\n constructor(\n private _networkClient: INetworkClient,\n private _apiNetworkClient: INetworkClient,\n private _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n ) {}\n\n get = async (): Promise<Organization | null> => {\n const resp = await this._networkClient.fetchSDK<{ organization: Organization } & ResponseCommon>({\n url: `/b2b/organizations/me`,\n method: 'GET',\n });\n this._subscriptionService.updateOrganization(resp.organization);\n return resp.organization;\n };\n\n getSync = (): Organization | null => {\n return this._subscriptionService.getOrganization();\n };\n\n getInfo = (): OrganizationInfo => ({\n organization: this.getSync(),\n fromCache: this._subscriptionService.getFromCache(),\n });\n\n onChange = (callback: (organization: Organization | null) => void) => {\n return this._subscriptionService.subscribeToState((state) => callback(state?.organization ?? null));\n };\n\n update = async (data: B2BOrganizationsUpdateOptions): Promise<B2BOrganizationsUpdateResponse> => {\n const resp = await this._networkClient.fetchSDK<B2BOrganizationsUpdateResponse>({\n url: `/b2b/organizations/me`,\n method: 'PUT',\n body: data,\n });\n\n this._subscriptionService.updateOrganization(resp.organization);\n return resp;\n };\n\n delete = async (): Promise<B2BOrganizationsDeleteResponse> => {\n const resp = await this._networkClient.fetchSDK<B2BOrganizationsDeleteResponse>({\n url: `/b2b/organizations/me`,\n method: 'DELETE',\n });\n\n this._subscriptionService.destroyState();\n\n return resp;\n };\n\n getBySlug = async (data: B2BOrganizationsGetBySlugOptions): Promise<B2BOrganizationsGetBySlugResponse> => {\n validateInDev('stytch.organization.getBySlug', data, {\n organization_slug: 'string',\n });\n\n return this._networkClient.fetchSDK<B2BOrganizationsGetBySlugResponse>({\n url: `/b2b/organizations/search`,\n method: 'POST',\n body: data,\n });\n };\n\n getConnectedApps = async (): Promise<B2BOrganizationsGetConnectedAppsResponse> => {\n return this._networkClient.fetchSDK<B2BOrganizationsGetConnectedAppsResponse>({\n url: '/b2b/organizations/connected_apps',\n method: 'GET',\n });\n };\n\n getConnectedApp = async (\n data: B2BOrganizationsGetConnectedAppOptions,\n ): Promise<B2BOrganizationsGetConnectedAppResponse> => {\n return this._networkClient.fetchSDK<B2BOrganizationsGetConnectedAppResponse>({\n url: `/b2b/organizations/connected_apps/${data.connected_app_id}`,\n method: 'GET',\n });\n };\n\n members = {\n create: async (data: B2BOrganizationsMembersCreateOptions): Promise<B2BOrganizationsMembersCreateResponse> => {\n return this._networkClient.fetchSDK<B2BOrganizationsMembersCreateResponse>({\n url: `/b2b/organizations/members`,\n method: 'POST',\n body: data,\n });\n },\n search: async (data: B2BOrganizationsMembersSearchOptions): Promise<B2BOrganizationsMembersSearchResponse> => {\n return this._networkClient.fetchSDK<B2BOrganizationsMembersSearchResponse>({\n url: `/b2b/organizations/me/members/search`,\n method: 'POST',\n body: data,\n });\n },\n update: async (data: B2BOrganizationsMembersUpdateOptions): Promise<B2BOrganizationsMembersUpdateResponse> => {\n const response = await this._networkClient.fetchSDK<B2BOrganizationsMembersUpdateResponse>({\n url: `/b2b/organizations/members/${data.member_id}`,\n method: 'PUT',\n body: data,\n });\n\n this.updateMemberIfSelf(response);\n return response;\n },\n deletePassword: async (passwordId: string): Promise<B2BOrganizationsMemberDeletePasswordResponse> => {\n const response = await this._networkClient.fetchSDK<B2BOrganizationsMemberDeletePasswordResponse>({\n url: `/b2b/organizations/members/passwords/${passwordId}`,\n method: 'DELETE',\n });\n\n this.updateMemberIfSelf(response);\n return response;\n },\n deleteMFAPhoneNumber: async (memberId: string): Promise<B2BOrganizationsMemberDeleteMFAPhoneNumberResponse> => {\n const response = await this._networkClient.fetchSDK<B2BOrganizationsMemberDeleteMFAPhoneNumberResponse>({\n url: `/b2b/organizations/members/mfa_phone_numbers/${memberId}`,\n method: 'DELETE',\n });\n\n this.updateMemberIfSelf(response);\n return response;\n },\n deleteMFATOTP: async (memberId: string): Promise<B2BOrganizationsMemberDeleteMFATOTPResponse> => {\n const response = await this._networkClient.fetchSDK<B2BOrganizationsMemberDeleteMFATOTPResponse>({\n url: `/b2b/organizations/members/totp/${memberId}`,\n method: 'DELETE',\n });\n\n this.updateMemberIfSelf(response);\n return response;\n },\n delete: async (memberId: string): Promise<B2BOrganizationsMembersDeleteResponse> => {\n const response = await this._networkClient.fetchSDK<B2BOrganizationsMembersDeleteResponse>({\n url: `/b2b/organizations/members/${memberId}`,\n method: 'DELETE',\n });\n\n if (memberId === this._subscriptionService.getMember()?.member_id) {\n this._subscriptionService.destroyState();\n }\n\n return response;\n },\n reactivate: async (memberId: string): Promise<B2BOrganizationsMembersReactivateResponse> => {\n return this._networkClient.fetchSDK<B2BOrganizationsMembersReactivateResponse>({\n url: `/b2b/organizations/members/${memberId}/reactivate`,\n method: 'PUT',\n });\n },\n unlinkRetiredEmail: async (\n data: B2BOrganizationsMemberUnlinkRetiredEmailOptions,\n ): Promise<B2BOrganizationsMemberUnlinkRetiredEmailResponse> => {\n const { member_id, ...body } = data;\n const response = await this._apiNetworkClient.fetchSDK<B2BOrganizationsMemberUnlinkRetiredEmailResponse>({\n url: `/b2b/organizations/members/${member_id}/unlink_retired_email`,\n method: 'POST',\n body,\n });\n\n this.updateMemberIfSelf(response);\n return response;\n },\n startEmailUpdate: async (\n data: B2BOrganizationsMemberStartEmailUpdateOptions,\n ): Promise<B2BOrganizationsMemberStartEmailUpdateResponse> => {\n const { member_id, ...body } = data;\n const response = await this._apiNetworkClient.fetchSDK<B2BOrganizationsMemberStartEmailUpdateResponse>({\n url: `/b2b/organizations/members/${member_id}/start_email_update`,\n method: 'POST',\n body,\n });\n\n this.updateMemberIfSelf(response);\n return response;\n },\n getConnectedApps: async (\n data: B2BOrganizationsMemberGetConnectedAppsOptions,\n ): Promise<B2BOrganizationsMemberGetConnectedAppsResponse> => {\n return this._networkClient.fetchSDK<B2BOrganizationsMemberGetConnectedAppsResponse>({\n url: `b2b/organizations/members/${data.member_id}/connected_apps`,\n method: 'GET',\n });\n },\n revokeConnectedApp: async (\n data: B2BOrganizationsMemberRevokeConnectedAppOptions,\n ): Promise<B2BOrganizationsMemberRevokeConnectedAppResponse> => {\n return this._networkClient.fetchSDK<B2BOrganizationsMemberRevokeConnectedAppResponse>({\n url: `/b2b/organizations/members/${data.member_id}/connected_apps/${data.connected_app_id}/revoke`,\n method: 'POST',\n });\n },\n };\n\n private updateMemberIfSelf = (response: MemberResponseCommon) => {\n if (response.member_id === this._subscriptionService.getMember()?.member_id) {\n this._subscriptionService.updateMember(response.member);\n }\n };\n}\n","import { IB2BSubscriptionService, IDFPProtectedAuthProvider, INetworkClient, IPKCEManager } from '../..';\nimport { StytchProjectConfigurationInput } from '../../public/typeConfig';\nimport {\n B2BOAuthAuthenticateOptions,\n B2BOAuthAuthenticateResponse,\n B2BOAuthDiscoveryAuthenticateResponse,\n B2BOAuthDiscoveryStartOptions,\n IHeadlessB2BOAuthClient,\n OAuthDiscoveryAuthenticateOptions,\n OAuthStartOptions,\n} from '../../public/b2b/oauth';\nimport { B2BOAuthProviders } from '../../public/b2b/ui';\nimport { isTestPublicToken, logger } 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 HeadlessB2BOAuthClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BOAuthClient<TProjectConfiguration>\n{\n authenticate: (options: B2BOAuthAuthenticateOptions) => Promise<B2BOAuthAuthenticateResponse<TProjectConfiguration>>;\n\n discovery: {\n authenticate: (\n data: OAuthDiscoveryAuthenticateOptions,\n ) => Promise<B2BOAuthDiscoveryAuthenticateResponse<TProjectConfiguration>>;\n };\n\n google: {\n start: (options: OAuthStartOptions) => Promise<void>;\n discovery: {\n start: (options: B2BOAuthDiscoveryStartOptions) => Promise<void>;\n };\n };\n\n microsoft: {\n start: (options: OAuthStartOptions) => Promise<void>;\n discovery: {\n start: (options: B2BOAuthDiscoveryStartOptions) => Promise<void>;\n };\n };\n\n hubspot: {\n start: (options: OAuthStartOptions) => Promise<void>;\n discovery: {\n start: (options: B2BOAuthDiscoveryStartOptions) => Promise<void>;\n };\n };\n\n slack: {\n start: (options: OAuthStartOptions) => Promise<void>;\n discovery: {\n start: (options: B2BOAuthDiscoveryStartOptions) => Promise<void>;\n };\n };\n\n github: {\n start: (options: OAuthStartOptions) => Promise<void>;\n discovery: {\n start: (options: B2BOAuthDiscoveryStartOptions) => Promise<void>;\n };\n };\n\n constructor(\n protected _networkClient: INetworkClient,\n protected _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n protected _pkceManager: IPKCEManager,\n protected _dynamicConfig: DynamicConfig,\n protected _config: Config,\n protected dfpProtectedAuth: IDFPProtectedAuthProvider,\n ) {\n this.authenticate = this._subscriptionService.withUpdateSession(async (options: B2BOAuthAuthenticateOptions) => {\n validateInDev('stytch.oauth.authenticate', options, {\n oauth_token: 'string',\n session_duration_minutes: 'number',\n locale: 'optionalString',\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 { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n const resp = await this._networkClient.retriableFetchSDK<B2BOAuthAuthenticateResponse<TProjectConfiguration>>({\n url: '/b2b/oauth/authenticate',\n method: 'POST',\n body: {\n pkce_code_verifier: keyPair?.code_verifier,\n dfp_telemetry_id,\n captcha_token,\n intermediate_session_token: (await this._subscriptionService.getIntermediateSessionToken()) || undefined,\n ...options,\n },\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n\n this._pkceManager.clearPKPair();\n\n return resp;\n });\n\n this.discovery = {\n authenticate: this._subscriptionService.withUpdateSession(\n async (\n data: OAuthDiscoveryAuthenticateOptions,\n ): Promise<B2BOAuthDiscoveryAuthenticateResponse<TProjectConfiguration>> => {\n validateInDev('stytch.oauth.discovery.authenticate', data, {\n discovery_oauth_token: 'string',\n });\n\n const pkPair = await this._pkceManager.getPKPair();\n\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n\n const requestBody = {\n pkce_code_verifier: pkPair?.code_verifier,\n dfp_telemetry_id,\n captcha_token,\n ...data,\n };\n const resp = await this._networkClient.retriableFetchSDK<\n B2BOAuthDiscoveryAuthenticateResponse<TProjectConfiguration>\n >({\n url: '/b2b/oauth/discovery/authenticate',\n body: requestBody,\n method: 'POST',\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n\n this._pkceManager.clearPKPair();\n\n return resp;\n },\n ),\n };\n\n this.google = {\n start: this.startOAuthFlow(B2BOAuthProviders.Google),\n discovery: {\n start: this.startDiscoveryOAuthFlow(B2BOAuthProviders.Google),\n },\n };\n\n this.microsoft = {\n start: this.startOAuthFlow(B2BOAuthProviders.Microsoft),\n discovery: {\n start: this.startDiscoveryOAuthFlow(B2BOAuthProviders.Microsoft),\n },\n };\n\n this.hubspot = {\n start: this.startOAuthFlow(B2BOAuthProviders.HubSpot),\n discovery: {\n start: this.startDiscoveryOAuthFlow(B2BOAuthProviders.HubSpot),\n },\n };\n\n this.slack = {\n start: this.startOAuthFlow(B2BOAuthProviders.Slack),\n discovery: {\n start: this.startDiscoveryOAuthFlow(B2BOAuthProviders.Slack),\n },\n };\n\n this.github = {\n start: this.startOAuthFlow(B2BOAuthProviders.GitHub),\n discovery: {\n start: this.startDiscoveryOAuthFlow(B2BOAuthProviders.GitHub),\n },\n };\n }\n\n protected 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 protected startOAuthFlow(providerType: B2BOAuthProviders) {\n return async (options: OAuthStartOptions): Promise<void> => {\n const {\n organization_id,\n organization_slug,\n login_redirect_url,\n signup_redirect_url,\n custom_scopes,\n provider_params,\n } = options;\n const { pkceRequiredForOAuth } = await this._dynamicConfig;\n const baseURL = await this.getBaseApiUrl();\n\n const startUrl = new URL(`${baseURL}/v1/b2b/public/oauth/${providerType}/start`);\n startUrl.searchParams.set('public_token', this._config.publicToken);\n if (organization_id && organization_id != '') {\n startUrl.searchParams.set('organization_id', organization_id);\n }\n\n if (organization_slug && organization_slug != '') {\n startUrl.searchParams.set('slug', organization_slug);\n }\n\n if (custom_scopes) {\n validateInDev(\n 'startOAuthFlow',\n { custom_scopes },\n {\n custom_scopes: 'stringArray',\n },\n );\n startUrl.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 startUrl.searchParams.set('provider_' + key, provider_params[key]);\n }\n }\n\n if (pkceRequiredForOAuth) {\n const keyPair = await this._pkceManager.startPKCETransaction();\n startUrl.searchParams.set('pkce_code_challenge', keyPair.code_challenge);\n } else {\n this._pkceManager.clearPKPair();\n }\n\n if (login_redirect_url) startUrl.searchParams.set('login_redirect_url', login_redirect_url);\n if (signup_redirect_url) startUrl.searchParams.set('signup_redirect_url', signup_redirect_url);\n\n this.navigate(startUrl);\n };\n }\n\n protected startDiscoveryOAuthFlow(providerType: B2BOAuthProviders) {\n return async (options: B2BOAuthDiscoveryStartOptions): Promise<void> => {\n const { discovery_redirect_url, custom_scopes, provider_params } = options;\n const { pkceRequiredForOAuth } = await this._dynamicConfig;\n const baseURL = await this.getBaseApiUrl();\n\n const startUrl = new URL(`${baseURL}/v1/b2b/public/oauth/${providerType}/discovery/start`);\n startUrl.searchParams.set('public_token', this._config.publicToken);\n if (custom_scopes) {\n validateInDev(\n 'startOAuthFlow',\n { custom_scopes },\n {\n custom_scopes: 'stringArray',\n },\n );\n startUrl.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 startUrl.searchParams.set('provider_' + key, provider_params[key]);\n }\n }\n\n if (pkceRequiredForOAuth) {\n const keyPair = await this._pkceManager.startPKCETransaction();\n startUrl.searchParams.set('pkce_code_challenge', keyPair.code_challenge);\n } else {\n this._pkceManager.clearPKPair();\n }\n\n if (discovery_redirect_url) {\n startUrl.searchParams.set('discovery_redirect_url', discovery_redirect_url);\n }\n\n this.navigate(startUrl);\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 {\n IHeadlessB2BSessionClient,\n B2BSessionOnChangeCallback,\n SessionRevokeResponse,\n SessionAuthenticateOptions,\n B2BSessionAuthenticateResponse,\n B2BSessionRevokeOptions,\n SessionTokensUpdate,\n UNRECOVERABLE_ERROR_TYPES,\n B2BSessionExchangeOptions,\n B2BSessionExchangeResponse,\n MemberSessionInfo,\n StytchProjectConfigurationInput,\n SessionTokens,\n B2BSessionAccessTokenExchangeOptions,\n B2BSessionAccessTokenExchangeResponse,\n B2BSessionAttestResponse,\n B2BSessionAttestOptions,\n} from '../../public';\nimport { INetworkClient, IB2BSubscriptionService, IfOpaqueTokens, ExtractOpaqueTokens } from '../..';\nimport { validateInDev } from '../../utils/dev';\n\nexport class HeadlessB2BSessionClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BSessionClient<TProjectConfiguration>\n{\n getSync = () => {\n return this._subscriptionService.getSession();\n };\n\n getInfo = (): MemberSessionInfo => ({\n session: this.getSync(),\n fromCache: this._subscriptionService.getFromCache(),\n });\n\n onChange = (callback: B2BSessionOnChangeCallback) => {\n return this._subscriptionService.subscribeToState((state) => callback(state?.session ?? null));\n };\n\n revoke = async (options?: B2BSessionRevokeOptions) => {\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 passes 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 try {\n const resp = await this._networkClient.fetchSDK<SessionRevokeResponse>({\n url: `/b2b/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 revokeForMember = async (options: { member_id: string }) => {\n validateInDev('stytch.session.revokeForMember', options, {\n member_id: 'string',\n });\n\n return await this._networkClient.fetchSDK<SessionRevokeResponse>({\n url: `/b2b/sessions/revoke/${options.member_id}`,\n method: 'POST',\n });\n };\n\n private _authenticate = async (\n options?: SessionAuthenticateOptions,\n ): Promise<B2BSessionAuthenticateResponse<TProjectConfiguration>> => {\n const initialSession = this._subscriptionService.getSession();\n const isSessionStale = () =>\n initialSession?.member_session_id !== this._subscriptionService.getSession()?.member_session_id;\n\n try {\n const requestBody = {\n session_duration_minutes: options?.session_duration_minutes,\n };\n const resp = await this._networkClient.fetchSDK<B2BSessionAuthenticateResponse<TProjectConfiguration>>({\n url: '/b2b/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 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 authenticate: (\n options?: SessionAuthenticateOptions,\n ) => Promise<B2BSessionAuthenticateResponse<TProjectConfiguration>>;\n\n exchange: (data: B2BSessionExchangeOptions) => Promise<B2BSessionExchangeResponse<TProjectConfiguration>>;\n\n exchangeAccessToken: (\n data: B2BSessionAccessTokenExchangeOptions,\n ) => Promise<B2BSessionAccessTokenExchangeResponse<TProjectConfiguration>>;\n\n attest: (data: B2BSessionAttestOptions) => Promise<B2BSessionAttestResponse<TProjectConfiguration>>;\n\n constructor(\n private _networkClient: INetworkClient,\n private _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n ) {\n this.authenticate = this._subscriptionService.withUpdateSession(this._authenticate);\n\n this.exchange = this._subscriptionService.withUpdateSession(async (data: B2BSessionExchangeOptions) => {\n validateInDev('stytch.session.exchange', data, {\n organization_id: 'string',\n session_duration_minutes: 'number',\n locale: 'optionalString',\n });\n\n return this._networkClient.fetchSDK<B2BSessionExchangeResponse<TProjectConfiguration>>({\n url: '/b2b/sessions/exchange',\n body: data,\n method: 'POST',\n });\n });\n\n this.exchangeAccessToken = this._subscriptionService.withUpdateSession(\n async (data: B2BSessionAccessTokenExchangeOptions) => {\n validateInDev('stytch.session.exchange', data, {\n access_token: 'string',\n session_duration_minutes: 'number',\n });\n return this._networkClient.fetchSDK<B2BSessionAccessTokenExchangeResponse<TProjectConfiguration>>({\n url: '/b2b/sessions/exchange_access_token',\n body: data,\n method: 'POST',\n });\n },\n );\n\n this.attest = this._subscriptionService.withUpdateSession(async (data: B2BSessionAttestOptions) => {\n validateInDev('stytch.session.attest', data, {\n organization_id: 'optionalString',\n profile_id: 'string',\n token: 'string',\n session_duration_minutes: 'optionalNumber',\n });\n\n return this._networkClient.fetchSDK<B2BSessionAttestResponse<TProjectConfiguration>>({\n url: '/b2b/sessions/attest',\n body: data,\n method: 'POST',\n });\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 {\n B2BDiscoveryIntermediateSessionsExchangeOptions,\n B2BDiscoveryIntermediateSessionsExchangeResponse,\n B2BDiscoveryOrganizationsCreateOptions,\n B2BDiscoveryOrganizationsCreateResponse,\n B2BDiscoveryOrganizationsResponse,\n IHeadlessB2BDiscoveryClient,\n StytchProjectConfigurationInput,\n} from '../../public';\nimport { INetworkClient } from '../..';\nimport { IB2BSubscriptionService } from '../..';\nimport { validateInDev } from '../../utils/dev';\n\nexport class HeadlessB2BDiscoveryClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BDiscoveryClient<TProjectConfiguration>\n{\n organizations: {\n list: () => Promise<B2BDiscoveryOrganizationsResponse>;\n create: (\n data: B2BDiscoveryOrganizationsCreateOptions,\n ) => Promise<B2BDiscoveryOrganizationsCreateResponse<TProjectConfiguration>>;\n };\n\n intermediateSessions: {\n exchange: (\n data: B2BDiscoveryIntermediateSessionsExchangeOptions,\n ) => Promise<B2BDiscoveryIntermediateSessionsExchangeResponse<TProjectConfiguration>>;\n };\n\n constructor(\n private _networkClient: INetworkClient,\n private _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n ) {\n this.organizations = {\n list: async () =>\n this._networkClient.fetchSDK<B2BDiscoveryOrganizationsResponse>({\n url: '/b2b/discovery/organizations',\n body: {\n intermediate_session_token: (await this._subscriptionService.getIntermediateSessionToken()) || undefined,\n },\n method: 'POST',\n }),\n create: this._subscriptionService.withUpdateSession(\n async (\n data: B2BDiscoveryOrganizationsCreateOptions,\n ): Promise<B2BDiscoveryOrganizationsCreateResponse<TProjectConfiguration>> => {\n validateInDev('stytch.discovery.organizations.create', data, {\n session_duration_minutes: 'number',\n organization_name: 'optionalString',\n organization_slug: 'optionalString',\n organization_logo_url: 'optionalString',\n sso_jit_provisioning: 'optionalString',\n email_allowed_domains: 'optionalStringArray',\n email_invites: 'optionalString',\n auth_methods: 'optionalString',\n allowed_auth_methods: 'optionalStringArray',\n mfa_policy: 'optionalString',\n });\n\n const requestBody = {\n ...data,\n intermediate_session_token: (await this._subscriptionService.getIntermediateSessionToken()) || undefined,\n };\n\n return this._networkClient.fetchSDK<B2BDiscoveryOrganizationsCreateResponse<TProjectConfiguration>>({\n url: '/b2b/discovery/organizations/create',\n body: requestBody,\n method: 'POST',\n });\n },\n ),\n };\n\n this.intermediateSessions = {\n exchange: this._subscriptionService.withUpdateSession(\n async (\n data: B2BDiscoveryIntermediateSessionsExchangeOptions,\n ): Promise<B2BDiscoveryIntermediateSessionsExchangeResponse<TProjectConfiguration>> => {\n validateInDev('stytch.discovery.intermediateSessions.exchange', data, {\n organization_id: 'string',\n session_duration_minutes: 'number',\n locale: 'optionalString',\n });\n\n const requestBody = {\n ...data,\n intermediate_session_token: this._subscriptionService.getIntermediateSessionToken() || undefined,\n };\n return this._networkClient.fetchSDK<B2BDiscoveryIntermediateSessionsExchangeResponse<TProjectConfiguration>>({\n url: '/b2b/discovery/intermediate_sessions/exchange',\n body: requestBody,\n method: 'POST',\n });\n },\n ),\n };\n }\n}\n","import { IB2BSubscriptionService, IDFPProtectedAuthProvider, INetworkClient } from '../..';\nimport {\n B2BOTPsEmailLoginOrSignupOptions,\n B2BOTPsEmailLoginOrSignupResponse,\n B2BOTPsEmailAuthenticateOptions,\n B2BOTPsEmailAuthenticateResponse,\n B2BSMSAuthenticateOptions,\n B2BSMSAuthenticateResponse,\n B2BSMSSendOptions,\n B2BSMSSendResponse,\n IHeadlessB2BOTPsClient,\n B2BDiscoveryOTPEmailSendOptions,\n B2BDiscoveryOTPEmailSendResponse,\n B2BDiscoveryOTPEmailAuthenticateOptions,\n B2BDiscoveryOTPEmailAuthenticateResponse,\n} from '../../public/b2b/otps';\nimport { StytchProjectConfigurationInput } from '../../public/typeConfig';\n\nimport { validateInDev } from '../../utils/dev';\n\nexport class HeadlessB2BOTPsClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BOTPsClient<TProjectConfiguration>\n{\n sms: {\n send: (data: B2BSMSSendOptions) => Promise<B2BSMSSendResponse>;\n authenticate: (data: B2BSMSAuthenticateOptions) => Promise<B2BSMSAuthenticateResponse<TProjectConfiguration>>;\n };\n\n email: {\n loginOrSignup: (data: B2BOTPsEmailLoginOrSignupOptions) => Promise<B2BOTPsEmailLoginOrSignupResponse>;\n authenticate: (\n data: B2BOTPsEmailAuthenticateOptions,\n ) => Promise<B2BOTPsEmailAuthenticateResponse<TProjectConfiguration>>;\n discovery: {\n send: (data: B2BDiscoveryOTPEmailSendOptions) => Promise<B2BDiscoveryOTPEmailSendResponse>;\n authenticate: (\n data: B2BDiscoveryOTPEmailAuthenticateOptions,\n ) => Promise<B2BDiscoveryOTPEmailAuthenticateResponse<TProjectConfiguration>>;\n };\n };\n\n constructor(\n private _networkClient: INetworkClient,\n private _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n private dfpProtectedAuth: IDFPProtectedAuthProvider,\n ) {\n this.sms = {\n send: async (data: B2BSMSSendOptions): Promise<B2BSMSSendResponse> => {\n validateInDev('stytch.otps.sms.send', data, {\n organization_id: 'string',\n member_id: 'string',\n mfa_phone_number: 'optionalString',\n locale: 'optionalString',\n });\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n return this._networkClient.retriableFetchSDK<B2BSMSSendResponse>({\n url: '/b2b/otps/sms/send',\n body: {\n ...data,\n dfp_telemetry_id,\n captcha_token,\n intermediate_session_token: this._subscriptionService.getIntermediateSessionToken() || undefined,\n },\n method: 'POST',\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n },\n authenticate: this._subscriptionService.withUpdateSession(\n async (data: B2BSMSAuthenticateOptions): Promise<B2BSMSAuthenticateResponse<TProjectConfiguration>> => {\n validateInDev('stytch.otps.sms.authenticate', data, {\n session_duration_minutes: 'number',\n organization_id: 'string',\n member_id: 'string',\n code: 'string',\n set_mfa_enrollment: 'optionalString',\n });\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n const requestBody = {\n ...data,\n dfp_telemetry_id,\n captcha_token,\n intermediate_session_token: this._subscriptionService.getIntermediateSessionToken() || undefined,\n };\n return this._networkClient.retriableFetchSDK<B2BSMSAuthenticateResponse<TProjectConfiguration>>({\n url: '/b2b/otps/sms/authenticate',\n body: requestBody,\n method: 'POST',\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n },\n ),\n };\n\n this.email = {\n loginOrSignup: async (data: B2BOTPsEmailLoginOrSignupOptions): Promise<B2BOTPsEmailLoginOrSignupResponse> => {\n validateInDev('stytch.otps.email.loginOrSignup', data, {\n organization_id: 'string',\n email_address: 'string',\n login_template_id: 'optionalString',\n signup_template_id: 'optionalString',\n locale: 'optionalString',\n login_expiration_minutes: 'optionalNumber',\n signup_expiration_minutes: 'optionalNumber',\n });\n\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n return this._networkClient.retriableFetchSDK<B2BOTPsEmailLoginOrSignupResponse>({\n url: '/b2b/otps/email/login_or_signup',\n body: {\n ...data,\n dfp_telemetry_id,\n captcha_token,\n },\n method: 'POST',\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n },\n authenticate: this._subscriptionService.withUpdateSession(\n async (\n data: B2BOTPsEmailAuthenticateOptions,\n ): Promise<B2BOTPsEmailAuthenticateResponse<TProjectConfiguration>> => {\n validateInDev('stytch.otps.email.authenticate', data, {\n code: 'string',\n email_address: 'string',\n organization_id: 'string',\n session_duration_minutes: 'number',\n locale: 'optionalString',\n });\n\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n return this._networkClient.retriableFetchSDK<B2BOTPsEmailAuthenticateResponse<TProjectConfiguration>>({\n url: '/b2b/otps/email/authenticate',\n body: {\n ...data,\n intermediate_session_token: this._subscriptionService.getIntermediateSessionToken() || undefined,\n dfp_telemetry_id,\n captcha_token,\n },\n method: 'POST',\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n },\n ),\n discovery: {\n send: async (data: B2BDiscoveryOTPEmailSendOptions): Promise<B2BDiscoveryOTPEmailSendResponse> => {\n validateInDev('stytch.otps.email.discovery.send', data, {\n email_address: 'string',\n login_template_id: 'optionalString',\n locale: 'optionalString',\n discovery_expiration_minutes: 'optionalNumber',\n });\n\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n const requestBody = {\n ...data,\n dfp_telemetry_id,\n captcha_token,\n };\n return this._networkClient.retriableFetchSDK<B2BDiscoveryOTPEmailSendResponse>({\n url: '/b2b/otps/email/discovery/send',\n body: requestBody,\n method: 'POST',\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n },\n authenticate: this._subscriptionService.withUpdateSession(\n async (\n data: B2BDiscoveryOTPEmailAuthenticateOptions,\n ): Promise<B2BDiscoveryOTPEmailAuthenticateResponse<TProjectConfiguration>> => {\n validateInDev('stytch.otps.email.discovery.authenticate', data, {\n code: 'string',\n email_address: 'string',\n });\n\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n const requestBody = {\n dfp_telemetry_id,\n captcha_token,\n ...data,\n };\n\n return this._networkClient.retriableFetchSDK<\n B2BDiscoveryOTPEmailAuthenticateResponse<TProjectConfiguration>\n >({\n url: '/b2b/otps/email/discovery/authenticate',\n body: requestBody,\n method: 'POST',\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n },\n ),\n },\n };\n }\n}\n","import { IB2BSubscriptionService, IDFPProtectedAuthProvider, INetworkClient } from '../..';\nimport {\n B2BTOTPAuthenticateOptions,\n B2BTOTPAuthenticateResponse,\n B2BTOTPCreateOptions,\n B2BTOTPCreateResponse,\n IHeadlessB2BTOTPsClient,\n} from '../../public/b2b/totp';\nimport { StytchProjectConfigurationInput } from '../../public/typeConfig';\nimport { validateInDev } from '../../utils/dev';\n\nexport class HeadlessB2BTOTPsClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BTOTPsClient<TProjectConfiguration>\n{\n authenticate: (data: B2BTOTPAuthenticateOptions) => Promise<B2BTOTPAuthenticateResponse<TProjectConfiguration>>;\n\n constructor(\n private _networkClient: INetworkClient,\n private _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n private dfpProtectedAuth: IDFPProtectedAuthProvider,\n ) {\n this.authenticate = this._subscriptionService.withUpdateSession(\n async (data: B2BTOTPAuthenticateOptions): Promise<B2BTOTPAuthenticateResponse<TProjectConfiguration>> => {\n validateInDev('stytch.totp.authenticate', data, {\n organization_id: 'string',\n member_id: 'string',\n code: 'string',\n session_duration_minutes: 'number',\n set_mfa_enrollment: 'optionalString',\n set_default_mfa: 'optionalBoolean',\n });\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n const requestBody = {\n ...data,\n dfp_telemetry_id,\n captcha_token,\n intermediate_session_token: this._subscriptionService.getIntermediateSessionToken() || undefined,\n };\n\n return this._networkClient.retriableFetchSDK<B2BTOTPAuthenticateResponse<TProjectConfiguration>>({\n url: '/b2b/totp/authenticate',\n body: requestBody,\n method: 'POST',\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n },\n );\n }\n\n async create(data: B2BTOTPCreateOptions): Promise<B2BTOTPCreateResponse> {\n validateInDev('stytch.totp.create', data, {\n organization_id: 'string',\n member_id: 'string',\n expiration_minutes: 'optionalNumber',\n });\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n const response = await this._networkClient.retriableFetchSDK<B2BTOTPCreateResponse>({\n url: '/b2b/totp',\n body: {\n ...data,\n dfp_telemetry_id,\n captcha_token,\n intermediate_session_token: (await this._subscriptionService.getIntermediateSessionToken()) || undefined,\n },\n method: 'POST',\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n\n if (response.member_id === this._subscriptionService.getMember()?.member_id) {\n this._subscriptionService.updateMember(response.member);\n }\n\n return response;\n }\n}\n","import {\n IHeadlessB2BRecoveryCodesClient,\n RecoveryCodeGetResponse,\n RecoveryCodeRecoverOptions,\n RecoveryCodeRecoverResponse,\n RecoveryCodeRotateResponse,\n} from '../../public/b2b/recoveryCodes';\nimport { StytchProjectConfigurationInput } from '../../public/typeConfig';\nimport { IB2BSubscriptionService, IDFPProtectedAuthProvider, INetworkClient } from '../..';\n\nimport { validateInDev } from '../../utils/dev';\n\nexport class HeadlessB2BRecoveryCodesClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BRecoveryCodesClient<TProjectConfiguration>\n{\n recover: (data: RecoveryCodeRecoverOptions) => Promise<RecoveryCodeRecoverResponse<TProjectConfiguration>>;\n\n constructor(\n private _networkClient: INetworkClient,\n private _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n private dfpProtectedAuth: IDFPProtectedAuthProvider,\n ) {\n this.recover = this._subscriptionService.withUpdateSession(\n async (data: RecoveryCodeRecoverOptions): Promise<RecoveryCodeRecoverResponse<TProjectConfiguration>> => {\n validateInDev('stytch.recoveryCodes.recover', data, {\n organization_id: 'string',\n member_id: 'string',\n recovery_code: 'string',\n session_duration_minutes: 'number',\n });\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n const requestBody = {\n ...data,\n dfp_telemetry_id,\n captcha_token,\n intermediate_session_token: this._subscriptionService.getIntermediateSessionToken() || undefined,\n };\n return this._networkClient.retriableFetchSDK<RecoveryCodeRecoverResponse<TProjectConfiguration>>({\n url: '/b2b/recovery_codes/recover',\n body: requestBody,\n method: 'POST',\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n },\n );\n }\n\n async rotate(): Promise<RecoveryCodeRotateResponse> {\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n return this._networkClient.retriableFetchSDK<RecoveryCodeRotateResponse>({\n url: '/b2b/recovery_codes/rotate',\n body: {\n dfp_telemetry_id,\n captcha_token,\n },\n method: 'POST',\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n }\n\n async get(): Promise<RecoveryCodeGetResponse> {\n return this._networkClient.fetchSDK<RecoveryCodeGetResponse>({\n url: '/b2b/recovery_codes',\n method: 'GET',\n });\n }\n}\n","import { IB2BSubscriptionService } from '../../SubscriptionService';\nimport { logger } from '../../utils';\nimport { RBACPolicy, RBACPolicyRaw } from '../../rbac';\nimport { IHeadlessB2BRBACClient, PermissionsMap } from '../../public/b2b/rbac';\nimport { StytchProjectConfigurationInput } from '../../public/typeConfig';\n\ntype CachedConfig = {\n rbacPolicy: RBACPolicyRaw | null;\n};\n\ntype DynamicConfig = Promise<CachedConfig>;\n\nexport class HeadlessB2BRBACClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BRBACClient\n{\n private cachedPolicy: RBACPolicy | null;\n private policyPromise: Promise<RBACPolicy>;\n constructor(\n cachedConfig: CachedConfig,\n dynamicConfig: DynamicConfig,\n private _subscriptionService: IB2BSubscriptionService<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 /**\n * Gets the effective policy for the current session by merging project policy with org custom roles\n */\n private async getEffectivePolicy(): Promise<RBACPolicy> {\n const projectPolicy = await this.policyPromise;\n const organization = this._subscriptionService.getOrganization();\n\n // If no org or no custom roles, just return project policy\n if (!organization?.custom_roles?.length) {\n return projectPolicy;\n }\n\n return projectPolicy.mergeWithCustomRoles(organization.custom_roles);\n }\n\n /**\n * Gets the effective policy synchronously for the current session\n * Uses cached policies only\n */\n private getEffectivePolicySync(): RBACPolicy | null {\n if (!this.cachedPolicy) {\n return null;\n }\n\n const organization = this._subscriptionService.getOrganization();\n\n // If no custom roles, just return project policy\n if (!organization?.custom_roles?.length) {\n return this.cachedPolicy;\n }\n\n return this.cachedPolicy.mergeWithCustomRoles(organization.custom_roles);\n }\n\n allPermissions<Permissions extends Record<string, string>>() {\n return this.getEffectivePolicy().then(\n (policy) => policy.allPermissionsForCaller(this.roleIds()) as PermissionsMap<Permissions>,\n );\n }\n\n isAuthorizedSync: IHeadlessB2BRBACClient['isAuthorizedSync'] = (resourceId, action) => {\n const effectivePolicy = this.getEffectivePolicySync();\n return !!effectivePolicy?.callerIsAuthorized(this.roleIds(), resourceId as string, action as unknown as string);\n };\n\n isAuthorized: IHeadlessB2BRBACClient['isAuthorized'] = (resourceId, action) => {\n return this.getEffectivePolicy().then((policy) =>\n policy.callerIsAuthorized(this.roleIds(), resourceId as string, action as unknown as string),\n );\n };\n\n private roleIds() {\n const session = this._subscriptionService.getSession();\n if (!session) {\n return [];\n }\n // Although session.roles is guaranteed to exist for fresh data, there is a minuscule chance\n // that the member session stored in localstorage clientside comes from before roles were added to\n // the API response - in which case session.roles will be undefined and this will crash\n // TODO: [AUTH-2294] We can safely remove this ~3mos after RBAC is released\n return session.roles ?? [];\n }\n}\n","import { IB2BSubscriptionService, IDFPProtectedAuthProvider, INetworkClient } from '../..';\nimport {\n B2BImpersonationAuthenticateOptions,\n B2BImpersonationAuthenticateResponse,\n IHeadlessB2BImpersonationClient,\n} from '../../public/b2b/impersonation';\nimport { StytchProjectConfigurationInput } from '../../public/typeConfig';\n\nimport { validateInDev } from '../../utils/dev';\n\nexport class HeadlessB2BImpersonationClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BImpersonationClient<TProjectConfiguration>\n{\n authenticate: (\n data: B2BImpersonationAuthenticateOptions,\n ) => Promise<B2BImpersonationAuthenticateResponse<TProjectConfiguration>>;\n\n constructor(\n private _networkClient: INetworkClient,\n private _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n private dfpProtectedAuth: IDFPProtectedAuthProvider,\n ) {\n this.authenticate = this._subscriptionService.withUpdateSession(\n async (data: B2BImpersonationAuthenticateOptions) => {\n validateInDev('stytch.impersonation.authenticate', data, {\n impersonation_token: 'string',\n });\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n\n return this._networkClient.retriableFetchSDK<B2BImpersonationAuthenticateResponse<TProjectConfiguration>>({\n url: '/b2b/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}\n","import { INetworkClient } from '../../NetworkClient';\nimport {\n B2BOAuthAuthorizeStartOptions,\n B2BOAuthAuthorizeStartResponse,\n B2BOAuthAuthorizeSubmitOptions,\n B2BOAuthAuthorizeSubmitResponse,\n IHeadlessB2BIDPClient,\n B2BOAuthLogoutStartOptions,\n B2BOAuthLogoutStartResponse,\n} from '../../public/b2b/idp';\n\nexport class HeadlessB2BIDPClient implements IHeadlessB2BIDPClient {\n constructor(private _networkClient: INetworkClient) {}\n\n /**\n * Initiates a request for authorization of a Connected App to access a Member's account.\n *\n * Call this endpoint using the query parameters from an OAuth Authorization request. This endpoint validates various fields (scope, client_id, redirect_uri, prompt, etc...) are correct and returns relevant information for rendering an OAuth Consent Screen.\n *\n * @example\n * const response = await stytch.idp.oauthAuthorizeStart({\n * client_id: 'client_123',\n * redirect_uri: 'https://example.com/callback',\n * scope: 'openid email profile',\n * });\n */\n oauthAuthorizeStart = async (data: B2BOAuthAuthorizeStartOptions): Promise<B2BOAuthAuthorizeStartResponse> =>\n this._networkClient.fetchSDK<B2BOAuthAuthorizeStartResponse>({\n url: '/idp/b2b/oauth/authorize/start',\n method: 'POST',\n body: data,\n });\n\n /**\n * Completes a request for authorization of a Connected App to access a Member's account.\n *\n * Call this endpoint using the query parameters from an OAuth Authorization request, after previously validating those parameters using the Preflight Check API. Note that this endpoint takes in a few additional parameters the preflight check does not- state, nonce, and code_challenge.\n *\n * If the authorization was successful, the redirect_uri will contain a valid authorization_code embedded as a query parameter. If the authorization was unsuccessful, the redirect_uri will contain an OAuth2.1 error_code. In both cases, redirect the Member to the location for the response to be consumed by the Connected App.\n *\n * Exactly one of the following must be provided to identify the Member granting authorization:\n * organization_id + member_id\n * session_token\n * session_jwt\n *\n * If a session_token or session_jwt is passed, the OAuth Authorization will be linked to the Member's session for tracking purposes. One of these fields must be used if the Connected App intends to complete the Exchange Access Token flow.\n *\n * @example\n * const response = await stytch.idp.oauthAuthorizeSubmit({\n * client_id: 'client_123',\n * redirect_uri: 'https://example.com/callback',\n * scope: 'openid email profile',\n * });\n */\n oauthAuthorizeSubmit = async (data: B2BOAuthAuthorizeSubmitOptions): Promise<B2BOAuthAuthorizeSubmitResponse> =>\n this._networkClient.fetchSDK<B2BOAuthAuthorizeSubmitResponse>({\n url: '/idp/b2b/oauth/authorize/submit',\n method: 'POST',\n body: data,\n });\n\n oauthLogoutStart = async (data: B2BOAuthLogoutStartOptions): Promise<B2BOAuthLogoutStartResponse> =>\n this._networkClient.fetchSDK<B2BOAuthLogoutStartResponse>({\n url: `/b2b/oauth/logout/start`,\n method: 'POST',\n body: data,\n });\n}\n","import { OneTapRenderResult } from '../oneTap/GoogleOneTapClient';\nimport {\n IHeadlessB2BOAuthClient,\n OneTapPositions,\n StytchProjectConfigurationInput,\n StytchSDKUsageError,\n} from '@stytch/core/public';\nimport {\n HeadlessB2BOAuthClient as BaseHeadlessB2BOAuthClient,\n DisabledDFPProtectedAuthProvider,\n IDFPProtectedAuthProvider,\n INetworkClient,\n IPKCEManager,\n IB2BSubscriptionService,\n} from '@stytch/core';\nimport { B2BOneTapProvider } from './oneTap/B2BOneTapProvider';\n\nexport type B2BGoogleOneTapDiscoveryOAuthOptions = {\n /**\n * The URL that Stytch redirects to after the Google One Tap discovery flow is completed.\n * This should be a URL that verifies the request by querying Stytch's /oauth/discovery/authenticate endpoint.\n * If this value is not passed, the default discovery redirect URL that you set in your Dashboard is used.\n * If you have not set a default discovery redirect URL, an error is returned.\n */\n discovery_redirect_url?: string;\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\nexport type B2BGoogleOneTapOAuthOptions = {\n /**\n * The ID of the organization that the end user is logging in to.\n */\n organization_id: string;\n\n /**\n * The URL that Stytch redirects to after the Google One Tap flow is completed for a member who already exists.\n * This should be a URL that verifies the request by querying Stytch's /oauth/authenticate endpoint.\n * If this value is not passed, the default login redirect URL that you set in your Dashboard is used.\n * If you have not set a default login redirect URL, an error is returned.\n */\n login_redirect_url?: string;\n\n /**\n * The URL that Stytch redirects to after the Google One Tap flow is completed for a member who does not yet exist.\n * This should be a URL that verifies the request by querying Stytch's /oauth/authenticate endpoint.\n * If this value is not passed, the default signup redirect URL that you set in your Dashboard is used.\n * If you have not set a default signup redirect URL, an error is returned.\n */\n signup_redirect_url?: string;\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 IB2BGoogleOneTapOAuthProvider {\n discovery: {\n /**\n * Start a discovery 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.discovery.start({\n * discovery_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 - A {@link B2BGoogleOneTapDiscoveryOAuthOptions} 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?: B2BGoogleOneTapDiscoveryOAuthOptions): Promise<OneTapRenderResult>;\n };\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 * organization_id: 'organization-test-123',\n * })\n * }, [stytch]);\n * return (\n * <Button onClick={showGoogleOneTap}> Show Google one tap </Button>\n * );\n *\n * @param options - A {@link B2BGoogleOneTapOAuthOptions} 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?: B2BGoogleOneTapOAuthOptions): 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 IWebB2BOAuthClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n extends IHeadlessB2BOAuthClient<TProjectConfiguration> {\n googleOneTap: IB2BGoogleOneTapOAuthProvider;\n}\n\nexport class HeadlessB2BOAuthClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n extends BaseHeadlessB2BOAuthClient<TProjectConfiguration>\n implements IWebB2BOAuthClient<TProjectConfiguration>\n{\n constructor(\n _networkClient: INetworkClient,\n _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n _pkceManager: IPKCEManager,\n _dynamicConfig: DynamicConfig,\n _config: Config,\n _dfpProtectedAuth: IDFPProtectedAuthProvider = DisabledDFPProtectedAuthProvider(),\n private _oneTap: B2BOneTapProvider,\n ) {\n super(_networkClient, _subscriptionService, _pkceManager, _dynamicConfig, _config, _dfpProtectedAuth);\n }\n\n private startOneTapDiscovery = async (options: B2BGoogleOneTapDiscoveryOAuthOptions): 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.createOnDiscoverySuccessHandler({\n discoveryRedirectUrl: options.discovery_redirect_url,\n onSuccess: this._oneTap.redirectOnSuccess,\n });\n\n return client.render({\n style: {\n position: OneTapPositions.floating,\n },\n callback: onSuccessCallback,\n cancelOnTapOutside: options.cancel_on_tap_outside,\n });\n };\n\n private startOneTap = async (options: B2BGoogleOneTapOAuthOptions): Promise<OneTapRenderResult> => {\n if (!options.organization_id) {\n throw new StytchSDKUsageError('stytch.oauth.googleOneTap.start', 'organization_id is a required argument');\n }\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 organizationId: options.organization_id,\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 callback: onSuccessCallback,\n cancelOnTapOutside: options.cancel_on_tap_outside,\n });\n };\n\n googleOneTap: IB2BGoogleOneTapOAuthProvider = {\n discovery: {\n start: this.startOneTapDiscovery,\n },\n start: this.startOneTap,\n };\n}\n","import type { CredentialResponse } from 'google-one-tap';\nimport { INetworkClient, IPKCEManager } from '@stytch/core';\nimport { ResponseCommon, StytchAPIError } from '@stytch/core/public';\nimport { GoogleOneTapClient } from '../../oneTap/GoogleOneTapClient';\nimport { loadGoogleOneTapClient } from '../../oneTap/OneTapProvider';\n\ntype B2BOneTapStartResponse = ResponseCommon & {\n google_client_id: string;\n};\n\ntype B2BOneTapSubmitResponse = ResponseCommon & {\n redirect_url: string;\n};\n\ntype OneTapNotLoadedReason =\n // These come from the API directly - err.error_type\n | 'oauth_config_not_found'\n | 'default_provider_not_allowed'\n // If we have an unhandled error :$\n | string;\n\ntype OneTapLoadResult =\n | { success: true; client: GoogleOneTapClient }\n | { success: false; reason: OneTapNotLoadedReason };\n\ntype DynamicConfig = Promise<{\n pkceRequiredForOAuth: boolean;\n}>;\n\nconst DefaultDynamicConfig = Promise.resolve({\n pkceRequiredForOAuth: false,\n});\n\n/**\n * Handles loading One Tap config from Stytch API and initializing {@link GoogleOneTapClient}\n */\nexport class B2BOneTapProvider {\n private googleClientID?: string;\n constructor(\n private _networkClient: INetworkClient,\n private _pkceManager: IPKCEManager,\n private _config: DynamicConfig = DefaultDynamicConfig,\n ) {}\n\n private async fetchGoogleStart() {\n if (this.googleClientID) {\n return this.googleClientID;\n }\n const oneTapStartResp = await this._networkClient.fetchSDK<B2BOneTapStartResponse>({\n url: '/b2b/oauth/google/onetap/start',\n method: 'GET',\n });\n this.googleClientID = oneTapStartResp.google_client_id;\n return this.googleClientID;\n }\n\n private async submitGoogleOneTapTokenDiscovery({\n credential,\n discoveryRedirectUrl,\n }: {\n credential: string;\n discoveryRedirectUrl?: string;\n }) {\n let codeChallenge = undefined;\n const { pkceRequiredForOAuth } = await this._config;\n if (pkceRequiredForOAuth) {\n const keyPair = await this._pkceManager.startPKCETransaction();\n codeChallenge = keyPair.code_challenge;\n } else {\n this._pkceManager.clearPKPair();\n }\n return await this._networkClient.fetchSDK<B2BOneTapSubmitResponse>({\n url: '/b2b/oauth/google/onetap/discovery/submit',\n method: 'POST',\n body: {\n id_token: credential,\n discovery_redirect_url: discoveryRedirectUrl,\n pkce_code_challenge: codeChallenge,\n },\n });\n }\n\n private async submitGoogleOneTapToken({\n credential,\n organizationId,\n signupRedirectUrl,\n loginRedirectUrl,\n }: {\n credential: string;\n organizationId: string;\n signupRedirectUrl?: string;\n loginRedirectUrl?: string;\n }) {\n let codeChallenge = undefined;\n const { pkceRequiredForOAuth } = await this._config;\n if (pkceRequiredForOAuth) {\n const keyPair = await this._pkceManager.startPKCETransaction();\n codeChallenge = keyPair.code_challenge;\n } else {\n this._pkceManager.clearPKPair();\n }\n return await this._networkClient.fetchSDK<B2BOneTapSubmitResponse>({\n url: '/b2b/oauth/google/onetap/submit',\n method: 'POST',\n body: {\n id_token: credential,\n organization_id: organizationId,\n signup_redirect_url: signupRedirectUrl,\n login_redirect_url: loginRedirectUrl,\n pkce_code_challenge: codeChallenge,\n },\n });\n }\n\n async createOneTapClient(): Promise<OneTapLoadResult> {\n let googleClientId: string;\n try {\n googleClientId = await this.fetchGoogleStart();\n } catch (e) {\n const err = StytchAPIError.from(e);\n return { success: false, reason: err.error_type };\n }\n\n if (googleClientId === '') {\n return { success: false, reason: 'oauth_config_not_found' };\n }\n const client = new GoogleOneTapClient(await loadGoogleOneTapClient(), googleClientId);\n return { success: true, client };\n }\n\n createOnDiscoverySuccessHandler =\n ({\n discoveryRedirectUrl,\n onSuccess,\n onError,\n }: {\n discoveryRedirectUrl?: string;\n onSuccess: (redirect_url: string) => void;\n onError?: (error: Error) => void;\n }) =>\n async (response: CredentialResponse) => {\n const { credential } = response;\n let submitPromise = this.submitGoogleOneTapTokenDiscovery({\n credential,\n discoveryRedirectUrl,\n }).then((result) => onSuccess(result.redirect_url));\n if (onError) {\n submitPromise = submitPromise.catch((error) => onError(error));\n }\n await submitPromise;\n };\n\n createOnSuccessHandler =\n ({\n organizationId,\n signupRedirectUrl,\n loginRedirectUrl,\n onSuccess,\n onError,\n }: {\n organizationId: string;\n signupRedirectUrl?: string;\n loginRedirectUrl?: string;\n onSuccess: (redirect_url: string) => void;\n onError?: (error: Error) => void;\n }) =>\n async (response: CredentialResponse) => {\n const { credential } = response;\n let submitPromise = this.submitGoogleOneTapToken({\n credential,\n organizationId,\n signupRedirectUrl,\n loginRedirectUrl,\n }).then((result) => onSuccess(result.redirect_url));\n if (onError) {\n submitPromise = submitPromise.catch((error) => onError(error));\n }\n await submitPromise;\n };\n\n redirectOnSuccess = (redirect_url: string) => {\n window.location.href = redirect_url;\n };\n}\n","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 SearchDataManager,\n SessionManager,\n StateChangeClient,\n StateChangeRegisterFunction,\n VERTICAL_CONSUMER,\n logger,\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';\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 { B2BInternals, writeB2BInternals } from '../utils/internal';\nimport { HeadlessB2BOAuthClient, IWebB2BOAuthClient } from './HeadlessB2BOAuthClient';\nimport { B2BOneTapProvider } from './oneTap/B2BOneTapProvider';\nimport { buildFinalConfig, hasCustomApiEndpoint } from '../utils/config';\nimport { createAuthUrlHandler, AuthenticateByUrl, ParseAuthenticateUrl } from '../utils/createAuthUrlHandler';\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","import { StytchB2BClient } from './StytchB2BClient';\nimport { ssrSafeClientFactory } from '../ui/react/bindings/StytchSSRProxy';\n\n/**\n * Creates a Headless Stytch client object to call the stytch B2B APIs.\n * The Stytch client is not available serverside.\n * @example\n * const stytch = createStytchB2BClient('public-token-<find yours in the stytch dashboard>')\n *\n * return (\n * <StytchB2BProvider stytch={stytch}>\n * <App />\n * </StytchB2BProvider>\n * )\n * @returns A {@link StytchB2BClient}\n */\nexport const createStytchB2BClient = ssrSafeClientFactory(StytchB2BClient);\n\n/**\n * @deprecated Use {createStytchB2BClient()} instead\n */\nexport const createStytchB2BHeadlessClient = createStytchB2BClient;\n\n/**\n * @deprecated Use {StytchB2BClient()} instead\n */\nexport const StytchB2BHeadlessClient = StytchB2BClient;\nexport { StytchB2BClient };\n\nexport { parseOAuthAuthorizeParams, parseOAuthLogoutParams } from '../utils/idpHelpers';\nexport type { OAuthAuthorizeParams, OAuthLogoutParams } from '../utils/idpHelpers';\n\nexport * from '@stytch/core/public';\n"],"names":["HeadlessB2BSelfClient","constructor","_networkClient","_apiNetworkClient","_subscriptionService","get","resp","fetchSDK","url","method","updateMember","member","getSync","getMember","getInfo","fromCache","getFromCache","onChange","callback","subscribeToState","state","update","data","validateInDev","name","untrusted_metadata","mfa_enrolled","mfa_phone_number","default_mfa_method","body","deleteMFAPhoneNumber","deleteMFATOTP","deletePassword","passwordId","unlinkRetiredEmail","startEmailUpdate","getConnectedApps","revokeConnectedApp","connected_app_id","HeadlessB2BSSOClient","authenticate","_dynamicConfig","_config","dfpProtectedAuth","_pkceManager","saml","createConnection","updateConnection","connection_id","updateConnectionByURL","deleteVerificationCertificate","certificate_id","deleteEncryptionPrivateKey","private_key_id","oidc","external","withUpdateSession","options","sso_token","session_duration_minutes","locale","keyPair","getPKPair","logger","warn","dfp_telemetry_id","captcha_token","getDFPTelemetryIDAndCaptcha","retriableFetchSDK","pkce_code_verifier","code_verifier","intermediate_session_token","getIntermediateSessionToken","undefined","retryCallback","retryWithCaptchaAndDFP","clearPKPair","getBaseApiUrl","isTestPublicToken","publicToken","testAPIURL","liveAPIURL","start","login_redirect_url","signup_redirect_url","pkceRequiredForSso","baseURL","startUrl","URL","searchParams","set","startPKCETransaction","code_challenge","navigate","window","location","href","toString","getConnections","discoverConnections","emailAddress","encodeURIComponent","deleteConnection","connectionId","HeadlessB2BSCIMClient","display_name","identity_provider","getConnection","getConnectionGroups","limit","cursor","rotateStart","rotateComplete","rotateCancel","HeadlessB2BOrganizationClient","updateOrganization","organization","getOrganization","delete","destroyState","getBySlug","organization_slug","getConnectedApp","members","create","search","response","member_id","updateMemberIfSelf","memberId","reactivate","HeadlessB2BOAuthClient","discovery","google","microsoft","hubspot","slack","github","oauth_token","discovery_oauth_token","pkPair","requestBody","startOAuthFlow","B2BOAuthProviders","Google","startDiscoveryOAuthFlow","Microsoft","HubSpot","Slack","GitHub","cnameDomain","providerType","organization_id","custom_scopes","provider_params","pkceRequiredForOAuth","join","key","discovery_redirect_url","HeadlessB2BSessionClient","revoke","revokeForMember","_authenticate","exchange","exchangeAccessToken","attest","getSession","session","error","forceClear","UNRECOVERABLE_ERROR_TYPES","includes","error_type","initialSession","isSessionStale","member_session_id","destroySession","access_token","profile_id","token","getTokens","updateSession","tokens","session_token","session_jwt","updateTokens","HeadlessB2BDiscoveryClient","organizations","intermediateSessions","list","organization_name","organization_logo_url","sso_jit_provisioning","email_allowed_domains","email_invites","auth_methods","allowed_auth_methods","mfa_policy","HeadlessB2BOTPsClient","sms","email","send","code","set_mfa_enrollment","loginOrSignup","email_address","login_template_id","signup_template_id","login_expiration_minutes","signup_expiration_minutes","discovery_expiration_minutes","HeadlessB2BTOTPsClient","set_default_mfa","expiration_minutes","HeadlessB2BRecoveryCodesClient","recover","recovery_code","rotate","HeadlessB2BRBACClient","cachedPolicy","policyPromise","cachedConfig","dynamicConfig","isAuthorizedSync","resourceId","action","effectivePolicy","getEffectivePolicySync","callerIsAuthorized","roleIds","isAuthorized","getEffectivePolicy","then","policy","rbacPolicy","RBACPolicy","fromJSON","projectPolicy","custom_roles","length","mergeWithCustomRoles","allPermissions","allPermissionsForCaller","roles","HeadlessB2BImpersonationClient","impersonation_token","HeadlessB2BIDPClient","oauthAuthorizeStart","oauthAuthorizeSubmit","oauthLogoutStart","BaseHeadlessB2BOAuthClient","_dfpProtectedAuth","DisabledDFPProtectedAuthProvider","_oneTap","startOneTapDiscovery","clientResult","createOneTapClient","success","Error","reason","client","onSuccessCallback","createOnDiscoverySuccessHandler","discoveryRedirectUrl","onSuccess","redirectOnSuccess","render","style","position","OneTapPositions","floating","cancelOnTapOutside","cancel_on_tap_outside","startOneTap","StytchSDKUsageError","createOnSuccessHandler","organizationId","signupRedirectUrl","loginRedirectUrl","googleOneTap","DefaultDynamicConfig","Promise","resolve","B2BOneTapProvider","googleClientID","onError","credential","submitPromise","submitGoogleOneTapTokenDiscovery","result","redirect_url","catch","submitGoogleOneTapToken","fetchGoogleStart","oneTapStartResp","google_client_id","codeChallenge","id_token","pkce_code_challenge","googleClientId","e","err","StytchAPIError","from","GoogleOneTapClient","loadGoogleOneTapClient","StytchB2BClient","_sessionManager","_dataLayer","_stateChangeClient","magicLinks","self","oauth","sso","passwords","otps","totp","recoveryCodes","rbac","scim","impersonation","idp","onStateChange","parseAuthenticateUrl","authenticateByUrl","rawPublicToken","checkB2BNotSSR","checkPublicToken","_PUBLIC_TOKEN","config","buildFinalConfig","usingCustomApiEndpoint","hasCustomApiEndpoint","getB2BDataLayer","B2BSubscriptionService","StateChangeClient","args","additionalTelemetryDataFn","stytch_member_id","stytch_member_session_id","passwordsPKCEManager","PKCEManager","networkClient","NetworkClient","endpoints","bootstrap","BootstrapDataManager","captcha","CaptchaProvider","getAsync","DFPProtectedAuthProvider","dfpBackendURL","dfpCdnURL","executeRecaptcha","clientsideServices","ClientsideServicesProvider","clientsideServicesIframeURL","pkceManagerForOAuth","oneTap","HeadlessB2BMagicLinksClient","HeadlessB2BPasswordsClient","SessionManager","keepSessionAlive","searchManager","SearchDataManager","readSessionCookie","performBackgroundRefresh","createAuthUrlHandler","discovery_magic_links_token","discovery_oauth","multi_tenant_magic_links","magic_links_token","multi_tenant_impersonation","logEvent","details","event_callback_registered","error_callback_registered","success_callback_registered","bootstrapData","vertical","VERTICAL_CONSUMER","internals","dataLayer","writeB2BInternals","createStytchB2BClient","ssrSafeClientFactory","createStytchB2BHeadlessClient","StytchB2BHeadlessClient"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.headless.cjs","sources":["../../../../core/src/HeadlessClients/b2b/HeadlessB2BSelfClient.ts","../../../../core/src/HeadlessClients/b2b/HeadlessB2BSSOClient.ts","../../../../core/src/HeadlessClients/b2b/HeadlessB2BSCIMClient.ts","../../../../core/src/HeadlessClients/b2b/HeadlessB2BOrganizationClient.ts","../../../../core/src/HeadlessClients/b2b/HeadlessB2BOAuthClient.ts","../../../../core/src/HeadlessClients/b2b/HeadlessB2BSessionClient.ts","../../../../core/src/HeadlessClients/b2b/HeadlessB2BDiscoveryClient.ts","../../../../core/src/HeadlessClients/b2b/HeadlessB2BOTPsClient.ts","../../../../core/src/HeadlessClients/b2b/HeadlessB2BTOTPsClient.ts","../../../../core/src/HeadlessClients/b2b/HeadlessB2BRecoveryCodesClient.ts","../../../../core/src/HeadlessClients/b2b/HeadlessB2BRBACClient.ts","../../../../core/src/HeadlessClients/b2b/HeadlessB2BImpersonationClient.ts","../../../../core/src/HeadlessClients/b2b/HeadlessB2BIDPClient.ts","../../../../web/src/b2b/HeadlessB2BOAuthClient.ts","../../../../web/src/b2b/oneTap/B2BOneTapProvider.ts","../../../../web/src/b2b/StytchB2BClient.ts","../../../../web/src/b2b/index.headless.ts"],"sourcesContent":["import {\n ResponseCommon,\n Member,\n IHeadlessB2BSelfClient,\n B2BMemberOnChangeCallback,\n B2BMemberUpdateOptions,\n B2BMemberUpdateResponse,\n B2BMemberDeleteMFAPhoneNumberResponse,\n B2BMemberDeletePasswordResponse,\n MemberInfo,\n B2BMemberUnlinkRetiredEmailRequest,\n B2BMemberUnlinkRetiredEmailResponse,\n B2BMemberStartEmailUpdateRequest,\n B2BMemberStartEmailUpdateResponse,\n StytchProjectConfigurationInput,\n B2BMemberGetConnectedAppsResponse,\n B2BMemberRevokeConnectedAppOptions,\n B2BMemberRevokeConnectedAppResponse,\n} from '../../public';\nimport { INetworkClient } from '../../NetworkClient';\nimport { IB2BSubscriptionService } from '../../SubscriptionService';\nimport { validateInDev } from '../../utils/dev';\n\nexport class HeadlessB2BSelfClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BSelfClient\n{\n constructor(\n private _networkClient: INetworkClient,\n private _apiNetworkClient: INetworkClient,\n private _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n ) {}\n\n get = async (): Promise<Member | null> => {\n const resp = await this._networkClient.fetchSDK<{ member: Member } & ResponseCommon>({\n url: `/b2b/organizations/members/me`,\n method: 'GET',\n });\n this._subscriptionService.updateMember(resp.member);\n return resp.member;\n };\n\n getSync = (): Member | null => {\n return this._subscriptionService.getMember();\n };\n\n getInfo = (): MemberInfo => ({\n member: this.getSync(),\n fromCache: this._subscriptionService.getFromCache(),\n });\n\n onChange = (callback: B2BMemberOnChangeCallback) => {\n return this._subscriptionService.subscribeToState((state) => callback(state?.member ?? null));\n };\n\n update = async (data: B2BMemberUpdateOptions): Promise<B2BMemberUpdateResponse> => {\n validateInDev('stytch.self.update', data, {\n name: 'optionalString',\n untrusted_metadata: 'optionalObject',\n mfa_enrolled: 'optionalBoolean',\n mfa_phone_number: 'optionalString',\n default_mfa_method: 'optionalString',\n });\n\n const resp = await this._networkClient.fetchSDK<B2BMemberUpdateResponse>({\n url: '/b2b/organizations/members/update',\n body: data,\n method: 'PUT',\n });\n this._subscriptionService.updateMember(resp.member);\n return resp;\n };\n\n deleteMFAPhoneNumber = async (): Promise<B2BMemberDeleteMFAPhoneNumberResponse> => {\n const resp = await this._networkClient.fetchSDK<B2BMemberDeleteMFAPhoneNumberResponse>({\n url: '/b2b/organizations/members/deletePhoneNumber',\n method: 'DELETE',\n });\n this._subscriptionService.updateMember(resp.member);\n return resp;\n };\n\n deleteMFATOTP = async (): Promise<B2BMemberDeletePasswordResponse> => {\n const resp = await this._networkClient.fetchSDK<B2BMemberDeletePasswordResponse>({\n url: `/b2b/organizations/members/deleteTOTP`,\n method: 'DELETE',\n });\n this._subscriptionService.updateMember(resp.member);\n return resp;\n };\n\n deletePassword = async (passwordId: string): Promise<B2BMemberDeletePasswordResponse> => {\n const resp = await this._networkClient.fetchSDK<B2BMemberDeletePasswordResponse>({\n url: `/b2b/organizations/members/passwords/${passwordId}`,\n method: 'DELETE',\n });\n this._subscriptionService.updateMember(resp.member);\n return resp;\n };\n\n unlinkRetiredEmail = async (\n data: B2BMemberUnlinkRetiredEmailRequest,\n ): Promise<B2BMemberUnlinkRetiredEmailResponse> => {\n const resp = await this._apiNetworkClient.fetchSDK<B2BMemberUnlinkRetiredEmailResponse>({\n url: '/b2b/organizations/members/unlink_retired_email',\n method: 'POST',\n body: data,\n });\n this._subscriptionService.updateMember(resp.member);\n return resp;\n };\n\n startEmailUpdate = async (data: B2BMemberStartEmailUpdateRequest): Promise<B2BMemberStartEmailUpdateResponse> => {\n const resp = await this._apiNetworkClient.fetchSDK<B2BMemberStartEmailUpdateResponse>({\n url: '/b2b/organizations/members/start_email_update',\n method: 'POST',\n body: data,\n });\n this._subscriptionService.updateMember(resp.member);\n return resp;\n };\n\n getConnectedApps = async (): Promise<B2BMemberGetConnectedAppsResponse> => {\n return this._networkClient.fetchSDK<B2BMemberGetConnectedAppsResponse>({\n url: '/b2b/organizations/members/connected_apps',\n method: 'GET',\n });\n };\n\n revokeConnectedApp = async (\n data: B2BMemberRevokeConnectedAppOptions,\n ): Promise<B2BMemberRevokeConnectedAppResponse> => {\n return this._networkClient.fetchSDK<B2BMemberRevokeConnectedAppResponse>({\n url: `/b2b/organizations/members/connected_apps/${data.connected_app_id}/revoke`,\n method: 'POST',\n });\n };\n}\n","import { IB2BSubscriptionService, IDFPProtectedAuthProvider, INetworkClient, IPKCEManager } from '../..';\nimport {\n B2BSSOCreateExternalConnectionOptions,\n B2BSSOCreateExternalConnectionResponse,\n B2BSSODeleteConnectionResponse,\n B2BSSODiscoverConnectionsResponse,\n B2BSSOGetConnectionsResponse,\n B2BSSOOIDCCreateConnectionOptions,\n B2BSSOOIDCCreateConnectionResponse,\n B2BSSOOIDCUpdateConnectionOptions,\n B2BSSOOIDCUpdateConnectionResponse,\n B2BSSOSAMLCreateConnectionOptions,\n B2BSSOSAMLCreateConnectionResponse,\n B2BSSOSAMLDeleteEncryptionPrivateKeyOptions,\n B2BSSOSAMLDeleteEncryptionPrivateKeyResponse,\n B2BSSOSAMLDeleteVerificationCertificateOptions,\n B2BSSOSAMLDeleteVerificationCertificateResponse,\n B2BSSOSAMLUpdateConnectionByURLOptions,\n B2BSSOSAMLUpdateConnectionByURLResponse,\n B2BSSOSAMLUpdateConnectionOptions,\n B2BSSOSAMLUpdateConnectionResponse,\n B2BSSOUpdateExternalConnectionOptions,\n B2BSSOUpdateExternalConnectionResponse,\n IHeadlessB2BSSOClient,\n SSOAuthenticateOptions,\n SSOAuthenticateResponse,\n SSOStartOptions,\n} from '../../public';\nimport { StytchProjectConfigurationInput } from '../../public/typeConfig';\nimport { isTestPublicToken, logger } from '../../utils';\nimport { validateInDev } from '../../utils/dev';\n\ntype DynamicConfig = Promise<{\n pkceRequiredForSso: boolean;\n}>;\ntype Config = {\n publicToken: string;\n testAPIURL: string;\n liveAPIURL: string;\n};\n\nexport class HeadlessB2BSSOClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BSSOClient<TProjectConfiguration>\n{\n authenticate: (options: SSOAuthenticateOptions) => Promise<SSOAuthenticateResponse<TProjectConfiguration>>;\n\n constructor(\n protected _networkClient: INetworkClient,\n protected _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n protected _pkceManager: IPKCEManager,\n protected _dynamicConfig: DynamicConfig,\n protected _config: Config,\n protected dfpProtectedAuth: IDFPProtectedAuthProvider,\n ) {\n this.authenticate = this._subscriptionService.withUpdateSession(async (options: SSOAuthenticateOptions) => {\n validateInDev('stytch.sso.authenticate', options, {\n sso_token: 'string',\n session_duration_minutes: 'number',\n locale: 'optionalString',\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 SSO flow.\\n' +\n 'Consider using stytch.sso.start() to add PKCE to your SSO flows for added security.\\n' +\n 'See https://stytch.com/docs/oauth#guides_pkce for more information.',\n );\n }\n\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n\n const resp = await this._networkClient.retriableFetchSDK<SSOAuthenticateResponse<TProjectConfiguration>>({\n url: '/b2b/sso/authenticate',\n method: 'POST',\n body: {\n pkce_code_verifier: keyPair?.code_verifier,\n ...options,\n dfp_telemetry_id,\n captcha_token,\n intermediate_session_token: this._subscriptionService.getIntermediateSessionToken() || undefined,\n },\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n\n this._pkceManager.clearPKPair();\n\n return resp;\n });\n }\n\n protected async getBaseApiUrl() {\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 async start({ connection_id, login_redirect_url, signup_redirect_url }: SSOStartOptions): Promise<void> {\n const { pkceRequiredForSso } = await this._dynamicConfig;\n const baseURL = await this.getBaseApiUrl();\n\n const startUrl = new URL(`${baseURL}/v1/public/sso/start`);\n startUrl.searchParams.set('public_token', this._config.publicToken);\n startUrl.searchParams.set('connection_id', connection_id);\n\n if (pkceRequiredForSso) {\n const keyPair = await this._pkceManager.startPKCETransaction();\n startUrl.searchParams.set('pkce_code_challenge', keyPair.code_challenge);\n } else {\n this._pkceManager.clearPKPair();\n }\n\n if (login_redirect_url) startUrl.searchParams.set('login_redirect_url', login_redirect_url);\n if (signup_redirect_url) startUrl.searchParams.set('signup_redirect_url', signup_redirect_url);\n\n this.navigate(startUrl);\n }\n\n // Public so it can be mocked in tests\n navigate(url: URL) {\n window.location.href = url.toString();\n }\n\n async getConnections(): Promise<B2BSSOGetConnectionsResponse> {\n return await this._networkClient.fetchSDK<B2BSSOGetConnectionsResponse>({\n url: '/b2b/sso',\n method: 'GET',\n });\n }\n\n async discoverConnections(emailAddress: string): Promise<B2BSSODiscoverConnectionsResponse> {\n return await this._networkClient.fetchSDK<B2BSSODiscoverConnectionsResponse>({\n url: `/b2b/sso/discovery/connections?email_address=${encodeURIComponent(emailAddress)}`,\n method: 'GET',\n });\n }\n\n async deleteConnection(connectionId: string): Promise<B2BSSODeleteConnectionResponse> {\n return this._networkClient.fetchSDK<B2BSSODeleteConnectionResponse>({\n url: `/b2b/sso/${connectionId}`,\n method: 'DELETE',\n });\n }\n\n saml = {\n createConnection: async (data: B2BSSOSAMLCreateConnectionOptions): Promise<B2BSSOSAMLCreateConnectionResponse> => {\n return await this._networkClient.fetchSDK<B2BSSOSAMLCreateConnectionResponse>({\n url: '/b2b/sso/saml',\n method: 'POST',\n body: data,\n });\n },\n updateConnection: async (data: B2BSSOSAMLUpdateConnectionOptions): Promise<B2BSSOSAMLUpdateConnectionResponse> => {\n return await this._networkClient.fetchSDK<B2BSSOSAMLUpdateConnectionResponse>({\n url: `/b2b/sso/saml/${data.connection_id}`,\n method: 'PUT',\n body: data,\n });\n },\n updateConnectionByURL: async (\n data: B2BSSOSAMLUpdateConnectionByURLOptions,\n ): Promise<B2BSSOSAMLUpdateConnectionByURLResponse> => {\n return await this._networkClient.fetchSDK<B2BSSOSAMLUpdateConnectionResponse>({\n url: `/b2b/sso/saml/${data.connection_id}/url`,\n method: 'PUT',\n body: data,\n });\n },\n deleteVerificationCertificate: async (\n data: B2BSSOSAMLDeleteVerificationCertificateOptions,\n ): Promise<B2BSSOSAMLDeleteVerificationCertificateResponse> => {\n return await this._networkClient.fetchSDK<B2BSSOSAMLDeleteVerificationCertificateResponse>({\n url: `/b2b/sso/saml/${data.connection_id}/verification_certificates/${data.certificate_id}`,\n method: 'DELETE',\n });\n },\n deleteEncryptionPrivateKey: async (\n data: B2BSSOSAMLDeleteEncryptionPrivateKeyOptions,\n ): Promise<B2BSSOSAMLDeleteEncryptionPrivateKeyResponse> => {\n return await this._networkClient.fetchSDK<B2BSSOSAMLDeleteEncryptionPrivateKeyResponse>({\n url: `/b2b/sso/saml/${data.connection_id}/encryption_private_key/${data.private_key_id}`,\n method: 'DELETE',\n });\n },\n };\n\n oidc = {\n createConnection: async (data: B2BSSOOIDCCreateConnectionOptions): Promise<B2BSSOOIDCCreateConnectionResponse> => {\n return await this._networkClient.fetchSDK<B2BSSOOIDCCreateConnectionResponse>({\n url: '/b2b/sso/oidc',\n method: 'POST',\n body: data,\n });\n },\n updateConnection: async (data: B2BSSOOIDCUpdateConnectionOptions): Promise<B2BSSOOIDCUpdateConnectionResponse> => {\n return await this._networkClient.fetchSDK<B2BSSOOIDCUpdateConnectionResponse>({\n url: `/b2b/sso/oidc/${data.connection_id}`,\n method: 'PUT',\n body: data,\n });\n },\n };\n\n external = {\n createConnection: async (\n data: B2BSSOCreateExternalConnectionOptions,\n ): Promise<B2BSSOCreateExternalConnectionResponse> => {\n return await this._networkClient.fetchSDK<B2BSSOCreateExternalConnectionResponse>({\n url: '/b2b/sso/external',\n method: 'POST',\n body: data,\n });\n },\n updateConnection: async (\n data: B2BSSOUpdateExternalConnectionOptions,\n ): Promise<B2BSSOUpdateExternalConnectionResponse> => {\n return await this._networkClient.fetchSDK<B2BSSOUpdateExternalConnectionResponse>({\n url: `/b2b/sso/external/${data.connection_id}`,\n method: 'PUT',\n body: data,\n });\n },\n };\n}\n","import {\n B2BSCIMCreateConnectionOptions,\n B2BSCIMCreateConnectionResponse,\n B2BSCIMDeleteConnectionResponse,\n B2BSCIMGetConnectionGroupsOptions,\n B2BSCIMGetConnectionGroupsResponse,\n B2BSCIMGetConnectionResponse,\n B2BSCIMRotateCancelResponse,\n B2BSCIMRotateCompleteResponse,\n B2BSCIMRotateStartResponse,\n B2BSCIMUpdateConnectionOptions,\n B2BSCIMUpdateConnectionResponse,\n IHeadlessB2BSCIMClient,\n} from '../../public/b2b/scim';\nimport { IB2BSubscriptionService, INetworkClient } from '../..';\nimport { StytchProjectConfigurationInput } from '../../public/typeConfig';\nimport { validateInDev } from '../../utils/dev';\n\nexport class HeadlessB2BSCIMClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BSCIMClient\n{\n constructor(\n protected _networkClient: INetworkClient,\n protected _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n ) {}\n\n async createConnection(data: B2BSCIMCreateConnectionOptions): Promise<B2BSCIMCreateConnectionResponse> {\n validateInDev('stytch.scim.createConnection', data, {\n display_name: 'optionalString',\n identity_provider: 'optionalString',\n });\n\n return await this._networkClient.fetchSDK<B2BSCIMCreateConnectionResponse>({\n url: '/b2b/scim',\n method: 'POST',\n body: data,\n });\n }\n\n async updateConnection(data: B2BSCIMUpdateConnectionOptions): Promise<B2BSCIMUpdateConnectionResponse> {\n validateInDev('stytch.scim.updateConnection', data, {\n connection_id: 'string',\n display_name: 'optionalString',\n identity_provider: 'optionalString',\n });\n\n return await this._networkClient.fetchSDK<B2BSCIMUpdateConnectionResponse>({\n url: `/b2b/scim/${data.connection_id}`,\n method: 'PUT',\n body: data,\n });\n }\n\n async deleteConnection(connectionId: string): Promise<B2BSCIMDeleteConnectionResponse> {\n validateInDev(\n 'stytch.scim.deleteConnection',\n { connection_id: connectionId },\n {\n connection_id: 'string',\n },\n );\n\n return await this._networkClient.fetchSDK<B2BSCIMDeleteConnectionResponse>({\n url: `/b2b/scim/${connectionId}`,\n method: 'DELETE',\n });\n }\n\n async getConnection(): Promise<B2BSCIMGetConnectionResponse> {\n return await this._networkClient.fetchSDK<B2BSCIMGetConnectionResponse>({\n url: '/b2b/scim',\n method: 'GET',\n });\n }\n\n async getConnectionGroups(data: B2BSCIMGetConnectionGroupsOptions): Promise<B2BSCIMGetConnectionGroupsResponse> {\n validateInDev('stytch.scim.getConnectionGroups', data, {\n limit: 'optionalNumber',\n cursor: 'optionalString',\n });\n\n return await this._networkClient.fetchSDK<B2BSCIMGetConnectionGroupsResponse>({\n url: '/b2b/scim/groups',\n method: 'POST',\n body: data,\n });\n }\n\n async rotateStart(connectionId: string): Promise<B2BSCIMRotateStartResponse> {\n validateInDev(\n 'stytch.scim.rotateStart',\n { connectionId },\n {\n connectionId: 'string',\n },\n );\n return await this._networkClient.fetchSDK<B2BSCIMRotateStartResponse>({\n url: `/b2b/scim/rotate/start`,\n method: 'POST',\n body: { connection_id: connectionId },\n });\n }\n\n async rotateComplete(connectionId: string): Promise<B2BSCIMRotateCompleteResponse> {\n validateInDev(\n 'stytch.scim.rotateComplete',\n { connectionId },\n {\n connectionId: 'string',\n },\n );\n\n return await this._networkClient.fetchSDK<B2BSCIMRotateCompleteResponse>({\n url: `/b2b/scim/rotate/complete`,\n method: 'POST',\n body: { connection_id: connectionId },\n });\n }\n\n async rotateCancel(connectionId: string): Promise<B2BSCIMRotateCancelResponse> {\n validateInDev(\n 'stytch.scim.rotateCancel',\n { connectionId },\n {\n connectionId: 'string',\n },\n );\n\n return await this._networkClient.fetchSDK<B2BSCIMRotateCancelResponse>({\n url: `/b2b/scim/rotate/cancel`,\n method: 'POST',\n body: { connection_id: connectionId },\n });\n }\n}\n","import { INetworkClient } from '../../NetworkClient';\nimport { IB2BSubscriptionService } from '../../SubscriptionService';\nimport {\n ResponseCommon,\n Organization,\n IHeadlessB2BOrganizationClient,\n B2BOrganizationsUpdateResponse,\n B2BOrganizationsUpdateOptions,\n B2BOrganizationsDeleteResponse,\n B2BOrganizationsMembersCreateOptions,\n B2BOrganizationsMembersCreateResponse,\n B2BOrganizationsMembersDeleteResponse,\n B2BOrganizationsMembersReactivateResponse,\n B2BOrganizationsMemberDeletePasswordResponse,\n B2BOrganizationsMemberDeleteMFAPhoneNumberResponse,\n B2BOrganizationsMembersUpdateOptions,\n B2BOrganizationsMembersUpdateResponse,\n B2BOrganizationsMembersSearchResponse,\n B2BOrganizationsMembersSearchOptions,\n B2BOrganizationsMemberDeleteMFATOTPResponse,\n OrganizationInfo,\n B2BOrganizationsGetBySlugResponse,\n B2BOrganizationsGetBySlugOptions,\n B2BOrganizationsMemberUnlinkRetiredEmailOptions,\n B2BOrganizationsMemberUnlinkRetiredEmailResponse,\n B2BOrganizationsMemberStartEmailUpdateOptions,\n B2BOrganizationsMemberStartEmailUpdateResponse,\n StytchProjectConfigurationInput,\n MemberResponseCommon,\n B2BOrganizationsGetConnectedAppsResponse,\n B2BOrganizationsGetConnectedAppResponse,\n B2BOrganizationsGetConnectedAppOptions,\n B2BOrganizationsMemberGetConnectedAppsOptions,\n B2BOrganizationsMemberGetConnectedAppsResponse,\n B2BOrganizationsMemberRevokeConnectedAppOptions,\n B2BOrganizationsMemberRevokeConnectedAppResponse,\n} from '../../public';\nimport { validateInDev } from '../../utils/dev';\n\nexport class HeadlessB2BOrganizationClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BOrganizationClient\n{\n constructor(\n private _networkClient: INetworkClient,\n private _apiNetworkClient: INetworkClient,\n private _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n ) {}\n\n get = async (): Promise<Organization | null> => {\n const resp = await this._networkClient.fetchSDK<{ organization: Organization } & ResponseCommon>({\n url: `/b2b/organizations/me`,\n method: 'GET',\n });\n this._subscriptionService.updateOrganization(resp.organization);\n return resp.organization;\n };\n\n getSync = (): Organization | null => {\n return this._subscriptionService.getOrganization();\n };\n\n getInfo = (): OrganizationInfo => ({\n organization: this.getSync(),\n fromCache: this._subscriptionService.getFromCache(),\n });\n\n onChange = (callback: (organization: Organization | null) => void) => {\n return this._subscriptionService.subscribeToState((state) => callback(state?.organization ?? null));\n };\n\n update = async (data: B2BOrganizationsUpdateOptions): Promise<B2BOrganizationsUpdateResponse> => {\n const resp = await this._networkClient.fetchSDK<B2BOrganizationsUpdateResponse>({\n url: `/b2b/organizations/me`,\n method: 'PUT',\n body: data,\n });\n\n this._subscriptionService.updateOrganization(resp.organization);\n return resp;\n };\n\n delete = async (): Promise<B2BOrganizationsDeleteResponse> => {\n const resp = await this._networkClient.fetchSDK<B2BOrganizationsDeleteResponse>({\n url: `/b2b/organizations/me`,\n method: 'DELETE',\n });\n\n this._subscriptionService.destroyState();\n\n return resp;\n };\n\n getBySlug = async (data: B2BOrganizationsGetBySlugOptions): Promise<B2BOrganizationsGetBySlugResponse> => {\n validateInDev('stytch.organization.getBySlug', data, {\n organization_slug: 'string',\n });\n\n return this._networkClient.fetchSDK<B2BOrganizationsGetBySlugResponse>({\n url: `/b2b/organizations/search`,\n method: 'POST',\n body: data,\n });\n };\n\n getConnectedApps = async (): Promise<B2BOrganizationsGetConnectedAppsResponse> => {\n return this._networkClient.fetchSDK<B2BOrganizationsGetConnectedAppsResponse>({\n url: '/b2b/organizations/connected_apps',\n method: 'GET',\n });\n };\n\n getConnectedApp = async (\n data: B2BOrganizationsGetConnectedAppOptions,\n ): Promise<B2BOrganizationsGetConnectedAppResponse> => {\n return this._networkClient.fetchSDK<B2BOrganizationsGetConnectedAppResponse>({\n url: `/b2b/organizations/connected_apps/${data.connected_app_id}`,\n method: 'GET',\n });\n };\n\n members = {\n create: async (data: B2BOrganizationsMembersCreateOptions): Promise<B2BOrganizationsMembersCreateResponse> => {\n return this._networkClient.fetchSDK<B2BOrganizationsMembersCreateResponse>({\n url: `/b2b/organizations/members`,\n method: 'POST',\n body: data,\n });\n },\n search: async (data: B2BOrganizationsMembersSearchOptions): Promise<B2BOrganizationsMembersSearchResponse> => {\n return this._networkClient.fetchSDK<B2BOrganizationsMembersSearchResponse>({\n url: `/b2b/organizations/me/members/search`,\n method: 'POST',\n body: data,\n });\n },\n update: async (data: B2BOrganizationsMembersUpdateOptions): Promise<B2BOrganizationsMembersUpdateResponse> => {\n const response = await this._networkClient.fetchSDK<B2BOrganizationsMembersUpdateResponse>({\n url: `/b2b/organizations/members/${data.member_id}`,\n method: 'PUT',\n body: data,\n });\n\n this.updateMemberIfSelf(response);\n return response;\n },\n deletePassword: async (passwordId: string): Promise<B2BOrganizationsMemberDeletePasswordResponse> => {\n const response = await this._networkClient.fetchSDK<B2BOrganizationsMemberDeletePasswordResponse>({\n url: `/b2b/organizations/members/passwords/${passwordId}`,\n method: 'DELETE',\n });\n\n this.updateMemberIfSelf(response);\n return response;\n },\n deleteMFAPhoneNumber: async (memberId: string): Promise<B2BOrganizationsMemberDeleteMFAPhoneNumberResponse> => {\n const response = await this._networkClient.fetchSDK<B2BOrganizationsMemberDeleteMFAPhoneNumberResponse>({\n url: `/b2b/organizations/members/mfa_phone_numbers/${memberId}`,\n method: 'DELETE',\n });\n\n this.updateMemberIfSelf(response);\n return response;\n },\n deleteMFATOTP: async (memberId: string): Promise<B2BOrganizationsMemberDeleteMFATOTPResponse> => {\n const response = await this._networkClient.fetchSDK<B2BOrganizationsMemberDeleteMFATOTPResponse>({\n url: `/b2b/organizations/members/totp/${memberId}`,\n method: 'DELETE',\n });\n\n this.updateMemberIfSelf(response);\n return response;\n },\n delete: async (memberId: string): Promise<B2BOrganizationsMembersDeleteResponse> => {\n const response = await this._networkClient.fetchSDK<B2BOrganizationsMembersDeleteResponse>({\n url: `/b2b/organizations/members/${memberId}`,\n method: 'DELETE',\n });\n\n if (memberId === this._subscriptionService.getMember()?.member_id) {\n this._subscriptionService.destroyState();\n }\n\n return response;\n },\n reactivate: async (memberId: string): Promise<B2BOrganizationsMembersReactivateResponse> => {\n return this._networkClient.fetchSDK<B2BOrganizationsMembersReactivateResponse>({\n url: `/b2b/organizations/members/${memberId}/reactivate`,\n method: 'PUT',\n });\n },\n unlinkRetiredEmail: async (\n data: B2BOrganizationsMemberUnlinkRetiredEmailOptions,\n ): Promise<B2BOrganizationsMemberUnlinkRetiredEmailResponse> => {\n const { member_id, ...body } = data;\n const response = await this._apiNetworkClient.fetchSDK<B2BOrganizationsMemberUnlinkRetiredEmailResponse>({\n url: `/b2b/organizations/members/${member_id}/unlink_retired_email`,\n method: 'POST',\n body,\n });\n\n this.updateMemberIfSelf(response);\n return response;\n },\n startEmailUpdate: async (\n data: B2BOrganizationsMemberStartEmailUpdateOptions,\n ): Promise<B2BOrganizationsMemberStartEmailUpdateResponse> => {\n const { member_id, ...body } = data;\n const response = await this._apiNetworkClient.fetchSDK<B2BOrganizationsMemberStartEmailUpdateResponse>({\n url: `/b2b/organizations/members/${member_id}/start_email_update`,\n method: 'POST',\n body,\n });\n\n this.updateMemberIfSelf(response);\n return response;\n },\n getConnectedApps: async (\n data: B2BOrganizationsMemberGetConnectedAppsOptions,\n ): Promise<B2BOrganizationsMemberGetConnectedAppsResponse> => {\n return this._networkClient.fetchSDK<B2BOrganizationsMemberGetConnectedAppsResponse>({\n url: `b2b/organizations/members/${data.member_id}/connected_apps`,\n method: 'GET',\n });\n },\n revokeConnectedApp: async (\n data: B2BOrganizationsMemberRevokeConnectedAppOptions,\n ): Promise<B2BOrganizationsMemberRevokeConnectedAppResponse> => {\n return this._networkClient.fetchSDK<B2BOrganizationsMemberRevokeConnectedAppResponse>({\n url: `/b2b/organizations/members/${data.member_id}/connected_apps/${data.connected_app_id}/revoke`,\n method: 'POST',\n });\n },\n };\n\n private updateMemberIfSelf = (response: MemberResponseCommon) => {\n if (response.member_id === this._subscriptionService.getMember()?.member_id) {\n this._subscriptionService.updateMember(response.member);\n }\n };\n}\n","import { IB2BSubscriptionService, IDFPProtectedAuthProvider, INetworkClient, IPKCEManager } from '../..';\nimport { StytchProjectConfigurationInput } from '../../public/typeConfig';\nimport {\n B2BOAuthAuthenticateOptions,\n B2BOAuthAuthenticateResponse,\n B2BOAuthDiscoveryAuthenticateResponse,\n B2BOAuthDiscoveryStartOptions,\n IHeadlessB2BOAuthClient,\n OAuthDiscoveryAuthenticateOptions,\n OAuthStartOptions,\n} from '../../public/b2b/oauth';\nimport { B2BOAuthProviders } from '../../public/b2b/ui';\nimport { isTestPublicToken, logger } 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 HeadlessB2BOAuthClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BOAuthClient<TProjectConfiguration>\n{\n authenticate: (options: B2BOAuthAuthenticateOptions) => Promise<B2BOAuthAuthenticateResponse<TProjectConfiguration>>;\n\n discovery: {\n authenticate: (\n data: OAuthDiscoveryAuthenticateOptions,\n ) => Promise<B2BOAuthDiscoveryAuthenticateResponse<TProjectConfiguration>>;\n };\n\n google: {\n start: (options: OAuthStartOptions) => Promise<void>;\n discovery: {\n start: (options: B2BOAuthDiscoveryStartOptions) => Promise<void>;\n };\n };\n\n microsoft: {\n start: (options: OAuthStartOptions) => Promise<void>;\n discovery: {\n start: (options: B2BOAuthDiscoveryStartOptions) => Promise<void>;\n };\n };\n\n hubspot: {\n start: (options: OAuthStartOptions) => Promise<void>;\n discovery: {\n start: (options: B2BOAuthDiscoveryStartOptions) => Promise<void>;\n };\n };\n\n slack: {\n start: (options: OAuthStartOptions) => Promise<void>;\n discovery: {\n start: (options: B2BOAuthDiscoveryStartOptions) => Promise<void>;\n };\n };\n\n github: {\n start: (options: OAuthStartOptions) => Promise<void>;\n discovery: {\n start: (options: B2BOAuthDiscoveryStartOptions) => Promise<void>;\n };\n };\n\n constructor(\n protected _networkClient: INetworkClient,\n protected _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n protected _pkceManager: IPKCEManager,\n protected _dynamicConfig: DynamicConfig,\n protected _config: Config,\n protected dfpProtectedAuth: IDFPProtectedAuthProvider,\n ) {\n this.authenticate = this._subscriptionService.withUpdateSession(async (options: B2BOAuthAuthenticateOptions) => {\n validateInDev('stytch.oauth.authenticate', options, {\n oauth_token: 'string',\n session_duration_minutes: 'number',\n locale: 'optionalString',\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 { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n const resp = await this._networkClient.retriableFetchSDK<B2BOAuthAuthenticateResponse<TProjectConfiguration>>({\n url: '/b2b/oauth/authenticate',\n method: 'POST',\n body: {\n pkce_code_verifier: keyPair?.code_verifier,\n dfp_telemetry_id,\n captcha_token,\n intermediate_session_token: (await this._subscriptionService.getIntermediateSessionToken()) || undefined,\n ...options,\n },\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n\n this._pkceManager.clearPKPair();\n\n return resp;\n });\n\n this.discovery = {\n authenticate: this._subscriptionService.withUpdateSession(\n async (\n data: OAuthDiscoveryAuthenticateOptions,\n ): Promise<B2BOAuthDiscoveryAuthenticateResponse<TProjectConfiguration>> => {\n validateInDev('stytch.oauth.discovery.authenticate', data, {\n discovery_oauth_token: 'string',\n });\n\n const pkPair = await this._pkceManager.getPKPair();\n\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n\n const requestBody = {\n pkce_code_verifier: pkPair?.code_verifier,\n dfp_telemetry_id,\n captcha_token,\n ...data,\n };\n const resp = await this._networkClient.retriableFetchSDK<\n B2BOAuthDiscoveryAuthenticateResponse<TProjectConfiguration>\n >({\n url: '/b2b/oauth/discovery/authenticate',\n body: requestBody,\n method: 'POST',\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n\n this._pkceManager.clearPKPair();\n\n return resp;\n },\n ),\n };\n\n this.google = {\n start: this.startOAuthFlow(B2BOAuthProviders.Google),\n discovery: {\n start: this.startDiscoveryOAuthFlow(B2BOAuthProviders.Google),\n },\n };\n\n this.microsoft = {\n start: this.startOAuthFlow(B2BOAuthProviders.Microsoft),\n discovery: {\n start: this.startDiscoveryOAuthFlow(B2BOAuthProviders.Microsoft),\n },\n };\n\n this.hubspot = {\n start: this.startOAuthFlow(B2BOAuthProviders.HubSpot),\n discovery: {\n start: this.startDiscoveryOAuthFlow(B2BOAuthProviders.HubSpot),\n },\n };\n\n this.slack = {\n start: this.startOAuthFlow(B2BOAuthProviders.Slack),\n discovery: {\n start: this.startDiscoveryOAuthFlow(B2BOAuthProviders.Slack),\n },\n };\n\n this.github = {\n start: this.startOAuthFlow(B2BOAuthProviders.GitHub),\n discovery: {\n start: this.startDiscoveryOAuthFlow(B2BOAuthProviders.GitHub),\n },\n };\n }\n\n protected 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 protected startOAuthFlow(providerType: B2BOAuthProviders) {\n return async (options: OAuthStartOptions): Promise<void> => {\n const {\n organization_id,\n organization_slug,\n login_redirect_url,\n signup_redirect_url,\n custom_scopes,\n provider_params,\n } = options;\n const { pkceRequiredForOAuth } = await this._dynamicConfig;\n const baseURL = await this.getBaseApiUrl();\n\n const startUrl = new URL(`${baseURL}/v1/b2b/public/oauth/${providerType}/start`);\n startUrl.searchParams.set('public_token', this._config.publicToken);\n if (organization_id && organization_id != '') {\n startUrl.searchParams.set('organization_id', organization_id);\n }\n\n if (organization_slug && organization_slug != '') {\n startUrl.searchParams.set('slug', organization_slug);\n }\n\n if (custom_scopes) {\n validateInDev(\n 'startOAuthFlow',\n { custom_scopes },\n {\n custom_scopes: 'stringArray',\n },\n );\n startUrl.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 startUrl.searchParams.set('provider_' + key, provider_params[key]);\n }\n }\n\n if (pkceRequiredForOAuth) {\n const keyPair = await this._pkceManager.startPKCETransaction();\n startUrl.searchParams.set('pkce_code_challenge', keyPair.code_challenge);\n } else {\n this._pkceManager.clearPKPair();\n }\n\n if (login_redirect_url) startUrl.searchParams.set('login_redirect_url', login_redirect_url);\n if (signup_redirect_url) startUrl.searchParams.set('signup_redirect_url', signup_redirect_url);\n\n this.navigate(startUrl);\n };\n }\n\n protected startDiscoveryOAuthFlow(providerType: B2BOAuthProviders) {\n return async (options: B2BOAuthDiscoveryStartOptions): Promise<void> => {\n const { discovery_redirect_url, custom_scopes, provider_params } = options;\n const { pkceRequiredForOAuth } = await this._dynamicConfig;\n const baseURL = await this.getBaseApiUrl();\n\n const startUrl = new URL(`${baseURL}/v1/b2b/public/oauth/${providerType}/discovery/start`);\n startUrl.searchParams.set('public_token', this._config.publicToken);\n if (custom_scopes) {\n validateInDev(\n 'startOAuthFlow',\n { custom_scopes },\n {\n custom_scopes: 'stringArray',\n },\n );\n startUrl.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 startUrl.searchParams.set('provider_' + key, provider_params[key]);\n }\n }\n\n if (pkceRequiredForOAuth) {\n const keyPair = await this._pkceManager.startPKCETransaction();\n startUrl.searchParams.set('pkce_code_challenge', keyPair.code_challenge);\n } else {\n this._pkceManager.clearPKPair();\n }\n\n if (discovery_redirect_url) {\n startUrl.searchParams.set('discovery_redirect_url', discovery_redirect_url);\n }\n\n this.navigate(startUrl);\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 {\n IHeadlessB2BSessionClient,\n B2BSessionOnChangeCallback,\n SessionRevokeResponse,\n SessionAuthenticateOptions,\n B2BSessionAuthenticateResponse,\n B2BSessionRevokeOptions,\n SessionTokensUpdate,\n UNRECOVERABLE_ERROR_TYPES,\n B2BSessionExchangeOptions,\n B2BSessionExchangeResponse,\n MemberSessionInfo,\n StytchProjectConfigurationInput,\n SessionTokens,\n B2BSessionAccessTokenExchangeOptions,\n B2BSessionAccessTokenExchangeResponse,\n B2BSessionAttestResponse,\n B2BSessionAttestOptions,\n} from '../../public';\nimport { INetworkClient, IB2BSubscriptionService, IfOpaqueTokens, ExtractOpaqueTokens } from '../..';\nimport { validateInDev } from '../../utils/dev';\n\nexport class HeadlessB2BSessionClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BSessionClient<TProjectConfiguration>\n{\n getSync = () => {\n return this._subscriptionService.getSession();\n };\n\n getInfo = (): MemberSessionInfo => ({\n session: this.getSync(),\n fromCache: this._subscriptionService.getFromCache(),\n });\n\n onChange = (callback: B2BSessionOnChangeCallback) => {\n return this._subscriptionService.subscribeToState((state) => callback(state?.session ?? null));\n };\n\n revoke = async (options?: B2BSessionRevokeOptions) => {\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 passes 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 try {\n const resp = await this._networkClient.fetchSDK<SessionRevokeResponse>({\n url: `/b2b/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 revokeForMember = async (options: { member_id: string }) => {\n validateInDev('stytch.session.revokeForMember', options, {\n member_id: 'string',\n });\n\n return await this._networkClient.fetchSDK<SessionRevokeResponse>({\n url: `/b2b/sessions/revoke/${options.member_id}`,\n method: 'POST',\n });\n };\n\n private _authenticate = async (\n options?: SessionAuthenticateOptions,\n ): Promise<B2BSessionAuthenticateResponse<TProjectConfiguration>> => {\n const initialSession = this._subscriptionService.getSession();\n const isSessionStale = () =>\n initialSession?.member_session_id !== this._subscriptionService.getSession()?.member_session_id;\n\n try {\n const requestBody = {\n session_duration_minutes: options?.session_duration_minutes,\n };\n const resp = await this._networkClient.fetchSDK<B2BSessionAuthenticateResponse<TProjectConfiguration>>({\n url: '/b2b/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 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 authenticate: (\n options?: SessionAuthenticateOptions,\n ) => Promise<B2BSessionAuthenticateResponse<TProjectConfiguration>>;\n\n exchange: (data: B2BSessionExchangeOptions) => Promise<B2BSessionExchangeResponse<TProjectConfiguration>>;\n\n exchangeAccessToken: (\n data: B2BSessionAccessTokenExchangeOptions,\n ) => Promise<B2BSessionAccessTokenExchangeResponse<TProjectConfiguration>>;\n\n attest: (data: B2BSessionAttestOptions) => Promise<B2BSessionAttestResponse<TProjectConfiguration>>;\n\n constructor(\n private _networkClient: INetworkClient,\n private _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n ) {\n this.authenticate = this._subscriptionService.withUpdateSession(this._authenticate);\n\n this.exchange = this._subscriptionService.withUpdateSession(async (data: B2BSessionExchangeOptions) => {\n validateInDev('stytch.session.exchange', data, {\n organization_id: 'string',\n session_duration_minutes: 'number',\n locale: 'optionalString',\n });\n\n return this._networkClient.fetchSDK<B2BSessionExchangeResponse<TProjectConfiguration>>({\n url: '/b2b/sessions/exchange',\n body: data,\n method: 'POST',\n });\n });\n\n this.exchangeAccessToken = this._subscriptionService.withUpdateSession(\n async (data: B2BSessionAccessTokenExchangeOptions) => {\n validateInDev('stytch.session.exchange', data, {\n access_token: 'string',\n session_duration_minutes: 'number',\n });\n return this._networkClient.fetchSDK<B2BSessionAccessTokenExchangeResponse<TProjectConfiguration>>({\n url: '/b2b/sessions/exchange_access_token',\n body: data,\n method: 'POST',\n });\n },\n );\n\n this.attest = this._subscriptionService.withUpdateSession(async (data: B2BSessionAttestOptions) => {\n validateInDev('stytch.session.attest', data, {\n organization_id: 'optionalString',\n profile_id: 'string',\n token: 'string',\n session_duration_minutes: 'optionalNumber',\n });\n\n return this._networkClient.fetchSDK<B2BSessionAttestResponse<TProjectConfiguration>>({\n url: '/b2b/sessions/attest',\n body: data,\n method: 'POST',\n });\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 {\n B2BDiscoveryIntermediateSessionsExchangeOptions,\n B2BDiscoveryIntermediateSessionsExchangeResponse,\n B2BDiscoveryOrganizationsCreateOptions,\n B2BDiscoveryOrganizationsCreateResponse,\n B2BDiscoveryOrganizationsResponse,\n IHeadlessB2BDiscoveryClient,\n StytchProjectConfigurationInput,\n} from '../../public';\nimport { INetworkClient } from '../..';\nimport { IB2BSubscriptionService } from '../..';\nimport { validateInDev } from '../../utils/dev';\n\nexport class HeadlessB2BDiscoveryClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BDiscoveryClient<TProjectConfiguration>\n{\n organizations: {\n list: () => Promise<B2BDiscoveryOrganizationsResponse>;\n create: (\n data: B2BDiscoveryOrganizationsCreateOptions,\n ) => Promise<B2BDiscoveryOrganizationsCreateResponse<TProjectConfiguration>>;\n };\n\n intermediateSessions: {\n exchange: (\n data: B2BDiscoveryIntermediateSessionsExchangeOptions,\n ) => Promise<B2BDiscoveryIntermediateSessionsExchangeResponse<TProjectConfiguration>>;\n };\n\n constructor(\n private _networkClient: INetworkClient,\n private _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n ) {\n this.organizations = {\n list: async () =>\n this._networkClient.fetchSDK<B2BDiscoveryOrganizationsResponse>({\n url: '/b2b/discovery/organizations',\n body: {\n intermediate_session_token: (await this._subscriptionService.getIntermediateSessionToken()) || undefined,\n },\n method: 'POST',\n }),\n create: this._subscriptionService.withUpdateSession(\n async (\n data: B2BDiscoveryOrganizationsCreateOptions,\n ): Promise<B2BDiscoveryOrganizationsCreateResponse<TProjectConfiguration>> => {\n validateInDev('stytch.discovery.organizations.create', data, {\n session_duration_minutes: 'number',\n organization_name: 'optionalString',\n organization_slug: 'optionalString',\n organization_logo_url: 'optionalString',\n sso_jit_provisioning: 'optionalString',\n email_allowed_domains: 'optionalStringArray',\n email_invites: 'optionalString',\n auth_methods: 'optionalString',\n allowed_auth_methods: 'optionalStringArray',\n mfa_policy: 'optionalString',\n });\n\n const requestBody = {\n ...data,\n intermediate_session_token: (await this._subscriptionService.getIntermediateSessionToken()) || undefined,\n };\n\n return this._networkClient.fetchSDK<B2BDiscoveryOrganizationsCreateResponse<TProjectConfiguration>>({\n url: '/b2b/discovery/organizations/create',\n body: requestBody,\n method: 'POST',\n });\n },\n ),\n };\n\n this.intermediateSessions = {\n exchange: this._subscriptionService.withUpdateSession(\n async (\n data: B2BDiscoveryIntermediateSessionsExchangeOptions,\n ): Promise<B2BDiscoveryIntermediateSessionsExchangeResponse<TProjectConfiguration>> => {\n validateInDev('stytch.discovery.intermediateSessions.exchange', data, {\n organization_id: 'string',\n session_duration_minutes: 'number',\n locale: 'optionalString',\n });\n\n const requestBody = {\n ...data,\n intermediate_session_token: this._subscriptionService.getIntermediateSessionToken() || undefined,\n };\n return this._networkClient.fetchSDK<B2BDiscoveryIntermediateSessionsExchangeResponse<TProjectConfiguration>>({\n url: '/b2b/discovery/intermediate_sessions/exchange',\n body: requestBody,\n method: 'POST',\n });\n },\n ),\n };\n }\n}\n","import { IB2BSubscriptionService, IDFPProtectedAuthProvider, INetworkClient } from '../..';\nimport {\n B2BOTPsEmailLoginOrSignupOptions,\n B2BOTPsEmailLoginOrSignupResponse,\n B2BOTPsEmailAuthenticateOptions,\n B2BOTPsEmailAuthenticateResponse,\n B2BSMSAuthenticateOptions,\n B2BSMSAuthenticateResponse,\n B2BSMSSendOptions,\n B2BSMSSendResponse,\n IHeadlessB2BOTPsClient,\n B2BDiscoveryOTPEmailSendOptions,\n B2BDiscoveryOTPEmailSendResponse,\n B2BDiscoveryOTPEmailAuthenticateOptions,\n B2BDiscoveryOTPEmailAuthenticateResponse,\n} from '../../public/b2b/otps';\nimport { StytchProjectConfigurationInput } from '../../public/typeConfig';\n\nimport { validateInDev } from '../../utils/dev';\n\nexport class HeadlessB2BOTPsClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BOTPsClient<TProjectConfiguration>\n{\n sms: {\n send: (data: B2BSMSSendOptions) => Promise<B2BSMSSendResponse>;\n authenticate: (data: B2BSMSAuthenticateOptions) => Promise<B2BSMSAuthenticateResponse<TProjectConfiguration>>;\n };\n\n email: {\n loginOrSignup: (data: B2BOTPsEmailLoginOrSignupOptions) => Promise<B2BOTPsEmailLoginOrSignupResponse>;\n authenticate: (\n data: B2BOTPsEmailAuthenticateOptions,\n ) => Promise<B2BOTPsEmailAuthenticateResponse<TProjectConfiguration>>;\n discovery: {\n send: (data: B2BDiscoveryOTPEmailSendOptions) => Promise<B2BDiscoveryOTPEmailSendResponse>;\n authenticate: (\n data: B2BDiscoveryOTPEmailAuthenticateOptions,\n ) => Promise<B2BDiscoveryOTPEmailAuthenticateResponse<TProjectConfiguration>>;\n };\n };\n\n constructor(\n private _networkClient: INetworkClient,\n private _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n private dfpProtectedAuth: IDFPProtectedAuthProvider,\n ) {\n this.sms = {\n send: async (data: B2BSMSSendOptions): Promise<B2BSMSSendResponse> => {\n validateInDev('stytch.otps.sms.send', data, {\n organization_id: 'string',\n member_id: 'string',\n mfa_phone_number: 'optionalString',\n locale: 'optionalString',\n });\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n return this._networkClient.retriableFetchSDK<B2BSMSSendResponse>({\n url: '/b2b/otps/sms/send',\n body: {\n ...data,\n dfp_telemetry_id,\n captcha_token,\n intermediate_session_token: this._subscriptionService.getIntermediateSessionToken() || undefined,\n },\n method: 'POST',\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n },\n authenticate: this._subscriptionService.withUpdateSession(\n async (data: B2BSMSAuthenticateOptions): Promise<B2BSMSAuthenticateResponse<TProjectConfiguration>> => {\n validateInDev('stytch.otps.sms.authenticate', data, {\n session_duration_minutes: 'number',\n organization_id: 'string',\n member_id: 'string',\n code: 'string',\n set_mfa_enrollment: 'optionalString',\n });\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n const requestBody = {\n ...data,\n dfp_telemetry_id,\n captcha_token,\n intermediate_session_token: this._subscriptionService.getIntermediateSessionToken() || undefined,\n };\n return this._networkClient.retriableFetchSDK<B2BSMSAuthenticateResponse<TProjectConfiguration>>({\n url: '/b2b/otps/sms/authenticate',\n body: requestBody,\n method: 'POST',\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n },\n ),\n };\n\n this.email = {\n loginOrSignup: async (data: B2BOTPsEmailLoginOrSignupOptions): Promise<B2BOTPsEmailLoginOrSignupResponse> => {\n validateInDev('stytch.otps.email.loginOrSignup', data, {\n organization_id: 'string',\n email_address: 'string',\n login_template_id: 'optionalString',\n signup_template_id: 'optionalString',\n locale: 'optionalString',\n login_expiration_minutes: 'optionalNumber',\n signup_expiration_minutes: 'optionalNumber',\n });\n\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n return this._networkClient.retriableFetchSDK<B2BOTPsEmailLoginOrSignupResponse>({\n url: '/b2b/otps/email/login_or_signup',\n body: {\n ...data,\n dfp_telemetry_id,\n captcha_token,\n },\n method: 'POST',\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n },\n authenticate: this._subscriptionService.withUpdateSession(\n async (\n data: B2BOTPsEmailAuthenticateOptions,\n ): Promise<B2BOTPsEmailAuthenticateResponse<TProjectConfiguration>> => {\n validateInDev('stytch.otps.email.authenticate', data, {\n code: 'string',\n email_address: 'string',\n organization_id: 'string',\n session_duration_minutes: 'number',\n locale: 'optionalString',\n });\n\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n return this._networkClient.retriableFetchSDK<B2BOTPsEmailAuthenticateResponse<TProjectConfiguration>>({\n url: '/b2b/otps/email/authenticate',\n body: {\n ...data,\n intermediate_session_token: this._subscriptionService.getIntermediateSessionToken() || undefined,\n dfp_telemetry_id,\n captcha_token,\n },\n method: 'POST',\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n },\n ),\n discovery: {\n send: async (data: B2BDiscoveryOTPEmailSendOptions): Promise<B2BDiscoveryOTPEmailSendResponse> => {\n validateInDev('stytch.otps.email.discovery.send', data, {\n email_address: 'string',\n login_template_id: 'optionalString',\n locale: 'optionalString',\n discovery_expiration_minutes: 'optionalNumber',\n });\n\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n const requestBody = {\n ...data,\n dfp_telemetry_id,\n captcha_token,\n };\n return this._networkClient.retriableFetchSDK<B2BDiscoveryOTPEmailSendResponse>({\n url: '/b2b/otps/email/discovery/send',\n body: requestBody,\n method: 'POST',\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n },\n authenticate: this._subscriptionService.withUpdateSession(\n async (\n data: B2BDiscoveryOTPEmailAuthenticateOptions,\n ): Promise<B2BDiscoveryOTPEmailAuthenticateResponse<TProjectConfiguration>> => {\n validateInDev('stytch.otps.email.discovery.authenticate', data, {\n code: 'string',\n email_address: 'string',\n });\n\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n const requestBody = {\n dfp_telemetry_id,\n captcha_token,\n ...data,\n };\n\n return this._networkClient.retriableFetchSDK<\n B2BDiscoveryOTPEmailAuthenticateResponse<TProjectConfiguration>\n >({\n url: '/b2b/otps/email/discovery/authenticate',\n body: requestBody,\n method: 'POST',\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n },\n ),\n },\n };\n }\n}\n","import { IB2BSubscriptionService, IDFPProtectedAuthProvider, INetworkClient } from '../..';\nimport {\n B2BTOTPAuthenticateOptions,\n B2BTOTPAuthenticateResponse,\n B2BTOTPCreateOptions,\n B2BTOTPCreateResponse,\n IHeadlessB2BTOTPsClient,\n} from '../../public/b2b/totp';\nimport { StytchProjectConfigurationInput } from '../../public/typeConfig';\nimport { validateInDev } from '../../utils/dev';\n\nexport class HeadlessB2BTOTPsClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BTOTPsClient<TProjectConfiguration>\n{\n authenticate: (data: B2BTOTPAuthenticateOptions) => Promise<B2BTOTPAuthenticateResponse<TProjectConfiguration>>;\n\n constructor(\n private _networkClient: INetworkClient,\n private _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n private dfpProtectedAuth: IDFPProtectedAuthProvider,\n ) {\n this.authenticate = this._subscriptionService.withUpdateSession(\n async (data: B2BTOTPAuthenticateOptions): Promise<B2BTOTPAuthenticateResponse<TProjectConfiguration>> => {\n validateInDev('stytch.totp.authenticate', data, {\n organization_id: 'string',\n member_id: 'string',\n code: 'string',\n session_duration_minutes: 'number',\n set_mfa_enrollment: 'optionalString',\n set_default_mfa: 'optionalBoolean',\n });\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n const requestBody = {\n ...data,\n dfp_telemetry_id,\n captcha_token,\n intermediate_session_token: this._subscriptionService.getIntermediateSessionToken() || undefined,\n };\n\n return this._networkClient.retriableFetchSDK<B2BTOTPAuthenticateResponse<TProjectConfiguration>>({\n url: '/b2b/totp/authenticate',\n body: requestBody,\n method: 'POST',\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n },\n );\n }\n\n async create(data: B2BTOTPCreateOptions): Promise<B2BTOTPCreateResponse> {\n validateInDev('stytch.totp.create', data, {\n organization_id: 'string',\n member_id: 'string',\n expiration_minutes: 'optionalNumber',\n });\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n const response = await this._networkClient.retriableFetchSDK<B2BTOTPCreateResponse>({\n url: '/b2b/totp',\n body: {\n ...data,\n dfp_telemetry_id,\n captcha_token,\n intermediate_session_token: (await this._subscriptionService.getIntermediateSessionToken()) || undefined,\n },\n method: 'POST',\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n\n if (response.member_id === this._subscriptionService.getMember()?.member_id) {\n this._subscriptionService.updateMember(response.member);\n }\n\n return response;\n }\n}\n","import {\n IHeadlessB2BRecoveryCodesClient,\n RecoveryCodeGetResponse,\n RecoveryCodeRecoverOptions,\n RecoveryCodeRecoverResponse,\n RecoveryCodeRotateResponse,\n} from '../../public/b2b/recoveryCodes';\nimport { StytchProjectConfigurationInput } from '../../public/typeConfig';\nimport { IB2BSubscriptionService, IDFPProtectedAuthProvider, INetworkClient } from '../..';\n\nimport { validateInDev } from '../../utils/dev';\n\nexport class HeadlessB2BRecoveryCodesClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BRecoveryCodesClient<TProjectConfiguration>\n{\n recover: (data: RecoveryCodeRecoverOptions) => Promise<RecoveryCodeRecoverResponse<TProjectConfiguration>>;\n\n constructor(\n private _networkClient: INetworkClient,\n private _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n private dfpProtectedAuth: IDFPProtectedAuthProvider,\n ) {\n this.recover = this._subscriptionService.withUpdateSession(\n async (data: RecoveryCodeRecoverOptions): Promise<RecoveryCodeRecoverResponse<TProjectConfiguration>> => {\n validateInDev('stytch.recoveryCodes.recover', data, {\n organization_id: 'string',\n member_id: 'string',\n recovery_code: 'string',\n session_duration_minutes: 'number',\n });\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n const requestBody = {\n ...data,\n dfp_telemetry_id,\n captcha_token,\n intermediate_session_token: this._subscriptionService.getIntermediateSessionToken() || undefined,\n };\n return this._networkClient.retriableFetchSDK<RecoveryCodeRecoverResponse<TProjectConfiguration>>({\n url: '/b2b/recovery_codes/recover',\n body: requestBody,\n method: 'POST',\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n },\n );\n }\n\n async rotate(): Promise<RecoveryCodeRotateResponse> {\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n return this._networkClient.retriableFetchSDK<RecoveryCodeRotateResponse>({\n url: '/b2b/recovery_codes/rotate',\n body: {\n dfp_telemetry_id,\n captcha_token,\n },\n method: 'POST',\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n }\n\n async get(): Promise<RecoveryCodeGetResponse> {\n return this._networkClient.fetchSDK<RecoveryCodeGetResponse>({\n url: '/b2b/recovery_codes',\n method: 'GET',\n });\n }\n}\n","import { IB2BSubscriptionService } from '../../SubscriptionService';\nimport { logger } from '../../utils';\nimport { RBACPolicy, RBACPolicyRaw } from '../../rbac';\nimport { IHeadlessB2BRBACClient, PermissionsMap } from '../../public/b2b/rbac';\nimport { StytchProjectConfigurationInput } from '../../public/typeConfig';\n\ntype CachedConfig = {\n rbacPolicy: RBACPolicyRaw | null;\n};\n\ntype DynamicConfig = Promise<CachedConfig>;\n\nexport class HeadlessB2BRBACClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BRBACClient\n{\n private cachedPolicy: RBACPolicy | null;\n private policyPromise: Promise<RBACPolicy>;\n constructor(\n cachedConfig: CachedConfig,\n dynamicConfig: DynamicConfig,\n private _subscriptionService: IB2BSubscriptionService<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 /**\n * Gets the effective policy for the current session by merging project policy with org custom roles\n */\n private async getEffectivePolicy(): Promise<RBACPolicy> {\n const projectPolicy = await this.policyPromise;\n const organization = this._subscriptionService.getOrganization();\n\n // If no org or no custom roles, just return project policy\n if (!organization?.custom_roles?.length) {\n return projectPolicy;\n }\n\n return projectPolicy.mergeWithCustomRoles(organization.custom_roles);\n }\n\n /**\n * Gets the effective policy synchronously for the current session\n * Uses cached policies only\n */\n private getEffectivePolicySync(): RBACPolicy | null {\n if (!this.cachedPolicy) {\n return null;\n }\n\n const organization = this._subscriptionService.getOrganization();\n\n // If no custom roles, just return project policy\n if (!organization?.custom_roles?.length) {\n return this.cachedPolicy;\n }\n\n return this.cachedPolicy.mergeWithCustomRoles(organization.custom_roles);\n }\n\n allPermissions<Permissions extends Record<string, string>>() {\n return this.getEffectivePolicy().then(\n (policy) => policy.allPermissionsForCaller(this.roleIds()) as PermissionsMap<Permissions>,\n );\n }\n\n isAuthorizedSync: IHeadlessB2BRBACClient['isAuthorizedSync'] = (resourceId, action) => {\n const effectivePolicy = this.getEffectivePolicySync();\n return !!effectivePolicy?.callerIsAuthorized(this.roleIds(), resourceId as string, action as unknown as string);\n };\n\n isAuthorized: IHeadlessB2BRBACClient['isAuthorized'] = (resourceId, action) => {\n return this.getEffectivePolicy().then((policy) =>\n policy.callerIsAuthorized(this.roleIds(), resourceId as string, action as unknown as string),\n );\n };\n\n private roleIds() {\n const session = this._subscriptionService.getSession();\n if (!session) {\n return [];\n }\n // Although session.roles is guaranteed to exist for fresh data, there is a minuscule chance\n // that the member session stored in localstorage clientside comes from before roles were added to\n // the API response - in which case session.roles will be undefined and this will crash\n // TODO: [AUTH-2294] We can safely remove this ~3mos after RBAC is released\n return session.roles ?? [];\n }\n}\n","import { IB2BSubscriptionService, IDFPProtectedAuthProvider, INetworkClient } from '../..';\nimport {\n B2BImpersonationAuthenticateOptions,\n B2BImpersonationAuthenticateResponse,\n IHeadlessB2BImpersonationClient,\n} from '../../public/b2b/impersonation';\nimport { StytchProjectConfigurationInput } from '../../public/typeConfig';\n\nimport { validateInDev } from '../../utils/dev';\n\nexport class HeadlessB2BImpersonationClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BImpersonationClient<TProjectConfiguration>\n{\n authenticate: (\n data: B2BImpersonationAuthenticateOptions,\n ) => Promise<B2BImpersonationAuthenticateResponse<TProjectConfiguration>>;\n\n constructor(\n private _networkClient: INetworkClient,\n private _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n private dfpProtectedAuth: IDFPProtectedAuthProvider,\n ) {\n this.authenticate = this._subscriptionService.withUpdateSession(\n async (data: B2BImpersonationAuthenticateOptions) => {\n validateInDev('stytch.impersonation.authenticate', data, {\n impersonation_token: 'string',\n });\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n\n return this._networkClient.retriableFetchSDK<B2BImpersonationAuthenticateResponse<TProjectConfiguration>>({\n url: '/b2b/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}\n","import { INetworkClient } from '../../NetworkClient';\nimport {\n B2BOAuthAuthorizeStartOptions,\n B2BOAuthAuthorizeStartResponse,\n B2BOAuthAuthorizeSubmitOptions,\n B2BOAuthAuthorizeSubmitResponse,\n IHeadlessB2BIDPClient,\n B2BOAuthLogoutStartOptions,\n B2BOAuthLogoutStartResponse,\n} from '../../public/b2b/idp';\n\nexport class HeadlessB2BIDPClient implements IHeadlessB2BIDPClient {\n constructor(private _networkClient: INetworkClient) {}\n\n /**\n * Initiates a request for authorization of a Connected App to access a Member's account.\n *\n * Call this endpoint using the query parameters from an OAuth Authorization request. This endpoint validates various fields (scope, client_id, redirect_uri, prompt, etc...) are correct and returns relevant information for rendering an OAuth Consent Screen.\n *\n * @example\n * const response = await stytch.idp.oauthAuthorizeStart({\n * client_id: 'client_123',\n * redirect_uri: 'https://example.com/callback',\n * scope: 'openid email profile',\n * });\n */\n oauthAuthorizeStart = async (data: B2BOAuthAuthorizeStartOptions): Promise<B2BOAuthAuthorizeStartResponse> =>\n this._networkClient.fetchSDK<B2BOAuthAuthorizeStartResponse>({\n url: '/idp/b2b/oauth/authorize/start',\n method: 'POST',\n body: data,\n });\n\n /**\n * Completes a request for authorization of a Connected App to access a Member's account.\n *\n * Call this endpoint using the query parameters from an OAuth Authorization request, after previously validating those parameters using the Preflight Check API. Note that this endpoint takes in a few additional parameters the preflight check does not- state, nonce, and code_challenge.\n *\n * If the authorization was successful, the redirect_uri will contain a valid authorization_code embedded as a query parameter. If the authorization was unsuccessful, the redirect_uri will contain an OAuth2.1 error_code. In both cases, redirect the Member to the location for the response to be consumed by the Connected App.\n *\n * Exactly one of the following must be provided to identify the Member granting authorization:\n * organization_id + member_id\n * session_token\n * session_jwt\n *\n * If a session_token or session_jwt is passed, the OAuth Authorization will be linked to the Member's session for tracking purposes. One of these fields must be used if the Connected App intends to complete the Exchange Access Token flow.\n *\n * @example\n * const response = await stytch.idp.oauthAuthorizeSubmit({\n * client_id: 'client_123',\n * redirect_uri: 'https://example.com/callback',\n * scope: 'openid email profile',\n * });\n */\n oauthAuthorizeSubmit = async (data: B2BOAuthAuthorizeSubmitOptions): Promise<B2BOAuthAuthorizeSubmitResponse> =>\n this._networkClient.fetchSDK<B2BOAuthAuthorizeSubmitResponse>({\n url: '/idp/b2b/oauth/authorize/submit',\n method: 'POST',\n body: data,\n });\n\n oauthLogoutStart = async (data: B2BOAuthLogoutStartOptions): Promise<B2BOAuthLogoutStartResponse> =>\n this._networkClient.fetchSDK<B2BOAuthLogoutStartResponse>({\n url: `/b2b/oauth/logout/start`,\n method: 'POST',\n body: data,\n });\n}\n","import { OneTapRenderResult } from '../oneTap/GoogleOneTapClient';\nimport {\n IHeadlessB2BOAuthClient,\n OneTapPositions,\n StytchProjectConfigurationInput,\n StytchSDKUsageError,\n} from '@stytch/core/public';\nimport {\n HeadlessB2BOAuthClient as BaseHeadlessB2BOAuthClient,\n DisabledDFPProtectedAuthProvider,\n IDFPProtectedAuthProvider,\n INetworkClient,\n IPKCEManager,\n IB2BSubscriptionService,\n} from '@stytch/core';\nimport { B2BOneTapProvider } from './oneTap/B2BOneTapProvider';\n\nexport type B2BGoogleOneTapDiscoveryOAuthOptions = {\n /**\n * The URL that Stytch redirects to after the Google One Tap discovery flow is completed.\n * This should be a URL that verifies the request by querying Stytch's /oauth/discovery/authenticate endpoint.\n * If this value is not passed, the default discovery redirect URL that you set in your Dashboard is used.\n * If you have not set a default discovery redirect URL, an error is returned.\n */\n discovery_redirect_url?: string;\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\nexport type B2BGoogleOneTapOAuthOptions = {\n /**\n * The ID of the organization that the end user is logging in to.\n */\n organization_id: string;\n\n /**\n * The URL that Stytch redirects to after the Google One Tap flow is completed for a member who already exists.\n * This should be a URL that verifies the request by querying Stytch's /oauth/authenticate endpoint.\n * If this value is not passed, the default login redirect URL that you set in your Dashboard is used.\n * If you have not set a default login redirect URL, an error is returned.\n */\n login_redirect_url?: string;\n\n /**\n * The URL that Stytch redirects to after the Google One Tap flow is completed for a member who does not yet exist.\n * This should be a URL that verifies the request by querying Stytch's /oauth/authenticate endpoint.\n * If this value is not passed, the default signup redirect URL that you set in your Dashboard is used.\n * If you have not set a default signup redirect URL, an error is returned.\n */\n signup_redirect_url?: string;\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 IB2BGoogleOneTapOAuthProvider {\n discovery: {\n /**\n * Start a discovery 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.discovery.start({\n * discovery_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 - A {@link B2BGoogleOneTapDiscoveryOAuthOptions} 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?: B2BGoogleOneTapDiscoveryOAuthOptions): Promise<OneTapRenderResult>;\n };\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 * organization_id: 'organization-test-123',\n * })\n * }, [stytch]);\n * return (\n * <Button onClick={showGoogleOneTap}> Show Google one tap </Button>\n * );\n *\n * @param options - A {@link B2BGoogleOneTapOAuthOptions} 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?: B2BGoogleOneTapOAuthOptions): 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 IWebB2BOAuthClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n extends IHeadlessB2BOAuthClient<TProjectConfiguration> {\n googleOneTap: IB2BGoogleOneTapOAuthProvider;\n}\n\nexport class HeadlessB2BOAuthClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n extends BaseHeadlessB2BOAuthClient<TProjectConfiguration>\n implements IWebB2BOAuthClient<TProjectConfiguration>\n{\n constructor(\n _networkClient: INetworkClient,\n _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n _pkceManager: IPKCEManager,\n _dynamicConfig: DynamicConfig,\n _config: Config,\n _dfpProtectedAuth: IDFPProtectedAuthProvider = DisabledDFPProtectedAuthProvider(),\n private _oneTap: B2BOneTapProvider,\n ) {\n super(_networkClient, _subscriptionService, _pkceManager, _dynamicConfig, _config, _dfpProtectedAuth);\n }\n\n private startOneTapDiscovery = async (options: B2BGoogleOneTapDiscoveryOAuthOptions): 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.createOnDiscoverySuccessHandler({\n discoveryRedirectUrl: options.discovery_redirect_url,\n onSuccess: this._oneTap.redirectOnSuccess,\n });\n\n return client.render({\n style: {\n position: OneTapPositions.floating,\n },\n callback: onSuccessCallback,\n cancelOnTapOutside: options.cancel_on_tap_outside,\n });\n };\n\n private startOneTap = async (options: B2BGoogleOneTapOAuthOptions): Promise<OneTapRenderResult> => {\n if (!options.organization_id) {\n throw new StytchSDKUsageError('stytch.oauth.googleOneTap.start', 'organization_id is a required argument');\n }\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 organizationId: options.organization_id,\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 callback: onSuccessCallback,\n cancelOnTapOutside: options.cancel_on_tap_outside,\n });\n };\n\n googleOneTap: IB2BGoogleOneTapOAuthProvider = {\n discovery: {\n start: this.startOneTapDiscovery,\n },\n start: this.startOneTap,\n };\n}\n","import type { CredentialResponse } from 'google-one-tap';\nimport { INetworkClient, IPKCEManager } from '@stytch/core';\nimport { ResponseCommon, StytchAPIError } from '@stytch/core/public';\nimport { GoogleOneTapClient } from '../../oneTap/GoogleOneTapClient';\nimport { loadGoogleOneTapClient } from '../../oneTap/OneTapProvider';\n\ntype B2BOneTapStartResponse = ResponseCommon & {\n google_client_id: string;\n};\n\ntype B2BOneTapSubmitResponse = ResponseCommon & {\n redirect_url: string;\n};\n\ntype OneTapNotLoadedReason =\n // These come from the API directly - err.error_type\n | 'oauth_config_not_found'\n | 'default_provider_not_allowed'\n // If we have an unhandled error :$\n | string;\n\ntype OneTapLoadResult =\n | { success: true; client: GoogleOneTapClient }\n | { success: false; reason: OneTapNotLoadedReason };\n\ntype DynamicConfig = Promise<{\n pkceRequiredForOAuth: boolean;\n}>;\n\nconst DefaultDynamicConfig = Promise.resolve({\n pkceRequiredForOAuth: false,\n});\n\n/**\n * Handles loading One Tap config from Stytch API and initializing {@link GoogleOneTapClient}\n */\nexport class B2BOneTapProvider {\n private googleClientID?: string;\n constructor(\n private _networkClient: INetworkClient,\n private _pkceManager: IPKCEManager,\n private _config: DynamicConfig = DefaultDynamicConfig,\n ) {}\n\n private async fetchGoogleStart() {\n if (this.googleClientID) {\n return this.googleClientID;\n }\n const oneTapStartResp = await this._networkClient.fetchSDK<B2BOneTapStartResponse>({\n url: '/b2b/oauth/google/onetap/start',\n method: 'GET',\n });\n this.googleClientID = oneTapStartResp.google_client_id;\n return this.googleClientID;\n }\n\n private async submitGoogleOneTapTokenDiscovery({\n credential,\n discoveryRedirectUrl,\n }: {\n credential: string;\n discoveryRedirectUrl?: string;\n }) {\n let codeChallenge = undefined;\n const { pkceRequiredForOAuth } = await this._config;\n if (pkceRequiredForOAuth) {\n const keyPair = await this._pkceManager.startPKCETransaction();\n codeChallenge = keyPair.code_challenge;\n } else {\n this._pkceManager.clearPKPair();\n }\n return await this._networkClient.fetchSDK<B2BOneTapSubmitResponse>({\n url: '/b2b/oauth/google/onetap/discovery/submit',\n method: 'POST',\n body: {\n id_token: credential,\n discovery_redirect_url: discoveryRedirectUrl,\n pkce_code_challenge: codeChallenge,\n },\n });\n }\n\n private async submitGoogleOneTapToken({\n credential,\n organizationId,\n signupRedirectUrl,\n loginRedirectUrl,\n }: {\n credential: string;\n organizationId: string;\n signupRedirectUrl?: string;\n loginRedirectUrl?: string;\n }) {\n let codeChallenge = undefined;\n const { pkceRequiredForOAuth } = await this._config;\n if (pkceRequiredForOAuth) {\n const keyPair = await this._pkceManager.startPKCETransaction();\n codeChallenge = keyPair.code_challenge;\n } else {\n this._pkceManager.clearPKPair();\n }\n return await this._networkClient.fetchSDK<B2BOneTapSubmitResponse>({\n url: '/b2b/oauth/google/onetap/submit',\n method: 'POST',\n body: {\n id_token: credential,\n organization_id: organizationId,\n signup_redirect_url: signupRedirectUrl,\n login_redirect_url: loginRedirectUrl,\n pkce_code_challenge: codeChallenge,\n },\n });\n }\n\n async createOneTapClient(): Promise<OneTapLoadResult> {\n let googleClientId: string;\n try {\n googleClientId = await this.fetchGoogleStart();\n } catch (e) {\n const err = StytchAPIError.from(e);\n return { success: false, reason: err.error_type };\n }\n\n if (googleClientId === '') {\n return { success: false, reason: 'oauth_config_not_found' };\n }\n const client = new GoogleOneTapClient(await loadGoogleOneTapClient(), googleClientId);\n return { success: true, client };\n }\n\n createOnDiscoverySuccessHandler =\n ({\n discoveryRedirectUrl,\n onSuccess,\n onError,\n }: {\n discoveryRedirectUrl?: string;\n onSuccess: (redirect_url: string) => void;\n onError?: (error: Error) => void;\n }) =>\n async (response: CredentialResponse) => {\n const { credential } = response;\n let submitPromise = this.submitGoogleOneTapTokenDiscovery({\n credential,\n discoveryRedirectUrl,\n }).then((result) => onSuccess(result.redirect_url));\n if (onError) {\n submitPromise = submitPromise.catch((error) => onError(error));\n }\n await submitPromise;\n };\n\n createOnSuccessHandler =\n ({\n organizationId,\n signupRedirectUrl,\n loginRedirectUrl,\n onSuccess,\n onError,\n }: {\n organizationId: string;\n signupRedirectUrl?: string;\n loginRedirectUrl?: string;\n onSuccess: (redirect_url: string) => void;\n onError?: (error: Error) => void;\n }) =>\n async (response: CredentialResponse) => {\n const { credential } = response;\n let submitPromise = this.submitGoogleOneTapToken({\n credential,\n organizationId,\n signupRedirectUrl,\n loginRedirectUrl,\n }).then((result) => onSuccess(result.redirect_url));\n if (onError) {\n submitPromise = submitPromise.catch((error) => onError(error));\n }\n await submitPromise;\n };\n\n redirectOnSuccess = (redirect_url: string) => {\n window.location.href = redirect_url;\n };\n}\n","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 SearchDataManager,\n SessionManager,\n StateChangeClient,\n StateChangeRegisterFunction,\n VERTICAL_CONSUMER,\n logger,\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';\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 { B2BInternals, writeB2BInternals } from '../utils/internal';\nimport { HeadlessB2BOAuthClient, IWebB2BOAuthClient } from './HeadlessB2BOAuthClient';\nimport { B2BOneTapProvider } from './oneTap/B2BOneTapProvider';\nimport { buildFinalConfig, hasCustomApiEndpoint } from '../utils/config';\nimport { createAuthUrlHandler, AuthenticateByUrl, ParseAuthenticateUrl } from '../utils/createAuthUrlHandler';\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","import { StytchB2BClient } from './StytchB2BClient';\nimport { ssrSafeClientFactory } from '../ui/react/bindings/StytchSSRProxy';\n\n/**\n * Creates a Headless Stytch client object to call the stytch B2B APIs.\n * The Stytch client is not available serverside.\n * @example\n * const stytch = createStytchB2BClient('public-token-<find yours in the stytch dashboard>')\n *\n * return (\n * <StytchB2BProvider stytch={stytch}>\n * <App />\n * </StytchB2BProvider>\n * )\n * @returns A {@link StytchB2BClient}\n */\nexport const createStytchB2BClient = ssrSafeClientFactory(StytchB2BClient);\n\n/**\n * @deprecated Use {createStytchB2BClient()} instead\n */\nexport const createStytchB2BHeadlessClient = createStytchB2BClient;\n\n/**\n * @deprecated Use {StytchB2BClient()} instead\n */\nexport const StytchB2BHeadlessClient = StytchB2BClient;\nexport { StytchB2BClient };\n\nexport { parseOAuthAuthorizeParams, parseOAuthLogoutParams } from '../utils/idpHelpers';\nexport type { OAuthAuthorizeParams, OAuthLogoutParams } from '../utils/idpHelpers';\n\nexport * from '@stytch/core/public';\n"],"names":["HeadlessB2BSelfClient","constructor","_networkClient","_apiNetworkClient","_subscriptionService","get","resp","fetchSDK","url","method","updateMember","member","getSync","getMember","getInfo","fromCache","getFromCache","onChange","callback","subscribeToState","state","update","data","validateInDev","name","untrusted_metadata","mfa_enrolled","mfa_phone_number","default_mfa_method","body","deleteMFAPhoneNumber","deleteMFATOTP","deletePassword","passwordId","unlinkRetiredEmail","startEmailUpdate","getConnectedApps","revokeConnectedApp","connected_app_id","HeadlessB2BSSOClient","authenticate","_dynamicConfig","_config","dfpProtectedAuth","_pkceManager","saml","createConnection","updateConnection","connection_id","updateConnectionByURL","deleteVerificationCertificate","certificate_id","deleteEncryptionPrivateKey","private_key_id","oidc","external","withUpdateSession","options","sso_token","session_duration_minutes","locale","keyPair","getPKPair","logger","warn","dfp_telemetry_id","captcha_token","getDFPTelemetryIDAndCaptcha","retriableFetchSDK","pkce_code_verifier","code_verifier","intermediate_session_token","getIntermediateSessionToken","undefined","retryCallback","retryWithCaptchaAndDFP","clearPKPair","getBaseApiUrl","isTestPublicToken","publicToken","testAPIURL","liveAPIURL","start","login_redirect_url","signup_redirect_url","pkceRequiredForSso","baseURL","startUrl","URL","searchParams","set","startPKCETransaction","code_challenge","navigate","window","location","href","toString","getConnections","discoverConnections","emailAddress","encodeURIComponent","deleteConnection","connectionId","HeadlessB2BSCIMClient","display_name","identity_provider","getConnection","getConnectionGroups","limit","cursor","rotateStart","rotateComplete","rotateCancel","HeadlessB2BOrganizationClient","updateOrganization","organization","getOrganization","delete","destroyState","getBySlug","organization_slug","getConnectedApp","members","create","search","response","member_id","updateMemberIfSelf","memberId","reactivate","HeadlessB2BOAuthClient","discovery","google","microsoft","hubspot","slack","github","oauth_token","discovery_oauth_token","pkPair","requestBody","startOAuthFlow","B2BOAuthProviders","Google","startDiscoveryOAuthFlow","Microsoft","HubSpot","Slack","GitHub","cnameDomain","providerType","organization_id","custom_scopes","provider_params","pkceRequiredForOAuth","join","key","discovery_redirect_url","HeadlessB2BSessionClient","revoke","revokeForMember","_authenticate","exchange","exchangeAccessToken","attest","getSession","session","error","forceClear","UNRECOVERABLE_ERROR_TYPES","includes","error_type","initialSession","isSessionStale","member_session_id","destroySession","access_token","profile_id","token","getTokens","updateSession","tokens","session_token","session_jwt","updateTokens","HeadlessB2BDiscoveryClient","organizations","intermediateSessions","list","organization_name","organization_logo_url","sso_jit_provisioning","email_allowed_domains","email_invites","auth_methods","allowed_auth_methods","mfa_policy","HeadlessB2BOTPsClient","sms","email","send","code","set_mfa_enrollment","loginOrSignup","email_address","login_template_id","signup_template_id","login_expiration_minutes","signup_expiration_minutes","discovery_expiration_minutes","HeadlessB2BTOTPsClient","set_default_mfa","expiration_minutes","HeadlessB2BRecoveryCodesClient","recover","recovery_code","rotate","HeadlessB2BRBACClient","cachedPolicy","policyPromise","cachedConfig","dynamicConfig","isAuthorizedSync","resourceId","action","effectivePolicy","getEffectivePolicySync","callerIsAuthorized","roleIds","isAuthorized","getEffectivePolicy","then","policy","rbacPolicy","RBACPolicy","fromJSON","projectPolicy","custom_roles","length","mergeWithCustomRoles","allPermissions","allPermissionsForCaller","roles","HeadlessB2BImpersonationClient","impersonation_token","HeadlessB2BIDPClient","oauthAuthorizeStart","oauthAuthorizeSubmit","oauthLogoutStart","BaseHeadlessB2BOAuthClient","_dfpProtectedAuth","DisabledDFPProtectedAuthProvider","_oneTap","startOneTapDiscovery","clientResult","createOneTapClient","success","Error","reason","client","onSuccessCallback","createOnDiscoverySuccessHandler","discoveryRedirectUrl","onSuccess","redirectOnSuccess","render","style","position","OneTapPositions","floating","cancelOnTapOutside","cancel_on_tap_outside","startOneTap","StytchSDKUsageError","createOnSuccessHandler","organizationId","signupRedirectUrl","loginRedirectUrl","googleOneTap","DefaultDynamicConfig","Promise","resolve","B2BOneTapProvider","googleClientID","onError","credential","submitPromise","submitGoogleOneTapTokenDiscovery","result","redirect_url","catch","submitGoogleOneTapToken","fetchGoogleStart","oneTapStartResp","google_client_id","codeChallenge","id_token","pkce_code_challenge","googleClientId","e","err","StytchAPIError","from","GoogleOneTapClient","loadGoogleOneTapClient","StytchB2BClient","_sessionManager","_dataLayer","_stateChangeClient","magicLinks","self","oauth","sso","passwords","otps","totp","recoveryCodes","rbac","scim","impersonation","idp","onStateChange","parseAuthenticateUrl","authenticateByUrl","rawPublicToken","checkB2BNotSSR","checkPublicToken","_PUBLIC_TOKEN","config","buildFinalConfig","usingCustomApiEndpoint","hasCustomApiEndpoint","getB2BDataLayer","B2BSubscriptionService","StateChangeClient","args","additionalTelemetryDataFn","stytch_member_id","stytch_member_session_id","passwordsPKCEManager","PKCEManager","networkClient","NetworkClient","endpoints","bootstrap","BootstrapDataManager","captcha","CaptchaProvider","getAsync","DFPProtectedAuthProvider","dfpBackendURL","dfpCdnURL","executeRecaptcha","clientsideServices","ClientsideServicesProvider","clientsideServicesIframeURL","pkceManagerForOAuth","oneTap","HeadlessB2BMagicLinksClient","HeadlessB2BPasswordsClient","SessionManager","keepSessionAlive","searchManager","SearchDataManager","readSessionCookie","performBackgroundRefresh","createAuthUrlHandler","discovery_magic_links_token","discovery_oauth","multi_tenant_magic_links","magic_links_token","multi_tenant_impersonation","logEvent","details","event_callback_registered","error_callback_registered","success_callback_registered","bootstrapData","vertical","VERTICAL_CONSUMER","internals","dataLayer","writeB2BInternals","createStytchB2BClient","ssrSafeClientFactory","createStytchB2BHeadlessClient","StytchB2BHeadlessClient"],"mappings":"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"}
|