@tatchi-xyz/sdk 0.16.0 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (470) hide show
  1. package/dist/cjs/core/EmailRecovery/index.js +12 -5
  2. package/dist/cjs/core/EmailRecovery/index.js.map +1 -1
  3. package/dist/cjs/core/IndexedDBManager/passkeyClientDB.js +35 -36
  4. package/dist/cjs/core/IndexedDBManager/passkeyClientDB.js.map +1 -1
  5. package/dist/cjs/core/NearClient.js +2 -1
  6. package/dist/cjs/core/NearClient.js.map +1 -1
  7. package/dist/cjs/core/TatchiPasskey/emailRecovery.js +136 -27
  8. package/dist/cjs/core/TatchiPasskey/emailRecovery.js.map +1 -1
  9. package/dist/cjs/core/TatchiPasskey/faucets/createAccountRelayServer.js +1 -0
  10. package/dist/cjs/core/TatchiPasskey/faucets/createAccountRelayServer.js.map +1 -1
  11. package/dist/cjs/core/TatchiPasskey/index.js +25 -0
  12. package/dist/cjs/core/TatchiPasskey/index.js.map +1 -1
  13. package/dist/cjs/core/TatchiPasskey/linkDevice.js +2 -0
  14. package/dist/cjs/core/TatchiPasskey/linkDevice.js.map +1 -1
  15. package/dist/cjs/core/TatchiPasskey/login.js +15 -4
  16. package/dist/cjs/core/TatchiPasskey/login.js.map +1 -1
  17. package/dist/cjs/core/TatchiPasskey/recoverAccount.js +1 -0
  18. package/dist/cjs/core/TatchiPasskey/recoverAccount.js.map +1 -1
  19. package/dist/cjs/core/TatchiPasskey/scanDevice.js +1 -0
  20. package/dist/cjs/core/TatchiPasskey/scanDevice.js.map +1 -1
  21. package/dist/cjs/core/WalletIframe/client/IframeTransport.js +10 -0
  22. package/dist/cjs/core/WalletIframe/client/IframeTransport.js.map +1 -1
  23. package/dist/cjs/core/WalletIframe/client/router.js +9 -0
  24. package/dist/cjs/core/WalletIframe/client/router.js.map +1 -1
  25. package/dist/cjs/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-drawer.js +1 -1
  26. package/dist/cjs/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-drawer.js.map +1 -1
  27. package/dist/cjs/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-modal.js +52 -52
  28. package/dist/cjs/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-modal.js.map +1 -1
  29. package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/getDeviceNumber.js +10 -1
  30. package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/getDeviceNumber.js.map +1 -1
  31. package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/checkCanRegisterUser.js +1 -0
  32. package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/checkCanRegisterUser.js.map +1 -1
  33. package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/decryptPrivateKeyWithPrf.js +1 -0
  34. package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/decryptPrivateKeyWithPrf.js.map +1 -1
  35. package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/deriveNearKeypairAndEncryptFromSerialized.js +1 -0
  36. package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/deriveNearKeypairAndEncryptFromSerialized.js.map +1 -1
  37. package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/exportNearKeypairUi.js +1 -0
  38. package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/exportNearKeypairUi.js.map +1 -1
  39. package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/registerDevice2WithDerivedKey.js +2 -1
  40. package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/registerDevice2WithDerivedKey.js.map +1 -1
  41. package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/signDelegateAction.js +1 -0
  42. package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/signDelegateAction.js.map +1 -1
  43. package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/signNep413Message.js +1 -0
  44. package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/signNep413Message.js.map +1 -1
  45. package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/signTransactionsWithActions.js +1 -0
  46. package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/signTransactionsWithActions.js.map +1 -1
  47. package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/validation.js +2 -0
  48. package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/validation.js.map +1 -1
  49. package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/index.js +1 -0
  50. package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/index.js.map +1 -1
  51. package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/vrf.js +1 -0
  52. package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/vrf.js.map +1 -1
  53. package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/webauthn.js +6 -0
  54. package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/webauthn.js.map +1 -1
  55. package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/determineConfirmationConfig.js +2 -1
  56. package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/determineConfirmationConfig.js.map +1 -1
  57. package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/localOnly.js +1 -0
  58. package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/localOnly.js.map +1 -1
  59. package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js +1 -0
  60. package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js.map +1 -1
  61. package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js +4 -15
  62. package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js.map +1 -1
  63. package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/handlers/deriveVrfKeypairFromPrf.js +1 -0
  64. package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/handlers/deriveVrfKeypairFromPrf.js.map +1 -1
  65. package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfChallenge.js +1 -0
  66. package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfChallenge.js.map +1 -1
  67. package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfKeypairBootstrap.js +1 -0
  68. package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfKeypairBootstrap.js.map +1 -1
  69. package/dist/cjs/core/WebAuthnManager/WebAuthnFallbacks/index.js +17 -0
  70. package/dist/cjs/core/WebAuthnManager/WebAuthnFallbacks/index.js.map +1 -0
  71. package/dist/cjs/core/WebAuthnManager/WebAuthnFallbacks/safari-fallbacks.js +64 -54
  72. package/dist/cjs/core/WebAuthnManager/WebAuthnFallbacks/safari-fallbacks.js.map +1 -1
  73. package/dist/cjs/core/WebAuthnManager/credentialsHelpers.js +12 -2
  74. package/dist/cjs/core/WebAuthnManager/credentialsHelpers.js.map +1 -1
  75. package/dist/cjs/core/WebAuthnManager/index.js +6 -1
  76. package/dist/cjs/core/WebAuthnManager/index.js.map +1 -1
  77. package/dist/cjs/core/WebAuthnManager/touchIdPrompt.js +209 -201
  78. package/dist/cjs/core/WebAuthnManager/touchIdPrompt.js.map +1 -1
  79. package/dist/cjs/core/WebAuthnManager/userHandle.js +2 -1
  80. package/dist/cjs/core/WebAuthnManager/userHandle.js.map +1 -1
  81. package/dist/cjs/core/defaultConfigs.js +1 -1
  82. package/dist/cjs/core/defaultConfigs.js.map +1 -1
  83. package/dist/cjs/core/types/vrf-worker.js +10 -1
  84. package/dist/cjs/core/types/vrf-worker.js.map +1 -1
  85. package/dist/cjs/react/components/AccountMenuButton/{LinkedDevicesModal-STvIsylA.css → LinkedDevicesModal-B6api181.css} +1 -1
  86. package/dist/{esm/react/components/AccountMenuButton/LinkedDevicesModal-STvIsylA.css.map → cjs/react/components/AccountMenuButton/LinkedDevicesModal-B6api181.css.map} +1 -1
  87. package/dist/cjs/react/components/AccountMenuButton/{ProfileDropdown-iARgUwK1.css → ProfileDropdown-B-DrG_u5.css} +1 -1
  88. package/dist/{esm/react/components/AccountMenuButton/ProfileDropdown-iARgUwK1.css.map → cjs/react/components/AccountMenuButton/ProfileDropdown-B-DrG_u5.css.map} +1 -1
  89. package/dist/cjs/react/components/AccountMenuButton/{Web3AuthProfileButton-Db3NeoAC.css → Web3AuthProfileButton-BnZDUeCL.css} +1 -1
  90. package/dist/cjs/react/components/AccountMenuButton/{Web3AuthProfileButton-Db3NeoAC.css.map → Web3AuthProfileButton-BnZDUeCL.css.map} +1 -1
  91. package/dist/cjs/react/components/AccountMenuButton/icons/{TouchIcon-BXM5NR4A.css → TouchIcon-CAGCi8MY.css} +1 -1
  92. package/dist/cjs/react/components/AccountMenuButton/icons/{TouchIcon-BXM5NR4A.css.map → TouchIcon-CAGCi8MY.css.map} +1 -1
  93. package/dist/cjs/react/components/PasskeyAuthMenu/{PasskeyAuthMenu-De1qTSmU.css → PasskeyAuthMenu-CNNxVj4L.css} +14 -1
  94. package/dist/cjs/react/components/PasskeyAuthMenu/{PasskeyAuthMenu-De1qTSmU.css.map → PasskeyAuthMenu-CNNxVj4L.css.map} +1 -1
  95. package/dist/cjs/react/components/PasskeyAuthMenu/ui/EmailRecoverySlide.js +122 -53
  96. package/dist/cjs/react/components/PasskeyAuthMenu/ui/EmailRecoverySlide.js.map +1 -1
  97. package/dist/cjs/react/components/{ShowQRCode-DCnR__fx.css → ShowQRCode-nZhZSaba.css} +1 -1
  98. package/dist/cjs/react/components/{ShowQRCode-DCnR__fx.css.map → ShowQRCode-nZhZSaba.css.map} +1 -1
  99. package/dist/cjs/react/deviceDetection.js +75 -92
  100. package/dist/cjs/react/deviceDetection.js.map +1 -1
  101. package/dist/cjs/react/hooks/usePreconnectWalletAssets.js +32 -27
  102. package/dist/cjs/react/hooks/usePreconnectWalletAssets.js.map +1 -1
  103. package/dist/cjs/react/hooks/useQRCamera.js +1 -0
  104. package/dist/cjs/react/hooks/useQRCamera.js.map +1 -1
  105. package/dist/cjs/react/sdk/src/core/EmailRecovery/index.js +12 -5
  106. package/dist/cjs/react/sdk/src/core/EmailRecovery/index.js.map +1 -1
  107. package/dist/cjs/react/sdk/src/core/IndexedDBManager/passkeyClientDB.js +35 -36
  108. package/dist/cjs/react/sdk/src/core/IndexedDBManager/passkeyClientDB.js.map +1 -1
  109. package/dist/cjs/react/sdk/src/core/NearClient.js +2 -1
  110. package/dist/cjs/react/sdk/src/core/NearClient.js.map +1 -1
  111. package/dist/cjs/react/sdk/src/core/TatchiPasskey/emailRecovery.js +136 -27
  112. package/dist/cjs/react/sdk/src/core/TatchiPasskey/emailRecovery.js.map +1 -1
  113. package/dist/cjs/react/sdk/src/core/TatchiPasskey/faucets/createAccountRelayServer.js +1 -0
  114. package/dist/cjs/react/sdk/src/core/TatchiPasskey/faucets/createAccountRelayServer.js.map +1 -1
  115. package/dist/cjs/react/sdk/src/core/TatchiPasskey/index.js +25 -0
  116. package/dist/cjs/react/sdk/src/core/TatchiPasskey/index.js.map +1 -1
  117. package/dist/cjs/react/sdk/src/core/TatchiPasskey/linkDevice.js +2 -0
  118. package/dist/cjs/react/sdk/src/core/TatchiPasskey/linkDevice.js.map +1 -1
  119. package/dist/cjs/react/sdk/src/core/TatchiPasskey/login.js +15 -4
  120. package/dist/cjs/react/sdk/src/core/TatchiPasskey/login.js.map +1 -1
  121. package/dist/cjs/react/sdk/src/core/TatchiPasskey/recoverAccount.js +1 -0
  122. package/dist/cjs/react/sdk/src/core/TatchiPasskey/recoverAccount.js.map +1 -1
  123. package/dist/cjs/react/sdk/src/core/TatchiPasskey/scanDevice.js +1 -0
  124. package/dist/cjs/react/sdk/src/core/TatchiPasskey/scanDevice.js.map +1 -1
  125. package/dist/cjs/react/sdk/src/core/WalletIframe/client/IframeTransport.js +10 -0
  126. package/dist/cjs/react/sdk/src/core/WalletIframe/client/IframeTransport.js.map +1 -1
  127. package/dist/cjs/react/sdk/src/core/WalletIframe/client/router.js +9 -0
  128. package/dist/cjs/react/sdk/src/core/WalletIframe/client/router.js.map +1 -1
  129. package/dist/cjs/react/sdk/src/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-drawer.js +1 -1
  130. package/dist/cjs/react/sdk/src/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-drawer.js.map +1 -1
  131. package/dist/cjs/react/sdk/src/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-modal.js +52 -52
  132. package/dist/cjs/react/sdk/src/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-modal.js.map +1 -1
  133. package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/getDeviceNumber.js +10 -1
  134. package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/getDeviceNumber.js.map +1 -1
  135. package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/checkCanRegisterUser.js +1 -0
  136. package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/checkCanRegisterUser.js.map +1 -1
  137. package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/decryptPrivateKeyWithPrf.js +1 -0
  138. package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/decryptPrivateKeyWithPrf.js.map +1 -1
  139. package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/deriveNearKeypairAndEncryptFromSerialized.js +1 -0
  140. package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/deriveNearKeypairAndEncryptFromSerialized.js.map +1 -1
  141. package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/exportNearKeypairUi.js +1 -0
  142. package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/exportNearKeypairUi.js.map +1 -1
  143. package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/registerDevice2WithDerivedKey.js +2 -1
  144. package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/registerDevice2WithDerivedKey.js.map +1 -1
  145. package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/signDelegateAction.js +1 -0
  146. package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/signDelegateAction.js.map +1 -1
  147. package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/signNep413Message.js +1 -0
  148. package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/signNep413Message.js.map +1 -1
  149. package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/signTransactionsWithActions.js +1 -0
  150. package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/signTransactionsWithActions.js.map +1 -1
  151. package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/validation.js +2 -0
  152. package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/validation.js.map +1 -1
  153. package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/index.js +1 -0
  154. package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/index.js.map +1 -1
  155. package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/vrf.js +1 -0
  156. package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/vrf.js.map +1 -1
  157. package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/webauthn.js +6 -0
  158. package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/webauthn.js.map +1 -1
  159. package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/determineConfirmationConfig.js +2 -1
  160. package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/determineConfirmationConfig.js.map +1 -1
  161. package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/localOnly.js +1 -0
  162. package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/localOnly.js.map +1 -1
  163. package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js +1 -0
  164. package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js.map +1 -1
  165. package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js +4 -15
  166. package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js.map +1 -1
  167. package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/handlers/deriveVrfKeypairFromPrf.js +1 -0
  168. package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/handlers/deriveVrfKeypairFromPrf.js.map +1 -1
  169. package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfChallenge.js +1 -0
  170. package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfChallenge.js.map +1 -1
  171. package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfKeypairBootstrap.js +1 -0
  172. package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfKeypairBootstrap.js.map +1 -1
  173. package/dist/cjs/react/sdk/src/core/WebAuthnManager/WebAuthnFallbacks/index.js +17 -0
  174. package/dist/cjs/react/sdk/src/core/WebAuthnManager/WebAuthnFallbacks/index.js.map +1 -0
  175. package/dist/cjs/react/sdk/src/core/WebAuthnManager/WebAuthnFallbacks/safari-fallbacks.js +64 -54
  176. package/dist/cjs/react/sdk/src/core/WebAuthnManager/WebAuthnFallbacks/safari-fallbacks.js.map +1 -1
  177. package/dist/cjs/react/sdk/src/core/WebAuthnManager/credentialsHelpers.js +12 -2
  178. package/dist/cjs/react/sdk/src/core/WebAuthnManager/credentialsHelpers.js.map +1 -1
  179. package/dist/cjs/react/sdk/src/core/WebAuthnManager/index.js +6 -1
  180. package/dist/cjs/react/sdk/src/core/WebAuthnManager/index.js.map +1 -1
  181. package/dist/cjs/react/sdk/src/core/WebAuthnManager/touchIdPrompt.js +209 -201
  182. package/dist/cjs/react/sdk/src/core/WebAuthnManager/touchIdPrompt.js.map +1 -1
  183. package/dist/cjs/react/sdk/src/core/WebAuthnManager/userHandle.js +2 -1
  184. package/dist/cjs/react/sdk/src/core/WebAuthnManager/userHandle.js.map +1 -1
  185. package/dist/cjs/react/sdk/src/core/defaultConfigs.js +1 -1
  186. package/dist/cjs/react/sdk/src/core/defaultConfigs.js.map +1 -1
  187. package/dist/cjs/react/sdk/src/core/types/vrf-worker.js +10 -1
  188. package/dist/cjs/react/sdk/src/core/types/vrf-worker.js.map +1 -1
  189. package/dist/cjs/react/sdk/src/utils/index.js +13 -3
  190. package/dist/cjs/server/email-recovery/emailEncryptor.js +11 -0
  191. package/dist/cjs/server/email-recovery/emailEncryptor.js.map +1 -1
  192. package/dist/cjs/server/email-recovery/emailParsers.js +57 -0
  193. package/dist/cjs/server/email-recovery/emailParsers.js.map +1 -1
  194. package/dist/cjs/server/email-recovery/index.js +1 -1
  195. package/dist/cjs/server/email-recovery/index.js.map +1 -1
  196. package/dist/cjs/server/email-recovery/rpcCalls.js +14 -1
  197. package/dist/cjs/server/email-recovery/rpcCalls.js.map +1 -1
  198. package/dist/cjs/server/index.js +1 -0
  199. package/dist/cjs/server/router/cloudflare.js.map +1 -1
  200. package/dist/cjs/server/router/express.js.map +1 -1
  201. package/dist/cjs/server/sdk/src/core/defaultConfigs.js +1 -1
  202. package/dist/cjs/server/sdk/src/core/defaultConfigs.js.map +1 -1
  203. package/dist/cjs/utils/index.js +13 -3
  204. package/dist/esm/core/EmailRecovery/index.js +12 -5
  205. package/dist/esm/core/EmailRecovery/index.js.map +1 -1
  206. package/dist/esm/core/IndexedDBManager/passkeyClientDB.js +35 -36
  207. package/dist/esm/core/IndexedDBManager/passkeyClientDB.js.map +1 -1
  208. package/dist/esm/core/NearClient.js +2 -1
  209. package/dist/esm/core/NearClient.js.map +1 -1
  210. package/dist/esm/core/TatchiPasskey/emailRecovery.js +136 -27
  211. package/dist/esm/core/TatchiPasskey/emailRecovery.js.map +1 -1
  212. package/dist/esm/core/TatchiPasskey/faucets/createAccountRelayServer.js +2 -1
  213. package/dist/esm/core/TatchiPasskey/faucets/createAccountRelayServer.js.map +1 -1
  214. package/dist/esm/core/TatchiPasskey/index.js +26 -1
  215. package/dist/esm/core/TatchiPasskey/index.js.map +1 -1
  216. package/dist/esm/core/TatchiPasskey/linkDevice.js +4 -2
  217. package/dist/esm/core/TatchiPasskey/linkDevice.js.map +1 -1
  218. package/dist/esm/core/TatchiPasskey/login.js +13 -7
  219. package/dist/esm/core/TatchiPasskey/login.js.map +1 -1
  220. package/dist/esm/core/TatchiPasskey/recoverAccount.js +2 -1
  221. package/dist/esm/core/TatchiPasskey/recoverAccount.js.map +1 -1
  222. package/dist/esm/core/TatchiPasskey/scanDevice.js +2 -1
  223. package/dist/esm/core/TatchiPasskey/scanDevice.js.map +1 -1
  224. package/dist/esm/core/WalletIframe/client/IframeTransport.js +11 -1
  225. package/dist/esm/core/WalletIframe/client/IframeTransport.js.map +1 -1
  226. package/dist/esm/core/WalletIframe/client/router.js +9 -0
  227. package/dist/esm/core/WalletIframe/client/router.js.map +1 -1
  228. package/dist/esm/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-drawer.js +1 -1
  229. package/dist/esm/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-drawer.js.map +1 -1
  230. package/dist/esm/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-modal.js +52 -52
  231. package/dist/esm/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-modal.js.map +1 -1
  232. package/dist/esm/core/WebAuthnManager/SignerWorkerManager/getDeviceNumber.js +6 -2
  233. package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/checkCanRegisterUser.js +2 -1
  234. package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/checkCanRegisterUser.js.map +1 -1
  235. package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/decryptPrivateKeyWithPrf.js +2 -1
  236. package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/decryptPrivateKeyWithPrf.js.map +1 -1
  237. package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/deriveNearKeypairAndEncryptFromSerialized.js +2 -1
  238. package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/deriveNearKeypairAndEncryptFromSerialized.js.map +1 -1
  239. package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/exportNearKeypairUi.js +2 -1
  240. package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/exportNearKeypairUi.js.map +1 -1
  241. package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/registerDevice2WithDerivedKey.js +2 -1
  242. package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/registerDevice2WithDerivedKey.js.map +1 -1
  243. package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/signDelegateAction.js +2 -1
  244. package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/signDelegateAction.js.map +1 -1
  245. package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/signNep413Message.js +2 -1
  246. package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/signNep413Message.js.map +1 -1
  247. package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/signTransactionsWithActions.js +2 -1
  248. package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/signTransactionsWithActions.js.map +1 -1
  249. package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/validation.js +4 -2
  250. package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/validation.js.map +1 -1
  251. package/dist/esm/core/WebAuthnManager/SignerWorkerManager/index.js +2 -1
  252. package/dist/esm/core/WebAuthnManager/SignerWorkerManager/index.js.map +1 -1
  253. package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/vrf.js +1 -0
  254. package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/vrf.js.map +1 -1
  255. package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/webauthn.js +8 -2
  256. package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/webauthn.js.map +1 -1
  257. package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/determineConfirmationConfig.js +2 -1
  258. package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/determineConfirmationConfig.js.map +1 -1
  259. package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/localOnly.js +2 -1
  260. package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/localOnly.js.map +1 -1
  261. package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js +2 -1
  262. package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js.map +1 -1
  263. package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js +5 -16
  264. package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js.map +1 -1
  265. package/dist/esm/core/WebAuthnManager/VrfWorkerManager/handlers/deriveVrfKeypairFromPrf.js +2 -1
  266. package/dist/esm/core/WebAuthnManager/VrfWorkerManager/handlers/deriveVrfKeypairFromPrf.js.map +1 -1
  267. package/dist/esm/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfChallenge.js +2 -1
  268. package/dist/esm/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfChallenge.js.map +1 -1
  269. package/dist/esm/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfKeypairBootstrap.js +2 -1
  270. package/dist/esm/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfKeypairBootstrap.js.map +1 -1
  271. package/dist/esm/core/WebAuthnManager/WebAuthnFallbacks/index.js +12 -0
  272. package/dist/esm/core/WebAuthnManager/WebAuthnFallbacks/index.js.map +1 -0
  273. package/dist/esm/core/WebAuthnManager/WebAuthnFallbacks/safari-fallbacks.js +61 -55
  274. package/dist/esm/core/WebAuthnManager/WebAuthnFallbacks/safari-fallbacks.js.map +1 -1
  275. package/dist/esm/core/WebAuthnManager/credentialsHelpers.js +8 -3
  276. package/dist/esm/core/WebAuthnManager/index.js +8 -3
  277. package/dist/esm/core/WebAuthnManager/index.js.map +1 -1
  278. package/dist/esm/core/WebAuthnManager/touchIdPrompt.js +207 -204
  279. package/dist/esm/core/WebAuthnManager/touchIdPrompt.js.map +1 -1
  280. package/dist/esm/core/WebAuthnManager/userHandle.js +2 -1
  281. package/dist/esm/core/WebAuthnManager/userHandle.js.map +1 -1
  282. package/dist/esm/core/defaultConfigs.js +1 -1
  283. package/dist/esm/core/defaultConfigs.js.map +1 -1
  284. package/dist/esm/core/types/vrf-worker.js +6 -2
  285. package/dist/esm/react/components/AccountMenuButton/{LinkedDevicesModal-STvIsylA.css → LinkedDevicesModal-B6api181.css} +1 -1
  286. package/dist/{cjs/react/components/AccountMenuButton/LinkedDevicesModal-STvIsylA.css.map → esm/react/components/AccountMenuButton/LinkedDevicesModal-B6api181.css.map} +1 -1
  287. package/dist/esm/react/components/AccountMenuButton/{ProfileDropdown-iARgUwK1.css → ProfileDropdown-B-DrG_u5.css} +1 -1
  288. package/dist/{cjs/react/components/AccountMenuButton/ProfileDropdown-iARgUwK1.css.map → esm/react/components/AccountMenuButton/ProfileDropdown-B-DrG_u5.css.map} +1 -1
  289. package/dist/esm/react/components/AccountMenuButton/{Web3AuthProfileButton-Db3NeoAC.css → Web3AuthProfileButton-BnZDUeCL.css} +1 -1
  290. package/dist/esm/react/components/AccountMenuButton/{Web3AuthProfileButton-Db3NeoAC.css.map → Web3AuthProfileButton-BnZDUeCL.css.map} +1 -1
  291. package/dist/esm/react/components/AccountMenuButton/icons/{TouchIcon-BXM5NR4A.css → TouchIcon-CAGCi8MY.css} +1 -1
  292. package/dist/esm/react/components/AccountMenuButton/icons/{TouchIcon-BXM5NR4A.css.map → TouchIcon-CAGCi8MY.css.map} +1 -1
  293. package/dist/esm/react/components/PasskeyAuthMenu/{PasskeyAuthMenu-De1qTSmU.css → PasskeyAuthMenu-CNNxVj4L.css} +14 -1
  294. package/dist/esm/react/components/PasskeyAuthMenu/{PasskeyAuthMenu-De1qTSmU.css.map → PasskeyAuthMenu-CNNxVj4L.css.map} +1 -1
  295. package/dist/esm/react/components/PasskeyAuthMenu/ui/EmailRecoverySlide.js +123 -54
  296. package/dist/esm/react/components/PasskeyAuthMenu/ui/EmailRecoverySlide.js.map +1 -1
  297. package/dist/esm/react/components/{ShowQRCode-DCnR__fx.css → ShowQRCode-nZhZSaba.css} +1 -1
  298. package/dist/esm/react/components/{ShowQRCode-DCnR__fx.css.map → ShowQRCode-nZhZSaba.css.map} +1 -1
  299. package/dist/esm/react/deviceDetection.js +72 -93
  300. package/dist/esm/react/deviceDetection.js.map +1 -1
  301. package/dist/esm/react/hooks/usePreconnectWalletAssets.js +32 -27
  302. package/dist/esm/react/hooks/usePreconnectWalletAssets.js.map +1 -1
  303. package/dist/esm/react/hooks/useQRCamera.js +2 -1
  304. package/dist/esm/react/hooks/useQRCamera.js.map +1 -1
  305. package/dist/esm/react/sdk/src/core/EmailRecovery/index.js +12 -5
  306. package/dist/esm/react/sdk/src/core/EmailRecovery/index.js.map +1 -1
  307. package/dist/esm/react/sdk/src/core/IndexedDBManager/passkeyClientDB.js +35 -36
  308. package/dist/esm/react/sdk/src/core/IndexedDBManager/passkeyClientDB.js.map +1 -1
  309. package/dist/esm/react/sdk/src/core/NearClient.js +2 -1
  310. package/dist/esm/react/sdk/src/core/NearClient.js.map +1 -1
  311. package/dist/esm/react/sdk/src/core/TatchiPasskey/emailRecovery.js +136 -27
  312. package/dist/esm/react/sdk/src/core/TatchiPasskey/emailRecovery.js.map +1 -1
  313. package/dist/esm/react/sdk/src/core/TatchiPasskey/faucets/createAccountRelayServer.js +2 -1
  314. package/dist/esm/react/sdk/src/core/TatchiPasskey/faucets/createAccountRelayServer.js.map +1 -1
  315. package/dist/esm/react/sdk/src/core/TatchiPasskey/index.js +26 -1
  316. package/dist/esm/react/sdk/src/core/TatchiPasskey/index.js.map +1 -1
  317. package/dist/esm/react/sdk/src/core/TatchiPasskey/linkDevice.js +4 -2
  318. package/dist/esm/react/sdk/src/core/TatchiPasskey/linkDevice.js.map +1 -1
  319. package/dist/esm/react/sdk/src/core/TatchiPasskey/login.js +13 -7
  320. package/dist/esm/react/sdk/src/core/TatchiPasskey/login.js.map +1 -1
  321. package/dist/esm/react/sdk/src/core/TatchiPasskey/recoverAccount.js +2 -1
  322. package/dist/esm/react/sdk/src/core/TatchiPasskey/recoverAccount.js.map +1 -1
  323. package/dist/esm/react/sdk/src/core/TatchiPasskey/scanDevice.js +2 -1
  324. package/dist/esm/react/sdk/src/core/TatchiPasskey/scanDevice.js.map +1 -1
  325. package/dist/esm/react/sdk/src/core/WalletIframe/client/IframeTransport.js +11 -1
  326. package/dist/esm/react/sdk/src/core/WalletIframe/client/IframeTransport.js.map +1 -1
  327. package/dist/esm/react/sdk/src/core/WalletIframe/client/router.js +9 -0
  328. package/dist/esm/react/sdk/src/core/WalletIframe/client/router.js.map +1 -1
  329. package/dist/esm/react/sdk/src/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-drawer.js +1 -1
  330. package/dist/esm/react/sdk/src/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-drawer.js.map +1 -1
  331. package/dist/esm/react/sdk/src/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-modal.js +52 -52
  332. package/dist/esm/react/sdk/src/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-modal.js.map +1 -1
  333. package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/getDeviceNumber.js +6 -2
  334. package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/checkCanRegisterUser.js +2 -1
  335. package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/checkCanRegisterUser.js.map +1 -1
  336. package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/decryptPrivateKeyWithPrf.js +2 -1
  337. package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/decryptPrivateKeyWithPrf.js.map +1 -1
  338. package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/deriveNearKeypairAndEncryptFromSerialized.js +2 -1
  339. package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/deriveNearKeypairAndEncryptFromSerialized.js.map +1 -1
  340. package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/exportNearKeypairUi.js +2 -1
  341. package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/exportNearKeypairUi.js.map +1 -1
  342. package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/registerDevice2WithDerivedKey.js +2 -1
  343. package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/registerDevice2WithDerivedKey.js.map +1 -1
  344. package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/signDelegateAction.js +2 -1
  345. package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/signDelegateAction.js.map +1 -1
  346. package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/signNep413Message.js +2 -1
  347. package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/signNep413Message.js.map +1 -1
  348. package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/signTransactionsWithActions.js +2 -1
  349. package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/signTransactionsWithActions.js.map +1 -1
  350. package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/validation.js +4 -2
  351. package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/validation.js.map +1 -1
  352. package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/index.js +2 -1
  353. package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/index.js.map +1 -1
  354. package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/vrf.js +1 -0
  355. package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/vrf.js.map +1 -1
  356. package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/webauthn.js +8 -2
  357. package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/webauthn.js.map +1 -1
  358. package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/determineConfirmationConfig.js +2 -1
  359. package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/determineConfirmationConfig.js.map +1 -1
  360. package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/localOnly.js +2 -1
  361. package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/localOnly.js.map +1 -1
  362. package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js +2 -1
  363. package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js.map +1 -1
  364. package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js +5 -16
  365. package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js.map +1 -1
  366. package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/handlers/deriveVrfKeypairFromPrf.js +2 -1
  367. package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/handlers/deriveVrfKeypairFromPrf.js.map +1 -1
  368. package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfChallenge.js +2 -1
  369. package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfChallenge.js.map +1 -1
  370. package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfKeypairBootstrap.js +2 -1
  371. package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfKeypairBootstrap.js.map +1 -1
  372. package/dist/esm/react/sdk/src/core/WebAuthnManager/WebAuthnFallbacks/index.js +12 -0
  373. package/dist/esm/react/sdk/src/core/WebAuthnManager/WebAuthnFallbacks/index.js.map +1 -0
  374. package/dist/esm/react/sdk/src/core/WebAuthnManager/WebAuthnFallbacks/safari-fallbacks.js +61 -55
  375. package/dist/esm/react/sdk/src/core/WebAuthnManager/WebAuthnFallbacks/safari-fallbacks.js.map +1 -1
  376. package/dist/esm/react/sdk/src/core/WebAuthnManager/credentialsHelpers.js +8 -3
  377. package/dist/esm/react/sdk/src/core/WebAuthnManager/index.js +8 -3
  378. package/dist/esm/react/sdk/src/core/WebAuthnManager/index.js.map +1 -1
  379. package/dist/esm/react/sdk/src/core/WebAuthnManager/touchIdPrompt.js +207 -204
  380. package/dist/esm/react/sdk/src/core/WebAuthnManager/touchIdPrompt.js.map +1 -1
  381. package/dist/esm/react/sdk/src/core/WebAuthnManager/userHandle.js +2 -1
  382. package/dist/esm/react/sdk/src/core/WebAuthnManager/userHandle.js.map +1 -1
  383. package/dist/esm/react/sdk/src/core/defaultConfigs.js +1 -1
  384. package/dist/esm/react/sdk/src/core/defaultConfigs.js.map +1 -1
  385. package/dist/esm/react/sdk/src/core/types/vrf-worker.js +6 -2
  386. package/dist/esm/react/sdk/src/utils/index.js +10 -4
  387. package/dist/esm/react/styles/styles.css +13 -0
  388. package/dist/esm/sdk/{safari-fallbacks-oQKu9xUs.js → WebAuthnFallbacks-Bl4BTsNt.js} +131 -135
  389. package/dist/esm/sdk/{createAdapters-pNiL2KNq.js → createAdapters-BumKM2ft.js} +59 -54
  390. package/dist/esm/sdk/createAdapters-BumKM2ft.js.map +1 -0
  391. package/dist/esm/sdk/{createAdapters-BWLe9Ddo.js → createAdapters-qVGD6i0g.js} +10 -3
  392. package/dist/esm/sdk/{defaultConfigs-VzvDejmy.js → defaultConfigs-DpslkAQd.js} +1 -1
  393. package/dist/esm/sdk/{getDeviceNumber-CkWRT17I.js → getDeviceNumber-fXizNGQl.js} +2 -2
  394. package/dist/esm/sdk/getDeviceNumber-fXizNGQl.js.map +1 -0
  395. package/dist/esm/sdk/{getDeviceNumber-CfmlgfMX.js → getDeviceNumber-zsOHT_Um.js} +6 -3
  396. package/dist/esm/sdk/{localOnly-DnpSyDaF.js → localOnly-Byi3AK7A.js} +2 -2
  397. package/dist/esm/sdk/{localOnly-DnpSyDaF.js.map → localOnly-Byi3AK7A.js.map} +1 -1
  398. package/dist/esm/sdk/{localOnly-BdumO2st.js → localOnly-pXMTqh1m.js} +5 -4
  399. package/dist/esm/sdk/offline-export-app.js +46 -44
  400. package/dist/esm/sdk/offline-export-app.js.map +1 -1
  401. package/dist/esm/sdk/{overlay-BTqPGG-o.js → overlay-ZGbucXIa.js} +2 -0
  402. package/dist/esm/sdk/{registration-C633u6x8.js → registration-CBiS4Ua_.js} +2 -2
  403. package/dist/esm/sdk/{registration-C633u6x8.js.map → registration-CBiS4Ua_.js.map} +1 -1
  404. package/dist/esm/sdk/{registration-xyYUFRqk.js → registration-DLPLsGCz.js} +5 -4
  405. package/dist/esm/sdk/{requestHelpers-DLBGBHMw.js → requestHelpers-Dh1hEYL9.js} +206 -204
  406. package/dist/esm/sdk/{router-BG6KC_p7.js → router-BLFegW7J.js} +20 -2
  407. package/dist/esm/sdk/{rpcCalls-fLObBbbz.js → rpcCalls-DEv9x5-f.js} +2 -2
  408. package/dist/esm/sdk/{rpcCalls-CAU5XYEF.js → rpcCalls-OhgEeFig.js} +1 -1
  409. package/dist/esm/sdk/{transactions-jH38BZ-Q.js → transactions-BIqKZeR0.js} +6 -18
  410. package/dist/esm/sdk/transactions-BIqKZeR0.js.map +1 -0
  411. package/dist/esm/sdk/{transactions-CzZAt1Yn.js → transactions-Bk-VavcV.js} +10 -21
  412. package/dist/esm/sdk/tx-confirm-ui.js +53 -53
  413. package/dist/esm/sdk/{tx-confirmer-wrapper-CqfVBUaA.js → tx-confirmer-wrapper-lHNgz9i4.js} +53 -53
  414. package/dist/esm/sdk/tx-confirmer.css +6 -4
  415. package/dist/esm/sdk/w3a-tx-confirmer.js +1 -1
  416. package/dist/esm/sdk/wallet-iframe-host.js +271 -89
  417. package/dist/esm/server/email-recovery/emailEncryptor.js +11 -1
  418. package/dist/esm/server/email-recovery/emailEncryptor.js.map +1 -1
  419. package/dist/esm/server/email-recovery/emailParsers.js +55 -1
  420. package/dist/esm/server/email-recovery/emailParsers.js.map +1 -1
  421. package/dist/esm/server/email-recovery/index.js +2 -2
  422. package/dist/esm/server/email-recovery/index.js.map +1 -1
  423. package/dist/esm/server/email-recovery/rpcCalls.js +14 -1
  424. package/dist/esm/server/email-recovery/rpcCalls.js.map +1 -1
  425. package/dist/esm/server/index.js +2 -2
  426. package/dist/esm/server/router/cloudflare.js.map +1 -1
  427. package/dist/esm/server/router/express.js.map +1 -1
  428. package/dist/esm/server/sdk/src/core/defaultConfigs.js +1 -1
  429. package/dist/esm/server/sdk/src/core/defaultConfigs.js.map +1 -1
  430. package/dist/esm/utils/index.js +10 -4
  431. package/dist/esm/wasm_vrf_worker/pkg/wasm_vrf_worker.js +3 -0
  432. package/dist/esm/wasm_vrf_worker/pkg/wasm_vrf_worker_bg.wasm +0 -0
  433. package/dist/types/src/core/EmailRecovery/index.d.ts.map +1 -1
  434. package/dist/types/src/core/IndexedDBManager/passkeyClientDB.d.ts +11 -21
  435. package/dist/types/src/core/IndexedDBManager/passkeyClientDB.d.ts.map +1 -1
  436. package/dist/types/src/core/TatchiPasskey/emailRecovery.d.ts +12 -1
  437. package/dist/types/src/core/TatchiPasskey/emailRecovery.d.ts.map +1 -1
  438. package/dist/types/src/core/TatchiPasskey/index.d.ts +8 -0
  439. package/dist/types/src/core/TatchiPasskey/index.d.ts.map +1 -1
  440. package/dist/types/src/core/WalletIframe/TatchiPasskeyIframe.d.ts +4 -0
  441. package/dist/types/src/core/WalletIframe/TatchiPasskeyIframe.d.ts.map +1 -1
  442. package/dist/types/src/core/WalletIframe/client/IframeTransport.d.ts.map +1 -1
  443. package/dist/types/src/core/WalletIframe/client/router.d.ts +4 -0
  444. package/dist/types/src/core/WalletIframe/client/router.d.ts.map +1 -1
  445. package/dist/types/src/core/WalletIframe/host/wallet-iframe-handlers.d.ts.map +1 -1
  446. package/dist/types/src/core/WalletIframe/shared/messages.d.ts +6 -2
  447. package/dist/types/src/core/WalletIframe/shared/messages.d.ts.map +1 -1
  448. package/dist/types/src/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-drawer.d.ts.map +1 -1
  449. package/dist/types/src/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-modal.d.ts.map +1 -1
  450. package/dist/types/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/vrf.d.ts.map +1 -1
  451. package/dist/types/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/webauthn.d.ts.map +1 -1
  452. package/dist/types/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.d.ts.map +1 -1
  453. package/dist/types/src/core/WebAuthnManager/index.d.ts.map +1 -1
  454. package/dist/types/src/core/defaultConfigs.d.ts.map +1 -1
  455. package/dist/types/src/react/components/PasskeyAuthMenu/ui/EmailRecoverySlide.d.ts.map +1 -1
  456. package/dist/types/src/react/hooks/usePreconnectWalletAssets.d.ts.map +1 -1
  457. package/dist/types/src/server/email-recovery/emailEncryptor.d.ts +4 -0
  458. package/dist/types/src/server/email-recovery/emailEncryptor.d.ts.map +1 -1
  459. package/dist/types/src/server/email-recovery/emailParsers.d.ts +7 -0
  460. package/dist/types/src/server/email-recovery/emailParsers.d.ts.map +1 -1
  461. package/dist/types/src/server/email-recovery/index.d.ts +1 -1
  462. package/dist/types/src/server/email-recovery/rpcCalls.d.ts +1 -1
  463. package/dist/types/src/server/email-recovery/rpcCalls.d.ts.map +1 -1
  464. package/dist/types/src/wasm_vrf_worker/pkg/wasm_vrf_worker.d.ts.map +1 -1
  465. package/dist/workers/wasm_vrf_worker_bg.wasm +0 -0
  466. package/dist/workers/web3authn-vrf.worker.js +3 -0
  467. package/package.json +1 -1
  468. package/dist/esm/sdk/createAdapters-pNiL2KNq.js.map +0 -1
  469. package/dist/esm/sdk/getDeviceNumber-CkWRT17I.js.map +0 -1
  470. package/dist/esm/sdk/transactions-jH38BZ-Q.js.map +0 -1
