@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.
Files changed (316) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/StytchSSRProxy-Bz6LNYdq.js.map +1 -1
  3. package/dist/cjs/adminPortal/index.cjs +2 -2
  4. package/dist/cjs/b2b/index.cjs +11 -8
  5. package/dist/cjs/b2b/index.cjs.map +1 -1
  6. package/dist/cjs/b2b/index.headless.cjs +456 -496
  7. package/dist/cjs/b2b/index.headless.cjs.map +1 -1
  8. package/dist/cjs/{idpHelpers-Bj_7pbfW.js → idpHelpers-UZaYQqT8.js} +111 -129
  9. package/dist/cjs/{idpHelpers-Bj_7pbfW.js.map → idpHelpers-UZaYQqT8.js.map} +1 -1
  10. package/dist/cjs/{index-BIjXBvf_.js → index-MDH3lelI.js} +2 -2
  11. package/dist/cjs/{index-BIjXBvf_.js.map → index-MDH3lelI.js.map} +1 -1
  12. package/dist/cjs/index.cjs +18 -14
  13. package/dist/cjs/index.cjs.map +1 -1
  14. package/dist/cjs/index.headless.cjs +401 -448
  15. package/dist/cjs/index.headless.cjs.map +1 -1
  16. package/dist/cjs/{passwordManagerDisableAutofillProps-DV31RTL_.js → passwordManagerDisableAutofillProps-BzR1GTDj.js} +42 -33
  17. package/dist/cjs/passwordManagerDisableAutofillProps-BzR1GTDj.js.map +1 -0
  18. package/dist/cjs/{shadcn-aVU6Lm9q.js → shadcn-BNtf3uZr.js} +7 -6
  19. package/dist/cjs/shadcn-BNtf3uZr.js.map +1 -0
  20. package/dist/cjs-dev/adminPortal/index.cjs +2 -2
  21. package/dist/cjs-dev/b2b/index.cjs +11 -8
  22. package/dist/cjs-dev/b2b/index.cjs.map +1 -1
  23. package/dist/cjs-dev/b2b/index.headless.cjs +468 -508
  24. package/dist/cjs-dev/b2b/index.headless.cjs.map +1 -1
  25. package/dist/cjs-dev/dev-DaCGDI6V.js.map +1 -1
  26. package/dist/cjs-dev/{idpHelpers-DOYYSxsX.js → idpHelpers-CVk39K69.js} +111 -129
  27. package/dist/cjs-dev/{idpHelpers-DOYYSxsX.js.map → idpHelpers-CVk39K69.js.map} +1 -1
  28. package/dist/cjs-dev/{index-rquGmIlv.js → index-BDTK8QN0.js} +2 -2
  29. package/dist/cjs-dev/{index-rquGmIlv.js.map → index-BDTK8QN0.js.map} +1 -1
  30. package/dist/cjs-dev/index.cjs +18 -14
  31. package/dist/cjs-dev/index.cjs.map +1 -1
  32. package/dist/cjs-dev/index.headless.cjs +405 -452
  33. package/dist/cjs-dev/index.headless.cjs.map +1 -1
  34. package/dist/cjs-dev/{passwordManagerDisableAutofillProps-CgiK2M_U.js → passwordManagerDisableAutofillProps--FLcEDiY.js} +42 -33
  35. package/dist/cjs-dev/passwordManagerDisableAutofillProps--FLcEDiY.js.map +1 -0
  36. package/dist/cjs-dev/{shadcn-DMk6ZSoD.js → shadcn-CvmoCuzj.js} +9 -8
  37. package/dist/cjs-dev/shadcn-CvmoCuzj.js.map +1 -0
  38. package/dist/esm/_virtual/index3.mjs +3 -5
  39. package/dist/esm/_virtual/index3.mjs.map +1 -1
  40. package/dist/esm/_virtual/index4.mjs +5 -3
  41. package/dist/esm/_virtual/index4.mjs.map +1 -1
  42. package/dist/esm/node_modules/@lingui/react/dist/index.mjs +14 -13
  43. package/dist/esm/node_modules/@lingui/react/dist/index.mjs.map +1 -1
  44. package/dist/esm/node_modules/@lingui/react/dist/shared/{react.31c3b5fa.mjs → react.8970326b.mjs} +32 -23
  45. package/dist/esm/node_modules/@lingui/react/dist/shared/react.8970326b.mjs.map +1 -0
  46. package/dist/esm/packages/core/src/DFPProtectedAuthProvider.mjs +39 -43
  47. package/dist/esm/packages/core/src/DFPProtectedAuthProvider.mjs.map +1 -1
  48. package/dist/esm/packages/core/src/EventLogger.mjs.map +1 -1
  49. package/dist/esm/packages/core/src/HeadlessClients/HeadlessCryptoWalletClient.mjs.map +1 -1
  50. package/dist/esm/packages/core/src/HeadlessClients/HeadlessIDPClient.mjs +15 -18
  51. package/dist/esm/packages/core/src/HeadlessClients/HeadlessIDPClient.mjs.map +1 -1
  52. package/dist/esm/packages/core/src/HeadlessClients/HeadlessImpersonationClient.mjs.map +1 -1
  53. package/dist/esm/packages/core/src/HeadlessClients/HeadlessMagicLinkClient.mjs.map +1 -1
  54. package/dist/esm/packages/core/src/HeadlessClients/HeadlessOAuthClient.mjs +58 -77
  55. package/dist/esm/packages/core/src/HeadlessClients/HeadlessOAuthClient.mjs.map +1 -1
  56. package/dist/esm/packages/core/src/HeadlessClients/HeadlessOTPClient.mjs +100 -103
  57. package/dist/esm/packages/core/src/HeadlessClients/HeadlessOTPClient.mjs.map +1 -1
  58. package/dist/esm/packages/core/src/HeadlessClients/HeadlessPasswordClient.mjs.map +1 -1
  59. package/dist/esm/packages/core/src/HeadlessClients/HeadlessRBACClient.mjs +6 -8
  60. package/dist/esm/packages/core/src/HeadlessClients/HeadlessRBACClient.mjs.map +1 -1
  61. package/dist/esm/packages/core/src/HeadlessClients/HeadlessSessionClient.mjs +77 -82
  62. package/dist/esm/packages/core/src/HeadlessClients/HeadlessSessionClient.mjs.map +1 -1
  63. package/dist/esm/packages/core/src/HeadlessClients/HeadlessTOTPClient.mjs.map +1 -1
  64. package/dist/esm/packages/core/src/HeadlessClients/HeadlessUserClient.mjs +111 -125
  65. package/dist/esm/packages/core/src/HeadlessClients/HeadlessUserClient.mjs.map +1 -1
  66. package/dist/esm/packages/core/src/HeadlessClients/HeadlessWebAuthnClient.mjs +10 -11
  67. package/dist/esm/packages/core/src/HeadlessClients/HeadlessWebAuthnClient.mjs.map +1 -1
  68. package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BDiscoveryClient.mjs.map +1 -1
  69. package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BIDPClient.mjs +16 -19
  70. package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BIDPClient.mjs.map +1 -1
  71. package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BImpersonationClient.mjs.map +1 -1
  72. package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BMagicLinkClient.mjs.map +1 -1
  73. package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BOAuthClient.mjs.map +1 -1
  74. package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BOTPsClient.mjs.map +1 -1
  75. package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BOrganizationClient.mjs +142 -153
  76. package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BOrganizationClient.mjs.map +1 -1
  77. package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BPasswordsClient.mjs.map +1 -1
  78. package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BRBACClient.mjs +7 -9
  79. package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BRBACClient.mjs.map +1 -1
  80. package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BRecoveryCodesClient.mjs.map +1 -1
  81. package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BSCIMClient.mjs.map +1 -1
  82. package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BSSOClient.mjs +67 -70
  83. package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BSSOClient.mjs.map +1 -1
  84. package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BSelfClient.mjs +81 -93
  85. package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BSelfClient.mjs.map +1 -1
  86. package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BSessionClient.mjs +67 -73
  87. package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BSessionClient.mjs.map +1 -1
  88. package/dist/esm/packages/core/src/HeadlessClients/b2b/HeadlessB2BTOTPsClient.mjs.map +1 -1
  89. package/dist/esm/packages/core/src/NetworkClient.mjs.map +1 -1
  90. package/dist/esm/packages/core/src/SearchManager.mjs.map +1 -1
  91. package/dist/esm/packages/core/src/SessionManager.mjs +28 -31
  92. package/dist/esm/packages/core/src/SessionManager.mjs.map +1 -1
  93. package/dist/esm/packages/core/src/StateChangeClient.mjs +5 -6
  94. package/dist/esm/packages/core/src/StateChangeClient.mjs.map +1 -1
  95. package/dist/esm/packages/core/src/public/SDKErrors.mjs.map +1 -1
  96. package/dist/esm/packages/core/src/rbac.mjs.map +1 -1
  97. package/dist/esm/packages/core/src/rpc/FrameClient.mjs.map +1 -1
  98. package/dist/esm/packages/web/src/BootstrapDataManager.mjs.map +1 -1
  99. package/dist/esm/packages/web/src/CaptchaProvider.mjs +10 -11
  100. package/dist/esm/packages/web/src/CaptchaProvider.mjs.map +1 -1
  101. package/dist/esm/packages/web/src/ClientsideServicesProvider.mjs +4 -8
  102. package/dist/esm/packages/web/src/ClientsideServicesProvider.mjs.map +1 -1
  103. package/dist/esm/packages/web/src/HeadlessOAuthClient.mjs +24 -24
  104. package/dist/esm/packages/web/src/HeadlessOAuthClient.mjs.map +1 -1
  105. package/dist/esm/packages/web/src/NetworkClient.mjs +4 -5
  106. package/dist/esm/packages/web/src/NetworkClient.mjs.map +1 -1
  107. package/dist/esm/packages/web/src/PKCEManager.mjs.map +1 -1
  108. package/dist/esm/packages/web/src/StytchClient.mjs.map +1 -1
  109. package/dist/esm/packages/web/src/SubscriptionService.mjs +8 -10
  110. package/dist/esm/packages/web/src/SubscriptionService.mjs.map +1 -1
  111. package/dist/esm/packages/web/src/adminPortal/utils/theme.mjs +1 -1
  112. package/dist/esm/packages/web/src/b2b/HeadlessB2BOAuthClient.mjs +48 -48
  113. package/dist/esm/packages/web/src/b2b/HeadlessB2BOAuthClient.mjs.map +1 -1
  114. package/dist/esm/packages/web/src/b2b/StytchB2BClient.mjs.map +1 -1
  115. package/dist/esm/packages/web/src/b2b/oneTap/B2BOneTapProvider.mjs +27 -30
  116. package/dist/esm/packages/web/src/b2b/oneTap/B2BOneTapProvider.mjs.map +1 -1
  117. package/dist/esm/packages/web/src/oneTap/GoogleOneTapClient.mjs.map +1 -1
  118. package/dist/esm/packages/web/src/oneTap/OneTapProvider.mjs +12 -14
  119. package/dist/esm/packages/web/src/oneTap/OneTapProvider.mjs.map +1 -1
  120. package/dist/esm/packages/web/src/ui/b2b/App.mjs +3 -1
  121. package/dist/esm/packages/web/src/ui/b2b/App.mjs.map +1 -1
  122. package/dist/esm/packages/web/src/ui/b2b/InternalAppContainer.mjs +1 -1
  123. package/dist/esm/packages/web/src/ui/b2b/InternalAppContainer.mjs.map +1 -1
  124. package/dist/esm/packages/web/src/ui/b2b/components/OAuthB2BButton.mjs +1 -1
  125. package/dist/esm/packages/web/src/ui/b2b/components/OAuthB2BButton.mjs.map +1 -1
  126. package/dist/esm/packages/web/src/ui/b2b/screens/SMSOTPEnrollScreen.mjs.map +1 -1
  127. package/dist/esm/packages/web/src/ui/b2c/AppContainer.mjs +1 -1
  128. package/dist/esm/packages/web/src/ui/b2c/AppContainer.mjs.map +1 -1
  129. package/dist/esm/packages/web/src/ui/b2c/IDPContainer.mjs +3 -1
  130. package/dist/esm/packages/web/src/ui/b2c/IDPContainer.mjs.map +1 -1
  131. package/dist/esm/packages/web/src/ui/b2c/PasskeyRegistrationContainer.mjs +1 -1
  132. package/dist/esm/packages/web/src/ui/b2c/PasskeyRegistrationContainer.mjs.map +1 -1
  133. package/dist/esm/packages/web/src/ui/b2c/ResetPasswordContainer.mjs +1 -1
  134. package/dist/esm/packages/web/src/ui/b2c/ResetPasswordContainer.mjs.map +1 -1
  135. package/dist/esm/packages/web/src/ui/b2c/components/GoogleOneTap.mjs +4 -2
  136. package/dist/esm/packages/web/src/ui/b2c/components/GoogleOneTap.mjs.map +1 -1
  137. package/dist/esm/packages/web/src/ui/b2c/screens/Main/index.mjs +2 -1
  138. package/dist/esm/packages/web/src/ui/b2c/screens/Main/index.mjs.map +1 -1
  139. package/dist/esm/packages/web/src/ui/components/PresentationConfig.mjs +2 -1
  140. package/dist/esm/packages/web/src/ui/components/PresentationConfig.mjs.map +1 -1
  141. package/dist/esm/packages/web/src/ui/components/mixins/Root.module.css.mjs +1 -1
  142. package/dist/esm/packages/web/src/ui/components/molecules/MainContainer.module.css.mjs +1 -1
  143. package/dist/esm/packages/web/src/ui/hooks/usePromptPasskey.mjs +3 -3
  144. package/dist/esm/packages/web/src/ui/hooks/usePromptPasskey.mjs.map +1 -1
  145. package/dist/esm/packages/web/src/ui/react/bindings/createB2BComponent.mjs +2 -2
  146. package/dist/esm/packages/web/src/ui/react/bindings/createB2BComponent.mjs.map +1 -1
  147. package/dist/esm/packages/web/src/ui/react/bindings/createB2CComponent.mjs +2 -2
  148. package/dist/esm/packages/web/src/ui/react/bindings/createB2CComponent.mjs.map +1 -1
  149. package/dist/esm/packages/web/src/utils/crypto.mjs +1 -1
  150. package/dist/esm-dev/_virtual/index.mjs +3 -5
  151. package/dist/esm-dev/_virtual/index.mjs.map +1 -1
  152. package/dist/esm-dev/_virtual/index2.mjs +5 -3
  153. package/dist/esm-dev/_virtual/index2.mjs.map +1 -1
  154. package/dist/esm-dev/_virtual/index3.mjs +5 -3
  155. package/dist/esm-dev/_virtual/index3.mjs.map +1 -1
  156. package/dist/esm-dev/_virtual/index4.mjs +3 -5
  157. package/dist/esm-dev/_virtual/index4.mjs.map +1 -1
  158. package/dist/esm-dev/node_modules/@lingui/react/dist/index.mjs +14 -13
  159. package/dist/esm-dev/node_modules/@lingui/react/dist/index.mjs.map +1 -1
  160. package/dist/esm-dev/node_modules/@lingui/react/dist/shared/{react.31c3b5fa.mjs → react.8970326b.mjs} +32 -23
  161. package/dist/esm-dev/node_modules/@lingui/react/dist/shared/react.8970326b.mjs.map +1 -0
  162. package/dist/esm-dev/node_modules/swr/core/dist/index.mjs +1 -1
  163. package/dist/esm-dev/node_modules/swr/infinite/dist/index.mjs +1 -1
  164. package/dist/esm-dev/packages/core/src/DFPProtectedAuthProvider.mjs +39 -43
  165. package/dist/esm-dev/packages/core/src/DFPProtectedAuthProvider.mjs.map +1 -1
  166. package/dist/esm-dev/packages/core/src/EventLogger.mjs.map +1 -1
  167. package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessCryptoWalletClient.mjs.map +1 -1
  168. package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessIDPClient.mjs +15 -18
  169. package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessIDPClient.mjs.map +1 -1
  170. package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessImpersonationClient.mjs.map +1 -1
  171. package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessMagicLinkClient.mjs.map +1 -1
  172. package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessOAuthClient.mjs +58 -77
  173. package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessOAuthClient.mjs.map +1 -1
  174. package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessOTPClient.mjs +100 -103
  175. package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessOTPClient.mjs.map +1 -1
  176. package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessPasswordClient.mjs.map +1 -1
  177. package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessRBACClient.mjs +6 -8
  178. package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessRBACClient.mjs.map +1 -1
  179. package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessSessionClient.mjs +77 -82
  180. package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessSessionClient.mjs.map +1 -1
  181. package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessTOTPClient.mjs.map +1 -1
  182. package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessUserClient.mjs +114 -128
  183. package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessUserClient.mjs.map +1 -1
  184. package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessWebAuthnClient.mjs +10 -11
  185. package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessWebAuthnClient.mjs.map +1 -1
  186. package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BDiscoveryClient.mjs.map +1 -1
  187. package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BIDPClient.mjs +16 -19
  188. package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BIDPClient.mjs.map +1 -1
  189. package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BImpersonationClient.mjs.map +1 -1
  190. package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BMagicLinkClient.mjs.map +1 -1
  191. package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BOAuthClient.mjs.map +1 -1
  192. package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BOTPsClient.mjs.map +1 -1
  193. package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BOrganizationClient.mjs +144 -155
  194. package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BOrganizationClient.mjs.map +1 -1
  195. package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BPasswordsClient.mjs.map +1 -1
  196. package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BRBACClient.mjs +7 -9
  197. package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BRBACClient.mjs.map +1 -1
  198. package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BRecoveryCodesClient.mjs.map +1 -1
  199. package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BSCIMClient.mjs.map +1 -1
  200. package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BSSOClient.mjs +67 -70
  201. package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BSSOClient.mjs.map +1 -1
  202. package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BSelfClient.mjs +88 -100
  203. package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BSelfClient.mjs.map +1 -1
  204. package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BSessionClient.mjs +70 -76
  205. package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BSessionClient.mjs.map +1 -1
  206. package/dist/esm-dev/packages/core/src/HeadlessClients/b2b/HeadlessB2BTOTPsClient.mjs.map +1 -1
  207. package/dist/esm-dev/packages/core/src/NetworkClient.mjs.map +1 -1
  208. package/dist/esm-dev/packages/core/src/SearchManager.mjs.map +1 -1
  209. package/dist/esm-dev/packages/core/src/SessionManager.mjs +28 -31
  210. package/dist/esm-dev/packages/core/src/SessionManager.mjs.map +1 -1
  211. package/dist/esm-dev/packages/core/src/StateChangeClient.mjs +5 -6
  212. package/dist/esm-dev/packages/core/src/StateChangeClient.mjs.map +1 -1
  213. package/dist/esm-dev/packages/core/src/public/SDKErrors.mjs.map +1 -1
  214. package/dist/esm-dev/packages/core/src/rbac.mjs.map +1 -1
  215. package/dist/esm-dev/packages/core/src/rpc/FrameClient.mjs.map +1 -1
  216. package/dist/esm-dev/packages/web/src/BootstrapDataManager.mjs.map +1 -1
  217. package/dist/esm-dev/packages/web/src/CaptchaProvider.mjs +10 -11
  218. package/dist/esm-dev/packages/web/src/CaptchaProvider.mjs.map +1 -1
  219. package/dist/esm-dev/packages/web/src/ClientsideServicesProvider.mjs +4 -8
  220. package/dist/esm-dev/packages/web/src/ClientsideServicesProvider.mjs.map +1 -1
  221. package/dist/esm-dev/packages/web/src/HeadlessOAuthClient.mjs +24 -24
  222. package/dist/esm-dev/packages/web/src/HeadlessOAuthClient.mjs.map +1 -1
  223. package/dist/esm-dev/packages/web/src/NetworkClient.mjs +4 -5
  224. package/dist/esm-dev/packages/web/src/NetworkClient.mjs.map +1 -1
  225. package/dist/esm-dev/packages/web/src/PKCEManager.mjs.map +1 -1
  226. package/dist/esm-dev/packages/web/src/StytchClient.mjs.map +1 -1
  227. package/dist/esm-dev/packages/web/src/SubscriptionService.mjs +8 -10
  228. package/dist/esm-dev/packages/web/src/SubscriptionService.mjs.map +1 -1
  229. package/dist/esm-dev/packages/web/src/adminPortal/memberManagement/AuthManagementSection.mjs +1 -1
  230. package/dist/esm-dev/packages/web/src/adminPortal/memberManagement/useMemberActivation.mjs +1 -1
  231. package/dist/esm-dev/packages/web/src/adminPortal/scim/SCIMConnectionDangerZoneSection.mjs +1 -1
  232. package/dist/esm-dev/packages/web/src/adminPortal/scim/SCIMConnectionTokenRotationSection.mjs +1 -1
  233. package/dist/esm-dev/packages/web/src/adminPortal/scim/SCIMNewConnectionScreen.mjs +1 -1
  234. package/dist/esm-dev/packages/web/src/adminPortal/sso/SSONewConnectionScreen.mjs +1 -1
  235. package/dist/esm-dev/packages/web/src/adminPortal/utils/theme.mjs +1 -1
  236. package/dist/esm-dev/packages/web/src/adminPortal/utils/useMutateMember.mjs +1 -1
  237. package/dist/esm-dev/packages/web/src/adminPortal/utils/useMutateOrganization.mjs +1 -1
  238. package/dist/esm-dev/packages/web/src/adminPortal/utils/useMutateScimConnection.mjs +1 -1
  239. package/dist/esm-dev/packages/web/src/adminPortal/utils/useMutateSsoConnection.mjs +1 -1
  240. package/dist/esm-dev/packages/web/src/adminPortal/utils/useRevalidateConnectionList.mjs +1 -1
  241. package/dist/esm-dev/packages/web/src/b2b/HeadlessB2BOAuthClient.mjs +48 -48
  242. package/dist/esm-dev/packages/web/src/b2b/HeadlessB2BOAuthClient.mjs.map +1 -1
  243. package/dist/esm-dev/packages/web/src/b2b/StytchB2BClient.mjs.map +1 -1
  244. package/dist/esm-dev/packages/web/src/b2b/oneTap/B2BOneTapProvider.mjs +27 -30
  245. package/dist/esm-dev/packages/web/src/b2b/oneTap/B2BOneTapProvider.mjs.map +1 -1
  246. package/dist/esm-dev/packages/web/src/oneTap/GoogleOneTapClient.mjs.map +1 -1
  247. package/dist/esm-dev/packages/web/src/oneTap/OneTapProvider.mjs +12 -14
  248. package/dist/esm-dev/packages/web/src/oneTap/OneTapProvider.mjs.map +1 -1
  249. package/dist/esm-dev/packages/web/src/ui/b2b/App.mjs +3 -1
  250. package/dist/esm-dev/packages/web/src/ui/b2b/App.mjs.map +1 -1
  251. package/dist/esm-dev/packages/web/src/ui/b2b/Container.mjs +1 -1
  252. package/dist/esm-dev/packages/web/src/ui/b2b/InternalAppContainer.mjs +1 -1
  253. package/dist/esm-dev/packages/web/src/ui/b2b/InternalAppContainer.mjs.map +1 -1
  254. package/dist/esm-dev/packages/web/src/ui/b2b/components/OAuthB2BButton.mjs +1 -1
  255. package/dist/esm-dev/packages/web/src/ui/b2b/components/OAuthB2BButton.mjs.map +1 -1
  256. package/dist/esm-dev/packages/web/src/ui/b2b/components/OrganizationRow.mjs +1 -1
  257. package/dist/esm-dev/packages/web/src/ui/b2b/screens/SMSOTPEnrollScreen.mjs.map +1 -1
  258. package/dist/esm-dev/packages/web/src/ui/b2c/AppContainer.mjs +1 -1
  259. package/dist/esm-dev/packages/web/src/ui/b2c/AppContainer.mjs.map +1 -1
  260. package/dist/esm-dev/packages/web/src/ui/b2c/IDPContainer.mjs +3 -1
  261. package/dist/esm-dev/packages/web/src/ui/b2c/IDPContainer.mjs.map +1 -1
  262. package/dist/esm-dev/packages/web/src/ui/b2c/PasskeyRegistrationContainer.mjs +1 -1
  263. package/dist/esm-dev/packages/web/src/ui/b2c/PasskeyRegistrationContainer.mjs.map +1 -1
  264. package/dist/esm-dev/packages/web/src/ui/b2c/ResetPasswordContainer.mjs +1 -1
  265. package/dist/esm-dev/packages/web/src/ui/b2c/ResetPasswordContainer.mjs.map +1 -1
  266. package/dist/esm-dev/packages/web/src/ui/b2c/components/GoogleOneTap.mjs +5 -3
  267. package/dist/esm-dev/packages/web/src/ui/b2c/components/GoogleOneTap.mjs.map +1 -1
  268. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Main/LoginForm/index.mjs +1 -1
  269. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Main/index.mjs +2 -1
  270. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Main/index.mjs.map +1 -1
  271. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Passkey/EditableRow.mjs +1 -1
  272. package/dist/esm-dev/packages/web/src/ui/components/PresentationConfig.mjs +2 -1
  273. package/dist/esm-dev/packages/web/src/ui/components/PresentationConfig.mjs.map +1 -1
  274. package/dist/esm-dev/packages/web/src/ui/components/atoms/AnimatedContainer.mjs +1 -1
  275. package/dist/esm-dev/packages/web/src/ui/components/atoms/Button.mjs +1 -1
  276. package/dist/esm-dev/packages/web/src/ui/components/atoms/CodeContainer.mjs +1 -1
  277. package/dist/esm-dev/packages/web/src/ui/components/atoms/Column.mjs +1 -1
  278. package/dist/esm-dev/packages/web/src/ui/components/atoms/Typography.mjs +1 -1
  279. package/dist/esm-dev/packages/web/src/ui/components/atoms/VerticalTransition.mjs +1 -1
  280. package/dist/esm-dev/packages/web/src/ui/components/atoms/VisuallyHidden.mjs +1 -1
  281. package/dist/esm-dev/packages/web/src/ui/components/mixins/Root.module.css.mjs +1 -1
  282. package/dist/esm-dev/packages/web/src/ui/components/molecules/Badge.mjs +1 -1
  283. package/dist/esm-dev/packages/web/src/ui/components/molecules/Input.mjs +1 -1
  284. package/dist/esm-dev/packages/web/src/ui/components/molecules/MainContainer.mjs +1 -1
  285. package/dist/esm-dev/packages/web/src/ui/components/molecules/MainContainer.module.css.mjs +1 -1
  286. package/dist/esm-dev/packages/web/src/ui/components/molecules/OtpInput.mjs +1 -1
  287. package/dist/esm-dev/packages/web/src/ui/components/molecules/PasswordStrengthCheck.mjs +1 -1
  288. package/dist/esm-dev/packages/web/src/ui/components/organisms/IDPConsentManifest.mjs +1 -1
  289. package/dist/esm-dev/packages/web/src/ui/components/organisms/OneTapError.mjs +2 -2
  290. package/dist/esm-dev/packages/web/src/ui/components/organisms/OneTapError.mjs.map +1 -1
  291. package/dist/esm-dev/packages/web/src/ui/hooks/usePromptPasskey.mjs +3 -3
  292. package/dist/esm-dev/packages/web/src/ui/hooks/usePromptPasskey.mjs.map +1 -1
  293. package/dist/esm-dev/packages/web/src/ui/react/bindings/createB2BComponent.mjs +2 -2
  294. package/dist/esm-dev/packages/web/src/ui/react/bindings/createB2BComponent.mjs.map +1 -1
  295. package/dist/esm-dev/packages/web/src/ui/react/bindings/createB2CComponent.mjs +2 -2
  296. package/dist/esm-dev/packages/web/src/ui/react/bindings/createB2CComponent.mjs.map +1 -1
  297. package/dist/esm-dev/packages/web/src/utils/crypto.mjs +1 -1
  298. package/dist/types/{PresentationConfig-B2jX85oV.d.ts → PresentationConfig-CdAymT0c.d.ts} +5 -0
  299. package/dist/types/{StytchB2BClient-D16e_lp1.d.ts → StytchB2BClient-DYF9xGAB.d.ts} +1 -1
  300. package/dist/types/{StytchClient-BwQdJzdj.d.ts → StytchClient-IyY7-cpI.d.ts} +1 -1
  301. package/dist/types/adminPortal/index.d.ts +3 -3
  302. package/dist/types/b2b/index.d.ts +7 -7
  303. package/dist/types/b2b/index.headless.d.ts +2 -2
  304. package/dist/types/compat.d.ts +1 -1
  305. package/dist/types/{createAuthUrlHandler-R1kNNQD_.d.ts → createAuthUrlHandler-CFZ0DGWC.d.ts} +6 -2
  306. package/dist/types/index.d.ts +7 -7
  307. package/dist/types/index.headless.d.ts +2 -2
  308. package/dist/types/{shadcn-CGdmyIUF.d.ts → shadcn-USiNERNw.d.ts} +4 -4
  309. package/messages/en.po +3 -3
  310. package/package.json +1 -1
  311. package/dist/cjs/passwordManagerDisableAutofillProps-DV31RTL_.js.map +0 -1
  312. package/dist/cjs/shadcn-aVU6Lm9q.js.map +0 -1
  313. package/dist/cjs-dev/passwordManagerDisableAutofillProps-CgiK2M_U.js.map +0 -1
  314. package/dist/cjs-dev/shadcn-DMk6ZSoD.js.map +0 -1
  315. package/dist/esm/node_modules/@lingui/react/dist/shared/react.31c3b5fa.mjs.map +0 -1
  316. package/dist/esm-dev/node_modules/@lingui/react/dist/shared/react.31c3b5fa.mjs.map +0 -1
