@aws-amplify/ui 5.8.1 → 6.0.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 (343) hide show
  1. package/dist/esm/helpers/accountSettings/utils.mjs +33 -1
  2. package/dist/esm/helpers/accountSettings/validator.mjs +120 -1
  3. package/dist/esm/helpers/authenticator/actor.mjs +20 -1
  4. package/dist/esm/helpers/authenticator/constants.mjs +144 -1
  5. package/dist/esm/helpers/authenticator/defaultAuthHubHandler.mjs +52 -0
  6. package/dist/esm/helpers/authenticator/facade.mjs +137 -1
  7. package/dist/esm/helpers/authenticator/form.mjs +43 -1
  8. package/dist/esm/helpers/authenticator/formFields/defaults.mjs +132 -1
  9. package/dist/esm/helpers/authenticator/formFields/formFields.mjs +62 -1
  10. package/dist/esm/helpers/authenticator/formFields/utils.mjs +35 -0
  11. package/dist/esm/helpers/authenticator/getRoute.mjs +47 -0
  12. package/dist/esm/helpers/authenticator/textUtil.mjs +112 -1
  13. package/dist/esm/helpers/authenticator/utils.mjs +38 -1
  14. package/dist/esm/helpers/utils.mjs +5 -1
  15. package/dist/esm/i18n/country-dial-codes.mjs +210 -1
  16. package/dist/esm/i18n/dictionaries/authenticator/de.mjs +87 -1
  17. package/dist/esm/i18n/dictionaries/authenticator/defaultTexts.mjs +83 -1
  18. package/dist/esm/i18n/dictionaries/authenticator/en.mjs +74 -1
  19. package/dist/esm/i18n/dictionaries/authenticator/es.mjs +83 -1
  20. package/dist/esm/i18n/dictionaries/authenticator/fr.mjs +92 -1
  21. package/dist/esm/i18n/dictionaries/authenticator/he.mjs +54 -1
  22. package/dist/esm/i18n/dictionaries/authenticator/id.mjs +96 -1
  23. package/dist/esm/i18n/dictionaries/authenticator/it.mjs +82 -1
  24. package/dist/esm/i18n/dictionaries/authenticator/ja.mjs +86 -1
  25. package/dist/esm/i18n/dictionaries/authenticator/kr.mjs +71 -1
  26. package/dist/esm/i18n/dictionaries/authenticator/nb.mjs +95 -1
  27. package/dist/esm/i18n/dictionaries/authenticator/nl.mjs +67 -1
  28. package/dist/esm/i18n/dictionaries/authenticator/pl.mjs +71 -1
  29. package/dist/esm/i18n/dictionaries/authenticator/pt.mjs +61 -1
  30. package/dist/esm/i18n/dictionaries/authenticator/ru.mjs +61 -1
  31. package/dist/esm/i18n/dictionaries/authenticator/sv.mjs +82 -1
  32. package/dist/esm/i18n/dictionaries/authenticator/tr.mjs +76 -1
  33. package/dist/esm/i18n/dictionaries/authenticator/ua.mjs +84 -1
  34. package/dist/esm/i18n/dictionaries/authenticator/zh.mjs +74 -1
  35. package/dist/esm/i18n/dictionaries/index.mjs +47 -1
  36. package/dist/esm/i18n/translations.mjs +67 -1
  37. package/dist/esm/index.mjs +28 -1
  38. package/dist/esm/machines/authenticator/actions.mjs +188 -1
  39. package/dist/esm/machines/authenticator/actors/forgotPassword.mjs +184 -0
  40. package/dist/esm/machines/authenticator/actors/signIn.mjs +328 -1
  41. package/dist/esm/machines/authenticator/actors/signOut.mjs +28 -1
  42. package/dist/esm/machines/authenticator/actors/signUp.mjs +295 -0
  43. package/dist/esm/machines/authenticator/actors/verifyUserAttributes.mjs +106 -0
  44. package/dist/esm/machines/authenticator/defaultServices.mjs +102 -1
  45. package/dist/esm/machines/authenticator/guards.mjs +70 -0
  46. package/dist/esm/machines/authenticator/index.mjs +368 -1
  47. package/dist/esm/machines/authenticator/utils.mjs +71 -0
  48. package/dist/esm/theme/breakpoints.mjs +14 -1
  49. package/dist/esm/theme/createTheme.mjs +156 -1
  50. package/dist/esm/theme/defaultDarkModeOverride.mjs +128 -1
  51. package/dist/esm/theme/defaultTheme.mjs +10 -1
  52. package/dist/esm/theme/tokens/borderWidths.mjs +7 -1
  53. package/dist/esm/theme/tokens/colors.mjs +166 -1
  54. package/dist/esm/theme/tokens/components/accordion.mjs +47 -0
  55. package/dist/esm/theme/tokens/components/alert.mjs +35 -1
  56. package/dist/esm/theme/tokens/components/authenticator.mjs +39 -1
  57. package/dist/esm/theme/tokens/components/autocomplete.mjs +42 -1
  58. package/dist/esm/theme/tokens/components/badge.mjs +44 -1
  59. package/dist/esm/theme/tokens/components/breadcrumbs.mjs +34 -1
  60. package/dist/esm/theme/tokens/components/button.mjs +685 -1
  61. package/dist/esm/theme/tokens/components/card.mjs +27 -1
  62. package/dist/esm/theme/tokens/components/checkbox.mjs +87 -1
  63. package/dist/esm/theme/tokens/components/checkboxField.mjs +8 -1
  64. package/dist/esm/theme/tokens/components/collection.mjs +72 -1
  65. package/dist/esm/theme/tokens/components/copy.mjs +18 -1
  66. package/dist/esm/theme/tokens/components/dialCodeSelect.mjs +7 -1
  67. package/dist/esm/theme/tokens/components/divider.mjs +22 -1
  68. package/dist/esm/theme/tokens/components/dropZone.mjs +46 -1
  69. package/dist/esm/theme/tokens/components/field.mjs +20 -1
  70. package/dist/esm/theme/tokens/components/fieldControl.mjs +131 -1
  71. package/dist/esm/theme/tokens/components/fieldGroup.mjs +11 -1
  72. package/dist/esm/theme/tokens/components/fieldMessages.mjs +13 -1
  73. package/dist/esm/theme/tokens/components/fieldset.mjs +40 -1
  74. package/dist/esm/theme/tokens/components/flex.mjs +9 -1
  75. package/dist/esm/theme/tokens/components/heading.mjs +30 -1
  76. package/dist/esm/theme/tokens/components/highlightMatch.mjs +7 -1
  77. package/dist/esm/theme/tokens/components/icon.mjs +6 -1
  78. package/dist/esm/theme/tokens/components/image.mjs +8 -1
  79. package/dist/esm/theme/tokens/components/inAppMessaging.mjs +23 -1
  80. package/dist/esm/theme/tokens/components/index.mjs +111 -1
  81. package/dist/esm/theme/tokens/components/input.mjs +12 -1
  82. package/dist/esm/theme/tokens/components/link.mjs +9 -1
  83. package/dist/esm/theme/tokens/components/liveness.mjs +7 -1
  84. package/dist/esm/theme/tokens/components/loader.mjs +42 -1
  85. package/dist/esm/theme/tokens/components/menu.mjs +27 -1
  86. package/dist/esm/theme/tokens/components/message.mjs +102 -1
  87. package/dist/esm/theme/tokens/components/pagination.mjs +40 -1
  88. package/dist/esm/theme/tokens/components/passwordField.mjs +38 -1
  89. package/dist/esm/theme/tokens/components/phoneNumberField.mjs +10 -1
  90. package/dist/esm/theme/tokens/components/placeholder.mjs +18 -1
  91. package/dist/esm/theme/tokens/components/radio.mjs +67 -1
  92. package/dist/esm/theme/tokens/components/radioGroup.mjs +19 -1
  93. package/dist/esm/theme/tokens/components/rating.mjs +9 -1
  94. package/dist/esm/theme/tokens/components/searchField.mjs +39 -1
  95. package/dist/esm/theme/tokens/components/select.mjs +63 -1
  96. package/dist/esm/theme/tokens/components/selectField.mjs +16 -1
  97. package/dist/esm/theme/tokens/components/sliderField.mjs +70 -1
  98. package/dist/esm/theme/tokens/components/stepperField.mjs +33 -1
  99. package/dist/esm/theme/tokens/components/storagemanager.mjs +97 -1
  100. package/dist/esm/theme/tokens/components/switchField.mjs +61 -1
  101. package/dist/esm/theme/tokens/components/table.mjs +105 -1
  102. package/dist/esm/theme/tokens/components/tabs.mjs +59 -1
  103. package/dist/esm/theme/tokens/components/text.mjs +28 -1
  104. package/dist/esm/theme/tokens/components/textAreaField.mjs +11 -1
  105. package/dist/esm/theme/tokens/components/textField.mjs +12 -1
  106. package/dist/esm/theme/tokens/components/toggleButton.mjs +96 -1
  107. package/dist/esm/theme/tokens/components/toggleButtonGroup.mjs +7 -1
  108. package/dist/esm/theme/tokens/fontSizes.mjs +14 -1
  109. package/dist/esm/theme/tokens/fontWeights.mjs +13 -1
  110. package/dist/esm/theme/tokens/fonts.mjs +19 -1
  111. package/dist/esm/theme/tokens/index.mjs +65 -1
  112. package/dist/esm/theme/tokens/lineHeights.mjs +7 -1
  113. package/dist/esm/theme/tokens/opacities.mjs +15 -1
  114. package/dist/esm/theme/tokens/outlineOffsets.mjs +7 -1
  115. package/dist/esm/theme/tokens/outlineWidths.mjs +7 -1
  116. package/dist/esm/theme/tokens/radii.mjs +11 -1
  117. package/dist/esm/theme/tokens/shadows.mjs +28 -1
  118. package/dist/esm/theme/tokens/space.mjs +29 -1
  119. package/dist/esm/theme/tokens/time.mjs +7 -1
  120. package/dist/esm/theme/tokens/transforms.mjs +10 -1
  121. package/dist/esm/theme/utils.mjs +81 -1
  122. package/dist/esm/types/authenticator/attributes.mjs +41 -1
  123. package/dist/esm/types/authenticator/user.mjs +18 -1
  124. package/dist/esm/types/authenticator/utils.mjs +5 -1
  125. package/dist/esm/types/primitives/componentClassName.mjs +164 -1
  126. package/dist/esm/utils/classNames.mjs +39 -0
  127. package/dist/esm/utils/setUserAgent/constants.mjs +43 -0
  128. package/dist/esm/utils/setUserAgent/setUserAgent.mjs +65 -0
  129. package/dist/esm/utils/utils.mjs +227 -0
  130. package/dist/esm/validators/index.mjs +19 -1
  131. package/dist/index.js +8396 -1
  132. package/dist/styles/StorageManager.css +138 -0
  133. package/dist/styles/StorageManager.layer.css +140 -0
  134. package/dist/styles/_fieldControl.css +0 -0
  135. package/dist/styles/_fieldControl.layer.css +3 -0
  136. package/dist/styles/accordion.css +64 -0
  137. package/dist/styles/accordion.layer.css +66 -0
  138. package/dist/styles/alert.css +44 -0
  139. package/dist/styles/alert.layer.css +46 -0
  140. package/dist/styles/authenticator.css +72 -0
  141. package/dist/styles/authenticator.layer.css +74 -0
  142. package/dist/styles/autocomplete.css +48 -0
  143. package/dist/styles/autocomplete.layer.css +50 -0
  144. package/dist/styles/badge.css +35 -0
  145. package/dist/styles/badge.layer.css +37 -0
  146. package/dist/styles/base.css +1491 -0
  147. package/dist/styles/base.layer.css +1493 -0
  148. package/dist/styles/breadcrumbs.css +40 -0
  149. package/dist/styles/breadcrumbs.layer.css +42 -0
  150. package/dist/styles/button.css +1122 -0
  151. package/dist/styles/button.layer.css +1124 -0
  152. package/dist/styles/card.css +26 -0
  153. package/dist/styles/card.layer.css +28 -0
  154. package/dist/styles/checkbox.css +95 -0
  155. package/dist/styles/checkbox.layer.css +97 -0
  156. package/dist/styles/checkboxField.css +6 -0
  157. package/dist/styles/checkboxField.layer.css +8 -0
  158. package/dist/styles/collection.css +70 -0
  159. package/dist/styles/collection.layer.css +72 -0
  160. package/dist/styles/copy.css +27 -0
  161. package/dist/styles/copy.layer.css +29 -0
  162. package/dist/styles/dialCodeSelect.css +3 -0
  163. package/dist/styles/dialCodeSelect.layer.css +5 -0
  164. package/dist/styles/divider.css +47 -0
  165. package/dist/styles/divider.layer.css +49 -0
  166. package/dist/styles/dropZone.css +45 -0
  167. package/dist/styles/dropZone.layer.css +47 -0
  168. package/dist/styles/field.css +17 -0
  169. package/dist/styles/field.layer.css +19 -0
  170. package/dist/styles/fieldGroup.css +130 -0
  171. package/dist/styles/fieldGroup.layer.css +132 -0
  172. package/dist/styles/fieldMessages.css +10 -0
  173. package/dist/styles/fieldMessages.layer.css +12 -0
  174. package/dist/styles/fieldModifiers.css +15 -0
  175. package/dist/styles/fieldModifiers.layer.css +17 -0
  176. package/dist/styles/fieldset.css +37 -0
  177. package/dist/styles/fieldset.layer.css +39 -0
  178. package/dist/styles/flex.css +8 -0
  179. package/dist/styles/flex.layer.css +10 -0
  180. package/dist/styles/grid.css +3 -0
  181. package/dist/styles/grid.layer.css +5 -0
  182. package/dist/styles/heading.css +40 -0
  183. package/dist/styles/heading.layer.css +42 -0
  184. package/dist/styles/highlightMatch.css +3 -0
  185. package/dist/styles/highlightMatch.layer.css +5 -0
  186. package/dist/styles/icon.css +14 -0
  187. package/dist/styles/icon.layer.css +16 -0
  188. package/dist/styles/image.css +9 -0
  189. package/dist/styles/image.layer.css +11 -0
  190. package/dist/styles/inAppMessaging.css +179 -0
  191. package/dist/styles/inAppMessaging.layer.css +181 -0
  192. package/dist/styles/input.css +83 -0
  193. package/dist/styles/input.layer.css +85 -0
  194. package/dist/styles/link.css +26 -0
  195. package/dist/styles/link.layer.css +28 -0
  196. package/dist/styles/liveness.css +374 -0
  197. package/dist/styles/liveness.layer.css +376 -0
  198. package/dist/styles/loader.css +108 -0
  199. package/dist/styles/loader.layer.css +110 -0
  200. package/dist/styles/menu.css +54 -0
  201. package/dist/styles/menu.layer.css +56 -0
  202. package/dist/styles/message.css +111 -0
  203. package/dist/styles/message.layer.css +113 -0
  204. package/dist/styles/pagination.css +41 -0
  205. package/dist/styles/pagination.layer.css +43 -0
  206. package/dist/styles/passwordField.css +49 -0
  207. package/dist/styles/passwordField.layer.css +51 -0
  208. package/dist/styles/phoneNumberField.css +30 -0
  209. package/dist/styles/phoneNumberField.layer.css +32 -0
  210. package/dist/styles/placeholder.css +31 -0
  211. package/dist/styles/placeholder.layer.css +33 -0
  212. package/dist/styles/radio.css +82 -0
  213. package/dist/styles/radio.layer.css +84 -0
  214. package/dist/styles/radioGroupField.css +25 -0
  215. package/dist/styles/radioGroupField.layer.css +27 -0
  216. package/dist/styles/radiogroup.css +5 -0
  217. package/dist/styles/radiogroup.layer.css +7 -0
  218. package/dist/styles/rating.css +33 -0
  219. package/dist/styles/rating.layer.css +35 -0
  220. package/dist/styles/reset.css +76 -0
  221. package/dist/styles/reset.layer.css +78 -0
  222. package/dist/styles/scrollView.css +4 -0
  223. package/dist/styles/scrollView.layer.css +6 -0
  224. package/dist/styles/searchField.css +29 -0
  225. package/dist/styles/searchField.layer.css +31 -0
  226. package/dist/styles/select.css +128 -0
  227. package/dist/styles/select.layer.css +130 -0
  228. package/dist/styles/selectField.css +18 -0
  229. package/dist/styles/selectField.layer.css +20 -0
  230. package/dist/styles/sliderField.css +143 -0
  231. package/dist/styles/sliderField.layer.css +145 -0
  232. package/dist/styles/stepperField.css +77 -0
  233. package/dist/styles/stepperField.layer.css +79 -0
  234. package/dist/styles/switchField.css +76 -0
  235. package/dist/styles/switchField.layer.css +78 -0
  236. package/dist/styles/table.css +146 -0
  237. package/dist/styles/table.layer.css +148 -0
  238. package/dist/styles/tabs.css +87 -0
  239. package/dist/styles/tabs.layer.css +89 -0
  240. package/dist/styles/text.css +40 -0
  241. package/dist/styles/text.layer.css +42 -0
  242. package/dist/styles/textArea.css +71 -0
  243. package/dist/styles/textArea.layer.css +73 -0
  244. package/dist/styles/textAreaField.css +12 -0
  245. package/dist/styles/textAreaField.layer.css +14 -0
  246. package/dist/styles/textField.css +14 -0
  247. package/dist/styles/textField.layer.css +16 -0
  248. package/dist/styles/toggleButton.css +280 -0
  249. package/dist/styles/toggleButton.layer.css +282 -0
  250. package/dist/styles/toggleButtonGroup.css +31 -0
  251. package/dist/styles/toggleButtonGroup.layer.css +33 -0
  252. package/dist/styles/visuallyHidden.css +12 -0
  253. package/dist/styles/visuallyHidden.layer.css +14 -0
  254. package/dist/styles.css +298 -684
  255. package/dist/styles.layer.css +6115 -0
  256. package/dist/theme.css +93 -156
  257. package/dist/types/helpers/accountSettings/utils.d.ts +1 -3
  258. package/dist/types/helpers/authenticator/actor.d.ts +1 -1
  259. package/dist/types/helpers/authenticator/constants.d.ts +5 -0
  260. package/dist/types/helpers/authenticator/defaultAuthHubHandler.d.ts +15 -0
  261. package/dist/types/helpers/authenticator/facade.d.ts +35 -6
  262. package/dist/types/helpers/authenticator/formFields/defaults.d.ts +3 -1
  263. package/dist/types/helpers/authenticator/formFields/formFields.d.ts +2 -1
  264. package/dist/types/helpers/authenticator/formFields/index.d.ts +1 -1
  265. package/dist/types/helpers/authenticator/formFields/{util.d.ts → utils.d.ts} +2 -0
  266. package/dist/types/helpers/authenticator/getRoute.d.ts +2 -0
  267. package/dist/types/helpers/authenticator/index.d.ts +2 -1
  268. package/dist/types/helpers/authenticator/textUtil.d.ts +8 -7
  269. package/dist/types/{types/authenticator/stateMachine/authMachine.d.ts → helpers/authenticator/types.d.ts} +5 -5
  270. package/dist/types/helpers/authenticator/utils.d.ts +0 -25
  271. package/dist/types/helpers/index.d.ts +0 -1
  272. package/dist/types/helpers/utils.d.ts +2 -2
  273. package/dist/types/i18n/translations.d.ts +2 -3
  274. package/dist/types/machines/authenticator/actions.d.ts +4 -62
  275. package/dist/types/machines/authenticator/actors/{resetPassword.d.ts → forgotPassword.d.ts} +3 -3
  276. package/dist/types/machines/authenticator/actors/index.d.ts +3 -1
  277. package/dist/types/machines/authenticator/actors/signIn.d.ts +3 -3
  278. package/dist/types/machines/authenticator/actors/signOut.d.ts +2 -2
  279. package/dist/types/machines/authenticator/{signUp.d.ts → actors/signUp.d.ts} +3 -3
  280. package/dist/types/machines/authenticator/actors/verifyUserAttributes.d.ts +5 -0
  281. package/dist/types/machines/authenticator/defaultServices.d.ts +208 -28
  282. package/dist/types/machines/authenticator/getAuthenticatorConfig.d.ts +14 -0
  283. package/dist/types/machines/authenticator/guards.d.ts +4 -0
  284. package/dist/types/machines/authenticator/index.d.ts +4 -2
  285. package/dist/types/machines/authenticator/types.d.ts +125 -0
  286. package/dist/types/machines/authenticator/utils.d.ts +7 -0
  287. package/dist/types/machines/index.d.ts +1 -0
  288. package/dist/types/theme/tokens/borderWidths.d.ts +2 -2
  289. package/dist/types/theme/tokens/colors.d.ts +7 -9
  290. package/dist/types/theme/tokens/components/accordion.d.ts +12 -0
  291. package/dist/types/theme/tokens/components/index.d.ts +2 -4
  292. package/dist/types/theme/tokens/components/radioGroup.d.ts +1 -1
  293. package/dist/types/theme/tokens/components/storagemanager.d.ts +18 -3
  294. package/dist/types/theme/tokens/components/tabs.d.ts +4 -3
  295. package/dist/types/theme/tokens/fontSizes.d.ts +2 -2
  296. package/dist/types/theme/tokens/fontWeights.d.ts +2 -2
  297. package/dist/types/theme/tokens/fonts.d.ts +2 -2
  298. package/dist/types/theme/tokens/lineHeights.d.ts +2 -2
  299. package/dist/types/theme/tokens/opacities.d.ts +2 -2
  300. package/dist/types/theme/tokens/outlineOffsets.d.ts +2 -2
  301. package/dist/types/theme/tokens/outlineWidths.d.ts +2 -2
  302. package/dist/types/theme/tokens/radii.d.ts +2 -2
  303. package/dist/types/theme/tokens/shadows.d.ts +2 -2
  304. package/dist/types/theme/tokens/space.d.ts +2 -2
  305. package/dist/types/theme/tokens/time.d.ts +2 -2
  306. package/dist/types/theme/tokens/types/designToken.d.ts +12 -6
  307. package/dist/types/theme/types.d.ts +5 -1
  308. package/dist/types/types/authenticator/attributes.d.ts +10 -4
  309. package/dist/types/types/authenticator/form.d.ts +7 -6
  310. package/dist/types/types/authenticator/index.d.ts +0 -1
  311. package/dist/types/types/authenticator/user.d.ts +3 -29
  312. package/dist/types/types/authenticator/validator.d.ts +2 -2
  313. package/dist/types/types/displayText.d.ts +84 -0
  314. package/dist/types/types/index.d.ts +1 -0
  315. package/dist/types/types/primitives/componentClassName.d.ts +162 -180
  316. package/dist/types/types/util.d.ts +0 -5
  317. package/dist/types/utils/classNames.d.ts +4 -0
  318. package/dist/types/utils/index.d.ts +3 -135
  319. package/dist/types/utils/setUserAgent/constants.d.ts +7 -0
  320. package/dist/types/utils/setUserAgent/index.d.ts +1 -0
  321. package/dist/types/utils/setUserAgent/setUserAgent.d.ts +19 -0
  322. package/dist/types/utils/utils.d.ts +147 -0
  323. package/dist/types/validators/index.d.ts +2 -2
  324. package/package.json +5 -19
  325. package/dist/esm/helpers/authenticator/context.mjs +0 -1
  326. package/dist/esm/helpers/authenticator/formFields/util.mjs +0 -1
  327. package/dist/esm/helpers/storage/fileUploader/utils/uploader.mjs +0 -1
  328. package/dist/esm/machines/authenticator/actors/resetPassword.mjs +0 -1
  329. package/dist/esm/machines/authenticator/signUp.mjs +0 -1
  330. package/dist/esm/theme/tokens/components/expander.mjs +0 -1
  331. package/dist/esm/theme/tokens/components/fileUploader.mjs +0 -1
  332. package/dist/esm/utils/index.mjs +0 -1
  333. package/dist/types/helpers/authenticator/context.d.ts +0 -13
  334. package/dist/types/helpers/storage/fileUploader/index.d.ts +0 -1
  335. package/dist/types/helpers/storage/fileUploader/utils/index.d.ts +0 -1
  336. package/dist/types/helpers/storage/fileUploader/utils/uploader.d.ts +0 -28
  337. package/dist/types/helpers/storage/index.d.ts +0 -1
  338. package/dist/types/theme/tokens/components/expander.d.ts +0 -22
  339. package/dist/types/theme/tokens/components/fileUploader.d.ts +0 -23
  340. package/dist/types/types/authenticator/stateMachine/context.d.ts +0 -109
  341. package/dist/types/types/authenticator/stateMachine/event.d.ts +0 -17
  342. package/dist/types/types/authenticator/stateMachine/index.d.ts +0 -4
  343. package/dist/types/types/authenticator/stateMachine/state.d.ts +0 -10
