@cedros/login-react 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/README.md +142 -2
  2. package/dist/AuthenticationSettings-CMQhep61.js +9 -0
  3. package/dist/AuthenticationSettings-CMQhep61.js.map +1 -0
  4. package/dist/AuthenticationSettings-Cro76kIC.cjs +1 -0
  5. package/dist/AuthenticationSettings-Cro76kIC.cjs.map +1 -0
  6. package/dist/CreditSystemSettings-AM7qDk1E.js +9 -0
  7. package/dist/CreditSystemSettings-AM7qDk1E.js.map +1 -0
  8. package/dist/CreditSystemSettings-CGR-uzuh.cjs +1 -0
  9. package/dist/CreditSystemSettings-CGR-uzuh.cjs.map +1 -0
  10. package/dist/DepositsSection-BVNd63B7.js +47 -0
  11. package/dist/DepositsSection-BVNd63B7.js.map +1 -0
  12. package/dist/DepositsSection-Ct1gjgIg.cjs +1 -0
  13. package/dist/DepositsSection-Ct1gjgIg.cjs.map +1 -0
  14. package/dist/EmailRegisterForm-B-ys4E3C.cjs +1 -0
  15. package/dist/EmailRegisterForm-B-ys4E3C.cjs.map +1 -0
  16. package/dist/EmailRegisterForm-BChCiZ5B.js +961 -0
  17. package/dist/EmailRegisterForm-BChCiZ5B.js.map +1 -0
  18. package/dist/EmailSettings-DFZ13JbX.cjs +1 -0
  19. package/dist/EmailSettings-DFZ13JbX.cjs.map +1 -0
  20. package/dist/EmailSettings-Di4GSWgb.js +9 -0
  21. package/dist/EmailSettings-Di4GSWgb.js.map +1 -0
  22. package/dist/EmbeddedWalletSettings-Cmn_aVL7.js +9 -0
  23. package/dist/EmbeddedWalletSettings-Cmn_aVL7.js.map +1 -0
  24. package/dist/EmbeddedWalletSettings-DRWeIJKb.cjs +1 -0
  25. package/dist/EmbeddedWalletSettings-DRWeIJKb.cjs.map +1 -0
  26. package/dist/{ErrorMessage-Bm1j5mBT.js → ErrorMessage-C8vKB0JG.js} +9 -9
  27. package/dist/ErrorMessage-C8vKB0JG.js.map +1 -0
  28. package/dist/ErrorMessage-CntMyn93.cjs.map +1 -1
  29. package/dist/{GoogleLoginButton-CvDoOc-0.js → GoogleLoginButton-Ceo2sYvX.js} +1 -1
  30. package/dist/{GoogleLoginButton-CvDoOc-0.js.map → GoogleLoginButton-Ceo2sYvX.js.map} +1 -1
  31. package/dist/ServerSettings-D8w8EpoE.cjs +1 -0
  32. package/dist/ServerSettings-D8w8EpoE.cjs.map +1 -0
  33. package/dist/ServerSettings-Wg_odW46.js +9 -0
  34. package/dist/ServerSettings-Wg_odW46.js.map +1 -0
  35. package/dist/{SolanaLoginButton-h32xN2PQ.js → SolanaLoginButton-CqVOcPa7.js} +1 -1
  36. package/dist/{SolanaLoginButton-h32xN2PQ.js.map → SolanaLoginButton-CqVOcPa7.js.map} +1 -1
  37. package/dist/TeamSection-Bj89WSC0.js +128 -0
  38. package/dist/TeamSection-Bj89WSC0.js.map +1 -0
  39. package/dist/TeamSection-DQ4nfUHN.cjs +1 -0
  40. package/dist/TeamSection-DQ4nfUHN.cjs.map +1 -0
  41. package/dist/UsersSection-BiZceDV3.cjs +1 -0
  42. package/dist/UsersSection-BiZceDV3.cjs.map +1 -0
  43. package/dist/UsersSection-W19ddPsw.js +81 -0
  44. package/dist/UsersSection-W19ddPsw.js.map +1 -0
  45. package/dist/WebhookSettings-a1c4iMvr.js +9 -0
  46. package/dist/WebhookSettings-a1c4iMvr.js.map +1 -0
  47. package/dist/WebhookSettings-onJWLytD.cjs +1 -0
  48. package/dist/WebhookSettings-onJWLytD.cjs.map +1 -0
  49. package/dist/WithdrawalsSection-BBw9gWMR.js +20 -0
  50. package/dist/WithdrawalsSection-BBw9gWMR.js.map +1 -0
  51. package/dist/WithdrawalsSection-Cws8inf6.cjs +1 -0
  52. package/dist/WithdrawalsSection-Cws8inf6.cjs.map +1 -0
  53. package/dist/admin/AdminShell.d.ts +38 -0
  54. package/dist/admin/icons.d.ts +2 -0
  55. package/dist/admin/index.d.ts +10 -0
  56. package/dist/admin/plugin.d.ts +3 -0
  57. package/dist/admin/sections/AuthenticationSettings.d.ts +3 -0
  58. package/dist/admin/sections/CreditSystemSettings.d.ts +3 -0
  59. package/dist/admin/sections/DepositsSection.d.ts +3 -0
  60. package/dist/admin/sections/EmailSettings.d.ts +3 -0
  61. package/dist/admin/sections/EmbeddedWalletSettings.d.ts +3 -0
  62. package/dist/admin/sections/FeatureSettings.d.ts +3 -0
  63. package/dist/admin/sections/InvitesSection.d.ts +3 -0
  64. package/dist/admin/sections/MembersSection.d.ts +3 -0
  65. package/dist/admin/sections/ServerSettings.d.ts +3 -0
  66. package/dist/admin/sections/SettingsSections.d.ts +7 -0
  67. package/dist/admin/sections/TeamSection.d.ts +3 -0
  68. package/dist/admin/sections/UsersSection.d.ts +3 -0
  69. package/dist/admin/sections/WebhookSettings.d.ts +3 -0
  70. package/dist/admin/sections/WithdrawalsSection.d.ts +3 -0
  71. package/dist/admin/types.d.ts +167 -0
  72. package/dist/components/admin/AdminUserDetail.d.ts +3 -1
  73. package/dist/components/admin/AdminUserList.d.ts +3 -7
  74. package/dist/components/admin/CedrosAdminDashboard.d.ts +7 -3
  75. package/dist/components/admin/PermissionsSection.d.ts +7 -0
  76. package/dist/components/admin/ProfileDropdown.d.ts +34 -0
  77. package/dist/components/admin/SetupWizard.d.ts +30 -0
  78. package/dist/components/admin/StatsBar.d.ts +17 -0
  79. package/dist/components/admin/settings/AuthenticationSettings.d.ts +4 -0
  80. package/dist/components/admin/settings/AutosaveStatus.d.ts +6 -0
  81. package/dist/components/admin/settings/CreditSystemSettings.d.ts +6 -0
  82. package/dist/components/admin/settings/EmailSettings.d.ts +4 -0
  83. package/dist/components/admin/settings/EmbeddedWalletSettings.d.ts +4 -0
  84. package/dist/components/admin/settings/FeatureSettings.d.ts +4 -0
  85. package/dist/components/admin/settings/MessagingSettings.d.ts +4 -0
  86. package/dist/components/admin/settings/SecuritySettings.d.ts +4 -0
  87. package/dist/components/admin/settings/ServerSettings.d.ts +4 -0
  88. package/dist/components/admin/settings/SettingsPageLayout.d.ts +16 -0
  89. package/dist/components/admin/settings/SsoProvidersSettings.d.ts +4 -0
  90. package/dist/components/admin/settings/WebhookSettings.d.ts +4 -0
  91. package/dist/components/admin/settings/index.d.ts +31 -0
  92. package/dist/components/admin/settings/settingsInputs.d.ts +79 -0
  93. package/dist/components/admin/settings/settingsMetadata.d.ts +18 -0
  94. package/dist/components/deposit/admin/AdminWithdrawalStats.d.ts +10 -0
  95. package/dist/components/deposit/admin/FeatureDisabledMessage.d.ts +15 -0
  96. package/dist/components/deposit/admin/featureDisabled.d.ts +9 -0
  97. package/dist/components/deposit/admin/index.d.ts +5 -0
  98. package/dist/components/invites/InviteForm.d.ts +1 -1
  99. package/dist/components/org/OrgSelector.d.ts +2 -1
  100. package/dist/components/profile/UserProfileSettings.d.ts +35 -0
  101. package/dist/components/profile/index.d.ts +2 -0
  102. package/dist/crypto/secureWipe.d.ts +0 -19
  103. package/dist/crypto/webauthnPrf.d.ts +0 -10
  104. package/dist/email-only.cjs +1 -1
  105. package/dist/email-only.js +2 -2
  106. package/dist/google-only.js +2 -2
  107. package/dist/hooks/useDashboardPermissions.d.ts +45 -0
  108. package/dist/hooks/useProfile.d.ts +35 -0
  109. package/dist/hooks/useServerFeatures.d.ts +55 -0
  110. package/dist/hooks/useSettingsAutosave.d.ts +29 -0
  111. package/dist/hooks/useSetup.d.ts +25 -0
  112. package/dist/hooks/useSsoProviders.d.ts +52 -0
  113. package/dist/index-BHR_WTP2.js +19636 -0
  114. package/dist/index-BHR_WTP2.js.map +1 -0
  115. package/dist/index-JsIJkPin.cjs +2061 -0
  116. package/dist/index-JsIJkPin.cjs.map +1 -0
  117. package/dist/index.cjs +1 -2061
  118. package/dist/index.cjs.map +1 -1
  119. package/dist/index.d.ts +21 -3
  120. package/dist/index.js +117 -14908
  121. package/dist/index.js.map +1 -1
  122. package/dist/login-react.css +1 -1
  123. package/dist/silentWalletEnroll-CQK5i65l.js +42 -0
  124. package/dist/silentWalletEnroll-CQK5i65l.js.map +1 -0
  125. package/dist/silentWalletEnroll-DBfS2sLe.cjs +1 -0
  126. package/dist/silentWalletEnroll-DBfS2sLe.cjs.map +1 -0
  127. package/dist/solana-only.js +2 -2
  128. package/dist/solanaKeypair-BD7Kq1Mw.js +1932 -0
  129. package/dist/solanaKeypair-BD7Kq1Mw.js.map +1 -0
  130. package/dist/solanaKeypair-CBQxm2hw.cjs +1 -0
  131. package/dist/solanaKeypair-CBQxm2hw.cjs.map +1 -0
  132. package/dist/types/adminUser.d.ts +56 -0
  133. package/dist/types/deposit.d.ts +2 -0
  134. package/dist/types/index.d.ts +4 -2
  135. package/dist/types/org.d.ts +34 -2
  136. package/dist/types/profile.d.ts +56 -0
  137. package/dist/types/setup.d.ts +45 -0
  138. package/dist/types/systemSettings.d.ts +5 -1
  139. package/dist/utils/adminUserApi.d.ts +10 -1
  140. package/dist/utils/profileApi.d.ts +26 -0
  141. package/dist/utils/setupApi.d.ts +21 -0
  142. package/package.json +1 -1
  143. package/dist/EmailRegisterForm-D_uCEdX9.cjs +0 -1
  144. package/dist/EmailRegisterForm-D_uCEdX9.cjs.map +0 -1
  145. package/dist/EmailRegisterForm-m3rX3A6X.js +0 -2923
  146. package/dist/EmailRegisterForm-m3rX3A6X.js.map +0 -1
  147. package/dist/ErrorMessage-Bm1j5mBT.js.map +0 -1
