@aws-amplify/auth 6.7.1-unstable.ab33a03.0 → 6.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (398) hide show
  1. package/dist/cjs/client/apis/associateWebAuthnCredential.js +62 -0
  2. package/dist/cjs/client/apis/associateWebAuthnCredential.js.map +1 -0
  3. package/dist/cjs/client/apis/deleteWebAuthnCredential.js +22 -0
  4. package/dist/cjs/client/apis/deleteWebAuthnCredential.js.map +1 -0
  5. package/dist/cjs/client/apis/index.js +13 -0
  6. package/dist/cjs/client/apis/index.js.map +1 -0
  7. package/dist/cjs/client/apis/listWebAuthnCredentials.js +23 -0
  8. package/dist/cjs/client/apis/listWebAuthnCredentials.js.map +1 -0
  9. package/dist/cjs/client/flows/shared/handlePasswordSRP.js +79 -0
  10. package/dist/cjs/client/flows/shared/handlePasswordSRP.js.map +1 -0
  11. package/dist/cjs/client/flows/userAuth/handleSelectChallenge.js +46 -0
  12. package/dist/cjs/client/flows/userAuth/handleSelectChallenge.js.map +1 -0
  13. package/dist/cjs/client/flows/userAuth/handleSelectChallengeWithPassword.js +59 -0
  14. package/dist/cjs/client/flows/userAuth/handleSelectChallengeWithPassword.js.map +1 -0
  15. package/dist/cjs/client/flows/userAuth/handleSelectChallengeWithPasswordSRP.js +74 -0
  16. package/dist/cjs/client/flows/userAuth/handleSelectChallengeWithPasswordSRP.js.map +1 -0
  17. package/dist/cjs/client/flows/userAuth/handleUserAuthFlow.js +84 -0
  18. package/dist/cjs/client/flows/userAuth/handleUserAuthFlow.js.map +1 -0
  19. package/dist/cjs/client/flows/userAuth/handleWebAuthnSignInResult.js +88 -0
  20. package/dist/cjs/client/flows/userAuth/handleWebAuthnSignInResult.js.map +1 -0
  21. package/dist/cjs/client/utils/index.js +9 -0
  22. package/dist/cjs/client/utils/index.js.map +1 -0
  23. package/dist/cjs/client/utils/passkey/errors.js +180 -0
  24. package/dist/cjs/client/utils/passkey/errors.js.map +1 -0
  25. package/dist/cjs/client/utils/passkey/getIsPasskeySupported.js +20 -0
  26. package/dist/cjs/client/utils/passkey/getIsPasskeySupported.js.map +1 -0
  27. package/dist/cjs/client/utils/passkey/getIsPasskeySupported.native.js +12 -0
  28. package/dist/cjs/client/utils/passkey/getIsPasskeySupported.native.js.map +1 -0
  29. package/dist/cjs/client/utils/passkey/getPasskey.js +27 -0
  30. package/dist/cjs/client/utils/passkey/getPasskey.js.map +1 -0
  31. package/dist/cjs/client/utils/passkey/getPasskey.native.js +12 -0
  32. package/dist/cjs/client/utils/passkey/getPasskey.native.js.map +1 -0
  33. package/dist/cjs/client/utils/passkey/index.js +11 -0
  34. package/dist/cjs/client/utils/passkey/index.js.map +1 -0
  35. package/dist/cjs/client/utils/passkey/registerPasskey.js +32 -0
  36. package/dist/cjs/client/utils/passkey/registerPasskey.js.map +1 -0
  37. package/dist/cjs/client/utils/passkey/registerPasskey.native.js +12 -0
  38. package/dist/cjs/client/utils/passkey/registerPasskey.native.js.map +1 -0
  39. package/dist/cjs/client/utils/passkey/serde.js +106 -0
  40. package/dist/cjs/client/utils/passkey/serde.js.map +1 -0
  41. package/dist/cjs/client/utils/passkey/types/index.js +25 -0
  42. package/dist/cjs/client/utils/passkey/types/index.js.map +1 -0
  43. package/dist/cjs/client/utils/passkey/types/shared.js +18 -0
  44. package/dist/cjs/client/utils/passkey/types/shared.js.map +1 -0
  45. package/dist/cjs/client/utils/store/autoSignInStore.js +45 -0
  46. package/dist/cjs/client/utils/store/autoSignInStore.js.map +1 -0
  47. package/dist/cjs/client/utils/store/index.js +9 -0
  48. package/dist/cjs/client/utils/store/index.js.map +1 -0
  49. package/dist/cjs/client/utils/store/signInStore.js.map +1 -0
  50. package/dist/cjs/client/utils/store/types.js +6 -0
  51. package/dist/cjs/client/utils/store/types.js.map +1 -0
  52. package/dist/cjs/foundation/apis/deleteWebAuthnCredential.js +33 -0
  53. package/dist/cjs/foundation/apis/deleteWebAuthnCredential.js.map +1 -0
  54. package/dist/cjs/foundation/apis/index.js +11 -0
  55. package/dist/cjs/foundation/apis/index.js.map +1 -0
  56. package/dist/cjs/foundation/apis/listWebAuthnCredentials.js +46 -0
  57. package/dist/cjs/foundation/apis/listWebAuthnCredentials.js.map +1 -0
  58. package/dist/cjs/foundation/convert/base64url/convertArrayBufferToBase64Url.js +21 -0
  59. package/dist/cjs/foundation/convert/base64url/convertArrayBufferToBase64Url.js.map +1 -0
  60. package/dist/cjs/foundation/convert/base64url/convertBase64UrlToArrayBuffer.js +17 -0
  61. package/dist/cjs/foundation/convert/base64url/convertBase64UrlToArrayBuffer.js.map +1 -0
  62. package/dist/cjs/foundation/convert/base64url/index.js +11 -0
  63. package/dist/cjs/foundation/convert/base64url/index.js.map +1 -0
  64. package/dist/cjs/foundation/convert/index.js +10 -0
  65. package/dist/cjs/foundation/convert/index.js.map +1 -0
  66. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createCompleteWebAuthnRegistrationClient.js +16 -0
  67. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createCompleteWebAuthnRegistrationClient.js.map +1 -0
  68. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createDeleteWebAuthnCredentialClient.js +16 -0
  69. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createDeleteWebAuthnCredentialClient.js.map +1 -0
  70. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createListWebAuthnCredentialsClient.js +16 -0
  71. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createListWebAuthnCredentialsClient.js.map +1 -0
  72. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createSignUpClient.js +33 -4
  73. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createSignUpClient.js.map +1 -1
  74. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createStartWebAuthnRegistrationClient.js +16 -0
  75. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createStartWebAuthnRegistrationClient.js.map +1 -0
  76. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/index.js +9 -1
  77. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/index.js.map +1 -1
  78. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/types/errors.js +44 -0
  79. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/types/errors.js.map +1 -0
  80. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/types/index.js +3 -2
  81. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/types/index.js.map +1 -1
  82. package/dist/cjs/foundation/types/index.js +6 -0
  83. package/dist/cjs/foundation/types/index.js.map +1 -0
  84. package/dist/cjs/foundation/types/inputs.js +6 -0
  85. package/dist/cjs/foundation/types/inputs.js.map +1 -0
  86. package/dist/cjs/foundation/types/models.js +6 -0
  87. package/dist/cjs/foundation/types/models.js.map +1 -0
  88. package/dist/cjs/foundation/types/outputs.js +6 -0
  89. package/dist/cjs/foundation/types/outputs.js.map +1 -0
  90. package/dist/cjs/index.js +6 -1
  91. package/dist/cjs/index.js.map +1 -1
  92. package/dist/cjs/providers/cognito/apis/autoSignIn.js +6 -2
  93. package/dist/cjs/providers/cognito/apis/autoSignIn.js.map +1 -1
  94. package/dist/cjs/providers/cognito/apis/confirmSignIn.js +4 -4
  95. package/dist/cjs/providers/cognito/apis/confirmSignIn.js.map +1 -1
  96. package/dist/cjs/providers/cognito/apis/confirmSignUp.js +8 -5
  97. package/dist/cjs/providers/cognito/apis/confirmSignUp.js.map +1 -1
  98. package/dist/cjs/providers/cognito/apis/signIn.js +9 -0
  99. package/dist/cjs/providers/cognito/apis/signIn.js.map +1 -1
  100. package/dist/cjs/providers/cognito/apis/signInWithCustomAuth.js +4 -4
  101. package/dist/cjs/providers/cognito/apis/signInWithCustomAuth.js.map +1 -1
  102. package/dist/cjs/providers/cognito/apis/signInWithCustomSRPAuth.js +4 -4
  103. package/dist/cjs/providers/cognito/apis/signInWithCustomSRPAuth.js.map +1 -1
  104. package/dist/cjs/providers/cognito/apis/signInWithSRP.js +7 -4
  105. package/dist/cjs/providers/cognito/apis/signInWithSRP.js.map +1 -1
  106. package/dist/cjs/providers/cognito/apis/signInWithUserAuth.js +102 -0
  107. package/dist/cjs/providers/cognito/apis/signInWithUserAuth.js.map +1 -0
  108. package/dist/cjs/providers/cognito/apis/signInWithUserPassword.js +7 -4
  109. package/dist/cjs/providers/cognito/apis/signInWithUserPassword.js.map +1 -1
  110. package/dist/cjs/providers/cognito/apis/signUp.js +56 -49
  111. package/dist/cjs/providers/cognito/apis/signUp.js.map +1 -1
  112. package/dist/cjs/providers/cognito/utils/signInHelpers.js +60 -42
  113. package/dist/cjs/providers/cognito/utils/signInHelpers.js.map +1 -1
  114. package/dist/cjs/providers/cognito/utils/signUpHelpers.js +5 -31
  115. package/dist/cjs/providers/cognito/utils/signUpHelpers.js.map +1 -1
  116. package/dist/esm/client/apis/associateWebAuthnCredential.d.ts +14 -0
  117. package/dist/esm/client/apis/associateWebAuthnCredential.mjs +69 -0
  118. package/dist/esm/client/apis/associateWebAuthnCredential.mjs.map +1 -0
  119. package/dist/esm/client/apis/deleteWebAuthnCredential.d.ts +11 -0
  120. package/dist/esm/client/apis/deleteWebAuthnCredential.mjs +29 -0
  121. package/dist/esm/client/apis/deleteWebAuthnCredential.mjs.map +1 -0
  122. package/dist/esm/client/apis/index.d.ts +3 -0
  123. package/dist/esm/client/apis/index.mjs +4 -0
  124. package/dist/esm/client/apis/index.mjs.map +1 -0
  125. package/dist/esm/client/apis/listWebAuthnCredentials.d.ts +12 -0
  126. package/dist/esm/client/apis/listWebAuthnCredentials.mjs +30 -0
  127. package/dist/esm/client/apis/listWebAuthnCredentials.mjs.map +1 -0
  128. package/dist/esm/client/flows/shared/handlePasswordSRP.d.ts +31 -0
  129. package/dist/esm/client/flows/shared/handlePasswordSRP.mjs +86 -0
  130. package/dist/esm/client/flows/shared/handlePasswordSRP.mjs.map +1 -0
  131. package/dist/esm/client/flows/userAuth/handleSelectChallenge.d.ts +23 -0
  132. package/dist/esm/client/flows/userAuth/handleSelectChallenge.mjs +51 -0
  133. package/dist/esm/client/flows/userAuth/handleSelectChallenge.mjs.map +1 -0
  134. package/dist/esm/client/flows/userAuth/handleSelectChallengeWithPassword.d.ts +16 -0
  135. package/dist/esm/client/flows/userAuth/handleSelectChallengeWithPassword.mjs +64 -0
  136. package/dist/esm/client/flows/userAuth/handleSelectChallengeWithPassword.mjs.map +1 -0
  137. package/dist/esm/client/flows/userAuth/handleSelectChallengeWithPasswordSRP.d.ts +18 -0
  138. package/dist/esm/client/flows/userAuth/handleSelectChallengeWithPasswordSRP.mjs +81 -0
  139. package/dist/esm/client/flows/userAuth/handleSelectChallengeWithPasswordSRP.mjs.map +1 -0
  140. package/dist/esm/client/flows/userAuth/handleUserAuthFlow.d.ts +27 -0
  141. package/dist/esm/client/flows/userAuth/handleUserAuthFlow.mjs +88 -0
  142. package/dist/esm/client/flows/userAuth/handleUserAuthFlow.mjs.map +1 -0
  143. package/dist/esm/client/flows/userAuth/handleWebAuthnSignInResult.d.ts +3 -0
  144. package/dist/esm/client/flows/userAuth/handleWebAuthnSignInResult.mjs +93 -0
  145. package/dist/esm/client/flows/userAuth/handleWebAuthnSignInResult.mjs.map +1 -0
  146. package/dist/esm/client/utils/index.d.ts +1 -0
  147. package/dist/esm/client/utils/index.mjs +4 -0
  148. package/dist/esm/client/utils/index.mjs.map +1 -0
  149. package/dist/esm/client/utils/passkey/errors.d.ts +33 -0
  150. package/dist/esm/client/utils/passkey/errors.mjs +176 -0
  151. package/dist/esm/client/utils/passkey/errors.mjs.map +1 -0
  152. package/dist/esm/client/utils/passkey/getIsPasskeySupported.d.ts +6 -0
  153. package/dist/esm/client/utils/passkey/getIsPasskeySupported.mjs +18 -0
  154. package/dist/esm/client/utils/passkey/getIsPasskeySupported.mjs.map +1 -0
  155. package/dist/esm/client/utils/passkey/getIsPasskeySupported.native.d.ts +1 -0
  156. package/dist/esm/client/utils/passkey/getIsPasskeySupported.native.mjs +10 -0
  157. package/dist/esm/client/utils/passkey/getIsPasskeySupported.native.mjs.map +1 -0
  158. package/dist/esm/client/utils/passkey/getPasskey.d.ts +2 -0
  159. package/dist/esm/client/utils/passkey/getPasskey.mjs +25 -0
  160. package/dist/esm/client/utils/passkey/getPasskey.mjs.map +1 -0
  161. package/dist/esm/client/utils/passkey/getPasskey.native.d.ts +1 -0
  162. package/dist/esm/client/utils/passkey/getPasskey.native.mjs +10 -0
  163. package/dist/esm/client/utils/passkey/getPasskey.native.mjs.map +1 -0
  164. package/dist/esm/client/utils/passkey/index.d.ts +2 -0
  165. package/dist/esm/client/utils/passkey/index.mjs +3 -0
  166. package/dist/esm/client/utils/passkey/index.mjs.map +1 -0
  167. package/dist/esm/client/utils/passkey/registerPasskey.d.ts +7 -0
  168. package/dist/esm/client/utils/passkey/registerPasskey.mjs +30 -0
  169. package/dist/esm/client/utils/passkey/registerPasskey.mjs.map +1 -0
  170. package/dist/esm/client/utils/passkey/registerPasskey.native.d.ts +1 -0
  171. package/dist/esm/client/utils/passkey/registerPasskey.native.mjs +10 -0
  172. package/dist/esm/client/utils/passkey/registerPasskey.native.mjs.map +1 -0
  173. package/dist/esm/client/utils/passkey/serde.d.ts +25 -0
  174. package/dist/esm/client/utils/passkey/serde.mjs +102 -0
  175. package/dist/esm/client/utils/passkey/serde.mjs.map +1 -0
  176. package/dist/esm/client/utils/passkey/types/index.d.ts +16 -0
  177. package/dist/esm/client/utils/passkey/types/index.mjs +18 -0
  178. package/dist/esm/client/utils/passkey/types/index.mjs.map +1 -0
  179. package/dist/esm/client/utils/passkey/types/shared.d.ts +106 -0
  180. package/dist/esm/client/utils/passkey/types/shared.mjs +16 -0
  181. package/dist/esm/client/utils/passkey/types/shared.mjs.map +1 -0
  182. package/dist/esm/client/utils/store/autoSignInStore.d.ts +21 -0
  183. package/dist/esm/client/utils/store/autoSignInStore.mjs +43 -0
  184. package/dist/esm/client/utils/store/autoSignInStore.mjs.map +1 -0
  185. package/dist/esm/client/utils/store/index.d.ts +2 -0
  186. package/dist/esm/client/utils/store/index.mjs +3 -0
  187. package/dist/esm/client/utils/store/index.mjs.map +1 -0
  188. package/dist/esm/{providers/cognito/utils → client/utils/store}/signInStore.d.ts +1 -1
  189. package/dist/esm/client/utils/store/signInStore.mjs.map +1 -0
  190. package/dist/esm/client/utils/store/types.d.ts +5 -0
  191. package/dist/esm/client/utils/store/types.mjs +2 -0
  192. package/dist/esm/client/utils/store/types.mjs.map +1 -0
  193. package/dist/esm/foundation/apis/deleteWebAuthnCredential.d.ts +3 -0
  194. package/dist/esm/foundation/apis/deleteWebAuthnCredential.mjs +38 -0
  195. package/dist/esm/foundation/apis/deleteWebAuthnCredential.mjs.map +1 -0
  196. package/dist/esm/foundation/apis/index.d.ts +2 -0
  197. package/dist/esm/foundation/apis/index.mjs +3 -0
  198. package/dist/esm/foundation/apis/index.mjs.map +1 -0
  199. package/dist/esm/foundation/apis/listWebAuthnCredentials.d.ts +3 -0
  200. package/dist/esm/foundation/apis/listWebAuthnCredentials.mjs +51 -0
  201. package/dist/esm/foundation/apis/listWebAuthnCredentials.mjs.map +1 -0
  202. package/dist/esm/foundation/convert/base64url/convertArrayBufferToBase64Url.d.ts +6 -0
  203. package/dist/esm/foundation/convert/base64url/convertArrayBufferToBase64Url.mjs +19 -0
  204. package/dist/esm/foundation/convert/base64url/convertArrayBufferToBase64Url.mjs.map +1 -0
  205. package/dist/esm/foundation/convert/base64url/convertBase64UrlToArrayBuffer.d.ts +6 -0
  206. package/dist/esm/foundation/convert/base64url/convertBase64UrlToArrayBuffer.mjs +15 -0
  207. package/dist/esm/foundation/convert/base64url/convertBase64UrlToArrayBuffer.mjs.map +1 -0
  208. package/dist/esm/foundation/convert/base64url/index.d.ts +2 -0
  209. package/dist/esm/foundation/convert/base64url/index.mjs +3 -0
  210. package/dist/esm/foundation/convert/base64url/index.mjs.map +1 -0
  211. package/dist/esm/foundation/convert/index.d.ts +1 -0
  212. package/dist/esm/foundation/convert/index.mjs +3 -0
  213. package/dist/esm/foundation/convert/index.mjs.map +1 -0
  214. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createCompleteWebAuthnRegistrationClient.d.ts +13 -0
  215. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createCompleteWebAuthnRegistrationClient.mjs +17 -0
  216. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createCompleteWebAuthnRegistrationClient.mjs.map +1 -0
  217. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createDeleteWebAuthnCredentialClient.d.ts +13 -0
  218. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createDeleteWebAuthnCredentialClient.mjs +17 -0
  219. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createDeleteWebAuthnCredentialClient.mjs.map +1 -0
  220. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createListWebAuthnCredentialsClient.d.ts +13 -0
  221. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createListWebAuthnCredentialsClient.mjs +17 -0
  222. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createListWebAuthnCredentialsClient.mjs.map +1 -0
  223. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createSignUpClient.d.ts +3 -1
  224. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createSignUpClient.mjs +32 -7
  225. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createSignUpClient.mjs.map +1 -1
  226. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createStartWebAuthnRegistrationClient.d.ts +13 -0
  227. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createStartWebAuthnRegistrationClient.mjs +17 -0
  228. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createStartWebAuthnRegistrationClient.mjs.map +1 -0
  229. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/index.d.ts +4 -0
  230. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/index.mjs +4 -0
  231. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/index.mjs.map +1 -1
  232. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/shared/serde/createUserPoolSerializer.d.ts +1 -1
  233. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/types/errors.d.ts +37 -0
  234. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/types/errors.mjs +46 -0
  235. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/types/errors.mjs.map +1 -0
  236. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/types/index.d.ts +1 -0
  237. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/types/index.mjs +1 -1
  238. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/types/sdk.d.ts +109 -5
  239. package/dist/esm/foundation/types/index.d.ts +3 -0
  240. package/dist/esm/foundation/types/index.mjs +2 -0
  241. package/dist/esm/foundation/types/index.mjs.map +1 -0
  242. package/dist/esm/foundation/types/inputs.d.ts +10 -0
  243. package/dist/esm/foundation/types/inputs.mjs +2 -0
  244. package/dist/esm/foundation/types/inputs.mjs.map +1 -0
  245. package/dist/esm/foundation/types/models.d.ts +11 -0
  246. package/dist/esm/foundation/types/models.mjs +2 -0
  247. package/dist/esm/foundation/types/models.mjs.map +1 -0
  248. package/dist/esm/foundation/types/outputs.d.ts +8 -0
  249. package/dist/esm/foundation/types/outputs.mjs +2 -0
  250. package/dist/esm/foundation/types/outputs.mjs.map +1 -0
  251. package/dist/esm/index.d.ts +3 -0
  252. package/dist/esm/index.mjs +3 -0
  253. package/dist/esm/index.mjs.map +1 -1
  254. package/dist/esm/providers/cognito/apis/autoSignIn.d.ts +1 -1
  255. package/dist/esm/providers/cognito/apis/autoSignIn.mjs +7 -2
  256. package/dist/esm/providers/cognito/apis/autoSignIn.mjs.map +1 -1
  257. package/dist/esm/providers/cognito/apis/confirmResetPassword.mjs +2 -0
  258. package/dist/esm/providers/cognito/apis/confirmResetPassword.mjs.map +1 -1
  259. package/dist/esm/providers/cognito/apis/confirmSignIn.mjs +2 -1
  260. package/dist/esm/providers/cognito/apis/confirmSignIn.mjs.map +1 -1
  261. package/dist/esm/providers/cognito/apis/confirmSignUp.mjs +11 -5
  262. package/dist/esm/providers/cognito/apis/confirmSignUp.mjs.map +1 -1
  263. package/dist/esm/providers/cognito/apis/confirmUserAttribute.mjs +2 -0
  264. package/dist/esm/providers/cognito/apis/confirmUserAttribute.mjs.map +1 -1
  265. package/dist/esm/providers/cognito/apis/deleteUser.mjs +3 -0
  266. package/dist/esm/providers/cognito/apis/deleteUser.mjs.map +1 -1
  267. package/dist/esm/providers/cognito/apis/deleteUserAttributes.mjs +3 -0
  268. package/dist/esm/providers/cognito/apis/deleteUserAttributes.mjs.map +1 -1
  269. package/dist/esm/providers/cognito/apis/fetchDevices.mjs +3 -0
  270. package/dist/esm/providers/cognito/apis/fetchDevices.mjs.map +1 -1
  271. package/dist/esm/providers/cognito/apis/fetchMFAPreference.mjs +3 -0
  272. package/dist/esm/providers/cognito/apis/fetchMFAPreference.mjs.map +1 -1
  273. package/dist/esm/providers/cognito/apis/forgetDevice.mjs +3 -0
  274. package/dist/esm/providers/cognito/apis/forgetDevice.mjs.map +1 -1
  275. package/dist/esm/providers/cognito/apis/internal/fetchUserAttributes.mjs +3 -0
  276. package/dist/esm/providers/cognito/apis/internal/fetchUserAttributes.mjs.map +1 -1
  277. package/dist/esm/providers/cognito/apis/rememberDevice.mjs +3 -0
  278. package/dist/esm/providers/cognito/apis/rememberDevice.mjs.map +1 -1
  279. package/dist/esm/providers/cognito/apis/resendSignUpCode.mjs +2 -0
  280. package/dist/esm/providers/cognito/apis/resendSignUpCode.mjs.map +1 -1
  281. package/dist/esm/providers/cognito/apis/resetPassword.mjs +2 -0
  282. package/dist/esm/providers/cognito/apis/resetPassword.mjs.map +1 -1
  283. package/dist/esm/providers/cognito/apis/sendUserAttributeVerificationCode.mjs +3 -0
  284. package/dist/esm/providers/cognito/apis/sendUserAttributeVerificationCode.mjs.map +1 -1
  285. package/dist/esm/providers/cognito/apis/setUpTOTP.mjs +2 -0
  286. package/dist/esm/providers/cognito/apis/setUpTOTP.mjs.map +1 -1
  287. package/dist/esm/providers/cognito/apis/signIn.mjs +9 -0
  288. package/dist/esm/providers/cognito/apis/signIn.mjs.map +1 -1
  289. package/dist/esm/providers/cognito/apis/signInWithCustomAuth.mjs +2 -1
  290. package/dist/esm/providers/cognito/apis/signInWithCustomAuth.mjs.map +1 -1
  291. package/dist/esm/providers/cognito/apis/signInWithCustomSRPAuth.mjs +2 -1
  292. package/dist/esm/providers/cognito/apis/signInWithCustomSRPAuth.mjs.map +1 -1
  293. package/dist/esm/providers/cognito/apis/signInWithSRP.mjs +5 -1
  294. package/dist/esm/providers/cognito/apis/signInWithSRP.mjs.map +1 -1
  295. package/dist/esm/providers/cognito/apis/signInWithUserAuth.d.ts +13 -0
  296. package/dist/esm/providers/cognito/apis/signInWithUserAuth.mjs +104 -0
  297. package/dist/esm/providers/cognito/apis/signInWithUserAuth.mjs.map +1 -0
  298. package/dist/esm/providers/cognito/apis/signInWithUserPassword.mjs +6 -2
  299. package/dist/esm/providers/cognito/apis/signInWithUserPassword.mjs.map +1 -1
  300. package/dist/esm/providers/cognito/apis/signOut.mjs +2 -0
  301. package/dist/esm/providers/cognito/apis/signOut.mjs.map +1 -1
  302. package/dist/esm/providers/cognito/apis/signUp.mjs +58 -50
  303. package/dist/esm/providers/cognito/apis/signUp.mjs.map +1 -1
  304. package/dist/esm/providers/cognito/apis/updateMFAPreference.mjs +3 -0
  305. package/dist/esm/providers/cognito/apis/updateMFAPreference.mjs.map +1 -1
  306. package/dist/esm/providers/cognito/apis/updatePassword.mjs +2 -0
  307. package/dist/esm/providers/cognito/apis/updatePassword.mjs.map +1 -1
  308. package/dist/esm/providers/cognito/apis/updateUserAttributes.mjs +3 -0
  309. package/dist/esm/providers/cognito/apis/updateUserAttributes.mjs.map +1 -1
  310. package/dist/esm/providers/cognito/apis/verifyTOTPSetup.mjs +2 -0
  311. package/dist/esm/providers/cognito/apis/verifyTOTPSetup.mjs.map +1 -1
  312. package/dist/esm/providers/cognito/types/index.d.ts +2 -2
  313. package/dist/esm/providers/cognito/types/inputs.d.ts +4 -0
  314. package/dist/esm/providers/cognito/types/models.d.ts +7 -1
  315. package/dist/esm/providers/cognito/types/options.d.ts +2 -1
  316. package/dist/esm/providers/cognito/types/outputs.d.ts +4 -0
  317. package/dist/esm/providers/cognito/utils/refreshAuthTokens.mjs +3 -0
  318. package/dist/esm/providers/cognito/utils/refreshAuthTokens.mjs.map +1 -1
  319. package/dist/esm/providers/cognito/utils/signInHelpers.d.ts +2 -1
  320. package/dist/esm/providers/cognito/utils/signInHelpers.mjs +56 -37
  321. package/dist/esm/providers/cognito/utils/signInHelpers.mjs.map +1 -1
  322. package/dist/esm/providers/cognito/utils/signUpHelpers.d.ts +0 -6
  323. package/dist/esm/providers/cognito/utils/signUpHelpers.mjs +5 -26
  324. package/dist/esm/providers/cognito/utils/signUpHelpers.mjs.map +1 -1
  325. package/dist/esm/types/inputs.d.ts +2 -2
  326. package/dist/esm/types/models.d.ts +9 -1
  327. package/package.json +104 -104
  328. package/src/client/apis/associateWebAuthnCredential.ts +94 -0
  329. package/src/client/apis/deleteWebAuthnCredential.ts +24 -0
  330. package/src/client/apis/index.ts +6 -0
  331. package/src/client/apis/listWebAuthnCredentials.ts +28 -0
  332. package/src/client/flows/shared/handlePasswordSRP.ts +123 -0
  333. package/src/client/flows/userAuth/handleSelectChallenge.ts +62 -0
  334. package/src/client/flows/userAuth/handleSelectChallengeWithPassword.ts +74 -0
  335. package/src/client/flows/userAuth/handleSelectChallengeWithPasswordSRP.ts +105 -0
  336. package/src/client/flows/userAuth/handleUserAuthFlow.ts +125 -0
  337. package/src/client/flows/userAuth/handleWebAuthnSignInResult.ts +130 -0
  338. package/src/client/utils/index.ts +4 -0
  339. package/src/client/utils/passkey/errors.ts +214 -0
  340. package/src/client/utils/passkey/getIsPasskeySupported.native.ts +8 -0
  341. package/src/client/utils/passkey/getIsPasskeySupported.ts +18 -0
  342. package/src/client/utils/passkey/getPasskey.native.ts +8 -0
  343. package/src/client/utils/passkey/getPasskey.ts +40 -0
  344. package/src/client/utils/passkey/index.ts +5 -0
  345. package/src/client/utils/passkey/registerPasskey.native.ts +8 -0
  346. package/src/client/utils/passkey/registerPasskey.ts +48 -0
  347. package/src/client/utils/passkey/serde.ts +151 -0
  348. package/src/client/utils/passkey/types/index.ts +61 -0
  349. package/src/client/utils/passkey/types/shared.ts +131 -0
  350. package/src/client/utils/store/autoSignInStore.ts +64 -0
  351. package/src/client/utils/store/index.ts +5 -0
  352. package/src/{providers/cognito/utils → client/utils/store}/signInStore.ts +3 -8
  353. package/src/client/utils/store/types.ts +9 -0
  354. package/src/foundation/apis/deleteWebAuthnCredential.ts +45 -0
  355. package/src/foundation/apis/index.ts +5 -0
  356. package/src/foundation/apis/listWebAuthnCredentials.ts +68 -0
  357. package/src/foundation/convert/base64url/convertArrayBufferToBase64Url.ts +18 -0
  358. package/src/foundation/convert/base64url/convertBase64UrlToArrayBuffer.ts +18 -0
  359. package/src/foundation/convert/base64url/index.ts +5 -0
  360. package/src/foundation/convert/index.ts +7 -0
  361. package/src/foundation/factories/serviceClients/cognitoIdentityProvider/createCompleteWebAuthnRegistrationClient.ts +31 -0
  362. package/src/foundation/factories/serviceClients/cognitoIdentityProvider/createDeleteWebAuthnCredentialClient.ts +31 -0
  363. package/src/foundation/factories/serviceClients/cognitoIdentityProvider/createListWebAuthnCredentialsClient.ts +31 -0
  364. package/src/foundation/factories/serviceClients/cognitoIdentityProvider/createSignUpClient.ts +44 -7
  365. package/src/foundation/factories/serviceClients/cognitoIdentityProvider/createStartWebAuthnRegistrationClient.ts +31 -0
  366. package/src/foundation/factories/serviceClients/cognitoIdentityProvider/index.ts +4 -0
  367. package/src/foundation/factories/serviceClients/cognitoIdentityProvider/shared/serde/createUserPoolSerializer.ts +5 -1
  368. package/src/foundation/factories/serviceClients/cognitoIdentityProvider/types/errors.ts +43 -0
  369. package/src/foundation/factories/serviceClients/cognitoIdentityProvider/types/index.ts +2 -0
  370. package/src/foundation/factories/serviceClients/cognitoIdentityProvider/types/sdk.ts +141 -5
  371. package/src/foundation/types/index.ts +9 -0
  372. package/src/foundation/types/inputs.ts +14 -0
  373. package/src/foundation/types/models.ts +14 -0
  374. package/src/foundation/types/outputs.ts +12 -0
  375. package/src/index.ts +14 -0
  376. package/src/providers/cognito/apis/autoSignIn.ts +6 -2
  377. package/src/providers/cognito/apis/confirmSignIn.ts +1 -1
  378. package/src/providers/cognito/apis/confirmSignUp.ts +10 -9
  379. package/src/providers/cognito/apis/signIn.ts +10 -0
  380. package/src/providers/cognito/apis/signInWithCustomAuth.ts +1 -1
  381. package/src/providers/cognito/apis/signInWithCustomSRPAuth.ts +1 -1
  382. package/src/providers/cognito/apis/signInWithSRP.ts +6 -1
  383. package/src/providers/cognito/apis/signInWithUserAuth.ts +141 -0
  384. package/src/providers/cognito/apis/signInWithUserPassword.ts +7 -2
  385. package/src/providers/cognito/apis/signUp.ts +81 -72
  386. package/src/providers/cognito/types/index.ts +2 -0
  387. package/src/providers/cognito/types/inputs.ts +5 -0
  388. package/src/providers/cognito/types/models.ts +13 -0
  389. package/src/providers/cognito/types/options.ts +7 -1
  390. package/src/providers/cognito/types/outputs.ts +5 -0
  391. package/src/providers/cognito/utils/signInHelpers.ts +77 -55
  392. package/src/providers/cognito/utils/signUpHelpers.ts +6 -31
  393. package/src/types/inputs.ts +2 -2
  394. package/src/types/models.ts +13 -0
  395. package/dist/cjs/providers/cognito/utils/signInStore.js.map +0 -1
  396. package/dist/esm/providers/cognito/utils/signInStore.mjs.map +0 -1
  397. /package/dist/cjs/{providers/cognito/utils → client/utils/store}/signInStore.js +0 -0
  398. /package/dist/esm/{providers/cognito/utils → client/utils/store}/signInStore.mjs +0 -0
