@stytch/vanilla-js 6.0.5 → 6.0.7

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 (183) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/cjs/{StytchSSRProxy-uT0ZmdOT.js → StytchSSRProxy-4bK96PqP.js} +2 -5
  3. package/dist/cjs/StytchSSRProxy-4bK96PqP.js.map +1 -0
  4. package/dist/cjs/b2b/index.cjs +10 -10
  5. package/dist/cjs/b2b/index.cjs.map +1 -1
  6. package/dist/cjs/b2b/index.headless.cjs +1 -1
  7. package/dist/cjs/index.cjs +2 -2
  8. package/dist/cjs/index.headless.cjs +1 -1
  9. package/dist/cjs/{shadcn-DNo-Z1LB.js → shadcn-C9ZF6bjn.js} +2 -2
  10. package/dist/cjs/{shadcn-DNo-Z1LB.js.map → shadcn-C9ZF6bjn.js.map} +1 -1
  11. package/dist/cjs-dev/{StytchSSRProxy-Dz4qX2tJ.js → StytchSSRProxy-4d3oztg-.js} +2 -5
  12. package/dist/cjs-dev/StytchSSRProxy-4d3oztg-.js.map +1 -0
  13. package/dist/cjs-dev/b2b/index.cjs +10 -10
  14. package/dist/cjs-dev/b2b/index.cjs.map +1 -1
  15. package/dist/cjs-dev/b2b/index.headless.cjs +1 -1
  16. package/dist/cjs-dev/index.cjs +2 -2
  17. package/dist/cjs-dev/index.headless.cjs +1 -1
  18. package/dist/cjs-dev/{shadcn-JZgM-5AS.js → shadcn-BMlZ0kfy.js} +2 -2
  19. package/dist/cjs-dev/{shadcn-JZgM-5AS.js.map → shadcn-BMlZ0kfy.js.map} +1 -1
  20. package/dist/esm/node_modules/@emotion/react/dist/emotion-element-f0de968e.browser.esm.mjs +1 -1
  21. package/dist/esm/node_modules/@mui/material/Autocomplete/Autocomplete.mjs +1 -1
  22. package/dist/esm/node_modules/@mui/material/Button/Button.mjs +1 -1
  23. package/dist/esm/node_modules/@mui/material/Chip/Chip.mjs +1 -1
  24. package/dist/esm/node_modules/@mui/material/MenuItem/MenuItem.mjs +1 -1
  25. package/dist/esm/node_modules/@mui/material/TableCell/TableCell.mjs +1 -1
  26. package/dist/esm/node_modules/@mui/material/TableRow/TableRow.mjs +1 -1
  27. package/dist/esm/node_modules/@mui/material/Tooltip/Tooltip.mjs +1 -1
  28. package/dist/esm/node_modules/@mui/material/styles/createThemeWithVars.mjs +1 -1
  29. package/dist/esm/node_modules/@mui/system/esm/borders/borders.mjs +1 -1
  30. package/dist/esm/node_modules/@mui/system/esm/cssGrid/cssGrid.mjs +2 -2
  31. package/dist/esm/node_modules/@mui/system/esm/sizing/sizing.mjs +1 -1
  32. package/dist/esm/node_modules/@mui/system/esm/spacing/spacing.mjs +1 -1
  33. package/dist/esm/packages/core/src/HeadlessClients/HeadlessOAuthClient.mjs +1 -1
  34. package/dist/esm/packages/web/src/NetworkClient.mjs +1 -3
  35. package/dist/esm/packages/web/src/NetworkClient.mjs.map +1 -1
  36. package/dist/esm/packages/web/src/adminPortal/AdminPortalWrapper.mjs +1 -1
  37. package/dist/esm/packages/web/src/adminPortal/components/ActionMenu.mjs +1 -1
  38. package/dist/esm/packages/web/src/adminPortal/components/Autocomplete.mjs +1 -1
  39. package/dist/esm/packages/web/src/adminPortal/components/DeleteConnection.mjs +1 -1
  40. package/dist/esm/packages/web/src/adminPortal/components/IconButtonMenu.mjs +1 -1
  41. package/dist/esm/packages/web/src/adminPortal/components/SettingsContainer.mjs +1 -1
  42. package/dist/esm/packages/web/src/adminPortal/memberManagement/AccessSection.mjs +1 -1
  43. package/dist/esm/packages/web/src/adminPortal/memberManagement/InviteModal.mjs +1 -1
  44. package/dist/esm/packages/web/src/adminPortal/memberManagement/useMemberActivation.mjs +1 -1
  45. package/dist/esm/packages/web/src/adminPortal/scim/SCIMConnectionTokenRotationSection.mjs +1 -1
  46. package/dist/esm/packages/web/src/adminPortal/scim/SCIMNewConnectionConfigureScreen.mjs +1 -1
  47. package/dist/esm/packages/web/src/adminPortal/settings/OrgSettingsRoleAssignmentsSection.mjs +1 -1
  48. package/dist/esm/packages/web/src/adminPortal/settings/OrgSettingsUserOnboardingSection.mjs +1 -1
  49. package/dist/esm/packages/web/src/adminPortal/shared/components/EmbeddedTable.mjs +1 -1
  50. package/dist/esm/packages/web/src/adminPortal/shared/components/Input.mjs +1 -1
  51. package/dist/esm/packages/web/src/adminPortal/shared/components/PaginatedTable.mjs +1 -1
  52. package/dist/esm/packages/web/src/adminPortal/shared/components/Table.mjs +1 -1
  53. package/dist/esm/packages/web/src/adminPortal/shared/components/Toast.mjs +1 -1
  54. package/dist/esm/packages/web/src/adminPortal/shared/components/Tooltip.mjs +1 -1
  55. package/dist/esm/packages/web/src/adminPortal/sso/AttributeMappingTable.mjs +1 -1
  56. package/dist/esm/packages/web/src/adminPortal/sso/DetailsSection.mjs +1 -1
  57. package/dist/esm/packages/web/src/adminPortal/sso/RoleAssignmentsSection.mjs +1 -1
  58. package/dist/esm/packages/web/src/adminPortal/sso/SSOConnectionDetailsScreen.mjs +1 -1
  59. package/dist/esm/packages/web/src/adminPortal/sso/SSOConnectionsScreen.mjs +1 -1
  60. package/dist/esm/packages/web/src/adminPortal/sso/SSONewConnectionConfigureScreen.mjs +1 -1
  61. package/dist/esm/packages/web/src/adminPortal/sso/SSONewConnectionScreen.mjs +1 -1
  62. package/dist/esm/packages/web/src/b2b/StytchB2BClient.mjs +3 -3
  63. package/dist/esm/packages/web/src/oneTap/OneTapProvider.mjs +1 -1
  64. package/dist/esm/packages/web/src/ui/b2b/InternalAppContainer.mjs +1 -1
  65. package/dist/esm/packages/web/src/ui/b2b/components/B2BOneTap.mjs +1 -1
  66. package/dist/esm/packages/web/src/ui/b2b/screens/MFAEnrollmentSelectionScreen.mjs +1 -1
  67. package/dist/esm/packages/web/src/ui/b2b/screens/PasswordResetForm.mjs +4 -4
  68. package/dist/esm/packages/web/src/ui/b2b/screens/PasswordResetForm.mjs.map +1 -1
  69. package/dist/esm/packages/web/src/ui/b2b/screens/SSODiscoveryMenu.mjs +1 -1
  70. package/dist/esm/packages/web/src/ui/b2b/screens/SsoAndOAuthButtons.mjs +1 -1
  71. package/dist/esm/packages/web/src/ui/b2b/usePasswordInput.mjs +4 -4
  72. package/dist/esm/packages/web/src/ui/b2b/usePasswordInput.mjs.map +1 -1
  73. package/dist/esm/packages/web/src/ui/b2c/GlobalContextProvider.mjs +1 -1
  74. package/dist/esm/packages/web/src/ui/b2c/components/GoogleOneTap.mjs +1 -1
  75. package/dist/esm/packages/web/src/ui/b2c/screens/IdentityProvider/IDPConsent.mjs +1 -1
  76. package/dist/esm/packages/web/src/ui/b2c/screens/Main/LoginForm/MagicLinkForm.mjs +1 -1
  77. package/dist/esm/packages/web/src/ui/b2c/screens/Main/LoginForm/OTPForm.mjs +1 -1
  78. package/dist/esm/packages/web/src/ui/b2c/screens/Passkey/PasskeyConfirmation.mjs +1 -1
  79. package/dist/esm/packages/web/src/ui/b2c/screens/Passkey/PasskeyRegistrationSuccess.mjs +1 -1
  80. package/dist/esm/packages/web/src/ui/b2c/screens/Password/PasswordConfirmation.mjs +1 -1
  81. package/dist/esm/packages/web/src/ui/b2c/screens/Secondary/OTPConfirmation.mjs +1 -1
  82. package/dist/esm/packages/web/src/ui/components/PresentationConfig.mjs +1 -1
  83. package/dist/esm/packages/web/src/ui/hooks/usePromptPasskey.mjs +1 -1
  84. package/dist/esm-dev/node_modules/@emotion/react/dist/emotion-element-489459f2.browser.development.esm.mjs +1 -1
  85. package/dist/esm-dev/node_modules/@mui/material/Autocomplete/Autocomplete.mjs +1 -1
  86. package/dist/esm-dev/node_modules/@mui/material/Button/Button.mjs +1 -1
  87. package/dist/esm-dev/node_modules/@mui/material/Checkbox/Checkbox.mjs +1 -1
  88. package/dist/esm-dev/node_modules/@mui/material/Chip/Chip.mjs +1 -1
  89. package/dist/esm-dev/node_modules/@mui/material/IconButton/IconButton.mjs +1 -1
  90. package/dist/esm-dev/node_modules/@mui/material/MenuItem/MenuItem.mjs +1 -1
  91. package/dist/esm-dev/node_modules/@mui/material/Radio/Radio.mjs +1 -1
  92. package/dist/esm-dev/node_modules/@mui/material/Switch/Switch.mjs +1 -1
  93. package/dist/esm-dev/node_modules/@mui/material/TableCell/TableCell.mjs +1 -1
  94. package/dist/esm-dev/node_modules/@mui/material/TableRow/TableRow.mjs +1 -1
  95. package/dist/esm-dev/node_modules/@mui/material/Tooltip/Tooltip.mjs +1 -1
  96. package/dist/esm-dev/node_modules/@mui/material/styles/createThemeWithVars.mjs +1 -1
  97. package/dist/esm-dev/node_modules/@mui/system/esm/borders/borders.mjs +1 -1
  98. package/dist/esm-dev/node_modules/@mui/system/esm/createStyled/createStyled.mjs +1 -1
  99. package/dist/esm-dev/node_modules/@mui/system/esm/cssGrid/cssGrid.mjs +2 -2
  100. package/dist/esm-dev/node_modules/@mui/system/esm/sizing/sizing.mjs +1 -1
  101. package/dist/esm-dev/node_modules/@mui/system/esm/spacing/spacing.mjs +1 -1
  102. package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessOAuthClient.mjs +1 -1
  103. package/dist/esm-dev/packages/web/src/NetworkClient.mjs +1 -3
  104. package/dist/esm-dev/packages/web/src/NetworkClient.mjs.map +1 -1
  105. package/dist/esm-dev/packages/web/src/adminPortal/AdminPortalWrapper.mjs +1 -1
  106. package/dist/esm-dev/packages/web/src/adminPortal/components/ActionMenu.mjs +1 -1
  107. package/dist/esm-dev/packages/web/src/adminPortal/components/Autocomplete.mjs +1 -1
  108. package/dist/esm-dev/packages/web/src/adminPortal/components/DeleteConnection.mjs +1 -1
  109. package/dist/esm-dev/packages/web/src/adminPortal/components/IconButtonMenu.mjs +1 -1
  110. package/dist/esm-dev/packages/web/src/adminPortal/components/SettingsContainer.mjs +1 -1
  111. package/dist/esm-dev/packages/web/src/adminPortal/memberManagement/AccessSection.mjs +1 -1
  112. package/dist/esm-dev/packages/web/src/adminPortal/memberManagement/InviteModal.mjs +1 -1
  113. package/dist/esm-dev/packages/web/src/adminPortal/memberManagement/useMemberActivation.mjs +1 -1
  114. package/dist/esm-dev/packages/web/src/adminPortal/scim/SCIMConnectionTokenRotationSection.mjs +1 -1
  115. package/dist/esm-dev/packages/web/src/adminPortal/scim/SCIMNewConnectionConfigureScreen.mjs +1 -1
  116. package/dist/esm-dev/packages/web/src/adminPortal/settings/OrgSettingsRoleAssignmentsSection.mjs +1 -1
  117. package/dist/esm-dev/packages/web/src/adminPortal/settings/OrgSettingsUserOnboardingSection.mjs +1 -1
  118. package/dist/esm-dev/packages/web/src/adminPortal/shared/components/EmbeddedTable.mjs +1 -1
  119. package/dist/esm-dev/packages/web/src/adminPortal/shared/components/Input.mjs +1 -1
  120. package/dist/esm-dev/packages/web/src/adminPortal/shared/components/PaginatedTable.mjs +1 -1
  121. package/dist/esm-dev/packages/web/src/adminPortal/shared/components/Table.mjs +1 -1
  122. package/dist/esm-dev/packages/web/src/adminPortal/shared/components/Toast.mjs +1 -1
  123. package/dist/esm-dev/packages/web/src/adminPortal/shared/components/Tooltip.mjs +1 -1
  124. package/dist/esm-dev/packages/web/src/adminPortal/sso/AttributeMappingTable.mjs +1 -1
  125. package/dist/esm-dev/packages/web/src/adminPortal/sso/DetailsSection.mjs +1 -1
  126. package/dist/esm-dev/packages/web/src/adminPortal/sso/RoleAssignmentsSection.mjs +1 -1
  127. package/dist/esm-dev/packages/web/src/adminPortal/sso/SSOConnectionDetailsScreen.mjs +1 -1
  128. package/dist/esm-dev/packages/web/src/adminPortal/sso/SSOConnectionsScreen.mjs +1 -1
  129. package/dist/esm-dev/packages/web/src/adminPortal/sso/SSONewConnectionConfigureScreen.mjs +1 -1
  130. package/dist/esm-dev/packages/web/src/adminPortal/sso/SSONewConnectionScreen.mjs +1 -1
  131. package/dist/esm-dev/packages/web/src/b2b/StytchB2BClient.mjs +3 -3
  132. package/dist/esm-dev/packages/web/src/oneTap/OneTapProvider.mjs +1 -1
  133. package/dist/esm-dev/packages/web/src/ui/b2b/App.mjs +1 -1
  134. package/dist/esm-dev/packages/web/src/ui/b2b/InternalAppContainer.mjs +1 -1
  135. package/dist/esm-dev/packages/web/src/ui/b2b/components/B2BOneTap.mjs +2 -2
  136. package/dist/esm-dev/packages/web/src/ui/b2b/screens/MFAEnrollmentSelectionScreen.mjs +1 -1
  137. package/dist/esm-dev/packages/web/src/ui/b2b/screens/PasswordResetForm.mjs +4 -4
  138. package/dist/esm-dev/packages/web/src/ui/b2b/screens/PasswordResetForm.mjs.map +1 -1
  139. package/dist/esm-dev/packages/web/src/ui/b2b/screens/SSODiscoveryMenu.mjs +1 -1
  140. package/dist/esm-dev/packages/web/src/ui/b2b/screens/SsoAndOAuthButtons.mjs +1 -1
  141. package/dist/esm-dev/packages/web/src/ui/b2b/usePasswordInput.mjs +4 -4
  142. package/dist/esm-dev/packages/web/src/ui/b2b/usePasswordInput.mjs.map +1 -1
  143. package/dist/esm-dev/packages/web/src/ui/b2c/AppContainer.mjs +1 -1
  144. package/dist/esm-dev/packages/web/src/ui/b2c/GlobalContextProvider.mjs +1 -1
  145. package/dist/esm-dev/packages/web/src/ui/b2c/IDPContainer.mjs +1 -1
  146. package/dist/esm-dev/packages/web/src/ui/b2c/PasskeyRegistrationContainer.mjs +1 -1
  147. package/dist/esm-dev/packages/web/src/ui/b2c/ResetPasswordContainer.mjs +1 -1
  148. package/dist/esm-dev/packages/web/src/ui/b2c/components/GoogleOneTap.mjs +2 -2
  149. package/dist/esm-dev/packages/web/src/ui/b2c/screens/IdentityProvider/IDPConsent.mjs +1 -1
  150. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Main/LoginForm/MagicLinkForm.mjs +1 -1
  151. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Main/LoginForm/OTPForm.mjs +1 -1
  152. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Main/LoginForm/index.mjs +1 -1
  153. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Main/index.mjs +1 -1
  154. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Passkey/PasskeyConfirmation.mjs +1 -1
  155. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Passkey/PasskeyRegistrationSuccess.mjs +1 -1
  156. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Password/PasswordConfirmation.mjs +1 -1
  157. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Secondary/OTPConfirmation.mjs +1 -1
  158. package/dist/esm-dev/packages/web/src/ui/components/PresentationConfig.mjs +1 -1
  159. package/dist/esm-dev/packages/web/src/ui/hooks/usePromptPasskey.mjs +1 -1
  160. package/dist/iife/b2b/index.headless.js +1 -1
  161. package/dist/iife/b2b/index.headless.js.map +1 -1
  162. package/dist/iife/b2b/index.js +2 -2
  163. package/dist/iife/b2b/index.js.map +1 -1
  164. package/dist/iife/index.headless.js +1 -1
  165. package/dist/iife/index.headless.js.map +1 -1
  166. package/dist/iife/index.js +1 -1
  167. package/dist/iife/index.js.map +1 -1
  168. package/dist/types/{GoogleOneTapClient-wRV3UqOo.d.ts → GoogleOneTapClient-iv3nb_kU.d.ts} +29 -2
  169. package/dist/types/{StytchB2BClient-BxoZQ3m8.d.ts → StytchB2BClient-C-2u87oo.d.ts} +1 -1
  170. package/dist/types/{StytchClient-CMzVKb4K.d.ts → StytchClient-CCLs7DV6.d.ts} +1 -1
  171. package/dist/types/adminPortal/index.d.ts +3 -3
  172. package/dist/types/b2b/index.d.ts +5 -5
  173. package/dist/types/b2b/index.headless.d.ts +2 -2
  174. package/dist/types/index.d.ts +5 -5
  175. package/dist/types/index.headless.d.ts +2 -2
  176. package/dist/types/{themes-sEz9GUNs.d.ts → themes-MdCoynbd.d.ts} +3 -3
  177. package/package.json +1 -1
  178. package/dist/cjs/StytchSSRProxy-uT0ZmdOT.js.map +0 -1
  179. package/dist/cjs-dev/StytchSSRProxy-Dz4qX2tJ.js.map +0 -1
  180. package/dist/esm/packages/web/package.json.mjs +0 -4
  181. package/dist/esm/packages/web/package.json.mjs.map +0 -1
  182. package/dist/esm-dev/packages/web/package.json.mjs +0 -4
  183. package/dist/esm-dev/packages/web/package.json.mjs.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { omitUser, isTestPublicToken } from '../utils/index.mjs';
