@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
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getDefaultExportFromCjs } from './_commonjsHelpers.mjs';
|
|
2
|
+
import { __require as requireLodash_merge } from '../node_modules/lodash.merge/index.mjs';
|
|
2
3
|
|
|
3
|
-
var
|
|
4
|
+
var lodash_mergeExports = requireLodash_merge();
|
|
5
|
+
var merge = /*@__PURE__*/getDefaultExportFromCjs(lodash_mergeExports);
|
|
4
6
|
|
|
5
|
-
export {
|
|
7
|
+
export { merge as default };
|
|
6
8
|
//# sourceMappingURL=index2.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index2.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index2.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getDefaultExportFromCjs } from './_commonjsHelpers.mjs';
|
|
2
|
+
import { __require as requireClassnames } from '../node_modules/classnames/index.mjs';
|
|
2
3
|
|
|
3
|
-
var
|
|
4
|
+
var classnamesExports = requireClassnames();
|
|
5
|
+
var classNames = /*@__PURE__*/getDefaultExportFromCjs(classnamesExports);
|
|
4
6
|
|
|
5
|
-
export {
|
|
7
|
+
export { classNames as default };
|
|
6
8
|
//# sourceMappingURL=index3.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index3.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index3.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { __require as requireLodash_merge } from '../node_modules/lodash.merge/index.mjs';
|
|
1
|
+
import { __require as requireBs58 } from '../node_modules/bs58/index.mjs';
|
|
3
2
|
|
|
4
|
-
var
|
|
5
|
-
var merge = /*@__PURE__*/getDefaultExportFromCjs(lodash_mergeExports);
|
|
3
|
+
var bs58Exports = requireBs58();
|
|
6
4
|
|
|
7
|
-
export {
|
|
5
|
+
export { bs58Exports as b };
|
|
8
6
|
//# sourceMappingURL=index4.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index4.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index4.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useContext, createContext, useRef, useCallback, useState, useEffect } from 'react';
|
|
3
|
+
import { T as TransNoContext } from './shared/react.8970326b.mjs';
|
|
3
4
|
|
|
4
|
-
const LinguiContext =
|
|
5
|
+
const LinguiContext = createContext(null);
|
|
5
6
|
const useLinguiInternal = (devErrorMessage) => {
|
|
6
|
-
const context =
|
|
7
|
+
const context = useContext(LinguiContext);
|
|
7
8
|
{
|
|
8
9
|
if (context == null) {
|
|
9
10
|
throw new Error(
|
|
@@ -16,13 +17,13 @@ const useLinguiInternal = (devErrorMessage) => {
|
|
|
16
17
|
function useLingui() {
|
|
17
18
|
return useLinguiInternal();
|
|
18
19
|
}
|
|
19
|
-
|
|
20
|
+
const I18nProvider = ({
|
|
20
21
|
i18n,
|
|
21
22
|
defaultComponent,
|
|
22
23
|
children
|
|
23
|
-
}) {
|
|
24
|
-
const latestKnownLocale =
|
|
25
|
-
const makeContext =
|
|
24
|
+
}) => {
|
|
25
|
+
const latestKnownLocale = useRef(i18n.locale);
|
|
26
|
+
const makeContext = useCallback(
|
|
26
27
|
() => ({
|
|
27
28
|
i18n,
|
|
28
29
|
defaultComponent,
|
|
@@ -30,8 +31,8 @@ function I18nProvider({
|
|
|
30
31
|
}),
|
|
31
32
|
[i18n, defaultComponent]
|
|
32
33
|
);
|
|
33
|
-
const [context, setContext] =
|
|
34
|
-
|
|
34
|
+
const [context, setContext] = useState(makeContext());
|
|
35
|
+
useEffect(() => {
|
|
35
36
|
const updateContext = () => {
|
|
36
37
|
latestKnownLocale.current = i18n.locale;
|
|
37
38
|
setContext(makeContext());
|
|
@@ -48,8 +49,8 @@ function I18nProvider({
|
|
|
48
49
|
);
|
|
49
50
|
return null;
|
|
50
51
|
}
|
|
51
|
-
return /* @__PURE__ */
|
|
52
|
-
}
|
|
52
|
+
return /* @__PURE__ */ jsx(LinguiContext.Provider, { value: context, children });
|
|
53
|
+
};
|
|
53
54
|
|
|
54
55
|
function Trans(props) {
|
|
55
56
|
let errMessage = void 0;
|
|
@@ -58,7 +59,7 @@ function Trans(props) {
|
|
|
58
59
|
Attempted to render message: ${props.message} id: ${props.id}. Make sure this component is rendered inside a I18nProvider.`;
|
|
59
60
|
}
|
|
60
61
|
const lingui = useLinguiInternal(errMessage);
|
|
61
|
-
return
|
|
62
|
+
return /* @__PURE__ */ jsx(TransNoContext, { ...props, lingui });
|
|
62
63
|
}
|
|
63
64
|
|
|
64
65
|
export { I18nProvider, LinguiContext, Trans, useLingui };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../../../../../node_modules/@lingui/react/dist/index.mjs"],"sourcesContent":["'use client';\nimport
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../../../../node_modules/@lingui/react/dist/index.mjs"],"sourcesContent":["'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport { createContext, useRef, useCallback, useState, useEffect, useContext } from 'react';\nimport { T as TransNoContext } from './shared/react.8970326b.mjs';\n\nconst LinguiContext = createContext(null);\nconst useLinguiInternal = (devErrorMessage) => {\n const context = useContext(LinguiContext);\n if (process.env.NODE_ENV !== \"production\") {\n if (context == null) {\n throw new Error(\n devErrorMessage ?? \"useLingui hook was used without I18nProvider.\"\n );\n }\n }\n return context;\n};\nfunction useLingui() {\n return useLinguiInternal();\n}\nconst I18nProvider = ({\n i18n,\n defaultComponent,\n children\n}) => {\n const latestKnownLocale = useRef(i18n.locale);\n const makeContext = useCallback(\n () => ({\n i18n,\n defaultComponent,\n _: i18n.t.bind(i18n)\n }),\n [i18n, defaultComponent]\n );\n const [context, setContext] = useState(makeContext());\n useEffect(() => {\n const updateContext = () => {\n latestKnownLocale.current = i18n.locale;\n setContext(makeContext());\n };\n const unsubscribe = i18n.on(\"change\", updateContext);\n if (latestKnownLocale.current !== i18n.locale) {\n updateContext();\n }\n return unsubscribe;\n }, [i18n, makeContext]);\n if (!latestKnownLocale.current) {\n process.env.NODE_ENV === \"development\" && console.log(\n \"I18nProvider rendered `null`. A call to `i18n.activate` needs to happen in order for translations to be activated and for the I18nProvider to render.This is not an error but an informational message logged only in development.\"\n );\n return null;\n }\n return /* @__PURE__ */ jsx(LinguiContext.Provider, { value: context, children });\n};\n\nfunction Trans(props) {\n let errMessage = void 0;\n if (process.env.NODE_ENV !== \"production\") {\n errMessage = `Trans component was rendered without I18nProvider.\nAttempted to render message: ${props.message} id: ${props.id}. Make sure this component is rendered inside a I18nProvider.`;\n }\n const lingui = useLinguiInternal(errMessage);\n return /* @__PURE__ */ jsx(TransNoContext, { ...props, lingui });\n}\n\nexport { I18nProvider, LinguiContext, Trans, useLingui };\n"],"names":[],"mappings":";;;;AAKK,MAAC,aAAa,GAAG,aAAa,CAAC,IAAI;AACxC,MAAM,iBAAiB,GAAG,CAAC,eAAe,KAAK;AAC/C,EAAE,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC;AAC3C,EAA6C;AAC7C,IAAI,IAAI,OAAO,IAAI,IAAI,EAAE;AACzB,MAAM,MAAM,IAAI,KAAK;AACrB,QAAQ,eAAe,IAAI;AAC3B,OAAO;AACP,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,OAAO;AAChB,CAAC;AACD,SAAS,SAAS,GAAG;AACrB,EAAE,OAAO,iBAAiB,EAAE;AAC5B;AACK,MAAC,YAAY,GAAG,CAAC;AACtB,EAAE,IAAI;AACN,EAAE,gBAAgB;AAClB,EAAE;AACF,CAAC,KAAK;AACN,EAAE,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC/C,EAAE,MAAM,WAAW,GAAG,WAAW;AACjC,IAAI,OAAO;AACX,MAAM,IAAI;AACV,MAAM,gBAAgB;AACtB,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI;AACzB,KAAK,CAAC;AACN,IAAI,CAAC,IAAI,EAAE,gBAAgB;AAC3B,GAAG;AACH,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;AACvD,EAAE,SAAS,CAAC,MAAM;AAClB,IAAI,MAAM,aAAa,GAAG,MAAM;AAChC,MAAM,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM;AAC7C,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC;AAC/B,IAAI,CAAC;AACL,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC;AACxD,IAAI,IAAI,iBAAiB,CAAC,OAAO,KAAK,IAAI,CAAC,MAAM,EAAE;AACnD,MAAM,aAAa,EAAE;AACrB,IAAI;AACJ,IAAI,OAAO,WAAW;AACtB,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AACzB,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE;AAClC,IAA8C,OAAO,CAAC,GAAG;AACzD,MAAM;AACN,KAAK;AACL,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE,uBAAuB,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAClF;;AAEA,SAAS,KAAK,CAAC,KAAK,EAAE;AACtB,EAAE,IAAI,UAAU,GAAG,MAAM;AACzB,EAA6C;AAC7C,IAAI,UAAU,GAAG,CAAC;AAClB,6BAA6B,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,6DAA6D,CAAC;AAC3H,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,iBAAiB,CAAC,UAAU,CAAC;AAC9C,EAAE,uBAAuB,GAAG,CAAC,cAAc,EAAE,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC;AAClE;;;;","x_google_ignoreList":[0]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { cloneElement } from 'react';
|
|
2
3
|
|
|
3
4
|
const tagRe = /<([a-zA-Z0-9]+)>([\s\S]*?)<\/\1>|<([a-zA-Z0-9]+)\/>/;
|
|
4
5
|
const voidElementTags = {
|
|
@@ -20,10 +21,10 @@ const voidElementTags = {
|
|
|
20
21
|
menuitem: true
|
|
21
22
|
};
|
|
22
23
|
function formatElements(value, elements = {}) {
|
|
23
|
-
const uniqueId = makeCounter(0, "$lingui$");
|
|
24
24
|
const parts = value.split(tagRe);
|
|
25
25
|
if (parts.length === 1)
|
|
26
26
|
return value;
|
|
27
|
+
const uniqueId = makeCounter(0, "$lingui$");
|
|
27
28
|
const tree = [];
|
|
28
29
|
const before = parts.shift();
|
|
29
30
|
if (before)
|
|
@@ -40,13 +41,13 @@ function formatElements(value, elements = {}) {
|
|
|
40
41
|
`${element.type} is a void element tag therefore it must have no children`
|
|
41
42
|
);
|
|
42
43
|
}
|
|
43
|
-
element =
|
|
44
|
+
element = /* @__PURE__ */ jsx(Fragment, {});
|
|
44
45
|
}
|
|
45
46
|
if (Array.isArray(element)) {
|
|
46
|
-
element =
|
|
47
|
+
element = /* @__PURE__ */ jsx(Fragment, { children: element });
|
|
47
48
|
}
|
|
48
49
|
tree.push(
|
|
49
|
-
|
|
50
|
+
cloneElement(
|
|
50
51
|
element,
|
|
51
52
|
{ key: uniqueId() },
|
|
52
53
|
// format children for pair tags
|
|
@@ -77,24 +78,13 @@ function TransNoContext(props) {
|
|
|
77
78
|
formats,
|
|
78
79
|
lingui: { i18n, defaultComponent }
|
|
79
80
|
} = props;
|
|
80
|
-
const values =
|
|
81
|
-
const components = { ...props.components };
|
|
82
|
-
if (values) {
|
|
83
|
-
Object.keys(values).forEach((key) => {
|
|
84
|
-
const index = Object.keys(components).length;
|
|
85
|
-
if (typeof values[key] === "string" || typeof values[key] === "number") {
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
components[index] = /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, values[key]);
|
|
89
|
-
values[key] = `<${index}/>`;
|
|
90
|
-
});
|
|
91
|
-
}
|
|
81
|
+
const { values, components } = getInterpolationValuesAndComponents(props);
|
|
92
82
|
const _translation = i18n && typeof i18n._ === "function" ? i18n._(id, values, { message, formats }) : id;
|
|
93
83
|
const translation = _translation ? formatElements(_translation, components) : null;
|
|
94
84
|
if (render === null || component === null) {
|
|
95
85
|
return translation;
|
|
96
86
|
}
|
|
97
|
-
const FallbackComponent = defaultComponent ||
|
|
87
|
+
const FallbackComponent = defaultComponent || RenderChildren;
|
|
98
88
|
const i18nProps = {
|
|
99
89
|
id,
|
|
100
90
|
message,
|
|
@@ -114,17 +104,36 @@ function TransNoContext(props) {
|
|
|
114
104
|
console.error(
|
|
115
105
|
`Invalid value supplied to prop \`component\`. It must be a React component, provided ${component}`
|
|
116
106
|
);
|
|
117
|
-
return
|
|
107
|
+
return /* @__PURE__ */ jsx(FallbackComponent, { ...i18nProps, children: translation });
|
|
118
108
|
}
|
|
119
109
|
if (typeof render === "function") {
|
|
120
110
|
return render(i18nProps);
|
|
121
111
|
}
|
|
122
112
|
const Component = component || FallbackComponent;
|
|
123
|
-
return
|
|
113
|
+
return /* @__PURE__ */ jsx(Component, { ...i18nProps, children: translation });
|
|
124
114
|
}
|
|
125
|
-
const
|
|
126
|
-
return
|
|
115
|
+
const RenderChildren = ({ children }) => {
|
|
116
|
+
return children;
|
|
117
|
+
};
|
|
118
|
+
const getInterpolationValuesAndComponents = (props) => {
|
|
119
|
+
if (!props.values) {
|
|
120
|
+
return {
|
|
121
|
+
values: void 0,
|
|
122
|
+
components: props.components
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
const values = { ...props.values };
|
|
126
|
+
const components = { ...props.components };
|
|
127
|
+
Object.entries(props.values).forEach(([key, valueForKey]) => {
|
|
128
|
+
if (typeof valueForKey === "string" || typeof valueForKey === "number") {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
const index = Object.keys(components).length;
|
|
132
|
+
components[index] = /* @__PURE__ */ jsx(Fragment, { children: valueForKey });
|
|
133
|
+
values[key] = `<${index}/>`;
|
|
134
|
+
});
|
|
135
|
+
return { values, components };
|
|
127
136
|
};
|
|
128
137
|
|
|
129
138
|
export { TransNoContext as T };
|
|
130
|
-
//# sourceMappingURL=react.
|
|
139
|
+
//# sourceMappingURL=react.8970326b.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.8970326b.mjs","sources":["../../../../../../../../../node_modules/@lingui/react/dist/shared/react.8970326b.mjs"],"sourcesContent":["import { jsx, Fragment } from 'react/jsx-runtime';\nimport { cloneElement } from 'react';\n\nconst tagRe = /<([a-zA-Z0-9]+)>([\\s\\S]*?)<\\/\\1>|<([a-zA-Z0-9]+)\\/>/;\nconst voidElementTags = {\n area: true,\n base: true,\n br: true,\n col: true,\n embed: true,\n hr: true,\n img: true,\n input: true,\n keygen: true,\n link: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true,\n menuitem: true\n};\nfunction formatElements(value, elements = {}) {\n const parts = value.split(tagRe);\n if (parts.length === 1)\n return value;\n const uniqueId = makeCounter(0, \"$lingui$\");\n const tree = [];\n const before = parts.shift();\n if (before)\n tree.push(before);\n for (const [index, children, after] of getElements(parts)) {\n let element = typeof index !== \"undefined\" ? elements[index] : void 0;\n if (!element || voidElementTags[element.type] && children) {\n if (!element) {\n console.error(\n `Can't use element at index '${index}' as it is not declared in the original translation`\n );\n } else {\n console.error(\n `${element.type} is a void element tag therefore it must have no children`\n );\n }\n element = /* @__PURE__ */ jsx(Fragment, {});\n }\n if (Array.isArray(element)) {\n element = /* @__PURE__ */ jsx(Fragment, { children: element });\n }\n tree.push(\n cloneElement(\n element,\n { key: uniqueId() },\n // format children for pair tags\n // unpaired tags might have children if it's a component passed as a variable\n children ? formatElements(children, elements) : element.props.children\n )\n );\n if (after)\n tree.push(after);\n }\n return tree.length === 1 ? tree[0] : tree;\n}\nfunction getElements(parts) {\n if (!parts.length)\n return [];\n const [paired, children, unpaired, after] = parts.slice(0, 4);\n const triple = [paired || unpaired, children || \"\", after];\n return [triple].concat(getElements(parts.slice(4, parts.length)));\n}\nconst makeCounter = (count = 0, prefix = \"\") => () => `${prefix}_${count++}`;\n\nfunction TransNoContext(props) {\n const {\n render,\n component,\n id,\n message,\n formats,\n lingui: { i18n, defaultComponent }\n } = props;\n const { values, components } = getInterpolationValuesAndComponents(props);\n const _translation = i18n && typeof i18n._ === \"function\" ? i18n._(id, values, { message, formats }) : id;\n const translation = _translation ? formatElements(_translation, components) : null;\n if (render === null || component === null) {\n return translation;\n }\n const FallbackComponent = defaultComponent || RenderChildren;\n const i18nProps = {\n id,\n message,\n translation,\n children: translation\n // for type-compatibility with `component` prop\n };\n if (render && component) {\n console.error(\n \"You can't use both `component` and `render` prop at the same time. `component` is ignored.\"\n );\n } else if (render && typeof render !== \"function\") {\n console.error(\n `Invalid value supplied to prop \\`render\\`. It must be a function, provided ${render}`\n );\n } else if (component && typeof component !== \"function\") {\n console.error(\n `Invalid value supplied to prop \\`component\\`. It must be a React component, provided ${component}`\n );\n return /* @__PURE__ */ jsx(FallbackComponent, { ...i18nProps, children: translation });\n }\n if (typeof render === \"function\") {\n return render(i18nProps);\n }\n const Component = component || FallbackComponent;\n return /* @__PURE__ */ jsx(Component, { ...i18nProps, children: translation });\n}\nconst RenderChildren = ({ children }) => {\n return children;\n};\nconst getInterpolationValuesAndComponents = (props) => {\n if (!props.values) {\n return {\n values: void 0,\n components: props.components\n };\n }\n const values = { ...props.values };\n const components = { ...props.components };\n Object.entries(props.values).forEach(([key, valueForKey]) => {\n if (typeof valueForKey === \"string\" || typeof valueForKey === \"number\") {\n return;\n }\n const index = Object.keys(components).length;\n components[index] = /* @__PURE__ */ jsx(Fragment, { children: valueForKey });\n values[key] = `<${index}/>`;\n });\n return { values, components };\n};\n\nexport { TransNoContext as T };\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useRef, useMemo, useCallback, useDebugValue } from 'react';
|
|
2
|
-
import { s as shimExports } from '../../../../_virtual/
|
|
2
|
+
import { s as shimExports } from '../../../../_virtual/index.mjs';
|
|
3
3
|
import { withArgs, serialize, SWRGlobalState, createCacheHelper, isUndefined, getTimestamp, UNDEFINED, isFunction, revalidateEvents as constants, internalMutate, useIsomorphicLayoutEffect, subscribeCallback, IS_SERVER, rAF, IS_REACT_LEGACY, mergeObjects } from '../../_internal/dist/index.mjs';
|
|
4
4
|
export { mutate, useSWRConfig } from '../../_internal/dist/index.mjs';
|
|
5
5
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useRef, useCallback } from 'react';
|
|
2
2
|
import useSWR from '../../core/dist/index.mjs';
|
|
3
3
|
import { withMiddleware, createCacheHelper, isUndefined, useIsomorphicLayoutEffect, serialize, UNDEFINED, isFunction } from '../../_internal/dist/index.mjs';
|
|
4
|
-
import { s as shimExports } from '../../../../_virtual/
|
|
4
|
+
import { s as shimExports } from '../../../../_virtual/index.mjs';
|
|
5
5
|
|
|
6
6
|
// We have to several type castings here because `useSWRInfinite` is a special
|
|
7
7
|
const INFINITE_PREFIX = '$inf$';
|
|
@@ -7,45 +7,6 @@ class DFPProtectedAuthProvider {
|
|
|
7
7
|
state;
|
|
8
8
|
constructor(publicToken, dfpBackendURL, dfpCdnDomain, bootstrapPromise, executeRecaptcha = ()=>Promise.resolve(undefined)){
|
|
9
9
|
this.bootstrapPromise = bootstrapPromise;
|
|
10
|
-
this.isEnabled = async ()=>{
|
|
11
|
-
return this.state.then((state)=>state.enabled);
|
|
12
|
-
};
|
|
13
|
-
this.getTelemetryID = async ()=>{
|
|
14
|
-
const { publicToken, enabled, dfpBackendURL } = await this.state;
|
|
15
|
-
if (!enabled) {
|
|
16
|
-
return undefined;
|
|
17
|
-
}
|
|
18
|
-
return await window.GetTelemetryID(publicToken, `${dfpBackendURL}/submit`);
|
|
19
|
-
};
|
|
20
|
-
this.getDFPTelemetryIDAndCaptcha = async ()=>{
|
|
21
|
-
const { enabled, executeRecaptcha, mode } = await this.state;
|
|
22
|
-
let dfp_telemetry_id = undefined;
|
|
23
|
-
let captcha_token = undefined;
|
|
24
|
-
if (!enabled) {
|
|
25
|
-
captcha_token = await executeRecaptcha();
|
|
26
|
-
}
|
|
27
|
-
if (mode === 'DECISIONING') {
|
|
28
|
-
dfp_telemetry_id = await this.getTelemetryID();
|
|
29
|
-
} else if (mode === 'OBSERVATION') {
|
|
30
|
-
dfp_telemetry_id = await this.getTelemetryID();
|
|
31
|
-
captcha_token = await executeRecaptcha();
|
|
32
|
-
}
|
|
33
|
-
return {
|
|
34
|
-
dfp_telemetry_id,
|
|
35
|
-
captcha_token
|
|
36
|
-
};
|
|
37
|
-
};
|
|
38
|
-
this.retryWithCaptchaAndDFP = async (e, req)=>{
|
|
39
|
-
const { enabled, executeRecaptcha } = await this.state;
|
|
40
|
-
if (e.type === RetriableErrorType.RequiredCaptcha && enabled) {
|
|
41
|
-
if (req.body) {
|
|
42
|
-
req.body.dfp_telemetry_id = await this.getTelemetryID();
|
|
43
|
-
req.body.captcha_token = await executeRecaptcha();
|
|
44
|
-
}
|
|
45
|
-
return req;
|
|
46
|
-
}
|
|
47
|
-
throw new Error('Unable to query captcha and/or dfp telemetry ID');
|
|
48
|
-
};
|
|
49
10
|
this.state = bootstrapPromise.then(async (bootstrapData)=>{
|
|
50
11
|
if (!bootstrapData.runDFPProtectedAuth) {
|
|
51
12
|
return {
|
|
@@ -67,10 +28,45 @@ class DFPProtectedAuthProvider {
|
|
|
67
28
|
};
|
|
68
29
|
});
|
|
69
30
|
}
|
|
70
|
-
isEnabled
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
31
|
+
isEnabled = async ()=>{
|
|
32
|
+
return this.state.then((state)=>state.enabled);
|
|
33
|
+
};
|
|
34
|
+
getTelemetryID = async ()=>{
|
|
35
|
+
const { publicToken, enabled, dfpBackendURL } = await this.state;
|
|
36
|
+
if (!enabled) {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
return await window.GetTelemetryID(publicToken, `${dfpBackendURL}/submit`);
|
|
40
|
+
};
|
|
41
|
+
getDFPTelemetryIDAndCaptcha = async ()=>{
|
|
42
|
+
const { enabled, executeRecaptcha, mode } = await this.state;
|
|
43
|
+
let dfp_telemetry_id = undefined;
|
|
44
|
+
let captcha_token = undefined;
|
|
45
|
+
if (!enabled) {
|
|
46
|
+
captcha_token = await executeRecaptcha();
|
|
47
|
+
}
|
|
48
|
+
if (mode === 'DECISIONING') {
|
|
49
|
+
dfp_telemetry_id = await this.getTelemetryID();
|
|
50
|
+
} else if (mode === 'OBSERVATION') {
|
|
51
|
+
dfp_telemetry_id = await this.getTelemetryID();
|
|
52
|
+
captcha_token = await executeRecaptcha();
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
dfp_telemetry_id,
|
|
56
|
+
captcha_token
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
retryWithCaptchaAndDFP = async (e, req)=>{
|
|
60
|
+
const { enabled, executeRecaptcha } = await this.state;
|
|
61
|
+
if (e.type === RetriableErrorType.RequiredCaptcha && enabled) {
|
|
62
|
+
if (req.body) {
|
|
63
|
+
req.body.dfp_telemetry_id = await this.getTelemetryID();
|
|
64
|
+
req.body.captcha_token = await executeRecaptcha();
|
|
65
|
+
}
|
|
66
|
+
return req;
|
|
67
|
+
}
|
|
68
|
+
throw new Error('Unable to query captcha and/or dfp telemetry ID');
|
|
69
|
+
};
|
|
74
70
|
}
|
|
75
71
|
const DisabledDFPProtectedAuthProvider = ()=>({
|
|
76
72
|
isEnabled: async ()=>false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DFPProtectedAuthProvider.mjs","sources":["../../../../../../core/src/DFPProtectedAuthProvider.ts"],"sourcesContent":["import { RetriableError, RetriableErrorType, SDKBaseRequestInfo } from './NetworkClient';\nimport { BootstrapData } from './types';\nimport { loadESModule } from './utils';\n\ndeclare global {\n // The telemetry.js script will set a global function called GetTelemetryID on the window\n // object. This interface is allows us to call that function while pleasing the TypeScript\n // compiler.\n interface Window {\n GetTelemetryID: (publicToken: string, submitURL: string) => Promise<string>;\n }\n}\n\nconst loadTelemetryJS = (domain: string) => loadESModule(`${domain}/telemetry.js`, () => window.GetTelemetryID);\n\nexport type DFPProtectedAuthMode = 'OBSERVATION' | 'DECISIONING';\n\nexport type DFPProtectedAuthState = {\n publicToken: string;\n dfpBackendURL: string;\n mode?: DFPProtectedAuthMode;\n enabled: boolean;\n loaded: boolean;\n executeRecaptcha: () => Promise<string | undefined>;\n};\n\nexport class DFPProtectedAuthProvider {\n private state: Promise<DFPProtectedAuthState>;\n constructor(\n publicToken: string,\n dfpBackendURL: string,\n dfpCdnDomain: string,\n private bootstrapPromise: Promise<BootstrapData>,\n executeRecaptcha: () => Promise<string | undefined> = () => Promise.resolve(undefined),\n ) {\n this.state = bootstrapPromise.then(async (bootstrapData) => {\n if (!bootstrapData.runDFPProtectedAuth) {\n return { publicToken, dfpBackendURL, enabled: false, loaded: false, executeRecaptcha };\n }\n await loadTelemetryJS(dfpCdnDomain);\n return {\n publicToken,\n dfpBackendURL,\n enabled: true,\n mode: bootstrapData.dfpProtectedAuthMode || 'OBSERVATION',\n loaded: true,\n executeRecaptcha,\n };\n });\n }\n\n isEnabled = async (): Promise<boolean> => {\n return this.state.then((state) => state.enabled);\n };\n\n getTelemetryID = async (): Promise<string | undefined> => {\n const { publicToken, enabled, dfpBackendURL } = await this.state;\n if (!enabled) {\n return undefined;\n }\n return await window.GetTelemetryID(publicToken, `${dfpBackendURL}/submit`);\n };\n\n getDFPTelemetryIDAndCaptcha = async (): Promise<{ dfp_telemetry_id?: string; captcha_token?: string }> => {\n const { enabled, executeRecaptcha, mode } = await this.state;\n\n let dfp_telemetry_id: string | undefined = undefined;\n let captcha_token: string | undefined = undefined;\n if (!enabled) {\n captcha_token = await executeRecaptcha();\n }\n if (mode === 'DECISIONING') {\n dfp_telemetry_id = await this.getTelemetryID();\n } else if (mode === 'OBSERVATION') {\n dfp_telemetry_id = await this.getTelemetryID();\n captcha_token = await executeRecaptcha();\n }\n return { dfp_telemetry_id, captcha_token };\n };\n\n retryWithCaptchaAndDFP = async (e: RetriableError, req: SDKBaseRequestInfo): Promise<SDKBaseRequestInfo> => {\n const { enabled, executeRecaptcha } = await this.state;\n if (e.type === RetriableErrorType.RequiredCaptcha && enabled) {\n if (req.body) {\n req.body.dfp_telemetry_id = await this.getTelemetryID();\n req.body.captcha_token = await executeRecaptcha();\n }\n return req;\n }\n throw new Error('Unable to query captcha and/or dfp telemetry ID');\n };\n}\n\nexport const DisabledDFPProtectedAuthProvider = () => ({\n isEnabled: async () => false,\n getTelemetryID: async () => undefined,\n getDFPTelemetryIDAndCaptcha: async () => ({\n dfp_telemetry_id: undefined,\n captcha_token: undefined,\n }),\n retryWithCaptchaAndDFP: async () => {\n throw new Error('DFP protected auth is disabled');\n },\n});\n\nexport interface IDFPProtectedAuthProvider {\n isEnabled(): Promise<boolean>;\n getTelemetryID(): Promise<string | undefined>;\n retryWithCaptchaAndDFP(e: RetriableError, req: SDKBaseRequestInfo): Promise<SDKBaseRequestInfo>;\n getDFPTelemetryIDAndCaptcha(): Promise<{ dfp_telemetry_id?: string; captcha_token?: string }>;\n}\n"],"names":["loadTelemetryJS","domain","loadESModule","window","GetTelemetryID","DFPProtectedAuthProvider","state","
|
|
1
|
+
{"version":3,"file":"DFPProtectedAuthProvider.mjs","sources":["../../../../../../core/src/DFPProtectedAuthProvider.ts"],"sourcesContent":["import { RetriableError, RetriableErrorType, SDKBaseRequestInfo } from './NetworkClient';\nimport { BootstrapData } from './types';\nimport { loadESModule } from './utils';\n\ndeclare global {\n // The telemetry.js script will set a global function called GetTelemetryID on the window\n // object. This interface is allows us to call that function while pleasing the TypeScript\n // compiler.\n interface Window {\n GetTelemetryID: (publicToken: string, submitURL: string) => Promise<string>;\n }\n}\n\nconst loadTelemetryJS = (domain: string) => loadESModule(`${domain}/telemetry.js`, () => window.GetTelemetryID);\n\nexport type DFPProtectedAuthMode = 'OBSERVATION' | 'DECISIONING';\n\nexport type DFPProtectedAuthState = {\n publicToken: string;\n dfpBackendURL: string;\n mode?: DFPProtectedAuthMode;\n enabled: boolean;\n loaded: boolean;\n executeRecaptcha: () => Promise<string | undefined>;\n};\n\nexport class DFPProtectedAuthProvider {\n private state: Promise<DFPProtectedAuthState>;\n constructor(\n publicToken: string,\n dfpBackendURL: string,\n dfpCdnDomain: string,\n private bootstrapPromise: Promise<BootstrapData>,\n executeRecaptcha: () => Promise<string | undefined> = () => Promise.resolve(undefined),\n ) {\n this.state = bootstrapPromise.then(async (bootstrapData) => {\n if (!bootstrapData.runDFPProtectedAuth) {\n return { publicToken, dfpBackendURL, enabled: false, loaded: false, executeRecaptcha };\n }\n await loadTelemetryJS(dfpCdnDomain);\n return {\n publicToken,\n dfpBackendURL,\n enabled: true,\n mode: bootstrapData.dfpProtectedAuthMode || 'OBSERVATION',\n loaded: true,\n executeRecaptcha,\n };\n });\n }\n\n isEnabled = async (): Promise<boolean> => {\n return this.state.then((state) => state.enabled);\n };\n\n getTelemetryID = async (): Promise<string | undefined> => {\n const { publicToken, enabled, dfpBackendURL } = await this.state;\n if (!enabled) {\n return undefined;\n }\n return await window.GetTelemetryID(publicToken, `${dfpBackendURL}/submit`);\n };\n\n getDFPTelemetryIDAndCaptcha = async (): Promise<{ dfp_telemetry_id?: string; captcha_token?: string }> => {\n const { enabled, executeRecaptcha, mode } = await this.state;\n\n let dfp_telemetry_id: string | undefined = undefined;\n let captcha_token: string | undefined = undefined;\n if (!enabled) {\n captcha_token = await executeRecaptcha();\n }\n if (mode === 'DECISIONING') {\n dfp_telemetry_id = await this.getTelemetryID();\n } else if (mode === 'OBSERVATION') {\n dfp_telemetry_id = await this.getTelemetryID();\n captcha_token = await executeRecaptcha();\n }\n return { dfp_telemetry_id, captcha_token };\n };\n\n retryWithCaptchaAndDFP = async (e: RetriableError, req: SDKBaseRequestInfo): Promise<SDKBaseRequestInfo> => {\n const { enabled, executeRecaptcha } = await this.state;\n if (e.type === RetriableErrorType.RequiredCaptcha && enabled) {\n if (req.body) {\n req.body.dfp_telemetry_id = await this.getTelemetryID();\n req.body.captcha_token = await executeRecaptcha();\n }\n return req;\n }\n throw new Error('Unable to query captcha and/or dfp telemetry ID');\n };\n}\n\nexport const DisabledDFPProtectedAuthProvider = () => ({\n isEnabled: async () => false,\n getTelemetryID: async () => undefined,\n getDFPTelemetryIDAndCaptcha: async () => ({\n dfp_telemetry_id: undefined,\n captcha_token: undefined,\n }),\n retryWithCaptchaAndDFP: async () => {\n throw new Error('DFP protected auth is disabled');\n },\n});\n\nexport interface IDFPProtectedAuthProvider {\n isEnabled(): Promise<boolean>;\n getTelemetryID(): Promise<string | undefined>;\n retryWithCaptchaAndDFP(e: RetriableError, req: SDKBaseRequestInfo): Promise<SDKBaseRequestInfo>;\n getDFPTelemetryIDAndCaptcha(): Promise<{ dfp_telemetry_id?: string; captcha_token?: string }>;\n}\n"],"names":["loadTelemetryJS","domain","loadESModule","window","GetTelemetryID","DFPProtectedAuthProvider","state","publicToken","dfpBackendURL","dfpCdnDomain","bootstrapPromise","executeRecaptcha","Promise","resolve","undefined","then","bootstrapData","runDFPProtectedAuth","enabled","loaded","mode","dfpProtectedAuthMode","isEnabled","getTelemetryID","getDFPTelemetryIDAndCaptcha","dfp_telemetry_id","captcha_token","retryWithCaptchaAndDFP","e","req","type","RetriableErrorType","RequiredCaptcha","body","Error","DisabledDFPProtectedAuthProvider"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventLogger.mjs","sources":["../../../../../../core/src/EventLogger.ts"],"sourcesContent":["import { SDKTelemetry } from './NetworkClient';\n\nexport const DEFAULT_MAX_BATCH_SIZE = 15;\nexport const DEFAULT_INTERVAL_DURATION_MS = 800;\n\ntype EventLoggerArgs = {\n maxBatchSize: number;\n intervalDurationMs: number;\n logEventURL: string;\n};\n\nexport class EventLogger {\n private maxBatchSize: number;\n private logEventURL: string;\n private batch: Record<string, unknown>[];\n\n constructor(args: EventLoggerArgs) {\n this.maxBatchSize = args.maxBatchSize;\n this.logEventURL = args.logEventURL;\n // TODO: If we create more than one of these, we'll want a mechanism to clean up the intervals\n setInterval(this.flush.bind(this), args.intervalDurationMs);\n this.batch = [];\n }\n\n logEvent(telemetry: SDKTelemetry, event: Record<string, unknown>) {\n this.batch.push({ telemetry, event });\n if (this.batch.length >= this.maxBatchSize) {\n this.flush();\n }\n }\n\n async flush() {\n if (!this.batch.length) {\n return;\n }\n const batchToSubmit = this.batch;\n this.batch = [];\n try {\n await fetch(this.logEventURL, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(batchToSubmit),\n });\n } catch {\n // Silently ignore fetch errors\n }\n }\n}\n"],"names":["DEFAULT_MAX_BATCH_SIZE","DEFAULT_INTERVAL_DURATION_MS","EventLogger","maxBatchSize","logEventURL","batch","
|
|
1
|
+
{"version":3,"file":"EventLogger.mjs","sources":["../../../../../../core/src/EventLogger.ts"],"sourcesContent":["import { SDKTelemetry } from './NetworkClient';\n\nexport const DEFAULT_MAX_BATCH_SIZE = 15;\nexport const DEFAULT_INTERVAL_DURATION_MS = 800;\n\ntype EventLoggerArgs = {\n maxBatchSize: number;\n intervalDurationMs: number;\n logEventURL: string;\n};\n\nexport class EventLogger {\n private maxBatchSize: number;\n private logEventURL: string;\n private batch: Record<string, unknown>[];\n\n constructor(args: EventLoggerArgs) {\n this.maxBatchSize = args.maxBatchSize;\n this.logEventURL = args.logEventURL;\n // TODO: If we create more than one of these, we'll want a mechanism to clean up the intervals\n setInterval(this.flush.bind(this), args.intervalDurationMs);\n this.batch = [];\n }\n\n logEvent(telemetry: SDKTelemetry, event: Record<string, unknown>) {\n this.batch.push({ telemetry, event });\n if (this.batch.length >= this.maxBatchSize) {\n this.flush();\n }\n }\n\n async flush() {\n if (!this.batch.length) {\n return;\n }\n const batchToSubmit = this.batch;\n this.batch = [];\n try {\n await fetch(this.logEventURL, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(batchToSubmit),\n });\n } catch {\n // Silently ignore fetch errors\n }\n }\n}\n"],"names":["DEFAULT_MAX_BATCH_SIZE","DEFAULT_INTERVAL_DURATION_MS","EventLogger","maxBatchSize","logEventURL","batch","args","setInterval","flush","bind","intervalDurationMs","logEvent","telemetry","event","push","length","batchToSubmit","fetch","method","headers","body","JSON","stringify"],"mappings":"AAEO,MAAMA,yBAAyB;AAC/B,MAAMC,+BAA+B;AAQrC,MAAMC,WAAAA,CAAAA;IACHC,YAAAA;IACAC,WAAAA;IACAC,KAAAA;AAER,IAAA,WAAA,CAAYC,IAAqB,CAAE;AACjC,QAAA,IAAI,CAACH,YAAY,GAAGG,IAAAA,CAAKH,YAAY;AACrC,QAAA,IAAI,CAACC,WAAW,GAAGE,IAAAA,CAAKF,WAAW;;QAEnCG,WAAAA,CAAY,IAAI,CAACC,KAAK,CAACC,IAAI,CAAC,IAAI,CAAA,EAAGH,IAAAA,CAAKI,kBAAkB,CAAA;QAC1D,IAAI,CAACL,KAAK,GAAG,EAAE;AACjB,IAAA;IAEAM,QAAAA,CAASC,SAAuB,EAAEC,KAA8B,EAAE;AAChE,QAAA,IAAI,CAACR,KAAK,CAACS,IAAI,CAAC;AAAEF,YAAAA,SAAAA;AAAWC,YAAAA;AAAM,SAAA,CAAA;QACnC,IAAI,IAAI,CAACR,KAAK,CAACU,MAAM,IAAI,IAAI,CAACZ,YAAY,EAAE;AAC1C,YAAA,IAAI,CAACK,KAAK,EAAA;AACZ,QAAA;AACF,IAAA;AAEA,IAAA,MAAMA,KAAAA,GAAQ;AACZ,QAAA,IAAI,CAAC,IAAI,CAACH,KAAK,CAACU,MAAM,EAAE;AACtB,YAAA;AACF,QAAA;QACA,MAAMC,aAAAA,GAAgB,IAAI,CAACX,KAAK;QAChC,IAAI,CAACA,KAAK,GAAG,EAAE;QACf,IAAI;AACF,YAAA,MAAMY,KAAAA,CAAM,IAAI,CAACb,WAAW,EAAE;gBAC5Bc,MAAAA,EAAQ,MAAA;gBACRC,OAAAA,EAAS;oBACP,cAAA,EAAgB;AAClB,iBAAA;gBACAC,IAAAA,EAAMC,IAAAA,CAAKC,SAAS,CAACN,aAAAA;AACvB,aAAA,CAAA;AACF,QAAA,CAAA,CAAE,OAAM;;AAER,QAAA;AACF,IAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeadlessCryptoWalletClient.mjs","sources":["../../../../../../../core/src/HeadlessClients/HeadlessCryptoWalletClient.ts"],"sourcesContent":["import { IConsumerSubscriptionService, IDFPProtectedAuthProvider, INetworkClient } from '..';\nimport {\n CryptoWalletAuthenticateOptions,\n CryptoWalletAuthenticateResponse,\n CryptoWalletAuthenticateStartOptions,\n CryptoWalletAuthenticateStartResponse,\n IHeadlessCryptoWalletClient,\n StytchProjectConfigurationInput,\n} from '../public';\nimport { omitUser, WithUser } from '../utils';\nimport { validateInDev } from '../utils/dev';\n\ntype DynamicConfig = Promise<{\n siweRequiredForCryptoWallets: boolean;\n}>;\n\nconst DefaultDynamicConfig = Promise.resolve({\n siweRequiredForCryptoWallets: false,\n});\n\nexport class HeadlessCryptoWalletClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessCryptoWalletClient<TProjectConfiguration>\n{\n authenticate: (\n options: CryptoWalletAuthenticateOptions,\n ) => Promise<CryptoWalletAuthenticateResponse<TProjectConfiguration>>;\n\n constructor(\n private _networkClient: INetworkClient,\n private _apiNetworkClient: INetworkClient,\n private _subscriptionService: IConsumerSubscriptionService<TProjectConfiguration>,\n private executeRecaptcha: () => Promise<string | undefined> = () => Promise.resolve(undefined),\n private dfpProtectedAuth: IDFPProtectedAuthProvider,\n private _config: DynamicConfig = DefaultDynamicConfig,\n ) {\n this.authenticate = this._subscriptionService.withUpdateSession(\n async (\n options: CryptoWalletAuthenticateOptions,\n ): Promise<CryptoWalletAuthenticateResponse<TProjectConfiguration>> => {\n validateInDev('stytch.cryptoWallets.authenticate', options, {\n signature: 'string',\n crypto_wallet_address: 'string',\n crypto_wallet_type: 'string',\n session_duration_minutes: 'number',\n });\n\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n\n const resp = await this._apiNetworkClient.retriableFetchSDK<\n WithUser<CryptoWalletAuthenticateResponse<TProjectConfiguration>>\n >({\n url: '/crypto_wallets/authenticate',\n method: 'POST',\n body: {\n session_duration_minutes: options.session_duration_minutes,\n crypto_wallet_address: options.crypto_wallet_address,\n crypto_wallet_type: options.crypto_wallet_type,\n signature: options.signature,\n captcha_token,\n dfp_telemetry_id,\n },\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n\n return omitUser(resp);\n },\n );\n }\n\n async authenticateStart(\n options: CryptoWalletAuthenticateStartOptions,\n ): Promise<CryptoWalletAuthenticateStartResponse> {\n validateInDev('stytch.cryptoWallets.authenticateStart', options, {\n crypto_wallet_address: 'string',\n crypto_wallet_type: 'string',\n });\n if (options.siwe_params) {\n validateInDev('stytch.cryptoWallets.authenticateStart', options.siwe_params, {\n uri: 'optionalString',\n chain_id: 'optionalString',\n issued_at: 'optionalString',\n statement: 'optionalString',\n not_before: 'optionalString',\n message_request_id: 'optionalString',\n resources: 'optionalStringArray',\n });\n }\n\n const isLoggedIn = !!this._subscriptionService.getSession();\n const captcha_token = await this.executeRecaptcha();\n const { siweRequiredForCryptoWallets } = await this._config;\n\n const body: CryptoWalletAuthenticateStartOptions = {\n crypto_wallet_address: options.crypto_wallet_address,\n crypto_wallet_type: options.crypto_wallet_type,\n };\n if (siweRequiredForCryptoWallets && options.crypto_wallet_type == 'ethereum') {\n body.siwe_params = { ...options.siwe_params, uri: options.siwe_params?.uri || window.location.origin };\n }\n\n const endpoint = isLoggedIn\n ? '/crypto_wallets/authenticate/start/secondary'\n : '/crypto_wallets/authenticate/start/primary';\n\n const requestBody = {\n ...body,\n captcha_token,\n };\n return this._apiNetworkClient.fetchSDK<CryptoWalletAuthenticateStartResponse>({\n url: endpoint,\n method: 'POST',\n body: requestBody,\n });\n }\n}\n"],"names":["DefaultDynamicConfig","Promise","resolve","siweRequiredForCryptoWallets","HeadlessCryptoWalletClient","authenticate","
|
|
1
|
+
{"version":3,"file":"HeadlessCryptoWalletClient.mjs","sources":["../../../../../../../core/src/HeadlessClients/HeadlessCryptoWalletClient.ts"],"sourcesContent":["import { IConsumerSubscriptionService, IDFPProtectedAuthProvider, INetworkClient } from '..';\nimport {\n CryptoWalletAuthenticateOptions,\n CryptoWalletAuthenticateResponse,\n CryptoWalletAuthenticateStartOptions,\n CryptoWalletAuthenticateStartResponse,\n IHeadlessCryptoWalletClient,\n StytchProjectConfigurationInput,\n} from '../public';\nimport { omitUser, WithUser } from '../utils';\nimport { validateInDev } from '../utils/dev';\n\ntype DynamicConfig = Promise<{\n siweRequiredForCryptoWallets: boolean;\n}>;\n\nconst DefaultDynamicConfig = Promise.resolve({\n siweRequiredForCryptoWallets: false,\n});\n\nexport class HeadlessCryptoWalletClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessCryptoWalletClient<TProjectConfiguration>\n{\n authenticate: (\n options: CryptoWalletAuthenticateOptions,\n ) => Promise<CryptoWalletAuthenticateResponse<TProjectConfiguration>>;\n\n constructor(\n private _networkClient: INetworkClient,\n private _apiNetworkClient: INetworkClient,\n private _subscriptionService: IConsumerSubscriptionService<TProjectConfiguration>,\n private executeRecaptcha: () => Promise<string | undefined> = () => Promise.resolve(undefined),\n private dfpProtectedAuth: IDFPProtectedAuthProvider,\n private _config: DynamicConfig = DefaultDynamicConfig,\n ) {\n this.authenticate = this._subscriptionService.withUpdateSession(\n async (\n options: CryptoWalletAuthenticateOptions,\n ): Promise<CryptoWalletAuthenticateResponse<TProjectConfiguration>> => {\n validateInDev('stytch.cryptoWallets.authenticate', options, {\n signature: 'string',\n crypto_wallet_address: 'string',\n crypto_wallet_type: 'string',\n session_duration_minutes: 'number',\n });\n\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n\n const resp = await this._apiNetworkClient.retriableFetchSDK<\n WithUser<CryptoWalletAuthenticateResponse<TProjectConfiguration>>\n >({\n url: '/crypto_wallets/authenticate',\n method: 'POST',\n body: {\n session_duration_minutes: options.session_duration_minutes,\n crypto_wallet_address: options.crypto_wallet_address,\n crypto_wallet_type: options.crypto_wallet_type,\n signature: options.signature,\n captcha_token,\n dfp_telemetry_id,\n },\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n\n return omitUser(resp);\n },\n );\n }\n\n async authenticateStart(\n options: CryptoWalletAuthenticateStartOptions,\n ): Promise<CryptoWalletAuthenticateStartResponse> {\n validateInDev('stytch.cryptoWallets.authenticateStart', options, {\n crypto_wallet_address: 'string',\n crypto_wallet_type: 'string',\n });\n if (options.siwe_params) {\n validateInDev('stytch.cryptoWallets.authenticateStart', options.siwe_params, {\n uri: 'optionalString',\n chain_id: 'optionalString',\n issued_at: 'optionalString',\n statement: 'optionalString',\n not_before: 'optionalString',\n message_request_id: 'optionalString',\n resources: 'optionalStringArray',\n });\n }\n\n const isLoggedIn = !!this._subscriptionService.getSession();\n const captcha_token = await this.executeRecaptcha();\n const { siweRequiredForCryptoWallets } = await this._config;\n\n const body: CryptoWalletAuthenticateStartOptions = {\n crypto_wallet_address: options.crypto_wallet_address,\n crypto_wallet_type: options.crypto_wallet_type,\n };\n if (siweRequiredForCryptoWallets && options.crypto_wallet_type == 'ethereum') {\n body.siwe_params = { ...options.siwe_params, uri: options.siwe_params?.uri || window.location.origin };\n }\n\n const endpoint = isLoggedIn\n ? '/crypto_wallets/authenticate/start/secondary'\n : '/crypto_wallets/authenticate/start/primary';\n\n const requestBody = {\n ...body,\n captcha_token,\n };\n return this._apiNetworkClient.fetchSDK<CryptoWalletAuthenticateStartResponse>({\n url: endpoint,\n method: 'POST',\n body: requestBody,\n });\n }\n}\n"],"names":["DefaultDynamicConfig","Promise","resolve","siweRequiredForCryptoWallets","HeadlessCryptoWalletClient","authenticate","_networkClient","_apiNetworkClient","_subscriptionService","executeRecaptcha","undefined","dfpProtectedAuth","_config","withUpdateSession","options","validateInDev","signature","crypto_wallet_address","crypto_wallet_type","session_duration_minutes","dfp_telemetry_id","captcha_token","getDFPTelemetryIDAndCaptcha","resp","retriableFetchSDK","url","method","body","retryCallback","retryWithCaptchaAndDFP","omitUser","authenticateStart","siwe_params","uri","chain_id","issued_at","statement","not_before","message_request_id","resources","isLoggedIn","getSession","window","location","origin","endpoint","requestBody","fetchSDK"],"mappings":"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"}
|
|
@@ -2,25 +2,22 @@ class HeadlessIDPClient {
|
|
|
2
2
|
_networkClient;
|
|
3
3
|
constructor(_networkClient){
|
|
4
4
|
this._networkClient = _networkClient;
|
|
5
|
-
this.oauthAuthorizeStart = async (data)=>this._networkClient.fetchSDK({
|
|
6
|
-
url: '/idp/oauth/authorize/start',
|
|
7
|
-
method: 'POST',
|
|
8
|
-
body: data
|
|
9
|
-
});
|
|
10
|
-
this.oauthAuthorizeSubmit = async (data)=>this._networkClient.fetchSDK({
|
|
11
|
-
url: '/idp/oauth/authorize/submit',
|
|
12
|
-
method: 'POST',
|
|
13
|
-
body: data
|
|
14
|
-
});
|
|
15
|
-
this.oauthLogoutStart = async (data)=>this._networkClient.fetchSDK({
|
|
16
|
-
url: `/oauth/logout/start`,
|
|
17
|
-
method: 'POST',
|
|
18
|
-
body: data
|
|
19
|
-
});
|
|
20
5
|
}
|
|
21
|
-
oauthAuthorizeStart
|
|
22
|
-
|
|
23
|
-
|
|
6
|
+
oauthAuthorizeStart = async (data)=>this._networkClient.fetchSDK({
|
|
7
|
+
url: '/idp/oauth/authorize/start',
|
|
8
|
+
method: 'POST',
|
|
9
|
+
body: data
|
|
10
|
+
});
|
|
11
|
+
oauthAuthorizeSubmit = async (data)=>this._networkClient.fetchSDK({
|
|
12
|
+
url: '/idp/oauth/authorize/submit',
|
|
13
|
+
method: 'POST',
|
|
14
|
+
body: data
|
|
15
|
+
});
|
|
16
|
+
oauthLogoutStart = async (data)=>this._networkClient.fetchSDK({
|
|
17
|
+
url: `/oauth/logout/start`,
|
|
18
|
+
method: 'POST',
|
|
19
|
+
body: data
|
|
20
|
+
});
|
|
24
21
|
}
|
|
25
22
|
|
|
26
23
|
export { HeadlessIDPClient };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeadlessIDPClient.mjs","sources":["../../../../../../../core/src/HeadlessClients/HeadlessIDPClient.ts"],"sourcesContent":["import { INetworkClient } from '../NetworkClient';\nimport {\n IHeadlessIDPClient,\n OAuthAuthorizeStartOptions,\n OAuthAuthorizeStartResponse,\n OAuthAuthorizeSubmitOptions,\n OAuthAuthorizeSubmitResponse,\n OAuthLogoutStartOptions,\n OAuthLogoutStartResponse,\n} from '../public/idp';\n\nexport class HeadlessIDPClient implements IHeadlessIDPClient {\n constructor(private _networkClient: INetworkClient) {}\n\n oauthAuthorizeStart = async (data: OAuthAuthorizeStartOptions): Promise<OAuthAuthorizeStartResponse> =>\n this._networkClient.fetchSDK<OAuthAuthorizeStartResponse>({\n url: '/idp/oauth/authorize/start',\n method: 'POST',\n body: data,\n });\n\n oauthAuthorizeSubmit = async (data: OAuthAuthorizeSubmitOptions): Promise<OAuthAuthorizeSubmitResponse> =>\n this._networkClient.fetchSDK<OAuthAuthorizeSubmitResponse>({\n url: '/idp/oauth/authorize/submit',\n method: 'POST',\n body: data,\n });\n\n oauthLogoutStart = async (data: OAuthLogoutStartOptions): Promise<OAuthLogoutStartResponse> =>\n this._networkClient.fetchSDK<OAuthLogoutStartResponse>({\n url: `/oauth/logout/start`,\n method: 'POST',\n body: data,\n });\n}\n"],"names":["HeadlessIDPClient","
|
|
1
|
+
{"version":3,"file":"HeadlessIDPClient.mjs","sources":["../../../../../../../core/src/HeadlessClients/HeadlessIDPClient.ts"],"sourcesContent":["import { INetworkClient } from '../NetworkClient';\nimport {\n IHeadlessIDPClient,\n OAuthAuthorizeStartOptions,\n OAuthAuthorizeStartResponse,\n OAuthAuthorizeSubmitOptions,\n OAuthAuthorizeSubmitResponse,\n OAuthLogoutStartOptions,\n OAuthLogoutStartResponse,\n} from '../public/idp';\n\nexport class HeadlessIDPClient implements IHeadlessIDPClient {\n constructor(private _networkClient: INetworkClient) {}\n\n oauthAuthorizeStart = async (data: OAuthAuthorizeStartOptions): Promise<OAuthAuthorizeStartResponse> =>\n this._networkClient.fetchSDK<OAuthAuthorizeStartResponse>({\n url: '/idp/oauth/authorize/start',\n method: 'POST',\n body: data,\n });\n\n oauthAuthorizeSubmit = async (data: OAuthAuthorizeSubmitOptions): Promise<OAuthAuthorizeSubmitResponse> =>\n this._networkClient.fetchSDK<OAuthAuthorizeSubmitResponse>({\n url: '/idp/oauth/authorize/submit',\n method: 'POST',\n body: data,\n });\n\n oauthLogoutStart = async (data: OAuthLogoutStartOptions): Promise<OAuthLogoutStartResponse> =>\n this._networkClient.fetchSDK<OAuthLogoutStartResponse>({\n url: `/oauth/logout/start`,\n method: 'POST',\n body: data,\n });\n}\n"],"names":["HeadlessIDPClient","_networkClient","oauthAuthorizeStart","data","fetchSDK","url","method","body","oauthAuthorizeSubmit","oauthLogoutStart"],"mappings":"AAWO,MAAMA,iBAAAA,CAAAA;;IACX,WAAA,CAAoBC,cAA8B,CAAE;aAAhCA,cAAAA,GAAAA,cAAAA;AAAiC,IAAA;AAErDC,IAAAA,mBAAAA,GAAsB,OAAOC,IAAAA,GAC3B,IAAI,CAACF,cAAc,CAACG,QAAQ,CAA8B;YACxDC,GAAAA,EAAK,4BAAA;YACLC,MAAAA,EAAQ,MAAA;YACRC,IAAAA,EAAMJ;SACR,CAAA;AAEFK,IAAAA,oBAAAA,GAAuB,OAAOL,IAAAA,GAC5B,IAAI,CAACF,cAAc,CAACG,QAAQ,CAA+B;YACzDC,GAAAA,EAAK,6BAAA;YACLC,MAAAA,EAAQ,MAAA;YACRC,IAAAA,EAAMJ;SACR,CAAA;AAEFM,IAAAA,gBAAAA,GAAmB,OAAON,IAAAA,GACxB,IAAI,CAACF,cAAc,CAACG,QAAQ,CAA2B;YACrDC,GAAAA,EAAK,CAAC,mBAAmB,CAAC;YAC1BC,MAAAA,EAAQ,MAAA;YACRC,IAAAA,EAAMJ;SACR,CAAA;AACJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeadlessImpersonationClient.mjs","sources":["../../../../../../../core/src/HeadlessClients/HeadlessImpersonationClient.ts"],"sourcesContent":["import { IDFPProtectedAuthProvider } from '../DFPProtectedAuthProvider';\nimport { INetworkClient } from '../NetworkClient';\nimport {\n ImpersonationAuthenticateOptions,\n ImpersonationAuthenticateResponse,\n IHeadlessImpersonationClient,\n} from '../public/impersonation';\nimport { StytchProjectConfigurationInput } from '../public/typeConfig';\nimport { IConsumerSubscriptionService } from '../SubscriptionService';\nimport { validateInDev } from '../utils/dev';\n\nexport class HeadlessImpersonationClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessImpersonationClient<TProjectConfiguration>\n{\n authenticate: (\n data: ImpersonationAuthenticateOptions,\n ) => Promise<ImpersonationAuthenticateResponse<TProjectConfiguration>>;\n\n constructor(\n private _networkClient: INetworkClient,\n private _subscriptionService: IConsumerSubscriptionService<TProjectConfiguration>,\n private dfpProtectedAuth: IDFPProtectedAuthProvider,\n ) {\n this.authenticate = this._subscriptionService.withUpdateSession(async (data: ImpersonationAuthenticateOptions) => {\n validateInDev('stytch.impersonation.authenticate', data, {\n impersonation_token: 'string',\n });\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n return this._networkClient.retriableFetchSDK<ImpersonationAuthenticateResponse<TProjectConfiguration>>({\n url: '/impersonation/authenticate',\n body: {\n ...data,\n dfp_telemetry_id,\n captcha_token,\n },\n method: 'POST',\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n });\n }\n}\n"],"names":["HeadlessImpersonationClient","authenticate","
|
|
1
|
+
{"version":3,"file":"HeadlessImpersonationClient.mjs","sources":["../../../../../../../core/src/HeadlessClients/HeadlessImpersonationClient.ts"],"sourcesContent":["import { IDFPProtectedAuthProvider } from '../DFPProtectedAuthProvider';\nimport { INetworkClient } from '../NetworkClient';\nimport {\n ImpersonationAuthenticateOptions,\n ImpersonationAuthenticateResponse,\n IHeadlessImpersonationClient,\n} from '../public/impersonation';\nimport { StytchProjectConfigurationInput } from '../public/typeConfig';\nimport { IConsumerSubscriptionService } from '../SubscriptionService';\nimport { validateInDev } from '../utils/dev';\n\nexport class HeadlessImpersonationClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessImpersonationClient<TProjectConfiguration>\n{\n authenticate: (\n data: ImpersonationAuthenticateOptions,\n ) => Promise<ImpersonationAuthenticateResponse<TProjectConfiguration>>;\n\n constructor(\n private _networkClient: INetworkClient,\n private _subscriptionService: IConsumerSubscriptionService<TProjectConfiguration>,\n private dfpProtectedAuth: IDFPProtectedAuthProvider,\n ) {\n this.authenticate = this._subscriptionService.withUpdateSession(async (data: ImpersonationAuthenticateOptions) => {\n validateInDev('stytch.impersonation.authenticate', data, {\n impersonation_token: 'string',\n });\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n return this._networkClient.retriableFetchSDK<ImpersonationAuthenticateResponse<TProjectConfiguration>>({\n url: '/impersonation/authenticate',\n body: {\n ...data,\n dfp_telemetry_id,\n captcha_token,\n },\n method: 'POST',\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n });\n }\n}\n"],"names":["HeadlessImpersonationClient","authenticate","_networkClient","_subscriptionService","dfpProtectedAuth","withUpdateSession","data","validateInDev","impersonation_token","dfp_telemetry_id","captcha_token","getDFPTelemetryIDAndCaptcha","retriableFetchSDK","url","body","method","retryCallback","retryWithCaptchaAndDFP"],"mappings":";;AAWO,MAAMA,2BAAAA,CAAAA;;;;IAGXC,YAAAA;IAIA,WAAA,CACUC,cAA8B,EAC9BC,oBAAyE,EACzEC,gBAA2C,CACnD;aAHQF,cAAAA,GAAAA,cAAAA;aACAC,oBAAAA,GAAAA,oBAAAA;aACAC,gBAAAA,GAAAA,gBAAAA;QAER,IAAI,CAACH,YAAY,GAAG,IAAI,CAACE,oBAAoB,CAACE,iBAAiB,CAAC,OAAOC,IAAAA,GAAAA;AACrEC,YAAAA,aAAAA,CAAc,qCAAqCD,IAAAA,EAAM;gBACvDE,mBAAAA,EAAqB;AACvB,aAAA,CAAA;YACA,MAAM,EAAEC,gBAAgB,EAAEC,aAAa,EAAE,GAAG,MAAM,IAAI,CAACN,gBAAgB,CAACO,2BAA2B,EAAA;AACnG,YAAA,OAAO,IAAI,CAACT,cAAc,CAACU,iBAAiB,CAA2D;gBACrGC,GAAAA,EAAK,6BAAA;gBACLC,IAAAA,EAAM;AACJ,oBAAA,GAAGR,IAAI;AACPG,oBAAAA,gBAAAA;AACAC,oBAAAA;AACF,iBAAA;gBACAK,MAAAA,EAAQ,MAAA;AACRC,gBAAAA,aAAAA,EAAe,IAAI,CAACZ,gBAAgB,CAACa;AACvC,aAAA,CAAA;AACF,QAAA,CAAA,CAAA;AACF,IAAA;AACF;;;;"}
|