Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(core): add AmplifyOutputs types based on the Amplify Gen 2 client config schema #4859

Merged
merged 3 commits into from
May 22, 2024

Conversation

NikaHsn
Copy link
Member

@NikaHsn NikaHsn commented May 8, 2024

Issue #, if available:

Description of changes:

  • add AmplifyOutputs types representing the Amplify Gen 2 client config schema
  • updated CognitoUserAttributeKeyConverter to not convert keys to upper case and add a new CognitoUserAttributeKeyConverterToUpperCase for converting keys to upper case (this is only used by AmplifConfig as the user attribute keys are upper case in the amplifyconfiguration file)

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@NikaHsn NikaHsn requested a review from a team as a code owner May 8, 2024 19:50
part 'amplify_outputs.g.dart';

/// {@template amplify_core.amplify_outputs}
/// The amplify outputs generated by Amplify CLI Gen2 for
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: I think "CLI" isn't being used when referring to gen 2. "Gen 2" should have a space.

Suggested change
/// The amplify outputs generated by Amplify CLI Gen2 for
/// The amplify outputs generated by Amplify Gen 2 for

/// {@macro amplify_core.amplify_outputs.storage_outputs}
final StorageOutputs? storage;

/// The custom outputs generated by CLI Gen2.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
/// The custom outputs generated by CLI Gen2.
/// The custom outputs generated by Amplify Gen 2.

Comment on lines 9 to 10
/// The Amazon Pinpoint outputs used by Analytics category plugin
/// to communicate with backend services.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit/suggestion: Trim these a bit and remove the mention of what category it is for. The customer will know what category it is used for since it is nested under the category.

Q: This class is only used for Analytics, but couldn't it potentially be re-used for Push Notification, or some other category that uses pinpoint?

Suggested change
/// The Amazon Pinpoint outputs used by Analytics category plugin
/// to communicate with backend services.
/// The Amplify Gen 2 output for Amazon Pinpoint.

this.standardRequiredAttributes,
this.usernameAttributes,
this.userVerificationTypes,
this.unauthenticatedIdentitiesEnabled = true,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Q: It looks like this is new. Gen 1 config does not have this AFAIK. Are we supposed to make any changes in amplify auth to consume this? For example, should amplify auth throw when fetchAuthSession is called for an unauthenticated user if this is false? Is there a task tracking that?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct, the Gen 1 config does not have this field. Guest access is allowed if it's enabled on the backend. Libraries initiate the request, and upon success, they get guest credentials otherwise an error is returned. Android and iOS also ignore this value from Gen 2 config meaning no changes are needed within Amplify Auth to use this value.

Comment on lines 7 to 8
/// The MFA method of Amazon Cognito User Pool for
/// sending the authorization code.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: TOTP codes are not "sent" so I would remove that portion.

Suggested change
/// The MFA method of Amazon Cognito User Pool for
/// sending the authorization code.
/// The MFA method of Amazon Cognito User Pool.

Comment on lines 30 to 39
final bool? requireNumbers;

/// Requires lower case.
final bool? requireLowercase;

/// Requires upper case.
final bool? requireUppercase;

/// Requires symbols.
final bool? requireSymbols;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Q: Should all the bool values default to false? The auth/authenticator libraries will have to handle the null case as is. IMO the default values belong here not in the auth/authenticator categories.