2
2
  import { validateInDev } from '../utils/dev.mjs';
3
- import { OAuthProviders } from '../public/ui.mjs';
4
3
  import { logger } from '../utils/logger.mjs';
4
+ import { OAuthProviders } from '../public/ui.mjs';
5
5
 
6
6
  let HeadlessOAuthClient$1 = class HeadlessOAuthClient {
7
7
  _networkClient;
@@ -1,4 +1,3 @@
1
- import { version } from '../package.json.mjs';
2
1
  import { isTestPublicToken, createPersistentId, createAppSessionId, createEventId } from '../../core/src/utils/index.mjs';
3
2
  import { EventLogger, DEFAULT_INTERVAL_DURATION_MS, DEFAULT_MAX_BATCH_SIZE } from '../../core/src/EventLogger.mjs';
4
3
  import { baseFetchSDK, baseSubmitFormSDK, retriableFetchSDK } from '../../core/src/NetworkClient.mjs';
@@ -64,10 +63,9 @@ class NetworkClient {
64
63
  identifier: window.location.hostname
65
64
  },
66
65
  sdk: {
67
- // TODO: Pull these from package.json when there is a package
68
66
  // eslint-disable-next-line lingui/no-unlocalized-strings
69
67
  identifier: 'Stytch.js Javascript SDK',
70
- version: version
68
+ version: "@stytch/vanilla-js" + '@' + "6.0.7"
71
69
  }
72
70
  };
73
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkClient.mjs","sources":["../../../../../../web/src/NetworkClient.ts"],"sourcesContent":["import {\n AdditionalTelemetryData,\n baseFetchSDK,\n baseSubmitFormSDK,\n createAppSessionId,\n createEventId,\n createPersistentId,\n DEFAULT_INTERVAL_DURATION_MS,\n DEFAULT_MAX_BATCH_SIZE,\n EventLogger,\n INetworkClient,\n isTestPublicToken,\n retriableFetchSDK,\n RetriableSDKRequestInfo,\n SDKRequestInfo,\n SDKTelemetry,\n} from '@stytch/core';\nimport { ResponseCommon } from '@stytch/core/public';\n\nimport { version as PACKAGE_VERSION } from '../package.json';\nimport { B2BSubscriptionDataLayer, ConsumerSubscriptionDataLayer } from './SubscriptionService';\n\nexport class NetworkClient implements INetworkClient {\n private eventLogger: EventLogger;\n private readonly baseURL: string;\n\n constructor(\n private _publicToken: string,\n private _subscriptionDataLayer: ConsumerSubscriptionDataLayer | B2BSubscriptionDataLayer,\n _liveAPIURL: string,\n _testAPIURL: string,\n private additionalTelemetryDataFn: () => AdditionalTelemetryData,\n ) {\n this.baseURL = _liveAPIURL;\n if (isTestPublicToken(_publicToken)) {\n this.baseURL = _testAPIURL;\n }\n this.eventLogger = new EventLogger({\n maxBatchSize: DEFAULT_MAX_BATCH_SIZE,\n intervalDurationMs: DEFAULT_INTERVAL_DURATION_MS,\n logEventURL: this.buildSDKUrl('/events'),\n });\n }\n\n // @deprecated Use the new sessions.updateSession() method instead\n updateSessionToken = () => {\n return null;\n };\n\n logEvent({\n name,\n details,\n error = {},\n }: {\n name: string;\n details: Record<string, unknown>;\n error?: { error_code?: string; error_description?: string; http_status_code?: string };\n }): void {\n this.eventLogger.logEvent(this.createTelemetryBlob(), {\n public_token: this._publicToken,\n event_name: name,\n details: details,\n\n // Error fields\n error_code: error.error_code,\n error_description: error.error_description,\n http_status_code: error.http_status_code,\n });\n }\n\n createTelemetryBlob(): SDKTelemetry {\n return {\n event_id: createEventId(),\n // TODO: These should be persisted somewhere, not generated per request\n app_session_id: createAppSessionId(),\n persistent_id: createPersistentId(),\n\n client_sent_at: new Date().toISOString(),\n timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n\n // Logged in data\n // This gets passed into the constructor from StytchClient or StytchB2BClient\n // We pass in the user & session id when the Consumer SDK is being used and member & session id\n // when the B2B SDK is being used.\n\n // Why don't we generate this from the session_token in the auth header?\n // - We don't want to tie analytics ingest to session validation. There's no need to put\n // that kind of pressure on API, and ingest could be moved to somewhere that doesn't\n // have the ability to validate tokens\n // - For bulk event batches, we want to keep track of whether or not a user was logged\n // in at each event. If we have 10 events, the user logs in at event 5, then they'll have\n // a token when they log the batch, but we want to know that they were not logged in for the\n // first 4 events\n ...this.additionalTelemetryDataFn(),\n\n // Versioning\n app: {\n identifier: window.location.hostname,\n },\n sdk: {\n // TODO: Pull these from package.json when there is a package\n // eslint-disable-next-line lingui/no-unlocalized-strings\n identifier: 'Stytch.js Javascript SDK',\n version: PACKAGE_VERSION,\n },\n };\n }\n\n async fetchSDK<T extends ResponseCommon>({ url, body, method }: SDKRequestInfo): Promise<T> {\n const sessionToken = this._subscriptionDataLayer.readSessionCookie().session_token;\n const basicAuthHeader = 'Basic ' + window.btoa(this._publicToken + ':' + (sessionToken || this._publicToken));\n const xSDKClientHeader = window.btoa(JSON.stringify(this.createTelemetryBlob()));\n const xSDKParentHostHeader = window.location.origin;\n\n return baseFetchSDK<T>({\n basicAuthHeader,\n body,\n finalURL: this.buildSDKUrl(url),\n method,\n xSDKClientHeader,\n xSDKParentHostHeader,\n });\n }\n\n async submitFormSDK({ url, body, method }: SDKRequestInfo): Promise<void> {\n const sessionToken = this._subscriptionDataLayer.readSessionCookie().session_token;\n const basicAuthHeader = 'Basic ' + window.btoa(this._publicToken + ':' + (sessionToken || this._publicToken));\n const xSDKClientHeader = window.btoa(JSON.stringify(this.createTelemetryBlob()));\n const xSDKParentHostHeader = window.location.origin;\n\n return baseSubmitFormSDK({\n basicAuthHeader,\n body,\n finalURL: this.buildSDKUrl(url),\n method,\n xSDKClientHeader,\n xSDKParentHostHeader,\n });\n }\n\n async retriableFetchSDK<T extends ResponseCommon>({\n url,\n body,\n method,\n retryCallback,\n }: RetriableSDKRequestInfo): Promise<T> {\n const sessionToken = this._subscriptionDataLayer.readSessionCookie().session_token;\n const basicAuthHeader = 'Basic ' + window.btoa(this._publicToken + ':' + (sessionToken || this._publicToken));\n const xSDKClientHeader = window.btoa(JSON.stringify(this.createTelemetryBlob()));\n const xSDKParentHostHeader = window.location.origin;\n\n return retriableFetchSDK<T>({\n basicAuthHeader,\n body,\n finalURL: this.buildSDKUrl(url),\n method,\n xSDKClientHeader,\n xSDKParentHostHeader,\n retryCallback,\n });\n }\n\n buildSDKUrl(url: string): string {\n // eslint-disable-next-line lingui/no-unlocalized-strings\n return `${this.baseURL}/sdk/v1${url}`;\n }\n}\n"],"names":["NetworkClient","eventLogger","baseURL","_subscriptionDataLayer","_liveAPIURL","_testAPIURL","_publicToken","additionalTelemetryDataFn","isTestPublicToken","EventLogger","maxBatchSize","DEFAULT_MAX_BATCH_SIZE","intervalDurationMs","DEFAULT_INTERVAL_DURATION_MS","logEventURL","buildSDKUrl","updateSessionToken","logEvent","name","details","error","createTelemetryBlob","public_token","event_name","error_code","error_description","http_status_code","event_id","createEventId","app_session_id","createAppSessionId","persistent_id","createPersistentId","client_sent_at","Date","toISOString","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","app","identifier","window","location","hostname","sdk","version","PACKAGE_VERSION","fetchSDK","url","body","method","sessionToken","readSessionCookie","session_token","basicAuthHeader","btoa","xSDKClientHeader","JSON","stringify","xSDKParentHostHeader","origin","baseFetchSDK","finalURL","submitFormSDK","baseSubmitFormSDK","retriableFetchSDK","retryCallback"],"mappings":"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"}
1
+ {"version":3,"file":"NetworkClient.mjs","sources":["../../../../../../web/src/NetworkClient.ts"],"sourcesContent":["import {\n AdditionalTelemetryData,\n baseFetchSDK,\n baseSubmitFormSDK,\n createAppSessionId,\n createEventId,\n createPersistentId,\n DEFAULT_INTERVAL_DURATION_MS,\n DEFAULT_MAX_BATCH_SIZE,\n EventLogger,\n INetworkClient,\n isTestPublicToken,\n retriableFetchSDK,\n RetriableSDKRequestInfo,\n SDKRequestInfo,\n SDKTelemetry,\n} from '@stytch/core';\nimport { ResponseCommon } from '@stytch/core/public';\n\nimport { B2BSubscriptionDataLayer, ConsumerSubscriptionDataLayer } from './SubscriptionService';\n\nexport class NetworkClient implements INetworkClient {\n private eventLogger: EventLogger;\n private readonly baseURL: string;\n\n constructor(\n private _publicToken: string,\n private _subscriptionDataLayer: ConsumerSubscriptionDataLayer | B2BSubscriptionDataLayer,\n _liveAPIURL: string,\n _testAPIURL: string,\n private additionalTelemetryDataFn: () => AdditionalTelemetryData,\n ) {\n this.baseURL = _liveAPIURL;\n if (isTestPublicToken(_publicToken)) {\n this.baseURL = _testAPIURL;\n }\n this.eventLogger = new EventLogger({\n maxBatchSize: DEFAULT_MAX_BATCH_SIZE,\n intervalDurationMs: DEFAULT_INTERVAL_DURATION_MS,\n logEventURL: this.buildSDKUrl('/events'),\n });\n }\n\n // @deprecated Use the new sessions.updateSession() method instead\n updateSessionToken = () => {\n return null;\n };\n\n logEvent({\n name,\n details,\n error = {},\n }: {\n name: string;\n details: Record<string, unknown>;\n error?: { error_code?: string; error_description?: string; http_status_code?: string };\n }): void {\n this.eventLogger.logEvent(this.createTelemetryBlob(), {\n public_token: this._publicToken,\n event_name: name,\n details: details,\n\n // Error fields\n error_code: error.error_code,\n error_description: error.error_description,\n http_status_code: error.http_status_code,\n });\n }\n\n createTelemetryBlob(): SDKTelemetry {\n return {\n event_id: createEventId(),\n // TODO: These should be persisted somewhere, not generated per request\n app_session_id: createAppSessionId(),\n persistent_id: createPersistentId(),\n\n client_sent_at: new Date().toISOString(),\n timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n\n // Logged in data\n // This gets passed into the constructor from StytchClient or StytchB2BClient\n // We pass in the user & session id when the Consumer SDK is being used and member & session id\n // when the B2B SDK is being used.\n\n // Why don't we generate this from the session_token in the auth header?\n // - We don't want to tie analytics ingest to session validation. There's no need to put\n // that kind of pressure on API, and ingest could be moved to somewhere that doesn't\n // have the ability to validate tokens\n // - For bulk event batches, we want to keep track of whether or not a user was logged\n // in at each event. If we have 10 events, the user logs in at event 5, then they'll have\n // a token when they log the batch, but we want to know that they were not logged in for the\n // first 4 events\n ...this.additionalTelemetryDataFn(),\n\n // Versioning\n app: {\n identifier: window.location.hostname,\n },\n sdk: {\n // eslint-disable-next-line lingui/no-unlocalized-strings\n identifier: 'Stytch.js Javascript SDK',\n version: STYTCH_PACKAGE_NAME + '@' + STYTCH_PACKAGE_VERSION,\n },\n };\n }\n\n async fetchSDK<T extends ResponseCommon>({ url, body, method }: SDKRequestInfo): Promise<T> {\n const sessionToken = this._subscriptionDataLayer.readSessionCookie().session_token;\n const basicAuthHeader = 'Basic ' + window.btoa(this._publicToken + ':' + (sessionToken || this._publicToken));\n const xSDKClientHeader = window.btoa(JSON.stringify(this.createTelemetryBlob()));\n const xSDKParentHostHeader = window.location.origin;\n\n return baseFetchSDK<T>({\n basicAuthHeader,\n body,\n finalURL: this.buildSDKUrl(url),\n method,\n xSDKClientHeader,\n xSDKParentHostHeader,\n });\n }\n\n async submitFormSDK({ url, body, method }: SDKRequestInfo): Promise<void> {\n const sessionToken = this._subscriptionDataLayer.readSessionCookie().session_token;\n const basicAuthHeader = 'Basic ' + window.btoa(this._publicToken + ':' + (sessionToken || this._publicToken));\n const xSDKClientHeader = window.btoa(JSON.stringify(this.createTelemetryBlob()));\n const xSDKParentHostHeader = window.location.origin;\n\n return baseSubmitFormSDK({\n basicAuthHeader,\n body,\n finalURL: this.buildSDKUrl(url),\n method,\n xSDKClientHeader,\n xSDKParentHostHeader,\n });\n }\n\n async retriableFetchSDK<T extends ResponseCommon>({\n url,\n body,\n method,\n retryCallback,\n }: RetriableSDKRequestInfo): Promise<T> {\n const sessionToken = this._subscriptionDataLayer.readSessionCookie().session_token;\n const basicAuthHeader = 'Basic ' + window.btoa(this._publicToken + ':' + (sessionToken || this._publicToken));\n const xSDKClientHeader = window.btoa(JSON.stringify(this.createTelemetryBlob()));\n const xSDKParentHostHeader = window.location.origin;\n\n return retriableFetchSDK<T>({\n basicAuthHeader,\n body,\n finalURL: this.buildSDKUrl(url),\n method,\n xSDKClientHeader,\n xSDKParentHostHeader,\n retryCallback,\n });\n }\n\n buildSDKUrl(url: string): string {\n // eslint-disable-next-line lingui/no-unlocalized-strings\n return `${this.baseURL}/sdk/v1${url}`;\n }\n}\n"],"names":["NetworkClient","eventLogger","baseURL","_subscriptionDataLayer","_liveAPIURL","_testAPIURL","_publicToken","additionalTelemetryDataFn","isTestPublicToken","EventLogger","maxBatchSize","DEFAULT_MAX_BATCH_SIZE","intervalDurationMs","DEFAULT_INTERVAL_DURATION_MS","logEventURL","buildSDKUrl","updateSessionToken","logEvent","name","details","error","createTelemetryBlob","public_token","event_name","error_code","error_description","http_status_code","event_id","createEventId","app_session_id","createAppSessionId","persistent_id","createPersistentId","client_sent_at","Date","toISOString","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","app","identifier","window","location","hostname","sdk","version","fetchSDK","url","body","method","sessionToken","readSessionCookie","session_token","basicAuthHeader","btoa","xSDKClientHeader","JSON","stringify","xSDKParentHostHeader","origin","baseFetchSDK","finalURL","submitFormSDK","baseSubmitFormSDK","retriableFetchSDK","retryCallback"],"mappings":"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"}
@@ -5,8 +5,8 @@ import { ToastContextProvider } from './components/Toast.mjs';
5
5
  import { MainContainer } from './MainContainer.mjs';
6
6
  import { StytchClientContext } from './StytchClientContext.mjs';
7
7
  import { getTheme } from './utils/theme.mjs';
8
- import ThemeProvider from '../../../../node_modules/@mui/material/styles/ThemeProvider.mjs';
9
8
  import { useMemo as F } from '../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
9
+ import ThemeProvider from '../../../../node_modules/@mui/material/styles/ThemeProvider.mjs';
10
10
 
11
11
  const ContextProvider = ({ theme, options, children })=>{
12
12
  const clientAndConfig = F(()=>({
@@ -1,8 +1,8 @@
1
1
  import wn from '../../../../../node_modules/preact/compat/dist/compat.module.mjs';
2
2
  import { IconButtonMenu } from './IconButtonMenu.mjs';
3
3
  import styled from '../../../../../node_modules/@mui/material/styles/styled.mjs';
4
- import MoreVert from '../../../../../node_modules/@mui/icons-material/esm/MoreVert.mjs';
5
4
  import { useCallback as T } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
5
+ import MoreVert from '../../../../../node_modules/@mui/icons-material/esm/MoreVert.mjs';
6
6
 
7
7
  const StyledDiv = styled('div')({
8
8
  display: 'flex',
@@ -13,9 +13,9 @@ import autocompleteClasses from '../../../../../node_modules/@mui/material/Autoc
13
13
  import outlinedInputClasses from '../../../../../node_modules/@mui/material/OutlinedInput/outlinedInputClasses.mjs';
14
14
  import inputBaseClasses from '../../../../../node_modules/@mui/material/InputBase/inputBaseClasses.mjs';
15
15
  import IconButton from '../../../../../node_modules/@mui/material/IconButton/IconButton.mjs';
16
+ import { useState as h } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
16
17
  import Typography from '../../../../../node_modules/@mui/material/Typography/Typography.mjs';
17
18
  import TextField from '../../../../../node_modules/@mui/material/TextField/TextField.mjs';
18
- import { useState as h } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
19
19
 
20
20
  const StyledAutocomplete = styled(Autocomplete$1)(({ theme })=>({
21
21
  [`& .${inputBaseClasses.root}`]: {
@@ -2,8 +2,8 @@ import wn from '../../../../../node_modules/preact/compat/dist/compat.module.mjs
2
2
  import { Modal } from './Modal.mjs';
3
3
  import { Typography } from './Typography.mjs';
4
4
  import { useDeleteSsoConnection } from '../utils/useMutateSsoConnection.mjs';
5
- import { useModalState } from '../shared/components/Modal.mjs';
6
5
  import { useState as h, useCallback as T } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
6
+ import { useModalState } from '../shared/components/Modal.mjs';
7
7
 
8
8
  const DeleteConfirmModal = ({ connectionName, connectionType, ...modalProps })=>{
9
9
  return /*#__PURE__*/ wn.createElement(Modal, {
@@ -5,8 +5,8 @@ import { Typography } from './Typography.mjs';
5
5
  import styled from '../../../../../node_modules/@mui/material/styles/styled.mjs';
6
6
  import MenuItem from '../../../../../node_modules/@mui/material/MenuItem/MenuItem.mjs';
7
7
  import IconButton from '../../../../../node_modules/@mui/material/IconButton/IconButton.mjs';
8
- import Menu from '../../../../../node_modules/@mui/material/Menu/Menu.mjs';
9
8
  import { useState as h, useCallback as T, useMemo as F } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
9
+ import Menu from '../../../../../node_modules/@mui/material/Menu/Menu.mjs';
10
10
 
11
11
  const StyledMenuItem$1 = styled(MenuItem)(({ theme })=>({
12
12
  padding: theme.spacing(1),
@@ -7,9 +7,9 @@ import { Modal } from './Modal.mjs';
7
7
  import { useToast } from '../shared/components/Toast.mjs';
8
8
  import { Typography } from './Typography.mjs';
9
9
  import styled from '../../../../../node_modules/@mui/material/styles/styled.mjs';
10
+ import { useState as h, useContext as q } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
10
11
  import { useModalState } from '../shared/components/Modal.mjs';
11
12
  import { createContext as F } from '../../../../../node_modules/preact/dist/preact.module.mjs';
12
- import { useState as h, useContext as q } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
13
13
 
14
14
  const Container$2 = styled('div')(({ theme })=>({
15
15
  border: '1px solid',
@@ -19,8 +19,8 @@ import { useRoleSortFn } from '../utils/useRoleSortFn.mjs';
19
19
  import { useSelf } from '../utils/useSelf.mjs';
20
20
  import { useStateSliceSetter } from '../utils/useStateSliceSetter.mjs';
21
21
  import { useMemberManagementRouterController } from './MemberManagementRouter.mjs';
22
- import { useModalState } from '../shared/components/Modal.mjs';
23
22
  import { useMemo as F, useRef as _, useCallback as T, useState as h } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
23
+ import { useModalState } from '../shared/components/Modal.mjs';
24
24
 
25
25
  const getRoleSourceTypeDisplayName = (sourceType)=>{
26
26
  switch(sourceType){
@@ -6,8 +6,8 @@ import { Modal } from '../components/Modal.mjs';
6
6
  import { ROLE_ID_STYTCH_MEMBER } from '../utils/roles.mjs';
7
7
  import { useRbac } from '../utils/useRbac.mjs';
8
8
  import { useRoleAutocomplete } from '../utils/useRoleAutocomplete.mjs';
9
- import { useModalState } from '../shared/components/Modal.mjs';
10
9
  import { useState as h, useCallback as T } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
10
+ import { useModalState } from '../shared/components/Modal.mjs';
11
11
 
12
12
  const defaultInviteRoles = [];
13
13
  const useInviteModal = (inviteUser)=>{
@@ -7,8 +7,8 @@ import { memberGetKey } from '../utils/memberGetKey.mjs';
7
7
  import { useMutateWithToast } from '../utils/useMutateWithToast.mjs';
8
8
  import { useStytchClient } from '../utils/useStytchClient.mjs';
9
9
  import { useUpdateCachedMember } from '../utils/useUpdateCachedMember.mjs';
10
- import { useModalState } from '../shared/components/Modal.mjs';
11
10
  import { useState as h } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
11
+ import { useModalState } from '../shared/components/Modal.mjs';
12
12
 
13
13
  const getActionCopy = ({ status, isEmailVerified })=>{
14
14
  if (status === 'invited') {
@@ -16,8 +16,8 @@ import { useRbac } from '../utils/useRbac.mjs';
16
16
  import { scimGetConnectionKey } from '../utils/useScimConnection.mjs';
17
17
  import { useStytchClient } from '../utils/useStytchClient.mjs';
18
18
  import { getFieldBy, DEFAULT_HEADER_BEARER_TOKEN_LABEL } from './scimInfo.mjs';
19
- import { useModalState } from '../shared/components/Modal.mjs';
20
19
  import { useState as h } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
20
+ import { useModalState } from '../shared/components/Modal.mjs';
21
21
 
22
22
  const tokenRotationItemRenderers = ({ isCurrent, tokenTitle, tokenLastFour, tokenExpiresAt })=>[
23
23
  {
@@ -7,9 +7,9 @@ import { SCIMFields } from '../components/ScimFields.mjs';
7
7
  import { Typography } from '../components/Typography.mjs';
8
8
  import { getSCIMIdpInfo } from './scimInfo.mjs';
9
9
  import { useScimRouterController } from './SCIMRouter.mjs';
10
+ import { useState as h } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
10
11
  import Accordion from '../../../../../node_modules/@mui/material/Accordion/Accordion.mjs';
11
12
  import AccordionDetails from '../../../../../node_modules/@mui/material/AccordionDetails/AccordionDetails.mjs';
12
- import { useState as h } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
13
13
 
14
14
  const SCIMNewConnectionConfigureScreen = ({ connection })=>{
15
15
  const { navigate } = useScimRouterController();
@@ -29,10 +29,10 @@ import { useScimConnection } from '../utils/useScimConnection.mjs';
29
29
  import { useScimConnectionGroups } from '../utils/useScimConnectionGroups.mjs';
30
30
  import { useSsoConnections } from '../utils/useSsoConnections.mjs';
31
31
  import { useOrgSettingsRouterController } from './AdminPortalOrgRouter.mjs';
32
+ import { useMemo as F, useState as h } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
32
33
  import { useModalState } from '../shared/components/Modal.mjs';
33
34
  import TableContainer from '../../../../../node_modules/@mui/material/TableContainer/TableContainer.mjs';
34
35
  import Paper from '../../../../../node_modules/@mui/material/Paper/Paper.mjs';
35
- import { useMemo as F, useState as h } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
36
36
 
37
37
  const roleAssignmentsItemRenderers = (idMap, rolesById)=>[
38
38
  {
@@ -27,8 +27,8 @@ import { useRbac } from '../utils/useRbac.mjs';
27
27
  import { useSelf } from '../utils/useSelf.mjs';
28
28
  import { useStateSliceSetter } from '../utils/useStateSliceSetter.mjs';
29
29
  import { useOrgSettingsRouterController } from './AdminPortalOrgRouter.mjs';
30
- import { useModalState } from '../shared/components/Modal.mjs';
31
30
  import { useMemo as F, useCallback as T, useState as h } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
31
+ import { useModalState } from '../shared/components/Modal.mjs';
32
32
 
33
33
  const useMutateAuthSettings = ()=>{
34
34
  const { mutate } = useMutateOrganization();
@@ -4,11 +4,11 @@ import { TABLE_ACTIONS_HEADER, TableActionsContainer } from './TableActions.mjs'
4
4
  import styled from '../../../../../../node_modules/@mui/material/styles/styled.mjs';
5
5
  import Table from '../../../../../../node_modules/@mui/material/Table/Table.mjs';
6
6
  import TableCell from '../../../../../../node_modules/@mui/material/TableCell/TableCell.mjs';
7
+ import { useCallback as T, useState as h, useEffect as p } from '../../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
7
8
  import TableContainer from '../../../../../../node_modules/@mui/material/TableContainer/TableContainer.mjs';
8
9
  import TableHead from '../../../../../../node_modules/@mui/material/TableHead/TableHead.mjs';
9
10
  import TableRow from '../../../../../../node_modules/@mui/material/TableRow/TableRow.mjs';
10
11
  import TableBody from '../../../../../../node_modules/@mui/material/TableBody/TableBody.mjs';
11
- import { useCallback as T, useState as h, useEffect as p } from '../../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
12
12
 
13
13
  const StyledTable$1 = styled(Table)(({ hasActions })=>[
14
14
  // For some reason with position sticky, the table is 2px wider than the container
@@ -2,8 +2,8 @@ import wn from '../../../../../../node_modules/preact/compat/dist/compat.module.
2
2
  import { useUniqueId } from '../../../utils/uniqueId.mjs';
3
3
  import { DEFAULT_GRID_COLUMN_WIDTH, DEFAULT_MAX_ITEM_WIDTH } from './constants.mjs';
4
4
  import styled from '../../../../../../node_modules/@mui/material/styles/styled.mjs';
5
- import OutlinedInput from '../../../../../../node_modules/@mui/material/OutlinedInput/OutlinedInput.mjs';
6
5
  import { useState as h, useEffect as p } from '../../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
6
+ import OutlinedInput from '../../../../../../node_modules/@mui/material/OutlinedInput/OutlinedInput.mjs';
7
7
 
8
8
  const InputContainer = styled('div')(({ isMultiline, isReadOnly, fullWidth, theme })=>[
9
9
  {
@@ -4,9 +4,9 @@ import { useToast } from './Toast.mjs';
4
4
  import styled from '../../../../../../node_modules/@mui/material/styles/styled.mjs';
5
5
  import tablePaginationClasses from '../../../../../../node_modules/@mui/material/TablePagination/tablePaginationClasses.mjs';
6
6
  import iconButtonClasses from '../../../../../../node_modules/@mui/material/IconButton/iconButtonClasses.mjs';
7
+ import { useRef as _ } from '../../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
7
8
  import CircularProgress from '../../../../../../node_modules/@mui/material/CircularProgress/CircularProgress.mjs';
8
9
  import TablePagination from '../../../../../../node_modules/@mui/material/TablePagination/TablePagination.mjs';
9
- import { useRef as _ } from '../../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
10
10
 
11
11
  const DEFAULT_TABLE_ROWS_PER_PAGE = 20;
12
12
  const LOAD_NEXT_PAGE_ERROR = 'Failed to load the next page.';
@@ -8,12 +8,12 @@ import styled from '../../../../../../node_modules/@mui/material/styles/styled.m
8
8
  import Table from '../../../../../../node_modules/@mui/material/Table/Table.mjs';
9
9
  import TableRow$1 from '../../../../../../node_modules/@mui/material/TableRow/TableRow.mjs';
10
10
  import TableCell$1 from '../../../../../../node_modules/@mui/material/TableCell/TableCell.mjs';
11
+ import { useState as h, useEffect as p } from '../../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
11
12
  import TableContainer from '../../../../../../node_modules/@mui/material/TableContainer/TableContainer.mjs';
12
13
  import TableHead from '../../../../../../node_modules/@mui/material/TableHead/TableHead.mjs';
13
14
  import TableBody from '../../../../../../node_modules/@mui/material/TableBody/TableBody.mjs';
14
15
  import IconButton from '../../../../../../node_modules/@mui/material/IconButton/IconButton.mjs';
15
16
  import Collapse from '../../../../../../node_modules/@mui/material/Collapse/Collapse.mjs';
16
- import { useState as h, useEffect as p } from '../../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
17
17
 
18
18
  const TABLE_CONTAINER_ID = 'table-container';
19
19
  const EXPANDED_CONTENT_CLASSNAME = 'expanded-content';
@@ -9,8 +9,8 @@ import Snackbar from '../../../../../../node_modules/@mui/material/Snackbar/Snac
9
9
  import IconButton from '../../../../../../node_modules/@mui/material/IconButton/IconButton.mjs';
10
10
  import Alert from '../../../../../../node_modules/@mui/material/Alert/Alert.mjs';
11
11
  import alertClasses from '../../../../../../node_modules/@mui/material/Alert/alertClasses.mjs';
12
- import { createContext as F } from '../../../../../../node_modules/preact/dist/preact.module.mjs';
13
12
  import { useState as h, useRef as _, useCallback as T, useContext as q } from '../../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
13
+ import { createContext as F } from '../../../../../../node_modules/preact/dist/preact.module.mjs';
14
14
 
15
15
  const StyledSnackbar = styled(Snackbar)(({ theme })=>({
16
16
  bottom: theme.spacing(5)
@@ -1,7 +1,7 @@
1
1
  import wn from '../../../../../../node_modules/preact/compat/dist/compat.module.mjs';
2
2
  import styled from '../../../../../../node_modules/@mui/material/styles/styled.mjs';
3
- import Tooltip from '../../../../../../node_modules/@mui/material/Tooltip/Tooltip.mjs';
4
3
  import { useState as h } from '../../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
4
+ import Tooltip from '../../../../../../node_modules/@mui/material/Tooltip/Tooltip.mjs';
5
5
 
6
6
  const HoverTarget = styled('span')({
7
7
  display: 'flex',
@@ -7,9 +7,9 @@ import { Modal } from '../components/Modal.mjs';
7
7
  import { Select } from '../components/Select.mjs';
8
8
  import { Typography } from '../components/Typography.mjs';
9
9
  import { collator } from '../utils/collator.mjs';
10
+ import { useMemo as F, useState as h, useCallback as T } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
10
11
  import { useModalState } from '../shared/components/Modal.mjs';
11
12
  import Add from '../../../../../node_modules/@mui/icons-material/esm/Add.mjs';
12
- import { useMemo as F, useState as h, useCallback as T } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
13
13
 
14
14
  const nameKeys = new Set([
15
15
  'full_name',
@@ -20,9 +20,9 @@ import { AttributeMappingTable } from './AttributeMappingTable.mjs';
20
20
  import { getIdpAndConnectionInfo } from './IdpInfo.mjs';
21
21
  import { samlIdpSelectItems, oidcIdpSelectItems } from './IdpSelect.mjs';
22
22
  import { useSsoRouterController } from './SSORouter.mjs';
23
- import { useModalState } from '../shared/components/Modal.mjs';
24
23
  import { useMemo as F, useCallback as T, useState as h } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
25
24
  import { StytchSDKAPIError } from '../../../../core/src/public/SDKErrors.mjs';
25
+ import { useModalState } from '../shared/components/Modal.mjs';
26
26
 
27
27
  const certItemRenderer = [
28
28
  {
@@ -16,8 +16,8 @@ import { useRbac } from '../utils/useRbac.mjs';
16
16
  import { useRoleAutocomplete } from '../utils/useRoleAutocomplete.mjs';
17
17
  import { getIdpInfo } from './IdpInfo.mjs';
18
18
  import { useSsoRouterController } from './SSORouter.mjs';
19
- import Add from '../../../../../node_modules/@mui/icons-material/esm/Add.mjs';
20
19
  import { useMemo as F, useCallback as T } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
20
+ import Add from '../../../../../node_modules/@mui/icons-material/esm/Add.mjs';
21
21
 
22
22
  const RoleAssignmentsSectionBody = ({ connection, localState, setLocalState, remoteState })=>{
23
23
  const { editing } = useSettingsContainer();
@@ -14,8 +14,8 @@ import { DetailsSection } from './DetailsSection.mjs';
14
14
  import { OrganizationUpdatesSection } from './OrganizationUpdatesSection.mjs';
15
15
  import { RoleAssignmentsSection } from './RoleAssignmentsSection.mjs';
16
16
  import { useSsoRouterController } from './SSORouter.mjs';
17
- import ChevronLeft from '../../../../../node_modules/@mui/icons-material/esm/ChevronLeft.mjs';
18
17
  import { useMemo as F, useCallback as T } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
18
+ import ChevronLeft from '../../../../../node_modules/@mui/icons-material/esm/ChevronLeft.mjs';
19
19
 
20
20
  const SSOConnectionDetailsScreen = ({ connectionId })=>{
21
21
  const { navigate } = useSsoRouterController();
@@ -17,12 +17,12 @@ import { useDisplayPagination } from '../utils/useDisplayPagination.mjs';
17
17
  import { useRbac } from '../utils/useRbac.mjs';
18
18
  import { getIdpInfo } from './IdpInfo.mjs';
19
19
  import { useSsoRouterController } from './SSORouter.mjs';
20
+ import { useMemo as F, useCallback as T, useState as h } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
20
21
  import VisibilityOutlined from '../../../../../node_modules/@mui/icons-material/esm/VisibilityOutlined.mjs';
21
22
  import EditOutlined from '../../../../../node_modules/@mui/icons-material/esm/EditOutlined.mjs';
22
23
  import Tune from '../../../../../node_modules/@mui/icons-material/esm/Tune.mjs';
23
24
  import DeleteOutlined from '../../../../../node_modules/@mui/icons-material/esm/DeleteOutlined.mjs';
24
25
  import Add from '../../../../../node_modules/@mui/icons-material/esm/Add.mjs';
25
- import { useMemo as F, useCallback as T, useState as h } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
26
26
 
27
27
  const itemRenderer = [
28
28
  {
@@ -18,10 +18,10 @@ import { CreateApplication } from './CreateApplication.mjs';
18
18
  import { DetailedAttributeMappingTable } from './DetailedAttributeMappingTable.mjs';
19
19
  import { getIdpAndConnectionInfo, typeToUserFriendlyName } from './IdpInfo.mjs';
20
20
  import { useSsoRouterController } from './SSORouter.mjs';
21
+ import { useState as h, useMemo as F, useCallback as T } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
21
22
  import Accordion from '../../../../../node_modules/@mui/material/Accordion/Accordion.mjs';
22
23
  import AccordionDetails from '../../../../../node_modules/@mui/material/AccordionDetails/AccordionDetails.mjs';
23
24
  import ChevronLeft from '../../../../../node_modules/@mui/icons-material/esm/ChevronLeft.mjs';
24
- import { useState as h, useMemo as F, useCallback as T } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
25
25
 
26
26
  const useManualConfigurationState = ({ idp, type })=>{
27
27
  const [manualConfigurationState, setManualConfigurationState] = h(false);
@@ -12,8 +12,8 @@ import { useRevalidateConnectionList } from '../utils/useRevalidateConnectionLis
12
12
  import { useStytchClient } from '../utils/useStytchClient.mjs';
13
13
  import { idpOptions, idpSelectItems } from './IdpSelect.mjs';
14
14
  import { useSsoRouterController } from './SSORouter.mjs';
15
- import ChevronLeft from '../../../../../node_modules/@mui/icons-material/esm/ChevronLeft.mjs';
16
15
  import { useState as h, useCallback as T } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
16
+ import ChevronLeft from '../../../../../node_modules/@mui/icons-material/esm/ChevronLeft.mjs';
17
17
 
18
18
  const SSONewConnectionScreen = ()=>{
19
19
  const { navigate } = useSsoRouterController();
@@ -10,6 +10,8 @@ import { writeB2BInternals } from '../utils/internal.mjs';
10
10
  import { HeadlessB2BOAuthClient } from './HeadlessB2BOAuthClient.mjs';
11
11
  import { B2BOneTapProvider } from './oneTap/B2BOneTapProvider.mjs';
12
12
  import { checkB2BNotSSR, checkPublicToken } from '../../../core/src/utils/checks.mjs';
13
+ import { StateChangeClient } from '../../../core/src/StateChangeClient.mjs';
14
+ import { DFPProtectedAuthProvider } from '../../../core/src/DFPProtectedAuthProvider.mjs';
13
15
  import { HeadlessB2BOrganizationClient } from '../../../core/src/HeadlessClients/b2b/HeadlessB2BOrganizationClient.mjs';
14
16
  import { HeadlessB2BDiscoveryClient } from '../../../core/src/HeadlessClients/b2b/HeadlessB2BDiscoveryClient.mjs';
15
17
  import { HeadlessB2BIDPClient } from '../../../core/src/HeadlessClients/b2b/HeadlessB2BIDPClient.mjs';
@@ -28,10 +30,8 @@ import { HeadlessB2BTOTPsClient } from '../../../core/src/HeadlessClients/b2b/He
28
30
  import '../../../core/src/HeadlessClients/HeadlessCryptoWalletClient.mjs';
29
31
  import '../../../core/src/HeadlessClients/HeadlessMagicLinkClient.mjs';
30
32
  import '../../../core/src/HeadlessClients/HeadlessPasswordClient.mjs';
31
- import { VERTICAL_CONSUMER } from '../../../core/src/Vertical.mjs';
32
- import { StateChangeClient } from '../../../core/src/StateChangeClient.mjs';
33
- import { DFPProtectedAuthProvider } from '../../../core/src/DFPProtectedAuthProvider.mjs';
34
33
  import { SessionManager } from '../../../core/src/SessionManager.mjs';
34
+ import { VERTICAL_CONSUMER } from '../../../core/src/Vertical.mjs';
35
35
  import { SearchDataManager } from '../../../core/src/SearchManager.mjs';
36
36
 
37
37
  /**
@@ -1,7 +1,7 @@
1
1
  import { GoogleOneTapClient } from './GoogleOneTapClient.mjs';
2
+ import { StytchAPIError } from '../../../core/src/public/SDKErrors.mjs';
2
3
  import { loadESModule } from '../../../core/src/utils/loadESModule.mjs';
3
4
  import { GOOGLE_ONE_TAP_SCRIPT_URL } from '../../../core/src/constants.mjs';
4
- import { StytchAPIError } from '../../../core/src/public/SDKErrors.mjs';
5
5
 
6
6
  const loadGoogleOneTapClient = ()=>loadESModule(GOOGLE_ONE_TAP_SCRIPT_URL, ()=>window.google.accounts.id);
7
7
  /**
@@ -8,8 +8,8 @@ import * as B2BProducts from './B2BProducts.mjs';
8
8
  import { GlobalContextProvider, DEFAULT_STATE } from './GlobalContextProvider.mjs';
9
9
  import { InternalAppContainer } from './InternalAppContainer.mjs';
10
10
  import { IDPConsentScreen } from './screens/IDPConsent.mjs';
11
- import { RUN_IN_DEV } from '../../../../core/src/utils/dev.mjs';
12
11
  import { useEffect as p } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
12
+ import { RUN_IN_DEV } from '../../../../core/src/utils/dev.mjs';
13
13
  import { logger } from '../../../../core/src/utils/logger.mjs';
14
14
 
15
15
  /**
@@ -6,8 +6,8 @@ import { usePresentationWithDefault, PresentationContext } from '../components/P
6
6
  import AppContainer from './Container.mjs';
7
7
  import { DEFAULT_STATE, GlobalContextProvider } from './GlobalContextProvider.mjs';
8
8
  import { AppScreens } from './types/AppScreens.mjs';
9
- import { RedirectURLType, AuthFlowType } from '../../../../core/src/public/b2b/ui.mjs';
10
9
  import { useState as h, useEffect as p, useMemo as F } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
10
+ import { RedirectURLType, AuthFlowType } from '../../../../core/src/public/b2b/ui.mjs';
11
11
 
12
12
  const InternalAppContainer = ({ client, presentation, callbacks, config, strings })=>{
13
13
  /**
@@ -8,10 +8,10 @@ import { useIsOnlyFloatingOneTap } from '../hooks/useIsOnlyFloatingOneTap.mjs';
8
8
  import { useLastUsedAuthMethod } from '../hooks/useLastUsedAuthMethod.mjs';
9
9
  import { AppScreens } from '../types/AppScreens.mjs';
10
10
  import { OAuthB2BButton } from './OAuthB2BButton.mjs';
11
- import { DEV } from '../../../../../core/src/utils/dev.mjs';
12
11
  import { useState as h, useCallback as T, useEffect as p } from '../../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
13
- import { logger } from '../../../../../core/src/utils/logger.mjs';
14
12
  import { OneTapPositions } from '../../../../../core/src/public/ui.mjs';
13
+ import { DEV } from '../../../../../core/src/utils/dev.mjs';
14
+ import { logger } from '../../../../../core/src/utils/logger.mjs';
15
15
  import { B2BOAuthProviders } from '../../../../../core/src/public/b2b/ui.mjs';
16
16
 
17
17
  const B2BGoogleOneTap = ({ customScopes, providerParams, cancelOnTapOutside })=>{
@@ -8,8 +8,8 @@ import { getEnabledMethods } from '../getEnabledMethods.mjs';
8
8
  import { useConfig, useGlobalReducer } from '../GlobalContextProvider.mjs';
9
9
  import { B2B_MFA_METHODS } from '../reducer/mfa.mjs';
10
10
  import { AppScreens } from '../types/AppScreens.mjs';
11
- import { B2BMFAProducts } from '../../../../../core/src/public/b2b/ui.mjs';
12
11
  import { useMemo as F } from '../../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
12
+ import { B2BMFAProducts } from '../../../../../core/src/public/b2b/ui.mjs';
13
13
 
14
14
  const mfaOptions = {
15
15
  [B2BMFAProducts.totp]: {
@@ -138,15 +138,15 @@ const PasswordResetForm = ()=>{
138
138
  type: StytchEventType.B2BDiscoveryPasswordReset,
139
139
  data
140
140
  });
141
- dispatch({
142
- type: 'transition',
143
- screen: AppScreens.Discovery
144
- });
145
141
  dispatch({
146
142
  type: 'set_discovery_state',
147
143
  email: data.email_address,
148
144
  discoveredOrganizations: data.discovered_organizations
149
145
  });
146
+ dispatch({
147
+ type: 'transition',
148
+ screen: AppScreens.Discovery
149
+ });
150
150
  }).catch((e)=>{
151
151
  onError(e);
152
152
  setErrorMessage(getTranslatedError(e, $__));
@@ -1 +1 @@
1
- {"version":3,"file":"PasswordResetForm.mjs","sources":["../../../../../../../../../web/src/ui/b2b/screens/PasswordResetForm.tsx"],"sourcesContent":["import { useLingui } from '@lingui/react/macro';\nimport { DEFAULT_SESSION_DURATION_MINUTES } from '@stytch/core';\nimport { StytchAPIError, StytchEventType } from '@stytch/core/public';\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport { B2BSubscriptionDataLayer } from '../../../SubscriptionService';\nimport { debounce, noop } from '../../../utils';\nimport { clearStytchTokenParams } from '../../../utils/createAuthUrlHandler';\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\nimport { readB2BInternals } from '../../../utils/internal';\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport EmailInput from '../../components/molecules/EmailInput';\nimport { getNewPasswordProps, PasswordError, PasswordErrorProps } from '../../components/molecules/PasswordError';\nimport { PasswordInput } from '../../components/molecules/PasswordInput';\nimport { useConfig, useErrorCallback, useEventCallback, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { onAuthenticateSuccess, useBootstrap as useB2BBootstrap } from '../utils';\n\nexport const PasswordResetForm = () => {\n const stytchClient = useStytch();\n const config = useConfig();\n const [, dispatch] = useGlobalReducer();\n const bootstrap = useB2BBootstrap();\n const { t } = useLingui();\n\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n\n const [resetToken, resetTokenType] = useMemo(() => {\n const parsed = stytchClient.parseAuthenticateUrl();\n if (!parsed) return ['', ''];\n return [parsed.token, parsed.tokenType];\n }, [stytchClient]);\n\n const dataLayer = readB2BInternals(stytchClient).dataLayer as B2BSubscriptionDataLayer;\n const email = dataLayer.getItem('reset-email-value');\n const [password, setPassword] = useState('');\n const [errorMessage, setErrorMessage] = useState('');\n const [passwordError, setPasswordError] = useState<PasswordErrorProps>({ policy: 'notLoaded' });\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const updateStrengthCheck = useMemo(\n () =>\n debounce((password: string) => {\n setErrorMessage('');\n return stytchClient.passwords\n .strengthCheck({ password })\n .then(({ score, valid_password, zxcvbn_feedback, luds_feedback, strength_policy, breached_password }) => {\n const common = {\n passwordInvalid: !valid_password,\n isPasswordBreached: breached_password,\n };\n\n if (strength_policy === 'zxcvbn') {\n setPasswordError({\n policy: strength_policy,\n ...common,\n passwordScore: score,\n passwordWarning: zxcvbn_feedback.warning,\n passwordSuggestions: zxcvbn_feedback.suggestions,\n });\n } else if (strength_policy === 'luds') {\n setPasswordError({\n policy: strength_policy,\n ...common,\n missingCharacters: luds_feedback.missing_characters,\n missingComplexity: luds_feedback.missing_complexity,\n });\n }\n })\n .catch((e: StytchAPIError) => {\n setErrorMessage(getTranslatedError(e, t));\n });\n }),\n [stytchClient.passwords, t],\n );\n\n useEffect(() => {\n if (resetTokenType === 'multi_tenant_magic_links') {\n stytchClient.magicLinks\n .authenticate({\n magic_links_token: resetToken,\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n locale: config.emailMagicLinksOptions?.locale,\n })\n .then((data) => {\n clearStytchTokenParams();\n dispatch({\n type: 'primary_authenticate_success',\n response: data,\n includedMfaMethods: config.mfaProductInclude,\n resetTokenType,\n });\n })\n .catch((e: StytchAPIError) => {\n setErrorMessage(getTranslatedError(e, t));\n onError(e);\n });\n return;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- SDK-1354\n }, [resetTokenType]);\n\n const onPasswordChange = (password: string) => {\n setPassword(password);\n updateStrengthCheck(password);\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n setErrorMessage('');\n setIsSubmitting(true);\n\n if (resetTokenType == 'multi_tenant_passwords') {\n stytchClient.passwords\n .resetByEmail({\n password_reset_token: resetToken,\n password,\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n locale: config.passwordOptions?.locale,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.B2BPasswordResetByEmail, data });\n onAuthenticateSuccess(data, dispatch, config);\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n setErrorMessage(getTranslatedError(e, t));\n setIsSubmitting(false);\n });\n } else if (resetTokenType == 'discovery') {\n stytchClient.passwords.discovery\n .resetByEmail({\n password_reset_token: resetToken,\n password,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.B2BDiscoveryPasswordReset, data });\n dispatch({ type: 'transition', screen: AppScreens.Discovery });\n dispatch({\n type: 'set_discovery_state',\n email: data.email_address,\n discoveredOrganizations: data.discovered_organizations,\n });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n setErrorMessage(getTranslatedError(e, t));\n setIsSubmitting(false);\n });\n } else {\n stytchClient.passwords\n .resetBySession({ password })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.B2BPasswordResetBySession, data });\n dispatch({ type: 'transition', screen: AppScreens.LoggedIn });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n setErrorMessage(getTranslatedError(e, t));\n setIsSubmitting(false);\n });\n }\n };\n\n const passwordInputProps = getNewPasswordProps(bootstrap, passwordError.policy);\n\n return (\n <Column gap={6} as=\"form\" onSubmit={handleSubmit}>\n <Typography variant=\"header\">{t({ id: 'password.setNew.title', message: 'Set a new password' })}</Typography>\n\n <Column gap={2}>\n {email ? <EmailInput email={email} setEmail={noop} disabled /> : null}\n\n <PasswordInput\n password={password}\n setPassword={onPasswordChange}\n error={errorMessage}\n {...passwordInputProps}\n />\n\n <PasswordError bootstrap={bootstrap} {...passwordError} />\n\n <Button\n variant=\"primary\"\n loading={isSubmitting}\n type=\"submit\"\n disabled={passwordError.policy === 'notLoaded' || passwordError.passwordInvalid}\n >\n {t({ id: 'button.continue', message: 'Continue' })}\n </Button>\n </Column>\n </Column>\n );\n};\n"],"names":["PasswordResetForm","stytchClient","useStytch","config","useConfig","dispatch","useGlobalReducer","bootstrap","useB2BBootstrap","useLingui","onEvent","useEventCallback","onError","useErrorCallback","resetToken","resetTokenType","useMemo","parsed","parseAuthenticateUrl","token","tokenType","dataLayer","readB2BInternals","email","getItem","password","setPassword","useState","errorMessage","setErrorMessage","passwordError","setPasswordError","policy","isSubmitting","setIsSubmitting","updateStrengthCheck","debounce","passwords","strengthCheck","then","score","valid_password","zxcvbn_feedback","luds_feedback","strength_policy","breached_password","common","passwordInvalid","isPasswordBreached","passwordScore","passwordWarning","warning","passwordSuggestions","suggestions","missingCharacters","missing_characters","missingComplexity","missing_complexity","catch","e","getTranslatedError","useEffect","magicLinks","authenticate","magic_links_token","session_duration_minutes","sessionOptions","sessionDurationMinutes","DEFAULT_SESSION_DURATION_MINUTES","locale","emailMagicLinksOptions","data","clearStytchTokenParams","type","response","includedMfaMethods","mfaProductInclude","onPasswordChange","handleSubmit","preventDefault","resetByEmail","password_reset_token","passwordOptions","StytchEventType","B2BPasswordResetByEmail","onAuthenticateSuccess","discovery","B2BDiscoveryPasswordReset","screen","AppScreens","Discovery","email_address","discoveredOrganizations","discovered_organizations","resetBySession","B2BPasswordResetBySession","LoggedIn","passwordInputProps","getNewPasswordProps","React","Column","gap","as","onSubmit","Typography","variant","EmailInput","setEmail","noop","disabled","PasswordInput","error","PasswordError","Button","loading"],"mappings":"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"}
1
+ {"version":3,"file":"PasswordResetForm.mjs","sources":["../../../../../../../../../web/src/ui/b2b/screens/PasswordResetForm.tsx"],"sourcesContent":["import { useLingui } from '@lingui/react/macro';\nimport { DEFAULT_SESSION_DURATION_MINUTES } from '@stytch/core';\nimport { StytchAPIError, StytchEventType } from '@stytch/core/public';\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport { B2BSubscriptionDataLayer } from '../../../SubscriptionService';\nimport { debounce, noop } from '../../../utils';\nimport { clearStytchTokenParams } from '../../../utils/createAuthUrlHandler';\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\nimport { readB2BInternals } from '../../../utils/internal';\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport EmailInput from '../../components/molecules/EmailInput';\nimport { getNewPasswordProps, PasswordError, PasswordErrorProps } from '../../components/molecules/PasswordError';\nimport { PasswordInput } from '../../components/molecules/PasswordInput';\nimport { useConfig, useErrorCallback, useEventCallback, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { onAuthenticateSuccess, useBootstrap as useB2BBootstrap } from '../utils';\n\nexport const PasswordResetForm = () => {\n const stytchClient = useStytch();\n const config = useConfig();\n const [, dispatch] = useGlobalReducer();\n const bootstrap = useB2BBootstrap();\n const { t } = useLingui();\n\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n\n const [resetToken, resetTokenType] = useMemo(() => {\n const parsed = stytchClient.parseAuthenticateUrl();\n if (!parsed) return ['', ''];\n return [parsed.token, parsed.tokenType];\n }, [stytchClient]);\n\n const dataLayer = readB2BInternals(stytchClient).dataLayer as B2BSubscriptionDataLayer;\n const email = dataLayer.getItem('reset-email-value');\n const [password, setPassword] = useState('');\n const [errorMessage, setErrorMessage] = useState('');\n const [passwordError, setPasswordError] = useState<PasswordErrorProps>({ policy: 'notLoaded' });\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const updateStrengthCheck = useMemo(\n () =>\n debounce((password: string) => {\n setErrorMessage('');\n return stytchClient.passwords\n .strengthCheck({ password })\n .then(({ score, valid_password, zxcvbn_feedback, luds_feedback, strength_policy, breached_password }) => {\n const common = {\n passwordInvalid: !valid_password,\n isPasswordBreached: breached_password,\n };\n\n if (strength_policy === 'zxcvbn') {\n setPasswordError({\n policy: strength_policy,\n ...common,\n passwordScore: score,\n passwordWarning: zxcvbn_feedback.warning,\n passwordSuggestions: zxcvbn_feedback.suggestions,\n });\n } else if (strength_policy === 'luds') {\n setPasswordError({\n policy: strength_policy,\n ...common,\n missingCharacters: luds_feedback.missing_characters,\n missingComplexity: luds_feedback.missing_complexity,\n });\n }\n })\n .catch((e: StytchAPIError) => {\n setErrorMessage(getTranslatedError(e, t));\n });\n }),\n [stytchClient.passwords, t],\n );\n\n useEffect(() => {\n if (resetTokenType === 'multi_tenant_magic_links') {\n stytchClient.magicLinks\n .authenticate({\n magic_links_token: resetToken,\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n locale: config.emailMagicLinksOptions?.locale,\n })\n .then((data) => {\n clearStytchTokenParams();\n dispatch({\n type: 'primary_authenticate_success',\n response: data,\n includedMfaMethods: config.mfaProductInclude,\n resetTokenType,\n });\n })\n .catch((e: StytchAPIError) => {\n setErrorMessage(getTranslatedError(e, t));\n onError(e);\n });\n return;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- SDK-1354\n }, [resetTokenType]);\n\n const onPasswordChange = (password: string) => {\n setPassword(password);\n updateStrengthCheck(password);\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n setErrorMessage('');\n setIsSubmitting(true);\n\n if (resetTokenType == 'multi_tenant_passwords') {\n stytchClient.passwords\n .resetByEmail({\n password_reset_token: resetToken,\n password,\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n locale: config.passwordOptions?.locale,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.B2BPasswordResetByEmail, data });\n onAuthenticateSuccess(data, dispatch, config);\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n setErrorMessage(getTranslatedError(e, t));\n setIsSubmitting(false);\n });\n } else if (resetTokenType == 'discovery') {\n stytchClient.passwords.discovery\n .resetByEmail({\n password_reset_token: resetToken,\n password,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.B2BDiscoveryPasswordReset, data });\n dispatch({\n type: 'set_discovery_state',\n email: data.email_address,\n discoveredOrganizations: data.discovered_organizations,\n });\n dispatch({ type: 'transition', screen: AppScreens.Discovery });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n setErrorMessage(getTranslatedError(e, t));\n setIsSubmitting(false);\n });\n } else {\n stytchClient.passwords\n .resetBySession({ password })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.B2BPasswordResetBySession, data });\n dispatch({ type: 'transition', screen: AppScreens.LoggedIn });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n setErrorMessage(getTranslatedError(e, t));\n setIsSubmitting(false);\n });\n }\n };\n\n const passwordInputProps = getNewPasswordProps(bootstrap, passwordError.policy);\n\n return (\n <Column gap={6} as=\"form\" onSubmit={handleSubmit}>\n <Typography variant=\"header\">{t({ id: 'password.setNew.title', message: 'Set a new password' })}</Typography>\n\n <Column gap={2}>\n {email ? <EmailInput email={email} setEmail={noop} disabled /> : null}\n\n <PasswordInput\n password={password}\n setPassword={onPasswordChange}\n error={errorMessage}\n {...passwordInputProps}\n />\n\n <PasswordError bootstrap={bootstrap} {...passwordError} />\n\n <Button\n variant=\"primary\"\n loading={isSubmitting}\n type=\"submit\"\n disabled={passwordError.policy === 'notLoaded' || passwordError.passwordInvalid}\n >\n {t({ id: 'button.continue', message: 'Continue' })}\n </Button>\n </Column>\n </Column>\n );\n};\n"],"names":["PasswordResetForm","stytchClient","useStytch","config","useConfig","dispatch","useGlobalReducer","bootstrap","useB2BBootstrap","useLingui","onEvent","useEventCallback","onError","useErrorCallback","resetToken","resetTokenType","useMemo","parsed","parseAuthenticateUrl","token","tokenType","dataLayer","readB2BInternals","email","getItem","password","setPassword","useState","errorMessage","setErrorMessage","passwordError","setPasswordError","policy","isSubmitting","setIsSubmitting","updateStrengthCheck","debounce","passwords","strengthCheck","then","score","valid_password","zxcvbn_feedback","luds_feedback","strength_policy","breached_password","common","passwordInvalid","isPasswordBreached","passwordScore","passwordWarning","warning","passwordSuggestions","suggestions","missingCharacters","missing_characters","missingComplexity","missing_complexity","catch","e","getTranslatedError","useEffect","magicLinks","authenticate","magic_links_token","session_duration_minutes","sessionOptions","sessionDurationMinutes","DEFAULT_SESSION_DURATION_MINUTES","locale","emailMagicLinksOptions","data","clearStytchTokenParams","type","response","includedMfaMethods","mfaProductInclude","onPasswordChange","handleSubmit","preventDefault","resetByEmail","password_reset_token","passwordOptions","StytchEventType","B2BPasswordResetByEmail","onAuthenticateSuccess","discovery","B2BDiscoveryPasswordReset","email_address","discoveredOrganizations","discovered_organizations","screen","AppScreens","Discovery","resetBySession","B2BPasswordResetBySession","LoggedIn","passwordInputProps","getNewPasswordProps","React","Column","gap","as","onSubmit","Typography","variant","EmailInput","setEmail","noop","disabled","PasswordInput","error","PasswordError","Button","loading"],"mappings":"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"}