@gahojin-inc/amplify-auth-hooks 2026.4.0 → 2026.4.4

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.
@@ -2,9 +2,8 @@ import { HubCapsule } from "@aws-amplify/core";
2
2
  import { ActorRefFrom } from "xstate";
3
3
  import { AuthUser, CodeDeliveryDetails, ConfirmResetPasswordInput, ConfirmSignInInput, ConfirmSignInOutput, ConfirmSignUpInput, ConfirmSignUpOutput, ConfirmUserAttributeInput, FetchUserAttributesOutput, ResendSignUpCodeInput, ResendSignUpCodeOutput, ResetPasswordInput, ResetPasswordOutput, SendUserAttributeVerificationCodeInput, SendUserAttributeVerificationCodeOutput, SignInInput, SignInOutput, SignInWithRedirectInput, SignOutInput, SignUpInput, SignUpOutput, UserAttributeKey } from "@aws-amplify/auth";
4
4
 
5
- //#region src/machines/types.d.ts
6
- type AuthMFAType = "SMS" | "TOTP" | "EMAIL";
7
- type AuthAllowedMFATypes = AuthMFAType[];
5
+ //#region src/types/user.d.ts
6
+ /** Federated IDPs that Authenticator supports */
8
7
  declare const FederatedIdentityProviders: {
9
8
  readonly Apple: "Apple";
10
9
  readonly Amazon: "Amazon";
@@ -15,8 +14,13 @@ type FederatedIdentityProviders = (typeof FederatedIdentityProviders)[keyof type
15
14
  /**
16
15
  * Cognito user contact method types that have not been verified as valid
17
16
  */
18
- declare const unverifiedContactMethodTypes: readonly ["email", "phone_number"];
19
- type UnverifiedContactMethodType = (typeof unverifiedContactMethodTypes)[number];
17
+ declare const UnverifiedContactMethodTypes: readonly ["email", "phone_number"];
18
+ type UnverifiedContactMethodType = (typeof UnverifiedContactMethodTypes)[number];
19
+ type UnverifiedUserAttributes = Partial<Record<UnverifiedContactMethodType, string>>;
20
+ //#endregion
21
+ //#region src/types/machines.d.ts
22
+ type AuthMFAType = "SMS" | "TOTP" | "EMAIL";
23
+ type AuthAllowedMFATypes = AuthMFAType[];
20
24
  /**
21
25
  * Authenticator routes that can be directly navigated to by user interaction.
22
26
  */
@@ -92,7 +96,6 @@ type Handlers = {
92
96
  resendSignUpCode: (input: ResendSignUpCodeInput) => Promise<ResendSignUpCodeOutput>;
93
97
  sendUserAttributeVerificationCode: (input: SendUserAttributeVerificationCodeInput) => Promise<SendUserAttributeVerificationCodeOutput>;
94
98
  };
95
- type UnverifiedUserAttributes = Partial<Record<UnverifiedContactMethodType, string>>;
96
99
  type AuthError = Error & {
97
100
  __type: string;
98
101
  message?: string;
@@ -102,9 +105,10 @@ type AuthError = Error & {
102
105
  type AuthenticatorMachineOptions = AuthContext["config"] & {
103
106
  handlers?: Partial<Handlers>;
104
107
  } & AuthMachineHubHandlerOptions;
108
+ type createAuthenticatorMachineReturnType = ReturnType<typeof createAuthenticatorMachine>;
105
109
  //#endregion
106
- //#region src/authenticator/types.d.ts
107
- type AuthActor = ActorRefFrom<ReturnType<typeof createAuthenticatorMachine>>;
110
+ //#region src/types/authenticator.d.ts
111
+ type AuthActor = ActorRefFrom<createAuthenticatorMachineReturnType>;
108
112
  type AuthMachineHubHandlerOptions = {
109
113
  onSignIn?: (user: AuthUser) => void;
110
114
  onSignOut?: () => void;
@@ -112,5 +116,5 @@ type AuthMachineHubHandlerOptions = {
112
116
  type AuthMachineHubHandler = (data: HubCapsule<any, any>, actor: AuthActor, options?: AuthMachineHubHandlerOptions) => void;
113
117
  type StopListenerCallback = () => void;
114
118
  //#endregion
115
- export { UserAttributeStep as A, SignInStep as C, Step as D, SignUpStep as E, unverifiedContactMethodTypes as M, UnverifiedContactMethodType as O, SignInContext as S, SignUpContext as T, InitialRoute as _, ActorDoneData as a, ResetPasswordContext as b, AuthContext as c, AuthEventData as d, AuthEventTypes as f, Handlers as g, FederatedIdentityProviders as h, AuthenticatorMachineOptions as i, VerifyUserContext as j, UnverifiedUserAttributes as k, AuthError as l, AuthTOTPSetupDetails as m, AuthMachineHubHandler as n, AuthActorContext as o, AuthMFAType as p, StopListenerCallback as r, AuthAllowedMFATypes as s, AuthActor as t, AuthEvent as u, InitialStep as v, SignOutContext as w, ResetPasswordStep as x, NavigableRoute as y };
116
- //# sourceMappingURL=types-BQSOxe-R.d.ts.map
119
+ export { FederatedIdentityProviders as A, SignInStep as C, Step as D, SignUpStep as E, UnverifiedContactMethodTypes as M, UnverifiedUserAttributes as N, UserAttributeStep as O, SignInContext as S, SignUpContext as T, InitialRoute as _, createAuthenticatorMachineReturnType as a, ResetPasswordContext as b, AuthAllowedMFATypes as c, AuthEvent as d, AuthEventData as f, Handlers as g, AuthTOTPSetupDetails as h, AuthenticatorMachineOptions as i, UnverifiedContactMethodType as j, VerifyUserContext as k, AuthContext as l, AuthMFAType as m, AuthMachineHubHandler as n, ActorDoneData as o, AuthEventTypes as p, StopListenerCallback as r, AuthActorContext as s, AuthActor as t, AuthError as u, InitialStep as v, SignOutContext as w, ResetPasswordStep as x, NavigableRoute as y };
120
+ //# sourceMappingURL=authenticator-CCnWvIl5.d.ts.map
@@ -1,4 +1,4 @@
1
- import { n as AuthMachineHubHandler, r as StopListenerCallback, t as AuthActor } from "./types-BQSOxe-R.js";
1
+ import { n as AuthMachineHubHandler, r as StopListenerCallback, t as AuthActor } from "./authenticator-CCnWvIl5.js";
2
2
 
3
3
  //#region src/authenticator/defaultAuthHubHandler.d.ts
4
4
  declare const listenToAuthHub: (actor: AuthActor, handler?: AuthMachineHubHandler) => StopListenerCallback;
@@ -1 +1 @@
1
- {"version":3,"file":"defaultAuthHubHandler-rX4tAlCj.js","names":[],"sources":["../src/authenticator/defaultAuthHubHandler.ts"],"sourcesContent":["/*\n * Copyright 2017 - 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * (C) 2025 GAHOJIN, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport { Hub } from '@aws-amplify/core'\nimport { AmplifyErrorCode } from '@aws-amplify/core/internals/utils'\nimport type { AuthActor, AuthMachineHubHandler, StopListenerCallback } from './types'\n\nexport const defaultAuthHubHandler: AuthMachineHubHandler = ({ payload }, actor, options) => {\n const { data, event } = payload\n const { send } = actor\n const { onSignIn, onSignOut } = options ?? {}\n\n switch (event) {\n case 'signedIn': {\n if (typeof onSignIn === 'function') {\n onSignIn(payload)\n }\n break\n }\n case 'signInWithRedirect': {\n send({ type: 'SIGN_IN_WITH_REDIRECT' })\n break\n }\n case 'signedOut': {\n if (typeof onSignOut === 'function') {\n onSignOut()\n }\n send({ type: 'SIGN_OUT' })\n break\n }\n case 'tokenRefresh_failure': {\n if (data?.error?.name === AmplifyErrorCode.NetworkError) {\n return\n }\n send({ type: 'SIGN_OUT' })\n break\n }\n default: {\n break\n }\n }\n}\n\nexport const listenToAuthHub = (actor: AuthActor, handler: AuthMachineHubHandler = defaultAuthHubHandler): StopListenerCallback => {\n const eventHandler: Parameters<typeof Hub.listen>[1] = (data) => handler(data, actor)\n return Hub.listen('auth', eventHandler, 'authenticator-hub-handler')\n}\n"],"mappings":";;;AAeA,MAAa,yBAAgD,EAAE,WAAW,OAAO,YAAY;CAC3F,MAAM,EAAE,MAAM,UAAU;CACxB,MAAM,EAAE,SAAS;CACjB,MAAM,EAAE,UAAU,cAAc,WAAW,EAAE;AAE7C,SAAQ,OAAR;EACE,KAAK;AACH,OAAI,OAAO,aAAa,WACtB,UAAS,QAAQ;AAEnB;EAEF,KAAK;AACH,QAAK,EAAE,MAAM,yBAAyB,CAAC;AACvC;EAEF,KAAK;AACH,OAAI,OAAO,cAAc,WACvB,YAAW;AAEb,QAAK,EAAE,MAAM,YAAY,CAAC;AAC1B;EAEF,KAAK;AACH,OAAI,MAAM,OAAO,SAAS,iBAAiB,aACzC;AAEF,QAAK,EAAE,MAAM,YAAY,CAAC;AAC1B;EAEF,QACE;;;AAKN,MAAa,mBAAmB,OAAkB,UAAiC,0BAAgD;CACjI,MAAM,gBAAkD,SAAS,QAAQ,MAAM,MAAM;AACrF,QAAO,IAAI,OAAO,QAAQ,cAAc,4BAA4B"}
1
+ {"version":3,"file":"defaultAuthHubHandler-rX4tAlCj.js","names":[],"sources":["../src/authenticator/defaultAuthHubHandler.ts"],"sourcesContent":["/*\n * Copyright 2017 - 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * (C) 2025 GAHOJIN, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport { Hub } from '@aws-amplify/core'\nimport { AmplifyErrorCode } from '@aws-amplify/core/internals/utils'\nimport type { AuthActor, AuthMachineHubHandler, StopListenerCallback } from '~/types/authenticator'\n\nexport const defaultAuthHubHandler: AuthMachineHubHandler = ({ payload }, actor, options) => {\n const { data, event } = payload\n const { send } = actor\n const { onSignIn, onSignOut } = options ?? {}\n\n switch (event) {\n case 'signedIn': {\n if (typeof onSignIn === 'function') {\n onSignIn(payload)\n }\n break\n }\n case 'signInWithRedirect': {\n send({ type: 'SIGN_IN_WITH_REDIRECT' })\n break\n }\n case 'signedOut': {\n if (typeof onSignOut === 'function') {\n onSignOut()\n }\n send({ type: 'SIGN_OUT' })\n break\n }\n case 'tokenRefresh_failure': {\n if (data?.error?.name === AmplifyErrorCode.NetworkError) {\n return\n }\n send({ type: 'SIGN_OUT' })\n break\n }\n default: {\n break\n }\n }\n}\n\nexport const listenToAuthHub = (actor: AuthActor, handler: AuthMachineHubHandler = defaultAuthHubHandler): StopListenerCallback => {\n const eventHandler: Parameters<typeof Hub.listen>[1] = (data) => handler(data, actor)\n return Hub.listen('auth', eventHandler, 'authenticator-hub-handler')\n}\n"],"mappings":";;;AAeA,MAAa,yBAAgD,EAAE,WAAW,OAAO,YAAY;CAC3F,MAAM,EAAE,MAAM,UAAU;CACxB,MAAM,EAAE,SAAS;CACjB,MAAM,EAAE,UAAU,cAAc,WAAW,EAAE;AAE7C,SAAQ,OAAR;EACE,KAAK;AACH,OAAI,OAAO,aAAa,WACtB,UAAS,QAAQ;AAEnB;EAEF,KAAK;AACH,QAAK,EAAE,MAAM,yBAAyB,CAAC;AACvC;EAEF,KAAK;AACH,OAAI,OAAO,cAAc,WACvB,YAAW;AAEb,QAAK,EAAE,MAAM,YAAY,CAAC;AAC1B;EAEF,KAAK;AACH,OAAI,MAAM,OAAO,SAAS,iBAAiB,aACzC;AAEF,QAAK,EAAE,MAAM,YAAY,CAAC;AAC1B;EAEF,QACE;;;AAKN,MAAa,mBAAmB,OAAkB,UAAiC,0BAAgD;CACjI,MAAM,gBAAkD,SAAS,QAAQ,MAAM,MAAM;AACrF,QAAO,IAAI,OAAO,QAAQ,cAAc,4BAA4B"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { A as UserAttributeStep, C as SignInStep, D as Step, E as SignUpStep, M as unverifiedContactMethodTypes, O as UnverifiedContactMethodType, S as SignInContext, T as SignUpContext, _ as InitialRoute, a as ActorDoneData, b as ResetPasswordContext, c as AuthContext, d as AuthEventData, f as AuthEventTypes, g as Handlers, h as FederatedIdentityProviders, i as AuthenticatorMachineOptions, j as VerifyUserContext, k as UnverifiedUserAttributes, l as AuthError, m as AuthTOTPSetupDetails, o as AuthActorContext, p as AuthMFAType, s as AuthAllowedMFATypes, t as AuthActor, u as AuthEvent, v as InitialStep, w as SignOutContext, x as ResetPasswordStep, y as NavigableRoute } from "./types-BQSOxe-R.js";
1
+ import { A as FederatedIdentityProviders, C as SignInStep, D as Step, E as SignUpStep, M as UnverifiedContactMethodTypes, N as UnverifiedUserAttributes, O as UserAttributeStep, S as SignInContext, T as SignUpContext, _ as InitialRoute, b as ResetPasswordContext, c as AuthAllowedMFATypes, d as AuthEvent, f as AuthEventData, g as Handlers, h as AuthTOTPSetupDetails, i as AuthenticatorMachineOptions, j as UnverifiedContactMethodType, k as VerifyUserContext, l as AuthContext, m as AuthMFAType, o as ActorDoneData, p as AuthEventTypes, s as AuthActorContext, t as AuthActor, u as AuthError, v as InitialStep, w as SignOutContext, x as ResetPasswordStep, y as NavigableRoute } from "./authenticator-CCnWvIl5.js";
2
2
  import { Context, JSX, PropsWithChildren } from "react";
3
3
  import { AuthUser, CodeDeliveryDetails } from "@aws-amplify/auth";
4
4
 
@@ -17,22 +17,33 @@ declare const _default: ({
17
17
  children
18
18
  }: Props$1) => JSX.Element;
19
19
  //#endregion
20
- //#region src/hooks/types.d.ts
20
+ //#region src/hooks/useAuth.d.ts
21
+ type UseAuthResult = {
22
+ user?: AuthUser;
23
+ isLoading: boolean;
24
+ error?: Error;
25
+ };
26
+ type Props = {
27
+ getCurrentUser?: Handlers["getCurrentUser"];
28
+ };
29
+ declare const useAuth: (handlers?: Props) => UseAuthResult;
30
+ //#endregion
31
+ //#region src/types/hooks.d.ts
21
32
  type AuthenticatorRoute = "authenticated" | "confirmResetPassword" | "confirmSignIn" | "confirmSignUp" | "confirmVerifyUser" | "forceNewPassword" | "idle" | "forgotPassword" | "setup" | "signOut" | "selectMfaType" | "setupEmail" | "setupTotp" | "signIn" | "signUp" | "transition" | "verifyUser";
22
33
  type AuthenticatorMachineContext = AuthenticatorServiceFacade;
23
34
  type AuthenticatorMachineContextKey = keyof AuthenticatorMachineContext;
24
35
  type UseAuthenticatorSelector = (context: AuthenticatorServiceFacade) => AuthenticatorMachineContext[AuthenticatorMachineContextKey][];
25
36
  type UseAuthenticator = AuthenticatorServiceFacade;
26
37
  type AuthenticatorServiceContextFacade = {
27
- allowedMfaTypes: AuthAllowedMFATypes | undefined;
28
- codeDeliveryDetails: CodeDeliveryDetails | undefined;
29
- errorMessage: string | undefined;
38
+ allowedMfaTypes?: AuthAllowedMFATypes;
39
+ codeDeliveryDetails?: CodeDeliveryDetails;
40
+ errorMessage?: string;
30
41
  isPending: boolean;
31
42
  route: AuthenticatorRoute | null;
32
- totpSecretCode: string | undefined;
33
- username: string | undefined;
34
- user: AuthUser | undefined;
35
- unverifiedUserAttributes: UnverifiedUserAttributes | undefined;
43
+ totpSecretCode?: string;
44
+ username?: string;
45
+ user?: AuthUser;
46
+ unverifiedUserAttributes?: UnverifiedUserAttributes;
36
47
  };
37
48
  type AuthenticatorSendEventAliases = {
38
49
  handleSubmit: (data?: AuthEventData) => void;
@@ -45,22 +56,11 @@ type AuthenticatorSendEventAliases = {
45
56
  type AuthenticatorServiceFacade = AuthenticatorSendEventAliases & AuthenticatorServiceContextFacade;
46
57
  type Comparator = (currentMachineContext: AuthenticatorMachineContext, nextMachineContext: AuthenticatorMachineContext) => boolean;
47
58
  //#endregion
48
- //#region src/hooks/useAuth.d.ts
49
- type UseAuthResult = {
50
- user?: AuthUser;
51
- isLoading: boolean;
52
- error?: Error;
53
- };
54
- type Props = {
55
- getCurrentUser?: Handlers["getCurrentUser"];
56
- };
57
- declare const useAuth: (handlers?: Props) => UseAuthResult;
58
- //#endregion
59
59
  //#region src/hooks/useAuthenticator.d.ts
60
60
  declare const useAuthenticator: (selector?: UseAuthenticatorSelector) => UseAuthenticator;
61
61
  //#endregion
62
62
  //#region src/utils.d.ts
63
63
  declare const getTotpCodeURL: (issuer: string, username: string, secret: string) => string;
64
64
  //#endregion
65
- export { ActorDoneData, AuthActorContext, AuthAllowedMFATypes, AuthContext, AuthError, AuthEvent, AuthEventData, AuthEventTypes, AuthMFAType, AuthTOTPSetupDetails, AuthenticatorContext, _default as AuthenticatorProvider, AuthenticatorRoute, AuthenticatorSendEventAliases, AuthenticatorServiceContextFacade, AuthenticatorServiceFacade, Comparator, FederatedIdentityProviders, Handlers, InitialRoute, InitialStep, NavigableRoute, ResetPasswordContext, ResetPasswordStep, SignInContext, SignInStep, SignOutContext, SignUpContext, SignUpStep, Step, UnverifiedContactMethodType, UnverifiedUserAttributes, type UseAuthResult, UseAuthenticator, UseAuthenticatorSelector, UserAttributeStep, VerifyUserContext, getTotpCodeURL, unverifiedContactMethodTypes, useAuth, useAuthenticator };
65
+ export { ActorDoneData, AuthActorContext, AuthAllowedMFATypes, AuthContext, AuthError, AuthEvent, AuthEventData, AuthEventTypes, AuthMFAType, AuthTOTPSetupDetails, AuthenticatorContext, _default as AuthenticatorProvider, AuthenticatorRoute, AuthenticatorSendEventAliases, AuthenticatorServiceContextFacade, AuthenticatorServiceFacade, Comparator, FederatedIdentityProviders, Handlers, InitialRoute, InitialStep, NavigableRoute, ResetPasswordContext, ResetPasswordStep, SignInContext, SignInStep, SignOutContext, SignUpContext, SignUpStep, Step, UnverifiedContactMethodType, UnverifiedContactMethodTypes, UnverifiedUserAttributes, type UseAuthResult, UseAuthenticator, UseAuthenticatorSelector, UserAttributeStep, VerifyUserContext, getTotpCodeURL, useAuth, useAuthenticator };
66
66
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { n as listenToAuthHub, t as defaultAuthHubHandler } from "./defaultAuthHubHandler-rX4tAlCj.js";
2
- import { t as createAuthenticatorMachine } from "./machines-BRfb3dTb.js";
2
+ import { t as createAuthenticatorMachine } from "./machines-whqvCGDP.js";
3
3
  import { createContext, useCallback, useContext, useEffect, useMemo, useState } from "react";
4
4
  import { useActor, useSelector } from "@xstate/react";
5
5
  import { Hub } from "@aws-amplify/core";
@@ -83,85 +83,6 @@ const useAuth = (handlers) => {
83
83
  return result;
84
84
  };
85
85
  //#endregion
86
- //#region src/hooks/facade.ts
87
- const NAVIGABLE_ROUTE_EVENT = {
88
- forgotPassword: "FORGOT_PASSWORD",
89
- signIn: "SIGN_IN",
90
- signUp: "SIGN_UP",
91
- signOut: "SIGN_OUT"
92
- };
93
- const getSendEventAliases = (send) => {
94
- return {
95
- handleSubmit: (data) => send({
96
- type: "SUBMIT",
97
- data
98
- }),
99
- resendConfirmationCode: () => send({ type: "RESEND" }),
100
- refreshUser: () => send({ type: "TOKEN_REFRESH" }),
101
- setRoute: (route) => send({ type: NAVIGABLE_ROUTE_EVENT[route] }),
102
- skipAttributeVerification: () => send({ type: "SKIP" }),
103
- toFederatedSignIn: () => send({ type: "FEDERATED_SIGN_IN" })
104
- };
105
- };
106
- const getChildActor = (snapshot) => {
107
- return snapshot.children?.childActor?.getSnapshot();
108
- };
109
- const getRoute = (actor, childActor) => {
110
- if (childActor?.matches("federatedSignIn")) {
111
- if (actor.matches("signUpActor")) return "signUp";
112
- if (actor.matches("signInActor")) return "signIn";
113
- }
114
- switch (true) {
115
- case actor.matches("idle"): return "idle";
116
- case actor.matches("setup"): return "setup";
117
- case actor.matches("signOut"): return "signOut";
118
- case actor.matches("authenticated"): return "authenticated";
119
- case childActor?.matches("confirmSignUp"):
120
- case childActor?.matches("resendSignUpCode"): return "confirmSignUp";
121
- case childActor?.matches("confirmSignIn"): return "confirmSignIn";
122
- case childActor?.matches("setupTotp"): return "setupTotp";
123
- case childActor?.matches("signIn"): return "signIn";
124
- case childActor?.matches("signUp"):
125
- case childActor?.matches("autoSignIn"): return "signUp";
126
- case childActor?.matches("forceChangePassword"): return "forceNewPassword";
127
- case childActor?.matches("forgotPassword"): return "forgotPassword";
128
- case childActor?.matches("confirmResetPassword"): return "confirmResetPassword";
129
- case childActor?.matches("selectUserAttributes"): return "verifyUser";
130
- case childActor?.matches("confirmVerifyUserAttribute"): return "confirmVerifyUser";
131
- case childActor?.matches("setupEmail"): return "setupEmail";
132
- case childActor?.matches("selectMfaType"): return "selectMfaType";
133
- case actor.matches("getCurrentUser"):
134
- case childActor?.matches("fetchUserAttributes"):
135
- /**
136
- * This route is needed for autoSignIn to capture both the
137
- * autoSignIn.pending and the resolved states when the
138
- * signIn actor is running.
139
- */
140
- return "transition";
141
- default: return null;
142
- }
143
- };
144
- const getServiceContextFacade = (actor) => {
145
- const childActor = getChildActor(actor);
146
- const isPending = (actor.hasTag("pending") || childActor?.hasTag("pending")) ?? false;
147
- const route = getRoute(actor, childActor);
148
- const context = actor.context;
149
- const actorContext = childActor?.context ?? {};
150
- const user = actorContext?.user ?? context.user;
151
- const { allowedMfaTypes, codeDeliveryDetails, remoteError: errorMessage, totpSecretCode, unverifiedUserAttributes, username } = actorContext;
152
- return {
153
- allowedMfaTypes,
154
- codeDeliveryDetails,
155
- errorMessage,
156
- isPending,
157
- route,
158
- totpSecretCode,
159
- unverifiedUserAttributes,
160
- user,
161
- username
162
- };
163
- };
164
- //#endregion
165
86
  //#region src/hooks/utils.ts
166
87
  /**
167
88
  * Checks if `value` is an Object (non-primitive, non-array, non-function)
@@ -278,6 +199,85 @@ const getComparator = (selector) => {
278
199
  };
279
200
  };
280
201
  //#endregion
202
+ //#region src/hooks/facade.ts
203
+ const NAVIGABLE_ROUTE_EVENT = {
204
+ forgotPassword: "FORGOT_PASSWORD",
205
+ signIn: "SIGN_IN",
206
+ signUp: "SIGN_UP",
207
+ signOut: "SIGN_OUT"
208
+ };
209
+ const getSendEventAliases = (send) => {
210
+ return {
211
+ handleSubmit: (data) => send({
212
+ type: "SUBMIT",
213
+ data
214
+ }),
215
+ resendConfirmationCode: () => send({ type: "RESEND" }),
216
+ refreshUser: () => send({ type: "TOKEN_REFRESH" }),
217
+ setRoute: (route) => send({ type: NAVIGABLE_ROUTE_EVENT[route] }),
218
+ skipAttributeVerification: () => send({ type: "SKIP" }),
219
+ toFederatedSignIn: () => send({ type: "FEDERATED_SIGN_IN" })
220
+ };
221
+ };
222
+ const getChildActor = (snapshot) => {
223
+ return snapshot.children?.childActor?.getSnapshot();
224
+ };
225
+ const getRoute = (actor, childActor) => {
226
+ if (childActor?.matches("federatedSignIn")) {
227
+ if (actor.matches("signUpActor")) return "signUp";
228
+ if (actor.matches("signInActor")) return "signIn";
229
+ }
230
+ switch (true) {
231
+ case actor.matches("idle"): return "idle";
232
+ case actor.matches("setup"): return "setup";
233
+ case actor.matches("signOut"): return "signOut";
234
+ case actor.matches("authenticated"): return "authenticated";
235
+ case childActor?.matches("confirmSignUp"):
236
+ case childActor?.matches("resendSignUpCode"): return "confirmSignUp";
237
+ case childActor?.matches("confirmSignIn"): return "confirmSignIn";
238
+ case childActor?.matches("setupTotp"): return "setupTotp";
239
+ case childActor?.matches("signIn"): return "signIn";
240
+ case childActor?.matches("signUp"):
241
+ case childActor?.matches("autoSignIn"): return "signUp";
242
+ case childActor?.matches("forceChangePassword"): return "forceNewPassword";
243
+ case childActor?.matches("forgotPassword"): return "forgotPassword";
244
+ case childActor?.matches("confirmResetPassword"): return "confirmResetPassword";
245
+ case childActor?.matches("selectUserAttributes"): return "verifyUser";
246
+ case childActor?.matches("confirmVerifyUserAttribute"): return "confirmVerifyUser";
247
+ case childActor?.matches("setupEmail"): return "setupEmail";
248
+ case childActor?.matches("selectMfaType"): return "selectMfaType";
249
+ case actor.matches("getCurrentUser"):
250
+ case childActor?.matches("fetchUserAttributes"):
251
+ /**
252
+ * This route is needed for autoSignIn to capture both the
253
+ * autoSignIn.pending and the resolved states when the
254
+ * signIn actor is running.
255
+ */
256
+ return "transition";
257
+ default: return null;
258
+ }
259
+ };
260
+ const getServiceContextFacade = (actor) => {
261
+ const childActor = getChildActor(actor);
262
+ const isPending = (actor.hasTag("pending") || childActor?.hasTag("pending")) ?? false;
263
+ const route = getRoute(actor, childActor);
264
+ const context = actor.context;
265
+ const actorContext = childActor?.context ?? {};
266
+ const user = actorContext?.user ?? context.user;
267
+ const { allowedMfaTypes, codeDeliveryDetails, remoteError: errorMessage, totpSecretCode, unverifiedUserAttributes, username } = actorContext;
268
+ return {
269
+ allowedMfaTypes,
270
+ codeDeliveryDetails,
271
+ errorMessage,
272
+ isPending,
273
+ route,
274
+ totpSecretCode,
275
+ unverifiedUserAttributes,
276
+ user,
277
+ username
278
+ };
279
+ };
280
+ //#endregion
281
281
  //#region src/hooks/useAuthenticator.ts
282
282
  const defaultComparator = () => false;
283
283
  const useAuthenticator = (selector) => {
@@ -291,7 +291,8 @@ const useAuthenticator = (selector) => {
291
291
  }), selector ? getComparator(selector) : defaultComparator);
292
292
  };
293
293
  //#endregion
294
- //#region src/machines/types.ts
294
+ //#region src/types/user.ts
295
+ /** Federated IDPs that Authenticator supports */
295
296
  const FederatedIdentityProviders = {
296
297
  Apple: "Apple",
297
298
  Amazon: "Amazon",
@@ -301,13 +302,13 @@ const FederatedIdentityProviders = {
301
302
  /**
302
303
  * Cognito user contact method types that have not been verified as valid
303
304
  */
304
- const unverifiedContactMethodTypes = ["email", "phone_number"];
305
+ const UnverifiedContactMethodTypes = ["email", "phone_number"];
305
306
  //#endregion
306
307
  //#region src/utils.ts
307
308
  const getTotpCodeURL = (issuer, username, secret) => {
308
309
  return encodeURI(`otpauth://totp/${issuer}:${username}?secret=${secret}&issuer=${issuer}`);
309
310
  };
310
311
  //#endregion
311
- export { AuthenticatorContext, AuthenticatorProvider_default as AuthenticatorProvider, FederatedIdentityProviders, getTotpCodeURL, unverifiedContactMethodTypes, useAuth, useAuthenticator };
312
+ export { AuthenticatorContext, AuthenticatorProvider_default as AuthenticatorProvider, FederatedIdentityProviders, UnverifiedContactMethodTypes, getTotpCodeURL, useAuth, useAuthenticator };
312
313
 
313
314
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/context/AuthenticatorContext.ts","../src/context/AuthenticatorProvider.tsx","../src/hooks/useAuth.ts","../src/hooks/facade.ts","../src/hooks/utils.ts","../src/hooks/useAuthenticator.ts","../src/machines/types.ts","../src/utils.ts"],"sourcesContent":["import { type Context, createContext } from 'react'\nimport type { AuthActor } from '../authenticator/types'\n\ntype AuthenticatorContextType = {\n actor: AuthActor\n}\n\nexport const AuthenticatorContext: Context<AuthenticatorContextType | null> = createContext<AuthenticatorContextType | null>(null)\n","import { useActor } from '@xstate/react'\nimport { type JSX, type PropsWithChildren, useContext, useEffect, useMemo } from 'react'\nimport { defaultAuthHubHandler, listenToAuthHub } from '../authenticator/defaultAuthHubHandler'\nimport type { AuthMachineHubHandler, AuthMachineHubHandlerOptions } from '../authenticator/types'\nimport { AuthenticatorContext } from '../context/AuthenticatorContext'\nimport { type AuthenticatorMachineOptions, createAuthenticatorMachine } from '../machines'\n\nconst createHubHandler = (options?: AuthMachineHubHandlerOptions): AuthMachineHubHandler => {\n return (data, service) => defaultAuthHubHandler(data, service, options)\n}\n\ntype Props = PropsWithChildren & {\n options?: AuthenticatorMachineOptions\n}\n\nexport default ({ options, children }: Props): JSX.Element => {\n const machine = useMemo(() => createAuthenticatorMachine(options), [options])\n\n // 階層構造にAuthenticatorContextを使用している場合、親Contextの認証状態を継承する\n const parentProvider = useContext(AuthenticatorContext)\n const [, , actor] = useActor(machine)\n const value = useMemo(() => parentProvider ?? { actor }, [parentProvider, actor])\n\n const { actor: activeActor } = value\n\n useEffect(() => {\n return listenToAuthHub(activeActor, createHubHandler(options))\n }, [activeActor, options])\n\n return <AuthenticatorContext.Provider value={value}>{children}</AuthenticatorContext.Provider>\n}\n","/*\n * Copyright 2017 - 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * (C) 2025 GAHOJIN, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport { type AuthUser, getCurrentUser } from '@aws-amplify/auth'\nimport { Hub, type HubCallback } from '@aws-amplify/core'\nimport { useCallback, useEffect, useState } from 'react'\nimport type { Handlers } from '../machines/types'\n\nexport type UseAuthResult = {\n user?: AuthUser\n isLoading: boolean\n error?: Error\n}\n\ntype Props = {\n getCurrentUser?: Handlers['getCurrentUser']\n}\n\nexport const useAuth = (handlers?: Props): UseAuthResult => {\n const [result, setResult] = useState<UseAuthResult>({\n isLoading: true,\n })\n\n const fetchCurrentUser = useCallback(() => {\n // loading\n setResult((prev) => ({ ...prev, isLoading: true }))\n\n void (handlers?.getCurrentUser ?? getCurrentUser)()\n .then((user) => setResult({ user, isLoading: false }))\n .catch((e) => setResult({ error: e as Error, isLoading: false }))\n }, [handlers?.getCurrentUser])\n\n const handleAuth: HubCallback = useCallback(\n ({ payload }) => {\n switch (payload.event) {\n // success events\n case 'signedIn':\n case 'signUp':\n case 'autoSignIn':\n setResult({ user: payload.data as AuthUser, isLoading: false })\n break\n case 'signedOut':\n setResult({ isLoading: false })\n break\n\n // failure events\n case 'tokenRefresh_failure':\n case 'signIn_failure':\n setResult({ error: payload.data as Error, isLoading: false })\n break\n case 'autoSignIn_failure':\n // autoSignIn just returns error message. Wrap it to an Error object\n setResult({ error: new Error(payload.message), isLoading: false })\n break\n\n // events that need another fetch\n case 'tokenRefresh':\n void fetchCurrentUser()\n break\n\n default:\n // we do not handle other hub events like `configured`.\n break\n }\n },\n [fetchCurrentUser],\n )\n\n useEffect(() => {\n const unsubscribe = Hub.listen('auth', handleAuth, 'useAuth')\n void fetchCurrentUser() // on init, see if user is already logged in\n\n return unsubscribe\n }, [handleAuth, fetchCurrentUser])\n\n return result\n}\n","import type { AnyMachineSnapshot, SnapshotFrom } from 'xstate'\nimport type { AuthActor } from '../authenticator/types'\nimport type { AuthActorContext, AuthEvent, AuthEventTypes, NavigableRoute } from '../machines/types'\nimport type { AuthenticatorRoute, AuthenticatorSendEventAliases, AuthenticatorServiceContextFacade } from './types'\n\nconst NAVIGABLE_ROUTE_EVENT: Record<NavigableRoute, AuthEventTypes> = {\n forgotPassword: 'FORGOT_PASSWORD',\n signIn: 'SIGN_IN',\n signUp: 'SIGN_UP',\n signOut: 'SIGN_OUT',\n}\n\nexport const getSendEventAliases = (send: (event: AuthEvent) => void): AuthenticatorSendEventAliases => {\n return {\n handleSubmit: (data) => send({ type: 'SUBMIT', data }),\n resendConfirmationCode: () => send({ type: 'RESEND' }),\n refreshUser: () => send({ type: 'TOKEN_REFRESH' }),\n setRoute: (route) => send({ type: NAVIGABLE_ROUTE_EVENT[route] }),\n skipAttributeVerification: () => send({ type: 'SKIP' }),\n toFederatedSignIn: () => send({ type: 'FEDERATED_SIGN_IN' }),\n }\n}\n\nconst getChildActor = (snapshot: SnapshotFrom<AuthActor>): AnyMachineSnapshot | undefined => {\n return snapshot.children?.childActor?.getSnapshot() as AnyMachineSnapshot\n}\n\nconst getRoute = (actor: SnapshotFrom<AuthActor>, childActor: AnyMachineSnapshot | undefined): AuthenticatorRoute | null => {\n // 'federatedSignIn' exists as a state on both the 'signInActor' and 'signUpActor',\n // match against the `actorState` initially to determine if the federated sign in flow\n // has begun, then which actor has begun the flow and return the corresponding `route`\n if (childActor?.matches('federatedSignIn')) {\n if (actor.matches('signUpActor')) {\n return 'signUp'\n }\n if (actor.matches('signInActor')) {\n return 'signIn'\n }\n }\n\n switch (true) {\n case actor.matches('idle'):\n return 'idle'\n case actor.matches('setup'):\n return 'setup'\n case actor.matches('signOut'):\n return 'signOut'\n case actor.matches('authenticated'):\n return 'authenticated'\n case childActor?.matches('confirmSignUp'):\n case childActor?.matches('resendSignUpCode'):\n return 'confirmSignUp'\n case childActor?.matches('confirmSignIn'):\n return 'confirmSignIn'\n case childActor?.matches('setupTotp'):\n return 'setupTotp'\n case childActor?.matches('signIn'):\n return 'signIn'\n case childActor?.matches('signUp'):\n case childActor?.matches('autoSignIn'):\n return 'signUp'\n case childActor?.matches('forceChangePassword'):\n return 'forceNewPassword'\n case childActor?.matches('forgotPassword'):\n return 'forgotPassword'\n case childActor?.matches('confirmResetPassword'):\n return 'confirmResetPassword'\n case childActor?.matches('selectUserAttributes'):\n return 'verifyUser'\n case childActor?.matches('confirmVerifyUserAttribute'):\n return 'confirmVerifyUser'\n case childActor?.matches('setupEmail'):\n return 'setupEmail'\n case childActor?.matches('selectMfaType'):\n return 'selectMfaType'\n case actor.matches('getCurrentUser'):\n case childActor?.matches('fetchUserAttributes'):\n /**\n * This route is needed for autoSignIn to capture both the\n * autoSignIn.pending and the resolved states when the\n * signIn actor is running.\n */\n return 'transition'\n default:\n return null\n }\n}\n\nexport const getServiceContextFacade = (actor: SnapshotFrom<AuthActor>): AuthenticatorServiceContextFacade => {\n const childActor = getChildActor(actor)\n const isPending = (actor.hasTag('pending') || childActor?.hasTag('pending')) ?? false\n const route = getRoute(actor, childActor)\n const context = actor.context\n const actorContext: AuthActorContext = childActor?.context ?? {}\n const user = actorContext?.user ?? context.user\n\n const { allowedMfaTypes, codeDeliveryDetails, remoteError: errorMessage, totpSecretCode, unverifiedUserAttributes, username } = actorContext\n\n return {\n allowedMfaTypes,\n codeDeliveryDetails,\n errorMessage,\n isPending,\n route,\n totpSecretCode,\n unverifiedUserAttributes,\n user,\n username,\n }\n}\n","/*\n * Copyright 2017 - 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * (C) 2025 GAHOJIN, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport type { Comparator, UseAuthenticatorSelector } from '../hooks/types'\n\n/**\n * Checks if `value` is an Object (non-primitive, non-array, non-function)\n * Will return false for Arrays and functions\n *\n *\n * @param {unknown} value The value to check\n * @returns {boolean} Returns `true` if `value` is an object, `false` otherwise\n */\nexport function isObject(value: unknown): value is object {\n return value != null && !Array.isArray(value) && typeof value === 'object'\n}\n\n/**\n * Checks if `value` is a string primitive or object\n *\n * @param {unknown} value The value to check\n * @returns {boolean} Returns `true` if `value` is a string, `false` otherwise\n */\nexport function isString(value: unknown): value is string {\n return typeof value === 'string' || (typeof value === 'object' && Object.prototype.toString.call(value) === '[object String]')\n}\n\n/**\n * Checks if `value` is a Map\n *\n * @param {unknown} value The value to check\n * @returns {boolean} Returns `true` if `value` is a Map, `false` otherwise\n */\nexport function isMap(value: unknown): value is Map<unknown, unknown> {\n return isObject(value) && Object.prototype.toString.call(value) === '[object Map]'\n}\n\n/**\n * Checks if `value` is a Set\n *\n * @param {unknown} value The value to check\n * @returns {boolean} Returns `true` if `value` is a Set, `false` otherwise\n */\nexport function isSet<T>(value: unknown): value is Set<T> {\n return isObject(value) && Object.prototype.toString.call(value) === '[object Set]'\n}\n\n/**\n * Checks if `value` is undefined\n *\n * @param {unknown} value The value to check\n * @returns {boolean} Returns `true` if `value` is undefined, `false` otherwise\n */\nexport function isUndefined(value: unknown): value is undefined {\n return value === undefined\n}\n\n/**\n * Checks if `value` is nullish\n *\n * @param {unknown} value The value to check\n * @returns {boolean} Returns `true` if `value` is nullish, `false` otherwise\n */\nexport function isNil(value: unknown): value is null | undefined {\n return value == null\n}\n\n/**\n * Checks if `value` is empty\n *\n * @param {unknown} value The value to check\n * @returns {boolean} Returns `true` if `value` is empty, `false` otherwise\n */\nexport function isEmpty<T>(value: T): boolean {\n if (value === null || value === undefined) return true\n\n if (isObject(value) && (isMap(value) || isSet(value))) {\n return !value.size\n }\n if (isObject(value) && (isString(value) || Array.isArray(value))) {\n return !value.length\n }\n for (const key in value) {\n if (has(value, key)) {\n return false\n }\n }\n return true\n}\n\n/**\n * Checks if `value` is an empty array\n *\n * @param {unknown} value The value to check\n * @returns {boolean} Returns `true` if `value` is a empty, `false` otherwise\n */\nfunction isEmptyArray<T>(value: T): boolean {\n return Array.isArray(value) && isEmpty(value)\n}\n\n/**\n * Checks if all members of the `values` param are empty arrays\n *\n * @param {unknown} value The values to check\n * @returns {boolean} Returns `true` if all members of `values` are empty, `false` otherwise\n */\nexport function areEmptyArrays<T>(...values: T[]): boolean {\n return values.every(isEmptyArray)\n}\n\n/**\n * Checks if `value` is an empty object\n *\n * @param {unknown} value The value to check\n * @returns {boolean} Returns `true` if `value` is empty, `false` otherwise\n */\nexport function isEmptyObject<T>(value: T): boolean {\n return isObject(value) && isEmpty(value)\n}\n\n/**\n * Checks if all members of the `values` param are empty objects\n *\n * @param {unknown} values The values to check\n * @returns {boolean} Returns `true` if all members of the `values` param are empty, `false` otherwise\n */\nexport function areEmptyObjects<T>(...values: T[]): boolean {\n return values.every(isEmptyObject)\n}\n\n/**\n * Checks if `key` is a direct property of `value`\n *\n * @param {unknown} value `object` potentially containing property\n * @param {string} key property key\n * @returns whether `key` param is a property of the `obj` param\n */\nexport function has(value: unknown, key: string): boolean {\n return value != null && Object.hasOwn(value, key)\n}\n\n/**\n * Does an ordering and shallow comparison of each array value,\n * plus a value equality check for empty objects and arrays.\n */\nexport function areSelectorDepsEqual<T>(currentDeps: T[], nextDeps: T[]): boolean {\n if (currentDeps.length !== nextDeps.length) {\n return false\n }\n return currentDeps.every((currentDep, index) => {\n const nextDep = nextDeps[index]\n\n if (areEmptyArrays(currentDep, nextDep) || areEmptyObjects(currentDep, nextDep)) {\n return true\n }\n\n return currentDep === nextDep\n })\n}\n\nexport const getComparator = (selector: UseAuthenticatorSelector): Comparator => {\n return (currentFacade, nextFacade) => {\n const currentSelectorDeps = selector(currentFacade)\n const nextSelectorDeps = selector(nextFacade)\n\n // Shallow compare the array values\n return areSelectorDepsEqual(currentSelectorDeps, nextSelectorDeps)\n }\n}\n","import { useSelector } from '@xstate/react'\nimport { useContext } from 'react'\nimport { AuthenticatorContext } from '../context'\nimport { getSendEventAliases, getServiceContextFacade } from './facade'\nimport type { UseAuthenticator, UseAuthenticatorSelector } from './types'\nimport { getComparator } from './utils'\n\nconst defaultComparator = (): false => false\n\nexport const useAuthenticator = (selector?: UseAuthenticatorSelector): UseAuthenticator => {\n const context = useContext(AuthenticatorContext)\n\n if (!context) {\n throw new Error('`useAuthenticator` must be used inside an `AuthenticatorProvider`.')\n }\n\n const { actor } = context\n const { send } = actor\n\n const comparator = selector ? getComparator(selector) : defaultComparator\n\n return useSelector(\n actor,\n (snapshot) => ({\n ...getSendEventAliases(send),\n ...getServiceContextFacade(snapshot),\n }),\n comparator,\n )\n}\n","/*\n * Copyright 2017 - 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * (C) 2025 GAHOJIN, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport type {\n AuthUser,\n CodeDeliveryDetails,\n ConfirmResetPasswordInput,\n ConfirmSignInInput,\n ConfirmSignInOutput,\n ConfirmSignUpInput,\n ConfirmSignUpOutput,\n ConfirmUserAttributeInput,\n FetchUserAttributesOutput,\n ResendSignUpCodeInput,\n ResendSignUpCodeOutput,\n ResetPasswordInput,\n ResetPasswordOutput,\n SendUserAttributeVerificationCodeInput,\n SendUserAttributeVerificationCodeOutput,\n SignInInput,\n SignInOutput,\n SignInWithRedirectInput,\n SignOutInput,\n SignUpInput,\n SignUpOutput,\n UserAttributeKey,\n} from '@aws-amplify/auth'\n\nexport type AuthMFAType = 'SMS' | 'TOTP' | 'EMAIL'\nexport type AuthAllowedMFATypes = AuthMFAType[]\n\nexport const FederatedIdentityProviders = {\n Apple: 'Apple',\n Amazon: 'Amazon',\n Facebook: 'Facebook',\n Google: 'Google',\n} as const\nexport type FederatedIdentityProviders = (typeof FederatedIdentityProviders)[keyof typeof FederatedIdentityProviders]\n\n/**\n * Cognito user contact method types that have not been verified as valid\n */\nexport const unverifiedContactMethodTypes = ['email', 'phone_number'] as const\nexport type UnverifiedContactMethodType = (typeof unverifiedContactMethodTypes)[number]\n\n/**\n * Authenticator routes that can be directly navigated to by user interaction.\n */\nexport type NavigableRoute = 'signIn' | 'signUp' | 'forgotPassword' | 'signOut'\nexport type InitialRoute = 'signIn' | 'signUp' | 'forgotPassword'\n\nexport type AuthTOTPSetupDetails = {\n sharedSecret: string\n getSetupUri: (appName: string, accountName?: string) => URL\n}\n\nexport type AuthEventTypes =\n | 'FEDERATED_SIGN_IN'\n | 'RESEND'\n | 'FORGOT_PASSWORD'\n | 'AUTO_SIGN_IN_FAILURE'\n | 'SIGN_IN_WITH_REDIRECT'\n | 'SIGN_IN'\n | 'SIGN_OUT'\n | 'SIGN_UP'\n | 'SUBMIT'\n | 'SKIP'\n | 'INIT'\n | 'TOKEN_REFRESH'\n\n// biome-ignore lint/suspicious/noExplicitAny: イベントデータの型は定義出来ない\nexport type AuthEventData = Record<PropertyKey, any>\n\nexport type AuthEvent = {\n type: AuthEventTypes\n data?: AuthEventData\n input?: ActorDoneData\n output?: AuthEventData\n error?: Error\n actorId?: string\n}\n\nexport type ActorDoneData = {\n codeDeliveryDetails?: CodeDeliveryDetails<UserAttributeKey>\n missingAttributes?: string[]\n remoteError?: string\n step: Step\n totpSecretCode?: string\n username?: string\n unverifiedUserAttributes?: UnverifiedUserAttributes\n allowedMfaTypes?: AuthMFAType[]\n}\n\nexport type AuthContext = {\n user?: AuthUser\n config?: {\n initialState?: 'signIn' | 'signUp' | 'forgotPassword'\n }\n // data returned from actors when they finish and reach their final state\n actorDoneData?: ActorDoneData\n}\n\nexport type InitialStep = 'FORGOT_PASSWORD' | 'SIGN_IN' | 'SIGN_UP'\n\nexport type SignInStep =\n | 'CONFIRM_SIGN_IN_WITH_EMAIL_CODE'\n | 'CONFIRM_SIGN_IN_WITH_SMS_CODE'\n | 'CONFIRM_SIGN_IN_WITH_TOTP_CODE'\n | 'CONFIRM_SIGN_IN_WITH_NEW_PASSWORD_REQUIRED'\n | 'CONFIRM_SIGN_IN_WITH_PASSWORD'\n | 'CONFIRM_SIGN_UP'\n | 'CONTINUE_SIGN_IN_WITH_TOTP_SETUP'\n | 'CONTINUE_SIGN_IN_WITH_EMAIL_SETUP'\n | 'CONTINUE_SIGN_IN_WITH_MFA_SETUP_SELECTION'\n | 'CONTINUE_SIGN_IN_WITH_MFA_SELECTION'\n | 'CONFIRM_SIGN_IN_WITH_CUSTOM_CHALLENGE'\n | 'CONTINUE_SIGN_IN_WITH_FIRST_FACTOR_SELECTION'\n | 'RESET_PASSWORD'\n | 'SIGN_IN_COMPLETE' // 'DONE'\n\nexport type ResetPasswordStep = 'CONFIRM_RESET_PASSWORD_WITH_CODE' | 'RESET_PASSWORD_COMPLETE' // 'DONE'\n\nexport type SignUpStep = 'CONFIRM_SIGN_UP' | 'COMPLETE_AUTO_SIGN_IN' | 'SIGN_UP_COMPLETE' // 'DONE'\n\nexport type UserAttributeStep = 'SHOULD_CONFIRM_USER_ATTRIBUTE' | 'CONFIRM_ATTRIBUTE_WITH_CODE' | 'CONFIRM_ATTRIBUTE_COMPLETE' // 'DONE'\n\nexport type Step = InitialStep | SignInStep | SignUpStep | ResetPasswordStep | UserAttributeStep\n\ntype BaseContext = {\n missingAttributes?: string[]\n remoteError?: string\n step: Step\n totpSecretCode?: string\n unverifiedUserAttributes?: UnverifiedUserAttributes\n allowedMfaTypes?: AuthMFAType[]\n\n // kept in memory for submission to relevnat APIs\n username?: string\n selectedUserAttribute?: string\n\n // retrieved from the Auth module on sign in,\n // cleared on sign out\n user?: AuthUser\n}\n\nexport type ResetPasswordContext = BaseContext & ActorDoneData\nexport type SignInContext = BaseContext & ActorDoneData\nexport type SignUpContext = BaseContext & ActorDoneData\nexport type VerifyUserContext = BaseContext & ActorDoneData\nexport type SignOutContext = Pick<BaseContext, 'user'>\n\nexport type AuthActorContext = SignInContext | SignUpContext | ResetPasswordContext\n\nexport type Handlers = {\n getCurrentUser: () => Promise<AuthUser>\n fetchUserAttributes: () => Promise<FetchUserAttributesOutput>\n signIn: (input: SignInInput) => Promise<SignInOutput>\n signInWithRedirect: (input?: SignInWithRedirectInput) => Promise<void>\n signUp: (input: SignUpInput) => Promise<SignUpOutput>\n signOut: (input?: SignOutInput) => Promise<void>\n autoSignIn: () => Promise<SignInOutput>\n confirmSignIn: (input: ConfirmSignInInput) => Promise<ConfirmSignInOutput>\n confirmSignUp: (input: ConfirmSignUpInput) => Promise<ConfirmSignUpOutput>\n confirmResetPassword: (input: ConfirmResetPasswordInput) => Promise<void>\n confirmUserAttribute: (input: ConfirmUserAttributeInput) => Promise<void>\n resetPassword: (input: ResetPasswordInput) => Promise<ResetPasswordOutput>\n resendSignUpCode: (input: ResendSignUpCodeInput) => Promise<ResendSignUpCodeOutput>\n sendUserAttributeVerificationCode: (input: SendUserAttributeVerificationCodeInput) => Promise<SendUserAttributeVerificationCodeOutput>\n}\n\nexport type UnverifiedUserAttributes = Partial<Record<UnverifiedContactMethodType, string>>\n\nexport type AuthError = Error & {\n __type: string\n message?: string\n}\n","export const getTotpCodeURL = (issuer: string, username: string, secret: string): string => {\n return encodeURI(`otpauth://totp/${issuer}:${username}?secret=${secret}&issuer=${issuer}`)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/context/AuthenticatorContext.ts","../src/context/AuthenticatorProvider.tsx","../src/hooks/useAuth.ts","../src/hooks/utils.ts","../src/hooks/facade.ts","../src/hooks/useAuthenticator.ts","../src/types/user.ts","../src/utils.ts"],"sourcesContent":["import { type Context, createContext } from 'react'\nimport type { AuthActor } from '~/types/authenticator'\n\ntype AuthenticatorContextType = {\n actor: AuthActor\n}\n\nexport const AuthenticatorContext: Context<AuthenticatorContextType | null> = createContext<AuthenticatorContextType | null>(null)\n","import { useActor } from '@xstate/react'\nimport { type JSX, type PropsWithChildren, useContext, useEffect, useMemo } from 'react'\nimport { defaultAuthHubHandler, listenToAuthHub } from '~/authenticator/defaultAuthHubHandler'\nimport { AuthenticatorContext } from '~/context/AuthenticatorContext'\nimport { type AuthenticatorMachineOptions, createAuthenticatorMachine } from '~/machines'\nimport type { AuthMachineHubHandler, AuthMachineHubHandlerOptions } from '~/types/authenticator'\n\nconst createHubHandler = (options?: AuthMachineHubHandlerOptions): AuthMachineHubHandler => {\n return (data, service) => defaultAuthHubHandler(data, service, options)\n}\n\ntype Props = PropsWithChildren & {\n options?: AuthenticatorMachineOptions\n}\n\nexport default ({ options, children }: Props): JSX.Element => {\n const machine = useMemo(() => createAuthenticatorMachine(options), [options])\n\n // 階層構造にAuthenticatorContextを使用している場合、親Contextの認証状態を継承する\n const parentProvider = useContext(AuthenticatorContext)\n const [, , actor] = useActor(machine)\n const value = useMemo(() => parentProvider ?? { actor }, [parentProvider, actor])\n\n const { actor: activeActor } = value\n\n useEffect(() => {\n return listenToAuthHub(activeActor, createHubHandler(options))\n }, [activeActor, options])\n\n return <AuthenticatorContext.Provider value={value}>{children}</AuthenticatorContext.Provider>\n}\n","/*\n * Copyright 2017 - 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * (C) 2025 GAHOJIN, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport { type AuthUser, getCurrentUser } from '@aws-amplify/auth'\nimport { Hub, type HubCallback } from '@aws-amplify/core'\nimport { useCallback, useEffect, useState } from 'react'\nimport type { Handlers } from '~/types/machines'\n\nexport type UseAuthResult = {\n user?: AuthUser\n isLoading: boolean\n error?: Error\n}\n\ntype Props = {\n getCurrentUser?: Handlers['getCurrentUser']\n}\n\nexport const useAuth = (handlers?: Props): UseAuthResult => {\n const [result, setResult] = useState<UseAuthResult>({\n isLoading: true,\n })\n\n const fetchCurrentUser = useCallback(() => {\n // loading\n setResult((prev) => ({ ...prev, isLoading: true }))\n\n void (handlers?.getCurrentUser ?? getCurrentUser)()\n .then((user) => setResult({ user, isLoading: false }))\n .catch((e) => setResult({ error: e as Error, isLoading: false }))\n }, [handlers?.getCurrentUser])\n\n const handleAuth: HubCallback = useCallback(\n ({ payload }) => {\n switch (payload.event) {\n // success events\n case 'signedIn':\n case 'signUp':\n case 'autoSignIn':\n setResult({ user: payload.data as AuthUser, isLoading: false })\n break\n case 'signedOut':\n setResult({ isLoading: false })\n break\n\n // failure events\n case 'tokenRefresh_failure':\n case 'signIn_failure':\n setResult({ error: payload.data as Error, isLoading: false })\n break\n case 'autoSignIn_failure':\n // autoSignIn just returns error message. Wrap it to an Error object\n setResult({ error: new Error(payload.message), isLoading: false })\n break\n\n // events that need another fetch\n case 'tokenRefresh':\n void fetchCurrentUser()\n break\n\n default:\n // we do not handle other hub events like `configured`.\n break\n }\n },\n [fetchCurrentUser],\n )\n\n useEffect(() => {\n const unsubscribe = Hub.listen('auth', handleAuth, 'useAuth')\n void fetchCurrentUser() // on init, see if user is already logged in\n\n return unsubscribe\n }, [handleAuth, fetchCurrentUser])\n\n return result\n}\n","/*\n * Copyright 2017 - 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * (C) 2025 GAHOJIN, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport type { Comparator, UseAuthenticatorSelector } from '~/types/hooks'\n\n/**\n * Checks if `value` is an Object (non-primitive, non-array, non-function)\n * Will return false for Arrays and functions\n *\n *\n * @param {unknown} value The value to check\n * @returns {boolean} Returns `true` if `value` is an object, `false` otherwise\n */\nexport function isObject(value: unknown): value is object {\n return value != null && !Array.isArray(value) && typeof value === 'object'\n}\n\n/**\n * Checks if `value` is a string primitive or object\n *\n * @param {unknown} value The value to check\n * @returns {boolean} Returns `true` if `value` is a string, `false` otherwise\n */\nexport function isString(value: unknown): value is string {\n return typeof value === 'string' || (typeof value === 'object' && Object.prototype.toString.call(value) === '[object String]')\n}\n\n/**\n * Checks if `value` is a Map\n *\n * @param {unknown} value The value to check\n * @returns {boolean} Returns `true` if `value` is a Map, `false` otherwise\n */\nexport function isMap(value: unknown): value is Map<unknown, unknown> {\n return isObject(value) && Object.prototype.toString.call(value) === '[object Map]'\n}\n\n/**\n * Checks if `value` is a Set\n *\n * @param {unknown} value The value to check\n * @returns {boolean} Returns `true` if `value` is a Set, `false` otherwise\n */\nexport function isSet<T>(value: unknown): value is Set<T> {\n return isObject(value) && Object.prototype.toString.call(value) === '[object Set]'\n}\n\n/**\n * Checks if `value` is undefined\n *\n * @param {unknown} value The value to check\n * @returns {boolean} Returns `true` if `value` is undefined, `false` otherwise\n */\nexport function isUndefined(value: unknown): value is undefined {\n return value === undefined\n}\n\n/**\n * Checks if `value` is nullish\n *\n * @param {unknown} value The value to check\n * @returns {boolean} Returns `true` if `value` is nullish, `false` otherwise\n */\nexport function isNil(value: unknown): value is null | undefined {\n return value == null\n}\n\n/**\n * Checks if `value` is empty\n *\n * @param {unknown} value The value to check\n * @returns {boolean} Returns `true` if `value` is empty, `false` otherwise\n */\nexport function isEmpty<T>(value: T): boolean {\n if (value === null || value === undefined) return true\n\n if (isObject(value) && (isMap(value) || isSet(value))) {\n return !value.size\n }\n if (isObject(value) && (isString(value) || Array.isArray(value))) {\n return !value.length\n }\n for (const key in value) {\n if (has(value, key)) {\n return false\n }\n }\n return true\n}\n\n/**\n * Checks if `value` is an empty array\n *\n * @param {unknown} value The value to check\n * @returns {boolean} Returns `true` if `value` is a empty, `false` otherwise\n */\nfunction isEmptyArray<T>(value: T): boolean {\n return Array.isArray(value) && isEmpty(value)\n}\n\n/**\n * Checks if all members of the `values` param are empty arrays\n *\n * @param {unknown} value The values to check\n * @returns {boolean} Returns `true` if all members of `values` are empty, `false` otherwise\n */\nexport function areEmptyArrays<T>(...values: T[]): boolean {\n return values.every(isEmptyArray)\n}\n\n/**\n * Checks if `value` is an empty object\n *\n * @param {unknown} value The value to check\n * @returns {boolean} Returns `true` if `value` is empty, `false` otherwise\n */\nexport function isEmptyObject<T>(value: T): boolean {\n return isObject(value) && isEmpty(value)\n}\n\n/**\n * Checks if all members of the `values` param are empty objects\n *\n * @param {unknown} values The values to check\n * @returns {boolean} Returns `true` if all members of the `values` param are empty, `false` otherwise\n */\nexport function areEmptyObjects<T>(...values: T[]): boolean {\n return values.every(isEmptyObject)\n}\n\n/**\n * Checks if `key` is a direct property of `value`\n *\n * @param {unknown} value `object` potentially containing property\n * @param {string} key property key\n * @returns whether `key` param is a property of the `obj` param\n */\nexport function has(value: unknown, key: string): boolean {\n return value != null && Object.hasOwn(value, key)\n}\n\n/**\n * Does an ordering and shallow comparison of each array value,\n * plus a value equality check for empty objects and arrays.\n */\nexport function areSelectorDepsEqual<T>(currentDeps: T[], nextDeps: T[]): boolean {\n if (currentDeps.length !== nextDeps.length) {\n return false\n }\n return currentDeps.every((currentDep, index) => {\n const nextDep = nextDeps[index]\n\n if (areEmptyArrays(currentDep, nextDep) || areEmptyObjects(currentDep, nextDep)) {\n return true\n }\n\n return currentDep === nextDep\n })\n}\n\nexport const getComparator = (selector: UseAuthenticatorSelector): Comparator => {\n return (currentFacade, nextFacade) => {\n const currentSelectorDeps = selector(currentFacade)\n const nextSelectorDeps = selector(nextFacade)\n\n // Shallow compare the array values\n return areSelectorDepsEqual(currentSelectorDeps, nextSelectorDeps)\n }\n}\n","import type { AnyMachineSnapshot, SnapshotFrom } from 'xstate'\nimport type { AuthActor } from '~/types/authenticator'\nimport type { AuthenticatorRoute, AuthenticatorSendEventAliases, AuthenticatorServiceContextFacade } from '~/types/hooks'\nimport type { AuthActorContext, AuthEvent, AuthEventTypes, NavigableRoute } from '~/types/machines'\n\nconst NAVIGABLE_ROUTE_EVENT: Record<NavigableRoute, AuthEventTypes> = {\n forgotPassword: 'FORGOT_PASSWORD',\n signIn: 'SIGN_IN',\n signUp: 'SIGN_UP',\n signOut: 'SIGN_OUT',\n}\n\nexport const getSendEventAliases = (send: (event: AuthEvent) => void): AuthenticatorSendEventAliases => {\n return {\n handleSubmit: (data) => send({ type: 'SUBMIT', data }),\n resendConfirmationCode: () => send({ type: 'RESEND' }),\n refreshUser: () => send({ type: 'TOKEN_REFRESH' }),\n setRoute: (route) => send({ type: NAVIGABLE_ROUTE_EVENT[route] }),\n skipAttributeVerification: () => send({ type: 'SKIP' }),\n toFederatedSignIn: () => send({ type: 'FEDERATED_SIGN_IN' }),\n }\n}\n\nconst getChildActor = (snapshot: SnapshotFrom<AuthActor>): AnyMachineSnapshot | undefined => {\n return snapshot.children?.childActor?.getSnapshot() as AnyMachineSnapshot\n}\n\nconst getRoute = (actor: SnapshotFrom<AuthActor>, childActor: AnyMachineSnapshot | undefined): AuthenticatorRoute | null => {\n // 'federatedSignIn' exists as a state on both the 'signInActor' and 'signUpActor',\n // match against the `actorState` initially to determine if the federated sign in flow\n // has begun, then which actor has begun the flow and return the corresponding `route`\n if (childActor?.matches('federatedSignIn')) {\n if (actor.matches('signUpActor')) {\n return 'signUp'\n }\n if (actor.matches('signInActor')) {\n return 'signIn'\n }\n }\n\n switch (true) {\n case actor.matches('idle'):\n return 'idle'\n case actor.matches('setup'):\n return 'setup'\n case actor.matches('signOut'):\n return 'signOut'\n case actor.matches('authenticated'):\n return 'authenticated'\n case childActor?.matches('confirmSignUp'):\n case childActor?.matches('resendSignUpCode'):\n return 'confirmSignUp'\n case childActor?.matches('confirmSignIn'):\n return 'confirmSignIn'\n case childActor?.matches('setupTotp'):\n return 'setupTotp'\n case childActor?.matches('signIn'):\n return 'signIn'\n case childActor?.matches('signUp'):\n case childActor?.matches('autoSignIn'):\n return 'signUp'\n case childActor?.matches('forceChangePassword'):\n return 'forceNewPassword'\n case childActor?.matches('forgotPassword'):\n return 'forgotPassword'\n case childActor?.matches('confirmResetPassword'):\n return 'confirmResetPassword'\n case childActor?.matches('selectUserAttributes'):\n return 'verifyUser'\n case childActor?.matches('confirmVerifyUserAttribute'):\n return 'confirmVerifyUser'\n case childActor?.matches('setupEmail'):\n return 'setupEmail'\n case childActor?.matches('selectMfaType'):\n return 'selectMfaType'\n case actor.matches('getCurrentUser'):\n case childActor?.matches('fetchUserAttributes'):\n /**\n * This route is needed for autoSignIn to capture both the\n * autoSignIn.pending and the resolved states when the\n * signIn actor is running.\n */\n return 'transition'\n default:\n return null\n }\n}\n\nexport const getServiceContextFacade = (actor: SnapshotFrom<AuthActor>): AuthenticatorServiceContextFacade => {\n const childActor = getChildActor(actor)\n const isPending = (actor.hasTag('pending') || childActor?.hasTag('pending')) ?? false\n const route = getRoute(actor, childActor)\n const context = actor.context\n const actorContext: AuthActorContext = childActor?.context ?? {}\n const user = actorContext?.user ?? context.user\n\n const { allowedMfaTypes, codeDeliveryDetails, remoteError: errorMessage, totpSecretCode, unverifiedUserAttributes, username } = actorContext\n\n return {\n allowedMfaTypes,\n codeDeliveryDetails,\n errorMessage,\n isPending,\n route,\n totpSecretCode,\n unverifiedUserAttributes,\n user,\n username,\n }\n}\n","import { useSelector } from '@xstate/react'\nimport { useContext } from 'react'\nimport { AuthenticatorContext } from '~/context'\nimport { getComparator } from '~/hooks/utils'\nimport type { UseAuthenticator, UseAuthenticatorSelector } from '~/types/hooks'\nimport { getSendEventAliases, getServiceContextFacade } from './facade'\n\nconst defaultComparator = (): false => false\n\nexport const useAuthenticator = (selector?: UseAuthenticatorSelector): UseAuthenticator => {\n const context = useContext(AuthenticatorContext)\n\n if (!context) {\n throw new Error('`useAuthenticator` must be used inside an `AuthenticatorProvider`.')\n }\n\n const { actor } = context\n const { send } = actor\n\n const comparator = selector ? getComparator(selector) : defaultComparator\n\n return useSelector(\n actor,\n (snapshot) => ({\n ...getSendEventAliases(send),\n ...getServiceContextFacade(snapshot),\n }),\n comparator,\n )\n}\n","/** Federated IDPs that Authenticator supports */\nexport const FederatedIdentityProviders = {\n Apple: 'Apple',\n Amazon: 'Amazon',\n Facebook: 'Facebook',\n Google: 'Google',\n} as const\nexport type FederatedIdentityProviders = (typeof FederatedIdentityProviders)[keyof typeof FederatedIdentityProviders]\n\n/**\n * Cognito user contact method types that have not been verified as valid\n */\nexport const UnverifiedContactMethodTypes = ['email', 'phone_number'] as const\nexport type UnverifiedContactMethodType = (typeof UnverifiedContactMethodTypes)[number]\n\nexport type UnverifiedUserAttributes = Partial<Record<UnverifiedContactMethodType, string>>\n","export const getTotpCodeURL = (issuer: string, username: string, secret: string): string => {\n return encodeURI(`otpauth://totp/${issuer}:${username}?secret=${secret}&issuer=${issuer}`)\n}\n"],"mappings":"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"}
@@ -73,6 +73,9 @@ const shouldConfirmSignUpFromSignIn = (event) => {
73
73
  const shouldAutoSignIn = (event) => {
74
74
  return event.output?.nextStep?.signUpStep === "COMPLETE_AUTO_SIGN_IN";
75
75
  };
76
+ const shouldManualSignIn = (context, event) => {
77
+ return event.output?.nextStep?.signUpStep === "DONE" && context.step === "CONFIRM_SIGN_UP";
78
+ };
76
79
  const hasCompletedSignIn = (event) => {
77
80
  return event.output?.nextStep?.signInStep === "DONE";
78
81
  };
@@ -121,7 +124,7 @@ const shouldConfirmResetPassword = (context, event) => {
121
124
  const shouldVerifyAttribute = (event) => {
122
125
  const { email, phone_number, phone_number_verified, email_verified } = event.output ?? {};
123
126
  if (!email && !phone_number) return false;
124
- return !(email_verified === "true") && !(phone_number_verified === "true");
127
+ return (email_verified === void 0 || email_verified === "false") && (phone_number_verified === void 0 || phone_number_verified === "false");
125
128
  };
126
129
  const isUserAlreadyConfirmed = (event) => {
127
130
  return event.error?.message === "User is already confirmed.";
@@ -138,6 +141,8 @@ const signInActor = (handlers, overridesContext) => {
138
141
  events: {}
139
142
  },
140
143
  guards: {
144
+ hasCompletedSignIn: ({ event }) => hasCompletedSignIn(event),
145
+ isShouldConfirmSignInWithNewPassword: ({ context: { step } }) => isShouldConfirmSignInWithNewPassword(step),
141
146
  shouldConfirmSignIn: ({ context: { step } }) => shouldConfirmSignIn(step),
142
147
  shouldSetupTotp: ({ context: { step } }) => shouldSetupTotp(step),
143
148
  shouldSetupEmail: ({ context: { step } }) => shouldSetupEmail(step),
@@ -145,9 +150,7 @@ const signInActor = (handlers, overridesContext) => {
145
150
  shouldVerifyAttribute: ({ event }) => shouldVerifyAttribute(event),
146
151
  shouldConfirmSignInWithNewPassword: ({ event }) => shouldConfirmSignInWithNewPassword(event),
147
152
  shouldResetPasswordFromSignIn: ({ event }) => shouldResetPasswordFromSignIn(event),
148
- shouldConfirmSignUpFromSignIn: ({ event }) => shouldConfirmSignUpFromSignIn(event),
149
- hasCompletedSignIn: ({ event }) => hasCompletedSignIn(event),
150
- isShouldConfirmSignInWithNewPassword: ({ context: { step } }) => isShouldConfirmSignInWithNewPassword(step)
153
+ shouldConfirmSignUpFromSignIn: ({ event }) => shouldConfirmSignUpFromSignIn(event)
151
154
  },
152
155
  actors: {
153
156
  fetchUserAttributes: fromPromise(() => handlers.fetchUserAttributes()),
@@ -159,14 +162,16 @@ const signInActor = (handlers, overridesContext) => {
159
162
  },
160
163
  actions: {
161
164
  sendUpdate: sendParent({ type: "CHILD_CHANGED" }),
162
- setShouldVerifyUserAttributeStep: assign({ step: "SHOULD_CONFIRM_USER_ATTRIBUTE" }),
163
- setUnverifiedUserAttributes: assign({ unverifiedUserAttributes: setUnverifiedUserAttributes }),
164
- setCodeDeliveryDetails: assign({ codeDeliveryDetails: setCodeDeliveryDetails }),
165
+ setShouldVerifyUserAttributeStep: assign({
166
+ step: "SHOULD_CONFIRM_USER_ATTRIBUTE",
167
+ unverifiedUserAttributes: setUnverifiedUserAttributes
168
+ }),
165
169
  setConfirmAttributeCompleteStep: assign({ step: "CONFIRM_ATTRIBUTE_COMPLETE" }),
170
+ setConfirmSignUpStep: assign({ step: "CONFIRM_SIGN_UP" }),
171
+ setNextSignInStep: assign({ step: setNextSignInStep }),
172
+ setCodeDeliveryDetails: assign({ codeDeliveryDetails: setCodeDeliveryDetails }),
166
173
  setTotpSecretCode: assign({ totpSecretCode: setTotpSecretCode }),
167
174
  setAllowedMfaTypes: assign({ allowedMfaTypes: setAllowedMfaTypes }),
168
- setNextSignInStep: assign({ step: setNextSignInStep }),
169
- setConfirmSignUpStep: assign({ step: "CONFIRM_SIGN_UP" }),
170
175
  setActorDoneData: assign(setSignInActorDoneData),
171
176
  setUsername: assign({ username: setUsername }),
172
177
  setRemoteError: assign({ remoteError: setRemoteError }),
@@ -278,7 +283,7 @@ const signInActor = (handlers, overridesContext) => {
278
283
  src: "fetchUserAttributes",
279
284
  onDone: [{
280
285
  guard: "shouldVerifyAttribute",
281
- actions: ["setShouldVerifyUserAttributeStep", "setUnverifiedUserAttributes"],
286
+ actions: "setShouldVerifyUserAttributeStep",
282
287
  target: "#signInActor.resolved"
283
288
  }, {
284
289
  actions: "setConfirmAttributeCompleteStep",
@@ -425,9 +430,9 @@ const forgotPasswordActor = (handlers, overridesContext) => {
425
430
  },
426
431
  actions: {
427
432
  sendUpdate: sendParent({ type: "CHILD_CHANGED" }),
428
- setCodeDeliveryDetails: assign({ codeDeliveryDetails: setCodeDeliveryDetails }),
433
+ setSignInStep: assign({ step: "SIGN_IN" }),
429
434
  setNextResetPasswordStep: assign({ step: setNextResetPasswordStep }),
430
- setSignInStep: assign({ step: setNextSignInStep }),
435
+ setCodeDeliveryDetails: assign({ codeDeliveryDetails: setCodeDeliveryDetails }),
431
436
  setUsername: assign({ username: setUsername }),
432
437
  setRemoteError: assign({ remoteError: setRemoteError }),
433
438
  clearError: assign({ remoteError: void 0 })
@@ -580,6 +585,7 @@ const signUpActor = (handlers, overridesContext) => {
580
585
  hasCompletedSignUp: ({ event }) => hasCompletedSignUp(event),
581
586
  isUserAlreadyConfirmed: ({ event }) => isUserAlreadyConfirmed(event),
582
587
  shouldAutoSignIn: ({ event }) => shouldAutoSignIn(event),
588
+ shouldManualSignIn: ({ context, event }) => shouldManualSignIn(context, event),
583
589
  shouldConfirmSignInWithNewPassword: ({ event }) => shouldConfirmSignInWithNewPassword(event),
584
590
  shouldConfirmSignUp: ({ context: { step } }) => step === "CONFIRM_SIGN_UP",
585
591
  shouldConfirmSignUpFromSignIn: ({ event }) => shouldConfirmSignUpFromSignIn(event),
@@ -597,10 +603,17 @@ const signUpActor = (handlers, overridesContext) => {
597
603
  },
598
604
  actions: {
599
605
  sendUpdate: sendParent({ type: "CHILD_CHANGED" }),
600
- setShouldVerifyUserAttributeStep: assign({ unverifiedUserAttributes: setUnverifiedUserAttributes }),
606
+ setShouldVerifyUserAttributeStep: assign({
607
+ step: "SHOULD_CONFIRM_USER_ATTRIBUTE",
608
+ unverifiedUserAttributes: setUnverifiedUserAttributes
609
+ }),
601
610
  setConfirmAttributeCompleteStep: assign({ step: "CONFIRM_ATTRIBUTE_COMPLETE" }),
602
- setCodeDeliveryDetails: assign({ codeDeliveryDetails: setCodeDeliveryDetails }),
611
+ setSignInStep: assign({ step: "SIGN_IN" }),
603
612
  setNextSignUpStep: assign({ step: setNextSignUpStep }),
613
+ setNextSignInStep: assign({ step: setNextSignInStep }),
614
+ setCodeDeliveryDetails: assign({ codeDeliveryDetails: setCodeDeliveryDetails }),
615
+ setTotpSecretCode: assign({ totpSecretCode: setTotpSecretCode }),
616
+ setAllowedMfaTypes: assign({ allowedMfaTypes: setAllowedMfaTypes }),
604
617
  setUsername: assign({ username: setUsername }),
605
618
  setRemoteError: assign({ remoteError: setRemoteError }),
606
619
  clearError: assign({ remoteError: void 0 })
@@ -625,21 +638,32 @@ const signUpActor = (handlers, overridesContext) => {
625
638
  onDone: [
626
639
  {
627
640
  guard: "hasCompletedSignIn",
641
+ actions: "setNextSignInStep",
628
642
  target: "#signUpActor.fetchUserAttributes"
629
643
  },
630
644
  {
631
645
  guard: "shouldConfirmSignInWithNewPassword",
646
+ actions: "setNextSignInStep",
632
647
  target: "#signUpActor.resolved"
633
648
  },
634
649
  {
635
650
  guard: "shouldResetPasswordFromSignIn",
651
+ actions: "setNextSignInStep",
636
652
  target: "#signUpActor.resetPassword"
637
653
  },
638
654
  {
639
655
  guard: "shouldConfirmSignUpFromSignIn",
656
+ actions: "setNextSignInStep",
640
657
  target: "#signUpActor.resendSignUpCode"
641
658
  },
642
- { target: "#signUpActor.resolved" }
659
+ {
660
+ actions: [
661
+ "setNextSignInStep",
662
+ "setTotpSecretCode",
663
+ "setAllowedMfaTypes"
664
+ ],
665
+ target: "#signUpActor.resolved"
666
+ }
643
667
  ],
644
668
  onError: { target: "#signUpActor.resolved" }
645
669
  }
@@ -648,7 +672,7 @@ const signUpActor = (handlers, overridesContext) => {
648
672
  src: "fetchUserAttributes",
649
673
  onDone: [{
650
674
  guard: "shouldVerifyAttribute",
651
- actions: ["setShouldVerifyUserAttributeStep", "setConfirmAttributeCompleteStep"],
675
+ actions: "setShouldVerifyUserAttributeStep",
652
676
  target: "#signUpActor.resolved"
653
677
  }, {
654
678
  actions: "setConfirmAttributeCompleteStep",
@@ -764,16 +788,16 @@ const signUpActor = (handlers, overridesContext) => {
764
788
  ...event.data
765
789
  }),
766
790
  onDone: [
767
- {
768
- guard: "hasCompletedSignUp",
769
- actions: "setNextSignUpStep",
770
- target: "#signUpActor.resolved"
771
- },
772
791
  {
773
792
  guard: "shouldAutoSignIn",
774
793
  actions: "setNextSignUpStep",
775
794
  target: "#signUpActor.autoSignIn"
776
795
  },
796
+ {
797
+ guard: "shouldManualSignIn",
798
+ actions: "setSignInStep",
799
+ target: "#signUpActor.resolved"
800
+ },
777
801
  {
778
802
  actions: "setNextSignUpStep",
779
803
  target: "#signUpActor.init"
@@ -810,12 +834,12 @@ const verifyUserAttributesActor = (handlers, overridesContext) => {
810
834
  },
811
835
  actions: {
812
836
  sendUpdate: sendParent({ type: "CHILD_CHANGED" }),
837
+ setConfirmAttributeCompleteStep: assign({ step: "CONFIRM_ATTRIBUTE_COMPLETE" }),
813
838
  setCodeDeliveryDetails: assign({ codeDeliveryDetails: setCodeDeliveryDetails }),
814
839
  setSelectedUserAttribute: assign({ selectedUserAttribute: setSelectedUserAttribute }),
815
- setConfirmAttributeCompleteStep: assign({ step: "CONFIRM_ATTRIBUTE_COMPLETE" }),
840
+ clearSelectedUserAttribute: assign({ selectedUserAttribute: void 0 }),
816
841
  setRemoteError: assign({ remoteError: setRemoteError }),
817
- clearError: assign({ remoteError: void 0 }),
818
- clearSelectedUserAttribute: assign({ selectedUserAttribute: void 0 })
842
+ clearError: assign({ remoteError: void 0 })
819
843
  }
820
844
  }).createMachine({
821
845
  id: "vefiryUserAttributesActor",
@@ -1128,4 +1152,4 @@ const createAuthenticatorMachine = (options) => {
1128
1152
  //#endregion
1129
1153
  export { createAuthenticatorMachine as t };
1130
1154
 
1131
- //# sourceMappingURL=machines-BRfb3dTb.js.map
1155
+ //# sourceMappingURL=machines-whqvCGDP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"machines-whqvCGDP.js","names":[],"sources":["../src/machines/actions.ts","../src/machines/guards.ts","../src/machines/signIn/actor.ts","../src/machines/defaultHandlers.ts","../src/machines/forgotPassword/actor.ts","../src/machines/signOut/actor.ts","../src/machines/signUp/actor.ts","../src/machines/verifyUserAttributes/actor.ts","../src/machines/index.ts"],"sourcesContent":["import type {\n CodeDeliveryDetails,\n FetchUserAttributesOutput,\n ResetPasswordOutput,\n SendUserAttributeVerificationCodeOutput,\n SignInOutput,\n SignUpOutput,\n UserAttributeKey,\n} from '@aws-amplify/auth'\nimport type { AuthVerifiableAttributeKey } from '@aws-amplify/core/internals/utils'\nimport type {\n AuthEvent,\n AuthEventData,\n AuthMFAType,\n AuthTOTPSetupDetails,\n ResetPasswordStep,\n SignInContext,\n SignInStep,\n SignUpStep,\n} from '~/types/machines'\nimport type { UnverifiedUserAttributes } from '~/types/user'\n\ntype ActionParams<Context = unknown> = {\n context: Context\n event: AuthEvent\n}\n\nconst setTotpSecretCode = ({ event }: ActionParams): string | undefined => {\n const { sharedSecret } = (event.output?.nextStep?.totpSetupDetails ?? {}) as AuthTOTPSetupDetails\n return sharedSecret\n}\n\nconst setAllowedMfaTypes = ({ event }: ActionParams): AuthMFAType[] | undefined => {\n return event.output?.nextStep?.allowedMFATypes as AuthMFAType[]\n}\n\nconst setNextSignInStep = ({ event }: ActionParams): SignInStep => {\n const output = (event.output ?? {}) as SignInOutput\n return output.nextStep?.signInStep === 'DONE' ? 'SIGN_IN_COMPLETE' : output.nextStep?.signInStep\n}\n\nconst setNextSignUpStep = ({ event }: ActionParams): SignUpStep => {\n const output = (event.output ?? {}) as SignUpOutput\n return output.nextStep?.signUpStep === 'DONE' ? 'SIGN_UP_COMPLETE' : output.nextStep?.signUpStep\n}\n\nconst setNextResetPasswordStep = ({ event }: ActionParams): ResetPasswordStep => {\n const output = (event.output ?? {}) as ResetPasswordOutput\n return output.nextStep?.resetPasswordStep === 'DONE' ? 'RESET_PASSWORD_COMPLETE' : output.nextStep?.resetPasswordStep\n}\n\nconst setMissingAttributes = ({ event }: ActionParams): string | undefined => event.output?.nextStep?.missingAttributes\n\nconst setRemoteError = ({ event }: ActionParams): string => {\n const error = event.error\n if (error?.name === 'NoUserPoolError') {\n return 'Configuration error (see console) – please contact the administrator'\n }\n return error?.message || String(error)\n}\n\nconst setUsername = ({ event }: ActionParams): string | undefined => event.data?.username\n\nconst setUser = ({ event }: ActionParams): AuthEventData | undefined => event.output\n\nconst setCodeDeliveryDetails = ({ event }: ActionParams): CodeDeliveryDetails<UserAttributeKey> => {\n const output = event.output\n if (output?.nextStep?.codeDeliveryDetails) {\n return output?.nextStep?.codeDeliveryDetails\n }\n return output as CodeDeliveryDetails<UserAttributeKey>\n}\n\nconst setUnverifiedUserAttributes = ({ event }: ActionParams): UnverifiedUserAttributes => {\n const { email, phone_number } = event.output as FetchUserAttributesOutput\n\n const unverifiedUserAttributes = {\n ...(email && { email }),\n ...(phone_number && { phone_number }),\n }\n\n return unverifiedUserAttributes\n}\n\nconst setSelectedUserAttribute = ({ event }: ActionParams): AuthVerifiableAttributeKey | undefined => {\n const output = event?.output as SendUserAttributeVerificationCodeOutput\n return output?.attributeName\n}\n\nconst setSignInActorDoneData = ({ event }: ActionParams<SignInContext>): SignInContext => {\n const output = event?.output ?? {}\n return {\n codeDeliveryDetails: output.codeDeliveryDetails,\n missingAttributes: output.missingAttributes,\n remoteError: output.remoteError,\n username: output.username,\n step: output.step,\n totpSecretCode: output.totpSecretCode,\n unverifiedUserAttributes: output.unverifiedUserAttributes,\n allowedMfaTypes: output.allowedMfaTypes,\n }\n}\n\nexport {\n setAllowedMfaTypes,\n setCodeDeliveryDetails,\n setMissingAttributes,\n setNextResetPasswordStep,\n setNextSignInStep,\n setNextSignUpStep,\n setRemoteError,\n setSelectedUserAttribute,\n setSignInActorDoneData,\n setTotpSecretCode,\n setUnverifiedUserAttributes,\n setUser,\n setUsername,\n}\n","/*\n * Copyright 2017 - 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * (C) 2025 GAHOJIN, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport type { FetchUserAttributesOutput, ResetPasswordOutput, SignInOutput, SignUpOutput } from '@aws-amplify/auth'\nimport type { AuthEvent, ResetPasswordContext, SignUpContext, Step } from '~/types/machines'\n\nconst SIGN_IN_STEP_MFA_CONFIRMATION: Step[] = ['CONFIRM_SIGN_IN_WITH_SMS_CODE', 'CONFIRM_SIGN_IN_WITH_TOTP_CODE', 'CONFIRM_SIGN_IN_WITH_EMAIL_CODE']\n\nexport const shouldConfirmSignInWithNewPassword = (event: AuthEvent): boolean => {\n const output = event.output as SignInOutput\n return output?.nextStep?.signInStep === 'CONFIRM_SIGN_IN_WITH_NEW_PASSWORD_REQUIRED'\n}\n\nexport const shouldResetPasswordFromSignIn = (event: AuthEvent): boolean => {\n const output = event.output as SignInOutput\n return output?.nextStep?.signInStep === 'RESET_PASSWORD'\n}\n\nexport const shouldConfirmSignUpFromSignIn = (event: AuthEvent): boolean => {\n const output = event.output as SignInOutput\n return output?.nextStep?.signInStep === 'CONFIRM_SIGN_UP'\n}\n\nexport const shouldAutoSignIn = (event: AuthEvent): boolean => {\n const output = event.output as SignUpOutput\n return output?.nextStep?.signUpStep === 'COMPLETE_AUTO_SIGN_IN'\n}\n\nexport const shouldManualSignIn = (context: SignUpContext, event: AuthEvent): boolean => {\n const output = event.output as SignUpOutput\n return output?.nextStep?.signUpStep === 'DONE' && context.step === 'CONFIRM_SIGN_UP'\n}\n\nexport const hasCompletedSignIn = (event: AuthEvent): boolean => {\n const output = event.output as SignInOutput\n return output?.nextStep?.signInStep === 'DONE'\n}\n\nexport const hasCompletedSignUp = (event: AuthEvent): boolean => {\n const output = event.output as SignUpOutput\n return output?.nextStep?.signUpStep === 'DONE'\n}\n\nexport const hasCompletedResetPassword = (event: AuthEvent): boolean => {\n const output = event.output as ResetPasswordOutput\n return output?.nextStep?.resetPasswordStep === 'DONE'\n}\n\nexport const hasCompletedAttributeConfirmation = (step: Step): boolean => {\n return step === 'CONFIRM_ATTRIBUTE_COMPLETE'\n}\n\nexport const isConfirmUserAttributeStep = (step: Step): boolean => {\n return step === 'CONFIRM_ATTRIBUTE_WITH_CODE'\n}\n\nexport const isShouldConfirmUserAttributeStep = (step: Step): boolean => {\n return step === 'SHOULD_CONFIRM_USER_ATTRIBUTE'\n}\n\nexport const isResetPasswordStep = (step: Step): boolean => {\n return step === 'RESET_PASSWORD'\n}\n\nexport const isConfirmSignUpStep = (step: Step): boolean => {\n return step === 'CONFIRM_SIGN_UP'\n}\n\nexport const isShouldConfirmSignInWithNewPassword = (step: Step): boolean => {\n return step === 'CONFIRM_SIGN_IN_WITH_NEW_PASSWORD_REQUIRED'\n}\n\nexport const shouldConfirmSignIn = (step: Step): boolean => {\n return SIGN_IN_STEP_MFA_CONFIRMATION.includes(step)\n}\n\nexport const shouldSetupTotp = (step: Step): boolean => {\n return step === 'CONTINUE_SIGN_IN_WITH_TOTP_SETUP'\n}\n\nexport const shouldSetupEmail = (step: Step): boolean => {\n return step === 'CONTINUE_SIGN_IN_WITH_EMAIL_SETUP'\n}\n\nexport const shouldSelectMfaType = (step: Step): boolean => {\n return ['CONTINUE_SIGN_IN_WITH_MFA_SELECTION', 'CONTINUE_SIGN_IN_WITH_MFA_SETUP_SELECTION'].includes(step)\n}\n\nexport const shouldResetPassword = (context: ResetPasswordContext, event: AuthEvent): boolean => {\n const step = event?.input?.step ?? context.step\n return step === 'RESET_PASSWORD'\n}\n\nexport const shouldConfirmResetPassword = (context: ResetPasswordContext, event: AuthEvent): boolean => {\n const step = event?.input?.step ?? context.step\n return step === 'CONFIRM_RESET_PASSWORD_WITH_CODE'\n}\n\nexport const shouldVerifyAttribute = (event: AuthEvent): boolean => {\n const { email, phone_number, phone_number_verified, email_verified } = (event.output ?? {}) as FetchUserAttributesOutput\n\n // if neither email nor phone_number exist\n // there is nothing to verify\n if (!email && !phone_number) {\n return false\n }\n\n // email/phone_verified is returned as a string\n const emailNotVerified = email_verified === undefined || email_verified === 'false'\n const phoneNotVerified = phone_number_verified === undefined || phone_number_verified === 'false'\n\n // only request verification if both email and phone are not verified\n return emailNotVerified && phoneNotVerified\n}\n\nexport const isUserAlreadyConfirmed = (event: AuthEvent): boolean => {\n return event.error?.message === 'User is already confirmed.'\n}\n","import type {\n ConfirmSignInInput,\n ConfirmSignInOutput,\n ResendSignUpCodeInput,\n ResendSignUpCodeOutput,\n ResetPasswordInput,\n ResetPasswordOutput,\n SignInInput,\n SignInOutput,\n SignInWithRedirectInput,\n} from '@aws-amplify/auth'\nimport { assign, fromPromise, sendParent, setup } from 'xstate'\nimport {\n setAllowedMfaTypes,\n setCodeDeliveryDetails,\n setNextSignInStep,\n setRemoteError,\n setSignInActorDoneData,\n setTotpSecretCode,\n setUnverifiedUserAttributes,\n setUsername,\n} from '~/machines/actions'\nimport {\n hasCompletedSignIn,\n isShouldConfirmSignInWithNewPassword,\n shouldConfirmSignIn,\n shouldConfirmSignInWithNewPassword,\n shouldConfirmSignUpFromSignIn,\n shouldResetPasswordFromSignIn,\n shouldSelectMfaType,\n shouldSetupEmail,\n shouldSetupTotp,\n shouldVerifyAttribute,\n} from '~/machines/guards'\nimport type { AuthEvent, Handlers, SignInContext } from '~/types/machines'\n\ntype SignInHandlers = Pick<Handlers, 'confirmSignIn' | 'fetchUserAttributes' | 'resetPassword' | 'signIn' | 'signInWithRedirect' | 'resendSignUpCode'>\n\n/**\n * @internal\n */\nexport const signInActor = (handlers: SignInHandlers, overridesContext?: SignInContext) => {\n const machineSetup = setup({\n types: {\n context: {} as SignInContext,\n events: {} as AuthEvent,\n },\n guards: {\n hasCompletedSignIn: ({ event }) => hasCompletedSignIn(event),\n isShouldConfirmSignInWithNewPassword: ({ context: { step } }) => isShouldConfirmSignInWithNewPassword(step),\n shouldConfirmSignIn: ({ context: { step } }) => shouldConfirmSignIn(step),\n shouldSetupTotp: ({ context: { step } }) => shouldSetupTotp(step),\n shouldSetupEmail: ({ context: { step } }) => shouldSetupEmail(step),\n shouldSelectMfaType: ({ context: { step } }) => shouldSelectMfaType(step),\n shouldVerifyAttribute: ({ event }) => shouldVerifyAttribute(event),\n shouldConfirmSignInWithNewPassword: ({ event }) => shouldConfirmSignInWithNewPassword(event),\n shouldResetPasswordFromSignIn: ({ event }) => shouldResetPasswordFromSignIn(event),\n shouldConfirmSignUpFromSignIn: ({ event }) => shouldConfirmSignUpFromSignIn(event),\n },\n actors: {\n fetchUserAttributes: fromPromise(() => handlers.fetchUserAttributes()),\n resetPassword: fromPromise<ResetPasswordOutput, ResetPasswordInput>(({ input }) => handlers.resetPassword(input)),\n resendSignUpCode: fromPromise<ResendSignUpCodeOutput, ResendSignUpCodeInput>(({ input }) => handlers.resendSignUpCode(input)),\n signIn: fromPromise<SignInOutput, SignInInput>(({ input }) => handlers.signIn(input)),\n confirmSignIn: fromPromise<ConfirmSignInOutput, ConfirmSignInInput>(({ input }) => handlers.confirmSignIn(input)),\n signInWithRedirect: fromPromise<void, SignInWithRedirectInput>(({ input }) => handlers.signInWithRedirect(input)),\n },\n actions: {\n sendUpdate: sendParent({ type: 'CHILD_CHANGED' }),\n setShouldVerifyUserAttributeStep: assign({ step: 'SHOULD_CONFIRM_USER_ATTRIBUTE', unverifiedUserAttributes: setUnverifiedUserAttributes }),\n setConfirmAttributeCompleteStep: assign({ step: 'CONFIRM_ATTRIBUTE_COMPLETE' }),\n setConfirmSignUpStep: assign({ step: 'CONFIRM_SIGN_UP' }),\n setNextSignInStep: assign({ step: setNextSignInStep }),\n setCodeDeliveryDetails: assign({ codeDeliveryDetails: setCodeDeliveryDetails }),\n setTotpSecretCode: assign({ totpSecretCode: setTotpSecretCode }),\n setAllowedMfaTypes: assign({ allowedMfaTypes: setAllowedMfaTypes }),\n setActorDoneData: assign(setSignInActorDoneData),\n setUsername: assign({ username: setUsername }),\n setRemoteError: assign({ remoteError: setRemoteError }),\n clearError: assign({ remoteError: undefined }),\n },\n })\n\n const handleSignInResponse = machineSetup.createStateConfig({\n onDone: [\n { guard: 'hasCompletedSignIn', actions: 'setNextSignInStep', target: '#signInActor.fetchUserAttributes' },\n { guard: 'shouldConfirmSignInWithNewPassword', actions: 'setNextSignInStep', target: '#signInActor.forceChangePassword' },\n { guard: 'shouldResetPasswordFromSignIn', actions: 'setNextSignInStep', target: '#signInActor.resetPassword' },\n { guard: 'shouldConfirmSignUpFromSignIn', actions: 'setNextSignInStep', target: '#signInActor.resendSignUpCode' },\n { actions: ['setNextSignInStep', 'setTotpSecretCode', 'setAllowedMfaTypes'], target: '#signInActor.init' },\n ],\n })\n const confirmSignInState = machineSetup.createStateConfig({\n initial: 'idle',\n exit: 'clearError',\n states: {\n idle: {\n entry: 'sendUpdate',\n on: {\n SUBMIT: { target: 'submit' },\n SIGN_IN: { target: '#signInActor.signIn' },\n },\n },\n submit: {\n tags: 'pending',\n entry: ['sendUpdate', 'clearError'],\n invoke: {\n src: 'confirmSignIn',\n input: ({ event }) => event.data as ConfirmSignInInput,\n ...handleSignInResponse,\n onError: { actions: 'setRemoteError', target: 'idle' },\n },\n },\n },\n })\n\n return machineSetup.createMachine({\n id: 'signInActor',\n context: ({ input }) => ({ step: 'SIGN_IN', ...overridesContext, ...input }),\n initial: 'init',\n states: {\n init: {\n always: [\n { guard: 'shouldConfirmSignIn', target: '#signInActor.confirmSignIn' },\n { guard: 'shouldSetupTotp', target: '#signInActor.setupTotp' },\n { guard: 'shouldSetupEmail', target: '#signInActor.setupEmail' },\n { guard: 'shouldSelectMfaType', target: '#signInActor.selectMfaType' },\n { guard: 'isShouldConfirmSignInWithNewPassword', actions: 'setActorDoneData', target: '#signInActor.forceChangePassword' },\n { target: '#signInActor.signIn' },\n ],\n },\n federatedSignIn: {\n entry: ['sendUpdate', 'clearError'],\n invoke: {\n src: 'signInWithRedirect',\n input: ({ event }) => event.data as SignInWithRedirectInput,\n onDone: { target: '#signInActor.signIn' },\n onError: { actions: 'setRemoteError', target: '#signInActor.signIn' },\n },\n },\n fetchUserAttributes: {\n invoke: {\n src: 'fetchUserAttributes',\n onDone: [\n {\n guard: 'shouldVerifyAttribute',\n actions: 'setShouldVerifyUserAttributeStep',\n target: '#signInActor.resolved',\n },\n { actions: 'setConfirmAttributeCompleteStep', target: '#signInActor.resolved' },\n ],\n onError: { actions: 'setConfirmAttributeCompleteStep', target: '#signInActor.resolved' },\n },\n },\n resendSignUpCode: {\n tags: 'pending',\n invoke: {\n src: 'resendSignUpCode',\n input: ({ context: { username }, event }) => ({ username, ...event.data }) as ResendSignUpCodeInput,\n onDone: { actions: 'setCodeDeliveryDetails', target: '#signInActor.resolved' },\n onError: { actions: 'setRemoteError', target: '#signInActor.signIn' },\n },\n },\n resetPassword: {\n invoke: {\n src: 'resetPassword',\n input: ({ context: { username }, event }) => ({ username, ...event.data }) as ResetPasswordInput,\n onDone: { actions: 'setCodeDeliveryDetails', target: '#signInActor.resolved' },\n onError: { actions: ['setRemoteError', 'sendUpdate'] },\n },\n },\n signIn: {\n initial: 'idle',\n states: {\n idle: {\n entry: 'sendUpdate',\n on: {\n FEDERATED_SIGN_IN: { target: '#signInActor.federatedSignIn' },\n SUBMIT: { target: 'submit' },\n },\n },\n submit: {\n tags: 'pending',\n entry: ['sendUpdate', 'setUsername', 'clearError'],\n invoke: {\n src: 'signIn',\n input: ({ event }) => event.data as SignInInput,\n ...handleSignInResponse,\n onError: [\n { guard: 'shouldConfirmSignUpFromSignIn', actions: 'setConfirmSignUpStep', target: '#signInActor.resendSignUpCode' },\n { actions: 'setRemoteError', target: 'idle' },\n ],\n },\n },\n },\n },\n confirmSignIn: confirmSignInState,\n forceChangePassword: {\n initial: 'idle',\n entry: 'clearError',\n exit: 'clearError',\n states: {\n idle: {\n entry: 'sendUpdate',\n on: { SUBMIT: { target: 'submit' } },\n },\n submit: {\n tags: 'pending',\n entry: ['sendUpdate', 'clearError'],\n invoke: {\n src: 'confirmSignIn',\n input: ({ event }) => event.data as ConfirmSignInInput,\n ...handleSignInResponse,\n onError: { actions: 'setRemoteError', target: 'idle' },\n },\n },\n },\n },\n setupTotp: confirmSignInState,\n setupEmail: confirmSignInState,\n selectMfaType: confirmSignInState,\n resolved: { type: 'final' },\n },\n output: ({ context }) => context,\n })\n}\n","import {\n autoSignIn,\n confirmResetPassword,\n confirmSignIn,\n confirmSignUp,\n confirmUserAttribute,\n fetchUserAttributes,\n getCurrentUser,\n resendSignUpCode,\n resetPassword,\n sendUserAttributeVerificationCode,\n signIn,\n signInWithRedirect,\n signOut,\n signUp,\n} from '@aws-amplify/auth'\nimport type { Handlers } from '~/types/machines'\n\nexport const defaultHandlers: Handlers = {\n getCurrentUser,\n fetchUserAttributes,\n signIn,\n signInWithRedirect,\n signUp,\n signOut,\n autoSignIn: () => autoSignIn(),\n confirmSignIn,\n confirmSignUp,\n confirmResetPassword,\n confirmUserAttribute,\n resetPassword,\n resendSignUpCode,\n sendUserAttributeVerificationCode,\n}\n","import type { ConfirmResetPasswordInput, ResetPasswordInput, ResetPasswordOutput } from '@aws-amplify/auth'\nimport { assign, fromPromise, sendParent, setup } from 'xstate'\nimport { setCodeDeliveryDetails, setNextResetPasswordStep, setRemoteError, setUsername } from '~/machines/actions'\nimport { hasCompletedResetPassword, shouldConfirmResetPassword, shouldResetPassword } from '~/machines/guards'\nimport type { AuthEvent, Handlers, ResetPasswordContext } from '~/types/machines'\n\ntype ForgotPasswordHandlers = Pick<Handlers, 'resetPassword' | 'confirmResetPassword'>\n\n/**\n * @internal\n */\nexport const forgotPasswordActor = (handlers: ForgotPasswordHandlers, overridesContext?: ResetPasswordContext) => {\n return setup({\n types: {\n context: {} as ResetPasswordContext,\n events: {} as AuthEvent,\n },\n guards: {\n shouldResetPassword: ({ context, event }) => shouldResetPassword(context, event),\n shouldConfirmResetPassword: ({ context, event }) => shouldConfirmResetPassword(context, event),\n hasCompletedResetPassword: ({ event }) => hasCompletedResetPassword(event),\n },\n actors: {\n resetPassword: fromPromise<ResetPasswordOutput, ResetPasswordInput>(({ input }) => handlers.resetPassword(input)),\n confirmResetPassword: fromPromise<void, ConfirmResetPasswordInput>(({ input }) => handlers.confirmResetPassword(input)),\n },\n actions: {\n sendUpdate: sendParent({ type: 'CHILD_CHANGED' }),\n setSignInStep: assign({ step: 'SIGN_IN' }),\n setNextResetPasswordStep: assign({ step: setNextResetPasswordStep }),\n setCodeDeliveryDetails: assign({ codeDeliveryDetails: setCodeDeliveryDetails }),\n setUsername: assign({ username: setUsername }),\n setRemoteError: assign({ remoteError: setRemoteError }),\n clearError: assign({ remoteError: undefined }),\n },\n }).createMachine({\n id: 'forgotPasswordActor',\n initial: 'init',\n context: ({ input }) => ({ step: 'FORGOT_PASSWORD', ...overridesContext, ...input }),\n states: {\n init: {\n always: [\n { guard: 'shouldResetPassword', target: '#forgotPasswordActor.confirmResetPassword' },\n { guard: 'shouldConfirmResetPassword', target: '#forgotPasswordActor.confirmResetPassword' },\n { target: '#forgotPasswordActor.forgotPassword' },\n ],\n },\n forgotPassword: {\n initial: 'idle',\n exit: 'clearError',\n states: {\n idle: {\n entry: 'sendUpdate',\n on: {\n SUBMIT: { target: 'submit' },\n },\n },\n submit: {\n tags: 'pending',\n entry: ['sendUpdate', 'setUsername', 'clearError'],\n invoke: {\n src: 'resetPassword',\n input: ({ context: { username } }) => ({ username }) as ResetPasswordInput,\n onDone: [{ actions: ['setCodeDeliveryDetails', 'setNextResetPasswordStep'], target: '#forgotPasswordActor.confirmResetPassword' }],\n onError: { actions: 'setRemoteError', target: 'idle' },\n },\n },\n },\n },\n confirmResetPassword: {\n initial: 'idle',\n exit: 'clearError',\n states: {\n idle: {\n entry: 'sendUpdate',\n on: {\n SUBMIT: { target: 'submit' },\n RESEND: { target: 'resendCode' },\n },\n },\n resendCode: {\n tags: 'pending',\n entry: ['sendUpdate', 'clearError'],\n invoke: {\n src: 'resetPassword',\n input: ({ context: { username } }) => ({ username }) as ResetPasswordInput,\n onDone: { target: 'idle' },\n onError: { actions: 'setRemoteError', target: 'idle' },\n },\n },\n submit: {\n tags: 'pending',\n entry: ['sendUpdate', 'clearError'],\n invoke: {\n src: 'confirmResetPassword',\n input: ({ context, event }) => ({ username: context.username, ...event.data }) as ConfirmResetPasswordInput,\n onDone: [\n { guard: 'hasCompletedResetPassword', actions: 'setNextResetPasswordStep', target: '#forgotPasswordActor.resolved' },\n { actions: 'setSignInStep', target: '#forgotPasswordActor.resolved' },\n ],\n onError: { actions: 'setRemoteError', target: 'idle' },\n },\n },\n },\n },\n resolved: { type: 'final' },\n },\n output: ({ context }) => context,\n })\n}\n","import { fromPromise, setup } from 'xstate'\nimport type { Handlers, SignOutContext } from '~/types/machines'\n\ntype SignOutHandlers = Pick<Handlers, 'signOut'>\n\n/**\n * @internal\n */\nexport const signOutActor = (handlers: SignOutHandlers) => {\n return setup({\n types: {\n context: {} as SignOutContext,\n },\n actors: {\n signOut: fromPromise(() => handlers.signOut()),\n },\n }).createMachine({\n id: 'signOutActor',\n initial: 'pending',\n context: {},\n states: {\n pending: {\n tags: 'pending',\n invoke: {\n src: 'signOut',\n onDone: 'resolved',\n onError: 'rejected',\n },\n },\n resolved: { type: 'final' },\n rejected: { type: 'final' },\n },\n output: ({ context }) => context,\n })\n}\n","import type {\n ConfirmSignUpInput,\n ConfirmSignUpOutput,\n ResendSignUpCodeInput,\n ResendSignUpCodeOutput,\n ResetPasswordInput,\n ResetPasswordOutput,\n SignInWithRedirectInput,\n SignUpInput,\n SignUpOutput,\n} from '@aws-amplify/auth'\nimport { assign, fromPromise, sendParent, setup } from 'xstate'\nimport {\n setAllowedMfaTypes,\n setCodeDeliveryDetails,\n setNextSignInStep,\n setNextSignUpStep,\n setRemoteError,\n setTotpSecretCode,\n setUnverifiedUserAttributes,\n setUsername,\n} from '~/machines/actions'\nimport {\n hasCompletedSignIn,\n hasCompletedSignUp,\n isUserAlreadyConfirmed,\n shouldAutoSignIn,\n shouldConfirmSignInWithNewPassword,\n shouldConfirmSignUpFromSignIn,\n shouldManualSignIn,\n shouldResetPasswordFromSignIn,\n shouldVerifyAttribute,\n} from '~/machines/guards'\nimport type { AuthEvent, Handlers, SignUpContext } from '~/types/machines'\n\ntype SignUpHandlers = Pick<\n Handlers,\n 'autoSignIn' | 'confirmSignUp' | 'signInWithRedirect' | 'signUp' | 'resetPassword' | 'resendSignUpCode' | 'fetchUserAttributes'\n>\n\n/**\n * @internal\n */\nexport const signUpActor = (handlers: SignUpHandlers, overridesContext?: SignUpContext) => {\n return setup({\n types: {\n context: {} as SignUpContext,\n events: {} as AuthEvent,\n },\n guards: {\n hasCompletedSignIn: ({ event }) => hasCompletedSignIn(event),\n hasCompletedSignUp: ({ event }) => hasCompletedSignUp(event),\n isUserAlreadyConfirmed: ({ event }) => isUserAlreadyConfirmed(event),\n shouldAutoSignIn: ({ event }) => shouldAutoSignIn(event),\n shouldManualSignIn: ({ context, event }) => shouldManualSignIn(context, event),\n shouldConfirmSignInWithNewPassword: ({ event }) => shouldConfirmSignInWithNewPassword(event),\n shouldConfirmSignUp: ({ context: { step } }) => step === 'CONFIRM_SIGN_UP',\n shouldConfirmSignUpFromSignIn: ({ event }) => shouldConfirmSignUpFromSignIn(event),\n shouldResetPasswordFromSignIn: ({ event }) => shouldResetPasswordFromSignIn(event),\n shouldVerifyAttribute: ({ event }) => shouldVerifyAttribute(event),\n },\n actors: {\n autoSignIn: fromPromise(() => handlers.autoSignIn()),\n confirmSignUp: fromPromise<ConfirmSignUpOutput, ConfirmSignUpInput>(({ input }) => handlers.confirmSignUp(input)),\n fetchUserAttributes: fromPromise(() => handlers.fetchUserAttributes()),\n resetPassword: fromPromise<ResetPasswordOutput, ResetPasswordInput>(({ input }) => handlers.resetPassword(input)),\n resendSignUpCode: fromPromise<ResendSignUpCodeOutput, ResendSignUpCodeInput>(({ input }) => handlers.resendSignUpCode(input)),\n signUp: fromPromise<SignUpOutput, SignUpInput>(({ input }) => handlers.signUp(input)),\n signInWithRedirect: fromPromise<void, SignInWithRedirectInput>(({ input }) => handlers.signInWithRedirect(input)),\n },\n actions: {\n sendUpdate: sendParent({ type: 'CHILD_CHANGED' }),\n setShouldVerifyUserAttributeStep: assign({ step: 'SHOULD_CONFIRM_USER_ATTRIBUTE', unverifiedUserAttributes: setUnverifiedUserAttributes }),\n setConfirmAttributeCompleteStep: assign({ step: 'CONFIRM_ATTRIBUTE_COMPLETE' }),\n setSignInStep: assign({ step: 'SIGN_IN' }),\n setNextSignUpStep: assign({ step: setNextSignUpStep }),\n setNextSignInStep: assign({ step: setNextSignInStep }),\n setCodeDeliveryDetails: assign({ codeDeliveryDetails: setCodeDeliveryDetails }),\n setTotpSecretCode: assign({ totpSecretCode: setTotpSecretCode }),\n setAllowedMfaTypes: assign({ allowedMfaTypes: setAllowedMfaTypes }),\n setUsername: assign({ username: setUsername }),\n setRemoteError: assign({ remoteError: setRemoteError }),\n clearError: assign({ remoteError: undefined }),\n },\n }).createMachine({\n id: 'signUpActor',\n initial: 'init',\n context: ({ input }) => ({ step: 'SIGN_UP', ...overridesContext, ...input }),\n states: {\n init: {\n always: [{ guard: 'shouldConfirmSignUp', target: 'confirmSignUp' }, { target: '#signUpActor.signUp' }],\n },\n autoSignIn: {\n tags: 'pending',\n invoke: {\n src: 'autoSignIn',\n onDone: [\n { guard: 'hasCompletedSignIn', actions: 'setNextSignInStep', target: '#signUpActor.fetchUserAttributes' },\n { guard: 'shouldConfirmSignInWithNewPassword', actions: 'setNextSignInStep', target: '#signUpActor.resolved' },\n { guard: 'shouldResetPasswordFromSignIn', actions: 'setNextSignInStep', target: '#signUpActor.resetPassword' },\n { guard: 'shouldConfirmSignUpFromSignIn', actions: 'setNextSignInStep', target: '#signUpActor.resendSignUpCode' },\n { actions: ['setNextSignInStep', 'setTotpSecretCode', 'setAllowedMfaTypes'], target: '#signUpActor.resolved' },\n ],\n onError: { target: '#signUpActor.resolved' },\n },\n },\n fetchUserAttributes: {\n invoke: {\n src: 'fetchUserAttributes',\n onDone: [\n {\n guard: 'shouldVerifyAttribute',\n actions: 'setShouldVerifyUserAttributeStep',\n target: '#signUpActor.resolved',\n },\n { actions: 'setConfirmAttributeCompleteStep', target: '#signUpActor.resolved' },\n ],\n onError: { actions: 'setConfirmAttributeCompleteStep', target: '#signUpActor.resolved' },\n },\n },\n federatedSignIn: {\n entry: ['sendUpdate', 'clearError'],\n invoke: {\n src: 'signInWithRedirect',\n input: ({ event }) => event.data as SignInWithRedirectInput,\n onDone: 'signUp',\n onError: { actions: 'setRemoteError', target: '#signUpActor.signUp' },\n },\n },\n resetPassword: {\n invoke: {\n src: 'resetPassword',\n input: ({ event }) => event.data as ResetPasswordInput,\n onDone: { actions: 'setCodeDeliveryDetails', target: '#signUpActor.resolved' },\n onError: { actions: 'setRemoteError' },\n },\n },\n resendSignUpCode: {\n tags: 'pending',\n entry: 'sendUpdate',\n exit: 'sendUpdate',\n invoke: {\n src: 'resendSignUpCode',\n input: ({ context: { username }, event }) => ({ username, ...event.data }) as ResendSignUpCodeInput,\n onDone: { actions: 'setCodeDeliveryDetails', target: '#signUpActor.confirmSignUp' },\n onError: [{ guard: 'isUserAlreadyConfirmed', target: '#signUpActor.resolved' }, { actions: 'setRemoteError' }],\n },\n },\n signUp: {\n initial: 'idle',\n exit: 'clearError',\n on: {\n FEDERATED_SIGN_IN: { target: '#signUpActor.federatedSignIn' },\n },\n states: {\n idle: {\n entry: 'sendUpdate',\n on: {\n SUBMIT: { target: 'submit' },\n },\n },\n submit: {\n tags: 'pending',\n entry: ['sendUpdate', 'setUsername', 'clearError'],\n invoke: {\n src: 'signUp',\n input: ({ event }) => event.data as SignUpInput,\n onDone: [\n { guard: 'hasCompletedSignUp', actions: 'setNextSignUpStep', target: '#signUpActor.resolved' },\n { guard: 'shouldAutoSignIn', actions: 'setNextSignUpStep', target: '#signUpActor.autoSignIn' },\n { actions: ['setCodeDeliveryDetails', 'setNextSignUpStep'], target: '#signUpActor.init' },\n ],\n onError: { actions: 'setRemoteError', target: 'idle' },\n },\n },\n },\n },\n confirmSignUp: {\n initial: 'idle',\n exit: 'clearError',\n states: {\n idle: {\n entry: 'sendUpdate',\n on: {\n SUBMIT: { target: 'submit' },\n RESEND: { target: '#signUpActor.resendSignUpCode' },\n },\n },\n submit: {\n tags: 'pending',\n entry: ['sendUpdate', 'clearError'],\n invoke: {\n src: 'confirmSignUp',\n input: ({ context: { username }, event }) => ({ username, ...event.data }) as ConfirmSignUpInput,\n onDone: [\n { guard: 'shouldAutoSignIn', actions: 'setNextSignUpStep', target: '#signUpActor.autoSignIn' },\n { guard: 'shouldManualSignIn', actions: 'setSignInStep', target: '#signUpActor.resolved' },\n { actions: 'setNextSignUpStep', target: '#signUpActor.init' },\n ],\n onError: { actions: 'setRemoteError', target: 'idle' },\n },\n },\n },\n },\n resolved: { type: 'final' },\n },\n output: ({ context }) => context,\n })\n}\n","import type { ConfirmUserAttributeInput, SendUserAttributeVerificationCodeInput, SendUserAttributeVerificationCodeOutput } from '@aws-amplify/auth'\nimport { assign, fromPromise, sendParent, setup } from 'xstate'\nimport { setCodeDeliveryDetails, setRemoteError, setSelectedUserAttribute } from '~/machines/actions'\nimport type { AuthEvent, Handlers, VerifyUserContext } from '~/types/machines'\n\ntype VerifyUserAttributesHandlers = Pick<Handlers, 'sendUserAttributeVerificationCode' | 'confirmUserAttribute'>\n\n/**\n * @internal\n */\nexport const verifyUserAttributesActor = (handlers: VerifyUserAttributesHandlers, overridesContext?: VerifyUserContext) => {\n return setup({\n types: {\n context: {} as VerifyUserContext,\n events: {} as AuthEvent,\n },\n guards: {},\n actors: {\n sendUserAttributeVerificationCode: fromPromise<SendUserAttributeVerificationCodeOutput, SendUserAttributeVerificationCodeInput>(({ input }) =>\n handlers.sendUserAttributeVerificationCode(input),\n ),\n confirmVerifyUserAttribute: fromPromise<void, ConfirmUserAttributeInput>(({ input }) => handlers.confirmUserAttribute(input)),\n },\n actions: {\n sendUpdate: sendParent({ type: 'CHILD_CHANGED' }),\n setConfirmAttributeCompleteStep: assign({ step: 'CONFIRM_ATTRIBUTE_COMPLETE' }),\n setCodeDeliveryDetails: assign({ codeDeliveryDetails: setCodeDeliveryDetails }),\n setSelectedUserAttribute: assign({ selectedUserAttribute: setSelectedUserAttribute }),\n clearSelectedUserAttribute: assign({ selectedUserAttribute: undefined }),\n setRemoteError: assign({ remoteError: setRemoteError }),\n clearError: assign({ remoteError: undefined }),\n },\n }).createMachine({\n id: 'vefiryUserAttributesActor',\n initial: 'selectUserAttributes',\n context: ({ input }) => ({ step: 'SIGN_IN', ...overridesContext, ...input }),\n states: {\n selectUserAttributes: {\n initial: 'idle',\n exit: 'clearError',\n states: {\n idle: {\n entry: 'sendUpdate',\n on: {\n SKIP: { target: '#vefiryUserAttributesActor.resolved' },\n SUBMIT: { target: 'submit' },\n },\n },\n submit: {\n tags: 'pending',\n entry: ['sendUpdate', 'clearError'],\n invoke: {\n src: 'sendUserAttributeVerificationCode',\n input: ({ event }) => event.data as SendUserAttributeVerificationCodeInput,\n onDone: {\n actions: ['setSelectedUserAttribute', 'setCodeDeliveryDetails'],\n target: '#vefiryUserAttributesActor.confirmVerifyUserAttribute',\n },\n onError: { actions: 'setRemoteError', target: 'idle' },\n },\n },\n },\n },\n confirmVerifyUserAttribute: {\n initial: 'idle',\n exit: 'clearError',\n states: {\n idle: {\n entry: 'sendUpdate',\n on: {\n SUBMIT: { target: 'submit' },\n RESEND: { target: 'resendCode' },\n SKIP: { target: '#vefiryUserAttributesActor.resolved' },\n },\n },\n resendCode: {\n tags: 'pending',\n entry: ['sendUpdate', 'clearError'],\n invoke: {\n src: 'sendUserAttributeVerificationCode',\n input: ({ context, event }) =>\n ({ userAttributeKey: context.selectedUserAttribute, ...event.data }) as SendUserAttributeVerificationCodeInput,\n onDone: { target: 'idle' },\n onError: { actions: 'setRemoteError', target: 'idle' },\n },\n },\n submit: {\n tags: 'pending',\n entry: ['sendUpdate', 'clearError'],\n invoke: {\n src: 'confirmVerifyUserAttribute',\n input: ({ context, event }) => ({ userAttributeKey: context.selectedUserAttribute, ...event.data }) as ConfirmUserAttributeInput,\n onDone: { actions: ['setConfirmAttributeCompleteStep', 'clearSelectedUserAttribute'], target: '#vefiryUserAttributesActor.resolved' },\n onError: { actions: 'setRemoteError', target: 'idle' },\n },\n },\n },\n },\n resolved: { type: 'final' },\n },\n output: ({ context }) => context,\n })\n}\n","import type { AuthUser } from '@aws-amplify/auth'\nimport { assign, forwardTo, fromPromise, setup } from 'xstate'\nimport { signInActor } from '~/machines/signIn/actor'\nimport type { AuthMachineHubHandlerOptions } from '~/types/authenticator'\nimport type { ActorDoneData, AuthContext, AuthEvent, Handlers } from '~/types/machines'\nimport { defaultHandlers } from './defaultHandlers'\nimport { forgotPasswordActor } from './forgotPassword/actor'\nimport {\n hasCompletedAttributeConfirmation,\n isConfirmSignUpStep,\n isConfirmUserAttributeStep,\n isResetPasswordStep,\n isShouldConfirmUserAttributeStep,\n} from './guards'\nimport { signOutActor } from './signOut/actor'\nimport { signUpActor } from './signUp/actor'\nimport { verifyUserAttributesActor } from './verifyUserAttributes/actor'\n\nexport type AuthenticatorMachineOptions = AuthContext['config'] & {\n handlers?: Partial<Handlers>\n} & AuthMachineHubHandlerOptions\n\n/**\n * @internal\n */\nexport const createAuthenticatorMachine = (options?: AuthenticatorMachineOptions) => {\n const { handlers: customHandlers, ...config } = options ?? {}\n const handlers = { ...defaultHandlers, ...customHandlers }\n\n return setup({\n types: {\n context: {} as AuthContext,\n events: {} as AuthEvent,\n },\n guards: {\n hasCompletedAttributeConfirmation: ({ event: { output } }) => hasCompletedAttributeConfirmation(output?.step),\n hasUser: ({ context }) => !!context.user,\n isInitialStateSignUp: ({ context }) => context.config?.initialState === 'signUp',\n isInitialStateResetPassword: ({ context }) => context.config?.initialState === 'forgotPassword',\n isConfirmSignUpStep: ({ event: { output } }) => isConfirmSignUpStep(output?.step),\n isConfirmUserAttributeStep: ({ event: { output } }) => isConfirmUserAttributeStep(output?.step),\n isShouldConfirmUserAttributeStep: ({ event: { output } }) => isShouldConfirmUserAttributeStep(output?.step),\n isResetPasswordStep: ({ event: { output } }) => isResetPasswordStep(output?.step),\n },\n actors: {\n getCurrentUser: fromPromise(() => handlers.getCurrentUser()),\n invokeSignInActor: signInActor(handlers),\n invokeSignUpActor: signUpActor(handlers),\n invokeForgotPasswordActor: forgotPasswordActor(handlers),\n invokeVerifyUserAttributesActor: verifyUserAttributesActor(handlers),\n invokeSignOutActor: signOutActor(handlers),\n },\n actions: {\n clearActorDoneData: assign({ actorDoneData: undefined }),\n clearUser: assign({ user: undefined }),\n forwardToActor: forwardTo('childActor'),\n setUser: assign({ user: ({ event }) => event.output as AuthUser }),\n setActorDoneData: assign({ actorDoneData: ({ event }) => event.output as ActorDoneData }),\n },\n }).createMachine({\n id: 'authenticator',\n initial: 'idle',\n context: {\n config,\n user: undefined,\n },\n states: {\n idle: {\n invoke: {\n src: 'getCurrentUser',\n onDone: { actions: 'setUser', target: '#authenticator.setup' },\n onError: { target: '#authenticator.setup' },\n },\n },\n setup: {\n initial: 'init',\n states: {\n init: {\n always: [\n { guard: 'hasUser', target: '#authenticator.authenticated' },\n { guard: 'isInitialStateSignUp', target: '#authenticator.signUpActor' },\n { guard: 'isInitialStateResetPassword', target: '#authenticator.forgotPasswordActor' },\n { target: '#authenticator.signInActor' },\n ],\n },\n },\n },\n getCurrentUser: {\n invoke: {\n src: 'getCurrentUser',\n onDone: { actions: 'setUser', target: '#authenticator.authenticated' },\n onError: { target: 'setup' },\n },\n },\n signInActor: {\n invoke: {\n id: 'childActor',\n src: 'invokeSignInActor',\n input: ({ context }) => context.actorDoneData,\n onDone: [\n { guard: 'hasCompletedAttributeConfirmation', target: '#authenticator.getCurrentUser' },\n { guard: 'isShouldConfirmUserAttributeStep', actions: 'setActorDoneData', target: '#authenticator.verifyUserAttributesActor' },\n { guard: 'isResetPasswordStep', actions: 'setActorDoneData', target: '#authenticator.forgotPasswordActor' },\n { guard: 'isConfirmSignUpStep', actions: 'setActorDoneData', target: '#authenticator.signUpActor' },\n ],\n },\n entry: 'clearActorDoneData',\n on: {\n FORGOT_PASSWORD: { target: '#authenticator.forgotPasswordActor' },\n SIGN_UP: { target: '#authenticator.signUpActor' },\n SIGN_IN: { actions: 'forwardToActor' },\n FEDERATED_SIGN_IN: { actions: 'forwardToActor' },\n SUBMIT: { actions: 'forwardToActor' },\n },\n },\n signUpActor: {\n invoke: {\n id: 'childActor',\n src: 'invokeSignUpActor',\n input: ({ context }) => context.actorDoneData,\n onDone: [\n { guard: 'hasCompletedAttributeConfirmation', actions: 'clearActorDoneData', target: '#authenticator.getCurrentUser' },\n { guard: 'isShouldConfirmUserAttributeStep', actions: 'setActorDoneData', target: '#authenticator.verifyUserAttributesActor' },\n { guard: 'isConfirmUserAttributeStep', actions: 'clearActorDoneData', target: '#authenticator.verifyUserAttributesActor' },\n { actions: 'setActorDoneData', target: '#authenticator.signInActor' },\n ],\n },\n on: {\n SIGN_IN: { target: '#authenticator.signInActor' },\n FEDERATED_SIGN_IN: { actions: 'forwardToActor' },\n RESEND: { actions: 'forwardToActor' },\n SUBMIT: { actions: 'forwardToActor' },\n },\n },\n forgotPasswordActor: {\n invoke: {\n id: 'childActor',\n src: 'invokeForgotPasswordActor',\n input: ({ context }) => context.actorDoneData,\n onDone: { target: '#authenticator.signInActor' },\n },\n exit: 'clearActorDoneData',\n on: {\n SIGN_IN: { target: '#authenticator.signInActor' },\n RESEND: { actions: 'forwardToActor' },\n SUBMIT: { actions: 'forwardToActor' },\n },\n },\n verifyUserAttributesActor: {\n invoke: {\n id: 'childActor',\n src: 'invokeVerifyUserAttributesActor',\n input: ({ context }) => context.actorDoneData,\n onDone: { actions: 'setActorDoneData', target: '#authenticator.getCurrentUser' },\n },\n on: {\n SKIP: { actions: 'forwardToActor' },\n RESEND: { actions: 'forwardToActor' },\n SUBMIT: { actions: 'forwardToActor' },\n },\n },\n authenticated: {\n initial: 'idle',\n on: {\n SIGN_OUT: { target: '#authenticator.signOut' },\n },\n states: {\n idle: {\n on: {\n TOKEN_REFRESH: { target: 'refreshUser' },\n },\n },\n refreshUser: {\n invoke: {\n src: 'getCurrentUser',\n onDone: { actions: 'setUser', target: 'idle' },\n onError: { target: '#authenticator.signOut' },\n },\n },\n },\n },\n signOut: {\n invoke: {\n id: 'childActor',\n src: 'invokeSignOutActor',\n onDone: { actions: 'clearUser', target: '#authenticator.setup' },\n },\n exit: 'clearActorDoneData',\n },\n },\n on: {\n CHILD_CHANGED: { actions: assign(({ context }) => context) },\n SIGN_IN_WITH_REDIRECT: { target: '#authenticator.getCurrentUser' },\n },\n })\n}\nexport type createAuthenticatorMachineReturnType = ReturnType<typeof createAuthenticatorMachine>\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { i as AuthenticatorMachineOptions } from "./types-BQSOxe-R.js";
2
- export { AuthenticatorMachineOptions };
1
+ import { a as createAuthenticatorMachineReturnType, i as AuthenticatorMachineOptions } from "./authenticator-CCnWvIl5.js";
2
+ export { AuthenticatorMachineOptions, createAuthenticatorMachineReturnType };
package/dist/machines.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as createAuthenticatorMachine } from "./machines-BRfb3dTb.js";
1
+ import { t as createAuthenticatorMachine } from "./machines-whqvCGDP.js";
2
2
  export { createAuthenticatorMachine };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gahojin-inc/amplify-auth-hooks",
3
- "version": "2026.4.0",
3
+ "version": "2026.4.4",
4
4
  "description": "Hooks for Amplify Auth",
5
5
  "author": "GAHOJIN, Inc.",
6
6
  "license": "Apache-2.0",
@@ -44,15 +44,15 @@
44
44
  },
45
45
  "dependencies": {
46
46
  "@aws-amplify/auth": "6.19.1",
47
- "@aws-amplify/core": "6.16.1",
47
+ "@aws-amplify/core": "6.16.2",
48
48
  "@xstate/react": "6.1.0",
49
49
  "xstate": "5.30.0"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@testing-library/react": "16.3.2",
53
- "jsdom": "29.0.1",
54
- "react": "19.2.4",
55
- "react-dom": "19.2.4"
53
+ "jsdom": "29.0.2",
54
+ "react": "19.2.5",
55
+ "react-dom": "19.2.5"
56
56
  },
57
57
  "peerDependencies": {
58
58
  "@aws-amplify/auth": "^6",
@@ -1 +0,0 @@
1
- {"version":3,"file":"machines-BRfb3dTb.js","names":[],"sources":["../src/machines/actions.ts","../src/machines/guards.ts","../src/machines/signIn/actor.ts","../src/machines/defaultHandlers.ts","../src/machines/forgotPassword/actor.ts","../src/machines/signOut/actor.ts","../src/machines/signUp/actor.ts","../src/machines/verifyUserAttributes/actor.ts","../src/machines/index.ts"],"sourcesContent":["import type {\n CodeDeliveryDetails,\n FetchUserAttributesOutput,\n ResetPasswordOutput,\n SendUserAttributeVerificationCodeOutput,\n SignInOutput,\n SignUpOutput,\n UserAttributeKey,\n} from '@aws-amplify/auth'\nimport type { AuthVerifiableAttributeKey } from '@aws-amplify/core/internals/utils'\nimport type {\n AuthEvent,\n AuthEventData,\n AuthMFAType,\n AuthTOTPSetupDetails,\n ResetPasswordStep,\n SignInContext,\n SignInStep,\n SignUpStep,\n Step,\n UnverifiedUserAttributes,\n} from './types'\n\ntype ActionParams<Context = unknown> = {\n context: Context\n event: AuthEvent\n}\n\nconst setTotpSecretCode = ({ event }: ActionParams): string | undefined => {\n const { sharedSecret } = (event.output?.nextStep?.totpSetupDetails ?? {}) as AuthTOTPSetupDetails\n return sharedSecret\n}\n\nconst setAllowedMfaTypes = ({ event }: ActionParams): AuthMFAType[] | undefined => {\n return event.output?.nextStep?.allowedMFATypes as AuthMFAType[]\n}\n\nconst setSignInStep: Step = 'SIGN_IN'\n\nconst setShouldVerifyUserAttributeStep: Step = 'SHOULD_CONFIRM_USER_ATTRIBUTE'\n\nconst setConfirmAttributeCompleteStep: Step = 'CONFIRM_ATTRIBUTE_COMPLETE'\n\nconst setConfirmSignUpStep: Step = 'CONFIRM_SIGN_UP'\n\nconst setNextSignInStep = ({ event }: ActionParams): SignInStep => {\n const output = (event.output ?? {}) as SignInOutput\n return output.nextStep?.signInStep === 'DONE' ? 'SIGN_IN_COMPLETE' : output.nextStep?.signInStep\n}\n\nconst setNextSignUpStep = ({ event }: ActionParams): SignUpStep => {\n const output = (event.output ?? {}) as SignUpOutput\n return output.nextStep?.signUpStep === 'DONE' ? 'SIGN_UP_COMPLETE' : output.nextStep?.signUpStep\n}\n\nconst setNextResetPasswordStep = ({ event }: ActionParams): ResetPasswordStep => {\n const output = (event.output ?? {}) as ResetPasswordOutput\n return output.nextStep?.resetPasswordStep === 'DONE' ? 'RESET_PASSWORD_COMPLETE' : output.nextStep?.resetPasswordStep\n}\n\nconst setMissingAttributes = ({ event }: ActionParams): string | undefined => event.output?.nextStep?.missingAttributes\n\nconst setRemoteError = ({ event }: ActionParams): string => {\n const error = event.error\n if (error?.name === 'NoUserPoolError') {\n return 'Configuration error (see console) – please contact the administrator'\n }\n return error?.message || String(error)\n}\n\nconst setUsername = ({ event }: ActionParams): string | undefined => event.data?.username\n\nconst setUser = ({ event }: ActionParams): AuthEventData | undefined => event.output\n\nconst setCodeDeliveryDetails = ({ event }: ActionParams): CodeDeliveryDetails<UserAttributeKey> => {\n const output = event.output\n if (output?.nextStep?.codeDeliveryDetails) {\n return output?.nextStep?.codeDeliveryDetails\n }\n return output as CodeDeliveryDetails<UserAttributeKey>\n}\n\nconst setUnverifiedUserAttributes = ({ event }: ActionParams): UnverifiedUserAttributes => {\n const { email, phone_number } = event.output as FetchUserAttributesOutput\n\n const unverifiedUserAttributes = {\n ...(email && { email }),\n ...(phone_number && { phone_number }),\n }\n\n return unverifiedUserAttributes\n}\n\nconst setSelectedUserAttribute = ({ event }: ActionParams): AuthVerifiableAttributeKey | undefined => {\n const output = event?.output as SendUserAttributeVerificationCodeOutput\n return output?.attributeName\n}\n\nconst setSignInActorDoneData = ({ event }: ActionParams<SignInContext>): SignInContext => {\n const output = event?.output ?? {}\n return {\n codeDeliveryDetails: output.codeDeliveryDetails,\n missingAttributes: output.missingAttributes,\n remoteError: output.remoteError,\n username: output.username,\n step: output.step,\n totpSecretCode: output.totpSecretCode,\n unverifiedUserAttributes: output.unverifiedUserAttributes,\n allowedMfaTypes: output.allowedMfaTypes,\n }\n}\n\nexport {\n setAllowedMfaTypes,\n setCodeDeliveryDetails,\n setConfirmAttributeCompleteStep,\n setConfirmSignUpStep,\n setMissingAttributes,\n setNextResetPasswordStep,\n setNextSignInStep,\n setNextSignUpStep,\n setRemoteError,\n setSelectedUserAttribute,\n setShouldVerifyUserAttributeStep,\n setSignInActorDoneData,\n setSignInStep,\n setTotpSecretCode,\n setUnverifiedUserAttributes,\n setUser,\n setUsername,\n}\n","/*\n * Copyright 2017 - 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * (C) 2025 GAHOJIN, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport type { FetchUserAttributesOutput, ResetPasswordOutput, SignInOutput, SignUpOutput } from '@aws-amplify/auth'\nimport type { AuthEvent, ResetPasswordContext, Step } from './types'\n\nconst SIGN_IN_STEP_MFA_CONFIRMATION: Step[] = ['CONFIRM_SIGN_IN_WITH_SMS_CODE', 'CONFIRM_SIGN_IN_WITH_TOTP_CODE', 'CONFIRM_SIGN_IN_WITH_EMAIL_CODE']\n\nexport const shouldConfirmSignInWithNewPassword = (event: AuthEvent): boolean => {\n const output = event.output as SignInOutput\n return output?.nextStep?.signInStep === 'CONFIRM_SIGN_IN_WITH_NEW_PASSWORD_REQUIRED'\n}\n\nexport const shouldResetPasswordFromSignIn = (event: AuthEvent): boolean => {\n const output = event.output as SignInOutput\n return output?.nextStep?.signInStep === 'RESET_PASSWORD'\n}\n\nexport const shouldConfirmSignUpFromSignIn = (event: AuthEvent): boolean => {\n const output = event.output as SignInOutput\n return output?.nextStep?.signInStep === 'CONFIRM_SIGN_UP'\n}\n\nexport const shouldAutoSignIn = (event: AuthEvent): boolean => {\n const output = event.output as SignUpOutput\n return output?.nextStep?.signUpStep === 'COMPLETE_AUTO_SIGN_IN'\n}\n\nexport const hasCompletedSignIn = (event: AuthEvent): boolean => {\n const output = event.output as SignInOutput\n return output?.nextStep?.signInStep === 'DONE'\n}\n\nexport const hasCompletedSignUp = (event: AuthEvent): boolean => {\n const output = event.output as SignUpOutput\n return output?.nextStep?.signUpStep === 'DONE'\n}\n\nexport const hasCompletedResetPassword = (event: AuthEvent): boolean => {\n const output = event.output as ResetPasswordOutput\n return output?.nextStep?.resetPasswordStep === 'DONE'\n}\n\nexport const hasCompletedAttributeConfirmation = (step: Step): boolean => {\n return step === 'CONFIRM_ATTRIBUTE_COMPLETE'\n}\n\nexport const isConfirmUserAttributeStep = (step: Step): boolean => {\n return step === 'CONFIRM_ATTRIBUTE_WITH_CODE'\n}\n\nexport const isShouldConfirmUserAttributeStep = (step: Step): boolean => {\n return step === 'SHOULD_CONFIRM_USER_ATTRIBUTE'\n}\n\nexport const isResetPasswordStep = (step: Step): boolean => {\n return step === 'RESET_PASSWORD'\n}\n\nexport const isConfirmSignUpStep = (step: Step): boolean => {\n return step === 'CONFIRM_SIGN_UP'\n}\n\nexport const isShouldConfirmSignInWithNewPassword = (step: Step): boolean => {\n return step === 'CONFIRM_SIGN_IN_WITH_NEW_PASSWORD_REQUIRED'\n}\n\nexport const shouldConfirmSignIn = (step: Step): boolean => {\n return SIGN_IN_STEP_MFA_CONFIRMATION.includes(step)\n}\n\nexport const shouldSetupTotp = (step: Step): boolean => {\n return step === 'CONTINUE_SIGN_IN_WITH_TOTP_SETUP'\n}\n\nexport const shouldSetupEmail = (step: Step): boolean => {\n return step === 'CONTINUE_SIGN_IN_WITH_EMAIL_SETUP'\n}\n\nexport const shouldSelectMfaType = (step: Step): boolean => {\n return ['CONTINUE_SIGN_IN_WITH_MFA_SELECTION', 'CONTINUE_SIGN_IN_WITH_MFA_SETUP_SELECTION'].includes(step)\n}\n\nexport const shouldResetPassword = (context: ResetPasswordContext, event: AuthEvent): boolean => {\n const step = event?.input?.step ?? context.step\n return step === 'RESET_PASSWORD'\n}\n\nexport const shouldConfirmResetPassword = (context: ResetPasswordContext, event: AuthEvent): boolean => {\n const step = event?.input?.step ?? context.step\n return step === 'CONFIRM_RESET_PASSWORD_WITH_CODE'\n}\n\nexport const shouldVerifyAttribute = (event: AuthEvent): boolean => {\n const { email, phone_number, phone_number_verified, email_verified } = (event.output ?? {}) as FetchUserAttributesOutput\n\n // if neither email nor phone_number exist\n // there is nothing to verify\n if (!email && !phone_number) {\n return false\n }\n\n // email/phone_verified is returned as a string\n const emailVerified = email_verified === 'true'\n const phoneVerified = phone_number_verified === 'true'\n\n // only request verification if both email and phone are not verified\n return !emailVerified && !phoneVerified\n}\n\nexport const isUserAlreadyConfirmed = (event: AuthEvent): boolean => {\n return event.error?.message === 'User is already confirmed.'\n}\n","import type {\n ConfirmSignInInput,\n ConfirmSignInOutput,\n ResendSignUpCodeInput,\n ResendSignUpCodeOutput,\n ResetPasswordInput,\n ResetPasswordOutput,\n SignInInput,\n SignInOutput,\n SignInWithRedirectInput,\n} from '@aws-amplify/auth'\nimport { assign, fromPromise, sendParent, setup } from 'xstate'\nimport {\n setAllowedMfaTypes,\n setCodeDeliveryDetails,\n setConfirmSignUpStep,\n setNextSignInStep,\n setRemoteError,\n setShouldVerifyUserAttributeStep,\n setSignInActorDoneData,\n setTotpSecretCode,\n setUnverifiedUserAttributes,\n setUsername,\n} from '../actions'\nimport {\n hasCompletedSignIn,\n isShouldConfirmSignInWithNewPassword,\n shouldConfirmSignIn,\n shouldConfirmSignInWithNewPassword,\n shouldConfirmSignUpFromSignIn,\n shouldResetPasswordFromSignIn,\n shouldSelectMfaType,\n shouldSetupEmail,\n shouldSetupTotp,\n shouldVerifyAttribute,\n} from '../guards'\nimport type { AuthEvent, Handlers, SignInContext } from '../types'\n\ntype SignInHandlers = Pick<Handlers, 'confirmSignIn' | 'fetchUserAttributes' | 'resetPassword' | 'signIn' | 'signInWithRedirect' | 'resendSignUpCode'>\n\n/**\n * @internal\n */\nexport const signInActor = (handlers: SignInHandlers, overridesContext?: SignInContext) => {\n const machineSetup = setup({\n types: {\n context: {} as SignInContext,\n events: {} as AuthEvent,\n },\n guards: {\n shouldConfirmSignIn: ({ context: { step } }) => shouldConfirmSignIn(step),\n shouldSetupTotp: ({ context: { step } }) => shouldSetupTotp(step),\n shouldSetupEmail: ({ context: { step } }) => shouldSetupEmail(step),\n shouldSelectMfaType: ({ context: { step } }) => shouldSelectMfaType(step),\n shouldVerifyAttribute: ({ event }) => shouldVerifyAttribute(event),\n shouldConfirmSignInWithNewPassword: ({ event }) => shouldConfirmSignInWithNewPassword(event),\n shouldResetPasswordFromSignIn: ({ event }) => shouldResetPasswordFromSignIn(event),\n shouldConfirmSignUpFromSignIn: ({ event }) => shouldConfirmSignUpFromSignIn(event),\n hasCompletedSignIn: ({ event }) => hasCompletedSignIn(event),\n isShouldConfirmSignInWithNewPassword: ({ context: { step } }) => isShouldConfirmSignInWithNewPassword(step),\n },\n actors: {\n fetchUserAttributes: fromPromise(() => handlers.fetchUserAttributes()),\n resetPassword: fromPromise<ResetPasswordOutput, ResetPasswordInput>(({ input }) => handlers.resetPassword(input)),\n resendSignUpCode: fromPromise<ResendSignUpCodeOutput, ResendSignUpCodeInput>(({ input }) => handlers.resendSignUpCode(input)),\n signIn: fromPromise<SignInOutput, SignInInput>(({ input }) => handlers.signIn(input)),\n confirmSignIn: fromPromise<ConfirmSignInOutput, ConfirmSignInInput>(({ input }) => handlers.confirmSignIn(input)),\n signInWithRedirect: fromPromise<void, SignInWithRedirectInput>(({ input }) => handlers.signInWithRedirect(input)),\n },\n actions: {\n sendUpdate: sendParent({ type: 'CHILD_CHANGED' }),\n setShouldVerifyUserAttributeStep: assign({ step: setShouldVerifyUserAttributeStep }),\n setUnverifiedUserAttributes: assign({ unverifiedUserAttributes: setUnverifiedUserAttributes }),\n setCodeDeliveryDetails: assign({ codeDeliveryDetails: setCodeDeliveryDetails }),\n setConfirmAttributeCompleteStep: assign({ step: 'CONFIRM_ATTRIBUTE_COMPLETE' }),\n setTotpSecretCode: assign({ totpSecretCode: setTotpSecretCode }),\n setAllowedMfaTypes: assign({ allowedMfaTypes: setAllowedMfaTypes }),\n setNextSignInStep: assign({ step: setNextSignInStep }),\n setConfirmSignUpStep: assign({ step: setConfirmSignUpStep }),\n setActorDoneData: assign(setSignInActorDoneData),\n setUsername: assign({ username: setUsername }),\n setRemoteError: assign({ remoteError: setRemoteError }),\n clearError: assign({ remoteError: undefined }),\n },\n })\n\n const handleSignInResponse = machineSetup.createStateConfig({\n onDone: [\n { guard: 'hasCompletedSignIn', actions: 'setNextSignInStep', target: '#signInActor.fetchUserAttributes' },\n { guard: 'shouldConfirmSignInWithNewPassword', actions: 'setNextSignInStep', target: '#signInActor.forceChangePassword' },\n { guard: 'shouldResetPasswordFromSignIn', actions: 'setNextSignInStep', target: '#signInActor.resetPassword' },\n { guard: 'shouldConfirmSignUpFromSignIn', actions: 'setNextSignInStep', target: '#signInActor.resendSignUpCode' },\n { actions: ['setNextSignInStep', 'setTotpSecretCode', 'setAllowedMfaTypes'], target: '#signInActor.init' },\n ],\n })\n const confirmSignInState = machineSetup.createStateConfig({\n initial: 'idle',\n exit: 'clearError',\n states: {\n idle: {\n entry: 'sendUpdate',\n on: {\n SUBMIT: { target: 'submit' },\n SIGN_IN: { target: '#signInActor.signIn' },\n },\n },\n submit: {\n tags: 'pending',\n entry: ['sendUpdate', 'clearError'],\n invoke: {\n src: 'confirmSignIn',\n input: ({ event }) => event.data as ConfirmSignInInput,\n ...handleSignInResponse,\n onError: { actions: 'setRemoteError', target: 'idle' },\n },\n },\n },\n })\n\n return machineSetup.createMachine({\n id: 'signInActor',\n context: ({ input }) => ({ step: 'SIGN_IN', ...overridesContext, ...input }),\n initial: 'init',\n states: {\n init: {\n always: [\n { guard: 'shouldConfirmSignIn', target: '#signInActor.confirmSignIn' },\n { guard: 'shouldSetupTotp', target: '#signInActor.setupTotp' },\n { guard: 'shouldSetupEmail', target: '#signInActor.setupEmail' },\n { guard: 'shouldSelectMfaType', target: '#signInActor.selectMfaType' },\n { guard: 'isShouldConfirmSignInWithNewPassword', actions: 'setActorDoneData', target: '#signInActor.forceChangePassword' },\n { target: '#signInActor.signIn' },\n ],\n },\n federatedSignIn: {\n entry: ['sendUpdate', 'clearError'],\n invoke: {\n src: 'signInWithRedirect',\n input: ({ event }) => event.data as SignInWithRedirectInput,\n onDone: { target: '#signInActor.signIn' },\n onError: { actions: 'setRemoteError', target: '#signInActor.signIn' },\n },\n },\n fetchUserAttributes: {\n invoke: {\n src: 'fetchUserAttributes',\n onDone: [\n {\n guard: 'shouldVerifyAttribute',\n actions: ['setShouldVerifyUserAttributeStep', 'setUnverifiedUserAttributes'],\n target: '#signInActor.resolved',\n },\n { actions: 'setConfirmAttributeCompleteStep', target: '#signInActor.resolved' },\n ],\n onError: { actions: 'setConfirmAttributeCompleteStep', target: '#signInActor.resolved' },\n },\n },\n resendSignUpCode: {\n tags: 'pending',\n invoke: {\n src: 'resendSignUpCode',\n input: ({ context: { username }, event }) => ({ username, ...event.data }) as ResendSignUpCodeInput,\n onDone: { actions: 'setCodeDeliveryDetails', target: '#signInActor.resolved' },\n onError: { actions: 'setRemoteError', target: '#signInActor.signIn' },\n },\n },\n resetPassword: {\n invoke: {\n src: 'resetPassword',\n input: ({ context: { username }, event }) => ({ username, ...event.data }) as ResetPasswordInput,\n onDone: { actions: 'setCodeDeliveryDetails', target: '#signInActor.resolved' },\n onError: { actions: ['setRemoteError', 'sendUpdate'] },\n },\n },\n signIn: {\n initial: 'idle',\n states: {\n idle: {\n entry: 'sendUpdate',\n on: {\n FEDERATED_SIGN_IN: { target: '#signInActor.federatedSignIn' },\n SUBMIT: { target: 'submit' },\n },\n },\n submit: {\n tags: 'pending',\n entry: ['sendUpdate', 'setUsername', 'clearError'],\n invoke: {\n src: 'signIn',\n input: ({ event }) => event.data as SignInInput,\n ...handleSignInResponse,\n onError: [\n { guard: 'shouldConfirmSignUpFromSignIn', actions: 'setConfirmSignUpStep', target: '#signInActor.resendSignUpCode' },\n { actions: 'setRemoteError', target: 'idle' },\n ],\n },\n },\n },\n },\n confirmSignIn: confirmSignInState,\n forceChangePassword: {\n initial: 'idle',\n entry: 'clearError',\n exit: 'clearError',\n states: {\n idle: {\n entry: 'sendUpdate',\n on: { SUBMIT: { target: 'submit' } },\n },\n submit: {\n tags: 'pending',\n entry: ['sendUpdate', 'clearError'],\n invoke: {\n src: 'confirmSignIn',\n input: ({ event }) => event.data as ConfirmSignInInput,\n ...handleSignInResponse,\n onError: { actions: 'setRemoteError', target: 'idle' },\n },\n },\n },\n },\n setupTotp: confirmSignInState,\n setupEmail: confirmSignInState,\n selectMfaType: confirmSignInState,\n resolved: { type: 'final' },\n },\n output: ({ context }) => context,\n })\n}\n","import {\n autoSignIn,\n confirmResetPassword,\n confirmSignIn,\n confirmSignUp,\n confirmUserAttribute,\n fetchUserAttributes,\n getCurrentUser,\n resendSignUpCode,\n resetPassword,\n sendUserAttributeVerificationCode,\n signIn,\n signInWithRedirect,\n signOut,\n signUp,\n} from '@aws-amplify/auth'\nimport type { Handlers } from './types'\n\nexport const defaultHandlers: Handlers = {\n getCurrentUser,\n fetchUserAttributes,\n signIn,\n signInWithRedirect,\n signUp,\n signOut,\n autoSignIn: () => autoSignIn(),\n confirmSignIn,\n confirmSignUp,\n confirmResetPassword,\n confirmUserAttribute,\n resetPassword,\n resendSignUpCode,\n sendUserAttributeVerificationCode,\n}\n","import type { ConfirmResetPasswordInput, ResetPasswordInput, ResetPasswordOutput } from '@aws-amplify/auth'\nimport { assign, fromPromise, sendParent, setup } from 'xstate'\nimport { setCodeDeliveryDetails, setNextResetPasswordStep, setNextSignInStep, setRemoteError, setUsername } from '../actions'\nimport { hasCompletedResetPassword, shouldConfirmResetPassword, shouldResetPassword } from '../guards'\nimport type { AuthEvent, Handlers, ResetPasswordContext } from '../types'\n\ntype ForgotPasswordHandlers = Pick<Handlers, 'resetPassword' | 'confirmResetPassword'>\n\n/**\n * @internal\n */\nexport const forgotPasswordActor = (handlers: ForgotPasswordHandlers, overridesContext?: ResetPasswordContext) => {\n return setup({\n types: {\n context: {} as ResetPasswordContext,\n events: {} as AuthEvent,\n },\n guards: {\n shouldResetPassword: ({ context, event }) => shouldResetPassword(context, event),\n shouldConfirmResetPassword: ({ context, event }) => shouldConfirmResetPassword(context, event),\n hasCompletedResetPassword: ({ event }) => hasCompletedResetPassword(event),\n },\n actors: {\n resetPassword: fromPromise<ResetPasswordOutput, ResetPasswordInput>(({ input }) => handlers.resetPassword(input)),\n confirmResetPassword: fromPromise<void, ConfirmResetPasswordInput>(({ input }) => handlers.confirmResetPassword(input)),\n },\n actions: {\n sendUpdate: sendParent({ type: 'CHILD_CHANGED' }),\n setCodeDeliveryDetails: assign({ codeDeliveryDetails: setCodeDeliveryDetails }),\n setNextResetPasswordStep: assign({ step: setNextResetPasswordStep }),\n setSignInStep: assign({ step: setNextSignInStep }),\n setUsername: assign({ username: setUsername }),\n setRemoteError: assign({ remoteError: setRemoteError }),\n clearError: assign({ remoteError: undefined }),\n },\n }).createMachine({\n id: 'forgotPasswordActor',\n initial: 'init',\n context: ({ input }) => ({ step: 'FORGOT_PASSWORD', ...overridesContext, ...input }),\n states: {\n init: {\n always: [\n { guard: 'shouldResetPassword', target: '#forgotPasswordActor.confirmResetPassword' },\n { guard: 'shouldConfirmResetPassword', target: '#forgotPasswordActor.confirmResetPassword' },\n { target: '#forgotPasswordActor.forgotPassword' },\n ],\n },\n forgotPassword: {\n initial: 'idle',\n exit: 'clearError',\n states: {\n idle: {\n entry: 'sendUpdate',\n on: {\n SUBMIT: { target: 'submit' },\n },\n },\n submit: {\n tags: 'pending',\n entry: ['sendUpdate', 'setUsername', 'clearError'],\n invoke: {\n src: 'resetPassword',\n input: ({ context: { username } }) => ({ username }) as ResetPasswordInput,\n onDone: [{ actions: ['setCodeDeliveryDetails', 'setNextResetPasswordStep'], target: '#forgotPasswordActor.confirmResetPassword' }],\n onError: { actions: 'setRemoteError', target: 'idle' },\n },\n },\n },\n },\n confirmResetPassword: {\n initial: 'idle',\n exit: 'clearError',\n states: {\n idle: {\n entry: 'sendUpdate',\n on: {\n SUBMIT: { target: 'submit' },\n RESEND: { target: 'resendCode' },\n },\n },\n resendCode: {\n tags: 'pending',\n entry: ['sendUpdate', 'clearError'],\n invoke: {\n src: 'resetPassword',\n input: ({ context: { username } }) => ({ username }) as ResetPasswordInput,\n onDone: { target: 'idle' },\n onError: { actions: 'setRemoteError', target: 'idle' },\n },\n },\n submit: {\n tags: 'pending',\n entry: ['sendUpdate', 'clearError'],\n invoke: {\n src: 'confirmResetPassword',\n input: ({ context, event }) => ({ username: context.username, ...event.data }) as ConfirmResetPasswordInput,\n onDone: [\n { guard: 'hasCompletedResetPassword', actions: 'setNextResetPasswordStep', target: '#forgotPasswordActor.resolved' },\n { actions: 'setSignInStep', target: '#forgotPasswordActor.resolved' },\n ],\n onError: { actions: 'setRemoteError', target: 'idle' },\n },\n },\n },\n },\n resolved: { type: 'final' },\n },\n output: ({ context }) => context,\n })\n}\n","import { fromPromise, setup } from 'xstate'\nimport type { Handlers, SignOutContext } from '../types'\n\ntype SignOutHandlers = Pick<Handlers, 'signOut'>\n\n/**\n * @internal\n */\nexport const signOutActor = (handlers: SignOutHandlers) => {\n return setup({\n types: {\n context: {} as SignOutContext,\n },\n actors: {\n signOut: fromPromise(() => handlers.signOut()),\n },\n }).createMachine({\n id: 'signOutActor',\n initial: 'pending',\n context: {},\n states: {\n pending: {\n tags: 'pending',\n invoke: {\n src: 'signOut',\n onDone: 'resolved',\n onError: 'rejected',\n },\n },\n resolved: { type: 'final' },\n rejected: { type: 'final' },\n },\n output: ({ context }) => context,\n })\n}\n","import type {\n ConfirmSignUpInput,\n ConfirmSignUpOutput,\n ResendSignUpCodeInput,\n ResendSignUpCodeOutput,\n ResetPasswordInput,\n ResetPasswordOutput,\n SignInWithRedirectInput,\n SignUpInput,\n SignUpOutput,\n} from '@aws-amplify/auth'\nimport { assign, fromPromise, sendParent, setup } from 'xstate'\nimport { setCodeDeliveryDetails, setNextSignUpStep, setRemoteError, setUnverifiedUserAttributes, setUsername } from '../actions'\nimport {\n hasCompletedSignIn,\n hasCompletedSignUp,\n isUserAlreadyConfirmed,\n shouldAutoSignIn,\n shouldConfirmSignInWithNewPassword,\n shouldConfirmSignUpFromSignIn,\n shouldResetPasswordFromSignIn,\n shouldVerifyAttribute,\n} from '../guards'\nimport type { AuthEvent, Handlers, SignUpContext } from '../types'\n\ntype SignUpHandlers = Pick<\n Handlers,\n 'autoSignIn' | 'confirmSignUp' | 'signInWithRedirect' | 'signUp' | 'resetPassword' | 'resendSignUpCode' | 'fetchUserAttributes'\n>\n\n/**\n * @internal\n */\nexport const signUpActor = (handlers: SignUpHandlers, overridesContext?: SignUpContext) => {\n return setup({\n types: {\n context: {} as SignUpContext,\n events: {} as AuthEvent,\n },\n guards: {\n hasCompletedSignIn: ({ event }) => hasCompletedSignIn(event),\n hasCompletedSignUp: ({ event }) => hasCompletedSignUp(event),\n isUserAlreadyConfirmed: ({ event }) => isUserAlreadyConfirmed(event),\n shouldAutoSignIn: ({ event }) => shouldAutoSignIn(event),\n shouldConfirmSignInWithNewPassword: ({ event }) => shouldConfirmSignInWithNewPassword(event),\n shouldConfirmSignUp: ({ context: { step } }) => step === 'CONFIRM_SIGN_UP',\n shouldConfirmSignUpFromSignIn: ({ event }) => shouldConfirmSignUpFromSignIn(event),\n shouldResetPasswordFromSignIn: ({ event }) => shouldResetPasswordFromSignIn(event),\n shouldVerifyAttribute: ({ event }) => shouldVerifyAttribute(event),\n },\n actors: {\n autoSignIn: fromPromise(() => handlers.autoSignIn()),\n confirmSignUp: fromPromise<ConfirmSignUpOutput, ConfirmSignUpInput>(({ input }) => handlers.confirmSignUp(input)),\n fetchUserAttributes: fromPromise(() => handlers.fetchUserAttributes()),\n resetPassword: fromPromise<ResetPasswordOutput, ResetPasswordInput>(({ input }) => handlers.resetPassword(input)),\n resendSignUpCode: fromPromise<ResendSignUpCodeOutput, ResendSignUpCodeInput>(({ input }) => handlers.resendSignUpCode(input)),\n signUp: fromPromise<SignUpOutput, SignUpInput>(({ input }) => handlers.signUp(input)),\n signInWithRedirect: fromPromise<void, SignInWithRedirectInput>(({ input }) => handlers.signInWithRedirect(input)),\n },\n actions: {\n sendUpdate: sendParent({ type: 'CHILD_CHANGED' }),\n setShouldVerifyUserAttributeStep: assign({ unverifiedUserAttributes: setUnverifiedUserAttributes }),\n setConfirmAttributeCompleteStep: assign({ step: 'CONFIRM_ATTRIBUTE_COMPLETE' }),\n setCodeDeliveryDetails: assign({ codeDeliveryDetails: setCodeDeliveryDetails }),\n setNextSignUpStep: assign({ step: setNextSignUpStep }),\n setUsername: assign({ username: setUsername }),\n setRemoteError: assign({ remoteError: setRemoteError }),\n clearError: assign({ remoteError: undefined }),\n },\n }).createMachine({\n id: 'signUpActor',\n initial: 'init',\n context: ({ input }) => ({ step: 'SIGN_UP', ...overridesContext, ...input }),\n states: {\n init: {\n always: [{ guard: 'shouldConfirmSignUp', target: 'confirmSignUp' }, { target: '#signUpActor.signUp' }],\n },\n autoSignIn: {\n tags: 'pending',\n invoke: {\n src: 'autoSignIn',\n onDone: [\n { guard: 'hasCompletedSignIn', target: '#signUpActor.fetchUserAttributes' },\n { guard: 'shouldConfirmSignInWithNewPassword', target: '#signUpActor.resolved' },\n { guard: 'shouldResetPasswordFromSignIn', target: '#signUpActor.resetPassword' },\n { guard: 'shouldConfirmSignUpFromSignIn', target: '#signUpActor.resendSignUpCode' },\n { target: '#signUpActor.resolved' },\n ],\n onError: { target: '#signUpActor.resolved' },\n },\n },\n fetchUserAttributes: {\n invoke: {\n src: 'fetchUserAttributes',\n onDone: [\n {\n guard: 'shouldVerifyAttribute',\n actions: ['setShouldVerifyUserAttributeStep', 'setConfirmAttributeCompleteStep'],\n target: '#signUpActor.resolved',\n },\n { actions: 'setConfirmAttributeCompleteStep', target: '#signUpActor.resolved' },\n ],\n onError: { actions: 'setConfirmAttributeCompleteStep', target: '#signUpActor.resolved' },\n },\n },\n federatedSignIn: {\n entry: ['sendUpdate', 'clearError'],\n invoke: {\n src: 'signInWithRedirect',\n input: ({ event }) => event.data as SignInWithRedirectInput,\n onDone: 'signUp',\n onError: { actions: 'setRemoteError', target: '#signUpActor.signUp' },\n },\n },\n resetPassword: {\n invoke: {\n src: 'resetPassword',\n input: ({ event }) => event.data as ResetPasswordInput,\n onDone: { actions: 'setCodeDeliveryDetails', target: '#signUpActor.resolved' },\n onError: { actions: 'setRemoteError' },\n },\n },\n resendSignUpCode: {\n tags: 'pending',\n entry: 'sendUpdate',\n exit: 'sendUpdate',\n invoke: {\n src: 'resendSignUpCode',\n input: ({ context: { username }, event }) => ({ username, ...event.data }) as ResendSignUpCodeInput,\n onDone: { actions: 'setCodeDeliveryDetails', target: '#signUpActor.confirmSignUp' },\n onError: [{ guard: 'isUserAlreadyConfirmed', target: '#signUpActor.resolved' }, { actions: 'setRemoteError' }],\n },\n },\n signUp: {\n initial: 'idle',\n exit: 'clearError',\n on: {\n FEDERATED_SIGN_IN: { target: '#signUpActor.federatedSignIn' },\n },\n states: {\n idle: {\n entry: 'sendUpdate',\n on: {\n SUBMIT: { target: 'submit' },\n },\n },\n submit: {\n tags: 'pending',\n entry: ['sendUpdate', 'setUsername', 'clearError'],\n invoke: {\n src: 'signUp',\n input: ({ event }) => event.data as SignUpInput,\n onDone: [\n { guard: 'hasCompletedSignUp', actions: 'setNextSignUpStep', target: '#signUpActor.resolved' },\n { guard: 'shouldAutoSignIn', actions: 'setNextSignUpStep', target: '#signUpActor.autoSignIn' },\n { actions: ['setCodeDeliveryDetails', 'setNextSignUpStep'], target: '#signUpActor.init' },\n ],\n onError: { actions: 'setRemoteError', target: 'idle' },\n },\n },\n },\n },\n confirmSignUp: {\n initial: 'idle',\n exit: 'clearError',\n states: {\n idle: {\n entry: 'sendUpdate',\n on: {\n SUBMIT: { target: 'submit' },\n RESEND: { target: '#signUpActor.resendSignUpCode' },\n },\n },\n submit: {\n tags: 'pending',\n entry: ['sendUpdate', 'clearError'],\n invoke: {\n src: 'confirmSignUp',\n input: ({ context: { username }, event }) => ({ username, ...event.data }) as ConfirmSignUpInput,\n onDone: [\n { guard: 'hasCompletedSignUp', actions: 'setNextSignUpStep', target: '#signUpActor.resolved' },\n { guard: 'shouldAutoSignIn', actions: 'setNextSignUpStep', target: '#signUpActor.autoSignIn' },\n { actions: 'setNextSignUpStep', target: '#signUpActor.init' },\n ],\n onError: { actions: 'setRemoteError', target: 'idle' },\n },\n },\n },\n },\n resolved: { type: 'final' },\n },\n output: ({ context }) => context,\n })\n}\n","import type { ConfirmUserAttributeInput, SendUserAttributeVerificationCodeInput, SendUserAttributeVerificationCodeOutput } from '@aws-amplify/auth'\nimport { assign, fromPromise, sendParent, setup } from 'xstate'\nimport { setCodeDeliveryDetails, setConfirmAttributeCompleteStep, setRemoteError, setSelectedUserAttribute } from '../actions'\nimport type { AuthEvent, Handlers, VerifyUserContext } from '../types'\n\ntype VerifyUserAttributesHandlers = Pick<Handlers, 'sendUserAttributeVerificationCode' | 'confirmUserAttribute'>\n\n/**\n * @internal\n */\nexport const verifyUserAttributesActor = (handlers: VerifyUserAttributesHandlers, overridesContext?: VerifyUserContext) => {\n return setup({\n types: {\n context: {} as VerifyUserContext,\n events: {} as AuthEvent,\n },\n guards: {},\n actors: {\n sendUserAttributeVerificationCode: fromPromise<SendUserAttributeVerificationCodeOutput, SendUserAttributeVerificationCodeInput>(({ input }) =>\n handlers.sendUserAttributeVerificationCode(input),\n ),\n confirmVerifyUserAttribute: fromPromise<void, ConfirmUserAttributeInput>(({ input }) => handlers.confirmUserAttribute(input)),\n },\n actions: {\n sendUpdate: sendParent({ type: 'CHILD_CHANGED' }),\n setCodeDeliveryDetails: assign({ codeDeliveryDetails: setCodeDeliveryDetails }),\n setSelectedUserAttribute: assign({ selectedUserAttribute: setSelectedUserAttribute }),\n setConfirmAttributeCompleteStep: assign({ step: setConfirmAttributeCompleteStep }),\n setRemoteError: assign({ remoteError: setRemoteError }),\n clearError: assign({ remoteError: undefined }),\n clearSelectedUserAttribute: assign({ selectedUserAttribute: undefined }),\n },\n }).createMachine({\n id: 'vefiryUserAttributesActor',\n initial: 'selectUserAttributes',\n context: ({ input }) => ({ step: 'SIGN_IN', ...overridesContext, ...input }),\n states: {\n selectUserAttributes: {\n initial: 'idle',\n exit: 'clearError',\n states: {\n idle: {\n entry: 'sendUpdate',\n on: {\n SKIP: { target: '#vefiryUserAttributesActor.resolved' },\n SUBMIT: { target: 'submit' },\n },\n },\n submit: {\n tags: 'pending',\n entry: ['sendUpdate', 'clearError'],\n invoke: {\n src: 'sendUserAttributeVerificationCode',\n input: ({ event }) => event.data as SendUserAttributeVerificationCodeInput,\n onDone: {\n actions: ['setSelectedUserAttribute', 'setCodeDeliveryDetails'],\n target: '#vefiryUserAttributesActor.confirmVerifyUserAttribute',\n },\n onError: { actions: 'setRemoteError', target: 'idle' },\n },\n },\n },\n },\n confirmVerifyUserAttribute: {\n initial: 'idle',\n exit: 'clearError',\n states: {\n idle: {\n entry: 'sendUpdate',\n on: {\n SUBMIT: { target: 'submit' },\n RESEND: { target: 'resendCode' },\n SKIP: { target: '#vefiryUserAttributesActor.resolved' },\n },\n },\n resendCode: {\n tags: 'pending',\n entry: ['sendUpdate', 'clearError'],\n invoke: {\n src: 'sendUserAttributeVerificationCode',\n input: ({ context, event }) =>\n ({ userAttributeKey: context.selectedUserAttribute, ...event.data }) as SendUserAttributeVerificationCodeInput,\n onDone: { target: 'idle' },\n onError: { actions: 'setRemoteError', target: 'idle' },\n },\n },\n submit: {\n tags: 'pending',\n entry: ['sendUpdate', 'clearError'],\n invoke: {\n src: 'confirmVerifyUserAttribute',\n input: ({ context, event }) => ({ userAttributeKey: context.selectedUserAttribute, ...event.data }) as ConfirmUserAttributeInput,\n onDone: { actions: ['setConfirmAttributeCompleteStep', 'clearSelectedUserAttribute'], target: '#vefiryUserAttributesActor.resolved' },\n onError: { actions: 'setRemoteError', target: 'idle' },\n },\n },\n },\n },\n resolved: { type: 'final' },\n },\n output: ({ context }) => context,\n })\n}\n","import type { AuthUser } from '@aws-amplify/auth'\nimport { assign, forwardTo, fromPromise, setup } from 'xstate'\nimport type { AuthMachineHubHandlerOptions } from '../authenticator/types'\nimport { signInActor } from '../machines/signIn/actor'\nimport { defaultHandlers } from './defaultHandlers'\nimport { forgotPasswordActor } from './forgotPassword/actor'\nimport {\n hasCompletedAttributeConfirmation,\n isConfirmSignUpStep,\n isConfirmUserAttributeStep,\n isResetPasswordStep,\n isShouldConfirmUserAttributeStep,\n} from './guards'\nimport { signOutActor } from './signOut/actor'\nimport { signUpActor } from './signUp/actor'\nimport type { ActorDoneData, AuthContext, AuthEvent, Handlers } from './types'\nimport { verifyUserAttributesActor } from './verifyUserAttributes/actor'\n\nexport type AuthenticatorMachineOptions = AuthContext['config'] & {\n handlers?: Partial<Handlers>\n} & AuthMachineHubHandlerOptions\n\n/**\n * @internal\n */\nexport const createAuthenticatorMachine = (options?: AuthenticatorMachineOptions) => {\n const { handlers: customHandlers, ...config } = options ?? {}\n const handlers = { ...defaultHandlers, ...customHandlers }\n\n return setup({\n types: {\n context: {} as AuthContext,\n events: {} as AuthEvent,\n },\n guards: {\n hasCompletedAttributeConfirmation: ({ event: { output } }) => hasCompletedAttributeConfirmation(output?.step),\n hasUser: ({ context }) => !!context.user,\n isInitialStateSignUp: ({ context }) => context.config?.initialState === 'signUp',\n isInitialStateResetPassword: ({ context }) => context.config?.initialState === 'forgotPassword',\n isConfirmSignUpStep: ({ event: { output } }) => isConfirmSignUpStep(output?.step),\n isConfirmUserAttributeStep: ({ event: { output } }) => isConfirmUserAttributeStep(output?.step),\n isShouldConfirmUserAttributeStep: ({ event: { output } }) => isShouldConfirmUserAttributeStep(output?.step),\n isResetPasswordStep: ({ event: { output } }) => isResetPasswordStep(output?.step),\n },\n actors: {\n getCurrentUser: fromPromise(() => handlers.getCurrentUser()),\n invokeSignInActor: signInActor(handlers),\n invokeSignUpActor: signUpActor(handlers),\n invokeForgotPasswordActor: forgotPasswordActor(handlers),\n invokeVerifyUserAttributesActor: verifyUserAttributesActor(handlers),\n invokeSignOutActor: signOutActor(handlers),\n },\n actions: {\n clearActorDoneData: assign({ actorDoneData: undefined }),\n clearUser: assign({ user: undefined }),\n forwardToActor: forwardTo('childActor'),\n setUser: assign({ user: ({ event }) => event.output as AuthUser }),\n setActorDoneData: assign({ actorDoneData: ({ event }) => event.output as ActorDoneData }),\n },\n }).createMachine({\n id: 'authenticator',\n initial: 'idle',\n context: {\n config,\n user: undefined,\n },\n states: {\n idle: {\n invoke: {\n src: 'getCurrentUser',\n onDone: { actions: 'setUser', target: '#authenticator.setup' },\n onError: { target: '#authenticator.setup' },\n },\n },\n setup: {\n initial: 'init',\n states: {\n init: {\n always: [\n { guard: 'hasUser', target: '#authenticator.authenticated' },\n { guard: 'isInitialStateSignUp', target: '#authenticator.signUpActor' },\n { guard: 'isInitialStateResetPassword', target: '#authenticator.forgotPasswordActor' },\n { target: '#authenticator.signInActor' },\n ],\n },\n },\n },\n getCurrentUser: {\n invoke: {\n src: 'getCurrentUser',\n onDone: { actions: 'setUser', target: '#authenticator.authenticated' },\n onError: { target: 'setup' },\n },\n },\n signInActor: {\n invoke: {\n id: 'childActor',\n src: 'invokeSignInActor',\n input: ({ context }) => context.actorDoneData,\n onDone: [\n { guard: 'hasCompletedAttributeConfirmation', target: '#authenticator.getCurrentUser' },\n { guard: 'isShouldConfirmUserAttributeStep', actions: 'setActorDoneData', target: '#authenticator.verifyUserAttributesActor' },\n { guard: 'isResetPasswordStep', actions: 'setActorDoneData', target: '#authenticator.forgotPasswordActor' },\n { guard: 'isConfirmSignUpStep', actions: 'setActorDoneData', target: '#authenticator.signUpActor' },\n ],\n },\n entry: 'clearActorDoneData',\n on: {\n FORGOT_PASSWORD: { target: '#authenticator.forgotPasswordActor' },\n SIGN_UP: { target: '#authenticator.signUpActor' },\n SIGN_IN: { actions: 'forwardToActor' },\n FEDERATED_SIGN_IN: { actions: 'forwardToActor' },\n SUBMIT: { actions: 'forwardToActor' },\n },\n },\n signUpActor: {\n invoke: {\n id: 'childActor',\n src: 'invokeSignUpActor',\n input: ({ context }) => context.actorDoneData,\n onDone: [\n { guard: 'hasCompletedAttributeConfirmation', actions: 'clearActorDoneData', target: '#authenticator.getCurrentUser' },\n { guard: 'isShouldConfirmUserAttributeStep', actions: 'setActorDoneData', target: '#authenticator.verifyUserAttributesActor' },\n { guard: 'isConfirmUserAttributeStep', actions: 'clearActorDoneData', target: '#authenticator.verifyUserAttributesActor' },\n { actions: 'setActorDoneData', target: '#authenticator.signInActor' },\n ],\n },\n on: {\n SIGN_IN: { target: '#authenticator.signInActor' },\n FEDERATED_SIGN_IN: { actions: 'forwardToActor' },\n RESEND: { actions: 'forwardToActor' },\n SUBMIT: { actions: 'forwardToActor' },\n },\n },\n forgotPasswordActor: {\n invoke: {\n id: 'childActor',\n src: 'invokeForgotPasswordActor',\n input: ({ context }) => context.actorDoneData,\n onDone: { target: '#authenticator.signInActor' },\n },\n exit: 'clearActorDoneData',\n on: {\n SIGN_IN: { target: '#authenticator.signInActor' },\n RESEND: { actions: 'forwardToActor' },\n SUBMIT: { actions: 'forwardToActor' },\n },\n },\n verifyUserAttributesActor: {\n invoke: {\n id: 'childActor',\n src: 'invokeVerifyUserAttributesActor',\n input: ({ context }) => context.actorDoneData,\n onDone: { actions: 'setActorDoneData', target: '#authenticator.getCurrentUser' },\n },\n on: {\n SKIP: { actions: 'forwardToActor' },\n RESEND: { actions: 'forwardToActor' },\n SUBMIT: { actions: 'forwardToActor' },\n },\n },\n authenticated: {\n initial: 'idle',\n on: {\n SIGN_OUT: { target: '#authenticator.signOut' },\n },\n states: {\n idle: {\n on: {\n TOKEN_REFRESH: { target: 'refreshUser' },\n },\n },\n refreshUser: {\n invoke: {\n src: 'getCurrentUser',\n onDone: { actions: 'setUser', target: 'idle' },\n onError: { target: '#authenticator.signOut' },\n },\n },\n },\n },\n signOut: {\n invoke: {\n id: 'childActor',\n src: 'invokeSignOutActor',\n onDone: { actions: 'clearUser', target: '#authenticator.setup' },\n },\n exit: 'clearActorDoneData',\n },\n },\n on: {\n CHILD_CHANGED: { actions: assign(({ context }) => context) },\n SIGN_IN_WITH_REDIRECT: { target: '#authenticator.getCurrentUser' },\n },\n })\n}\n"],"mappings":";;;AA4BA,MAAM,qBAAqB,EAAE,YAA8C;CACzE,MAAM,EAAE,iBAAkB,MAAM,QAAQ,UAAU,oBAAoB,EAAE;AACxE,QAAO;;AAGT,MAAM,sBAAsB,EAAE,YAAqD;AACjF,QAAO,MAAM,QAAQ,UAAU;;AAWjC,MAAM,qBAAqB,EAAE,YAAsC;CACjE,MAAM,SAAU,MAAM,UAAU,EAAE;AAClC,QAAO,OAAO,UAAU,eAAe,SAAS,qBAAqB,OAAO,UAAU;;AAGxF,MAAM,qBAAqB,EAAE,YAAsC;CACjE,MAAM,SAAU,MAAM,UAAU,EAAE;AAClC,QAAO,OAAO,UAAU,eAAe,SAAS,qBAAqB,OAAO,UAAU;;AAGxF,MAAM,4BAA4B,EAAE,YAA6C;CAC/E,MAAM,SAAU,MAAM,UAAU,EAAE;AAClC,QAAO,OAAO,UAAU,sBAAsB,SAAS,4BAA4B,OAAO,UAAU;;AAKtG,MAAM,kBAAkB,EAAE,YAAkC;CAC1D,MAAM,QAAQ,MAAM;AACpB,KAAI,OAAO,SAAS,kBAClB,QAAO;AAET,QAAO,OAAO,WAAW,OAAO,MAAM;;AAGxC,MAAM,eAAe,EAAE,YAA8C,MAAM,MAAM;AAIjF,MAAM,0BAA0B,EAAE,YAAiE;CACjG,MAAM,SAAS,MAAM;AACrB,KAAI,QAAQ,UAAU,oBACpB,QAAO,QAAQ,UAAU;AAE3B,QAAO;;AAGT,MAAM,+BAA+B,EAAE,YAAoD;CACzF,MAAM,EAAE,OAAO,iBAAiB,MAAM;AAOtC,QALiC;EAC/B,GAAI,SAAS,EAAE,OAAO;EACtB,GAAI,gBAAgB,EAAE,cAAc;EACrC;;AAKH,MAAM,4BAA4B,EAAE,YAAkE;AAEpG,SADe,OAAO,SACP;;AAGjB,MAAM,0BAA0B,EAAE,YAAwD;CACxF,MAAM,SAAS,OAAO,UAAU,EAAE;AAClC,QAAO;EACL,qBAAqB,OAAO;EAC5B,mBAAmB,OAAO;EAC1B,aAAa,OAAO;EACpB,UAAU,OAAO;EACjB,MAAM,OAAO;EACb,gBAAgB,OAAO;EACvB,0BAA0B,OAAO;EACjC,iBAAiB,OAAO;EACzB;;;;AC/FH,MAAM,gCAAwC;CAAC;CAAiC;CAAkC;CAAkC;AAEpJ,MAAa,sCAAsC,UAA8B;AAE/E,QADe,MAAM,QACN,UAAU,eAAe;;AAG1C,MAAa,iCAAiC,UAA8B;AAE1E,QADe,MAAM,QACN,UAAU,eAAe;;AAG1C,MAAa,iCAAiC,UAA8B;AAE1E,QADe,MAAM,QACN,UAAU,eAAe;;AAG1C,MAAa,oBAAoB,UAA8B;AAE7D,QADe,MAAM,QACN,UAAU,eAAe;;AAG1C,MAAa,sBAAsB,UAA8B;AAE/D,QADe,MAAM,QACN,UAAU,eAAe;;AAG1C,MAAa,sBAAsB,UAA8B;AAE/D,QADe,MAAM,QACN,UAAU,eAAe;;AAG1C,MAAa,6BAA6B,UAA8B;AAEtE,QADe,MAAM,QACN,UAAU,sBAAsB;;AAGjD,MAAa,qCAAqC,SAAwB;AACxE,QAAO,SAAS;;AAGlB,MAAa,8BAA8B,SAAwB;AACjE,QAAO,SAAS;;AAGlB,MAAa,oCAAoC,SAAwB;AACvE,QAAO,SAAS;;AAGlB,MAAa,uBAAuB,SAAwB;AAC1D,QAAO,SAAS;;AAGlB,MAAa,uBAAuB,SAAwB;AAC1D,QAAO,SAAS;;AAGlB,MAAa,wCAAwC,SAAwB;AAC3E,QAAO,SAAS;;AAGlB,MAAa,uBAAuB,SAAwB;AAC1D,QAAO,8BAA8B,SAAS,KAAK;;AAGrD,MAAa,mBAAmB,SAAwB;AACtD,QAAO,SAAS;;AAGlB,MAAa,oBAAoB,SAAwB;AACvD,QAAO,SAAS;;AAGlB,MAAa,uBAAuB,SAAwB;AAC1D,QAAO,CAAC,uCAAuC,4CAA4C,CAAC,SAAS,KAAK;;AAG5G,MAAa,uBAAuB,SAA+B,UAA8B;AAE/F,SADa,OAAO,OAAO,QAAQ,QAAQ,UAC3B;;AAGlB,MAAa,8BAA8B,SAA+B,UAA8B;AAEtG,SADa,OAAO,OAAO,QAAQ,QAAQ,UAC3B;;AAGlB,MAAa,yBAAyB,UAA8B;CAClE,MAAM,EAAE,OAAO,cAAc,uBAAuB,mBAAoB,MAAM,UAAU,EAAE;AAI1F,KAAI,CAAC,SAAS,CAAC,aACb,QAAO;AAQT,QAAO,EAJe,mBAAmB,WAIhB,EAHH,0BAA0B;;AAMlD,MAAa,0BAA0B,UAA8B;AACnE,QAAO,MAAM,OAAO,YAAY;;;;;;;AC5ElC,MAAa,eAAe,UAA0B,qBAAqC;CACzF,MAAM,eAAe,MAAM;EACzB,OAAO;GACL,SAAS,EAAE;GACX,QAAQ,EAAE;GACX;EACD,QAAQ;GACN,sBAAsB,EAAE,SAAS,EAAE,aAAa,oBAAoB,KAAK;GACzE,kBAAkB,EAAE,SAAS,EAAE,aAAa,gBAAgB,KAAK;GACjE,mBAAmB,EAAE,SAAS,EAAE,aAAa,iBAAiB,KAAK;GACnE,sBAAsB,EAAE,SAAS,EAAE,aAAa,oBAAoB,KAAK;GACzE,wBAAwB,EAAE,YAAY,sBAAsB,MAAM;GAClE,qCAAqC,EAAE,YAAY,mCAAmC,MAAM;GAC5F,gCAAgC,EAAE,YAAY,8BAA8B,MAAM;GAClF,gCAAgC,EAAE,YAAY,8BAA8B,MAAM;GAClF,qBAAqB,EAAE,YAAY,mBAAmB,MAAM;GAC5D,uCAAuC,EAAE,SAAS,EAAE,aAAa,qCAAqC,KAAK;GAC5G;EACD,QAAQ;GACN,qBAAqB,kBAAkB,SAAS,qBAAqB,CAAC;GACtE,eAAe,aAAsD,EAAE,YAAY,SAAS,cAAc,MAAM,CAAC;GACjH,kBAAkB,aAA4D,EAAE,YAAY,SAAS,iBAAiB,MAAM,CAAC;GAC7H,QAAQ,aAAwC,EAAE,YAAY,SAAS,OAAO,MAAM,CAAC;GACrF,eAAe,aAAsD,EAAE,YAAY,SAAS,cAAc,MAAM,CAAC;GACjH,oBAAoB,aAA4C,EAAE,YAAY,SAAS,mBAAmB,MAAM,CAAC;GAClH;EACD,SAAS;GACP,YAAY,WAAW,EAAE,MAAM,iBAAiB,CAAC;GACjD,kCAAkC,OAAO,EAAE,MAAA,iCAAwC,CAAC;GACpF,6BAA6B,OAAO,EAAE,0BAA0B,6BAA6B,CAAC;GAC9F,wBAAwB,OAAO,EAAE,qBAAqB,wBAAwB,CAAC;GAC/E,iCAAiC,OAAO,EAAE,MAAM,8BAA8B,CAAC;GAC/E,mBAAmB,OAAO,EAAE,gBAAgB,mBAAmB,CAAC;GAChE,oBAAoB,OAAO,EAAE,iBAAiB,oBAAoB,CAAC;GACnE,mBAAmB,OAAO,EAAE,MAAM,mBAAmB,CAAC;GACtD,sBAAsB,OAAO,EAAE,MAAA,mBAA4B,CAAC;GAC5D,kBAAkB,OAAO,uBAAuB;GAChD,aAAa,OAAO,EAAE,UAAU,aAAa,CAAC;GAC9C,gBAAgB,OAAO,EAAE,aAAa,gBAAgB,CAAC;GACvD,YAAY,OAAO,EAAE,aAAa,KAAA,GAAW,CAAC;GAC/C;EACF,CAAC;CAEF,MAAM,uBAAuB,aAAa,kBAAkB,EAC1D,QAAQ;EACN;GAAE,OAAO;GAAsB,SAAS;GAAqB,QAAQ;GAAoC;EACzG;GAAE,OAAO;GAAsC,SAAS;GAAqB,QAAQ;GAAoC;EACzH;GAAE,OAAO;GAAiC,SAAS;GAAqB,QAAQ;GAA8B;EAC9G;GAAE,OAAO;GAAiC,SAAS;GAAqB,QAAQ;GAAiC;EACjH;GAAE,SAAS;IAAC;IAAqB;IAAqB;IAAqB;GAAE,QAAQ;GAAqB;EAC3G,EACF,CAAC;CACF,MAAM,qBAAqB,aAAa,kBAAkB;EACxD,SAAS;EACT,MAAM;EACN,QAAQ;GACN,MAAM;IACJ,OAAO;IACP,IAAI;KACF,QAAQ,EAAE,QAAQ,UAAU;KAC5B,SAAS,EAAE,QAAQ,uBAAuB;KAC3C;IACF;GACD,QAAQ;IACN,MAAM;IACN,OAAO,CAAC,cAAc,aAAa;IACnC,QAAQ;KACN,KAAK;KACL,QAAQ,EAAE,YAAY,MAAM;KAC5B,GAAG;KACH,SAAS;MAAE,SAAS;MAAkB,QAAQ;MAAQ;KACvD;IACF;GACF;EACF,CAAC;AAEF,QAAO,aAAa,cAAc;EAChC,IAAI;EACJ,UAAU,EAAE,aAAa;GAAE,MAAM;GAAW,GAAG;GAAkB,GAAG;GAAO;EAC3E,SAAS;EACT,QAAQ;GACN,MAAM,EACJ,QAAQ;IACN;KAAE,OAAO;KAAuB,QAAQ;KAA8B;IACtE;KAAE,OAAO;KAAmB,QAAQ;KAA0B;IAC9D;KAAE,OAAO;KAAoB,QAAQ;KAA2B;IAChE;KAAE,OAAO;KAAuB,QAAQ;KAA8B;IACtE;KAAE,OAAO;KAAwC,SAAS;KAAoB,QAAQ;KAAoC;IAC1H,EAAE,QAAQ,uBAAuB;IAClC,EACF;GACD,iBAAiB;IACf,OAAO,CAAC,cAAc,aAAa;IACnC,QAAQ;KACN,KAAK;KACL,QAAQ,EAAE,YAAY,MAAM;KAC5B,QAAQ,EAAE,QAAQ,uBAAuB;KACzC,SAAS;MAAE,SAAS;MAAkB,QAAQ;MAAuB;KACtE;IACF;GACD,qBAAqB,EACnB,QAAQ;IACN,KAAK;IACL,QAAQ,CACN;KACE,OAAO;KACP,SAAS,CAAC,oCAAoC,8BAA8B;KAC5E,QAAQ;KACT,EACD;KAAE,SAAS;KAAmC,QAAQ;KAAyB,CAChF;IACD,SAAS;KAAE,SAAS;KAAmC,QAAQ;KAAyB;IACzF,EACF;GACD,kBAAkB;IAChB,MAAM;IACN,QAAQ;KACN,KAAK;KACL,QAAQ,EAAE,SAAS,EAAE,YAAY,aAAa;MAAE;MAAU,GAAG,MAAM;MAAM;KACzE,QAAQ;MAAE,SAAS;MAA0B,QAAQ;MAAyB;KAC9E,SAAS;MAAE,SAAS;MAAkB,QAAQ;MAAuB;KACtE;IACF;GACD,eAAe,EACb,QAAQ;IACN,KAAK;IACL,QAAQ,EAAE,SAAS,EAAE,YAAY,aAAa;KAAE;KAAU,GAAG,MAAM;KAAM;IACzE,QAAQ;KAAE,SAAS;KAA0B,QAAQ;KAAyB;IAC9E,SAAS,EAAE,SAAS,CAAC,kBAAkB,aAAa,EAAE;IACvD,EACF;GACD,QAAQ;IACN,SAAS;IACT,QAAQ;KACN,MAAM;MACJ,OAAO;MACP,IAAI;OACF,mBAAmB,EAAE,QAAQ,gCAAgC;OAC7D,QAAQ,EAAE,QAAQ,UAAU;OAC7B;MACF;KACD,QAAQ;MACN,MAAM;MACN,OAAO;OAAC;OAAc;OAAe;OAAa;MAClD,QAAQ;OACN,KAAK;OACL,QAAQ,EAAE,YAAY,MAAM;OAC5B,GAAG;OACH,SAAS,CACP;QAAE,OAAO;QAAiC,SAAS;QAAwB,QAAQ;QAAiC,EACpH;QAAE,SAAS;QAAkB,QAAQ;QAAQ,CAC9C;OACF;MACF;KACF;IACF;GACD,eAAe;GACf,qBAAqB;IACnB,SAAS;IACT,OAAO;IACP,MAAM;IACN,QAAQ;KACN,MAAM;MACJ,OAAO;MACP,IAAI,EAAE,QAAQ,EAAE,QAAQ,UAAU,EAAE;MACrC;KACD,QAAQ;MACN,MAAM;MACN,OAAO,CAAC,cAAc,aAAa;MACnC,QAAQ;OACN,KAAK;OACL,QAAQ,EAAE,YAAY,MAAM;OAC5B,GAAG;OACH,SAAS;QAAE,SAAS;QAAkB,QAAQ;QAAQ;OACvD;MACF;KACF;IACF;GACD,WAAW;GACX,YAAY;GACZ,eAAe;GACf,UAAU,EAAE,MAAM,SAAS;GAC5B;EACD,SAAS,EAAE,cAAc;EAC1B,CAAC;;;;ACjNJ,MAAa,kBAA4B;CACvC;CACA;CACA;CACA;CACA;CACA;CACA,kBAAkB,YAAY;CAC9B;CACA;CACA;CACA;CACA;CACA;CACA;CACD;;;;;;ACtBD,MAAa,uBAAuB,UAAkC,qBAA4C;AAChH,QAAO,MAAM;EACX,OAAO;GACL,SAAS,EAAE;GACX,QAAQ,EAAE;GACX;EACD,QAAQ;GACN,sBAAsB,EAAE,SAAS,YAAY,oBAAoB,SAAS,MAAM;GAChF,6BAA6B,EAAE,SAAS,YAAY,2BAA2B,SAAS,MAAM;GAC9F,4BAA4B,EAAE,YAAY,0BAA0B,MAAM;GAC3E;EACD,QAAQ;GACN,eAAe,aAAsD,EAAE,YAAY,SAAS,cAAc,MAAM,CAAC;GACjH,sBAAsB,aAA8C,EAAE,YAAY,SAAS,qBAAqB,MAAM,CAAC;GACxH;EACD,SAAS;GACP,YAAY,WAAW,EAAE,MAAM,iBAAiB,CAAC;GACjD,wBAAwB,OAAO,EAAE,qBAAqB,wBAAwB,CAAC;GAC/E,0BAA0B,OAAO,EAAE,MAAM,0BAA0B,CAAC;GACpE,eAAe,OAAO,EAAE,MAAM,mBAAmB,CAAC;GAClD,aAAa,OAAO,EAAE,UAAU,aAAa,CAAC;GAC9C,gBAAgB,OAAO,EAAE,aAAa,gBAAgB,CAAC;GACvD,YAAY,OAAO,EAAE,aAAa,KAAA,GAAW,CAAC;GAC/C;EACF,CAAC,CAAC,cAAc;EACf,IAAI;EACJ,SAAS;EACT,UAAU,EAAE,aAAa;GAAE,MAAM;GAAmB,GAAG;GAAkB,GAAG;GAAO;EACnF,QAAQ;GACN,MAAM,EACJ,QAAQ;IACN;KAAE,OAAO;KAAuB,QAAQ;KAA6C;IACrF;KAAE,OAAO;KAA8B,QAAQ;KAA6C;IAC5F,EAAE,QAAQ,uCAAuC;IAClD,EACF;GACD,gBAAgB;IACd,SAAS;IACT,MAAM;IACN,QAAQ;KACN,MAAM;MACJ,OAAO;MACP,IAAI,EACF,QAAQ,EAAE,QAAQ,UAAU,EAC7B;MACF;KACD,QAAQ;MACN,MAAM;MACN,OAAO;OAAC;OAAc;OAAe;OAAa;MAClD,QAAQ;OACN,KAAK;OACL,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,UAAU;OACnD,QAAQ,CAAC;QAAE,SAAS,CAAC,0BAA0B,2BAA2B;QAAE,QAAQ;QAA6C,CAAC;OAClI,SAAS;QAAE,SAAS;QAAkB,QAAQ;QAAQ;OACvD;MACF;KACF;IACF;GACD,sBAAsB;IACpB,SAAS;IACT,MAAM;IACN,QAAQ;KACN,MAAM;MACJ,OAAO;MACP,IAAI;OACF,QAAQ,EAAE,QAAQ,UAAU;OAC5B,QAAQ,EAAE,QAAQ,cAAc;OACjC;MACF;KACD,YAAY;MACV,MAAM;MACN,OAAO,CAAC,cAAc,aAAa;MACnC,QAAQ;OACN,KAAK;OACL,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,UAAU;OACnD,QAAQ,EAAE,QAAQ,QAAQ;OAC1B,SAAS;QAAE,SAAS;QAAkB,QAAQ;QAAQ;OACvD;MACF;KACD,QAAQ;MACN,MAAM;MACN,OAAO,CAAC,cAAc,aAAa;MACnC,QAAQ;OACN,KAAK;OACL,QAAQ,EAAE,SAAS,aAAa;QAAE,UAAU,QAAQ;QAAU,GAAG,MAAM;QAAM;OAC7E,QAAQ,CACN;QAAE,OAAO;QAA6B,SAAS;QAA4B,QAAQ;QAAiC,EACpH;QAAE,SAAS;QAAiB,QAAQ;QAAiC,CACtE;OACD,SAAS;QAAE,SAAS;QAAkB,QAAQ;QAAQ;OACvD;MACF;KACF;IACF;GACD,UAAU,EAAE,MAAM,SAAS;GAC5B;EACD,SAAS,EAAE,cAAc;EAC1B,CAAC;;;;;;;ACpGJ,MAAa,gBAAgB,aAA8B;AACzD,QAAO,MAAM;EACX,OAAO,EACL,SAAS,EAAE,EACZ;EACD,QAAQ,EACN,SAAS,kBAAkB,SAAS,SAAS,CAAC,EAC/C;EACF,CAAC,CAAC,cAAc;EACf,IAAI;EACJ,SAAS;EACT,SAAS,EAAE;EACX,QAAQ;GACN,SAAS;IACP,MAAM;IACN,QAAQ;KACN,KAAK;KACL,QAAQ;KACR,SAAS;KACV;IACF;GACD,UAAU,EAAE,MAAM,SAAS;GAC3B,UAAU,EAAE,MAAM,SAAS;GAC5B;EACD,SAAS,EAAE,cAAc;EAC1B,CAAC;;;;;;;ACAJ,MAAa,eAAe,UAA0B,qBAAqC;AACzF,QAAO,MAAM;EACX,OAAO;GACL,SAAS,EAAE;GACX,QAAQ,EAAE;GACX;EACD,QAAQ;GACN,qBAAqB,EAAE,YAAY,mBAAmB,MAAM;GAC5D,qBAAqB,EAAE,YAAY,mBAAmB,MAAM;GAC5D,yBAAyB,EAAE,YAAY,uBAAuB,MAAM;GACpE,mBAAmB,EAAE,YAAY,iBAAiB,MAAM;GACxD,qCAAqC,EAAE,YAAY,mCAAmC,MAAM;GAC5F,sBAAsB,EAAE,SAAS,EAAE,aAAa,SAAS;GACzD,gCAAgC,EAAE,YAAY,8BAA8B,MAAM;GAClF,gCAAgC,EAAE,YAAY,8BAA8B,MAAM;GAClF,wBAAwB,EAAE,YAAY,sBAAsB,MAAM;GACnE;EACD,QAAQ;GACN,YAAY,kBAAkB,SAAS,YAAY,CAAC;GACpD,eAAe,aAAsD,EAAE,YAAY,SAAS,cAAc,MAAM,CAAC;GACjH,qBAAqB,kBAAkB,SAAS,qBAAqB,CAAC;GACtE,eAAe,aAAsD,EAAE,YAAY,SAAS,cAAc,MAAM,CAAC;GACjH,kBAAkB,aAA4D,EAAE,YAAY,SAAS,iBAAiB,MAAM,CAAC;GAC7H,QAAQ,aAAwC,EAAE,YAAY,SAAS,OAAO,MAAM,CAAC;GACrF,oBAAoB,aAA4C,EAAE,YAAY,SAAS,mBAAmB,MAAM,CAAC;GAClH;EACD,SAAS;GACP,YAAY,WAAW,EAAE,MAAM,iBAAiB,CAAC;GACjD,kCAAkC,OAAO,EAAE,0BAA0B,6BAA6B,CAAC;GACnG,iCAAiC,OAAO,EAAE,MAAM,8BAA8B,CAAC;GAC/E,wBAAwB,OAAO,EAAE,qBAAqB,wBAAwB,CAAC;GAC/E,mBAAmB,OAAO,EAAE,MAAM,mBAAmB,CAAC;GACtD,aAAa,OAAO,EAAE,UAAU,aAAa,CAAC;GAC9C,gBAAgB,OAAO,EAAE,aAAa,gBAAgB,CAAC;GACvD,YAAY,OAAO,EAAE,aAAa,KAAA,GAAW,CAAC;GAC/C;EACF,CAAC,CAAC,cAAc;EACf,IAAI;EACJ,SAAS;EACT,UAAU,EAAE,aAAa;GAAE,MAAM;GAAW,GAAG;GAAkB,GAAG;GAAO;EAC3E,QAAQ;GACN,MAAM,EACJ,QAAQ,CAAC;IAAE,OAAO;IAAuB,QAAQ;IAAiB,EAAE,EAAE,QAAQ,uBAAuB,CAAC,EACvG;GACD,YAAY;IACV,MAAM;IACN,QAAQ;KACN,KAAK;KACL,QAAQ;MACN;OAAE,OAAO;OAAsB,QAAQ;OAAoC;MAC3E;OAAE,OAAO;OAAsC,QAAQ;OAAyB;MAChF;OAAE,OAAO;OAAiC,QAAQ;OAA8B;MAChF;OAAE,OAAO;OAAiC,QAAQ;OAAiC;MACnF,EAAE,QAAQ,yBAAyB;MACpC;KACD,SAAS,EAAE,QAAQ,yBAAyB;KAC7C;IACF;GACD,qBAAqB,EACnB,QAAQ;IACN,KAAK;IACL,QAAQ,CACN;KACE,OAAO;KACP,SAAS,CAAC,oCAAoC,kCAAkC;KAChF,QAAQ;KACT,EACD;KAAE,SAAS;KAAmC,QAAQ;KAAyB,CAChF;IACD,SAAS;KAAE,SAAS;KAAmC,QAAQ;KAAyB;IACzF,EACF;GACD,iBAAiB;IACf,OAAO,CAAC,cAAc,aAAa;IACnC,QAAQ;KACN,KAAK;KACL,QAAQ,EAAE,YAAY,MAAM;KAC5B,QAAQ;KACR,SAAS;MAAE,SAAS;MAAkB,QAAQ;MAAuB;KACtE;IACF;GACD,eAAe,EACb,QAAQ;IACN,KAAK;IACL,QAAQ,EAAE,YAAY,MAAM;IAC5B,QAAQ;KAAE,SAAS;KAA0B,QAAQ;KAAyB;IAC9E,SAAS,EAAE,SAAS,kBAAkB;IACvC,EACF;GACD,kBAAkB;IAChB,MAAM;IACN,OAAO;IACP,MAAM;IACN,QAAQ;KACN,KAAK;KACL,QAAQ,EAAE,SAAS,EAAE,YAAY,aAAa;MAAE;MAAU,GAAG,MAAM;MAAM;KACzE,QAAQ;MAAE,SAAS;MAA0B,QAAQ;MAA8B;KACnF,SAAS,CAAC;MAAE,OAAO;MAA0B,QAAQ;MAAyB,EAAE,EAAE,SAAS,kBAAkB,CAAC;KAC/G;IACF;GACD,QAAQ;IACN,SAAS;IACT,MAAM;IACN,IAAI,EACF,mBAAmB,EAAE,QAAQ,gCAAgC,EAC9D;IACD,QAAQ;KACN,MAAM;MACJ,OAAO;MACP,IAAI,EACF,QAAQ,EAAE,QAAQ,UAAU,EAC7B;MACF;KACD,QAAQ;MACN,MAAM;MACN,OAAO;OAAC;OAAc;OAAe;OAAa;MAClD,QAAQ;OACN,KAAK;OACL,QAAQ,EAAE,YAAY,MAAM;OAC5B,QAAQ;QACN;SAAE,OAAO;SAAsB,SAAS;SAAqB,QAAQ;SAAyB;QAC9F;SAAE,OAAO;SAAoB,SAAS;SAAqB,QAAQ;SAA2B;QAC9F;SAAE,SAAS,CAAC,0BAA0B,oBAAoB;SAAE,QAAQ;SAAqB;QAC1F;OACD,SAAS;QAAE,SAAS;QAAkB,QAAQ;QAAQ;OACvD;MACF;KACF;IACF;GACD,eAAe;IACb,SAAS;IACT,MAAM;IACN,QAAQ;KACN,MAAM;MACJ,OAAO;MACP,IAAI;OACF,QAAQ,EAAE,QAAQ,UAAU;OAC5B,QAAQ,EAAE,QAAQ,iCAAiC;OACpD;MACF;KACD,QAAQ;MACN,MAAM;MACN,OAAO,CAAC,cAAc,aAAa;MACnC,QAAQ;OACN,KAAK;OACL,QAAQ,EAAE,SAAS,EAAE,YAAY,aAAa;QAAE;QAAU,GAAG,MAAM;QAAM;OACzE,QAAQ;QACN;SAAE,OAAO;SAAsB,SAAS;SAAqB,QAAQ;SAAyB;QAC9F;SAAE,OAAO;SAAoB,SAAS;SAAqB,QAAQ;SAA2B;QAC9F;SAAE,SAAS;SAAqB,QAAQ;SAAqB;QAC9D;OACD,SAAS;QAAE,SAAS;QAAkB,QAAQ;QAAQ;OACvD;MACF;KACF;IACF;GACD,UAAU,EAAE,MAAM,SAAS;GAC5B;EACD,SAAS,EAAE,cAAc;EAC1B,CAAC;;;;;;;ACtLJ,MAAa,6BAA6B,UAAwC,qBAAyC;AACzH,QAAO,MAAM;EACX,OAAO;GACL,SAAS,EAAE;GACX,QAAQ,EAAE;GACX;EACD,QAAQ,EAAE;EACV,QAAQ;GACN,mCAAmC,aAA8F,EAAE,YACjI,SAAS,kCAAkC,MAAM,CAClD;GACD,4BAA4B,aAA8C,EAAE,YAAY,SAAS,qBAAqB,MAAM,CAAC;GAC9H;EACD,SAAS;GACP,YAAY,WAAW,EAAE,MAAM,iBAAiB,CAAC;GACjD,wBAAwB,OAAO,EAAE,qBAAqB,wBAAwB,CAAC;GAC/E,0BAA0B,OAAO,EAAE,uBAAuB,0BAA0B,CAAC;GACrF,iCAAiC,OAAO,EAAE,MAAA,8BAAuC,CAAC;GAClF,gBAAgB,OAAO,EAAE,aAAa,gBAAgB,CAAC;GACvD,YAAY,OAAO,EAAE,aAAa,KAAA,GAAW,CAAC;GAC9C,4BAA4B,OAAO,EAAE,uBAAuB,KAAA,GAAW,CAAC;GACzE;EACF,CAAC,CAAC,cAAc;EACf,IAAI;EACJ,SAAS;EACT,UAAU,EAAE,aAAa;GAAE,MAAM;GAAW,GAAG;GAAkB,GAAG;GAAO;EAC3E,QAAQ;GACN,sBAAsB;IACpB,SAAS;IACT,MAAM;IACN,QAAQ;KACN,MAAM;MACJ,OAAO;MACP,IAAI;OACF,MAAM,EAAE,QAAQ,uCAAuC;OACvD,QAAQ,EAAE,QAAQ,UAAU;OAC7B;MACF;KACD,QAAQ;MACN,MAAM;MACN,OAAO,CAAC,cAAc,aAAa;MACnC,QAAQ;OACN,KAAK;OACL,QAAQ,EAAE,YAAY,MAAM;OAC5B,QAAQ;QACN,SAAS,CAAC,4BAA4B,yBAAyB;QAC/D,QAAQ;QACT;OACD,SAAS;QAAE,SAAS;QAAkB,QAAQ;QAAQ;OACvD;MACF;KACF;IACF;GACD,4BAA4B;IAC1B,SAAS;IACT,MAAM;IACN,QAAQ;KACN,MAAM;MACJ,OAAO;MACP,IAAI;OACF,QAAQ,EAAE,QAAQ,UAAU;OAC5B,QAAQ,EAAE,QAAQ,cAAc;OAChC,MAAM,EAAE,QAAQ,uCAAuC;OACxD;MACF;KACD,YAAY;MACV,MAAM;MACN,OAAO,CAAC,cAAc,aAAa;MACnC,QAAQ;OACN,KAAK;OACL,QAAQ,EAAE,SAAS,aAChB;QAAE,kBAAkB,QAAQ;QAAuB,GAAG,MAAM;QAAM;OACrE,QAAQ,EAAE,QAAQ,QAAQ;OAC1B,SAAS;QAAE,SAAS;QAAkB,QAAQ;QAAQ;OACvD;MACF;KACD,QAAQ;MACN,MAAM;MACN,OAAO,CAAC,cAAc,aAAa;MACnC,QAAQ;OACN,KAAK;OACL,QAAQ,EAAE,SAAS,aAAa;QAAE,kBAAkB,QAAQ;QAAuB,GAAG,MAAM;QAAM;OAClG,QAAQ;QAAE,SAAS,CAAC,mCAAmC,6BAA6B;QAAE,QAAQ;QAAuC;OACrI,SAAS;QAAE,SAAS;QAAkB,QAAQ;QAAQ;OACvD;MACF;KACF;IACF;GACD,UAAU,EAAE,MAAM,SAAS;GAC5B;EACD,SAAS,EAAE,cAAc;EAC1B,CAAC;;;;;;;AC5EJ,MAAa,8BAA8B,YAA0C;CACnF,MAAM,EAAE,UAAU,gBAAgB,GAAG,WAAW,WAAW,EAAE;CAC7D,MAAM,WAAW;EAAE,GAAG;EAAiB,GAAG;EAAgB;AAE1D,QAAO,MAAM;EACX,OAAO;GACL,SAAS,EAAE;GACX,QAAQ,EAAE;GACX;EACD,QAAQ;GACN,oCAAoC,EAAE,OAAO,EAAE,eAAe,kCAAkC,QAAQ,KAAK;GAC7G,UAAU,EAAE,cAAc,CAAC,CAAC,QAAQ;GACpC,uBAAuB,EAAE,cAAc,QAAQ,QAAQ,iBAAiB;GACxE,8BAA8B,EAAE,cAAc,QAAQ,QAAQ,iBAAiB;GAC/E,sBAAsB,EAAE,OAAO,EAAE,eAAe,oBAAoB,QAAQ,KAAK;GACjF,6BAA6B,EAAE,OAAO,EAAE,eAAe,2BAA2B,QAAQ,KAAK;GAC/F,mCAAmC,EAAE,OAAO,EAAE,eAAe,iCAAiC,QAAQ,KAAK;GAC3G,sBAAsB,EAAE,OAAO,EAAE,eAAe,oBAAoB,QAAQ,KAAK;GAClF;EACD,QAAQ;GACN,gBAAgB,kBAAkB,SAAS,gBAAgB,CAAC;GAC5D,mBAAmB,YAAY,SAAS;GACxC,mBAAmB,YAAY,SAAS;GACxC,2BAA2B,oBAAoB,SAAS;GACxD,iCAAiC,0BAA0B,SAAS;GACpE,oBAAoB,aAAa,SAAS;GAC3C;EACD,SAAS;GACP,oBAAoB,OAAO,EAAE,eAAe,KAAA,GAAW,CAAC;GACxD,WAAW,OAAO,EAAE,MAAM,KAAA,GAAW,CAAC;GACtC,gBAAgB,UAAU,aAAa;GACvC,SAAS,OAAO,EAAE,OAAO,EAAE,YAAY,MAAM,QAAoB,CAAC;GAClE,kBAAkB,OAAO,EAAE,gBAAgB,EAAE,YAAY,MAAM,QAAyB,CAAC;GAC1F;EACF,CAAC,CAAC,cAAc;EACf,IAAI;EACJ,SAAS;EACT,SAAS;GACP;GACA,MAAM,KAAA;GACP;EACD,QAAQ;GACN,MAAM,EACJ,QAAQ;IACN,KAAK;IACL,QAAQ;KAAE,SAAS;KAAW,QAAQ;KAAwB;IAC9D,SAAS,EAAE,QAAQ,wBAAwB;IAC5C,EACF;GACD,OAAO;IACL,SAAS;IACT,QAAQ,EACN,MAAM,EACJ,QAAQ;KACN;MAAE,OAAO;MAAW,QAAQ;MAAgC;KAC5D;MAAE,OAAO;MAAwB,QAAQ;MAA8B;KACvE;MAAE,OAAO;MAA+B,QAAQ;MAAsC;KACtF,EAAE,QAAQ,8BAA8B;KACzC,EACF,EACF;IACF;GACD,gBAAgB,EACd,QAAQ;IACN,KAAK;IACL,QAAQ;KAAE,SAAS;KAAW,QAAQ;KAAgC;IACtE,SAAS,EAAE,QAAQ,SAAS;IAC7B,EACF;GACD,aAAa;IACX,QAAQ;KACN,IAAI;KACJ,KAAK;KACL,QAAQ,EAAE,cAAc,QAAQ;KAChC,QAAQ;MACN;OAAE,OAAO;OAAqC,QAAQ;OAAiC;MACvF;OAAE,OAAO;OAAoC,SAAS;OAAoB,QAAQ;OAA4C;MAC9H;OAAE,OAAO;OAAuB,SAAS;OAAoB,QAAQ;OAAsC;MAC3G;OAAE,OAAO;OAAuB,SAAS;OAAoB,QAAQ;OAA8B;MACpG;KACF;IACD,OAAO;IACP,IAAI;KACF,iBAAiB,EAAE,QAAQ,sCAAsC;KACjE,SAAS,EAAE,QAAQ,8BAA8B;KACjD,SAAS,EAAE,SAAS,kBAAkB;KACtC,mBAAmB,EAAE,SAAS,kBAAkB;KAChD,QAAQ,EAAE,SAAS,kBAAkB;KACtC;IACF;GACD,aAAa;IACX,QAAQ;KACN,IAAI;KACJ,KAAK;KACL,QAAQ,EAAE,cAAc,QAAQ;KAChC,QAAQ;MACN;OAAE,OAAO;OAAqC,SAAS;OAAsB,QAAQ;OAAiC;MACtH;OAAE,OAAO;OAAoC,SAAS;OAAoB,QAAQ;OAA4C;MAC9H;OAAE,OAAO;OAA8B,SAAS;OAAsB,QAAQ;OAA4C;MAC1H;OAAE,SAAS;OAAoB,QAAQ;OAA8B;MACtE;KACF;IACD,IAAI;KACF,SAAS,EAAE,QAAQ,8BAA8B;KACjD,mBAAmB,EAAE,SAAS,kBAAkB;KAChD,QAAQ,EAAE,SAAS,kBAAkB;KACrC,QAAQ,EAAE,SAAS,kBAAkB;KACtC;IACF;GACD,qBAAqB;IACnB,QAAQ;KACN,IAAI;KACJ,KAAK;KACL,QAAQ,EAAE,cAAc,QAAQ;KAChC,QAAQ,EAAE,QAAQ,8BAA8B;KACjD;IACD,MAAM;IACN,IAAI;KACF,SAAS,EAAE,QAAQ,8BAA8B;KACjD,QAAQ,EAAE,SAAS,kBAAkB;KACrC,QAAQ,EAAE,SAAS,kBAAkB;KACtC;IACF;GACD,2BAA2B;IACzB,QAAQ;KACN,IAAI;KACJ,KAAK;KACL,QAAQ,EAAE,cAAc,QAAQ;KAChC,QAAQ;MAAE,SAAS;MAAoB,QAAQ;MAAiC;KACjF;IACD,IAAI;KACF,MAAM,EAAE,SAAS,kBAAkB;KACnC,QAAQ,EAAE,SAAS,kBAAkB;KACrC,QAAQ,EAAE,SAAS,kBAAkB;KACtC;IACF;GACD,eAAe;IACb,SAAS;IACT,IAAI,EACF,UAAU,EAAE,QAAQ,0BAA0B,EAC/C;IACD,QAAQ;KACN,MAAM,EACJ,IAAI,EACF,eAAe,EAAE,QAAQ,eAAe,EACzC,EACF;KACD,aAAa,EACX,QAAQ;MACN,KAAK;MACL,QAAQ;OAAE,SAAS;OAAW,QAAQ;OAAQ;MAC9C,SAAS,EAAE,QAAQ,0BAA0B;MAC9C,EACF;KACF;IACF;GACD,SAAS;IACP,QAAQ;KACN,IAAI;KACJ,KAAK;KACL,QAAQ;MAAE,SAAS;MAAa,QAAQ;MAAwB;KACjE;IACD,MAAM;IACP;GACF;EACD,IAAI;GACF,eAAe,EAAE,SAAS,QAAQ,EAAE,cAAc,QAAQ,EAAE;GAC5D,uBAAuB,EAAE,QAAQ,iCAAiC;GACnE;EACF,CAAC"}