@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.
- package/CHANGELOG.md +18 -0
- package/dist/cjs/{StytchSSRProxy-uT0ZmdOT.js → StytchSSRProxy-4bK96PqP.js} +2 -5
- package/dist/cjs/StytchSSRProxy-4bK96PqP.js.map +1 -0
- package/dist/cjs/b2b/index.cjs +10 -10
- package/dist/cjs/b2b/index.cjs.map +1 -1
- package/dist/cjs/b2b/index.headless.cjs +1 -1
- package/dist/cjs/index.cjs +2 -2
- package/dist/cjs/index.headless.cjs +1 -1
- package/dist/cjs/{shadcn-DNo-Z1LB.js → shadcn-C9ZF6bjn.js} +2 -2
- package/dist/cjs/{shadcn-DNo-Z1LB.js.map → shadcn-C9ZF6bjn.js.map} +1 -1
- package/dist/cjs-dev/{StytchSSRProxy-Dz4qX2tJ.js → StytchSSRProxy-4d3oztg-.js} +2 -5
- package/dist/cjs-dev/StytchSSRProxy-4d3oztg-.js.map +1 -0
- package/dist/cjs-dev/b2b/index.cjs +10 -10
- package/dist/cjs-dev/b2b/index.cjs.map +1 -1
- package/dist/cjs-dev/b2b/index.headless.cjs +1 -1
- package/dist/cjs-dev/index.cjs +2 -2
- package/dist/cjs-dev/index.headless.cjs +1 -1
- package/dist/cjs-dev/{shadcn-JZgM-5AS.js → shadcn-BMlZ0kfy.js} +2 -2
- package/dist/cjs-dev/{shadcn-JZgM-5AS.js.map → shadcn-BMlZ0kfy.js.map} +1 -1
- package/dist/esm/node_modules/@emotion/react/dist/emotion-element-f0de968e.browser.esm.mjs +1 -1
- package/dist/esm/node_modules/@mui/material/Autocomplete/Autocomplete.mjs +1 -1
- package/dist/esm/node_modules/@mui/material/Button/Button.mjs +1 -1
- package/dist/esm/node_modules/@mui/material/Chip/Chip.mjs +1 -1
- package/dist/esm/node_modules/@mui/material/MenuItem/MenuItem.mjs +1 -1
- package/dist/esm/node_modules/@mui/material/TableCell/TableCell.mjs +1 -1
- package/dist/esm/node_modules/@mui/material/TableRow/TableRow.mjs +1 -1
- package/dist/esm/node_modules/@mui/material/Tooltip/Tooltip.mjs +1 -1
- package/dist/esm/node_modules/@mui/material/styles/createThemeWithVars.mjs +1 -1
- package/dist/esm/node_modules/@mui/system/esm/borders/borders.mjs +1 -1
- package/dist/esm/node_modules/@mui/system/esm/cssGrid/cssGrid.mjs +2 -2
- package/dist/esm/node_modules/@mui/system/esm/sizing/sizing.mjs +1 -1
- package/dist/esm/node_modules/@mui/system/esm/spacing/spacing.mjs +1 -1
- package/dist/esm/packages/core/src/HeadlessClients/HeadlessOAuthClient.mjs +1 -1
- package/dist/esm/packages/web/src/NetworkClient.mjs +1 -3
- package/dist/esm/packages/web/src/NetworkClient.mjs.map +1 -1
- package/dist/esm/packages/web/src/adminPortal/AdminPortalWrapper.mjs +1 -1
- package/dist/esm/packages/web/src/adminPortal/components/ActionMenu.mjs +1 -1
- package/dist/esm/packages/web/src/adminPortal/components/Autocomplete.mjs +1 -1
- package/dist/esm/packages/web/src/adminPortal/components/DeleteConnection.mjs +1 -1
- package/dist/esm/packages/web/src/adminPortal/components/IconButtonMenu.mjs +1 -1
- package/dist/esm/packages/web/src/adminPortal/components/SettingsContainer.mjs +1 -1
- package/dist/esm/packages/web/src/adminPortal/memberManagement/AccessSection.mjs +1 -1
- package/dist/esm/packages/web/src/adminPortal/memberManagement/InviteModal.mjs +1 -1
- package/dist/esm/packages/web/src/adminPortal/memberManagement/useMemberActivation.mjs +1 -1
- package/dist/esm/packages/web/src/adminPortal/scim/SCIMConnectionTokenRotationSection.mjs +1 -1
- package/dist/esm/packages/web/src/adminPortal/scim/SCIMNewConnectionConfigureScreen.mjs +1 -1
- package/dist/esm/packages/web/src/adminPortal/settings/OrgSettingsRoleAssignmentsSection.mjs +1 -1
- package/dist/esm/packages/web/src/adminPortal/settings/OrgSettingsUserOnboardingSection.mjs +1 -1
- package/dist/esm/packages/web/src/adminPortal/shared/components/EmbeddedTable.mjs +1 -1
- package/dist/esm/packages/web/src/adminPortal/shared/components/Input.mjs +1 -1
- package/dist/esm/packages/web/src/adminPortal/shared/components/PaginatedTable.mjs +1 -1
- package/dist/esm/packages/web/src/adminPortal/shared/components/Table.mjs +1 -1
- package/dist/esm/packages/web/src/adminPortal/shared/components/Toast.mjs +1 -1
- package/dist/esm/packages/web/src/adminPortal/shared/components/Tooltip.mjs +1 -1
- package/dist/esm/packages/web/src/adminPortal/sso/AttributeMappingTable.mjs +1 -1
- package/dist/esm/packages/web/src/adminPortal/sso/DetailsSection.mjs +1 -1
- package/dist/esm/packages/web/src/adminPortal/sso/RoleAssignmentsSection.mjs +1 -1
- package/dist/esm/packages/web/src/adminPortal/sso/SSOConnectionDetailsScreen.mjs +1 -1
- package/dist/esm/packages/web/src/adminPortal/sso/SSOConnectionsScreen.mjs +1 -1
- package/dist/esm/packages/web/src/adminPortal/sso/SSONewConnectionConfigureScreen.mjs +1 -1
- package/dist/esm/packages/web/src/adminPortal/sso/SSONewConnectionScreen.mjs +1 -1
- package/dist/esm/packages/web/src/b2b/StytchB2BClient.mjs +3 -3
- package/dist/esm/packages/web/src/oneTap/OneTapProvider.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2b/InternalAppContainer.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2b/components/B2BOneTap.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2b/screens/MFAEnrollmentSelectionScreen.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2b/screens/PasswordResetForm.mjs +4 -4
- package/dist/esm/packages/web/src/ui/b2b/screens/PasswordResetForm.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2b/screens/SSODiscoveryMenu.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2b/screens/SsoAndOAuthButtons.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2b/usePasswordInput.mjs +4 -4
- package/dist/esm/packages/web/src/ui/b2b/usePasswordInput.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2c/GlobalContextProvider.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2c/components/GoogleOneTap.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2c/screens/IdentityProvider/IDPConsent.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2c/screens/Main/LoginForm/MagicLinkForm.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2c/screens/Main/LoginForm/OTPForm.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2c/screens/Passkey/PasskeyConfirmation.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2c/screens/Passkey/PasskeyRegistrationSuccess.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2c/screens/Password/PasswordConfirmation.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2c/screens/Secondary/OTPConfirmation.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/PresentationConfig.mjs +1 -1
- package/dist/esm/packages/web/src/ui/hooks/usePromptPasskey.mjs +1 -1
- package/dist/esm-dev/node_modules/@emotion/react/dist/emotion-element-489459f2.browser.development.esm.mjs +1 -1
- package/dist/esm-dev/node_modules/@mui/material/Autocomplete/Autocomplete.mjs +1 -1
- package/dist/esm-dev/node_modules/@mui/material/Button/Button.mjs +1 -1
- package/dist/esm-dev/node_modules/@mui/material/Checkbox/Checkbox.mjs +1 -1
- package/dist/esm-dev/node_modules/@mui/material/Chip/Chip.mjs +1 -1
- package/dist/esm-dev/node_modules/@mui/material/IconButton/IconButton.mjs +1 -1
- package/dist/esm-dev/node_modules/@mui/material/MenuItem/MenuItem.mjs +1 -1
- package/dist/esm-dev/node_modules/@mui/material/Radio/Radio.mjs +1 -1
- package/dist/esm-dev/node_modules/@mui/material/Switch/Switch.mjs +1 -1
- package/dist/esm-dev/node_modules/@mui/material/TableCell/TableCell.mjs +1 -1
- package/dist/esm-dev/node_modules/@mui/material/TableRow/TableRow.mjs +1 -1
- package/dist/esm-dev/node_modules/@mui/material/Tooltip/Tooltip.mjs +1 -1
- package/dist/esm-dev/node_modules/@mui/material/styles/createThemeWithVars.mjs +1 -1
- package/dist/esm-dev/node_modules/@mui/system/esm/borders/borders.mjs +1 -1
- package/dist/esm-dev/node_modules/@mui/system/esm/createStyled/createStyled.mjs +1 -1
- package/dist/esm-dev/node_modules/@mui/system/esm/cssGrid/cssGrid.mjs +2 -2
- package/dist/esm-dev/node_modules/@mui/system/esm/sizing/sizing.mjs +1 -1
- package/dist/esm-dev/node_modules/@mui/system/esm/spacing/spacing.mjs +1 -1
- package/dist/esm-dev/packages/core/src/HeadlessClients/HeadlessOAuthClient.mjs +1 -1
- package/dist/esm-dev/packages/web/src/NetworkClient.mjs +1 -3
- package/dist/esm-dev/packages/web/src/NetworkClient.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/AdminPortalWrapper.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/components/ActionMenu.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/components/Autocomplete.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/components/DeleteConnection.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/components/IconButtonMenu.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/components/SettingsContainer.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/memberManagement/AccessSection.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/memberManagement/InviteModal.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/memberManagement/useMemberActivation.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/scim/SCIMConnectionTokenRotationSection.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/scim/SCIMNewConnectionConfigureScreen.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/settings/OrgSettingsRoleAssignmentsSection.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/settings/OrgSettingsUserOnboardingSection.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/shared/components/EmbeddedTable.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/shared/components/Input.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/shared/components/PaginatedTable.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/shared/components/Table.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/shared/components/Toast.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/shared/components/Tooltip.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/sso/AttributeMappingTable.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/sso/DetailsSection.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/sso/RoleAssignmentsSection.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/sso/SSOConnectionDetailsScreen.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/sso/SSOConnectionsScreen.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/sso/SSONewConnectionConfigureScreen.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/sso/SSONewConnectionScreen.mjs +1 -1
- package/dist/esm-dev/packages/web/src/b2b/StytchB2BClient.mjs +3 -3
- package/dist/esm-dev/packages/web/src/oneTap/OneTapProvider.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/App.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/InternalAppContainer.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/components/B2BOneTap.mjs +2 -2
- package/dist/esm-dev/packages/web/src/ui/b2b/screens/MFAEnrollmentSelectionScreen.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/screens/PasswordResetForm.mjs +4 -4
- package/dist/esm-dev/packages/web/src/ui/b2b/screens/PasswordResetForm.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/screens/SSODiscoveryMenu.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/screens/SsoAndOAuthButtons.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/usePasswordInput.mjs +4 -4
- package/dist/esm-dev/packages/web/src/ui/b2b/usePasswordInput.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/AppContainer.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/GlobalContextProvider.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/IDPContainer.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/PasskeyRegistrationContainer.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/ResetPasswordContainer.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/components/GoogleOneTap.mjs +2 -2
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/IdentityProvider/IDPConsent.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Main/LoginForm/MagicLinkForm.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Main/LoginForm/OTPForm.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Main/LoginForm/index.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Main/index.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Passkey/PasskeyConfirmation.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Passkey/PasskeyRegistrationSuccess.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Password/PasswordConfirmation.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Secondary/OTPConfirmation.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/PresentationConfig.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/hooks/usePromptPasskey.mjs +1 -1
- package/dist/iife/b2b/index.headless.js +1 -1
- package/dist/iife/b2b/index.headless.js.map +1 -1
- package/dist/iife/b2b/index.js +2 -2
- package/dist/iife/b2b/index.js.map +1 -1
- package/dist/iife/index.headless.js +1 -1
- package/dist/iife/index.headless.js.map +1 -1
- package/dist/iife/index.js +1 -1
- package/dist/iife/index.js.map +1 -1
- package/dist/types/{GoogleOneTapClient-wRV3UqOo.d.ts → GoogleOneTapClient-iv3nb_kU.d.ts} +29 -2
- package/dist/types/{StytchB2BClient-BxoZQ3m8.d.ts → StytchB2BClient-C-2u87oo.d.ts} +1 -1
- package/dist/types/{StytchClient-CMzVKb4K.d.ts → StytchClient-CCLs7DV6.d.ts} +1 -1
- package/dist/types/adminPortal/index.d.ts +3 -3
- package/dist/types/b2b/index.d.ts +5 -5
- package/dist/types/b2b/index.headless.d.ts +2 -2
- package/dist/types/index.d.ts +5 -5
- package/dist/types/index.headless.d.ts +2 -2
- package/dist/types/{themes-sEz9GUNs.d.ts → themes-MdCoynbd.d.ts} +3 -3
- package/package.json +1 -1
- package/dist/cjs/StytchSSRProxy-uT0ZmdOT.js.map +0 -1
- package/dist/cjs-dev/StytchSSRProxy-Dz4qX2tJ.js.map +0 -1
- package/dist/esm/packages/web/package.json.mjs +0 -4
- package/dist/esm/packages/web/package.json.mjs.map +0 -1
- package/dist/esm-dev/packages/web/package.json.mjs +0 -4
- package/dist/esm-dev/packages/web/package.json.mjs.map +0 -1
|
@@ -8,8 +8,8 @@ import { SSOButton } from '../components/SSOButton.mjs';
|
|
|
8
8
|
import { useGlobalReducer } from '../GlobalContextProvider.mjs';
|
|
9
9
|
import { useLastUsedAuthMethod } from '../hooks/useLastUsedAuthMethod.mjs';
|
|
10
10
|
import { extractConnectionId, getSsoMethodKey } from '../types/authMethodKeys.mjs';
|
|
11
|
-
import { createElement as y } from '../../../../../../node_modules/preact/dist/preact.module.mjs';
|
|
12
11
|
import { arrayUtils } from '../../../../../core/src/utils/arrayUtils.mjs';
|
|
12
|
+
import { createElement as y } from '../../../../../../node_modules/preact/dist/preact.module.mjs';
|
|
13
13
|
|
|
14
14
|
const SSOButtons = ({ availableConnections })=>{
|
|
15
15
|
const [lastUsedMethod, setLastUsedMethod] = useLastUsedAuthMethod();
|
|
@@ -11,8 +11,8 @@ import { useLastUsedAuthMethod } from '../hooks/useLastUsedAuthMethod.mjs';
|
|
|
11
11
|
import { MainScreenComponent, AppScreens } from '../types/AppScreens.mjs';
|
|
12
12
|
import { getButtonKey, getSsoMethodKey } from '../types/authMethodKeys.mjs';
|
|
13
13
|
import { useProductComponents } from '../utils.mjs';
|
|
14
|
-
import { AuthFlowType, B2BOAuthProviders } from '../../../../../core/src/public/b2b/ui.mjs';
|
|
15
14
|
import { arrayUtils } from '../../../../../core/src/utils/arrayUtils.mjs';
|
|
15
|
+
import { AuthFlowType, B2BOAuthProviders } from '../../../../../core/src/public/b2b/ui.mjs';
|
|
16
16
|
|
|
17
17
|
// OAuth helper functions
|
|
18
18
|
const getCustomScopesForProvider = (oauthProvider, oauthOptionsCustomScopes)=>{
|
|
@@ -55,15 +55,15 @@ const usePasswordInput = ()=>{
|
|
|
55
55
|
type: StytchEventType.B2BPasswordDiscoveryAuthenticate,
|
|
56
56
|
data
|
|
57
57
|
});
|
|
58
|
-
dispatch({
|
|
59
|
-
type: 'transition',
|
|
60
|
-
screen: AppScreens.Discovery
|
|
61
|
-
});
|
|
62
58
|
dispatch({
|
|
63
59
|
type: 'set_discovery_state',
|
|
64
60
|
email: data.email_address,
|
|
65
61
|
discoveredOrganizations: data.discovered_organizations
|
|
66
62
|
});
|
|
63
|
+
dispatch({
|
|
64
|
+
type: 'transition',
|
|
65
|
+
screen: AppScreens.Discovery
|
|
66
|
+
});
|
|
67
67
|
}).catch((err)=>{
|
|
68
68
|
setIsSubmitting(false);
|
|
69
69
|
onError(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePasswordInput.mjs","sources":["../../../../../../../../web/src/ui/b2b/usePasswordInput.ts"],"sourcesContent":["import { useLingui } from '@lingui/react/macro';\nimport { DEFAULT_SESSION_DURATION_MINUTES } from '@stytch/core';\nimport { OrganizationBySlugMatch, StytchAPIError, StytchEventType } from '@stytch/core/public';\nimport { useState } from 'react';\n\nimport { B2BSubscriptionDataLayer } from '../../SubscriptionService';\nimport { getTranslatedError } from '../../utils/getTranslatedError';\nimport { readB2BInternals } from '../../utils/internal';\nimport { useConfig, useErrorCallback, useEventCallback, useGlobalReducer, useStytch } from './GlobalContextProvider';\nimport { AppScreens } from './types/AppScreens';\nimport { onAuthenticateSuccess } from './utils';\n\nexport const usePasswordInput = () => {\n const [state, dispatch] = useGlobalReducer();\n const config = useConfig();\n const stytch = useStytch();\n const { t } = useLingui();\n\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n\n const [email, setEmail] = useState(state.formState.passwordState.email);\n const [password, setPassword] = useState('');\n const [errorMessage, setErrorMessage] = useState('');\n const [isSubmitting, setIsSubmitting] = useState(false);\n const organization = state.flowState.organization;\n\n const submitPassword = (organization_id: string) => {\n setErrorMessage('');\n setIsSubmitting(true);\n stytch.passwords\n .authenticate({\n email_address: email,\n organization_id: organization_id,\n password: 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.B2BPasswordAuthenticate, data });\n onAuthenticateSuccess(data, dispatch, config);\n })\n .catch((err: StytchAPIError) => {\n setIsSubmitting(false);\n onError(err);\n setErrorMessage(getTranslatedError(err, t));\n });\n };\n\n const submitDiscoveryPassword = () => {\n setErrorMessage('');\n setIsSubmitting(true);\n stytch.passwords.discovery\n .authenticate({\n email_address: email,\n password: password,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.B2BPasswordDiscoveryAuthenticate, 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((err: StytchAPIError) => {\n setIsSubmitting(false);\n onError(err);\n setErrorMessage(getTranslatedError(err, t));\n });\n };\n\n const emailEligibleForJITProvisioning = (\n { email_jit_provisioning, email_allowed_domains }: OrganizationBySlugMatch,\n email: string,\n ) => {\n switch (email_jit_provisioning) {\n case 'ALL_ALLOWED':\n return true;\n case 'NOT_ALLOWED':\n return false;\n case 'RESTRICTED': {\n const emailDomain = email.split('@').pop();\n return emailDomain != null && email_allowed_domains.includes(emailDomain);\n }\n }\n };\n\n const handleNonMemberReset = () => {\n if (!organization) {\n return;\n }\n\n if (!emailEligibleForJITProvisioning(organization, email)) {\n setIsSubmitting(false);\n const organizationName = organization.organization_name;\n setErrorMessage(\n t({\n id: 'error.emailNoAccessToOrg',\n message: `${email} does not have access to ${organizationName}. If you think this is a mistake, contact your admin.`,\n }),\n );\n return;\n }\n\n const dataLayer = readB2BInternals(stytch).dataLayer as B2BSubscriptionDataLayer;\n dataLayer.setItem('reset-email-value', email);\n stytch.magicLinks.email\n .loginOrSignup({\n email_address: email,\n organization_id: organization.organization_id,\n login_redirect_url: config.passwordOptions?.resetPasswordRedirectURL,\n signup_redirect_url: config.passwordOptions?.resetPasswordRedirectURL,\n login_template_id: config.emailMagicLinksOptions?.loginTemplateId,\n signup_template_id: config.emailMagicLinksOptions?.signupTemplateId,\n locale: config.emailMagicLinksOptions?.locale,\n })\n .then(() => {\n setIsSubmitting(false);\n dispatch({ type: 'set_password_state', email: email });\n dispatch({ type: 'transition', screen: AppScreens.PasswordResetVerifyConfirmation });\n })\n .catch((err: StytchAPIError) => {\n onError(err);\n setErrorMessage(getTranslatedError(err, t));\n setIsSubmitting(false);\n });\n };\n\n return {\n stytch,\n onError,\n email,\n setEmail,\n password,\n setPassword,\n organization,\n errorMessage,\n setErrorMessage,\n isSubmitting,\n setIsSubmitting,\n submitPassword,\n submitDiscoveryPassword,\n handleNonMemberReset,\n };\n};\n"],"names":["usePasswordInput","state","dispatch","useGlobalReducer","config","useConfig","stytch","useStytch","useLingui","onEvent","useEventCallback","onError","useErrorCallback","email","setEmail","useState","formState","passwordState","password","setPassword","errorMessage","setErrorMessage","isSubmitting","setIsSubmitting","organization","flowState","submitPassword","organization_id","passwords","authenticate","email_address","session_duration_minutes","sessionOptions","sessionDurationMinutes","DEFAULT_SESSION_DURATION_MINUTES","locale","passwordOptions","then","data","type","StytchEventType","B2BPasswordAuthenticate","onAuthenticateSuccess","catch","err","getTranslatedError","submitDiscoveryPassword","discovery","B2BPasswordDiscoveryAuthenticate","screen","AppScreens","Discovery","discoveredOrganizations","discovered_organizations","emailEligibleForJITProvisioning","email_jit_provisioning","email_allowed_domains","emailDomain","split","pop","includes","handleNonMemberReset","organizationName","organization_name","dataLayer","readB2BInternals","setItem","magicLinks","loginOrSignup","login_redirect_url","resetPasswordRedirectURL","signup_redirect_url","login_template_id","emailMagicLinksOptions","loginTemplateId","signup_template_id","signupTemplateId","PasswordResetVerifyConfirmation"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"usePasswordInput.mjs","sources":["../../../../../../../../web/src/ui/b2b/usePasswordInput.ts"],"sourcesContent":["import { useLingui } from '@lingui/react/macro';\nimport { DEFAULT_SESSION_DURATION_MINUTES } from '@stytch/core';\nimport { OrganizationBySlugMatch, StytchAPIError, StytchEventType } from '@stytch/core/public';\nimport { useState } from 'react';\n\nimport { B2BSubscriptionDataLayer } from '../../SubscriptionService';\nimport { getTranslatedError } from '../../utils/getTranslatedError';\nimport { readB2BInternals } from '../../utils/internal';\nimport { useConfig, useErrorCallback, useEventCallback, useGlobalReducer, useStytch } from './GlobalContextProvider';\nimport { AppScreens } from './types/AppScreens';\nimport { onAuthenticateSuccess } from './utils';\n\nexport const usePasswordInput = () => {\n const [state, dispatch] = useGlobalReducer();\n const config = useConfig();\n const stytch = useStytch();\n const { t } = useLingui();\n\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n\n const [email, setEmail] = useState(state.formState.passwordState.email);\n const [password, setPassword] = useState('');\n const [errorMessage, setErrorMessage] = useState('');\n const [isSubmitting, setIsSubmitting] = useState(false);\n const organization = state.flowState.organization;\n\n const submitPassword = (organization_id: string) => {\n setErrorMessage('');\n setIsSubmitting(true);\n stytch.passwords\n .authenticate({\n email_address: email,\n organization_id: organization_id,\n password: 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.B2BPasswordAuthenticate, data });\n onAuthenticateSuccess(data, dispatch, config);\n })\n .catch((err: StytchAPIError) => {\n setIsSubmitting(false);\n onError(err);\n setErrorMessage(getTranslatedError(err, t));\n });\n };\n\n const submitDiscoveryPassword = () => {\n setErrorMessage('');\n setIsSubmitting(true);\n stytch.passwords.discovery\n .authenticate({\n email_address: email,\n password: password,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.B2BPasswordDiscoveryAuthenticate, 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((err: StytchAPIError) => {\n setIsSubmitting(false);\n onError(err);\n setErrorMessage(getTranslatedError(err, t));\n });\n };\n\n const emailEligibleForJITProvisioning = (\n { email_jit_provisioning, email_allowed_domains }: OrganizationBySlugMatch,\n email: string,\n ) => {\n switch (email_jit_provisioning) {\n case 'ALL_ALLOWED':\n return true;\n case 'NOT_ALLOWED':\n return false;\n case 'RESTRICTED': {\n const emailDomain = email.split('@').pop();\n return emailDomain != null && email_allowed_domains.includes(emailDomain);\n }\n }\n };\n\n const handleNonMemberReset = () => {\n if (!organization) {\n return;\n }\n\n if (!emailEligibleForJITProvisioning(organization, email)) {\n setIsSubmitting(false);\n const organizationName = organization.organization_name;\n setErrorMessage(\n t({\n id: 'error.emailNoAccessToOrg',\n message: `${email} does not have access to ${organizationName}. If you think this is a mistake, contact your admin.`,\n }),\n );\n return;\n }\n\n const dataLayer = readB2BInternals(stytch).dataLayer as B2BSubscriptionDataLayer;\n dataLayer.setItem('reset-email-value', email);\n stytch.magicLinks.email\n .loginOrSignup({\n email_address: email,\n organization_id: organization.organization_id,\n login_redirect_url: config.passwordOptions?.resetPasswordRedirectURL,\n signup_redirect_url: config.passwordOptions?.resetPasswordRedirectURL,\n login_template_id: config.emailMagicLinksOptions?.loginTemplateId,\n signup_template_id: config.emailMagicLinksOptions?.signupTemplateId,\n locale: config.emailMagicLinksOptions?.locale,\n })\n .then(() => {\n setIsSubmitting(false);\n dispatch({ type: 'set_password_state', email: email });\n dispatch({ type: 'transition', screen: AppScreens.PasswordResetVerifyConfirmation });\n })\n .catch((err: StytchAPIError) => {\n onError(err);\n setErrorMessage(getTranslatedError(err, t));\n setIsSubmitting(false);\n });\n };\n\n return {\n stytch,\n onError,\n email,\n setEmail,\n password,\n setPassword,\n organization,\n errorMessage,\n setErrorMessage,\n isSubmitting,\n setIsSubmitting,\n submitPassword,\n submitDiscoveryPassword,\n handleNonMemberReset,\n };\n};\n"],"names":["usePasswordInput","state","dispatch","useGlobalReducer","config","useConfig","stytch","useStytch","useLingui","onEvent","useEventCallback","onError","useErrorCallback","email","setEmail","useState","formState","passwordState","password","setPassword","errorMessage","setErrorMessage","isSubmitting","setIsSubmitting","organization","flowState","submitPassword","organization_id","passwords","authenticate","email_address","session_duration_minutes","sessionOptions","sessionDurationMinutes","DEFAULT_SESSION_DURATION_MINUTES","locale","passwordOptions","then","data","type","StytchEventType","B2BPasswordAuthenticate","onAuthenticateSuccess","catch","err","getTranslatedError","submitDiscoveryPassword","discovery","B2BPasswordDiscoveryAuthenticate","discoveredOrganizations","discovered_organizations","screen","AppScreens","Discovery","emailEligibleForJITProvisioning","email_jit_provisioning","email_allowed_domains","emailDomain","split","pop","includes","handleNonMemberReset","organizationName","organization_name","dataLayer","readB2BInternals","setItem","magicLinks","loginOrSignup","login_redirect_url","resetPasswordRedirectURL","signup_redirect_url","login_template_id","emailMagicLinksOptions","loginTemplateId","signup_template_id","signupTemplateId","PasswordResetVerifyConfirmation"],"mappings":"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"}
|
|
@@ -5,8 +5,8 @@ import { I18nProviderWrapper } from '../components/atoms/I18nProviderWrapper.mjs
|
|
|
5
5
|
import { usePresentationWithDefault, PresentationContext } from '../components/PresentationConfig.mjs';
|
|
6
6
|
import AppContainer$1 from './Container.mjs';
|
|
7
7
|
import { GlobalContextProvider } from './GlobalContextProvider.mjs';
|
|
8
|
-
import { RUN_IN_DEV } from '../../../../core/src/utils/dev.mjs';
|
|
9
8
|
import { useState as h, useEffect as p } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
|
|
9
|
+
import { RUN_IN_DEV } from '../../../../core/src/utils/dev.mjs';
|
|
10
10
|
import { logger } from '../../../../core/src/utils/logger.mjs';
|
|
11
11
|
|
|
12
12
|
const AppContainer = ({ client, config, presentation, callbacks, strings, styles })=>{
|
|
@@ -2,8 +2,8 @@ import wn from '../../../../../node_modules/preact/compat/dist/compat.module.mjs
|
|
|
2
2
|
import { noop } from '../../utils/index.mjs';
|
|
3
3
|
import { useEvent } from '../hooks/useEvent.mjs';
|
|
4
4
|
import { reducer } from './reducer.mjs';
|
|
5
|
-
import { Wallets, OTPMethods } from '../../../../core/src/public/ui.mjs';
|
|
6
5
|
import { useContext as q } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
|
|
6
|
+
import { Wallets, OTPMethods } from '../../../../core/src/public/ui.mjs';
|
|
7
7
|
|
|
8
8
|
/* eslint-disable lingui/no-unlocalized-strings -- internal constants, not user-facing strings */ const AppScreens = {
|
|
9
9
|
Main: 'Main',
|
|
@@ -6,8 +6,8 @@ import { IDPContextProvider } from '../components/organisms/IDPContextProvider.m
|
|
|
6
6
|
import { usePresentationWithDefault, PresentationContext } from '../components/PresentationConfig.mjs';
|
|
7
7
|
import { GlobalContextProvider, DEFAULT_STATE } from './GlobalContextProvider.mjs';
|
|
8
8
|
import { IDPConsentScreen } from './screens/IdentityProvider/IDPConsent.mjs';
|
|
9
|
-
import { RUN_IN_DEV } from '../../../../core/src/utils/dev.mjs';
|
|
10
9
|
import { useEffect as p } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
|
|
10
|
+
import { RUN_IN_DEV } from '../../../../core/src/utils/dev.mjs';
|
|
11
11
|
import { logger } from '../../../../core/src/utils/logger.mjs';
|
|
12
12
|
|
|
13
13
|
const IDPContainer = ({ client, presentation, callbacks, strings, styles, getIDPConsentManifest, authTokenParams })=>{
|
|
@@ -7,8 +7,8 @@ import AppContainer from './Container.mjs';
|
|
|
7
7
|
import { DEFAULT_STATE, GlobalContextProvider, AppScreens } from './GlobalContextProvider.mjs';
|
|
8
8
|
import { passkeyRegistration } from './Products.mjs';
|
|
9
9
|
import { addProduct } from './utils.mjs';
|
|
10
|
-
import { RUN_IN_DEV } from '../../../../core/src/utils/dev.mjs';
|
|
11
10
|
import { useState as h, useEffect as p } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
|
|
11
|
+
import { RUN_IN_DEV } from '../../../../core/src/utils/dev.mjs';
|
|
12
12
|
import { logger } from '../../../../core/src/utils/logger.mjs';
|
|
13
13
|
|
|
14
14
|
const PasskeyRegistrationContainer = ({ client, config: rawConfig, presentation, callbacks, strings, styles })=>{
|
|
@@ -7,8 +7,8 @@ import AppContainer from './Container.mjs';
|
|
|
7
7
|
import { DEFAULT_STATE, GlobalContextProvider, AppScreens } from './GlobalContextProvider.mjs';
|
|
8
8
|
import { passwords } from './Products.mjs';
|
|
9
9
|
import { addProduct } from './utils.mjs';
|
|
10
|
-
import { RUN_IN_DEV } from '../../../../core/src/utils/dev.mjs';
|
|
11
10
|
import { useState as h, useEffect as p } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
|
|
11
|
+
import { RUN_IN_DEV } from '../../../../core/src/utils/dev.mjs';
|
|
12
12
|
import { logger } from '../../../../core/src/utils/logger.mjs';
|
|
13
13
|
|
|
14
14
|
const ResetPasswordContainer = ({ client, config: rawConfig, presentation, callbacks, strings, styles, passwordResetToken: rawToken })=>{
|
|
@@ -13,10 +13,10 @@ import { useConfig, useStytch } from '../GlobalContextProvider.mjs';
|
|
|
13
13
|
import { useLastUsedOAuth } from '../screens/Main/useLastUsedOAuth.mjs';
|
|
14
14
|
import modules_f4506a56 from './GoogleOneTap.module.css.mjs';
|
|
15
15
|
import { OAuthButton } from './OAuthButton.mjs';
|
|
16
|
-
import { DEV } from '../../../../../core/src/utils/dev.mjs';
|
|
17
16
|
import { useState as h, useRef as _, useCallback as T, useEffect as p } from '../../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
|
|
18
|
-
import { logger } from '../../../../../core/src/utils/logger.mjs';
|
|
19
17
|
import { OAuthProviders } from '../../../../../core/src/public/ui.mjs';
|
|
18
|
+
import { DEV } from '../../../../../core/src/utils/dev.mjs';
|
|
19
|
+
import { logger } from '../../../../../core/src/utils/logger.mjs';
|
|
20
20
|
|
|
21
21
|
const OAUTH_BUTTON_HEIGHT = 38;
|
|
22
22
|
// See WebComponents.tsx - when using shadow DOM, the Google script cannot see the
|
|
@@ -11,8 +11,8 @@ import { usePresentation } from '../../../components/PresentationConfig.mjs';
|
|
|
11
11
|
import { useStytchUser } from '../../../hooks/useStytchUser.mjs';
|
|
12
12
|
import { useErrorCallback, useStytch, useEventCallback } from '../../GlobalContextProvider.mjs';
|
|
13
13
|
import { useBootstrap } from '../../utils.mjs';
|
|
14
|
-
import { NoCurrentSessionError } from '../../../../../../core/src/public/SDKErrors.mjs';
|
|
15
14
|
import { useState as h, useRef as _, useEffect as p } from '../../../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
|
|
15
|
+
import { NoCurrentSessionError } from '../../../../../../core/src/public/SDKErrors.mjs';
|
|
16
16
|
|
|
17
17
|
const IDPConsentScreenImpl = ({ initialError, initialParams })=>{
|
|
18
18
|
const stytchClient = useStytch();
|
|
@@ -8,9 +8,9 @@ import Column from '../../../../components/atoms/Column.mjs';
|
|
|
8
8
|
import EmailInput from '../../../../components/molecules/EmailInput.mjs';
|
|
9
9
|
import { useEventCallback, useErrorCallback, useGlobalReducer, useStytch, useConfig, AppScreens } from '../../../GlobalContextProvider.mjs';
|
|
10
10
|
import { hasProduct } from '../../../utils.mjs';
|
|
11
|
-
import { EmailSentType } from '../../../../../../../core/src/Events.mjs';
|
|
12
11
|
import { useState as h } from '../../../../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
|
|
13
12
|
import { StytchEventType } from '../../../../../../../core/src/public/ui.mjs';
|
|
13
|
+
import { EmailSentType } from '../../../../../../../core/src/Events.mjs';
|
|
14
14
|
|
|
15
15
|
const MagicLinkEmailForm = ()=>{
|
|
16
16
|
const { i18n: $__i18n, _: $__ } = useLingui();
|
|
@@ -10,9 +10,9 @@ import EmailInput from '../../../../components/molecules/EmailInput.mjs';
|
|
|
10
10
|
import PhoneInput, { getPhoneNumberProps } from '../../../../components/molecules/PhoneInput.mjs';
|
|
11
11
|
import { useEventCallback, useErrorCallback, useStytch, useConfig, useGlobalReducer, AppScreens } from '../../../GlobalContextProvider.mjs';
|
|
12
12
|
import { hasProduct } from '../../../utils.mjs';
|
|
13
|
-
import { DEFAULT_OTP_EXPIRATION_MINUTES } from '../../../../../../../core/src/constants.mjs';
|
|
14
13
|
import { useState as h } from '../../../../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
|
|
15
14
|
import { OTPMethods, StytchEventType } from '../../../../../../../core/src/public/ui.mjs';
|
|
15
|
+
import { DEFAULT_OTP_EXPIRATION_MINUTES } from '../../../../../../../core/src/constants.mjs';
|
|
16
16
|
import { EmailSentType } from '../../../../../../../core/src/Events.mjs';
|
|
17
17
|
|
|
18
18
|
const OTPButtonText = {
|
|
@@ -7,8 +7,8 @@ import { useConfig } from '../../../GlobalContextProvider.mjs';
|
|
|
7
7
|
import { PasswordMethods, MagicLinkMethods } from '../../../StytchProduct.mjs';
|
|
8
8
|
import { hasProduct, useProductComponents } from '../../../utils.mjs';
|
|
9
9
|
import modules_c21c94f2 from './index.module.css.mjs';
|
|
10
|
-
import { DEV } from '../../../../../../../core/src/utils/dev.mjs';
|
|
11
10
|
import { OTPMethods } from '../../../../../../../core/src/public/ui.mjs';
|
|
11
|
+
import { DEV } from '../../../../../../../core/src/utils/dev.mjs';
|
|
12
12
|
import { Root as Root2, List, Trigger, Content } from '../../../../../../../../node_modules/@radix-ui/react-tabs/dist/index.mjs';
|
|
13
13
|
|
|
14
14
|
const OTPTabHeaders = {
|
|
@@ -9,8 +9,8 @@ import { usePresentation } from '../../../components/PresentationConfig.mjs';
|
|
|
9
9
|
import { usePromptPasskey } from '../../../hooks/usePromptPasskey.mjs';
|
|
10
10
|
import { useStytch, useConfig } from '../../GlobalContextProvider.mjs';
|
|
11
11
|
import { hasProduct, useProductComponents } from '../../utils.mjs';
|
|
12
|
-
import { DEV } from '../../../../../../core/src/utils/dev.mjs';
|
|
13
12
|
import { useState as h, useEffect as p } from '../../../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
|
|
13
|
+
import { DEV } from '../../../../../../core/src/utils/dev.mjs';
|
|
14
14
|
|
|
15
15
|
const MainScreen = ()=>{
|
|
16
16
|
const stytchClient = useStytch();
|
|
@@ -3,8 +3,8 @@ import '../../../../../../../node_modules/preact/compat/dist/compat.module.mjs';
|
|
|
3
3
|
import { Confirmation } from '../../../components/molecules/Confirmation.mjs';
|
|
4
4
|
import { useMountEffect } from '../../../hooks/useMountEffect.mjs';
|
|
5
5
|
import { useEventCallback } from '../../GlobalContextProvider.mjs';
|
|
6
|
-
import { createElement as y } from '../../../../../../../node_modules/preact/dist/preact.module.mjs';
|
|
7
6
|
import { StytchEventType } from '../../../../../../core/src/public/ui.mjs';
|
|
7
|
+
import { createElement as y } from '../../../../../../../node_modules/preact/dist/preact.module.mjs';
|
|
8
8
|
|
|
9
9
|
const PasskeyConfirmation = ()=>{
|
|
10
10
|
const { i18n: $__i18n, _: $__ } = useLingui();
|
|
@@ -10,9 +10,9 @@ import { useStytchUser } from '../../../hooks/useStytchUser.mjs';
|
|
|
10
10
|
import { useStytch, useEventCallback, useGlobalReducer, AppScreens } from '../../GlobalContextProvider.mjs';
|
|
11
11
|
import { EditableRow } from './EditableRow.mjs';
|
|
12
12
|
import modules_04e642ad from './PasskeyRegistrationSuccess.module.css.mjs';
|
|
13
|
-
import { errorToStytchError } from '../../../../../../core/src/public/SDKErrors.mjs';
|
|
14
13
|
import { useState as h } from '../../../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
|
|
15
14
|
import { StytchEventType } from '../../../../../../core/src/public/ui.mjs';
|
|
15
|
+
import { errorToStytchError } from '../../../../../../core/src/public/SDKErrors.mjs';
|
|
16
16
|
import { logger } from '../../../../../../core/src/utils/logger.mjs';
|
|
17
17
|
|
|
18
18
|
const PasskeyRegistrationSuccess = ()=>{
|
|
@@ -2,8 +2,8 @@ import '../../../../../../../node_modules/preact/compat/dist/compat.module.mjs';
|
|
|
2
2
|
import { Confirmation } from '../../../components/molecules/Confirmation.mjs';
|
|
3
3
|
import { useMountEffect } from '../../../hooks/useMountEffect.mjs';
|
|
4
4
|
import { useEventCallback } from '../../GlobalContextProvider.mjs';
|
|
5
|
-
import { createElement as y } from '../../../../../../../node_modules/preact/dist/preact.module.mjs';
|
|
6
5
|
import { StytchEventType } from '../../../../../../core/src/public/ui.mjs';
|
|
6
|
+
import { createElement as y } from '../../../../../../../node_modules/preact/dist/preact.module.mjs';
|
|
7
7
|
|
|
8
8
|
const PasswordConfirmation = ()=>{
|
|
9
9
|
const onEvent = useEventCallback();
|
|
@@ -3,8 +3,8 @@ import '../../../../../../../node_modules/preact/compat/dist/compat.module.mjs';
|
|
|
3
3
|
import { Confirmation } from '../../../components/molecules/Confirmation.mjs';
|
|
4
4
|
import { useMountEffect } from '../../../hooks/useMountEffect.mjs';
|
|
5
5
|
import { useEventCallback } from '../../GlobalContextProvider.mjs';
|
|
6
|
-
import { createElement as y } from '../../../../../../../node_modules/preact/dist/preact.module.mjs';
|
|
7
6
|
import { StytchEventType } from '../../../../../../core/src/public/ui.mjs';
|
|
7
|
+
import { createElement as y } from '../../../../../../../node_modules/preact/dist/preact.module.mjs';
|
|
8
8
|
|
|
9
9
|
const OTPConfirmation = ()=>{
|
|
10
10
|
const { i18n: $__i18n, _: $__ } = useLingui();
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import '../../../../../node_modules/preact/compat/dist/compat.module.mjs';
|
|
2
2
|
import { useMediaQuery } from '../hooks/useMediaQuery.mjs';
|
|
3
3
|
import { defaultTheme } from './themes/themes.mjs';
|
|
4
|
+
import { useContext as q, useMemo as F$1 } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
|
|
4
5
|
import { createContext as F } from '../../../../../node_modules/preact/dist/preact.module.mjs';
|
|
5
6
|
import { RUN_IN_DEV } from '../../../../core/src/utils/dev.mjs';
|
|
6
|
-
import { useContext as q, useMemo as F$1 } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
|
|
7
7
|
import { logger } from '../../../../core/src/utils/logger.mjs';
|
|
8
8
|
|
|
9
9
|
const defaultOptions = {
|
|
@@ -4,9 +4,9 @@ import { extractErrorMessage } from '../../utils/extractErrorMessage.mjs';
|
|
|
4
4
|
import { extractErrorType } from '../../utils/extractErrorType.mjs';
|
|
5
5
|
import { useStytch, useConfig, useEventCallback, useErrorCallback, useGlobalReducer, AppScreens } from '../b2c/GlobalContextProvider.mjs';
|
|
6
6
|
import { hasProduct } from '../b2c/utils.mjs';
|
|
7
|
+
import { useState as h, useCallback as T, useEffect as p } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
|
|
7
8
|
import { DEFAULT_SESSION_DURATION_MINUTES } from '../../../../core/src/constants.mjs';
|
|
8
9
|
import { StytchEventType } from '../../../../core/src/public/ui.mjs';
|
|
9
|
-
import { useState as h, useCallback as T, useEffect as p } from '../../../../../node_modules/preact/hooks/dist/hooks.module.mjs';
|
|
10
10
|
|
|
11
11
|
const MAX_ATTEMPTS = 5;
|
|
12
12
|
const usePromptPasskey = ({ canAutofill, shadowDOM })=>{
|
|
@@ -29,5 +29,5 @@ const myComponent = () => {
|
|
|
29
29
|
\`\`\`
|
|
30
30
|
|
|
31
31
|
If you want to make API calls from server environments, please use the Stytch Node Library
|
|
32
|
-
https://www.npmjs.com/package/stytch.`)}}),eY="bootstrap",eJ=()=>({displayWatermark:!1,projectName:null,cnameDomain:null,emailDomains:["stytch.com"],captchaSettings:{enabled:!1},pkceRequiredForEmailMagicLinks:!1,pkceRequiredForPasswordResets:!1,pkceRequiredForOAuth:!1,pkceRequiredForSso:!1,slugPattern:null,createOrganizationEnabled:!1,passwordConfig:null,runDFPProtectedAuth:!1,rbacPolicy:null,siweRequiredForCryptoWallets:!1,vertical:null});class eX{_publicToken;_networkClient;_dataLayer;_bootstrapDataPromise;constructor(e,t,i){this._publicToken=e,this._networkClient=t,this._dataLayer=i,this._bootstrapDataPromise=this._networkClient.fetchSDK({url:`/projects/bootstrap/${this._publicToken}`,method:"GET"}).then(eX.mapBootstrapData).then(e=>(this._dataLayer.setItem(eY,JSON.stringify(e)),e)).catch(e=>(em(e),eJ()))}static mapBootstrapData(e){let t=null!==e.password_config?{ludsComplexity:e.password_config.luds_complexity,ludsMinimumCount:e.password_config.luds_minimum_count}:null;return{projectName:e.project_name,displayWatermark:!e.disable_sdk_watermark,captchaSettings:e.captcha_settings,cnameDomain:e.cname_domain,emailDomains:e.email_domains,pkceRequiredForEmailMagicLinks:e.pkce_required_for_email_magic_links,pkceRequiredForPasswordResets:e.pkce_required_for_password_resets,pkceRequiredForOAuth:e.pkce_required_for_oauth,pkceRequiredForSso:e.pkce_required_for_sso,slugPattern:e.slug_pattern,createOrganizationEnabled:e.create_organization_enabled,passwordConfig:t,runDFPProtectedAuth:e.dfp_protected_auth_enabled??!1,dfpProtectedAuthMode:e.dfp_protected_auth_mode,rbacPolicy:e.rbac_policy??null,siweRequiredForCryptoWallets:e.siwe_required_for_crypto_wallets,vertical:e.vertical}}getSync(){let e=this._dataLayer.getItem(eY);if(null===e)return eJ();try{return JSON.parse(e)}catch{return eJ()}}getAsync(){return this._bootstrapDataPromise}}class eZ{bootstrapPromise;state;constructor(e){this.bootstrapPromise=e,this.state=e.then(async e=>{let t;return e.captchaSettings.enabled?{configured:!0,captchaClient:await (t=e.captchaSettings.siteKey,eb(`https://www.google.com/recaptcha/enterprise.js?render=${t}`,()=>window.grecaptcha.enterprise)),siteKey:e.captchaSettings.siteKey}:{configured:!1}})}executeRecaptcha=async()=>{let{captchaClient:e,configured:t,siteKey:i}=await this.state;if(t)return await new Promise(t=>e.ready(t)),e.execute(i,{action:"LOGIN"})}}class eQ{iframeURL;_frameClient;constructor(e){this.iframeURL=e}get frameClient(){return this._frameClient=this._frameClient??new e$(this.iframeURL),this._frameClient}call(e,t){return this.frameClient.call(e,[t])}oneTapStart=e=>this.call("oneTapStart",e);oneTapSubmit=e=>this.call("oneTapSubmit",e);parsedPhoneNumber=e=>this.call("parsedPhoneNumber",e);getExamplePhoneNumber=e=>this.call("getExamplePhoneNumber",e)}class e2{_publicToken;_subscriptionDataLayer;additionalTelemetryDataFn;eventLogger;baseURL;constructor(e,t,i,r,s){this._publicToken=e,this._subscriptionDataLayer=t,this.additionalTelemetryDataFn=s,this.baseURL=i,(e=>e.includes("public-token-test"))(e)&&(this.baseURL=r),this.eventLogger=new ek({maxBatchSize:15,intervalDurationMs:800,logEventURL:this.buildSDKUrl("/events")})}updateSessionToken=()=>null;logEvent({name:e,details:t,error:i={}}){this.eventLogger.logEvent(this.createTelemetryBlob(),{public_token:this._publicToken,event_name:e,details:t,error_code:i.error_code,error_description:i.error_description,http_status_code:i.http_status_code})}createTelemetryBlob(){return{event_id:`event-id-${eh()}`,app_session_id:`app-session-id-${eh()}`,persistent_id:`persistent-id-${eh()}`,client_sent_at:new Date().toISOString(),timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,...this.additionalTelemetryDataFn(),app:{identifier:window.location.hostname},sdk:{identifier:"Stytch.js Javascript SDK",version:"0.0.0"}}}async fetchSDK({url:e,body:t,method:i}){let r=this._subscriptionDataLayer.readSessionCookie().session_token,s="Basic "+window.btoa(this._publicToken+":"+(r||this._publicToken)),o=window.btoa(JSON.stringify(this.createTelemetryBlob())),n=window.location.origin;return eo({basicAuthHeader:s,body:t,finalURL:this.buildSDKUrl(e),method:i,xSDKClientHeader:o,xSDKParentHostHeader:n})}async submitFormSDK({url:e,body:t,method:i}){let r=this._subscriptionDataLayer.readSessionCookie().session_token,s="Basic "+window.btoa(this._publicToken+":"+(r||this._publicToken)),o=window.btoa(JSON.stringify(this.createTelemetryBlob())),n=window.location.origin;return en({basicAuthHeader:s,body:t,finalURL:this.buildSDKUrl(e),method:i,xSDKClientHeader:o,xSDKParentHostHeader:n})}async retriableFetchSDK({url:e,body:t,method:i,retryCallback:r}){let s=this._subscriptionDataLayer.readSessionCookie().session_token,o="Basic "+window.btoa(this._publicToken+":"+(s||this._publicToken)),n=window.btoa(JSON.stringify(this.createTelemetryBlob())),a=window.location.origin;return es({basicAuthHeader:o,body:t,finalURL:this.buildSDKUrl(e),method:i,xSDKClientHeader:n,xSDKParentHostHeader:a,retryCallback:r})}buildSDKUrl(e){return`${this.baseURL}/sdk/v1${e}`}}function e0(e){let t=e.toString(16);return 1===t.length&&(t="0"+t),t}class e1{_dataLayer;namespace;constructor(e,t){this._dataLayer=e,this.namespace=t}key(){return`PKCE_VERIFIER:${this.namespace}`}async startPKCETransaction(){let e=await e1.createProofkeyPair();return this._dataLayer.setItem(this.key(),JSON.stringify(e)),e}getPKPair(){let e=this._dataLayer.getItem(this.key());if(null!==e)try{return JSON.parse(e)}catch{ep("Found malformed Proof Key pair in localstorage.");return}}clearPKPair(){return this._dataLayer.removeItem(this.key())}static async createProofkeyPair(){var e;let t=new Uint32Array(16);window.crypto.getRandomValues(t);let i=Array.from(t).map(e0).join("");return{code_challenge:(e=await window.crypto.subtle.digest("SHA-256",new TextEncoder().encode(i)),btoa(String.fromCharCode.call(null,...new Uint8Array(e))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")),code_verifier:i}}}function e6(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var r in i)e[r]=i[r]}return e}var e3=function e(t,i){function r(e,r,s){if("u">typeof document){"number"==typeof(s=e6({},i,s)).expires&&(s.expires=new Date(Date.now()+864e5*s.expires)),s.expires&&(s.expires=s.expires.toUTCString()),e=encodeURIComponent(e).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var o="";for(var n in s)s[n]&&(o+="; "+n,!0!==s[n]&&(o+="="+s[n].split(";")[0]));return document.cookie=e+"="+t.write(r,e)+o}}return Object.create({set:r,get:function(e){if("u">typeof document&&(!arguments.length||e)){for(var i=document.cookie?document.cookie.split("; "):[],r={},s=0;s<i.length;s++){var o=i[s].split("="),n=o.slice(1).join("=");try{var a=decodeURIComponent(o[0]);if(r[a]=t.read(n,a),e===a)break}catch(e){}}return e?r[e]:r}},remove:function(e,t){r(e,"",e6({},t,{expires:-1}))},withAttributes:function(t){return e(this.converter,e6({},this.attributes,t))},withConverter:function(t){return e(e6({},this.converter,t),this.attributes)}},{attributes:{value:Object.freeze(i)},converter:{value:Object.freeze(t)}})}({read:function(e){return'"'===e[0]&&(e=e.slice(1,-1)),e.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(e){return encodeURIComponent(e).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}},{path:"/"});let e5=e=>(document.cookie?document.cookie.split("; "):[]).filter(t=>{let[i]=t.split("=");return e===i}).length>1,e4=(e,t)=>`stytch_sdk_state_${e}${t?`::${t}`:""}`;function e9(e){return null==e?{getItem:()=>null,removeItem(){},setItem(){}}:{getItem(t,i){let r=e4(t,i);try{return e.getItem(r)}catch{return null}},setItem(t,i,r){let s=e4(t,i);try{r&&e.setItem(s,r)}catch{}},removeItem(t,i){let r=e4(t,i);try{e.removeItem(r)}catch{}}}}let e8=e9(globalThis.localStorage),e7=e9(globalThis.sessionStorage);function te(e,t){return{getItem:i=>e.getItem(t,i),setItem(i,r){e.setItem(t,i,r)},removeItem(i){e.removeItem(t,i)}}}let tt="seen_domains";class ti{publicToken;state;_opaqueTokenCookieName=null;_jwtCookieName=null;_cookiePath=null;_domain=null;_cookieAvailableToSubdomains=!1;_istCookieName=null;subscriptions;_localStorage;browserSessionStorage;constructor(e,t){let i;this.publicToken=e,this.state=null,this.subscriptions={},this._localStorage=te(e8,e),this.browserSessionStorage=te(e7,e),t?.cookieOptions&&(this._opaqueTokenCookieName=t.cookieOptions.opaqueTokenCookieName||null,this._jwtCookieName=t.cookieOptions.jwtCookieName||null,this._cookiePath=t.cookieOptions.path||null,this._domain=t.cookieOptions.domain||null,this._cookieAvailableToSubdomains=t.cookieOptions.availableToSubdomains||!1,this._istCookieName=t.cookieOptions.istCookieName||null);const r=this._localStorage.getItem("");if(!r)return;try{i=JSON.parse(r)}catch{this.syncToLocalStorage();return}this.state=i}get opaqueTokenCookieName(){return this._opaqueTokenCookieName??"stytch_session"}get jwtCookieName(){return this._jwtCookieName??"stytch_session_jwt"}get istCookieName(){return this._istCookieName??"stytch_intermediate_session_token"}readSessionCookie(){return{session_token:e3.get(this.opaqueTokenCookieName),session_jwt:e3.get(this.jwtCookieName)}}readIntermediateSessionTokenCookie(){return e3.get(this.istCookieName)}writeSessionCookie(e){let{state:t,session_token:i,session_jwt:r}=e,s=ti.generateCookieOpts({expiresAt:t?.session?.expires_at??"",availableToSubdomains:this._cookieAvailableToSubdomains,path:this._cookiePath,domain:this._domain});s.domain&&this.addSeenDomain(s.domain),e3.set(this.opaqueTokenCookieName,i,s),e3.set(this.jwtCookieName,r,s);let o=ti.generateCookieOpts({expiresAt:t?.session?.expires_at??"",availableToSubdomains:!this._cookieAvailableToSubdomains,path:this._cookiePath,domain:this._domain});o.domain&&this.addSeenDomain(o.domain),e5(this.jwtCookieName)&&e3.remove(this.jwtCookieName,o),e5(this.opaqueTokenCookieName)&&e3.remove(this.opaqueTokenCookieName,o),e5(this.jwtCookieName)&&ep("Could not remove extraneous JWT cookie. This might happen if the cookie has been set using multiple `path` settings, and may produce unwanted behavior."),e5(this.opaqueTokenCookieName)&&ep("Could not remove extraneous opaque token cookie.")}writeIntermediateSessionTokenCookie(e){let t=new Date(Date.now()+6e5),i=ti.generateCookieOpts({expiresAt:t.toString(),availableToSubdomains:this._cookieAvailableToSubdomains,path:this._cookiePath,domain:this._domain});e3.set(this.istCookieName,e,i)}removeSessionCookie(){this.removeCookies([this.opaqueTokenCookieName,this.jwtCookieName])}removeISTCookie(){this.removeCookies([this.istCookieName])}removeCookies(e){let t=this.getSeenDomains(),i=[...new Set([this._domain,null,...t])];[!0,!1].forEach(t=>{[this._cookiePath,null].forEach(r=>{i.forEach(i=>{let s=ti.generateCookieOpts({expiresAt:new Date(0).toString(),availableToSubdomains:t,path:r,domain:i});e.forEach(e=>{e3.remove(e,s)})})})})}syncToLocalStorage(){this._localStorage.setItem("",JSON.stringify(this.state))}getItem(e){return this._localStorage.getItem(e)}setItem(e,t){this._localStorage.setItem(e,t)}removeItem(e){this._localStorage.removeItem(e)}getSeenDomains(){let e=this.getItem(tt);if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}}addSeenDomain(e){if(!e)return;let t=this.getSeenDomains();t.includes(e)||(t.push(e),this.setItem(tt,JSON.stringify(t)))}static generateCookieOpts({path:e,domain:t,availableToSubdomains:i,expiresAt:r}){let s={expires:new Date(r),sameSite:"lax"};return e&&(s.path=e),"localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)?s.secure=!1:(i&&(s.domain=t||window.location.host),s.secure=!0),s}}class tr extends ti{}let ts=Symbol.for("__stytch_b2b_DataLayer"),to=(e,t)=>{Object.values(e).forEach(e=>e(t))},tn=(({KEYS_TO_EXCLUDE:e=[]}={})=>{let t=(i,r)=>typeof i==typeof r&&(null===i||null===r?i===r:"object"==typeof i?!(Object.keys(i).length!==Object.keys(r).length||Object.keys(i).some(e=>!(e in r)))&&Object.entries(i).filter(([t])=>!e.includes(t)).every(([e,i])=>t(i,r[e])):i===r);return t})({KEYS_TO_EXCLUDE:["last_accessed_at"]});class ta{_publicToken;_datalayer;fromCache=!0;constructor(e,t,{usingCustomApiEndpoint:i}){if(this._publicToken=e,this._datalayer=t,window.addEventListener("storage",this._listen),!i){const{session_token:e}=this._datalayer.readSessionCookie();if(!e)return void this.destroySession()}}_listen=e=>{if(e.key!==e4(this._publicToken,""))return;let t=null===e.newValue||"null"===e.newValue?null:JSON.parse(e.newValue);this.updateState(t,!0)};getTokens(){let{session_token:e,session_jwt:t}=this._datalayer.readSessionCookie();return"string"!=typeof e||"string"!=typeof t?null:{session_token:e,session_jwt:t}}getIntermediateSessionToken(){return this._datalayer.readIntermediateSessionTokenCookie()||null}destroyState(){this.updateStateAndTokens({state:null,session_token:null,session_jwt:null,intermediate_session_token:null})}destroySession(){this._datalayer.removeSessionCookie(),this.updateState(null)}_updateStateAndTokensInternal(e,t){let i=this._datalayer.state,r=null===e.state?null:{...this._datalayer.state,...e.state};this._datalayer.state=r;let s=this.getFromCache();if(this.setCacheRefreshed(),s||!tn(i,r)){let e;e=null==r||t.fromCache?r:{...r,sessionDurationMinutes:t.sessionDurationMinutes},to(this._datalayer.subscriptions,e)}}updateStateAndTokens(e,t={fromCache:!1}){e.state?("string"==typeof e.session_token?this._datalayer.writeSessionCookie(e):this._datalayer.removeSessionCookie(),this._datalayer.removeISTCookie()):e.intermediate_session_token?("string"==typeof e.intermediate_session_token?this._datalayer.writeIntermediateSessionTokenCookie(e.intermediate_session_token):this._datalayer.removeISTCookie(),this._datalayer.removeSessionCookie()):(this._datalayer.removeSessionCookie(),this._datalayer.removeISTCookie()),this._updateStateAndTokensInternal(e,t),this._datalayer.syncToLocalStorage()}updateState(e,t=!1){let i=this._datalayer.state,r=null===e?null:{...this._datalayer.state,...e};this._datalayer.state=r;let s=this.getFromCache();this.setCacheRefreshed();let o=!tn(i,r);(s||o)&&(to(this._datalayer.subscriptions,r),o&&!t&&this._datalayer.syncToLocalStorage())}updateTokens(e){let{session_token:t,session_jwt:i}=e,r={...this._datalayer.readSessionCookie(),session_token:t,session_jwt:i};"string"==typeof t||"string"==typeof i?(this._datalayer.writeSessionCookie(r),this._datalayer.removeISTCookie()):this._datalayer.removeSessionCookie()}subscribeToState(e){var t;let i;return t=this._datalayer.subscriptions,t[i=Math.random().toString(36).slice(-10)]=e,()=>delete t[i]}getState(){return this._datalayer.state}destroy(){window.removeEventListener("storage",this._listen)}syncFromDeviceStorage(){return null}getFromCache(){return this.fromCache}setCacheRefreshed(){this.fromCache=!1}}class tc extends ta{updateMember=e=>this.updateState({member:e});getMember=()=>this.getState()?.member??null;updateOrganization=e=>this.updateState({organization:e});getOrganization=()=>this.getState()?.organization??null;getSession=()=>this.getState()?.session??null;updateSession=(e,t)=>{if("member_session"in e&&e.member_session){let i=e.session_token&&e.session_jwt?{session_token:e.session_token,session_jwt:e.session_jwt}:{session_token:!0,session_jwt:!0};this.updateStateAndTokens({state:{session:e.member_session,member:e.member,organization:e.organization},...i,intermediate_session_token:null},{fromCache:!1,sessionDurationMinutes:t?.sessionDurationMinutes})}else this.updateStateAndTokens({state:null,session_token:null,session_jwt:null,intermediate_session_token:e.intermediate_session_token||!0},{fromCache:!1,sessionDurationMinutes:t?.sessionDurationMinutes})};withUpdateSession=e=>async t=>{let i=await e(t);return this.updateSession(i,{sessionDurationMinutes:t?.session_duration_minutes}),i}}let tl=Symbol.for("stytch__internal_b2b");class td extends eD{_oneTap;constructor(e,t,i,r,s,o=ew(),n){super(e,t,i,r,s,o),this._oneTap=n}startOneTapDiscovery=async e=>{let t=await this._oneTap.createOneTapClient();if(!t.success)throw Error(`One Tap could not load: ${t.reason}`);let{client:i}=t,r=this._oneTap.createOnDiscoverySuccessHandler({discoveryRedirectUrl:e.discovery_redirect_url,onSuccess:this._oneTap.redirectOnSuccess});return i.render({style:{position:Y.floating},callback:r,cancelOnTapOutside:e.cancel_on_tap_outside})};startOneTap=async e=>{if(!e.organization_id)throw new n("stytch.oauth.googleOneTap.start","organization_id is a required argument");let t=await this._oneTap.createOneTapClient();if(!t.success)throw Error(`One Tap could not load: ${t.reason}`);let{client:i}=t,r=this._oneTap.createOnSuccessHandler({organizationId:e.organization_id,signupRedirectUrl:e.signup_redirect_url,loginRedirectUrl:e.login_redirect_url,onSuccess:this._oneTap.redirectOnSuccess});return i.render({style:{position:Y.floating},callback:r,cancelOnTapOutside:e.cancel_on_tap_outside})};googleOneTap={discovery:{start:this.startOneTapDiscovery},start:this.startOneTap}}let th="u">typeof window&&"IdentityCredential"in window,tu=e=>e===Y.forceLegacyEmbedded?"force":e===Y.embeddedOnly||e===Y.embedded||e===Y.floatingOrEmbedded;class t_{_googleClient;_clientId;constructor(e,t){this._googleClient=e,this._clientId=t}cancel(){this._googleClient.cancel()}async render({callback:e,onOneTapCancelled:t,style:i,cancelOnTapOutside:r=!0}){let s,o=tu(i.position),n="force"===(s=tu(i.position))||s&&!th,a={client_id:this._clientId,callback:e,auto_select:!1,context:"use",itp_support:!0,use_fedcm_for_prompt:"force"!==o,cancel_on_tap_outside:r};return n&&(a.prompt_parent_id="google-parent-prompt",a.cancel_on_tap_outside=!1),this._googleClient.initialize(a),new Promise(e=>{this._googleClient.prompt(i=>{if(i.isSkippedMoment()){let r=i.getSkippedReason?.()??"unknown_reason";return"user_cancel"===r&&t?.(),e({success:!1,reason:r})}return!i.isNotDisplayed&&n||i.isNotDisplayed?.()?e({success:!1,reason:i.getNotDisplayedReason?.()??"unknown_reason"}):i.isDismissedMoment()?void 0:(this.styleFrame(n),e({success:!0}))})})}styleFrame(e){e&&Array.from(document.getElementsByTagName("iframe")).forEach(e=>{e.src.includes(t)&&(e.style.width="100%")})}}let tp=Promise.resolve({pkceRequiredForOAuth:!1});class tm{_networkClient;_pkceManager;_config;googleClientID;constructor(e,t,i=tp){this._networkClient=e,this._pkceManager=t,this._config=i}async fetchGoogleStart(){if(this.googleClientID)return this.googleClientID;let e=await this._networkClient.fetchSDK({url:"/b2b/oauth/google/onetap/start",method:"GET"});return this.googleClientID=e.google_client_id,this.googleClientID}async submitGoogleOneTapTokenDiscovery({credential:e,discoveryRedirectUrl:t}){let i,{pkceRequiredForOAuth:r}=await this._config;return r?i=(await this._pkceManager.startPKCETransaction()).code_challenge:this._pkceManager.clearPKPair(),await this._networkClient.fetchSDK({url:"/b2b/oauth/google/onetap/discovery/submit",method:"POST",body:{id_token:e,discovery_redirect_url:t,pkce_code_challenge:i}})}async submitGoogleOneTapToken({credential:e,organizationId:t,signupRedirectUrl:i,loginRedirectUrl:r}){let s,{pkceRequiredForOAuth:o}=await this._config;return o?s=(await this._pkceManager.startPKCETransaction()).code_challenge:this._pkceManager.clearPKPair(),await this._networkClient.fetchSDK({url:"/b2b/oauth/google/onetap/submit",method:"POST",body:{id_token:e,organization_id:t,signup_redirect_url:i,login_redirect_url:r,pkce_code_challenge:s}})}async createOneTapClient(){let e;try{e=await this.fetchGoogleStart()}catch(e){return{success:!1,reason:_.from(e).error_type}}return""===e?{success:!1,reason:"oauth_config_not_found"}:{success:!0,client:new t_(await eb(i,()=>window.google.accounts.id),e)}}createOnDiscoverySuccessHandler=({discoveryRedirectUrl:e,onSuccess:t,onError:i})=>async r=>{let{credential:s}=r,o=this.submitGoogleOneTapTokenDiscovery({credential:s,discoveryRedirectUrl:e}).then(e=>t(e.redirect_url));i&&(o=o.catch(e=>i(e))),await o};createOnSuccessHandler=({organizationId:e,signupRedirectUrl:t,loginRedirectUrl:i,onSuccess:r,onError:s})=>async o=>{let{credential:n}=o,a=this.submitGoogleOneTapToken({credential:n,organizationId:e,signupRedirectUrl:t,loginRedirectUrl:i}).then(e=>r(e.redirect_url));s&&(a=a.catch(e=>s(e))),await a};redirectOnSuccess=e=>{window.location.href=e}}class tg{_subscriptionService;_sessionManager;_networkClient;_dataLayer;_stateChangeClient;magicLinks;session;member;self;organization;oauth;sso;discovery;passwords;otps;totp;recoveryCodes;rbac;scim;impersonation;idp;onStateChange;parseAuthenticateUrl;authenticateByUrl;constructor(e,t){if("u"<typeof window)throw Error("`new StytchB2BClient()` is not supported in server environments. If using @stytch/react or @stytch/nextjs, use `createStytchB2BClient()` instead.");(e=>{"string"!=typeof e?ep(`Public token is malformed. Expected a string, got ${typeof e}.${eg}`):""===e?ep(`Public token is malformed. Expected "public-token-...", got an empty string.${eg}`):e.startsWith("public-token-")||ep(`Public token is malformed. Expected "public-token-...", got ${e}.${eg}`)})(e);const i=e??"",r=((e,t={})=>{let{cookieOptions:i,keepSessionAlive:r}=t;return eC(e,t,{keepSessionAlive:"optionalBoolean"}),i&&eC(`${e}.cookieOptions`,i,{opaqueTokenCookieName:"optionalString",jwtCookieName:"optionalString",istCookieName:"optionalString",path:"optionalString",domain:"optionalString"}),{cookieOptions:i,keepSessionAlive:r,endpoints:{testAPIURL:(e=>{let t=e?.customBaseUrl??e?.endpointOptions?.testApiDomain;if(t){let i=eu(t);if(i)return i;{let i=e?.customBaseUrl?"customBaseUrl":"testApiDomain";ep(`Unable to use custom API domain \`${t}\`. ${i} should be a valid domain.`)}}return e?.endpoints?.testAPIURL??"https://test.stytch.com"})(t),liveAPIURL:(e=>{let t=e?.customBaseUrl??e?.endpointOptions?.apiDomain;if(t){let i=eu(t);if(i)return i;{let i=e?.customBaseUrl?"customBaseUrl":"apiDomain";ep(`Unable to use custom API domain \`${t}\`. ${i} should be a valid domain.`)}}return e?.endpoints?.liveAPIURL??"https://api.stytch.com"})(t),dfpBackendURL:(e=>{let t=e?.dfppaUrl??e?.endpointOptions?.dfppaDomain;if(t){let i=eu(t);if(i)return i;{let i=e?.dfppaUrl?"dfppaUrl":"dfppaDomain";ep(`Unable to use custom DFPPA domain \`${t}\`. ${i} should be a valid domain.`)}}return e?.endpoints?.dfpBackendURL??"https://telemetry.stytch.com"})(t),dfpCdnURL:(e=>{let t=e?.dfpCdnUrl??e?.endpointOptions?.dfpCdnDomain;if(t){let i=eu(t);if(i)return i;{let i=e?.dfpCdnUrl?"dfpCdnUrl":"dfpCdnDomain";ep(`Unable to use custom DFP CDN domain \`${t}\`. ${i} should be a valid domain.`)}}return"https://elements.stytch.com"})(t),clientsideServicesIframeURL:t?.endpoints?.clientsideServicesIframeURL??"https://js.stytch.com/clientside-services/index.html"}}})(this.constructor.name,t),s=((e,t={})=>{let{customBaseUrl:i,endpointOptions:r}=t;return e.includes("public-token-test")?!!(i||r?.testApiDomain):!!(i||r?.apiDomain)})(i,t);this._dataLayer=((e,t)=>{let i,r=((i=window)[ts]||(i[ts]={}),i[ts]);return r[e]||(r[e]=new tr(e,t)),r[e]})(i,r),this._subscriptionService=new tc(i,this._dataLayer,{usingCustomApiEndpoint:s}),this._stateChangeClient=new eq(this._subscriptionService,{}),this.onStateChange=(...e)=>this._stateChangeClient.onStateChange(...e);const o=()=>({stytch_member_id:this._dataLayer.state?.member?.member_id,stytch_member_session_id:this._dataLayer.state?.session?.member_session_id}),n=new e1(this._dataLayer,"passwords"),a=new e2(i,this._dataLayer,r.endpoints.liveAPIURL,r.endpoints.testAPIURL,o);this._networkClient=a;const c=new eX(i,a,this._dataLayer),l=new eZ(c.getAsync()),d=new eS(i,r.endpoints.dfpBackendURL,r.endpoints.dfpCdnURL,c.getAsync(),l.executeRecaptcha),h=new eQ(r.endpoints.clientsideServicesIframeURL),u=new e1(this._dataLayer,"oauth"),_=new tm(a,u,c.getAsync());this.organization=new eO(a,a,this._subscriptionService),this.member=new eN(a,a,this._subscriptionService),this.self=new eN(a,a,this._subscriptionService),this.session=new eM(a,this._subscriptionService),this.magicLinks=new eE(a,this._subscriptionService,new e1(this._dataLayer,"magic_links"),n,c.getAsync(),d),this.oauth=new td(a,this._subscriptionService,u,c.getAsync(),{publicToken:i,testAPIURL:r.endpoints.testAPIURL,liveAPIURL:r.endpoints.liveAPIURL},d,_),this.sso=new ex(a,this._subscriptionService,new e1(this._dataLayer,"sso"),c.getAsync(),{publicToken:i,testAPIURL:r.endpoints.testAPIURL,liveAPIURL:r.endpoints.liveAPIURL},d),this.discovery=new ev(a,this._subscriptionService),this.passwords=new eR(a,this._subscriptionService,n,c.getAsync(),d),this.otps=new eI(a,this._subscriptionService,d),this.totp=new ez(a,this._subscriptionService,d),this.recoveryCodes=new eF(a,this._subscriptionService,d),this.rbac=new eK(c.getSync(),c.getAsync(),this._subscriptionService),this.scim=new eL(this._networkClient,this._subscriptionService),this.impersonation=new eT(this._networkClient,this._subscriptionService,d),this.idp=new eP(a),this._sessionManager=new eG(this._subscriptionService,this.session,i,{keepSessionAlive:r.keepSessionAlive});const p=new ej(a,d);(s||this._dataLayer.readSessionCookie().session_token)&&this._sessionManager.performBackgroundRefresh();const{authenticateByUrl:m,parseAuthenticateUrl:g}=(e=>{let t=Object.keys(e),i=(e=window.location.href)=>{let i=new URL(e),r=i.searchParams.get("stytch_token_type"),s=i.searchParams.get("token");return s&&r?t.includes(r)?{handled:!0,token:s,tokenType:r}:{handled:!1,token:s,tokenType:r}:null};return{authenticateByUrl:async({clearParams:t,...r},s=window.location.href)=>{let o,n,a,c=t??s===window.location.href,l=i(s);if(null==l)return null;if(!l.handled)return l;let{token:d,tokenType:h}=l,u=e[h];return c&&((n=(o=new URL(window.location.toString())).searchParams).delete("token"),n.delete("stytch_token_type"),a=o,window.history.replaceState(null,document.title,a)),{handled:!0,tokenType:h,data:await u(d,r)}},parseAuthenticateUrl:i}})({discovery:e=>this.magicLinks.discovery.authenticate({discovery_magic_links_token:e}),discovery_oauth:e=>this.oauth.discovery.authenticate({discovery_oauth_token:e}),oauth:(e,t)=>this.oauth.authenticate({oauth_token:e,...t}),sso:(e,t)=>this.sso.authenticate({sso_token:e,...t}),multi_tenant_magic_links:(e,t)=>this.magicLinks.authenticate({magic_links_token:e,...t}),multi_tenant_impersonation:e=>this.impersonation.authenticate({impersonation_token:e})});this.authenticateByUrl=m,this.parseAuthenticateUrl=g,a.logEvent({name:"b2b_sdk_instance_instantiated",details:{event_callback_registered:!1,error_callback_registered:!1,success_callback_registered:!1}}),c.getAsync().then(e=>{"CONSUMER"===e.vertical&&em("This application is using a Stytch client for B2B projects, but the public token is for a Stytch Consumer project. Use a Consumer Stytch client instead, or verify that the public token is correct.")}),((e,t)=>{Object.assign(e,{[tl]:t})})(this,{bootstrap:c,clientsideServices:h,publicToken:i,searchManager:p,dataLayer:this._dataLayer,networkClient:a,oneTap:_})}}let ty=["openid","email","profile"],tb=(...e)=>"u"<typeof window?eV("stytch"):new tg(...e);return e.AuthFlowType={Discovery:"Discovery",Organization:"Organization",PasswordReset:"PasswordReset"},e.B2BMFAProducts={smsOtp:"smsOtp",totp:"totp"},e.B2BOAuthProviders=s,e.BiometricRegistrationIdIsNullOrBlank=H,e.BiometricsAlreadyEnrolledError=class extends p{constructor(){super("BiometricsAlreadyEnrolledError","There is already a biometric factor enrolled on this device. Fully authenticate with all factors and remove the existing registration before attempting to register again.")}},e.BiometricsFailedError=U,e.BiometricsUnavailableError=b,e.ChallengeSigningFailedError=D,e.DFPNotConfigured=V,e.DeviceCredentialsNotAllowedError=v,e.FailedCodeChallengeError=I,e.FailedToDecryptDataError=R,e.IDPOAuthFlowMissingParamError=class extends p{constructor(e){super("IDPOAuthFlowMissingParamError",e)}},e.InternalError=g,e.InvalidAuthorizationCredentialError=T,e.InvalidCredentialTypeError=N,e.InvalidPrivateKeyLength=q,e.InvalidRedirectSchemeError=F,e.InvalidStartUrlError=K,e.JSONDataNotConvertibleToStringError=x,e.KeyInvalidatedError=S,e.KeystoreUnavailableError=w,e.MissingAttestationObjectError=M,e.MissingAuthorizationCredentialIDTokenError=P,e.MissingCipherIv=G,e.MissingGoogleClientIDError=class extends p{constructor(){super("MissingGoogleClientIDError","No Google client ID was found in the project.")}},e.MissingPKCEError=class extends p{constructor(){super("MissingPKCEError","Make sure this flow is completed on the same device on which it was started.")}},e.MissingPublicKeyError=E,e.MissingUrlError=L,e.NoBiometricsEnrolledError=f,e.NoBiometricsRegistrationError=y,e.NoCredentialsPresentError=A,e.NoCurrentSessionError=m,e.OAuthProviders={Google:"google",Microsoft:"microsoft",Apple:"apple",Github:"github",GitLab:"gitlab",Facebook:"facebook",Discord:"discord",Salesforce:"salesforce",Slack:"slack",Amazon:"amazon",Bitbucket:"bitbucket",LinkedIn:"linkedin",Coinbase:"coinbase",Twitch:"twitch",Twitter:"twitter",TikTok:"tiktok",Snapchat:"snapchat",Figma:"figma",Yahoo:"yahoo"},e.OTPMethods={SMS:"sms",WhatsApp:"whatsapp",Email:"email"},e.OneTapPositions=Y,e.PasskeysInvalidEncoding=$,e.PasskeysMisconfigured=j,e.PasskeysUnsupportedError=B,e.RNUIProducts=et,e.RandomNumberGenerationFailed=z,e.RedirectURLType={ResetPassword:"reset_password"},e.SDKAPIUnreachableError=o,e.SDKNotConfiguredError=O,e.SignInWithAppleMisconfigured=W,e.StytchAPIError=_,e.StytchAPISchemaError=u,e.StytchAPIUnreachableError=h,e.StytchB2BClient=tg,e.StytchB2BHeadlessClient=tg,e.StytchError=d,e.StytchEventType=ee,e.StytchSDKAPIError=c,e.StytchSDKError=p,e.StytchSDKSchemaError=a,e.StytchSDKUsageError=n,e.UNRECOVERABLE_ERROR_TYPES=l,e.UserCancellationError=k,e.UserLockedOutError=C,e.Wallets={Phantom:"Phantom",Metamask:"Metamask",Coinbase:"Coinbase",Binance:"Binance",GenericEthereumWallet:"GenericEthereumWallet",GenericSolanaWallet:"GenericSolanaWallet"},e.createStytchB2BClient=tb,e.createStytchB2BHeadlessClient=tb,e.errorToStytchError=function(e){if(e instanceof p)return e;switch(e.message){case"no_current_session":return new m;case"no_biometrics_registration":return new y;case"biometrics_unavailable":case"device_hardware_error":case"biometrics_not_available":return new b;case"key_invalidated":case"no_biometric_key":return new S;case"no_biometrics_enrolled":return new f;case"keystore_unavailable":return new w;case"device_credentials_not_allowed":return new v;case"user_cancellation":return new k;case"user_locked_out":return new C;case"google_onetap_missing_id_token":case"oauth_apple_missing_id_token":case"missing_authorization_credential_id_token":return new P;case"google_onetap_missing_member":case"oauth_apple_credential_invalid":case"invalid_authorization_credential":return new T;case"missing_public_key":return new E;case"challenge_signing_failed":return new D;case"no_credentials_present":return new A;case"sdk_not_configured":return new O;case"failed_code_challenge":return new I;case"passkeys_unsupported":return new B;case"failed_to_decrypt_data":return new R;case"biometrics_failed":return new U;case"invalid_start_url":return new K;case"invalid_redirect_scheme":return new F;case"missing_url":return new L;case"invalid_credential_type":return new N;case"missing_attestation_object":return new M;case"json_data_not_convertible_to_string":return new x;case"random_number_generation_failed":return new z;case"passkeys_invalid_encoding":return new $;case"passkeys_misconfigured":return new j;case"signinwithapple_misconfigured":return new W;case"missing_cipher_iv":return new G;case"invalid_private_key_length":return new q;case"biometric_registration_id_is_null_or_blank":return new H;case"dfp_not_configured":return new V;default:return new g(e)}},e.parseOAuthAuthorizeParams=e=>{let t={client_id:"",redirect_uri:"",response_type:"code",scopes:[...ty]};for(let i of["client_id","redirect_uri"]){let r=e.get(i);if(!r)return{error:`Required parameter is missing: ${i}. Please reach out to the application developer.`,result:t};t[i]=r}for(let i of["response_type","scope","code_challenge","state","nonce","prompt"]){let r=e.get(i);r&&("scope"===i?t.scopes=r.split(" ").filter(Boolean):t[i]=r)}return e.has("resource")&&(t.resources=e.getAll("resource")),{error:null,result:t}},e.parseOAuthLogoutParams=e=>{let t={client_id:"",post_logout_redirect_uri:""};for(let i of["client_id","post_logout_redirect_uri"]){let r=e.get(i);if(!r)return{error:`Required parameter is missing: ${i}. Please reach out to the application developer.`,result:t};t[i]=r}return t.id_token_hint=e.get("id_token_hint")||void 0,t.state=e.get("state")||void 0,{error:null,result:t}},e}({});
|
|
32
|
+
https://www.npmjs.com/package/stytch.`)}}),eY="bootstrap",eJ=()=>({displayWatermark:!1,projectName:null,cnameDomain:null,emailDomains:["stytch.com"],captchaSettings:{enabled:!1},pkceRequiredForEmailMagicLinks:!1,pkceRequiredForPasswordResets:!1,pkceRequiredForOAuth:!1,pkceRequiredForSso:!1,slugPattern:null,createOrganizationEnabled:!1,passwordConfig:null,runDFPProtectedAuth:!1,rbacPolicy:null,siweRequiredForCryptoWallets:!1,vertical:null});class eX{_publicToken;_networkClient;_dataLayer;_bootstrapDataPromise;constructor(e,t,i){this._publicToken=e,this._networkClient=t,this._dataLayer=i,this._bootstrapDataPromise=this._networkClient.fetchSDK({url:`/projects/bootstrap/${this._publicToken}`,method:"GET"}).then(eX.mapBootstrapData).then(e=>(this._dataLayer.setItem(eY,JSON.stringify(e)),e)).catch(e=>(em(e),eJ()))}static mapBootstrapData(e){let t=null!==e.password_config?{ludsComplexity:e.password_config.luds_complexity,ludsMinimumCount:e.password_config.luds_minimum_count}:null;return{projectName:e.project_name,displayWatermark:!e.disable_sdk_watermark,captchaSettings:e.captcha_settings,cnameDomain:e.cname_domain,emailDomains:e.email_domains,pkceRequiredForEmailMagicLinks:e.pkce_required_for_email_magic_links,pkceRequiredForPasswordResets:e.pkce_required_for_password_resets,pkceRequiredForOAuth:e.pkce_required_for_oauth,pkceRequiredForSso:e.pkce_required_for_sso,slugPattern:e.slug_pattern,createOrganizationEnabled:e.create_organization_enabled,passwordConfig:t,runDFPProtectedAuth:e.dfp_protected_auth_enabled??!1,dfpProtectedAuthMode:e.dfp_protected_auth_mode,rbacPolicy:e.rbac_policy??null,siweRequiredForCryptoWallets:e.siwe_required_for_crypto_wallets,vertical:e.vertical}}getSync(){let e=this._dataLayer.getItem(eY);if(null===e)return eJ();try{return JSON.parse(e)}catch{return eJ()}}getAsync(){return this._bootstrapDataPromise}}class eZ{bootstrapPromise;state;constructor(e){this.bootstrapPromise=e,this.state=e.then(async e=>{let t;return e.captchaSettings.enabled?{configured:!0,captchaClient:await (t=e.captchaSettings.siteKey,eb(`https://www.google.com/recaptcha/enterprise.js?render=${t}`,()=>window.grecaptcha.enterprise)),siteKey:e.captchaSettings.siteKey}:{configured:!1}})}executeRecaptcha=async()=>{let{captchaClient:e,configured:t,siteKey:i}=await this.state;if(t)return await new Promise(t=>e.ready(t)),e.execute(i,{action:"LOGIN"})}}class eQ{iframeURL;_frameClient;constructor(e){this.iframeURL=e}get frameClient(){return this._frameClient=this._frameClient??new e$(this.iframeURL),this._frameClient}call(e,t){return this.frameClient.call(e,[t])}oneTapStart=e=>this.call("oneTapStart",e);oneTapSubmit=e=>this.call("oneTapSubmit",e);parsedPhoneNumber=e=>this.call("parsedPhoneNumber",e);getExamplePhoneNumber=e=>this.call("getExamplePhoneNumber",e)}class e2{_publicToken;_subscriptionDataLayer;additionalTelemetryDataFn;eventLogger;baseURL;constructor(e,t,i,r,s){this._publicToken=e,this._subscriptionDataLayer=t,this.additionalTelemetryDataFn=s,this.baseURL=i,(e=>e.includes("public-token-test"))(e)&&(this.baseURL=r),this.eventLogger=new ek({maxBatchSize:15,intervalDurationMs:800,logEventURL:this.buildSDKUrl("/events")})}updateSessionToken=()=>null;logEvent({name:e,details:t,error:i={}}){this.eventLogger.logEvent(this.createTelemetryBlob(),{public_token:this._publicToken,event_name:e,details:t,error_code:i.error_code,error_description:i.error_description,http_status_code:i.http_status_code})}createTelemetryBlob(){return{event_id:`event-id-${eh()}`,app_session_id:`app-session-id-${eh()}`,persistent_id:`persistent-id-${eh()}`,client_sent_at:new Date().toISOString(),timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,...this.additionalTelemetryDataFn(),app:{identifier:window.location.hostname},sdk:{identifier:"Stytch.js Javascript SDK",version:"@stytch/vanilla-js@6.0.7"}}}async fetchSDK({url:e,body:t,method:i}){let r=this._subscriptionDataLayer.readSessionCookie().session_token,s="Basic "+window.btoa(this._publicToken+":"+(r||this._publicToken)),o=window.btoa(JSON.stringify(this.createTelemetryBlob())),n=window.location.origin;return eo({basicAuthHeader:s,body:t,finalURL:this.buildSDKUrl(e),method:i,xSDKClientHeader:o,xSDKParentHostHeader:n})}async submitFormSDK({url:e,body:t,method:i}){let r=this._subscriptionDataLayer.readSessionCookie().session_token,s="Basic "+window.btoa(this._publicToken+":"+(r||this._publicToken)),o=window.btoa(JSON.stringify(this.createTelemetryBlob())),n=window.location.origin;return en({basicAuthHeader:s,body:t,finalURL:this.buildSDKUrl(e),method:i,xSDKClientHeader:o,xSDKParentHostHeader:n})}async retriableFetchSDK({url:e,body:t,method:i,retryCallback:r}){let s=this._subscriptionDataLayer.readSessionCookie().session_token,o="Basic "+window.btoa(this._publicToken+":"+(s||this._publicToken)),n=window.btoa(JSON.stringify(this.createTelemetryBlob())),a=window.location.origin;return es({basicAuthHeader:o,body:t,finalURL:this.buildSDKUrl(e),method:i,xSDKClientHeader:n,xSDKParentHostHeader:a,retryCallback:r})}buildSDKUrl(e){return`${this.baseURL}/sdk/v1${e}`}}function e0(e){let t=e.toString(16);return 1===t.length&&(t="0"+t),t}class e1{_dataLayer;namespace;constructor(e,t){this._dataLayer=e,this.namespace=t}key(){return`PKCE_VERIFIER:${this.namespace}`}async startPKCETransaction(){let e=await e1.createProofkeyPair();return this._dataLayer.setItem(this.key(),JSON.stringify(e)),e}getPKPair(){let e=this._dataLayer.getItem(this.key());if(null!==e)try{return JSON.parse(e)}catch{ep("Found malformed Proof Key pair in localstorage.");return}}clearPKPair(){return this._dataLayer.removeItem(this.key())}static async createProofkeyPair(){var e;let t=new Uint32Array(16);window.crypto.getRandomValues(t);let i=Array.from(t).map(e0).join("");return{code_challenge:(e=await window.crypto.subtle.digest("SHA-256",new TextEncoder().encode(i)),btoa(String.fromCharCode.call(null,...new Uint8Array(e))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")),code_verifier:i}}}function e6(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var r in i)e[r]=i[r]}return e}var e3=function e(t,i){function r(e,r,s){if("u">typeof document){"number"==typeof(s=e6({},i,s)).expires&&(s.expires=new Date(Date.now()+864e5*s.expires)),s.expires&&(s.expires=s.expires.toUTCString()),e=encodeURIComponent(e).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var o="";for(var n in s)s[n]&&(o+="; "+n,!0!==s[n]&&(o+="="+s[n].split(";")[0]));return document.cookie=e+"="+t.write(r,e)+o}}return Object.create({set:r,get:function(e){if("u">typeof document&&(!arguments.length||e)){for(var i=document.cookie?document.cookie.split("; "):[],r={},s=0;s<i.length;s++){var o=i[s].split("="),n=o.slice(1).join("=");try{var a=decodeURIComponent(o[0]);if(r[a]=t.read(n,a),e===a)break}catch(e){}}return e?r[e]:r}},remove:function(e,t){r(e,"",e6({},t,{expires:-1}))},withAttributes:function(t){return e(this.converter,e6({},this.attributes,t))},withConverter:function(t){return e(e6({},this.converter,t),this.attributes)}},{attributes:{value:Object.freeze(i)},converter:{value:Object.freeze(t)}})}({read:function(e){return'"'===e[0]&&(e=e.slice(1,-1)),e.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(e){return encodeURIComponent(e).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}},{path:"/"});let e5=e=>(document.cookie?document.cookie.split("; "):[]).filter(t=>{let[i]=t.split("=");return e===i}).length>1,e4=(e,t)=>`stytch_sdk_state_${e}${t?`::${t}`:""}`;function e9(e){return null==e?{getItem:()=>null,removeItem(){},setItem(){}}:{getItem(t,i){let r=e4(t,i);try{return e.getItem(r)}catch{return null}},setItem(t,i,r){let s=e4(t,i);try{r&&e.setItem(s,r)}catch{}},removeItem(t,i){let r=e4(t,i);try{e.removeItem(r)}catch{}}}}let e8=e9(globalThis.localStorage),e7=e9(globalThis.sessionStorage);function te(e,t){return{getItem:i=>e.getItem(t,i),setItem(i,r){e.setItem(t,i,r)},removeItem(i){e.removeItem(t,i)}}}let tt="seen_domains";class ti{publicToken;state;_opaqueTokenCookieName=null;_jwtCookieName=null;_cookiePath=null;_domain=null;_cookieAvailableToSubdomains=!1;_istCookieName=null;subscriptions;_localStorage;browserSessionStorage;constructor(e,t){let i;this.publicToken=e,this.state=null,this.subscriptions={},this._localStorage=te(e8,e),this.browserSessionStorage=te(e7,e),t?.cookieOptions&&(this._opaqueTokenCookieName=t.cookieOptions.opaqueTokenCookieName||null,this._jwtCookieName=t.cookieOptions.jwtCookieName||null,this._cookiePath=t.cookieOptions.path||null,this._domain=t.cookieOptions.domain||null,this._cookieAvailableToSubdomains=t.cookieOptions.availableToSubdomains||!1,this._istCookieName=t.cookieOptions.istCookieName||null);const r=this._localStorage.getItem("");if(!r)return;try{i=JSON.parse(r)}catch{this.syncToLocalStorage();return}this.state=i}get opaqueTokenCookieName(){return this._opaqueTokenCookieName??"stytch_session"}get jwtCookieName(){return this._jwtCookieName??"stytch_session_jwt"}get istCookieName(){return this._istCookieName??"stytch_intermediate_session_token"}readSessionCookie(){return{session_token:e3.get(this.opaqueTokenCookieName),session_jwt:e3.get(this.jwtCookieName)}}readIntermediateSessionTokenCookie(){return e3.get(this.istCookieName)}writeSessionCookie(e){let{state:t,session_token:i,session_jwt:r}=e,s=ti.generateCookieOpts({expiresAt:t?.session?.expires_at??"",availableToSubdomains:this._cookieAvailableToSubdomains,path:this._cookiePath,domain:this._domain});s.domain&&this.addSeenDomain(s.domain),e3.set(this.opaqueTokenCookieName,i,s),e3.set(this.jwtCookieName,r,s);let o=ti.generateCookieOpts({expiresAt:t?.session?.expires_at??"",availableToSubdomains:!this._cookieAvailableToSubdomains,path:this._cookiePath,domain:this._domain});o.domain&&this.addSeenDomain(o.domain),e5(this.jwtCookieName)&&e3.remove(this.jwtCookieName,o),e5(this.opaqueTokenCookieName)&&e3.remove(this.opaqueTokenCookieName,o),e5(this.jwtCookieName)&&ep("Could not remove extraneous JWT cookie. This might happen if the cookie has been set using multiple `path` settings, and may produce unwanted behavior."),e5(this.opaqueTokenCookieName)&&ep("Could not remove extraneous opaque token cookie.")}writeIntermediateSessionTokenCookie(e){let t=new Date(Date.now()+6e5),i=ti.generateCookieOpts({expiresAt:t.toString(),availableToSubdomains:this._cookieAvailableToSubdomains,path:this._cookiePath,domain:this._domain});e3.set(this.istCookieName,e,i)}removeSessionCookie(){this.removeCookies([this.opaqueTokenCookieName,this.jwtCookieName])}removeISTCookie(){this.removeCookies([this.istCookieName])}removeCookies(e){let t=this.getSeenDomains(),i=[...new Set([this._domain,null,...t])];[!0,!1].forEach(t=>{[this._cookiePath,null].forEach(r=>{i.forEach(i=>{let s=ti.generateCookieOpts({expiresAt:new Date(0).toString(),availableToSubdomains:t,path:r,domain:i});e.forEach(e=>{e3.remove(e,s)})})})})}syncToLocalStorage(){this._localStorage.setItem("",JSON.stringify(this.state))}getItem(e){return this._localStorage.getItem(e)}setItem(e,t){this._localStorage.setItem(e,t)}removeItem(e){this._localStorage.removeItem(e)}getSeenDomains(){let e=this.getItem(tt);if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}}addSeenDomain(e){if(!e)return;let t=this.getSeenDomains();t.includes(e)||(t.push(e),this.setItem(tt,JSON.stringify(t)))}static generateCookieOpts({path:e,domain:t,availableToSubdomains:i,expiresAt:r}){let s={expires:new Date(r),sameSite:"lax"};return e&&(s.path=e),"localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)?s.secure=!1:(i&&(s.domain=t||window.location.host),s.secure=!0),s}}class tr extends ti{}let ts=Symbol.for("__stytch_b2b_DataLayer"),to=(e,t)=>{Object.values(e).forEach(e=>e(t))},tn=(({KEYS_TO_EXCLUDE:e=[]}={})=>{let t=(i,r)=>typeof i==typeof r&&(null===i||null===r?i===r:"object"==typeof i?!(Object.keys(i).length!==Object.keys(r).length||Object.keys(i).some(e=>!(e in r)))&&Object.entries(i).filter(([t])=>!e.includes(t)).every(([e,i])=>t(i,r[e])):i===r);return t})({KEYS_TO_EXCLUDE:["last_accessed_at"]});class ta{_publicToken;_datalayer;fromCache=!0;constructor(e,t,{usingCustomApiEndpoint:i}){if(this._publicToken=e,this._datalayer=t,window.addEventListener("storage",this._listen),!i){const{session_token:e}=this._datalayer.readSessionCookie();if(!e)return void this.destroySession()}}_listen=e=>{if(e.key!==e4(this._publicToken,""))return;let t=null===e.newValue||"null"===e.newValue?null:JSON.parse(e.newValue);this.updateState(t,!0)};getTokens(){let{session_token:e,session_jwt:t}=this._datalayer.readSessionCookie();return"string"!=typeof e||"string"!=typeof t?null:{session_token:e,session_jwt:t}}getIntermediateSessionToken(){return this._datalayer.readIntermediateSessionTokenCookie()||null}destroyState(){this.updateStateAndTokens({state:null,session_token:null,session_jwt:null,intermediate_session_token:null})}destroySession(){this._datalayer.removeSessionCookie(),this.updateState(null)}_updateStateAndTokensInternal(e,t){let i=this._datalayer.state,r=null===e.state?null:{...this._datalayer.state,...e.state};this._datalayer.state=r;let s=this.getFromCache();if(this.setCacheRefreshed(),s||!tn(i,r)){let e;e=null==r||t.fromCache?r:{...r,sessionDurationMinutes:t.sessionDurationMinutes},to(this._datalayer.subscriptions,e)}}updateStateAndTokens(e,t={fromCache:!1}){e.state?("string"==typeof e.session_token?this._datalayer.writeSessionCookie(e):this._datalayer.removeSessionCookie(),this._datalayer.removeISTCookie()):e.intermediate_session_token?("string"==typeof e.intermediate_session_token?this._datalayer.writeIntermediateSessionTokenCookie(e.intermediate_session_token):this._datalayer.removeISTCookie(),this._datalayer.removeSessionCookie()):(this._datalayer.removeSessionCookie(),this._datalayer.removeISTCookie()),this._updateStateAndTokensInternal(e,t),this._datalayer.syncToLocalStorage()}updateState(e,t=!1){let i=this._datalayer.state,r=null===e?null:{...this._datalayer.state,...e};this._datalayer.state=r;let s=this.getFromCache();this.setCacheRefreshed();let o=!tn(i,r);(s||o)&&(to(this._datalayer.subscriptions,r),o&&!t&&this._datalayer.syncToLocalStorage())}updateTokens(e){let{session_token:t,session_jwt:i}=e,r={...this._datalayer.readSessionCookie(),session_token:t,session_jwt:i};"string"==typeof t||"string"==typeof i?(this._datalayer.writeSessionCookie(r),this._datalayer.removeISTCookie()):this._datalayer.removeSessionCookie()}subscribeToState(e){var t;let i;return t=this._datalayer.subscriptions,t[i=Math.random().toString(36).slice(-10)]=e,()=>delete t[i]}getState(){return this._datalayer.state}destroy(){window.removeEventListener("storage",this._listen)}syncFromDeviceStorage(){return null}getFromCache(){return this.fromCache}setCacheRefreshed(){this.fromCache=!1}}class tc extends ta{updateMember=e=>this.updateState({member:e});getMember=()=>this.getState()?.member??null;updateOrganization=e=>this.updateState({organization:e});getOrganization=()=>this.getState()?.organization??null;getSession=()=>this.getState()?.session??null;updateSession=(e,t)=>{if("member_session"in e&&e.member_session){let i=e.session_token&&e.session_jwt?{session_token:e.session_token,session_jwt:e.session_jwt}:{session_token:!0,session_jwt:!0};this.updateStateAndTokens({state:{session:e.member_session,member:e.member,organization:e.organization},...i,intermediate_session_token:null},{fromCache:!1,sessionDurationMinutes:t?.sessionDurationMinutes})}else this.updateStateAndTokens({state:null,session_token:null,session_jwt:null,intermediate_session_token:e.intermediate_session_token||!0},{fromCache:!1,sessionDurationMinutes:t?.sessionDurationMinutes})};withUpdateSession=e=>async t=>{let i=await e(t);return this.updateSession(i,{sessionDurationMinutes:t?.session_duration_minutes}),i}}let tl=Symbol.for("stytch__internal_b2b");class td extends eD{_oneTap;constructor(e,t,i,r,s,o=ew(),n){super(e,t,i,r,s,o),this._oneTap=n}startOneTapDiscovery=async e=>{let t=await this._oneTap.createOneTapClient();if(!t.success)throw Error(`One Tap could not load: ${t.reason}`);let{client:i}=t,r=this._oneTap.createOnDiscoverySuccessHandler({discoveryRedirectUrl:e.discovery_redirect_url,onSuccess:this._oneTap.redirectOnSuccess});return i.render({style:{position:Y.floating},callback:r,cancelOnTapOutside:e.cancel_on_tap_outside})};startOneTap=async e=>{if(!e.organization_id)throw new n("stytch.oauth.googleOneTap.start","organization_id is a required argument");let t=await this._oneTap.createOneTapClient();if(!t.success)throw Error(`One Tap could not load: ${t.reason}`);let{client:i}=t,r=this._oneTap.createOnSuccessHandler({organizationId:e.organization_id,signupRedirectUrl:e.signup_redirect_url,loginRedirectUrl:e.login_redirect_url,onSuccess:this._oneTap.redirectOnSuccess});return i.render({style:{position:Y.floating},callback:r,cancelOnTapOutside:e.cancel_on_tap_outside})};googleOneTap={discovery:{start:this.startOneTapDiscovery},start:this.startOneTap}}let th="u">typeof window&&"IdentityCredential"in window,tu=e=>e===Y.forceLegacyEmbedded?"force":e===Y.embeddedOnly||e===Y.embedded||e===Y.floatingOrEmbedded;class t_{_googleClient;_clientId;constructor(e,t){this._googleClient=e,this._clientId=t}cancel(){this._googleClient.cancel()}async render({callback:e,onOneTapCancelled:t,style:i,cancelOnTapOutside:r=!0}){let s,o=tu(i.position),n="force"===(s=tu(i.position))||s&&!th,a={client_id:this._clientId,callback:e,auto_select:!1,context:"use",itp_support:!0,use_fedcm_for_prompt:"force"!==o,cancel_on_tap_outside:r};return n&&(a.prompt_parent_id="google-parent-prompt",a.cancel_on_tap_outside=!1),this._googleClient.initialize(a),new Promise(e=>{this._googleClient.prompt(i=>{if(i.isSkippedMoment()){let r=i.getSkippedReason?.()??"unknown_reason";return"user_cancel"===r&&t?.(),e({success:!1,reason:r})}return!i.isNotDisplayed&&n||i.isNotDisplayed?.()?e({success:!1,reason:i.getNotDisplayedReason?.()??"unknown_reason"}):i.isDismissedMoment()?void 0:(this.styleFrame(n),e({success:!0}))})})}styleFrame(e){e&&Array.from(document.getElementsByTagName("iframe")).forEach(e=>{e.src.includes(t)&&(e.style.width="100%")})}}let tp=Promise.resolve({pkceRequiredForOAuth:!1});class tm{_networkClient;_pkceManager;_config;googleClientID;constructor(e,t,i=tp){this._networkClient=e,this._pkceManager=t,this._config=i}async fetchGoogleStart(){if(this.googleClientID)return this.googleClientID;let e=await this._networkClient.fetchSDK({url:"/b2b/oauth/google/onetap/start",method:"GET"});return this.googleClientID=e.google_client_id,this.googleClientID}async submitGoogleOneTapTokenDiscovery({credential:e,discoveryRedirectUrl:t}){let i,{pkceRequiredForOAuth:r}=await this._config;return r?i=(await this._pkceManager.startPKCETransaction()).code_challenge:this._pkceManager.clearPKPair(),await this._networkClient.fetchSDK({url:"/b2b/oauth/google/onetap/discovery/submit",method:"POST",body:{id_token:e,discovery_redirect_url:t,pkce_code_challenge:i}})}async submitGoogleOneTapToken({credential:e,organizationId:t,signupRedirectUrl:i,loginRedirectUrl:r}){let s,{pkceRequiredForOAuth:o}=await this._config;return o?s=(await this._pkceManager.startPKCETransaction()).code_challenge:this._pkceManager.clearPKPair(),await this._networkClient.fetchSDK({url:"/b2b/oauth/google/onetap/submit",method:"POST",body:{id_token:e,organization_id:t,signup_redirect_url:i,login_redirect_url:r,pkce_code_challenge:s}})}async createOneTapClient(){let e;try{e=await this.fetchGoogleStart()}catch(e){return{success:!1,reason:_.from(e).error_type}}return""===e?{success:!1,reason:"oauth_config_not_found"}:{success:!0,client:new t_(await eb(i,()=>window.google.accounts.id),e)}}createOnDiscoverySuccessHandler=({discoveryRedirectUrl:e,onSuccess:t,onError:i})=>async r=>{let{credential:s}=r,o=this.submitGoogleOneTapTokenDiscovery({credential:s,discoveryRedirectUrl:e}).then(e=>t(e.redirect_url));i&&(o=o.catch(e=>i(e))),await o};createOnSuccessHandler=({organizationId:e,signupRedirectUrl:t,loginRedirectUrl:i,onSuccess:r,onError:s})=>async o=>{let{credential:n}=o,a=this.submitGoogleOneTapToken({credential:n,organizationId:e,signupRedirectUrl:t,loginRedirectUrl:i}).then(e=>r(e.redirect_url));s&&(a=a.catch(e=>s(e))),await a};redirectOnSuccess=e=>{window.location.href=e}}class tg{_subscriptionService;_sessionManager;_networkClient;_dataLayer;_stateChangeClient;magicLinks;session;member;self;organization;oauth;sso;discovery;passwords;otps;totp;recoveryCodes;rbac;scim;impersonation;idp;onStateChange;parseAuthenticateUrl;authenticateByUrl;constructor(e,t){if("u"<typeof window)throw Error("`new StytchB2BClient()` is not supported in server environments. If using @stytch/react or @stytch/nextjs, use `createStytchB2BClient()` instead.");(e=>{"string"!=typeof e?ep(`Public token is malformed. Expected a string, got ${typeof e}.${eg}`):""===e?ep(`Public token is malformed. Expected "public-token-...", got an empty string.${eg}`):e.startsWith("public-token-")||ep(`Public token is malformed. Expected "public-token-...", got ${e}.${eg}`)})(e);const i=e??"",r=((e,t={})=>{let{cookieOptions:i,keepSessionAlive:r}=t;return eC(e,t,{keepSessionAlive:"optionalBoolean"}),i&&eC(`${e}.cookieOptions`,i,{opaqueTokenCookieName:"optionalString",jwtCookieName:"optionalString",istCookieName:"optionalString",path:"optionalString",domain:"optionalString"}),{cookieOptions:i,keepSessionAlive:r,endpoints:{testAPIURL:(e=>{let t=e?.customBaseUrl??e?.endpointOptions?.testApiDomain;if(t){let i=eu(t);if(i)return i;{let i=e?.customBaseUrl?"customBaseUrl":"testApiDomain";ep(`Unable to use custom API domain \`${t}\`. ${i} should be a valid domain.`)}}return e?.endpoints?.testAPIURL??"https://test.stytch.com"})(t),liveAPIURL:(e=>{let t=e?.customBaseUrl??e?.endpointOptions?.apiDomain;if(t){let i=eu(t);if(i)return i;{let i=e?.customBaseUrl?"customBaseUrl":"apiDomain";ep(`Unable to use custom API domain \`${t}\`. ${i} should be a valid domain.`)}}return e?.endpoints?.liveAPIURL??"https://api.stytch.com"})(t),dfpBackendURL:(e=>{let t=e?.dfppaUrl??e?.endpointOptions?.dfppaDomain;if(t){let i=eu(t);if(i)return i;{let i=e?.dfppaUrl?"dfppaUrl":"dfppaDomain";ep(`Unable to use custom DFPPA domain \`${t}\`. ${i} should be a valid domain.`)}}return e?.endpoints?.dfpBackendURL??"https://telemetry.stytch.com"})(t),dfpCdnURL:(e=>{let t=e?.dfpCdnUrl??e?.endpointOptions?.dfpCdnDomain;if(t){let i=eu(t);if(i)return i;{let i=e?.dfpCdnUrl?"dfpCdnUrl":"dfpCdnDomain";ep(`Unable to use custom DFP CDN domain \`${t}\`. ${i} should be a valid domain.`)}}return"https://elements.stytch.com"})(t),clientsideServicesIframeURL:t?.endpoints?.clientsideServicesIframeURL??"https://js.stytch.com/clientside-services/index.html"}}})(this.constructor.name,t),s=((e,t={})=>{let{customBaseUrl:i,endpointOptions:r}=t;return e.includes("public-token-test")?!!(i||r?.testApiDomain):!!(i||r?.apiDomain)})(i,t);this._dataLayer=((e,t)=>{let i,r=((i=window)[ts]||(i[ts]={}),i[ts]);return r[e]||(r[e]=new tr(e,t)),r[e]})(i,r),this._subscriptionService=new tc(i,this._dataLayer,{usingCustomApiEndpoint:s}),this._stateChangeClient=new eq(this._subscriptionService,{}),this.onStateChange=(...e)=>this._stateChangeClient.onStateChange(...e);const o=()=>({stytch_member_id:this._dataLayer.state?.member?.member_id,stytch_member_session_id:this._dataLayer.state?.session?.member_session_id}),n=new e1(this._dataLayer,"passwords"),a=new e2(i,this._dataLayer,r.endpoints.liveAPIURL,r.endpoints.testAPIURL,o);this._networkClient=a;const c=new eX(i,a,this._dataLayer),l=new eZ(c.getAsync()),d=new eS(i,r.endpoints.dfpBackendURL,r.endpoints.dfpCdnURL,c.getAsync(),l.executeRecaptcha),h=new eQ(r.endpoints.clientsideServicesIframeURL),u=new e1(this._dataLayer,"oauth"),_=new tm(a,u,c.getAsync());this.organization=new eO(a,a,this._subscriptionService),this.member=new eN(a,a,this._subscriptionService),this.self=new eN(a,a,this._subscriptionService),this.session=new eM(a,this._subscriptionService),this.magicLinks=new eE(a,this._subscriptionService,new e1(this._dataLayer,"magic_links"),n,c.getAsync(),d),this.oauth=new td(a,this._subscriptionService,u,c.getAsync(),{publicToken:i,testAPIURL:r.endpoints.testAPIURL,liveAPIURL:r.endpoints.liveAPIURL},d,_),this.sso=new ex(a,this._subscriptionService,new e1(this._dataLayer,"sso"),c.getAsync(),{publicToken:i,testAPIURL:r.endpoints.testAPIURL,liveAPIURL:r.endpoints.liveAPIURL},d),this.discovery=new ev(a,this._subscriptionService),this.passwords=new eR(a,this._subscriptionService,n,c.getAsync(),d),this.otps=new eI(a,this._subscriptionService,d),this.totp=new ez(a,this._subscriptionService,d),this.recoveryCodes=new eF(a,this._subscriptionService,d),this.rbac=new eK(c.getSync(),c.getAsync(),this._subscriptionService),this.scim=new eL(this._networkClient,this._subscriptionService),this.impersonation=new eT(this._networkClient,this._subscriptionService,d),this.idp=new eP(a),this._sessionManager=new eG(this._subscriptionService,this.session,i,{keepSessionAlive:r.keepSessionAlive});const p=new ej(a,d);(s||this._dataLayer.readSessionCookie().session_token)&&this._sessionManager.performBackgroundRefresh();const{authenticateByUrl:m,parseAuthenticateUrl:g}=(e=>{let t=Object.keys(e),i=(e=window.location.href)=>{let i=new URL(e),r=i.searchParams.get("stytch_token_type"),s=i.searchParams.get("token");return s&&r?t.includes(r)?{handled:!0,token:s,tokenType:r}:{handled:!1,token:s,tokenType:r}:null};return{authenticateByUrl:async({clearParams:t,...r},s=window.location.href)=>{let o,n,a,c=t??s===window.location.href,l=i(s);if(null==l)return null;if(!l.handled)return l;let{token:d,tokenType:h}=l,u=e[h];return c&&((n=(o=new URL(window.location.toString())).searchParams).delete("token"),n.delete("stytch_token_type"),a=o,window.history.replaceState(null,document.title,a)),{handled:!0,tokenType:h,data:await u(d,r)}},parseAuthenticateUrl:i}})({discovery:e=>this.magicLinks.discovery.authenticate({discovery_magic_links_token:e}),discovery_oauth:e=>this.oauth.discovery.authenticate({discovery_oauth_token:e}),oauth:(e,t)=>this.oauth.authenticate({oauth_token:e,...t}),sso:(e,t)=>this.sso.authenticate({sso_token:e,...t}),multi_tenant_magic_links:(e,t)=>this.magicLinks.authenticate({magic_links_token:e,...t}),multi_tenant_impersonation:e=>this.impersonation.authenticate({impersonation_token:e})});this.authenticateByUrl=m,this.parseAuthenticateUrl=g,a.logEvent({name:"b2b_sdk_instance_instantiated",details:{event_callback_registered:!1,error_callback_registered:!1,success_callback_registered:!1}}),c.getAsync().then(e=>{"CONSUMER"===e.vertical&&em("This application is using a Stytch client for B2B projects, but the public token is for a Stytch Consumer project. Use a Consumer Stytch client instead, or verify that the public token is correct.")}),((e,t)=>{Object.assign(e,{[tl]:t})})(this,{bootstrap:c,clientsideServices:h,publicToken:i,searchManager:p,dataLayer:this._dataLayer,networkClient:a,oneTap:_})}}let ty=["openid","email","profile"],tb=(...e)=>"u"<typeof window?eV("stytch"):new tg(...e);return e.AuthFlowType={Discovery:"Discovery",Organization:"Organization",PasswordReset:"PasswordReset"},e.B2BMFAProducts={smsOtp:"smsOtp",totp:"totp"},e.B2BOAuthProviders=s,e.BiometricRegistrationIdIsNullOrBlank=H,e.BiometricsAlreadyEnrolledError=class extends p{constructor(){super("BiometricsAlreadyEnrolledError","There is already a biometric factor enrolled on this device. Fully authenticate with all factors and remove the existing registration before attempting to register again.")}},e.BiometricsFailedError=U,e.BiometricsUnavailableError=b,e.ChallengeSigningFailedError=D,e.DFPNotConfigured=V,e.DeviceCredentialsNotAllowedError=v,e.FailedCodeChallengeError=I,e.FailedToDecryptDataError=R,e.IDPOAuthFlowMissingParamError=class extends p{constructor(e){super("IDPOAuthFlowMissingParamError",e)}},e.InternalError=g,e.InvalidAuthorizationCredentialError=T,e.InvalidCredentialTypeError=N,e.InvalidPrivateKeyLength=q,e.InvalidRedirectSchemeError=F,e.InvalidStartUrlError=K,e.JSONDataNotConvertibleToStringError=x,e.KeyInvalidatedError=S,e.KeystoreUnavailableError=w,e.MissingAttestationObjectError=M,e.MissingAuthorizationCredentialIDTokenError=P,e.MissingCipherIv=G,e.MissingGoogleClientIDError=class extends p{constructor(){super("MissingGoogleClientIDError","No Google client ID was found in the project.")}},e.MissingPKCEError=class extends p{constructor(){super("MissingPKCEError","Make sure this flow is completed on the same device on which it was started.")}},e.MissingPublicKeyError=E,e.MissingUrlError=L,e.NoBiometricsEnrolledError=f,e.NoBiometricsRegistrationError=y,e.NoCredentialsPresentError=A,e.NoCurrentSessionError=m,e.OAuthProviders={Google:"google",Microsoft:"microsoft",Apple:"apple",Github:"github",GitLab:"gitlab",Facebook:"facebook",Discord:"discord",Salesforce:"salesforce",Slack:"slack",Amazon:"amazon",Bitbucket:"bitbucket",LinkedIn:"linkedin",Coinbase:"coinbase",Twitch:"twitch",Twitter:"twitter",TikTok:"tiktok",Snapchat:"snapchat",Figma:"figma",Yahoo:"yahoo"},e.OTPMethods={SMS:"sms",WhatsApp:"whatsapp",Email:"email"},e.OneTapPositions=Y,e.PasskeysInvalidEncoding=$,e.PasskeysMisconfigured=j,e.PasskeysUnsupportedError=B,e.RNUIProducts=et,e.RandomNumberGenerationFailed=z,e.RedirectURLType={ResetPassword:"reset_password"},e.SDKAPIUnreachableError=o,e.SDKNotConfiguredError=O,e.SignInWithAppleMisconfigured=W,e.StytchAPIError=_,e.StytchAPISchemaError=u,e.StytchAPIUnreachableError=h,e.StytchB2BClient=tg,e.StytchB2BHeadlessClient=tg,e.StytchError=d,e.StytchEventType=ee,e.StytchSDKAPIError=c,e.StytchSDKError=p,e.StytchSDKSchemaError=a,e.StytchSDKUsageError=n,e.UNRECOVERABLE_ERROR_TYPES=l,e.UserCancellationError=k,e.UserLockedOutError=C,e.Wallets={Phantom:"Phantom",Metamask:"Metamask",Coinbase:"Coinbase",Binance:"Binance",GenericEthereumWallet:"GenericEthereumWallet",GenericSolanaWallet:"GenericSolanaWallet"},e.createStytchB2BClient=tb,e.createStytchB2BHeadlessClient=tb,e.errorToStytchError=function(e){if(e instanceof p)return e;switch(e.message){case"no_current_session":return new m;case"no_biometrics_registration":return new y;case"biometrics_unavailable":case"device_hardware_error":case"biometrics_not_available":return new b;case"key_invalidated":case"no_biometric_key":return new S;case"no_biometrics_enrolled":return new f;case"keystore_unavailable":return new w;case"device_credentials_not_allowed":return new v;case"user_cancellation":return new k;case"user_locked_out":return new C;case"google_onetap_missing_id_token":case"oauth_apple_missing_id_token":case"missing_authorization_credential_id_token":return new P;case"google_onetap_missing_member":case"oauth_apple_credential_invalid":case"invalid_authorization_credential":return new T;case"missing_public_key":return new E;case"challenge_signing_failed":return new D;case"no_credentials_present":return new A;case"sdk_not_configured":return new O;case"failed_code_challenge":return new I;case"passkeys_unsupported":return new B;case"failed_to_decrypt_data":return new R;case"biometrics_failed":return new U;case"invalid_start_url":return new K;case"invalid_redirect_scheme":return new F;case"missing_url":return new L;case"invalid_credential_type":return new N;case"missing_attestation_object":return new M;case"json_data_not_convertible_to_string":return new x;case"random_number_generation_failed":return new z;case"passkeys_invalid_encoding":return new $;case"passkeys_misconfigured":return new j;case"signinwithapple_misconfigured":return new W;case"missing_cipher_iv":return new G;case"invalid_private_key_length":return new q;case"biometric_registration_id_is_null_or_blank":return new H;case"dfp_not_configured":return new V;default:return new g(e)}},e.parseOAuthAuthorizeParams=e=>{let t={client_id:"",redirect_uri:"",response_type:"code",scopes:[...ty]};for(let i of["client_id","redirect_uri"]){let r=e.get(i);if(!r)return{error:`Required parameter is missing: ${i}. Please reach out to the application developer.`,result:t};t[i]=r}for(let i of["response_type","scope","code_challenge","state","nonce","prompt"]){let r=e.get(i);r&&("scope"===i?t.scopes=r.split(" ").filter(Boolean):t[i]=r)}return e.has("resource")&&(t.resources=e.getAll("resource")),{error:null,result:t}},e.parseOAuthLogoutParams=e=>{let t={client_id:"",post_logout_redirect_uri:""};for(let i of["client_id","post_logout_redirect_uri"]){let r=e.get(i);if(!r)return{error:`Required parameter is missing: ${i}. Please reach out to the application developer.`,result:t};t[i]=r}return t.id_token_hint=e.get("id_token_hint")||void 0,t.state=e.get("state")||void 0,{error:null,result:t}},e}({});
|
|
33
33
|
//# sourceMappingURL=index.headless.js.map
|