@aws-amplify/ui-angular 1.0.26-unstable.2 → 2.0.1-next.3

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 (80) hide show
  1. package/aws-amplify-ui-angular.d.ts +22 -0
  2. package/aws-amplify-ui-angular.metadata.json +1 -0
  3. package/bundles/aws-amplify-ui-angular.umd.js +3587 -0
  4. package/bundles/aws-amplify-ui-angular.umd.js.map +1 -0
  5. package/bundles/aws-amplify-ui-angular.umd.min.js +2 -0
  6. package/bundles/aws-amplify-ui-angular.umd.min.js.map +1 -0
  7. package/esm2015/aws-amplify-ui-angular.js +23 -0
  8. package/esm2015/index.js +12 -0
  9. package/esm2015/lib/common/helpers.js +3 -0
  10. package/esm2015/lib/common/index.js +3 -0
  11. package/esm2015/lib/common/types/auth-types.js +2 -0
  12. package/esm2015/lib/common/types/component-types.js +2 -0
  13. package/esm2015/lib/common/types/index.js +3 -0
  14. package/esm2015/lib/components/amplify-authenticator/amplify-authenticator.component.js +66 -0
  15. package/esm2015/lib/components/amplify-confirm-sign-in/amplify-confirm-sign-in.component.js +91 -0
  16. package/esm2015/lib/components/amplify-confirm-sign-up/amplify-confirm-sign-up.component.js +102 -0
  17. package/esm2015/lib/components/amplify-federated-sign-in/amplify-federated-sign-in.component.js +37 -0
  18. package/esm2015/lib/components/amplify-federated-sign-in-button/amplify-federated-sign-in-button.component.js +27 -0
  19. package/esm2015/lib/components/amplify-force-new-password/amplify-force-new-password.component.js +83 -0
  20. package/esm2015/lib/components/amplify-reset-password/amplify-reset-password.component.js +68 -0
  21. package/esm2015/lib/components/amplify-setup-totp/amplify-setup-totp.component.js +100 -0
  22. package/esm2015/lib/components/amplify-sign-in/amplify-sign-in.component.js +82 -0
  23. package/esm2015/lib/components/amplify-sign-up/amplify-sign-up.component.js +92 -0
  24. package/esm2015/lib/components/amplify-verify-user/amplify-verify-user.component.js +73 -0
  25. package/esm2015/lib/components/confirm-reset-password/amplify-confirm-reset-password.component.js +76 -0
  26. package/esm2015/lib/components/confirm-verify-user/amplify-confirm-verify-user.component.js +63 -0
  27. package/esm2015/lib/components/index.js +14 -0
  28. package/esm2015/lib/directives/amplify-override.directive.js +21 -0
  29. package/esm2015/lib/primitives/amplify-error/amplify-error.component.js +10 -0
  30. package/esm2015/lib/primitives/amplify-input/amplify-input.component.js +82 -0
  31. package/esm2015/lib/primitives/amplify-select/amplify-select.component.js +17 -0
  32. package/esm2015/lib/primitives/amplify-user-name-alias/amplify-user-name-alias.component.js +35 -0
  33. package/esm2015/lib/primitives/index.js +3 -0
  34. package/esm2015/lib/proxies.js +1839 -0
  35. package/esm2015/lib/services/authenticator-context.service.js +28 -0
  36. package/esm2015/lib/services/state-machine.service.js +46 -0
  37. package/esm2015/lib/ui-angular.module.js +91 -0
  38. package/fesm2015/aws-amplify-ui-angular.js +2989 -0
  39. package/fesm2015/aws-amplify-ui-angular.js.map +1 -0
  40. package/index.d.ts +8 -0
  41. package/lib/common/helpers.d.ts +2 -0
  42. package/lib/common/index.d.ts +2 -0
  43. package/lib/common/types/auth-types.d.ts +6 -0
  44. package/lib/common/types/component-types.d.ts +23 -0
  45. package/lib/common/types/index.d.ts +2 -0
  46. package/lib/components/amplify-authenticator/amplify-authenticator.component.d.ts +31 -0
  47. package/lib/components/amplify-confirm-sign-in/amplify-confirm-sign-in.component.d.ts +31 -0
  48. package/lib/components/amplify-confirm-sign-up/amplify-confirm-sign-up.component.d.ts +37 -0
  49. package/lib/components/amplify-federated-sign-in/amplify-federated-sign-in.component.d.ts +16 -0
  50. package/lib/components/amplify-federated-sign-in-button/amplify-federated-sign-in-button.component.d.ts +9 -0
  51. package/lib/components/amplify-force-new-password/amplify-force-new-password.component.d.ts +31 -0
  52. package/lib/components/amplify-reset-password/amplify-reset-password.component.d.ts +30 -0
  53. package/lib/components/amplify-setup-totp/amplify-setup-totp.component.d.ts +31 -0
  54. package/lib/components/amplify-sign-in/amplify-sign-in.component.d.ts +34 -0
  55. package/lib/components/amplify-sign-up/amplify-sign-up.component.d.ts +35 -0
  56. package/lib/components/amplify-verify-user/amplify-verify-user.component.d.ts +31 -0
  57. package/lib/components/confirm-reset-password/amplify-confirm-reset-password.component.d.ts +34 -0
  58. package/lib/components/confirm-verify-user/amplify-confirm-verify-user.component.d.ts +26 -0
  59. package/lib/components/index.d.ts +13 -0
  60. package/lib/directives/amplify-override.directive.d.ts +7 -0
  61. package/lib/primitives/amplify-error/amplify-error.component.d.ts +2 -0
  62. package/lib/primitives/amplify-input/amplify-input.component.d.ts +31 -0
  63. package/lib/primitives/amplify-select/amplify-select.component.d.ts +7 -0
  64. package/lib/primitives/amplify-user-name-alias/amplify-user-name-alias.component.d.ts +15 -0
  65. package/lib/primitives/index.d.ts +2 -0
  66. package/{dist/directives → lib}/proxies.d.ts +0 -0
  67. package/lib/services/authenticator-context.service.d.ts +10 -0
  68. package/lib/services/state-machine.service.d.ts +29 -0
  69. package/lib/ui-angular.module.d.ts +2 -0
  70. package/package.json +27 -49
  71. package/theme.css +99 -0
  72. package/CHANGELOG.md +0 -536
  73. package/LICENSE +0 -201
  74. package/README.md +0 -1
  75. package/dist/amplify-module.d.ts +0 -2
  76. package/dist/core.d.ts +0 -4
  77. package/dist/core.metadata.json +0 -1
  78. package/dist/fesm2015.js +0 -1532
  79. package/dist/fesm5.js +0 -1319
  80. package/dist/index.d.ts +0 -2
@@ -0,0 +1,91 @@
1
+ import { Component, HostBinding, } from '@angular/core';
2
+ import { Logger } from 'aws-amplify';
3
+ import { AuthChallengeNames, getActorContext, getActorState, } from '@aws-amplify/ui';
4
+ import { StateMachineService } from '../../services/state-machine.service';
5
+ import { AuthPropService } from '../../services/authenticator-context.service';
6
+ import { translate } from '@aws-amplify/ui';
7
+ const logger = new Logger('ConfirmSignIn');
8
+ export class AmplifyConfirmSignInComponent {
9
+ constructor(stateMachine, contextService) {
10
+ this.stateMachine = stateMachine;
11
+ this.contextService = contextService;
12
+ this.dataAttr = '';
13
+ this.customComponents = {};
14
+ this.remoteError = '';
15
+ this.isPending = false;
16
+ this.confirmText = translate('Confirm');
17
+ this.backToSignInText = translate('Back to Sign In');
18
+ }
19
+ ngOnInit() {
20
+ this.authSubscription = this.stateMachine.authService.subscribe((state) => {
21
+ this.onStateUpdate(state);
22
+ });
23
+ this.setHeaderText();
24
+ }
25
+ ngAfterContentInit() {
26
+ this.customComponents = this.contextService.customComponents;
27
+ }
28
+ ngOnDestroy() {
29
+ this.authSubscription.unsubscribe();
30
+ }
31
+ get context() {
32
+ const { change, signIn, submit } = this.stateMachine.services;
33
+ const remoteError = this.remoteError;
34
+ return { change, remoteError, signIn, submit };
35
+ }
36
+ setHeaderText() {
37
+ const state = this.stateMachine.authState;
38
+ const actorContext = getActorContext(state);
39
+ const { challengeName } = actorContext;
40
+ switch (challengeName) {
41
+ case AuthChallengeNames.SOFTWARE_TOKEN_MFA:
42
+ // TODO: this string should be centralized and translated from ui.
43
+ this.headerText = translate('Confirm TOTP Code');
44
+ break;
45
+ case AuthChallengeNames.SMS_MFA:
46
+ this.headerText = translate('Confirm SMS Code');
47
+ break;
48
+ default:
49
+ logger.error('Unexpected challengeName', challengeName);
50
+ }
51
+ }
52
+ onStateUpdate(state) {
53
+ const actorState = getActorState(state);
54
+ this.remoteError = actorState.context.remoteError;
55
+ this.isPending = !actorState.matches('confirmSignIn.edit');
56
+ }
57
+ onInput(event) {
58
+ event.preventDefault();
59
+ const { name, value } = event.target;
60
+ this.stateMachine.send({
61
+ type: 'CHANGE',
62
+ data: { name, value },
63
+ });
64
+ }
65
+ onSubmit(event) {
66
+ event.preventDefault();
67
+ // TODO: handle form data within the state machine
68
+ const formData = new FormData(event.target);
69
+ this.stateMachine.send({
70
+ type: 'SUBMIT',
71
+ data: Object.fromEntries(formData),
72
+ });
73
+ }
74
+ toSignIn() {
75
+ this.stateMachine.send('SIGN_IN');
76
+ }
77
+ }
78
+ AmplifyConfirmSignInComponent.decorators = [
79
+ { type: Component, args: [{
80
+ selector: 'amplify-confirm-sign-in',
81
+ template: "<!-- \n Define default contents here\n-->\n<ng-template #confirmSignInButton>\n <button data-amplify-button type=\"submit\">{{ confirmText }}</button>\n</ng-template>\n\n<ng-template #confirmSignInForm>\n <form data-amplify-form (submit)=\"onSubmit($event)\" (input)=\"onInput($event)\">\n <fieldset data-amplify-fieldset [disabled]=\"isPending\">\n <amplify-form-input\n name=\"confirmation_code\"\n type=\"number\"\n autocomplete=\"one-time-code\"\n ></amplify-form-input>\n\n <div data-amplify-footer>\n <button type=\"button\" (click)=\"toSignIn()\">\n {{ backToSignInText }}\n </button>\n <ng-container\n [ngTemplateOutlet]=\"\n customComponents.confirmSignInButton || confirmSignInButton\n \"\n [ngTemplateOutletContext]=\"context\"\n >\n </ng-container>\n </div>\n </fieldset>\n\n <amplify-error *ngIf=\"remoteError\">\n {{ remoteError }}\n </amplify-error>\n </form>\n</ng-template>\n\n<!-- \n Render sign in component\n-->\n\n<div data-amplify-container>\n <h2 data-amplify-header>{{ headerText }}</h2>\n <ng-container\n [ngTemplateOutlet]=\"customComponents.signInForm || confirmSignInForm\"\n [ngTemplateOutletContext]=\"context\"\n >\n </ng-container>\n</div>\n"
82
+ },] }
83
+ ];
84
+ AmplifyConfirmSignInComponent.ctorParameters = () => [
85
+ { type: StateMachineService },
86
+ { type: AuthPropService }
87
+ ];
88
+ AmplifyConfirmSignInComponent.propDecorators = {
89
+ dataAttr: [{ type: HostBinding, args: ['attr.data-amplify-authenticator-confirmsignin',] }]
90
+ };
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGlmeS1jb25maXJtLXNpZ24taW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvYW1wbGlmeS1jb25maXJtLXNpZ24taW4vYW1wbGlmeS1jb25maXJtLXNpZ24taW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsV0FBVyxHQUlaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFckMsT0FBTyxFQUNMLGtCQUFrQixFQUVsQixlQUFlLEVBQ2YsYUFBYSxHQUdkLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQU0zQyxNQUFNLE9BQU8sNkJBQTZCO0lBZ0J4QyxZQUNVLFlBQWlDLEVBQ2pDLGNBQStCO1FBRC9CLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBaUI7UUFmcUIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUVyRSxxQkFBZ0IsR0FBcUMsRUFBRSxDQUFDO1FBQ3hELGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFNbEIsZ0JBQVcsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkMscUJBQWdCLEdBQUcsU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFLcEQsQ0FBQztJQUVKLFFBQVE7UUFDTixJ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QUF1RDthQUN4RDs7O1lBVFEsbUJBQW1CO1lBQ25CLGVBQWU7Ozt1QkFZckIsV0FBVyxTQUFDLCtDQUErQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb2dnZXIgfSBmcm9tICdhd3MtYW1wbGlmeSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICd4c3RhdGUnO1xuaW1wb3J0IHtcbiAgQXV0aENoYWxsZW5nZU5hbWVzLFxuICBBdXRoTWFjaGluZVN0YXRlLFxuICBnZXRBY3RvckNvbnRleHQsXG4gIGdldEFjdG9yU3RhdGUsXG4gIFNpZ25JbkNvbnRleHQsXG4gIFNpZ25JblN0YXRlLFxufSBmcm9tICdAYXdzLWFtcGxpZnkvdWknO1xuaW1wb3J0IHsgU3RhdGVNYWNoaW5lU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0YXRlLW1hY2hpbmUuc2VydmljZSc7XG5pbXBvcnQgeyBBdXRoUHJvcFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoZW50aWNhdG9yLWNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyB0cmFuc2xhdGUgfSBmcm9tICdAYXdzLWFtcGxpZnkvdWknO1xuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKCdDb25maXJtU2lnbkluJyk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FtcGxpZnktY29uZmlybS1zaWduLWluJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FtcGxpZnktY29uZmlybS1zaWduLWluLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgQW1wbGlmeUNvbmZpcm1TaWduSW5Db21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdFxue1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1hbXBsaWZ5LWF1dGhlbnRpY2F0b3ItY29uZmlybXNpZ25pbicpIGRhdGFBdHRyID0gJyc7XG5cbiAgcHVibGljIGN1c3RvbUNvbXBvbmVudHM6IFJlY29yZDxzdHJpbmcsIFRlbXBsYXRlUmVmPGFueT4+ID0ge307XG4gIHB1YmxpYyByZW1vdGVFcnJvciA9ICcnO1xuICBwdWJsaWMgaXNQZW5kaW5nID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBhdXRoU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgLy8gdHJhbnNsYXRlZCB0ZXh0c1xuICBwdWJsaWMgaGVhZGVyVGV4dDogc3RyaW5nO1xuICBwdWJsaWMgY29uZmlybVRleHQgPSB0cmFuc2xhdGUoJ0NvbmZpcm0nKTtcbiAgcHVibGljIGJhY2tUb1NpZ25JblRleHQgPSB0cmFuc2xhdGUoJ0JhY2sgdG8gU2lnbiBJbicpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RhdGVNYWNoaW5lOiBTdGF0ZU1hY2hpbmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IEF1dGhQcm9wU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hdXRoU3Vic2NyaXB0aW9uID0gdGhpcy5zdGF0ZU1hY2hpbmUuYXV0aFNlcnZpY2Uuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgdGhpcy5vblN0YXRlVXBkYXRlKHN0YXRlKTtcbiAgICB9KTtcbiAgICB0aGlzLnNldEhlYWRlclRleHQoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmN1c3RvbUNvbXBvbmVudHMgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLmN1c3RvbUNvbXBvbmVudHM7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmF1dGhTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29udGV4dCgpIHtcbiAgICBjb25zdCB7IGNoYW5nZSwgc2lnbkluLCBzdWJtaXQgfSA9IHRoaXMuc3RhdGVNYWNoaW5lLnNlcnZpY2VzO1xuICAgIGNvbnN0IHJlbW90ZUVycm9yID0gdGhpcy5yZW1vdGVFcnJvcjtcbiAgICByZXR1cm4geyBjaGFuZ2UsIHJlbW90ZUVycm9yLCBzaWduSW4sIHN1Ym1pdCB9O1xuICB9XG5cbiAgc2V0SGVhZGVyVGV4dCgpOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVNYWNoaW5lLmF1dGhTdGF0ZTtcbiAgICBjb25zdCBhY3RvckNvbnRleHQ6IFNpZ25JbkNvbnRleHQgPSBnZXRBY3RvckNvbnRleHQoc3RhdGUpO1xuICAgIGNvbnN0IHsgY2hhbGxlbmdlTmFtZSB9ID0gYWN0b3JDb250ZXh0O1xuICAgIHN3aXRjaCAoY2hhbGxlbmdlTmFtZSkge1xuICAgICAgY2FzZSBBdXRoQ2hhbGxlbmdlTmFtZXMuU09GVFdBUkVfVE9LRU5fTUZBOlxuICAgICAgICAvLyBUT0RPOiB0aGlzIHN0cmluZyBzaG91bGQgYmUgY2VudHJhbGl6ZWQgYW5kIHRyYW5zbGF0ZWQgZnJvbSB1aS5cbiAgICAgICAgdGhpcy5oZWFkZXJUZXh0ID0gdHJhbnNsYXRlKCdDb25maXJtIFRPVFAgQ29kZScpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQXV0aENoYWxsZW5nZU5hbWVzLlNNU19NRkE6XG4gICAgICAgIHRoaXMuaGVhZGVyVGV4dCA9IHRyYW5zbGF0ZSgnQ29uZmlybSBTTVMgQ29kZScpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGxvZ2dlci5lcnJvcignVW5leHBlY3RlZCBjaGFsbGVuZ2VOYW1lJywgY2hhbGxlbmdlTmFtZSk7XG4gICAgfVxuICB9XG5cbiAgb25TdGF0ZVVwZGF0ZShzdGF0ZTogQXV0aE1hY2hpbmVTdGF0ZSk6IHZvaWQge1xuICAgIGNvbnN0IGFjdG9yU3RhdGU6IFNpZ25JblN0YXRlID0gZ2V0QWN0b3JTdGF0ZShzdGF0ZSk7XG4gICAgdGhpcy5yZW1vdGVFcnJvciA9IGFjdG9yU3RhdGUuY29udGV4dC5yZW1vdGVFcnJvcjtcbiAgICB0aGlzLmlzUGVuZGluZyA9ICFhY3RvclN0YXRlLm1hdGNoZXMoJ2NvbmZpcm1TaWduSW4uZWRpdCcpO1xuICB9XG5cbiAgb25JbnB1dChldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IDxIVE1MSW5wdXRFbGVtZW50PmV2ZW50LnRhcmdldDtcbiAgICB0aGlzLnN0YXRlTWFjaGluZS5zZW5kKHtcbiAgICAgIHR5cGU6ICdDSEFOR0UnLFxuICAgICAgZGF0YTogeyBuYW1lLCB2YWx1ZSB9LFxuICAgIH0pO1xuICB9XG5cbiAgb25TdWJtaXQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAvLyBUT0RPOiBoYW5kbGUgZm9ybSBkYXRhIHdpdGhpbiB0aGUgc3RhdGUgbWFjaGluZVxuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKGV2ZW50LnRhcmdldCBhcyBIVE1MRm9ybUVsZW1lbnQpO1xuICAgIHRoaXMuc3RhdGVNYWNoaW5lLnNlbmQoe1xuICAgICAgdHlwZTogJ1NVQk1JVCcsXG4gICAgICBkYXRhOiBPYmplY3QuZnJvbUVudHJpZXMoZm9ybURhdGEpLFxuICAgIH0pO1xuICB9XG5cbiAgdG9TaWduSW4oKSB7XG4gICAgdGhpcy5zdGF0ZU1hY2hpbmUuc2VuZCgnU0lHTl9JTicpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,102 @@
1
+ import { Component, HostBinding, Input } from '@angular/core';
2
+ import { getActorContext, getActorState, } from '@aws-amplify/ui';
3
+ import { StateMachineService } from '../../services/state-machine.service';
4
+ import { AuthPropService } from '../../services/authenticator-context.service';
5
+ import { translate } from '@aws-amplify/ui';
6
+ export class AmplifyConfirmSignUpComponent {
7
+ constructor(stateMachine, contextService) {
8
+ this.stateMachine = stateMachine;
9
+ this.contextService = contextService;
10
+ this.dataAttr = '';
11
+ this.headerText = translate('Confirm Sign Up');
12
+ this.customComponents = {};
13
+ this.remoteError = '';
14
+ this.isPending = false;
15
+ // translated texts
16
+ this.signInText = translate('Sign in');
17
+ this.resendCodeText = translate('Resend Code');
18
+ this.lostCodeText = translate('Lost your code? ');
19
+ this.confirmText = translate('Confirm');
20
+ }
21
+ ngOnInit() {
22
+ // TODO: alias for subscribe
23
+ this.authSubscription = this.stateMachine.authService.subscribe((state) => this.onStateUpdate(state));
24
+ this.setUsername();
25
+ }
26
+ setUsername() {
27
+ var _a;
28
+ const state = this.stateMachine.authState;
29
+ const actorContext = getActorContext(state);
30
+ const { user, authAttributes } = actorContext;
31
+ const username = (_a = user === null || user === void 0 ? void 0 : user.username) !== null && _a !== void 0 ? _a : authAttributes === null || authAttributes === void 0 ? void 0 : authAttributes.username;
32
+ if (username) {
33
+ this.username = username;
34
+ this.stateMachine.send({
35
+ type: 'CHANGE',
36
+ data: { name: 'username', value: this.username },
37
+ });
38
+ }
39
+ }
40
+ ngAfterContentInit() {
41
+ this.customComponents = this.contextService.customComponents;
42
+ }
43
+ ngOnDestroy() {
44
+ this.authSubscription.unsubscribe();
45
+ }
46
+ onStateUpdate(state) {
47
+ const actorState = getActorState(state);
48
+ this.remoteError = actorState.context.remoteError;
49
+ this.isPending = !actorState.matches('confirmSignUp.edit');
50
+ }
51
+ get context() {
52
+ const { change, resend, signIn, submit } = this.stateMachine.services;
53
+ const remoteError = this.remoteError;
54
+ const username = this.username;
55
+ return { change, remoteError, resend, signIn, submit, username };
56
+ }
57
+ toSignIn() {
58
+ this.stateMachine.send('SIGN_IN');
59
+ }
60
+ resend() {
61
+ this.stateMachine.send({
62
+ type: 'RESEND',
63
+ data: {
64
+ username: this.username,
65
+ },
66
+ });
67
+ }
68
+ onInput($event) {
69
+ $event.preventDefault();
70
+ const { name, value } = $event.target;
71
+ this.stateMachine.send({
72
+ type: 'CHANGE',
73
+ data: { name, value },
74
+ });
75
+ }
76
+ onSubmit(event) {
77
+ event.preventDefault();
78
+ const state = this.stateMachine.authState;
79
+ const actorContext = getActorContext(state);
80
+ const { formValues } = actorContext;
81
+ const { username, confirmation_code } = formValues;
82
+ this.stateMachine.send({
83
+ type: 'SUBMIT',
84
+ data: { username, confirmation_code },
85
+ });
86
+ }
87
+ }
88
+ AmplifyConfirmSignUpComponent.decorators = [
89
+ { type: Component, args: [{
90
+ selector: 'amplify-confirm-sign-up',
91
+ template: "<!-- \n Define default contents here\n-->\n<ng-template #confirmSignUpButton>\n <button data-amplify-button type=\"submit\">{{ confirmText }}</button>\n</ng-template>\n\n<ng-template #confirmSignUpForm>\n <form data-amplify-form (submit)=\"onSubmit($event)\" (input)=\"onInput($event)\">\n <fieldset data-amplify-fieldset [disabled]=\"isPending\">\n <amplify-form-input\n name=\"username\"\n [initialValue]=\"username ? username : null\"\n [disabled]=\"!!username\"\n ></amplify-form-input>\n <amplify-form-input\n name=\"confirmation_code\"\n type=\"number\"\n autocomplete=\"one-time-code\"\n ></amplify-form-input>\n\n <div data-amplify-resend>\n {{ lostCodeText }}\n <a data-amplify-link (click)=\"resend()\">{{ resendCodeText }}</a>\n </div>\n\n <div data-amplify-footer>\n <div>\n Back to{{ ' ' }}\n <a data-amplify-link (click)=\"toSignIn()\">{{ signInText }}</a>\n </div>\n <ng-container\n [ngTemplateOutlet]=\"\n customComponents.confirmSignUpButton || confirmSignUpButton\n \"\n [ngTemplateOutletContext]=\"context\"\n >\n </ng-container>\n </div>\n </fieldset>\n\n <amplify-error *ngIf=\"remoteError\">\n {{ remoteError }}\n </amplify-error>\n </form>\n</ng-template>\n\n<!-- \n Render confirm sign up component\n-->\n\n<div data-amplify-container>\n <h2 data-amplify-header>{{ headerText }}</h2>\n <ng-container\n [ngTemplateOutlet]=\"customComponents.confirmSignUpForm || confirmSignUpForm\"\n [ngTemplateOutletContext]=\"context\"\n >\n </ng-container>\n</div>\n"
92
+ },] }
93
+ ];
94
+ AmplifyConfirmSignUpComponent.ctorParameters = () => [
95
+ { type: StateMachineService },
96
+ { type: AuthPropService }
97
+ ];
98
+ AmplifyConfirmSignUpComponent.propDecorators = {
99
+ dataAttr: [{ type: HostBinding, args: ['attr.data-amplify-authenticator-confirmsignup',] }],
100
+ headerText: [{ type: Input }]
101
+ };
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGlmeS1jb25maXJtLXNpZ24tdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvYW1wbGlmeS1jb25maXJtLXNpZ24tdXAvYW1wbGlmeS1jb25maXJtLXNpZ24tdXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBRUwsZUFBZSxFQUNmLGFBQWEsR0FHZCxNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFLNUMsTUFBTSxPQUFPLDZCQUE2QjtJQWV4QyxZQUNVLFlBQWlDLEVBQ2pDLGNBQStCO1FBRC9CLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBaUI7UUFoQnFCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkUsZUFBVSxHQUFHLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzVDLHFCQUFnQixHQUFxQyxFQUFFLENBQUM7UUFHeEQsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUV6QixtQkFBbUI7UUFDWixlQUFVLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xDLG1CQUFjLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzFDLGlCQUFZLEdBQUcsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDN0MsZ0JBQVcsR0FBRyxTQUFTLENBQUMs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UUFDbkIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO1FBQzFDLE1BQU0sWUFBWSxHQUFrQixlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLFlBQVksQ0FBQztRQUNwQyxNQUFNLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLEdBQUcsVUFBVSxDQUFDO1FBRW5ELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQ3JCLElBQUksRUFBRSxRQUFRO1lBQ2QsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1NBQ3RDLENBQUMsQ0FBQztJQUNMLENBQUM7OztZQXBHRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMsMnFEQUF1RDthQUN4RDs7O1lBTlEsbUJBQW1CO1lBQ25CLGVBQWU7Ozt1QkFPckIsV0FBVyxTQUFDLCtDQUErQzt5QkFDM0QsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQXV0aE1hY2hpbmVTdGF0ZSxcbiAgZ2V0QWN0b3JDb250ZXh0LFxuICBnZXRBY3RvclN0YXRlLFxuICBTaWduVXBDb250ZXh0LFxuICBTaWduVXBTdGF0ZSxcbn0gZnJvbSAnQGF3cy1hbXBsaWZ5L3VpJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3hzdGF0ZSc7XG5pbXBvcnQgeyBTdGF0ZU1hY2hpbmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RhdGUtbWFjaGluZS5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhQcm9wU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGhlbnRpY2F0b3ItY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IHRyYW5zbGF0ZSB9IGZyb20gJ0Bhd3MtYW1wbGlmeS91aSc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhbXBsaWZ5LWNvbmZpcm0tc2lnbi11cCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hbXBsaWZ5LWNvbmZpcm0tc2lnbi11cC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEFtcGxpZnlDb25maXJtU2lnblVwQ29tcG9uZW50IHtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtYW1wbGlmeS1hdXRoZW50aWNhdG9yLWNvbmZpcm1zaWdudXAnKSBkYXRhQXR0ciA9ICcnO1xuICBASW5wdXQoKSBoZWFkZXJUZXh0ID0gdHJhbnNsYXRlKCdDb25maXJtIFNpZ24gVXAnKTtcbiAgcHVibGljIGN1c3RvbUNvbXBvbmVudHM6IFJlY29yZDxzdHJpbmcsIFRlbXBsYXRlUmVmPGFueT4+ID0ge307XG4gIHByaXZhdGUgYXV0aFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgdXNlcm5hbWU6IHN0cmluZztcbiAgcHVibGljIHJlbW90ZUVycm9yID0gJyc7XG4gIHB1YmxpYyBpc1BlbmRpbmcgPSBmYWxzZTtcblxuICAvLyB0cmFuc2xhdGVkIHRleHRzXG4gIHB1YmxpYyBzaWduSW5UZXh0ID0gdHJhbnNsYXRlKCdTaWduIGluJyk7XG4gIHB1YmxpYyByZXNlbmRDb2RlVGV4dCA9IHRyYW5zbGF0ZSgnUmVzZW5kIENvZGUnKTtcbiAgcHVibGljIGxvc3RDb2RlVGV4dCA9IHRyYW5zbGF0ZSgnTG9zdCB5b3VyIGNvZGU/ICcpO1xuICBwdWJsaWMgY29uZmlybVRleHQgPSB0cmFuc2xhdGUoJ0NvbmZpcm0nKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0YXRlTWFjaGluZTogU3RhdGVNYWNoaW5lU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRleHRTZXJ2aWNlOiBBdXRoUHJvcFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIFRPRE86IGFsaWFzIGZvciBzdWJzY3JpYmVcbiAgICB0aGlzLmF1dGhTdWJzY3JpcHRpb24gPSB0aGlzLnN0YXRlTWFjaGluZS5hdXRoU2VydmljZS5zdWJzY3JpYmUoKHN0YXRlKSA9PlxuICAgICAgdGhpcy5vblN0YXRlVXBkYXRlKHN0YXRlKVxuICAgICk7XG4gICAgdGhpcy5zZXRVc2VybmFtZSgpO1xuICB9XG5cbiAgc2V0VXNlcm5hbWUoKSB7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlTWFjaGluZS5hdXRoU3RhdGU7XG4gICAgY29uc3QgYWN0b3JDb250ZXh0OiBTaWduVXBDb250ZXh0ID0gZ2V0QWN0b3JDb250ZXh0KHN0YXRlKTtcbiAgICBjb25zdCB7IHVzZXIsIGF1dGhBdHRyaWJ1dGVzIH0gPSBhY3RvckNvbnRleHQ7XG4gICAgY29uc3QgdXNlcm5hbWUgPSB1c2VyPy51c2VybmFtZSA/PyBhdXRoQXR0cmlidXRlcz8udXNlcm5hbWU7XG4gICAgaWYgKHVzZXJuYW1lKSB7XG4gICAgICB0aGlzLnVzZXJuYW1lID0gdXNlcm5hbWU7XG4gICAgICB0aGlzLnN0YXRlTWFjaGluZS5zZW5kKHtcbiAgICAgICAgdHlwZTogJ0NIQU5HRScsXG4gICAgICAgIGRhdGE6IHsgbmFtZTogJ3VzZXJuYW1lJywgdmFsdWU6IHRoaXMudXNlcm5hbWUgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmN1c3RvbUNvbXBvbmVudHMgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLmN1c3RvbUNvbXBvbmVudHM7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmF1dGhTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG9uU3RhdGVVcGRhdGUoc3RhdGU6IEF1dGhNYWNoaW5lU3RhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RvclN0YXRlOiBTaWduVXBTdGF0ZSA9IGdldEFjdG9yU3RhdGUoc3RhdGUpO1xuICAgIHRoaXMucmVtb3RlRXJyb3IgPSBhY3RvclN0YXRlLmNvbnRleHQucmVtb3RlRXJyb3I7XG4gICAgdGhpcy5pc1BlbmRpbmcgPSAhYWN0b3JTdGF0ZS5tYXRjaGVzKCdjb25maXJtU2lnblVwLmVkaXQnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29udGV4dCgpIHtcbiAgICBjb25zdCB7IGNoYW5nZSwgcmVzZW5kLCBzaWduSW4sIHN1Ym1pdCB9ID0gdGhpcy5zdGF0ZU1hY2hpbmUuc2VydmljZXM7XG4gICAgY29uc3QgcmVtb3RlRXJyb3IgPSB0aGlzLnJlbW90ZUVycm9yO1xuICAgIGNvbnN0IHVzZXJuYW1lID0gdGhpcy51c2VybmFtZTtcbiAgICByZXR1cm4geyBjaGFuZ2UsIHJlbW90ZUVycm9yLCByZXNlbmQsIHNpZ25Jbiwgc3VibWl0LCB1c2VybmFtZSB9O1xuICB9XG5cbiAgdG9TaWduSW4oKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZU1hY2hpbmUuc2VuZCgnU0lHTl9JTicpO1xuICB9XG5cbiAgcmVzZW5kKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVNYWNoaW5lLnNlbmQoe1xuICAgICAgdHlwZTogJ1JFU0VORCcsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIHVzZXJuYW1lOiB0aGlzLnVzZXJuYW1lLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uSW5wdXQoJGV2ZW50KSB7XG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgeyBuYW1lLCB2YWx1ZSB9ID0gJGV2ZW50LnRhcmdldDtcbiAgICB0aGlzLnN0YXRlTWFjaGluZS5zZW5kKHtcbiAgICAgIHR5cGU6ICdDSEFOR0UnLFxuICAgICAgZGF0YTogeyBuYW1lLCB2YWx1ZSB9LFxuICAgIH0pO1xuICB9XG5cbiAgb25TdWJtaXQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVNYWNoaW5lLmF1dGhTdGF0ZTtcbiAgICBjb25zdCBhY3RvckNvbnRleHQ6IFNpZ25VcENvbnRleHQgPSBnZXRBY3RvckNvbnRleHQoc3RhdGUpO1xuICAgIGNvbnN0IHsgZm9ybVZhbHVlcyB9ID0gYWN0b3JDb250ZXh0O1xuICAgIGNvbnN0IHsgdXNlcm5hbWUsIGNvbmZpcm1hdGlvbl9jb2RlIH0gPSBmb3JtVmFsdWVzO1xuXG4gICAgdGhpcy5zdGF0ZU1hY2hpbmUuc2VuZCh7XG4gICAgICB0eXBlOiAnU1VCTUlUJyxcbiAgICAgIGRhdGE6IHsgdXNlcm5hbWUsIGNvbmZpcm1hdGlvbl9jb2RlIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,37 @@
1
+ import { Component } from '@angular/core';
2
+ import { FederatedIdentityProviders } from '@aws-amplify/ui';
3
+ import { StateMachineService } from '../../services/state-machine.service';
4
+ import { translate } from '@aws-amplify/ui';
5
+ export class AmplifyFederatedSignInComponent {
6
+ constructor(stateMachine) {
7
+ this.stateMachine = stateMachine;
8
+ this.FederatedProviders = FederatedIdentityProviders;
9
+ this.includeFacebook = false;
10
+ this.includeGoogle = false;
11
+ this.includeAmazon = false;
12
+ this.shouldShowFederatedSignIn = false;
13
+ // translated texts
14
+ this.signInFacebookText = translate('Sign In with Facebook');
15
+ this.signInGoogleText = translate('Sign In with Google');
16
+ this.signInAmazonText = translate('Sign In with Amazon');
17
+ }
18
+ ngOnInit() {
19
+ var _a, _b;
20
+ const loginMechanisms = (_b = (_a = this.stateMachine.context) === null || _a === void 0 ? void 0 : _a.config) === null || _b === void 0 ? void 0 : _b.login_mechanisms;
21
+ this.includeFacebook = loginMechanisms === null || loginMechanisms === void 0 ? void 0 : loginMechanisms.includes('facebook');
22
+ this.includeGoogle = loginMechanisms === null || loginMechanisms === void 0 ? void 0 : loginMechanisms.includes('google');
23
+ this.includeAmazon = loginMechanisms === null || loginMechanisms === void 0 ? void 0 : loginMechanisms.includes('amazon');
24
+ this.shouldShowFederatedSignIn =
25
+ this.includeFacebook || this.includeGoogle || this.includeAmazon;
26
+ }
27
+ }
28
+ AmplifyFederatedSignInComponent.decorators = [
29
+ { type: Component, args: [{
30
+ selector: 'amplify-federated-sign-in',
31
+ template: "<div data-amplify-federated>\n <amplify-federated-sign-in-button\n *ngIf=\"includeFacebook\"\n [text]=\"signInFacebookText\"\n [provider]=\"FederatedProviders.Facebook\"\n ></amplify-federated-sign-in-button>\n\n <amplify-federated-sign-in-button\n *ngIf=\"includeGoogle\"\n [text]=\"signInGoogleText\"\n [provider]=\"FederatedProviders.Google\"\n ></amplify-federated-sign-in-button>\n\n <amplify-federated-sign-in-button\n *ngIf=\"includeAmazon\"\n [text]=\"signInAmazonText\"\n [provider]=\"FederatedProviders.Amazon\"\n ></amplify-federated-sign-in-button>\n</div>\n"
32
+ },] }
33
+ ];
34
+ AmplifyFederatedSignInComponent.ctorParameters = () => [
35
+ { type: StateMachineService }
36
+ ];
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGlmeS1mZWRlcmF0ZWQtc2lnbi1pbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9hbXBsaWZ5LWZlZGVyYXRlZC1zaWduLWluL2FtcGxpZnktZmVkZXJhdGVkLXNpZ24taW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBTTVDLE1BQU0sT0FBTywrQkFBK0I7SUFZMUMsWUFBb0IsWUFBaUM7UUFBakMsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBWDlDLHVCQUFrQixHQUFHLDBCQUEwQixDQUFDO1FBQ2hELG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBQy9CLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBQy9CLDhCQUF5QixHQUFHLEtBQUssQ0FBQztRQUV6QyxtQkFBbUI7UUFDWix1QkFBa0IsR0FBRyxTQUFTLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUN4RCxxQkFBZ0IsR0FBRyxTQUFTLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNwRCxxQkFBZ0IsR0FBRyxTQUFTLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUVILENBQUM7SUFFekQsUUFBUTs7UUFDTixNQUFNLGVBQWUsZUFBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sMENBQUUsTUFBTSwwQ0FBRSxnQkFBZ0IsQ0FBQztRQUU1RSxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsYUFBZixlQUFlLHVCQUFmLGVBQWUsQ0FBRSxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxlQUFlLGFBQWYsZUFBZSx1QkFBZixlQUFlLENBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxhQUFhLEdBQUcsZUFBZSxhQUFmLGVBQWUsdUJBQWYsZUFBZSxDQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV6RCxJQUFJLENBQUMseUJBQXlCO1lBQzVCLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ3JFLENBQUM7OztZQTNCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtnQkFDckMsdW1CQUF5RDthQUMxRDs7O1lBTlEsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZlZGVyYXRlZElkZW50aXR5UHJvdmlkZXJzIH0gZnJvbSAnQGF3cy1hbXBsaWZ5L3VpJztcbmltcG9ydCB7IFN0YXRlTWFjaGluZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdGF0ZS1tYWNoaW5lLnNlcnZpY2UnO1xuaW1wb3J0IHsgdHJhbnNsYXRlIH0gZnJvbSAnQGF3cy1hbXBsaWZ5L3VpJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYW1wbGlmeS1mZWRlcmF0ZWQtc2lnbi1pbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hbXBsaWZ5LWZlZGVyYXRlZC1zaWduLWluLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgQW1wbGlmeUZlZGVyYXRlZFNpZ25JbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyBGZWRlcmF0ZWRQcm92aWRlcnMgPSBGZWRlcmF0ZWRJZGVudGl0eVByb3ZpZGVycztcbiAgcHVibGljIGluY2x1ZGVGYWNlYm9vazogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgaW5jbHVkZUdvb2dsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgaW5jbHVkZUFtYXpvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgc2hvdWxkU2hvd0ZlZGVyYXRlZFNpZ25JbiA9IGZhbHNlO1xuXG4gIC8vIHRyYW5zbGF0ZWQgdGV4dHNcbiAgcHVibGljIHNpZ25JbkZhY2Vib29rVGV4dCA9IHRyYW5zbGF0ZSgnU2lnbiBJbiB3aXRoIEZhY2Vib29rJyk7XG4gIHB1YmxpYyBzaWduSW5Hb29nbGVUZXh0ID0gdHJhbnNsYXRlKCdTaWduIEluIHdpdGggR29vZ2xlJyk7XG4gIHB1YmxpYyBzaWduSW5BbWF6b25UZXh0ID0gdHJhbnNsYXRlKCdTaWduIEluIHdpdGggQW1hem9uJyk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdGF0ZU1hY2hpbmU6IFN0YXRlTWFjaGluZVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgbG9naW5NZWNoYW5pc21zID0gdGhpcy5zdGF0ZU1hY2hpbmUuY29udGV4dD8uY29uZmlnPy5sb2dpbl9tZWNoYW5pc21zO1xuXG4gICAgdGhpcy5pbmNsdWRlRmFjZWJvb2sgPSBsb2dpbk1lY2hhbmlzbXM/LmluY2x1ZGVzKCdmYWNlYm9vaycpO1xuICAgIHRoaXMuaW5jbHVkZUdvb2dsZSA9IGxvZ2luTWVjaGFuaXNtcz8uaW5jbHVkZXMoJ2dvb2dsZScpO1xuICAgIHRoaXMuaW5jbHVkZUFtYXpvbiA9IGxvZ2luTWVjaGFuaXNtcz8uaW5jbHVkZXMoJ2FtYXpvbicpO1xuXG4gICAgdGhpcy5zaG91bGRTaG93RmVkZXJhdGVkU2lnbkluID1cbiAgICAgIHRoaXMuaW5jbHVkZUZhY2Vib29rIHx8IHRoaXMuaW5jbHVkZUdvb2dsZSB8fCB0aGlzLmluY2x1ZGVBbWF6b247XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,27 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { StateMachineService } from '../../services/state-machine.service';
3
+ export class AmplifyFederatedSignInButtonComponent {
4
+ constructor(stateMachine) {
5
+ this.stateMachine = stateMachine;
6
+ this.onClick = () => {
7
+ this.stateMachine.send({
8
+ type: 'FEDERATED_SIGN_IN',
9
+ data: { provider: this.provider },
10
+ });
11
+ };
12
+ }
13
+ }
14
+ AmplifyFederatedSignInButtonComponent.decorators = [
15
+ { type: Component, args: [{
16
+ selector: 'amplify-federated-sign-in-button',
17
+ template: "<button data-amplify-button (click)=\"onClick()\">{{ text }}</button>\n"
18
+ },] }
19
+ ];
20
+ AmplifyFederatedSignInButtonComponent.ctorParameters = () => [
21
+ { type: StateMachineService }
22
+ ];
23
+ AmplifyFederatedSignInButtonComponent.propDecorators = {
24
+ provider: [{ type: Input }],
25
+ text: [{ type: Input }]
26
+ };
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGlmeS1mZWRlcmF0ZWQtc2lnbi1pbi1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvYW1wbGlmeS1mZWRlcmF0ZWQtc2lnbi1pbi1idXR0b24vYW1wbGlmeS1mZWRlcmF0ZWQtc2lnbi1pbi1idXR0b24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBTTNFLE1BQU0sT0FBTyxxQ0FBcUM7SUFJaEQsWUFBb0IsWUFBaUM7UUFBakMsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBRXJELFlBQU8sR0FBRyxHQUFTLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ3JCLElBQUksRUFBRSxtQkFBbUI7Z0JBQ3pCLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO2FBQ2xDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztJQVBzRCxDQUFDOzs7WUFSMUQsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxrQ0FBa0M7Z0JBQzVDLG1GQUFnRTthQUNqRTs7O1lBTFEsbUJBQW1COzs7dUJBT3pCLEtBQUs7bUJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmVkZXJhdGVkSWRlbnRpdHlQcm92aWRlcnMgfSBmcm9tICdAYXdzLWFtcGxpZnkvdWknO1xuaW1wb3J0IHsgU3RhdGVNYWNoaW5lU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0YXRlLW1hY2hpbmUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FtcGxpZnktZmVkZXJhdGVkLXNpZ24taW4tYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FtcGxpZnktZmVkZXJhdGVkLXNpZ24taW4tYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgQW1wbGlmeUZlZGVyYXRlZFNpZ25JbkJ1dHRvbkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHByb3ZpZGVyOiBGZWRlcmF0ZWRJZGVudGl0eVByb3ZpZGVycztcbiAgQElucHV0KCkgdGV4dDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RhdGVNYWNoaW5lOiBTdGF0ZU1hY2hpbmVTZXJ2aWNlKSB7fVxuXG4gIG9uQ2xpY2sgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5zdGF0ZU1hY2hpbmUuc2VuZCh7XG4gICAgICB0eXBlOiAnRkVERVJBVEVEX1NJR05fSU4nLFxuICAgICAgZGF0YTogeyBwcm92aWRlcjogdGhpcy5wcm92aWRlciB9LFxuICAgIH0pO1xuICB9O1xufVxuIl19
@@ -0,0 +1,83 @@
1
+ import { Component, HostBinding, Input, } from '@angular/core';
2
+ import { Logger } from 'aws-amplify';
3
+ import { getActorContext, getActorState, } from '@aws-amplify/ui';
4
+ import { StateMachineService } from '../../services/state-machine.service';
5
+ import { AuthPropService } from '../../services/authenticator-context.service';
6
+ import { translate } from '@aws-amplify/ui';
7
+ const logger = new Logger('ForceNewPassword');
8
+ export class AmplifyForceNewPasswordComponent {
9
+ constructor(stateMachine, contextService) {
10
+ this.stateMachine = stateMachine;
11
+ this.contextService = contextService;
12
+ this.dataAttr = '';
13
+ this.headerText = translate('Reset your password');
14
+ this.customComponents = {};
15
+ this.remoteError = '';
16
+ this.isPending = false;
17
+ // translated texts
18
+ this.changePasswordText = translate('Change Password');
19
+ this.backToSignInText = translate('Back to Sign In');
20
+ }
21
+ ngOnInit() {
22
+ this.authSubscription = this.stateMachine.authService.subscribe((state) => this.onStateUpdate(state));
23
+ }
24
+ ngAfterContentInit() {
25
+ this.customComponents = this.contextService.customComponents;
26
+ }
27
+ ngOnDestroy() {
28
+ logger.log('sign in destroyed, unsubscribing from state machine...');
29
+ this.authSubscription.unsubscribe();
30
+ }
31
+ onStateUpdate(state) {
32
+ const actorState = getActorState(state);
33
+ this.remoteError = actorState.context.remoteError;
34
+ this.isPending = actorState.matches({
35
+ signUp: {
36
+ submission: 'idle',
37
+ },
38
+ });
39
+ }
40
+ get context() {
41
+ const { change, signIn, submit } = this.stateMachine.services;
42
+ const user = this.stateMachine.user;
43
+ const remoteError = this.remoteError;
44
+ return { change, remoteError, signIn, submit, user };
45
+ }
46
+ toSignIn() {
47
+ this.stateMachine.send('SIGN_IN');
48
+ }
49
+ onInput(event) {
50
+ event.preventDefault();
51
+ const { name, value } = event.target;
52
+ this.stateMachine.send({
53
+ type: 'CHANGE',
54
+ data: { name, value },
55
+ });
56
+ }
57
+ onSubmit(event) {
58
+ event.preventDefault();
59
+ // consider stateMachine directly providing actorState / actorContext
60
+ const state = this.stateMachine.authState;
61
+ const actorState = getActorContext(state);
62
+ const { formValues } = actorState;
63
+ this.stateMachine.send({
64
+ type: 'SUBMIT',
65
+ data: formValues,
66
+ });
67
+ }
68
+ }
69
+ AmplifyForceNewPasswordComponent.decorators = [
70
+ { type: Component, args: [{
71
+ selector: 'amplify-force-new-password',
72
+ template: "<!-- \n Define default contents here\n-->\n<ng-template #forceNewPasswordSubmitButton>\n <button data-amplify-button type=\"submit\">{{ changePasswordText }}</button>\n</ng-template>\n\n<ng-template #signInForm>\n <form data-amplify-form (submit)=\"onSubmit($event)\" (input)=\"onInput($event)\">\n <fieldset data-amplify-fieldset [disabled]=\"isPending\">\n <amplify-form-input\n name=\"password\"\n type=\"password\"\n autocomplete=\"new-password\"\n ></amplify-form-input>\n\n <amplify-form-input\n name=\"confirm_password\"\n label=\"Confirm Password\"\n type=\"password\"\n autocomplete=\"new-password\"\n ></amplify-form-input>\n\n <div data-amplify-footer>\n <button type=\"button\" (click)=\"toSignIn()\">\n {{ backToSignInText }}\n </button>\n <ng-container\n [ngTemplateOutlet]=\"\n customComponents.forceNewPasswordSubmitButton ||\n forceNewPasswordSubmitButton\n \"\n [ngTemplateOutletContext]=\"context\"\n >\n </ng-container>\n </div>\n </fieldset>\n\n <amplify-error *ngIf=\"remoteError\">\n {{ remoteError }}\n </amplify-error>\n </form>\n</ng-template>\n\n<!-- \n Render sign in component\n-->\n<div data-amplify-container>\n <h2 data-amplify-header>{{ this.headerText }}</h2>\n <ng-container\n [ngTemplateOutlet]=\"customComponents.signInForm || signInForm\"\n [ngTemplateOutletContext]=\"context\"\n >\n </ng-container>\n</div>\n"
73
+ },] }
74
+ ];
75
+ AmplifyForceNewPasswordComponent.ctorParameters = () => [
76
+ { type: StateMachineService },
77
+ { type: AuthPropService }
78
+ ];
79
+ AmplifyForceNewPasswordComponent.propDecorators = {
80
+ dataAttr: [{ type: HostBinding, args: ['attr.data-amplify-authenticator-forcenewpassword',] }],
81
+ headerText: [{ type: Input }]
82
+ };
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGlmeS1mb3JjZS1uZXctcGFzc3dvcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvYW1wbGlmeS1mb3JjZS1uZXctcGFzc3dvcmQvYW1wbGlmeS1mb3JjZS1uZXctcGFzc3dvcmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssR0FJTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFFTCxlQUFlLEVBQ2YsYUFBYSxHQUdkLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBTTlDLE1BQU0sT0FBTyxnQ0FBZ0M7SUFpQjNDLFlBQ1UsWUFBaUMsRUFDakMsY0FBK0I7UUFEL0IsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLG1CQUFjLEdBQWQsY0FBYyxDQUFpQjtRQWZ6QyxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ0UsZUFBVSxHQUFHLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRXZELHFCQUFnQixHQUFxQyxFQUFFLENBQUM7UUFDeEQsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUl6QixtQkFBbUI7UUFDWix1QkFBa0IsR0FBRyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNsRCxxQkFBZ0IsR0FBRyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUtwRCxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUN4RSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUMxQixDQUFDO0lBQ0osQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvRCxDQUFDO0lBRUQsV0FBVztRQUNULE1BQU0sQ0FBQyxHQUFHLENBQUMsd0RBQXdELENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUF1QjtRQUNuQyxNQUFNLFVBQVUsR0FBZ0IsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDbEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDO1lBQ2xDLE1BQU0sRUFBRTtnQkFDTixVQUFVLEVBQUUsTUFBTTthQUNuQjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFDOUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFDcEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNyQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFZO1FBQ2xCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFxQixLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQ3JCLElBQUksRUFBRSxRQUFRO1lBQ2QsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTtTQUN0QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVk7UUFDbkIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLHFFQUFxRTtRQUNyRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQztRQUMxQyxNQUFNLFVBQVUsR0FBa0IsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pELE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxVQUFVLENBQUM7UUFFbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDckIsSUFBSSxFQUFFLFFBQVE7WUFDZCxJQUFJLEVBQUUsVUFBVTtTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDOzs7WUFsRkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSw0QkFBNEI7Z0JBQ3RDLDRoREFBMEQ7YUFDM0Q7OztZQVRRLG1CQUFtQjtZQUNuQixlQUFlOzs7dUJBWXJCLFdBQVcsU0FBQyxrREFBa0Q7eUJBRTlELEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDb21wb25lbnQsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3hzdGF0ZSc7XG5pbXBvcnQgeyBMb2dnZXIgfSBmcm9tICdhd3MtYW1wbGlmeSc7XG5pbXBvcnQge1xuICBBdXRoTWFjaGluZVN0YXRlLFxuICBnZXRBY3RvckNvbnRleHQsXG4gIGdldEFjdG9yU3RhdGUsXG4gIFNpZ25JbkNvbnRleHQsXG4gIFNpZ25JblN0YXRlLFxufSBmcm9tICdAYXdzLWFtcGxpZnkvdWknO1xuaW1wb3J0IHsgU3RhdGVNYWNoaW5lU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0YXRlLW1hY2hpbmUuc2VydmljZSc7XG5pbXBvcnQgeyBBdXRoUHJvcFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoZW50aWNhdG9yLWNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyB0cmFuc2xhdGUgfSBmcm9tICdAYXdzLWFtcGxpZnkvdWknO1xuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKCdGb3JjZU5ld1Bhc3N3b3JkJyk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FtcGxpZnktZm9yY2UtbmV3LXBhc3N3b3JkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FtcGxpZnktZm9yY2UtbmV3LXBhc3N3b3JkLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgQW1wbGlmeUZvcmNlTmV3UGFzc3dvcmRDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveVxue1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1hbXBsaWZ5LWF1dGhlbnRpY2F0b3ItZm9yY2VuZXdwYXNzd29yZCcpXG4gIGRhdGFBdHRyID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBoZWFkZXJUZXh0ID0gdHJhbnNsYXRlKCdSZXNldCB5b3VyIHBhc3N3b3JkJyk7XG5cbiAgcHVibGljIGN1c3RvbUNvbXBvbmVudHM6IFJlY29yZDxzdHJpbmcsIFRlbXBsYXRlUmVmPGFueT4+ID0ge307XG4gIHB1YmxpYyByZW1vdGVFcnJvciA9ICcnO1xuICBwdWJsaWMgaXNQZW5kaW5nID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBhdXRoU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgLy8gdHJhbnNsYXRlZCB0ZXh0c1xuICBwdWJsaWMgY2hhbmdlUGFzc3dvcmRUZXh0ID0gdHJhbnNsYXRlKCdDaGFuZ2UgUGFzc3dvcmQnKTtcbiAgcHVibGljIGJhY2tUb1NpZ25JblRleHQgPSB0cmFuc2xhdGUoJ0JhY2sgdG8gU2lnbiBJbicpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RhdGVNYWNoaW5lOiBTdGF0ZU1hY2hpbmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IEF1dGhQcm9wU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hdXRoU3Vic2NyaXB0aW9uID0gdGhpcy5zdGF0ZU1hY2hpbmUuYXV0aFNlcnZpY2Uuc3Vic2NyaWJlKChzdGF0ZSkgPT5cbiAgICAgIHRoaXMub25TdGF0ZVVwZGF0ZShzdGF0ZSlcbiAgICApO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY3VzdG9tQ29tcG9uZW50cyA9IHRoaXMuY29udGV4dFNlcnZpY2UuY3VzdG9tQ29tcG9uZW50cztcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGxvZ2dlci5sb2coJ3NpZ24gaW4gZGVzdHJveWVkLCB1bnN1YnNjcmliaW5nIGZyb20gc3RhdGUgbWFjaGluZS4uLicpO1xuICAgIHRoaXMuYXV0aFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgb25TdGF0ZVVwZGF0ZShzdGF0ZTogQXV0aE1hY2hpbmVTdGF0ZSk6IHZvaWQge1xuICAgIGNvbnN0IGFjdG9yU3RhdGU6IFNpZ25JblN0YXRlID0gZ2V0QWN0b3JTdGF0ZShzdGF0ZSk7XG4gICAgdGhpcy5yZW1vdGVFcnJvciA9IGFjdG9yU3RhdGUuY29udGV4dC5yZW1vdGVFcnJvcjtcbiAgICB0aGlzLmlzUGVuZGluZyA9IGFjdG9yU3RhdGUubWF0Y2hlcyh7XG4gICAgICBzaWduVXA6IHtcbiAgICAgICAgc3VibWlzc2lvbjogJ2lkbGUnLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29udGV4dCgpIHtcbiAgICBjb25zdCB7IGNoYW5nZSwgc2lnbkluLCBzdWJtaXQgfSA9IHRoaXMuc3RhdGVNYWNoaW5lLnNlcnZpY2VzO1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLnN0YXRlTWFjaGluZS51c2VyO1xuICAgIGNvbnN0IHJlbW90ZUVycm9yID0gdGhpcy5yZW1vdGVFcnJvcjtcbiAgICByZXR1cm4geyBjaGFuZ2UsIHJlbW90ZUVycm9yLCBzaWduSW4sIHN1Ym1pdCwgdXNlciB9O1xuICB9XG5cbiAgdG9TaWduSW4oKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZU1hY2hpbmUuc2VuZCgnU0lHTl9JTicpO1xuICB9XG5cbiAgb25JbnB1dChldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IDxIVE1MSW5wdXRFbGVtZW50PmV2ZW50LnRhcmdldDtcbiAgICB0aGlzLnN0YXRlTWFjaGluZS5zZW5kKHtcbiAgICAgIHR5cGU6ICdDSEFOR0UnLFxuICAgICAgZGF0YTogeyBuYW1lLCB2YWx1ZSB9LFxuICAgIH0pO1xuICB9XG5cbiAgb25TdWJtaXQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAvLyBjb25zaWRlciBzdGF0ZU1hY2hpbmUgZGlyZWN0bHkgcHJvdmlkaW5nIGFjdG9yU3RhdGUgLyBhY3RvckNvbnRleHRcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVNYWNoaW5lLmF1dGhTdGF0ZTtcbiAgICBjb25zdCBhY3RvclN0YXRlOiBTaWduSW5Db250ZXh0ID0gZ2V0QWN0b3JDb250ZXh0KHN0YXRlKTtcbiAgICBjb25zdCB7IGZvcm1WYWx1ZXMgfSA9IGFjdG9yU3RhdGU7XG5cbiAgICB0aGlzLnN0YXRlTWFjaGluZS5zZW5kKHtcbiAgICAgIHR5cGU6ICdTVUJNSVQnLFxuICAgICAgZGF0YTogZm9ybVZhbHVlcyxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,68 @@
1
+ import { Component, HostBinding, Input, } from '@angular/core';
2
+ import { getActorState } from '@aws-amplify/ui';
3
+ import { AuthPropService } from '../../services/authenticator-context.service';
4
+ import { StateMachineService } from '../../services/state-machine.service';
5
+ import { translate } from '@aws-amplify/ui';
6
+ export class AmplifyResetPasswordComponent {
7
+ constructor(stateMachine, contextService) {
8
+ this.stateMachine = stateMachine;
9
+ this.contextService = contextService;
10
+ this.dataAttr = '';
11
+ this.headerText = translate('Reset your password');
12
+ this.customComponents = {};
13
+ this.remoteError = '';
14
+ this.isPending = false;
15
+ // translated texts
16
+ this.sendCodeText = translate('Send Code');
17
+ this.backToSignInText = translate('Back to Sign In');
18
+ }
19
+ ngOnInit() {
20
+ this.authSubscription = this.stateMachine.authService.subscribe((state) => this.onStateUpdate(state));
21
+ }
22
+ ngAfterContentInit() {
23
+ this.customComponents = this.contextService.customComponents;
24
+ }
25
+ ngOnDestroy() {
26
+ this.authSubscription.unsubscribe();
27
+ }
28
+ onStateUpdate(state) {
29
+ const actorState = getActorState(state);
30
+ this.remoteError = actorState.context.remoteError;
31
+ this.isPending = !actorState.matches('resetPassword.edit');
32
+ }
33
+ get context() {
34
+ const { change, signIn, submit } = this.stateMachine.services;
35
+ const remoteError = this.remoteError;
36
+ return { change, remoteError, signIn, submit };
37
+ }
38
+ toSignIn() {
39
+ this.stateMachine.send('SIGN_IN');
40
+ }
41
+ onInput(event) {
42
+ event.preventDefault();
43
+ const { name, value } = event.target;
44
+ this.stateMachine.send({
45
+ type: 'CHANGE',
46
+ data: { name, value },
47
+ });
48
+ }
49
+ onSubmit(event) {
50
+ event.preventDefault();
51
+ this.stateMachine.send('SUBMIT');
52
+ }
53
+ }
54
+ AmplifyResetPasswordComponent.decorators = [
55
+ { type: Component, args: [{
56
+ selector: 'amplify-reset-password',
57
+ template: "<!-- \n Define default contents here\n-->\n<ng-template #resetPasswordSubmitButton>\n <button data-amplify-button type=\"submit\">{{ sendCodeText }}</button>\n</ng-template>\n\n<ng-template #resetPasswordFooter>\n <div data-amplify-footer>\n <button type=\"button\" (click)=\"toSignIn()\">{{ backToSignInText }}</button>\n <ng-container\n [ngTemplateOutlet]=\"\n customComponents.resetPasswordSubmitButton || resetPasswordSubmitButton\n \"\n [ngTemplateOutletContext]=\"context\"\n >\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #resetPasswordForm>\n <form data-amplify-form (submit)=\"onSubmit($event)\" (input)=\"onInput($event)\">\n <fieldset data-amplify-fieldset [disabled]=\"isPending\">\n <amplify-form-input\n name=\"username\"\n type=\"username\"\n autocomplete=\"username\"\n ></amplify-form-input>\n <ng-container\n [ngTemplateOutlet]=\"\n customComponents.resetPasswordFooter || resetPasswordFooter\n \"\n [ngTemplateOutletContext]=\"context\"\n ></ng-container>\n </fieldset>\n\n <amplify-error *ngIf=\"remoteError\">\n {{ remoteError }}\n </amplify-error>\n </form>\n</ng-template>\n\n<!-- \n Render reset passsword component\n-->\n<div data-amplify-container>\n <h2 data-amplify-header>{{ this.headerText }}</h2>\n <ng-container\n [ngTemplateOutlet]=\"customComponents.resetPasswordForm || resetPasswordForm\"\n [ngTemplateOutletContext]=\"context\"\n >\n </ng-container>\n</div>\n"
58
+ },] }
59
+ ];
60
+ AmplifyResetPasswordComponent.ctorParameters = () => [
61
+ { type: StateMachineService },
62
+ { type: AuthPropService }
63
+ ];
64
+ AmplifyResetPasswordComponent.propDecorators = {
65
+ dataAttr: [{ type: HostBinding, args: ['attr.data-amplify-authenticator-resetPassword',] }],
66
+ headerText: [{ type: Input }]
67
+ };
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGlmeS1yZXNldC1wYXNzd29yZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9hbXBsaWZ5LXJlc2V0LXBhc3N3b3JkL2FtcGxpZnktcmVzZXQtcGFzc3dvcmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssR0FJTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW9CLGFBQWEsRUFBZSxNQUFNLGlCQUFpQixDQUFDO0FBRS9FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFNNUMsTUFBTSxPQUFPLDZCQUE2QjtJQWdCeEMsWUFDVSxZQUFpQyxFQUNqQyxjQUErQjtRQUQvQixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQWlCO1FBZnFCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDNUQsZUFBVSxHQUFHLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRXZELHFCQUFnQixHQUFxQyxFQUFFLENBQUM7UUFDeEQsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUl6QixtQkFBbUI7UUFDWixpQkFBWSxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN0QyxxQkFBZ0IsR0FBRyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUtwRCxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUN4RSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUMxQixDQUFDO0lBQ0osQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvRCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQXVCO1FBQ25DLE1BQU0sVUFBVSxHQUFnQixhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUNsRCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFDOUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNyQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVk7UUFDbEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQXFCLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDdkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDckIsSUFBSSxFQUFFLFFBQVE7WUFDZCxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO1NBQ3RCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBWTtRQUNuQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkMsQ0FBQzs7O1lBbkVGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsd0JBQXdCO2dCQUNsQyx5aERBQXNEO2FBQ3ZEOzs7WUFOUSxtQkFBbUI7WUFEbkIsZUFBZTs7O3VCQVdyQixXQUFXLFNBQUMsK0NBQStDO3lCQUMzRCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRoTWFjaGluZVN0YXRlLCBnZXRBY3RvclN0YXRlLCBTaWduSW5TdGF0ZSB9IGZyb20gJ0Bhd3MtYW1wbGlmeS91aSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICd4c3RhdGUnO1xuaW1wb3J0IHsgQXV0aFByb3BTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aGVudGljYXRvci1jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RhdGVNYWNoaW5lU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0YXRlLW1hY2hpbmUuc2VydmljZSc7XG5pbXBvcnQgeyB0cmFuc2xhdGUgfSBmcm9tICdAYXdzLWFtcGxpZnkvdWknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhbXBsaWZ5LXJlc2V0LXBhc3N3b3JkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FtcGxpZnktcmVzZXQtcGFzc3dvcmQuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBBbXBsaWZ5UmVzZXRQYXNzd29yZENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95XG57XG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLWFtcGxpZnktYXV0aGVudGljYXRvci1yZXNldFBhc3N3b3JkJykgZGF0YUF0dHIgPSAnJztcbiAgQElucHV0KCkgcHVibGljIGhlYWRlclRleHQgPSB0cmFuc2xhdGUoJ1Jlc2V0IHlvdXIgcGFzc3dvcmQnKTtcblxuICBwdWJsaWMgY3VzdG9tQ29tcG9uZW50czogUmVjb3JkPHN0cmluZywgVGVtcGxhdGVSZWY8YW55Pj4gPSB7fTtcbiAgcHVibGljIHJlbW90ZUVycm9yID0gJyc7XG4gIHB1YmxpYyBpc1BlbmRpbmcgPSBmYWxzZTtcblxuICBwcml2YXRlIGF1dGhTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAvLyB0cmFuc2xhdGVkIHRleHRzXG4gIHB1YmxpYyBzZW5kQ29kZVRleHQgPSB0cmFuc2xhdGUoJ1NlbmQgQ29kZScpO1xuICBwdWJsaWMgYmFja1RvU2lnbkluVGV4dCA9IHRyYW5zbGF0ZSgnQmFjayB0byBTaWduIEluJyk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdGF0ZU1hY2hpbmU6IFN0YXRlTWFjaGluZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQXV0aFByb3BTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmF1dGhTdWJzY3JpcHRpb24gPSB0aGlzLnN0YXRlTWFjaGluZS5hdXRoU2VydmljZS5zdWJzY3JpYmUoKHN0YXRlKSA9PlxuICAgICAgdGhpcy5vblN0YXRlVXBkYXRlKHN0YXRlKVxuICAgICk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy5jdXN0b21Db21wb25lbnRzID0gdGhpcy5jb250ZXh0U2VydmljZS5jdXN0b21Db21wb25lbnRzO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5hdXRoU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBvblN0YXRlVXBkYXRlKHN0YXRlOiBBdXRoTWFjaGluZVN0YXRlKTogdm9pZCB7XG4gICAgY29uc3QgYWN0b3JTdGF0ZTogU2lnbkluU3RhdGUgPSBnZXRBY3RvclN0YXRlKHN0YXRlKTtcbiAgICB0aGlzLnJlbW90ZUVycm9yID0gYWN0b3JTdGF0ZS5jb250ZXh0LnJlbW90ZUVycm9yO1xuICAgIHRoaXMuaXNQZW5kaW5nID0gIWFjdG9yU3RhdGUubWF0Y2hlcygncmVzZXRQYXNzd29yZC5lZGl0Jyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbnRleHQoKSB7XG4gICAgY29uc3QgeyBjaGFuZ2UsIHNpZ25Jbiwgc3VibWl0IH0gPSB0aGlzLnN0YXRlTWFjaGluZS5zZXJ2aWNlcztcbiAgICBjb25zdCByZW1vdGVFcnJvciA9IHRoaXMucmVtb3RlRXJyb3I7XG4gICAgcmV0dXJuIHsgY2hhbmdlLCByZW1vdGVFcnJvciwgc2lnbkluLCBzdWJtaXQgfTtcbiAgfVxuXG4gIHRvU2lnbkluKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVNYWNoaW5lLnNlbmQoJ1NJR05fSU4nKTtcbiAgfVxuXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCB7IG5hbWUsIHZhbHVlIH0gPSA8SFRNTElucHV0RWxlbWVudD5ldmVudC50YXJnZXQ7XG4gICAgdGhpcy5zdGF0ZU1hY2hpbmUuc2VuZCh7XG4gICAgICB0eXBlOiAnQ0hBTkdFJyxcbiAgICAgIGRhdGE6IHsgbmFtZSwgdmFsdWUgfSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uU3VibWl0KGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5zdGF0ZU1hY2hpbmUuc2VuZCgnU1VCTUlUJyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,100 @@
1
+ import { __awaiter } from "tslib";
2
+ import { Component, HostBinding, } from '@angular/core';
3
+ import QRCode from 'qrcode';
4
+ import { Auth, Logger } from 'aws-amplify';
5
+ import { getActorContext, getActorState, } from '@aws-amplify/ui';
6
+ import { StateMachineService } from '../../services/state-machine.service';
7
+ import { AuthPropService } from '../../services/authenticator-context.service';
8
+ import { translate } from '@aws-amplify/ui';
9
+ const logger = new Logger('SetupTotp');
10
+ export class AmplifySetupTotpComponent {
11
+ constructor(stateMachine, contextService) {
12
+ this.stateMachine = stateMachine;
13
+ this.contextService = contextService;
14
+ this.customComponents = {};
15
+ this.remoteError = '';
16
+ this.isPending = false;
17
+ this.headerText = translate('Setup TOTP');
18
+ this.qrCodeSource = '';
19
+ // translated texts
20
+ this.backToSignInText = translate('Back to Sign In');
21
+ this.confirmText = translate('Confirm');
22
+ }
23
+ ngOnInit() {
24
+ this.authSubscription = this.stateMachine.authService.subscribe((state) => {
25
+ this.onStateUpdate(state);
26
+ });
27
+ this.generateQRCode();
28
+ }
29
+ ngAfterContentInit() {
30
+ this.customComponents = this.contextService.customComponents;
31
+ }
32
+ ngOnDestroy() {
33
+ this.authSubscription.unsubscribe();
34
+ }
35
+ onStateUpdate(state) {
36
+ const actorState = getActorState(state);
37
+ this.remoteError = actorState.context.remoteError;
38
+ this.isPending = !actorState.matches('setupTOTP.edit');
39
+ }
40
+ get context() {
41
+ const { change, submit } = this.stateMachine.services;
42
+ const remoteError = this.remoteError;
43
+ const user = this.stateMachine.user;
44
+ return { change, remoteError, submit, user };
45
+ }
46
+ generateQRCode() {
47
+ var _a;
48
+ return __awaiter(this, void 0, void 0, function* () {
49
+ // TODO: This should be handled in core.
50
+ const state = this.stateMachine.authState;
51
+ const actorContext = getActorContext(state);
52
+ const { user } = actorContext;
53
+ try {
54
+ const secretKey = yield Auth.setupTOTP(user);
55
+ const issuer = 'AWSCognito';
56
+ const totpCode = `otpauth://totp/${issuer}:${user.username}?secret=${secretKey}&issuer=${issuer}`;
57
+ logger.info('totp code was generated:', totpCode);
58
+ this.qrCodeSource = yield QRCode.toDataURL(totpCode);
59
+ }
60
+ catch (err) {
61
+ this.remoteError = (_a = err.message) !== null && _a !== void 0 ? _a : err;
62
+ logger.error(err);
63
+ }
64
+ });
65
+ }
66
+ onInput(event) {
67
+ event.preventDefault();
68
+ const { name, value } = event.target;
69
+ this.stateMachine.send({
70
+ type: 'CHANGE',
71
+ data: { name, value },
72
+ });
73
+ }
74
+ onSubmit(event) {
75
+ event.preventDefault();
76
+ // TODO: handle form data within the state machine
77
+ const formData = new FormData(event.target);
78
+ this.stateMachine.send({
79
+ type: 'SUBMIT',
80
+ data: Object.fromEntries(formData),
81
+ });
82
+ }
83
+ toSignIn() {
84
+ this.stateMachine.send('SIGN_IN');
85
+ }
86
+ }
87
+ AmplifySetupTotpComponent.decorators = [
88
+ { type: Component, args: [{
89
+ selector: 'amplify-setup-totp',
90
+ template: "<!-- \n Define default contents here\n-->\n<ng-template #setupTotpButton>\n <button data-amplify-button type=\"submit\">{{ confirmText }}</button>\n</ng-template>\n\n<ng-template #setupTotpForm>\n <form data-amplify-form (submit)=\"onSubmit($event)\" (input)=\"onInput($event)\">\n <fieldset data-amplify-fieldset [disabled]=\"isPending\">\n <p *ngIf=\"!qrCodeSource\">Loading...</p>\n <img *ngIf=\"qrCodeSource\" [src]=\"qrCodeSource\" alt=\"qr code\" />\n <amplify-form-input\n name=\"confirmation_code\"\n type=\"number\"\n autocomplete=\"one-time-code\"\n ></amplify-form-input>\n\n <div data-amplify-footer>\n <button (click)=\"toSignIn()\">{{ backToSignInText }}</button>\n <ng-container\n [ngTemplateOutlet]=\"\n customComponents.setupTotpButton || setupTotpButton\n \"\n [ngTemplateOutletContext]=\"context\"\n >\n </ng-container>\n </div>\n </fieldset>\n\n <amplify-error *ngIf=\"remoteError\">\n {{ remoteError }}\n </amplify-error>\n </form>\n</ng-template>\n\n<!-- \n Render sign in component\n-->\n<div data-amplify-container>\n <h2 data-amplify-header>{{ this.headerText }}</h2>\n <ng-container\n [ngTemplateOutlet]=\"customComponents.setupTotpForm || setupTotpForm\"\n [ngTemplateOutletContext]=\"context\"\n >\n </ng-container>\n</div>\n"
91
+ },] }
92
+ ];
93
+ AmplifySetupTotpComponent.ctorParameters = () => [
94
+ { type: StateMachineService },
95
+ { type: AuthPropService }
96
+ ];
97
+ AmplifySetupTotpComponent.propDecorators = {
98
+ customComponents: [{ type: HostBinding, args: ['attr.data-amplify-authenticator-setup-totp',] }]
99
+ };
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGlmeS1zZXR1cC10b3RwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2FtcGxpZnktc2V0dXAtdG90cC9hbXBsaWZ5LXNldHVwLXRvdHAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFdBQVcsR0FJWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0MsT0FBTyxFQUVMLGVBQWUsRUFDZixhQUFhLEdBR2QsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTVDLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBTXZDLE1BQU0sT0FBTyx5QkFBeUI7SUFnQnBDLFlBQ1UsWUFBaUMsRUFDakMsY0FBK0I7UUFEL0IsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLG1CQUFjLEdBQWQsY0FBYyxDQUFpQjtRQWRsQyxxQkFBZ0IsR0FBcUMsRUFBRSxDQUFDO1FBQ3hELGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsZUFBVSxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNyQyxpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUl6QixtQkFBbUI7UUFDWixxQkFBZ0IsR0FBRyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQztR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SyxDQUFDLE1BQXlCLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztZQUNyQixJQUFJLEVBQUUsUUFBUTtZQUNkLElBQUksRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQztTQUNuQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7OztZQTVGRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsczRDQUFrRDthQUNuRDs7O1lBVFEsbUJBQW1CO1lBQ25CLGVBQWU7OzsrQkFZckIsV0FBVyxTQUFDLDRDQUE0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICd4c3RhdGUnO1xuaW1wb3J0IFFSQ29kZSBmcm9tICdxcmNvZGUnO1xuaW1wb3J0IHsgQXV0aCwgTG9nZ2VyIH0gZnJvbSAnYXdzLWFtcGxpZnknO1xuaW1wb3J0IHtcbiAgQXV0aE1hY2hpbmVTdGF0ZSxcbiAgZ2V0QWN0b3JDb250ZXh0LFxuICBnZXRBY3RvclN0YXRlLFxuICBTaWduSW5Db250ZXh0LFxuICBTaWduSW5TdGF0ZSxcbn0gZnJvbSAnQGF3cy1hbXBsaWZ5L3VpJztcbmltcG9ydCB7IFN0YXRlTWFjaGluZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdGF0ZS1tYWNoaW5lLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aFByb3BTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aGVudGljYXRvci1jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgdHJhbnNsYXRlIH0gZnJvbSAnQGF3cy1hbXBsaWZ5L3VpJztcblxuY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcignU2V0dXBUb3RwJyk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FtcGxpZnktc2V0dXAtdG90cCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hbXBsaWZ5LXNldHVwLXRvdHAuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBBbXBsaWZ5U2V0dXBUb3RwQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3lcbntcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtYW1wbGlmeS1hdXRoZW50aWNhdG9yLXNldHVwLXRvdHAnKVxuICBwdWJsaWMgY3VzdG9tQ29tcG9uZW50czogUmVjb3JkPHN0cmluZywgVGVtcGxhdGVSZWY8YW55Pj4gPSB7fTtcbiAgcHVibGljIHJlbW90ZUVycm9yID0gJyc7XG4gIHB1YmxpYyBpc1BlbmRpbmcgPSBmYWxzZTtcbiAgcHVibGljIGhlYWRlclRleHQgPSB0cmFuc2xhdGUoJ1NldHVwIFRPVFAnKTtcbiAgcHVibGljIHFyQ29kZVNvdXJjZSA9ICcnO1xuXG4gIHByaXZhdGUgYXV0aFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIC8vIHRyYW5zbGF0ZWQgdGV4dHNcbiAgcHVibGljIGJhY2tUb1NpZ25JblRleHQgPSB0cmFuc2xhdGUoJ0JhY2sgdG8gU2lnbiBJbicpO1xuICBwdWJsaWMgY29uZmlybVRleHQgPSB0cmFuc2xhdGUoJ0NvbmZpcm0nKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0YXRlTWFjaGluZTogU3RhdGVNYWNoaW5lU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRleHRTZXJ2aWNlOiBBdXRoUHJvcFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYXV0aFN1YnNjcmlwdGlvbiA9IHRoaXMuc3RhdGVNYWNoaW5lLmF1dGhTZXJ2aWNlLnN1YnNjcmliZSgoc3RhdGUpID0+IHtcbiAgICAgIHRoaXMub25TdGF0ZVVwZGF0ZShzdGF0ZSk7XG4gICAgfSk7XG4gICAgdGhpcy5nZW5lcmF0ZVFSQ29kZSgpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY3VzdG9tQ29tcG9uZW50cyA9IHRoaXMuY29udGV4dFNlcnZpY2UuY3VzdG9tQ29tcG9uZW50cztcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuYXV0aFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgb25TdGF0ZVVwZGF0ZShzdGF0ZTogQXV0aE1hY2hpbmVTdGF0ZSk6IHZvaWQge1xuICAgIGNvbnN0IGFjdG9yU3RhdGU6IFNpZ25JblN0YXRlID0gZ2V0QWN0b3JTdGF0ZShzdGF0ZSk7XG4gICAgdGhpcy5yZW1vdGVFcnJvciA9IGFjdG9yU3RhdGUuY29udGV4dC5yZW1vdGVFcnJvcjtcbiAgICB0aGlzLmlzUGVuZGluZyA9ICFhY3RvclN0YXRlLm1hdGNoZXMoJ3NldHVwVE9UUC5lZGl0Jyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbnRleHQoKSB7XG4gICAgY29uc3QgeyBjaGFuZ2UsIHN1Ym1pdCB9ID0gdGhpcy5zdGF0ZU1hY2hpbmUuc2VydmljZXM7XG4gICAgY29uc3QgcmVtb3RlRXJyb3IgPSB0aGlzLnJlbW90ZUVycm9yO1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLnN0YXRlTWFjaGluZS51c2VyO1xuICAgIHJldHVybiB7IGNoYW5nZSwgcmVtb3RlRXJyb3IsIHN1Ym1pdCwgdXNlciB9O1xuICB9XG5cbiAgYXN5bmMgZ2VuZXJhdGVRUkNvZGUoKSB7XG4gICAgLy8gVE9ETzogVGhpcyBzaG91bGQgYmUgaGFuZGxlZCBpbiBjb3JlLlxuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZU1hY2hpbmUuYXV0aFN0YXRlO1xuICAgIGNvbnN0IGFjdG9yQ29udGV4dDogU2lnbkluQ29udGV4dCA9IGdldEFjdG9yQ29udGV4dChzdGF0ZSk7XG4gICAgY29uc3QgeyB1c2VyIH0gPSBhY3RvckNvbnRleHQ7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHNlY3JldEtleSA9IGF3YWl0IEF1dGguc2V0dXBUT1RQKHVzZXIpO1xuICAgICAgY29uc3QgaXNzdWVyID0gJ0FXU0NvZ25pdG8nO1xuICAgICAgY29uc3QgdG90cENvZGUgPSBgb3RwYXV0aDovL3RvdHAvJHtpc3N1ZXJ9OiR7dXNlci51c2VybmFtZX0/c2VjcmV0PSR7c2VjcmV0S2V5fSZpc3N1ZXI9JHtpc3N1ZXJ9YDtcblxuICAgICAgbG9nZ2VyLmluZm8oJ3RvdHAgY29kZSB3YXMgZ2VuZXJhdGVkOicsIHRvdHBDb2RlKTtcbiAgICAgIHRoaXMucXJDb2RlU291cmNlID0gYXdhaXQgUVJDb2RlLnRvRGF0YVVSTCh0b3RwQ29kZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLnJlbW90ZUVycm9yID0gZXJyLm1lc3NhZ2UgPz8gZXJyO1xuICAgICAgbG9nZ2VyLmVycm9yKGVycik7XG4gICAgfVxuICB9XG5cbiAgb25JbnB1dChldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IDxIVE1MSW5wdXRFbGVtZW50PmV2ZW50LnRhcmdldDtcbiAgICB0aGlzLnN0YXRlTWFjaGluZS5zZW5kKHtcbiAgICAgIHR5cGU6ICdDSEFOR0UnLFxuICAgICAgZGF0YTogeyBuYW1lLCB2YWx1ZSB9LFxuICAgIH0pO1xuICB9XG5cbiAgb25TdWJtaXQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAvLyBUT0RPOiBoYW5kbGUgZm9ybSBkYXRhIHdpdGhpbiB0aGUgc3RhdGUgbWFjaGluZVxuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKGV2ZW50LnRhcmdldCBhcyBIVE1MRm9ybUVsZW1lbnQpO1xuICAgIHRoaXMuc3RhdGVNYWNoaW5lLnNlbmQoe1xuICAgICAgdHlwZTogJ1NVQk1JVCcsXG4gICAgICBkYXRhOiBPYmplY3QuZnJvbUVudHJpZXMoZm9ybURhdGEpLFxuICAgIH0pO1xuICB9XG5cbiAgdG9TaWduSW4oKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZU1hY2hpbmUuc2VuZCgnU0lHTl9JTicpO1xuICB9XG59XG4iXX0=