@cedros/login-react 0.0.12 → 0.0.14

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 (435) hide show
  1. package/README.md +68 -0
  2. package/dist/AdminDepositList-CyT4VBH8.js +311 -0
  3. package/dist/AdminDepositList-CyT4VBH8.js.map +1 -0
  4. package/dist/AdminDepositList-b2AXtLg0.cjs +1 -0
  5. package/dist/AdminDepositList-b2AXtLg0.cjs.map +1 -0
  6. package/dist/AdminWithdrawalHistory-Cud-yuWy.js +916 -0
  7. package/dist/AdminWithdrawalHistory-Cud-yuWy.js.map +1 -0
  8. package/dist/AdminWithdrawalHistory-DL9zbu2b.cjs +1 -0
  9. package/dist/AdminWithdrawalHistory-DL9zbu2b.cjs.map +1 -0
  10. package/dist/AuthenticationSettings-D739nNul.cjs +1 -0
  11. package/dist/AuthenticationSettings-D739nNul.cjs.map +1 -0
  12. package/dist/AuthenticationSettings-DtLoxQ2z.cjs +1 -0
  13. package/dist/AuthenticationSettings-DtLoxQ2z.cjs.map +1 -0
  14. package/dist/AuthenticationSettings-Dx3JCI3m.js +9 -0
  15. package/dist/AuthenticationSettings-Dx3JCI3m.js.map +1 -0
  16. package/dist/AuthenticationSettings-vowmQPXz.js +525 -0
  17. package/dist/AuthenticationSettings-vowmQPXz.js.map +1 -0
  18. package/dist/AutosaveStatus-CCrZszKA.cjs +1 -0
  19. package/dist/AutosaveStatus-CCrZszKA.cjs.map +1 -0
  20. package/dist/AutosaveStatus-Ciyt350A.js +1497 -0
  21. package/dist/AutosaveStatus-Ciyt350A.js.map +1 -0
  22. package/dist/CreditSystemSettings-BQ3h4CyM.js +210 -0
  23. package/dist/CreditSystemSettings-BQ3h4CyM.js.map +1 -0
  24. package/dist/CreditSystemSettings-C6dUsu72.cjs +1 -0
  25. package/dist/CreditSystemSettings-C6dUsu72.cjs.map +1 -0
  26. package/dist/CreditSystemSettings-CBot8EPW.cjs +1 -0
  27. package/dist/CreditSystemSettings-CBot8EPW.cjs.map +1 -0
  28. package/dist/CreditSystemSettings-bVuNLsqp.js +9 -0
  29. package/dist/CreditSystemSettings-bVuNLsqp.js.map +1 -0
  30. package/dist/DepositsSection-BkKUS4vk.cjs +1 -0
  31. package/dist/DepositsSection-BkKUS4vk.cjs.map +1 -0
  32. package/dist/{DepositsSection-0Hqr0yDm.js → DepositsSection-DD9MKUFt.js} +20 -14
  33. package/dist/DepositsSection-DD9MKUFt.js.map +1 -0
  34. package/dist/EmailRegisterForm-Pvm3I8GP.cjs +1 -0
  35. package/dist/EmailRegisterForm-Pvm3I8GP.cjs.map +1 -0
  36. package/dist/EmailRegisterForm-nI0BOIxR.js +927 -0
  37. package/dist/EmailRegisterForm-nI0BOIxR.js.map +1 -0
  38. package/dist/EmailSettings-B9qwPSiM.cjs +1 -0
  39. package/dist/EmailSettings-B9qwPSiM.cjs.map +1 -0
  40. package/dist/EmailSettings-CCA8dNCi.js +17 -0
  41. package/dist/EmailSettings-CCA8dNCi.js.map +1 -0
  42. package/dist/EmailSettings-RbgAq9FB.cjs +1 -0
  43. package/dist/EmailSettings-RbgAq9FB.cjs.map +1 -0
  44. package/dist/{AuthenticationSettings-BSoIQ58T.js → EmailSettings-mxlKNcPl.js} +3 -3
  45. package/dist/EmailSettings-mxlKNcPl.js.map +1 -0
  46. package/dist/EmbeddedWalletSettings-B4h-8rxB.cjs +1 -0
  47. package/dist/EmbeddedWalletSettings-B4h-8rxB.cjs.map +1 -0
  48. package/dist/EmbeddedWalletSettings-BInZvFZf.js +79 -0
  49. package/dist/EmbeddedWalletSettings-BInZvFZf.js.map +1 -0
  50. package/dist/{EmbeddedWalletSettings-iVf_3pn3.js → EmbeddedWalletSettings-CXlZFFDw.js} +3 -3
  51. package/dist/EmbeddedWalletSettings-CXlZFFDw.js.map +1 -0
  52. package/dist/EmbeddedWalletSettings-D5JXae1L.cjs +1 -0
  53. package/dist/EmbeddedWalletSettings-D5JXae1L.cjs.map +1 -0
  54. package/dist/ErrorMessage-CHbYbVi2.cjs +1 -0
  55. package/dist/ErrorMessage-CHbYbVi2.cjs.map +1 -0
  56. package/dist/ErrorMessage-CcEK0pYO.js +64 -0
  57. package/dist/ErrorMessage-CcEK0pYO.js.map +1 -0
  58. package/dist/{GoogleLoginButton-BzHr545L.js → GoogleLoginButton-CXwp4LsQ.js} +4 -3
  59. package/dist/{GoogleLoginButton-BzHr545L.js.map → GoogleLoginButton-CXwp4LsQ.js.map} +1 -1
  60. package/dist/GoogleLoginButton-zS_69-KV.cjs +1 -0
  61. package/dist/{GoogleLoginButton-DoAdOqb3.cjs.map → GoogleLoginButton-zS_69-KV.cjs.map} +1 -1
  62. package/dist/LoadingSpinner-6vml-zwr.js +79 -0
  63. package/dist/LoadingSpinner-6vml-zwr.js.map +1 -0
  64. package/dist/LoadingSpinner-d6sSxgQN.cjs +1 -0
  65. package/dist/LoadingSpinner-d6sSxgQN.cjs.map +1 -0
  66. package/dist/PermissionsSection-BPbE-hNx.cjs +1 -0
  67. package/dist/PermissionsSection-BPbE-hNx.cjs.map +1 -0
  68. package/dist/PermissionsSection-CighC1p6.js +1026 -0
  69. package/dist/PermissionsSection-CighC1p6.js.map +1 -0
  70. package/dist/ServerSettings-BE8fsE5k.js +84 -0
  71. package/dist/ServerSettings-BE8fsE5k.js.map +1 -0
  72. package/dist/ServerSettings-CYTlQ2xy.cjs +1 -0
  73. package/dist/ServerSettings-CYTlQ2xy.cjs.map +1 -0
  74. package/dist/ServerSettings-DFs9jQ3f.cjs +1 -0
  75. package/dist/ServerSettings-DFs9jQ3f.cjs.map +1 -0
  76. package/dist/{ServerSettings-C_osdbiX.js → ServerSettings-pSmWDC1d.js} +3 -3
  77. package/dist/ServerSettings-pSmWDC1d.js.map +1 -0
  78. package/dist/SettingsPageLayout--GZ_iHLc.js +50 -0
  79. package/dist/SettingsPageLayout--GZ_iHLc.js.map +1 -0
  80. package/dist/SettingsPageLayout-j5lMjEID.cjs +1 -0
  81. package/dist/SettingsPageLayout-j5lMjEID.cjs.map +1 -0
  82. package/dist/SolanaLoginButton-BjOxpE1C.cjs +1 -0
  83. package/dist/{SolanaLoginButton-CPzms0kf.cjs.map → SolanaLoginButton-BjOxpE1C.cjs.map} +1 -1
  84. package/dist/{SolanaLoginButton-C-CfZxAZ.js → SolanaLoginButton-P22QjBaO.js} +5 -4
  85. package/dist/{SolanaLoginButton-C-CfZxAZ.js.map → SolanaLoginButton-P22QjBaO.js.map} +1 -1
  86. package/dist/StatsBar-BX-hHtTq.js +66 -0
  87. package/dist/StatsBar-BX-hHtTq.js.map +1 -0
  88. package/dist/StatsBar-DTUZCwDD.cjs +1 -0
  89. package/dist/StatsBar-DTUZCwDD.cjs.map +1 -0
  90. package/dist/{TeamSection-Bjt72upx.js → TeamSection-BIECkp7g.js} +27 -26
  91. package/dist/TeamSection-BIECkp7g.js.map +1 -0
  92. package/dist/TeamSection-BOH9pv_E.cjs +1 -0
  93. package/dist/TeamSection-BOH9pv_E.cjs.map +1 -0
  94. package/dist/UsersSection-e6q7FHzx.cjs +1 -0
  95. package/dist/UsersSection-e6q7FHzx.cjs.map +1 -0
  96. package/dist/UsersSection-t-zm0jZW.js +33 -0
  97. package/dist/UsersSection-t-zm0jZW.js.map +1 -0
  98. package/dist/{WebhookSettings-IyhyTFes.js → WebhookSettings-Bb70MbFj.js} +4 -4
  99. package/dist/WebhookSettings-Bb70MbFj.js.map +1 -0
  100. package/dist/WebhookSettings-C-gvNAW1.cjs +1 -0
  101. package/dist/WebhookSettings-C-gvNAW1.cjs.map +1 -0
  102. package/dist/WebhookSettings-CGyDKjrm.cjs +1 -0
  103. package/dist/WebhookSettings-CGyDKjrm.cjs.map +1 -0
  104. package/dist/WebhookSettings-kIstSjZi.js +17 -0
  105. package/dist/WebhookSettings-kIstSjZi.js.map +1 -0
  106. package/dist/WithdrawalsSection-sljIyeaz.cjs +1 -0
  107. package/dist/WithdrawalsSection-sljIyeaz.cjs.map +1 -0
  108. package/dist/WithdrawalsSection-yRDTVFsb.js +27 -0
  109. package/dist/WithdrawalsSection-yRDTVFsb.js.map +1 -0
  110. package/dist/admin-only.cjs +1 -0
  111. package/dist/admin-only.cjs.map +1 -0
  112. package/dist/{admin/types.d.ts → admin-only.d.ts} +228 -167
  113. package/dist/admin-only.js +8 -0
  114. package/dist/admin-only.js.map +1 -0
  115. package/dist/assets/argon2Worker-Bi5TuQvD.js.map +1 -1
  116. package/dist/email-only.cjs +1 -1
  117. package/dist/email-only.d.ts +645 -16
  118. package/dist/email-only.js +16 -13
  119. package/dist/email-only.js.map +1 -1
  120. package/dist/google-only.cjs +1 -1
  121. package/dist/google-only.d.ts +554 -13
  122. package/dist/google-only.js +11 -8
  123. package/dist/google-only.js.map +1 -1
  124. package/dist/index.cjs +2061 -1
  125. package/dist/index.cjs.map +1 -1
  126. package/dist/index.d.ts +5030 -144
  127. package/dist/index.js +13482 -117
  128. package/dist/index.js.map +1 -1
  129. package/dist/login-react.css +1 -1
  130. package/dist/plugin-8_dpq7tC.cjs +1 -0
  131. package/dist/plugin-8_dpq7tC.cjs.map +1 -0
  132. package/dist/plugin-D1NdppqC.js +596 -0
  133. package/dist/plugin-D1NdppqC.js.map +1 -0
  134. package/dist/sanitization-Bo_tn-L2.cjs +1 -0
  135. package/dist/sanitization-Bo_tn-L2.cjs.map +1 -0
  136. package/dist/sanitization-CQ-H1MSg.js +39 -0
  137. package/dist/sanitization-CQ-H1MSg.js.map +1 -0
  138. package/dist/shamir-4DyQMJCk.cjs +1 -0
  139. package/dist/shamir-4DyQMJCk.cjs.map +1 -0
  140. package/dist/{solanaKeypair-BlXol3nh.js → shamir-L-s-Tp1Z.js} +765 -757
  141. package/dist/shamir-L-s-Tp1Z.js.map +1 -0
  142. package/dist/silentWalletEnroll-BgTb4H5I.cjs +1 -0
  143. package/dist/silentWalletEnroll-BgTb4H5I.cjs.map +1 -0
  144. package/dist/silentWalletEnroll-DWt6Pr3B.js +41 -0
  145. package/dist/silentWalletEnroll-DWt6Pr3B.js.map +1 -0
  146. package/dist/solana-only.cjs +1 -1
  147. package/dist/solana-only.d.ts +605 -13
  148. package/dist/solana-only.js +12 -9
  149. package/dist/solana-only.js.map +1 -1
  150. package/dist/style.d.ts +1 -0
  151. package/dist/useAdminDeposits-BTSyeAfg.js +151 -0
  152. package/dist/useAdminDeposits-BTSyeAfg.js.map +1 -0
  153. package/dist/useAdminDeposits-BkkCwHWp.cjs +1 -0
  154. package/dist/useAdminDeposits-BkkCwHWp.cjs.map +1 -0
  155. package/dist/{ErrorMessage-DU2VBb85.js → useAuth-C3dpk0po.js} +1005 -1241
  156. package/dist/useAuth-C3dpk0po.js.map +1 -0
  157. package/dist/useAuth-D3Pk_H3z.cjs +1 -0
  158. package/dist/useAuth-D3Pk_H3z.cjs.map +1 -0
  159. package/dist/useCedrosLogin-C9MrcZvh.cjs +1 -0
  160. package/dist/useCedrosLogin-C9MrcZvh.cjs.map +1 -0
  161. package/dist/useCedrosLogin-_94MmGGq.js +216 -0
  162. package/dist/useCedrosLogin-_94MmGGq.js.map +1 -0
  163. package/dist/useOrgs-C3pzMA9h.js +215 -0
  164. package/dist/useOrgs-C3pzMA9h.js.map +1 -0
  165. package/dist/useOrgs-DDVRCaVi.cjs +1 -0
  166. package/dist/useOrgs-DDVRCaVi.cjs.map +1 -0
  167. package/dist/useSystemSettings-DBlAMjFi.js +97 -0
  168. package/dist/useSystemSettings-DBlAMjFi.js.map +1 -0
  169. package/dist/useSystemSettings-DRrreszl.cjs +1 -0
  170. package/dist/useSystemSettings-DRrreszl.cjs.map +1 -0
  171. package/dist/useUsersStatsSummary-8qY7iP4G.cjs +1 -0
  172. package/dist/useUsersStatsSummary-8qY7iP4G.cjs.map +1 -0
  173. package/dist/useUsersStatsSummary-NjEFvWuz.js +1246 -0
  174. package/dist/useUsersStatsSummary-NjEFvWuz.js.map +1 -0
  175. package/dist/{validation-BebL7hMF.js → validation-B8kMV3BL.js} +1 -1
  176. package/dist/{validation-BebL7hMF.js.map → validation-B8kMV3BL.js.map} +1 -1
  177. package/dist/{validation-BeXIfuHB.cjs → validation-BuGQrA-K.cjs} +1 -1
  178. package/dist/{validation-BeXIfuHB.cjs.map → validation-BuGQrA-K.cjs.map} +1 -1
  179. package/package.json +11 -1
  180. package/dist/AuthenticationSettings-BSoIQ58T.js.map +0 -1
  181. package/dist/AuthenticationSettings-CNmWEPFV.cjs +0 -1
  182. package/dist/AuthenticationSettings-CNmWEPFV.cjs.map +0 -1
  183. package/dist/CreditSystemSettings-BYxoFwaP.js +0 -9
  184. package/dist/CreditSystemSettings-BYxoFwaP.js.map +0 -1
  185. package/dist/CreditSystemSettings-D2fLorNx.cjs +0 -1
  186. package/dist/CreditSystemSettings-D2fLorNx.cjs.map +0 -1
  187. package/dist/DepositsSection-0Hqr0yDm.js.map +0 -1
  188. package/dist/DepositsSection-CGKCzM-H.cjs +0 -1
  189. package/dist/DepositsSection-CGKCzM-H.cjs.map +0 -1
  190. package/dist/EmailRegisterForm-C0PStlj5.js +0 -961
  191. package/dist/EmailRegisterForm-C0PStlj5.js.map +0 -1
  192. package/dist/EmailRegisterForm-DaPLGws2.cjs +0 -1
  193. package/dist/EmailRegisterForm-DaPLGws2.cjs.map +0 -1
  194. package/dist/EmailSettings-CiLDwzNb.cjs +0 -1
  195. package/dist/EmailSettings-CiLDwzNb.cjs.map +0 -1
  196. package/dist/EmailSettings-DTjpO65J.js +0 -9
  197. package/dist/EmailSettings-DTjpO65J.js.map +0 -1
  198. package/dist/EmbeddedWalletSettings-CX7sYiPy.cjs +0 -1
  199. package/dist/EmbeddedWalletSettings-CX7sYiPy.cjs.map +0 -1
  200. package/dist/EmbeddedWalletSettings-iVf_3pn3.js.map +0 -1
  201. package/dist/ErrorMessage-BXHiYibN.cjs +0 -1
  202. package/dist/ErrorMessage-BXHiYibN.cjs.map +0 -1
  203. package/dist/ErrorMessage-DU2VBb85.js.map +0 -1
  204. package/dist/GoogleLoginButton-DoAdOqb3.cjs +0 -1
  205. package/dist/ServerSettings-C_osdbiX.js.map +0 -1
  206. package/dist/ServerSettings-HqSb_VDj.cjs +0 -1
  207. package/dist/ServerSettings-HqSb_VDj.cjs.map +0 -1
  208. package/dist/SolanaLoginButton-CPzms0kf.cjs +0 -1
  209. package/dist/TeamSection-Bjt72upx.js.map +0 -1
  210. package/dist/TeamSection-DZeWHkLd.cjs +0 -1
  211. package/dist/TeamSection-DZeWHkLd.cjs.map +0 -1
  212. package/dist/UsersSection-DU86czWP.cjs +0 -1
  213. package/dist/UsersSection-DU86czWP.cjs.map +0 -1
  214. package/dist/UsersSection-hAcyfSZk.js +0 -81
  215. package/dist/UsersSection-hAcyfSZk.js.map +0 -1
  216. package/dist/WebhookSettings-Br9bakAL.cjs +0 -1
  217. package/dist/WebhookSettings-Br9bakAL.cjs.map +0 -1
  218. package/dist/WebhookSettings-IyhyTFes.js.map +0 -1
  219. package/dist/WithdrawalsSection-B1415d-G.js +0 -20
  220. package/dist/WithdrawalsSection-B1415d-G.js.map +0 -1
  221. package/dist/WithdrawalsSection-iZJBuZ7O.cjs +0 -1
  222. package/dist/WithdrawalsSection-iZJBuZ7O.cjs.map +0 -1
  223. package/dist/admin/AdminShell.d.ts +0 -38
  224. package/dist/admin/icons.d.ts +0 -2
  225. package/dist/admin/index.d.ts +0 -10
  226. package/dist/admin/plugin.d.ts +0 -3
  227. package/dist/admin/sections/AuthenticationSettings.d.ts +0 -3
  228. package/dist/admin/sections/CreditSystemSettings.d.ts +0 -3
  229. package/dist/admin/sections/DepositsSection.d.ts +0 -3
  230. package/dist/admin/sections/EmailSettings.d.ts +0 -3
  231. package/dist/admin/sections/EmbeddedWalletSettings.d.ts +0 -3
  232. package/dist/admin/sections/FeatureSettings.d.ts +0 -3
  233. package/dist/admin/sections/InvitesSection.d.ts +0 -3
  234. package/dist/admin/sections/MembersSection.d.ts +0 -3
  235. package/dist/admin/sections/ServerSettings.d.ts +0 -3
  236. package/dist/admin/sections/SettingsSections.d.ts +0 -7
  237. package/dist/admin/sections/TeamSection.d.ts +0 -3
  238. package/dist/admin/sections/UsersSection.d.ts +0 -3
  239. package/dist/admin/sections/WebhookSettings.d.ts +0 -3
  240. package/dist/admin/sections/WithdrawalsSection.d.ts +0 -3
  241. package/dist/components/LoginButton.d.ts +0 -23
  242. package/dist/components/LoginForm.d.ts +0 -9
  243. package/dist/components/LoginModal.d.ts +0 -9
  244. package/dist/components/admin/AdminUserDetail.d.ts +0 -23
  245. package/dist/components/admin/AdminUserList.d.ts +0 -21
  246. package/dist/components/admin/CedrosAdminDashboard.d.ts +0 -52
  247. package/dist/components/admin/PermissionsSection.d.ts +0 -7
  248. package/dist/components/admin/ProfileDropdown.d.ts +0 -34
  249. package/dist/components/admin/SetupWizard.d.ts +0 -30
  250. package/dist/components/admin/StatsBar.d.ts +0 -17
  251. package/dist/components/admin/SystemSettings.d.ts +0 -19
  252. package/dist/components/admin/settings/AuthenticationSettings.d.ts +0 -4
  253. package/dist/components/admin/settings/AutosaveStatus.d.ts +0 -6
  254. package/dist/components/admin/settings/CreditSystemSettings.d.ts +0 -6
  255. package/dist/components/admin/settings/EmailSettings.d.ts +0 -4
  256. package/dist/components/admin/settings/EmbeddedWalletSettings.d.ts +0 -4
  257. package/dist/components/admin/settings/FeatureSettings.d.ts +0 -4
  258. package/dist/components/admin/settings/MessagingSettings.d.ts +0 -4
  259. package/dist/components/admin/settings/SecuritySettings.d.ts +0 -4
  260. package/dist/components/admin/settings/ServerSettings.d.ts +0 -4
  261. package/dist/components/admin/settings/SettingsPageLayout.d.ts +0 -16
  262. package/dist/components/admin/settings/SsoProvidersSettings.d.ts +0 -4
  263. package/dist/components/admin/settings/WebhookSettings.d.ts +0 -4
  264. package/dist/components/admin/settings/index.d.ts +0 -31
  265. package/dist/components/admin/settings/settingsInputs.d.ts +0 -79
  266. package/dist/components/admin/settings/settingsMetadata.d.ts +0 -18
  267. package/dist/components/apple/AppleLoginButton.d.ts +0 -29
  268. package/dist/components/deposit/CreditBalance.d.ts +0 -19
  269. package/dist/components/deposit/DepositFlow.d.ts +0 -118
  270. package/dist/components/deposit/FeeConfigDisplay.d.ts +0 -15
  271. package/dist/components/deposit/History.d.ts +0 -21
  272. package/dist/components/deposit/TieredAmountSlider.d.ts +0 -19
  273. package/dist/components/deposit/TokenSelector.d.ts +0 -23
  274. package/dist/components/deposit/admin/AdminDepositList.d.ts +0 -21
  275. package/dist/components/deposit/admin/AdminDepositStats.d.ts +0 -15
  276. package/dist/components/deposit/admin/AdminPrivacyPeriodDeposits.d.ts +0 -19
  277. package/dist/components/deposit/admin/AdminWithdrawalHistory.d.ts +0 -19
  278. package/dist/components/deposit/admin/AdminWithdrawalQueue.d.ts +0 -23
  279. package/dist/components/deposit/admin/AdminWithdrawalStats.d.ts +0 -10
  280. package/dist/components/deposit/admin/FeatureDisabledMessage.d.ts +0 -15
  281. package/dist/components/deposit/admin/PrivacySystemStatus.d.ts +0 -15
  282. package/dist/components/deposit/admin/featureDisabled.d.ts +0 -14
  283. package/dist/components/deposit/admin/index.d.ts +0 -22
  284. package/dist/components/deposit/index.d.ts +0 -12
  285. package/dist/components/deposit/tierUtils.d.ts +0 -8
  286. package/dist/components/deposit/tokens.d.ts +0 -19
  287. package/dist/components/email/EmailLoginForm.d.ts +0 -11
  288. package/dist/components/email/EmailRegisterForm.d.ts +0 -14
  289. package/dist/components/email/ForgotPasswordForm.d.ts +0 -17
  290. package/dist/components/email/PasswordInput.d.ts +0 -14
  291. package/dist/components/email/ResetPasswordForm.d.ts +0 -22
  292. package/dist/components/google/GoogleLoginButton.d.ts +0 -12
  293. package/dist/components/invites/InviteForm.d.ts +0 -38
  294. package/dist/components/invites/InviteList.d.ts +0 -40
  295. package/dist/components/members/MemberList.d.ts +0 -47
  296. package/dist/components/org/CreateOrgForm.d.ts +0 -7
  297. package/dist/components/org/OrgAvatar.d.ts +0 -7
  298. package/dist/components/org/OrgListView.d.ts +0 -9
  299. package/dist/components/org/OrgSelector.d.ts +0 -52
  300. package/dist/components/org/OrgSwitcher.d.ts +0 -47
  301. package/dist/components/org/icons.d.ts +0 -8
  302. package/dist/components/profile/UserProfileSettings.d.ts +0 -35
  303. package/dist/components/profile/index.d.ts +0 -2
  304. package/dist/components/sessions/SessionList.d.ts +0 -33
  305. package/dist/components/shared/ErrorBoundary.d.ts +0 -38
  306. package/dist/components/shared/ErrorMessage.d.ts +0 -14
  307. package/dist/components/shared/LoadingSpinner.d.ts +0 -16
  308. package/dist/components/solana/SolanaLoginButton.d.ts +0 -49
  309. package/dist/components/templates/FullPageLayout.d.ts +0 -40
  310. package/dist/components/templates/SplitPageLayout.d.ts +0 -44
  311. package/dist/components/templates/index.d.ts +0 -4
  312. package/dist/components/totp/OtpInput.d.ts +0 -32
  313. package/dist/components/totp/QrCode.d.ts +0 -21
  314. package/dist/components/totp/TotpSettings.d.ts +0 -38
  315. package/dist/components/totp/TotpSetup.d.ts +0 -23
  316. package/dist/components/totp/TotpVerify.d.ts +0 -25
  317. package/dist/components/totp/index.d.ts +0 -10
  318. package/dist/components/wallet/CapabilityWarning.d.ts +0 -11
  319. package/dist/components/wallet/PasskeyPrompt.d.ts +0 -34
  320. package/dist/components/wallet/RecoveryPhraseDisplay.d.ts +0 -18
  321. package/dist/components/wallet/RecoveryPhraseInput.d.ts +0 -21
  322. package/dist/components/wallet/WalletAddressRow.d.ts +0 -10
  323. package/dist/components/wallet/WalletEnrollment.d.ts +0 -15
  324. package/dist/components/wallet/WalletManager.d.ts +0 -9
  325. package/dist/components/wallet/WalletRecovery.d.ts +0 -19
  326. package/dist/components/wallet/WalletStatus.d.ts +0 -28
  327. package/dist/components/wallet/WalletUnlock.d.ts +0 -23
  328. package/dist/components/wallet/index.d.ts +0 -23
  329. package/dist/components/webauthn/PasskeyLoginButton.d.ts +0 -8
  330. package/dist/context/CedrosLoginContext.d.ts +0 -24
  331. package/dist/context/CedrosLoginProvider.d.ts +0 -17
  332. package/dist/context/EmbeddedWalletExposure.d.ts +0 -19
  333. package/dist/context/useCedrosLogin.d.ts +0 -12
  334. package/dist/crypto/aesGcm.d.ts +0 -89
  335. package/dist/crypto/argon2.d.ts +0 -65
  336. package/dist/crypto/argon2Worker.d.ts +0 -1
  337. package/dist/crypto/argon2WorkerClient.d.ts +0 -28
  338. package/dist/crypto/bip39.d.ts +0 -106
  339. package/dist/crypto/capabilities.d.ts +0 -35
  340. package/dist/crypto/entropy.d.ts +0 -56
  341. package/dist/crypto/hkdf.d.ts +0 -38
  342. package/dist/crypto/index.d.ts +0 -30
  343. package/dist/crypto/secureWipe.d.ts +0 -71
  344. package/dist/crypto/shamir.d.ts +0 -52
  345. package/dist/crypto/solanaKeypair.d.ts +0 -63
  346. package/dist/crypto/types.d.ts +0 -134
  347. package/dist/crypto/webauthnPrf.d.ts +0 -108
  348. package/dist/hooks/useAdminDeposits.d.ts +0 -10
  349. package/dist/hooks/useAdminUsers.d.ts +0 -28
  350. package/dist/hooks/useAppleAuth.d.ts +0 -52
  351. package/dist/hooks/useAuth.d.ts +0 -34
  352. package/dist/hooks/useAuthSession.d.ts +0 -19
  353. package/dist/hooks/useAuthorize.d.ts +0 -62
  354. package/dist/hooks/useCredits.d.ts +0 -11
  355. package/dist/hooks/useDashboardPermissions.d.ts +0 -45
  356. package/dist/hooks/useDeposit.d.ts +0 -16
  357. package/dist/hooks/useEmailAuth.d.ts +0 -60
  358. package/dist/hooks/useGoogleAuth.d.ts +0 -67
  359. package/dist/hooks/useInstantLink.d.ts +0 -42
  360. package/dist/hooks/useInvites.d.ts +0 -57
  361. package/dist/hooks/useMembers.d.ts +0 -52
  362. package/dist/hooks/useOrgs.d.ts +0 -49
  363. package/dist/hooks/usePasswordReset.d.ts +0 -32
  364. package/dist/hooks/usePendingRecovery.d.ts +0 -34
  365. package/dist/hooks/useProfile.d.ts +0 -35
  366. package/dist/hooks/useRateLimiter.d.ts +0 -58
  367. package/dist/hooks/useServerFeatures.d.ts +0 -55
  368. package/dist/hooks/useSessions.d.ts +0 -45
  369. package/dist/hooks/useSettingsAutosave.d.ts +0 -29
  370. package/dist/hooks/useSetup.d.ts +0 -25
  371. package/dist/hooks/useSolanaAuth.d.ts +0 -30
  372. package/dist/hooks/useSsoProviders.d.ts +0 -52
  373. package/dist/hooks/useSystemSettings.d.ts +0 -47
  374. package/dist/hooks/useThemeManager.d.ts +0 -11
  375. package/dist/hooks/useTotp.d.ts +0 -52
  376. package/dist/hooks/useTotpVerify.d.ts +0 -38
  377. package/dist/hooks/useTransactionSigning.d.ts +0 -45
  378. package/dist/hooks/useWallet.d.ts +0 -10
  379. package/dist/hooks/useWalletDiscovery.d.ts +0 -24
  380. package/dist/hooks/useWalletEnrollment.d.ts +0 -9
  381. package/dist/hooks/useWalletMaterial.d.ts +0 -10
  382. package/dist/hooks/useWalletRecovery.d.ts +0 -9
  383. package/dist/hooks/useWalletSigning.d.ts +0 -31
  384. package/dist/hooks/useWebAuthn.d.ts +0 -25
  385. package/dist/i18n/I18nProvider.d.ts +0 -16
  386. package/dist/i18n/context.d.ts +0 -6
  387. package/dist/i18n/index.d.ts +0 -5
  388. package/dist/i18n/translations.d.ts +0 -66
  389. package/dist/i18n/useI18n.d.ts +0 -9
  390. package/dist/index-ZS9AwAal.cjs +0 -2061
  391. package/dist/index-ZS9AwAal.cjs.map +0 -1
  392. package/dist/index-dgg5tlO7.js +0 -19650
  393. package/dist/index-dgg5tlO7.js.map +0 -1
  394. package/dist/silentWalletEnroll-C3JRAD9_.js +0 -42
  395. package/dist/silentWalletEnroll-C3JRAD9_.js.map +0 -1
  396. package/dist/silentWalletEnroll-DRYQAQfg.cjs +0 -1
  397. package/dist/silentWalletEnroll-DRYQAQfg.cjs.map +0 -1
  398. package/dist/solanaKeypair-BlXol3nh.js.map +0 -1
  399. package/dist/solanaKeypair-C-lIR1JY.cjs +0 -1
  400. package/dist/solanaKeypair-C-lIR1JY.cjs.map +0 -1
  401. package/dist/types/adminUser.d.ts +0 -168
  402. package/dist/types/auth.d.ts +0 -122
  403. package/dist/types/config.d.ts +0 -266
  404. package/dist/types/deposit.d.ts +0 -490
  405. package/dist/types/index.d.ts +0 -13
  406. package/dist/types/invite.d.ts +0 -71
  407. package/dist/types/member.d.ts +0 -45
  408. package/dist/types/org.d.ts +0 -133
  409. package/dist/types/profile.d.ts +0 -56
  410. package/dist/types/session.d.ts +0 -28
  411. package/dist/types/setup.d.ts +0 -47
  412. package/dist/types/systemSettings.d.ts +0 -85
  413. package/dist/types/totp.d.ts +0 -52
  414. package/dist/types/wallet.d.ts +0 -309
  415. package/dist/utils/adminUserApi.d.ts +0 -60
  416. package/dist/utils/apiClient.d.ts +0 -78
  417. package/dist/utils/cryptoShim.d.ts +0 -17
  418. package/dist/utils/csrf.d.ts +0 -1
  419. package/dist/utils/deviceDetection.d.ts +0 -17
  420. package/dist/utils/embeddedWallet.d.ts +0 -75
  421. package/dist/utils/inviteApi.d.ts +0 -31
  422. package/dist/utils/memberApi.d.ts +0 -23
  423. package/dist/utils/orgApi.d.ts +0 -36
  424. package/dist/utils/profileApi.d.ts +0 -26
  425. package/dist/utils/sanitization.d.ts +0 -66
  426. package/dist/utils/sessionApi.d.ts +0 -16
  427. package/dist/utils/setupApi.d.ts +0 -21
  428. package/dist/utils/silentWalletEnroll.d.ts +0 -41
  429. package/dist/utils/systemSettingsApi.d.ts +0 -18
  430. package/dist/utils/tabSync.d.ts +0 -46
  431. package/dist/utils/tokenManager.d.ts +0 -107
  432. package/dist/utils/unlockCredential.d.ts +0 -5
  433. package/dist/utils/validation.d.ts +0 -48
  434. package/dist/utils/walletDetection.d.ts +0 -23
  435. package/dist/utils/webauthnJson.d.ts +0 -21
