@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
@@ -1,11 +1,12 @@
1
+ import { __esm } from "../../../../_virtual/rolldown_runtime.js";
1
2
  import { base64UrlDecode } from "../../utils/base64.js";
2
3
  import { init_encoders } from "../../utils/encoders.js";
3
- import { outputAs32Bytes } from "../types/vrf-worker.js";
4
- import { generateChaCha20Salt, generateEd25519Salt, serializeAuthenticationCredentialWithPRF } from "./credentialsHelpers.js";
4
+ import { init_vrf_worker, outputAs32Bytes } from "../types/vrf-worker.js";
5
+ import { generateChaCha20Salt, generateEd25519Salt, init_credentialsHelpers, serializeAuthenticationCredentialWithPRF } from "./credentialsHelpers.js";
5
6
  import { executeWebAuthnWithParentFallbacksSafari } from "./WebAuthnFallbacks/safari-fallbacks.js";
7
+ import { init_WebAuthnFallbacks } from "./WebAuthnFallbacks/index.js";
6
8
 
7
9
  //#region src/core/WebAuthnManager/touchIdPrompt.ts
8
- init_encoders();
9
10
  function isRegistrableSuffix(host, cand) {
10
11
  if (!host || !cand) return false;
11
12
  if (host === cand) return true;
@@ -24,184 +25,6 @@ function authenticatorsToAllowCredentials(authenticators) {
24
25
  transports: auth.transports
25
26
  }));
26
27
  }
