@aws-amplify/ui 5.8.1 → 6.0.0
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/dist/esm/helpers/accountSettings/utils.mjs +33 -1
- package/dist/esm/helpers/accountSettings/validator.mjs +120 -1
- package/dist/esm/helpers/authenticator/actor.mjs +20 -1
- package/dist/esm/helpers/authenticator/constants.mjs +144 -1
- package/dist/esm/helpers/authenticator/defaultAuthHubHandler.mjs +52 -0
- package/dist/esm/helpers/authenticator/facade.mjs +137 -1
- package/dist/esm/helpers/authenticator/form.mjs +43 -1
- package/dist/esm/helpers/authenticator/formFields/defaults.mjs +132 -1
- package/dist/esm/helpers/authenticator/formFields/formFields.mjs +62 -1
- package/dist/esm/helpers/authenticator/formFields/utils.mjs +35 -0
- package/dist/esm/helpers/authenticator/getRoute.mjs +47 -0
- package/dist/esm/helpers/authenticator/textUtil.mjs +112 -1
- package/dist/esm/helpers/authenticator/utils.mjs +38 -1
- package/dist/esm/helpers/utils.mjs +5 -1
- package/dist/esm/i18n/country-dial-codes.mjs +210 -1
- package/dist/esm/i18n/dictionaries/authenticator/de.mjs +87 -1
- package/dist/esm/i18n/dictionaries/authenticator/defaultTexts.mjs +83 -1
- package/dist/esm/i18n/dictionaries/authenticator/en.mjs +74 -1
- package/dist/esm/i18n/dictionaries/authenticator/es.mjs +83 -1
- package/dist/esm/i18n/dictionaries/authenticator/fr.mjs +92 -1
- package/dist/esm/i18n/dictionaries/authenticator/he.mjs +54 -1
- package/dist/esm/i18n/dictionaries/authenticator/id.mjs +96 -1
- package/dist/esm/i18n/dictionaries/authenticator/it.mjs +82 -1
- package/dist/esm/i18n/dictionaries/authenticator/ja.mjs +86 -1
- package/dist/esm/i18n/dictionaries/authenticator/kr.mjs +71 -1
- package/dist/esm/i18n/dictionaries/authenticator/nb.mjs +95 -1
- package/dist/esm/i18n/dictionaries/authenticator/nl.mjs +67 -1
- package/dist/esm/i18n/dictionaries/authenticator/pl.mjs +71 -1
- package/dist/esm/i18n/dictionaries/authenticator/pt.mjs +61 -1
- package/dist/esm/i18n/dictionaries/authenticator/ru.mjs +61 -1
- package/dist/esm/i18n/dictionaries/authenticator/sv.mjs +82 -1
- package/dist/esm/i18n/dictionaries/authenticator/tr.mjs +76 -1
- package/dist/esm/i18n/dictionaries/authenticator/ua.mjs +84 -1
- package/dist/esm/i18n/dictionaries/authenticator/zh.mjs +74 -1
- package/dist/esm/i18n/dictionaries/index.mjs +47 -1
- package/dist/esm/i18n/translations.mjs +67 -1
- package/dist/esm/index.mjs +28 -1
- package/dist/esm/machines/authenticator/actions.mjs +188 -1
- package/dist/esm/machines/authenticator/actors/forgotPassword.mjs +184 -0
- package/dist/esm/machines/authenticator/actors/signIn.mjs +328 -1
- package/dist/esm/machines/authenticator/actors/signOut.mjs +28 -1
- package/dist/esm/machines/authenticator/actors/signUp.mjs +295 -0
- package/dist/esm/machines/authenticator/actors/verifyUserAttributes.mjs +106 -0
- package/dist/esm/machines/authenticator/defaultServices.mjs +102 -1
- package/dist/esm/machines/authenticator/guards.mjs +70 -0
- package/dist/esm/machines/authenticator/index.mjs +368 -1
- package/dist/esm/machines/authenticator/utils.mjs +71 -0
- package/dist/esm/theme/breakpoints.mjs +14 -1
- package/dist/esm/theme/createTheme.mjs +156 -1
- package/dist/esm/theme/defaultDarkModeOverride.mjs +128 -1
- package/dist/esm/theme/defaultTheme.mjs +10 -1
- package/dist/esm/theme/tokens/borderWidths.mjs +7 -1
- package/dist/esm/theme/tokens/colors.mjs +166 -1
- package/dist/esm/theme/tokens/components/accordion.mjs +47 -0
- package/dist/esm/theme/tokens/components/alert.mjs +35 -1
- package/dist/esm/theme/tokens/components/authenticator.mjs +39 -1
- package/dist/esm/theme/tokens/components/autocomplete.mjs +42 -1
- package/dist/esm/theme/tokens/components/badge.mjs +44 -1
- package/dist/esm/theme/tokens/components/breadcrumbs.mjs +34 -1
- package/dist/esm/theme/tokens/components/button.mjs +685 -1
- package/dist/esm/theme/tokens/components/card.mjs +27 -1
- package/dist/esm/theme/tokens/components/checkbox.mjs +87 -1
- package/dist/esm/theme/tokens/components/checkboxField.mjs +8 -1
- package/dist/esm/theme/tokens/components/collection.mjs +72 -1
- package/dist/esm/theme/tokens/components/copy.mjs +18 -1
- package/dist/esm/theme/tokens/components/dialCodeSelect.mjs +7 -1
- package/dist/esm/theme/tokens/components/divider.mjs +22 -1
- package/dist/esm/theme/tokens/components/dropZone.mjs +46 -1
- package/dist/esm/theme/tokens/components/field.mjs +20 -1
- package/dist/esm/theme/tokens/components/fieldControl.mjs +131 -1
- package/dist/esm/theme/tokens/components/fieldGroup.mjs +11 -1
- package/dist/esm/theme/tokens/components/fieldMessages.mjs +13 -1
- package/dist/esm/theme/tokens/components/fieldset.mjs +40 -1
- package/dist/esm/theme/tokens/components/flex.mjs +9 -1
- package/dist/esm/theme/tokens/components/heading.mjs +30 -1
- package/dist/esm/theme/tokens/components/highlightMatch.mjs +7 -1
- package/dist/esm/theme/tokens/components/icon.mjs +6 -1
- package/dist/esm/theme/tokens/components/image.mjs +8 -1
- package/dist/esm/theme/tokens/components/inAppMessaging.mjs +23 -1
- package/dist/esm/theme/tokens/components/index.mjs +111 -1
- package/dist/esm/theme/tokens/components/input.mjs +12 -1
- package/dist/esm/theme/tokens/components/link.mjs +9 -1
- package/dist/esm/theme/tokens/components/liveness.mjs +7 -1
- package/dist/esm/theme/tokens/components/loader.mjs +42 -1
- package/dist/esm/theme/tokens/components/menu.mjs +27 -1
- package/dist/esm/theme/tokens/components/message.mjs +102 -1
- package/dist/esm/theme/tokens/components/pagination.mjs +40 -1
- package/dist/esm/theme/tokens/components/passwordField.mjs +38 -1
- package/dist/esm/theme/tokens/components/phoneNumberField.mjs +10 -1
- package/dist/esm/theme/tokens/components/placeholder.mjs +18 -1
- package/dist/esm/theme/tokens/components/radio.mjs +67 -1
- package/dist/esm/theme/tokens/components/radioGroup.mjs +19 -1
- package/dist/esm/theme/tokens/components/rating.mjs +9 -1
- package/dist/esm/theme/tokens/components/searchField.mjs +39 -1
- package/dist/esm/theme/tokens/components/select.mjs +63 -1
- package/dist/esm/theme/tokens/components/selectField.mjs +16 -1
- package/dist/esm/theme/tokens/components/sliderField.mjs +70 -1
- package/dist/esm/theme/tokens/components/stepperField.mjs +33 -1
- package/dist/esm/theme/tokens/components/storagemanager.mjs +97 -1
- package/dist/esm/theme/tokens/components/switchField.mjs +61 -1
- package/dist/esm/theme/tokens/components/table.mjs +105 -1
- package/dist/esm/theme/tokens/components/tabs.mjs +59 -1
- package/dist/esm/theme/tokens/components/text.mjs +28 -1
- package/dist/esm/theme/tokens/components/textAreaField.mjs +11 -1
- package/dist/esm/theme/tokens/components/textField.mjs +12 -1
- package/dist/esm/theme/tokens/components/toggleButton.mjs +96 -1
- package/dist/esm/theme/tokens/components/toggleButtonGroup.mjs +7 -1
- package/dist/esm/theme/tokens/fontSizes.mjs +14 -1
- package/dist/esm/theme/tokens/fontWeights.mjs +13 -1
- package/dist/esm/theme/tokens/fonts.mjs +19 -1
- package/dist/esm/theme/tokens/index.mjs +65 -1
- package/dist/esm/theme/tokens/lineHeights.mjs +7 -1
- package/dist/esm/theme/tokens/opacities.mjs +15 -1
- package/dist/esm/theme/tokens/outlineOffsets.mjs +7 -1
- package/dist/esm/theme/tokens/outlineWidths.mjs +7 -1
- package/dist/esm/theme/tokens/radii.mjs +11 -1
- package/dist/esm/theme/tokens/shadows.mjs +28 -1
- package/dist/esm/theme/tokens/space.mjs +29 -1
- package/dist/esm/theme/tokens/time.mjs +7 -1
- package/dist/esm/theme/tokens/transforms.mjs +10 -1
- package/dist/esm/theme/utils.mjs +81 -1
- package/dist/esm/types/authenticator/attributes.mjs +41 -1
- package/dist/esm/types/authenticator/user.mjs +18 -1
- package/dist/esm/types/authenticator/utils.mjs +5 -1
- package/dist/esm/types/primitives/componentClassName.mjs +164 -1
- package/dist/esm/utils/classNames.mjs +39 -0
- package/dist/esm/utils/setUserAgent/constants.mjs +43 -0
- package/dist/esm/utils/setUserAgent/setUserAgent.mjs +65 -0
- package/dist/esm/utils/utils.mjs +227 -0
- package/dist/esm/validators/index.mjs +19 -1
- package/dist/index.js +8396 -1
- package/dist/styles/StorageManager.css +138 -0
- package/dist/styles/StorageManager.layer.css +140 -0
- package/dist/styles/_fieldControl.css +0 -0
- package/dist/styles/_fieldControl.layer.css +3 -0
- package/dist/styles/accordion.css +64 -0
- package/dist/styles/accordion.layer.css +66 -0
- package/dist/styles/alert.css +44 -0
- package/dist/styles/alert.layer.css +46 -0
- package/dist/styles/authenticator.css +72 -0
- package/dist/styles/authenticator.layer.css +74 -0
- package/dist/styles/autocomplete.css +48 -0
- package/dist/styles/autocomplete.layer.css +50 -0
- package/dist/styles/badge.css +35 -0
- package/dist/styles/badge.layer.css +37 -0
- package/dist/styles/base.css +1491 -0
- package/dist/styles/base.layer.css +1493 -0
- package/dist/styles/breadcrumbs.css +40 -0
- package/dist/styles/breadcrumbs.layer.css +42 -0
- package/dist/styles/button.css +1122 -0
- package/dist/styles/button.layer.css +1124 -0
- package/dist/styles/card.css +26 -0
- package/dist/styles/card.layer.css +28 -0
- package/dist/styles/checkbox.css +95 -0
- package/dist/styles/checkbox.layer.css +97 -0
- package/dist/styles/checkboxField.css +6 -0
- package/dist/styles/checkboxField.layer.css +8 -0
- package/dist/styles/collection.css +70 -0
- package/dist/styles/collection.layer.css +72 -0
- package/dist/styles/copy.css +27 -0
- package/dist/styles/copy.layer.css +29 -0
- package/dist/styles/dialCodeSelect.css +3 -0
- package/dist/styles/dialCodeSelect.layer.css +5 -0
- package/dist/styles/divider.css +47 -0
- package/dist/styles/divider.layer.css +49 -0
- package/dist/styles/dropZone.css +45 -0
- package/dist/styles/dropZone.layer.css +47 -0
- package/dist/styles/field.css +17 -0
- package/dist/styles/field.layer.css +19 -0
- package/dist/styles/fieldGroup.css +130 -0
- package/dist/styles/fieldGroup.layer.css +132 -0
- package/dist/styles/fieldMessages.css +10 -0
- package/dist/styles/fieldMessages.layer.css +12 -0
- package/dist/styles/fieldModifiers.css +15 -0
- package/dist/styles/fieldModifiers.layer.css +17 -0
- package/dist/styles/fieldset.css +37 -0
- package/dist/styles/fieldset.layer.css +39 -0
- package/dist/styles/flex.css +8 -0
- package/dist/styles/flex.layer.css +10 -0
- package/dist/styles/grid.css +3 -0
- package/dist/styles/grid.layer.css +5 -0
- package/dist/styles/heading.css +40 -0
- package/dist/styles/heading.layer.css +42 -0
- package/dist/styles/highlightMatch.css +3 -0
- package/dist/styles/highlightMatch.layer.css +5 -0
- package/dist/styles/icon.css +14 -0
- package/dist/styles/icon.layer.css +16 -0
- package/dist/styles/image.css +9 -0
- package/dist/styles/image.layer.css +11 -0
- package/dist/styles/inAppMessaging.css +179 -0
- package/dist/styles/inAppMessaging.layer.css +181 -0
- package/dist/styles/input.css +83 -0
- package/dist/styles/input.layer.css +85 -0
- package/dist/styles/link.css +26 -0
- package/dist/styles/link.layer.css +28 -0
- package/dist/styles/liveness.css +374 -0
- package/dist/styles/liveness.layer.css +376 -0
- package/dist/styles/loader.css +108 -0
- package/dist/styles/loader.layer.css +110 -0
- package/dist/styles/menu.css +54 -0
- package/dist/styles/menu.layer.css +56 -0
- package/dist/styles/message.css +111 -0
- package/dist/styles/message.layer.css +113 -0
- package/dist/styles/pagination.css +41 -0
- package/dist/styles/pagination.layer.css +43 -0
- package/dist/styles/passwordField.css +49 -0
- package/dist/styles/passwordField.layer.css +51 -0
- package/dist/styles/phoneNumberField.css +30 -0
- package/dist/styles/phoneNumberField.layer.css +32 -0
- package/dist/styles/placeholder.css +31 -0
- package/dist/styles/placeholder.layer.css +33 -0
- package/dist/styles/radio.css +82 -0
- package/dist/styles/radio.layer.css +84 -0
- package/dist/styles/radioGroupField.css +25 -0
- package/dist/styles/radioGroupField.layer.css +27 -0
- package/dist/styles/radiogroup.css +5 -0
- package/dist/styles/radiogroup.layer.css +7 -0
- package/dist/styles/rating.css +33 -0
- package/dist/styles/rating.layer.css +35 -0
- package/dist/styles/reset.css +76 -0
- package/dist/styles/reset.layer.css +78 -0
- package/dist/styles/scrollView.css +4 -0
- package/dist/styles/scrollView.layer.css +6 -0
- package/dist/styles/searchField.css +29 -0
- package/dist/styles/searchField.layer.css +31 -0
- package/dist/styles/select.css +128 -0
- package/dist/styles/select.layer.css +130 -0
- package/dist/styles/selectField.css +18 -0
- package/dist/styles/selectField.layer.css +20 -0
- package/dist/styles/sliderField.css +143 -0
- package/dist/styles/sliderField.layer.css +145 -0
- package/dist/styles/stepperField.css +77 -0
- package/dist/styles/stepperField.layer.css +79 -0
- package/dist/styles/switchField.css +76 -0
- package/dist/styles/switchField.layer.css +78 -0
- package/dist/styles/table.css +146 -0
- package/dist/styles/table.layer.css +148 -0
- package/dist/styles/tabs.css +87 -0
- package/dist/styles/tabs.layer.css +89 -0
- package/dist/styles/text.css +40 -0
- package/dist/styles/text.layer.css +42 -0
- package/dist/styles/textArea.css +71 -0
- package/dist/styles/textArea.layer.css +73 -0
- package/dist/styles/textAreaField.css +12 -0
- package/dist/styles/textAreaField.layer.css +14 -0
- package/dist/styles/textField.css +14 -0
- package/dist/styles/textField.layer.css +16 -0
- package/dist/styles/toggleButton.css +280 -0
- package/dist/styles/toggleButton.layer.css +282 -0
- package/dist/styles/toggleButtonGroup.css +31 -0
- package/dist/styles/toggleButtonGroup.layer.css +33 -0
- package/dist/styles/visuallyHidden.css +12 -0
- package/dist/styles/visuallyHidden.layer.css +14 -0
- package/dist/styles.css +298 -684
- package/dist/styles.layer.css +6115 -0
- package/dist/theme.css +93 -156
- package/dist/types/helpers/accountSettings/utils.d.ts +1 -3
- package/dist/types/helpers/authenticator/actor.d.ts +1 -1
- package/dist/types/helpers/authenticator/constants.d.ts +5 -0
- package/dist/types/helpers/authenticator/defaultAuthHubHandler.d.ts +15 -0
- package/dist/types/helpers/authenticator/facade.d.ts +35 -6
- package/dist/types/helpers/authenticator/formFields/defaults.d.ts +3 -1
- package/dist/types/helpers/authenticator/formFields/formFields.d.ts +2 -1
- package/dist/types/helpers/authenticator/formFields/index.d.ts +1 -1
- package/dist/types/helpers/authenticator/formFields/{util.d.ts → utils.d.ts} +2 -0
- package/dist/types/helpers/authenticator/getRoute.d.ts +2 -0
- package/dist/types/helpers/authenticator/index.d.ts +2 -1
- package/dist/types/helpers/authenticator/textUtil.d.ts +8 -7
- package/dist/types/{types/authenticator/stateMachine/authMachine.d.ts → helpers/authenticator/types.d.ts} +5 -5
- package/dist/types/helpers/authenticator/utils.d.ts +0 -25
- package/dist/types/helpers/index.d.ts +0 -1
- package/dist/types/helpers/utils.d.ts +2 -2
- package/dist/types/i18n/translations.d.ts +2 -3
- package/dist/types/machines/authenticator/actions.d.ts +4 -62
- package/dist/types/machines/authenticator/actors/{resetPassword.d.ts → forgotPassword.d.ts} +3 -3
- package/dist/types/machines/authenticator/actors/index.d.ts +3 -1
- package/dist/types/machines/authenticator/actors/signIn.d.ts +3 -3
- package/dist/types/machines/authenticator/actors/signOut.d.ts +2 -2
- package/dist/types/machines/authenticator/{signUp.d.ts → actors/signUp.d.ts} +3 -3
- package/dist/types/machines/authenticator/actors/verifyUserAttributes.d.ts +5 -0
- package/dist/types/machines/authenticator/defaultServices.d.ts +208 -28
- package/dist/types/machines/authenticator/getAuthenticatorConfig.d.ts +14 -0
- package/dist/types/machines/authenticator/guards.d.ts +4 -0
- package/dist/types/machines/authenticator/index.d.ts +4 -2
- package/dist/types/machines/authenticator/types.d.ts +125 -0
- package/dist/types/machines/authenticator/utils.d.ts +7 -0
- package/dist/types/machines/index.d.ts +1 -0
- package/dist/types/theme/tokens/borderWidths.d.ts +2 -2
- package/dist/types/theme/tokens/colors.d.ts +7 -9
- package/dist/types/theme/tokens/components/accordion.d.ts +12 -0
- package/dist/types/theme/tokens/components/index.d.ts +2 -4
- package/dist/types/theme/tokens/components/radioGroup.d.ts +1 -1
- package/dist/types/theme/tokens/components/storagemanager.d.ts +18 -3
- package/dist/types/theme/tokens/components/tabs.d.ts +4 -3
- package/dist/types/theme/tokens/fontSizes.d.ts +2 -2
- package/dist/types/theme/tokens/fontWeights.d.ts +2 -2
- package/dist/types/theme/tokens/fonts.d.ts +2 -2
- package/dist/types/theme/tokens/lineHeights.d.ts +2 -2
- package/dist/types/theme/tokens/opacities.d.ts +2 -2
- package/dist/types/theme/tokens/outlineOffsets.d.ts +2 -2
- package/dist/types/theme/tokens/outlineWidths.d.ts +2 -2
- package/dist/types/theme/tokens/radii.d.ts +2 -2
- package/dist/types/theme/tokens/shadows.d.ts +2 -2
- package/dist/types/theme/tokens/space.d.ts +2 -2
- package/dist/types/theme/tokens/time.d.ts +2 -2
- package/dist/types/theme/tokens/types/designToken.d.ts +12 -6
- package/dist/types/theme/types.d.ts +5 -1
- package/dist/types/types/authenticator/attributes.d.ts +10 -4
- package/dist/types/types/authenticator/form.d.ts +7 -6
- package/dist/types/types/authenticator/index.d.ts +0 -1
- package/dist/types/types/authenticator/user.d.ts +3 -29
- package/dist/types/types/authenticator/validator.d.ts +2 -2
- package/dist/types/types/displayText.d.ts +84 -0
- package/dist/types/types/index.d.ts +1 -0
- package/dist/types/types/primitives/componentClassName.d.ts +162 -180
- package/dist/types/types/util.d.ts +0 -5
- package/dist/types/utils/classNames.d.ts +4 -0
- package/dist/types/utils/index.d.ts +3 -135
- package/dist/types/utils/setUserAgent/constants.d.ts +7 -0
- package/dist/types/utils/setUserAgent/index.d.ts +1 -0
- package/dist/types/utils/setUserAgent/setUserAgent.d.ts +19 -0
- package/dist/types/utils/utils.d.ts +147 -0
- package/dist/types/validators/index.d.ts +2 -2
- package/package.json +5 -19
- package/dist/esm/helpers/authenticator/context.mjs +0 -1
- package/dist/esm/helpers/authenticator/formFields/util.mjs +0 -1
- package/dist/esm/helpers/storage/fileUploader/utils/uploader.mjs +0 -1
- package/dist/esm/machines/authenticator/actors/resetPassword.mjs +0 -1
- package/dist/esm/machines/authenticator/signUp.mjs +0 -1
- package/dist/esm/theme/tokens/components/expander.mjs +0 -1
- package/dist/esm/theme/tokens/components/fileUploader.mjs +0 -1
- package/dist/esm/utils/index.mjs +0 -1
- package/dist/types/helpers/authenticator/context.d.ts +0 -13
- package/dist/types/helpers/storage/fileUploader/index.d.ts +0 -1
- package/dist/types/helpers/storage/fileUploader/utils/index.d.ts +0 -1
- package/dist/types/helpers/storage/fileUploader/utils/uploader.d.ts +0 -28
- package/dist/types/helpers/storage/index.d.ts +0 -1
- package/dist/types/theme/tokens/components/expander.d.ts +0 -22
- package/dist/types/theme/tokens/components/fileUploader.d.ts +0 -23
- package/dist/types/types/authenticator/stateMachine/context.d.ts +0 -109
- package/dist/types/types/authenticator/stateMachine/event.d.ts +0 -17
- package/dist/types/types/authenticator/stateMachine/index.d.ts +0 -4
- package/dist/types/types/authenticator/stateMachine/state.d.ts +0 -10
|
@@ -1 +1,33 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { updatePassword, deleteUser as deleteUser$1 } from 'aws-amplify/auth';
|
|
2
|
+
import { getLogger } from '../utils.mjs';
|
|
3
|
+
|
|
4
|
+
const logger = getLogger('Auth');
|
|
5
|
+
const changePassword = async ({ currentPassword, newPassword, }) => {
|
|
6
|
+
try {
|
|
7
|
+
logger.debug('calling Auth.updatePassword');
|
|
8
|
+
await updatePassword({
|
|
9
|
+
oldPassword: currentPassword,
|
|
10
|
+
newPassword,
|
|
11
|
+
});
|
|
12
|
+
logger.debug('Auth.updatePassword was successful');
|
|
13
|
+
return Promise.resolve();
|
|
14
|
+
}
|
|
15
|
+
catch (e) {
|
|
16
|
+
logger.debug('Auth.updatePassword failed with error', e);
|
|
17
|
+
return Promise.reject(e);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const deleteUser = async () => {
|
|
21
|
+
try {
|
|
22
|
+
logger.debug('calling Auth.deleteUser');
|
|
23
|
+
await deleteUser$1();
|
|
24
|
+
logger.debug('Auth.deleteUser was successful');
|
|
25
|
+
return Promise.resolve();
|
|
26
|
+
}
|
|
27
|
+
catch (e) {
|
|
28
|
+
logger.debug('Auth.deleteUser failed with error', e);
|
|
29
|
+
return Promise.reject(e);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export { changePassword, deleteUser };
|
|
@@ -1 +1,120 @@
|
|
|
1
|
-
import{Amplify
|
|
1
|
+
import { Amplify } from 'aws-amplify';
|
|
2
|
+
import 'aws-amplify/utils';
|
|
3
|
+
import '@aws-amplify/core/internals/utils';
|
|
4
|
+
import '../../utils/setUserAgent/constants.mjs';
|
|
5
|
+
import '../../types/authenticator/user.mjs';
|
|
6
|
+
import '../../types/authenticator/attributes.mjs';
|
|
7
|
+
import { hasSpecialChars } from '../authenticator/utils.mjs';
|
|
8
|
+
|
|
9
|
+
// gets password requirement from Amplify.configure data
|
|
10
|
+
const getPasswordRequirement = () => {
|
|
11
|
+
const config = Amplify.getConfig();
|
|
12
|
+
const passwordSettings = config?.Auth?.Cognito
|
|
13
|
+
.passwordFormat;
|
|
14
|
+
if (!passwordSettings) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
return {
|
|
18
|
+
minLength: passwordSettings.minLength,
|
|
19
|
+
needsLowerCase: passwordSettings.requireLowercase ?? false,
|
|
20
|
+
needsUpperCase: passwordSettings.requireUppercase ?? false,
|
|
21
|
+
needsNumber: passwordSettings.requireNumbers ?? false,
|
|
22
|
+
needsSpecialChar: passwordSettings.requireSpecialCharacters ?? false,
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
const getHasMinLength = (minLength) => ({
|
|
26
|
+
validationMode: 'onTouched',
|
|
27
|
+
validator: (field) => field.length >= minLength,
|
|
28
|
+
message: `Password must have at least ${minLength} characters`,
|
|
29
|
+
});
|
|
30
|
+
const hasLowerCase = {
|
|
31
|
+
validationMode: 'onTouched',
|
|
32
|
+
validator: (field) => /[a-z]/.test(field),
|
|
33
|
+
message: 'Password must have lower case letters',
|
|
34
|
+
};
|
|
35
|
+
const hasUpperCase = {
|
|
36
|
+
validationMode: 'onTouched',
|
|
37
|
+
validator: (field) => /[A-Z]/.test(field),
|
|
38
|
+
message: 'Password must have upper case letters',
|
|
39
|
+
};
|
|
40
|
+
const hasNumber = {
|
|
41
|
+
validationMode: 'onTouched',
|
|
42
|
+
validator: (field) => /[0-9]/.test(field),
|
|
43
|
+
message: 'Password must have numbers',
|
|
44
|
+
};
|
|
45
|
+
const hasSpecialChar = {
|
|
46
|
+
validationMode: 'onTouched',
|
|
47
|
+
validator: (field) => hasSpecialChars(field),
|
|
48
|
+
message: 'Password must have special characters',
|
|
49
|
+
};
|
|
50
|
+
const getMatchesConfirmPassword = (password) => {
|
|
51
|
+
return {
|
|
52
|
+
validationMode: 'onTouched',
|
|
53
|
+
validator: (confirmPassword) => password === confirmPassword,
|
|
54
|
+
message: 'Your passwords must match',
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
const getDefaultPasswordValidators = () => {
|
|
58
|
+
const requirement = getPasswordRequirement();
|
|
59
|
+
if (!requirement)
|
|
60
|
+
return [];
|
|
61
|
+
const validators = [];
|
|
62
|
+
const { minLength, needsLowerCase, needsUpperCase, needsNumber, needsSpecialChar, } = requirement;
|
|
63
|
+
if (minLength) {
|
|
64
|
+
validators.push(getHasMinLength(minLength));
|
|
65
|
+
}
|
|
66
|
+
if (needsLowerCase) {
|
|
67
|
+
validators.push(hasLowerCase);
|
|
68
|
+
}
|
|
69
|
+
if (needsUpperCase) {
|
|
70
|
+
validators.push(hasUpperCase);
|
|
71
|
+
}
|
|
72
|
+
if (needsNumber) {
|
|
73
|
+
validators.push(hasNumber);
|
|
74
|
+
}
|
|
75
|
+
if (needsSpecialChar) {
|
|
76
|
+
validators.push(hasSpecialChar);
|
|
77
|
+
}
|
|
78
|
+
return validators;
|
|
79
|
+
};
|
|
80
|
+
const getDefaultConfirmPasswordValidators = (password) => {
|
|
81
|
+
return [getMatchesConfirmPassword(password)];
|
|
82
|
+
};
|
|
83
|
+
/*
|
|
84
|
+
* `shouldValidate` determines whether validator should be run, based on validation mode,
|
|
85
|
+
* input event type, and whether it has been blurred yet.
|
|
86
|
+
*/
|
|
87
|
+
const shouldValidate = ({ validationMode, eventType, hasBlurred, }) => {
|
|
88
|
+
switch (validationMode) {
|
|
89
|
+
case 'onBlur': {
|
|
90
|
+
// only run validator on blur event
|
|
91
|
+
return eventType === 'blur';
|
|
92
|
+
}
|
|
93
|
+
case 'onChange': {
|
|
94
|
+
// only run validator on change event
|
|
95
|
+
return eventType === 'change';
|
|
96
|
+
}
|
|
97
|
+
case 'onTouched': {
|
|
98
|
+
/**
|
|
99
|
+
* run validator on first blur event, and then every subsequent
|
|
100
|
+
* blur/change event.
|
|
101
|
+
*/
|
|
102
|
+
return eventType === 'blur' || hasBlurred;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
// `runFieldValidator` runs all validators, and returns error messages.
|
|
107
|
+
const runFieldValidators = ({ value, validators, eventType, hasBlurred, }) => {
|
|
108
|
+
if (!value)
|
|
109
|
+
return [];
|
|
110
|
+
return validators.reduce((prevErrors, validatorSpec) => {
|
|
111
|
+
const { validator, validationMode, message } = validatorSpec;
|
|
112
|
+
if (shouldValidate({ validationMode, eventType, hasBlurred })) {
|
|
113
|
+
const hasError = !validator(value);
|
|
114
|
+
return hasError ? [...prevErrors, message] : prevErrors;
|
|
115
|
+
}
|
|
116
|
+
return prevErrors;
|
|
117
|
+
}, []);
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
export { getDefaultConfirmPasswordValidators, getDefaultPasswordValidators, getHasMinLength, getMatchesConfirmPassword, getPasswordRequirement, hasLowerCase, hasNumber, hasSpecialChar, hasUpperCase, runFieldValidators, shouldValidate };
|
|
@@ -1 +1,20 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* This file contains helpers that lets you easily access current actor's state
|
|
3
|
+
* and context.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Get the state of current actor. This is useful for checking which screen
|
|
7
|
+
* to render: e.g. `getActorState(state).matches('confirmSignUp.edit').
|
|
8
|
+
*/
|
|
9
|
+
const getActorState = (state) => {
|
|
10
|
+
return state.context.actorRef?.getSnapshot();
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Get the context of current actor. Useful for getting any nested context
|
|
14
|
+
* like remoteError.
|
|
15
|
+
*/
|
|
16
|
+
const getActorContext = (state) => {
|
|
17
|
+
return getActorState(state)?.context;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export { getActorContext, getActorState };
|
|
@@ -1 +1,144 @@
|
|
|
1
|
-
import{countryDialCodes
|
|
1
|
+
import { countryDialCodes } from '../../i18n/country-dial-codes.mjs';
|
|
2
|
+
import 'aws-amplify/utils';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* This file contains helpers related to forms and input attributes.
|
|
6
|
+
*/
|
|
7
|
+
const defaultFormFieldOptions = {
|
|
8
|
+
birthdate: {
|
|
9
|
+
label: 'Birthdate',
|
|
10
|
+
placeholder: 'Enter your Birthdate',
|
|
11
|
+
type: 'date',
|
|
12
|
+
autocomplete: 'bday',
|
|
13
|
+
isRequired: true,
|
|
14
|
+
},
|
|
15
|
+
confirmation_code: {
|
|
16
|
+
label: 'Confirmation Code',
|
|
17
|
+
placeholder: 'Enter your Confirmation Code',
|
|
18
|
+
type: 'text',
|
|
19
|
+
autocomplete: 'one-time-code',
|
|
20
|
+
isRequired: true,
|
|
21
|
+
},
|
|
22
|
+
confirm_password: {
|
|
23
|
+
label: 'Confirm Password',
|
|
24
|
+
placeholder: 'Please confirm your Password',
|
|
25
|
+
type: 'password',
|
|
26
|
+
autocomplete: 'new-password',
|
|
27
|
+
isRequired: true,
|
|
28
|
+
},
|
|
29
|
+
email: {
|
|
30
|
+
label: 'Email',
|
|
31
|
+
placeholder: 'Enter your Email',
|
|
32
|
+
type: 'email',
|
|
33
|
+
autocomplete: 'username',
|
|
34
|
+
isRequired: true,
|
|
35
|
+
},
|
|
36
|
+
family_name: {
|
|
37
|
+
label: 'Family Name',
|
|
38
|
+
placeholder: 'Enter your Family Name',
|
|
39
|
+
type: 'text',
|
|
40
|
+
autocomplete: 'family-name',
|
|
41
|
+
isRequired: true,
|
|
42
|
+
},
|
|
43
|
+
given_name: {
|
|
44
|
+
label: 'Given Name',
|
|
45
|
+
placeholder: 'Enter your Given Name',
|
|
46
|
+
type: 'text',
|
|
47
|
+
autocomplete: 'given-name',
|
|
48
|
+
isRequired: true,
|
|
49
|
+
},
|
|
50
|
+
middle_name: {
|
|
51
|
+
label: 'Middle Name',
|
|
52
|
+
placeholder: 'Enter your Middle Name',
|
|
53
|
+
type: 'text',
|
|
54
|
+
autocomplete: 'additional-name',
|
|
55
|
+
isRequired: true,
|
|
56
|
+
},
|
|
57
|
+
name: {
|
|
58
|
+
label: 'Name',
|
|
59
|
+
placeholder: 'Enter your Name',
|
|
60
|
+
type: 'text',
|
|
61
|
+
autocomplete: 'name',
|
|
62
|
+
isRequired: true,
|
|
63
|
+
},
|
|
64
|
+
nickname: {
|
|
65
|
+
label: 'Nickname',
|
|
66
|
+
placeholder: 'Enter your Nickname',
|
|
67
|
+
type: 'text',
|
|
68
|
+
autocomplete: 'tel',
|
|
69
|
+
isRequired: true,
|
|
70
|
+
},
|
|
71
|
+
password: {
|
|
72
|
+
label: 'Password',
|
|
73
|
+
placeholder: 'Enter your Password',
|
|
74
|
+
type: 'password',
|
|
75
|
+
autocomplete: 'new-password',
|
|
76
|
+
isRequired: true,
|
|
77
|
+
},
|
|
78
|
+
phone_number: {
|
|
79
|
+
label: 'Phone Number',
|
|
80
|
+
placeholder: 'Enter your Phone Number',
|
|
81
|
+
type: 'tel',
|
|
82
|
+
autocomplete: 'tel',
|
|
83
|
+
dialCode: '+1',
|
|
84
|
+
dialCodeList: countryDialCodes,
|
|
85
|
+
isRequired: true,
|
|
86
|
+
},
|
|
87
|
+
preferred_username: {
|
|
88
|
+
label: 'Preferred Username',
|
|
89
|
+
placeholder: 'Enter your Preferred Username',
|
|
90
|
+
type: 'text',
|
|
91
|
+
isRequired: true,
|
|
92
|
+
},
|
|
93
|
+
profile: {
|
|
94
|
+
label: 'Profile',
|
|
95
|
+
placeholder: 'Add your Profile',
|
|
96
|
+
type: 'url',
|
|
97
|
+
autocomplete: 'url',
|
|
98
|
+
isRequired: true,
|
|
99
|
+
},
|
|
100
|
+
website: {
|
|
101
|
+
label: 'Website',
|
|
102
|
+
placeholder: 'Add your Website',
|
|
103
|
+
type: 'url',
|
|
104
|
+
autocomplete: 'url',
|
|
105
|
+
isRequired: true,
|
|
106
|
+
},
|
|
107
|
+
username: {
|
|
108
|
+
label: 'Username',
|
|
109
|
+
placeholder: 'Enter your Username',
|
|
110
|
+
type: 'text',
|
|
111
|
+
autocomplete: 'username',
|
|
112
|
+
isRequired: true,
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* List of special characters that Cognito allows.
|
|
117
|
+
*
|
|
118
|
+
* Adapted from https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-policies.html
|
|
119
|
+
*/
|
|
120
|
+
// prettier-ignore
|
|
121
|
+
const ALLOWED_SPECIAL_CHARACTERS = [
|
|
122
|
+
'^', '$', '*', '.', '[', ']',
|
|
123
|
+
'{', '}', '(', ')', '?', '"',
|
|
124
|
+
'!', '@', '#', '%', '&', '/',
|
|
125
|
+
'\\', ',', '>', '<', "'", ':',
|
|
126
|
+
';', '|', '_', '~', '`', '=',
|
|
127
|
+
'+', '-', ' '
|
|
128
|
+
];
|
|
129
|
+
/**
|
|
130
|
+
* Email validation regex
|
|
131
|
+
*
|
|
132
|
+
* source: HTML5 spec https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address
|
|
133
|
+
*/
|
|
134
|
+
const emailRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
|
|
135
|
+
/**
|
|
136
|
+
+ * map navigable route keys to auth event names
|
|
137
|
+
+ */
|
|
138
|
+
const NAVIGABLE_ROUTE_EVENT = {
|
|
139
|
+
forgotPassword: 'FORGOT_PASSWORD',
|
|
140
|
+
signIn: 'SIGN_IN',
|
|
141
|
+
signUp: 'SIGN_UP',
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
export { ALLOWED_SPECIAL_CHARACTERS, NAVIGABLE_ROUTE_EVENT, defaultFormFieldOptions, emailRegex };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Hub } from 'aws-amplify/utils';
|
|
2
|
+
import '@aws-amplify/core/internals/utils';
|
|
3
|
+
import '../../utils/setUserAgent/constants.mjs';
|
|
4
|
+
import { isFunction } from '../../utils/utils.mjs';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Handles Amplify JS Auth hub events, by forwarding hub events as appropriate
|
|
8
|
+
* xstate events.
|
|
9
|
+
*/
|
|
10
|
+
const defaultAuthHubHandler = async ({ payload }, service, options) => {
|
|
11
|
+
const { event } = payload;
|
|
12
|
+
const { send } = service;
|
|
13
|
+
const { onSignIn, onSignOut } = options ?? {};
|
|
14
|
+
switch (event) {
|
|
15
|
+
case 'signedIn': {
|
|
16
|
+
if (isFunction(onSignIn)) {
|
|
17
|
+
onSignIn(payload);
|
|
18
|
+
}
|
|
19
|
+
break;
|
|
20
|
+
}
|
|
21
|
+
case 'signInWithRedirect': {
|
|
22
|
+
send('SIGN_IN_WITH_REDIRECT');
|
|
23
|
+
break;
|
|
24
|
+
}
|
|
25
|
+
case 'signedOut':
|
|
26
|
+
case 'tokenRefresh_failure': {
|
|
27
|
+
if (event === 'signedOut' && isFunction(onSignOut)) {
|
|
28
|
+
onSignOut();
|
|
29
|
+
}
|
|
30
|
+
send('SIGN_OUT');
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
const getHubEventHandler = (service, handler) => (data) => {
|
|
36
|
+
handler(data, service);
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Listens to external auth Hub events and sends corresponding event to
|
|
40
|
+
* the `authService` of interest
|
|
41
|
+
*
|
|
42
|
+
* @param send - `send` function associated with the `authService` of interest
|
|
43
|
+
*
|
|
44
|
+
* @returns function that unsubscribes to the hub evenmt
|
|
45
|
+
*/
|
|
46
|
+
const listenToAuthHub = (service,
|
|
47
|
+
// angular passes its own `handler` param
|
|
48
|
+
handler = defaultAuthHubHandler) => {
|
|
49
|
+
return Hub.listen('auth', getHubEventHandler(service, handler), 'authenticator-hub-handler');
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export { defaultAuthHubHandler, listenToAuthHub };
|
|
@@ -1 +1,137 @@
|
|
|
1
|
-
import{getActorContext
|
|
1
|
+
import { getActorContext, getActorState } from './actor.mjs';
|
|
2
|
+
import { NAVIGABLE_ROUTE_EVENT } from './constants.mjs';
|
|
3
|
+
import { getRoute } from './getRoute.mjs';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* This file contains helpers that translates xstate internals to more
|
|
7
|
+
* understandable authenticator contexts. We provide these contexts with
|
|
8
|
+
* `useAuthenticator` hook/composable/service.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Creates public facing auth helpers that abstracts out xstate implementation
|
|
12
|
+
* detail. Each framework implementation can export these helpers so that
|
|
13
|
+
* developers can send events without having to learn internals.
|
|
14
|
+
*
|
|
15
|
+
* ```
|
|
16
|
+
* const [state, send] = useActor(...);
|
|
17
|
+
* const { submit } = getSendEventAliases(send);
|
|
18
|
+
* submit({ username, password})
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
const getSendEventAliases = (send) => {
|
|
22
|
+
const sendToMachine = (type) => {
|
|
23
|
+
// TODO If these were created during the creation of the machine & provider,
|
|
24
|
+
// then invalid transitions could be caught via https://xstate.js.org/docs/guides/states.html#state-can-event
|
|
25
|
+
return (data) => send({ type, data });
|
|
26
|
+
};
|
|
27
|
+
return {
|
|
28
|
+
initializeMachine: sendToMachine('INIT'),
|
|
29
|
+
resendCode: sendToMachine('RESEND'),
|
|
30
|
+
signOut: sendToMachine('SIGN_OUT'),
|
|
31
|
+
submitForm: sendToMachine('SUBMIT'),
|
|
32
|
+
updateForm: sendToMachine('CHANGE'),
|
|
33
|
+
updateBlur: sendToMachine('BLUR'),
|
|
34
|
+
// Actions that don't immediately invoke a service but instead transition to a screen
|
|
35
|
+
// are prefixed with `to*`
|
|
36
|
+
toFederatedSignIn: sendToMachine('FEDERATED_SIGN_IN'),
|
|
37
|
+
toForgotPassword: sendToMachine('FORGOT_PASSWORD'),
|
|
38
|
+
toSignIn: sendToMachine('SIGN_IN'),
|
|
39
|
+
toSignUp: sendToMachine('SIGN_UP'),
|
|
40
|
+
skipVerification: sendToMachine('SKIP'),
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
const getNextSendEventAliases = (send) => {
|
|
44
|
+
const { toFederatedSignIn, submitForm, resendCode, skipVerification } = getSendEventAliases(send);
|
|
45
|
+
return {
|
|
46
|
+
handleSubmit: submitForm,
|
|
47
|
+
resendConfirmationCode: resendCode,
|
|
48
|
+
// manual "route" navigation
|
|
49
|
+
setRoute: (route) => send({ type: NAVIGABLE_ROUTE_EVENT[route] }),
|
|
50
|
+
skipAttributeVerification: skipVerification,
|
|
51
|
+
toFederatedSignIn,
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
const getServiceContextFacade = (state) => {
|
|
55
|
+
const actorContext = (getActorContext(state) ?? {});
|
|
56
|
+
const { challengeName, codeDeliveryDetails, remoteError: error, validationError: validationErrors, totpSecretCode = null, unverifiedUserAttributes, username, } = actorContext;
|
|
57
|
+
const { socialProviders = [] } = state.context?.config ?? {};
|
|
58
|
+
// check for user in actorContext prior to state context. actorContext is more "up to date",
|
|
59
|
+
// but is not available on all states
|
|
60
|
+
const user = actorContext?.user ?? state.context?.user;
|
|
61
|
+
const hasValidationErrors = !!(validationErrors && Object.keys(validationErrors).length > 0);
|
|
62
|
+
const actorState = getActorState(state);
|
|
63
|
+
const isPending = state.hasTag('pending') || actorState?.hasTag('pending');
|
|
64
|
+
const route = getRoute(state, actorState);
|
|
65
|
+
// Auth status represents the current state of the auth flow
|
|
66
|
+
// The `configuring` state is used to indicate when the xState machine is loading
|
|
67
|
+
const authStatus = ((route) => {
|
|
68
|
+
switch (route) {
|
|
69
|
+
case 'idle':
|
|
70
|
+
case 'setup':
|
|
71
|
+
return 'configuring';
|
|
72
|
+
case 'authenticated':
|
|
73
|
+
return 'authenticated';
|
|
74
|
+
default:
|
|
75
|
+
return 'unauthenticated';
|
|
76
|
+
}
|
|
77
|
+
})(route);
|
|
78
|
+
const facade = {
|
|
79
|
+
authStatus,
|
|
80
|
+
challengeName,
|
|
81
|
+
codeDeliveryDetails,
|
|
82
|
+
error,
|
|
83
|
+
hasValidationErrors,
|
|
84
|
+
isPending,
|
|
85
|
+
route,
|
|
86
|
+
socialProviders,
|
|
87
|
+
totpSecretCode,
|
|
88
|
+
unverifiedUserAttributes,
|
|
89
|
+
user,
|
|
90
|
+
username,
|
|
91
|
+
validationErrors,
|
|
92
|
+
// @v6-migration-note
|
|
93
|
+
// While most of the properties
|
|
94
|
+
// on `AuthenticatorServiceContextFacade` can resolve to `undefined`, updating
|
|
95
|
+
// the interface requires material changes in consumers (namely `useAutenticator`)
|
|
96
|
+
// which will have implications on the UI layer as typeguards and non-null checks
|
|
97
|
+
// are required to pass type checking. As the `Authenticator` is behaving as expected
|
|
98
|
+
// with the `AuthenticatorServiceContextFacade` interface, prefer to cast
|
|
99
|
+
};
|
|
100
|
+
return facade;
|
|
101
|
+
};
|
|
102
|
+
const getNextServiceContextFacade = (state) => {
|
|
103
|
+
const actorContext = (getActorContext(state) ?? {});
|
|
104
|
+
const { challengeName, codeDeliveryDetails, remoteError: errorMessage, totpSecretCode, unverifiedUserAttributes, username, } = actorContext;
|
|
105
|
+
const { socialProviders: federatedProviders, loginMechanisms } = state.context?.config ?? {};
|
|
106
|
+
const loginMechanism = loginMechanisms?.[0];
|
|
107
|
+
const actorState = getActorState(state);
|
|
108
|
+
const isPending = state.hasTag('pending') || actorState?.hasTag('pending');
|
|
109
|
+
// @todo-migration remove this cast for Authenticator.Next
|
|
110
|
+
const route = getRoute(state, actorState);
|
|
111
|
+
return {
|
|
112
|
+
challengeName,
|
|
113
|
+
codeDeliveryDetails,
|
|
114
|
+
errorMessage,
|
|
115
|
+
federatedProviders,
|
|
116
|
+
isPending,
|
|
117
|
+
loginMechanism,
|
|
118
|
+
route,
|
|
119
|
+
totpSecretCode,
|
|
120
|
+
unverifiedUserAttributes,
|
|
121
|
+
username,
|
|
122
|
+
};
|
|
123
|
+
};
|
|
124
|
+
const getServiceFacade = ({ send, state, }) => {
|
|
125
|
+
const sendEventAliases = getSendEventAliases(send);
|
|
126
|
+
const serviceContext = getServiceContextFacade(state);
|
|
127
|
+
return {
|
|
128
|
+
...sendEventAliases,
|
|
129
|
+
...serviceContext,
|
|
130
|
+
};
|
|
131
|
+
};
|
|
132
|
+
const getNextServiceFacade = ({ send, state, }) => ({
|
|
133
|
+
...getNextSendEventAliases(send),
|
|
134
|
+
...getNextServiceContextFacade(state),
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
export { getNextServiceContextFacade, getNextServiceFacade, getSendEventAliases, getServiceContextFacade, getServiceFacade };
|
|
@@ -1 +1,43 @@
|
|
|
1
|
-
import
|
|
1
|
+
import '../../types/authenticator/user.mjs';
|
|
2
|
+
import { authFieldsWithDefaults } from '../../types/authenticator/attributes.mjs';
|
|
3
|
+
|
|
4
|
+
const getFormDataFromEvent = (event) => {
|
|
5
|
+
const formData = new FormData(event.target);
|
|
6
|
+
return Object.fromEntries(formData);
|
|
7
|
+
};
|
|
8
|
+
const setFormOrder = (formOverrides, fieldNames) => {
|
|
9
|
+
let orderedKeys = [];
|
|
10
|
+
if (formOverrides) {
|
|
11
|
+
orderedKeys = Object.keys(formOverrides)
|
|
12
|
+
.reduce((prev, key) => {
|
|
13
|
+
// reduce to array that can be sorted
|
|
14
|
+
prev.push([key, formOverrides[key]?.order]);
|
|
15
|
+
return prev;
|
|
16
|
+
}, [])
|
|
17
|
+
.sort((a, b) =>
|
|
18
|
+
//sort them based on order
|
|
19
|
+
a[1] - b[1]) // returned just key
|
|
20
|
+
.filter((a) => a[1] !== undefined)
|
|
21
|
+
.map((a) => a[0]);
|
|
22
|
+
}
|
|
23
|
+
// remove duplicates
|
|
24
|
+
return Array.from(new Set([...orderedKeys, ...fieldNames]));
|
|
25
|
+
};
|
|
26
|
+
const isAuthFieldWithDefaults = (field) => {
|
|
27
|
+
return authFieldsWithDefaults.includes(field);
|
|
28
|
+
};
|
|
29
|
+
const isArray = (val) => {
|
|
30
|
+
return Array.isArray(val);
|
|
31
|
+
};
|
|
32
|
+
const getErrors = (errors) => {
|
|
33
|
+
if (!errors)
|
|
34
|
+
return null;
|
|
35
|
+
if (isArray(errors)) {
|
|
36
|
+
return errors;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
return [errors];
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export { getErrors, getFormDataFromEvent, isAuthFieldWithDefaults, setFormOrder };
|