@@ -10,13 +10,13 @@ import { base64UrlDecode } from "./base64-DBPGuXh4.js";
10
10
  import { ActionType, init_actions, toActionArgsWasm, validateActionArgsWasm } from "./actions-O1FD5Bq8.js";
11
11
  import { ensureKnownW3aElement } from "./ensure-defined-CHInSx7l.js";
12
12
  import { base58Encode, errorMessage, esm_default, getNearShortErrorMessage, getUserFriendlyErrorMessage, init_base58, init_encoders, init_errors, init_esm, isTouchIdCancellationError, toError } from "./errors-D9ar28Dr.js";
13
- import { init_validation as init_validation$1, needsExplicitActivation, normalizeRegistrationCredential, removePrfOutputGuard, serializeRegistrationCredential, serializeRegistrationCredentialWithPRF, validateNearAccountId } from "./safari-fallbacks-oQKu9xUs.js";
14
- import { MinimalNearClient, SignedTransaction, isOffline, openOfflineExport } from "./overlay-BTqPGG-o.js";
13
+ import { init_credentialsHelpers, init_utils, init_validation as init_validation$1, needsExplicitActivation, normalizeRegistrationCredential, removePrfOutputGuard, serializeRegistrationCredential, serializeRegistrationCredentialWithPRF, validateNearAccountId } from "./WebAuthnFallbacks-Bl4BTsNt.js";
14
+ import { MinimalNearClient, SignedTransaction, isOffline, openOfflineExport } from "./overlay-ZGbucXIa.js";
15
15
  import { AccountRecoveryPhase, AccountRecoveryStatus, ActionPhase, ActionStatus, DEFAULT_WAIT_STATUS, DeviceLinkingPhase, DeviceLinkingStatus, EmailRecoveryPhase, EmailRecoveryStatus, LoginPhase, LoginStatus, RegistrationPhase, RegistrationStatus, init_rpc, init_sdkSentEvents } from "./sdkSentEvents-_jrJLIhw.js";