@@ -0,0 +1,42 @@
1
+ import { g as m, b as f, D as p, c as w, t as K, d as r, A as b, w as D } from "./ErrorMessage-C8vKB0JG.js";
2
+ import { s as S, a as T, g as k, p as v } from "./solanaKeypair-BD7Kq1Mw.js";
3
+ async function C(u) {
4
+ const { password: A, serverUrl: h, accessToken: t, timeoutMs: y = 3e4 } = u, s = [];
5
+ try {
6
+ const e = m();
7
+ s.push(e);
8
+ const { shareA: a, shareB: o } = S(e);
9
+ s.push(a, o);
10
+ const n = f(), c = await T(A, n, p);
11
+ s.push(c);
12
+ const l = await w(a, K(c)), d = k(e), i = v(d), g = {
13
+ solanaPubkey: i,
14
+ shareAAuthMethod: "password",
15
+ shareACiphertext: l.ciphertext,
16
+ shareANonce: l.nonce,
17
+ shareB: r(o),
18
+ shareAKdfSalt: r(n),
19
+ shareAKdfParams: p,
20
+ // Send seed as recovery data - server will store based on recovery mode
21
+ recoveryData: r(e)
22
+ };
23
+ return await new b({
24
+ baseUrl: h,
25
+ timeoutMs: y,
26
+ getAccessToken: t ? () => t : void 0
27
+ }).post("/wallet/enroll", g), {
28
+ success: !0,
29
+ solanaPubkey: i
30
+ };
31
+ } catch (e) {
32
+ return {
33
+ success: !1,
34
+ error: e instanceof Error ? e.message : "Wallet enrollment failed"
35
+ };
36
+ } finally {
37
+ D(...s);
38
+ }
39
+ }
40
+ export {
41
+ C as silentWalletEnroll
42
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"silentWalletEnroll-CQK5i65l.js","sources":["../src/utils/silentWalletEnroll.ts"],"sourcesContent":["/**\n * Silent wallet enrollment utility\n *\n * Performs wallet enrollment in the background without UI interaction.\n * Used for auto-enrolling wallets during registration.\n *\n * Security: Uses the same Shamir Secret Sharing scheme as manual enrollment.\n * The recovery phrase is not shown - user can retrieve it later if needed.\n */\n\nimport {\n generateSeed,\n generateArgon2Salt,\n splitSecret,\n argon2DeriveInWorker,\n aesGcmEncryptToBase64,\n uint8ArrayToBase64,\n getPublicKeyFromSeed,\n publicKeyToBase58,\n wipeAll,\n toEncryptionKey,\n DEFAULT_KDF_PARAMS,\n} from '../crypto';\nimport { ApiClient } from './apiClient';\nimport type { WalletEnrollRequest } from '../types/wallet';\n\nexport interface SilentEnrollOptions {\n /** User's password for Share A encryption */\n password: string;\n /** Server base URL */\n serverUrl: string;\n /** Access token for authentication (optional if using cookies) */\n accessToken?: string;\n /** Request timeout in ms */\n timeoutMs?: number;\n}\n\nexport interface SilentEnrollResult {\n success: boolean;\n solanaPubkey?: string;\n error?: string;\n}\n\n/**\n * Silently enroll a wallet for a user\n *\n * This function performs the complete wallet enrollment process:\n * 1. Generate 32-byte seed\n * 2. Split into 3 Shamir shares (threshold 2)\n * 3. Encrypt Share A with password-derived key (Argon2id)\n * 4. Derive Solana public key from seed\n * 5. Upload encrypted Share A + plaintext Share B to server\n *\n * The recovery phrase (Share C) is not returned - user can recover it\n * later through the wallet recovery flow if needed.\n *\n * @param options - Enrollment options\n * @returns Result with success status and Solana public key\n */\nexport async function silentWalletEnroll(\n options: SilentEnrollOptions\n): Promise<SilentEnrollResult> {\n const { password, serverUrl, accessToken, timeoutMs = 30000 } = options;\n\n // Track sensitive data for cleanup\n const sensitiveData: Uint8Array[] = [];\n\n try {\n // Step 1: Generate seed\n const seed = generateSeed();\n sensitiveData.push(seed);\n\n // Step 2: Split into shares\n const { shareA, shareB } = splitSecret(seed);\n sensitiveData.push(shareA, shareB);\n\n // Step 3: Derive encryption key from password\n const salt = generateArgon2Salt();\n const key = await argon2DeriveInWorker(password, salt, DEFAULT_KDF_PARAMS);\n sensitiveData.push(key);\n\n // Step 4: Encrypt Share A\n const encryptedA = await aesGcmEncryptToBase64(shareA, toEncryptionKey(key));\n\n // Step 5: Derive Solana public key\n const publicKey = getPublicKeyFromSeed(seed);\n const solanaPubkey = publicKeyToBase58(publicKey);\n\n // Step 6: Build enrollment request\n // Include recovery data (seed) for server to store if recovery mode is enabled\n const request: WalletEnrollRequest = {\n solanaPubkey,\n shareAAuthMethod: 'password',\n shareACiphertext: encryptedA.ciphertext,\n shareANonce: encryptedA.nonce,\n shareB: uint8ArrayToBase64(shareB),\n shareAKdfSalt: uint8ArrayToBase64(salt),\n shareAKdfParams: DEFAULT_KDF_PARAMS,\n // Send seed as recovery data - server will store based on recovery mode\n recoveryData: uint8ArrayToBase64(seed),\n };\n\n // Step 7: Upload to server\n // If accessToken provided, use it; otherwise rely on cookies\n const apiClient = new ApiClient({\n baseUrl: serverUrl,\n timeoutMs,\n getAccessToken: accessToken ? () => accessToken : undefined,\n });\n\n await apiClient.post('/wallet/enroll', request);\n\n return {\n success: true,\n solanaPubkey,\n };\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : 'Wallet enrollment failed';\n // Silent failure - don't break registration flow\n return {\n success: false,\n error: errorMessage,\n };\n } finally {\n // Always wipe sensitive data\n wipeAll(...sensitiveData);\n }\n}\n"],"names":["silentWalletEnroll","options","password","serverUrl","accessToken","timeoutMs","sensitiveData","seed","generateSeed","shareA","shareB","splitSecret","salt","generateArgon2Salt","key","argon2DeriveInWorker","DEFAULT_KDF_PARAMS","encryptedA","aesGcmEncryptToBase64","toEncryptionKey","publicKey","getPublicKeyFromSeed","solanaPubkey","publicKeyToBase58","request","uint8ArrayToBase64","ApiClient","err","wipeAll"],"mappings":";;AA2DA,eAAsBA,EACpBC,GAC6B;AAC7B,QAAM,EAAE,UAAAC,GAAU,WAAAC,GAAW,aAAAC,GAAa,WAAAC,IAAY,QAAUJ,GAG1DK,IAA8B,CAAA;AAEpC,MAAI;AAEF,UAAMC,IAAOC,EAAA;AACb,IAAAF,EAAc,KAAKC,CAAI;AAGvB,UAAM,EAAE,QAAAE,GAAQ,QAAAC,MAAWC,EAAYJ,CAAI;AAC3C,IAAAD,EAAc,KAAKG,GAAQC,CAAM;AAGjC,UAAME,IAAOC,EAAA,GACPC,IAAM,MAAMC,EAAqBb,GAAUU,GAAMI,CAAkB;AACzE,IAAAV,EAAc,KAAKQ,CAAG;AAGtB,UAAMG,IAAa,MAAMC,EAAsBT,GAAQU,EAAgBL,CAAG,CAAC,GAGrEM,IAAYC,EAAqBd,CAAI,GACrCe,IAAeC,EAAkBH,CAAS,GAI1CI,IAA+B;AAAA,MACnC,cAAAF;AAAA,MACA,kBAAkB;AAAA,MAClB,kBAAkBL,EAAW;AAAA,MAC7B,aAAaA,EAAW;AAAA,MACxB,QAAQQ,EAAmBf,CAAM;AAAA,MACjC,eAAee,EAAmBb,CAAI;AAAA,MACtC,iBAAiBI;AAAA;AAAA,MAEjB,cAAcS,EAAmBlB,CAAI;AAAA,IAAA;AAWvC,iBANkB,IAAImB,EAAU;AAAA,MAC9B,SAASvB;AAAA,MACT,WAAAE;AAAA,MACA,gBAAgBD,IAAc,MAAMA,IAAc;AAAA,IAAA,CACnD,EAEe,KAAK,kBAAkBoB,CAAO,GAEvC;AAAA,MACL,SAAS;AAAA,MACT,cAAAF;AAAA,IAAA;AAAA,EAEJ,SAASK,GAAK;AAGZ,WAAO;AAAA,MACL,SAAS;AAAA,MACT,OAJmBA,aAAe,QAAQA,EAAI,UAAU;AAAA,IAIjD;AAAA,EAEX,UAAA;AAEE,IAAAC,EAAQ,GAAGtB,CAAa;AAAA,EAC1B;AACF;"}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./ErrorMessage-CntMyn93.cjs"),t=require("./solanaKeypair-CBQxm2hw.cjs");async function T(A){const{password:p,serverUrl:y,accessToken:n,timeoutMs:h=3e4}=A,s=[];try{const r=e.generateSeed();s.push(r);const{shareA:a,shareB:o}=t.splitSecret(r);s.push(a,o);const c=e.generateArgon2Salt(),l=await t.argon2DeriveInWorker(p,c,e.DEFAULT_KDF_PARAMS);s.push(l);const i=await e.aesGcmEncryptToBase64(a,e.toEncryptionKey(l)),d=t.getPublicKeyFromSeed(r),u=t.publicKeyToBase58(d),g={solanaPubkey:u,shareAAuthMethod:"password",shareACiphertext:i.ciphertext,shareANonce:i.nonce,shareB:e.uint8ArrayToBase64(o),shareAKdfSalt:e.uint8ArrayToBase64(c),shareAKdfParams:e.DEFAULT_KDF_PARAMS,recoveryData:e.uint8ArrayToBase64(r)};return await new e.ApiClient({baseUrl:y,timeoutMs:h,getAccessToken:n?()=>n:void 0}).post("/wallet/enroll",g),{success:!0,solanaPubkey:u}}catch(r){return{success:!1,error:r instanceof Error?r.message:"Wallet enrollment failed"}}finally{e.wipeAll(...s)}}exports.silentWalletEnroll=T;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"silentWalletEnroll-DBfS2sLe.cjs","sources":["../src/utils/silentWalletEnroll.ts"],"sourcesContent":["/**\n * Silent wallet enrollment utility\n *\n * Performs wallet enrollment in the background without UI interaction.\n * Used for auto-enrolling wallets during registration.\n *\n * Security: Uses the same Shamir Secret Sharing scheme as manual enrollment.\n * The recovery phrase is not shown - user can retrieve it later if needed.\n */\n\nimport {\n generateSeed,\n generateArgon2Salt,\n splitSecret,\n argon2DeriveInWorker,\n aesGcmEncryptToBase64,\n uint8ArrayToBase64,\n getPublicKeyFromSeed,\n publicKeyToBase58,\n wipeAll,\n toEncryptionKey,\n DEFAULT_KDF_PARAMS,\n} from '../crypto';\nimport { ApiClient } from './apiClient';\nimport type { WalletEnrollRequest } from '../types/wallet';\n\nexport interface SilentEnrollOptions {\n /** User's password for Share A encryption */\n password: string;\n /** Server base URL */\n serverUrl: string;\n /** Access token for authentication (optional if using cookies) */\n accessToken?: string;\n /** Request timeout in ms */\n timeoutMs?: number;\n}\n\nexport interface SilentEnrollResult {\n success: boolean;\n solanaPubkey?: string;\n error?: string;\n}\n\n/**\n * Silently enroll a wallet for a user\n *\n * This function performs the complete wallet enrollment process:\n * 1. Generate 32-byte seed\n * 2. Split into 3 Shamir shares (threshold 2)\n * 3. Encrypt Share A with password-derived key (Argon2id)\n * 4. Derive Solana public key from seed\n * 5. Upload encrypted Share A + plaintext Share B to server\n *\n * The recovery phrase (Share C) is not returned - user can recover it\n * later through the wallet recovery flow if needed.\n *\n * @param options - Enrollment options\n * @returns Result with success status and Solana public key\n */\nexport async function silentWalletEnroll(\n options: SilentEnrollOptions\n): Promise<SilentEnrollResult> {\n const { password, serverUrl, accessToken, timeoutMs = 30000 } = options;\n\n // Track sensitive data for cleanup\n const sensitiveData: Uint8Array[] = [];\n\n try {\n // Step 1: Generate seed\n const seed = generateSeed();\n sensitiveData.push(seed);\n\n // Step 2: Split into shares\n const { shareA, shareB } = splitSecret(seed);\n sensitiveData.push(shareA, shareB);\n\n // Step 3: Derive encryption key from password\n const salt = generateArgon2Salt();\n const key = await argon2DeriveInWorker(password, salt, DEFAULT_KDF_PARAMS);\n sensitiveData.push(key);\n\n // Step 4: Encrypt Share A\n const encryptedA = await aesGcmEncryptToBase64(shareA, toEncryptionKey(key));\n\n // Step 5: Derive Solana public key\n const publicKey = getPublicKeyFromSeed(seed);\n const solanaPubkey = publicKeyToBase58(publicKey);\n\n // Step 6: Build enrollment request\n // Include recovery data (seed) for server to store if recovery mode is enabled\n const request: WalletEnrollRequest = {\n solanaPubkey,\n shareAAuthMethod: 'password',\n shareACiphertext: encryptedA.ciphertext,\n shareANonce: encryptedA.nonce,\n shareB: uint8ArrayToBase64(shareB),\n shareAKdfSalt: uint8ArrayToBase64(salt),\n shareAKdfParams: DEFAULT_KDF_PARAMS,\n // Send seed as recovery data - server will store based on recovery mode\n recoveryData: uint8ArrayToBase64(seed),\n };\n\n // Step 7: Upload to server\n // If accessToken provided, use it; otherwise rely on cookies\n const apiClient = new ApiClient({\n baseUrl: serverUrl,\n timeoutMs,\n getAccessToken: accessToken ? () => accessToken : undefined,\n });\n\n await apiClient.post('/wallet/enroll', request);\n\n return {\n success: true,\n solanaPubkey,\n };\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : 'Wallet enrollment failed';\n // Silent failure - don't break registration flow\n return {\n success: false,\n error: errorMessage,\n };\n } finally {\n // Always wipe sensitive data\n wipeAll(...sensitiveData);\n }\n}\n"],"names":["silentWalletEnroll","options","password","serverUrl","accessToken","timeoutMs","sensitiveData","seed","generateSeed","shareA","shareB","splitSecret","salt","generateArgon2Salt","key","argon2DeriveInWorker","DEFAULT_KDF_PARAMS","encryptedA","aesGcmEncryptToBase64","toEncryptionKey","publicKey","getPublicKeyFromSeed","solanaPubkey","publicKeyToBase58","request","uint8ArrayToBase64","ApiClient","err","wipeAll"],"mappings":"yKA2DA,eAAsBA,EACpBC,EAC6B,CAC7B,KAAM,CAAE,SAAAC,EAAU,UAAAC,EAAW,YAAAC,EAAa,UAAAC,EAAY,KAAUJ,EAG1DK,EAA8B,CAAA,EAEpC,GAAI,CAEF,MAAMC,EAAOC,EAAAA,aAAA,EACbF,EAAc,KAAKC,CAAI,EAGvB,KAAM,CAAE,OAAAE,EAAQ,OAAAC,GAAWC,EAAAA,YAAYJ,CAAI,EAC3CD,EAAc,KAAKG,EAAQC,CAAM,EAGjC,MAAME,EAAOC,EAAAA,mBAAA,EACPC,EAAM,MAAMC,EAAAA,qBAAqBb,EAAUU,EAAMI,EAAAA,kBAAkB,EACzEV,EAAc,KAAKQ,CAAG,EAGtB,MAAMG,EAAa,MAAMC,EAAAA,sBAAsBT,EAAQU,EAAAA,gBAAgBL,CAAG,CAAC,EAGrEM,EAAYC,EAAAA,qBAAqBd,CAAI,EACrCe,EAAeC,EAAAA,kBAAkBH,CAAS,EAI1CI,EAA+B,CACnC,aAAAF,EACA,iBAAkB,WAClB,iBAAkBL,EAAW,WAC7B,YAAaA,EAAW,MACxB,OAAQQ,EAAAA,mBAAmBf,CAAM,EACjC,cAAee,EAAAA,mBAAmBb,CAAI,EACtC,gBAAiBI,EAAAA,mBAEjB,aAAcS,EAAAA,mBAAmBlB,CAAI,CAAA,EAWvC,aANkB,IAAImB,YAAU,CAC9B,QAASvB,EACT,UAAAE,EACA,eAAgBD,EAAc,IAAMA,EAAc,MAAA,CACnD,EAEe,KAAK,iBAAkBoB,CAAO,EAEvC,CACL,QAAS,GACT,aAAAF,CAAA,CAEJ,OAASK,EAAK,CAGZ,MAAO,CACL,QAAS,GACT,MAJmBA,aAAe,MAAQA,EAAI,QAAU,0BAIjD,CAEX,QAAA,CAEEC,EAAAA,QAAQ,GAAGtB,CAAa,CAC1B,CACF"}
@@ -1,5 +1,5 @@
1
- import { C as s, E as r, L as e, a as n, u } from "./ErrorMessage-Bm1j5mBT.js";
2
- import { S as t, u as g } from "./SolanaLoginButton-h32xN2PQ.js";
1
+ import { C as s, E as r, L as e, a as n, u } from "./ErrorMessage-C8vKB0JG.js";
2
+ import { S as t, u as g } from "./SolanaLoginButton-CqVOcPa7.js";
3
3
  export {
4
4
  s as CedrosLoginProvider,
5
5
  r as ErrorMessage,