@@ -7,135 +7,121 @@ class HeadlessUserClient {
7
7
  constructor(_networkClient, _subscriptionService){
8
8
  this._networkClient = _networkClient;
9
9
  this._subscriptionService = _subscriptionService;
10
- this.get = async ()=>{
11
- const resp = await this._networkClient.fetchSDK({
12
- url: '/users/me',
13
- method: 'GET'
14
- });
15
- const user = removeResponseCommon(resp);
16
- this._subscriptionService.updateUser(user);
17
- return user;
18
- };
19
- this.getSync = ()=>{
20
- return this._subscriptionService.getUser();
21
- };
22
- this.getInfo = ()=>({
23
- user: this.getSync(),
24
- fromCache: this._subscriptionService.getFromCache()
25
- });
26
- this.update = async (options)=>{
27
- validateInDev('stytch.user.update', options, {
28
- untrusted_metadata: 'optionalObject'
29
- });
30
- const resp = await this._networkClient.fetchSDK({
31
- url: '/users/me',
32
- body: options,
33
- method: 'PUT'
34
- });
35
- const user = removeResponseCommon(resp.__user);
36
- this._subscriptionService.updateUser(user);
37
- return omitUser(resp);
38
- };
39
- this.deleteEmail = async (emailId)=>{
40
- const resp = await this._networkClient.fetchSDK({
41
- url: `/users/emails/${emailId}`,
42
- method: 'DELETE'
43
- });
44
- const user = removeResponseCommon(resp.__user);
45
- this._subscriptionService.updateUser(user);
46
- return omitUser(resp);
47
- };
48
- this.deletePhoneNumber = async (phoneId)=>{
49
- const resp = await this._networkClient.fetchSDK({
50
- url: `/users/phone_numbers/${phoneId}`,
51
- method: 'DELETE'
52
- });
53
- const user = removeResponseCommon(resp.__user);
54
- this._subscriptionService.updateUser(user);
55
- return omitUser(resp);
56
- };
57
- this.deleteTOTP = async (totpId)=>{
58
- const resp = await this._networkClient.fetchSDK({
59
- url: `/users/totps/${totpId}`,
60
- method: 'DELETE'
61
- });
62
- const user = removeResponseCommon(resp.__user);
63
- this._subscriptionService.updateUser(user);
64
- return omitUser(resp);
65
- };
66
- this.deleteCryptoWallet = async (cryptoWalletId)=>{
67
- const resp = await this._networkClient.fetchSDK({
68
- url: `/users/crypto_wallets/${cryptoWalletId}`,
69
- method: 'DELETE'
70
- });
71
- const user = removeResponseCommon(resp.__user);
72
- this._subscriptionService.updateUser(user);
73
- return omitUser(resp);
74
- };
75
- this.deleteOAuthRegistration = async (oauthUserRegistrationId)=>{
76
- const resp = await this._networkClient.fetchSDK({
77
- url: `/users/oauth/${oauthUserRegistrationId}`,
78
- method: 'DELETE'
79
- });
80
- const user = removeResponseCommon(resp.__user);
81
- this._subscriptionService.updateUser(user);
82
- return omitUser(resp);
83
- };
84
- this.deleteWebauthnRegistration = async (webAuthnId)=>{
85
- const resp = await this._networkClient.fetchSDK({
86
- url: `/users/webauthn_registrations/${webAuthnId}`,
87
- method: 'DELETE'
88
- });
89
- const user = removeResponseCommon(resp.__user);
90
- this._subscriptionService.updateUser(user);
91
- return omitUser(resp);
92
- };
93
- this.deleteBiometricRegistration = async (biometricRegistrationId)=>{
94
- const resp = await this._networkClient.fetchSDK({
95
- url: `/users/biometric_registrations/${biometricRegistrationId}`,
96
- method: 'DELETE'
97
- });
98
- const user = removeResponseCommon(resp.__user);
99
- this._subscriptionService.updateUser(user);
100
- return omitUser(resp);
101
- };
102
- this.onChange = (callback)=>{
103
- let lastVal = this._subscriptionService.getUser();
104
- const listener = (state)=>{
105
- if (state?.user !== lastVal) {
106
- lastVal = state?.user ?? null;
107
- callback(lastVal);
108
- }
109
- };
110
- return this._subscriptionService.subscribeToState(listener);
111
- };
112
- this.getConnectedApps = async ()=>{
113
- return await this._networkClient.fetchSDK({
114
- url: '/users/connected_apps',
115
- method: 'GET'
116
- });
117
- };
118
- this.revokedConnectedApp = async (connectedAppId)=>{
119
- return await this._networkClient.fetchSDK({
120
- url: `/users/connected_apps/${connectedAppId}/revoke`,
121
- method: 'POST'
122
- });
123
- };
124
10
  }
125
- get;
126
- getSync;
127
- getInfo;
128
- update;
129
- deleteEmail;
130
- deletePhoneNumber;
131
- deleteTOTP;
132
- deleteCryptoWallet;
133
- deleteOAuthRegistration;
134
- deleteWebauthnRegistration;
135
- deleteBiometricRegistration;
136
- onChange;
137
- getConnectedApps;
138
- revokedConnectedApp;
11
+ get = async ()=>{
12
+ const resp = await this._networkClient.fetchSDK({
13
+ url: '/users/me',
14
+ method: 'GET'
15
+ });
16
+ const user = removeResponseCommon(resp);
17
+ this._subscriptionService.updateUser(user);
18
+ return user;
19
+ };
20
+ getSync = ()=>{
21
+ return this._subscriptionService.getUser();
22
+ };
23
+ getInfo = ()=>({
24
+ user: this.getSync(),
25
+ fromCache: this._subscriptionService.getFromCache()
26
+ });
27
+ update = async (options)=>{
28
+ validateInDev('stytch.user.update', options, {
29
+ untrusted_metadata: 'optionalObject'
30
+ });
31
+ const resp = await this._networkClient.fetchSDK({
32
+ url: '/users/me',
33
+ body: options,
34
+ method: 'PUT'
35
+ });
36
+ const user = removeResponseCommon(resp.__user);
37
+ this._subscriptionService.updateUser(user);
38
+ return omitUser(resp);
39
+ };
40
+ deleteEmail = async (emailId)=>{
41
+ const resp = await this._networkClient.fetchSDK({
42
+ url: `/users/emails/${emailId}`,
43
+ method: 'DELETE'
44
+ });
45
+ const user = removeResponseCommon(resp.__user);
46
+ this._subscriptionService.updateUser(user);
47
+ return omitUser(resp);
48
+ };
49
+ deletePhoneNumber = async (phoneId)=>{
50
+ const resp = await this._networkClient.fetchSDK({
51
+ url: `/users/phone_numbers/${phoneId}`,
52
+ method: 'DELETE'
53
+ });
54
+ const user = removeResponseCommon(resp.__user);
55
+ this._subscriptionService.updateUser(user);
56
+ return omitUser(resp);
57
+ };
58
+ deleteTOTP = async (totpId)=>{
59
+ const resp = await this._networkClient.fetchSDK({
60
+ url: `/users/totps/${totpId}`,
61
+ method: 'DELETE'
62
+ });
63
+ const user = removeResponseCommon(resp.__user);
64
+ this._subscriptionService.updateUser(user);
65
+ return omitUser(resp);
66
+ };
67
+ deleteCryptoWallet = async (cryptoWalletId)=>{
68
+ const resp = await this._networkClient.fetchSDK({
69
+ url: `/users/crypto_wallets/${cryptoWalletId}`,
70
+ method: 'DELETE'
71
+ });
72
+ const user = removeResponseCommon(resp.__user);
73
+ this._subscriptionService.updateUser(user);
74
+ return omitUser(resp);
75
+ };
76
+ deleteOAuthRegistration = async (oauthUserRegistrationId)=>{
77
+ const resp = await this._networkClient.fetchSDK({
78
+ url: `/users/oauth/${oauthUserRegistrationId}`,
79
+ method: 'DELETE'
80
+ });
81
+ const user = removeResponseCommon(resp.__user);
82
+ this._subscriptionService.updateUser(user);
83
+ return omitUser(resp);
84
+ };
85
+ deleteWebauthnRegistration = async (webAuthnId)=>{
86
+ const resp = await this._networkClient.fetchSDK({
87
+ url: `/users/webauthn_registrations/${webAuthnId}`,
88
+ method: 'DELETE'
89
+ });
90
+ const user = removeResponseCommon(resp.__user);
91
+ this._subscriptionService.updateUser(user);
92
+ return omitUser(resp);
93
+ };
94
+ deleteBiometricRegistration = async (biometricRegistrationId)=>{
95
+ const resp = await this._networkClient.fetchSDK({
96
+ url: `/users/biometric_registrations/${biometricRegistrationId}`,
97
+ method: 'DELETE'
98
+ });
99
+ const user = removeResponseCommon(resp.__user);
100
+ this._subscriptionService.updateUser(user);
101
+ return omitUser(resp);
102
+ };
103
+ onChange = (callback)=>{
104
+ let lastVal = this._subscriptionService.getUser();
105
+ const listener = (state)=>{
106
+ if (state?.user !== lastVal) {
107
+ lastVal = state?.user ?? null;
108
+ callback(lastVal);
109
+ }
110
+ };
111
+ return this._subscriptionService.subscribeToState(listener);
112
+ };
113
+ getConnectedApps = async ()=>{
114
+ return await this._networkClient.fetchSDK({
115
+ url: '/users/connected_apps',
116
+ method: 'GET'
117
+ });
118
+ };
119
+ revokedConnectedApp = async (connectedAppId)=>{
120
+ return await this._networkClient.fetchSDK({
121
+ url: `/users/connected_apps/${connectedAppId}/revoke`,
122
+ method: 'POST'
123
+ });
124
+ };
139
125
  }
