@aws-amplify/ui 6.13.0 → 6.14.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.
Files changed (28) hide show
  1. package/dist/esm/helpers/authenticator/facade.mjs +9 -2
  2. package/dist/esm/helpers/authenticator/formFields/defaults.mjs +34 -8
  3. package/dist/esm/helpers/authenticator/getRoute.mjs +8 -0
  4. package/dist/esm/helpers/authenticator/textUtil.mjs +34 -0
  5. package/dist/esm/i18n/dictionaries/authenticator/defaultTexts.mjs +27 -0
  6. package/dist/esm/i18n/dictionaries/authenticator/es.mjs +1 -1
  7. package/dist/esm/i18n/dictionaries/authenticator/fr.mjs +1 -1
  8. package/dist/esm/machines/authenticator/actions.mjs +63 -4
  9. package/dist/esm/machines/authenticator/actors/signIn.mjs +199 -49
  10. package/dist/esm/machines/authenticator/actors/signUp.mjs +81 -27
  11. package/dist/esm/machines/authenticator/defaultServices.mjs +37 -0
  12. package/dist/esm/machines/authenticator/guards.mjs +49 -1
  13. package/dist/esm/machines/authenticator/index.mjs +29 -15
  14. package/dist/esm/machines/authenticator/utils.mjs +58 -6
  15. package/dist/index.js +625 -111
  16. package/dist/styles/authenticator.css +17 -0
  17. package/dist/styles/authenticator.layer.css +17 -0
  18. package/dist/styles.css +17 -0
  19. package/dist/styles.layer.css +17 -0
  20. package/dist/types/helpers/authenticator/facade.d.ts +6 -2
  21. package/dist/types/helpers/authenticator/textUtil.d.ts +24 -1
  22. package/dist/types/i18n/dictionaries/authenticator/defaultTexts.d.ts +27 -0
  23. package/dist/types/i18n/dictionaries/index.d.ts +27 -0
  24. package/dist/types/i18n/translations.d.ts +27 -0
  25. package/dist/types/machines/authenticator/defaultServices.d.ts +105 -0
  26. package/dist/types/machines/authenticator/types.d.ts +26 -2
  27. package/dist/types/machines/authenticator/utils.d.ts +14 -2
  28. package/package.json +5 -4
@@ -2,6 +2,21 @@ import type { State } from 'xstate';
2
2
  import type { AuthUser } from 'aws-amplify/auth';
3
3
  import type { LoginMechanism, SignUpAttribute, SocialProvider, UnverifiedUserAttributes, AuthFormData, AuthFormFields, AuthTouchData, ValidationError, PasswordSettings } from '../../types';
4
4
  import type { defaultServices } from './defaultServices';
5
+ export type AuthMethod = 'PASSWORD' | 'EMAIL_OTP' | 'SMS_OTP' | 'WEB_AUTHN';
6
+ export interface PasswordlessCapabilities {
7
+ emailOtpEnabled: boolean;
8
+ smsOtpEnabled: boolean;
9
+ webAuthnEnabled: boolean;
10
+ preferredChallenge?: AuthMethod;
11
+ }
12
+ export interface PasswordlessSettings {
13
+ hiddenAuthMethods?: AuthMethod[];
14
+ preferredAuthMethod?: AuthMethod;
15
+ passkeyRegistrationPrompts?: {
16
+ afterSignin?: 'ALWAYS' | 'NEVER';
17
+ afterSignup?: 'ALWAYS' | 'NEVER';
18
+ } | boolean;
19
+ }
5
20
  export type ChallengeName = 'SMS_MFA' | 'SOFTWARE_TOKEN_MFA' | 'EMAIL_OTP' | 'SELECT_MFA_TYPE' | 'MFA_SETUP' | 'PASSWORD_VERIFIER' | 'CUSTOM_CHALLENGE' | 'DEVICE_SRP_AUTH' | 'DEVICE_PASSWORD_VERIFIER' | 'ADMIN_NO_SRP_AUTH' | 'NEW_PASSWORD_REQUIRED';
6
21
  export type AuthMFAType = 'SMS' | 'TOTP' | 'EMAIL';
7
22
  /**
@@ -37,7 +52,7 @@ export type InvokeActorEventTypes = 'done.invoke.forgotPasswordActor' | 'done.in
37
52
  /**
38
53
  * All known explicit events for xstate
39
54
  */
40
- export type AuthEventTypes = 'CHANGE' | 'BLUR' | 'FEDERATED_SIGN_IN' | 'RESEND' | 'FORGOT_PASSWORD' | 'AUTO_SIGN_IN_FAILURE' | 'SIGN_IN_WITH_REDIRECT' | 'SIGN_IN' | 'SIGN_OUT' | 'SIGN_UP' | 'SKIP' | 'SUBMIT' | 'INIT' | 'TOKEN_REFRESH' | InvokeActorEventTypes;
55
+ export type AuthEventTypes = 'CHANGE' | 'BLUR' | 'FEDERATED_SIGN_IN' | 'RESEND' | 'FORGOT_PASSWORD' | 'AUTO_SIGN_IN_FAILURE' | 'SELECT_METHOD' | 'SHOW_AUTH_METHODS' | 'SIGN_IN_WITH_REDIRECT' | 'SIGN_IN' | 'SIGN_OUT' | 'SIGN_UP' | 'SKIP' | 'SUBMIT' | 'INIT' | 'TOKEN_REFRESH' | InvokeActorEventTypes;
41
56
  /**
42
57
  * Data payload for auth events
43
58
  */
@@ -66,6 +81,7 @@ export interface ActorDoneData {
66
81
  */
67
82
  export interface AuthContext {
68
83
  actorRef?: any;
84
+ availableAuthMethods?: AuthMethod[];
69
85
  config?: {
70
86
  loginMechanism?: LoginMechanism;
71
87
  loginMechanisms?: LoginMechanism[];
@@ -74,14 +90,16 @@ export interface AuthContext {
74
90
  formFields?: AuthFormFields;
75
91
  initialState?: 'signIn' | 'signUp' | 'forgotPassword';
76
92
  passwordSettings?: PasswordSettings;
93
+ passwordless?: PasswordlessSettings;
77
94
  };
78
95
  services?: Partial<typeof defaultServices>;
79
96
  user?: AuthUser;
80
97
  actorDoneData?: ActorDoneData;
81
98
  hasSetup?: boolean;
99
+ passwordlessCapabilities?: PasswordlessCapabilities;
82
100
  }
83
101
  export type InitialStep = 'FORGOT_PASSWORD' | 'SIGN_IN' | 'SIGN_UP';
84
- export type SignInStep = 'CONFIRM_SIGN_IN_WITH_EMAIL_CODE' | 'CONFIRM_SIGN_IN_WITH_SMS_CODE' | 'CONFIRM_SIGN_IN_WITH_TOTP_CODE' | 'CONFIRM_SIGN_IN_WITH_NEW_PASSWORD_REQUIRED' | 'CONFIRM_SIGN_UP' | 'CONTINUE_SIGN_IN_WITH_TOTP_SETUP' | 'CONTINUE_SIGN_IN_WITH_EMAIL_SETUP' | 'CONTINUE_SIGN_IN_WITH_MFA_SETUP_SELECTION' | 'CONTINUE_SIGN_IN_WITH_MFA_SELECTION' | 'RESET_PASSWORD' | 'SIGN_IN_COMPLETE';
102
+ export type SignInStep = 'SELECT_AUTH_METHOD' | 'CONFIRM_SIGN_IN_WITH_EMAIL_CODE' | 'CONFIRM_SIGN_IN_WITH_SMS_CODE' | 'CONFIRM_SIGN_IN_WITH_TOTP_CODE' | 'CONFIRM_SIGN_IN_WITH_NEW_PASSWORD_REQUIRED' | 'CONFIRM_SIGN_UP' | 'CONTINUE_SIGN_IN_WITH_TOTP_SETUP' | 'CONTINUE_SIGN_IN_WITH_EMAIL_SETUP' | 'CONTINUE_SIGN_IN_WITH_MFA_SETUP_SELECTION' | 'CONTINUE_SIGN_IN_WITH_MFA_SELECTION' | 'RESET_PASSWORD' | 'SIGN_IN_COMPLETE';
85
103
  export type ResetPasswordStep = 'CONFIRM_RESET_PASSWORD_WITH_CODE' | 'RESET_PASSWORD_COMPLETE';
86
104
  export type SignUpStep = 'CONFIRM_SIGN_UP' | 'COMPLETE_AUTO_SIGN_IN' | 'SIGN_UP_COMPLETE';
87
105
  export type UserAttributeStep = 'SHOULD_CONFIRM_USER_ATTRIBUTE' | 'CONFIRM_ATTRIBUTE_WITH_CODE' | 'CONFIRM_ATTRIBUTE_COMPLETE';
@@ -104,6 +122,12 @@ interface BaseFormContext {
104
122
  passwordSettings?: PasswordSettings;
105
123
  socialProviders: Required<AuthContext>['config']['socialProviders'];
106
124
  signUpAttributes?: SignUpAttribute[];
125
+ selectedAuthMethod?: AuthMethod;
126
+ availableAuthMethods?: AuthMethod[];
127
+ preferredChallenge?: AuthMethod;
128
+ passwordless?: PasswordlessSettings;
129
+ hasExistingPasskeys?: boolean;
130
+ fetchedUserAttributes?: Record<string, unknown>;
107
131
  formFields?: AuthFormFields;
108
132
  formValues?: AuthFormData;
109
133
  touched?: AuthTouchData;
@@ -1,7 +1,19 @@
1
- import type { AuthActorContext } from './types';
1
+ import type { AuthActorContext, AuthMethod } from './types';
2
2
  import type { SignUpInput } from 'aws-amplify/auth';
3
3
  import type { LoginMechanism, UserAttributes } from '../../types';
4
4
  export declare const sanitizePhoneNumber: (dialCode: string, phoneNumber: string) => string;
5
5
  export declare const getUserAttributes: (formValues: AuthActorContext['formValues']) => UserAttributes;
6
- export declare const getSignUpInput: (username: string, formValues: AuthActorContext['formValues'], loginMechanism: LoginMechanism) => SignUpInput;
6
+ export declare const getSignUpInput: (username: string, formValues: AuthActorContext['formValues'], loginMechanism: LoginMechanism, authMethod?: AuthMethod) => SignUpInput;
7
7
  export declare const getUsernameSignUp: ({ formValues, loginMechanisms, }: AuthActorContext) => string;
8
+ /**
9
+ * Get available authentication methods based on backend capabilities and hidden methods
10
+ */
11
+ export declare const getAvailableAuthMethods: (passwordlessCapabilities?: {
12
+ emailOtpEnabled: boolean;
13
+ smsOtpEnabled: boolean;
14
+ webAuthnEnabled: boolean;
15
+ }, hiddenAuthMethods?: Array<'PASSWORD' | 'EMAIL_OTP' | 'SMS_OTP' | 'WEB_AUTHN'>) => Array<'PASSWORD' | 'EMAIL_OTP' | 'SMS_OTP' | 'WEB_AUTHN'>;
16
+ /**
17
+ * Get preferred authentication method or first available
18
+ */
19
+ export declare const getPreferredAuthMethod: (availableMethods?: Array<'PASSWORD' | 'EMAIL_OTP' | 'SMS_OTP' | 'WEB_AUTHN'>, preferredAuthMethod?: 'PASSWORD' | 'EMAIL_OTP' | 'SMS_OTP' | 'WEB_AUTHN') => 'PASSWORD' | 'EMAIL_OTP' | 'SMS_OTP' | 'WEB_AUTHN' | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-amplify/ui",
3
- "version": "6.13.0",
3
+ "version": "6.14.0",
4
4
  "main": "dist/index.js",
5
5
  "module": "dist/esm/index.mjs",
6
6
  "exports": {
@@ -45,7 +45,7 @@
45
45
  },
46
46
  "dependencies": {
47
47
  "csstype": "^3.1.1",
48
- "lodash": "4.17.21",
48
+ "lodash": "4.17.23",
49
49
  "tslib": "^2.5.2"
50
50
  },
51
51
  "peerDependencies": {
@@ -65,9 +65,10 @@
65
65
  "glob": "^10.5.0",
66
66
  "postcss": "^8.4.31",
67
67
  "sass": "^1.35.2",
68
- "style-dictionary": "3.9.1"
68
+ "style-dictionary": "3.9.1",
69
+ "ts-node": "^10.9.1"
69
70
  },
70
71
  "sideEffects": [
71
72
  "dist/**/*.css"
72
73
  ]
73
- }
74
+ }