@@ -19,15 +19,13 @@ import {
19
19
  autoSignInUserConfirmed,
20
20
  autoSignInWhenUserIsConfirmedWithLink,
21
21
  handleCodeAutoSignIn,
22
- isAutoSignInStarted,
23
- isSignUpComplete,
24
- setAutoSignInStarted,
25
- setUsernameUsedForAutoSignIn,
26
22
  } from '../utils/signUpHelpers';
27
23
  import { getUserContextData } from '../utils/userContextData';
28
24
  import { getAuthUserAgentValue } from '../../../utils';
29
25
  import { createSignUpClient } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider';
30
26
  import { createCognitoUserPoolEndpointResolver } from '../factories';
27
+ import { SignUpCommandInput } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider/types';
28
+ import { autoSignInStore } from '../../../client/utils/store';
31
29
 
32
30
  import { setAutoSignIn } from './autoSignIn';
33
31
 
@@ -52,10 +50,6 @@ export async function signUp(input: SignUpInput): Promise<SignUpOutput> {
52
50
  !!username,
53
51
  AuthValidationErrorCode.EmptySignUpUsername,
54
52
  );
55
- assertValidationError(
56
- !!password,
57
- AuthValidationErrorCode.EmptySignUpPassword,
58
- );
59
53
 
