@stytch/react 20.0.0-next.4 → 20.0.0-next.6
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 +12 -0
- package/dist/cjs/StytchSSRProxy-Bz6LNYdq.js.map +1 -1
- package/dist/cjs/adminPortal/index.cjs +2 -2
- package/dist/cjs/b2b/index.cjs +11 -8
- package/dist/cjs/b2b/index.cjs.map +1 -1
- package/dist/cjs/b2b/index.headless.cjs +456 -496
- package/dist/cjs/b2b/index.headless.cjs.map +1 -1
- package/dist/cjs/{idpHelpers-Bj_7pbfW.js → idpHelpers-UZaYQqT8.js} +111 -129
- package/dist/cjs/{idpHelpers-Bj_7pbfW.js.map → idpHelpers-UZaYQqT8.js.map} +1 -1
- package/dist/cjs/{index-BIjXBvf_.js → index-MDH3lelI.js} +2 -2
- package/dist/cjs/{index-BIjXBvf_.js.map → index-MDH3lelI.js.map} +1 -1
- package/dist/cjs/index.cjs +18 -14
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.headless.cjs +401 -448
- package/dist/cjs/index.headless.cjs.map +1 -1
- package/dist/cjs/{passwordManagerDisableAutofillProps-DV31RTL_.js → passwordManagerDisableAutofillProps-BzR1GTDj.js} +42 -33
- package/dist/cjs/passwordManagerDisableAutofillProps-BzR1GTDj.js.map +1 -0
- package/dist/cjs/{shadcn-aVU6Lm9q.js → shadcn-BNtf3uZr.js} +7 -6
- package/dist/cjs/shadcn-BNtf3uZr.js.map +1 -0
- package/dist/cjs-dev/adminPortal/index.cjs +2 -2
- package/dist/cjs-dev/b2b/index.cjs +11 -8
- package/dist/cjs-dev/b2b/index.cjs.map +1 -1
- package/dist/cjs-dev/b2b/index.headless.cjs +468 -508
- package/dist/cjs-dev/b2b/index.headless.cjs.map +1 -1
- package/dist/cjs-dev/dev-DaCGDI6V.js.map +1 -1
- package/dist/cjs-dev/{idpHelpers-DOYYSxsX.js → idpHelpers-CVk39K69.js} +111 -129
- package/dist/cjs-dev/{idpHelpers-DOYYSxsX.js.map → idpHelpers-CVk39K69.js.map} +1 -1
- package/dist/cjs-dev/{index-rquGmIlv.js → index-BDTK8QN0.js} +2 -2
- package/dist/cjs-dev/{index-rquGmIlv.js.map → index-BDTK8QN0.js.map} +1 -1
- package/dist/cjs-dev/index.cjs +18 -14
- package/dist/cjs-dev/index.cjs.map +1 -1
- package/dist/cjs-dev/index.headless.cjs +405 -452
- package/dist/cjs-dev/index.headless.cjs.map +1 -1
- package/dist/cjs-dev/{passwordManagerDisableAutofillProps-CgiK2M_U.js → passwordManagerDisableAutofillProps--FLcEDiY.js} +42 -33
- package/dist/cjs-dev/passwordManagerDisableAutofillProps--FLcEDiY.js.map +1 -0
- package/dist/cjs-dev/{shadcn-DMk6ZSoD.js → shadcn-CvmoCuzj.js} +9 -8
- package/dist/cjs-dev/shadcn-CvmoCuzj.js.map +1 -0
- 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/node_modules/@lingui/react/dist/index.mjs +14 -13
- package/dist/esm/node_modules/@lingui/react/dist/index.mjs.map +1 -1
- package/dist/esm/node_modules/@lingui/react/dist/shared/{react.31c3b5fa.mjs → react.8970326b.mjs} +32 -23
- package/dist/esm/node_modules/@lingui/react/dist/shared/react.8970326b.mjs.map +1 -0
- package/dist/esm/packages/core/src/DFPProtectedAuthProvider.mjs +39 -43
- package/dist/esm/packages/core/src/DFPProtectedAuthProvider.mjs.map +1 -1
- package/dist/esm/packages/core/src/EventLogger.mjs.map +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/HeadlessCryptoWalletClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/HeadlessIDPClient.mjs +15 -18
- package/dist/esm/packages/core/src/HeadlessClients/HeadlessIDPClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/HeadlessImpersonationClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/HeadlessMagicLinkClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/HeadlessOAuthClient.mjs +58 -77
- package/dist/esm/packages/core/src/HeadlessClients/HeadlessOAuthClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/HeadlessOTPClient.mjs +100 -103
- package/dist/esm/packages/core/src/HeadlessClients/HeadlessOTPClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/HeadlessPasswordClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/HeadlessRBACClient.mjs +6 -8
- package/dist/esm/packages/core/src/HeadlessClients/HeadlessRBACClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/HeadlessSessionClient.mjs +77 -82
- package/dist/esm/packages/core/src/HeadlessClients/HeadlessSessionClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/HeadlessTOTPClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/HeadlessUserClient.mjs +111 -125
- package/dist/esm/packages/core/src/HeadlessClients/HeadlessUserClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/HeadlessWebAuthnClient.mjs +10 -11
- package/dist/esm/packages/core/src/HeadlessClients/HeadlessWebAuthnClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BDiscoveryClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BIDPClient.mjs +16 -19
- package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BIDPClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BImpersonationClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BMagicLinkClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BOAuthClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BOTPsClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BOrganizationClient.mjs +142 -153
- package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BOrganizationClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BPasswordsClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BRBACClient.mjs +7 -9
- package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BRBACClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BRecoveryCodesClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BSCIMClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BSSOClient.mjs +67 -70
- package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BSSOClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BSelfClient.mjs +81 -93
- package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BSelfClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BSessionClient.mjs +67 -73
- package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BSessionClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BTOTPsClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/NetworkClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/SearchManager.mjs.map +1 -1
- package/dist/esm/packages/core/src/SessionManager.mjs +28 -31
- package/dist/esm/packages/core/src/SessionManager.mjs.map +1 -1
- package/dist/esm/packages/core/src/StateChangeClient.mjs +5 -6
- package/dist/esm/packages/core/src/StateChangeClient.mjs.map +1 -1
- package/dist/esm/packages/core/src/public/SDKErrors.mjs.map +1 -1
- package/dist/esm/packages/core/src/rbac.mjs.map +1 -1
- package/dist/esm/packages/core/src/rpc/FrameClient.mjs.map +1 -1
- package/dist/esm/packages/web/src/BootstrapDataManager.mjs.map +1 -1
- package/dist/esm/packages/web/src/CaptchaProvider.mjs +10 -11
- package/dist/esm/packages/web/src/CaptchaProvider.mjs.map +1 -1
- package/dist/esm/packages/web/src/ClientsideServicesProvider.mjs +4 -8
- package/dist/esm/packages/web/src/ClientsideServicesProvider.mjs.map +1 -1
- package/dist/esm/packages/web/src/HeadlessOAuthClient.mjs +24 -24
- package/dist/esm/packages/web/src/HeadlessOAuthClient.mjs.map +1 -1
- package/dist/esm/packages/web/src/NetworkClient.mjs +4 -5
- package/dist/esm/packages/web/src/NetworkClient.mjs.map +1 -1
- package/dist/esm/packages/web/src/PKCEManager.mjs.map +1 -1
- package/dist/esm/packages/web/src/StytchClient.mjs.map +1 -1
- package/dist/esm/packages/web/src/SubscriptionService.mjs +8 -10
- package/dist/esm/packages/web/src/SubscriptionService.mjs.map +1 -1
- package/dist/esm/packages/web/src/adminPortal/utils/theme.mjs +1 -1
- package/dist/esm/packages/web/src/b2b/HeadlessB2BOAuthClient.mjs +48 -48
- package/dist/esm/packages/web/src/b2b/HeadlessB2BOAuthClient.mjs.map +1 -1
- package/dist/esm/packages/web/src/b2b/StytchB2BClient.mjs.map +1 -1
- package/dist/esm/packages/web/src/b2b/oneTap/B2BOneTapProvider.mjs +27 -30
- package/dist/esm/packages/web/src/b2b/oneTap/B2BOneTapProvider.mjs.map +1 -1
- package/dist/esm/packages/web/src/oneTap/GoogleOneTapClient.mjs.map +1 -1
- package/dist/esm/packages/web/src/oneTap/OneTapProvider.mjs +12 -14
- package/dist/esm/packages/web/src/oneTap/OneTapProvider.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2b/App.mjs +3 -1
- package/dist/esm/packages/web/src/ui/b2b/App.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2b/InternalAppContainer.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2b/InternalAppContainer.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2b/components/OAuthB2BButton.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2b/components/OAuthB2BButton.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2b/screens/SMSOTPEnrollScreen.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2c/AppContainer.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2c/AppContainer.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2c/IDPContainer.mjs +3 -1
- package/dist/esm/packages/web/src/ui/b2c/IDPContainer.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2c/PasskeyRegistrationContainer.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2c/PasskeyRegistrationContainer.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2c/ResetPasswordContainer.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2c/ResetPasswordContainer.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2c/components/GoogleOneTap.mjs +4 -2
- package/dist/esm/packages/web/src/ui/b2c/components/GoogleOneTap.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2c/screens/Main/index.mjs +2 -1
- package/dist/esm/packages/web/src/ui/b2c/screens/Main/index.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/components/PresentationConfig.mjs +2 -1
- package/dist/esm/packages/web/src/ui/components/PresentationConfig.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/components/mixins/Root.module.css.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/molecules/MainContainer.module.css.mjs +1 -1
- package/dist/esm/packages/web/src/ui/hooks/usePromptPasskey.mjs +3 -3
- package/dist/esm/packages/web/src/ui/hooks/usePromptPasskey.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/react/bindings/createB2BComponent.mjs +2 -2
- package/dist/esm/packages/web/src/ui/react/bindings/createB2BComponent.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/react/bindings/createB2CComponent.mjs +2 -2
- package/dist/esm/packages/web/src/ui/react/bindings/createB2CComponent.mjs.map +1 -1
- package/dist/esm/packages/web/src/utils/crypto.mjs +1 -1
- package/dist/esm-dev/_virtual/index.mjs +3 -5
- package/dist/esm-dev/_virtual/index.mjs.map +1 -1
- package/dist/esm-dev/_virtual/index2.mjs +5 -3
- package/dist/esm-dev/_virtual/index2.mjs.map +1 -1
- package/dist/esm-dev/_virtual/index3.mjs +5 -3
- package/dist/esm-dev/_virtual/index3.mjs.map +1 -1
- package/dist/esm-dev/_virtual/index4.mjs +3 -5
- package/dist/esm-dev/_virtual/index4.mjs.map +1 -1
- package/dist/esm-dev/node_modules/@lingui/react/dist/index.mjs +14 -13
- package/dist/esm-dev/node_modules/@lingui/react/dist/index.mjs.map +1 -1
- package/dist/esm-dev/node_modules/@lingui/react/dist/shared/{react.31c3b5fa.mjs → react.8970326b.mjs} +32 -23
- package/dist/esm-dev/node_modules/@lingui/react/dist/shared/react.8970326b.mjs.map +1 -0
- package/dist/esm-dev/node_modules/swr/core/dist/index.mjs +1 -1
- package/dist/esm-dev/node_modules/swr/infinite/dist/index.mjs +1 -1
- package/dist/esm-dev/packages/core/src/DFPProtectedAuthProvider.mjs +39 -43
- package/dist/esm-dev/packages/core/src/DFPProtectedAuthProvider.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/EventLogger.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessCryptoWalletClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessIDPClient.mjs +15 -18
- package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessIDPClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessImpersonationClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessMagicLinkClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessOAuthClient.mjs +58 -77
- package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessOAuthClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessOTPClient.mjs +100 -103
- package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessOTPClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessPasswordClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessRBACClient.mjs +6 -8
- package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessRBACClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessSessionClient.mjs +77 -82
- package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessSessionClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessTOTPClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessUserClient.mjs +114 -128
- package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessUserClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessWebAuthnClient.mjs +10 -11
- package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessWebAuthnClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BDiscoveryClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BIDPClient.mjs +16 -19
- package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BIDPClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BImpersonationClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BMagicLinkClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BOAuthClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BOTPsClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BOrganizationClient.mjs +144 -155
- package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BOrganizationClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BPasswordsClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BRBACClient.mjs +7 -9
- package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BRBACClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BRecoveryCodesClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BSCIMClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BSSOClient.mjs +67 -70
- package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BSSOClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BSelfClient.mjs +88 -100
- package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BSelfClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BSessionClient.mjs +70 -76
- package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BSessionClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BTOTPsClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/NetworkClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/SearchManager.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/SessionManager.mjs +28 -31
- package/dist/esm-dev/packages/core/src/SessionManager.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/StateChangeClient.mjs +5 -6
- package/dist/esm-dev/packages/core/src/StateChangeClient.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/public/SDKErrors.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/rbac.mjs.map +1 -1
- package/dist/esm-dev/packages/core/src/rpc/FrameClient.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/BootstrapDataManager.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/CaptchaProvider.mjs +10 -11
- package/dist/esm-dev/packages/web/src/CaptchaProvider.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ClientsideServicesProvider.mjs +4 -8
- package/dist/esm-dev/packages/web/src/ClientsideServicesProvider.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/HeadlessOAuthClient.mjs +24 -24
- package/dist/esm-dev/packages/web/src/HeadlessOAuthClient.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/NetworkClient.mjs +4 -5
- package/dist/esm-dev/packages/web/src/NetworkClient.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/PKCEManager.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/StytchClient.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/SubscriptionService.mjs +8 -10
- package/dist/esm-dev/packages/web/src/SubscriptionService.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/memberManagement/AuthManagementSection.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/memberManagement/useMemberActivation.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/scim/SCIMConnectionDangerZoneSection.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/scim/SCIMConnectionTokenRotationSection.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/scim/SCIMNewConnectionScreen.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/sso/SSONewConnectionScreen.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/utils/theme.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/utils/useMutateMember.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/utils/useMutateOrganization.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/utils/useMutateScimConnection.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/utils/useMutateSsoConnection.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/utils/useRevalidateConnectionList.mjs +1 -1
- package/dist/esm-dev/packages/web/src/b2b/HeadlessB2BOAuthClient.mjs +48 -48
- package/dist/esm-dev/packages/web/src/b2b/HeadlessB2BOAuthClient.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/b2b/StytchB2BClient.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/b2b/oneTap/B2BOneTapProvider.mjs +27 -30
- package/dist/esm-dev/packages/web/src/b2b/oneTap/B2BOneTapProvider.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/oneTap/GoogleOneTapClient.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/oneTap/OneTapProvider.mjs +12 -14
- package/dist/esm-dev/packages/web/src/oneTap/OneTapProvider.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/App.mjs +3 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/App.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/Container.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/InternalAppContainer.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/InternalAppContainer.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/components/OAuthB2BButton.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/components/OAuthB2BButton.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/SMSOTPEnrollScreen.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/AppContainer.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/AppContainer.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/IDPContainer.mjs +3 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/IDPContainer.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/PasskeyRegistrationContainer.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/PasskeyRegistrationContainer.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/ResetPasswordContainer.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/ResetPasswordContainer.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/components/GoogleOneTap.mjs +5 -3
- package/dist/esm-dev/packages/web/src/ui/b2c/components/GoogleOneTap.mjs.map +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/Main/index.mjs +2 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Main/index.mjs.map +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/components/PresentationConfig.mjs +2 -1
- package/dist/esm-dev/packages/web/src/ui/components/PresentationConfig.mjs.map +1 -1
- 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/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/mixins/Root.module.css.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/molecules/Badge.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/molecules/Input.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/molecules/MainContainer.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/molecules/MainContainer.module.css.mjs +1 -1
- 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/organisms/IDPConsentManifest.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/organisms/OneTapError.mjs +2 -2
- package/dist/esm-dev/packages/web/src/ui/components/organisms/OneTapError.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/hooks/usePromptPasskey.mjs +3 -3
- package/dist/esm-dev/packages/web/src/ui/hooks/usePromptPasskey.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/react/bindings/createB2BComponent.mjs +2 -2
- package/dist/esm-dev/packages/web/src/ui/react/bindings/createB2BComponent.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/react/bindings/createB2CComponent.mjs +2 -2
- package/dist/esm-dev/packages/web/src/ui/react/bindings/createB2CComponent.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/utils/crypto.mjs +1 -1
- package/dist/types/{PresentationConfig-B2jX85oV.d.ts → PresentationConfig-CdAymT0c.d.ts} +5 -0
- package/dist/types/{StytchB2BClient-D16e_lp1.d.ts → StytchB2BClient-DYF9xGAB.d.ts} +1 -1
- package/dist/types/{StytchClient-BwQdJzdj.d.ts → StytchClient-IyY7-cpI.d.ts} +1 -1
- package/dist/types/adminPortal/index.d.ts +3 -3
- package/dist/types/b2b/index.d.ts +7 -7
- package/dist/types/b2b/index.headless.d.ts +2 -2
- package/dist/types/compat.d.ts +1 -1
- package/dist/types/{createAuthUrlHandler-R1kNNQD_.d.ts → createAuthUrlHandler-CFZ0DGWC.d.ts} +6 -2
- package/dist/types/index.d.ts +7 -7
- package/dist/types/index.headless.d.ts +2 -2
- package/dist/types/{shadcn-CGdmyIUF.d.ts → shadcn-USiNERNw.d.ts} +4 -4
- package/messages/en.po +3 -3
- package/package.json +1 -1
- package/dist/cjs/passwordManagerDisableAutofillProps-DV31RTL_.js.map +0 -1
- package/dist/cjs/shadcn-aVU6Lm9q.js.map +0 -1
- package/dist/cjs-dev/passwordManagerDisableAutofillProps-CgiK2M_U.js.map +0 -1
- package/dist/cjs-dev/shadcn-DMk6ZSoD.js.map +0 -1
- package/dist/esm/node_modules/@lingui/react/dist/shared/react.31c3b5fa.mjs.map +0 -1
- package/dist/esm-dev/node_modules/@lingui/react/dist/shared/react.31c3b5fa.mjs.map +0 -1
|
@@ -8,107 +8,95 @@ class HeadlessB2BSelfClient {
|
|
|
8
8
|
this._networkClient = _networkClient;
|
|
9
9
|
this._apiNetworkClient = _apiNetworkClient;
|
|
10
10
|
this._subscriptionService = _subscriptionService;
|
|
11
|
-
this.get = async ()=>{
|
|
12
|
-
const resp = await this._networkClient.fetchSDK({
|
|
13
|
-
url: `/b2b/organizations/members/me`,
|
|
14
|
-
method: 'GET'
|
|
15
|
-
});
|
|
16
|
-
this._subscriptionService.updateMember(resp.member);
|
|
17
|
-
return resp.member;
|
|
18
|
-
};
|
|
19
|
-
this.getSync = ()=>{
|
|
20
|
-
return this._subscriptionService.getMember();
|
|
21
|
-
};
|
|
22
|
-
this.getInfo = ()=>({
|
|
23
|
-
member: this.getSync(),
|
|
24
|
-
fromCache: this._subscriptionService.getFromCache()
|
|
25
|
-
});
|
|
26
|
-
this.onChange = (callback)=>{
|
|
27
|
-
return this._subscriptionService.subscribeToState((state)=>callback(state?.member ?? null));
|
|
28
|
-
};
|
|
29
|
-
this.update = async (data)=>{
|
|
30
|
-
validateInDev('stytch.self.update', data, {
|
|
31
|
-
name: 'optionalString',
|
|
32
|
-
untrusted_metadata: 'optionalObject',
|
|
33
|
-
mfa_enrolled: 'optionalBoolean',
|
|
34
|
-
mfa_phone_number: 'optionalString',
|
|
35
|
-
default_mfa_method: 'optionalString'
|
|
36
|
-
});
|
|
37
|
-
const resp = await this._networkClient.fetchSDK({
|
|
38
|
-
url: '/b2b/organizations/members/update',
|
|
39
|
-
body: data,
|
|
40
|
-
method: 'PUT'
|
|
41
|
-
});
|
|
42
|
-
this._subscriptionService.updateMember(resp.member);
|
|
43
|
-
return resp;
|
|
44
|
-
};
|
|
45
|
-
this.deleteMFAPhoneNumber = async ()=>{
|
|
46
|
-
const resp = await this._networkClient.fetchSDK({
|
|
47
|
-
url: '/b2b/organizations/members/deletePhoneNumber',
|
|
48
|
-
method: 'DELETE'
|
|
49
|
-
});
|
|
50
|
-
this._subscriptionService.updateMember(resp.member);
|
|
51
|
-
return resp;
|
|
52
|
-
};
|
|
53
|
-
this.deleteMFATOTP = async ()=>{
|
|
54
|
-
const resp = await this._networkClient.fetchSDK({
|
|
55
|
-
url: `/b2b/organizations/members/deleteTOTP`,
|
|
56
|
-
method: 'DELETE'
|
|
57
|
-
});
|
|
58
|
-
this._subscriptionService.updateMember(resp.member);
|
|
59
|
-
return resp;
|
|
60
|
-
};
|
|
61
|
-
this.deletePassword = async (passwordId)=>{
|
|
62
|
-
const resp = await this._networkClient.fetchSDK({
|
|
63
|
-
url: `/b2b/organizations/members/passwords/${passwordId}`,
|
|
64
|
-
method: 'DELETE'
|
|
65
|
-
});
|
|
66
|
-
this._subscriptionService.updateMember(resp.member);
|
|
67
|
-
return resp;
|
|
68
|
-
};
|
|
69
|
-
this.unlinkRetiredEmail = async (data)=>{
|
|
70
|
-
const resp = await this._apiNetworkClient.fetchSDK({
|
|
71
|
-
url: '/b2b/organizations/members/unlink_retired_email',
|
|
72
|
-
method: 'POST',
|
|
73
|
-
body: data
|
|
74
|
-
});
|
|
75
|
-
this._subscriptionService.updateMember(resp.member);
|
|
76
|
-
return resp;
|
|
77
|
-
};
|
|
78
|
-
this.startEmailUpdate = async (data)=>{
|
|
79
|
-
const resp = await this._apiNetworkClient.fetchSDK({
|
|
80
|
-
url: '/b2b/organizations/members/start_email_update',
|
|
81
|
-
method: 'POST',
|
|
82
|
-
body: data
|
|
83
|
-
});
|
|
84
|
-
this._subscriptionService.updateMember(resp.member);
|
|
85
|
-
return resp;
|
|
86
|
-
};
|
|
87
|
-
this.getConnectedApps = async ()=>{
|
|
88
|
-
return this._networkClient.fetchSDK({
|
|
89
|
-
url: '/b2b/organizations/members/connected_apps',
|
|
90
|
-
method: 'GET'
|
|
91
|
-
});
|
|
92
|
-
};
|
|
93
|
-
this.revokeConnectedApp = async (data)=>{
|
|
94
|
-
return this._networkClient.fetchSDK({
|
|
95
|
-
url: `/b2b/organizations/members/connected_apps/${data.connected_app_id}/revoke`,
|
|
96
|
-
method: 'POST'
|
|
97
|
-
});
|
|
98
|
-
};
|
|
99
11
|
}
|
|
100
|
-
get
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
12
|
+
get = async ()=>{
|
|
13
|
+
const resp = await this._networkClient.fetchSDK({
|
|
14
|
+
url: `/b2b/organizations/members/me`,
|
|
15
|
+
method: 'GET'
|
|
16
|
+
});
|
|
17
|
+
this._subscriptionService.updateMember(resp.member);
|
|
18
|
+
return resp.member;
|
|
19
|
+
};
|
|
20
|
+
getSync = ()=>{
|
|
21
|
+
return this._subscriptionService.getMember();
|
|
22
|
+
};
|
|
23
|
+
getInfo = ()=>({
|
|
24
|
+
member: this.getSync(),
|
|
25
|
+
fromCache: this._subscriptionService.getFromCache()
|
|
26
|
+
});
|
|
27
|
+
onChange = (callback)=>{
|
|
28
|
+
return this._subscriptionService.subscribeToState((state)=>callback(state?.member ?? null));
|
|
29
|
+
};
|
|
30
|
+
update = async (data)=>{
|
|
31
|
+
validateInDev('stytch.self.update', data, {
|
|
32
|
+
name: 'optionalString',
|
|
33
|
+
untrusted_metadata: 'optionalObject',
|
|
34
|
+
mfa_enrolled: 'optionalBoolean',
|
|
35
|
+
mfa_phone_number: 'optionalString',
|
|
36
|
+
default_mfa_method: 'optionalString'
|
|
37
|
+
});
|
|
38
|
+
const resp = await this._networkClient.fetchSDK({
|
|
39
|
+
url: '/b2b/organizations/members/update',
|
|
40
|
+
body: data,
|
|
41
|
+
method: 'PUT'
|
|
42
|
+
});
|
|
43
|
+
this._subscriptionService.updateMember(resp.member);
|
|
44
|
+
return resp;
|
|
45
|
+
};
|
|
46
|
+
deleteMFAPhoneNumber = async ()=>{
|
|
47
|
+
const resp = await this._networkClient.fetchSDK({
|
|
48
|
+
url: '/b2b/organizations/members/deletePhoneNumber',
|
|
49
|
+
method: 'DELETE'
|
|
50
|
+
});
|
|
51
|
+
this._subscriptionService.updateMember(resp.member);
|
|
52
|
+
return resp;
|
|
53
|
+
};
|
|
54
|
+
deleteMFATOTP = async ()=>{
|
|
55
|
+
const resp = await this._networkClient.fetchSDK({
|
|
56
|
+
url: `/b2b/organizations/members/deleteTOTP`,
|
|
57
|
+
method: 'DELETE'
|
|
58
|
+
});
|
|
59
|
+
this._subscriptionService.updateMember(resp.member);
|
|
60
|
+
return resp;
|
|
61
|
+
};
|
|
62
|
+
deletePassword = async (passwordId)=>{
|
|
63
|
+
const resp = await this._networkClient.fetchSDK({
|
|
64
|
+
url: `/b2b/organizations/members/passwords/${passwordId}`,
|
|
65
|
+
method: 'DELETE'
|
|
66
|
+
});
|
|
67
|
+
this._subscriptionService.updateMember(resp.member);
|
|
68
|
+
return resp;
|
|
69
|
+
};
|
|
70
|
+
unlinkRetiredEmail = async (data)=>{
|
|
71
|
+
const resp = await this._apiNetworkClient.fetchSDK({
|
|
72
|
+
url: '/b2b/organizations/members/unlink_retired_email',
|
|
73
|
+
method: 'POST',
|
|
74
|
+
body: data
|
|
75
|
+
});
|
|
76
|
+
this._subscriptionService.updateMember(resp.member);
|
|
77
|
+
return resp;
|
|
78
|
+
};
|
|
79
|
+
startEmailUpdate = async (data)=>{
|
|
80
|
+
const resp = await this._apiNetworkClient.fetchSDK({
|
|
81
|
+
url: '/b2b/organizations/members/start_email_update',
|
|
82
|
+
method: 'POST',
|
|
83
|
+
body: data
|
|
84
|
+
});
|
|
85
|
+
this._subscriptionService.updateMember(resp.member);
|
|
86
|
+
return resp;
|
|
87
|
+
};
|
|
88
|
+
getConnectedApps = async ()=>{
|
|
89
|
+
return this._networkClient.fetchSDK({
|
|
90
|
+
url: '/b2b/organizations/members/connected_apps',
|
|
91
|
+
method: 'GET'
|
|
92
|
+
});
|
|
93
|
+
};
|
|
94
|
+
revokeConnectedApp = async (data)=>{
|
|
95
|
+
return this._networkClient.fetchSDK({
|
|
96
|
+
url: `/b2b/organizations/members/connected_apps/${data.connected_app_id}/revoke`,
|
|
97
|
+
method: 'POST'
|
|
98
|
+
});
|
|
99
|
+
};
|
|
112
100
|
}
|
|
113
101
|
|
|
114
102
|
export { HeadlessB2BSelfClient };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeadlessB2BSelfClient.mjs","sources":["../../../../../../../../core/src/HeadlessClients/b2b/HeadlessB2BSelfClient.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"],"names":["HeadlessB2BSelfClient","
|
|
1
|
+
{"version":3,"file":"HeadlessB2BSelfClient.mjs","sources":["../../../../../../../../core/src/HeadlessClients/b2b/HeadlessB2BSelfClient.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"],"names":["HeadlessB2BSelfClient","_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"],"mappings":"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"}
|
|
@@ -4,31 +4,18 @@ import { UNRECOVERABLE_ERROR_TYPES } from '../../public/SDKErrors.mjs';
|
|
|
4
4
|
class HeadlessB2BSessionClient {
|
|
5
5
|
_networkClient;
|
|
6
6
|
_subscriptionService;
|
|
7
|
-
getSync
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
this._subscriptionService = _subscriptionService;
|
|
20
|
-
this.getSync = ()=>{
|
|
21
|
-
return this._subscriptionService.getSession();
|
|
22
|
-
};
|
|
23
|
-
this.getInfo = ()=>({
|
|
24
|
-
session: this.getSync(),
|
|
25
|
-
fromCache: this._subscriptionService.getFromCache()
|
|
26
|
-
});
|
|
27
|
-
this.onChange = (callback)=>{
|
|
28
|
-
return this._subscriptionService.subscribeToState((state)=>callback(state?.session ?? null));
|
|
29
|
-
};
|
|
30
|
-
this.revoke = async (options)=>{
|
|
31
|
-
/**
|
|
7
|
+
getSync = ()=>{
|
|
8
|
+
return this._subscriptionService.getSession();
|
|
9
|
+
};
|
|
10
|
+
getInfo = ()=>({
|
|
11
|
+
session: this.getSync(),
|
|
12
|
+
fromCache: this._subscriptionService.getFromCache()
|
|
13
|
+
});
|
|
14
|
+
onChange = (callback)=>{
|
|
15
|
+
return this._subscriptionService.subscribeToState((state)=>callback(state?.session ?? null));
|
|
16
|
+
};
|
|
17
|
+
revoke = async (options)=>{
|
|
18
|
+
/**
|
|
32
19
|
* Revoke destroys the local state if the API request is successful
|
|
33
20
|
* or if we return an unrecoverable error (user is unauthenticated)
|
|
34
21
|
* or if the developer passes in a forceClear option.
|
|
@@ -36,62 +23,69 @@ class HeadlessB2BSessionClient {
|
|
|
36
23
|
* we do not destroy the local state to let the developer manually add retry
|
|
37
24
|
* logic to call revoke again.
|
|
38
25
|
*/ try {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
26
|
+
const resp = await this._networkClient.fetchSDK({
|
|
27
|
+
url: `/b2b/sessions/revoke`,
|
|
28
|
+
method: 'POST'
|
|
29
|
+
});
|
|
30
|
+
this._subscriptionService.destroyState();
|
|
31
|
+
return resp;
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
33
|
+
} catch (error) {
|
|
34
|
+
if (options?.forceClear) {
|
|
35
|
+
this._subscriptionService.destroyState();
|
|
36
|
+
} else if (UNRECOVERABLE_ERROR_TYPES.includes(error.error_type)) {
|
|
43
37
|
this._subscriptionService.destroyState();
|
|
44
|
-
return resp;
|
|
45
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
46
|
-
} catch (error) {
|
|
47
|
-
if (options?.forceClear) {
|
|
48
|
-
this._subscriptionService.destroyState();
|
|
49
|
-
} else if (UNRECOVERABLE_ERROR_TYPES.includes(error.error_type)) {
|
|
50
|
-
this._subscriptionService.destroyState();
|
|
51
|
-
}
|
|
52
|
-
throw error;
|
|
53
38
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
39
|
+
throw error;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
revokeForMember = async (options)=>{
|
|
43
|
+
validateInDev('stytch.session.revokeForMember', options, {
|
|
44
|
+
member_id: 'string'
|
|
45
|
+
});
|
|
46
|
+
return await this._networkClient.fetchSDK({
|
|
47
|
+
url: `/b2b/sessions/revoke/${options.member_id}`,
|
|
48
|
+
method: 'POST'
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
_authenticate = async (options)=>{
|
|
52
|
+
const initialSession = this._subscriptionService.getSession();
|
|
53
|
+
const isSessionStale = ()=>initialSession?.member_session_id !== this._subscriptionService.getSession()?.member_session_id;
|
|
54
|
+
try {
|
|
55
|
+
const requestBody = {
|
|
56
|
+
session_duration_minutes: options?.session_duration_minutes
|
|
57
|
+
};
|
|
58
|
+
const resp = await this._networkClient.fetchSDK({
|
|
59
|
+
url: '/b2b/sessions/authenticate',
|
|
60
|
+
body: requestBody,
|
|
61
61
|
method: 'POST'
|
|
62
62
|
});
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
try {
|
|
68
|
-
const requestBody = {
|
|
69
|
-
session_duration_minutes: options?.session_duration_minutes
|
|
70
|
-
};
|
|
71
|
-
const resp = await this._networkClient.fetchSDK({
|
|
72
|
-
url: '/b2b/sessions/authenticate',
|
|
73
|
-
body: requestBody,
|
|
74
|
-
method: 'POST'
|
|
75
|
-
});
|
|
76
|
-
if (isSessionStale()) {
|
|
77
|
-
// [SDK-1336] The session was updated out from under us while the
|
|
78
|
-
// request was in flight; discard the response and retry
|
|
79
|
-
return this._authenticate(options);
|
|
80
|
-
}
|
|
81
|
-
return resp;
|
|
82
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
83
|
-
} catch (error) {
|
|
84
|
-
if (isSessionStale()) {
|
|
85
|
-
// [SDK-1336] The session was updated out from under us while the
|
|
86
|
-
// request was in flight; discard the response and retry
|
|
87
|
-
return this._authenticate(options);
|
|
88
|
-
}
|
|
89
|
-
if (UNRECOVERABLE_ERROR_TYPES.includes(error.error_type)) {
|
|
90
|
-
this._subscriptionService.destroySession();
|
|
91
|
-
}
|
|
92
|
-
throw error;
|
|
63
|
+
if (isSessionStale()) {
|
|
64
|
+
// [SDK-1336] The session was updated out from under us while the
|
|
65
|
+
// request was in flight; discard the response and retry
|
|
66
|
+
return this._authenticate(options);
|
|
93
67
|
}
|
|
94
|
-
|
|
68
|
+
return resp;
|
|
69
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
70
|
+
} catch (error) {
|
|
71
|
+
if (isSessionStale()) {
|
|
72
|
+
// [SDK-1336] The session was updated out from under us while the
|
|
73
|
+
// request was in flight; discard the response and retry
|
|
74
|
+
return this._authenticate(options);
|
|
75
|
+
}
|
|
76
|
+
if (UNRECOVERABLE_ERROR_TYPES.includes(error.error_type)) {
|
|
77
|
+
this._subscriptionService.destroySession();
|
|
78
|
+
}
|
|
79
|
+
throw error;
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
authenticate;
|
|
83
|
+
exchange;
|
|
84
|
+
exchangeAccessToken;
|
|
85
|
+
attest;
|
|
86
|
+
constructor(_networkClient, _subscriptionService){
|
|
87
|
+
this._networkClient = _networkClient;
|
|
88
|
+
this._subscriptionService = _subscriptionService;
|
|
95
89
|
this.authenticate = this._subscriptionService.withUpdateSession(this._authenticate);
|
|
96
90
|
this.exchange = this._subscriptionService.withUpdateSession(async (data)=>{
|
|
97
91
|
validateInDev('stytch.session.exchange', data, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeadlessB2BSessionClient.mjs","sources":["../../../../../../../../core/src/HeadlessClients/b2b/HeadlessB2BSessionClient.ts"],"sourcesContent":["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"],"names":["HeadlessB2BSessionClient","getSync","getInfo","onChange","revoke","revokeForMember","_authenticate","authenticate","exchange","exchangeAccessToken","attest","constructor","_subscriptionService","_networkClient","getSession","session","fromCache","getFromCache","callback","subscribeToState","state","options","resp","fetchSDK","url","method","destroyState","error","forceClear","UNRECOVERABLE_ERROR_TYPES","includes","error_type","validateInDev","member_id","initialSession","isSessionStale","member_session_id","requestBody","session_duration_minutes","body","destroySession","withUpdateSession","data","organization_id","locale","access_token","profile_id","token","getTokens","updateSession","tokens","session_token","session_jwt","updateTokens"],"mappings":";;;AAsBO,MAAMA,wBAAAA,CAAAA;;;IAGXC,OAAAA;IAIAC,OAAAA;IAKAC,QAAAA;IAIAC,MAAAA;IA6BAC,eAAAA;IAWQC,aAAAA;IAuCRC,YAAAA;IAIAC,QAAAA;IAEAC,mBAAAA;IAIAC,MAAAA;AAEAC,IAAAA,WAAAA,CACE,cAAsC,EAC9BC,oBAAoE,CAC5E;aAFQC,cAAAA,GAAAA,cAAAA;aACAD,oBAAAA,GAAAA,oBAAAA;aA1GVX,OAAAA,GAAU,IAAA;AACR,YAAA,OAAO,IAAI,CAACW,oBAAoB,CAACE,UAAU,EAAA;AAC7C,QAAA,CAAA;AAEAZ,QAAAA,IAAAA,CAAAA,OAAAA,GAAU,KAA0B;gBAClCa,OAAAA,EAAS,IAAI,CAACd,OAAO,EAAA;AACrBe,gBAAAA,SAAAA,EAAW,IAAI,CAACJ,oBAAoB,CAACK,YAAY;aACnD,CAAA;AAEAd,QAAAA,IAAAA,CAAAA,QAAAA,GAAW,CAACe,QAAAA,GAAAA;YACV,OAAO,IAAI,CAACN,oBAAoB,CAACO,gBAAgB,CAAC,CAACC,KAAAA,GAAUF,QAAAA,CAASE,KAAAA,EAAOL,OAAAA,IAAW,IAAA,CAAA,CAAA;AAC1F,QAAA,CAAA;AAEAX,QAAAA,IAAAA,CAAAA,MAAAA,GAAS,OAAOiB,OAAAA,GAAAA;AACd;;;;;;;AAOC,QACD,IAAI;AACF,gBAAA,MAAMC,OAAO,MAAM,IAAI,CAACT,cAAc,CAACU,QAAQ,CAAwB;oBACrEC,GAAAA,EAAK,CAAC,oBAAoB,CAAC;oBAC3BC,MAAAA,EAAQ;AACV,iBAAA,CAAA;gBAEA,IAAI,CAACb,oBAAoB,CAACc,YAAY,EAAA;gBAEtC,OAAOJ,IAAAA;;AAET,YAAA,CAAA,CAAE,OAAOK,KAAAA,EAAY;AACnB,gBAAA,IAAIN,SAASO,UAAAA,EAAY;oBACvB,IAAI,CAAChB,oBAAoB,CAACc,YAAY,EAAA;AACxC,gBAAA,CAAA,MAAO,IAAIG,yBAAAA,CAA0BC,QAAQ,CAACH,KAAAA,CAAMI,UAAU,CAAA,EAAG;oBAC/D,IAAI,CAACnB,oBAAoB,CAACc,YAAY,EAAA;AACxC,gBAAA;gBACA,MAAMC,KAAAA;AACR,YAAA;AACF,QAAA,CAAA;AAEAtB,QAAAA,IAAAA,CAAAA,eAAAA,GAAkB,OAAOgB,OAAAA,GAAAA;AACvBW,YAAAA,aAAAA,CAAc,kCAAkCX,OAAAA,EAAS;gBACvDY,SAAAA,EAAW;AACb,aAAA,CAAA;AAEA,YAAA,OAAO,MAAM,IAAI,CAACpB,cAAc,CAACU,QAAQ,CAAwB;AAC/DC,gBAAAA,GAAAA,EAAK,CAAC,qBAAqB,EAAEH,OAAAA,CAAQY,SAAS,CAAA,CAAE;gBAChDR,MAAAA,EAAQ;AACV,aAAA,CAAA;AACF,QAAA,CAAA;AAEQnB,QAAAA,IAAAA,CAAAA,aAAAA,GAAgB,OACtBe,OAAAA,GAAAA;AAEA,YAAA,MAAMa,cAAAA,GAAiB,IAAI,CAACtB,oBAAoB,CAACE,UAAU,EAAA;YAC3D,MAAMqB,cAAAA,GAAiB,IACrBD,cAAAA,EAAgBE,iBAAAA,KAAsB,IAAI,CAACxB,oBAAoB,CAACE,UAAU,EAAA,EAAIsB,iBAAAA;YAEhF,IAAI;AACF,gBAAA,MAAMC,WAAAA,GAAc;AAClBC,oBAAAA,wBAAAA,EAA0BjB,OAAAA,EAASiB;AACrC,iBAAA;AACA,gBAAA,MAAMhB,OAAO,MAAM,IAAI,CAACT,cAAc,CAACU,QAAQ,CAAwD;oBACrGC,GAAAA,EAAK,4BAAA;oBACLe,IAAAA,EAAMF,WAAAA;oBACNZ,MAAAA,EAAQ;AACV,iBAAA,CAAA;AAEA,gBAAA,IAAIU,cAAAA,EAAAA,EAAkB;;;oBAGpB,OAAO,IAAI,CAAC7B,aAAa,CAACe,OAAAA,CAAAA;AAC5B,gBAAA;gBAEA,OAAOC,IAAAA;;AAET,YAAA,CAAA,CAAE,OAAOK,KAAAA,EAAY;AACnB,gBAAA,IAAIQ,cAAAA,EAAAA,EAAkB;;;oBAGpB,OAAO,IAAI,CAAC7B,aAAa,CAACe,OAAAA,CAAAA;AAC5B,gBAAA;AAEA,gBAAA,IAAIQ,yBAAAA,CAA0BC,QAAQ,CAACH,KAAAA,CAAMI,UAAU,CAAA,EAAG;oBACxD,IAAI,CAACnB,oBAAoB,CAAC4B,cAAc,EAAA;AAC1C,gBAAA;gBACA,MAAMb,KAAAA;AACR,YAAA;AACF,QAAA,CAAA;QAkBE,IAAI,CAACpB,YAAY,GAAG,IAAI,CAACK,oBAAoB,CAAC6B,iBAAiB,CAAC,IAAI,CAACnC,aAAa,CAAA;QAElF,IAAI,CAACE,QAAQ,GAAG,IAAI,CAACI,oBAAoB,CAAC6B,iBAAiB,CAAC,OAAOC,IAAAA,GAAAA;AACjEV,YAAAA,aAAAA,CAAc,2BAA2BU,IAAAA,EAAM;gBAC7CC,eAAAA,EAAiB,QAAA;gBACjBL,wBAAAA,EAA0B,QAAA;gBAC1BM,MAAAA,EAAQ;AACV,aAAA,CAAA;AAEA,YAAA,OAAO,IAAI,CAAC/B,cAAc,CAACU,QAAQ,CAAoD;gBACrFC,GAAAA,EAAK,wBAAA;gBACLe,IAAAA,EAAMG,IAAAA;gBACNjB,MAAAA,EAAQ;AACV,aAAA,CAAA;AACF,QAAA,CAAA,CAAA;QAEA,IAAI,CAAChB,mBAAmB,GAAG,IAAI,CAACG,oBAAoB,CAAC6B,iBAAiB,CACpE,OAAOC,IAAAA,GAAAA;AACLV,YAAAA,aAAAA,CAAc,2BAA2BU,IAAAA,EAAM;gBAC7CG,YAAAA,EAAc,QAAA;gBACdP,wBAAAA,EAA0B;AAC5B,aAAA,CAAA;AACA,YAAA,OAAO,IAAI,CAACzB,cAAc,CAACU,QAAQ,CAA+D;gBAChGC,GAAAA,EAAK,qCAAA;gBACLe,IAAAA,EAAMG,IAAAA;gBACNjB,MAAAA,EAAQ;AACV,aAAA,CAAA;AACF,QAAA,CAAA,CAAA;QAGF,IAAI,CAACf,MAAM,GAAG,IAAI,CAACE,oBAAoB,CAAC6B,iBAAiB,CAAC,OAAOC,IAAAA,GAAAA;AAC/DV,YAAAA,aAAAA,CAAc,yBAAyBU,IAAAA,EAAM;gBAC3CC,eAAAA,EAAiB,gBAAA;gBACjBG,UAAAA,EAAY,QAAA;gBACZC,KAAAA,EAAO,QAAA;gBACPT,wBAAAA,EAA0B;AAC5B,aAAA,CAAA;AAEA,YAAA,OAAO,IAAI,CAACzB,cAAc,CAACU,QAAQ,CAAkD;gBACnFC,GAAAA,EAAK,sBAAA;gBACLe,IAAAA,EAAMG,IAAAA;gBACNjB,MAAAA,EAAQ;AACV,aAAA,CAAA;AACF,QAAA,CAAA,CAAA;AACF,IAAA;IAEAuB,SAAAA,GAAY;AACV,QAAA,OAAO,IAAI,CAACpC,oBAAoB,CAACoC,SAAS,EAAA;AAK5C,IAAA;AAEAC,IAAAA,aAAAA,CAAcC,MAA2B,EAAQ;AAC/ClB,QAAAA,aAAAA,CAAc,gCAAgCkB,MAAAA,EAAQ;YACpDC,aAAAA,EAAe,QAAA;YACfC,WAAAA,EAAa;AACf,SAAA,CAAA;AACA,QAAA,IAAI,CAACxC,oBAAoB,CAACyC,YAAY,CAACH,MAAAA,CAAAA;AACzC,IAAA;AACF;;;;"}
|
|
1
|
+
{"version":3,"file":"HeadlessB2BSessionClient.mjs","sources":["../../../../../../../../core/src/HeadlessClients/b2b/HeadlessB2BSessionClient.ts"],"sourcesContent":["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"],"names":["HeadlessB2BSessionClient","getSync","_subscriptionService","getSession","getInfo","session","fromCache","getFromCache","onChange","callback","subscribeToState","state","revoke","options","resp","_networkClient","fetchSDK","url","method","destroyState","error","forceClear","UNRECOVERABLE_ERROR_TYPES","includes","error_type","revokeForMember","validateInDev","member_id","_authenticate","initialSession","isSessionStale","member_session_id","requestBody","session_duration_minutes","body","destroySession","authenticate","exchange","exchangeAccessToken","attest","withUpdateSession","data","organization_id","locale","access_token","profile_id","token","getTokens","updateSession","tokens","session_token","session_jwt","updateTokens"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeadlessB2BTOTPsClient.mjs","sources":["../../../../../../../../core/src/HeadlessClients/b2b/HeadlessB2BTOTPsClient.ts"],"sourcesContent":["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"],"names":["HeadlessB2BTOTPsClient","authenticate","
|
|
1
|
+
{"version":3,"file":"HeadlessB2BTOTPsClient.mjs","sources":["../../../../../../../../core/src/HeadlessClients/b2b/HeadlessB2BTOTPsClient.ts"],"sourcesContent":["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"],"names":["HeadlessB2BTOTPsClient","authenticate","_networkClient","_subscriptionService","dfpProtectedAuth","withUpdateSession","data","validateInDev","organization_id","member_id","code","session_duration_minutes","set_mfa_enrollment","set_default_mfa","dfp_telemetry_id","captcha_token","getDFPTelemetryIDAndCaptcha","requestBody","intermediate_session_token","getIntermediateSessionToken","undefined","retriableFetchSDK","url","body","method","retryCallback","retryWithCaptchaAndDFP","create","expiration_minutes","response","getMember","updateMember","member"],"mappings":";;AAWO,MAAMA,sBAAAA,CAAAA;;;;IAGXC,YAAAA;IAEA,WAAA,CACUC,cAA8B,EAC9BC,oBAAoE,EACpEC,gBAA2C,CACnD;aAHQF,cAAAA,GAAAA,cAAAA;aACAC,oBAAAA,GAAAA,oBAAAA;aACAC,gBAAAA,GAAAA,gBAAAA;QAER,IAAI,CAACH,YAAY,GAAG,IAAI,CAACE,oBAAoB,CAACE,iBAAiB,CAC7D,OAAOC,IAAAA,GAAAA;AACLC,YAAAA,aAAAA,CAAc,4BAA4BD,IAAAA,EAAM;gBAC9CE,eAAAA,EAAiB,QAAA;gBACjBC,SAAAA,EAAW,QAAA;gBACXC,IAAAA,EAAM,QAAA;gBACNC,wBAAAA,EAA0B,QAAA;gBAC1BC,kBAAAA,EAAoB,gBAAA;gBACpBC,eAAAA,EAAiB;AACnB,aAAA,CAAA;YACA,MAAM,EAAEC,gBAAgB,EAAEC,aAAa,EAAE,GAAG,MAAM,IAAI,CAACX,gBAAgB,CAACY,2BAA2B,EAAA;AACnG,YAAA,MAAMC,WAAAA,GAAc;AAClB,gBAAA,GAAGX,IAAI;AACPQ,gBAAAA,gBAAAA;AACAC,gBAAAA,aAAAA;AACAG,gBAAAA,0BAAAA,EAA4B,IAAI,CAACf,oBAAoB,CAACgB,2BAA2B,EAAA,IAAMC;AACzF,aAAA;AAEA,YAAA,OAAO,IAAI,CAAClB,cAAc,CAACmB,iBAAiB,CAAqD;gBAC/FC,GAAAA,EAAK,wBAAA;gBACLC,IAAAA,EAAMN,WAAAA;gBACNO,MAAAA,EAAQ,MAAA;AACRC,gBAAAA,aAAAA,EAAe,IAAI,CAACrB,gBAAgB,CAACsB;AACvC,aAAA,CAAA;AACF,QAAA,CAAA,CAAA;AAEJ,IAAA;IAEA,MAAMC,MAAAA,CAAOrB,IAA0B,EAAkC;AACvEC,QAAAA,aAAAA,CAAc,sBAAsBD,IAAAA,EAAM;YACxCE,eAAAA,EAAiB,QAAA;YACjBC,SAAAA,EAAW,QAAA;YACXmB,kBAAAA,EAAoB;AACtB,SAAA,CAAA;QACA,MAAM,EAAEd,gBAAgB,EAAEC,aAAa,EAAE,GAAG,MAAM,IAAI,CAACX,gBAAgB,CAACY,2BAA2B,EAAA;AACnG,QAAA,MAAMa,WAAW,MAAM,IAAI,CAAC3B,cAAc,CAACmB,iBAAiB,CAAwB;YAClFC,GAAAA,EAAK,WAAA;YACLC,IAAAA,EAAM;AACJ,gBAAA,GAAGjB,IAAI;AACPQ,gBAAAA,gBAAAA;AACAC,gBAAAA,aAAAA;AACAG,gBAAAA,0BAAAA,EAA4B,MAAO,IAAI,CAACf,oBAAoB,CAACgB,2BAA2B,EAAA,IAAOC;AACjG,aAAA;YACAI,MAAAA,EAAQ,MAAA;AACRC,YAAAA,aAAAA,EAAe,IAAI,CAACrB,gBAAgB,CAACsB;AACvC,SAAA,CAAA;QAEA,IAAIG,QAAAA,CAASpB,SAAS,KAAK,IAAI,CAACN,oBAAoB,CAAC2B,SAAS,EAAA,EAAIrB,SAAAA,EAAW;AAC3E,YAAA,IAAI,CAACN,oBAAoB,CAAC4B,YAAY,CAACF,SAASG,MAAM,CAAA;AACxD,QAAA;QAEA,OAAOH,QAAAA;AACT,IAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NetworkClient.mjs","sources":["../../../../../../core/src/NetworkClient.ts"],"sourcesContent":["import { AnalyticsEvent } from './Events';\nimport { ResponseCommon, StytchAPIUnreachableError, StytchAPIError, StytchAPISchemaError } from './public';\n\ntype SDKRequestMethodAndBody =\n | {\n method: 'GET' | 'DELETE';\n body?: null;\n }\n | {\n method: 'POST' | 'PUT';\n body?: Record<string, unknown>;\n };\n\nexport type SDKRequestInfo = SDKRequestMethodAndBody & {\n url: string;\n additionalMetadata?: Record<string, string>;\n};\n\nexport interface SDKTelemetry {\n event_id: string;\n app_session_id: string;\n persistent_id: string;\n client_sent_at: string;\n timezone: string;\n\n // Logged in user data\n // Why don't we generate this from the session_token in the auth header?\n // - We don't want to tie analytics ingest to session validation. There's no need to put\n // that kind of pressure on API, and ingest could be moved to somewhere that doesn't\n // have the ability to validate tokens\n // - For bulk event batches, we want to keep track of whether or not a user was logged\n // in at each event. If we have 10 events, the user logs in at event 5, then they'll have\n // a token when they log the batch, but we want to know that they were not logged in for the\n // first 4 events\n\n // Versioning\n app: {\n identifier: string;\n version?: string;\n };\n os?: {\n identifier?: string;\n version?: string;\n };\n device?: {\n model?: string;\n screen_size?: string;\n };\n sdk: {\n identifier: string;\n version: string;\n };\n}\n\nexport type AdditionalTelemetryData =\n | { stytch_user_id?: string; stytch_session_id?: string }\n | { stytch_member_id?: string; stytch_member_session_id?: string };\n\nexport interface INetworkClient {\n createTelemetryBlob(additionalMetadata?: SDKRequestInfo['additionalMetadata']): SDKTelemetry;\n\n fetchSDK: <T extends ResponseCommon>(info: SDKRequestInfo) => Promise<T>;\n\n retriableFetchSDK: <T extends ResponseCommon>(info: RetriableSDKRequestInfo) => Promise<T>;\n\n logEvent<E extends AnalyticsEvent>({\n name,\n details,\n error,\n }: {\n name: E['name'];\n details: E['details'];\n error?: { error_code?: string; error_description?: string; http_status_code?: string };\n }): void;\n\n // @deprecated Use the new sessions.updateSession() method instead\n updateSessionToken: (sessionToken: string | null) => void;\n}\n\nexport type RetriableSDKRequestInfo = SDKRequestInfo & {\n retryCallback: (e: RetriableError, info: SDKBaseRequestInfo) => Promise<SDKBaseRequestInfo>;\n};\n\nexport type RetriableSDKBaseRequestInfo = SDKBaseRequestInfo & {\n retryCallback: (e: RetriableError, info: SDKBaseRequestInfo) => Promise<SDKBaseRequestInfo>;\n};\n\nexport enum RetriableErrorType {\n RequiredCaptcha = 'CAPTCHA required',\n}\n\nexport class RetriableError extends Error {\n type: RetriableErrorType;\n\n constructor(type: RetriableErrorType) {\n super(type);\n this.type = type;\n }\n}\n\nexport async function retriableFetchSDK<T extends ResponseCommon>({\n method,\n finalURL,\n basicAuthHeader,\n xSDKClientHeader,\n xSDKParentHostHeader,\n body,\n retryCallback,\n}: RetriableSDKBaseRequestInfo): Promise<T> {\n let req: SDKBaseRequestInfo = {\n method,\n finalURL,\n basicAuthHeader,\n xSDKClientHeader,\n xSDKParentHostHeader,\n body,\n };\n\n try {\n return await baseFetchSDK<T>(req);\n } catch (err) {\n if (err instanceof RetriableError) {\n req = await retryCallback(err, req);\n return await baseFetchSDK<T>(req);\n }\n throw err;\n }\n}\n\nexport type SDKBaseRequestInfo = {\n basicAuthHeader: string;\n xSDKClientHeader: string;\n xSDKParentHostHeader?: string;\n body: SDKRequestInfo['body'];\n method: SDKRequestInfo['method'];\n finalURL: string;\n};\n\nexport async function baseFetchSDK<T extends ResponseCommon>({\n method,\n finalURL,\n basicAuthHeader,\n xSDKClientHeader,\n xSDKParentHostHeader,\n body,\n}: SDKBaseRequestInfo): Promise<T> {\n const headers: Record<string, string> = {\n Authorization: basicAuthHeader,\n 'Content-Type': 'application/json',\n 'X-SDK-Client': xSDKClientHeader,\n };\n\n if (xSDKParentHostHeader) {\n headers['X-SDK-Parent-Host'] = xSDKParentHostHeader;\n }\n\n const fetchOpts: RequestInit = {\n method,\n headers,\n body: body && JSON.stringify(body),\n credentials: 'include',\n };\n\n let resp;\n try {\n resp = await fetch(finalURL, fetchOpts);\n /* eslint-disable @typescript-eslint/no-explicit-any */\n } catch (e: any) {\n if (e.message === 'Failed to fetch') {\n throw new StytchAPIUnreachableError('Unable to contact our servers.');\n }\n throw e;\n }\n\n // We only return 200 from WB endpoints, but just in case let's accept all 2xx errors\n if (resp.status <= 299) {\n try {\n const respData = await resp.json();\n return respData.data;\n } catch {\n throw new StytchAPIUnreachableError('Invalid JSON response from our servers.');\n }\n }\n\n // 99% of errors will be well-formed JSON errors with an appropriate content-type set\n if (resp.status !== 200 && resp.headers.get('content-type')?.includes('application/json')) {\n let respError;\n try {\n respError = await resp.json();\n } catch {\n // Error was not JSON- but the content type said it was! This means the server lied to us, which it should never do...\n throw new StytchAPIUnreachableError('Invalid or no response from server');\n }\n // If this looks like a JSONSchema validation error, it probably means the caller isn't using\n // typescript and gave us a bad type.\n if ('body' in respError || 'params' in respError || 'query' in respError) {\n throw new StytchAPISchemaError(respError);\n }\n throw new StytchAPIError(respError);\n }\n\n // Finally handle the other 1% of errors (Captcha errors, network errors, 503s, etc.)\n let respData;\n try {\n respData = await resp.text();\n } catch {\n throw new StytchAPIUnreachableError('Invalid response from our servers.');\n }\n if (respData.includes('Captcha required')) {\n throw new RetriableError(RetriableErrorType.RequiredCaptcha);\n }\n throw new StytchAPIUnreachableError('Invalid response from our servers.');\n}\n\nexport async function baseSubmitFormSDK({\n method,\n finalURL,\n basicAuthHeader,\n xSDKClientHeader,\n xSDKParentHostHeader,\n body,\n}: SDKBaseRequestInfo): Promise<void> {\n const bodyParams = (body || {}) as Record<string, string>;\n const finalBody: Record<string, string> = {\n ...bodyParams,\n __Authorization: basicAuthHeader,\n '__X-SDK-Client': xSDKClientHeader,\n };\n\n if (xSDKParentHostHeader) {\n finalBody['__X-SDK-Parent-Host'] = xSDKParentHostHeader;\n }\n\n const children: HTMLInputElement[] = Object.entries(finalBody).map(([key, value]) => {\n const input = document.createElement('input');\n input.type = 'hidden';\n input.name = key;\n input.value = value;\n return input;\n });\n\n const form = document.createElement('form');\n form.method = method;\n form.action = finalURL;\n form.append(...children);\n\n document.body.appendChild(form);\n form.submit();\n}\n"],"names":["RetriableErrorType","RetriableError","Error","type","constructor","retriableFetchSDK","method","finalURL","basicAuthHeader","xSDKClientHeader","xSDKParentHostHeader","body","retryCallback","req","baseFetchSDK","err","headers","Authorization","fetchOpts","JSON","stringify","credentials","resp","fetch","e","message","StytchAPIUnreachableError","status","respData","json","data","get","includes","respError","StytchAPISchemaError","StytchAPIError","text","baseSubmitFormSDK","bodyParams","finalBody","__Authorization","children","Object","entries","map","key","value","input","document","createElement","name","form","action","append","appendChild","submit"],"mappings":";;AAuFO,IAAA,kBAAKA,iBAAAA,SAAAA,kBAAAA,EAAAA;;AAAAA,IAAAA,OAAAA,kBAAAA;AAEX,CAAA,CAAA,EAAA;AAEM,MAAMC,cAAAA,SAAuBC,KAAAA,CAAAA;IAClCC,IAAAA;AAEAC,IAAAA,WAAAA,CAAYD,IAAwB,CAAE;AACpC,QAAA,KAAK,CAACA,IAAAA,CAAAA;QACN,IAAI,CAACA,IAAI,GAAGA,IAAAA;AACd,IAAA;AACF;AAEO,eAAeE,iBAAAA,CAA4C,EAChEC,MAAM,EACNC,QAAQ,EACRC,eAAe,EACfC,gBAAgB,EAChBC,oBAAoB,EACpBC,IAAI,EACJC,aAAa,EACe,EAAA;AAC5B,IAAA,IAAIC,GAAAA,GAA0B;AAC5BP,QAAAA,MAAAA;AACAC,QAAAA,QAAAA;AACAC,QAAAA,eAAAA;AACAC,QAAAA,gBAAAA;AACAC,QAAAA,oBAAAA;AACAC,QAAAA;AACF,KAAA;IAEA,IAAI;AACF,QAAA,OAAO,MAAMG,YAAAA,CAAgBD,GAAAA,CAAAA;AAC/B,IAAA,CAAA,CAAE,OAAOE,GAAAA,EAAK;AACZ,QAAA,IAAIA,eAAed,cAAAA,EAAgB;YACjCY,GAAAA,GAAM,MAAMD,cAAcG,GAAAA,EAAKF,GAAAA,CAAAA;AAC/B,YAAA,OAAO,MAAMC,YAAAA,CAAgBD,GAAAA,CAAAA;AAC/B,QAAA;QACA,MAAME,GAAAA;AACR,IAAA;AACF;AAWO,eAAeD,YAAAA,CAAuC,EAC3DR,MAAM,EACNC,QAAQ,EACRC,eAAe,EACfC,gBAAgB,EAChBC,oBAAoB,EACpBC,IAAI,EACe,EAAA;AACnB,IAAA,MAAMK,OAAAA,GAAkC;QACtCC,aAAAA,EAAeT,eAAAA;QACf,cAAA,EAAgB,kBAAA;QAChB,cAAA,EAAgBC;AAClB,KAAA;AAEA,IAAA,IAAIC,oBAAAA,EAAsB;QACxBM,OAAO,CAAC,oBAAoB,GAAGN,oBAAAA;AACjC,IAAA;AAEA,IAAA,MAAMQ,SAAAA,GAAyB;AAC7BZ,QAAAA,MAAAA;AACAU,QAAAA,OAAAA;QACAL,IAAAA,EAAMA,IAAAA,IAAQQ,IAAAA,CAAKC,SAAS,CAACT,IAAAA,CAAAA;QAC7BU,WAAAA,EAAa;AACf,KAAA;IAEA,IAAIC,IAAAA;IACJ,IAAI;QACFA,IAAAA,GAAO,MAAMC,MAAMhB,QAAAA,EAAUW,SAAAA,CAAAA;6DAE/B,CAAA,CAAE,OAAOM,CAAAA,EAAQ;QACf,IAAIA,CAAAA,CAAEC,OAAO,KAAK,iBAAA,EAAmB;AACnC,YAAA,MAAM,IAAIC,yBAAAA,CAA0B,gCAAA,CAAA;AACtC,QAAA;QACA,MAAMF,CAAAA;AACR,IAAA;;IAGA,IAAIF,IAAAA,CAAKK,MAAM,IAAI,GAAA,EAAK;QACtB,IAAI;YACF,MAAMC,QAAAA,GAAW,MAAMN,IAAAA,CAAKO,IAAI,EAAA;AAChC,YAAA,OAAOD,SAASE,IAAI;AACtB,QAAA,CAAA,CAAE,OAAM;AACN,YAAA,MAAM,IAAIJ,yBAAAA,CAA0B,yCAAA,CAAA;AACtC,QAAA;AACF,IAAA;;IAGA,IAAIJ,IAAAA,CAAKK,MAAM,KAAK,GAAA,IAAOL,IAAAA,CAAKN,OAAO,CAACe,GAAG,CAAC,cAAA,CAAA,EAAiBC,QAAAA,CAAS,kBAAA,CAAA,EAAqB;QACzF,IAAIC,SAAAA;QACJ,IAAI;YACFA,SAAAA,GAAY,MAAMX,KAAKO,IAAI,EAAA;AAC7B,QAAA,CAAA,CAAE,OAAM;;AAEN,YAAA,MAAM,IAAIH,yBAAAA,CAA0B,oCAAA,CAAA;AACtC,QAAA;;;AAGA,QAAA,IAAI,MAAA,IAAUO,SAAAA,IAAa,QAAA,IAAYA,SAAAA,IAAa,WAAWA,SAAAA,EAAW;AACxE,YAAA,MAAM,IAAIC,oBAAAA,CAAqBD,SAAAA,CAAAA;AACjC,QAAA;AACA,QAAA,MAAM,IAAIE,cAAAA,CAAeF,SAAAA,CAAAA;AAC3B,IAAA;;IAGA,IAAIL,QAAAA;IACJ,IAAI;QACFA,QAAAA,GAAW,MAAMN,KAAKc,IAAI,EAAA;AAC5B,IAAA,CAAA,CAAE,OAAM;AACN,QAAA,MAAM,IAAIV,yBAAAA,CAA0B,oCAAA,CAAA;AACtC,IAAA;IACA,IAAIE,QAAAA,CAASI,QAAQ,CAAC,kBAAA,CAAA,EAAqB;AACzC,QAAA,MAAM,IAAI/B,cAAAA,CAAAA,kBAAAA,CAAAA;AACZ,IAAA;AACA,IAAA,MAAM,IAAIyB,yBAAAA,CAA0B,oCAAA,CAAA;AACtC;AAEO,eAAeW,iBAAAA,CAAkB,EACtC/B,MAAM,EACNC,QAAQ,EACRC,eAAe,EACfC,gBAAgB,EAChBC,oBAAoB,EACpBC,IAAI,EACe,EAAA;IACnB,MAAM2B,UAAAA,GAAc3B,QAAQ,EAAC;AAC7B,IAAA,MAAM4B,SAAAA,GAAoC;AACxC,QAAA,GAAGD,UAAU;QACbE,eAAAA,EAAiBhC,eAAAA;QACjB,gBAAA,EAAkBC;AACpB,KAAA;AAEA,IAAA,IAAIC,oBAAAA,EAAsB;QACxB6B,SAAS,CAAC,sBAAsB,GAAG7B,oBAAAA;AACrC,IAAA;IAEA,MAAM+B,QAAAA,GAA+BC,MAAAA,CAAOC,OAAO,CAACJ,SAAAA,CAAAA,CAAWK,GAAG,CAAC,CAAC,CAACC,GAAAA,EAAKC,KAAAA,CAAM,GAAA;QAC9E,MAAMC,KAAAA,GAAQC,QAAAA,CAASC,aAAa,CAAC,OAAA,CAAA;AACrCF,QAAAA,KAAAA,CAAM5C,IAAI,GAAG,QAAA;AACb4C,QAAAA,KAAAA,CAAMG,IAAI,GAAGL,GAAAA;AACbE,QAAAA,KAAAA,CAAMD,KAAK,GAAGA,KAAAA;QACd,OAAOC,KAAAA;AACT,IAAA,CAAA,CAAA;IAEA,MAAMI,IAAAA,GAAOH,QAAAA,CAASC,aAAa,CAAC,MAAA,CAAA;AACpCE,IAAAA,IAAAA,CAAK7C,MAAM,GAAGA,MAAAA;AACd6C,IAAAA,IAAAA,CAAKC,MAAM,GAAG7C,QAAAA;AACd4C,IAAAA,IAAAA,CAAKE,MAAM,CAAA,GAAIZ,QAAAA,CAAAA;IAEfO,QAAAA,CAASrC,IAAI,CAAC2C,WAAW,CAACH,IAAAA,CAAAA;AAC1BA,IAAAA,IAAAA,CAAKI,MAAM,EAAA;AACb;;;;"}
|
|
1
|
+
{"version":3,"file":"NetworkClient.mjs","sources":["../../../../../../core/src/NetworkClient.ts"],"sourcesContent":["import { AnalyticsEvent } from './Events';\nimport { ResponseCommon, StytchAPIUnreachableError, StytchAPIError, StytchAPISchemaError } from './public';\n\ntype SDKRequestMethodAndBody =\n | {\n method: 'GET' | 'DELETE';\n body?: null;\n }\n | {\n method: 'POST' | 'PUT';\n body?: Record<string, unknown>;\n };\n\nexport type SDKRequestInfo = SDKRequestMethodAndBody & {\n url: string;\n additionalMetadata?: Record<string, string>;\n};\n\nexport interface SDKTelemetry {\n event_id: string;\n app_session_id: string;\n persistent_id: string;\n client_sent_at: string;\n timezone: string;\n\n // Logged in user data\n // Why don't we generate this from the session_token in the auth header?\n // - We don't want to tie analytics ingest to session validation. There's no need to put\n // that kind of pressure on API, and ingest could be moved to somewhere that doesn't\n // have the ability to validate tokens\n // - For bulk event batches, we want to keep track of whether or not a user was logged\n // in at each event. If we have 10 events, the user logs in at event 5, then they'll have\n // a token when they log the batch, but we want to know that they were not logged in for the\n // first 4 events\n\n // Versioning\n app: {\n identifier: string;\n version?: string;\n };\n os?: {\n identifier?: string;\n version?: string;\n };\n device?: {\n model?: string;\n screen_size?: string;\n };\n sdk: {\n identifier: string;\n version: string;\n };\n}\n\nexport type AdditionalTelemetryData =\n | { stytch_user_id?: string; stytch_session_id?: string }\n | { stytch_member_id?: string; stytch_member_session_id?: string };\n\nexport interface INetworkClient {\n createTelemetryBlob(additionalMetadata?: SDKRequestInfo['additionalMetadata']): SDKTelemetry;\n\n fetchSDK: <T extends ResponseCommon>(info: SDKRequestInfo) => Promise<T>;\n\n retriableFetchSDK: <T extends ResponseCommon>(info: RetriableSDKRequestInfo) => Promise<T>;\n\n logEvent<E extends AnalyticsEvent>({\n name,\n details,\n error,\n }: {\n name: E['name'];\n details: E['details'];\n error?: { error_code?: string; error_description?: string; http_status_code?: string };\n }): void;\n\n // @deprecated Use the new sessions.updateSession() method instead\n updateSessionToken: (sessionToken: string | null) => void;\n}\n\nexport type RetriableSDKRequestInfo = SDKRequestInfo & {\n retryCallback: (e: RetriableError, info: SDKBaseRequestInfo) => Promise<SDKBaseRequestInfo>;\n};\n\nexport type RetriableSDKBaseRequestInfo = SDKBaseRequestInfo & {\n retryCallback: (e: RetriableError, info: SDKBaseRequestInfo) => Promise<SDKBaseRequestInfo>;\n};\n\nexport enum RetriableErrorType {\n RequiredCaptcha = 'CAPTCHA required',\n}\n\nexport class RetriableError extends Error {\n type: RetriableErrorType;\n\n constructor(type: RetriableErrorType) {\n super(type);\n this.type = type;\n }\n}\n\nexport async function retriableFetchSDK<T extends ResponseCommon>({\n method,\n finalURL,\n basicAuthHeader,\n xSDKClientHeader,\n xSDKParentHostHeader,\n body,\n retryCallback,\n}: RetriableSDKBaseRequestInfo): Promise<T> {\n let req: SDKBaseRequestInfo = {\n method,\n finalURL,\n basicAuthHeader,\n xSDKClientHeader,\n xSDKParentHostHeader,\n body,\n };\n\n try {\n return await baseFetchSDK<T>(req);\n } catch (err) {\n if (err instanceof RetriableError) {\n req = await retryCallback(err, req);\n return await baseFetchSDK<T>(req);\n }\n throw err;\n }\n}\n\nexport type SDKBaseRequestInfo = {\n basicAuthHeader: string;\n xSDKClientHeader: string;\n xSDKParentHostHeader?: string;\n body: SDKRequestInfo['body'];\n method: SDKRequestInfo['method'];\n finalURL: string;\n};\n\nexport async function baseFetchSDK<T extends ResponseCommon>({\n method,\n finalURL,\n basicAuthHeader,\n xSDKClientHeader,\n xSDKParentHostHeader,\n body,\n}: SDKBaseRequestInfo): Promise<T> {\n const headers: Record<string, string> = {\n Authorization: basicAuthHeader,\n 'Content-Type': 'application/json',\n 'X-SDK-Client': xSDKClientHeader,\n };\n\n if (xSDKParentHostHeader) {\n headers['X-SDK-Parent-Host'] = xSDKParentHostHeader;\n }\n\n const fetchOpts: RequestInit = {\n method,\n headers,\n body: body && JSON.stringify(body),\n credentials: 'include',\n };\n\n let resp;\n try {\n resp = await fetch(finalURL, fetchOpts);\n /* eslint-disable @typescript-eslint/no-explicit-any */\n } catch (e: any) {\n if (e.message === 'Failed to fetch') {\n throw new StytchAPIUnreachableError('Unable to contact our servers.');\n }\n throw e;\n }\n\n // We only return 200 from WB endpoints, but just in case let's accept all 2xx errors\n if (resp.status <= 299) {\n try {\n const respData = await resp.json();\n return respData.data;\n } catch {\n throw new StytchAPIUnreachableError('Invalid JSON response from our servers.');\n }\n }\n\n // 99% of errors will be well-formed JSON errors with an appropriate content-type set\n if (resp.status !== 200 && resp.headers.get('content-type')?.includes('application/json')) {\n let respError;\n try {\n respError = await resp.json();\n } catch {\n // Error was not JSON- but the content type said it was! This means the server lied to us, which it should never do...\n throw new StytchAPIUnreachableError('Invalid or no response from server');\n }\n // If this looks like a JSONSchema validation error, it probably means the caller isn't using\n // typescript and gave us a bad type.\n if ('body' in respError || 'params' in respError || 'query' in respError) {\n throw new StytchAPISchemaError(respError);\n }\n throw new StytchAPIError(respError);\n }\n\n // Finally handle the other 1% of errors (Captcha errors, network errors, 503s, etc.)\n let respData;\n try {\n respData = await resp.text();\n } catch {\n throw new StytchAPIUnreachableError('Invalid response from our servers.');\n }\n if (respData.includes('Captcha required')) {\n throw new RetriableError(RetriableErrorType.RequiredCaptcha);\n }\n throw new StytchAPIUnreachableError('Invalid response from our servers.');\n}\n\nexport async function baseSubmitFormSDK({\n method,\n finalURL,\n basicAuthHeader,\n xSDKClientHeader,\n xSDKParentHostHeader,\n body,\n}: SDKBaseRequestInfo): Promise<void> {\n const bodyParams = (body || {}) as Record<string, string>;\n const finalBody: Record<string, string> = {\n ...bodyParams,\n __Authorization: basicAuthHeader,\n '__X-SDK-Client': xSDKClientHeader,\n };\n\n if (xSDKParentHostHeader) {\n finalBody['__X-SDK-Parent-Host'] = xSDKParentHostHeader;\n }\n\n const children: HTMLInputElement[] = Object.entries(finalBody).map(([key, value]) => {\n const input = document.createElement('input');\n input.type = 'hidden';\n input.name = key;\n input.value = value;\n return input;\n });\n\n const form = document.createElement('form');\n form.method = method;\n form.action = finalURL;\n form.append(...children);\n\n document.body.appendChild(form);\n form.submit();\n}\n"],"names":["RetriableErrorType","RetriableError","Error","type","retriableFetchSDK","method","finalURL","basicAuthHeader","xSDKClientHeader","xSDKParentHostHeader","body","retryCallback","req","baseFetchSDK","err","headers","Authorization","fetchOpts","JSON","stringify","credentials","resp","fetch","e","message","StytchAPIUnreachableError","status","respData","json","data","get","includes","respError","StytchAPISchemaError","StytchAPIError","text","baseSubmitFormSDK","bodyParams","finalBody","__Authorization","children","Object","entries","map","key","value","input","document","createElement","name","form","action","append","appendChild","submit"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchManager.mjs","sources":["../../../../../../core/src/SearchManager.ts"],"sourcesContent":["import { INetworkClient } from './NetworkClient';\nimport { Member, ResponseCommon } from './public';\nimport { IDFPProtectedAuthProvider } from './DFPProtectedAuthProvider';\n\ntype UserSearchData = ResponseCommon & {\n userType: 'new' | 'passwordless' | 'password';\n};\n\nexport type InternalMember = Pick<Member, 'status' | 'name' | 'member_password_id'>;\n\nexport type MemberSearchData = ResponseCommon & { member: InternalMember | null };\n\nexport interface ISearchData {\n searchUser: (email: string) => Promise<UserSearchData>;\n searchMember: (email: string, organization_id: string) => Promise<MemberSearchData>;\n}\n\nexport class SearchDataManager implements ISearchData {\n constructor(\n private _networkClient: INetworkClient,\n private dfpProtectedAuth: IDFPProtectedAuthProvider,\n ) {}\n\n searchUser(email: string): Promise<UserSearchData> {\n return this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha().then(({ dfp_telemetry_id, captcha_token }) => {\n return this._networkClient.fetchSDK<UserSearchData>({\n url: `/users/search`,\n method: 'POST',\n body: { email, dfp_telemetry_id, captcha_token },\n });\n });\n }\n\n searchMember(email: string, organization_id: string): Promise<MemberSearchData> {\n return this._networkClient.fetchSDK<MemberSearchData>({\n url: `/b2b/organizations/members/search`,\n method: 'POST',\n body: { email_address: email, organization_id },\n });\n }\n}\n"],"names":["SearchDataManager","
|
|
1
|
+
{"version":3,"file":"SearchManager.mjs","sources":["../../../../../../core/src/SearchManager.ts"],"sourcesContent":["import { INetworkClient } from './NetworkClient';\nimport { Member, ResponseCommon } from './public';\nimport { IDFPProtectedAuthProvider } from './DFPProtectedAuthProvider';\n\ntype UserSearchData = ResponseCommon & {\n userType: 'new' | 'passwordless' | 'password';\n};\n\nexport type InternalMember = Pick<Member, 'status' | 'name' | 'member_password_id'>;\n\nexport type MemberSearchData = ResponseCommon & { member: InternalMember | null };\n\nexport interface ISearchData {\n searchUser: (email: string) => Promise<UserSearchData>;\n searchMember: (email: string, organization_id: string) => Promise<MemberSearchData>;\n}\n\nexport class SearchDataManager implements ISearchData {\n constructor(\n private _networkClient: INetworkClient,\n private dfpProtectedAuth: IDFPProtectedAuthProvider,\n ) {}\n\n searchUser(email: string): Promise<UserSearchData> {\n return this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha().then(({ dfp_telemetry_id, captcha_token }) => {\n return this._networkClient.fetchSDK<UserSearchData>({\n url: `/users/search`,\n method: 'POST',\n body: { email, dfp_telemetry_id, captcha_token },\n });\n });\n }\n\n searchMember(email: string, organization_id: string): Promise<MemberSearchData> {\n return this._networkClient.fetchSDK<MemberSearchData>({\n url: `/b2b/organizations/members/search`,\n method: 'POST',\n body: { email_address: email, organization_id },\n });\n }\n}\n"],"names":["SearchDataManager","dfpProtectedAuth","_networkClient","searchUser","email","getDFPTelemetryIDAndCaptcha","then","dfp_telemetry_id","captcha_token","fetchSDK","url","method","body","searchMember","organization_id","email_address"],"mappings":"AAiBO,MAAMA,iBAAAA,CAAAA;;;AACX,IAAA,WAAA,CACE,cAAsC,EAC9BC,gBAA2C,CACnD;aAFQC,cAAAA,GAAAA,cAAAA;aACAD,gBAAAA,GAAAA,gBAAAA;AACP,IAAA;AAEHE,IAAAA,UAAAA,CAAWC,KAAa,EAA2B;AACjD,QAAA,OAAO,IAAI,CAACH,gBAAgB,CAACI,2BAA2B,EAAA,CAAGC,IAAI,CAAC,CAAC,EAAEC,gBAAgB,EAAEC,aAAa,EAAE,GAAA;AAClG,YAAA,OAAO,IAAI,CAACN,cAAc,CAACO,QAAQ,CAAiB;gBAClDC,GAAAA,EAAK,CAAC,aAAa,CAAC;gBACpBC,MAAAA,EAAQ,MAAA;gBACRC,IAAAA,EAAM;AAAER,oBAAAA,KAAAA;AAAOG,oBAAAA,gBAAAA;AAAkBC,oBAAAA;AAAc;AACjD,aAAA,CAAA;AACF,QAAA,CAAA,CAAA;AACF,IAAA;IAEAK,YAAAA,CAAaT,KAAa,EAAEU,eAAuB,EAA6B;AAC9E,QAAA,OAAO,IAAI,CAACZ,cAAc,CAACO,QAAQ,CAAmB;YACpDC,GAAAA,EAAK,CAAC,iCAAiC,CAAC;YACxCC,MAAAA,EAAQ,MAAA;YACRC,IAAAA,EAAM;gBAAEG,aAAAA,EAAeX,KAAAA;AAAOU,gBAAAA;AAAgB;AAChD,SAAA,CAAA;AACF,IAAA;AACF;;;;"}
|