140
126
 
141
127
  export { HeadlessUserClient };
@@ -1 +1 @@
1
- {"version":3,"file":"HeadlessUserClient.mjs","sources":["../../../../../../../core/src/HeadlessClients/HeadlessUserClient.ts"],"sourcesContent":["import {\n IHeadlessUserClient,\n User,\n ResponseCommon,\n UpdateResponse,\n UserUpdateOptions,\n UserUpdateResponse,\n UserOnChangeCallback,\n ConsumerState,\n UserInfo,\n StytchProjectConfigurationInput,\n UserGetConnectedAppsResponse,\n UnsubscribeFunction,\n} from '../public';\nimport { INetworkClient } from '../NetworkClient';\nimport { IConsumerSubscriptionService } from '../SubscriptionService';\nimport { omitUser, removeResponseCommon, WithUser } from '../utils';\nimport { validateInDev } from '../utils/dev';\n\nexport class HeadlessUserClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessUserClient\n{\n constructor(\n private _networkClient: INetworkClient,\n private _subscriptionService: IConsumerSubscriptionService<TProjectConfiguration>,\n ) {}\n\n get = async (): Promise<User> => {\n const resp = await this._networkClient.fetchSDK<User & ResponseCommon>({\n url: '/users/me',\n method: 'GET',\n });\n const user = removeResponseCommon(resp);\n this._subscriptionService.updateUser(user);\n return user;\n };\n\n getSync = (): User | null => {\n return this._subscriptionService.getUser();\n };\n\n getInfo = (): UserInfo => ({\n user: this.getSync(),\n fromCache: this._subscriptionService.getFromCache(),\n });\n\n update = async (options: UserUpdateOptions) => {\n validateInDev('stytch.user.update', options, {\n untrusted_metadata: 'optionalObject',\n });\n const resp = await this._networkClient.fetchSDK<WithUser<UserUpdateResponse>>({\n url: '/users/me',\n body: options,\n method: 'PUT',\n });\n const user = removeResponseCommon(resp.__user);\n this._subscriptionService.updateUser(user);\n return omitUser(resp);\n };\n\n deleteEmail = async (emailId: string) => {\n const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n url: `/users/emails/${emailId}`,\n method: 'DELETE',\n });\n const user = removeResponseCommon(resp.__user);\n this._subscriptionService.updateUser(user);\n return omitUser(resp);\n };\n\n deletePhoneNumber = async (phoneId: string) => {\n const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n url: `/users/phone_numbers/${phoneId}`,\n method: 'DELETE',\n });\n const user = removeResponseCommon(resp.__user);\n this._subscriptionService.updateUser(user);\n return omitUser(resp);\n };\n\n deleteTOTP = async (totpId: string) => {\n const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n url: `/users/totps/${totpId}`,\n method: 'DELETE',\n });\n const user = removeResponseCommon(resp.__user);\n this._subscriptionService.updateUser(user);\n return omitUser(resp);\n };\n\n deleteCryptoWallet = async (cryptoWalletId: string) => {\n const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n url: `/users/crypto_wallets/${cryptoWalletId}`,\n method: 'DELETE',\n });\n const user = removeResponseCommon(resp.__user);\n this._subscriptionService.updateUser(user);\n return omitUser(resp);\n };\n\n deleteOAuthRegistration = async (oauthUserRegistrationId: string) => {\n const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n url: `/users/oauth/${oauthUserRegistrationId}`,\n method: 'DELETE',\n });\n const user = removeResponseCommon(resp.__user);\n this._subscriptionService.updateUser(user);\n return omitUser(resp);\n };\n\n deleteWebauthnRegistration = async (webAuthnId: string) => {\n const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n url: `/users/webauthn_registrations/${webAuthnId}`,\n method: 'DELETE',\n });\n const user = removeResponseCommon(resp.__user);\n this._subscriptionService.updateUser(user);\n return omitUser(resp);\n };\n\n deleteBiometricRegistration = async (biometricRegistrationId: string) => {\n const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n url: `/users/biometric_registrations/${biometricRegistrationId}`,\n method: 'DELETE',\n });\n const user = removeResponseCommon(resp.__user);\n this._subscriptionService.updateUser(user);\n return omitUser(resp);\n };\n\n onChange = (callback: UserOnChangeCallback): UnsubscribeFunction => {\n let lastVal = this._subscriptionService.getUser();\n const listener = (state: ConsumerState | null) => {\n if (state?.user !== lastVal) {\n lastVal = state?.user ?? null;\n callback(lastVal);\n }\n };\n return this._subscriptionService.subscribeToState(listener);\n };\n\n getConnectedApps = async () => {\n return await this._networkClient.fetchSDK<UserGetConnectedAppsResponse>({\n url: '/users/connected_apps',\n method: 'GET',\n });\n };\n\n revokedConnectedApp = async (connectedAppId: string) => {\n return await this._networkClient.fetchSDK<ResponseCommon>({\n url: `/users/connected_apps/${connectedAppId}/revoke`,\n method: 'POST',\n });\n };\n}\n"],"names":["HeadlessUserClient","constructor","_subscriptionService","_networkClient","get","resp","fetchSDK","url","method","user","removeResponseCommon","updateUser","getSync","getUser","getInfo","fromCache","getFromCache","update","options","validateInDev","untrusted_metadata","body","__user","omitUser","deleteEmail","emailId","deletePhoneNumber","phoneId","deleteTOTP","totpId","deleteCryptoWallet","cryptoWalletId","deleteOAuthRegistration","oauthUserRegistrationId","deleteWebauthnRegistration","webAuthnId","deleteBiometricRegistration","biometricRegistrationId","onChange","callback","lastVal","listener","state","subscribeToState","getConnectedApps","revokedConnectedApp","connectedAppId"],"mappings":"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"}
1
+ {"version":3,"file":"HeadlessUserClient.mjs","sources":["../../../../../../../core/src/HeadlessClients/HeadlessUserClient.ts"],"sourcesContent":["import {\n IHeadlessUserClient,\n User,\n ResponseCommon,\n UpdateResponse,\n UserUpdateOptions,\n UserUpdateResponse,\n UserOnChangeCallback,\n ConsumerState,\n UserInfo,\n StytchProjectConfigurationInput,\n UserGetConnectedAppsResponse,\n UnsubscribeFunction,\n} from '../public';\nimport { INetworkClient } from '../NetworkClient';\nimport { IConsumerSubscriptionService } from '../SubscriptionService';\nimport { omitUser, removeResponseCommon, WithUser } from '../utils';\nimport { validateInDev } from '../utils/dev';\n\nexport class HeadlessUserClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessUserClient\n{\n constructor(\n private _networkClient: INetworkClient,\n private _subscriptionService: IConsumerSubscriptionService<TProjectConfiguration>,\n ) {}\n\n get = async (): Promise<User> => {\n const resp = await this._networkClient.fetchSDK<User & ResponseCommon>({\n url: '/users/me',\n method: 'GET',\n });\n const user = removeResponseCommon(resp);\n this._subscriptionService.updateUser(user);\n return user;\n };\n\n getSync = (): User | null => {\n return this._subscriptionService.getUser();\n };\n\n getInfo = (): UserInfo => ({\n user: this.getSync(),\n fromCache: this._subscriptionService.getFromCache(),\n });\n\n update = async (options: UserUpdateOptions) => {\n validateInDev('stytch.user.update', options, {\n untrusted_metadata: 'optionalObject',\n });\n const resp = await this._networkClient.fetchSDK<WithUser<UserUpdateResponse>>({\n url: '/users/me',\n body: options,\n method: 'PUT',\n });\n const user = removeResponseCommon(resp.__user);\n this._subscriptionService.updateUser(user);\n return omitUser(resp);\n };\n\n deleteEmail = async (emailId: string) => {\n const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n url: `/users/emails/${emailId}`,\n method: 'DELETE',\n });\n const user = removeResponseCommon(resp.__user);\n this._subscriptionService.updateUser(user);\n return omitUser(resp);\n };\n\n deletePhoneNumber = async (phoneId: string) => {\n const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n url: `/users/phone_numbers/${phoneId}`,\n method: 'DELETE',\n });\n const user = removeResponseCommon(resp.__user);\n this._subscriptionService.updateUser(user);\n return omitUser(resp);\n };\n\n deleteTOTP = async (totpId: string) => {\n const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n url: `/users/totps/${totpId}`,\n method: 'DELETE',\n });\n const user = removeResponseCommon(resp.__user);\n this._subscriptionService.updateUser(user);\n return omitUser(resp);\n };\n\n deleteCryptoWallet = async (cryptoWalletId: string) => {\n const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n url: `/users/crypto_wallets/${cryptoWalletId}`,\n method: 'DELETE',\n });\n const user = removeResponseCommon(resp.__user);\n this._subscriptionService.updateUser(user);\n return omitUser(resp);\n };\n\n deleteOAuthRegistration = async (oauthUserRegistrationId: string) => {\n const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n url: `/users/oauth/${oauthUserRegistrationId}`,\n method: 'DELETE',\n });\n const user = removeResponseCommon(resp.__user);\n this._subscriptionService.updateUser(user);\n return omitUser(resp);\n };\n\n deleteWebauthnRegistration = async (webAuthnId: string) => {\n const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n url: `/users/webauthn_registrations/${webAuthnId}`,\n method: 'DELETE',\n });\n const user = removeResponseCommon(resp.__user);\n this._subscriptionService.updateUser(user);\n return omitUser(resp);\n };\n\n deleteBiometricRegistration = async (biometricRegistrationId: string) => {\n const resp = await this._networkClient.fetchSDK<WithUser<UpdateResponse>>({\n url: `/users/biometric_registrations/${biometricRegistrationId}`,\n method: 'DELETE',\n });\n const user = removeResponseCommon(resp.__user);\n this._subscriptionService.updateUser(user);\n return omitUser(resp);\n };\n\n onChange = (callback: UserOnChangeCallback): UnsubscribeFunction => {\n let lastVal = this._subscriptionService.getUser();\n const listener = (state: ConsumerState | null) => {\n if (state?.user !== lastVal) {\n lastVal = state?.user ?? null;\n callback(lastVal);\n }\n };\n return this._subscriptionService.subscribeToState(listener);\n };\n\n getConnectedApps = async () => {\n return await this._networkClient.fetchSDK<UserGetConnectedAppsResponse>({\n url: '/users/connected_apps',\n method: 'GET',\n });\n };\n\n revokedConnectedApp = async (connectedAppId: string) => {\n return await this._networkClient.fetchSDK<ResponseCommon>({\n url: `/users/connected_apps/${connectedAppId}/revoke`,\n method: 'POST',\n });\n };\n}\n"],"names":["HeadlessUserClient","_subscriptionService","_networkClient","get","resp","fetchSDK","url","method","user","removeResponseCommon","updateUser","getSync","getUser","getInfo","fromCache","getFromCache","update","options","validateInDev","untrusted_metadata","body","__user","omitUser","deleteEmail","emailId","deletePhoneNumber","phoneId","deleteTOTP","totpId","deleteCryptoWallet","cryptoWalletId","deleteOAuthRegistration","oauthUserRegistrationId","deleteWebauthnRegistration","webAuthnId","deleteBiometricRegistration","biometricRegistrationId","onChange","callback","lastVal","listener","state","subscribeToState","getConnectedApps","revokedConnectedApp","connectedAppId"],"mappings":"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"}
@@ -13,16 +13,6 @@ class HeadlessWebAuthnClient {
13
13
  this._networkClient = _networkClient;
14
14
  this._subscriptionService = _subscriptionService;
15
15
  this.dfpProtectedAuth = dfpProtectedAuth;
16
- this.checkEligibleInputs = ()=>{
17
- // Check for an <input> with "webauthn" in its `autocomplete` attribute
18
- const eligibleInputs = document.querySelectorAll("input[autocomplete*='webauthn']");
19
- // WebAuthn autofill requires at least one valid input
20
- if (eligibleInputs.length < 1) {
21
- logger.error('No <input> with `"webauthn"` in its `autocomplete` attribute was detected');
22
- return false;
23
- }
24
- return true;
25
- };
26
16
  this.register = this._subscriptionService.withUpdateSession(async (options)=>{
27
17
  if (options) {
28
18
  validateInDev('stytch.webauthn.register', options, {
@@ -136,7 +126,16 @@ class HeadlessWebAuthnClient {
136
126
  async browserSupportsAutofill() {
137
127
  return await window.PublicKeyCredential?.isConditionalMediationAvailable?.() ?? false;
138
128
  }
139
- checkEligibleInputs;
129
+ checkEligibleInputs = ()=>{
130
+ // Check for an <input> with "webauthn" in its `autocomplete` attribute
131
+ const eligibleInputs = document.querySelectorAll("input[autocomplete*='webauthn']");
132
+ // WebAuthn autofill requires at least one valid input
133
+ if (eligibleInputs.length < 1) {
134
+ logger.error('No <input> with `"webauthn"` in its `autocomplete` attribute was detected');
135
+ return false;
136
+ }
137
+ return true;
138
+ };
140
139
  }
141
140
 
142
141
  export { HeadlessWebAuthnClient };
@@ -1 +1 @@
1
- {"version":3,"file":"HeadlessWebAuthnClient.mjs","sources":["../../../../../../../core/src/HeadlessClients/HeadlessWebAuthnClient.ts"],"sourcesContent":["import * as webauthnJson from '@github/webauthn-json';\nimport {\n IHeadlessWebAuthnClient,\n StytchProjectConfigurationInput,\n WebAuthnAuthenticateResponse,\n WebAuthnAuthenticateStartOptions,\n WebAuthnAuthenticateStartResponse,\n WebAuthnRegisterResponse,\n WebAuthnRegisterStartOptions,\n WebAuthnRegisterStartResponse,\n WebAuthnUpdateOptions,\n WebAuthnUpdateResponse,\n} from '../public';\n\nimport { IConsumerSubscriptionService, IDFPProtectedAuthProvider, INetworkClient } from '..';\nimport { logger, omitUser, WithUser } from '../utils';\nimport { validateInDev } from '../utils/dev';\n\nexport class HeadlessWebAuthnClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessWebAuthnClient<TProjectConfiguration>\n{\n register: (options: WebAuthnRegisterStartOptions) => Promise<WebAuthnRegisterResponse<TProjectConfiguration>>;\n\n authenticate: (\n options: WebAuthnAuthenticateStartOptions,\n ) => Promise<WebAuthnAuthenticateResponse<TProjectConfiguration> | null>;\n\n constructor(\n public _networkClient: INetworkClient,\n private _subscriptionService: IConsumerSubscriptionService<TProjectConfiguration>,\n private dfpProtectedAuth: IDFPProtectedAuthProvider,\n ) {\n this.register = this._subscriptionService.withUpdateSession(\n async (options?: WebAuthnRegisterStartOptions): Promise<WebAuthnRegisterResponse<TProjectConfiguration>> => {\n if (options) {\n validateInDev('stytch.webauthn.register', options, {\n domain: 'optionalString',\n authenticator_type: 'optionalString',\n is_passkey: 'optionalBoolean',\n session_duration_minutes: 'number',\n override_id: 'optionalString',\n override_name: 'optionalString',\n override_display_name: 'optionalString',\n use_base64_url_encoding: 'optionalBoolean',\n });\n }\n\n const startResp = await this._networkClient.fetchSDK<WebAuthnRegisterStartResponse>({\n url: '/webauthn/register/start',\n method: 'POST',\n body: {\n domain: options?.domain ?? window.location.hostname,\n authenticator_type: options?.authenticator_type ?? undefined,\n return_passkey_credential_options: options?.is_passkey,\n override_id: options?.override_id,\n override_name: options?.override_name,\n override_display_name: options?.override_display_name,\n user_agent: navigator.userAgent,\n use_base64_url_encoding: options?.use_base64_url_encoding,\n },\n });\n\n const publicKeyCredentialCreationOptions = startResp.public_key_credential_creation_options;\n const publicKey = JSON.parse(publicKeyCredentialCreationOptions);\n\n const credential = await webauthnJson.create({\n publicKey: publicKey,\n });\n\n const resp = await this._networkClient.fetchSDK<WithUser<WebAuthnRegisterResponse<TProjectConfiguration>>>({\n url: '/webauthn/register',\n method: 'POST',\n body: {\n public_key_credential: JSON.stringify(credential),\n session_duration_minutes: options?.session_duration_minutes,\n },\n });\n\n return omitUser(resp);\n },\n );\n\n this.authenticate = this._subscriptionService.withUpdateSession(\n async (\n options: WebAuthnAuthenticateStartOptions,\n ): Promise<WebAuthnAuthenticateResponse<TProjectConfiguration> | null> => {\n validateInDev('stytch.webauthn.authenticate', options, {\n domain: 'optionalString',\n session_duration_minutes: 'number',\n is_passkey: 'optionalBoolean',\n signal: 'optionalObject',\n conditional_mediation: 'optionalBoolean',\n disable_input_check: 'optionalBoolean',\n });\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n\n if (options.conditional_mediation) {\n if (!(await this.browserSupportsAutofill())) {\n logger.error('Browser does not support WebAuthn autofill');\n return null;\n }\n\n if (!options.disable_input_check && !this.checkEligibleInputs()) {\n return null;\n }\n }\n\n const isLoggedIn = !!this._subscriptionService.getSession();\n\n const endpoint = isLoggedIn ? '/webauthn/authenticate/start/secondary' : '/webauthn/authenticate/start/primary';\n\n const startResp = await this._networkClient.fetchSDK<WebAuthnAuthenticateStartResponse>({\n url: endpoint,\n method: 'POST',\n body: {\n domain: options.domain ?? window.location.hostname,\n return_passkey_credential_options: options?.is_passkey,\n },\n });\n\n const publicKeyCredentialRequestOptions = startResp.public_key_credential_request_options;\n const abortController = new AbortController();\n const credReqOptions = {\n publicKey: JSON.parse(publicKeyCredentialRequestOptions),\n signal: options.signal ?? abortController.signal,\n };\n const conditionalMediationCredReqOption = {\n ...credReqOptions,\n mediation: 'conditional' as CredentialMediationRequirement,\n };\n const credential = await webauthnJson.get(\n options.conditional_mediation ? conditionalMediationCredReqOption : credReqOptions,\n );\n\n const authenticationData = await this._networkClient.retriableFetchSDK<\n WithUser<WebAuthnAuthenticateResponse<TProjectConfiguration>>\n >({\n url: '/webauthn/authenticate',\n method: 'POST',\n body: {\n public_key_credential: JSON.stringify(credential),\n session_duration_minutes: options.session_duration_minutes,\n dfp_telemetry_id,\n captcha_token,\n },\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n\n return omitUser(authenticationData);\n },\n );\n }\n\n async update(options: WebAuthnUpdateOptions): Promise<WebAuthnUpdateResponse> {\n validateInDev('stytch.webauthn.update', options, {\n webauthn_registration_id: 'string',\n name: 'string',\n });\n\n const url = '/webauthn/update/' + options.webauthn_registration_id;\n return await this._networkClient.fetchSDK<WebAuthnUpdateResponse>({\n url: url,\n method: 'PUT',\n body: {\n name: options.name,\n },\n });\n }\n\n async browserSupportsAutofill(): Promise<boolean> {\n return (await window.PublicKeyCredential?.isConditionalMediationAvailable?.()) ?? false;\n }\n\n private checkEligibleInputs = (): boolean => {\n // Check for an <input> with \"webauthn\" in its `autocomplete` attribute\n const eligibleInputs = document.querySelectorAll(\"input[autocomplete*='webauthn']\");\n // WebAuthn autofill requires at least one valid input\n if (eligibleInputs.length < 1) {\n logger.error('No <input> with `\"webauthn\"` in its `autocomplete` attribute was detected');\n return false;\n }\n return true;\n };\n}\n"],"names":["HeadlessWebAuthnClient","register","authenticate","constructor","_networkClient","_subscriptionService","dfpProtectedAuth","checkEligibleInputs","eligibleInputs","document","querySelectorAll","length","logger","error","withUpdateSession","options","validateInDev","domain","authenticator_type","is_passkey","session_duration_minutes","override_id","override_name","override_display_name","use_base64_url_encoding","startResp","fetchSDK","url","method","body","window","location","hostname","undefined","return_passkey_credential_options","user_agent","navigator","userAgent","publicKeyCredentialCreationOptions","public_key_credential_creation_options","publicKey","JSON","parse","credential","webauthnJson","resp","public_key_credential","stringify","omitUser","signal","conditional_mediation","disable_input_check","dfp_telemetry_id","captcha_token","getDFPTelemetryIDAndCaptcha","browserSupportsAutofill","isLoggedIn","getSession","endpoint","publicKeyCredentialRequestOptions","public_key_credential_request_options","abortController","AbortController","credReqOptions","conditionalMediationCredReqOption","mediation","authenticationData","retriableFetchSDK","retryCallback","retryWithCaptchaAndDFP","update","webauthn_registration_id","name","PublicKeyCredential","isConditionalMediationAvailable"],"mappings":"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"}
1
+ {"version":3,"file":"HeadlessWebAuthnClient.mjs","sources":["../../../../../../../core/src/HeadlessClients/HeadlessWebAuthnClient.ts"],"sourcesContent":["import * as webauthnJson from '@github/webauthn-json';\nimport {\n IHeadlessWebAuthnClient,\n StytchProjectConfigurationInput,\n WebAuthnAuthenticateResponse,\n WebAuthnAuthenticateStartOptions,\n WebAuthnAuthenticateStartResponse,\n WebAuthnRegisterResponse,\n WebAuthnRegisterStartOptions,\n WebAuthnRegisterStartResponse,\n WebAuthnUpdateOptions,\n WebAuthnUpdateResponse,\n} from '../public';\n\nimport { IConsumerSubscriptionService, IDFPProtectedAuthProvider, INetworkClient } from '..';\nimport { logger, omitUser, WithUser } from '../utils';\nimport { validateInDev } from '../utils/dev';\n\nexport class HeadlessWebAuthnClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessWebAuthnClient<TProjectConfiguration>\n{\n register: (options: WebAuthnRegisterStartOptions) => Promise<WebAuthnRegisterResponse<TProjectConfiguration>>;\n\n authenticate: (\n options: WebAuthnAuthenticateStartOptions,\n ) => Promise<WebAuthnAuthenticateResponse<TProjectConfiguration> | null>;\n\n constructor(\n public _networkClient: INetworkClient,\n private _subscriptionService: IConsumerSubscriptionService<TProjectConfiguration>,\n private dfpProtectedAuth: IDFPProtectedAuthProvider,\n ) {\n this.register = this._subscriptionService.withUpdateSession(\n async (options?: WebAuthnRegisterStartOptions): Promise<WebAuthnRegisterResponse<TProjectConfiguration>> => {\n if (options) {\n validateInDev('stytch.webauthn.register', options, {\n domain: 'optionalString',\n authenticator_type: 'optionalString',\n is_passkey: 'optionalBoolean',\n session_duration_minutes: 'number',\n override_id: 'optionalString',\n override_name: 'optionalString',\n override_display_name: 'optionalString',\n use_base64_url_encoding: 'optionalBoolean',\n });\n }\n\n const startResp = await this._networkClient.fetchSDK<WebAuthnRegisterStartResponse>({\n url: '/webauthn/register/start',\n method: 'POST',\n body: {\n domain: options?.domain ?? window.location.hostname,\n authenticator_type: options?.authenticator_type ?? undefined,\n return_passkey_credential_options: options?.is_passkey,\n override_id: options?.override_id,\n override_name: options?.override_name,\n override_display_name: options?.override_display_name,\n user_agent: navigator.userAgent,\n use_base64_url_encoding: options?.use_base64_url_encoding,\n },\n });\n\n const publicKeyCredentialCreationOptions = startResp.public_key_credential_creation_options;\n const publicKey = JSON.parse(publicKeyCredentialCreationOptions);\n\n const credential = await webauthnJson.create({\n publicKey: publicKey,\n });\n\n const resp = await this._networkClient.fetchSDK<WithUser<WebAuthnRegisterResponse<TProjectConfiguration>>>({\n url: '/webauthn/register',\n method: 'POST',\n body: {\n public_key_credential: JSON.stringify(credential),\n session_duration_minutes: options?.session_duration_minutes,\n },\n });\n\n return omitUser(resp);\n },\n );\n\n this.authenticate = this._subscriptionService.withUpdateSession(\n async (\n options: WebAuthnAuthenticateStartOptions,\n ): Promise<WebAuthnAuthenticateResponse<TProjectConfiguration> | null> => {\n validateInDev('stytch.webauthn.authenticate', options, {\n domain: 'optionalString',\n session_duration_minutes: 'number',\n is_passkey: 'optionalBoolean',\n signal: 'optionalObject',\n conditional_mediation: 'optionalBoolean',\n disable_input_check: 'optionalBoolean',\n });\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n\n if (options.conditional_mediation) {\n if (!(await this.browserSupportsAutofill())) {\n logger.error('Browser does not support WebAuthn autofill');\n return null;\n }\n\n if (!options.disable_input_check && !this.checkEligibleInputs()) {\n return null;\n }\n }\n\n const isLoggedIn = !!this._subscriptionService.getSession();\n\n const endpoint = isLoggedIn ? '/webauthn/authenticate/start/secondary' : '/webauthn/authenticate/start/primary';\n\n const startResp = await this._networkClient.fetchSDK<WebAuthnAuthenticateStartResponse>({\n url: endpoint,\n method: 'POST',\n body: {\n domain: options.domain ?? window.location.hostname,\n return_passkey_credential_options: options?.is_passkey,\n },\n });\n\n const publicKeyCredentialRequestOptions = startResp.public_key_credential_request_options;\n const abortController = new AbortController();\n const credReqOptions = {\n publicKey: JSON.parse(publicKeyCredentialRequestOptions),\n signal: options.signal ?? abortController.signal,\n };\n const conditionalMediationCredReqOption = {\n ...credReqOptions,\n mediation: 'conditional' as CredentialMediationRequirement,\n };\n const credential = await webauthnJson.get(\n options.conditional_mediation ? conditionalMediationCredReqOption : credReqOptions,\n );\n\n const authenticationData = await this._networkClient.retriableFetchSDK<\n WithUser<WebAuthnAuthenticateResponse<TProjectConfiguration>>\n >({\n url: '/webauthn/authenticate',\n method: 'POST',\n body: {\n public_key_credential: JSON.stringify(credential),\n session_duration_minutes: options.session_duration_minutes,\n dfp_telemetry_id,\n captcha_token,\n },\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n\n return omitUser(authenticationData);\n },\n );\n }\n\n async update(options: WebAuthnUpdateOptions): Promise<WebAuthnUpdateResponse> {\n validateInDev('stytch.webauthn.update', options, {\n webauthn_registration_id: 'string',\n name: 'string',\n });\n\n const url = '/webauthn/update/' + options.webauthn_registration_id;\n return await this._networkClient.fetchSDK<WebAuthnUpdateResponse>({\n url: url,\n method: 'PUT',\n body: {\n name: options.name,\n },\n });\n }\n\n async browserSupportsAutofill(): Promise<boolean> {\n return (await window.PublicKeyCredential?.isConditionalMediationAvailable?.()) ?? false;\n }\n\n private checkEligibleInputs = (): boolean => {\n // Check for an <input> with \"webauthn\" in its `autocomplete` attribute\n const eligibleInputs = document.querySelectorAll(\"input[autocomplete*='webauthn']\");\n // WebAuthn autofill requires at least one valid input\n if (eligibleInputs.length < 1) {\n logger.error('No <input> with `\"webauthn\"` in its `autocomplete` attribute was detected');\n return false;\n }\n return true;\n };\n}\n"],"names":["HeadlessWebAuthnClient","register","authenticate","_networkClient","_subscriptionService","dfpProtectedAuth","withUpdateSession","options","validateInDev","domain","authenticator_type","is_passkey","session_duration_minutes","override_id","override_name","override_display_name","use_base64_url_encoding","startResp","fetchSDK","url","method","body","window","location","hostname","undefined","return_passkey_credential_options","user_agent","navigator","userAgent","publicKeyCredentialCreationOptions","public_key_credential_creation_options","publicKey","JSON","parse","credential","webauthnJson","resp","public_key_credential","stringify","omitUser","signal","conditional_mediation","disable_input_check","dfp_telemetry_id","captcha_token","getDFPTelemetryIDAndCaptcha","browserSupportsAutofill","logger","error","checkEligibleInputs","isLoggedIn","getSession","endpoint","publicKeyCredentialRequestOptions","public_key_credential_request_options","abortController","AbortController","credReqOptions","conditionalMediationCredReqOption","mediation","authenticationData","retriableFetchSDK","retryCallback","retryWithCaptchaAndDFP","update","webauthn_registration_id","name","PublicKeyCredential","isConditionalMediationAvailable","eligibleInputs","document","querySelectorAll","length"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"HeadlessB2BDiscoveryClient.mjs","sources":["../../../../../../../../core/src/HeadlessClients/b2b/HeadlessB2BDiscoveryClient.ts"],"sourcesContent":["import {\n B2BDiscoveryIntermediateSessionsExchangeOptions,\n B2BDiscoveryIntermediateSessionsExchangeResponse,\n B2BDiscoveryOrganizationsCreateOptions,\n B2BDiscoveryOrganizationsCreateResponse,\n B2BDiscoveryOrganizationsResponse,\n IHeadlessB2BDiscoveryClient,\n StytchProjectConfigurationInput,\n} from '../../public';\nimport { INetworkClient } from '../..';\nimport { IB2BSubscriptionService } from '../..';\nimport { validateInDev } from '../../utils/dev';\n\nexport class HeadlessB2BDiscoveryClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BDiscoveryClient<TProjectConfiguration>\n{\n organizations: {\n list: () => Promise<B2BDiscoveryOrganizationsResponse>;\n create: (\n data: B2BDiscoveryOrganizationsCreateOptions,\n ) => Promise<B2BDiscoveryOrganizationsCreateResponse<TProjectConfiguration>>;\n };\n\n intermediateSessions: {\n exchange: (\n data: B2BDiscoveryIntermediateSessionsExchangeOptions,\n ) => Promise<B2BDiscoveryIntermediateSessionsExchangeResponse<TProjectConfiguration>>;\n };\n\n constructor(\n private _networkClient: INetworkClient,\n private _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n ) {\n this.organizations = {\n list: async () =>\n this._networkClient.fetchSDK<B2BDiscoveryOrganizationsResponse>({\n url: '/b2b/discovery/organizations',\n body: {\n intermediate_session_token: (await this._subscriptionService.getIntermediateSessionToken()) || undefined,\n },\n method: 'POST',\n }),\n create: this._subscriptionService.withUpdateSession(\n async (\n data: B2BDiscoveryOrganizationsCreateOptions,\n ): Promise<B2BDiscoveryOrganizationsCreateResponse<TProjectConfiguration>> => {\n validateInDev('stytch.discovery.organizations.create', data, {\n session_duration_minutes: 'number',\n organization_name: 'optionalString',\n organization_slug: 'optionalString',\n organization_logo_url: 'optionalString',\n sso_jit_provisioning: 'optionalString',\n email_allowed_domains: 'optionalStringArray',\n email_invites: 'optionalString',\n auth_methods: 'optionalString',\n allowed_auth_methods: 'optionalStringArray',\n mfa_policy: 'optionalString',\n });\n\n const requestBody = {\n ...data,\n intermediate_session_token: (await this._subscriptionService.getIntermediateSessionToken()) || undefined,\n };\n\n return this._networkClient.fetchSDK<B2BDiscoveryOrganizationsCreateResponse<TProjectConfiguration>>({\n url: '/b2b/discovery/organizations/create',\n body: requestBody,\n method: 'POST',\n });\n },\n ),\n };\n\n this.intermediateSessions = {\n exchange: this._subscriptionService.withUpdateSession(\n async (\n data: B2BDiscoveryIntermediateSessionsExchangeOptions,\n ): Promise<B2BDiscoveryIntermediateSessionsExchangeResponse<TProjectConfiguration>> => {\n validateInDev('stytch.discovery.intermediateSessions.exchange', data, {\n organization_id: 'string',\n session_duration_minutes: 'number',\n locale: 'optionalString',\n });\n\n const requestBody = {\n ...data,\n intermediate_session_token: this._subscriptionService.getIntermediateSessionToken() || undefined,\n };\n return this._networkClient.fetchSDK<B2BDiscoveryIntermediateSessionsExchangeResponse<TProjectConfiguration>>({\n url: '/b2b/discovery/intermediate_sessions/exchange',\n body: requestBody,\n method: 'POST',\n });\n },\n ),\n };\n }\n}\n"],"names":["HeadlessB2BDiscoveryClient","organizations","intermediateSessions","constructor","_subscriptionService","_networkClient","list","fetchSDK","url","body","intermediate_session_token","getIntermediateSessionToken","undefined","method","create","withUpdateSession","data","validateInDev","session_duration_minutes","organization_name","organization_slug","organization_logo_url","sso_jit_provisioning","email_allowed_domains","email_invites","auth_methods","allowed_auth_methods","mfa_policy","requestBody","exchange","organization_id","locale"],"mappings":";;AAaO,MAAMA,0BAAAA,CAAAA;;;IAGXC,aAAAA;IAOAC,oBAAAA;AAMAC,IAAAA,WAAAA,CACE,cAAsC,EAC9BC,oBAAoE,CAC5E;aAFQC,cAAAA,GAAAA,cAAAA;aACAD,oBAAAA,GAAAA,oBAAAA;QAER,IAAI,CAACH,aAAa,GAAG;AACnBK,YAAAA,IAAAA,EAAM,UACJ,IAAI,CAACD,cAAc,CAACE,QAAQ,CAAoC;oBAC9DC,GAAAA,EAAK,8BAAA;oBACLC,IAAAA,EAAM;AACJC,wBAAAA,0BAAAA,EAA4B,MAAO,IAAI,CAACN,oBAAoB,CAACO,2BAA2B,EAAA,IAAOC;AACjG,qBAAA;oBACAC,MAAAA,EAAQ;AACV,iBAAA,CAAA;AACFC,YAAAA,MAAAA,EAAQ,IAAI,CAACV,oBAAoB,CAACW,iBAAiB,CACjD,OACEC,IAAAA,GAAAA;AAEAC,gBAAAA,aAAAA,CAAc,yCAAyCD,IAAAA,EAAM;oBAC3DE,wBAAAA,EAA0B,QAAA;oBAC1BC,iBAAAA,EAAmB,gBAAA;oBACnBC,iBAAAA,EAAmB,gBAAA;oBACnBC,qBAAAA,EAAuB,gBAAA;oBACvBC,oBAAAA,EAAsB,gBAAA;oBACtBC,qBAAAA,EAAuB,qBAAA;oBACvBC,aAAAA,EAAe,gBAAA;oBACfC,YAAAA,EAAc,gBAAA;oBACdC,oBAAAA,EAAsB,qBAAA;oBACtBC,UAAAA,EAAY;AACd,iBAAA,CAAA;AAEA,gBAAA,MAAMC,WAAAA,GAAc;AAClB,oBAAA,GAAGZ,IAAI;AACPN,oBAAAA,0BAAAA,EAA4B,MAAO,IAAI,CAACN,oBAAoB,CAACO,2BAA2B,EAAA,IAAOC;AACjG,iBAAA;AAEA,gBAAA,OAAO,IAAI,CAACP,cAAc,CAACE,QAAQ,CAAiE;oBAClGC,GAAAA,EAAK,qCAAA;oBACLC,IAAAA,EAAMmB,WAAAA;oBACNf,MAAAA,EAAQ;AACV,iBAAA,CAAA;AACF,YAAA,CAAA;AAEJ,SAAA;QAEA,IAAI,CAACX,oBAAoB,GAAG;AAC1B2B,YAAAA,QAAAA,EAAU,IAAI,CAACzB,oBAAoB,CAACW,iBAAiB,CACnD,OACEC,IAAAA,GAAAA;AAEAC,gBAAAA,aAAAA,CAAc,kDAAkDD,IAAAA,EAAM;oBACpEc,eAAAA,EAAiB,QAAA;oBACjBZ,wBAAAA,EAA0B,QAAA;oBAC1Ba,MAAAA,EAAQ;AACV,iBAAA,CAAA;AAEA,gBAAA,MAAMH,WAAAA,GAAc;AAClB,oBAAA,GAAGZ,IAAI;AACPN,oBAAAA,0BAAAA,EAA4B,IAAI,CAACN,oBAAoB,CAACO,2BAA2B,EAAA,IAAMC;AACzF,iBAAA;AACA,gBAAA,OAAO,IAAI,CAACP,cAAc,CAACE,QAAQ,CAA0E;oBAC3GC,GAAAA,EAAK,+CAAA;oBACLC,IAAAA,EAAMmB,WAAAA;oBACNf,MAAAA,EAAQ;AACV,iBAAA,CAAA;AACF,YAAA,CAAA;AAEJ,SAAA;AACF,IAAA;AACF;;;;"}
1
+ {"version":3,"file":"HeadlessB2BDiscoveryClient.mjs","sources":["../../../../../../../../core/src/HeadlessClients/b2b/HeadlessB2BDiscoveryClient.ts"],"sourcesContent":["import {\n B2BDiscoveryIntermediateSessionsExchangeOptions,\n B2BDiscoveryIntermediateSessionsExchangeResponse,\n B2BDiscoveryOrganizationsCreateOptions,\n B2BDiscoveryOrganizationsCreateResponse,\n B2BDiscoveryOrganizationsResponse,\n IHeadlessB2BDiscoveryClient,\n StytchProjectConfigurationInput,\n} from '../../public';\nimport { INetworkClient } from '../..';\nimport { IB2BSubscriptionService } from '../..';\nimport { validateInDev } from '../../utils/dev';\n\nexport class HeadlessB2BDiscoveryClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BDiscoveryClient<TProjectConfiguration>\n{\n organizations: {\n list: () => Promise<B2BDiscoveryOrganizationsResponse>;\n create: (\n data: B2BDiscoveryOrganizationsCreateOptions,\n ) => Promise<B2BDiscoveryOrganizationsCreateResponse<TProjectConfiguration>>;\n };\n\n intermediateSessions: {\n exchange: (\n data: B2BDiscoveryIntermediateSessionsExchangeOptions,\n ) => Promise<B2BDiscoveryIntermediateSessionsExchangeResponse<TProjectConfiguration>>;\n };\n\n constructor(\n private _networkClient: INetworkClient,\n private _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n ) {\n this.organizations = {\n list: async () =>\n this._networkClient.fetchSDK<B2BDiscoveryOrganizationsResponse>({\n url: '/b2b/discovery/organizations',\n body: {\n intermediate_session_token: (await this._subscriptionService.getIntermediateSessionToken()) || undefined,\n },\n method: 'POST',\n }),\n create: this._subscriptionService.withUpdateSession(\n async (\n data: B2BDiscoveryOrganizationsCreateOptions,\n ): Promise<B2BDiscoveryOrganizationsCreateResponse<TProjectConfiguration>> => {\n validateInDev('stytch.discovery.organizations.create', data, {\n session_duration_minutes: 'number',\n organization_name: 'optionalString',\n organization_slug: 'optionalString',\n organization_logo_url: 'optionalString',\n sso_jit_provisioning: 'optionalString',\n email_allowed_domains: 'optionalStringArray',\n email_invites: 'optionalString',\n auth_methods: 'optionalString',\n allowed_auth_methods: 'optionalStringArray',\n mfa_policy: 'optionalString',\n });\n\n const requestBody = {\n ...data,\n intermediate_session_token: (await this._subscriptionService.getIntermediateSessionToken()) || undefined,\n };\n\n return this._networkClient.fetchSDK<B2BDiscoveryOrganizationsCreateResponse<TProjectConfiguration>>({\n url: '/b2b/discovery/organizations/create',\n body: requestBody,\n method: 'POST',\n });\n },\n ),\n };\n\n this.intermediateSessions = {\n exchange: this._subscriptionService.withUpdateSession(\n async (\n data: B2BDiscoveryIntermediateSessionsExchangeOptions,\n ): Promise<B2BDiscoveryIntermediateSessionsExchangeResponse<TProjectConfiguration>> => {\n validateInDev('stytch.discovery.intermediateSessions.exchange', data, {\n organization_id: 'string',\n session_duration_minutes: 'number',\n locale: 'optionalString',\n });\n\n const requestBody = {\n ...data,\n intermediate_session_token: this._subscriptionService.getIntermediateSessionToken() || undefined,\n };\n return this._networkClient.fetchSDK<B2BDiscoveryIntermediateSessionsExchangeResponse<TProjectConfiguration>>({\n url: '/b2b/discovery/intermediate_sessions/exchange',\n body: requestBody,\n method: 'POST',\n });\n },\n ),\n };\n }\n}\n"],"names":["HeadlessB2BDiscoveryClient","organizations","intermediateSessions","_subscriptionService","_networkClient","list","fetchSDK","url","body","intermediate_session_token","getIntermediateSessionToken","undefined","method","create","withUpdateSession","data","validateInDev","session_duration_minutes","organization_name","organization_slug","organization_logo_url","sso_jit_provisioning","email_allowed_domains","email_invites","auth_methods","allowed_auth_methods","mfa_policy","requestBody","exchange","organization_id","locale"],"mappings":";;AAaO,MAAMA,0BAAAA,CAAAA;;;IAGXC,aAAAA;IAOAC,oBAAAA;AAMA,IAAA,WAAA,CACE,cAAsC,EAC9BC,oBAAoE,CAC5E;aAFQC,cAAAA,GAAAA,cAAAA;aACAD,oBAAAA,GAAAA,oBAAAA;QAER,IAAI,CAACF,aAAa,GAAG;AACnBI,YAAAA,IAAAA,EAAM,UACJ,IAAI,CAACD,cAAc,CAACE,QAAQ,CAAoC;oBAC9DC,GAAAA,EAAK,8BAAA;oBACLC,IAAAA,EAAM;AACJC,wBAAAA,0BAAAA,EAA4B,MAAO,IAAI,CAACN,oBAAoB,CAACO,2BAA2B,EAAA,IAAOC;AACjG,qBAAA;oBACAC,MAAAA,EAAQ;AACV,iBAAA,CAAA;AACFC,YAAAA,MAAAA,EAAQ,IAAI,CAACV,oBAAoB,CAACW,iBAAiB,CACjD,OACEC,IAAAA,GAAAA;AAEAC,gBAAAA,aAAAA,CAAc,yCAAyCD,IAAAA,EAAM;oBAC3DE,wBAAAA,EAA0B,QAAA;oBAC1BC,iBAAAA,EAAmB,gBAAA;oBACnBC,iBAAAA,EAAmB,gBAAA;oBACnBC,qBAAAA,EAAuB,gBAAA;oBACvBC,oBAAAA,EAAsB,gBAAA;oBACtBC,qBAAAA,EAAuB,qBAAA;oBACvBC,aAAAA,EAAe,gBAAA;oBACfC,YAAAA,EAAc,gBAAA;oBACdC,oBAAAA,EAAsB,qBAAA;oBACtBC,UAAAA,EAAY;AACd,iBAAA,CAAA;AAEA,gBAAA,MAAMC,WAAAA,GAAc;AAClB,oBAAA,GAAGZ,IAAI;AACPN,oBAAAA,0BAAAA,EAA4B,MAAO,IAAI,CAACN,oBAAoB,CAACO,2BAA2B,EAAA,IAAOC;AACjG,iBAAA;AAEA,gBAAA,OAAO,IAAI,CAACP,cAAc,CAACE,QAAQ,CAAiE;oBAClGC,GAAAA,EAAK,qCAAA;oBACLC,IAAAA,EAAMmB,WAAAA;oBACNf,MAAAA,EAAQ;AACV,iBAAA,CAAA;AACF,YAAA,CAAA;AAEJ,SAAA;QAEA,IAAI,CAACV,oBAAoB,GAAG;AAC1B0B,YAAAA,QAAAA,EAAU,IAAI,CAACzB,oBAAoB,CAACW,iBAAiB,CACnD,OACEC,IAAAA,GAAAA;AAEAC,gBAAAA,aAAAA,CAAc,kDAAkDD,IAAAA,EAAM;oBACpEc,eAAAA,EAAiB,QAAA;oBACjBZ,wBAAAA,EAA0B,QAAA;oBAC1Ba,MAAAA,EAAQ;AACV,iBAAA,CAAA;AAEA,gBAAA,MAAMH,WAAAA,GAAc;AAClB,oBAAA,GAAGZ,IAAI;AACPN,oBAAAA,0BAAAA,EAA4B,IAAI,CAACN,oBAAoB,CAACO,2BAA2B,EAAA,IAAMC;AACzF,iBAAA;AACA,gBAAA,OAAO,IAAI,CAACP,cAAc,CAACE,QAAQ,CAA0E;oBAC3GC,GAAAA,EAAK,+CAAA;oBACLC,IAAAA,EAAMmB,WAAAA;oBACNf,MAAAA,EAAQ;AACV,iBAAA,CAAA;AACF,YAAA,CAAA;AAEJ,SAAA;AACF,IAAA;AACF;;;;"}
@@ -2,7 +2,8 @@ class HeadlessB2BIDPClient {
2
2
  _networkClient;
3
3
  constructor(_networkClient){
4
4
  this._networkClient = _networkClient;
5
- this./**
5
+ }
6
+ /**
6
7
  * Initiates a request for authorization of a Connected App to access a Member's account.
7
8
  *
8
9
  * Call this endpoint using the query parameters from an OAuth Authorization request. This endpoint validates various fields (scope, client_id, redirect_uri, prompt, etc...) are correct and returns relevant information for rendering an OAuth Consent Screen.
@@ -14,11 +15,11 @@ class HeadlessB2BIDPClient {
14
15
  * scope: 'openid email profile',
15
16
  * });
16
17
  */ oauthAuthorizeStart = async (data)=>this._networkClient.fetchSDK({
17
- url: '/idp/b2b/oauth/authorize/start',
18
- method: 'POST',
19
- body: data
20
- });
21
- this./**
18
+ url: '/idp/b2b/oauth/authorize/start',
19
+ method: 'POST',
20
+ body: data
21
+ });
22
+ /**
22
23
  * Completes a request for authorization of a Connected App to access a Member's account.
23
24
  *
24
25
  * Call this endpoint using the query parameters from an OAuth Authorization request, after previously validating those parameters using the Preflight Check API. Note that this endpoint takes in a few additional parameters the preflight check does not- state, nonce, and code_challenge.
@@ -39,19 +40,15 @@ class HeadlessB2BIDPClient {
39
40
  * scope: 'openid email profile',
40
41
  * });
41
42
  */ oauthAuthorizeSubmit = async (data)=>this._networkClient.fetchSDK({
42
- url: '/idp/b2b/oauth/authorize/submit',
43
- method: 'POST',
44
- body: data
45
- });
46
- this.oauthLogoutStart = async (data)=>this._networkClient.fetchSDK({
47
- url: `/b2b/oauth/logout/start`,
48
- method: 'POST',
49
- body: data
50
- });
51
- }
52
- oauthAuthorizeStart;
53
- oauthAuthorizeSubmit;
54
- oauthLogoutStart;
43
+ url: '/idp/b2b/oauth/authorize/submit',
44
+ method: 'POST',
45
+ body: data
46
+ });
47
+ oauthLogoutStart = async (data)=>this._networkClient.fetchSDK({
48
+ url: `/b2b/oauth/logout/start`,
49
+ method: 'POST',
50
+ body: data
51
+ });
55
52
  }
56
53
 
57
54
  export { HeadlessB2BIDPClient };
@@ -1 +1 @@
1
- {"version":3,"file":"HeadlessB2BIDPClient.mjs","sources":["../../../../../../../../core/src/HeadlessClients/b2b/HeadlessB2BIDPClient.ts"],"sourcesContent":["import { INetworkClient } from '../../NetworkClient';\nimport {\n B2BOAuthAuthorizeStartOptions,\n B2BOAuthAuthorizeStartResponse,\n B2BOAuthAuthorizeSubmitOptions,\n B2BOAuthAuthorizeSubmitResponse,\n IHeadlessB2BIDPClient,\n B2BOAuthLogoutStartOptions,\n B2BOAuthLogoutStartResponse,\n} from '../../public/b2b/idp';\n\nexport class HeadlessB2BIDPClient implements IHeadlessB2BIDPClient {\n constructor(private _networkClient: INetworkClient) {}\n\n /**\n * Initiates a request for authorization of a Connected App to access a Member's account.\n *\n * Call this endpoint using the query parameters from an OAuth Authorization request. This endpoint validates various fields (scope, client_id, redirect_uri, prompt, etc...) are correct and returns relevant information for rendering an OAuth Consent Screen.\n *\n * @example\n * const response = await stytch.idp.oauthAuthorizeStart({\n * client_id: 'client_123',\n * redirect_uri: 'https://example.com/callback',\n * scope: 'openid email profile',\n * });\n */\n oauthAuthorizeStart = async (data: B2BOAuthAuthorizeStartOptions): Promise<B2BOAuthAuthorizeStartResponse> =>\n this._networkClient.fetchSDK<B2BOAuthAuthorizeStartResponse>({\n url: '/idp/b2b/oauth/authorize/start',\n method: 'POST',\n body: data,\n });\n\n /**\n * Completes a request for authorization of a Connected App to access a Member's account.\n *\n * Call this endpoint using the query parameters from an OAuth Authorization request, after previously validating those parameters using the Preflight Check API. Note that this endpoint takes in a few additional parameters the preflight check does not- state, nonce, and code_challenge.\n *\n * If the authorization was successful, the redirect_uri will contain a valid authorization_code embedded as a query parameter. If the authorization was unsuccessful, the redirect_uri will contain an OAuth2.1 error_code. In both cases, redirect the Member to the location for the response to be consumed by the Connected App.\n *\n * Exactly one of the following must be provided to identify the Member granting authorization:\n * organization_id + member_id\n * session_token\n * session_jwt\n *\n * If a session_token or session_jwt is passed, the OAuth Authorization will be linked to the Member's session for tracking purposes. One of these fields must be used if the Connected App intends to complete the Exchange Access Token flow.\n *\n * @example\n * const response = await stytch.idp.oauthAuthorizeSubmit({\n * client_id: 'client_123',\n * redirect_uri: 'https://example.com/callback',\n * scope: 'openid email profile',\n * });\n */\n oauthAuthorizeSubmit = async (data: B2BOAuthAuthorizeSubmitOptions): Promise<B2BOAuthAuthorizeSubmitResponse> =>\n this._networkClient.fetchSDK<B2BOAuthAuthorizeSubmitResponse>({\n url: '/idp/b2b/oauth/authorize/submit',\n method: 'POST',\n body: data,\n });\n\n oauthLogoutStart = async (data: B2BOAuthLogoutStartOptions): Promise<B2BOAuthLogoutStartResponse> =>\n this._networkClient.fetchSDK<B2BOAuthLogoutStartResponse>({\n url: `/b2b/oauth/logout/start`,\n method: 'POST',\n body: data,\n });\n}\n"],"names":["HeadlessB2BIDPClient","constructor","_networkClient","oauthAuthorizeStart","data","fetchSDK","url","method","body","oauthAuthorizeSubmit","oauthLogoutStart"],"mappings":"AAWO,MAAMA,oBAAAA,CAAAA;;IACXC,WAAAA,CAAoBC,cAA8B,CAAE;aAAhCA,cAAAA,GAAAA,cAAAA;AAEpB,QAAA,IAAA;;;;;;;;;;;MAYAC,mBAAAA,GAAsB,OAAOC,IAAAA,GAC3B,IAAI,CAACF,cAAc,CAACG,QAAQ,CAAiC;gBAC3DC,GAAAA,EAAK,gCAAA;gBACLC,MAAAA,EAAQ,MAAA;gBACRC,IAAAA,EAAMJ;AACR,aAAA,CAAA;AAEF,QAAA,IAAA;;;;;;;;;;;;;;;;;;;;MAqBAK,oBAAAA,GAAuB,OAAOL,IAAAA,GAC5B,IAAI,CAACF,cAAc,CAACG,QAAQ,CAAkC;gBAC5DC,GAAAA,EAAK,iCAAA;gBACLC,MAAAA,EAAQ,MAAA;gBACRC,IAAAA,EAAMJ;AACR,aAAA,CAAA;AAEFM,QAAAA,IAAAA,CAAAA,gBAAAA,GAAmB,OAAON,IAAAA,GACxB,IAAI,CAACF,cAAc,CAACG,QAAQ,CAA8B;gBACxDC,GAAAA,EAAK,CAAC,uBAAuB,CAAC;gBAC9BC,MAAAA,EAAQ,MAAA;gBACRC,IAAAA,EAAMJ;AACR,aAAA,CAAA;AAtDmD,IAAA;IAcrDD,mBAAAA;IA4BAM,oBAAAA;IAOAC,gBAAAA;AAMF;;;;"}
1
+ {"version":3,"file":"HeadlessB2BIDPClient.mjs","sources":["../../../../../../../../core/src/HeadlessClients/b2b/HeadlessB2BIDPClient.ts"],"sourcesContent":["import { INetworkClient } from '../../NetworkClient';\nimport {\n B2BOAuthAuthorizeStartOptions,\n B2BOAuthAuthorizeStartResponse,\n B2BOAuthAuthorizeSubmitOptions,\n B2BOAuthAuthorizeSubmitResponse,\n IHeadlessB2BIDPClient,\n B2BOAuthLogoutStartOptions,\n B2BOAuthLogoutStartResponse,\n} from '../../public/b2b/idp';\n\nexport class HeadlessB2BIDPClient implements IHeadlessB2BIDPClient {\n constructor(private _networkClient: INetworkClient) {}\n\n /**\n * Initiates a request for authorization of a Connected App to access a Member's account.\n *\n * Call this endpoint using the query parameters from an OAuth Authorization request. This endpoint validates various fields (scope, client_id, redirect_uri, prompt, etc...) are correct and returns relevant information for rendering an OAuth Consent Screen.\n *\n * @example\n * const response = await stytch.idp.oauthAuthorizeStart({\n * client_id: 'client_123',\n * redirect_uri: 'https://example.com/callback',\n * scope: 'openid email profile',\n * });\n */\n oauthAuthorizeStart = async (data: B2BOAuthAuthorizeStartOptions): Promise<B2BOAuthAuthorizeStartResponse> =>\n this._networkClient.fetchSDK<B2BOAuthAuthorizeStartResponse>({\n url: '/idp/b2b/oauth/authorize/start',\n method: 'POST',\n body: data,\n });\n\n /**\n * Completes a request for authorization of a Connected App to access a Member's account.\n *\n * Call this endpoint using the query parameters from an OAuth Authorization request, after previously validating those parameters using the Preflight Check API. Note that this endpoint takes in a few additional parameters the preflight check does not- state, nonce, and code_challenge.\n *\n * If the authorization was successful, the redirect_uri will contain a valid authorization_code embedded as a query parameter. If the authorization was unsuccessful, the redirect_uri will contain an OAuth2.1 error_code. In both cases, redirect the Member to the location for the response to be consumed by the Connected App.\n *\n * Exactly one of the following must be provided to identify the Member granting authorization:\n * organization_id + member_id\n * session_token\n * session_jwt\n *\n * If a session_token or session_jwt is passed, the OAuth Authorization will be linked to the Member's session for tracking purposes. One of these fields must be used if the Connected App intends to complete the Exchange Access Token flow.\n *\n * @example\n * const response = await stytch.idp.oauthAuthorizeSubmit({\n * client_id: 'client_123',\n * redirect_uri: 'https://example.com/callback',\n * scope: 'openid email profile',\n * });\n */\n oauthAuthorizeSubmit = async (data: B2BOAuthAuthorizeSubmitOptions): Promise<B2BOAuthAuthorizeSubmitResponse> =>\n this._networkClient.fetchSDK<B2BOAuthAuthorizeSubmitResponse>({\n url: '/idp/b2b/oauth/authorize/submit',\n method: 'POST',\n body: data,\n });\n\n oauthLogoutStart = async (data: B2BOAuthLogoutStartOptions): Promise<B2BOAuthLogoutStartResponse> =>\n this._networkClient.fetchSDK<B2BOAuthLogoutStartResponse>({\n url: `/b2b/oauth/logout/start`,\n method: 'POST',\n body: data,\n });\n}\n"],"names":["HeadlessB2BIDPClient","_networkClient","oauthAuthorizeStart","data","fetchSDK","url","method","body","oauthAuthorizeSubmit","oauthLogoutStart"],"mappings":"AAWO,MAAMA,oBAAAA,CAAAA;;IACX,WAAA,CAAoBC,cAA8B,CAAE;aAAhCA,cAAAA,GAAAA,cAAAA;AAAiC,IAAA;AAErD;;;;;;;;;;;MAYAC,mBAAAA,GAAsB,OAAOC,IAAAA,GAC3B,IAAI,CAACF,cAAc,CAACG,QAAQ,CAAiC;YAC3DC,GAAAA,EAAK,gCAAA;YACLC,MAAAA,EAAQ,MAAA;YACRC,IAAAA,EAAMJ;SACR,CAAA;AAEF;;;;;;;;;;;;;;;;;;;;MAqBAK,oBAAAA,GAAuB,OAAOL,IAAAA,GAC5B,IAAI,CAACF,cAAc,CAACG,QAAQ,CAAkC;YAC5DC,GAAAA,EAAK,iCAAA;YACLC,MAAAA,EAAQ,MAAA;YACRC,IAAAA,EAAMJ;SACR,CAAA;AAEFM,IAAAA,gBAAAA,GAAmB,OAAON,IAAAA,GACxB,IAAI,CAACF,cAAc,CAACG,QAAQ,CAA8B;YACxDC,GAAAA,EAAK,CAAC,uBAAuB,CAAC;YAC9BC,MAAAA,EAAQ,MAAA;YACRC,IAAAA,EAAMJ;SACR,CAAA;AACJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"HeadlessB2BImpersonationClient.mjs","sources":["../../../../../../../../core/src/HeadlessClients/b2b/HeadlessB2BImpersonationClient.ts"],"sourcesContent":["import { IB2BSubscriptionService, IDFPProtectedAuthProvider, INetworkClient } from '../..';\nimport {\n B2BImpersonationAuthenticateOptions,\n B2BImpersonationAuthenticateResponse,\n IHeadlessB2BImpersonationClient,\n} from '../../public/b2b/impersonation';\nimport { StytchProjectConfigurationInput } from '../../public/typeConfig';\n\nimport { validateInDev } from '../../utils/dev';\n\nexport class HeadlessB2BImpersonationClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BImpersonationClient<TProjectConfiguration>\n{\n authenticate: (\n data: B2BImpersonationAuthenticateOptions,\n ) => Promise<B2BImpersonationAuthenticateResponse<TProjectConfiguration>>;\n\n constructor(\n private _networkClient: INetworkClient,\n private _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n private dfpProtectedAuth: IDFPProtectedAuthProvider,\n ) {\n this.authenticate = this._subscriptionService.withUpdateSession(\n async (data: B2BImpersonationAuthenticateOptions) => {\n validateInDev('stytch.impersonation.authenticate', data, {\n impersonation_token: 'string',\n });\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n\n return this._networkClient.retriableFetchSDK<B2BImpersonationAuthenticateResponse<TProjectConfiguration>>({\n url: '/b2b/impersonation/authenticate',\n body: {\n ...data,\n dfp_telemetry_id,\n captcha_token,\n },\n method: 'POST',\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n },\n );\n }\n}\n"],"names":["HeadlessB2BImpersonationClient","authenticate","constructor","_networkClient","_subscriptionService","dfpProtectedAuth","withUpdateSession","data","validateInDev","impersonation_token","dfp_telemetry_id","captcha_token","getDFPTelemetryIDAndCaptcha","retriableFetchSDK","url","body","method","retryCallback","retryWithCaptchaAndDFP"],"mappings":";;AAUO,MAAMA,8BAAAA,CAAAA;;;;IAGXC,YAAAA;IAIAC,WAAAA,CACUC,cAA8B,EAC9BC,oBAAoE,EACpEC,gBAA2C,CACnD;aAHQF,cAAAA,GAAAA,cAAAA;aACAC,oBAAAA,GAAAA,oBAAAA;aACAC,gBAAAA,GAAAA,gBAAAA;QAER,IAAI,CAACJ,YAAY,GAAG,IAAI,CAACG,oBAAoB,CAACE,iBAAiB,CAC7D,OAAOC,IAAAA,GAAAA;AACLC,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;AAEnG,YAAA,OAAO,IAAI,CAACT,cAAc,CAACU,iBAAiB,CAA8D;gBACxGC,GAAAA,EAAK,iCAAA;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;AAEJ,IAAA;AACF;;;;"}
1
+ {"version":3,"file":"HeadlessB2BImpersonationClient.mjs","sources":["../../../../../../../../core/src/HeadlessClients/b2b/HeadlessB2BImpersonationClient.ts"],"sourcesContent":["import { IB2BSubscriptionService, IDFPProtectedAuthProvider, INetworkClient } from '../..';\nimport {\n B2BImpersonationAuthenticateOptions,\n B2BImpersonationAuthenticateResponse,\n IHeadlessB2BImpersonationClient,\n} from '../../public/b2b/impersonation';\nimport { StytchProjectConfigurationInput } from '../../public/typeConfig';\n\nimport { validateInDev } from '../../utils/dev';\n\nexport class HeadlessB2BImpersonationClient<TProjectConfiguration extends StytchProjectConfigurationInput>\n implements IHeadlessB2BImpersonationClient<TProjectConfiguration>\n{\n authenticate: (\n data: B2BImpersonationAuthenticateOptions,\n ) => Promise<B2BImpersonationAuthenticateResponse<TProjectConfiguration>>;\n\n constructor(\n private _networkClient: INetworkClient,\n private _subscriptionService: IB2BSubscriptionService<TProjectConfiguration>,\n private dfpProtectedAuth: IDFPProtectedAuthProvider,\n ) {\n this.authenticate = this._subscriptionService.withUpdateSession(\n async (data: B2BImpersonationAuthenticateOptions) => {\n validateInDev('stytch.impersonation.authenticate', data, {\n impersonation_token: 'string',\n });\n const { dfp_telemetry_id, captcha_token } = await this.dfpProtectedAuth.getDFPTelemetryIDAndCaptcha();\n\n return this._networkClient.retriableFetchSDK<B2BImpersonationAuthenticateResponse<TProjectConfiguration>>({\n url: '/b2b/impersonation/authenticate',\n body: {\n ...data,\n dfp_telemetry_id,\n captcha_token,\n },\n method: 'POST',\n retryCallback: this.dfpProtectedAuth.retryWithCaptchaAndDFP,\n });\n },\n );\n }\n}\n"],"names":["HeadlessB2BImpersonationClient","authenticate","_networkClient","_subscriptionService","dfpProtectedAuth","withUpdateSession","data","validateInDev","impersonation_token","dfp_telemetry_id","captcha_token","getDFPTelemetryIDAndCaptcha","retriableFetchSDK","url","body","method","retryCallback","retryWithCaptchaAndDFP"],"mappings":";;AAUO,MAAMA,8BAAAA,CAAAA;;;;IAGXC,YAAAA;IAIA,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,qCAAqCD,IAAAA,EAAM;gBACvDE,mBAAAA,EAAqB;AACvB,aAAA,CAAA;YACA,MAAM,EAAEC,gBAAgB,EAAEC,aAAa,EAAE,GAAG,MAAM,IAAI,CAACN,gBAAgB,CAACO,2BAA2B,EAAA;AAEnG,YAAA,OAAO,IAAI,CAACT,cAAc,CAACU,iBAAiB,CAA8D;gBACxGC,GAAAA,EAAK,iCAAA;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;AAEJ,IAAA;AACF;;;;"}