/// {@template amplify_core.amplify_outputs.response_type}
/// The response type for identity providers set on Amazon Cognito.
/// {@endtemplate}
enum ResponseType {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion: OAuthResponseType might be a better name.

@NikaHsn NikaHsn force-pushed the feat/config/amplify-outputs branch from 270f8ba to 21a0c89 Compare May 21, 2024 20:33
@NikaHsn NikaHsn force-pushed the feat/config/amplify-outputs branch from 21a0c89 to 647cbac Compare May 22, 2024 16:29
@NikaHsn NikaHsn merged commit 8fb9e66 into feat/config-gen2 May 22, 2024
152 of 155 checks passed
@NikaHsn NikaHsn changed the title feat(core): add AmplifyOutputs types based on the CLI Gen2 client config schema feat(core): add AmplifyOutputs types based on the Amplify Gen 2 client config schema May 28, 2024
NikaHsn added a commit that referenced this pull request Jun 7, 2024
NikaHsn added a commit that referenced this pull request Jun 13, 2024
tyllark added a commit that referenced this pull request Jun 14, 2024
* feat(core): add AmplifyOutputs types based on the CLI Gen2 client config schema (#4859)

* chore: map AmplifyConfig to AmplifyOutputs (#4935)

* chore: map AmplifyConfig to AmplifyOutputs

* chore: formatting, license headers

* chore: rename amplify_outputs_mapping_test.dart

* chore: update API config

* chore: support multiple graphql or rest APIs (#4982)

* chore(core): updated asyncConfig to use AmplifyOutputs

* feat(core): add AmplifyOutputs types based on the CLI Gen2 client config schema (#4859)

* chore: map AmplifyConfig to AmplifyOutputs (#4935)

* chore: map AmplifyConfig to AmplifyOutputs

* chore: formatting, license headers

* chore: rename amplify_outputs_mapping_test.dart

* chore: update API config

* chore: support multiple graphql or rest APIs (#4982)

* chore(core): updated exports to expose MFA/Password Policies/Identity Providers

* chore(auth): updated unit test to use AmplifyOutputs

* chore(authenticator): updated to use AmplifyOutputs type

* chore(test): updated test stub to use AmplifyOutputs

* chore: update gen2 version and config mapping tests (#5010)

chore: update gen2 version and tests

* chore: supporting missing auth config options (#5011)

* chore(core): updated unit tests AmplifyConfig Json to AmplifyOutputs Json

* chore(authenticator): updated unit tests AmplifyOutputs Json values

* chore(core): updated amplify_core.dart file format

* chore(core): re-internalized IdentityProvider, MFA, and PasswordPolicies

* chore(authenticator): renamed InheritedConfig.amplifyConfig to InheritedConfig.amplifyOutputs

* chore(authenticator): Renamed FormFieldValidator.validateNewPassword's AmplifyOutputs parameter

---------

Co-authored-by: NikaHsn <nika.hasani@gmail.com>
Co-authored-by: Jordan Nelson <Jordanryannelson@gmail.com>
Jordan-Nelson added a commit that referenced this pull request Jun 27, 2024
* feat(core): add AmplifyOutputs types based on the CLI Gen2 client config schema (#4859)

* chore: map AmplifyConfig to AmplifyOutputs (#4935)

* chore: map AmplifyConfig to AmplifyOutputs

* chore: formatting, license headers

* chore: rename amplify_outputs_mapping_test.dart

* chore: update API config

* chore: support multiple graphql or rest APIs (#4982)

* chore: update gen2 version and config mapping tests (#5010)

chore: update gen2 version and tests

* chore: supporting missing auth config options (#5011)

* chore: map null passwordSettings to null passwordPolicy (#5024)

* chore(core): updated asyncConfig to use AmplifyOutputs (#4995)

* feat(core): add AmplifyOutputs types based on the CLI Gen2 client config schema (#4859)

* chore: map AmplifyConfig to AmplifyOutputs (#4935)

* chore: map AmplifyConfig to AmplifyOutputs

* chore: formatting, license headers

* chore: rename amplify_outputs_mapping_test.dart

* chore: update API config

* chore: support multiple graphql or rest APIs (#4982)

* chore(core): updated asyncConfig to use AmplifyOutputs

* feat(core): add AmplifyOutputs types based on the CLI Gen2 client config schema (#4859)

* chore: map AmplifyConfig to AmplifyOutputs (#4935)

* chore: map AmplifyConfig to AmplifyOutputs

* chore: formatting, license headers

* chore: rename amplify_outputs_mapping_test.dart

* chore: update API config

* chore: support multiple graphql or rest APIs (#4982)

* chore(core): updated exports to expose MFA/Password Policies/Identity Providers

* chore(auth): updated unit test to use AmplifyOutputs

* chore(authenticator): updated to use AmplifyOutputs type

* chore(test): updated test stub to use AmplifyOutputs

* chore: update gen2 version and config mapping tests (#5010)

chore: update gen2 version and tests

* chore: supporting missing auth config options (#5011)

* chore(core): updated unit tests AmplifyConfig Json to AmplifyOutputs Json

* chore(authenticator): updated unit tests AmplifyOutputs Json values

* chore(core): updated amplify_core.dart file format

* chore(core): re-internalized IdentityProvider, MFA, and PasswordPolicies

* chore(authenticator): renamed InheritedConfig.amplifyConfig to InheritedConfig.amplifyOutputs

* chore(authenticator): Renamed FormFieldValidator.validateNewPassword's AmplifyOutputs parameter

---------

Co-authored-by: NikaHsn <nika.hasani@gmail.com>
Co-authored-by: Jordan Nelson <Jordanryannelson@gmail.com>

* chore: fix oauth outputs (#5028)

* chore: fix oauth outputs

* fix naming typo

---------

Co-authored-by: Nika Hassani <nikaws@amazon.com>

* chore(infra-gen2): Gen 2 infra (#5026)

* chore(infra): gen 2 api rename (#5040)

* chore(infra): Add verbose flag to deploy step (#5042)

* chore: update configure apis to use AmplifyOutputs instead of AmplifyConfig (#5017)

* chore(core): add validation checks for AmplifyOutputs Json deserialization (#5077)

* Chore/authenticator password validation (#5078)

* chore(test): Removed linter ignore

* chore(authenticator): cleaned up extra import

* chore(authenticator): Updated password policy validator to use a type not affiliated with config

* chore(authenticator): updated AmplifyConfig references to AmplifyOutputs

---------

Co-authored-by: Jordan Nelson <Jordanryannelson@gmail.com>
Co-authored-by: Tyler-Larkin <tyllark@amazon.com>
Co-authored-by: Nika Hassani <nikaws@amazon.com>
Co-authored-by: Elijah Quartey <Equartey@users.noreply.github.com>
Jordan-Nelson added a commit that referenced this pull request Jun 27, 2024
* feat(core): add AmplifyOutputs types based on the CLI Gen2 client config schema (#4859)

* chore: map AmplifyConfig to AmplifyOutputs (#4935)

* chore: map AmplifyConfig to AmplifyOutputs

* chore: formatting, license headers

* chore: rename amplify_outputs_mapping_test.dart

* chore: update API config

* chore: support multiple graphql or rest APIs (#4982)

* chore: update gen2 version and config mapping tests (#5010)

chore: update gen2 version and tests

* chore: supporting missing auth config options (#5011)

* chore: map null passwordSettings to null passwordPolicy (#5024)

* chore(core): updated asyncConfig to use AmplifyOutputs (#4995)

* feat(core): add AmplifyOutputs types based on the CLI Gen2 client config schema (#4859)

* chore: map AmplifyConfig to AmplifyOutputs (#4935)

* chore: map AmplifyConfig to AmplifyOutputs

* chore: formatting, license headers

* chore: rename amplify_outputs_mapping_test.dart

* chore: update API config

* chore: support multiple graphql or rest APIs (#4982)

* chore(core): updated asyncConfig to use AmplifyOutputs

* feat(core): add AmplifyOutputs types based on the CLI Gen2 client config schema (#4859)

* chore: map AmplifyConfig to AmplifyOutputs (#4935)

* chore: map AmplifyConfig to AmplifyOutputs

* chore: formatting, license headers

* chore: rename amplify_outputs_mapping_test.dart

* chore: update API config

* chore: support multiple graphql or rest APIs (#4982)

* chore(core): updated exports to expose MFA/Password Policies/Identity Providers

* chore(auth): updated unit test to use AmplifyOutputs

* chore(authenticator): updated to use AmplifyOutputs type

* chore(test): updated test stub to use AmplifyOutputs

* chore: update gen2 version and config mapping tests (#5010)

chore: update gen2 version and tests

* chore: supporting missing auth config options (#5011)

* chore(core): updated unit tests AmplifyConfig Json to AmplifyOutputs Json

* chore(authenticator): updated unit tests AmplifyOutputs Json values

* chore(core): updated amplify_core.dart file format

* chore(core): re-internalized IdentityProvider, MFA, and PasswordPolicies

* chore(authenticator): renamed InheritedConfig.amplifyConfig to InheritedConfig.amplifyOutputs

* chore(authenticator): Renamed FormFieldValidator.validateNewPassword's AmplifyOutputs parameter

---------

Co-authored-by: NikaHsn <nika.hasani@gmail.com>
Co-authored-by: Jordan Nelson <Jordanryannelson@gmail.com>

* chore: fix oauth outputs (#5028)

* chore: fix oauth outputs

* fix naming typo

---------

Co-authored-by: Nika Hassani <nikaws@amazon.com>

* chore(infra-gen2): Gen 2 infra (#5026)

* chore(infra): gen 2 api rename (#5040)

* chore(infra): Add verbose flag to deploy step (#5042)

* chore: update configure apis to use AmplifyOutputs instead of AmplifyConfig (#5017)

* chore(core): add validation checks for AmplifyOutputs Json deserialization (#5077)

* Chore/authenticator password validation (#5078)

* chore(test): Removed linter ignore

* chore(authenticator): cleaned up extra import

* chore(authenticator): Updated password policy validator to use a type not affiliated with config

* chore(authenticator): updated AmplifyConfig references to AmplifyOutputs

---------

Co-authored-by: Jordan Nelson <Jordanryannelson@gmail.com>
Co-authored-by: Tyler-Larkin <tyllark@amazon.com>
Co-authored-by: Nika Hassani <nikaws@amazon.com>
Co-authored-by: Elijah Quartey <Equartey@users.noreply.github.com>
Jordan-Nelson added a commit that referenced this pull request Jun 27, 2024
* feat(core): add AmplifyOutputs types based on the CLI Gen2 client config schema (#4859)

* chore: map AmplifyConfig to AmplifyOutputs (#4935)

* chore: map AmplifyConfig to AmplifyOutputs

* chore: formatting, license headers

* chore: rename amplify_outputs_mapping_test.dart

* chore: update API config

* chore: support multiple graphql or rest APIs (#4982)

* chore: update gen2 version and config mapping tests (#5010)

chore: update gen2 version and tests

* chore: supporting missing auth config options (#5011)

* chore: map null passwordSettings to null passwordPolicy (#5024)

* chore(core): updated asyncConfig to use AmplifyOutputs (#4995)

* feat(core): add AmplifyOutputs types based on the CLI Gen2 client config schema (#4859)

* chore: map AmplifyConfig to AmplifyOutputs (#4935)

* chore: map AmplifyConfig to AmplifyOutputs

* chore: formatting, license headers

* chore: rename amplify_outputs_mapping_test.dart

* chore: update API config

* chore: support multiple graphql or rest APIs (#4982)

* chore(core): updated asyncConfig to use AmplifyOutputs

* feat(core): add AmplifyOutputs types based on the CLI Gen2 client config schema (#4859)

* chore: map AmplifyConfig to AmplifyOutputs (#4935)

* chore: map AmplifyConfig to AmplifyOutputs

* chore: formatting, license headers

* chore: rename amplify_outputs_mapping_test.dart

* chore: update API config

* chore: support multiple graphql or rest APIs (#4982)

* chore(core): updated exports to expose MFA/Password Policies/Identity Providers

* chore(auth): updated unit test to use AmplifyOutputs

* chore(authenticator): updated to use AmplifyOutputs type

* chore(test): updated test stub to use AmplifyOutputs

* chore: update gen2 version and config mapping tests (#5010)

chore: update gen2 version and tests

* chore: supporting missing auth config options (#5011)

* chore(core): updated unit tests AmplifyConfig Json to AmplifyOutputs Json

* chore(authenticator): updated unit tests AmplifyOutputs Json values

* chore(core): updated amplify_core.dart file format

* chore(core): re-internalized IdentityProvider, MFA, and PasswordPolicies

* chore(authenticator): renamed InheritedConfig.amplifyConfig to InheritedConfig.amplifyOutputs

* chore(authenticator): Renamed FormFieldValidator.validateNewPassword's AmplifyOutputs parameter

---------

Co-authored-by: NikaHsn <nika.hasani@gmail.com>
Co-authored-by: Jordan Nelson <Jordanryannelson@gmail.com>

* chore: fix oauth outputs (#5028)

* chore: fix oauth outputs

* fix naming typo

---------

Co-authored-by: Nika Hassani <nikaws@amazon.com>

* chore(infra-gen2): Gen 2 infra (#5026)

* chore(infra): gen 2 api rename (#5040)

* chore(infra): Add verbose flag to deploy step (#5042)

* chore: update configure apis to use AmplifyOutputs instead of AmplifyConfig (#5017)

* chore(core): add validation checks for AmplifyOutputs Json deserialization (#5077)

* Chore/authenticator password validation (#5078)

* chore(test): Removed linter ignore

* chore(authenticator): cleaned up extra import

* chore(authenticator): Updated password policy validator to use a type not affiliated with config

* chore(authenticator): updated AmplifyConfig references to AmplifyOutputs

---------

Co-authored-by: Jordan Nelson <Jordanryannelson@gmail.com>
Co-authored-by: Tyler-Larkin <tyllark@amazon.com>
Co-authored-by: Nika Hassani <nikaws@amazon.com>
Co-authored-by: Elijah Quartey <Equartey@users.noreply.github.com>
@NikaHsn NikaHsn deleted the feat/config/amplify-outputs branch August 7, 2024 16:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants