@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.
- package/dist/cjs/core/EmailRecovery/index.js +12 -5
- package/dist/cjs/core/EmailRecovery/index.js.map +1 -1
- package/dist/cjs/core/IndexedDBManager/passkeyClientDB.js +35 -36
- package/dist/cjs/core/IndexedDBManager/passkeyClientDB.js.map +1 -1
- package/dist/cjs/core/NearClient.js +2 -1
- package/dist/cjs/core/NearClient.js.map +1 -1
- package/dist/cjs/core/TatchiPasskey/emailRecovery.js +136 -27
- package/dist/cjs/core/TatchiPasskey/emailRecovery.js.map +1 -1
- package/dist/cjs/core/TatchiPasskey/faucets/createAccountRelayServer.js +1 -0
- package/dist/cjs/core/TatchiPasskey/faucets/createAccountRelayServer.js.map +1 -1
- package/dist/cjs/core/TatchiPasskey/index.js +25 -0
- package/dist/cjs/core/TatchiPasskey/index.js.map +1 -1
- package/dist/cjs/core/TatchiPasskey/linkDevice.js +2 -0
- package/dist/cjs/core/TatchiPasskey/linkDevice.js.map +1 -1
- package/dist/cjs/core/TatchiPasskey/login.js +15 -4
- package/dist/cjs/core/TatchiPasskey/login.js.map +1 -1
- package/dist/cjs/core/TatchiPasskey/recoverAccount.js +1 -0
- package/dist/cjs/core/TatchiPasskey/recoverAccount.js.map +1 -1
- package/dist/cjs/core/TatchiPasskey/scanDevice.js +1 -0
- package/dist/cjs/core/TatchiPasskey/scanDevice.js.map +1 -1
- package/dist/cjs/core/WalletIframe/client/IframeTransport.js +10 -0
- package/dist/cjs/core/WalletIframe/client/IframeTransport.js.map +1 -1
- package/dist/cjs/core/WalletIframe/client/router.js +9 -0
- package/dist/cjs/core/WalletIframe/client/router.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-drawer.js +1 -1
- package/dist/cjs/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-drawer.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-modal.js +52 -52
- package/dist/cjs/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-modal.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/getDeviceNumber.js +10 -1
- package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/getDeviceNumber.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/checkCanRegisterUser.js +1 -0
- package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/checkCanRegisterUser.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/decryptPrivateKeyWithPrf.js +1 -0
- package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/decryptPrivateKeyWithPrf.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/deriveNearKeypairAndEncryptFromSerialized.js +1 -0
- package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/deriveNearKeypairAndEncryptFromSerialized.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/exportNearKeypairUi.js +1 -0
- package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/exportNearKeypairUi.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/registerDevice2WithDerivedKey.js +2 -1
- package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/registerDevice2WithDerivedKey.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/signDelegateAction.js +1 -0
- package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/signDelegateAction.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/signNep413Message.js +1 -0
- package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/signNep413Message.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/signTransactionsWithActions.js +1 -0
- package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/signTransactionsWithActions.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/validation.js +2 -0
- package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/handlers/validation.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/index.js +1 -0
- package/dist/cjs/core/WebAuthnManager/SignerWorkerManager/index.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/vrf.js +1 -0
- package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/vrf.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/webauthn.js +6 -0
- package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/webauthn.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/determineConfirmationConfig.js +2 -1
- package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/determineConfirmationConfig.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/localOnly.js +1 -0
- package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/localOnly.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js +1 -0
- package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js +4 -15
- package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/handlers/deriveVrfKeypairFromPrf.js +1 -0
- package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/handlers/deriveVrfKeypairFromPrf.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfChallenge.js +1 -0
- package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfChallenge.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfKeypairBootstrap.js +1 -0
- package/dist/cjs/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfKeypairBootstrap.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/WebAuthnFallbacks/index.js +17 -0
- package/dist/cjs/core/WebAuthnManager/WebAuthnFallbacks/index.js.map +1 -0
- package/dist/cjs/core/WebAuthnManager/WebAuthnFallbacks/safari-fallbacks.js +64 -54
- package/dist/cjs/core/WebAuthnManager/WebAuthnFallbacks/safari-fallbacks.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/credentialsHelpers.js +12 -2
- package/dist/cjs/core/WebAuthnManager/credentialsHelpers.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/index.js +6 -1
- package/dist/cjs/core/WebAuthnManager/index.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/touchIdPrompt.js +209 -201
- package/dist/cjs/core/WebAuthnManager/touchIdPrompt.js.map +1 -1
- package/dist/cjs/core/WebAuthnManager/userHandle.js +2 -1
- package/dist/cjs/core/WebAuthnManager/userHandle.js.map +1 -1
- package/dist/cjs/core/defaultConfigs.js +1 -1
- package/dist/cjs/core/defaultConfigs.js.map +1 -1
- package/dist/cjs/core/types/vrf-worker.js +10 -1
- package/dist/cjs/core/types/vrf-worker.js.map +1 -1
- package/dist/cjs/react/components/AccountMenuButton/{LinkedDevicesModal-STvIsylA.css → LinkedDevicesModal-B6api181.css} +1 -1
- package/dist/{esm/react/components/AccountMenuButton/LinkedDevicesModal-STvIsylA.css.map → cjs/react/components/AccountMenuButton/LinkedDevicesModal-B6api181.css.map} +1 -1
- package/dist/cjs/react/components/AccountMenuButton/{ProfileDropdown-iARgUwK1.css → ProfileDropdown-B-DrG_u5.css} +1 -1
- package/dist/{esm/react/components/AccountMenuButton/ProfileDropdown-iARgUwK1.css.map → cjs/react/components/AccountMenuButton/ProfileDropdown-B-DrG_u5.css.map} +1 -1
- package/dist/cjs/react/components/AccountMenuButton/{Web3AuthProfileButton-Db3NeoAC.css → Web3AuthProfileButton-BnZDUeCL.css} +1 -1
- package/dist/cjs/react/components/AccountMenuButton/{Web3AuthProfileButton-Db3NeoAC.css.map → Web3AuthProfileButton-BnZDUeCL.css.map} +1 -1
- package/dist/cjs/react/components/AccountMenuButton/icons/{TouchIcon-BXM5NR4A.css → TouchIcon-CAGCi8MY.css} +1 -1
- package/dist/cjs/react/components/AccountMenuButton/icons/{TouchIcon-BXM5NR4A.css.map → TouchIcon-CAGCi8MY.css.map} +1 -1
- package/dist/cjs/react/components/PasskeyAuthMenu/{PasskeyAuthMenu-De1qTSmU.css → PasskeyAuthMenu-CNNxVj4L.css} +14 -1
- package/dist/cjs/react/components/PasskeyAuthMenu/{PasskeyAuthMenu-De1qTSmU.css.map → PasskeyAuthMenu-CNNxVj4L.css.map} +1 -1
- package/dist/cjs/react/components/PasskeyAuthMenu/ui/EmailRecoverySlide.js +122 -53
- package/dist/cjs/react/components/PasskeyAuthMenu/ui/EmailRecoverySlide.js.map +1 -1
- package/dist/cjs/react/components/{ShowQRCode-DCnR__fx.css → ShowQRCode-nZhZSaba.css} +1 -1
- package/dist/cjs/react/components/{ShowQRCode-DCnR__fx.css.map → ShowQRCode-nZhZSaba.css.map} +1 -1
- package/dist/cjs/react/deviceDetection.js +75 -92
- package/dist/cjs/react/deviceDetection.js.map +1 -1
- package/dist/cjs/react/hooks/usePreconnectWalletAssets.js +32 -27
- package/dist/cjs/react/hooks/usePreconnectWalletAssets.js.map +1 -1
- package/dist/cjs/react/hooks/useQRCamera.js +1 -0
- package/dist/cjs/react/hooks/useQRCamera.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/EmailRecovery/index.js +12 -5
- package/dist/cjs/react/sdk/src/core/EmailRecovery/index.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/IndexedDBManager/passkeyClientDB.js +35 -36
- package/dist/cjs/react/sdk/src/core/IndexedDBManager/passkeyClientDB.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/NearClient.js +2 -1
- package/dist/cjs/react/sdk/src/core/NearClient.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/TatchiPasskey/emailRecovery.js +136 -27
- package/dist/cjs/react/sdk/src/core/TatchiPasskey/emailRecovery.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/TatchiPasskey/faucets/createAccountRelayServer.js +1 -0
- package/dist/cjs/react/sdk/src/core/TatchiPasskey/faucets/createAccountRelayServer.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/TatchiPasskey/index.js +25 -0
- package/dist/cjs/react/sdk/src/core/TatchiPasskey/index.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/TatchiPasskey/linkDevice.js +2 -0
- package/dist/cjs/react/sdk/src/core/TatchiPasskey/linkDevice.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/TatchiPasskey/login.js +15 -4
- package/dist/cjs/react/sdk/src/core/TatchiPasskey/login.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/TatchiPasskey/recoverAccount.js +1 -0
- package/dist/cjs/react/sdk/src/core/TatchiPasskey/recoverAccount.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/TatchiPasskey/scanDevice.js +1 -0
- package/dist/cjs/react/sdk/src/core/TatchiPasskey/scanDevice.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WalletIframe/client/IframeTransport.js +10 -0
- package/dist/cjs/react/sdk/src/core/WalletIframe/client/IframeTransport.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WalletIframe/client/router.js +9 -0
- package/dist/cjs/react/sdk/src/core/WalletIframe/client/router.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-drawer.js +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-drawer.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-modal.js +52 -52
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-modal.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/getDeviceNumber.js +10 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/getDeviceNumber.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/checkCanRegisterUser.js +1 -0
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/checkCanRegisterUser.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/decryptPrivateKeyWithPrf.js +1 -0
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/decryptPrivateKeyWithPrf.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/deriveNearKeypairAndEncryptFromSerialized.js +1 -0
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/deriveNearKeypairAndEncryptFromSerialized.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/exportNearKeypairUi.js +1 -0
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/exportNearKeypairUi.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/registerDevice2WithDerivedKey.js +2 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/registerDevice2WithDerivedKey.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/signDelegateAction.js +1 -0
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/signDelegateAction.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/signNep413Message.js +1 -0
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/signNep413Message.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/signTransactionsWithActions.js +1 -0
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/signTransactionsWithActions.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/validation.js +2 -0
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/validation.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/index.js +1 -0
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/index.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/vrf.js +1 -0
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/vrf.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/webauthn.js +6 -0
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/webauthn.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/determineConfirmationConfig.js +2 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/determineConfirmationConfig.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/localOnly.js +1 -0
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/localOnly.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js +1 -0
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js +4 -15
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/handlers/deriveVrfKeypairFromPrf.js +1 -0
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/handlers/deriveVrfKeypairFromPrf.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfChallenge.js +1 -0
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfChallenge.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfKeypairBootstrap.js +1 -0
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfKeypairBootstrap.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/WebAuthnFallbacks/index.js +17 -0
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/WebAuthnFallbacks/index.js.map +1 -0
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/WebAuthnFallbacks/safari-fallbacks.js +64 -54
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/WebAuthnFallbacks/safari-fallbacks.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/credentialsHelpers.js +12 -2
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/credentialsHelpers.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/index.js +6 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/index.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/touchIdPrompt.js +209 -201
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/touchIdPrompt.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/userHandle.js +2 -1
- package/dist/cjs/react/sdk/src/core/WebAuthnManager/userHandle.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/defaultConfigs.js +1 -1
- package/dist/cjs/react/sdk/src/core/defaultConfigs.js.map +1 -1
- package/dist/cjs/react/sdk/src/core/types/vrf-worker.js +10 -1
- package/dist/cjs/react/sdk/src/core/types/vrf-worker.js.map +1 -1
- package/dist/cjs/react/sdk/src/utils/index.js +13 -3
- package/dist/cjs/server/email-recovery/emailEncryptor.js +11 -0
- package/dist/cjs/server/email-recovery/emailEncryptor.js.map +1 -1
- package/dist/cjs/server/email-recovery/emailParsers.js +57 -0
- package/dist/cjs/server/email-recovery/emailParsers.js.map +1 -1
- package/dist/cjs/server/email-recovery/index.js +1 -1
- package/dist/cjs/server/email-recovery/index.js.map +1 -1
- package/dist/cjs/server/email-recovery/rpcCalls.js +14 -1
- package/dist/cjs/server/email-recovery/rpcCalls.js.map +1 -1
- package/dist/cjs/server/index.js +1 -0
- package/dist/cjs/server/router/cloudflare.js.map +1 -1
- package/dist/cjs/server/router/express.js.map +1 -1
- package/dist/cjs/server/sdk/src/core/defaultConfigs.js +1 -1
- package/dist/cjs/server/sdk/src/core/defaultConfigs.js.map +1 -1
- package/dist/cjs/utils/index.js +13 -3
- package/dist/esm/core/EmailRecovery/index.js +12 -5
- package/dist/esm/core/EmailRecovery/index.js.map +1 -1
- package/dist/esm/core/IndexedDBManager/passkeyClientDB.js +35 -36
- package/dist/esm/core/IndexedDBManager/passkeyClientDB.js.map +1 -1
- package/dist/esm/core/NearClient.js +2 -1
- package/dist/esm/core/NearClient.js.map +1 -1
- package/dist/esm/core/TatchiPasskey/emailRecovery.js +136 -27
- package/dist/esm/core/TatchiPasskey/emailRecovery.js.map +1 -1
- package/dist/esm/core/TatchiPasskey/faucets/createAccountRelayServer.js +2 -1
- package/dist/esm/core/TatchiPasskey/faucets/createAccountRelayServer.js.map +1 -1
- package/dist/esm/core/TatchiPasskey/index.js +26 -1
- package/dist/esm/core/TatchiPasskey/index.js.map +1 -1
- package/dist/esm/core/TatchiPasskey/linkDevice.js +4 -2
- package/dist/esm/core/TatchiPasskey/linkDevice.js.map +1 -1
- package/dist/esm/core/TatchiPasskey/login.js +13 -7
- package/dist/esm/core/TatchiPasskey/login.js.map +1 -1
- package/dist/esm/core/TatchiPasskey/recoverAccount.js +2 -1
- package/dist/esm/core/TatchiPasskey/recoverAccount.js.map +1 -1
- package/dist/esm/core/TatchiPasskey/scanDevice.js +2 -1
- package/dist/esm/core/TatchiPasskey/scanDevice.js.map +1 -1
- package/dist/esm/core/WalletIframe/client/IframeTransport.js +11 -1
- package/dist/esm/core/WalletIframe/client/IframeTransport.js.map +1 -1
- package/dist/esm/core/WalletIframe/client/router.js +9 -0
- package/dist/esm/core/WalletIframe/client/router.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-drawer.js +1 -1
- package/dist/esm/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-drawer.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-modal.js +52 -52
- package/dist/esm/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-modal.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/SignerWorkerManager/getDeviceNumber.js +6 -2
- package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/checkCanRegisterUser.js +2 -1
- package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/checkCanRegisterUser.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/decryptPrivateKeyWithPrf.js +2 -1
- package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/decryptPrivateKeyWithPrf.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/deriveNearKeypairAndEncryptFromSerialized.js +2 -1
- package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/deriveNearKeypairAndEncryptFromSerialized.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/exportNearKeypairUi.js +2 -1
- package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/exportNearKeypairUi.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/registerDevice2WithDerivedKey.js +2 -1
- package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/registerDevice2WithDerivedKey.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/signDelegateAction.js +2 -1
- package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/signDelegateAction.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/signNep413Message.js +2 -1
- package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/signNep413Message.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/signTransactionsWithActions.js +2 -1
- package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/signTransactionsWithActions.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/validation.js +4 -2
- package/dist/esm/core/WebAuthnManager/SignerWorkerManager/handlers/validation.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/SignerWorkerManager/index.js +2 -1
- package/dist/esm/core/WebAuthnManager/SignerWorkerManager/index.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/vrf.js +1 -0
- package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/vrf.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/webauthn.js +8 -2
- package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/webauthn.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/determineConfirmationConfig.js +2 -1
- package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/determineConfirmationConfig.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/localOnly.js +2 -1
- package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/localOnly.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js +2 -1
- package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js +5 -16
- package/dist/esm/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/VrfWorkerManager/handlers/deriveVrfKeypairFromPrf.js +2 -1
- package/dist/esm/core/WebAuthnManager/VrfWorkerManager/handlers/deriveVrfKeypairFromPrf.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfChallenge.js +2 -1
- package/dist/esm/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfChallenge.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfKeypairBootstrap.js +2 -1
- package/dist/esm/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfKeypairBootstrap.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/WebAuthnFallbacks/index.js +12 -0
- package/dist/esm/core/WebAuthnManager/WebAuthnFallbacks/index.js.map +1 -0
- package/dist/esm/core/WebAuthnManager/WebAuthnFallbacks/safari-fallbacks.js +61 -55
- package/dist/esm/core/WebAuthnManager/WebAuthnFallbacks/safari-fallbacks.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/credentialsHelpers.js +8 -3
- package/dist/esm/core/WebAuthnManager/index.js +8 -3
- package/dist/esm/core/WebAuthnManager/index.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/touchIdPrompt.js +207 -204
- package/dist/esm/core/WebAuthnManager/touchIdPrompt.js.map +1 -1
- package/dist/esm/core/WebAuthnManager/userHandle.js +2 -1
- package/dist/esm/core/WebAuthnManager/userHandle.js.map +1 -1
- package/dist/esm/core/defaultConfigs.js +1 -1
- package/dist/esm/core/defaultConfigs.js.map +1 -1
- package/dist/esm/core/types/vrf-worker.js +6 -2
- package/dist/esm/react/components/AccountMenuButton/{LinkedDevicesModal-STvIsylA.css → LinkedDevicesModal-B6api181.css} +1 -1
- package/dist/{cjs/react/components/AccountMenuButton/LinkedDevicesModal-STvIsylA.css.map → esm/react/components/AccountMenuButton/LinkedDevicesModal-B6api181.css.map} +1 -1
- package/dist/esm/react/components/AccountMenuButton/{ProfileDropdown-iARgUwK1.css → ProfileDropdown-B-DrG_u5.css} +1 -1
- package/dist/{cjs/react/components/AccountMenuButton/ProfileDropdown-iARgUwK1.css.map → esm/react/components/AccountMenuButton/ProfileDropdown-B-DrG_u5.css.map} +1 -1
- package/dist/esm/react/components/AccountMenuButton/{Web3AuthProfileButton-Db3NeoAC.css → Web3AuthProfileButton-BnZDUeCL.css} +1 -1
- package/dist/esm/react/components/AccountMenuButton/{Web3AuthProfileButton-Db3NeoAC.css.map → Web3AuthProfileButton-BnZDUeCL.css.map} +1 -1
- package/dist/esm/react/components/AccountMenuButton/icons/{TouchIcon-BXM5NR4A.css → TouchIcon-CAGCi8MY.css} +1 -1
- package/dist/esm/react/components/AccountMenuButton/icons/{TouchIcon-BXM5NR4A.css.map → TouchIcon-CAGCi8MY.css.map} +1 -1
- package/dist/esm/react/components/PasskeyAuthMenu/{PasskeyAuthMenu-De1qTSmU.css → PasskeyAuthMenu-CNNxVj4L.css} +14 -1
- package/dist/esm/react/components/PasskeyAuthMenu/{PasskeyAuthMenu-De1qTSmU.css.map → PasskeyAuthMenu-CNNxVj4L.css.map} +1 -1
- package/dist/esm/react/components/PasskeyAuthMenu/ui/EmailRecoverySlide.js +123 -54
- package/dist/esm/react/components/PasskeyAuthMenu/ui/EmailRecoverySlide.js.map +1 -1
- package/dist/esm/react/components/{ShowQRCode-DCnR__fx.css → ShowQRCode-nZhZSaba.css} +1 -1
- package/dist/esm/react/components/{ShowQRCode-DCnR__fx.css.map → ShowQRCode-nZhZSaba.css.map} +1 -1
- package/dist/esm/react/deviceDetection.js +72 -93
- package/dist/esm/react/deviceDetection.js.map +1 -1
- package/dist/esm/react/hooks/usePreconnectWalletAssets.js +32 -27
- package/dist/esm/react/hooks/usePreconnectWalletAssets.js.map +1 -1
- package/dist/esm/react/hooks/useQRCamera.js +2 -1
- package/dist/esm/react/hooks/useQRCamera.js.map +1 -1
- package/dist/esm/react/sdk/src/core/EmailRecovery/index.js +12 -5
- package/dist/esm/react/sdk/src/core/EmailRecovery/index.js.map +1 -1
- package/dist/esm/react/sdk/src/core/IndexedDBManager/passkeyClientDB.js +35 -36
- package/dist/esm/react/sdk/src/core/IndexedDBManager/passkeyClientDB.js.map +1 -1
- package/dist/esm/react/sdk/src/core/NearClient.js +2 -1
- package/dist/esm/react/sdk/src/core/NearClient.js.map +1 -1
- package/dist/esm/react/sdk/src/core/TatchiPasskey/emailRecovery.js +136 -27
- package/dist/esm/react/sdk/src/core/TatchiPasskey/emailRecovery.js.map +1 -1
- package/dist/esm/react/sdk/src/core/TatchiPasskey/faucets/createAccountRelayServer.js +2 -1
- package/dist/esm/react/sdk/src/core/TatchiPasskey/faucets/createAccountRelayServer.js.map +1 -1
- package/dist/esm/react/sdk/src/core/TatchiPasskey/index.js +26 -1
- package/dist/esm/react/sdk/src/core/TatchiPasskey/index.js.map +1 -1
- package/dist/esm/react/sdk/src/core/TatchiPasskey/linkDevice.js +4 -2
- package/dist/esm/react/sdk/src/core/TatchiPasskey/linkDevice.js.map +1 -1
- package/dist/esm/react/sdk/src/core/TatchiPasskey/login.js +13 -7
- package/dist/esm/react/sdk/src/core/TatchiPasskey/login.js.map +1 -1
- package/dist/esm/react/sdk/src/core/TatchiPasskey/recoverAccount.js +2 -1
- package/dist/esm/react/sdk/src/core/TatchiPasskey/recoverAccount.js.map +1 -1
- package/dist/esm/react/sdk/src/core/TatchiPasskey/scanDevice.js +2 -1
- package/dist/esm/react/sdk/src/core/TatchiPasskey/scanDevice.js.map +1 -1
- package/dist/esm/react/sdk/src/core/WalletIframe/client/IframeTransport.js +11 -1
- package/dist/esm/react/sdk/src/core/WalletIframe/client/IframeTransport.js.map +1 -1
- package/dist/esm/react/sdk/src/core/WalletIframe/client/router.js +9 -0
- package/dist/esm/react/sdk/src/core/WalletIframe/client/router.js.map +1 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-drawer.js +1 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-drawer.js.map +1 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-modal.js +52 -52
- package/dist/esm/react/sdk/src/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-modal.js.map +1 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/getDeviceNumber.js +6 -2
- package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/checkCanRegisterUser.js +2 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/checkCanRegisterUser.js.map +1 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/decryptPrivateKeyWithPrf.js +2 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/decryptPrivateKeyWithPrf.js.map +1 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/deriveNearKeypairAndEncryptFromSerialized.js +2 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/deriveNearKeypairAndEncryptFromSerialized.js.map +1 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/exportNearKeypairUi.js +2 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/exportNearKeypairUi.js.map +1 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/registerDevice2WithDerivedKey.js +2 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/registerDevice2WithDerivedKey.js.map +1 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/signDelegateAction.js +2 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/signDelegateAction.js.map +1 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/signNep413Message.js +2 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/signNep413Message.js.map +1 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/signTransactionsWithActions.js +2 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/signTransactionsWithActions.js.map +1 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/validation.js +4 -2
- package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/handlers/validation.js.map +1 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/index.js +2 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/SignerWorkerManager/index.js.map +1 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/vrf.js +1 -0
- package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/vrf.js.map +1 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/webauthn.js +8 -2
- package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/webauthn.js.map +1 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/determineConfirmationConfig.js +2 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/determineConfirmationConfig.js.map +1 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/localOnly.js +2 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/localOnly.js.map +1 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js +2 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/registration.js.map +1 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js +5 -16
- package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.js.map +1 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/handlers/deriveVrfKeypairFromPrf.js +2 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/handlers/deriveVrfKeypairFromPrf.js.map +1 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfChallenge.js +2 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfChallenge.js.map +1 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfKeypairBootstrap.js +2 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfKeypairBootstrap.js.map +1 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/WebAuthnFallbacks/index.js +12 -0
- package/dist/esm/react/sdk/src/core/WebAuthnManager/WebAuthnFallbacks/index.js.map +1 -0
- package/dist/esm/react/sdk/src/core/WebAuthnManager/WebAuthnFallbacks/safari-fallbacks.js +61 -55
- package/dist/esm/react/sdk/src/core/WebAuthnManager/WebAuthnFallbacks/safari-fallbacks.js.map +1 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/credentialsHelpers.js +8 -3
- package/dist/esm/react/sdk/src/core/WebAuthnManager/index.js +8 -3
- package/dist/esm/react/sdk/src/core/WebAuthnManager/index.js.map +1 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/touchIdPrompt.js +207 -204
- package/dist/esm/react/sdk/src/core/WebAuthnManager/touchIdPrompt.js.map +1 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/userHandle.js +2 -1
- package/dist/esm/react/sdk/src/core/WebAuthnManager/userHandle.js.map +1 -1
- package/dist/esm/react/sdk/src/core/defaultConfigs.js +1 -1
- package/dist/esm/react/sdk/src/core/defaultConfigs.js.map +1 -1
- package/dist/esm/react/sdk/src/core/types/vrf-worker.js +6 -2
- package/dist/esm/react/sdk/src/utils/index.js +10 -4
- package/dist/esm/react/styles/styles.css +13 -0
- package/dist/esm/sdk/{safari-fallbacks-oQKu9xUs.js → WebAuthnFallbacks-Bl4BTsNt.js} +131 -135
- package/dist/esm/sdk/{createAdapters-pNiL2KNq.js → createAdapters-BumKM2ft.js} +59 -54
- package/dist/esm/sdk/createAdapters-BumKM2ft.js.map +1 -0
- package/dist/esm/sdk/{createAdapters-BWLe9Ddo.js → createAdapters-qVGD6i0g.js} +10 -3
- package/dist/esm/sdk/{defaultConfigs-VzvDejmy.js → defaultConfigs-DpslkAQd.js} +1 -1
- package/dist/esm/sdk/{getDeviceNumber-CkWRT17I.js → getDeviceNumber-fXizNGQl.js} +2 -2
- package/dist/esm/sdk/getDeviceNumber-fXizNGQl.js.map +1 -0
- package/dist/esm/sdk/{getDeviceNumber-CfmlgfMX.js → getDeviceNumber-zsOHT_Um.js} +6 -3
- package/dist/esm/sdk/{localOnly-DnpSyDaF.js → localOnly-Byi3AK7A.js} +2 -2
- package/dist/esm/sdk/{localOnly-DnpSyDaF.js.map → localOnly-Byi3AK7A.js.map} +1 -1
- package/dist/esm/sdk/{localOnly-BdumO2st.js → localOnly-pXMTqh1m.js} +5 -4
- package/dist/esm/sdk/offline-export-app.js +46 -44
- package/dist/esm/sdk/offline-export-app.js.map +1 -1
- package/dist/esm/sdk/{overlay-BTqPGG-o.js → overlay-ZGbucXIa.js} +2 -0
- package/dist/esm/sdk/{registration-C633u6x8.js → registration-CBiS4Ua_.js} +2 -2
- package/dist/esm/sdk/{registration-C633u6x8.js.map → registration-CBiS4Ua_.js.map} +1 -1
- package/dist/esm/sdk/{registration-xyYUFRqk.js → registration-DLPLsGCz.js} +5 -4
- package/dist/esm/sdk/{requestHelpers-DLBGBHMw.js → requestHelpers-Dh1hEYL9.js} +206 -204
- package/dist/esm/sdk/{router-BG6KC_p7.js → router-BLFegW7J.js} +20 -2
- package/dist/esm/sdk/{rpcCalls-fLObBbbz.js → rpcCalls-DEv9x5-f.js} +2 -2
- package/dist/esm/sdk/{rpcCalls-CAU5XYEF.js → rpcCalls-OhgEeFig.js} +1 -1
- package/dist/esm/sdk/{transactions-jH38BZ-Q.js → transactions-BIqKZeR0.js} +6 -18
- package/dist/esm/sdk/transactions-BIqKZeR0.js.map +1 -0
- package/dist/esm/sdk/{transactions-CzZAt1Yn.js → transactions-Bk-VavcV.js} +10 -21
- package/dist/esm/sdk/tx-confirm-ui.js +53 -53
- package/dist/esm/sdk/{tx-confirmer-wrapper-CqfVBUaA.js → tx-confirmer-wrapper-lHNgz9i4.js} +53 -53
- package/dist/esm/sdk/tx-confirmer.css +6 -4
- package/dist/esm/sdk/w3a-tx-confirmer.js +1 -1
- package/dist/esm/sdk/wallet-iframe-host.js +271 -89
- package/dist/esm/server/email-recovery/emailEncryptor.js +11 -1
- package/dist/esm/server/email-recovery/emailEncryptor.js.map +1 -1
- package/dist/esm/server/email-recovery/emailParsers.js +55 -1
- package/dist/esm/server/email-recovery/emailParsers.js.map +1 -1
- package/dist/esm/server/email-recovery/index.js +2 -2
- package/dist/esm/server/email-recovery/index.js.map +1 -1
- package/dist/esm/server/email-recovery/rpcCalls.js +14 -1
- package/dist/esm/server/email-recovery/rpcCalls.js.map +1 -1
- package/dist/esm/server/index.js +2 -2
- package/dist/esm/server/router/cloudflare.js.map +1 -1
- package/dist/esm/server/router/express.js.map +1 -1
- package/dist/esm/server/sdk/src/core/defaultConfigs.js +1 -1
- package/dist/esm/server/sdk/src/core/defaultConfigs.js.map +1 -1
- package/dist/esm/utils/index.js +10 -4
- package/dist/esm/wasm_vrf_worker/pkg/wasm_vrf_worker.js +3 -0
- package/dist/esm/wasm_vrf_worker/pkg/wasm_vrf_worker_bg.wasm +0 -0
- package/dist/types/src/core/EmailRecovery/index.d.ts.map +1 -1
- package/dist/types/src/core/IndexedDBManager/passkeyClientDB.d.ts +11 -21
- package/dist/types/src/core/IndexedDBManager/passkeyClientDB.d.ts.map +1 -1
- package/dist/types/src/core/TatchiPasskey/emailRecovery.d.ts +12 -1
- package/dist/types/src/core/TatchiPasskey/emailRecovery.d.ts.map +1 -1
- package/dist/types/src/core/TatchiPasskey/index.d.ts +8 -0
- package/dist/types/src/core/TatchiPasskey/index.d.ts.map +1 -1
- package/dist/types/src/core/WalletIframe/TatchiPasskeyIframe.d.ts +4 -0
- package/dist/types/src/core/WalletIframe/TatchiPasskeyIframe.d.ts.map +1 -1
- package/dist/types/src/core/WalletIframe/client/IframeTransport.d.ts.map +1 -1
- package/dist/types/src/core/WalletIframe/client/router.d.ts +4 -0
- package/dist/types/src/core/WalletIframe/client/router.d.ts.map +1 -1
- package/dist/types/src/core/WalletIframe/host/wallet-iframe-handlers.d.ts.map +1 -1
- package/dist/types/src/core/WalletIframe/shared/messages.d.ts +6 -2
- package/dist/types/src/core/WalletIframe/shared/messages.d.ts.map +1 -1
- package/dist/types/src/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-drawer.d.ts.map +1 -1
- package/dist/types/src/core/WebAuthnManager/LitComponents/IframeTxConfirmer/viewer-modal.d.ts.map +1 -1
- package/dist/types/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/vrf.d.ts.map +1 -1
- package/dist/types/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/adapters/webauthn.d.ts.map +1 -1
- package/dist/types/src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/flows/transactions.d.ts.map +1 -1
- package/dist/types/src/core/WebAuthnManager/index.d.ts.map +1 -1
- package/dist/types/src/core/defaultConfigs.d.ts.map +1 -1
- package/dist/types/src/react/components/PasskeyAuthMenu/ui/EmailRecoverySlide.d.ts.map +1 -1
- package/dist/types/src/react/hooks/usePreconnectWalletAssets.d.ts.map +1 -1
- package/dist/types/src/server/email-recovery/emailEncryptor.d.ts +4 -0
- package/dist/types/src/server/email-recovery/emailEncryptor.d.ts.map +1 -1
- package/dist/types/src/server/email-recovery/emailParsers.d.ts +7 -0
- package/dist/types/src/server/email-recovery/emailParsers.d.ts.map +1 -1
- package/dist/types/src/server/email-recovery/index.d.ts +1 -1
- package/dist/types/src/server/email-recovery/rpcCalls.d.ts +1 -1
- package/dist/types/src/server/email-recovery/rpcCalls.d.ts.map +1 -1
- package/dist/types/src/wasm_vrf_worker/pkg/wasm_vrf_worker.d.ts.map +1 -1
- package/dist/workers/wasm_vrf_worker_bg.wasm +0 -0
- package/dist/workers/web3authn-vrf.worker.js +3 -0
- package/package.json +1 -1
- package/dist/esm/sdk/createAdapters-pNiL2KNq.js.map +0 -1
- package/dist/esm/sdk/getDeviceNumber-CkWRT17I.js.map +0 -1
- package/dist/esm/sdk/transactions-jH38BZ-Q.js.map +0 -1
|
@@ -10,13 +10,13 @@ import { base64UrlDecode } from "./base64-DBPGuXh4.js";
|
|
|
10
10
|
import { ActionType, init_actions, toActionArgsWasm, validateActionArgsWasm } from "./actions-O1FD5Bq8.js";
|
|
11
11
|
import { ensureKnownW3aElement } from "./ensure-defined-CHInSx7l.js";
|
|
12
12
|
import { base58Encode, errorMessage, esm_default, getNearShortErrorMessage, getUserFriendlyErrorMessage, init_base58, init_encoders, init_errors, init_esm, isTouchIdCancellationError, toError } from "./errors-D9ar28Dr.js";
|
|
13
|
-
import { init_validation as init_validation$1, needsExplicitActivation, normalizeRegistrationCredential, removePrfOutputGuard, serializeRegistrationCredential, serializeRegistrationCredentialWithPRF, validateNearAccountId } from "./
|
|
14
|
-
import { MinimalNearClient, SignedTransaction, isOffline, openOfflineExport } from "./overlay-
|
|
13
|
+
import { init_credentialsHelpers, init_utils, init_validation as init_validation$1, needsExplicitActivation, normalizeRegistrationCredential, removePrfOutputGuard, serializeRegistrationCredential, serializeRegistrationCredentialWithPRF, validateNearAccountId } from "./WebAuthnFallbacks-Bl4BTsNt.js";
|
|
14
|
+
import { MinimalNearClient, SignedTransaction, isOffline, openOfflineExport } from "./overlay-ZGbucXIa.js";
|
|
15
15
|
import { AccountRecoveryPhase, AccountRecoveryStatus, ActionPhase, ActionStatus, DEFAULT_WAIT_STATUS, DeviceLinkingPhase, DeviceLinkingStatus, EmailRecoveryPhase, EmailRecoveryStatus, LoginPhase, LoginStatus, RegistrationPhase, RegistrationStatus, init_rpc, init_sdkSentEvents } from "./sdkSentEvents-_jrJLIhw.js";
|
|
16
|
-
import { SecureConfirmMessageType, SecureConfirmationType, TouchIdPrompt, authenticatorsToAllowCredentials, createRandomVRFChallenge, getIntentDigest, init_accountIds, parseTransactionSummary, sanitizeForPostMessage, sendConfirmResponse, toAccountId, validateVRFChallenge } from "./requestHelpers-
|
|
17
|
-
import { PASSKEY_MANAGER_DEFAULT_CONFIGS, buildConfigsFromEnv, init_defaultConfigs } from "./defaultConfigs-
|
|
18
|
-
import { buildSetRecoveryEmailsActions, checkCanRegisterUserContractCall, executeDeviceLinkingContractCalls, getCredentialIdsContractCall, getDeviceLinkingAccountContractCall, getRecoveryEmailHashesContractCall, init_rpcCalls, syncAuthenticatorsContractCall, verifyAuthenticationResponse } from "./rpcCalls-
|
|
19
|
-
import { getLastLoggedInDeviceNumber, parseDeviceNumber } from "./getDeviceNumber-
|
|
16
|
+
import { SecureConfirmMessageType, SecureConfirmationType, TouchIdPrompt, authenticatorsToAllowCredentials, createRandomVRFChallenge, getIntentDigest, init_accountIds, init_touchIdPrompt, init_vrf_worker, parseTransactionSummary, sanitizeForPostMessage, sendConfirmResponse, toAccountId, validateVRFChallenge } from "./requestHelpers-Dh1hEYL9.js";
|
|
17
|
+
import { PASSKEY_MANAGER_DEFAULT_CONFIGS, buildConfigsFromEnv, init_defaultConfigs } from "./defaultConfigs-DpslkAQd.js";
|
|
18
|
+
import { buildSetRecoveryEmailsActions, checkCanRegisterUserContractCall, executeDeviceLinkingContractCalls, getCredentialIdsContractCall, getDeviceLinkingAccountContractCall, getRecoveryEmailHashesContractCall, init_rpcCalls, syncAuthenticatorsContractCall, verifyAuthenticationResponse } from "./rpcCalls-OhgEeFig.js";
|
|
19
|
+
import { getLastLoggedInDeviceNumber, init_getDeviceNumber, parseDeviceNumber } from "./getDeviceNumber-zsOHT_Um.js";
|
|
20
20
|
|
|
21
21
|
//#region src/core/sdkPaths/workers.ts
|
|
22
22
|
/**
|
|
@@ -1417,22 +1417,17 @@ var init_passkeyClientDB = __esm({ "src/core/IndexedDBManager/passkeyClientDB.ts
|
|
|
1417
1417
|
* @returns filtered authenticators for allowCredentials, plus optional wrongPasskeyError
|
|
1418
1418
|
*/
|
|
1419
1419
|
async ensureCurrentPasskey(nearAccountId, authenticators, selectedCredentialRawId) {
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
const matched = authenticators.find((a) => a.credentialId === selectedCredentialRawId);
|
|
1432
|
-
if (matched && matched.deviceNumber !== expectedDeviceNumber) wrongPasskeyError = `You have multiple passkeys (deviceNumbers) for account ${accountIdNormalized}, but used a passkey from a different device. Please use the passkey for the most recently logged-in device.`;
|
|
1433
|
-
}
|
|
1434
|
-
}
|
|
1435
|
-
}
|
|
1420
|
+
if (authenticators.length <= 1) return { authenticatorsForPrompt: authenticators };
|
|
1421
|
+
const accountIdNormalized = toAccountId(nearAccountId);
|
|
1422
|
+
const lastUser = await this.getLastUser().catch(() => null);
|
|
1423
|
+
if (!lastUser || lastUser.nearAccountId !== accountIdNormalized) return { authenticatorsForPrompt: authenticators };
|
|
1424
|
+
const expectedDeviceNumber = lastUser.deviceNumber;
|
|
1425
|
+
const byDeviceNumber = authenticators.filter((a) => a.deviceNumber === expectedDeviceNumber);
|
|
1426
|
+
let expectedCredentialId = lastUser.passkeyCredential.rawId;
|
|
1427
|
+
if (byDeviceNumber.length > 0 && !byDeviceNumber.some((a) => a.credentialId === expectedCredentialId)) expectedCredentialId = byDeviceNumber[0].credentialId;
|
|
1428
|
+
const byCredentialId = authenticators.filter((a) => a.credentialId === expectedCredentialId);
|
|
1429
|
+
const authenticatorsForPrompt = byCredentialId.length > 0 ? byCredentialId : byDeviceNumber.length > 0 ? byDeviceNumber : authenticators;
|
|
1430
|
+
const wrongPasskeyError = selectedCredentialRawId && selectedCredentialRawId !== expectedCredentialId ? `You have multiple passkeys (deviceNumbers) for account ${accountIdNormalized}, but used a different passkey than the most recently logged-in one. Please use the passkey for the most recently logged-in device.` : void 0;
|
|
1436
1431
|
return {
|
|
1437
1432
|
authenticatorsForPrompt,
|
|
1438
1433
|
wrongPasskeyError
|
|
@@ -1543,30 +1538,34 @@ var init_passkeyClientDB = __esm({ "src/core/IndexedDBManager/passkeyClientDB.ts
|
|
|
1543
1538
|
* @param userData - User data with nearAccountId as primary identifier
|
|
1544
1539
|
*/
|
|
1545
1540
|
async storeWebAuthnUserData(userData) {
|
|
1546
|
-
if (userData.deviceNumber === void 0) console.warn("WARNING: deviceNumber is undefined in storeWebAuthnUserData, will default to 1");
|
|
1547
1541
|
const validation = this.validateNearAccountId(userData.nearAccountId);
|
|
1548
1542
|
if (!validation.valid) throw new Error(`Cannot store WebAuthn data for invalid account ID: ${validation.error}`);
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
clientNearPublicKey: userData.clientNearPublicKey,
|
|
1556
|
-
passkeyCredential: userData.passkeyCredential,
|
|
1557
|
-
encryptedVrfKeypair: userData.encryptedVrfKeypair,
|
|
1558
|
-
version: userData.version || 2,
|
|
1559
|
-
serverEncryptedVrfKeypair: userData.serverEncryptedVrfKeypair
|
|
1560
|
-
});
|
|
1561
|
-
}
|
|
1562
|
-
const finalDeviceNumber = userData.deviceNumber || existingUser.deviceNumber;
|
|
1563
|
-
await this.updateUser(userData.nearAccountId, {
|
|
1543
|
+
const accountId = toAccountId(userData.nearAccountId);
|
|
1544
|
+
const deviceNumber = userData.deviceNumber;
|
|
1545
|
+
let user = await this.getUser(accountId, deviceNumber);
|
|
1546
|
+
if (!user) user = await this.registerUser({
|
|
1547
|
+
nearAccountId: accountId,
|
|
1548
|
+
deviceNumber,
|
|
1564
1549
|
clientNearPublicKey: userData.clientNearPublicKey,
|
|
1550
|
+
passkeyCredential: userData.passkeyCredential,
|
|
1565
1551
|
encryptedVrfKeypair: userData.encryptedVrfKeypair,
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1552
|
+
version: userData.version || 2,
|
|
1553
|
+
serverEncryptedVrfKeypair: userData.serverEncryptedVrfKeypair
|
|
1554
|
+
});
|
|
1555
|
+
const updatedUser = {
|
|
1556
|
+
...user,
|
|
1557
|
+
clientNearPublicKey: userData.clientNearPublicKey,
|
|
1558
|
+
passkeyCredential: userData.passkeyCredential,
|
|
1559
|
+
encryptedVrfKeypair: userData.encryptedVrfKeypair,
|
|
1560
|
+
serverEncryptedVrfKeypair: userData.serverEncryptedVrfKeypair ?? user.serverEncryptedVrfKeypair,
|
|
1561
|
+
version: userData.version ?? user.version,
|
|
1562
|
+
lastUpdated: userData.lastUpdated ?? Date.now()
|
|
1563
|
+
};
|
|
1564
|
+
await this.storeUser(updatedUser);
|
|
1565
|
+
this.emitEvent({
|
|
1566
|
+
type: "user-updated",
|
|
1567
|
+
accountId,
|
|
1568
|
+
data: { updatedUser }
|
|
1570
1569
|
});
|
|
1571
1570
|
}
|
|
1572
1571
|
async getAllUsers() {
|
|
@@ -2220,6 +2219,13 @@ const DEVICE_LINKING_CONFIG = {
|
|
|
2220
2219
|
|
|
2221
2220
|
//#endregion
|
|
2222
2221
|
//#region src/core/workerControlMessages.ts
|
|
2222
|
+
init_touchIdPrompt();
|
|
2223
|
+
init_credentialsHelpers();
|
|
2224
|
+
init_vrf_worker();
|
|
2225
|
+
init_utils();
|
|
2226
|
+
init_encoders();
|
|
2227
|
+
init_base58();
|
|
2228
|
+
init_esm();
|
|
2223
2229
|
/**
|
|
2224
2230
|
* Control messages exchanged between worker shims and the main thread.
|
|
2225
2231
|
*
|
|
@@ -2375,11 +2381,9 @@ async function checkCanRegisterUser({ ctx, vrfChallenge, credential, contractId,
|
|
|
2375
2381
|
|
|
2376
2382
|
//#endregion
|
|
2377
2383
|
//#region src/core/types/authenticatorOptions.ts
|
|
2384
|
+
init_getDeviceNumber();
|
|
2378
2385
|
init_sdkSentEvents();
|
|
2379
2386
|
init_rpc();
|
|
2380
|
-
init_encoders();
|
|
2381
|
-
init_base58();
|
|
2382
|
-
init_esm();
|
|
2383
2387
|
init_actions();
|
|
2384
2388
|
init_wasm_signer_worker();
|
|
2385
2389
|
/**
|
|
@@ -2500,6 +2504,7 @@ async function deriveNearKeypairAndEncryptFromSerialized({ ctx, credential, near
|
|
|
2500
2504
|
//#region src/core/WebAuthnManager/SignerWorkerManager/handlers/decryptPrivateKeyWithPrf.ts
|
|
2501
2505
|
init_signer_worker();
|
|
2502
2506
|
init_accountIds();
|
|
2507
|
+
init_getDeviceNumber();
|
|
2503
2508
|
init_validation();
|
|
2504
2509
|
async function decryptPrivateKeyWithPrf({ ctx, nearAccountId, authenticators, sessionId }) {
|
|
2505
2510
|
try {
|
|
@@ -2567,6 +2572,7 @@ const generateSessionId = () => {
|
|
|
2567
2572
|
init_signer_worker();
|
|
2568
2573
|
init_defaultConfigs();
|
|
2569
2574
|
init_accountIds();
|
|
2575
|
+
init_getDeviceNumber();
|
|
2570
2576
|
init_validation();
|
|
2571
2577
|
/**
|
|
2572
2578
|
* Sign multiple transactions with shared VRF challenge and credential
|
|
@@ -2662,6 +2668,7 @@ async function signTransactionsWithActions$1({ ctx, transactions, rpcCall, onEve
|
|
|
2662
2668
|
|
|
2663
2669
|
//#endregion
|
|
2664
2670
|
//#region src/core/WebAuthnManager/SignerWorkerManager/handlers/validation.ts
|
|
2671
|
+
init_credentialsHelpers();
|
|
2665
2672
|
init_validation();
|
|
2666
2673
|
function validateTransactionContextMaybe(input) {
|
|
2667
2674
|
if (input == null) return void 0;
|
|
@@ -2737,6 +2744,7 @@ init_defaultConfigs();
|
|
|
2737
2744
|
init_accountIds();
|
|
2738
2745
|
init_actions();
|
|
2739
2746
|
init_signer_worker();
|
|
2747
|
+
init_getDeviceNumber();
|
|
2740
2748
|
async function signDelegateAction$1({ ctx, delegate, rpcCall, onEvent, confirmationConfigOverride, title, body, sessionId: providedSessionId }) {
|
|
2741
2749
|
const sessionId = providedSessionId ?? generateSessionId();
|
|
2742
2750
|
const nearAccountId = rpcCall.nearAccountId || delegate.senderId;
|
|
@@ -2938,6 +2946,7 @@ async function signTransactionWithKeyPair({ ctx, nearPrivateKey, signerAccountId
|
|
|
2938
2946
|
//#endregion
|
|
2939
2947
|
//#region src/core/WebAuthnManager/SignerWorkerManager/handlers/signNep413Message.ts
|
|
2940
2948
|
init_signer_worker();
|
|
2949
|
+
init_getDeviceNumber();
|
|
2941
2950
|
init_validation();
|
|
2942
2951
|
/**
|
|
2943
2952
|
* Sign a NEP-413 message using the user's passkey-derived private key
|
|
@@ -3112,6 +3121,7 @@ async function registerDevice2WithDerivedKey({ ctx, sessionId, nearAccountId, cr
|
|
|
3112
3121
|
|
|
3113
3122
|
//#endregion
|
|
3114
3123
|
//#region src/core/WebAuthnManager/VrfWorkerManager/confirmTxFlow/determineConfirmationConfig.ts
|
|
3124
|
+
init_utils();
|
|
3115
3125
|
/**
|
|
3116
3126
|
* determineConfirmationConfig
|
|
3117
3127
|
*
|
|
@@ -3261,42 +3271,42 @@ async function importFlow(label, loader) {
|
|
|
3261
3271
|
}
|
|
3262
3272
|
const HANDLERS = {
|
|
3263
3273
|
[SecureConfirmationType.DECRYPT_PRIVATE_KEY_WITH_PRF]: async ({ ctx, request, worker, confirmationConfig, transactionSummary }) => {
|
|
3264
|
-
const { handleLocalOnlyFlow } = await importFlow("localOnly", () => import("./localOnly-
|
|
3274
|
+
const { handleLocalOnlyFlow } = await importFlow("localOnly", () => import("./localOnly-pXMTqh1m.js"));
|
|
3265
3275
|
await handleLocalOnlyFlow(ctx, request, worker, {
|
|
3266
3276
|
confirmationConfig,
|
|
3267
3277
|
transactionSummary
|
|
3268
3278
|
});
|
|
3269
3279
|
},
|
|
3270
3280
|
[SecureConfirmationType.SHOW_SECURE_PRIVATE_KEY_UI]: async ({ ctx, request, worker, confirmationConfig, transactionSummary }) => {
|
|
3271
|
-
const { handleLocalOnlyFlow } = await importFlow("localOnly", () => import("./localOnly-
|
|
3281
|
+
const { handleLocalOnlyFlow } = await importFlow("localOnly", () => import("./localOnly-pXMTqh1m.js"));
|
|
3272
3282
|
await handleLocalOnlyFlow(ctx, request, worker, {
|
|
3273
3283
|
confirmationConfig,
|
|
3274
3284
|
transactionSummary
|
|
3275
3285
|
});
|
|
3276
3286
|
},
|
|
3277
3287
|
[SecureConfirmationType.REGISTER_ACCOUNT]: async ({ ctx, request, worker, confirmationConfig, transactionSummary }) => {
|
|
3278
|
-
const { handleRegistrationFlow } = await importFlow("registration", () => import("./registration-
|
|
3288
|
+
const { handleRegistrationFlow } = await importFlow("registration", () => import("./registration-DLPLsGCz.js"));
|
|
3279
3289
|
await handleRegistrationFlow(ctx, request, worker, {
|
|
3280
3290
|
confirmationConfig,
|
|
3281
3291
|
transactionSummary
|
|
3282
3292
|
});
|
|
3283
3293
|
},
|
|
3284
3294
|
[SecureConfirmationType.LINK_DEVICE]: async ({ ctx, request, worker, confirmationConfig, transactionSummary }) => {
|
|
3285
|
-
const { handleRegistrationFlow } = await importFlow("registration", () => import("./registration-
|
|
3295
|
+
const { handleRegistrationFlow } = await importFlow("registration", () => import("./registration-DLPLsGCz.js"));
|
|
3286
3296
|
await handleRegistrationFlow(ctx, request, worker, {
|
|
3287
3297
|
confirmationConfig,
|
|
3288
3298
|
transactionSummary
|
|
3289
3299
|
});
|
|
3290
3300
|
},
|
|
3291
3301
|
[SecureConfirmationType.SIGN_TRANSACTION]: async ({ ctx, request, worker, confirmationConfig, transactionSummary }) => {
|
|
3292
|
-
const { handleTransactionSigningFlow } = await importFlow("transactions", () => import("./transactions-
|
|
3302
|
+
const { handleTransactionSigningFlow } = await importFlow("transactions", () => import("./transactions-Bk-VavcV.js"));
|
|
3293
3303
|
await handleTransactionSigningFlow(ctx, request, worker, {
|
|
3294
3304
|
confirmationConfig,
|
|
3295
3305
|
transactionSummary
|
|
3296
3306
|
});
|
|
3297
3307
|
},
|
|
3298
3308
|
[SecureConfirmationType.SIGN_NEP413_MESSAGE]: async ({ ctx, request, worker, confirmationConfig, transactionSummary }) => {
|
|
3299
|
-
const { handleTransactionSigningFlow } = await importFlow("transactions", () => import("./transactions-
|
|
3309
|
+
const { handleTransactionSigningFlow } = await importFlow("transactions", () => import("./transactions-Bk-VavcV.js"));
|
|
3300
3310
|
await handleTransactionSigningFlow(ctx, request, worker, {
|
|
3301
3311
|
confirmationConfig,
|
|
3302
3312
|
transactionSummary
|
|
@@ -3329,6 +3339,7 @@ async function runSecureConfirm(ctx, request) {
|
|
|
3329
3339
|
init_validation();
|
|
3330
3340
|
init_accountIds();
|
|
3331
3341
|
init_signer_worker();
|
|
3342
|
+
init_getDeviceNumber();
|
|
3332
3343
|
/**
|
|
3333
3344
|
* Two-phase export (worker-driven):
|
|
3334
3345
|
* - Phase 1: collect PRF (uiMode: 'skip') and derive WrapKeySeed in VRF worker
|
|
@@ -4129,6 +4140,7 @@ async function createSigningSessionChannel(ctx, sessionId) {
|
|
|
4129
4140
|
|
|
4130
4141
|
//#endregion
|
|
4131
4142
|
//#region src/core/WebAuthnManager/VrfWorkerManager/handlers/deriveVrfKeypairFromPrf.ts
|
|
4143
|
+
init_vrf_worker();
|
|
4132
4144
|
/**
|
|
4133
4145
|
* Derive deterministic VRF keypair from PRF output embedded in a WebAuthn credential.
|
|
4134
4146
|
*/
|
|
@@ -4246,6 +4258,7 @@ async function dispenseSessionKey(ctx, args) {
|
|
|
4246
4258
|
|
|
4247
4259
|
//#endregion
|
|
4248
4260
|
//#region src/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfChallenge.ts
|
|
4261
|
+
init_vrf_worker();
|
|
4249
4262
|
/**
|
|
4250
4263
|
* Generate a VRF challenge and cache it under `sessionId` inside the VRF worker.
|
|
4251
4264
|
*
|
|
@@ -4287,6 +4300,7 @@ async function generateVrfChallengeInternal(ctx, inputData, sessionId) {
|
|
|
4287
4300
|
|
|
4288
4301
|
//#endregion
|
|
4289
4302
|
//#region src/core/WebAuthnManager/VrfWorkerManager/handlers/generateVrfKeypairBootstrap.ts
|
|
4303
|
+
init_vrf_worker();
|
|
4290
4304
|
/**
|
|
4291
4305
|
* Registration bootstrap: generate a fresh random VRF keypair in the VRF worker and (optionally)
|
|
4292
4306
|
* generate a VRF challenge from it.
|
|
@@ -5631,7 +5645,9 @@ function __isWalletIframeHostMode() {
|
|
|
5631
5645
|
//#endregion
|
|
5632
5646
|
//#region src/core/WebAuthnManager/index.ts
|
|
5633
5647
|
init_IndexedDBManager();
|
|
5648
|
+
init_touchIdPrompt();
|
|
5634
5649
|
init_accountIds();
|
|
5650
|
+
init_getDeviceNumber();
|
|
5635
5651
|
/**
|
|
5636
5652
|
* WebAuthnManager - Main orchestrator for WebAuthn operations
|
|
5637
5653
|
*
|
|
@@ -6154,6 +6170,7 @@ var WebAuthnManager = class {
|
|
|
6154
6170
|
async storeUserData(userData) {
|
|
6155
6171
|
await IndexedDBManager.clientDB.storeWebAuthnUserData({
|
|
6156
6172
|
...userData,
|
|
6173
|
+
deviceNumber: userData.deviceNumber ?? 1,
|
|
6157
6174
|
version: userData.version || 2
|
|
6158
6175
|
});
|
|
6159
6176
|
}
|
|
@@ -6209,10 +6226,12 @@ var WebAuthnManager = class {
|
|
|
6209
6226
|
return await IndexedDBManager.clientDB.registerUser(storeUserData);
|
|
6210
6227
|
}
|
|
6211
6228
|
async storeAuthenticator(authenticatorData) {
|
|
6229
|
+
const deviceNumber = Number(authenticatorData.deviceNumber);
|
|
6230
|
+
const normalizedDeviceNumber = Number.isSafeInteger(deviceNumber) && deviceNumber >= 1 ? deviceNumber : 1;
|
|
6212
6231
|
const authData = {
|
|
6213
6232
|
...authenticatorData,
|
|
6214
6233
|
nearAccountId: toAccountId(authenticatorData.nearAccountId),
|
|
6215
|
-
deviceNumber:
|
|
6234
|
+
deviceNumber: normalizedDeviceNumber
|
|
6216
6235
|
};
|
|
6217
6236
|
return await IndexedDBManager.clientDB.storeAuthenticator(authData);
|
|
6218
6237
|
}
|
|
@@ -6477,9 +6496,6 @@ var WebAuthnManager = class {
|
|
|
6477
6496
|
|
|
6478
6497
|
//#endregion
|
|
6479
6498
|
//#region src/core/TatchiPasskey/login.ts
|
|
6480
|
-
init_errors();
|
|
6481
|
-
init_IndexedDBManager();
|
|
6482
|
-
init_rpcCalls();
|
|
6483
6499
|
/**
|
|
6484
6500
|
* Core login function that handles passkey authentication without React dependencies.
|
|
6485
6501
|
*
|
|
@@ -7027,9 +7043,17 @@ async function logoutAndClearSession(context) {
|
|
|
7027
7043
|
webAuthnManager.getNonceManager().clear();
|
|
7028
7044
|
} catch {}
|
|
7029
7045
|
}
|
|
7046
|
+
var init_login = __esm({ "src/core/TatchiPasskey/login.ts": (() => {
|
|
7047
|
+
init_errors();
|
|
7048
|
+
init_vrf_worker();
|
|
7049
|
+
init_touchIdPrompt();
|
|
7050
|
+
init_IndexedDBManager();
|
|
7051
|
+
init_rpcCalls();
|
|
7052
|
+
}) });
|
|
7030
7053
|
|
|
7031
7054
|
//#endregion
|
|
7032
7055
|
//#region src/core/TatchiPasskey/actions.ts
|
|
7056
|
+
init_login();
|
|
7033
7057
|
init_actions();
|
|
7034
7058
|
init_sdkSentEvents();
|
|
7035
7059
|
init_errors();
|
|
@@ -7472,6 +7496,7 @@ async function wasmAuthenticateAndSignTransactions(context, nearAccountId, trans
|
|
|
7472
7496
|
|
|
7473
7497
|
//#endregion
|
|
7474
7498
|
//#region src/core/WebAuthnManager/userHandle.ts
|
|
7499
|
+
init_utils();
|
|
7475
7500
|
init_validation$1();
|
|
7476
7501
|
/**
|
|
7477
7502
|
* Parse a WebAuthn userHandle into a NEAR account ID.
|
|
@@ -7506,6 +7531,7 @@ function parseAccountIdFromUserHandle(userHandle) {
|
|
|
7506
7531
|
init_sdkSentEvents();
|
|
7507
7532
|
init_validation$1();
|
|
7508
7533
|
init_accountIds();
|
|
7534
|
+
init_vrf_worker();
|
|
7509
7535
|
init_IndexedDBManager();
|
|
7510
7536
|
init_rpcCalls();
|
|
7511
7537
|
/**
|
|
@@ -7921,6 +7947,7 @@ async function restoreAuthenticators({ webAuthnManager, accountId, contractAuthe
|
|
|
7921
7947
|
//#endregion
|
|
7922
7948
|
//#region src/core/TatchiPasskey/faucets/createAccountRelayServer.ts
|
|
7923
7949
|
init_sdkSentEvents();
|
|
7950
|
+
init_credentialsHelpers();
|
|
7924
7951
|
init_validation();
|
|
7925
7952
|
init_errors();
|
|
7926
7953
|
/**
|
|
@@ -8881,6 +8908,7 @@ init_IndexedDBManager();
|
|
|
8881
8908
|
init_actions();
|
|
8882
8909
|
init_rpcCalls();
|
|
8883
8910
|
init_sdkSentEvents();
|
|
8911
|
+
init_getDeviceNumber();
|
|
8884
8912
|
async function generateQRCodeDataURL(data) {
|
|
8885
8913
|
const { default: QRCode } = await import("./browser-B3uuzKL0.js").then(__toDynamicImportESM(1));
|
|
8886
8914
|
return QRCode.toDataURL(data, {
|
|
@@ -9571,6 +9599,7 @@ var LinkDeviceFlow = class {
|
|
|
9571
9599
|
//#endregion
|
|
9572
9600
|
//#region src/core/TatchiPasskey/scanDevice.ts
|
|
9573
9601
|
init_validation$1();
|
|
9602
|
+
init_login();
|
|
9574
9603
|
init_sdkSentEvents();
|
|
9575
9604
|
init_rpcCalls();
|
|
9576
9605
|
/**
|
|
@@ -9909,11 +9938,18 @@ const EXPORT_NEAR_KEYPAIR_CANCELLED = "EXPORT_NEAR_KEYPAIR_CANCELLED";
|
|
|
9909
9938
|
init_accountIds();
|
|
9910
9939
|
init_IndexedDBManager();
|
|
9911
9940
|
const canonicalizeEmail = (email) => {
|
|
9912
|
-
|
|
9913
|
-
|
|
9914
|
-
const
|
|
9915
|
-
|
|
9916
|
-
|
|
9941
|
+
const raw = String(email || "").trim();
|
|
9942
|
+
if (!raw) return "";
|
|
9943
|
+
const withoutHeaderName = raw.replace(/^[a-z0-9-]+\s*:\s*/i, "").trim();
|
|
9944
|
+
const emailRegex = /([a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*)/;
|
|
9945
|
+
const angleMatch = withoutHeaderName.match(/<([^>]+)>/);
|
|
9946
|
+
const candidates = [angleMatch?.[1], withoutHeaderName].filter((v) => typeof v === "string" && v.length > 0);
|
|
9947
|
+
for (const candidate of candidates) {
|
|
9948
|
+
const cleaned = candidate.replace(/^mailto:\s*/i, "");
|
|
9949
|
+
const match = cleaned.match(emailRegex);
|
|
9950
|
+
if (match?.[1]) return match[1].trim().toLowerCase();
|
|
9951
|
+
}
|
|
9952
|
+
return withoutHeaderName.toLowerCase();
|
|
9917
9953
|
};
|
|
9918
9954
|
const bytesToHex = (bytes) => {
|
|
9919
9955
|
const arr = bytes instanceof Uint8Array ? bytes : Uint8Array.from(bytes);
|
|
@@ -10007,6 +10043,10 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
|
|
|
10007
10043
|
init_validation$1();
|
|
10008
10044
|
init_accountIds();
|
|
10009
10045
|
init_sdkSentEvents();
|
|
10046
|
+
init_vrf_worker();
|
|
10047
|
+
init_rpc();
|
|
10048
|
+
init_getDeviceNumber();
|
|
10049
|
+
init_login();
|
|
10010
10050
|
EmailRecoveryFlow = class {
|
|
10011
10051
|
context;
|
|
10012
10052
|
options;
|
|
@@ -10048,6 +10088,12 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
|
|
|
10048
10088
|
getConfig() {
|
|
10049
10089
|
return getEmailRecoveryConfig(this.context.configs);
|
|
10050
10090
|
}
|
|
10091
|
+
getPendingIndexKey(accountId) {
|
|
10092
|
+
return `pendingEmailRecovery:${accountId}`;
|
|
10093
|
+
}
|
|
10094
|
+
getPendingRecordKey(accountId, nearPublicKey) {
|
|
10095
|
+
return `${this.getPendingIndexKey(accountId)}:${nearPublicKey}`;
|
|
10096
|
+
}
|
|
10051
10097
|
async checkVerificationStatus(rec) {
|
|
10052
10098
|
const { dkimVerifierAccountId, verificationViewMethod } = this.getConfig();
|
|
10053
10099
|
if (!dkimVerifierAccountId) return null;
|
|
@@ -10066,22 +10112,26 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
|
|
|
10066
10112
|
return {
|
|
10067
10113
|
completed: true,
|
|
10068
10114
|
success: false,
|
|
10069
|
-
errorMessage: errorMessage$1
|
|
10115
|
+
errorMessage: errorMessage$1,
|
|
10116
|
+
transactionHash: result.transaction_hash
|
|
10070
10117
|
};
|
|
10071
10118
|
}
|
|
10072
10119
|
if (result.account_id && result.account_id !== rec.accountId) return {
|
|
10073
10120
|
completed: true,
|
|
10074
10121
|
success: false,
|
|
10075
|
-
errorMessage: "Email verification account_id does not match requested account."
|
|
10122
|
+
errorMessage: "Email verification account_id does not match requested account.",
|
|
10123
|
+
transactionHash: result.transaction_hash
|
|
10076
10124
|
};
|
|
10077
10125
|
if (result.new_public_key && result.new_public_key !== rec.nearPublicKey) return {
|
|
10078
10126
|
completed: true,
|
|
10079
10127
|
success: false,
|
|
10080
|
-
errorMessage: "Email verification new_public_key does not match expected recovery key."
|
|
10128
|
+
errorMessage: "Email verification new_public_key does not match expected recovery key.",
|
|
10129
|
+
transactionHash: result.transaction_hash
|
|
10081
10130
|
};
|
|
10082
10131
|
return {
|
|
10083
10132
|
completed: true,
|
|
10084
|
-
success: true
|
|
10133
|
+
success: true,
|
|
10134
|
+
transactionHash: result.transaction_hash
|
|
10085
10135
|
};
|
|
10086
10136
|
} catch (err$1) {
|
|
10087
10137
|
console.warn("[EmailRecoveryFlow] get_verification_result view failed; falling back to access key polling", err$1);
|
|
@@ -10090,25 +10140,37 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
|
|
|
10090
10140
|
}
|
|
10091
10141
|
async loadPending(accountId, nearPublicKey) {
|
|
10092
10142
|
const { pendingTtlMs } = this.getConfig();
|
|
10093
|
-
const
|
|
10094
|
-
const
|
|
10095
|
-
const
|
|
10096
|
-
if (!
|
|
10143
|
+
const indexKey = this.getPendingIndexKey(accountId);
|
|
10144
|
+
const indexedNearPublicKey = await IndexedDBManager.clientDB.getAppState(indexKey);
|
|
10145
|
+
const resolvedNearPublicKey = nearPublicKey ?? indexedNearPublicKey;
|
|
10146
|
+
if (!resolvedNearPublicKey) return null;
|
|
10147
|
+
const recordKey = this.getPendingRecordKey(accountId, resolvedNearPublicKey);
|
|
10148
|
+
const record = await IndexedDBManager.clientDB.getAppState(recordKey);
|
|
10149
|
+
const shouldClearIndex = indexedNearPublicKey === resolvedNearPublicKey;
|
|
10150
|
+
if (!record) {
|
|
10151
|
+
if (shouldClearIndex) await IndexedDBManager.clientDB.setAppState(indexKey, void 0).catch(() => {});
|
|
10152
|
+
return null;
|
|
10153
|
+
}
|
|
10097
10154
|
if (Date.now() - record.createdAt > pendingTtlMs) {
|
|
10098
|
-
await IndexedDBManager.clientDB.setAppState(
|
|
10155
|
+
await IndexedDBManager.clientDB.setAppState(recordKey, void 0).catch(() => {});
|
|
10156
|
+
if (shouldClearIndex) await IndexedDBManager.clientDB.setAppState(indexKey, void 0).catch(() => {});
|
|
10099
10157
|
return null;
|
|
10100
10158
|
}
|
|
10159
|
+
await IndexedDBManager.clientDB.setAppState(indexKey, record.nearPublicKey).catch(() => {});
|
|
10101
10160
|
return record;
|
|
10102
10161
|
}
|
|
10103
10162
|
async savePending(rec) {
|
|
10104
|
-
const key =
|
|
10163
|
+
const key = this.getPendingRecordKey(rec.accountId, rec.nearPublicKey);
|
|
10105
10164
|
await IndexedDBManager.clientDB.setAppState(key, rec);
|
|
10165
|
+
await IndexedDBManager.clientDB.setAppState(this.getPendingIndexKey(rec.accountId), rec.nearPublicKey).catch(() => {});
|
|
10106
10166
|
this.pending = rec;
|
|
10107
10167
|
}
|
|
10108
10168
|
async clearPending(accountId, nearPublicKey) {
|
|
10109
|
-
const
|
|
10110
|
-
const
|
|
10111
|
-
|
|
10169
|
+
const indexKey = this.getPendingIndexKey(accountId);
|
|
10170
|
+
const idx = await IndexedDBManager.clientDB.getAppState(indexKey).catch(() => void 0);
|
|
10171
|
+
const resolvedNearPublicKey = nearPublicKey || idx || "";
|
|
10172
|
+
if (resolvedNearPublicKey) await IndexedDBManager.clientDB.setAppState(this.getPendingRecordKey(accountId, resolvedNearPublicKey), void 0).catch(() => {});
|
|
10173
|
+
if (!nearPublicKey || idx === nearPublicKey) await IndexedDBManager.clientDB.setAppState(indexKey, void 0).catch(() => {});
|
|
10112
10174
|
if (this.pending && this.pending.accountId === accountId && (!nearPublicKey || this.pending.nearPublicKey === nearPublicKey)) this.pending = null;
|
|
10113
10175
|
}
|
|
10114
10176
|
getState() {
|
|
@@ -10213,7 +10275,7 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
|
|
|
10213
10275
|
}
|
|
10214
10276
|
let deviceNumber = 1;
|
|
10215
10277
|
try {
|
|
10216
|
-
const { syncAuthenticatorsContractCall: syncAuthenticatorsContractCall$1 } = await import("./rpcCalls-
|
|
10278
|
+
const { syncAuthenticatorsContractCall: syncAuthenticatorsContractCall$1 } = await import("./rpcCalls-DEv9x5-f.js");
|
|
10217
10279
|
const authenticators = await syncAuthenticatorsContractCall$1(this.context.nearClient, this.context.configs.contractId, nearAccountId);
|
|
10218
10280
|
const numbers = authenticators.map((a) => a?.authenticator?.deviceNumber).filter((n) => typeof n === "number" && Number.isFinite(n));
|
|
10219
10281
|
const max = numbers.length > 0 ? Math.max(...numbers) : 0;
|
|
@@ -10229,7 +10291,10 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
|
|
|
10229
10291
|
message: "Collecting passkey for email recovery..."
|
|
10230
10292
|
});
|
|
10231
10293
|
try {
|
|
10232
|
-
const confirmerText =
|
|
10294
|
+
const confirmerText = {
|
|
10295
|
+
title: this.options?.confirmerText?.title ?? "Register New Recovery Account",
|
|
10296
|
+
body: this.options?.confirmerText?.body ?? "Create a recovery account and send an encrypted email to recover your account."
|
|
10297
|
+
};
|
|
10233
10298
|
const confirm = await this.context.webAuthnManager.requestRegistrationCredentialConfirmation({
|
|
10234
10299
|
nearAccountId,
|
|
10235
10300
|
deviceNumber,
|
|
@@ -10357,6 +10422,22 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
|
|
|
10357
10422
|
this.pollIntervalResolver = void 0;
|
|
10358
10423
|
}
|
|
10359
10424
|
}
|
|
10425
|
+
/**
|
|
10426
|
+
* Best-effort cancellation and local state reset so callers can retry.
|
|
10427
|
+
* This does not remove any passkey created in the browser/OS (WebAuthn has no delete API),
|
|
10428
|
+
* but it will stop polling and clear the pending IndexedDB record for the given key.
|
|
10429
|
+
*/
|
|
10430
|
+
async cancelAndReset(args) {
|
|
10431
|
+
this.stopPolling();
|
|
10432
|
+
const normalizedAccountId = (args?.accountId || this.pending?.accountId || "").toString().trim();
|
|
10433
|
+
const nearPublicKey = (args?.nearPublicKey || this.pending?.nearPublicKey || "").toString().trim();
|
|
10434
|
+
if (normalizedAccountId) try {
|
|
10435
|
+
await this.clearPending(toAccountId(normalizedAccountId), nearPublicKey);
|
|
10436
|
+
} catch {}
|
|
10437
|
+
this.pending = null;
|
|
10438
|
+
this.error = void 0;
|
|
10439
|
+
this.phase = EmailRecoveryPhase.STEP_1_PREPARATION;
|
|
10440
|
+
}
|
|
10360
10441
|
async finalize(args) {
|
|
10361
10442
|
const { accountId, nearPublicKey } = args;
|
|
10362
10443
|
this.cancelled = false;
|
|
@@ -10431,11 +10512,12 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
|
|
|
10431
10512
|
step: 4,
|
|
10432
10513
|
phase: EmailRecoveryPhase.STEP_4_POLLING_VERIFICATION_RESULT,
|
|
10433
10514
|
status: EmailRecoveryStatus.PROGRESS,
|
|
10434
|
-
message: completed && success ? `
|
|
10515
|
+
message: completed && success ? `Email verified for request ${rec.requestId}; finalizing registration` : `Waiting for email verification for request ${rec.requestId}`,
|
|
10435
10516
|
data: {
|
|
10436
10517
|
accountId: rec.accountId,
|
|
10437
10518
|
requestId: rec.requestId,
|
|
10438
10519
|
nearPublicKey: rec.nearPublicKey,
|
|
10520
|
+
transactionHash: verification?.transactionHash,
|
|
10439
10521
|
elapsedMs: elapsed,
|
|
10440
10522
|
pollCount
|
|
10441
10523
|
}
|
|
@@ -10452,6 +10534,7 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
|
|
|
10452
10534
|
await this.savePending(rec);
|
|
10453
10535
|
return;
|
|
10454
10536
|
}
|
|
10537
|
+
if (this.cancelled) break;
|
|
10455
10538
|
await new Promise((resolve) => {
|
|
10456
10539
|
this.pollIntervalResolver = resolve;
|
|
10457
10540
|
this.pollingTimer = setTimeout(() => {
|
|
@@ -10502,7 +10585,51 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
|
|
|
10502
10585
|
}
|
|
10503
10586
|
const signedTx = registrationResult.signedTransaction;
|
|
10504
10587
|
try {
|
|
10505
|
-
await this.context.nearClient.sendTransaction(signedTx);
|
|
10588
|
+
const txResult = await this.context.nearClient.sendTransaction(signedTx, DEFAULT_WAIT_STATUS.linkDeviceRegistration);
|
|
10589
|
+
try {
|
|
10590
|
+
const txHash = txResult?.transaction?.hash || txResult?.transaction_hash;
|
|
10591
|
+
if (txHash) {
|
|
10592
|
+
this.emit({
|
|
10593
|
+
step: 5,
|
|
10594
|
+
phase: EmailRecoveryPhase.STEP_5_FINALIZING_REGISTRATION,
|
|
10595
|
+
status: EmailRecoveryStatus.PROGRESS,
|
|
10596
|
+
message: "Registration transaction confirmed",
|
|
10597
|
+
data: {
|
|
10598
|
+
accountId: rec.accountId,
|
|
10599
|
+
nearPublicKey: rec.nearPublicKey,
|
|
10600
|
+
transactionHash: txHash
|
|
10601
|
+
}
|
|
10602
|
+
});
|
|
10603
|
+
try {
|
|
10604
|
+
await IndexedDBManager.clientDB.storeWebAuthnUserData({
|
|
10605
|
+
nearAccountId: accountId,
|
|
10606
|
+
deviceNumber: rec.deviceNumber,
|
|
10607
|
+
clientNearPublicKey: rec.nearPublicKey,
|
|
10608
|
+
passkeyCredential: {
|
|
10609
|
+
id: rec.credential.id,
|
|
10610
|
+
rawId: rec.credential.rawId
|
|
10611
|
+
},
|
|
10612
|
+
encryptedVrfKeypair: rec.encryptedVrfKeypair,
|
|
10613
|
+
serverEncryptedVrfKeypair: rec.serverEncryptedVrfKeypair || void 0
|
|
10614
|
+
});
|
|
10615
|
+
const { syncAuthenticatorsContractCall: syncAuthenticatorsContractCall$1 } = await import("./rpcCalls-DEv9x5-f.js");
|
|
10616
|
+
const authenticators = await syncAuthenticatorsContractCall$1(this.context.nearClient, this.context.configs.contractId, accountId);
|
|
10617
|
+
const mappedAuthenticators = authenticators.map(({ authenticator }) => ({
|
|
10618
|
+
credentialId: authenticator.credentialId,
|
|
10619
|
+
credentialPublicKey: authenticator.credentialPublicKey,
|
|
10620
|
+
transports: authenticator.transports,
|
|
10621
|
+
name: authenticator.name,
|
|
10622
|
+
registered: authenticator.registered.toISOString(),
|
|
10623
|
+
vrfPublicKey: authenticator.vrfPublicKeys?.[0] || "",
|
|
10624
|
+
deviceNumber: authenticator.deviceNumber
|
|
10625
|
+
}));
|
|
10626
|
+
await IndexedDBManager.clientDB.syncAuthenticatorsFromContract(accountId, mappedAuthenticators);
|
|
10627
|
+
await IndexedDBManager.clientDB.setLastUser(accountId, rec.deviceNumber);
|
|
10628
|
+
} catch (syncErr) {
|
|
10629
|
+
console.warn("[EmailRecoveryFlow] Failed to sync authenticators after recovery:", syncErr);
|
|
10630
|
+
}
|
|
10631
|
+
}
|
|
10632
|
+
} catch {}
|
|
10506
10633
|
} catch (e) {
|
|
10507
10634
|
const msg = String(e?.message || "");
|
|
10508
10635
|
const err$1 = this.emitError(5, msg || "Failed to broadcast email recovery registration transaction (insufficient funds or RPC error)");
|
|
@@ -10576,6 +10703,8 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
|
|
|
10576
10703
|
});
|
|
10577
10704
|
const { webAuthnManager } = this.context;
|
|
10578
10705
|
const accountId = toAccountId(rec.accountId);
|
|
10706
|
+
const deviceNumber = parseDeviceNumber(rec.deviceNumber, { min: 1 });
|
|
10707
|
+
if (deviceNumber === null) throw new Error(`Invalid deviceNumber for auto-login: ${String(rec.deviceNumber)}`);
|
|
10579
10708
|
if (rec.serverEncryptedVrfKeypair && rec.serverEncryptedVrfKeypair.serverKeyId && this.context.configs.vrfWorkerConfigs?.shamir3pass?.relayServerUrl) try {
|
|
10580
10709
|
const unlockResult = await webAuthnManager.shamir3PassDecryptVrfKeypair({
|
|
10581
10710
|
nearAccountId: accountId,
|
|
@@ -10584,8 +10713,14 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
|
|
|
10584
10713
|
serverKeyId: rec.serverEncryptedVrfKeypair.serverKeyId
|
|
10585
10714
|
});
|
|
10586
10715
|
if (unlockResult.success) {
|
|
10716
|
+
const vrfStatus$1 = await webAuthnManager.checkVrfStatus();
|
|
10717
|
+
const vrfActiveForAccount$1 = vrfStatus$1.active && vrfStatus$1.nearAccountId && String(vrfStatus$1.nearAccountId) === String(accountId);
|
|
10718
|
+
if (!vrfActiveForAccount$1) throw new Error("VRF session inactive after Shamir3Pass unlock");
|
|
10719
|
+
await webAuthnManager.setLastUser(accountId, deviceNumber);
|
|
10587
10720
|
await webAuthnManager.initializeCurrentUser(accountId, this.context.nearClient);
|
|
10588
|
-
|
|
10721
|
+
try {
|
|
10722
|
+
await getLoginSession(this.context, accountId);
|
|
10723
|
+
} catch {}
|
|
10589
10724
|
this.emit({
|
|
10590
10725
|
step: 5,
|
|
10591
10726
|
phase: EmailRecoveryPhase.STEP_5_FINALIZING_REGISTRATION,
|
|
@@ -10598,27 +10733,30 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
|
|
|
10598
10733
|
} catch (err$1) {
|
|
10599
10734
|
console.warn("[EmailRecoveryFlow] Shamir 3-pass unlock failed, falling back to TouchID", err$1);
|
|
10600
10735
|
}
|
|
10601
|
-
const
|
|
10602
|
-
const
|
|
10603
|
-
|
|
10604
|
-
|
|
10605
|
-
blockHash: txBlockHash,
|
|
10606
|
-
blockHeight: txBlockHeight
|
|
10607
|
-
});
|
|
10608
|
-
const authenticators = await webAuthnManager.getAuthenticatorsByUser(accountId);
|
|
10736
|
+
const authChallenge = createRandomVRFChallenge();
|
|
10737
|
+
const storedCredentialId = String(rec.credential?.rawId || rec.credential?.id || "").trim();
|
|
10738
|
+
const credentialIds = storedCredentialId ? [storedCredentialId] : [];
|
|
10739
|
+
const authenticators = credentialIds.length > 0 ? [] : await webAuthnManager.getAuthenticatorsByUser(accountId);
|
|
10609
10740
|
const authCredential = await webAuthnManager.getAuthenticationCredentialsSerializedDualPrf({
|
|
10610
10741
|
nearAccountId: accountId,
|
|
10611
10742
|
challenge: authChallenge,
|
|
10612
|
-
credentialIds: authenticators.map((a) => a.credentialId)
|
|
10743
|
+
credentialIds: credentialIds.length > 0 ? credentialIds : authenticators.map((a) => a.credentialId)
|
|
10613
10744
|
});
|
|
10745
|
+
if (storedCredentialId && authCredential.rawId !== storedCredentialId) throw new Error("Wrong passkey selected during recovery auto-login; please use the newly recovered passkey.");
|
|
10614
10746
|
const vrfUnlockResult = await webAuthnManager.unlockVRFKeypair({
|
|
10615
10747
|
nearAccountId: accountId,
|
|
10616
10748
|
encryptedVrfKeypair: rec.encryptedVrfKeypair,
|
|
10617
10749
|
credential: authCredential
|
|
10618
10750
|
});
|
|
10619
10751
|
if (!vrfUnlockResult.success) throw new Error(vrfUnlockResult.error || "VRF unlock failed during auto-login");
|
|
10752
|
+
const vrfStatus = await webAuthnManager.checkVrfStatus();
|
|
10753
|
+
const vrfActiveForAccount = vrfStatus.active && vrfStatus.nearAccountId && String(vrfStatus.nearAccountId) === String(accountId);
|
|
10754
|
+
if (!vrfActiveForAccount) throw new Error("VRF session inactive after TouchID unlock");
|
|
10755
|
+
await webAuthnManager.setLastUser(accountId, deviceNumber);
|
|
10620
10756
|
await webAuthnManager.initializeCurrentUser(accountId, this.context.nearClient);
|
|
10621
|
-
|
|
10757
|
+
try {
|
|
10758
|
+
await getLoginSession(this.context, accountId);
|
|
10759
|
+
} catch {}
|
|
10622
10760
|
this.emit({
|
|
10623
10761
|
step: 5,
|
|
10624
10762
|
phase: EmailRecoveryPhase.STEP_5_FINALIZING_REGISTRATION,
|
|
@@ -10628,6 +10766,9 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
|
|
|
10628
10766
|
});
|
|
10629
10767
|
} catch (err$1) {
|
|
10630
10768
|
console.warn("[EmailRecoveryFlow] Auto-login failed after recovery", err$1);
|
|
10769
|
+
try {
|
|
10770
|
+
await this.context.webAuthnManager.clearVrfSession();
|
|
10771
|
+
} catch {}
|
|
10631
10772
|
this.emit({
|
|
10632
10773
|
step: 5,
|
|
10633
10774
|
phase: EmailRecoveryPhase.STEP_5_FINALIZING_REGISTRATION,
|
|
@@ -10645,6 +10786,7 @@ var init_emailRecovery = __esm({ "src/core/TatchiPasskey/emailRecovery.ts": (()
|
|
|
10645
10786
|
|
|
10646
10787
|
//#endregion
|
|
10647
10788
|
//#region src/core/TatchiPasskey/index.ts
|
|
10789
|
+
init_login();
|
|
10648
10790
|
init_sdkSentEvents();
|
|
10649
10791
|
init_accountIds();
|
|
10650
10792
|
init_IndexedDBManager();
|
|
@@ -10707,7 +10849,7 @@ var TatchiPasskey = class {
|
|
|
10707
10849
|
} catch {}
|
|
10708
10850
|
if (!this.iframeRouter) {
|
|
10709
10851
|
if (!this.walletIframeInitInFlight) this.walletIframeInitInFlight = (async () => {
|
|
10710
|
-
const { WalletIframeRouter } = await import("./router-
|
|
10852
|
+
const { WalletIframeRouter } = await import("./router-BLFegW7J.js");
|
|
10711
10853
|
this.iframeRouter = new WalletIframeRouter({
|
|
10712
10854
|
walletOrigin,
|
|
10713
10855
|
servicePath: walletIframeConfig?.walletServicePath || "/wallet-service",
|
|
@@ -11795,6 +11937,30 @@ var TatchiPasskey = class {
|
|
|
11795
11937
|
});
|
|
11796
11938
|
}
|
|
11797
11939
|
/**
|
|
11940
|
+
* Best-effort cancellation for an in-flight email recovery flow.
|
|
11941
|
+
* Intended for UI "user cancelled sending email" / retry UX.
|
|
11942
|
+
*/
|
|
11943
|
+
async cancelEmailRecovery(args) {
|
|
11944
|
+
const { accountId, nearPublicKey } = args || {};
|
|
11945
|
+
if (this.shouldUseWalletIframe()) {
|
|
11946
|
+
try {
|
|
11947
|
+
const router = await this.requireWalletIframeRouter();
|
|
11948
|
+
await router.stopEmailRecovery({
|
|
11949
|
+
accountId,
|
|
11950
|
+
nearPublicKey
|
|
11951
|
+
});
|
|
11952
|
+
} catch {}
|
|
11953
|
+
return;
|
|
11954
|
+
}
|
|
11955
|
+
try {
|
|
11956
|
+
await this.activeEmailRecoveryFlow?.cancelAndReset({
|
|
11957
|
+
accountId,
|
|
11958
|
+
nearPublicKey
|
|
11959
|
+
});
|
|
11960
|
+
} catch {}
|
|
11961
|
+
this.activeEmailRecoveryFlow = null;
|
|
11962
|
+
}
|
|
11963
|
+
/**
|
|
11798
11964
|
* Device2: Start device linking flow
|
|
11799
11965
|
* Returns QR payload and data URL to render; emits onEvent during the flow.
|
|
11800
11966
|
* Runs inside iframe when available for better isolation.
|
|
@@ -12462,6 +12628,22 @@ function createWalletIframeHandlers(deps) {
|
|
|
12462
12628
|
requestId: req.requestId,
|
|
12463
12629
|
payload: { ok: true }
|
|
12464
12630
|
});
|
|
12631
|
+
},
|
|
12632
|
+
PM_STOP_EMAIL_RECOVERY: async (req) => {
|
|
12633
|
+
const pm = getTatchiPasskey$1();
|
|
12634
|
+
const { accountId, nearPublicKey } = req.payload || {};
|
|
12635
|
+
try {
|
|
12636
|
+
const maybeCancel = pm.cancelEmailRecovery;
|
|
12637
|
+
if (typeof maybeCancel === "function") await maybeCancel.call(pm, {
|
|
12638
|
+
accountId,
|
|
12639
|
+
nearPublicKey
|
|
12640
|
+
});
|
|
12641
|
+
} catch {}
|
|
12642
|
+
post$1({
|
|
12643
|
+
type: "PM_RESULT",
|
|
12644
|
+
requestId: req.requestId,
|
|
12645
|
+
payload: { ok: true }
|
|
12646
|
+
});
|
|
12465
12647
|
}
|
|
12466
12648
|
};
|
|
12467
12649
|
}
|