@@ -1,28 +1,64 @@
1
- import { jsxs as R, jsx as m } from "react/jsx-runtime";
2
- import { createContext as me, useEffect as K, useState as U, useRef as P, useCallback as k, useMemo as O, useContext as we, memo as Qe } from "react";
3
- const ae = me(null);
4
- function be({ theme: e, themeOverrides: t }) {
5
- K(() => {
1
+ import { jsx as ne, jsxs as Ke } from "react/jsx-runtime";
2
+ import { useEffect as N, useState as G, useRef as P, useCallback as d, useMemo as V } from "react";
3
+ import { A as He, a as Je, C as Ve } from "./LoadingSpinner-6vml-zwr.js";
4
+ import { A as Ee, g as oe, a as pe, h as Y, u as ye } from "./useCedrosLogin-_94MmGGq.js";
5
+ let Z = 0;
6
+ function Me({ theme: e, themeOverrides: A }) {
7
+ N(() => {
6
8
  if (typeof document > "u" || typeof window > "u")
7
9
  return;
8
- const A = document.documentElement;
10
+ const t = document.documentElement;
11
+ let i = !1;
12
+ e === "dark" ? i = !0 : e === "light" ? i = !1 : i = window.matchMedia("(prefers-color-scheme: dark)").matches;
9
13
  let r = !1;
10
- e === "dark" ? (A.classList.add("cedros-dark"), r = !0) : e === "light" ? A.classList.remove("cedros-dark") : window.matchMedia("(prefers-color-scheme: dark)").matches ? (A.classList.add("cedros-dark"), r = !0) : A.classList.remove("cedros-dark");
14
+ i ? (Z++, r = !0, t.classList.add("cedros-dark")) : Z === 0 && t.classList.remove("cedros-dark");
11
15
  const n = /* @__PURE__ */ new Map();
12
- return t && Object.entries(t).forEach(([i, o]) => {
13
- if (o) {
14
- const I = A.style.getPropertyValue(i);
15
- n.set(i, I), A.style.setProperty(i, o);
16
+ return A && Object.entries(A).forEach(([o, a]) => {
17
+ if (a) {
18
+ const l = t.style.getPropertyValue(o);
19
+ n.set(o, l), t.style.setProperty(o, a);
16
20
  }
17
21
  }), () => {
18
- r && A.classList.remove("cedros-dark"), n.forEach((i, o) => {
19
- i ? A.style.setProperty(o, i) : A.style.removeProperty(o);
22
+ r && (Z--, Z === 0 && t.classList.remove("cedros-dark")), n.forEach((o, a) => {
23
+ o ? t.style.setProperty(a, o) : t.style.removeProperty(a);
20
24
  });
21
25
  };
22
- }, [e, t]);
26
+ }, [e, A]);
27
+ }
28
+ const Pe = {
29
+ email: !0,
30
+ google: !0,
31
+ apple: !0,
32
+ solana: !0,
33
+ webauthn: !0,
34
+ instantLink: !0
35
+ };
36
+ function Ne(e, A, t) {
37
+ const [i, r] = G(null), [n, o] = G(A), a = P(!1);
38
+ return N(() => {
39
+ if (!A || a.current) return;
40
+ a.current = !0, new Ee({
41
+ baseUrl: e,
42
+ timeoutMs: t ?? 5e3,
43
+ retryAttempts: 1
44
+ }).get("/features", { credentials: "omit" }).then((s) => {
45
+ r({
46
+ email: s.email,
47
+ google: s.google,
48
+ apple: s.apple,
49
+ solana: s.solana,
50
+ webauthn: s.webauthn,
51
+ instantLink: s.instantLink
52
+ });
53
+ }).catch(() => {
54
+ r(Pe);
55
+ }).finally(() => {
56
+ o(!1);
57
+ });
58
+ }, [A, e, t]), { features: i, isLoading: n };
23
59
  }
24
- const Ge = "cedros_tokens", Ke = 6e4;
25
- class He {
60
+ const Ye = "cedros_tokens", xe = 6e4;
61
+ class Oe {
26
62
  storage;
27
63
  requestedStorage;
28
64
  storageKey;
@@ -34,9 +70,11 @@ class He {
34
70
  onRefreshError = null;
35
71
  // P-02: Track destruction to prevent timer callbacks from executing after cleanup
36
72
  isDestroyed = !1;
73
+ // S-13: Prevent onSessionExpired from firing multiple times
74
+ sessionExpiredFired = !1;
37
75
  allowWebStorage;
38
- constructor(t = "cookie", A = Ge, r = {}) {
39
- this.requestedStorage = t, this.storage = t, this.storageKey = A, this.allowWebStorage = r.allowWebStorage ?? !1, this.warnIfLocalStorage(), !this.allowWebStorage && (this.requestedStorage === "localStorage" || this.requestedStorage === "sessionStorage") && (this.storage = "memory"), this.loadFromStorage();
76
+ constructor(A = "cookie", t = Ye, i = {}) {
77
+ this.requestedStorage = A, this.storage = A, this.storageKey = t, this.allowWebStorage = i.allowWebStorage ?? !1, this.warnIfLocalStorage(), !this.allowWebStorage && (this.requestedStorage === "localStorage" || this.requestedStorage === "sessionStorage") && (this.storage = "memory"), this.loadFromStorage();
40
78
  }
41
79
  /**
42
80
  * S-18/UI-XSS: Warn about localStorage XSS vulnerability in all environments.
@@ -45,36 +83,36 @@ class He {
45
83
  */
46
84
  warnIfLocalStorage() {
47
85
  if ((this.requestedStorage === "localStorage" || this.requestedStorage === "sessionStorage") && typeof console < "u") {
48
- const t = this.allowWebStorage ? "" : " (web storage disabled by default; set allowWebStorage=true to enable)";
86
+ const A = this.allowWebStorage ? "" : " (web storage disabled by default; set allowWebStorage=true to enable)";
49
87
  console.warn(
50
- "[cedros-login] SECURITY: Using web storage for token storage. Tokens are vulnerable to XSS attacks." + t + " PRODUCTION RECOMMENDATIONS: (1) Use httpOnly cookie storage instead, (2) If web storage required: implement strict Content-Security-Policy, sanitize all input/output, audit third-party scripts. See https://owasp.org/www-community/attacks/xss/"
88
+ "[cedros-login] SECURITY: Using web storage for token storage. Tokens are vulnerable to XSS attacks." + A + " PRODUCTION RECOMMENDATIONS: (1) Use httpOnly cookie storage instead, (2) If web storage required: implement strict Content-Security-Policy, sanitize all input/output, audit third-party scripts. See https://owasp.org/www-community/attacks/xss/"
51
89
  );
52
90
  }
53
91
  }
54
92
  /**
55
93
  * Set the callback for when tokens need to be refreshed
56
94
  */
57
- setRefreshCallback(t) {
58
- this.onRefreshNeeded = t, this.scheduleRefresh();
95
+ setRefreshCallback(A) {
96
+ this.onRefreshNeeded = A, this.scheduleRefresh();
59
97
  }
60
98
  /**
61
99
  * Set the callback for when session expires
62
100
  */
63
- setSessionExpiredCallback(t) {
64
- this.onSessionExpired = t;
101
+ setSessionExpiredCallback(A) {
102
+ this.onSessionExpired = A;
65
103
  }
66
104
  /**
67
105
  * Set the callback for when token refresh fails
68
106
  * This allows the UI to show an error message to the user
69
107
  */
70
- setRefreshErrorCallback(t) {
71
- this.onRefreshError = t;
108
+ setRefreshErrorCallback(A) {
109
+ this.onRefreshError = A;
72
110
  }
73
111
  /**
74
112
  * Store tokens and schedule auto-refresh
75
113
  */
76
- setTokens(t) {
77
- this.tokens = t, this.expiresAt = Date.now() + t.expiresIn * 1e3, this.saveToStorage(), this.scheduleRefresh();
114
+ setTokens(A) {
115
+ this.tokens = A, this.expiresAt = Date.now() + A.expiresIn * 1e3, this.sessionExpiredFired = !1, this.saveToStorage(), this.scheduleRefresh();
78
116
  }
79
117
  /**
80
118
  * Get the current access token
@@ -83,8 +121,8 @@ class He {
83
121
  */
84
122
  getAccessToken() {
85
123
  if (this.isDestroyed) return null;
86
- const t = this.tokens?.accessToken;
87
- return t ? Date.now() >= this.expiresAt ? (this.clear(), this.onSessionExpired?.(), null) : t : null;
124
+ const A = this.tokens?.accessToken;
125
+ return A ? Date.now() >= this.expiresAt ? (this.clear(), this.fireSessionExpired(), null) : A : null;
88
126
  }
89
127
  /**
90
128
  * Get the current refresh token
@@ -110,7 +148,7 @@ class He {
110
148
  * P-02: Also sets isDestroyed flag to prevent timer callbacks from executing.
111
149
  */
112
150
  destroy() {
113
- this.isDestroyed = !0, this.cancelRefresh(), this.onRefreshNeeded = null, this.onSessionExpired = null, this.onRefreshError = null, this.tokens = null;
151
+ this.isDestroyed = !0, this.cancelRefresh(), this.clearStorage(), this.onRefreshNeeded = null, this.onSessionExpired = null, this.onRefreshError = null, this.tokens = null;
114
152
  }
115
153
  /**
116
154
  * Get time until token expiry in ms
@@ -118,25 +156,32 @@ class He {
118
156
  getTimeUntilExpiry() {
119
157
  return this.tokens ? Math.max(0, this.expiresAt - Date.now()) : 0;
120
158
  }
159
+ /**
160
+ * S-13: Fire onSessionExpired at most once per token lifecycle.
161
+ * Reset by setTokens() when new tokens are stored.
162
+ */
163
+ fireSessionExpired() {
164
+ this.sessionExpiredFired || (this.sessionExpiredFired = !0, this.onSessionExpired?.());
165
+ }
121
166
  scheduleRefresh() {
122
167
  if (this.cancelRefresh(), !this.tokens || !this.onRefreshNeeded) return;
123
- const t = this.getTimeUntilExpiry(), A = Math.max(0, t - Ke);
124
- if (A <= 0) {
168
+ const A = this.getTimeUntilExpiry(), t = Math.max(0, A - xe);
169
+ if (t <= 0) {
125
170
  if (this.isDestroyed) return;
126
- this.onRefreshNeeded().catch((r) => {
171
+ this.onRefreshNeeded().catch((i) => {
127
172
  if (this.isDestroyed) return;
128
- const n = r instanceof Error ? r : new Error("Token refresh failed");
129
- this.onRefreshError?.(n), this.clear(), this.onSessionExpired?.();
173
+ const r = i instanceof Error ? i : new Error("Token refresh failed");
174
+ this.onRefreshError?.(r), this.clear(), this.fireSessionExpired();
130
175
  });
131
176
  return;
132
177
  }
133
178
  this.refreshTimer = setTimeout(() => {
134
- this.isDestroyed || this.onRefreshNeeded?.().catch((r) => {
179
+ this.isDestroyed || this.onRefreshNeeded?.().catch((i) => {
135
180
  if (this.isDestroyed) return;
136
- const n = r instanceof Error ? r : new Error("Token refresh failed");
137
- this.onRefreshError?.(n), this.clear(), this.onSessionExpired?.();
181
+ const r = i instanceof Error ? i : new Error("Token refresh failed");
182
+ this.onRefreshError?.(r), this.clear(), this.fireSessionExpired();
138
183
  });
139
- }, A);
184
+ }, t);
140
185
  }
141
186
  cancelRefresh() {
142
187
  this.refreshTimer && (clearTimeout(this.refreshTimer), this.refreshTimer = null);
@@ -145,17 +190,17 @@ class He {
145
190
  if (this.storage !== "memory" && !(typeof window > "u") && !(!this.allowWebStorage && (this.storage === "localStorage" || this.storage === "sessionStorage")))
146
191
  try {
147
192
  if (this.storage === "localStorage" || this.storage === "sessionStorage") {
148
- const t = this.storage === "localStorage" ? localStorage : sessionStorage, A = t.getItem(this.storageKey);
149
- if (A) {
150
- const r = JSON.parse(A);
151
- this.isValidStoredTokenData(r) ? r.expiresAt > Date.now() ? (this.tokens = r.tokens, this.expiresAt = r.expiresAt) : t.removeItem(this.storageKey) : t.removeItem(this.storageKey);
193
+ const A = this.storage === "localStorage" ? localStorage : sessionStorage, t = A.getItem(this.storageKey);
194
+ if (t) {
195
+ const i = JSON.parse(t);
196
+ this.isValidStoredTokenData(i) ? i.expiresAt > Date.now() ? (this.tokens = i.tokens, this.expiresAt = i.expiresAt) : A.removeItem(this.storageKey) : A.removeItem(this.storageKey);
152
197
  }
153
198
  }
154
199
  } catch {
155
200
  if (this.storage === "localStorage" || this.storage === "sessionStorage") {
156
- const t = this.storage === "localStorage" ? localStorage : sessionStorage;
201
+ const A = this.storage === "localStorage" ? localStorage : sessionStorage;
157
202
  try {
158
- t.removeItem(this.storageKey);
203
+ A.removeItem(this.storageKey);
159
204
  } catch {
160
205
  }
161
206
  }
@@ -164,22 +209,22 @@ class He {
164
209
  /**
165
210
  * Validate that parsed data matches expected StoredTokenData structure
166
211
  */
167
- isValidStoredTokenData(t) {
168
- if (typeof t != "object" || t === null) return !1;
169
- const A = t;
170
- if (typeof A.expiresAt != "number" || typeof A.tokens != "object" || A.tokens === null) return !1;
171
- const r = A.tokens;
172
- return !(typeof r.accessToken != "string" || typeof r.refreshToken != "string" || typeof r.expiresIn != "number");
212
+ isValidStoredTokenData(A) {
213
+ if (typeof A != "object" || A === null) return !1;
214
+ const t = A;
215
+ if (typeof t.expiresAt != "number" || typeof t.tokens != "object" || t.tokens === null) return !1;
216
+ const i = t.tokens;
217
+ return !(typeof i.accessToken != "string" || typeof i.refreshToken != "string" || typeof i.expiresIn != "number");
173
218
  }
174
219
  saveToStorage() {
175
220
  if (!(this.storage === "memory" || !this.tokens) && !(typeof window > "u") && !(!this.allowWebStorage && (this.storage === "localStorage" || this.storage === "sessionStorage")))
176
221
  try {
177
222
  if (this.storage === "localStorage" || this.storage === "sessionStorage") {
178
- const t = this.storage === "localStorage" ? localStorage : sessionStorage, A = {
223
+ const A = this.storage === "localStorage" ? localStorage : sessionStorage, t = {
179
224
  tokens: this.tokens,
180
225
  expiresAt: this.expiresAt
181
226
  };
182
- t.setItem(this.storageKey, JSON.stringify(A));
227
+ A.setItem(this.storageKey, JSON.stringify(t));
183
228
  }
184
229
  } catch {
185
230
  }
@@ -192,31 +237,40 @@ class He {
192
237
  }
193
238
  }
194
239
  }
195
- const Je = "cedros_auth_sync";
196
- class Me {
240
+ const ve = "cedros_auth_sync";
241
+ class Te {
197
242
  channel = null;
198
243
  callback = null;
199
244
  boundHandler = null;
200
245
  constructor() {
201
- typeof window < "u" && "BroadcastChannel" in window && (this.channel = new BroadcastChannel(Je), this.boundHandler = this.handleMessage.bind(this), this.channel.addEventListener("message", this.boundHandler));
246
+ typeof window < "u" && "BroadcastChannel" in window && (this.channel = new BroadcastChannel(ve), this.boundHandler = this.handleMessage.bind(this), this.channel.addEventListener("message", this.boundHandler));
202
247
  }
203
248
  /**
204
- * Handle incoming sync messages
249
+ * Handle incoming sync messages.
250
+ * S-15: Validate message shape to prevent forged auth state from same-origin XSS.
205
251
  */
206
- handleMessage(t) {
207
- this.callback?.(t.data);
252
+ handleMessage(A) {
253
+ const t = A.data;
254
+ if (!(!t || typeof t != "object" || typeof t.type != "string") && ["login", "logout", "refresh"].includes(t.type)) {
255
+ if (t.type === "login") {
256
+ const i = t;
257
+ if (typeof i.user != "object" || i.user === null || typeof i.user.id != "string")
258
+ return;
259
+ }
260
+ this.callback?.(t);
261
+ }
208
262
  }
209
263
  /**
210
264
  * Set the callback for sync events from other tabs
211
265
  */
212
- setCallback(t) {
213
- this.callback = t;
266
+ setCallback(A) {
267
+ this.callback = A;
214
268
  }
215
269
  /**
216
270
  * Broadcast login event to other tabs
217
271
  */
218
- broadcastLogin(t) {
219
- this.channel?.postMessage({ type: "login", user: t });
272
+ broadcastLogin(A) {
273
+ this.channel?.postMessage({ type: "login", user: A });
220
274
  }
221
275
  /**
222
276
  * Broadcast logout event to other tabs
@@ -238,448 +292,446 @@ class Me {
238
292
  this.channel && (this.boundHandler && (this.channel.removeEventListener("message", this.boundHandler), this.boundHandler = null), this.channel.close(), this.channel = null), this.callback = null;
239
293
  }
240
294
  }
241
- const ce = 20;
242
- function ne() {
243
- if (typeof document > "u") return null;
244
- const e = document.querySelector('meta[name="csrf-token"]');
245
- if (e) {
246
- const A = e.getAttribute("content");
247
- if (A && A.length >= ce)
248
- return A;
249
- }
250
- const t = document.cookie.split(";");
251
- for (const A of t) {
252
- const [r, ...n] = A.trim().split("="), i = n.join("="), o = r.toLowerCase();
253
- if (o === "xsrf-token" || o === "csrf-token")
254
- try {
255
- const I = decodeURIComponent(i.trim());
256
- if (I.length >= ce)
257
- return I;
258
- } catch {
259
- continue;
260
- }
261
- }
262
- return null;
263
- }
264
- function X(e) {
295
+ function q(e) {
265
296
  if (typeof e != "object" || e === null) return !1;
266
- const t = e;
267
- if (typeof t.user != "object" || t.user === null) return !1;
268
- const A = t.user;
269
- return typeof A.id == "string" && A.id.length > 0;
297
+ const A = e;
298
+ if (typeof A.user != "object" || A.user === null) return !1;
299
+ const t = A.user;
300
+ return typeof t.id == "string" && t.id.length > 0;
270
301
  }
271
- function Ne(e) {
302
+ function Re(e) {
272
303
  if (typeof e != "object" || e === null) return !1;
273
- const t = e;
274
- return typeof t.accessToken == "string" && t.accessToken.length > 0 && typeof t.refreshToken == "string" && t.refreshToken.length > 0 && typeof t.expiresIn == "number" && t.expiresIn > 0;
304
+ const A = e;
305
+ return typeof A.accessToken == "string" && A.accessToken.length > 0 && typeof A.refreshToken == "string" && A.refreshToken.length > 0 && typeof A.expiresIn == "number" && A.expiresIn > 0;
275
306
  }
276
- function Ve({
307
+ function Le({
277
308
  serverUrl: e,
278
- session: t,
279
- callbacks: A,
280
- requestTimeoutMs: r
309
+ session: A,
310
+ callbacks: t,
311
+ requestTimeoutMs: i
281
312
  }) {
282
- const [n, i] = U(null), [o, I] = U("idle"), c = P(null), w = P(null), B = P(A), p = P(!0), f = P(null);
283
- K(() => {
284
- B.current = A;
285
- }, [A]), K(() => (p.current = !0, () => {
286
- p.current = !1;
313
+ const [r, n] = G(null), [o, a] = G("idle"), l = P(null), s = P(null), k = P(t), w = P(!0), B = P(null), b = P(() => Promise.resolve()), F = P(() => {
314
+ });
315
+ N(() => {
316
+ k.current = t;
317
+ }, [t]), N(() => (w.current = !0, () => {
318
+ w.current = !1;
287
319
  }), []);
288
- const Q = k((s) => {
289
- p.current && i(s);
290
- }, []), u = k((s) => {
291
- p.current && I(s);
292
- }, []), h = O(
320
+ const Q = d((c) => {
321
+ w.current && n(c);
322
+ }, []), f = d((c) => {
323
+ w.current && a(c);
324
+ }, []), u = V(
293
325
  () => ({
294
- storage: t?.storage ?? "cookie",
295
- autoRefresh: t?.autoRefresh ?? !0,
296
- syncTabs: t?.syncTabs ?? !0,
297
- persistKey: t?.persistKey,
298
- allowWebStorage: t?.allowWebStorage ?? !1
326
+ storage: A?.storage ?? "cookie",
327
+ autoRefresh: A?.autoRefresh ?? !0,
328
+ syncTabs: A?.syncTabs ?? !0,
329
+ persistKey: A?.persistKey,
330
+ allowWebStorage: A?.allowWebStorage ?? !1
299
331
  }),
300
332
  [
301
- t?.storage,
302
- t?.autoRefresh,
303
- t?.syncTabs,
304
- t?.persistKey,
305
- t?.allowWebStorage
333
+ A?.storage,
334
+ A?.autoRefresh,
335
+ A?.syncTabs,
336
+ A?.persistKey,
337
+ A?.allowWebStorage
306
338
  ]
307
339
  );
308
- K(() => (c.current = new He(h.storage, h.persistKey, {
309
- allowWebStorage: h.allowWebStorage
310
- }), h.syncTabs && (w.current = new Me()), () => {
311
- c.current?.destroy(), c.current = null, w.current?.close();
312
- }), [
313
- h.storage,
314
- h.syncTabs,
315
- h.persistKey,
316
- h.allowWebStorage
340
+ N(() => {
341
+ const c = new Oe(u.storage, u.persistKey, {
342
+ allowWebStorage: u.allowWebStorage
343
+ });
344
+ return l.current = c, u.autoRefresh && c.setRefreshCallback(() => b.current()), c.setSessionExpiredCallback(() => F.current()), u.syncTabs && (s.current = new Te()), () => {
345
+ c.destroy(), l.current = null, s.current?.close();
346
+ };
347
+ }, [
348
+ u.storage,
349
+ u.syncTabs,
350
+ u.persistKey,
351
+ u.allowWebStorage,
352
+ u.autoRefresh
317
353
  ]);
318
- const a = k(async () => {
319
- if (f.current)
320
- return f.current;
321
- const s = c.current?.getRefreshToken(), E = !!s, F = ne(), b = {};
322
- E && (b["Content-Type"] = "application/json"), F && (b["X-CSRF-Token"] = F);
323
- const N = (async () => {
324
- const V = new AbortController(), L = r ?? 1e4, Ue = window.setTimeout(() => V.abort(), L);
354
+ const m = d(async () => {
355
+ if (B.current)
356
+ return B.current;
357
+ const c = l.current?.getRefreshToken(), E = !!c, U = oe(), K = {};
358
+ E && (K["Content-Type"] = "application/json"), U && (K["X-CSRF-Token"] = U);
359
+ let D, J;
360
+ const v = new Promise((j, ie) => {
361
+ D = j, J = ie;
362
+ });
363
+ B.current = v, (async () => {
364
+ const j = new AbortController(), ie = i ?? 1e4, Ge = window.setTimeout(() => j.abort(), ie);
325
365
  try {
326
- const ge = await fetch(`${e}/refresh`, {
366
+ const L = await fetch(`${e}/refresh`, {
327
367
  method: "POST",
328
- headers: Object.keys(b).length > 0 ? b : void 0,
368
+ headers: Object.keys(K).length > 0 ? K : void 0,
329
369
  credentials: "include",
330
- body: E ? JSON.stringify({ refreshToken: s }) : void 0,
331
- signal: V.signal
370
+ body: E ? JSON.stringify({ refreshToken: c }) : void 0,
371
+ signal: j.signal
332
372
  });
333
- if (!ge.ok)
373
+ if (!L.ok)
334
374
  throw new Error("Token refresh failed");
335
- const z = await ge.json();
336
- if (z.tokens) {
337
- if (!Ne(z.tokens))
375
+ const re = await L.json();
376
+ if (re.tokens) {
377
+ if (!Re(re.tokens))
338
378
  throw new Error("Invalid token response structure");
339
- c.current?.setTokens(z.tokens);
340
- } else if (h.storage !== "cookie")
379
+ l.current?.setTokens(re.tokens);
380
+ } else if (u.storage !== "cookie")
341
381
  throw new Error("Token refresh failed");
342
- w.current?.broadcastRefresh();
382
+ s.current?.broadcastRefresh(), D();
383
+ } catch (L) {
384
+ throw J(L), L;
343
385
  } finally {
344
- window.clearTimeout(Ue);
386
+ window.clearTimeout(Ge);
345
387
  }
346
- })();
347
- f.current = N;
388
+ })().catch(() => {
389
+ });
348
390
  try {
349
- await N;
391
+ await v;
350
392
  } finally {
351
- f.current = null;
393
+ B.current = null;
352
394
  }
353
- }, [e, h.storage, r]), g = k(() => {
354
- if (h.storage === "cookie") return;
355
- const s = c.current?.getAccessToken();
356
- if (s)
357
- return { Authorization: `Bearer ${s}` };
358
- }, [h.storage]), C = k(() => {
359
- c.current?.clear(), Q(null), u("unauthenticated"), B.current?.onSessionExpired?.();
360
- }, [u, Q]);
361
- K(() => {
362
- c.current && (h.autoRefresh && c.current.setRefreshCallback(a), c.current.setSessionExpiredCallback(C));
363
- }, [h.autoRefresh, a, C]);
364
- const d = k(async () => {
395
+ }, [e, u.storage, i]), p = d(() => {
396
+ if (u.storage === "cookie") return;
397
+ const c = l.current?.getAccessToken();
398
+ if (c)
399
+ return { Authorization: `Bearer ${c}` };
400
+ }, [u.storage]), h = d(() => {
401
+ l.current?.clear(), Q(null), f("unauthenticated"), k.current?.onSessionExpired?.();
402
+ }, [f, Q]);
403
+ b.current = m, F.current = h;
404
+ const g = d(
405
+ (c) => {
406
+ const E = new AbortController(), U = i ?? 1e4, K = window.setTimeout(() => E.abort(), U), D = {}, J = p();
407
+ J && Object.assign(D, J);
408
+ const v = oe();
409
+ return v && (D["X-CSRF-Token"] = v), {
410
+ promise: fetch(c, {
411
+ credentials: "include",
412
+ headers: Object.keys(D).length > 0 ? D : void 0,
413
+ signal: E.signal
414
+ }),
415
+ cleanup: () => window.clearTimeout(K)
416
+ };
417
+ },
418
+ [p, i]
419
+ ), I = d(async () => {
420
+ const c = g(`${e}/user`);
365
421
  try {
366
- const s = await fetch(`${e}/user`, {
367
- credentials: "include",
368
- headers: g()
369
- });
370
- if (s.ok) {
371
- const E = await s.json();
372
- if (X(E)) {
373
- Q(E.user), u("authenticated");
422
+ const E = await c.promise;
423
+ if (E.ok) {
424
+ const U = await E.json();
425
+ if (q(U)) {
426
+ Q(U.user), f("authenticated");
374
427
  return;
375
428
  }
376
429
  }
377
- if (s.status === 401 && h.autoRefresh) {
430
+ if (E.status === 401 && u.autoRefresh) {
378
431
  try {
379
- await a();
432
+ await m();
380
433
  } catch {
381
- C();
434
+ h();
382
435
  return;
383
436
  }
384
- const E = await fetch(`${e}/user`, {
385
- credentials: "include",
386
- headers: g()
387
- });
388
- if (E.ok) {
389
- const F = await E.json();
390
- if (X(F)) {
391
- Q(F.user), u("authenticated");
392
- return;
437
+ const U = g(`${e}/user`);
438
+ try {
439
+ const K = await U.promise;
440
+ if (K.ok) {
441
+ const D = await K.json();
442
+ if (q(D)) {
443
+ Q(D.user), f("authenticated");
444
+ return;
445
+ }
393
446
  }
447
+ } finally {
448
+ U.cleanup();
394
449
  }
395
450
  }
396
- Q(null), u("unauthenticated");
451
+ Q(null), f("unauthenticated");
397
452
  } catch {
453
+ Q(null), f("unauthenticated");
454
+ } finally {
455
+ c.cleanup();
398
456
  }
399
457
  }, [
400
458
  e,
401
- h.autoRefresh,
402
- a,
459
+ u.autoRefresh,
460
+ m,
403
461
  g,
404
- C,
405
- u,
462
+ h,
463
+ f,
406
464
  Q
407
465
  ]);
408
- K(() => {
409
- !w.current || !h.syncTabs || w.current.setCallback((s) => {
410
- switch (s.type) {
466
+ N(() => {
467
+ !s.current || !u.syncTabs || s.current.setCallback((c) => {
468
+ switch (c.type) {
411
469
  case "login":
412
- Q(s.user), u("authenticated");
470
+ Q(c.user), f("authenticated");
413
471
  break;
414
472
  case "logout":
415
- Q(null), u("unauthenticated"), c.current?.clear();
473
+ Q(null), f("unauthenticated"), l.current?.clear();
416
474
  break;
417
475
  case "refresh":
418
- d();
476
+ I();
419
477
  break;
420
478
  default:
421
- console.warn("[Cedros Login] Unhandled tab sync event:", s);
479
+ console.warn("[Cedros Login] Unhandled tab sync event:", c);
422
480
  }
423
481
  });
424
- }, [h.syncTabs, d, u, Q]), K(() => {
425
- const s = new AbortController(), E = r ?? 1e4, F = window.setTimeout(() => s.abort(), E);
482
+ }, [u.syncTabs, I, f, Q]), N(() => {
483
+ const c = new AbortController(), E = i ?? 1e4, U = window.setTimeout(() => c.abort(), E);
426
484
  return (async () => {
427
- u("loading");
485
+ f("loading");
428
486
  try {
429
- const N = await fetch(`${e}/user`, {
487
+ const D = await fetch(`${e}/user`, {
430
488
  credentials: "include",
431
- headers: g(),
432
- signal: s.signal
489
+ headers: p(),
490
+ signal: c.signal
433
491
  });
434
- if (N.ok) {
435
- const V = await N.json();
436
- if (X(V)) {
437
- Q(V.user), u("authenticated");
492
+ if (D.ok) {
493
+ const J = await D.json();
494
+ if (q(J)) {
495
+ Q(J.user), f("authenticated");
438
496
  return;
439
497
  }
440
498
  }
441
- if (N.status === 401 && h.autoRefresh) {
499
+ if (D.status === 401 && u.autoRefresh) {
442
500
  try {
443
- await a();
501
+ await m();
444
502
  } catch {
445
- C();
503
+ h();
446
504
  return;
447
505
  }
448
- const V = await fetch(`${e}/user`, {
506
+ const J = await fetch(`${e}/user`, {
449
507
  credentials: "include",
450
- headers: g(),
451
- signal: s.signal
508
+ headers: p(),
509
+ signal: c.signal
452
510
  });
453
- if (V.ok) {
454
- const L = await V.json();
455
- if (X(L)) {
456
- Q(L.user), u("authenticated");
511
+ if (J.ok) {
512
+ const v = await J.json();
513
+ if (q(v)) {
514
+ Q(v.user), f("authenticated");
457
515
  return;
458
516
  }
459
517
  }
460
518
  }
461
- Q(null), u("unauthenticated");
519
+ Q(null), f("unauthenticated");
462
520
  } catch {
463
- Q(null), u("unauthenticated");
521
+ Q(null), f("unauthenticated");
464
522
  }
465
523
  })(), () => {
466
- window.clearTimeout(F), s.abort();
524
+ window.clearTimeout(U), c.abort();
467
525
  };
468
526
  }, [
469
527
  e,
470
- h.autoRefresh,
471
- a,
472
- g,
473
- C,
474
- u,
528
+ u.autoRefresh,
529
+ m,
530
+ p,
531
+ h,
532
+ f,
475
533
  Q,
476
- r
534
+ i
477
535
  ]);
478
- const D = k(
479
- (s, E) => {
480
- Q(s), u("authenticated"), E && c.current?.setTokens(E), p.current && w.current?.broadcastLogin(s);
536
+ const C = d(
537
+ (c, E) => {
538
+ Q(c), f("authenticated"), E && l.current?.setTokens(E), w.current && s.current?.broadcastLogin(c);
481
539
  },
482
- [Q, u]
483
- ), y = k(async () => {
484
- const s = ne();
540
+ [Q, f]
541
+ ), S = d(async () => {
542
+ const c = oe(), E = new AbortController(), U = i ?? 1e4, K = window.setTimeout(() => E.abort(), U);
485
543
  try {
486
544
  await fetch(`${e}/logout`, {
487
545
  method: "POST",
488
546
  headers: {
489
- ...s ? { "X-CSRF-Token": s } : {},
490
- ...g() ?? {}
547
+ ...c ? { "X-CSRF-Token": c } : {},
548
+ ...p() ?? {}
491
549
  },
492
- credentials: "include"
550
+ credentials: "include",
551
+ signal: E.signal
493
552
  });
494
553
  } catch {
495
554
  } finally {
496
- Q(null), u("unauthenticated"), c.current?.clear(), w.current?.broadcastLogout(), B.current?.onLogout?.();
555
+ window.clearTimeout(K), Q(null), f("unauthenticated"), l.current?.clear(), s.current?.broadcastLogout(), k.current?.onLogout?.();
497
556
  }
498
- }, [e, g, Q, u]), l = k(() => c.current?.getAccessToken() ?? null, []);
557
+ }, [e, p, Q, f, i]), H = d(() => l.current?.getAccessToken() ?? null, []);
499
558
  return {
500
- user: n,
559
+ user: r,
501
560
  authState: o,
502
- handleLoginSuccess: D,
503
- logout: y,
504
- refreshUser: d,
505
- getAccessToken: l
561
+ handleLoginSuccess: C,
562
+ logout: S,
563
+ refreshUser: I,
564
+ getAccessToken: H
506
565
  };
507
566
  }
508
- function Be() {
509
- const e = we(ae);
510
- if (!e)
511
- throw new Error("useCedrosLogin must be used within a CedrosLoginProvider");
512
- return e;
513
- }
514
- function de() {
515
- return we(ae);
516
- }
517
- const Oe = {
567
+ const Xe = {
518
568
  mCost: 19456,
519
569
  // 19 MiB
520
570
  tCost: 2,
521
571
  pCost: 1
522
572
  };
523
- function Pe(e) {
573
+ function We(e) {
524
574
  return e.length === 16;
525
575
  }
526
- function xe(e) {
576
+ function je(e) {
527
577
  if (e.length === 16) return !0;
528
578
  if (e.length < 18) return !1;
529
- const t = e[0];
530
- return !(t !== 128 && t !== 8);
579
+ const A = e[0];
580
+ return A === 0 || A === 1 || A === 128 || A === 8;
531
581
  }
532
- function Ye(e) {
582
+ function Ze(e) {
533
583
  return e.length === 32;
534
584
  }
535
- function ve(e) {
585
+ function qe(e) {
536
586
  return e.length === 12;
537
587
  }
538
- function Te(e) {
588
+ function _e(e) {
539
589
  return e.length >= 16;
540
590
  }
541
- function Re(e) {
591
+ function $e(e) {
542
592
  return e.length === 32;
543
593
  }
544
- function Le(e) {
545
- if (!Pe(e))
594
+ function ze(e) {
595
+ if (!We(e))
546
596
  throw new Error(`Invalid seed length: expected 16, got ${e.length}`);
547
597
  return e;
548
598
  }
549
- function qt(e) {
550
- if (!xe(e))
599
+ function _A(e) {
600
+ if (!je(e))
551
601
  throw new Error(`Invalid share length: expected >=16, got ${e.length}`);
552
602
  return e;
553
603
  }
554
- function Ee(e) {
555
- if (!Ye(e))
604
+ function ke(e) {
605
+ if (!Ze(e))
556
606
  throw new Error(`Invalid key length: expected 32, got ${e.length}`);
557
607
  return e;
558
608
  }
559
- function Xe(e) {
560
- if (!ve(e))
609
+ function eA(e) {
610
+ if (!qe(e))
561
611
  throw new Error(`Invalid nonce length: expected 12, got ${e.length}`);
562
612
  return e;
563
613
  }
564
- function We(e) {
565
- if (!Te(e))
614
+ function AA(e) {
615
+ if (!_e(e))
566
616
  throw new Error(`Invalid salt length: expected >=16, got ${e.length}`);
567
617
  return e;
568
618
  }
569
- function je(e) {
570
- if (!Re(e))
619
+ function tA(e) {
620
+ if (!$e(e))
571
621
  throw new Error(`Invalid PRF salt length: expected 32, got ${e.length}`);
572
622
  return e;
573
623
  }
574
- function x(e) {
624
+ function T(e) {
575
625
  return new Uint8Array(e);
576
626
  }
577
- function q(e) {
627
+ function ee(e) {
578
628
  if (typeof crypto > "u" || !crypto.getRandomValues)
579
629
  throw new Error(
580
630
  "WebCrypto API not available. Secure random generation requires a modern browser."
581
631
  );
582
- const t = new Uint8Array(e);
583
- return crypto.getRandomValues(t), t;
632
+ const A = new Uint8Array(e);
633
+ return crypto.getRandomValues(A), A;
584
634
  }
585
- function _t() {
586
- return Le(q(16));
635
+ function $A() {
636
+ return ze(ee(16));
587
637
  }
588
- function Ze() {
589
- return Xe(q(12));
638
+ function iA() {
639
+ return eA(ee(12));
590
640
  }
591
- function $t() {
592
- return We(q(16));
641
+ function zA() {
642
+ return AA(ee(16));
593
643
  }
594
- function qe() {
595
- return je(q(32));
644
+ function rA() {
645
+ return tA(ee(32));
596
646
  }
597
- function pe(e) {
647
+ function Se(e) {
598
648
  if (!(!e || e.length === 0)) {
599
- e.fill(0);
600
- for (let t = 0; t < e.length; t++)
601
- e[t] = t * 90 & 255;
649
+ if (typeof globalThis.crypto?.getRandomValues == "function")
650
+ globalThis.crypto.getRandomValues(e);
651
+ else
652
+ for (let A = 0; A < e.length; A++)
653
+ e[A] = A * 90 & 255;
602
654
  e.fill(0);
603
655
  }
604
656
  }
605
- function zt(...e) {
606
- for (const t of e)
607
- t && pe(t);
657
+ function et(...e) {
658
+ for (const A of e)
659
+ A && Se(A);
608
660
  }
609
- async function _e(e) {
661
+ async function nA(e) {
610
662
  return crypto.subtle.importKey(
611
663
  "raw",
612
- x(e),
664
+ T(e),
613
665
  { name: "AES-GCM", length: 256 },
614
666
  !1,
615
667
  // not extractable
616
668
  ["encrypt", "decrypt"]
617
669
  );
618
670
  }
619
- async function $e(e, t, A) {
620
- const r = A ?? Ze(), n = await _e(t), i = await crypto.subtle.encrypt(
621
- { name: "AES-GCM", iv: x(r) },
622
- n,
623
- x(e)
671
+ async function oA(e, A, t) {
672
+ const i = t ?? iA(), r = await nA(A), n = await crypto.subtle.encrypt(
673
+ { name: "AES-GCM", iv: T(i) },
674
+ r,
675
+ T(e)
624
676
  );
625
677
  return {
626
- ciphertext: new Uint8Array(i),
627
- nonce: r
678
+ ciphertext: new Uint8Array(n),
679
+ nonce: i
628
680
  };
629
681
  }
630
- async function eA(e, t) {
631
- const A = await $e(e, t);
682
+ async function At(e, A) {
683
+ const t = await oA(e, A);
632
684
  return {
633
- ciphertext: Z(A.ciphertext),
634
- nonce: Z(A.nonce)
685
+ ciphertext: z(t.ciphertext),
686
+ nonce: z(t.nonce)
635
687
  };
636
688
  }
637
- function Z(e) {
638
- const A = [];
639
- for (let r = 0; r < e.length; r += 32768) {
640
- const n = e.subarray(r, Math.min(r + 32768, e.length));
641
- A.push(String.fromCharCode(...n));
689
+ function z(e) {
690
+ const t = [];
691
+ for (let i = 0; i < e.length; i += 32768) {
692
+ const r = e.subarray(i, Math.min(i + 32768, e.length));
693
+ t.push(String.fromCharCode(...r));
642
694
  }
643
- return btoa(A.join(""));
695
+ return btoa(t.join(""));
644
696
  }
645
- function ze(e) {
646
- let t;
697
+ function sA(e) {
698
+ let A;
647
699
  try {
648
- t = atob(e);
700
+ A = atob(e);
649
701
  } catch {
650
702
  throw new Error("Invalid base64 string: input is malformed or contains invalid characters");
651
703
  }
652
- const A = new Uint8Array(t.length);
653
- for (let r = 0; r < t.length; r++)
654
- A[r] = t.charCodeAt(r);
655
- return A;
704
+ const t = new Uint8Array(A.length);
705
+ for (let i = 0; i < A.length; i++)
706
+ t[i] = A.charCodeAt(i);
707
+ return t;
656
708
  }
657
- async function et(e, t, A, r = 32) {
658
- const n = await crypto.subtle.importKey(
709
+ async function IA(e, A, t, i = 32) {
710
+ const r = await crypto.subtle.importKey(
659
711
  "raw",
660
- x(e),
712
+ T(e),
661
713
  "HKDF",
662
714
  !1,
663
715
  ["deriveBits"]
664
- ), i = new TextEncoder().encode(A), o = await crypto.subtle.deriveBits(
716
+ ), n = new TextEncoder().encode(t), o = await crypto.subtle.deriveBits(
665
717
  {
666
718
  name: "HKDF",
667
719
  hash: "SHA-256",
668
- salt: x(t ?? new Uint8Array(32)),
720
+ salt: T(A ?? new Uint8Array(32)),
669
721
  // Zero salt if not provided
670
- info: x(i)
722
+ info: T(n)
671
723
  },
672
- n,
673
- r * 8
724
+ r,
725
+ i * 8
674
726
  // bits
675
727
  );
676
728
  return new Uint8Array(o);
677
729
  }
678
- async function tA(e, t) {
679
- const A = await et(e, t, "cedros-wallet-share-b-encryption", 32);
680
- return Ee(A);
730
+ async function tt(e, A) {
731
+ const t = await IA(e, A, "cedros-wallet-share-b-encryption", 32);
732
+ return ke(t);
681
733
  }
682
- async function tt() {
734
+ async function aA() {
683
735
  try {
684
736
  const e = await crypto.subtle.importKey("raw", new Uint8Array(32), "HKDF", !1, [
685
737
  "deriveBits"
@@ -698,156 +750,156 @@ async function tt() {
698
750
  return !1;
699
751
  }
700
752
  }
701
- function Y(e, t, A, r) {
702
- function n(i) {
703
- return i instanceof A ? i : new A(function(o) {
704
- o(i);
753
+ function R(e, A, t, i) {
754
+ function r(n) {
755
+ return n instanceof t ? n : new t(function(o) {
756
+ o(n);
705
757
  });
706
758
  }
707
- return new (A || (A = Promise))(function(i, o) {
708
- function I(B) {
759
+ return new (t || (t = Promise))(function(n, o) {
760
+ function a(k) {
709
761
  try {
710
- w(r.next(B));
711
- } catch (p) {
712
- o(p);
762
+ s(i.next(k));
763
+ } catch (w) {
764
+ o(w);
713
765
  }
714
766
  }
715
- function c(B) {
767
+ function l(k) {
716
768
  try {
717
- w(r.throw(B));
718
- } catch (p) {
719
- o(p);
769
+ s(i.throw(k));
770
+ } catch (w) {
771
+ o(w);
720
772
  }
721
773
  }
722
- function w(B) {
723
- B.done ? i(B.value) : n(B.value).then(I, c);
774
+ function s(k) {
775
+ k.done ? n(k.value) : r(k.value).then(a, l);
724
776
  }
725
- w((r = r.apply(e, [])).next());
777
+ s((i = i.apply(e, [])).next());
726
778
  });
727
779
  }
728
- class S {
780
+ class y {
729
781
  constructor() {
730
782
  this.mutex = Promise.resolve();
731
783
  }
732
784
  lock() {
733
- let t = () => {
785
+ let A = () => {
734
786
  };
735
- return this.mutex = this.mutex.then(() => new Promise(t)), new Promise((A) => {
736
- t = A;
787
+ return this.mutex = this.mutex.then(() => new Promise(A)), new Promise((t) => {
788
+ A = t;
737
789
  });
738
790
  }
739
- dispatch(t) {
740
- return Y(this, void 0, void 0, function* () {
741
- const A = yield this.lock();
791
+ dispatch(A) {
792
+ return R(this, void 0, void 0, function* () {
793
+ const t = yield this.lock();
742
794
  try {
743
- return yield Promise.resolve(t());
795
+ return yield Promise.resolve(A());
744
796
  } finally {
745
- A();
797
+ t();
746
798
  }
747
799
  });
748
800
  }
749
801
  }
750
- var ee;
751
- function At() {
802
+ var se;
803
+ function gA() {
752
804
  return typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : typeof window < "u" ? window : global;
753
805
  }
754
- const oe = At(), te = (ee = oe.Buffer) !== null && ee !== void 0 ? ee : null, rt = oe.TextEncoder ? new oe.TextEncoder() : null;
755
- function ye(e, t) {
756
- return (e & 15) + (e >> 6 | e >> 3 & 8) << 4 | (t & 15) + (t >> 6 | t >> 3 & 8);
806
+ const Ce = gA(), Ie = (se = Ce.Buffer) !== null && se !== void 0 ? se : null, lA = Ce.TextEncoder ? new Ce.TextEncoder() : null;
807
+ function De(e, A) {
808
+ return (e & 15) + (e >> 6 | e >> 3 & 8) << 4 | (A & 15) + (A >> 6 | A >> 3 & 8);
757
809
  }
758
- function ke(e, t) {
759
- const A = t.length >> 1;
760
- for (let r = 0; r < A; r++) {
761
- const n = r << 1;
762
- e[r] = ye(t.charCodeAt(n), t.charCodeAt(n + 1));
810
+ function Fe(e, A) {
811
+ const t = A.length >> 1;
812
+ for (let i = 0; i < t; i++) {
813
+ const r = i << 1;
814
+ e[i] = De(A.charCodeAt(r), A.charCodeAt(r + 1));
763
815
  }
764
816
  }
765
- function it(e, t) {
766
- if (e.length !== t.length * 2)
817
+ function cA(e, A) {
818
+ if (e.length !== A.length * 2)
767
819
  return !1;
768
- for (let A = 0; A < t.length; A++) {
769
- const r = A << 1;
770
- if (t[A] !== ye(e.charCodeAt(r), e.charCodeAt(r + 1)))
820
+ for (let t = 0; t < A.length; t++) {
821
+ const i = t << 1;
822
+ if (A[t] !== De(e.charCodeAt(i), e.charCodeAt(i + 1)))
771
823
  return !1;
772
824
  }
773
825
  return !0;
774
826
  }
775
- const le = 87, he = 48;
776
- function se(e, t, A) {
777
- let r = 0;
778
- for (let n = 0; n < A; n++) {
779
- let i = t[n] >>> 4;
780
- e[r++] = i > 9 ? i + le : i + he, i = t[n] & 15, e[r++] = i > 9 ? i + le : i + he;
827
+ const ue = 87, we = 48;
828
+ function he(e, A, t) {
829
+ let i = 0;
830
+ for (let r = 0; r < t; r++) {
831
+ let n = A[r] >>> 4;
832
+ e[i++] = n > 9 ? n + ue : n + we, n = A[r] & 15, e[i++] = n > 9 ? n + ue : n + we;
781
833
  }
782
834
  return String.fromCharCode.apply(null, e);
783
835
  }
784
- const M = te !== null ? (e) => {
836
+ const O = Ie !== null ? (e) => {
785
837
  if (typeof e == "string") {
786
- const t = te.from(e, "utf8");
787
- return new Uint8Array(t.buffer, t.byteOffset, t.length);
838
+ const A = Ie.from(e, "utf8");
839
+ return new Uint8Array(A.buffer, A.byteOffset, A.length);
788
840
  }
789
- if (te.isBuffer(e))
841
+ if (Ie.isBuffer(e))
790
842
  return new Uint8Array(e.buffer, e.byteOffset, e.length);
791
843
  if (ArrayBuffer.isView(e))
792
844
  return new Uint8Array(e.buffer, e.byteOffset, e.byteLength);
793
845
  throw new Error("Invalid data type!");
794
846
  } : (e) => {
795
847
  if (typeof e == "string")
796
- return rt.encode(e);
848
+ return lA.encode(e);
797
849
  if (ArrayBuffer.isView(e))
798
850
  return new Uint8Array(e.buffer, e.byteOffset, e.byteLength);
799
851
  throw new Error("Invalid data type!");
800
- }, G = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", T = new Uint8Array(256);
801
- for (let e = 0; e < G.length; e++)
802
- T[G.charCodeAt(e)] = e;
803
- function Ce(e, t = !0) {
804
- const A = e.length, r = A % 3, n = [], i = A - r;
805
- for (let o = 0; o < i; o += 3) {
806
- const I = (e[o] << 16 & 16711680) + (e[o + 1] << 8 & 65280) + (e[o + 2] & 255), c = G.charAt(I >> 18 & 63) + G.charAt(I >> 12 & 63) + G.charAt(I >> 6 & 63) + G.charAt(I & 63);
807
- n.push(c);
808
- }
809
- if (r === 1) {
810
- const o = e[A - 1], I = G.charAt(o >> 2), c = G.charAt(o << 4 & 63);
811
- n.push(`${I}${c}`), t && n.push("==");
812
- } else if (r === 2) {
813
- const o = (e[A - 2] << 8) + e[A - 1], I = G.charAt(o >> 10), c = G.charAt(o >> 4 & 63), w = G.charAt(o << 2 & 63);
814
- n.push(`${I}${c}${w}`), t && n.push("=");
815
- }
816
- return n.join("");
817
- }
818
- function nt(e) {
819
- let t = Math.floor(e.length * 0.75);
820
- const A = e.length;
821
- return e[A - 1] === "=" && (t -= 1, e[A - 2] === "=" && (t -= 1)), t;
822
- }
823
- function ot(e) {
824
- const t = nt(e), A = e.length, r = new Uint8Array(t);
825
- let n = 0;
826
- for (let i = 0; i < A; i += 4) {
827
- const o = T[e.charCodeAt(i)], I = T[e.charCodeAt(i + 1)], c = T[e.charCodeAt(i + 2)], w = T[e.charCodeAt(i + 3)];
828
- r[n] = o << 2 | I >> 4, n += 1, r[n] = (I & 15) << 4 | c >> 2, n += 1, r[n] = (c & 3) << 6 | w & 63, n += 1;
852
+ }, M = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", W = new Uint8Array(256);
853
+ for (let e = 0; e < M.length; e++)
854
+ W[M.charCodeAt(e)] = e;
855
+ function Qe(e, A = !0) {
856
+ const t = e.length, i = t % 3, r = [], n = t - i;
857
+ for (let o = 0; o < n; o += 3) {
858
+ const a = (e[o] << 16 & 16711680) + (e[o + 1] << 8 & 65280) + (e[o + 2] & 255), l = M.charAt(a >> 18 & 63) + M.charAt(a >> 12 & 63) + M.charAt(a >> 6 & 63) + M.charAt(a & 63);
859
+ r.push(l);
860
+ }
861
+ if (i === 1) {
862
+ const o = e[t - 1], a = M.charAt(o >> 2), l = M.charAt(o << 4 & 63);
863
+ r.push(`${a}${l}`), A && r.push("==");
864
+ } else if (i === 2) {
865
+ const o = (e[t - 2] << 8) + e[t - 1], a = M.charAt(o >> 10), l = M.charAt(o >> 4 & 63), s = M.charAt(o << 2 & 63);
866
+ r.push(`${a}${l}${s}`), A && r.push("=");
867
+ }
868
+ return r.join("");
869
+ }
870
+ function CA(e) {
871
+ let A = Math.floor(e.length * 0.75);
872
+ const t = e.length;
873
+ return e[t - 1] === "=" && (A -= 1, e[t - 2] === "=" && (A -= 1)), A;
874
+ }
875
+ function hA(e) {
876
+ const A = CA(e), t = e.length, i = new Uint8Array(A);
877
+ let r = 0;
878
+ for (let n = 0; n < t; n += 4) {
879
+ const o = W[e.charCodeAt(n)], a = W[e.charCodeAt(n + 1)], l = W[e.charCodeAt(n + 2)], s = W[e.charCodeAt(n + 3)];
880
+ i[r] = o << 2 | a >> 4, r += 1, i[r] = (a & 15) << 4 | l >> 2, r += 1, i[r] = (l & 3) << 6 | s & 63, r += 1;
829
881
  }
830
- return r;
882
+ return i;
831
883
  }
832
- const W = 16 * 1024, v = 4, st = new S(), Ae = /* @__PURE__ */ new Map();
833
- function Se(e, t) {
834
- return Y(this, void 0, void 0, function* () {
835
- let A = null, r = null, n = !1;
884
+ const _ = 16 * 1024, X = 4, fA = new y(), ae = /* @__PURE__ */ new Map();
885
+ function Ue(e, A) {
886
+ return R(this, void 0, void 0, function* () {
887
+ let t = null, i = null, r = !1;
836
888
  if (typeof WebAssembly > "u")
837
889
  throw new Error("WebAssembly is not supported in this environment!");
838
- const i = (l, s = 0) => {
839
- r.set(l, s);
840
- }, o = () => r, I = () => A.exports, c = (l) => {
841
- A.exports.Hash_SetMemorySize(l);
842
- const s = A.exports.Hash_GetBuffer(), E = A.exports.memory.buffer;
843
- r = new Uint8Array(E, s, l);
844
- }, w = () => new DataView(A.exports.memory.buffer).getUint32(A.exports.STATE_SIZE, !0), B = st.dispatch(() => Y(this, void 0, void 0, function* () {
845
- if (!Ae.has(e.name)) {
846
- const s = ot(e.data), E = WebAssembly.compile(s);
847
- Ae.set(e.name, E);
890
+ const n = (I, C = 0) => {
891
+ i.set(I, C);
892
+ }, o = () => i, a = () => t.exports, l = (I) => {
893
+ t.exports.Hash_SetMemorySize(I);
894
+ const C = t.exports.Hash_GetBuffer(), S = t.exports.memory.buffer;
895
+ i = new Uint8Array(S, C, I);
896
+ }, s = () => new DataView(t.exports.memory.buffer).getUint32(t.exports.STATE_SIZE, !0), k = fA.dispatch(() => R(this, void 0, void 0, function* () {
897
+ if (!ae.has(e.name)) {
898
+ const C = hA(e.data), S = WebAssembly.compile(C);
899
+ ae.set(e.name, S);
848
900
  }
849
- const l = yield Ae.get(e.name);
850
- A = yield WebAssembly.instantiate(l, {
901
+ const I = yield ae.get(e.name);
902
+ t = yield WebAssembly.instantiate(I, {
851
903
  // env: {
852
904
  // emscripten_memcpy_big: (dest, src, num) => {
853
905
  // const memoryBuffer = wasmInstance.exports.memory.buffer;
@@ -861,157 +913,157 @@ function Se(e, t) {
861
913
  // },
862
914
  // },
863
915
  });
864
- })), p = () => Y(this, void 0, void 0, function* () {
865
- A || (yield B);
866
- const l = A.exports.Hash_GetBuffer(), s = A.exports.memory.buffer;
867
- r = new Uint8Array(s, l, W);
868
- }), f = (l = null) => {
869
- n = !0, A.exports.Hash_Init(l);
870
- }, Q = (l) => {
871
- let s = 0;
872
- for (; s < l.length; ) {
873
- const E = l.subarray(s, s + W);
874
- s += E.length, r.set(E), A.exports.Hash_Update(E.length);
916
+ })), w = () => R(this, void 0, void 0, function* () {
917
+ t || (yield k);
918
+ const I = t.exports.Hash_GetBuffer(), C = t.exports.memory.buffer;
919
+ i = new Uint8Array(C, I, _);
920
+ }), B = (I = null) => {
921
+ r = !0, t.exports.Hash_Init(I);
922
+ }, b = (I) => {
923
+ let C = 0;
924
+ for (; C < I.length; ) {
925
+ const S = I.subarray(C, C + _);
926
+ C += S.length, i.set(S), t.exports.Hash_Update(S.length);
875
927
  }
876
- }, u = (l) => {
877
- if (!n)
928
+ }, F = (I) => {
929
+ if (!r)
878
930
  throw new Error("update() called before init()");
879
- const s = M(l);
880
- Q(s);
881
- }, h = new Uint8Array(t * 2), a = (l, s = null) => {
882
- if (!n)
931
+ const C = O(I);
932
+ b(C);
933
+ }, Q = new Uint8Array(A * 2), f = (I, C = null) => {
934
+ if (!r)
883
935
  throw new Error("digest() called before init()");
884
- return n = !1, A.exports.Hash_Final(s), l === "binary" ? r.slice(0, t) : se(h, r, t);
885
- }, g = () => {
886
- if (!n)
936
+ return r = !1, t.exports.Hash_Final(C), I === "binary" ? i.slice(0, A) : he(Q, i, A);
937
+ }, u = () => {
938
+ if (!r)
887
939
  throw new Error("save() can only be called after init() and before digest()");
888
- const l = A.exports.Hash_GetState(), s = w(), E = A.exports.memory.buffer, F = new Uint8Array(E, l, s), b = new Uint8Array(v + s);
889
- return ke(b, e.hash), b.set(F, v), b;
890
- }, C = (l) => {
891
- if (!(l instanceof Uint8Array))
940
+ const I = t.exports.Hash_GetState(), C = s(), S = t.exports.memory.buffer, H = new Uint8Array(S, I, C), c = new Uint8Array(X + C);
941
+ return Fe(c, e.hash), c.set(H, X), c;
942
+ }, m = (I) => {
943
+ if (!(I instanceof Uint8Array))
892
944
  throw new Error("load() expects an Uint8Array generated by save()");
893
- const s = A.exports.Hash_GetState(), E = w(), F = v + E, b = A.exports.memory.buffer;
894
- if (l.length !== F)
895
- throw new Error(`Bad state length (expected ${F} bytes, got ${l.length})`);
896
- if (!it(e.hash, l.subarray(0, v)))
945
+ const C = t.exports.Hash_GetState(), S = s(), H = X + S, c = t.exports.memory.buffer;
946
+ if (I.length !== H)
947
+ throw new Error(`Bad state length (expected ${H} bytes, got ${I.length})`);
948
+ if (!cA(e.hash, I.subarray(0, X)))
897
949
  throw new Error("This state was written by an incompatible hash implementation");
898
- const N = l.subarray(v);
899
- new Uint8Array(b, s, E).set(N), n = !0;
900
- }, d = (l) => typeof l == "string" ? l.length < W / 4 : l.byteLength < W;
901
- let D = d;
950
+ const E = I.subarray(X);
951
+ new Uint8Array(c, C, S).set(E), r = !0;
952
+ }, p = (I) => typeof I == "string" ? I.length < _ / 4 : I.byteLength < _;
953
+ let h = p;
902
954
  switch (e.name) {
903
955
  case "argon2":
904
956
  case "scrypt":
905
- D = () => !0;
957
+ h = () => !0;
906
958
  break;
907
959
  case "blake2b":
908
960
  case "blake2s":
909
- D = (l, s) => s <= 512 && d(l);
961
+ h = (I, C) => C <= 512 && p(I);
910
962
  break;
911
963
  case "blake3":
912
- D = (l, s) => s === 0 && d(l);
964
+ h = (I, C) => C === 0 && p(I);
913
965
  break;
914
966
  case "xxhash64":
915
967
  // cannot simplify
916
968
  case "xxhash3":
917
969
  case "xxhash128":
918
970
  case "crc64":
919
- D = () => !1;
971
+ h = () => !1;
920
972
  break;
921
973
  }
922
- const y = (l, s = null, E = null) => {
923
- if (!D(l, s))
924
- return f(s), u(l), a("hex", E);
925
- const F = M(l);
926
- return r.set(F), A.exports.Hash_Calculate(F.length, s, E), se(h, r, t);
974
+ const g = (I, C = null, S = null) => {
975
+ if (!h(I, C))
976
+ return B(C), F(I), f("hex", S);
977
+ const H = O(I);
978
+ return i.set(H), t.exports.Hash_Calculate(H.length, C, S), he(Q, i, A);
927
979
  };
928
- return yield p(), {
980
+ return yield w(), {
929
981
  getMemory: o,
930
- writeMemory: i,
931
- getExports: I,
932
- setMemorySize: c,
933
- init: f,
934
- update: u,
935
- digest: a,
936
- save: g,
937
- load: C,
938
- calculate: y,
939
- hashLength: t
982
+ writeMemory: n,
983
+ getExports: a,
984
+ setMemorySize: l,
985
+ init: B,
986
+ update: F,
987
+ digest: f,
988
+ save: u,
989
+ load: m,
990
+ calculate: g,
991
+ hashLength: A
940
992
  };
941
993
  });
942
994
  }
943
- new S();
944
- var It = "argon2", at = "AGFzbQEAAAABKQVgAX8Bf2AAAX9gEH9/f39/f39/f39/f39/f38AYAR/f39/AGACf38AAwYFAAECAwQFBgEBAoCAAgYIAX8BQZCoBAsHQQQGbWVtb3J5AgASSGFzaF9TZXRNZW1vcnlTaXplAAAOSGFzaF9HZXRCdWZmZXIAAQ5IYXNoX0NhbGN1bGF0ZQAECvEyBVgBAn9BACEBAkAgAEEAKAKICCICRg0AAkAgACACayIAQRB2IABBgIB8cSAASWoiAEAAQX9HDQBB/wHADwtBACEBQQBBACkDiAggAEEQdK18NwOICAsgAcALcAECfwJAQQAoAoAIIgANAEEAPwBBEHQiADYCgAhBACgCiAgiAUGAgCBGDQACQEGAgCAgAWsiAEEQdiAAQYCAfHEgAElqIgBAAEF/Rw0AQQAPC0EAQQApA4gIIABBEHStfDcDiAhBACgCgAghAAsgAAvcDgECfiAAIAQpAwAiECAAKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAMIBAgDCkDAIVCIIkiEDcDACAIIBAgCCkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgBCAQIAQpAwCFQiiJIhA3AwAgACAQIAApAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAwgECAMKQMAhUIwiSIQNwMAIAggECAIKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAEIBAgBCkDAIVCAYk3AwAgASAFKQMAIhAgASkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDSAQIA0pAwCFQiCJIhA3AwAgCSAQIAkpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAUgECAFKQMAhUIoiSIQNwMAIAEgECABKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACANIBAgDSkDAIVCMIkiEDcDACAJIBAgCSkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBSAQIAUpAwCFQgGJNwMAIAIgBikDACIQIAIpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIA4gECAOKQMAhUIgiSIQNwMAIAogECAKKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAGIBAgBikDAIVCKIkiEDcDACACIBAgAikDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgDiAQIA4pAwCFQjCJIhA3AwAgCiAQIAopAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAYgECAGKQMAhUIBiTcDACADIAcpAwAiECADKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAPIBAgDykDAIVCIIkiEDcDACALIBAgCykDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgByAQIAcpAwCFQiiJIhA3AwAgAyAQIAMpAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIA8gECAPKQMAhUIwiSIQNwMAIAsgECALKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAHIBAgBykDAIVCAYk3AwAgACAFKQMAIhAgACkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDyAQIA8pAwCFQiCJIhA3AwAgCiAQIAopAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAUgECAFKQMAhUIoiSIQNwMAIAAgECAAKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAPIBAgDykDAIVCMIkiEDcDACAKIBAgCikDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBSAQIAUpAwCFQgGJNwMAIAEgBikDACIQIAEpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAwgECAMKQMAhUIgiSIQNwMAIAsgECALKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAGIBAgBikDAIVCKIkiEDcDACABIBAgASkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgDCAQIAwpAwCFQjCJIhA3AwAgCyAQIAspAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAYgECAGKQMAhUIBiTcDACACIAcpAwAiECACKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACANIBAgDSkDAIVCIIkiEDcDACAIIBAgCCkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgByAQIAcpAwCFQiiJIhA3AwAgAiAQIAIpAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIA0gECANKQMAhUIwiSIQNwMAIAggECAIKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAHIBAgBykDAIVCAYk3AwAgAyAEKQMAIhAgAykDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDiAQIA4pAwCFQiCJIhA3AwAgCSAQIAkpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAQgECAEKQMAhUIoiSIQNwMAIAMgECADKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAOIBAgDikDAIVCMIkiEDcDACAJIBAgCSkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBCAQIAQpAwCFQgGJNwMAC98aAQN/QQAhBEEAIAIpAwAgASkDAIU3A5AIQQAgAikDCCABKQMIhTcDmAhBACACKQMQIAEpAxCFNwOgCEEAIAIpAxggASkDGIU3A6gIQQAgAikDICABKQMghTcDsAhBACACKQMoIAEpAyiFNwO4CEEAIAIpAzAgASkDMIU3A8AIQQAgAikDOCABKQM4hTcDyAhBACACKQNAIAEpA0CFNwPQCEEAIAIpA0ggASkDSIU3A9gIQQAgAikDUCABKQNQhTcD4AhBACACKQNYIAEpA1iFNwPoCEEAIAIpA2AgASkDYIU3A/AIQQAgAikDaCABKQNohTcD+AhBACACKQNwIAEpA3CFNwOACUEAIAIpA3ggASkDeIU3A4gJQQAgAikDgAEgASkDgAGFNwOQCUEAIAIpA4gBIAEpA4gBhTcDmAlBACACKQOQASABKQOQAYU3A6AJQQAgAikDmAEgASkDmAGFNwOoCUEAIAIpA6ABIAEpA6ABhTcDsAlBACACKQOoASABKQOoAYU3A7gJQQAgAikDsAEgASkDsAGFNwPACUEAIAIpA7gBIAEpA7gBhTcDyAlBACACKQPAASABKQPAAYU3A9AJQQAgAikDyAEgASkD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", gt = "e4cdc523", ct = {
945
- name: It,
946
- data: at,
947
- hash: gt
948
- }, lt = "blake2b", ht = "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", Ct = "c6f286e6", ut = {
949
- name: lt,
950
- data: ht,
951
- hash: Ct
995
+ new y();
996
+ var uA = "argon2", wA = "AGFzbQEAAAABKQVgAX8Bf2AAAX9gEH9/f39/f39/f39/f39/f38AYAR/f39/AGACf38AAwYFAAECAwQFBgEBAoCAAgYIAX8BQZCoBAsHQQQGbWVtb3J5AgASSGFzaF9TZXRNZW1vcnlTaXplAAAOSGFzaF9HZXRCdWZmZXIAAQ5IYXNoX0NhbGN1bGF0ZQAECvEyBVgBAn9BACEBAkAgAEEAKAKICCICRg0AAkAgACACayIAQRB2IABBgIB8cSAASWoiAEAAQX9HDQBB/wHADwtBACEBQQBBACkDiAggAEEQdK18NwOICAsgAcALcAECfwJAQQAoAoAIIgANAEEAPwBBEHQiADYCgAhBACgCiAgiAUGAgCBGDQACQEGAgCAgAWsiAEEQdiAAQYCAfHEgAElqIgBAAEF/Rw0AQQAPC0EAQQApA4gIIABBEHStfDcDiAhBACgCgAghAAsgAAvcDgECfiAAIAQpAwAiECAAKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAMIBAgDCkDAIVCIIkiEDcDACAIIBAgCCkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgBCAQIAQpAwCFQiiJIhA3AwAgACAQIAApAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAwgECAMKQMAhUIwiSIQNwMAIAggECAIKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAEIBAgBCkDAIVCAYk3AwAgASAFKQMAIhAgASkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDSAQIA0pAwCFQiCJIhA3AwAgCSAQIAkpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAUgECAFKQMAhUIoiSIQNwMAIAEgECABKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACANIBAgDSkDAIVCMIkiEDcDACAJIBAgCSkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBSAQIAUpAwCFQgGJNwMAIAIgBikDACIQIAIpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIA4gECAOKQMAhUIgiSIQNwMAIAogECAKKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAGIBAgBikDAIVCKIkiEDcDACACIBAgAikDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgDiAQIA4pAwCFQjCJIhA3AwAgCiAQIAopAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAYgECAGKQMAhUIBiTcDACADIAcpAwAiECADKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAPIBAgDykDAIVCIIkiEDcDACALIBAgCykDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgByAQIAcpAwCFQiiJIhA3AwAgAyAQIAMpAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIA8gECAPKQMAhUIwiSIQNwMAIAsgECALKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAHIBAgBykDAIVCAYk3AwAgACAFKQMAIhAgACkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDyAQIA8pAwCFQiCJIhA3AwAgCiAQIAopAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAUgECAFKQMAhUIoiSIQNwMAIAAgECAAKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAPIBAgDykDAIVCMIkiEDcDACAKIBAgCikDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBSAQIAUpAwCFQgGJNwMAIAEgBikDACIQIAEpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAwgECAMKQMAhUIgiSIQNwMAIAsgECALKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAGIBAgBikDAIVCKIkiEDcDACABIBAgASkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgDCAQIAwpAwCFQjCJIhA3AwAgCyAQIAspAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAYgECAGKQMAhUIBiTcDACACIAcpAwAiECACKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACANIBAgDSkDAIVCIIkiEDcDACAIIBAgCCkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgByAQIAcpAwCFQiiJIhA3AwAgAiAQIAIpAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIA0gECANKQMAhUIwiSIQNwMAIAggECAIKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAHIBAgBykDAIVCAYk3AwAgAyAEKQMAIhAgAykDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDiAQIA4pAwCFQiCJIhA3AwAgCSAQIAkpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAQgECAEKQMAhUIoiSIQNwMAIAMgECADKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAOIBAgDikDAIVCMIkiEDcDACAJIBAgCSkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBCAQIAQpAwCFQgGJNwMAC98aAQN/QQAhBEEAIAIpAwAgASkDAIU3A5AIQQAgAikDCCABKQMIhTcDmAhBACACKQMQIAEpAxCFNwOgCEEAIAIpAxggASkDGIU3A6gIQQAgAikDICABKQMghTcDsAhBACACKQMoIAEpAyiFNwO4CEEAIAIpAzAgASkDMIU3A8AIQQAgAikDOCABKQM4hTcDyAhBACACKQNAIAEpA0CFNwPQCEEAIAIpA0ggASkDSIU3A9gIQQAgAikDUCABKQNQhTcD4AhBACACKQNYIAEpA1iFNwPoCEEAIAIpA2AgASkDYIU3A/AIQQAgAikDaCABKQNohTcD+AhBACACKQNwIAEpA3CFNwOACUEAIAIpA3ggASkDeIU3A4gJQQAgAikDgAEgASkDgAGFNwOQCUEAIAIpA4gBIAEpA4gBhTcDmAlBACACKQOQASABKQOQAYU3A6AJQQAgAikDmAEgASkDmAGFNwOoCUEAIAIpA6ABIAEpA6ABhTcDsAlBACACKQOoASABKQOoAYU3A7gJQQAgAikDsAEgASkDsAGFNwPACUEAIAIpA7gBIAEpA7gBhTcDyAlBACACKQPAASABKQPAAYU3A9AJQQAgAikDyAEgASkD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", QA = "e4cdc523", BA = {
997
+ name: uA,
998
+ data: wA,
999
+ hash: QA
1000
+ }, dA = "blake2b", EA = "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", pA = "c6f286e6", yA = {
1001
+ name: dA,
1002
+ data: EA,
1003
+ hash: pA
952
1004
  };
953
- new S();
954
- function ue(e) {
1005
+ new y();
1006
+ function Be(e) {
955
1007
  return !Number.isInteger(e) || e < 8 || e > 512 || e % 8 !== 0 ? new Error("Invalid variant! Valid values: 8, 16, ..., 512") : null;
956
1008
  }
957
- function ft(e, t) {
958
- return e | t << 16;
1009
+ function kA(e, A) {
1010
+ return e | A << 16;
959
1011
  }
960
- function Ie(e = 512, t = null) {
961
- if (ue(e))
962
- return Promise.reject(ue(e));
963
- let A = null, r = e;
964
- if (t !== null) {
965
- if (A = M(t), A.length > 64)
1012
+ function fe(e = 512, A = null) {
1013
+ if (Be(e))
1014
+ return Promise.reject(Be(e));
1015
+ let t = null, i = e;
1016
+ if (A !== null) {
1017
+ if (t = O(A), t.length > 64)
966
1018
  return Promise.reject(new Error("Max key length is 64 bytes"));
967
- r = ft(e, A.length);
1019
+ i = kA(e, t.length);
968
1020
  }
969
- const n = e / 8;
970
- return Se(ut, n).then((i) => {
971
- r > 512 && i.writeMemory(A), i.init(r);
1021
+ const r = e / 8;
1022
+ return Ue(yA, r).then((n) => {
1023
+ i > 512 && n.writeMemory(t), n.init(i);
972
1024
  const o = {
973
- init: r > 512 ? () => (i.writeMemory(A), i.init(r), o) : () => (i.init(r), o),
974
- update: (I) => (i.update(I), o),
1025
+ init: i > 512 ? () => (n.writeMemory(t), n.init(i), o) : () => (n.init(i), o),
1026
+ update: (a) => (n.update(a), o),
975
1027
  // biome-ignore lint/suspicious/noExplicitAny: Conflict with IHasher type
976
- digest: (I) => i.digest(I),
977
- save: () => i.save(),
978
- load: (I) => (i.load(I), o),
1028
+ digest: (a) => n.digest(a),
1029
+ save: () => n.save(),
1030
+ load: (a) => (n.load(a), o),
979
1031
  blockSize: 128,
980
- digestSize: n
1032
+ digestSize: r
981
1033
  };
982
1034
  return o;
983
1035
  });
984
1036
  }
985
- function wt(e, t, A) {
986
- const r = [
987
- `m=${t.memorySize}`,
988
- `t=${t.iterations}`,
989
- `p=${t.parallelism}`
1037
+ function SA(e, A, t) {
1038
+ const i = [
1039
+ `m=${A.memorySize}`,
1040
+ `t=${A.iterations}`,
1041
+ `p=${A.parallelism}`
990
1042
  ].join(",");
991
- return `$argon2${t.hashType}$v=19$${r}$${Ce(e, !1)}$${Ce(A, !1)}`;
1043
+ return `$argon2${A.hashType}$v=19$${i}$${Qe(e, !1)}$${Qe(t, !1)}`;
992
1044
  }
993
- const fe = new DataView(new ArrayBuffer(4));
994
- function J(e) {
995
- return fe.setInt32(0, e, !0), new Uint8Array(fe.buffer);
1045
+ const de = new DataView(new ArrayBuffer(4));
1046
+ function x(e) {
1047
+ return de.setInt32(0, e, !0), new Uint8Array(de.buffer);
996
1048
  }
997
- function re(e, t, A) {
998
- return Y(this, void 0, void 0, function* () {
999
- if (A <= 64) {
1000
- const c = yield Ie(A * 8);
1001
- return c.update(J(A)), c.update(t), c.digest("binary");
1049
+ function ge(e, A, t) {
1050
+ return R(this, void 0, void 0, function* () {
1051
+ if (t <= 64) {
1052
+ const l = yield fe(t * 8);
1053
+ return l.update(x(t)), l.update(A), l.digest("binary");
1002
1054
  }
1003
- const r = Math.ceil(A / 32) - 2, n = new Uint8Array(A);
1004
- e.init(), e.update(J(A)), e.update(t);
1005
- let i = e.digest("binary");
1006
- n.set(i.subarray(0, 32), 0);
1007
- for (let c = 1; c < r; c++)
1008
- e.init(), e.update(i), i = e.digest("binary"), n.set(i.subarray(0, 32), c * 32);
1009
- const o = A - 32 * r;
1010
- let I;
1011
- return o === 64 ? (I = e, I.init()) : I = yield Ie(o * 8), I.update(i), i = I.digest("binary"), n.set(i.subarray(0, o), r * 32), n;
1055
+ const i = Math.ceil(t / 32) - 2, r = new Uint8Array(t);
1056
+ e.init(), e.update(x(t)), e.update(A);
1057
+ let n = e.digest("binary");
1058
+ r.set(n.subarray(0, 32), 0);
1059
+ for (let l = 1; l < i; l++)
1060
+ e.init(), e.update(n), n = e.digest("binary"), r.set(n.subarray(0, 32), l * 32);
1061
+ const o = t - 32 * i;
1062
+ let a;
1063
+ return o === 64 ? (a = e, a.init()) : a = yield fe(o * 8), a.update(n), n = a.digest("binary"), r.set(n.subarray(0, o), i * 32), r;
1012
1064
  });
1013
1065
  }
1014
- function Qt(e) {
1066
+ function DA(e) {
1015
1067
  switch (e) {
1016
1068
  case "d":
1017
1069
  return 0;
@@ -1021,46 +1073,46 @@ function Qt(e) {
1021
1073
  return 2;
1022
1074
  }
1023
1075
  }
1024
- function Bt(e) {
1025
- return Y(this, void 0, void 0, function* () {
1026
- var t;
1027
- const { parallelism: A, iterations: r, hashLength: n } = e, i = M(e.password), o = M(e.salt), I = 19, c = Qt(e.hashType), { memorySize: w } = e, B = M((t = e.secret) !== null && t !== void 0 ? t : ""), [p, f] = yield Promise.all([
1028
- Se(ct, 1024),
1029
- Ie(512)
1076
+ function FA(e) {
1077
+ return R(this, void 0, void 0, function* () {
1078
+ var A;
1079
+ const { parallelism: t, iterations: i, hashLength: r } = e, n = O(e.password), o = O(e.salt), a = 19, l = DA(e.hashType), { memorySize: s } = e, k = O((A = e.secret) !== null && A !== void 0 ? A : ""), [w, B] = yield Promise.all([
1080
+ Ue(BA, 1024),
1081
+ fe(512)
1030
1082
  ]);
1031
- p.setMemorySize(w * 1024 + 1024);
1032
- const Q = new Uint8Array(24), u = new DataView(Q.buffer);
1033
- u.setInt32(0, A, !0), u.setInt32(4, n, !0), u.setInt32(8, w, !0), u.setInt32(12, r, !0), u.setInt32(16, I, !0), u.setInt32(20, c, !0), p.writeMemory(Q, w * 1024), f.init(), f.update(Q), f.update(J(i.length)), f.update(i), f.update(J(o.length)), f.update(o), f.update(J(B.length)), f.update(B), f.update(J(0));
1034
- const a = Math.floor(w / (A * 4)) * 4, g = new Uint8Array(72), C = f.digest("binary");
1035
- g.set(C);
1036
- for (let y = 0; y < A; y++) {
1037
- g.set(J(0), 64), g.set(J(y), 68);
1038
- let l = y * a, s = yield re(f, g, 1024);
1039
- p.writeMemory(s, l * 1024), l += 1, g.set(J(1), 64), s = yield re(f, g, 1024), p.writeMemory(s, l * 1024);
1083
+ w.setMemorySize(s * 1024 + 1024);
1084
+ const b = new Uint8Array(24), F = new DataView(b.buffer);
1085
+ F.setInt32(0, t, !0), F.setInt32(4, r, !0), F.setInt32(8, s, !0), F.setInt32(12, i, !0), F.setInt32(16, a, !0), F.setInt32(20, l, !0), w.writeMemory(b, s * 1024), B.init(), B.update(b), B.update(x(n.length)), B.update(n), B.update(x(o.length)), B.update(o), B.update(x(k.length)), B.update(k), B.update(x(0));
1086
+ const f = Math.floor(s / (t * 4)) * 4, u = new Uint8Array(72), m = B.digest("binary");
1087
+ u.set(m);
1088
+ for (let g = 0; g < t; g++) {
1089
+ u.set(x(0), 64), u.set(x(g), 68);
1090
+ let I = g * f, C = yield ge(B, u, 1024);
1091
+ w.writeMemory(C, I * 1024), I += 1, u.set(x(1), 64), C = yield ge(B, u, 1024), w.writeMemory(C, I * 1024);
1040
1092
  }
1041
- const d = new Uint8Array(1024);
1042
- ke(d, p.calculate(new Uint8Array([]), w));
1043
- const D = yield re(f, d, n);
1093
+ const p = new Uint8Array(1024);
1094
+ Fe(p, w.calculate(new Uint8Array([]), s));
1095
+ const h = yield ge(B, p, r);
1044
1096
  if (e.outputType === "hex") {
1045
- const y = new Uint8Array(n * 2);
1046
- return se(y, D, n);
1097
+ const g = new Uint8Array(r * 2);
1098
+ return he(g, h, r);
1047
1099
  }
1048
- return e.outputType === "encoded" ? wt(o, e, D) : D;
1100
+ return e.outputType === "encoded" ? SA(o, e, h) : h;
1049
1101
  });
1050
1102
  }
1051
- const dt = (e) => {
1052
- var t;
1103
+ const UA = (e) => {
1104
+ var A;
1053
1105
  if (!e || typeof e != "object")
1054
1106
  throw new Error("Invalid options parameter. It requires an object.");
1055
1107
  if (!e.password)
1056
1108
  throw new Error("Password must be specified");
1057
- if (e.password = M(e.password), e.password.length < 1)
1109
+ if (e.password = O(e.password), e.password.length < 1)
1058
1110
  throw new Error("Password must be specified");
1059
1111
  if (!e.salt)
1060
1112
  throw new Error("Salt must be specified");
1061
- if (e.salt = M(e.salt), e.salt.length < 8)
1113
+ if (e.salt = O(e.salt), e.salt.length < 8)
1062
1114
  throw new Error("Salt should be at least 8 bytes long");
1063
- if (e.secret = M((t = e.secret) !== null && t !== void 0 ? t : ""), !Number.isInteger(e.iterations) || e.iterations < 1)
1115
+ if (e.secret = O((A = e.secret) !== null && A !== void 0 ? A : ""), !Number.isInteger(e.iterations) || e.iterations < 1)
1064
1116
  throw new Error("Iterations should be a positive number");
1065
1117
  if (!Number.isInteger(e.parallelism) || e.parallelism < 1)
1066
1118
  throw new Error("Parallelism should be a positive number");
@@ -1073,50 +1125,50 @@ const dt = (e) => {
1073
1125
  if (e.outputType === void 0 && (e.outputType = "hex"), !["hex", "binary", "encoded"].includes(e.outputType))
1074
1126
  throw new Error(`Insupported output type ${e.outputType}. Valid values: ['hex', 'binary', 'encoded']`);
1075
1127
  };
1076
- function De(e) {
1077
- return Y(this, void 0, void 0, function* () {
1078
- return dt(e), Bt(Object.assign(Object.assign({}, e), { hashType: "id" }));
1128
+ function me(e) {
1129
+ return R(this, void 0, void 0, function* () {
1130
+ return UA(e), FA(Object.assign(Object.assign({}, e), { hashType: "id" }));
1079
1131
  });
1080
1132
  }
1081
- new S();
1082
- new S();
1083
- new S();
1084
- new S();
1085
- new S();
1086
- new S();
1087
- new S();
1088
- new S();
1089
- new S();
1090
- new S();
1091
- new S();
1092
- new S();
1093
- new S();
1094
- new S();
1095
- new S();
1096
- new S();
1097
- new S();
1098
- new S();
1099
- new S();
1100
- new S();
1101
- const Et = 32;
1102
- async function AA(e, t, A = Oe) {
1103
- pt(A);
1133
+ new y();
1134
+ new y();
1135
+ new y();
1136
+ new y();
1137
+ new y();
1138
+ new y();
1139
+ new y();
1140
+ new y();
1141
+ new y();
1142
+ new y();
1143
+ new y();
1144
+ new y();
1145
+ new y();
1146
+ new y();
1147
+ new y();
1148
+ new y();
1149
+ new y();
1150
+ new y();
1151
+ new y();
1152
+ new y();
1153
+ const mA = 32;
1154
+ async function it(e, A, t = Xe) {
1155
+ bA(t);
1104
1156
  try {
1105
- const r = await De({
1157
+ const i = await me({
1106
1158
  password: e,
1107
- salt: t,
1108
- iterations: A.tCost,
1109
- memorySize: A.mCost,
1110
- parallelism: A.pCost,
1111
- hashLength: Et,
1159
+ salt: A,
1160
+ iterations: t.tCost,
1161
+ memorySize: t.mCost,
1162
+ parallelism: t.pCost,
1163
+ hashLength: mA,
1112
1164
  outputType: "binary"
1113
1165
  });
1114
- return Ee(r);
1166
+ return ke(i);
1115
1167
  } catch {
1116
1168
  throw new Error("Key derivation failed");
1117
1169
  }
1118
1170
  }
1119
- function pt(e) {
1171
+ function bA(e) {
1120
1172
  if (e.mCost < 16384)
1121
1173
  throw new Error("KDF memory cost too low (minimum 16 MiB)");
1122
1174
  if (e.mCost > 1048576)
@@ -1130,9 +1182,9 @@ function pt(e) {
1130
1182
  if (e.pCost > 4)
1131
1183
  throw new Error("KDF parallelism too high (maximum 4)");
1132
1184
  }
1133
- async function yt() {
1185
+ async function GA() {
1134
1186
  try {
1135
- const e = await De({
1187
+ const e = await me({
1136
1188
  password: "test",
1137
1189
  salt: new Uint8Array(16),
1138
1190
  iterations: 1,
@@ -1142,49 +1194,47 @@ async function yt() {
1142
1194
  hashLength: 32,
1143
1195
  outputType: "binary"
1144
1196
  });
1145
- return e.length !== 32 ? !1 : (pe(e), !0);
1197
+ return e.length !== 32 ? !1 : (Se(e), !0);
1146
1198
  } catch {
1147
1199
  return !1;
1148
1200
  }
1149
1201
  }
1150
- function kt(e) {
1202
+ function KA(e) {
1151
1203
  return e === "localhost" || e === "127.0.0.1" || e.endsWith(".localhost");
1152
1204
  }
1153
- function Fe(e) {
1205
+ function be(e) {
1154
1206
  if (typeof window > "u")
1155
1207
  return;
1156
- const t = window.location.hostname;
1157
- if (!kt(t)) {
1158
- console.warn(
1159
- "[Cedros] SEC-004: WebAuthn RP domain validation not configured. In production, set wallet.allowedRpDomains to prevent passkey phishing."
1208
+ const A = window.location.hostname;
1209
+ if (!KA(A))
1210
+ throw new Error(
1211
+ "[Cedros] WebAuthn RP domain validation is not configured. Set wallet.allowedRpDomains to a non-empty list of allowed domains."
1160
1212
  );
1161
- return;
1162
- }
1163
1213
  }
1164
- function _() {
1214
+ function Ae() {
1165
1215
  return typeof window < "u" && typeof window.PublicKeyCredential < "u" && typeof navigator.credentials < "u";
1166
1216
  }
1167
- async function St() {
1168
- if (!_())
1217
+ async function HA() {
1218
+ if (!Ae())
1169
1219
  return !1;
1170
1220
  try {
1171
1221
  if (!await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable())
1172
1222
  return !1;
1173
1223
  if ("getClientCapabilities" in PublicKeyCredential && typeof PublicKeyCredential.getClientCapabilities == "function") {
1174
- const t = await PublicKeyCredential.getClientCapabilities();
1175
- if (t && "prf" in t)
1176
- return t.prf === !0;
1224
+ const A = await PublicKeyCredential.getClientCapabilities();
1225
+ if (A && "prf" in A)
1226
+ return A.prf === !0;
1177
1227
  }
1178
1228
  return !0;
1179
1229
  } catch {
1180
1230
  return !1;
1181
1231
  }
1182
1232
  }
1183
- async function rA(e, t, A, r, n) {
1184
- if (!_())
1233
+ async function rt(e, A, t, i, r) {
1234
+ if (!Ae())
1185
1235
  throw new Error("WebAuthn is not available in this browser");
1186
- Fe();
1187
- const i = r ?? qe(), o = await navigator.credentials.create({
1236
+ be();
1237
+ const n = i ?? rA(), o = await navigator.credentials.create({
1188
1238
  publicKey: {
1189
1239
  challenge: crypto.getRandomValues(new Uint8Array(32)),
1190
1240
  rp: {
@@ -1192,9 +1242,9 @@ async function rA(e, t, A, r, n) {
1192
1242
  id: window.location.hostname
1193
1243
  },
1194
1244
  user: {
1195
- id: x(e),
1196
- name: t,
1197
- displayName: A
1245
+ id: T(e),
1246
+ name: A,
1247
+ displayName: t
1198
1248
  },
1199
1249
  pubKeyCredParams: [
1200
1250
  { type: "public-key", alg: -7 },
@@ -1212,7 +1262,7 @@ async function rA(e, t, A, r, n) {
1212
1262
  extensions: {
1213
1263
  prf: {
1214
1264
  eval: {
1215
- first: i
1265
+ first: n
1216
1266
  }
1217
1267
  }
1218
1268
  }
@@ -1220,30 +1270,30 @@ async function rA(e, t, A, r, n) {
1220
1270
  });
1221
1271
  if (!o)
1222
1272
  throw new Error("Passkey registration was cancelled");
1223
- const I = o.getClientExtensionResults();
1224
- if (!I.prf?.enabled || !I.prf?.results?.first)
1273
+ const a = o.getClientExtensionResults();
1274
+ if (!a.prf?.enabled || !a.prf?.results?.first)
1225
1275
  throw new Error(
1226
1276
  "PRF extension is not supported by this authenticator. Please use a device with a compatible platform authenticator."
1227
1277
  );
1228
- const c = I.prf?.results?.first;
1229
- if (!c)
1278
+ const l = a.prf?.results?.first;
1279
+ if (!l)
1230
1280
  throw new Error("PRF extension did not return a result");
1231
- const w = new Uint8Array(c);
1232
- if (w.length !== 32)
1281
+ const s = new Uint8Array(l);
1282
+ if (s.length !== 32)
1233
1283
  throw new Error(
1234
- `Unexpected PRF output length: expected 32 bytes, got ${w.length}. The authenticator may not be compatible.`
1284
+ `Unexpected PRF output length: expected 32 bytes, got ${s.length}. The authenticator may not be compatible.`
1235
1285
  );
1236
1286
  return {
1237
- credentialId: Z(new Uint8Array(o.rawId)),
1238
- prfSalt: Z(i),
1239
- prfOutput: w
1287
+ credentialId: z(new Uint8Array(o.rawId)),
1288
+ prfSalt: z(n),
1289
+ prfOutput: s
1240
1290
  };
1241
1291
  }
1242
- async function iA(e, t) {
1243
- if (!_())
1292
+ async function nt(e, A) {
1293
+ if (!Ae())
1244
1294
  throw new Error("WebAuthn is not available in this browser");
1245
- Fe();
1246
- const A = ze(e), r = await navigator.credentials.get({
1295
+ be();
1296
+ const t = sA(e), i = await navigator.credentials.get({
1247
1297
  publicKey: {
1248
1298
  challenge: crypto.getRandomValues(new Uint8Array(32)),
1249
1299
  rpId: window.location.hostname,
@@ -1254,107 +1304,110 @@ async function iA(e, t) {
1254
1304
  extensions: {
1255
1305
  prf: {
1256
1306
  eval: {
1257
- first: A
1307
+ first: t
1258
1308
  }
1259
1309
  }
1260
1310
  }
1261
1311
  }
1262
1312
  });
1263
- if (!r)
1264
- throw new Error("Passkey authentication was cancelled");
1265
- const i = r.getClientExtensionResults().prf?.results?.first;
1266
1313
  if (!i)
1314
+ throw new Error("Passkey authentication was cancelled");
1315
+ const n = i.getClientExtensionResults().prf?.results?.first;
1316
+ if (!n)
1267
1317
  throw new Error("PRF extension did not return a result during authentication");
1268
- return {
1269
- prfOutput: new Uint8Array(i)
1270
- };
1271
- }
1272
- async function Dt() {
1273
- const [e, t, A, r, n, i, o] = await Promise.all([
1274
- Ft(),
1275
- Ut(),
1276
- tt(),
1277
- mt(),
1278
- Promise.resolve(_()),
1279
- St(),
1280
- yt()
1318
+ const o = new Uint8Array(n);
1319
+ if (o.length !== 32)
1320
+ throw new Error(
1321
+ `Unexpected PRF output length: expected 32 bytes, got ${o.length}. The authenticator may not be compatible.`
1322
+ );
1323
+ return { prfOutput: o };
1324
+ }
1325
+ async function JA() {
1326
+ const [e, A, t, i, r, n, o] = await Promise.all([
1327
+ VA(),
1328
+ MA(),
1329
+ aA(),
1330
+ PA(),
1331
+ Promise.resolve(Ae()),
1332
+ HA(),
1333
+ GA()
1281
1334
  ]);
1282
1335
  return {
1283
1336
  webCrypto: e,
1284
- aesGcm: t,
1285
- hkdf: A,
1286
- ed25519: r,
1287
- webAuthn: n,
1288
- webAuthnPrf: i,
1337
+ aesGcm: A,
1338
+ hkdf: t,
1339
+ ed25519: i,
1340
+ webAuthn: r,
1341
+ webAuthnPrf: n,
1289
1342
  argon2: o,
1290
- allSupported: e && t && A && n && i && o
1343
+ allSupported: e && A && t && r && n && o
1291
1344
  };
1292
1345
  }
1293
- async function Ft() {
1346
+ async function VA() {
1294
1347
  try {
1295
1348
  return typeof crypto < "u" && typeof crypto.subtle < "u" && typeof crypto.getRandomValues == "function";
1296
1349
  } catch {
1297
1350
  return !1;
1298
1351
  }
1299
1352
  }
1300
- async function Ut() {
1353
+ async function MA() {
1301
1354
  try {
1302
1355
  const e = await crypto.subtle.generateKey({ name: "AES-GCM", length: 256 }, !1, [
1303
1356
  "encrypt",
1304
1357
  "decrypt"
1305
- ]), t = new Uint8Array([1, 2, 3, 4]), A = crypto.getRandomValues(new Uint8Array(12)), r = await crypto.subtle.encrypt({ name: "AES-GCM", iv: A }, e, t), n = await crypto.subtle.decrypt({ name: "AES-GCM", iv: A }, e, r), i = new Uint8Array(n);
1306
- return i.length === t.length && i.every((o, I) => o === t[I]);
1358
+ ]), A = new Uint8Array([1, 2, 3, 4]), t = crypto.getRandomValues(new Uint8Array(12)), i = await crypto.subtle.encrypt({ name: "AES-GCM", iv: t }, e, A), r = await crypto.subtle.decrypt({ name: "AES-GCM", iv: t }, e, i), n = new Uint8Array(r);
1359
+ return n.length === A.length && n.every((o, a) => o === A[a]);
1307
1360
  } catch {
1308
1361
  return !1;
1309
1362
  }
1310
1363
  }
1311
- async function mt() {
1364
+ async function PA() {
1312
1365
  try {
1313
1366
  return await crypto.subtle.generateKey("Ed25519", !1, ["sign", "verify"]), !0;
1314
1367
  } catch {
1315
1368
  return !1;
1316
1369
  }
1317
1370
  }
1318
- function nA(e) {
1371
+ function ot(e) {
1319
1372
  if (e.allSupported)
1320
1373
  return null;
1321
- const t = [];
1322
- return e.webCrypto || t.push("Web Crypto API"), e.aesGcm || t.push("AES-GCM encryption"), e.hkdf || t.push("HKDF key derivation"), e.webAuthn || t.push("WebAuthn/Passkeys"), e.webAuthnPrf || t.push("WebAuthn PRF extension (requires platform authenticator)"), e.argon2 || t.push("Argon2 password hashing"), t.length === 0 ? null : `Your browser or device is missing required features: ${t.join(", ")}. Please use a modern browser with a platform authenticator (e.g., Touch ID, Face ID, Windows Hello).`;
1374
+ const A = [];
1375
+ return e.webCrypto || A.push("Web Crypto API"), e.aesGcm || A.push("AES-GCM encryption"), e.hkdf || A.push("HKDF key derivation"), e.webAuthn || A.push("WebAuthn/Passkeys"), e.webAuthnPrf || A.push("WebAuthn PRF extension (requires platform authenticator)"), e.argon2 || A.push("Argon2 password hashing"), A.length === 0 ? null : `Your browser or device is missing required features: ${A.join(", ")}. Please use a modern browser with a platform authenticator (e.g., Touch ID, Face ID, Windows Hello).`;
1323
1376
  }
1324
- function oA() {
1325
- const e = typeof navigator < "u" ? navigator.userAgent : "", t = e.match(/Chrome\/(\d+)/);
1326
- if (t) {
1327
- const i = parseInt(t[1], 10);
1377
+ function st() {
1378
+ const e = typeof navigator < "u" ? navigator.userAgent : "", A = e.match(/Chrome\/(\d+)/);
1379
+ if (A) {
1380
+ const n = parseInt(A[1], 10);
1328
1381
  return {
1329
1382
  browser: "Chrome",
1330
- version: t[1],
1331
- likelySupported: i >= 116
1383
+ version: A[1],
1384
+ likelySupported: n >= 116
1332
1385
  };
1333
1386
  }
1334
- const A = e.match(/Version\/(\d+)/);
1335
- if (A && e.includes("Safari") && !e.includes("Chrome")) {
1336
- const i = parseInt(A[1], 10);
1387
+ const t = e.match(/Version\/(\d+)/);
1388
+ if (t && e.includes("Safari") && !e.includes("Chrome")) {
1389
+ const n = parseInt(t[1], 10);
1337
1390
  return {
1338
1391
  browser: "Safari",
1339
- version: A[1],
1340
- likelySupported: i >= 17
1392
+ version: t[1],
1393
+ likelySupported: n >= 17
1341
1394
  };
1342
1395
  }
1343
- const r = e.match(/Firefox\/(\d+)/);
1344
- if (r)
1396
+ const i = e.match(/Firefox\/(\d+)/);
1397
+ if (i)
1345
1398
  return {
1346
1399
  browser: "Firefox",
1347
- version: r[1],
1400
+ version: i[1],
1348
1401
  likelySupported: !1
1349
1402
  // Firefox PRF support is limited
1350
1403
  };
1351
- const n = e.match(/Edg\/(\d+)/);
1352
- if (n) {
1353
- const i = parseInt(n[1], 10);
1404
+ const r = e.match(/Edg\/(\d+)/);
1405
+ if (r) {
1406
+ const n = parseInt(r[1], 10);
1354
1407
  return {
1355
1408
  browser: "Edge",
1356
- version: n[1],
1357
- likelySupported: i >= 116
1409
+ version: r[1],
1410
+ likelySupported: n >= 116
1358
1411
  };
1359
1412
  }
1360
1413
  return {
@@ -1363,172 +1416,13 @@ function oA() {
1363
1416
  likelySupported: !1
1364
1417
  };
1365
1418
  }
1366
- let j = null;
1367
- async function bt(e = !1) {
1368
- return !e && j !== null || (j = await Dt()), j;
1419
+ let $ = null, le = null;
1420
+ const NA = 6e4;
1421
+ async function YA(e = !1) {
1422
+ const A = Date.now(), t = le === null || A - le > NA;
1423
+ return !e && !(typeof window > "u") && !t && $ !== null || ($ = await JA(), le = Date.now()), $;
1369
1424
  }
1370
- const Gt = 1e4, Kt = 2;
1371
- function Ht(e, t) {
1372
- return {
1373
- code: e.code || "SERVER_ERROR",
1374
- message: e.message || t,
1375
- details: e.details
1376
- };
1377
- }
1378
- function Jt() {
1379
- return {
1380
- code: "NETWORK_ERROR",
1381
- message: "Unable to connect to server"
1382
- };
1383
- }
1384
- async function Mt(e, t, A) {
1385
- const r = new AbortController(), n = setTimeout(() => r.abort(), A);
1386
- try {
1387
- return await fetch(e, {
1388
- ...t,
1389
- signal: r.signal
1390
- });
1391
- } finally {
1392
- clearTimeout(n);
1393
- }
1394
- }
1395
- function Nt(e) {
1396
- if (e instanceof Error) {
1397
- if (e.retryable) return !0;
1398
- if (e.name === "AbortError") return !1;
1399
- if (e.message.includes("fetch")) return !0;
1400
- }
1401
- return !1;
1402
- }
1403
- function Vt(e) {
1404
- return new Promise((t) => setTimeout(t, e));
1405
- }
1406
- class Ot {
1407
- baseUrl;
1408
- timeoutMs;
1409
- retryAttempts;
1410
- getAccessToken;
1411
- constructor(t) {
1412
- this.baseUrl = t.baseUrl, this.timeoutMs = t.timeoutMs ?? Gt, this.retryAttempts = t.retryAttempts ?? Kt, this.getAccessToken = t.getAccessToken;
1413
- }
1414
- /**
1415
- * Make an API request with timeout and optional retry
1416
- */
1417
- async request(t) {
1418
- const { method: A, path: r, body: n, credentials: i = "include", skipRetry: o = !1, validator: I } = t, c = `${this.baseUrl}${r}`, B = o || !(A === "GET" || A === "HEAD" || A === "PUT" || A === "DELETE") ? 1 : this.retryAttempts + 1, p = {};
1419
- n !== void 0 && (p["Content-Type"] = "application/json");
1420
- const f = this.getAccessToken?.();
1421
- f && (p.Authorization = `Bearer ${f}`);
1422
- const Q = ne();
1423
- Q && (p["X-CSRF-Token"] = Q);
1424
- let u;
1425
- for (let h = 1; h <= B; h++)
1426
- try {
1427
- const a = await Mt(
1428
- c,
1429
- {
1430
- method: A,
1431
- headers: p,
1432
- credentials: i,
1433
- body: n !== void 0 ? JSON.stringify(n) : void 0
1434
- },
1435
- this.timeoutMs
1436
- ), g = a.headers.get("content-type") || "";
1437
- let C = {};
1438
- if (g.includes("application/json")) {
1439
- if (a.status !== 204)
1440
- try {
1441
- C = await a.json();
1442
- } catch (d) {
1443
- const D = d instanceof Error ? d.message : "parse failed";
1444
- throw new Error(`Invalid JSON response: ${D}`);
1445
- }
1446
- } else {
1447
- const d = await a.text();
1448
- if (d) {
1449
- const D = d.length > 200 ? d.slice(0, 200) + "..." : d;
1450
- C = {
1451
- message: g.includes("text/html") || d.trimStart().startsWith("<") ? `Unexpected HTML response (${a.status}). The server may be unavailable.` : D
1452
- };
1453
- }
1454
- }
1455
- if (!a.ok) {
1456
- if (a.status >= 400 && a.status < 500)
1457
- throw { isApiError: !0, data: C, status: a.status };
1458
- const d = new Error(`Server error: ${a.status}`);
1459
- throw d.retryable = !0, d;
1460
- }
1461
- if (I)
1462
- try {
1463
- return I(C);
1464
- } catch (d) {
1465
- throw new Error(
1466
- `Response validation failed: ${d instanceof Error ? d.message : "Invalid response shape"}`
1467
- );
1468
- }
1469
- return C;
1470
- } catch (a) {
1471
- if (u = a, typeof a == "object" && a !== null && "isApiError" in a)
1472
- throw a;
1473
- if (h < B && Nt(a)) {
1474
- await Vt(100 * Math.pow(2, h - 1));
1475
- continue;
1476
- }
1477
- throw a;
1478
- }
1479
- throw u;
1480
- }
1481
- /**
1482
- * POST request helper
1483
- */
1484
- async post(t, A, r) {
1485
- return this.request({ method: "POST", path: t, body: A, ...r });
1486
- }
1487
- /**
1488
- * GET request helper
1489
- */
1490
- async get(t, A) {
1491
- return this.request({ method: "GET", path: t, ...A });
1492
- }
1493
- /**
1494
- * PATCH request helper
1495
- */
1496
- async patch(t, A, r) {
1497
- return this.request({ method: "PATCH", path: t, body: A, ...r });
1498
- }
1499
- /**
1500
- * DELETE request helper
1501
- */
1502
- async delete(t, A) {
1503
- return this.request({ method: "DELETE", path: t, ...A });
1504
- }
1505
- }
1506
- function Pt(e) {
1507
- return typeof e == "object" && e !== null && "isApiError" in e;
1508
- }
1509
- function xt(e) {
1510
- return typeof e == "object" && e !== null && "code" in e && "message" in e;
1511
- }
1512
- function H(e, t) {
1513
- if (xt(e))
1514
- return e;
1515
- if (Pt(e))
1516
- return Ht(e.data, t);
1517
- if (e instanceof Error) {
1518
- if (e.name === "AbortError")
1519
- return {
1520
- code: "NETWORK_ERROR",
1521
- message: "Request timed out"
1522
- };
1523
- if (e.message.startsWith("Server error:") || e.message.startsWith("Invalid JSON response"))
1524
- return {
1525
- code: "SERVER_ERROR",
1526
- message: t
1527
- };
1528
- }
1529
- return Jt();
1530
- }
1531
- function Yt(e) {
1425
+ function xA(e) {
1532
1426
  switch (e.type) {
1533
1427
  case "password":
1534
1428
  return { password: e.password };
@@ -1536,160 +1430,160 @@ function Yt(e) {
1536
1430
  return { prfOutput: e.prfOutput };
1537
1431
  }
1538
1432
  }
1539
- function vt() {
1540
- const e = de(), [t, A] = U(!1), [r, n] = U(null), i = O(() => e ? new Ot({
1541
- baseUrl: e.config.serverUrl,
1542
- timeoutMs: e.config.requestTimeout,
1543
- retryAttempts: e.config.retryAttempts,
1544
- getAccessToken: e._internal?.getAccessToken
1545
- }) : null, [e]), o = k(async () => {
1546
- if (!i)
1433
+ function OA() {
1434
+ const e = pe(), [A, t] = G(!1), [i, r] = G(null), n = e?.config.serverUrl, o = e?.config.requestTimeout, a = e?.config.retryAttempts, l = e?._internal?.getAccessToken, s = V(() => e ? new Ee({
1435
+ baseUrl: n,
1436
+ timeoutMs: o,
1437
+ retryAttempts: a,
1438
+ getAccessToken: l
1439
+ }) : null, [e, n, o, a, l]), k = d(async () => {
1440
+ if (!s)
1547
1441
  throw new Error("useWalletMaterial must be used within a CedrosLoginProvider");
1548
- A(!0), n(null);
1442
+ t(!0), r(null);
1549
1443
  try {
1550
- return await i.get("/wallet/status");
1551
- } catch (a) {
1552
- const g = H(a, "Failed to fetch wallet status");
1553
- throw n(g.message), g;
1444
+ return await s.get("/wallet/status");
1445
+ } catch (h) {
1446
+ const g = Y(h, "Failed to fetch wallet status");
1447
+ throw r(g.message), g;
1554
1448
  } finally {
1555
- A(!1);
1449
+ t(!1);
1556
1450
  }
1557
- }, [i]), I = k(async () => {
1558
- if (!i)
1451
+ }, [s]), w = d(async () => {
1452
+ if (!s)
1559
1453
  throw new Error("useWalletMaterial must be used within a CedrosLoginProvider");
1560
- A(!0), n(null);
1454
+ t(!0), r(null);
1561
1455
  try {
1562
- return await i.get("/wallet/material");
1563
- } catch (a) {
1564
- const g = H(a, "Failed to fetch wallet material");
1456
+ return await s.get("/wallet/material");
1457
+ } catch (h) {
1458
+ const g = Y(h, "Failed to fetch wallet material");
1565
1459
  if (g.code === "NOT_FOUND")
1566
1460
  return null;
1567
- throw n(g.message), g;
1461
+ throw r(g.message), g;
1568
1462
  } finally {
1569
- A(!1);
1463
+ t(!1);
1570
1464
  }
1571
- }, [i]), c = k(
1572
- async (a) => {
1573
- if (!i)
1465
+ }, [s]), B = d(
1466
+ async (h) => {
1467
+ if (!s)
1574
1468
  throw new Error("useWalletMaterial must be used within a CedrosLoginProvider");
1575
- A(!0), n(null);
1469
+ t(!0), r(null);
1576
1470
  try {
1577
- await i.post("/wallet/enroll", a);
1471
+ await s.post("/wallet/enroll", h);
1578
1472
  } catch (g) {
1579
- const C = H(g, "Failed to enroll wallet");
1580
- throw n(C.message), C;
1473
+ const I = Y(g, "Failed to enroll wallet");
1474
+ throw r(I.message), I;
1581
1475
  } finally {
1582
- A(!1);
1476
+ t(!1);
1583
1477
  }
1584
1478
  },
1585
- [i]
1586
- ), w = k(
1587
- async (a) => {
1588
- if (!i)
1479
+ [s]
1480
+ ), b = d(
1481
+ async (h) => {
1482
+ if (!s)
1589
1483
  throw new Error("useWalletMaterial must be used within a CedrosLoginProvider");
1590
- A(!0), n(null);
1484
+ t(!0), r(null);
1591
1485
  try {
1592
- await i.post("/wallet/recover", a);
1486
+ await s.post("/wallet/recover", h);
1593
1487
  } catch (g) {
1594
- const C = H(g, "Failed to recover wallet");
1595
- throw n(C.message), C;
1488
+ const I = Y(g, "Failed to recover wallet");
1489
+ throw r(I.message), I;
1596
1490
  } finally {
1597
- A(!1);
1491
+ t(!1);
1598
1492
  }
1599
1493
  },
1600
- [i]
1601
- ), B = k(
1602
- async (a) => {
1603
- if (!i)
1494
+ [s]
1495
+ ), F = d(
1496
+ async (h) => {
1497
+ if (!s)
1604
1498
  throw new Error("useWalletMaterial must be used within a CedrosLoginProvider");
1605
- A(!0), n(null);
1499
+ t(!0), r(null);
1606
1500
  try {
1607
- return await i.post("/wallet/sign", a);
1501
+ return await s.post("/wallet/sign", h);
1608
1502
  } catch (g) {
1609
- const C = H(g, "Failed to sign transaction");
1610
- throw n(C.message), C;
1503
+ const I = Y(g, "Failed to sign transaction");
1504
+ throw r(I.message), I;
1611
1505
  } finally {
1612
- A(!1);
1506
+ t(!1);
1613
1507
  }
1614
1508
  },
1615
- [i]
1616
- ), p = k(
1617
- async (a) => {
1618
- if (!i)
1509
+ [s]
1510
+ ), Q = d(
1511
+ async (h) => {
1512
+ if (!s)
1619
1513
  throw new Error("useWalletMaterial must be used within a CedrosLoginProvider");
1620
- A(!0), n(null);
1514
+ t(!0), r(null);
1621
1515
  try {
1622
- await i.post("/wallet/rotate-user-secret", a);
1516
+ await s.post("/wallet/rotate-user-secret", h);
1623
1517
  } catch (g) {
1624
- const C = H(g, "Failed to rotate user secret");
1625
- throw n(C.message), C;
1518
+ const I = Y(g, "Failed to rotate user secret");
1519
+ throw r(I.message), I;
1626
1520
  } finally {
1627
- A(!1);
1521
+ t(!1);
1628
1522
  }
1629
1523
  },
1630
- [i]
1631
- ), f = k(
1632
- async (a) => {
1633
- if (!i)
1524
+ [s]
1525
+ ), f = d(
1526
+ async (h) => {
1527
+ if (!s)
1634
1528
  throw new Error("useWalletMaterial must be used within a CedrosLoginProvider");
1635
- A(!0), n(null);
1529
+ t(!0), r(null);
1636
1530
  try {
1637
- return await i.post(
1531
+ return await s.post(
1638
1532
  "/wallet/unlock",
1639
- Yt(a)
1533
+ xA(h)
1640
1534
  );
1641
1535
  } catch (g) {
1642
- const C = H(g, "Failed to unlock wallet");
1643
- throw n(C.message), C;
1536
+ const I = Y(g, "Failed to unlock wallet");
1537
+ throw r(I.message), I;
1644
1538
  } finally {
1645
- A(!1);
1539
+ t(!1);
1646
1540
  }
1647
1541
  },
1648
- [i]
1649
- ), Q = k(async () => {
1650
- if (!i)
1542
+ [s]
1543
+ ), u = d(async () => {
1544
+ if (!s)
1651
1545
  throw new Error("useWalletMaterial must be used within a CedrosLoginProvider");
1652
- A(!0), n(null);
1546
+ t(!0), r(null);
1653
1547
  try {
1654
- await i.post("/wallet/lock", {});
1655
- } catch (a) {
1656
- const g = H(a, "Failed to lock wallet");
1657
- throw n(g.message), g;
1548
+ await s.post("/wallet/lock", {});
1549
+ } catch (h) {
1550
+ const g = Y(h, "Failed to lock wallet");
1551
+ throw r(g.message), g;
1658
1552
  } finally {
1659
- A(!1);
1553
+ t(!1);
1660
1554
  }
1661
- }, [i]), u = k(
1662
- async (a) => {
1663
- if (!i)
1555
+ }, [s]), m = d(
1556
+ async (h) => {
1557
+ if (!s)
1664
1558
  throw new Error("useWalletMaterial must be used within a CedrosLoginProvider");
1665
- A(!0), n(null);
1559
+ t(!0), r(null);
1666
1560
  try {
1667
- return await i.post("/wallet/share-b", a);
1561
+ return await s.post("/wallet/share-b", h);
1668
1562
  } catch (g) {
1669
- const C = H(g, "Failed to get Share B for recovery");
1670
- throw n(C.message), C;
1563
+ const I = Y(g, "Failed to get Share B for recovery");
1564
+ throw r(I.message), I;
1671
1565
  } finally {
1672
- A(!1);
1566
+ t(!1);
1673
1567
  }
1674
1568
  },
1675
- [i]
1676
- ), h = k(() => n(null), []);
1569
+ [s]
1570
+ ), p = d(() => r(null), []);
1677
1571
  return {
1678
- getStatus: o,
1679
- getMaterial: I,
1680
- enroll: c,
1681
- recover: w,
1682
- signTransaction: B,
1683
- rotateUserSecret: p,
1572
+ getStatus: k,
1573
+ getMaterial: w,
1574
+ enroll: B,
1575
+ recover: b,
1576
+ signTransaction: F,
1577
+ rotateUserSecret: Q,
1684
1578
  unlock: f,
1685
- lock: Q,
1686
- getShareBForRecovery: u,
1687
- isLoading: t,
1688
- error: r,
1689
- clearError: h
1579
+ lock: u,
1580
+ getShareBForRecovery: m,
1581
+ isLoading: A,
1582
+ error: i,
1583
+ clearError: p
1690
1584
  };
1691
1585
  }
1692
- const Tt = {
1586
+ const vA = {
1693
1587
  status: "not_enrolled",
1694
1588
  solanaPubkey: null,
1695
1589
  authMethod: null,
@@ -1703,341 +1597,211 @@ const Tt = {
1703
1597
  clearError: () => {
1704
1598
  }
1705
1599
  };
1706
- function Rt() {
1707
- const t = de() !== null, [A, r] = U("loading"), [n, i] = U(null), [o, I] = U(null), [c, w] = U(!1), [B, p] = U(!1), [f, Q] = U(null), [u, h] = U(null), { getStatus: a, isLoading: g } = vt(), C = P(!1);
1708
- K(() => {
1709
- if (!t) return;
1710
- let y = !1;
1600
+ function TA() {
1601
+ const A = pe() !== null, [t, i] = G("loading"), [r, n] = G(null), [o, a] = G(null), [l, s] = G(!1), [k, w] = G(!1), [B, b] = G(null), [F, Q] = G(null), { getStatus: f, isLoading: u } = OA(), m = P(!1);
1602
+ N(() => {
1603
+ if (!A) return;
1604
+ let g = !1;
1711
1605
  return (async () => {
1712
1606
  try {
1713
- const s = await bt();
1714
- if (y) return;
1715
- Q(s), s.allSupported || (r("error"), h(
1607
+ const C = await YA();
1608
+ if (g) return;
1609
+ b(C), C.allSupported || (i("error"), Q(
1716
1610
  "Your browser or device does not support all required features. Please use a modern browser with a platform authenticator."
1717
1611
  ));
1718
1612
  } catch {
1719
- if (y) return;
1720
- Q(null), r("error"), h("Failed to check crypto capabilities");
1613
+ if (g) return;
1614
+ b(null), i("error"), Q("Failed to check crypto capabilities");
1721
1615
  }
1722
1616
  })(), () => {
1723
- y = !0;
1617
+ g = !0;
1724
1618
  };
1725
- }, [t]);
1726
- const d = k(async () => {
1727
- if (!(!t || !f?.allSupported)) {
1728
- r("loading"), h(null);
1619
+ }, [A]);
1620
+ const p = d(async () => {
1621
+ if (!(!A || !B?.allSupported)) {
1622
+ i("loading"), Q(null);
1729
1623
  try {
1730
- const y = await a();
1731
- i(y.solanaPubkey ?? null), I(y.authMethod ?? null), w(y.hasExternalWallet), p(y.unlocked), y.hasExternalWallet ? r("enrolled_unlocked") : y.enrolled ? r(y.unlocked ? "enrolled_unlocked" : "enrolled_locked") : r("not_enrolled");
1732
- } catch (y) {
1733
- r("error"), h(y instanceof Error ? y.message : "Failed to fetch wallet status");
1624
+ const g = await f();
1625
+ n(g.solanaPubkey ?? null), a(g.authMethod ?? null), s(g.hasExternalWallet), w(g.unlocked), g.hasExternalWallet ? i("enrolled_unlocked") : g.enrolled ? i(g.unlocked ? "enrolled_unlocked" : "enrolled_locked") : i("not_enrolled");
1626
+ } catch (g) {
1627
+ i("error"), Q(g instanceof Error ? g.message : "Failed to fetch wallet status");
1734
1628
  }
1735
1629
  }
1736
- }, [t, f?.allSupported, a]);
1737
- K(() => {
1738
- t && f?.allSupported && !g && !C.current && (C.current = !0, d());
1739
- }, [t, f?.allSupported, g, d]);
1740
- const D = k(() => h(null), []);
1741
- return t ? {
1742
- status: A,
1743
- solanaPubkey: n,
1630
+ }, [A, B?.allSupported, f]);
1631
+ N(() => {
1632
+ A && B?.allSupported && !u && !m.current && (m.current = !0, p());
1633
+ }, [A, B?.allSupported, u, p]);
1634
+ const h = d(() => Q(null), []);
1635
+ return A ? {
1636
+ status: t,
1637
+ solanaPubkey: r,
1744
1638
  authMethod: o,
1745
- hasExternalWallet: c,
1746
- isUnlocked: B,
1747
- capabilities: f,
1748
- isSupported: f?.allSupported ?? !1,
1749
- error: u,
1750
- refresh: d,
1751
- clearError: D
1752
- } : Tt;
1753
- }
1754
- const $ = "__CEDROS_EMBEDDED_WALLET__";
1755
- function Lt(e) {
1756
- typeof window < "u" && (window[$] = e);
1757
- }
1758
- function ie() {
1759
- typeof window < "u" && delete window[$];
1760
- }
1761
- function sA() {
1762
- return typeof window > "u" ? !1 : window[$]?.available ?? !1;
1763
- }
1764
- function IA() {
1765
- return typeof window > "u" ? null : window[$] ?? null;
1766
- }
1767
- function Xt() {
1768
- const { config: e, user: t } = Be(), { status: A, solanaPubkey: r, hasExternalWallet: n } = Rt(), i = e.wallet?.exposeAvailability ?? !1, o = e.wallet?.exposePublicKey ?? !1;
1769
- return K(() => {
1770
- if (!i || !t) {
1771
- ie();
1639
+ hasExternalWallet: l,
1640
+ isUnlocked: k,
1641
+ capabilities: B,
1642
+ isSupported: B?.allSupported ?? !1,
1643
+ error: F,
1644
+ refresh: p,
1645
+ clearError: h
1646
+ } : vA;
1647
+ }
1648
+ const te = "__CEDROS_EMBEDDED_WALLET__";
1649
+ function RA(e) {
1650
+ typeof window < "u" && (window[te] = e);
1651
+ }
1652
+ function ce() {
1653
+ typeof window < "u" && delete window[te];
1654
+ }
1655
+ function It() {
1656
+ return typeof window > "u" ? !1 : window[te]?.available ?? !1;
1657
+ }
1658
+ function at() {
1659
+ return typeof window > "u" ? null : window[te] ?? null;
1660
+ }
1661
+ function LA() {
1662
+ const { config: e, user: A } = ye(), { status: t, solanaPubkey: i, hasExternalWallet: r } = TA(), n = e.wallet?.exposeAvailability ?? !1, o = e.wallet?.exposePublicKey ?? !1;
1663
+ return N(() => {
1664
+ if (!n || !A) {
1665
+ ce();
1772
1666
  return;
1773
1667
  }
1774
- if (n) {
1775
- ie();
1668
+ if (r) {
1669
+ ce();
1776
1670
  return;
1777
1671
  }
1778
- if (A === "loading")
1672
+ if (t === "loading")
1779
1673
  return;
1780
- const I = A === "enrolled_locked" || A === "enrolled_unlocked";
1781
- return Lt({
1782
- available: I,
1783
- publicKey: o && I ? r : null
1674
+ const a = t === "enrolled_locked" || t === "enrolled_unlocked";
1675
+ return RA({
1676
+ available: a,
1677
+ publicKey: o && a ? i : null
1784
1678
  }), () => {
1785
- ie();
1679
+ ce();
1786
1680
  };
1787
- }, [i, o, t, A, r, n]), null;
1788
- }
1789
- function aA({ config: e, children: t }) {
1790
- const [A, r] = U(null), [n, i] = U(!1), o = O(
1791
- () => JSON.stringify(e.themeOverrides ?? null),
1792
- [e.themeOverrides]
1793
- ), I = O(() => JSON.stringify(e.session ?? null), [e.session]), c = O(() => JSON.stringify(e.features ?? null), [e.features]), w = O(() => JSON.stringify(e.forms ?? null), [e.forms]), B = O(
1794
- () => e,
1795
- // eslint-disable-next-line react-hooks/exhaustive-deps -- Using serialized keys for deep comparison
1681
+ }, [n, o, A, t, i, r]), null;
1682
+ }
1683
+ function gt({ config: e, children: A }) {
1684
+ const [t, i] = G(null), [r, n] = G(!1), o = P(e.callbacks);
1685
+ o.current = e.callbacks;
1686
+ const a = P({
1687
+ onLoginSuccess: (...D) => o.current?.onLoginSuccess?.(...D),
1688
+ onLoginError: (...D) => o.current?.onLoginError?.(...D),
1689
+ onLogout: () => o.current?.onLogout?.(),
1690
+ onSessionExpired: () => o.current?.onSessionExpired?.()
1691
+ }), l = e.features === "auto", { features: s, isLoading: k } = Ne(
1692
+ e.serverUrl,
1693
+ l,
1694
+ e.requestTimeout
1695
+ ), w = V(() => !l || !s ? e : { ...e, features: s }, [e, l, s]), B = V(
1696
+ () => JSON.stringify(w.themeOverrides ?? null),
1697
+ [w.themeOverrides]
1698
+ ), b = V(() => JSON.stringify(w.session ?? null), [w.session]), F = V(() => JSON.stringify(w.features ?? null), [w.features]), Q = V(() => JSON.stringify(w.forms ?? null), [w.forms]), f = V(
1699
+ () => w,
1700
+ // eslint-disable-next-line react-hooks/exhaustive-deps -- Using serialized keys for deep comparison; callbacks excluded (see UI-06)
1796
1701
  [
1797
- e.serverUrl,
1798
- e.googleClientId,
1799
- e.requestTimeout,
1800
- e.retryAttempts,
1801
- e.theme,
1802
- o,
1803
- I,
1804
- c,
1805
- w,
1806
- e.callbacks
1702
+ w.serverUrl,
1703
+ w.googleClientId,
1704
+ w.requestTimeout,
1705
+ w.retryAttempts,
1706
+ w.theme,
1707
+ B,
1708
+ b,
1709
+ F,
1710
+ Q
1807
1711
  ]
1808
1712
  );
1809
- be({
1810
- theme: B.theme,
1811
- themeOverrides: B.themeOverrides
1713
+ Me({
1714
+ theme: f.theme,
1715
+ themeOverrides: f.themeOverrides
1812
1716
  });
1813
1717
  const {
1814
- user: p,
1815
- authState: f,
1816
- handleLoginSuccess: Q,
1817
- logout: u,
1818
- refreshUser: h,
1819
- getAccessToken: a
1820
- } = Ve({
1821
- serverUrl: B.serverUrl,
1822
- session: B.session,
1823
- callbacks: B.callbacks,
1824
- requestTimeoutMs: B.requestTimeout
1825
- }), g = k(async () => {
1826
- r(null), await u();
1827
- }, [u]), C = k(
1828
- (...l) => {
1829
- r(null), Q(...l);
1718
+ user: u,
1719
+ authState: m,
1720
+ handleLoginSuccess: p,
1721
+ logout: h,
1722
+ refreshUser: g,
1723
+ getAccessToken: I
1724
+ } = Le({
1725
+ serverUrl: f.serverUrl,
1726
+ session: f.session,
1727
+ callbacks: a.current,
1728
+ requestTimeoutMs: f.requestTimeout
1729
+ }), C = d(async () => {
1730
+ i(null), await h();
1731
+ }, [h]), S = d(
1732
+ (...D) => {
1733
+ i(null), p(...D);
1830
1734
  },
1831
- [Q]
1832
- ), d = k(() => i(!0), []), D = k(() => i(!1), []), y = O(
1735
+ [p]
1736
+ ), H = d(() => n(!0), []), c = d(() => n(!1), []), E = V(
1833
1737
  () => ({
1834
- config: B,
1835
- user: p,
1836
- authState: f,
1837
- error: A,
1838
- logout: g,
1839
- refreshUser: h,
1840
- isModalOpen: n,
1841
- openModal: d,
1842
- closeModal: D,
1738
+ config: f,
1739
+ user: u,
1740
+ authState: m,
1741
+ logout: C,
1742
+ refreshUser: g,
1843
1743
  _internal: {
1844
- handleLoginSuccess: C,
1845
- getAccessToken: a
1744
+ handleLoginSuccess: S,
1745
+ getAccessToken: I
1846
1746
  }
1847
1747
  }),
1848
- [
1849
- B,
1850
- p,
1851
- f,
1852
- A,
1853
- g,
1854
- h,
1855
- n,
1856
- d,
1857
- D,
1858
- C,
1859
- a
1860
- ]
1748
+ [f, u, m, C, g, S, I]
1749
+ ), U = V(
1750
+ () => ({
1751
+ error: t,
1752
+ isModalOpen: r,
1753
+ openModal: H,
1754
+ closeModal: c
1755
+ }),
1756
+ [t, r, H, c]
1757
+ ), K = V(
1758
+ () => ({ ...E, ...U }),
1759
+ [E, U]
1861
1760
  );
1862
- return /* @__PURE__ */ R(ae.Provider, { value: y, children: [
1863
- /* @__PURE__ */ m(Xt, {}),
1864
- t
1865
- ] });
1761
+ return l && k ? null : /* @__PURE__ */ ne(He.Provider, { value: E, children: /* @__PURE__ */ ne(Je.Provider, { value: U, children: /* @__PURE__ */ Ke(Ve.Provider, { value: K, children: [
1762
+ /* @__PURE__ */ ne(LA, {}),
1763
+ A
1764
+ ] }) }) });
1866
1765
  }
1867
- function gA() {
1868
- const { user: e, authState: t, error: A, logout: r, refreshUser: n, openModal: i, closeModal: o } = Be();
1766
+ function lt() {
1767
+ const { user: e, authState: A, error: t, logout: i, refreshUser: r, openModal: n, closeModal: o } = ye();
1869
1768
  return {
1870
1769
  user: e,
1871
- authState: t,
1872
- error: A,
1873
- isAuthenticated: t === "authenticated" && e !== null,
1874
- isLoading: t === "loading",
1875
- logout: r,
1876
- refreshUser: n,
1877
- openLoginModal: i,
1770
+ authState: A,
1771
+ error: t,
1772
+ isAuthenticated: A === "authenticated" && e !== null,
1773
+ isLoading: A === "loading",
1774
+ logout: i,
1775
+ refreshUser: r,
1776
+ openLoginModal: n,
1878
1777
  closeLoginModal: o
1879
1778
  };
1880
1779
  }
1881
- const Wt = {
1882
- sm: 16,
1883
- md: 24,
1884
- lg: 32,
1885
- xl: 48
1886
- // H-04: Added for WalletUnlock component
1887
- }, cA = Qe(function({
1888
- size: t = "md",
1889
- className: A = "",
1890
- style: r,
1891
- label: n = "Loading",
1892
- announce: i = !1
1893
- }) {
1894
- const o = Wt[t], I = /* @__PURE__ */ R(
1895
- "svg",
1896
- {
1897
- className: `cedros-spinner ${A}`,
1898
- width: o,
1899
- height: o,
1900
- viewBox: "0 0 24 24",
1901
- fill: "none",
1902
- style: r,
1903
- "aria-label": n,
1904
- role: "status",
1905
- "aria-hidden": i ? "true" : void 0,
1906
- children: [
1907
- /* @__PURE__ */ m(
1908
- "circle",
1909
- {
1910
- className: "cedros-spinner-track",
1911
- cx: "12",
1912
- cy: "12",
1913
- r: "10",
1914
- stroke: "currentColor",
1915
- strokeWidth: "3",
1916
- strokeOpacity: "0.25"
1917
- }
1918
- ),
1919
- /* @__PURE__ */ m(
1920
- "circle",
1921
- {
1922
- className: "cedros-spinner-head",
1923
- cx: "12",
1924
- cy: "12",
1925
- r: "10",
1926
- stroke: "currentColor",
1927
- strokeWidth: "3",
1928
- strokeLinecap: "round",
1929
- strokeDasharray: "31.4 31.4",
1930
- transform: "rotate(-90 12 12)",
1931
- children: /* @__PURE__ */ m(
1932
- "animateTransform",
1933
- {
1934
- attributeName: "transform",
1935
- type: "rotate",
1936
- from: "0 12 12",
1937
- to: "360 12 12",
1938
- dur: "1s",
1939
- repeatCount: "indefinite"
1940
- }
1941
- )
1942
- }
1943
- )
1944
- ]
1945
- }
1946
- );
1947
- return i ? /* @__PURE__ */ R("span", { "aria-live": "polite", "aria-busy": "true", children: [
1948
- I,
1949
- /* @__PURE__ */ m("span", { className: "cedros-sr-only", children: n })
1950
- ] }) : I;
1951
- }), lA = Qe(function({
1952
- error: t,
1953
- className: A = "",
1954
- onDismiss: r,
1955
- autoFocus: n = !1
1956
- }) {
1957
- const i = P(null);
1958
- if (K(() => {
1959
- t && n && i.current && i.current.focus();
1960
- }, [t, n]), !t) return null;
1961
- const o = typeof t == "string" ? t : t.message;
1962
- return /* @__PURE__ */ R(
1963
- "div",
1964
- {
1965
- ref: i,
1966
- className: `cedros-error ${A}`,
1967
- role: "alert",
1968
- "aria-live": "assertive",
1969
- tabIndex: n ? -1 : void 0,
1970
- children: [
1971
- /* @__PURE__ */ R(
1972
- "svg",
1973
- {
1974
- className: "cedros-error-icon",
1975
- width: "16",
1976
- height: "16",
1977
- viewBox: "0 0 16 16",
1978
- fill: "none",
1979
- "aria-hidden": "true",
1980
- children: [
1981
- /* @__PURE__ */ m("circle", { cx: "8", cy: "8", r: "7", stroke: "currentColor", strokeWidth: "1.5" }),
1982
- /* @__PURE__ */ m("path", { d: "M8 4.5v4", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }),
1983
- /* @__PURE__ */ m("circle", { cx: "8", cy: "11", r: "0.75", fill: "currentColor" })
1984
- ]
1985
- }
1986
- ),
1987
- /* @__PURE__ */ m("span", { className: "cedros-error-message", children: o }),
1988
- r && /* @__PURE__ */ m(
1989
- "button",
1990
- {
1991
- type: "button",
1992
- className: "cedros-error-dismiss",
1993
- onClick: r,
1994
- "aria-label": "Dismiss error",
1995
- children: /* @__PURE__ */ m("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ m(
1996
- "path",
1997
- {
1998
- d: "M10.5 3.5L3.5 10.5M3.5 3.5l7 7",
1999
- stroke: "currentColor",
2000
- strokeWidth: "1.5",
2001
- strokeLinecap: "round"
2002
- }
2003
- ) })
2004
- }
2005
- )
2006
- ]
2007
- }
2008
- );
2009
- });
2010
1780
  export {
2011
- Ot as A,
2012
- IA as B,
2013
- aA as C,
2014
- Oe as D,
2015
- lA as E,
2016
- cA as L,
2017
- gA as a,
2018
- $t as b,
2019
- eA as c,
2020
- Z as d,
2021
- AA as e,
2022
- qt as f,
2023
- _t as g,
2024
- H as h,
2025
- Le as i,
2026
- pe as j,
2027
- nA as k,
2028
- oA as l,
2029
- de as m,
2030
- vt as n,
2031
- qe as o,
2032
- iA as p,
2033
- tA as q,
2034
- rA as r,
2035
- Yt as s,
2036
- Ee as t,
2037
- Be as u,
2038
- ze as v,
2039
- zt as w,
2040
- Rt as x,
2041
- ae as y,
2042
- sA as z
1781
+ gt as C,
1782
+ Xe as D,
1783
+ zA as a,
1784
+ At as b,
1785
+ z as c,
1786
+ it as d,
1787
+ Se as e,
1788
+ _A as f,
1789
+ $A as g,
1790
+ ze as h,
1791
+ ot as i,
1792
+ st as j,
1793
+ OA as k,
1794
+ rA as l,
1795
+ nt as m,
1796
+ tt as n,
1797
+ xA as o,
1798
+ sA as p,
1799
+ TA as q,
1800
+ rt as r,
1801
+ It as s,
1802
+ ke as t,
1803
+ lt as u,
1804
+ bA as v,
1805
+ et as w,
1806
+ at as x
2043
1807
  };