16
- import { SecureConfirmMessageType, SecureConfirmationType, TouchIdPrompt, authenticatorsToAllowCredentials, createRandomVRFChallenge, getIntentDigest, init_accountIds, parseTransactionSummary, sanitizeForPostMessage, sendConfirmResponse, toAccountId, validateVRFChallenge } from "./requestHelpers-DLBGBHMw.js";
17
- import { PASSKEY_MANAGER_DEFAULT_CONFIGS, buildConfigsFromEnv, init_defaultConfigs } from "./defaultConfigs-VzvDejmy.js";
18
- import { buildSetRecoveryEmailsActions, checkCanRegisterUserContractCall, executeDeviceLinkingContractCalls, getCredentialIdsContractCall, getDeviceLinkingAccountContractCall, getRecoveryEmailHashesContractCall, init_rpcCalls, syncAuthenticatorsContractCall, verifyAuthenticationResponse } from "./rpcCalls-CAU5XYEF.js";
19
- import { getLastLoggedInDeviceNumber, parseDeviceNumber } from "./getDeviceNumber-CfmlgfMX.js";
16
+ import { SecureConfirmMessageType, SecureConfirmationType, TouchIdPrompt, authenticatorsToAllowCredentials, createRandomVRFChallenge, getIntentDigest, init_accountIds, init_touchIdPrompt, init_vrf_worker, parseTransactionSummary, sanitizeForPostMessage, sendConfirmResponse, toAccountId, validateVRFChallenge } from "./requestHelpers-Dh1hEYL9.js";
17
+ import { PASSKEY_MANAGER_DEFAULT_CONFIGS, buildConfigsFromEnv, init_defaultConfigs } from "./defaultConfigs-DpslkAQd.js";
18
+ import { buildSetRecoveryEmailsActions, checkCanRegisterUserContractCall, executeDeviceLinkingContractCalls, getCredentialIdsContractCall, getDeviceLinkingAccountContractCall, getRecoveryEmailHashesContractCall, init_rpcCalls, syncAuthenticatorsContractCall, verifyAuthenticationResponse } from "./rpcCalls-OhgEeFig.js";
19
+ import { getLastLoggedInDeviceNumber, init_getDeviceNumber, parseDeviceNumber } from "./getDeviceNumber-zsOHT_Um.js";
20
20
 