60
54
  const signInServiceOptions =
61
55
  typeof autoSignIn !== 'boolean' ? autoSignIn : undefined;
@@ -68,10 +62,6 @@ export async function signUp(input: SignUpInput): Promise<SignUpOutput> {
68
62
  if (signInServiceOptions?.authFlowType !== 'CUSTOM_WITHOUT_SRP') {
69
63
  signInInput.password = password;
70
64
  }
71
- if (signInServiceOptions || autoSignIn === true) {
72
- setUsernameUsedForAutoSignIn(username);
73
- setAutoSignInStarted(true);
74
- }
75
65
 
76
66
  const { userPoolId, userPoolClientId, userPoolEndpoint } = authConfig;
77
67
  const signUpClient = createSignUpClient({
@@ -79,87 +69,106 @@ export async function signUp(input: SignUpInput): Promise<SignUpOutput> {
79
69
  endpointOverride: userPoolEndpoint,
80
70
  }),
81
71
  });
82
- const clientOutput = await signUpClient(
72
+
73
+ const signUpClientInput: SignUpCommandInput = {
74
+ Username: username,
75
+ Password: undefined,
76
+ UserAttributes:
77
+ options?.userAttributes && toAttributeType(options?.userAttributes),
78
+ ClientMetadata: clientMetadata,
79
+ ValidationData: validationData && toAttributeType(validationData),
80
+ ClientId: userPoolClientId,
81
+ UserContextData: getUserContextData({
82
+ username,
83
+ userPoolId,
84
+ userPoolClientId,
85
+ }),
86
+ };
87
+
88
+ if (password) {
89
+ signUpClientInput.Password = password;
90
+ }
91
+
92
+ const {
93
+ UserSub: userId,
94
+ CodeDeliveryDetails: cdd,
95
+ UserConfirmed: userConfirmed,
96
+ Session: session,
97
+ } = await signUpClient(
83
98
  {
84
99
  region: getRegionFromUserPoolId(userPoolId),
85
100
  userAgentValue: getAuthUserAgentValue(AuthAction.SignUp),
86
101
  },
87
- {
88
- Username: username,
89
- Password: password,
90
- UserAttributes:
91
- options?.userAttributes && toAttributeType(options?.userAttributes),
92
- ClientMetadata: clientMetadata,
93
- ValidationData: validationData && toAttributeType(validationData),
94
- ClientId: userPoolClientId,
95
- UserContextData: getUserContextData({
96
- username,
97
- userPoolId,
98
- userPoolClientId,
99
- }),
100
- },
102
+ signUpClientInput,
101
103
  );
102
- const { UserSub, CodeDeliveryDetails } = clientOutput;
103
104
 
104
- if (isSignUpComplete(clientOutput) && isAutoSignInStarted()) {
105
- setAutoSignIn(autoSignInUserConfirmed(signInInput));
105
+ if (signInServiceOptions || autoSignIn === true) {
106
+ autoSignInStore.dispatch({ type: 'START' });
107
+ autoSignInStore.dispatch({ type: 'SET_USERNAME', value: username });
108
+ autoSignInStore.dispatch({ type: 'SET_SESSION', value: session });
109
+ }
110
+
111
+ const codeDeliveryDetails = {
112
+ destination: cdd?.Destination,
113
+ deliveryMedium: cdd?.DeliveryMedium as AuthDeliveryMedium,
114
+ attributeName: cdd?.AttributeName as AuthVerifiableAttributeKey,
115
+ };
116
+
117
+ const isSignUpComplete = !!userConfirmed;
118
+ const isAutoSignInStarted = autoSignInStore.getState().active;
119
+
120
+ // Sign Up Complete
121
+ // No Confirm Sign In Step Required
122
+ if (isSignUpComplete) {
123
+ if (isAutoSignInStarted) {
124
+ setAutoSignIn(autoSignInUserConfirmed(signInInput));
125
+
126
+ return {
127
+ isSignUpComplete: true,
128
+ nextStep: {
129
+ signUpStep: 'COMPLETE_AUTO_SIGN_IN',
130
+ },
131
+ userId,
132
+ };
133
+ }
106
134
 
107
- return {
108
- isSignUpComplete: true,
109
- nextStep: {
110
- signUpStep: 'COMPLETE_AUTO_SIGN_IN',
111
- },
112
- userId: UserSub,
113
- };
114
- } else if (isSignUpComplete(clientOutput) && !isAutoSignInStarted()) {
115
135
  return {
116
136
  isSignUpComplete: true,
117
137
  nextStep: {
118
138
  signUpStep: 'DONE',
119
139
  },
120
- userId: UserSub,
140
+ userId,
121
141
  };
122
- } else if (
123
- !isSignUpComplete(clientOutput) &&
124
- isAutoSignInStarted() &&
125
- signUpVerificationMethod === 'code'
126
- ) {
127
- handleCodeAutoSignIn(signInInput);
128
- } else if (
129
- !isSignUpComplete(clientOutput) &&
130
- isAutoSignInStarted() &&
131
- signUpVerificationMethod === 'link'
132
- ) {
133
- setAutoSignIn(autoSignInWhenUserIsConfirmedWithLink(signInInput));
142
+ }
134
143
 
135
- return {
136
- isSignUpComplete: false,
137
- nextStep: {
138
- signUpStep: 'COMPLETE_AUTO_SIGN_IN',
139
- codeDeliveryDetails: {
140
- deliveryMedium:
141
- CodeDeliveryDetails?.DeliveryMedium as AuthDeliveryMedium,
142
- destination: CodeDeliveryDetails?.Destination as string,
143
- attributeName:
144
- CodeDeliveryDetails?.AttributeName as AuthVerifiableAttributeKey,
144
+ // Sign Up Not Complete
145
+ // Confirm Sign Up Step Required
146
+ if (isAutoSignInStarted) {
147
+ // Confirmation Via Link Occurs In Separate Context
148
+ // AutoSignIn Fn Will Initiate Polling Once Executed
149
+ if (signUpVerificationMethod === 'link') {
150
+ setAutoSignIn(autoSignInWhenUserIsConfirmedWithLink(signInInput));
151
+
152
+ return {
153
+ isSignUpComplete: false,
154
+ nextStep: {
155
+ signUpStep: 'COMPLETE_AUTO_SIGN_IN',
156
+ codeDeliveryDetails,
145
157
  },
146
- },
147
- userId: UserSub,
148
- };
158
+ userId,
159
+ };
160
+ }
161
+ // Confirmation Via Code Occurs In Same Context
162
+ // AutoSignIn Next Step Will Be Returned From Confirm Sign Up
163
+ handleCodeAutoSignIn(signInInput);
149
164
  }
150
165
 
151
166
  return {
152
167
  isSignUpComplete: false,
153
168
  nextStep: {
154
169
  signUpStep: 'CONFIRM_SIGN_UP',
155
- codeDeliveryDetails: {
156
- deliveryMedium:
157
- CodeDeliveryDetails?.DeliveryMedium as AuthDeliveryMedium,
158
- destination: CodeDeliveryDetails?.Destination as string,
159
- attributeName:
160
- CodeDeliveryDetails?.AttributeName as AuthVerifiableAttributeKey,
161
- },
170
+ codeDeliveryDetails,
162
171
  },
163
- userId: UserSub,
172
+ userId,
164
173
  };
165
174
  }
@@ -39,6 +39,7 @@ export {
39
39
  SignInWithCustomAuthInput,
40
40
  SignInWithCustomSRPAuthInput,
41
41
  SignInWithSRPInput,
42
+ SignInWithUserAuthInput,
42
43
  SignInWithUserPasswordInput,
43
44
  SignInWithRedirectInput,
44
45
  SignOutInput,
@@ -65,6 +66,7 @@ export {
65
66
  SignInOutput,
66
67
  SignInWithCustomAuthOutput,
67
68
  SignInWithSRPOutput,
69
+ SignInWithUserAuthOutput,
68
70
  SignInWithUserPasswordOutput,
69
71
  SignInWithCustomSRPAuthOutput,
70
72
  SignUpOutput,
@@ -92,6 +92,11 @@ export type SignInWithCustomSRPAuthInput = AuthSignInInput<SignInOptions>;
92
92
  */
93
93
  export type SignInWithSRPInput = AuthSignInInput<SignInOptions>;
94
94
 
95
+ /**
96
+ * Input type for Cognito signInWithUserAuth API.
97
+ */
98
+ export type SignInWithUserAuthInput = AuthSignInInput<SignInOptions>;
99
+
95
100
  /**
96
101
  * Input type for Cognito signInWithUserPasswordInput API.
97
102
  */
@@ -18,8 +18,11 @@ import { SignUpOutput } from './outputs';
18
18
 
19
19
  /**
20
20
  * Cognito supported AuthFlowTypes that may be passed as part of the Sign In request.
21
+ * USER_AUTH is a superset that can handle both USER_SRP_AUTH and USER_PASSWORD_AUTH,
22
+ * providing flexibility for future authentication methods.
21
23
  */
22
24
  export type AuthFlowType =
25
+ | 'USER_AUTH'
23
26
  | 'USER_SRP_AUTH'
24
27
  | 'CUSTOM_WITH_SRP'
25
28
  | 'CUSTOM_WITHOUT_SRP'
@@ -38,6 +41,16 @@ export const cognitoHostedUIIdentityProviderMap: Record<AuthProvider, string> =
38
41
  */
39
42
  export type ClientMetadata = Record<string, string>;
40
43
 
44
+ /**
45
+ * Allowed values for preferredChallenge
46
+ */
47
+ export type AuthFactorType =
48
+ | 'WEB_AUTHN'
49
+ | 'EMAIL_OTP'
50
+ | 'SMS_OTP'
51
+ | 'PASSWORD'
52
+ | 'PASSWORD_SRP';
53
+
41
54
  /**
42
55
  * The user attribute types available for Cognito.
43
56
  */
@@ -8,7 +8,12 @@ import {
8
8
  AuthUserAttributes,
9
9
  } from '../../../types';
10
10
 
11
- import { AuthFlowType, ClientMetadata, ValidationData } from './models';
11
+ import {
12
+ AuthFactorType,
13
+ AuthFlowType,
14
+ ClientMetadata,
15
+ ValidationData,
16
+ } from './models';
12
17
 
13
18
  /**
14
19
  * Options specific to Cognito Confirm Reset Password.
@@ -37,6 +42,7 @@ export type ResetPasswordOptions = AuthServiceOptions & {
37
42
  export type SignInOptions = AuthServiceOptions & {
38
43
  authFlowType?: AuthFlowType;
39
44
  clientMetadata?: ClientMetadata;
45
+ preferredChallenge?: AuthFactorType;
40
46
  };
41
47
 
42
48
  /**
@@ -73,6 +73,11 @@ export type SignInWithCustomAuthOutput = AuthSignInOutput;
73
73
  */
74
74
  export type SignInWithSRPOutput = AuthSignInOutput;
75
75
 
76
+ /**
77
+ * Output type for Cognito signInWithUserAuth API.
78
+ */
79
+ export type SignInWithUserAuthOutput = AuthSignInOutput;
80
+
76
81
  /**
77
82
  * Output type for Cognito signInWithUserPassword API.
78
83
  */
@@ -50,8 +50,13 @@ import {
50
50
  RespondToAuthChallengeCommandOutput,
51
51
  } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider/types';
52
52
  import { getRegionFromUserPoolId } from '../../../foundation/parsers';
53
+ import { handleWebAuthnSignInResult } from '../../../client/flows/userAuth/handleWebAuthnSignInResult';
54
+ import { handlePasswordSRP } from '../../../client/flows/shared/handlePasswordSRP';
55
+ import { initiateSelectedChallenge } from '../../../client/flows/userAuth/handleSelectChallenge';
56
+ import { handleSelectChallengeWithPassword } from '../../../client/flows/userAuth/handleSelectChallengeWithPassword';
57
+ import { handleSelectChallengeWithPasswordSRP } from '../../../client/flows/userAuth/handleSelectChallengeWithPasswordSRP';
58
+ import { signInStore } from '../../../client/utils/store';
53
59
 
54
- import { signInStore } from './signInStore';
55
60
  import { assertDeviceMetadata } from './types';
56
61
  import {
57
62
  getAuthenticationHelper,
@@ -433,60 +438,14 @@ export async function handleUserSRPAuthFlow(
433
438
  config: CognitoUserPoolConfig,
434
439
  tokenOrchestrator: AuthTokenOrchestrator,
435
440
  ): Promise<RespondToAuthChallengeCommandOutput> {
436
- const { userPoolId, userPoolClientId, userPoolEndpoint } = config;
437
- const userPoolName = userPoolId?.split('_')[1] || '';
438
- const authenticationHelper = await getAuthenticationHelper(userPoolName);
439
-
440
- const authParameters: Record<string, string> = {
441
- USERNAME: username,
442
- SRP_A: authenticationHelper.A.toString(16),
443
- };
444
-
445
- const UserContextData = getUserContextData({
441
+ return handlePasswordSRP({
446
442
  username,
447
- userPoolId,
448
- userPoolClientId,
449
- });
450
-
451
- const jsonReq: InitiateAuthCommandInput = {
452
- AuthFlow: 'USER_SRP_AUTH',
453
- AuthParameters: authParameters,
454
- ClientMetadata: clientMetadata,
455
- ClientId: userPoolClientId,
456
- UserContextData,
457
- };
458
-
459
- const initiateAuth = createInitiateAuthClient({
460
- endpointResolver: createCognitoUserPoolEndpointResolver({
461
- endpointOverride: userPoolEndpoint,
462
- }),
463
- });
464
-
465
- const resp = await initiateAuth(
466
- {
467
- region: getRegionFromUserPoolId(userPoolId),
468
- userAgentValue: getAuthUserAgentValue(AuthAction.SignIn),
469
- },
470
- jsonReq,
471
- );
472
- const { ChallengeParameters: challengeParameters, Session: session } = resp;
473
- const activeUsername = challengeParameters?.USERNAME ?? username;
474
- setActiveSignInUsername(activeUsername);
475
-
476
- return retryOnResourceNotFoundException(
477
- handlePasswordVerifierChallenge,
478
- [
479
- password,
480
- challengeParameters as ChallengeParameters,
481
- clientMetadata,
482
- session,
483
- authenticationHelper,
484
- config,
485
- tokenOrchestrator,
486
- ],
487
- activeUsername,
443
+ password,
444
+ clientMetadata,
445
+ config,
488
446
  tokenOrchestrator,
489
- );
447
+ authFlow: 'USER_SRP_AUTH',
448
+ });
490
449
  }
491
450
 
492
451
  export async function handleCustomAuthFlowWithoutSRP(
@@ -812,8 +771,9 @@ export async function handlePasswordVerifierChallenge(
812
771
  export async function getSignInResult(params: {
813
772
  challengeName: ChallengeName;
814
773
  challengeParameters: ChallengeParameters;
774
+ availableChallenges?: ChallengeName[];
815
775
  }): Promise<AuthSignInOutput> {
816
- const { challengeName, challengeParameters } = params;
776
+ const { challengeName, challengeParameters, availableChallenges } = params;
817
777
  const authConfig = Amplify.getConfig().Auth?.Cognito;
818
778
  assertTokenProviderConfig(authConfig);
819
779
 
@@ -909,6 +869,7 @@ export async function getSignInResult(params: {
909
869
  ),
910
870
  },
911
871
  };
872
+ case 'SMS_OTP':
912
873
  case 'SMS_MFA':
913
874
  return {
914
875
  isSignedIn: false,
@@ -940,6 +901,25 @@ export async function getSignInResult(params: {
940
901
  },
941
902
  },
942
903
  };
904
+
905
+ case 'WEB_AUTHN':
906
+ return handleWebAuthnSignInResult(challengeParameters);
907
+ case 'PASSWORD':
908
+ case 'PASSWORD_SRP':
909
+ return {
910
+ isSignedIn: false,
911
+ nextStep: {
912
+ signInStep: 'CONFIRM_SIGN_IN_WITH_PASSWORD',
913
+ },
914
+ };
915
+ case 'SELECT_CHALLENGE':
916
+ return {
917
+ isSignedIn: false,
918
+ nextStep: {
919
+ signInStep: 'CONTINUE_SIGN_IN_WITH_FIRST_FACTOR_SELECTION',
920
+ availableChallenges,
921
+ },
922
+ };
943
923
  case 'ADMIN_NO_SRP_AUTH':
944
924
  break;
945
925
  case 'DEVICE_PASSWORD_VERIFIER':
@@ -1027,6 +1007,26 @@ export async function handleChallengeName(
1027
1007
  const deviceName = options?.friendlyDeviceName;
1028
1008
 
1029
1009
  switch (challengeName) {
1010
+ case 'WEB_AUTHN':
1011
+ case 'SELECT_CHALLENGE':
1012
+ if (
1013
+ challengeResponse === 'PASSWORD_SRP' ||
1014
+ challengeResponse === 'PASSWORD'
1015
+ ) {
1016
+ return {
1017
+ ChallengeName: challengeResponse,
1018
+ Session: session,
1019
+ $metadata: {},
1020
+ };
1021
+ }
1022
+
1023
+ return initiateSelectedChallenge({
1024
+ username,
1025
+ session,
1026
+ selectedChallenge: challengeResponse,
1027
+ config,
1028
+ clientMetadata,
1029
+ });
1030
1030
  case 'SELECT_MFA_TYPE':
1031
1031
  return handleSelectMFATypeChallenge({
1032
1032
  challengeResponse,
@@ -1071,6 +1071,7 @@ export async function handleChallengeName(
1071
1071
  );
1072
1072
  case 'SMS_MFA':
1073
1073
  case 'SOFTWARE_TOKEN_MFA':
1074
+ case 'SMS_OTP':
1074
1075
  case 'EMAIL_OTP':
1075
1076
  return handleMFAChallenge({
1076
1077
  challengeName,
@@ -1080,6 +1081,23 @@ export async function handleChallengeName(
1080
1081
  username,
1081
1082
  config,
1082
1083
  });
1084
+ case 'PASSWORD':
1085
+ return handleSelectChallengeWithPassword(
1086
+ username,
1087
+ challengeResponse,
1088
+ clientMetadata,
1089
+ config,
1090
+ session,
1091
+ );
1092
+ case 'PASSWORD_SRP':
1093
+ return handleSelectChallengeWithPasswordSRP(
1094
+ username,
1095
+ challengeResponse, // This is the actual password
1096
+ clientMetadata,
1097
+ config,
1098
+ session,
1099
+ tokenOrchestrator,
1100
+ );
1083
1101
  }
1084
1102
  // TODO: remove this error message for production apps
1085
1103
  throw new AuthError({
@@ -1260,7 +1278,7 @@ export async function handleMFAChallenge({
1260
1278
  }: HandleAuthChallengeRequest & {
1261
1279
  challengeName: Extract<
1262
1280
  ChallengeName,
1263
- 'EMAIL_OTP' | 'SMS_MFA' | 'SOFTWARE_TOKEN_MFA'
1281
+ 'EMAIL_OTP' | 'SMS_MFA' | 'SOFTWARE_TOKEN_MFA' | 'SMS_OTP'
1264
1282
  >;
1265
1283
  }) {
1266
1284
  const { userPoolId, userPoolClientId, userPoolEndpoint } = config;
@@ -1277,6 +1295,10 @@ export async function handleMFAChallenge({
1277
1295
  challengeResponses.SMS_MFA_CODE = challengeResponse;
1278
1296
  }
1279
1297
 
1298
+ if (challengeName === 'SMS_OTP') {
1299
+ challengeResponses.SMS_OTP_CODE = challengeResponse;
1300
+ }
1301
+
1280
1302
  if (challengeName === 'SOFTWARE_TOKEN_MFA') {
1281
1303
  challengeResponses.SOFTWARE_TOKEN_MFA_CODE = challengeResponse;
1282
1304
  }
@@ -10,7 +10,7 @@ import { AutoSignInCallback } from '../../../types/models';
10
10
  import { AuthError } from '../../../errors/AuthError';
11
11
  import { resetAutoSignIn, setAutoSignIn } from '../apis/autoSignIn';
12
12
  import { AUTO_SIGN_IN_EXCEPTION } from '../../../errors/constants';
13
- import { SignUpCommandOutput } from '../../../foundation/factories/serviceClients/cognitoIdentityProvider/types';
13
+ import { signInWithUserAuth } from '../apis/signInWithUserAuth';
14
14
 
15
15
  const MAX_AUTOSIGNIN_POLLING_MS = 3 * 60 * 1000;
16
16
 
@@ -36,7 +36,6 @@ export function handleCodeAutoSignIn(signInInput: SignInInput) {
36
36
  // This will stop the listener if confirmSignUp is not resolved.
37
37
  const timeOutId = setTimeout(() => {
38
38
  stopHubListener();
39
- setAutoSignInStarted(false);
40
39
  clearTimeout(timeOutId);
41
40
  resetAutoSignIn();
42
41
  }, MAX_AUTOSIGNIN_POLLING_MS);
@@ -74,7 +73,6 @@ function handleAutoSignInWithLink(
74
73
  const maxTime = MAX_AUTOSIGNIN_POLLING_MS;
75
74
  if (elapsedTime > maxTime) {
76
75
  clearInterval(autoSignInPollingIntervalId);
77
- setAutoSignInStarted(false);
78
76
  reject(
79
77
  new AuthError({
80
78
  name: AUTO_SIGN_IN_EXCEPTION,
@@ -90,12 +88,10 @@ function handleAutoSignInWithLink(
90
88
  if (signInOutput.nextStep.signInStep !== 'CONFIRM_SIGN_UP') {
91
89
  resolve(signInOutput);
92
90
  clearInterval(autoSignInPollingIntervalId);
93
- setAutoSignInStarted(false);
94
91
  resetAutoSignIn();
95
92
  }
96
93
  } catch (error) {
97
94
  clearInterval(autoSignInPollingIntervalId);
98
- setAutoSignInStarted(false);
99
95
  reject(error);
100
96
  resetAutoSignIn();
101
97
  }
@@ -108,31 +104,6 @@ const debouncedAutoSignWithCodeOrUserConfirmed = debounce(
108
104
  300,
109
105
  );
110
106
 
111
- let autoSignInStarted = false;
112
-
113
- let usernameUsedForAutoSignIn: string | undefined;
114
-
115
- export function setUsernameUsedForAutoSignIn(username?: string) {
116
- usernameUsedForAutoSignIn = username;
117
- }
118
- export function isAutoSignInUserUsingConfirmSignUp(username: string) {
119
- return usernameUsedForAutoSignIn === username;
120
- }
121
-
122
- export function isAutoSignInStarted(): boolean {
123
- return autoSignInStarted;
124
- }
125
- export function setAutoSignInStarted(value: boolean) {
126
- if (value === false) {
127
- setUsernameUsedForAutoSignIn(undefined);
128
- }
129
- autoSignInStarted = value;
130
- }
131
-
132
- export function isSignUpComplete(output: SignUpCommandOutput): boolean {
133
- return !!output.UserConfirmed;
134
- }
135
-
136
107
  export function autoSignInWhenUserIsConfirmedWithLink(
137
108
  signInInput: SignInInput,
138
109
  ): AutoSignInCallback {
@@ -148,7 +119,11 @@ async function handleAutoSignInWithCodeOrUserConfirmed(
148
119
  reject: (reason?: any) => void,
149
120
  ) {
150
121
  try {
151
- const output = await signIn(signInInput);
122
+ const output =
123
+ signInInput?.options?.authFlowType === 'USER_AUTH'
124
+ ? await signInWithUserAuth(signInInput)
125
+ : await signIn(signInInput);
126
+
152
127
  resolve(output);
153
128
  resetAutoSignIn();
154
129
  } catch (error) {
@@ -75,7 +75,7 @@ export interface AuthSignInWithRedirectInput {
75
75
  * The parameters for constructing a Sign Up input.
76
76
  *
77
77
  * @param username - a standard username, potentially an email/phone number
78
- * @param password - the user's password
78
+ * @param password - the user's password, may be required depending on your Cognito User Pool configuration
79
79
  * @param options - optional parameters for the Sign Up process, including user attributes
80
80
  */
81
81
  export interface AuthSignUpInput<
@@ -83,7 +83,7 @@ export interface AuthSignUpInput<
83
83
  AuthSignUpOptions<AuthUserAttributeKey> = AuthSignUpOptions<AuthUserAttributeKey>,
84
84
  > {
85
85
  username: string;
86
- password: string;
86
+ password?: string;
87
87
  options?: ServiceOptions;
88
88
  }
89
89
 
@@ -3,6 +3,7 @@
3
3
 
4
4
  import { AuthStandardAttributeKey } from '@aws-amplify/core/internals/utils';
5
5
 
6
+ import { ChallengeName } from '../foundation/factories/serviceClients/cognitoIdentityProvider/types';
6
7
  import { SignInOutput } from '../providers/cognito';
7
8
 
8
9
  /**
@@ -217,6 +218,16 @@ export interface DoneSignInStep {
217
218
  signInStep: 'DONE';
218
219
  }
219
220
 
221
+ // New interfaces for USER_AUTH flow
222
+ export interface ContinueSignInWithFirstFactorSelection {
223
+ signInStep: 'CONTINUE_SIGN_IN_WITH_FIRST_FACTOR_SELECTION';
224
+ availableChallenges?: ChallengeName[];
225
+ }
226
+
227
+ export interface ConfirmSignInWithPassword {
228
+ signInStep: 'CONFIRM_SIGN_IN_WITH_PASSWORD';
229
+ }
230
+
220
231
  export type AuthNextSignInStep<
221
232
  UserAttributeKey extends AuthUserAttributeKey = AuthUserAttributeKey,
222
233
  > =
@@ -229,6 +240,8 @@ export type AuthNextSignInStep<
229
240
  | ContinueSignInWithTOTPSetup
230
241
  | ContinueSignInWithEmailSetup
231
242
  | ContinueSignInWithMFASetupSelection
243
+ | ContinueSignInWithFirstFactorSelection
244
+ | ConfirmSignInWithPassword
232
245
  | ConfirmSignUpStep
233
246
  | ResetPasswordStep
234
247
  | DoneSignInStep;
@@ -1 +0,0 @@
1
- {"version":3,"file":"signInStore.js","sources":["../../../../../src/providers/cognito/utils/signInStore.ts"],"sourcesContent":["\"use strict\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cleanActiveSignInState = exports.setActiveSignInState = exports.signInStore = void 0;\nconst signInReducer = (state, action) => {\n switch (action.type) {\n case 'SET_SIGN_IN_SESSION':\n return {\n ...state,\n signInSession: action.value,\n };\n case 'SET_SIGN_IN_STATE':\n return {\n ...action.value,\n };\n case 'SET_CHALLENGE_NAME':\n return {\n ...state,\n challengeName: action.value,\n };\n case 'SET_USERNAME':\n return {\n ...state,\n username: action.value,\n };\n case 'SET_INITIAL_STATE':\n return defaultState();\n default:\n return state;\n }\n};\nfunction defaultState() {\n return {\n username: undefined,\n challengeName: undefined,\n signInSession: undefined,\n };\n}\nconst createStore = reducer => {\n let currentState = reducer(defaultState(), { type: 'SET_INITIAL_STATE' });\n return {\n getState: () => currentState,\n dispatch: action => {\n currentState = reducer(currentState, action);\n },\n };\n};\nexports.signInStore = createStore(signInReducer);\nfunction setActiveSignInState(state) {\n exports.signInStore.dispatch({\n type: 'SET_SIGN_IN_STATE',\n value: state,\n });\n}\nexports.setActiveSignInState = setActiveSignInState;\nfunction cleanActiveSignInState() {\n exports.signInStore.dispatch({ type: 'SET_INITIAL_STATE' });\n}\nexports.cleanActiveSignInState = cleanActiveSignInState;\n"],"names":[],"mappings":";;AACA;AACA;AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,OAAO,CAAC,sBAAsB,GAAG,OAAO,CAAC,oBAAoB,GAAG,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC;AAC7F,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK;AACzC,IAAI,QAAQ,MAAM,CAAC,IAAI;AACvB,QAAQ,KAAK,qBAAqB;AAClC,YAAY,OAAO;AACnB,gBAAgB,GAAG,KAAK;AACxB,gBAAgB,aAAa,EAAE,MAAM,CAAC,KAAK;AAC3C,aAAa,CAAC;AACd,QAAQ,KAAK,mBAAmB;AAChC,YAAY,OAAO;AACnB,gBAAgB,GAAG,MAAM,CAAC,KAAK;AAC/B,aAAa,CAAC;AACd,QAAQ,KAAK,oBAAoB;AACjC,YAAY,OAAO;AACnB,gBAAgB,GAAG,KAAK;AACxB,gBAAgB,aAAa,EAAE,MAAM,CAAC,KAAK;AAC3C,aAAa,CAAC;AACd,QAAQ,KAAK,cAAc;AAC3B,YAAY,OAAO;AACnB,gBAAgB,GAAG,KAAK;AACxB,gBAAgB,QAAQ,EAAE,MAAM,CAAC,KAAK;AACtC,aAAa,CAAC;AACd,QAAQ,KAAK,mBAAmB;AAChC,YAAY,OAAO,YAAY,EAAE,CAAC;AAClC,QAAQ;AACR,YAAY,OAAO,KAAK,CAAC;AACzB,KAAK;AACL,CAAC,CAAC;AACF,SAAS,YAAY,GAAG;AACxB,IAAI,OAAO;AACX,QAAQ,QAAQ,EAAE,SAAS;AAC3B,QAAQ,aAAa,EAAE,SAAS;AAChC,QAAQ,aAAa,EAAE,SAAS;AAChC,KAAK,CAAC;AACN,CAAC;AACD,MAAM,WAAW,GAAG,OAAO,IAAI;AAC/B,IAAI,IAAI,YAAY,GAAG,OAAO,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;AAC9E,IAAI,OAAO;AACX,QAAQ,QAAQ,EAAE,MAAM,YAAY;AACpC,QAAQ,QAAQ,EAAE,MAAM,IAAI;AAC5B,YAAY,YAAY,GAAG,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AACzD,SAAS;AACT,KAAK,CAAC;AACN,CAAC,CAAC;AACF,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;AACjD,SAAS,oBAAoB,CAAC,KAAK,EAAE;AACrC,IAAI,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC;AACjC,QAAQ,IAAI,EAAE,mBAAmB;AACjC,QAAQ,KAAK,EAAE,KAAK;AACpB,KAAK,CAAC,CAAC;AACP,CAAC;AACD,OAAO,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;AACpD,SAAS,sBAAsB,GAAG;AAClC,IAAI,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;AAChE,CAAC;AACD,OAAO,CAAC,sBAAsB,GAAG,sBAAsB;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"signInStore.mjs","sources":["../../../../../src/providers/cognito/utils/signInStore.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst signInReducer = (state, action) => {\n switch (action.type) {\n case 'SET_SIGN_IN_SESSION':\n return {\n ...state,\n signInSession: action.value,\n };\n case 'SET_SIGN_IN_STATE':\n return {\n ...action.value,\n };\n case 'SET_CHALLENGE_NAME':\n return {\n ...state,\n challengeName: action.value,\n };\n case 'SET_USERNAME':\n return {\n ...state,\n username: action.value,\n };\n case 'SET_INITIAL_STATE':\n return defaultState();\n default:\n return state;\n }\n};\nfunction defaultState() {\n return {\n username: undefined,\n challengeName: undefined,\n signInSession: undefined,\n };\n}\nconst createStore = reducer => {\n let currentState = reducer(defaultState(), { type: 'SET_INITIAL_STATE' });\n return {\n getState: () => currentState,\n dispatch: action => {\n currentState = reducer(currentState, action);\n },\n };\n};\nexport const signInStore = createStore(signInReducer);\nexport function setActiveSignInState(state) {\n signInStore.dispatch({\n type: 'SET_SIGN_IN_STATE',\n value: state,\n });\n}\nexport function cleanActiveSignInState() {\n signInStore.dispatch({ type: 'SET_INITIAL_STATE' });\n}\n"],"names":[],"mappings":"AAAA;AACA;AACA,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK;AACzC,IAAI,QAAQ,MAAM,CAAC,IAAI;AACvB,QAAQ,KAAK,qBAAqB;AAClC,YAAY,OAAO;AACnB,gBAAgB,GAAG,KAAK;AACxB,gBAAgB,aAAa,EAAE,MAAM,CAAC,KAAK;AAC3C,aAAa,CAAC;AACd,QAAQ,KAAK,mBAAmB;AAChC,YAAY,OAAO;AACnB,gBAAgB,GAAG,MAAM,CAAC,KAAK;AAC/B,aAAa,CAAC;AACd,QAAQ,KAAK,oBAAoB;AACjC,YAAY,OAAO;AACnB,gBAAgB,GAAG,KAAK;AACxB,gBAAgB,aAAa,EAAE,MAAM,CAAC,KAAK;AAC3C,aAAa,CAAC;AACd,QAAQ,KAAK,cAAc;AAC3B,YAAY,OAAO;AACnB,gBAAgB,GAAG,KAAK;AACxB,gBAAgB,QAAQ,EAAE,MAAM,CAAC,KAAK;AACtC,aAAa,CAAC;AACd,QAAQ,KAAK,mBAAmB;AAChC,YAAY,OAAO,YAAY,EAAE,CAAC;AAClC,QAAQ;AACR,YAAY,OAAO,KAAK,CAAC;AACzB,KAAK;AACL,CAAC,CAAC;AACF,SAAS,YAAY,GAAG;AACxB,IAAI,OAAO;AACX,QAAQ,QAAQ,EAAE,SAAS;AAC3B,QAAQ,aAAa,EAAE,SAAS;AAChC,QAAQ,aAAa,EAAE,SAAS;AAChC,KAAK,CAAC;AACN,CAAC;AACD,MAAM,WAAW,GAAG,OAAO,IAAI;AAC/B,IAAI,IAAI,YAAY,GAAG,OAAO,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;AAC9E,IAAI,OAAO;AACX,QAAQ,QAAQ,EAAE,MAAM,YAAY;AACpC,QAAQ,QAAQ,EAAE,MAAM,IAAI;AAC5B,YAAY,YAAY,GAAG,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AACzD,SAAS;AACT,KAAK,CAAC;AACN,CAAC,CAAC;AACU,MAAC,WAAW,GAAG,WAAW,CAAC,aAAa,EAAE;AAC/C,SAAS,oBAAoB,CAAC,KAAK,EAAE;AAC5C,IAAI,WAAW,CAAC,QAAQ,CAAC;AACzB,QAAQ,IAAI,EAAE,mBAAmB;AACjC,QAAQ,KAAK,EAAE,KAAK;AACpB,KAAK,CAAC,CAAC;AACP,CAAC;AACM,SAAS,sBAAsB,GAAG;AACzC,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;AACxD;;;;"}