@@ -1 +1,33 @@
1
- import{__awaiter as e}from"tslib";import{Auth as r}from"aws-amplify";import{getLogger as s}from"../utils.mjs";const t=s("Auth"),o=({user:s,currentPassword:o,newPassword:d})=>e(void 0,void 0,void 0,(function*(){try{return t.debug("calling Auth.changePassword"),yield r.changePassword(s,o,d),t.debug("Auth.changePassword was successful"),Promise.resolve()}catch(e){return t.debug("Auth.changePassword failed with error",e),Promise.reject(e)}})),d=()=>e(void 0,void 0,void 0,(function*(){try{return t.debug("calling Auth.deleteUser"),yield r.deleteUser(),t.debug("Auth.deleteUser was successful"),Promise.resolve()}catch(e){return t.debug("Auth.deleteUser failed with error",e),Promise.reject(e)}}));export{o as changePassword,d as deleteUser};
1
+ import { updatePassword, deleteUser as deleteUser$1 } from 'aws-amplify/auth';
2
+ import { getLogger } from '../utils.mjs';
3
+
4
+ const logger = getLogger('Auth');
5
+ const changePassword = async ({ currentPassword, newPassword, }) => {
6
+ try {
7
+ logger.debug('calling Auth.updatePassword');
8
+ await updatePassword({
9
+ oldPassword: currentPassword,
10
+ newPassword,
11
+ });
12
+ logger.debug('Auth.updatePassword was successful');
13
+ return Promise.resolve();
14
+ }
15
+ catch (e) {
16
+ logger.debug('Auth.updatePassword failed with error', e);
17
+ return Promise.reject(e);
18
+ }
19
+ };
20
+ const deleteUser = async () => {
21
+ try {
22
+ logger.debug('calling Auth.deleteUser');
23
+ await deleteUser$1();
24
+ logger.debug('Auth.deleteUser was successful');
25
+ return Promise.resolve();
26
+ }
27
+ catch (e) {
28
+ logger.debug('Auth.deleteUser failed with error', e);
29
+ return Promise.reject(e);
30
+ }
31
+ };
32
+
33
+ export { changePassword, deleteUser };
@@ -1 +1,120 @@
1
- import{Amplify as e}from"aws-amplify";import"../../types/authenticator/user.mjs";import"../../types/authenticator/attributes.mjs";import"../../types/primitives/componentClassName.mjs";import"../../i18n/translations.mjs";import{hasSpecialChars as s}from"../authenticator/utils.mjs";const a=()=>{const s=e.configure(),a=null==s?void 0:s.aws_cognito_password_protection_settings;if(!a)return null;const{passwordPolicyCharacters:t=[],passwordPolicyMinLength:o}=a;return{minLength:o,needsLowerCase:t.includes("REQUIRES_LOWERCASE"),needsUpperCase:t.includes("REQUIRES_UPPERCASE"),needsNumber:t.includes("REQUIRES_NUMBERS"),needsSpecialChar:t.includes("REQUIRES_SYMBOLS")}},t=e=>({validationMode:"onTouched",validator:s=>s.length>=e,message:`Password must have at least ${e} characters`}),o={validationMode:"onTouched",validator:e=>/[a-z]/.test(e),message:"Password must have lower case letters"},r={validationMode:"onTouched",validator:e=>/[A-Z]/.test(e),message:"Password must have upper case letters"},n={validationMode:"onTouched",validator:e=>/[0-9]/.test(e),message:"Password must have numbers"},i={validationMode:"onTouched",validator:e=>s(e),message:"Password must have special characters"},d=e=>({validationMode:"onTouched",validator:s=>e===s,message:"Your passwords must match"}),u=()=>{const e=a();if(!e)return[];const s=[],{minLength:d,needsLowerCase:u,needsUpperCase:l,needsNumber:c,needsSpecialChar:h}=e;return d&&s.push(t(d)),u&&s.push(o),l&&s.push(r),c&&s.push(n),h&&s.push(i),s},l=e=>[d(e)],c=({validationMode:e,eventType:s,hasBlurred:a})=>{switch(e){case"onBlur":return"blur"===s;case"onChange":return"change"===s;case"onTouched":return"blur"===s||a}},h=({value:e,validators:s,eventType:a,hasBlurred:t})=>e?s.reduce(((s,o)=>{const{validator:r,validationMode:n,message:i}=o;if(c({validationMode:n,eventType:a,hasBlurred:t})){return!r(e)?[...s,i]:s}return s}),[]):[];export{l as getDefaultConfirmPasswordValidators,u as getDefaultPasswordValidators,t as getHasMinLength,d as getMatchesConfirmPassword,a as getPasswordRequirement,o as hasLowerCase,n as hasNumber,i as hasSpecialChar,r as hasUpperCase,h as runFieldValidators,c as shouldValidate};
1
+ import { Amplify } from 'aws-amplify';
2
+ import 'aws-amplify/utils';
3
+ import '@aws-amplify/core/internals/utils';
4
+ import '../../utils/setUserAgent/constants.mjs';
5
+ import '../../types/authenticator/user.mjs';
6
+ import '../../types/authenticator/attributes.mjs';
7
+ import { hasSpecialChars } from '../authenticator/utils.mjs';
8
+
9
+ // gets password requirement from Amplify.configure data
10
+ const getPasswordRequirement = () => {
11
+ const config = Amplify.getConfig();
12
+ const passwordSettings = config?.Auth?.Cognito
13
+ .passwordFormat;
14
+ if (!passwordSettings) {
15
+ return null;
16
+ }
17
+ return {
18
+ minLength: passwordSettings.minLength,
19
+ needsLowerCase: passwordSettings.requireLowercase ?? false,
20
+ needsUpperCase: passwordSettings.requireUppercase ?? false,
21
+ needsNumber: passwordSettings.requireNumbers ?? false,
22
+ needsSpecialChar: passwordSettings.requireSpecialCharacters ?? false,
23
+ };
24
+ };
25
+ const getHasMinLength = (minLength) => ({
26
+ validationMode: 'onTouched',
27
+ validator: (field) => field.length >= minLength,
28
+ message: `Password must have at least ${minLength} characters`,
29
+ });
30
+ const hasLowerCase = {
31
+ validationMode: 'onTouched',
32
+ validator: (field) => /[a-z]/.test(field),
33
+ message: 'Password must have lower case letters',
34
+ };
35
+ const hasUpperCase = {
36
+ validationMode: 'onTouched',
37
+ validator: (field) => /[A-Z]/.test(field),
38
+ message: 'Password must have upper case letters',
39
+ };
40
+ const hasNumber = {
41
+ validationMode: 'onTouched',
42
+ validator: (field) => /[0-9]/.test(field),
43
+ message: 'Password must have numbers',
44
+ };
45
+ const hasSpecialChar = {
46
+ validationMode: 'onTouched',
47
+ validator: (field) => hasSpecialChars(field),
48
+ message: 'Password must have special characters',
49
+ };
50
+ const getMatchesConfirmPassword = (password) => {
51
+ return {
52
+ validationMode: 'onTouched',
53
+ validator: (confirmPassword) => password === confirmPassword,
54
+ message: 'Your passwords must match',
55
+ };
56
+ };
57
+ const getDefaultPasswordValidators = () => {
58
+ const requirement = getPasswordRequirement();
59
+ if (!requirement)
60
+ return [];
61
+ const validators = [];
62
+ const { minLength, needsLowerCase, needsUpperCase, needsNumber, needsSpecialChar, } = requirement;
63
+ if (minLength) {
64
+ validators.push(getHasMinLength(minLength));
65
+ }
66
+ if (needsLowerCase) {
67
+ validators.push(hasLowerCase);
68
+ }
69
+ if (needsUpperCase) {
70
+ validators.push(hasUpperCase);
71
+ }
72
+ if (needsNumber) {
73
+ validators.push(hasNumber);
74
+ }
75
+ if (needsSpecialChar) {
76
+ validators.push(hasSpecialChar);
77
+ }
78
+ return validators;
79
+ };
80
+ const getDefaultConfirmPasswordValidators = (password) => {
81
+ return [getMatchesConfirmPassword(password)];
82
+ };
83
+ /*
84
+ * `shouldValidate` determines whether validator should be run, based on validation mode,
85
+ * input event type, and whether it has been blurred yet.
86
+ */
87
+ const shouldValidate = ({ validationMode, eventType, hasBlurred, }) => {
88
+ switch (validationMode) {
89
+ case 'onBlur': {
90
+ // only run validator on blur event
91
+ return eventType === 'blur';
92
+ }
93
+ case 'onChange': {
94
+ // only run validator on change event
95
+ return eventType === 'change';
96
+ }
97
+ case 'onTouched': {
98
+ /**
99
+ * run validator on first blur event, and then every subsequent
100
+ * blur/change event.
101
+ */
102
+ return eventType === 'blur' || hasBlurred;
103
+ }
104
+ }
105
+ };
106
+ // `runFieldValidator` runs all validators, and returns error messages.
107
+ const runFieldValidators = ({ value, validators, eventType, hasBlurred, }) => {
108
+ if (!value)
109
+ return [];
110
+ return validators.reduce((prevErrors, validatorSpec) => {
111
+ const { validator, validationMode, message } = validatorSpec;
112
+ if (shouldValidate({ validationMode, eventType, hasBlurred })) {
113
+ const hasError = !validator(value);
114
+ return hasError ? [...prevErrors, message] : prevErrors;
115
+ }
116
+ return prevErrors;
117
+ }, []);
118
+ };
119
+
120
+ export { getDefaultConfirmPasswordValidators, getDefaultPasswordValidators, getHasMinLength, getMatchesConfirmPassword, getPasswordRequirement, hasLowerCase, hasNumber, hasSpecialChar, hasUpperCase, runFieldValidators, shouldValidate };
@@ -1 +1,20 @@
1
- const t=t=>{var o;return null===(o=t.context.actorRef)||void 0===o?void 0:o.getSnapshot()},o=o=>{var n;return null===(n=t(o))||void 0===n?void 0:n.context};export{o as getActorContext,t as getActorState};
1
+ /**
2
+ * This file contains helpers that lets you easily access current actor's state
3
+ * and context.
4
+ */
5
+ /**
6
+ * Get the state of current actor. This is useful for checking which screen
7
+ * to render: e.g. `getActorState(state).matches('confirmSignUp.edit').
8
+ */
9
+ const getActorState = (state) => {
10
+ return state.context.actorRef?.getSnapshot();
11
+ };
12
+ /**
13
+ * Get the context of current actor. Useful for getting any nested context
14
+ * like remoteError.
15
+ */
16
+ const getActorContext = (state) => {
17
+ return getActorState(state)?.context;
18
+ };
19
+
20
+ export { getActorContext, getActorState };
@@ -1 +1,144 @@
1
- import{countryDialCodes as e}from"../../i18n/country-dial-codes.mjs";import"../../i18n/translations.mjs";const a={birthdate:{label:"Birthdate",placeholder:"Enter your Birthdate",type:"date",autocomplete:"bday",isRequired:!0},confirmation_code:{label:"Confirmation Code",placeholder:"Enter your Confirmation Code",type:"number",autocomplete:"one-time-code",isRequired:!0},confirm_password:{label:"Confirm Password",placeholder:"Please confirm your Password",type:"password",autocomplete:"new-password",isRequired:!0},email:{label:"Email",placeholder:"Enter your Email",type:"email",autocomplete:"username",isRequired:!0},family_name:{label:"Family Name",placeholder:"Enter your Family Name",type:"text",autocomplete:"family-name",isRequired:!0},given_name:{label:"Given Name",placeholder:"Enter your Given Name",type:"text",autocomplete:"given-name",isRequired:!0},middle_name:{label:"Middle Name",placeholder:"Enter your Middle Name",type:"text",autocomplete:"additional-name",isRequired:!0},name:{label:"Name",placeholder:"Enter your Name",type:"text",autocomplete:"name",isRequired:!0},nickname:{label:"Nickname",placeholder:"Enter your Nickname",type:"text",autocomplete:"tel",isRequired:!0},password:{label:"Password",placeholder:"Enter your Password",type:"password",autocomplete:"new-password",isRequired:!0},phone_number:{label:"Phone Number",placeholder:"Enter your Phone Number",type:"tel",autocomplete:"tel",dialCode:"+1",dialCodeList:e,isRequired:!0},preferred_username:{label:"Preferred Username",placeholder:"Enter your Preferred Username",type:"text",isRequired:!0},profile:{label:"Profile",placeholder:"Add your Profile",type:"url",autocomplete:"url",isRequired:!0},website:{label:"Website",placeholder:"Add your Website",type:"url",autocomplete:"url",isRequired:!0},username:{label:"Username",placeholder:"Enter your Username",type:"text",autocomplete:"username",isRequired:!0}},r=["^","$","*",".","[","]","{","}","(",")","?",'"',"!","@","#","%","&","/","\\",",",">","<","'",":",";","|","_","~","`","=","+","-"," "],l=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;export{r as ALLOWED_SPECIAL_CHARACTERS,a as defaultFormFieldOptions,l as emailRegex};
1
+ import { countryDialCodes } from '../../i18n/country-dial-codes.mjs';
2
+ import 'aws-amplify/utils';
3
+
4
+ /**
5
+ * This file contains helpers related to forms and input attributes.
6
+ */
7
+ const defaultFormFieldOptions = {
8
+ birthdate: {
9
+ label: 'Birthdate',
10
+ placeholder: 'Enter your Birthdate',
11
+ type: 'date',
12
+ autocomplete: 'bday',
13
+ isRequired: true,
14
+ },
15
+ confirmation_code: {
16
+ label: 'Confirmation Code',
17
+ placeholder: 'Enter your Confirmation Code',
18
+ type: 'text',
19
+ autocomplete: 'one-time-code',
20
+ isRequired: true,
21
+ },
22
+ confirm_password: {
23
+ label: 'Confirm Password',
24
+ placeholder: 'Please confirm your Password',
25
+ type: 'password',
26
+ autocomplete: 'new-password',
27
+ isRequired: true,
28
+ },
29
+ email: {
30
+ label: 'Email',
31
+ placeholder: 'Enter your Email',
32
+ type: 'email',
33
+ autocomplete: 'username',
34
+ isRequired: true,
35
+ },
36
+ family_name: {
37
+ label: 'Family Name',
38
+ placeholder: 'Enter your Family Name',
39
+ type: 'text',
40
+ autocomplete: 'family-name',
41
+ isRequired: true,
42
+ },
43
+ given_name: {
44
+ label: 'Given Name',
45
+ placeholder: 'Enter your Given Name',
46
+ type: 'text',
47
+ autocomplete: 'given-name',
48
+ isRequired: true,
49
+ },
50
+ middle_name: {
51
+ label: 'Middle Name',
52
+ placeholder: 'Enter your Middle Name',
53
+ type: 'text',
54
+ autocomplete: 'additional-name',
55
+ isRequired: true,
56
+ },
57
+ name: {
58
+ label: 'Name',
59
+ placeholder: 'Enter your Name',
60
+ type: 'text',
61
+ autocomplete: 'name',
62
+ isRequired: true,
63
+ },
64
+ nickname: {
65
+ label: 'Nickname',
66
+ placeholder: 'Enter your Nickname',
67
+ type: 'text',
68
+ autocomplete: 'tel',
69
+ isRequired: true,
70
+ },
71
+ password: {
72
+ label: 'Password',
73
+ placeholder: 'Enter your Password',
74
+ type: 'password',
75
+ autocomplete: 'new-password',
76
+ isRequired: true,
77
+ },
78
+ phone_number: {
79
+ label: 'Phone Number',
80
+ placeholder: 'Enter your Phone Number',
81
+ type: 'tel',
82
+ autocomplete: 'tel',
83
+ dialCode: '+1',
84
+ dialCodeList: countryDialCodes,
85
+ isRequired: true,
86
+ },
87
+ preferred_username: {
88
+ label: 'Preferred Username',
89
+ placeholder: 'Enter your Preferred Username',
90
+ type: 'text',
91
+ isRequired: true,
92
+ },
93
+ profile: {
94
+ label: 'Profile',
95
+ placeholder: 'Add your Profile',
96
+ type: 'url',
97
+ autocomplete: 'url',
98
+ isRequired: true,
99
+ },
100
+ website: {
101
+ label: 'Website',
102
+ placeholder: 'Add your Website',
103
+ type: 'url',
104
+ autocomplete: 'url',
105
+ isRequired: true,
106
+ },
107
+ username: {
108
+ label: 'Username',
109
+ placeholder: 'Enter your Username',
110
+ type: 'text',
111
+ autocomplete: 'username',
112
+ isRequired: true,
113
+ },
114
+ };
115
+ /**
116
+ * List of special characters that Cognito allows.
117
+ *
118
+ * Adapted from https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-policies.html
119
+ */
120
+ // prettier-ignore
121
+ const ALLOWED_SPECIAL_CHARACTERS = [
122
+ '^', '$', '*', '.', '[', ']',
123
+ '{', '}', '(', ')', '?', '"',
124
+ '!', '@', '#', '%', '&', '/',
125
+ '\\', ',', '>', '<', "'", ':',
126
+ ';', '|', '_', '~', '`', '=',
127
+ '+', '-', ' '
128
+ ];
129
+ /**
130
+ * Email validation regex
131
+ *
132
+ * source: HTML5 spec https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address
133
+ */
134
+ const emailRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
135
+ /**
136
+ + * map navigable route keys to auth event names
137
+ + */
138
+ const NAVIGABLE_ROUTE_EVENT = {
139
+ forgotPassword: 'FORGOT_PASSWORD',
140
+ signIn: 'SIGN_IN',
141
+ signUp: 'SIGN_UP',
142
+ };
143
+
144
+ export { ALLOWED_SPECIAL_CHARACTERS, NAVIGABLE_ROUTE_EVENT, defaultFormFieldOptions, emailRegex };
@@ -0,0 +1,52 @@
1
+ import { Hub } from 'aws-amplify/utils';
2
+ import '@aws-amplify/core/internals/utils';
3
+ import '../../utils/setUserAgent/constants.mjs';
4
+ import { isFunction } from '../../utils/utils.mjs';
5
+
6
+ /**
7
+ * Handles Amplify JS Auth hub events, by forwarding hub events as appropriate
8
+ * xstate events.
9
+ */
10
+ const defaultAuthHubHandler = async ({ payload }, service, options) => {
11
+ const { event } = payload;
12
+ const { send } = service;
13
+ const { onSignIn, onSignOut } = options ?? {};
14
+ switch (event) {
15
+ case 'signedIn': {
16
+ if (isFunction(onSignIn)) {
17
+ onSignIn(payload);
18
+ }
19
+ break;
20
+ }
21
+ case 'signInWithRedirect': {
22
+ send('SIGN_IN_WITH_REDIRECT');
23
+ break;
24
+ }
25
+ case 'signedOut':
26
+ case 'tokenRefresh_failure': {
27
+ if (event === 'signedOut' && isFunction(onSignOut)) {
28
+ onSignOut();
29
+ }
30
+ send('SIGN_OUT');
31
+ break;
32
+ }
33
+ }
34
+ };
35
+ const getHubEventHandler = (service, handler) => (data) => {
36
+ handler(data, service);
37
+ };
38
+ /**
39
+ * Listens to external auth Hub events and sends corresponding event to
40
+ * the `authService` of interest
41
+ *
42
+ * @param send - `send` function associated with the `authService` of interest
43
+ *
44
+ * @returns function that unsubscribes to the hub evenmt
45
+ */
46
+ const listenToAuthHub = (service,
47
+ // angular passes its own `handler` param
48
+ handler = defaultAuthHubHandler) => {
49
+ return Hub.listen('auth', getHubEventHandler(service, handler), 'authenticator-hub-handler');
50
+ };
51
+
52
+ export { defaultAuthHubHandler, listenToAuthHub };
@@ -1 +1,137 @@
1
- import{getActorContext as e,getActorState as t}from"./actor.mjs";const r=e=>{const t=t=>r=>e({type:t,data:r});return{initializeMachine:t("INIT"),resendCode:t("RESEND"),signOut:t("SIGN_OUT"),submitForm:t("SUBMIT"),updateForm:t("CHANGE"),updateBlur:t("BLUR"),toFederatedSignIn:t("FEDERATED_SIGN_IN"),toResetPassword:t("RESET_PASSWORD"),toSignIn:t("SIGN_IN"),toSignUp:t("SIGN_UP"),skipVerification:t("SKIP")}},n=r=>{var n,s,i,a,o;const c=null!==(n=e(r))&&void 0!==n?n:{},{codeDeliveryDetails:u,remoteError:d,unverifiedContactMethods:l,validationError:m,totpSecretCode:h=null}=c,{socialProviders:v}=null!==(i=null===(s=r.context)||void 0===s?void 0:s.config)&&void 0!==i?i:{},g=null!==(a=null==c?void 0:c.user)&&void 0!==a?a:null===(o=r.context)||void 0===o?void 0:o.user,f=m&&Object.keys(m).length>0,p=t(r),S=r.hasTag("pending")||(null==p?void 0:p.hasTag("pending")),I=(()=>{switch(!0){case r.matches("idle"):return"idle";case r.matches("setup"):return"setup";case r.matches("signOut"):return"signOut";case r.matches("authenticated"):return"authenticated";case null==p?void 0:p.matches("confirmSignUp"):return"confirmSignUp";case null==p?void 0:p.matches("confirmSignIn"):return"confirmSignIn";case null==p?void 0:p.matches("setupTOTP.edit"):case null==p?void 0:p.matches("setupTOTP.submit"):return"setupTOTP";case null==p?void 0:p.matches("signIn"):return"signIn";case null==p?void 0:p.matches("signUp"):return"signUp";case null==p?void 0:p.matches("forceNewPassword"):return"forceNewPassword";case null==p?void 0:p.matches("resetPassword"):return"resetPassword";case null==p?void 0:p.matches("confirmResetPassword"):return"confirmResetPassword";case null==p?void 0:p.matches("verifyUser"):return"verifyUser";case null==p?void 0:p.matches("confirmVerifyUser"):return"confirmVerifyUser";case null==p?void 0:p.matches("setupTOTP.getTotpSecretCode"):case r.matches("signIn.runActor"):return"transition";default:return console.debug("Cannot infer `route` from Authenticator state:",r.value),null}})(),P=(e=>{switch(e){case"idle":case"setup":return"configuring";case"authenticated":return"authenticated";default:return"unauthenticated"}})(I);return{authStatus:P,codeDeliveryDetails:u,error:d,hasValidationErrors:f,isPending:S,route:I,socialProviders:v,totpSecretCode:h,unverifiedContactMethods:l,user:g,validationErrors:m}},s=({send:e,state:t})=>{const s=r(e),i=n(t);return Object.assign(Object.assign({},s),i)};export{r as getSendEventAliases,n as getServiceContextFacade,s as getServiceFacade};
1
+ import { getActorContext, getActorState } from './actor.mjs';
2
+ import { NAVIGABLE_ROUTE_EVENT } from './constants.mjs';
3
+ import { getRoute } from './getRoute.mjs';
4
+
5
+ /**
6
+ * This file contains helpers that translates xstate internals to more
7
+ * understandable authenticator contexts. We provide these contexts with
8
+ * `useAuthenticator` hook/composable/service.
9
+ */
10
+ /**
11
+ * Creates public facing auth helpers that abstracts out xstate implementation
12
+ * detail. Each framework implementation can export these helpers so that
13
+ * developers can send events without having to learn internals.
14
+ *
15
+ * ```
16
+ * const [state, send] = useActor(...);
17
+ * const { submit } = getSendEventAliases(send);
18
+ * submit({ username, password})
19
+ * ```
20
+ */
21
+ const getSendEventAliases = (send) => {
22
+ const sendToMachine = (type) => {
23
+ // TODO If these were created during the creation of the machine & provider,
24
+ // then invalid transitions could be caught via https://xstate.js.org/docs/guides/states.html#state-can-event
25
+ return (data) => send({ type, data });
26
+ };
27
+ return {
28
+ initializeMachine: sendToMachine('INIT'),
29
+ resendCode: sendToMachine('RESEND'),
30
+ signOut: sendToMachine('SIGN_OUT'),
31
+ submitForm: sendToMachine('SUBMIT'),
32
+ updateForm: sendToMachine('CHANGE'),
33
+ updateBlur: sendToMachine('BLUR'),
34
+ // Actions that don't immediately invoke a service but instead transition to a screen
35
+ // are prefixed with `to*`
36
+ toFederatedSignIn: sendToMachine('FEDERATED_SIGN_IN'),
37
+ toForgotPassword: sendToMachine('FORGOT_PASSWORD'),
38
+ toSignIn: sendToMachine('SIGN_IN'),
39
+ toSignUp: sendToMachine('SIGN_UP'),
40
+ skipVerification: sendToMachine('SKIP'),
41
+ };
42
+ };
43
+ const getNextSendEventAliases = (send) => {
44
+ const { toFederatedSignIn, submitForm, resendCode, skipVerification } = getSendEventAliases(send);
45
+ return {
46
+ handleSubmit: submitForm,
47
+ resendConfirmationCode: resendCode,
48
+ // manual "route" navigation
49
+ setRoute: (route) => send({ type: NAVIGABLE_ROUTE_EVENT[route] }),
50
+ skipAttributeVerification: skipVerification,
51
+ toFederatedSignIn,
52
+ };
53
+ };
54
+ const getServiceContextFacade = (state) => {
55
+ const actorContext = (getActorContext(state) ?? {});
56
+ const { challengeName, codeDeliveryDetails, remoteError: error, validationError: validationErrors, totpSecretCode = null, unverifiedUserAttributes, username, } = actorContext;
57
+ const { socialProviders = [] } = state.context?.config ?? {};
58
+ // check for user in actorContext prior to state context. actorContext is more "up to date",
59
+ // but is not available on all states
60
+ const user = actorContext?.user ?? state.context?.user;
61
+ const hasValidationErrors = !!(validationErrors && Object.keys(validationErrors).length > 0);
62
+ const actorState = getActorState(state);
63
+ const isPending = state.hasTag('pending') || actorState?.hasTag('pending');
64
+ const route = getRoute(state, actorState);
65
+ // Auth status represents the current state of the auth flow
66
+ // The `configuring` state is used to indicate when the xState machine is loading
67
+ const authStatus = ((route) => {
68
+ switch (route) {
69
+ case 'idle':
70
+ case 'setup':
71
+ return 'configuring';
72
+ case 'authenticated':
73
+ return 'authenticated';
74
+ default:
75
+ return 'unauthenticated';
76
+ }
77
+ })(route);
78
+ const facade = {
79
+ authStatus,
80
+ challengeName,
81
+ codeDeliveryDetails,
82
+ error,
83
+ hasValidationErrors,
84
+ isPending,
85
+ route,
86
+ socialProviders,
87
+ totpSecretCode,
88
+ unverifiedUserAttributes,
89
+ user,
90
+ username,
91
+ validationErrors,
92
+ // @v6-migration-note
93
+ // While most of the properties
94
+ // on `AuthenticatorServiceContextFacade` can resolve to `undefined`, updating
95
+ // the interface requires material changes in consumers (namely `useAutenticator`)
96
+ // which will have implications on the UI layer as typeguards and non-null checks
97
+ // are required to pass type checking. As the `Authenticator` is behaving as expected
98
+ // with the `AuthenticatorServiceContextFacade` interface, prefer to cast
99
+ };
100
+ return facade;
101
+ };
102
+ const getNextServiceContextFacade = (state) => {
103
+ const actorContext = (getActorContext(state) ?? {});
104
+ const { challengeName, codeDeliveryDetails, remoteError: errorMessage, totpSecretCode, unverifiedUserAttributes, username, } = actorContext;
105
+ const { socialProviders: federatedProviders, loginMechanisms } = state.context?.config ?? {};
106
+ const loginMechanism = loginMechanisms?.[0];
107
+ const actorState = getActorState(state);
108
+ const isPending = state.hasTag('pending') || actorState?.hasTag('pending');
109
+ // @todo-migration remove this cast for Authenticator.Next
110
+ const route = getRoute(state, actorState);
111
+ return {
112
+ challengeName,
113
+ codeDeliveryDetails,
114
+ errorMessage,
115
+ federatedProviders,
116
+ isPending,
117
+ loginMechanism,
118
+ route,
119
+ totpSecretCode,
120
+ unverifiedUserAttributes,
121
+ username,
122
+ };
123
+ };
124
+ const getServiceFacade = ({ send, state, }) => {
125
+ const sendEventAliases = getSendEventAliases(send);
126
+ const serviceContext = getServiceContextFacade(state);
127
+ return {
128
+ ...sendEventAliases,
129
+ ...serviceContext,
130
+ };
131
+ };
132
+ const getNextServiceFacade = ({ send, state, }) => ({
133
+ ...getNextSendEventAliases(send),
134
+ ...getNextServiceContextFacade(state),
135
+ });
136
+
137
+ export { getNextServiceContextFacade, getNextServiceFacade, getSendEventAliases, getServiceContextFacade, getServiceFacade };
@@ -1 +1,43 @@
1
- import"../../types/authenticator/user.mjs";import{authFieldsWithDefaults as r}from"../../types/authenticator/attributes.mjs";import"../../types/primitives/componentClassName.mjs";const t=r=>{const t=new FormData(r.target);return Object.fromEntries(t)},e=(r,t)=>{let e=[];return r&&(e=Object.keys(r).reduce(((t,e)=>{var o;return t.push([e,null===(o=r[e])||void 0===o?void 0:o.order]),t}),[]).sort(((r,t)=>r[1]-t[1])).filter((r=>void 0!==r[1])).map((r=>r[0]))),Array.from(new Set([...e,...t]))},o=t=>r.includes(t),s=r=>{return r?(t=r,Array.isArray(t)?r:[r]):null;var t};export{s as getErrors,t as getFormDataFromEvent,o as isAuthFieldWithDefaults,e as setFormOrder};
1
+ import '../../types/authenticator/user.mjs';
2
+ import { authFieldsWithDefaults } from '../../types/authenticator/attributes.mjs';
3
+
4
+ const getFormDataFromEvent = (event) => {
5
+ const formData = new FormData(event.target);
6
+ return Object.fromEntries(formData);
7
+ };
8
+ const setFormOrder = (formOverrides, fieldNames) => {
9
+ let orderedKeys = [];
10
+ if (formOverrides) {
11
+ orderedKeys = Object.keys(formOverrides)
12
+ .reduce((prev, key) => {
13
+ // reduce to array that can be sorted
14
+ prev.push([key, formOverrides[key]?.order]);
15
+ return prev;
16
+ }, [])
17
+ .sort((a, b) =>
18
+ //sort them based on order
19
+ a[1] - b[1]) // returned just key
20
+ .filter((a) => a[1] !== undefined)
21
+ .map((a) => a[0]);
22
+ }
23
+ // remove duplicates
24
+ return Array.from(new Set([...orderedKeys, ...fieldNames]));
25
+ };
26
+ const isAuthFieldWithDefaults = (field) => {
27
+ return authFieldsWithDefaults.includes(field);
28
+ };
29
+ const isArray = (val) => {
30
+ return Array.isArray(val);
31
+ };
32
+ const getErrors = (errors) => {
33
+ if (!errors)
34
+ return null;
35
+ if (isArray(errors)) {
36
+ return errors;
37
+ }
38
+ else {
39
+ return [errors];
40
+ }
41
+ };
42
+
43
+ export { getErrors, getFormDataFromEvent, isAuthFieldWithDefaults, setFormOrder };