21
21
  //#region src/core/sdkPaths/workers.ts
22
22
  /**
@@ -1417,22 +1417,17 @@ var init_passkeyClientDB = __esm({ "src/core/IndexedDBManager/passkeyClientDB.ts
1417
1417
  * @returns filtered authenticators for allowCredentials, plus optional wrongPasskeyError
1418
1418
  */
1419
1419
  async ensureCurrentPasskey(nearAccountId, authenticators, selectedCredentialRawId) {
1420
- let authenticatorsForPrompt = authenticators;
1421
- let wrongPasskeyError;
1422
- if (authenticators.length > 1) {
1423
- const accountIdNormalized = toAccountId(nearAccountId);
1424
- const lastUser = await this.getLastUser().catch(() => null);
1425
- const expectedAccountId = lastUser?.nearAccountId;
1426
- const expectedDeviceNumber = lastUser?.deviceNumber;
1427
- if (expectedAccountId && expectedDeviceNumber && expectedAccountId === accountIdNormalized) {
1428
- const filtered = authenticators.filter((a) => a.deviceNumber === expectedDeviceNumber);
1429
- if (filtered.length > 0) authenticatorsForPrompt = filtered;
1430
- if (selectedCredentialRawId) {
1431
- const matched = authenticators.find((a) => a.credentialId === selectedCredentialRawId);
1432
- if (matched && matched.deviceNumber !== expectedDeviceNumber) wrongPasskeyError = `You have multiple passkeys (deviceNumbers) for account ${accountIdNormalized}, but used a passkey from a different device. Please use the passkey for the most recently logged-in device.`;
1433
- }
1434
- }
1435
- }
1420
+ if (authenticators.length <= 1) return { authenticatorsForPrompt: authenticators };
1421
+ const accountIdNormalized = toAccountId(nearAccountId);
1422
+ const lastUser = await this.getLastUser().catch(() => null);
1423
+ if (!lastUser || lastUser.nearAccountId !== accountIdNormalized) return { authenticatorsForPrompt: authenticators };
1424
+ const expectedDeviceNumber = lastUser.deviceNumber;
1425
+ const byDeviceNumber = authenticators.filter((a) => a.deviceNumber === expectedDeviceNumber);
1426
+ let expectedCredentialId = lastUser.passkeyCredential.rawId;
1427
+ if (byDeviceNumber.length > 0 && !byDeviceNumber.some((a) => a.credentialId === expectedCredentialId)) expectedCredentialId = byDeviceNumber[0].credentialId;
1428
+ const byCredentialId = authenticators.filter((a) => a.credentialId === expectedCredentialId);
1429
+ const authenticatorsForPrompt = byCredentialId.length > 0 ? byCredentialId : byDeviceNumber.length > 0 ? byDeviceNumber : authenticators;
1430
+ const wrongPasskeyError = selectedCredentialRawId && selectedCredentialRawId !== expectedCredentialId ? `You have multiple passkeys (deviceNumbers) for account ${accountIdNormalized}, but used a different passkey than the most recently logged-in one. Please use the passkey for the most recently logged-in device.` : void 0;
1436
1431
  return {
1437
1432
  authenticatorsForPrompt,
1438
1433
  wrongPasskeyError
@@ -1543,30 +1538,34 @@ var init_passkeyClientDB = __esm({ "src/core/IndexedDBManager/passkeyClientDB.ts
1543
1538
  * @param userData - User data with nearAccountId as primary identifier
1544
1539
  */
1545
1540
  async storeWebAuthnUserData(userData) {
1546
- if (userData.deviceNumber === void 0) console.warn("WARNING: deviceNumber is undefined in storeWebAuthnUserData, will default to 1");
1547
1541
  const validation = this.validateNearAccountId(userData.nearAccountId);
1548
1542
  if (!validation.valid) throw new Error(`Cannot store WebAuthn data for invalid account ID: ${validation.error}`);
1549
- let existingUser = await this.getUser(userData.nearAccountId);
1550
- if (!existingUser) {
1551
- const deviceNumberToUse = userData.deviceNumber || 1;
1552
- existingUser = await this.registerUser({
1553
- nearAccountId: userData.nearAccountId,
1554
- deviceNumber: deviceNumberToUse,
1555
- clientNearPublicKey: userData.clientNearPublicKey,
1556
- passkeyCredential: userData.passkeyCredential,
1557
- encryptedVrfKeypair: userData.encryptedVrfKeypair,
1558
- version: userData.version || 2,
1559
- serverEncryptedVrfKeypair: userData.serverEncryptedVrfKeypair
1560
- });
1561
- }
1562
- const finalDeviceNumber = userData.deviceNumber || existingUser.deviceNumber;
1563
- await this.updateUser(userData.nearAccountId, {
1543
+ const accountId = toAccountId(userData.nearAccountId);
1544
+ const deviceNumber = userData.deviceNumber;
1545
+ let user = await this.getUser(accountId, deviceNumber);
1546
+ if (!user) user = await this.registerUser({
1547
+ nearAccountId: accountId,
1548
+ deviceNumber,
1564
1549
  clientNearPublicKey: userData.clientNearPublicKey,
1550
+ passkeyCredential: userData.passkeyCredential,
1565
1551
  encryptedVrfKeypair: userData.encryptedVrfKeypair,
1566
- serverEncryptedVrfKeypair: userData.serverEncryptedVrfKeypair,
1567
- version: userData.version || existingUser.version,
1568
- deviceNumber: finalDeviceNumber,
1569
- lastUpdated: userData.lastUpdated || Date.now()
1552
+ version: userData.version || 2,
1553
+ serverEncryptedVrfKeypair: userData.serverEncryptedVrfKeypair
1554
+ });
1555
+ const updatedUser = {
1556
+ ...user,
1557
+ clientNearPublicKey: userData.clientNearPublicKey,
1558
+ passkeyCredential: userData.passkeyCredential,
1559
+ encryptedVrfKeypair: userData.encryptedVrfKeypair,
1560
+ serverEncryptedVrfKeypair: userData.serverEncryptedVrfKeypair ?? user.serverEncryptedVrfKeypair,
1561
+ version: userData.version ?? user.version,
1562
+ lastUpdated: userData.lastUpdated ?? Date.now()
1563
+ };
1564
+ await this.storeUser(updatedUser);
1565
+ this.emitEvent({
1566
+ type: "user-updated",
1567
+ accountId,
1568
+ data: { updatedUser }
1570
1569
  });
1571
1570
  }
1572
1571
  async getAllUsers() {
@@ -2220,6 +2219,13 @@ const DEVICE_LINKING_CONFIG = {
2220
2219
 
2221
2220
  //#endregion
2222
2221
  //#region src/core/workerControlMessages.ts
2222
+ init_touchIdPrompt();
2223
+ init_credentialsHelpers();
2224
+ init_vrf_worker();
2225
+ init_utils();
2226
+ init_encoders();
2227
+ init_base58();
2228
+ init_esm();
2223
2229
  /**
2224
2230
  * Control messages exchanged between worker shims and the main thread.
2225
2231
  *
@@ -2375,11 +2381,9 @@ async function checkCanRegisterUser({ ctx, vrfChallenge, credential, contractId,
2375
2381
 
2376
2382
  //#endregion
2377
2383
  //#region src/core/types/authenticatorOptions.ts
2384
+ init_getDeviceNumber();
2378
2385
  init_sdkSentEvents();
2379
2386
  init_rpc();
2380
- init_encoders();
2381
- init_base58();
2382
- init_esm();
2383
2387
  init_actions();
2384
2388
  init_wasm_signer_worker();
2385
2389
  /**
@@ -2500,6 +2504,7 @@ async function deriveNearKeypairAndEncryptFromSerialized({ ctx, credential, near
2500
2504
  //#region src/core/WebAuthnManager/SignerWorkerManager/handlers/decryptPrivateKeyWithPrf.ts
2501
2505
  init_signer_worker();
2502
2506
  init_accountIds();
2507
+ init_getDeviceNumber();
2503
2508
  init_validation();
2504
2509
  async function decryptPrivateKeyWithPrf({ ctx, nearAccountId, authenticators, sessionId }) {
2505
2510
  try {
@@ -2567,6 +2572,7 @@ const generateSessionId = () => {
2567
2572
  init_signer_worker();
2568
2573
  init_defaultConfigs();
2569
2574
  init_accountIds();
2575
+ init_getDeviceNumber();
2570
2576
  init_validation();
2571
2577
  /**
2572
2578
  * Sign multiple transactions with shared VRF challenge and credential
@@ -2662,6 +2668,7 @@ async function signTransactionsWithActions$1({ ctx, transactions, rpcCall, onEve
2662
2668
 
2663
2669
  //#endregion
2664
2670
  //#region src/core/WebAuthnManager/SignerWorkerManager/handlers/validation.ts
2671
+ init_credentialsHelpers();
2665
2672
  init_validation();
2666
2673
  function validateTransactionContextMaybe(input) {
2667
2674
  if (input == null) return void 0;
@@ -2737,6 +2744,7 @@ init_defaultConfigs();
2737
2744
  init_accountIds();
2738
2745
  init_actions();
2739
2746
  init_signer_worker();
2747
+ init_getDeviceNumber();
2740
2748
  async function signDelegateAction$1({ ctx, delegate, rpcCall, onEvent, confirmationConfigOverride, title, body, sessionId: providedSessionId }) {
2741
2749
  const sessionId = providedSessionId ?? generateSessionId();
2742
2750
  const nearAccountId = rpcCall.nearAccountId || delegate.senderId;
@@ -2938,6 +2946,7 @@ async function signTransactionWithKeyPair({ ctx, nearPrivateKey, signerAccountId
2938
2946
  //#endregion
2939
2947
  //#region src/core/WebAuthnManager/SignerWorkerManager/handlers/signNep413Message.ts
2940
2948
  init_signer_worker();
2949
+ init_getDeviceNumber();
2941
2950
  init_validation();
2942
2951
  /**
2943
2952
  * Sign a NEP-413 message using the user's passkey-derived private key
@@ -3112,6 +3121,7 @@ async function registerDevice2WithDerivedKey({ ctx, sessionId, nearAccountId, cr
3112
3121
 
3113
3122
  //#endregion
3114
3123
  //#region src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/determineConfirmationConfig.ts
3124
+ init_utils();
3115
3125
  /**
3116
3126
  * determineConfirmationConfig
3117
3127
  *
@@ -3261,42 +3271,42 @@ async function importFlow(label, loader) {
3261
3271
  }
3262
3272
  const HANDLERS = {
3263
3273
  [SecureConfirmationType.DECRYPT_PRIVATE_KEY_WITH_PRF]: async ({ ctx, request, worker, confirmationConfig, transactionSummary }) => {
3264
- const { handleLocalOnlyFlow } = await importFlow("localOnly", () => import("./localOnly-BdumO2st.js"));
3274
+ const { handleLocalOnlyFlow } = await importFlow("localOnly", () => import("./localOnly-pXMTqh1m.js"));
3265
3275
  await handleLocalOnlyFlow(ctx, request, worker, {
3266
3276
  confirmationConfig,
3267
3277
  transactionSummary
3268
3278
  });
3269
3279
  },
3270
3280
  [SecureConfirmationType.SHOW_SECURE_PRIVATE_KEY_UI]: async ({ ctx, request, worker, confirmationConfig, transactionSummary }) => {
3271
- const { handleLocalOnlyFlow } = await importFlow("localOnly", () => import("./localOnly-BdumO2st.js"));
3281
+ const { handleLocalOnlyFlow } = await importFlow("localOnly", () => import("./localOnly-pXMTqh1m.js"));
3272
3282
  await handleLocalOnlyFlow(ctx, request, worker, {
3273
3283
  confirmationConfig,
3274
3284
  transactionSummary
3275
3285
  });
3276
3286
  },
3277
3287
  [SecureConfirmationType.REGISTER_ACCOUNT]: async ({ ctx, request, worker, confirmationConfig, transactionSummary }) => {
3278
- const { handleRegistrationFlow } = await importFlow("registration", () => import("./registration-xyYUFRqk.js"));
3288
+ const { handleRegistrationFlow } = await importFlow("registration", () => import("./registration-DLPLsGCz.js"));
3279
3289
  await handleRegistrationFlow(ctx, request, worker, {
3280
3290
  confirmationConfig,
3281
3291
  transactionSummary
3282
3292
  });
3283
3293
  },
3284
3294
  [SecureConfirmationType.LINK_DEVICE]: async ({ ctx, request, worker, confirmationConfig, transactionSummary }) => {
3285
- const { handleRegistrationFlow } = await importFlow("registration", () => import("./registration-xyYUFRqk.js"));
3295
+ const { handleRegistrationFlow } = await importFlow("registration", () => import("./registration-DLPLsGCz.js"));
3286
3296
  await handleRegistrationFlow(ctx, request, worker, {
3287
3297
  confirmationConfig,
3288
3298
  transactionSummary
3289
3299
  });
3290
3300
  },
3291
3301
  [SecureConfirmationType.SIGN_TRANSACTION]: async ({ ctx, request, worker, confirmationConfig, transactionSummary }) => {
3292
- const { handleTransactionSigningFlow } = await importFlow("transactions", () => import("./transactions-CzZAt1Yn.js"));
3302
+ const { handleTransactionSigningFlow } = await importFlow("transactions", () => import("./transactions-Bk-VavcV.js"));
3293
3303
  await handleTransactionSigningFlow(ctx, request, worker, {
3294
3304
  confirmationConfig,
3295
3305
  transactionSummary
3296
3306
  });
3297
3307
  },
3298
3308
  [SecureConfirmationType.SIGN_NEP413_MESSAGE]: async ({ ctx, request, worker, confirmationConfig, transactionSummary }) => {
3299
- const { handleTransactionSigningFlow } = await importFlow("transactions", () => import("./transactions-CzZAt1Yn.js"));
3309
+ const { handleTransactionSigningFlow } = await importFlow("transactions", () => import("./transactions-Bk-VavcV.js"));
3300
3310
  await handleTransactionSigningFlow(ctx, request, worker, {
3301
3311
  confirmationConfig,
3302
3312
  transactionSummary
@@ -3329,6 +3339,7 @@ async function runSecureConfirm(ctx, request) {
3329
3339
  init_validation();
3330
3340
  init_accountIds();
3331
3341
  init_signer_worker();
3342
+ init_getDeviceNumber();
3332
3343
  /**
3333
3344
  * Two-phase export (worker-driven):
3334
3345
  * - Phase 1: collect PRF (uiMode: 'skip') and derive WrapKeySeed in VRF worker
@@ -4129,6 +4140,7 @@ async function createSigningSessionChannel(ctx, sessionId) {
4129
4140
 
4130
4141
  //#endregion
4131
4142
  //#region src/core/WebAuthnManager/VrfWorkerManager/handlers/deriveVrfKeypairFromPrf.ts
4143
+ init_vrf_worker();
4132
4144
  /**
4133
4145
  * Derive deterministic VRF keypair from PRF output embedded in a WebAuthn credential.
4134
4146
  */
@@ -4246,6 +4258,7 @@ async function dispenseSessionKey(ctx, args) {
4246
4258
 
4247
4259
  //#endregion
4248
4260
  //#region src/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfChallenge.ts
4261
+ init_vrf_worker();
4249
4262
  /**
4250
4263
  * Generate a VRF challenge and cache it under `sessionId` inside the VRF worker.
4251
4264
  *
@@ -4287,6 +4300,7 @@ async function generateVrfChallengeInternal(ctx, inputData, sessionId) {
4287
4300
 
4288
4301
  //#endregion
4289
4302
  //#region src/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfKeypairBootstrap.ts
4303
+ init_vrf_worker();
4290
4304
  /**
4291
4305
  * Registration bootstrap: generate a fresh random VRF keypair in the VRF worker and (optionally)
4292
4306
  * generate a VRF challenge from it.
@@ -5631,7 +5645,9 @@ function __isWalletIframeHostMode() {
5631
5645
  //#endregion
5632
5646
  //#region src/core/WebAuthnManager/index.ts
5633
5647
  init_IndexedDBManager();
5648
+ init_touchIdPrompt();
5634
5649
  init_accountIds();
5650
+ init_getDeviceNumber();
5635
5651
  /**
5636
5652
  * WebAuthnManager - Main orchestrator for WebAuthn operations
5637
5653
  *
@@ -6154,6 +6170,7 @@ var WebAuthnManager = class {
6154
6170
  async storeUserData(userData) {
6155
6171
  await IndexedDBManager.clientDB.storeWebAuthnUserData({
6156
6172
  ...userData,
6173
+ deviceNumber: userData.deviceNumber ?? 1,
6157
6174
  version: userData.version || 2
6158
6175
  });
6159
6176
  }
@@ -6209,10 +6226,12 @@ var WebAuthnManager = class {
6209
6226
  return await IndexedDBManager.clientDB.registerUser(storeUserData);
6210
6227
  }
6211
6228
  async storeAuthenticator(authenticatorData) {
6229
+ const deviceNumber = Number(authenticatorData.deviceNumber);
6230
+ const normalizedDeviceNumber = Number.isSafeInteger(deviceNumber) && deviceNumber >= 1 ? deviceNumber : 1;
6212
6231
  const authData = {
6213
6232
  ...authenticatorData,
6214
6233
  nearAccountId: toAccountId(authenticatorData.nearAccountId),
6215
- deviceNumber: authenticatorData.deviceNumber || 1
6234
+ deviceNumber: normalizedDeviceNumber
6216
6235
  };
6217
6236
  return await IndexedDBManager.clientDB.storeAuthenticator(authData);
6218
6237
  }
@@ -6477,9 +6496,6 @@ var WebAuthnManager = class {
6477
6496
 
6478
6497
  //#endregion
6479
6498
  //#region src/core/TatchiPasskey/login.ts
6480
- init_errors();
6481
- init_IndexedDBManager();
6482
- init_rpcCalls();
6483
6499
  /**
6484
6500
  * Core login function that handles passkey authentication without React dependencies.
6485
6501
  *
@@ -7027,9 +7043,17 @@ async function logoutAndClearSession(context) {
7027
7043
  webAuthnManager.getNonceManager().clear();
7028
7044
  } catch {}
7029
7045
  }
7046
+ var init_login = __esm({ "src/core/TatchiPasskey/login.ts": (() => {
7047
+ init_errors();
7048
+ init_vrf_worker();
7049
+ init_touchIdPrompt();
7050
+ init_IndexedDBManager();
7051
+ init_rpcCalls();
7052
+ }) });
7030
7053
 
7031
7054
  //#endregion
7032
7055
  //#region src/core/TatchiPasskey/actions.ts
7056
+ init_login();
7033
7057
  init_actions();
7034
7058
  init_sdkSentEvents();
7035
7059
  init_errors();
@@ -7472,6 +7496,7 @@ async function wasmAuthenticateAndSignTransactions(context, nearAccountId, trans
7472
7496
 
7473
7497
  //#endregion
7474
7498
  //#region src/core/WebAuthnManager/userHandle.ts
7499
+ init_utils();
7475
7500
  init_validation$1();
7476
7501
  /**
7477
7502
  * Parse a WebAuthn userHandle into a NEAR account ID.
@@ -7506,6 +7531,7 @@ function parseAccountIdFromUserHandle(userHandle) {
7506
7531
  init_sdkSentEvents();
7507
7532
  init_validation$1();
7508
7533
  init_accountIds();
7534
+ init_vrf_worker();
7509
7535
  init_IndexedDBManager();
7510
7536
  init_rpcCalls();
7511
7537
  /**
@@ -7921,6 +7947,7 @@ async function restoreAuthenticators({ webAuthnManager, accountId, contractAuthe
7921
7947
  //#endregion
7922
7948
  //#region src/core/TatchiPasskey/faucets/createAccountRelayServer.ts
7923
7949
  init_sdkSentEvents();
7950
+ init_credentialsHelpers();
7924
7951
  init_validation();
7925
7952
  init_errors();
7926
7953
  /**
@@ -8881,6 +8908,7 @@ init_IndexedDBManager();
8881
8908
  init_actions();
8882
8909
  init_rpcCalls();
8883
8910
  init_sdkSentEvents();
8911
+ init_getDeviceNumber();
8884
8912
  async function generateQRCodeDataURL(data) {
8885
8913
  const { default: QRCode } = await import("./browser-B3uuzKL0.js").then(__toDynamicImportESM(1));
8886
8914
  return QRCode.toDataURL(data, {
@@ -9571,6 +9599,7 @@ var LinkDeviceFlow = class {
9571
9599
  //#endregion
9572
9600
  //#region src/core/TatchiPasskey/scanDevice.ts
9573
9601
  init_validation$1();
9602
+ init_login();
9574
9603
  init_sdkSentEvents();
9575
9604
  init_rpcCalls();
9576
9605
  /**
@@ -9909,11 +9938,18 @@ const EXPORT_NEAR_KEYPAIR_CANCELLED = "EXPORT_NEAR_KEYPAIR_CANCELLED";
9909
9938
  init_accountIds();
9910
9939
  init_IndexedDBManager();
9911
9940
  const canonicalizeEmail = (email) => {
9912
- let addr = email;
9913
- const angleStart = email.indexOf("<");
9914
- const angleEnd = email.indexOf(">");
9915
- if (angleStart !== -1 && angleEnd > angleStart) addr = email.slice(angleStart + 1, angleEnd);
9916
- return addr.trim().toLowerCase();
9941
+ const raw = String(email || "").trim();
9942
+ if (!raw) return "";
9943
+ const withoutHeaderName = raw.replace(/^[a-z0-9-]+\s*:\s*/i, "").trim();
9944
+ const emailRegex = /([a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*)/;
9945
+ const angleMatch = withoutHeaderName.match(/<([^>]+)>/);
9946
+ const candidates = [angleMatch?.[1], withoutHeaderName].filter((v) => typeof v === "string" && v.length > 0);
9947
+ for (const candidate of candidates) {
9948
+ const cleaned = candidate.replace(/^mailto:\s*/i, "");
9949
+ const match = cleaned.match(emailRegex);
9950
+ if (match?.[1]) return match[1].trim().toLowerCase();
9951
+ }
9952
+ return withoutHeaderName.toLowerCase();
9917
9953
  };
9918
9954
  const bytesToHex = (bytes) => {
9919
9955
  const arr = bytes instanceof Uint8Array ? bytes : Uint8Array.from(bytes);
@@ -10007,6 +10043,10 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
10007
10043
  init_validation$1();
10008
10044
  init_accountIds();
10009
10045
  init_sdkSentEvents();
10046
+ init_vrf_worker();
10047
+ init_rpc();
10048
+ init_getDeviceNumber();
10049
+ init_login();
10010
10050
  EmailRecoveryFlow = class {
10011
10051
  context;
10012
10052
  options;
@@ -10048,6 +10088,12 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
10048
10088
  getConfig() {
10049
10089
  return getEmailRecoveryConfig(this.context.configs);
10050
10090
  }
10091
+ getPendingIndexKey(accountId) {
10092
+ return `pendingEmailRecovery:${accountId}`;
10093
+ }
10094
+ getPendingRecordKey(accountId, nearPublicKey) {
10095
+ return `${this.getPendingIndexKey(accountId)}:${nearPublicKey}`;
10096
+ }
10051
10097
  async checkVerificationStatus(rec) {
10052
10098
  const { dkimVerifierAccountId, verificationViewMethod } = this.getConfig();
10053
10099
  if (!dkimVerifierAccountId) return null;
@@ -10066,22 +10112,26 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
10066
10112
  return {
10067
10113
  completed: true,
10068
10114
  success: false,
10069
- errorMessage: errorMessage$1
10115
+ errorMessage: errorMessage$1,
10116
+ transactionHash: result.transaction_hash
10070
10117
  };
10071
10118
  }
10072
10119
  if (result.account_id && result.account_id !== rec.accountId) return {
10073
10120
  completed: true,
10074
10121
  success: false,
10075
- errorMessage: "Email verification account_id does not match requested account."
10122
+ errorMessage: "Email verification account_id does not match requested account.",
10123
+ transactionHash: result.transaction_hash
10076
10124
  };
10077
10125
  if (result.new_public_key && result.new_public_key !== rec.nearPublicKey) return {
10078
10126
  completed: true,
10079
10127
  success: false,
10080
- errorMessage: "Email verification new_public_key does not match expected recovery key."
10128
+ errorMessage: "Email verification new_public_key does not match expected recovery key.",
10129
+ transactionHash: result.transaction_hash
10081
10130
  };
10082
10131
  return {
10083
10132
  completed: true,
10084
- success: true
10133
+ success: true,
10134
+ transactionHash: result.transaction_hash
10085
10135
  };
10086
10136
  } catch (err$1) {
10087
10137
  console.warn("[EmailRecoveryFlow] get_verification_result view failed; falling back to access key polling", err$1);
@@ -10090,25 +10140,37 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
10090
10140
  }
10091
10141
  async loadPending(accountId, nearPublicKey) {
10092
10142
  const { pendingTtlMs } = this.getConfig();
10093
- const keyPrefix = `pendingEmailRecovery:${accountId}`;
10094
- const key = nearPublicKey ? `${keyPrefix}:${nearPublicKey}` : keyPrefix;
10095
- const record = await IndexedDBManager.clientDB.getAppState(key);
10096
- if (!record) return null;
10143
+ const indexKey = this.getPendingIndexKey(accountId);
10144
+ const indexedNearPublicKey = await IndexedDBManager.clientDB.getAppState(indexKey);
10145
+ const resolvedNearPublicKey = nearPublicKey ?? indexedNearPublicKey;
10146
+ if (!resolvedNearPublicKey) return null;
10147
+ const recordKey = this.getPendingRecordKey(accountId, resolvedNearPublicKey);
10148
+ const record = await IndexedDBManager.clientDB.getAppState(recordKey);
10149
+ const shouldClearIndex = indexedNearPublicKey === resolvedNearPublicKey;
10150
+ if (!record) {
10151
+ if (shouldClearIndex) await IndexedDBManager.clientDB.setAppState(indexKey, void 0).catch(() => {});
10152
+ return null;
10153
+ }
10097
10154
  if (Date.now() - record.createdAt > pendingTtlMs) {
10098
- await IndexedDBManager.clientDB.setAppState(key, void 0);
10155
+ await IndexedDBManager.clientDB.setAppState(recordKey, void 0).catch(() => {});
10156
+ if (shouldClearIndex) await IndexedDBManager.clientDB.setAppState(indexKey, void 0).catch(() => {});
10099
10157
  return null;
10100
10158
  }
10159
+ await IndexedDBManager.clientDB.setAppState(indexKey, record.nearPublicKey).catch(() => {});
10101
10160
  return record;
10102
10161
  }
10103
10162
  async savePending(rec) {
10104
- const key = `pendingEmailRecovery:${rec.accountId}:${rec.nearPublicKey}`;
10163
+ const key = this.getPendingRecordKey(rec.accountId, rec.nearPublicKey);
10105
10164
  await IndexedDBManager.clientDB.setAppState(key, rec);
10165
+ await IndexedDBManager.clientDB.setAppState(this.getPendingIndexKey(rec.accountId), rec.nearPublicKey).catch(() => {});
10106
10166
  this.pending = rec;
10107
10167
  }
10108
10168
  async clearPending(accountId, nearPublicKey) {
10109
- const keyPrefix = `pendingEmailRecovery:${accountId}`;
10110
- const key = nearPublicKey ? `${keyPrefix}:${nearPublicKey}` : keyPrefix;
10111
- await IndexedDBManager.clientDB.setAppState(key, void 0);
10169
+ const indexKey = this.getPendingIndexKey(accountId);
10170
+ const idx = await IndexedDBManager.clientDB.getAppState(indexKey).catch(() => void 0);
10171
+ const resolvedNearPublicKey = nearPublicKey || idx || "";
10172
+ if (resolvedNearPublicKey) await IndexedDBManager.clientDB.setAppState(this.getPendingRecordKey(accountId, resolvedNearPublicKey), void 0).catch(() => {});
10173
+ if (!nearPublicKey || idx === nearPublicKey) await IndexedDBManager.clientDB.setAppState(indexKey, void 0).catch(() => {});
10112
10174
  if (this.pending && this.pending.accountId === accountId && (!nearPublicKey || this.pending.nearPublicKey === nearPublicKey)) this.pending = null;
10113
10175
  }
10114
10176
  getState() {
@@ -10213,7 +10275,7 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
10213
10275
  }
10214
10276
  let deviceNumber = 1;
10215
10277
  try {
10216
- const { syncAuthenticatorsContractCall: syncAuthenticatorsContractCall$1 } = await import("./rpcCalls-fLObBbbz.js");
10278
+ const { syncAuthenticatorsContractCall: syncAuthenticatorsContractCall$1 } = await import("./rpcCalls-DEv9x5-f.js");
10217
10279
  const authenticators = await syncAuthenticatorsContractCall$1(this.context.nearClient, this.context.configs.contractId, nearAccountId);
10218
10280
  const numbers = authenticators.map((a) => a?.authenticator?.deviceNumber).filter((n) => typeof n === "number" && Number.isFinite(n));
10219
10281
  const max = numbers.length > 0 ? Math.max(...numbers) : 0;
@@ -10229,7 +10291,10 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
10229
10291
  message: "Collecting passkey for email recovery..."
10230
10292
  });
10231
10293
  try {
10232
- const confirmerText = this.options?.confirmerText;
10294
+ const confirmerText = {
10295
+ title: this.options?.confirmerText?.title ?? "Register New Recovery Account",
10296
+ body: this.options?.confirmerText?.body ?? "Create a recovery account and send an encrypted email to recover your account."
10297
+ };
10233
10298
  const confirm = await this.context.webAuthnManager.requestRegistrationCredentialConfirmation({
10234
10299
  nearAccountId,
10235
10300
  deviceNumber,
@@ -10357,6 +10422,22 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
10357
10422
  this.pollIntervalResolver = void 0;
10358
10423
  }
10359
10424
  }
10425
+ /**
10426
+ * Best-effort cancellation and local state reset so callers can retry.
10427
+ * This does not remove any passkey created in the browser/OS (WebAuthn has no delete API),
10428
+ * but it will stop polling and clear the pending IndexedDB record for the given key.
10429
+ */
10430
+ async cancelAndReset(args) {
10431
+ this.stopPolling();
10432
+ const normalizedAccountId = (args?.accountId || this.pending?.accountId || "").toString().trim();
10433
+ const nearPublicKey = (args?.nearPublicKey || this.pending?.nearPublicKey || "").toString().trim();
10434
+ if (normalizedAccountId) try {
10435
+ await this.clearPending(toAccountId(normalizedAccountId), nearPublicKey);
10436
+ } catch {}
10437
+ this.pending = null;
10438
+ this.error = void 0;
10439
+ this.phase = EmailRecoveryPhase.STEP_1_PREPARATION;
10440
+ }
10360
10441
  async finalize(args) {
10361
10442
  const { accountId, nearPublicKey } = args;
10362
10443
  this.cancelled = false;
@@ -10431,11 +10512,12 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
10431
10512
  step: 4,
10432
10513
  phase: EmailRecoveryPhase.STEP_4_POLLING_VERIFICATION_RESULT,
10433
10514
  status: EmailRecoveryStatus.PROGRESS,
10434
- message: completed && success ? `Recovery email verified for request ${rec.requestId}; finalizing registration...` : `Waiting for recovery email verification for request ${rec.requestId}...`,
10515
+ message: completed && success ? `Email verified for request ${rec.requestId}; finalizing registration` : `Waiting for email verification for request ${rec.requestId}`,
10435
10516
  data: {
10436
10517
  accountId: rec.accountId,
10437
10518
  requestId: rec.requestId,
10438
10519
  nearPublicKey: rec.nearPublicKey,
10520
+ transactionHash: verification?.transactionHash,
10439
10521
  elapsedMs: elapsed,
10440
10522
  pollCount
10441
10523
  }
@@ -10452,6 +10534,7 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
10452
10534
  await this.savePending(rec);
10453
10535
  return;
10454
10536
  }
10537
+ if (this.cancelled) break;
10455
10538
  await new Promise((resolve) => {
10456
10539
  this.pollIntervalResolver = resolve;
10457
10540
  this.pollingTimer = setTimeout(() => {
@@ -10502,7 +10585,51 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
10502
10585
  }
10503
10586
  const signedTx = registrationResult.signedTransaction;
10504
10587
  try {
10505
- await this.context.nearClient.sendTransaction(signedTx);
10588
+ const txResult = await this.context.nearClient.sendTransaction(signedTx, DEFAULT_WAIT_STATUS.linkDeviceRegistration);
10589
+ try {
10590
+ const txHash = txResult?.transaction?.hash || txResult?.transaction_hash;
10591
+ if (txHash) {
10592
+ this.emit({
10593
+ step: 5,
10594
+ phase: EmailRecoveryPhase.STEP_5_FINALIZING_REGISTRATION,
10595
+ status: EmailRecoveryStatus.PROGRESS,
10596
+ message: "Registration transaction confirmed",
10597
+ data: {
10598
+ accountId: rec.accountId,
10599
+ nearPublicKey: rec.nearPublicKey,
10600
+ transactionHash: txHash
10601
+ }
10602
+ });
10603
+ try {
10604
+ await IndexedDBManager.clientDB.storeWebAuthnUserData({
10605
+ nearAccountId: accountId,
10606
+ deviceNumber: rec.deviceNumber,
10607
+ clientNearPublicKey: rec.nearPublicKey,
10608
+ passkeyCredential: {
10609
+ id: rec.credential.id,
10610
+ rawId: rec.credential.rawId
10611
+ },
10612
+ encryptedVrfKeypair: rec.encryptedVrfKeypair,
10613
+ serverEncryptedVrfKeypair: rec.serverEncryptedVrfKeypair || void 0
10614
+ });
10615
+ const { syncAuthenticatorsContractCall: syncAuthenticatorsContractCall$1 } = await import("./rpcCalls-DEv9x5-f.js");
10616
+ const authenticators = await syncAuthenticatorsContractCall$1(this.context.nearClient, this.context.configs.contractId, accountId);
10617
+ const mappedAuthenticators = authenticators.map(({ authenticator }) => ({
10618
+ credentialId: authenticator.credentialId,
10619
+ credentialPublicKey: authenticator.credentialPublicKey,
10620
+ transports: authenticator.transports,
10621
+ name: authenticator.name,
10622
+ registered: authenticator.registered.toISOString(),
10623
+ vrfPublicKey: authenticator.vrfPublicKeys?.[0] || "",
10624
+ deviceNumber: authenticator.deviceNumber
10625
+ }));
10626
+ await IndexedDBManager.clientDB.syncAuthenticatorsFromContract(accountId, mappedAuthenticators);
10627
+ await IndexedDBManager.clientDB.setLastUser(accountId, rec.deviceNumber);
10628
+ } catch (syncErr) {
10629
+ console.warn("[EmailRecoveryFlow] Failed to sync authenticators after recovery:", syncErr);
10630
+ }
10631
+ }
10632
+ } catch {}
10506
10633
  } catch (e) {
10507
10634
  const msg = String(e?.message || "");
10508
10635
  const err$1 = this.emitError(5, msg || "Failed to broadcast email recovery registration transaction (insufficient funds or RPC error)");
@@ -10576,6 +10703,8 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
10576
10703
  });
10577
10704
  const { webAuthnManager } = this.context;
10578
10705
  const accountId = toAccountId(rec.accountId);
10706
+ const deviceNumber = parseDeviceNumber(rec.deviceNumber, { min: 1 });
10707
+ if (deviceNumber === null) throw new Error(`Invalid deviceNumber for auto-login: ${String(rec.deviceNumber)}`);
10579
10708
  if (rec.serverEncryptedVrfKeypair && rec.serverEncryptedVrfKeypair.serverKeyId && this.context.configs.vrfWorkerConfigs?.shamir3pass?.relayServerUrl) try {
10580
10709
  const unlockResult = await webAuthnManager.shamir3PassDecryptVrfKeypair({
10581
10710
  nearAccountId: accountId,
@@ -10584,8 +10713,14 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
10584
10713
  serverKeyId: rec.serverEncryptedVrfKeypair.serverKeyId
10585
10714
  });
10586
10715
  if (unlockResult.success) {
10716
+ const vrfStatus$1 = await webAuthnManager.checkVrfStatus();
10717
+ const vrfActiveForAccount$1 = vrfStatus$1.active && vrfStatus$1.nearAccountId && String(vrfStatus$1.nearAccountId) === String(accountId);
10718
+ if (!vrfActiveForAccount$1) throw new Error("VRF session inactive after Shamir3Pass unlock");
10719
+ await webAuthnManager.setLastUser(accountId, deviceNumber);
10587
10720
  await webAuthnManager.initializeCurrentUser(accountId, this.context.nearClient);
10588
- await webAuthnManager.setLastUser(accountId, rec.deviceNumber);
10721
+ try {
10722
+ await getLoginSession(this.context, accountId);
10723
+ } catch {}
10589
10724
  this.emit({
10590
10725
  step: 5,
10591
10726
  phase: EmailRecoveryPhase.STEP_5_FINALIZING_REGISTRATION,
@@ -10598,27 +10733,30 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
10598
10733
  } catch (err$1) {
10599
10734
  console.warn("[EmailRecoveryFlow] Shamir 3-pass unlock failed, falling back to TouchID", err$1);
10600
10735
  }
10601
- const { txBlockHash, txBlockHeight } = await webAuthnManager.getNonceManager().getNonceBlockHashAndHeight(this.context.nearClient);
10602
- const authChallenge = await webAuthnManager.generateVrfChallengeOnce({
10603
- userId: accountId,
10604
- rpId: webAuthnManager.getRpId(),
10605
- blockHash: txBlockHash,
10606
- blockHeight: txBlockHeight
10607
- });
10608
- const authenticators = await webAuthnManager.getAuthenticatorsByUser(accountId);
10736
+ const authChallenge = createRandomVRFChallenge();
10737
+ const storedCredentialId = String(rec.credential?.rawId || rec.credential?.id || "").trim();
10738
+ const credentialIds = storedCredentialId ? [storedCredentialId] : [];
10739
+ const authenticators = credentialIds.length > 0 ? [] : await webAuthnManager.getAuthenticatorsByUser(accountId);
10609
10740
  const authCredential = await webAuthnManager.getAuthenticationCredentialsSerializedDualPrf({
10610
10741
  nearAccountId: accountId,
10611
10742
  challenge: authChallenge,
10612
- credentialIds: authenticators.map((a) => a.credentialId)
10743
+ credentialIds: credentialIds.length > 0 ? credentialIds : authenticators.map((a) => a.credentialId)
10613
10744
  });
10745
+ if (storedCredentialId && authCredential.rawId !== storedCredentialId) throw new Error("Wrong passkey selected during recovery auto-login; please use the newly recovered passkey.");
10614
10746
  const vrfUnlockResult = await webAuthnManager.unlockVRFKeypair({
10615
10747
  nearAccountId: accountId,
10616
10748
  encryptedVrfKeypair: rec.encryptedVrfKeypair,
10617
10749
  credential: authCredential
10618
10750
  });
10619
10751
  if (!vrfUnlockResult.success) throw new Error(vrfUnlockResult.error || "VRF unlock failed during auto-login");
10752
+ const vrfStatus = await webAuthnManager.checkVrfStatus();
10753
+ const vrfActiveForAccount = vrfStatus.active && vrfStatus.nearAccountId && String(vrfStatus.nearAccountId) === String(accountId);
10754
+ if (!vrfActiveForAccount) throw new Error("VRF session inactive after TouchID unlock");
10755
+ await webAuthnManager.setLastUser(accountId, deviceNumber);
10620
10756
  await webAuthnManager.initializeCurrentUser(accountId, this.context.nearClient);
10621
- await webAuthnManager.setLastUser(accountId, rec.deviceNumber);
10757
+ try {
10758
+ await getLoginSession(this.context, accountId);
10759
+ } catch {}
10622
10760
  this.emit({
10623
10761
  step: 5,
10624
10762
  phase: EmailRecoveryPhase.STEP_5_FINALIZING_REGISTRATION,
@@ -10628,6 +10766,9 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
10628
10766
  });
10629
10767
  } catch (err$1) {
10630
10768
  console.warn("[EmailRecoveryFlow] Auto-login failed after recovery", err$1);
10769
+ try {
10770
+ await this.context.webAuthnManager.clearVrfSession();
10771
+ } catch {}
10631
10772
  this.emit({
10632
10773
  step: 5,
10633
10774
  phase: EmailRecoveryPhase.STEP_5_FINALIZING_REGISTRATION,
@@ -10645,6 +10786,7 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
10645
10786
 
10646
10787
  //#endregion
10647
10788
  //#region src/core/TatchiPasskey/index.ts
10789
+ init_login();
10648
10790
  init_sdkSentEvents();
10649
10791
  init_accountIds();
10650
10792
  init_IndexedDBManager();
@@ -10707,7 +10849,7 @@ var TatchiPasskey = class {
10707
10849
  } catch {}
10708
10850
  if (!this.iframeRouter) {
10709
10851
  if (!this.walletIframeInitInFlight) this.walletIframeInitInFlight = (async () => {
10710
- const { WalletIframeRouter } = await import("./router-BG6KC_p7.js");
10852
+ const { WalletIframeRouter } = await import("./router-BLFegW7J.js");
10711
10853
  this.iframeRouter = new WalletIframeRouter({
10712
10854
  walletOrigin,
10713
10855
  servicePath: walletIframeConfig?.walletServicePath || "/wallet-service",
@@ -11795,6 +11937,30 @@ var TatchiPasskey = class {
11795
11937
  });
11796
11938
  }
11797
11939
  /**
11940
+ * Best-effort cancellation for an in-flight email recovery flow.
11941
+ * Intended for UI "user cancelled sending email" / retry UX.
11942
+ */
11943
+ async cancelEmailRecovery(args) {
11944
+ const { accountId, nearPublicKey } = args || {};
11945
+ if (this.shouldUseWalletIframe()) {
11946
+ try {
11947
+ const router = await this.requireWalletIframeRouter();
11948
+ await router.stopEmailRecovery({
11949
+ accountId,
11950
+ nearPublicKey
11951
+ });
11952
+ } catch {}
11953
+ return;
11954
+ }
11955
+ try {
11956
+ await this.activeEmailRecoveryFlow?.cancelAndReset({
11957
+ accountId,
11958
+ nearPublicKey
11959
+ });
11960
+ } catch {}
11961
+ this.activeEmailRecoveryFlow = null;
11962
+ }
11963
+ /**
11798
11964
  * Device2: Start device linking flow
11799
11965
  * Returns QR payload and data URL to render; emits onEvent during the flow.
11800
11966
  * Runs inside iframe when available for better isolation.
@@ -12462,6 +12628,22 @@ function createWalletIframeHandlers(deps) {
12462
12628
  requestId: req.requestId,
12463
12629
  payload: { ok: true }
12464
12630
  });
12631
+ },
12632
+ PM_STOP_EMAIL_RECOVERY: async (req) => {
12633
+ const pm = getTatchiPasskey$1();
12634
+ const { accountId, nearPublicKey } = req.payload || {};
12635
+ try {
12636
+ const maybeCancel = pm.cancelEmailRecovery;
12637
+ if (typeof maybeCancel === "function") await maybeCancel.call(pm, {
12638
+ accountId,
12639
+ nearPublicKey
12640
+ });
12641
+ } catch {}
12642
+ post$1({
12643
+ type: "PM_RESULT",
12644
+ requestId: req.requestId,
12645
+ payload: { ok: true }
12646
+ });
12465
12647
  }
12466
12648
  };
12467
12649
  }