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