27
- /**
28
- * TouchIdPrompt prompts for touchID,
29
- * creates credentials,
30
- * manages WebAuthn touchID prompts,
31
- * and generates credentials, and PRF Outputs
32
- */
33
- var TouchIdPrompt = class TouchIdPrompt {
34
- rpIdOverride;
35
- safariGetWebauthnRegistrationFallback;
36
- abortController;
37
- removePageAbortHandlers;
38
- removeExternalAbortListener;
39
- constructor(rpIdOverride, safariGetWebauthnRegistrationFallback = false) {
40
- this.rpIdOverride = rpIdOverride;
41
- this.safariGetWebauthnRegistrationFallback = safariGetWebauthnRegistrationFallback === true;
42
- }
43
- getRpId() {
44
- try {
45
- return resolveRpId(this.rpIdOverride, window?.location?.hostname);
46
- } catch {
47
- return this.rpIdOverride || "";
48
- }
49
- }
50
- static _inIframe() {
51
- try {
52
- return window.self !== window.top;
53
- } catch {
54
- return true;
55
- }
56
- }
57
- /**
58
- * Get authentication credentials
59
- * @param nearAccountId - NEAR account ID to authenticate
60
- * @param challenge - VRF challenge bytes
61
- * @param allowCredentials - Array of allowed credentials for authentication
62
- * @returns WebAuthn credential with only the first PRF output
63
- */
64
- async getAuthenticationCredentialsSerialized({ nearAccountId, challenge, allowCredentials }) {
65
- const credentialMaybe = await this.getAuthenticationCredentialsInternal({
66
- nearAccountId,
67
- challenge,
68
- allowCredentials
69
- });
70
- if (isSerializedAuthenticationCredential(credentialMaybe)) return credentialMaybe;
71
- return serializeAuthenticationCredentialWithPRF({
72
- credential: credentialMaybe,
73
- firstPrfOutput: true,
74
- secondPrfOutput: false
75
- });
76
- }
77
- /**
78
- * Same as getAuthenticationCredentialsSerialized but returns both PRF outputs
79
- * (PRF.first + PRF.second).
80
- * @param nearAccountId - NEAR account ID to authenticate
81
- * @param challenge - VRF challenge bytes
82
- * @param allowCredentials - Array of allowed credentials for authentication
83
- * @returns
84
- */
85
- async getAuthenticationCredentialsSerializedDualPrf({ nearAccountId, challenge, allowCredentials }) {
86
- const credentialMaybe = await this.getAuthenticationCredentialsInternal({
87
- nearAccountId,
88
- challenge,
89
- allowCredentials
90
- });
91
- if (isSerializedAuthenticationCredential(credentialMaybe)) return credentialMaybe;
92
- return serializeAuthenticationCredentialWithPRF({
93
- credential: credentialMaybe,
94
- firstPrfOutput: true,
95
- secondPrfOutput: true
96
- });
97
- }
98
- /**
99
- * Internal method for generating WebAuthn registration credentials with PRF output
100
- * @param nearAccountId - NEAR account ID for PRF salts and keypair derivation (always base account)
101
- * @param challenge - Random challenge bytes for the registration ceremony
102
- * @param deviceNumber - Device number for device-specific user ID.
103
- * @returns Credential with PRF output
104
- */
105
- async generateRegistrationCredentialsInternal({ nearAccountId, challenge, deviceNumber }) {
106
- this.abortController = new AbortController();
107
- this.removePageAbortHandlers = TouchIdPrompt.attachPageAbortHandlers(this.abortController);
108
- const rpId = this.getRpId();
109
- const publicKey = {
110
- challenge: outputAs32Bytes(challenge),
111
- rp: {
112
- name: "WebAuthn VRF Passkey",
113
- id: rpId
114
- },
115
- user: {
116
- id: new TextEncoder().encode(generateDeviceSpecificUserId(nearAccountId, deviceNumber)),
117
- name: generateDeviceSpecificUserId(nearAccountId, deviceNumber),
118
- displayName: generateUserFriendlyDisplayName(nearAccountId, deviceNumber)
119
- },
120
- pubKeyCredParams: [{
121
- alg: -7,
122
- type: "public-key"
123
- }, {
124
- alg: -257,
125
- type: "public-key"
126
- }],
127
- authenticatorSelection: {
128
- residentKey: "required",
129
- userVerification: "preferred"
130
- },
131
- timeout: 6e4,
132
- attestation: "none",
133
- extensions: { prf: { eval: {
134
- first: generateChaCha20Salt(nearAccountId),
135
- second: generateEd25519Salt(nearAccountId)
136
- } } }
137
- };
138
- try {
139
- const result = await executeWebAuthnWithParentFallbacksSafari("create", publicKey, {
140
- rpId,
141
- inIframe: TouchIdPrompt._inIframe(),
142
- timeoutMs: publicKey.timeout,
143
- abortSignal: this.abortController.signal
144
- });
145
- return result;
146
- } finally {
147
- this.removePageAbortHandlers?.();
148
- this.removePageAbortHandlers = void 0;
149
- this.removeExternalAbortListener?.();
150
- this.removeExternalAbortListener = void 0;
151
- this.abortController = void 0;
152
- }
153
- }
154
- /**
155
- * Internal method for getting WebAuthn authentication credentials with PRF output
156
- * @param nearAccountId - NEAR account ID to authenticate
157
- * @param challenge - VRF challenge bytes to use for WebAuthn authentication
158
- * @param authenticators - List of stored authenticator data for the user
159
- * @returns WebAuthn credential with PRF output (HKDF derivation done in WASM worker)
160
- * ```ts
161
- * const credential = await touchIdPrompt.getCredentials({
162
- * nearAccountId,
163
- * challenge,
164
- * authenticators,
165
- * });
166
- * ```
167
- */
168
- async getAuthenticationCredentialsInternal({ nearAccountId, challenge, allowCredentials }) {
169
- this.abortController = new AbortController();
170
- this.removePageAbortHandlers = TouchIdPrompt.attachPageAbortHandlers(this.abortController);
171
- const rpId = this.getRpId();
172
- const publicKey = {
173
- challenge: outputAs32Bytes(challenge),
174
- rpId,
175
- allowCredentials: allowCredentials.map((credential) => ({
176
- id: base64UrlDecode(credential.id),
177
- type: "public-key",
178
- transports: credential.transports
179
- })),
180
- userVerification: "preferred",
181
- timeout: 6e4,
182
- extensions: { prf: { eval: {
183
- first: generateChaCha20Salt(nearAccountId),
184
- second: generateEd25519Salt(nearAccountId)
185
- } } }
186
- };
187
- try {
188
- const result = await executeWebAuthnWithParentFallbacksSafari("get", publicKey, {
189
- rpId,
190
- inIframe: TouchIdPrompt._inIframe(),
191
- timeoutMs: publicKey.timeout,
192
- permitGetBridgeOnAncestorError: this.safariGetWebauthnRegistrationFallback,
193
- abortSignal: this.abortController.signal
194
- });
195
- return result;
196
- } finally {
197
- this.removePageAbortHandlers?.();
198
- this.removePageAbortHandlers = void 0;
199
- this.removeExternalAbortListener?.();
200
- this.removeExternalAbortListener = void 0;
201
- this.abortController = void 0;
202
- }
203
- }
204
- };
205
28
  function isSerializedAuthenticationCredential(x) {
206
29
  if (!x || typeof x !== "object") return false;
207
30
  const obj = x;
@@ -239,29 +62,209 @@ function generateUserFriendlyDisplayName(nearAccountId, deviceNumber) {
239
62
  if (deviceNumber === void 0 || deviceNumber === 1) return baseUsername;
240
63
  return `${baseUsername} (device ${deviceNumber})`;
241
64
  }
242
- (function(_TouchIdPrompt) {
243
- function attachPageAbortHandlers(controller) {
244
- const onVisibility = () => {
245
- if (document.hidden) controller.abort();
246
- };
247
- const onPageHide = () => {
248
- controller.abort();
249
- };
250
- const onBeforeUnload = () => {
251
- controller.abort();
252
- };
253
- document.addEventListener("visibilitychange", onVisibility, { passive: true });
254
- window.addEventListener("pagehide", onPageHide, { passive: true });
255
- window.addEventListener("beforeunload", onBeforeUnload, { passive: true });
256
- return () => {
257
- document.removeEventListener("visibilitychange", onVisibility);
258
- window.removeEventListener("pagehide", onPageHide);
259
- window.removeEventListener("beforeunload", onBeforeUnload);
260
- };
261
- }
262
- _TouchIdPrompt.attachPageAbortHandlers = attachPageAbortHandlers;
263
- })(TouchIdPrompt || (TouchIdPrompt = {}));
65
+ var TouchIdPrompt;
66
+ var init_touchIdPrompt = __esm({ "src/core/WebAuthnManager/touchIdPrompt.ts": (() => {
67
+ init_encoders();
68
+ init_vrf_worker();
69
+ init_credentialsHelpers();
70
+ init_WebAuthnFallbacks();
71
+ TouchIdPrompt = class TouchIdPrompt {
72
+ rpIdOverride;
73
+ safariGetWebauthnRegistrationFallback;
74
+ abortController;
75
+ removePageAbortHandlers;
76
+ removeExternalAbortListener;
77
+ constructor(rpIdOverride, safariGetWebauthnRegistrationFallback = false) {
78
+ this.rpIdOverride = rpIdOverride;
79
+ this.safariGetWebauthnRegistrationFallback = safariGetWebauthnRegistrationFallback === true;
80
+ }
81
+ getRpId() {
82
+ try {
83
+ return resolveRpId(this.rpIdOverride, window?.location?.hostname);
84
+ } catch {
85
+ return this.rpIdOverride || "";
86
+ }
87
+ }
88
+ static _inIframe() {
89
+ try {
90
+ return window.self !== window.top;
91
+ } catch {
92
+ return true;
93
+ }
94
+ }
95
+ /**
96
+ * Get authentication credentials
97
+ * @param nearAccountId - NEAR account ID to authenticate
98
+ * @param challenge - VRF challenge bytes
99
+ * @param allowCredentials - Array of allowed credentials for authentication
100
+ * @returns WebAuthn credential with only the first PRF output
101
+ */
102
+ async getAuthenticationCredentialsSerialized({ nearAccountId, challenge, allowCredentials }) {
103
+ const credentialMaybe = await this.getAuthenticationCredentialsInternal({
104
+ nearAccountId,
105
+ challenge,
106
+ allowCredentials
107
+ });
108
+ if (isSerializedAuthenticationCredential(credentialMaybe)) return credentialMaybe;
109
+ return serializeAuthenticationCredentialWithPRF({
110
+ credential: credentialMaybe,
111
+ firstPrfOutput: true,
112
+ secondPrfOutput: false
113
+ });
114
+ }
115
+ /**
116
+ * Same as getAuthenticationCredentialsSerialized but returns both PRF outputs
117
+ * (PRF.first + PRF.second).
118
+ * @param nearAccountId - NEAR account ID to authenticate
119
+ * @param challenge - VRF challenge bytes
120
+ * @param allowCredentials - Array of allowed credentials for authentication
121
+ * @returns
122
+ */
123
+ async getAuthenticationCredentialsSerializedDualPrf({ nearAccountId, challenge, allowCredentials }) {
124
+ const credentialMaybe = await this.getAuthenticationCredentialsInternal({
125
+ nearAccountId,
126
+ challenge,
127
+ allowCredentials
128
+ });
129
+ if (isSerializedAuthenticationCredential(credentialMaybe)) return credentialMaybe;
130
+ return serializeAuthenticationCredentialWithPRF({
131
+ credential: credentialMaybe,
132
+ firstPrfOutput: true,
133
+ secondPrfOutput: true
134
+ });
135
+ }
136
+ /**
137
+ * Internal method for generating WebAuthn registration credentials with PRF output
138
+ * @param nearAccountId - NEAR account ID for PRF salts and keypair derivation (always base account)
139
+ * @param challenge - Random challenge bytes for the registration ceremony
140
+ * @param deviceNumber - Device number for device-specific user ID.
141
+ * @returns Credential with PRF output
142
+ */
143
+ async generateRegistrationCredentialsInternal({ nearAccountId, challenge, deviceNumber }) {
144
+ this.abortController = new AbortController();
145
+ this.removePageAbortHandlers = TouchIdPrompt.attachPageAbortHandlers(this.abortController);
146
+ const rpId = this.getRpId();
147
+ const publicKey = {
148
+ challenge: outputAs32Bytes(challenge),
149
+ rp: {
150
+ name: "WebAuthn VRF Passkey",
151
+ id: rpId
152
+ },
153
+ user: {
154
+ id: new TextEncoder().encode(generateDeviceSpecificUserId(nearAccountId, deviceNumber)),
155
+ name: generateDeviceSpecificUserId(nearAccountId, deviceNumber),
156
+ displayName: generateUserFriendlyDisplayName(nearAccountId, deviceNumber)
157
+ },
158
+ pubKeyCredParams: [{
159
+ alg: -7,
160
+ type: "public-key"
161
+ }, {
162
+ alg: -257,
163
+ type: "public-key"
164
+ }],
165
+ authenticatorSelection: {
166
+ residentKey: "required",
167
+ userVerification: "preferred"
168
+ },
169
+ timeout: 6e4,
170
+ attestation: "none",
171
+ extensions: { prf: { eval: {
172
+ first: generateChaCha20Salt(nearAccountId),
173
+ second: generateEd25519Salt(nearAccountId)
174
+ } } }
175
+ };
176
+ try {
177
+ const result = await executeWebAuthnWithParentFallbacksSafari("create", publicKey, {
178
+ rpId,
179
+ inIframe: TouchIdPrompt._inIframe(),
180
+ timeoutMs: publicKey.timeout,
181
+ abortSignal: this.abortController.signal
182
+ });
183
+ return result;
184
+ } finally {
185
+ this.removePageAbortHandlers?.();
186
+ this.removePageAbortHandlers = void 0;
187
+ this.removeExternalAbortListener?.();
188
+ this.removeExternalAbortListener = void 0;
189
+ this.abortController = void 0;
190
+ }
191
+ }
192
+ /**
193
+ * Internal method for getting WebAuthn authentication credentials with PRF output
194
+ * @param nearAccountId - NEAR account ID to authenticate
195
+ * @param challenge - VRF challenge bytes to use for WebAuthn authentication
196
+ * @param authenticators - List of stored authenticator data for the user
197
+ * @returns WebAuthn credential with PRF output (HKDF derivation done in WASM worker)
198
+ * ```ts
199
+ * const credential = await touchIdPrompt.getCredentials({
200
+ * nearAccountId,
201
+ * challenge,
202
+ * authenticators,
203
+ * });
204
+ * ```
205
+ */
206
+ async getAuthenticationCredentialsInternal({ nearAccountId, challenge, allowCredentials }) {
207
+ this.abortController = new AbortController();
208
+ this.removePageAbortHandlers = TouchIdPrompt.attachPageAbortHandlers(this.abortController);
209
+ const rpId = this.getRpId();
210
+ const publicKey = {
211
+ challenge: outputAs32Bytes(challenge),
212
+ rpId,
213
+ allowCredentials: allowCredentials.map((credential) => ({
214
+ id: base64UrlDecode(credential.id),
215
+ type: "public-key",
216
+ transports: credential.transports
217
+ })),
218
+ userVerification: "preferred",
219
+ timeout: 6e4,
220
+ extensions: { prf: { eval: {
221
+ first: generateChaCha20Salt(nearAccountId),
222
+ second: generateEd25519Salt(nearAccountId)
223
+ } } }
224
+ };
225
+ try {
226
+ const result = await executeWebAuthnWithParentFallbacksSafari("get", publicKey, {
227
+ rpId,
228
+ inIframe: TouchIdPrompt._inIframe(),
229
+ timeoutMs: publicKey.timeout,
230
+ permitGetBridgeOnAncestorError: this.safariGetWebauthnRegistrationFallback,
231
+ abortSignal: this.abortController.signal
232
+ });
233
+ return result;
234
+ } finally {
235
+ this.removePageAbortHandlers?.();
236
+ this.removePageAbortHandlers = void 0;
237
+ this.removeExternalAbortListener?.();
238
+ this.removeExternalAbortListener = void 0;
239
+ this.abortController = void 0;
240
+ }
241
+ }
242
+ };
243
+ (function(_TouchIdPrompt) {
244
+ function attachPageAbortHandlers(controller) {
245
+ const onVisibility = () => {
246
+ if (document.hidden) controller.abort();
247
+ };
248
+ const onPageHide = () => {
249
+ controller.abort();
250
+ };
251
+ const onBeforeUnload = () => {
252
+ controller.abort();
253
+ };
254
+ document.addEventListener("visibilitychange", onVisibility, { passive: true });
255
+ window.addEventListener("pagehide", onPageHide, { passive: true });
256
+ window.addEventListener("beforeunload", onBeforeUnload, { passive: true });
257
+ return () => {
258
+ document.removeEventListener("visibilitychange", onVisibility);
259
+ window.removeEventListener("pagehide", onPageHide);
260
+ window.removeEventListener("beforeunload", onBeforeUnload);
261
+ };
262
+ }
263
+ _TouchIdPrompt.attachPageAbortHandlers = attachPageAbortHandlers;
264
+ })(TouchIdPrompt || (TouchIdPrompt = {}));
265
+ }) });
264
266
 
265
267
  //#endregion
266
- export { TouchIdPrompt, authenticatorsToAllowCredentials };
268
+ init_touchIdPrompt();
269
+ export { TouchIdPrompt, authenticatorsToAllowCredentials, init_touchIdPrompt };
267
270
  //# sourceMappingURL=touchIdPrompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"touchIdPrompt.js","names":["publicKey: PublicKeyCredentialCreationOptions","publicKey: PublicKeyCredentialRequestOptions"],"sources":["../../../../../../../src/core/WebAuthnManager/touchIdPrompt.ts"],"sourcesContent":["import { ClientAuthenticatorData } from '../IndexedDBManager';\nimport { base64UrlDecode } from '../../utils/encoders';\nimport { outputAs32Bytes, VRFChallenge } from '../types/vrf-worker';\nimport { serializeAuthenticationCredentialWithPRF, generateChaCha20Salt, generateEd25519Salt } from './credentialsHelpers';\nimport type {\n WebAuthnAuthenticationCredential,\n WebAuthnRegistrationCredential\n} from '../types/webauthn';\nimport { executeWebAuthnWithParentFallbacksSafari } from './WebAuthnFallbacks';\n// Local rpId policy helpers (moved back from WebAuthnFallbacks)\nfunction isRegistrableSuffix(host: string, cand: string): boolean {\n if (!host || !cand) return false;\n if (host === cand) return true;\n return host.endsWith('.' + cand);\n}\n\nfunction resolveRpId(override: string | undefined, host: string | undefined): string {\n const h = (host || '').toLowerCase();\n const ov = (override || '').toLowerCase();\n if (ov && h && isRegistrableSuffix(h, ov)) return ov;\n return h || ov || '';\n}\n\nexport interface RegisterCredentialsArgs {\n nearAccountId: string, // NEAR account ID for PRF salts and keypair derivation (always base account)\n challenge: VRFChallenge,\n deviceNumber?: number, // Optional device number for device-specific user ID (0, 1, 2, etc.)\n}\n\nexport interface AuthenticateCredentialsArgs {\n nearAccountId: string,\n challenge: VRFChallenge,\n allowCredentials: AllowCredential[],\n}\n\nexport interface AllowCredential {\n id: string,\n type: string,\n transports: AuthenticatorTransport[]\n}\n\nexport function authenticatorsToAllowCredentials(\n authenticators: ClientAuthenticatorData[]\n): AllowCredential[] {\n return authenticators.map(auth => ({\n id: auth.credentialId,\n type: 'public-key',\n transports: auth.transports as AuthenticatorTransport[]\n }));\n}\n\n/**\n * TouchIdPrompt prompts for touchID,\n * creates credentials,\n * manages WebAuthn touchID prompts,\n * and generates credentials, and PRF Outputs\n */\nexport class TouchIdPrompt {\n private rpIdOverride?: string;\n private safariGetWebauthnRegistrationFallback: boolean;\n // create() only: internal abort controller + cleanup hooks\n private abortController?: AbortController;\n private removePageAbortHandlers?: () => void;\n private removeExternalAbortListener?: () => void;\n\n constructor(rpIdOverride?: string, safariGetWebauthnRegistrationFallback = false) {\n this.rpIdOverride = rpIdOverride;\n this.safariGetWebauthnRegistrationFallback = safariGetWebauthnRegistrationFallback === true;\n }\n\n getRpId(): string {\n try {\n return resolveRpId(this.rpIdOverride, window?.location?.hostname);\n } catch {\n return this.rpIdOverride || '';\n }\n }\n\n // Utility helpers for cross‑origin fallback\n private static _inIframe(): boolean {\n try { return window.self !== window.top; } catch { return true; }\n }\n\n /**\n * Get authentication credentials\n * @param nearAccountId - NEAR account ID to authenticate\n * @param challenge - VRF challenge bytes\n * @param allowCredentials - Array of allowed credentials for authentication\n * @returns WebAuthn credential with only the first PRF output\n */\n async getAuthenticationCredentialsSerialized({\n nearAccountId,\n challenge,\n allowCredentials,\n }: {\n nearAccountId: string\n challenge: VRFChallenge\n allowCredentials: AllowCredential[]\n }): Promise<WebAuthnAuthenticationCredential> {\n const credentialMaybe = (await this.getAuthenticationCredentialsInternal({\n nearAccountId,\n challenge,\n allowCredentials,\n })) as unknown;\n // Support parent-bridge fallback returning an already-serialized credential\n if (isSerializedAuthenticationCredential(credentialMaybe)) {\n return credentialMaybe;\n }\n return serializeAuthenticationCredentialWithPRF({\n credential: credentialMaybe as PublicKeyCredential,\n firstPrfOutput: true,\n secondPrfOutput: false,\n })\n }\n\n /**\n * Same as getAuthenticationCredentialsSerialized but returns both PRF outputs\n * (PRF.first + PRF.second).\n * @param nearAccountId - NEAR account ID to authenticate\n * @param challenge - VRF challenge bytes\n * @param allowCredentials - Array of allowed credentials for authentication\n * @returns\n */\n async getAuthenticationCredentialsSerializedDualPrf({\n nearAccountId,\n challenge,\n allowCredentials,\n }: {\n nearAccountId: string,\n challenge: VRFChallenge,\n allowCredentials: AllowCredential[],\n }): Promise<WebAuthnAuthenticationCredential> {\n const credentialMaybe = (await this.getAuthenticationCredentialsInternal({\n nearAccountId,\n challenge,\n allowCredentials,\n })) as unknown;\n // Support parent-bridge fallback returning an already-serialized credential\n if (isSerializedAuthenticationCredential(credentialMaybe)) {\n return credentialMaybe;\n }\n return serializeAuthenticationCredentialWithPRF({\n credential: credentialMaybe as PublicKeyCredential,\n firstPrfOutput: true,\n secondPrfOutput: true,\n });\n }\n\n /**\n * Internal method for generating WebAuthn registration credentials with PRF output\n * @param nearAccountId - NEAR account ID for PRF salts and keypair derivation (always base account)\n * @param challenge - Random challenge bytes for the registration ceremony\n * @param deviceNumber - Device number for device-specific user ID.\n * @returns Credential with PRF output\n */\n async generateRegistrationCredentialsInternal({\n nearAccountId,\n challenge,\n deviceNumber,\n }: RegisterCredentialsArgs): Promise<PublicKeyCredential> {\n // New controller per create() call\n this.abortController = new AbortController();\n this.removePageAbortHandlers = TouchIdPrompt.attachPageAbortHandlers(this.abortController);\n // Single source of truth for rpId: use getRpId().\n const rpId = this.getRpId();\n const publicKey: PublicKeyCredentialCreationOptions = {\n challenge: outputAs32Bytes(challenge) as BufferSource,\n rp: {\n name: 'WebAuthn VRF Passkey',\n id: rpId\n },\n user: {\n id: new TextEncoder().encode(generateDeviceSpecificUserId(nearAccountId, deviceNumber)),\n name: generateDeviceSpecificUserId(nearAccountId, deviceNumber),\n displayName: generateUserFriendlyDisplayName(nearAccountId, deviceNumber)\n },\n pubKeyCredParams: [\n { alg: -7, type: 'public-key' },\n { alg: -257, type: 'public-key' }\n ],\n authenticatorSelection: {\n residentKey: 'required',\n userVerification: 'preferred'\n },\n timeout: 60000,\n attestation: 'none',\n extensions: {\n prf: {\n eval: {\n // Always use NEAR account ID for PRF salts to ensure consistent keypair derivation across devices\n first: generateChaCha20Salt(nearAccountId) as BufferSource, // ChaCha20Poly1305 encryption keys\n second: generateEd25519Salt(nearAccountId) as BufferSource // Ed25519 signing keys\n }\n }\n },\n };\n try {\n const result = await executeWebAuthnWithParentFallbacksSafari('create', publicKey, {\n rpId,\n inIframe: TouchIdPrompt._inIframe(),\n timeoutMs: publicKey.timeout as number | undefined,\n // Pass AbortSignal through when supported; Safari bridge path may ignore it.\n abortSignal: this.abortController.signal,\n });\n return result as PublicKeyCredential;\n } finally {\n this.removePageAbortHandlers?.();\n this.removePageAbortHandlers = undefined;\n this.removeExternalAbortListener?.();\n this.removeExternalAbortListener = undefined;\n this.abortController = undefined;\n }\n }\n\n /**\n * Internal method for getting WebAuthn authentication credentials with PRF output\n * @param nearAccountId - NEAR account ID to authenticate\n * @param challenge - VRF challenge bytes to use for WebAuthn authentication\n * @param authenticators - List of stored authenticator data for the user\n * @returns WebAuthn credential with PRF output (HKDF derivation done in WASM worker)\n * ```ts\n * const credential = await touchIdPrompt.getCredentials({\n * nearAccountId,\n * challenge,\n * authenticators,\n * });\n * ```\n */\n async getAuthenticationCredentialsInternal({\n nearAccountId,\n challenge,\n allowCredentials,\n }: AuthenticateCredentialsArgs): Promise<PublicKeyCredential> {\n // New controller per get() call\n this.abortController = new AbortController();\n this.removePageAbortHandlers = TouchIdPrompt.attachPageAbortHandlers(this.abortController);\n // Single source of truth for rpId: use getRpId().\n const rpId = this.getRpId();\n const publicKey: PublicKeyCredentialRequestOptions = {\n challenge: outputAs32Bytes(challenge) as BufferSource,\n rpId,\n allowCredentials: allowCredentials.map((credential) => ({\n id: base64UrlDecode(credential.id) as BufferSource,\n type: 'public-key' as PublicKeyCredentialType,\n transports: credential.transports,\n })),\n userVerification: 'preferred' as UserVerificationRequirement,\n timeout: 60000,\n extensions: {\n prf: {\n eval: {\n // Always use NEAR account ID for PRF salts to ensure consistent keypair derivation across devices\n first: generateChaCha20Salt(nearAccountId) as BufferSource, // ChaCha20Poly1305 encryption keys\n second: generateEd25519Salt(nearAccountId) as BufferSource // Ed25519 signing keys\n }\n }\n }\n };\n try {\n const result = await executeWebAuthnWithParentFallbacksSafari('get', publicKey, {\n rpId,\n inIframe: TouchIdPrompt._inIframe(),\n timeoutMs: publicKey.timeout as number | undefined,\n permitGetBridgeOnAncestorError: this.safariGetWebauthnRegistrationFallback,\n abortSignal: this.abortController.signal,\n });\n return result as PublicKeyCredential;\n } finally {\n this.removePageAbortHandlers?.();\n this.removePageAbortHandlers = undefined;\n this.removeExternalAbortListener?.();\n this.removeExternalAbortListener = undefined;\n this.abortController = undefined;\n }\n }\n}\n\n// Type guard for already-serialized authentication credential\nfunction isSerializedAuthenticationCredential(x: unknown): x is WebAuthnAuthenticationCredential {\n if (!x || typeof x !== 'object') return false;\n const obj = x as { response?: unknown };\n const resp = obj.response as { authenticatorData?: unknown } | undefined;\n return typeof resp?.authenticatorData === 'string';\n}\n\n/**\n * Generate device-specific user ID to prevent Chrome sync conflicts\n * Creates technical identifiers with full account context\n *\n * @param nearAccountId - The NEAR account ID (e.g., \"serp120.w3a-v1.testnet\")\n * @param deviceNumber - The device number (optional, undefined for device 1, 2 for device 2, etc.)\n * @returns Technical identifier:\n * - Device 1: \"serp120.web3-authn.testnet\"\n * - Device 2: \"serp120.web3-authn.testnet (2)\"\n * - Device 3: \"serp120.web3-authn.testnet (3)\"\n */\nexport function generateDeviceSpecificUserId(nearAccountId: string, deviceNumber?: number): string {\n // If no device number provided or device number is 1, this is the first device\n if (deviceNumber === undefined || deviceNumber === 1) {\n return nearAccountId;\n }\n // For additional devices, add device number in parentheses\n return `${nearAccountId} (${deviceNumber})`;\n}\n\n/**\n * Generate user-friendly display name for passkey manager UI\n * Creates clean, intuitive names that users will see\n *\n * @param nearAccountId - The NEAR account ID (e.g., \"serp120.w3a-v1.testnet\")\n * @param deviceNumber - The device number (optional, undefined for device 1, 2 for device 2, etc.)\n * @returns User-friendly display name:\n * - Device 1: \"serp120\"\n * - Device 2: \"serp120 (device 2)\"\n * - Device 3: \"serp120 (device 3)\"\n */\nfunction generateUserFriendlyDisplayName(nearAccountId: string, deviceNumber?: number): string {\n // Extract the base username (everything before the first dot)\n const baseUsername = nearAccountId.split('.')[0];\n // If no device number provided or device number is 1, this is the first device\n if (deviceNumber === undefined || deviceNumber === 1) {\n return baseUsername;\n }\n // For additional devices, add device number with friendly label\n return `${baseUsername} (device ${deviceNumber})`;\n}\n\n// Abort native WebAuthn when page is being hidden or unloaded\n// Centralized here to keep WebAuthn lifecycle concerns alongside native calls.\nexport namespace TouchIdPrompt {\n export function attachPageAbortHandlers(controller: AbortController): () => void {\n const onVisibility = () => { if (document.hidden) controller.abort(); };\n const onPageHide = () => { controller.abort(); };\n const onBeforeUnload = () => { controller.abort(); };\n document.addEventListener('visibilitychange', onVisibility, { passive: true });\n window.addEventListener('pagehide', onPageHide, { passive: true });\n window.addEventListener('beforeunload', onBeforeUnload, { passive: true });\n return () => {\n document.removeEventListener('visibilitychange', onVisibility);\n window.removeEventListener('pagehide', onPageHide);\n window.removeEventListener('beforeunload', onBeforeUnload);\n };\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"touchIdPrompt.js","names":["publicKey: PublicKeyCredentialCreationOptions","publicKey: PublicKeyCredentialRequestOptions"],"sources":["../../../../../../../src/core/WebAuthnManager/touchIdPrompt.ts"],"sourcesContent":["import { ClientAuthenticatorData } from '../IndexedDBManager';\nimport { base64UrlDecode } from '../../utils/encoders';\nimport { outputAs32Bytes, VRFChallenge } from '../types/vrf-worker';\nimport { serializeAuthenticationCredentialWithPRF, generateChaCha20Salt, generateEd25519Salt } from './credentialsHelpers';\nimport type {\n WebAuthnAuthenticationCredential,\n WebAuthnRegistrationCredential\n} from '../types/webauthn';\nimport { executeWebAuthnWithParentFallbacksSafari } from './WebAuthnFallbacks';\n// Local rpId policy helpers (moved back from WebAuthnFallbacks)\nfunction isRegistrableSuffix(host: string, cand: string): boolean {\n if (!host || !cand) return false;\n if (host === cand) return true;\n return host.endsWith('.' + cand);\n}\n\nfunction resolveRpId(override: string | undefined, host: string | undefined): string {\n const h = (host || '').toLowerCase();\n const ov = (override || '').toLowerCase();\n if (ov && h && isRegistrableSuffix(h, ov)) return ov;\n return h || ov || '';\n}\n\nexport interface RegisterCredentialsArgs {\n nearAccountId: string, // NEAR account ID for PRF salts and keypair derivation (always base account)\n challenge: VRFChallenge,\n deviceNumber?: number, // Optional device number for device-specific user ID (0, 1, 2, etc.)\n}\n\nexport interface AuthenticateCredentialsArgs {\n nearAccountId: string,\n challenge: VRFChallenge,\n allowCredentials: AllowCredential[],\n}\n\nexport interface AllowCredential {\n id: string,\n type: string,\n transports: AuthenticatorTransport[]\n}\n\nexport function authenticatorsToAllowCredentials(\n authenticators: ClientAuthenticatorData[]\n): AllowCredential[] {\n return authenticators.map(auth => ({\n id: auth.credentialId,\n type: 'public-key',\n transports: auth.transports as AuthenticatorTransport[]\n }));\n}\n\n/**\n * TouchIdPrompt prompts for touchID,\n * creates credentials,\n * manages WebAuthn touchID prompts,\n * and generates credentials, and PRF Outputs\n */\nexport class TouchIdPrompt {\n private rpIdOverride?: string;\n private safariGetWebauthnRegistrationFallback: boolean;\n // create() only: internal abort controller + cleanup hooks\n private abortController?: AbortController;\n private removePageAbortHandlers?: () => void;\n private removeExternalAbortListener?: () => void;\n\n constructor(rpIdOverride?: string, safariGetWebauthnRegistrationFallback = false) {\n this.rpIdOverride = rpIdOverride;\n this.safariGetWebauthnRegistrationFallback = safariGetWebauthnRegistrationFallback === true;\n }\n\n getRpId(): string {\n try {\n return resolveRpId(this.rpIdOverride, window?.location?.hostname);\n } catch {\n return this.rpIdOverride || '';\n }\n }\n\n // Utility helpers for cross‑origin fallback\n private static _inIframe(): boolean {\n try { return window.self !== window.top; } catch { return true; }\n }\n\n /**\n * Get authentication credentials\n * @param nearAccountId - NEAR account ID to authenticate\n * @param challenge - VRF challenge bytes\n * @param allowCredentials - Array of allowed credentials for authentication\n * @returns WebAuthn credential with only the first PRF output\n */\n async getAuthenticationCredentialsSerialized({\n nearAccountId,\n challenge,\n allowCredentials,\n }: {\n nearAccountId: string\n challenge: VRFChallenge\n allowCredentials: AllowCredential[]\n }): Promise<WebAuthnAuthenticationCredential> {\n const credentialMaybe = (await this.getAuthenticationCredentialsInternal({\n nearAccountId,\n challenge,\n allowCredentials,\n })) as unknown;\n // Support parent-bridge fallback returning an already-serialized credential\n if (isSerializedAuthenticationCredential(credentialMaybe)) {\n return credentialMaybe;\n }\n return serializeAuthenticationCredentialWithPRF({\n credential: credentialMaybe as PublicKeyCredential,\n firstPrfOutput: true,\n secondPrfOutput: false,\n })\n }\n\n /**\n * Same as getAuthenticationCredentialsSerialized but returns both PRF outputs\n * (PRF.first + PRF.second).\n * @param nearAccountId - NEAR account ID to authenticate\n * @param challenge - VRF challenge bytes\n * @param allowCredentials - Array of allowed credentials for authentication\n * @returns\n */\n async getAuthenticationCredentialsSerializedDualPrf({\n nearAccountId,\n challenge,\n allowCredentials,\n }: {\n nearAccountId: string,\n challenge: VRFChallenge,\n allowCredentials: AllowCredential[],\n }): Promise<WebAuthnAuthenticationCredential> {\n const credentialMaybe = (await this.getAuthenticationCredentialsInternal({\n nearAccountId,\n challenge,\n allowCredentials,\n })) as unknown;\n // Support parent-bridge fallback returning an already-serialized credential\n if (isSerializedAuthenticationCredential(credentialMaybe)) {\n return credentialMaybe;\n }\n return serializeAuthenticationCredentialWithPRF({\n credential: credentialMaybe as PublicKeyCredential,\n firstPrfOutput: true,\n secondPrfOutput: true,\n });\n }\n\n /**\n * Internal method for generating WebAuthn registration credentials with PRF output\n * @param nearAccountId - NEAR account ID for PRF salts and keypair derivation (always base account)\n * @param challenge - Random challenge bytes for the registration ceremony\n * @param deviceNumber - Device number for device-specific user ID.\n * @returns Credential with PRF output\n */\n async generateRegistrationCredentialsInternal({\n nearAccountId,\n challenge,\n deviceNumber,\n }: RegisterCredentialsArgs): Promise<PublicKeyCredential> {\n // New controller per create() call\n this.abortController = new AbortController();\n this.removePageAbortHandlers = TouchIdPrompt.attachPageAbortHandlers(this.abortController);\n // Single source of truth for rpId: use getRpId().\n const rpId = this.getRpId();\n const publicKey: PublicKeyCredentialCreationOptions = {\n challenge: outputAs32Bytes(challenge) as BufferSource,\n rp: {\n name: 'WebAuthn VRF Passkey',\n id: rpId\n },\n user: {\n id: new TextEncoder().encode(generateDeviceSpecificUserId(nearAccountId, deviceNumber)),\n name: generateDeviceSpecificUserId(nearAccountId, deviceNumber),\n displayName: generateUserFriendlyDisplayName(nearAccountId, deviceNumber)\n },\n pubKeyCredParams: [\n { alg: -7, type: 'public-key' },\n { alg: -257, type: 'public-key' }\n ],\n authenticatorSelection: {\n residentKey: 'required',\n userVerification: 'preferred'\n },\n timeout: 60000,\n attestation: 'none',\n extensions: {\n prf: {\n eval: {\n // Always use NEAR account ID for PRF salts to ensure consistent keypair derivation across devices\n first: generateChaCha20Salt(nearAccountId) as BufferSource, // ChaCha20Poly1305 encryption keys\n second: generateEd25519Salt(nearAccountId) as BufferSource // Ed25519 signing keys\n }\n }\n },\n };\n try {\n const result = await executeWebAuthnWithParentFallbacksSafari('create', publicKey, {\n rpId,\n inIframe: TouchIdPrompt._inIframe(),\n timeoutMs: publicKey.timeout as number | undefined,\n // Pass AbortSignal through when supported; Safari bridge path may ignore it.\n abortSignal: this.abortController.signal,\n });\n return result as PublicKeyCredential;\n } finally {\n this.removePageAbortHandlers?.();\n this.removePageAbortHandlers = undefined;\n this.removeExternalAbortListener?.();\n this.removeExternalAbortListener = undefined;\n this.abortController = undefined;\n }\n }\n\n /**\n * Internal method for getting WebAuthn authentication credentials with PRF output\n * @param nearAccountId - NEAR account ID to authenticate\n * @param challenge - VRF challenge bytes to use for WebAuthn authentication\n * @param authenticators - List of stored authenticator data for the user\n * @returns WebAuthn credential with PRF output (HKDF derivation done in WASM worker)\n * ```ts\n * const credential = await touchIdPrompt.getCredentials({\n * nearAccountId,\n * challenge,\n * authenticators,\n * });\n * ```\n */\n async getAuthenticationCredentialsInternal({\n nearAccountId,\n challenge,\n allowCredentials,\n }: AuthenticateCredentialsArgs): Promise<PublicKeyCredential> {\n // New controller per get() call\n this.abortController = new AbortController();\n this.removePageAbortHandlers = TouchIdPrompt.attachPageAbortHandlers(this.abortController);\n // Single source of truth for rpId: use getRpId().\n const rpId = this.getRpId();\n const publicKey: PublicKeyCredentialRequestOptions = {\n challenge: outputAs32Bytes(challenge) as BufferSource,\n rpId,\n allowCredentials: allowCredentials.map((credential) => ({\n id: base64UrlDecode(credential.id) as BufferSource,\n type: 'public-key' as PublicKeyCredentialType,\n transports: credential.transports,\n })),\n userVerification: 'preferred' as UserVerificationRequirement,\n timeout: 60000,\n extensions: {\n prf: {\n eval: {\n // Always use NEAR account ID for PRF salts to ensure consistent keypair derivation across devices\n first: generateChaCha20Salt(nearAccountId) as BufferSource, // ChaCha20Poly1305 encryption keys\n second: generateEd25519Salt(nearAccountId) as BufferSource // Ed25519 signing keys\n }\n }\n }\n };\n try {\n const result = await executeWebAuthnWithParentFallbacksSafari('get', publicKey, {\n rpId,\n inIframe: TouchIdPrompt._inIframe(),\n timeoutMs: publicKey.timeout as number | undefined,\n permitGetBridgeOnAncestorError: this.safariGetWebauthnRegistrationFallback,\n abortSignal: this.abortController.signal,\n });\n return result as PublicKeyCredential;\n } finally {\n this.removePageAbortHandlers?.();\n this.removePageAbortHandlers = undefined;\n this.removeExternalAbortListener?.();\n this.removeExternalAbortListener = undefined;\n this.abortController = undefined;\n }\n }\n}\n\n// Type guard for already-serialized authentication credential\nfunction isSerializedAuthenticationCredential(x: unknown): x is WebAuthnAuthenticationCredential {\n if (!x || typeof x !== 'object') return false;\n const obj = x as { response?: unknown };\n const resp = obj.response as { authenticatorData?: unknown } | undefined;\n return typeof resp?.authenticatorData === 'string';\n}\n\n/**\n * Generate device-specific user ID to prevent Chrome sync conflicts\n * Creates technical identifiers with full account context\n *\n * @param nearAccountId - The NEAR account ID (e.g., \"serp120.w3a-v1.testnet\")\n * @param deviceNumber - The device number (optional, undefined for device 1, 2 for device 2, etc.)\n * @returns Technical identifier:\n * - Device 1: \"serp120.web3-authn.testnet\"\n * - Device 2: \"serp120.web3-authn.testnet (2)\"\n * - Device 3: \"serp120.web3-authn.testnet (3)\"\n */\nexport function generateDeviceSpecificUserId(nearAccountId: string, deviceNumber?: number): string {\n // If no device number provided or device number is 1, this is the first device\n if (deviceNumber === undefined || deviceNumber === 1) {\n return nearAccountId;\n }\n // For additional devices, add device number in parentheses\n return `${nearAccountId} (${deviceNumber})`;\n}\n\n/**\n * Generate user-friendly display name for passkey manager UI\n * Creates clean, intuitive names that users will see\n *\n * @param nearAccountId - The NEAR account ID (e.g., \"serp120.w3a-v1.testnet\")\n * @param deviceNumber - The device number (optional, undefined for device 1, 2 for device 2, etc.)\n * @returns User-friendly display name:\n * - Device 1: \"serp120\"\n * - Device 2: \"serp120 (device 2)\"\n * - Device 3: \"serp120 (device 3)\"\n */\nfunction generateUserFriendlyDisplayName(nearAccountId: string, deviceNumber?: number): string {\n // Extract the base username (everything before the first dot)\n const baseUsername = nearAccountId.split('.')[0];\n // If no device number provided or device number is 1, this is the first device\n if (deviceNumber === undefined || deviceNumber === 1) {\n return baseUsername;\n }\n // For additional devices, add device number with friendly label\n return `${baseUsername} (device ${deviceNumber})`;\n}\n\n// Abort native WebAuthn when page is being hidden or unloaded\n// Centralized here to keep WebAuthn lifecycle concerns alongside native calls.\nexport namespace TouchIdPrompt {\n export function attachPageAbortHandlers(controller: AbortController): () => void {\n const onVisibility = () => { if (document.hidden) controller.abort(); };\n const onPageHide = () => { controller.abort(); };\n const onBeforeUnload = () => { controller.abort(); };\n document.addEventListener('visibilitychange', onVisibility, { passive: true });\n window.addEventListener('pagehide', onPageHide, { passive: true });\n window.addEventListener('beforeunload', onBeforeUnload, { passive: true });\n return () => {\n document.removeEventListener('visibilitychange', onVisibility);\n window.removeEventListener('pagehide', onPageHide);\n window.removeEventListener('beforeunload', onBeforeUnload);\n };\n }\n}\n"],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import { init_validation, validateNearAccountId } from "../../utils/validation.js";
2
2
  import { base64UrlDecode } from "../../utils/base64.js";
3
- import "../../utils/index.js";
3
+ import { init_utils } from "../../utils/index.js";
4
4
 
5
5
  //#region src/core/WebAuthnManager/userHandle.ts
6
+ init_utils();
6
7
  init_validation();
7
8
  /**
8
9
  * Parse a WebAuthn userHandle into a NEAR account ID.
@@ -1 +1 @@
1
- {"version":3,"file":"userHandle.js","names":["bytes: Uint8Array | null"],"sources":["../../../../../../../src/core/WebAuthnManager/userHandle.ts"],"sourcesContent":["import { base64UrlDecode } from '../../utils';\nimport { validateNearAccountId } from '../../utils/validation';\n\n/**\n * Parse a WebAuthn userHandle into a NEAR account ID.\n * Accepts either a base64url string (serialized) or an ArrayBuffer-like value.\n * Strips optional device suffixes like \" (2)\" appended during registration.\n * Returns a validated account ID string or null if invalid/unavailable.\n */\nexport function parseAccountIdFromUserHandle(userHandle: unknown): string | null {\n try {\n let bytes: Uint8Array | null = null;\n if (typeof userHandle === 'string' && userHandle.length > 0) {\n try { bytes = base64UrlDecode(userHandle); } catch { bytes = null; }\n } else if (userHandle && typeof (userHandle as any).byteLength === 'number') {\n try { bytes = new Uint8Array(userHandle as ArrayBuffer); } catch { bytes = null; }\n }\n if (!bytes || bytes.byteLength === 0) return null;\n\n const decoded = new TextDecoder().decode(bytes);\n const base = decoded.replace(/ \\(\\d+\\)$/g, '');\n return validateNearAccountId(base).valid ? base : null;\n } catch {\n return null;\n }\n}\n\n"],"mappings":";;;;;;;;;;;;AASA,SAAgB,6BAA6B,YAAoC;AAC/E,KAAI;EACF,IAAIA,QAA2B;AAC/B,MAAI,OAAO,eAAe,YAAY,WAAW,SAAS,EACxD,KAAI;AAAE,WAAQ,gBAAgB;UAAqB;AAAE,WAAQ;;WACpD,cAAc,OAAQ,WAAmB,eAAe,SACjE,KAAI;AAAE,WAAQ,IAAI,WAAW;UAAoC;AAAE,WAAQ;;AAE7E,MAAI,CAAC,SAAS,MAAM,eAAe,EAAG,QAAO;EAE7C,MAAM,UAAU,IAAI,cAAc,OAAO;EACzC,MAAM,OAAO,QAAQ,QAAQ,cAAc;AAC3C,SAAO,sBAAsB,MAAM,QAAQ,OAAO;SAC5C;AACN,SAAO"}
1
+ {"version":3,"file":"userHandle.js","names":["bytes: Uint8Array | null"],"sources":["../../../../../../../src/core/WebAuthnManager/userHandle.ts"],"sourcesContent":["import { base64UrlDecode } from '../../utils';\nimport { validateNearAccountId } from '../../utils/validation';\n\n/**\n * Parse a WebAuthn userHandle into a NEAR account ID.\n * Accepts either a base64url string (serialized) or an ArrayBuffer-like value.\n * Strips optional device suffixes like \" (2)\" appended during registration.\n * Returns a validated account ID string or null if invalid/unavailable.\n */\nexport function parseAccountIdFromUserHandle(userHandle: unknown): string | null {\n try {\n let bytes: Uint8Array | null = null;\n if (typeof userHandle === 'string' && userHandle.length > 0) {\n try { bytes = base64UrlDecode(userHandle); } catch { bytes = null; }\n } else if (userHandle && typeof (userHandle as any).byteLength === 'number') {\n try { bytes = new Uint8Array(userHandle as ArrayBuffer); } catch { bytes = null; }\n }\n if (!bytes || bytes.byteLength === 0) return null;\n\n const decoded = new TextDecoder().decode(bytes);\n const base = decoded.replace(/ \\(\\d+\\)$/g, '');\n return validateNearAccountId(base).valid ? base : null;\n } catch {\n return null;\n }\n}\n\n"],"mappings":";;;;;;;;;;;;;AASA,SAAgB,6BAA6B,YAAoC;AAC/E,KAAI;EACF,IAAIA,QAA2B;AAC/B,MAAI,OAAO,eAAe,YAAY,WAAW,SAAS,EACxD,KAAI;AAAE,WAAQ,gBAAgB;UAAqB;AAAE,WAAQ;;WACpD,cAAc,OAAQ,WAAmB,eAAe,SACjE,KAAI;AAAE,WAAQ,IAAI,WAAW;UAAoC;AAAE,WAAQ;;AAE7E,MAAI,CAAC,SAAS,MAAM,eAAe,EAAG,QAAO;EAE7C,MAAM,UAAU,IAAI,cAAc,OAAO;EACzC,MAAM,OAAO,QAAQ,QAAQ,cAAc;AAC3C,SAAO,sBAAsB,MAAM,QAAQ,OAAO;SAC5C;AACN,SAAO"}
@@ -54,7 +54,7 @@ function buildConfigsFromEnv(overrides = {}) {
54
54
  var PASSKEY_MANAGER_DEFAULT_CONFIGS, DEFAULT_EMAIL_RECOVERY_CONTRACTS;
55
55
  var init_defaultConfigs = __esm({ "src/core/defaultConfigs.ts": (() => {
56
56
  PASSKEY_MANAGER_DEFAULT_CONFIGS = {
57
- nearRpcUrl: "https://test.rpc.fastnear.com",
57
+ nearRpcUrl: "https://test.rpc.fastnear.com, https://rpc.testnet.near.org",
58
58
  nearNetwork: "testnet",
59
59
  contractId: "w3a-v1.testnet",
60
60
  nearExplorerUrl: "https://testnet.nearblocks.io",
@@ -1 +1 @@
1
- {"version":3,"file":"defaultConfigs.js","names":["merged: TatchiConfigs","PASSKEY_MANAGER_DEFAULT_CONFIGS: TatchiConfigs","DEFAULT_EMAIL_RECOVERY_CONTRACTS: EmailRecoveryContracts"],"sources":["../../../../../../src/core/defaultConfigs.ts"],"sourcesContent":["import type { EmailRecoveryContracts, TatchiConfigs, TatchiConfigsInput } from './types/tatchi';\n\n// Default SDK configs suitable for local dev.\n// Cross-origin wallet isolation is recommended; set iframeWallet in your app config when you have a dedicated origin.\n// Consumers can shallow-merge overrides by field.\n\nexport const PASSKEY_MANAGER_DEFAULT_CONFIGS: TatchiConfigs = {\n // You can provide a single URL or a comma-separated list for failover.\n // First URL is treated as primary, subsequent URLs are fallbacks.\n // nearRpcUrl: 'https://rpc.testnet.near.org',\n nearRpcUrl: 'https://test.rpc.fastnear.com',\n nearNetwork: 'testnet',\n contractId: 'w3a-v1.testnet',\n nearExplorerUrl: 'https://testnet.nearblocks.io',\n // Warm signing session defaults used by login/unlock flows.\n // Enforcement (TTL/uses) is owned by the VRF worker; signer workers remain one-shot.\n signingSessionDefaults: {\n ttlMs: 0, // 0 minutes\n remainingUses: 0, // default to requiring a touchID prompt for each transaction\n },\n relayer: {\n // accountId: 'w3a-v1.testnet',\n // No default relayer URL. Force apps to configure via env/overrides.\n // Using an empty string triggers early validation errors in code paths that require it.\n url: '',\n delegateActionRoute: '/signed-delegate',\n emailRecovery: {\n // Require at least 0.01 NEAR available to start email recovery.\n minBalanceYocto: '10000000000000000000000', // 0.01 NEAR\n // Poll every 4 seconds for verification status / access key.\n pollingIntervalMs: 4000,\n // Stop polling after 30 minutes.\n maxPollingDurationMs: 30 * 60 * 1000,\n // Expire pending recovery records after 30 minutes.\n pendingTtlMs: 30 * 60 * 1000,\n // Default recovery mailbox for examples / docs.\n mailtoAddress: 'recover@web3authn.org',\n // EmailDKIMVerifier contract that stores verification results.\n dkimVerifierAccountId: 'email-dkim-verifier-v1.testnet',\n // View method used to fetch VerificationResult by request_id.\n verificationViewMethod: 'get_verification_result',\n },\n },\n vrfWorkerConfigs: {\n shamir3pass: {\n // default Shamir's P in vrf-wasm-worker, needs to match relay server's Shamir P\n p: '3N5w46AIGjGT2v5Vua_TMD5Ywfa9U2F7-WzW8SNDsIM',\n // No default relay server URL to avoid accidental localhost usage in non-dev envs\n // Defaults to relayer.url when undefined\n relayServerUrl: '',\n applyServerLockRoute: '/vrf/apply-server-lock',\n removeServerLockRoute: '/vrf/remove-server-lock',\n }\n },\n emailRecoveryContracts: {\n emailRecovererGlobalContract: 'w3a-email-recoverer-v1.testnet',\n zkEmailVerifierContract: 'zk-email-verifier-v1.testnet',\n emailDkimVerifierContract: 'email-dkim-verifier-v1.testnet',\n },\n // Configure iframeWallet in application code to point at your dedicated wallet origin when available.\n iframeWallet: {\n walletOrigin: 'https://wallet.example.localhost',\n walletServicePath: '/wallet-service',\n sdkBasePath: '/sdk',\n rpIdOverride: 'example.localhost',\n }\n};\n\nexport const DEFAULT_EMAIL_RECOVERY_CONTRACTS: EmailRecoveryContracts = {\n emailRecovererGlobalContract: PASSKEY_MANAGER_DEFAULT_CONFIGS.emailRecoveryContracts.emailDkimVerifierContract,\n zkEmailVerifierContract: PASSKEY_MANAGER_DEFAULT_CONFIGS.emailRecoveryContracts.zkEmailVerifierContract,\n emailDkimVerifierContract: PASSKEY_MANAGER_DEFAULT_CONFIGS.emailRecoveryContracts.emailDkimVerifierContract,\n};\n\n// Merge defaults with overrides\nexport function buildConfigsFromEnv(overrides: TatchiConfigsInput = {}): TatchiConfigs {\n\n const defaults = PASSKEY_MANAGER_DEFAULT_CONFIGS;\n const relayerUrl = overrides.relayer?.url ?? defaults.relayer?.url ?? '';\n // Prefer explicit override for relayer URL; fall back to default preset.\n // Used below to default VRF relayServerUrl when it is undefined.\n const relayServerUrlDefault = relayerUrl;\n\n const merged: TatchiConfigs = {\n nearRpcUrl: overrides.nearRpcUrl ?? defaults.nearRpcUrl,\n nearNetwork: overrides.nearNetwork ?? defaults.nearNetwork,\n contractId: overrides.contractId ?? defaults.contractId,\n nearExplorerUrl: overrides.nearExplorerUrl ?? defaults.nearExplorerUrl,\n walletTheme: overrides.walletTheme ?? defaults.walletTheme,\n signingSessionDefaults: {\n ttlMs: overrides.signingSessionDefaults?.ttlMs\n ?? defaults.signingSessionDefaults?.ttlMs,\n remainingUses: overrides.signingSessionDefaults?.remainingUses\n ?? defaults.signingSessionDefaults?.remainingUses,\n },\n relayer: {\n url: relayerUrl,\n delegateActionRoute: overrides.relayer?.delegateActionRoute\n ?? defaults.relayer?.delegateActionRoute,\n emailRecovery: {\n minBalanceYocto: overrides.relayer?.emailRecovery?.minBalanceYocto\n ?? defaults.relayer?.emailRecovery?.minBalanceYocto,\n pollingIntervalMs: overrides.relayer?.emailRecovery?.pollingIntervalMs\n ?? defaults.relayer?.emailRecovery?.pollingIntervalMs,\n maxPollingDurationMs: overrides.relayer?.emailRecovery?.maxPollingDurationMs\n ?? defaults.relayer?.emailRecovery?.maxPollingDurationMs,\n pendingTtlMs: overrides.relayer?.emailRecovery?.pendingTtlMs\n ?? defaults.relayer?.emailRecovery?.pendingTtlMs,\n mailtoAddress: overrides.relayer?.emailRecovery?.mailtoAddress\n ?? defaults.relayer?.emailRecovery?.mailtoAddress,\n dkimVerifierAccountId: overrides.relayer?.emailRecovery?.dkimVerifierAccountId\n ?? defaults.relayer?.emailRecovery?.dkimVerifierAccountId,\n verificationViewMethod: overrides.relayer?.emailRecovery?.verificationViewMethod\n ?? defaults.relayer?.emailRecovery?.verificationViewMethod,\n },\n },\n authenticatorOptions: overrides.authenticatorOptions ?? defaults.authenticatorOptions,\n vrfWorkerConfigs: {\n shamir3pass: {\n p: overrides.vrfWorkerConfigs?.shamir3pass?.p\n ?? defaults.vrfWorkerConfigs?.shamir3pass?.p,\n relayServerUrl: overrides.vrfWorkerConfigs?.shamir3pass?.relayServerUrl\n ?? defaults.vrfWorkerConfigs?.shamir3pass?.relayServerUrl\n ?? relayServerUrlDefault,\n applyServerLockRoute: overrides.vrfWorkerConfigs?.shamir3pass?.applyServerLockRoute\n ?? defaults.vrfWorkerConfigs?.shamir3pass?.applyServerLockRoute,\n removeServerLockRoute: overrides.vrfWorkerConfigs?.shamir3pass?.removeServerLockRoute\n ?? defaults.vrfWorkerConfigs?.shamir3pass?.removeServerLockRoute,\n },\n },\n emailRecoveryContracts: {\n emailRecovererGlobalContract: overrides.emailRecoveryContracts?.emailRecovererGlobalContract\n ?? defaults.emailRecoveryContracts?.emailRecovererGlobalContract,\n zkEmailVerifierContract: overrides.emailRecoveryContracts?.zkEmailVerifierContract\n ?? defaults.emailRecoveryContracts?.zkEmailVerifierContract,\n emailDkimVerifierContract: overrides.emailRecoveryContracts?.emailDkimVerifierContract\n ?? defaults.emailRecoveryContracts?.emailDkimVerifierContract,\n },\n iframeWallet: {\n walletOrigin: overrides.iframeWallet?.walletOrigin\n ?? defaults.iframeWallet?.walletOrigin,\n walletServicePath: overrides.iframeWallet?.walletServicePath\n ?? defaults.iframeWallet?.walletServicePath\n ?? '/wallet-service',\n sdkBasePath: overrides.iframeWallet?.sdkBasePath\n ?? defaults.iframeWallet?.sdkBasePath\n ?? '/sdk',\n rpIdOverride: overrides.iframeWallet?.rpIdOverride\n ?? defaults.iframeWallet?.rpIdOverride,\n }\n };\n if (!merged.contractId) {\n throw new Error('[configPresets] Missing required config: contractId');\n }\n if (!merged.relayer.url) {\n throw new Error('[configPresets] Missing required config: relayer.url');\n }\n return merged;\n}\n"],"mappings":";;;AA2EA,SAAgB,oBAAoB,YAAgC,IAAmB;CAErF,MAAM,WAAW;CACjB,MAAM,aAAa,UAAU,SAAS,OAAO,SAAS,SAAS,OAAO;CAGtE,MAAM,wBAAwB;CAE9B,MAAMA,SAAwB;EAC5B,YAAY,UAAU,cAAc,SAAS;EAC7C,aAAa,UAAU,eAAe,SAAS;EAC/C,YAAY,UAAU,cAAc,SAAS;EAC7C,iBAAiB,UAAU,mBAAmB,SAAS;EACvD,aAAa,UAAU,eAAe,SAAS;EAC/C,wBAAwB;GACtB,OAAO,UAAU,wBAAwB,SACpC,SAAS,wBAAwB;GACtC,eAAe,UAAU,wBAAwB,iBAC5C,SAAS,wBAAwB;;EAExC,SAAS;GACP,KAAK;GACL,qBAAqB,UAAU,SAAS,uBACnC,SAAS,SAAS;GACvB,eAAe;IACb,iBAAiB,UAAU,SAAS,eAAe,mBAC9C,SAAS,SAAS,eAAe;IACtC,mBAAmB,UAAU,SAAS,eAAe,qBAChD,SAAS,SAAS,eAAe;IACtC,sBAAsB,UAAU,SAAS,eAAe,wBACnD,SAAS,SAAS,eAAe;IACtC,cAAc,UAAU,SAAS,eAAe,gBAC3C,SAAS,SAAS,eAAe;IACtC,eAAe,UAAU,SAAS,eAAe,iBAC5C,SAAS,SAAS,eAAe;IACtC,uBAAuB,UAAU,SAAS,eAAe,yBACpD,SAAS,SAAS,eAAe;IACtC,wBAAwB,UAAU,SAAS,eAAe,0BACrD,SAAS,SAAS,eAAe;;;EAG1C,sBAAsB,UAAU,wBAAwB,SAAS;EACjE,kBAAkB,EAChB,aAAa;GACX,GAAG,UAAU,kBAAkB,aAAa,KACvC,SAAS,kBAAkB,aAAa;GAC7C,gBAAgB,UAAU,kBAAkB,aAAa,kBACpD,SAAS,kBAAkB,aAAa,kBACxC;GACL,sBAAsB,UAAU,kBAAkB,aAAa,wBAC1D,SAAS,kBAAkB,aAAa;GAC7C,uBAAuB,UAAU,kBAAkB,aAAa,yBAC3D,SAAS,kBAAkB,aAAa;;EAGjD,wBAAwB;GACtB,8BAA8B,UAAU,wBAAwB,gCAC3D,SAAS,wBAAwB;GACtC,yBAAyB,UAAU,wBAAwB,2BACtD,SAAS,wBAAwB;GACtC,2BAA2B,UAAU,wBAAwB,6BACxD,SAAS,wBAAwB;;EAExC,cAAc;GACZ,cAAc,UAAU,cAAc,gBACjC,SAAS,cAAc;GAC5B,mBAAmB,UAAU,cAAc,qBACtC,SAAS,cAAc,qBACvB;GACL,aAAa,UAAU,cAAc,eAChC,SAAS,cAAc,eACvB;GACL,cAAc,UAAU,cAAc,gBACjC,SAAS,cAAc;;;AAGhC,KAAI,CAAC,OAAO,WACV,OAAM,IAAI,MAAM;AAElB,KAAI,CAAC,OAAO,QAAQ,IAClB,OAAM,IAAI,MAAM;AAElB,QAAO;;;;CAvJIC,kCAAiD;EAI5D,YAAY;EACZ,aAAa;EACb,YAAY;EACZ,iBAAiB;EAGjB,wBAAwB;GACtB,OAAO;GACP,eAAe;;EAEjB,SAAS;GAIP,KAAK;GACL,qBAAqB;GACrB,eAAe;IAEb,iBAAiB;IAEjB,mBAAmB;IAEnB,sBAAsB,OAAU;IAEhC,cAAc,OAAU;IAExB,eAAe;IAEf,uBAAuB;IAEvB,wBAAwB;;;EAG5B,kBAAkB,EAChB,aAAa;GAEX,GAAG;GAGH,gBAAgB;GAChB,sBAAsB;GACtB,uBAAuB;;EAG3B,wBAAwB;GACtB,8BAA8B;GAC9B,yBAAyB;GACzB,2BAA2B;;EAG7B,cAAc;GACZ,cAAc;GACd,mBAAmB;GACnB,aAAa;GACb,cAAc;;;CAILC,mCAA2D;EACtE,8BAA8B,gCAAgC,uBAAuB;EACrF,yBAAyB,gCAAgC,uBAAuB;EAChF,2BAA2B,gCAAgC,uBAAuB"}
1
+ {"version":3,"file":"defaultConfigs.js","names":["merged: TatchiConfigs","PASSKEY_MANAGER_DEFAULT_CONFIGS: TatchiConfigs","DEFAULT_EMAIL_RECOVERY_CONTRACTS: EmailRecoveryContracts"],"sources":["../../../../../../src/core/defaultConfigs.ts"],"sourcesContent":["import type { EmailRecoveryContracts, TatchiConfigs, TatchiConfigsInput } from './types/tatchi';\n\n// Default SDK configs suitable for local dev.\n// Cross-origin wallet isolation is recommended; set iframeWallet in your app config when you have a dedicated origin.\n// Consumers can shallow-merge overrides by field.\n\nexport const PASSKEY_MANAGER_DEFAULT_CONFIGS: TatchiConfigs = {\n // You can provide a single URL or a comma-separated list for failover.\n // First URL is treated as primary, subsequent URLs are fallbacks.\n nearRpcUrl: 'https://test.rpc.fastnear.com, https://rpc.testnet.near.org',\n nearNetwork: 'testnet',\n contractId: 'w3a-v1.testnet',\n nearExplorerUrl: 'https://testnet.nearblocks.io',\n // Warm signing session defaults used by login/unlock flows.\n // Enforcement (TTL/uses) is owned by the VRF worker; signer workers remain one-shot.\n signingSessionDefaults: {\n ttlMs: 0, // 0 minutes\n remainingUses: 0, // default to requiring a touchID prompt for each transaction\n },\n relayer: {\n // accountId: 'w3a-v1.testnet',\n // No default relayer URL. Force apps to configure via env/overrides.\n // Using an empty string triggers early validation errors in code paths that require it.\n url: '',\n delegateActionRoute: '/signed-delegate',\n emailRecovery: {\n // Require at least 0.01 NEAR available to start email recovery.\n minBalanceYocto: '10000000000000000000000', // 0.01 NEAR\n // Poll every 4 seconds for verification status / access key.\n pollingIntervalMs: 4000,\n // Stop polling after 30 minutes.\n maxPollingDurationMs: 30 * 60 * 1000,\n // Expire pending recovery records after 30 minutes.\n pendingTtlMs: 30 * 60 * 1000,\n // Default recovery mailbox for examples / docs.\n mailtoAddress: 'recover@web3authn.org',\n // EmailDKIMVerifier contract that stores verification results.\n dkimVerifierAccountId: 'email-dkim-verifier-v1.testnet',\n // View method used to fetch VerificationResult by request_id.\n verificationViewMethod: 'get_verification_result',\n },\n },\n vrfWorkerConfigs: {\n shamir3pass: {\n // default Shamir's P in vrf-wasm-worker, needs to match relay server's Shamir P\n p: '3N5w46AIGjGT2v5Vua_TMD5Ywfa9U2F7-WzW8SNDsIM',\n // No default relay server URL to avoid accidental localhost usage in non-dev envs\n // Defaults to relayer.url when undefined\n relayServerUrl: '',\n applyServerLockRoute: '/vrf/apply-server-lock',\n removeServerLockRoute: '/vrf/remove-server-lock',\n }\n },\n emailRecoveryContracts: {\n emailRecovererGlobalContract: 'w3a-email-recoverer-v1.testnet',\n zkEmailVerifierContract: 'zk-email-verifier-v1.testnet',\n emailDkimVerifierContract: 'email-dkim-verifier-v1.testnet',\n },\n // Configure iframeWallet in application code to point at your dedicated wallet origin when available.\n iframeWallet: {\n walletOrigin: 'https://wallet.example.localhost',\n walletServicePath: '/wallet-service',\n sdkBasePath: '/sdk',\n rpIdOverride: 'example.localhost',\n }\n};\n\nexport const DEFAULT_EMAIL_RECOVERY_CONTRACTS: EmailRecoveryContracts = {\n emailRecovererGlobalContract: PASSKEY_MANAGER_DEFAULT_CONFIGS.emailRecoveryContracts.emailDkimVerifierContract,\n zkEmailVerifierContract: PASSKEY_MANAGER_DEFAULT_CONFIGS.emailRecoveryContracts.zkEmailVerifierContract,\n emailDkimVerifierContract: PASSKEY_MANAGER_DEFAULT_CONFIGS.emailRecoveryContracts.emailDkimVerifierContract,\n};\n\n// Merge defaults with overrides\nexport function buildConfigsFromEnv(overrides: TatchiConfigsInput = {}): TatchiConfigs {\n\n const defaults = PASSKEY_MANAGER_DEFAULT_CONFIGS;\n const relayerUrl = overrides.relayer?.url ?? defaults.relayer?.url ?? '';\n // Prefer explicit override for relayer URL; fall back to default preset.\n // Used below to default VRF relayServerUrl when it is undefined.\n const relayServerUrlDefault = relayerUrl;\n\n const merged: TatchiConfigs = {\n nearRpcUrl: overrides.nearRpcUrl ?? defaults.nearRpcUrl,\n nearNetwork: overrides.nearNetwork ?? defaults.nearNetwork,\n contractId: overrides.contractId ?? defaults.contractId,\n nearExplorerUrl: overrides.nearExplorerUrl ?? defaults.nearExplorerUrl,\n walletTheme: overrides.walletTheme ?? defaults.walletTheme,\n signingSessionDefaults: {\n ttlMs: overrides.signingSessionDefaults?.ttlMs\n ?? defaults.signingSessionDefaults?.ttlMs,\n remainingUses: overrides.signingSessionDefaults?.remainingUses\n ?? defaults.signingSessionDefaults?.remainingUses,\n },\n relayer: {\n url: relayerUrl,\n delegateActionRoute: overrides.relayer?.delegateActionRoute\n ?? defaults.relayer?.delegateActionRoute,\n emailRecovery: {\n minBalanceYocto: overrides.relayer?.emailRecovery?.minBalanceYocto\n ?? defaults.relayer?.emailRecovery?.minBalanceYocto,\n pollingIntervalMs: overrides.relayer?.emailRecovery?.pollingIntervalMs\n ?? defaults.relayer?.emailRecovery?.pollingIntervalMs,\n maxPollingDurationMs: overrides.relayer?.emailRecovery?.maxPollingDurationMs\n ?? defaults.relayer?.emailRecovery?.maxPollingDurationMs,\n pendingTtlMs: overrides.relayer?.emailRecovery?.pendingTtlMs\n ?? defaults.relayer?.emailRecovery?.pendingTtlMs,\n mailtoAddress: overrides.relayer?.emailRecovery?.mailtoAddress\n ?? defaults.relayer?.emailRecovery?.mailtoAddress,\n dkimVerifierAccountId: overrides.relayer?.emailRecovery?.dkimVerifierAccountId\n ?? defaults.relayer?.emailRecovery?.dkimVerifierAccountId,\n verificationViewMethod: overrides.relayer?.emailRecovery?.verificationViewMethod\n ?? defaults.relayer?.emailRecovery?.verificationViewMethod,\n },\n },\n authenticatorOptions: overrides.authenticatorOptions ?? defaults.authenticatorOptions,\n vrfWorkerConfigs: {\n shamir3pass: {\n p: overrides.vrfWorkerConfigs?.shamir3pass?.p\n ?? defaults.vrfWorkerConfigs?.shamir3pass?.p,\n relayServerUrl: overrides.vrfWorkerConfigs?.shamir3pass?.relayServerUrl\n ?? defaults.vrfWorkerConfigs?.shamir3pass?.relayServerUrl\n ?? relayServerUrlDefault,\n applyServerLockRoute: overrides.vrfWorkerConfigs?.shamir3pass?.applyServerLockRoute\n ?? defaults.vrfWorkerConfigs?.shamir3pass?.applyServerLockRoute,\n removeServerLockRoute: overrides.vrfWorkerConfigs?.shamir3pass?.removeServerLockRoute\n ?? defaults.vrfWorkerConfigs?.shamir3pass?.removeServerLockRoute,\n },\n },\n emailRecoveryContracts: {\n emailRecovererGlobalContract: overrides.emailRecoveryContracts?.emailRecovererGlobalContract\n ?? defaults.emailRecoveryContracts?.emailRecovererGlobalContract,\n zkEmailVerifierContract: overrides.emailRecoveryContracts?.zkEmailVerifierContract\n ?? defaults.emailRecoveryContracts?.zkEmailVerifierContract,\n emailDkimVerifierContract: overrides.emailRecoveryContracts?.emailDkimVerifierContract\n ?? defaults.emailRecoveryContracts?.emailDkimVerifierContract,\n },\n iframeWallet: {\n walletOrigin: overrides.iframeWallet?.walletOrigin\n ?? defaults.iframeWallet?.walletOrigin,\n walletServicePath: overrides.iframeWallet?.walletServicePath\n ?? defaults.iframeWallet?.walletServicePath\n ?? '/wallet-service',\n sdkBasePath: overrides.iframeWallet?.sdkBasePath\n ?? defaults.iframeWallet?.sdkBasePath\n ?? '/sdk',\n rpIdOverride: overrides.iframeWallet?.rpIdOverride\n ?? defaults.iframeWallet?.rpIdOverride,\n }\n };\n if (!merged.contractId) {\n throw new Error('[configPresets] Missing required config: contractId');\n }\n if (!merged.relayer.url) {\n throw new Error('[configPresets] Missing required config: relayer.url');\n }\n return merged;\n}\n"],"mappings":";;;AA0EA,SAAgB,oBAAoB,YAAgC,IAAmB;CAErF,MAAM,WAAW;CACjB,MAAM,aAAa,UAAU,SAAS,OAAO,SAAS,SAAS,OAAO;CAGtE,MAAM,wBAAwB;CAE9B,MAAMA,SAAwB;EAC5B,YAAY,UAAU,cAAc,SAAS;EAC7C,aAAa,UAAU,eAAe,SAAS;EAC/C,YAAY,UAAU,cAAc,SAAS;EAC7C,iBAAiB,UAAU,mBAAmB,SAAS;EACvD,aAAa,UAAU,eAAe,SAAS;EAC/C,wBAAwB;GACtB,OAAO,UAAU,wBAAwB,SACpC,SAAS,wBAAwB;GACtC,eAAe,UAAU,wBAAwB,iBAC5C,SAAS,wBAAwB;;EAExC,SAAS;GACP,KAAK;GACL,qBAAqB,UAAU,SAAS,uBACnC,SAAS,SAAS;GACvB,eAAe;IACb,iBAAiB,UAAU,SAAS,eAAe,mBAC9C,SAAS,SAAS,eAAe;IACtC,mBAAmB,UAAU,SAAS,eAAe,qBAChD,SAAS,SAAS,eAAe;IACtC,sBAAsB,UAAU,SAAS,eAAe,wBACnD,SAAS,SAAS,eAAe;IACtC,cAAc,UAAU,SAAS,eAAe,gBAC3C,SAAS,SAAS,eAAe;IACtC,eAAe,UAAU,SAAS,eAAe,iBAC5C,SAAS,SAAS,eAAe;IACtC,uBAAuB,UAAU,SAAS,eAAe,yBACpD,SAAS,SAAS,eAAe;IACtC,wBAAwB,UAAU,SAAS,eAAe,0BACrD,SAAS,SAAS,eAAe;;;EAG1C,sBAAsB,UAAU,wBAAwB,SAAS;EACjE,kBAAkB,EAChB,aAAa;GACX,GAAG,UAAU,kBAAkB,aAAa,KACvC,SAAS,kBAAkB,aAAa;GAC7C,gBAAgB,UAAU,kBAAkB,aAAa,kBACpD,SAAS,kBAAkB,aAAa,kBACxC;GACL,sBAAsB,UAAU,kBAAkB,aAAa,wBAC1D,SAAS,kBAAkB,aAAa;GAC7C,uBAAuB,UAAU,kBAAkB,aAAa,yBAC3D,SAAS,kBAAkB,aAAa;;EAGjD,wBAAwB;GACtB,8BAA8B,UAAU,wBAAwB,gCAC3D,SAAS,wBAAwB;GACtC,yBAAyB,UAAU,wBAAwB,2BACtD,SAAS,wBAAwB;GACtC,2BAA2B,UAAU,wBAAwB,6BACxD,SAAS,wBAAwB;;EAExC,cAAc;GACZ,cAAc,UAAU,cAAc,gBACjC,SAAS,cAAc;GAC5B,mBAAmB,UAAU,cAAc,qBACtC,SAAS,cAAc,qBACvB;GACL,aAAa,UAAU,cAAc,eAChC,SAAS,cAAc,eACvB;GACL,cAAc,UAAU,cAAc,gBACjC,SAAS,cAAc;;;AAGhC,KAAI,CAAC,OAAO,WACV,OAAM,IAAI,MAAM;AAElB,KAAI,CAAC,OAAO,QAAQ,IAClB,OAAM,IAAI,MAAM;AAElB,QAAO;;;;CAtJIC,kCAAiD;EAG5D,YAAY;EACZ,aAAa;EACb,YAAY;EACZ,iBAAiB;EAGjB,wBAAwB;GACtB,OAAO;GACP,eAAe;;EAEjB,SAAS;GAIP,KAAK;GACL,qBAAqB;GACrB,eAAe;IAEb,iBAAiB;IAEjB,mBAAmB;IAEnB,sBAAsB,OAAU;IAEhC,cAAc,OAAU;IAExB,eAAe;IAEf,uBAAuB;IAEvB,wBAAwB;;;EAG5B,kBAAkB,EAChB,aAAa;GAEX,GAAG;GAGH,gBAAgB;GAChB,sBAAsB;GACtB,uBAAuB;;EAG3B,wBAAwB;GACtB,8BAA8B;GAC9B,yBAAyB;GACzB,2BAA2B;;EAG7B,cAAc;GACZ,cAAc;GACd,mBAAmB;GACnB,aAAa;GACb,cAAc;;;CAILC,mCAA2D;EACtE,8BAA8B,gCAAgC,uBAAuB;EACrF,yBAAyB,gCAAgC,uBAAuB;EAChF,2BAA2B,gCAAgC,uBAAuB"}
@@ -1,8 +1,8 @@
1
+ import { __esm } from "../../../../_virtual/rolldown_runtime.js";
1
2
  import { base64UrlDecode, base64UrlEncode } from "../../utils/base64.js";
2
3
  import { init_encoders } from "../../utils/encoders.js";
3
4
 
4
5
  //#region src/core/types/vrf-worker.ts
5
- init_encoders();
6
6
  /**
7
7
  * Decode VRF output and use first 32 bytes as WebAuthn challenge
8
8
  * @param vrfChallenge - VRF challenge object
@@ -56,7 +56,11 @@ function createRandomVRFChallenge() {
56
56
  blockHash: void 0
57
57
  };
58
58
  }
59
+ var init_vrf_worker = __esm({ "src/core/types/vrf-worker.ts": (() => {
60
+ init_encoders();
61
+ }) });
59
62
 
60
63
  //#endregion
61
- export { createRandomVRFChallenge, outputAs32Bytes, validateVRFChallenge };
64
+ init_vrf_worker();
65
+ export { createRandomVRFChallenge, init_vrf_worker, outputAs32Bytes, validateVRFChallenge };
62
66
  //# sourceMappingURL=vrf-worker.js.map
@@ -1,14 +1,20 @@
1
+ import { __esm } from "../../../_virtual/rolldown_runtime.js";
1
2
  import { init_validation, validateNearAccountId } from "./validation.js";
2
3
  import { base64Decode, base64Encode, base64UrlDecode, base64UrlEncode } from "./base64.js";
3
4
  import { base58Encode } from "./base58.js";
4
5
  import { init_encoders } from "./encoders.js";
5
6
  import { errorMessage, getNearShortErrorMessage, getTouchIdCancellationMessage, getUserFriendlyErrorMessage, init_errors, isTouchIdCancellationError, toError } from "./errors.js";
6
- import { detectDeviceType, getOptimalCameraFacingMode, hasActiveUserActivation, isIOS, isMobileDevice, isSafari, needsExplicitActivation } from "../../../deviceDetection.js";
7
+ import { detectDeviceType, getOptimalCameraFacingMode, hasActiveUserActivation, init_deviceDetection, isIOS, isMobileDevice, isSafari, needsExplicitActivation } from "../../../deviceDetection.js";
7
8
 
8
9
  //#region src/utils/index.ts
9
- init_encoders();
10
- init_validation();
11
- init_errors();
10
+ var init_utils = __esm({ "src/utils/index.ts": (() => {
11
+ init_encoders();
12
+ init_validation();
13
+ init_errors();
14
+ init_deviceDetection();
15
+ }) });
12
16
 
13
17
  //#endregion
18
+ init_utils();
19
+ export { init_utils };
14
20
  //# sourceMappingURL=index.js.map