@seams/wallet 0.13.1 → 0.15.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/README.md +3 -3
- package/dist/.build-inputs.sha256 +1 -1
- package/dist/esm/SeamsWeb/SeamsWeb.js +1 -0
- package/dist/esm/SeamsWeb/publicApi/keyExport.js +0 -2
- package/dist/esm/SeamsWeb/walletIframe/client/router.js +9 -4
- package/dist/esm/SeamsWeb/walletIframe/coordinator.js +8 -0
- package/dist/esm/SeamsWeb/walletIframe/shared/facadeBoundary.js +0 -4
- package/dist/esm/SeamsWeb/walletIframe/shared/messages.js +1 -1
- package/dist/esm/core/indexedDB/index.js +2 -1
- package/dist/esm/core/indexedDB/schemaNames.js +1 -2
- package/dist/esm/core/indexedDB/seamsWalletDB/schema.js +2 -1
- package/dist/esm/core/indexedDB/walletDbName.js +6 -0
- package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/presignaturePool.js +24 -27
- package/dist/esm/plugins/plugin-utils.js +2 -142
- package/dist/esm/react/components/AccountMenuButton/AccountMenuDialog.js +13 -89
- package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsModal.js +4 -17
- package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.css +0 -68
- package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.js +2 -11
- package/dist/esm/react/components/AccountMenuButton/index.js +4 -4
- package/dist/esm/sdk/{ConfirmationDrawer-Frj3uEee.js → ConfirmationDrawer-BFzQjd1P.js} +1 -1
- package/dist/esm/sdk/{NonceCoordinator-S5ZbrkDp.js → NonceCoordinator-CDGnEgfI.js} +1 -1
- package/dist/{public/sdk/accountLifecycle-HEUmDLus.js → esm/sdk/accountLifecycle-CBOkr0vU.js} +1 -1
- package/dist/esm/sdk/{adapters-CGvNLOfZ.js → adapters-DsAaBNNY.js} +2 -2
- package/dist/esm/sdk/{challengeDelivery-5lIu9spR.js → challengeDelivery-CATQ4u6P.js} +1 -1
- package/dist/{public/sdk/clientSessionPersistenceState-DRdve9rC.js → esm/sdk/clientSessionPersistenceState-CBylL1Ul.js} +1 -1
- package/dist/esm/sdk/{commitQueue-qjvY_zWn.js → commitQueue-DYEgzoLA.js} +1 -1
- package/dist/esm/sdk/{display-DTbGoX4e.js → display-DsfJkAra.js} +1 -1
- package/dist/{public/sdk/ecdsaCapabilityManifest-ChszYCC0.js → esm/sdk/ecdsaCapabilityManifest-DX6TflEz.js} +1 -1
- package/dist/{public/sdk/ecdsaDerivationClientWasm-CpH-b3jx.js → esm/sdk/ecdsaDerivationClientWasm-CpjnN4aK.js} +1 -1
- package/dist/esm/sdk/ecdsaDerivationExport-DOGzq0qC.js +1 -0
- package/dist/esm/sdk/{ecdsaWalletRecords-Di_NUxD_.js → ecdsaWalletRecords-CHfrYvKr.js} +1 -1
- package/dist/esm/sdk/{emailOtpEcdsaDerivationIdentity-p0C1CQva.js → emailOtpEcdsaDerivationIdentity-Bik0N8v9.js} +1 -1
- package/dist/esm/sdk/{enrichDisplayModelWithAbi-DZIhvE-x.js → enrichDisplayModelWithAbi-DSj4NAlY.js} +1 -1
- package/dist/esm/sdk/{export-viewer-host-DUMwD6zP.js → export-viewer-host-CV-lSsQF.js} +1 -1
- package/dist/esm/sdk/exportKeypairOperation-DzbjKbnk.js +1 -0
- package/dist/esm/sdk/host-DYuu07E5.js +1 -0
- package/dist/esm/sdk/{lanes-Ck81oEGv.js → lanes-5kcTFbPx.js} +1 -1
- package/dist/esm/sdk/{localOnly-CUVRoMy2.js → localOnly-C5mSXb_D.js} +1 -1
- package/dist/{public/sdk/mountExportPrivateKeySurface-B4gH1Sel.js → esm/sdk/mountExportPrivateKeySurface-CatAhYoG.js} +1 -1
- package/dist/{public/sdk/mountRecoveryCodeBackupSurface-D1G-iCPI.js → esm/sdk/mountRecoveryCodeBackupSurface-DlEb3uD7.js} +1 -1
- package/dist/esm/sdk/nearEd25519YaoMaterialActivation-Bo3IOTS-.js +1 -0
- package/dist/esm/sdk/{nearEd25519YaoSigningPreparation-Eiq_ikXk.js → nearEd25519YaoSigningPreparation-RIfkYN0d.js} +1 -1
- package/dist/esm/sdk/{nonceLaneKeys-Do5Vs-De.js → nonceLaneKeys-BCYfl1wv.js} +1 -1
- package/dist/esm/sdk/{normalization-DJPmcXTg.js → normalization-n503J-BI.js} +1 -1
- package/dist/{public/sdk/passkey-custody-Cd_yyoRa.js → esm/sdk/passkey-custody-DpTM-eNJ.js} +1 -1
- package/dist/esm/sdk/{pendingWalletRecoveryCodeBackup-DMg5U0Fk.js → pendingWalletRecoveryCodeBackup-C60sZMj5.js} +1 -1
- package/dist/{public/sdk/presignaturePool-Bkk6bLFB.js → esm/sdk/presignaturePool-V10fZpG3.js} +1 -1
- package/dist/esm/sdk/recovery-entrypoint-BULjaFBM.js +1 -0
- package/dist/esm/sdk/{registration-Drtkzrlc.js → registration-CyF7nOXs.js} +1 -1
- package/dist/esm/sdk/registration-DEGZR8kA.js +1 -0
- package/dist/esm/sdk/{registrationAccounts-DP-32yCK.js → registrationAccounts-BQMUusdD.js} +1 -1
- package/dist/{public/sdk/registrationIntent-BHU5k2Q-.js → esm/sdk/registrationIntent-090Zj7Iu.js} +1 -1
- package/dist/esm/sdk/{registrationSignerPlan-dY9Rp0m_.js → registrationSignerPlan-CPzHavPM.js} +1 -1
- package/dist/esm/sdk/{requireStepUpAuth-FqZSU021.js → requireStepUpAuth-BCY5ZStI.js} +1 -1
- package/dist/esm/sdk/routerAbNormalSigning-C4P2tDU-.js +1 -0
- package/dist/esm/sdk/runtime-auth-BNR1wI8E.js +1 -0
- package/dist/esm/sdk/runtime-device-link-Dq8g_UNb.js +1 -0
- package/dist/esm/sdk/runtime-ecdsa-tempo-AGjT7Xpa.js +1 -0
- package/dist/esm/sdk/runtime-email-otp-BpBOuSsT.js +1 -0
- package/dist/esm/sdk/runtime-export-CBsacCPY.js +1 -0
- package/dist/esm/sdk/runtime-near-J3hKjC7G.js +1 -0
- package/dist/esm/sdk/runtime-preferences-CVt5sLvm.js +1 -0
- package/dist/esm/sdk/runtime-recovery-BzewdcoT.js +1 -0
- package/dist/esm/sdk/runtime-recovery-codes-GOytzExh.js +1 -0
- package/dist/esm/sdk/secp256k1-CKq7_HD-.js +1 -0
- package/dist/esm/sdk/sessionObservationRevision-CnEOLDbl.js +1 -0
- package/dist/esm/sdk/shared-BywEqTsd.js +6 -0
- package/dist/{public/sdk/signEvmFamily-ttVfV0qm.js → esm/sdk/signEvmFamily-Cpm3e6Zs.js} +1 -1
- package/dist/esm/sdk/{signEvmFamilyWithUiConfirmForTempo-Bo25SwuV.js → signEvmFamilyWithUiConfirmForTempo-DGWmm9n7.js} +1 -1
- package/dist/esm/sdk/{signEvmWithUiConfirm-CFcqJRj3.js → signEvmWithUiConfirm-BRmdLgmm.js} +1 -1
- package/dist/esm/sdk/signNear-XGZBxc_g.js +1 -0
- package/dist/esm/sdk/signer-worker-DlK58rEA.js +1 -0
- package/dist/esm/sdk/{signingFlow-DZvV4AgG.js → signingFlow-VAnM8L5C.js} +1 -1
- package/dist/{public/sdk/signingQueue-2pr7lAUS.js → esm/sdk/signingQueue-D_Ebmzcn.js} +1 -1
- package/dist/esm/sdk/singletons-BXhnsqeY.js +1 -0
- package/dist/esm/sdk/{thresholdEcdsa-D-QMyevW.js → thresholdEcdsa-CneSKcRt.js} +1 -1
- package/dist/esm/sdk/{trace-QLsbYdld.js → trace-BBux0jtr.js} +1 -1
- package/dist/{public/sdk/transaction-activity-xfeHKJoq.js → esm/sdk/transaction-activity-Cccvec2J.js} +1 -1
- package/dist/esm/sdk/{transactionState-CGULLokO.js → transactionState-Day-1x7Y.js} +1 -1
- package/dist/esm/sdk/{types-WGrFMQSw.js → types-hKLqDUhR.js} +1 -1
- package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -1
- package/dist/esm/sdk/wallet-iframe-host-full.js +1 -1
- package/dist/esm/sdk/wallet-iframe-host-near.js +1 -1
- package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -1
- package/dist/esm/sdk/{wallet-recovery-LMtGiEL3.js → wallet-recovery-Bfhfk52N.js} +1 -1
- package/dist/esm/sdk/{walletAuthMethodRecord-CnBw27ED.js → walletAuthMethodRecord-LniOQQmj.js} +1 -1
- package/dist/esm/sdk/{walletAuthority-BWvfaKIX.js → walletAuthority-CAiGuWW2.js} +1 -1
- package/dist/esm/sdk/walletCustodyEcdsaContinuity-B4fTDL10.js +1 -0
- package/dist/esm/sdk/{sessionPolicy-CBTZQe1n.js → walletDbName-DtRewci9.js} +1 -1
- package/dist/{public/sdk/walletOwnershipGeneration-CAycHv-H.js → esm/sdk/walletOwnershipGeneration-B6HyR2rE.js} +1 -1
- package/dist/esm/sdk/walletRecoveryCommit-C6HF84_U.js +1 -0
- package/dist/{public/sdk/walletSessionAuthorizationStore-BiKGIBWQ.js → esm/sdk/walletSessionAuthorizationStore-DmYe-cDR.js} +1 -1
- package/dist/esm/sdk/warmSessionHydration-CsQpQVuy.js +1 -0
- package/dist/public/headers.manifest.json +1 -1
- package/dist/public/sdk/{ConfirmationDrawer-Frj3uEee.js → ConfirmationDrawer-BFzQjd1P.js} +1 -1
- package/dist/public/sdk/{NonceCoordinator-S5ZbrkDp.js → NonceCoordinator-CDGnEgfI.js} +1 -1
- package/dist/{esm/sdk/accountLifecycle-HEUmDLus.js → public/sdk/accountLifecycle-CBOkr0vU.js} +1 -1
- package/dist/public/sdk/{adapters-CGvNLOfZ.js → adapters-DsAaBNNY.js} +2 -2
- package/dist/public/sdk/{challengeDelivery-5lIu9spR.js → challengeDelivery-CATQ4u6P.js} +1 -1
- package/dist/{esm/sdk/clientSessionPersistenceState-DRdve9rC.js → public/sdk/clientSessionPersistenceState-CBylL1Ul.js} +1 -1
- package/dist/public/sdk/{commitQueue-qjvY_zWn.js → commitQueue-DYEgzoLA.js} +1 -1
- package/dist/public/sdk/{display-DTbGoX4e.js → display-DsfJkAra.js} +1 -1
- package/dist/{esm/sdk/ecdsaCapabilityManifest-ChszYCC0.js → public/sdk/ecdsaCapabilityManifest-DX6TflEz.js} +1 -1
- package/dist/{esm/sdk/ecdsaDerivationClientWasm-CpH-b3jx.js → public/sdk/ecdsaDerivationClientWasm-CpjnN4aK.js} +1 -1
- package/dist/public/sdk/ecdsaDerivationExport-DOGzq0qC.js +1 -0
- package/dist/public/sdk/{ecdsaWalletRecords-Di_NUxD_.js → ecdsaWalletRecords-CHfrYvKr.js} +1 -1
- package/dist/public/sdk/{emailOtpEcdsaDerivationIdentity-p0C1CQva.js → emailOtpEcdsaDerivationIdentity-Bik0N8v9.js} +1 -1
- package/dist/public/sdk/{enrichDisplayModelWithAbi-DZIhvE-x.js → enrichDisplayModelWithAbi-DSj4NAlY.js} +1 -1
- package/dist/public/sdk/{export-viewer-host-DUMwD6zP.js → export-viewer-host-CV-lSsQF.js} +1 -1
- package/dist/public/sdk/exportKeypairOperation-DzbjKbnk.js +1 -0
- package/dist/public/sdk/host-DYuu07E5.js +1 -0
- package/dist/public/sdk/{lanes-Ck81oEGv.js → lanes-5kcTFbPx.js} +1 -1
- package/dist/public/sdk/{localOnly-CUVRoMy2.js → localOnly-C5mSXb_D.js} +1 -1
- package/dist/{esm/sdk/mountExportPrivateKeySurface-B4gH1Sel.js → public/sdk/mountExportPrivateKeySurface-CatAhYoG.js} +1 -1
- package/dist/{esm/sdk/mountRecoveryCodeBackupSurface-D1G-iCPI.js → public/sdk/mountRecoveryCodeBackupSurface-DlEb3uD7.js} +1 -1
- package/dist/public/sdk/nearEd25519YaoMaterialActivation-Bo3IOTS-.js +1 -0
- package/dist/public/sdk/{nearEd25519YaoSigningPreparation-Eiq_ikXk.js → nearEd25519YaoSigningPreparation-RIfkYN0d.js} +1 -1
- package/dist/public/sdk/{nonceLaneKeys-Do5Vs-De.js → nonceLaneKeys-BCYfl1wv.js} +1 -1
- package/dist/public/sdk/{normalization-DJPmcXTg.js → normalization-n503J-BI.js} +1 -1
- package/dist/{esm/sdk/passkey-custody-Cd_yyoRa.js → public/sdk/passkey-custody-DpTM-eNJ.js} +1 -1
- package/dist/public/sdk/{pendingWalletRecoveryCodeBackup-DMg5U0Fk.js → pendingWalletRecoveryCodeBackup-C60sZMj5.js} +1 -1
- package/dist/{esm/sdk/presignaturePool-Bkk6bLFB.js → public/sdk/presignaturePool-V10fZpG3.js} +1 -1
- package/dist/public/sdk/recovery-entrypoint-BULjaFBM.js +1 -0
- package/dist/public/sdk/{registration-Drtkzrlc.js → registration-CyF7nOXs.js} +1 -1
- package/dist/public/sdk/registration-DEGZR8kA.js +1 -0
- package/dist/public/sdk/{registrationAccounts-DP-32yCK.js → registrationAccounts-BQMUusdD.js} +1 -1
- package/dist/{esm/sdk/registrationIntent-BHU5k2Q-.js → public/sdk/registrationIntent-090Zj7Iu.js} +1 -1
- package/dist/public/sdk/{registrationSignerPlan-dY9Rp0m_.js → registrationSignerPlan-CPzHavPM.js} +1 -1
- package/dist/public/sdk/{requireStepUpAuth-FqZSU021.js → requireStepUpAuth-BCY5ZStI.js} +1 -1
- package/dist/public/sdk/routerAbNormalSigning-C4P2tDU-.js +1 -0
- package/dist/public/sdk/runtime-auth-BNR1wI8E.js +1 -0
- package/dist/public/sdk/runtime-device-link-Dq8g_UNb.js +1 -0
- package/dist/public/sdk/runtime-ecdsa-tempo-AGjT7Xpa.js +1 -0
- package/dist/public/sdk/runtime-email-otp-BpBOuSsT.js +1 -0
- package/dist/public/sdk/runtime-export-CBsacCPY.js +1 -0
- package/dist/public/sdk/runtime-near-J3hKjC7G.js +1 -0
- package/dist/public/sdk/runtime-preferences-CVt5sLvm.js +1 -0
- package/dist/public/sdk/runtime-recovery-BzewdcoT.js +1 -0
- package/dist/public/sdk/runtime-recovery-codes-GOytzExh.js +1 -0
- package/dist/public/sdk/secp256k1-CKq7_HD-.js +1 -0
- package/dist/public/sdk/sessionObservationRevision-CnEOLDbl.js +1 -0
- package/dist/public/sdk/shared-BywEqTsd.js +6 -0
- package/dist/{esm/sdk/signEvmFamily-ttVfV0qm.js → public/sdk/signEvmFamily-Cpm3e6Zs.js} +1 -1
- package/dist/public/sdk/{signEvmFamilyWithUiConfirmForTempo-Bo25SwuV.js → signEvmFamilyWithUiConfirmForTempo-DGWmm9n7.js} +1 -1
- package/dist/public/sdk/{signEvmWithUiConfirm-CFcqJRj3.js → signEvmWithUiConfirm-BRmdLgmm.js} +1 -1
- package/dist/public/sdk/signNear-XGZBxc_g.js +1 -0
- package/dist/public/sdk/signer-worker-DlK58rEA.js +1 -0
- package/dist/public/sdk/{signingFlow-DZvV4AgG.js → signingFlow-VAnM8L5C.js} +1 -1
- package/dist/{esm/sdk/signingQueue-2pr7lAUS.js → public/sdk/signingQueue-D_Ebmzcn.js} +1 -1
- package/dist/public/sdk/singletons-BXhnsqeY.js +1 -0
- package/dist/public/sdk/{thresholdEcdsa-D-QMyevW.js → thresholdEcdsa-CneSKcRt.js} +1 -1
- package/dist/public/sdk/{trace-QLsbYdld.js → trace-BBux0jtr.js} +1 -1
- package/dist/{esm/sdk/transaction-activity-xfeHKJoq.js → public/sdk/transaction-activity-Cccvec2J.js} +1 -1
- package/dist/public/sdk/{transactionState-CGULLokO.js → transactionState-Day-1x7Y.js} +1 -1
- package/dist/public/sdk/{types-WGrFMQSw.js → types-hKLqDUhR.js} +1 -1
- package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -1
- package/dist/public/sdk/wallet-iframe-host-full.js +1 -1
- package/dist/public/sdk/wallet-iframe-host-near.js +1 -1
- package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -1
- package/dist/public/sdk/{wallet-recovery-LMtGiEL3.js → wallet-recovery-Bfhfk52N.js} +1 -1
- package/dist/public/sdk/{walletAuthMethodRecord-CnBw27ED.js → walletAuthMethodRecord-LniOQQmj.js} +1 -1
- package/dist/public/sdk/{walletAuthority-BWvfaKIX.js → walletAuthority-CAiGuWW2.js} +1 -1
- package/dist/public/sdk/walletCustodyEcdsaContinuity-B4fTDL10.js +1 -0
- package/dist/public/sdk/{sessionPolicy-CBTZQe1n.js → walletDbName-DtRewci9.js} +1 -1
- package/dist/{esm/sdk/walletOwnershipGeneration-CAycHv-H.js → public/sdk/walletOwnershipGeneration-B6HyR2rE.js} +1 -1
- package/dist/public/sdk/walletRecoveryCommit-C6HF84_U.js +1 -0
- package/dist/{esm/sdk/walletSessionAuthorizationStore-BiKGIBWQ.js → public/sdk/walletSessionAuthorizationStore-DmYe-cDR.js} +1 -1
- package/dist/public/sdk/warmSessionHydration-CsQpQVuy.js +1 -0
- package/dist/public/sdk/workers/ecdsa-derivation-client.worker.js +3 -1
- package/dist/public/wallet-assets.manifest.json +233 -209
- package/dist/public/wallet-service/index.html +4 -4
- package/dist/types/shared-ts/src/device-linking/contracts.d.ts +0 -9
- package/dist/types/shared-ts/src/utils/routerAbEcdsaDerivation.d.ts +0 -1
- package/dist/types/wallet/src/SeamsWeb/operations/auth/login.d.ts +1 -2
- package/dist/types/wallet/src/SeamsWeb/publicApi/types.d.ts +9 -11
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/router.d.ts +3 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/coordinator.d.ts +1 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/emptyWalletStoreReads.d.ts +19 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/requestRouter.d.ts +1 -1
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/runtimeLoader.d.ts +5 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/sessionObservationRevision.d.ts +7 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/messages.d.ts +3 -3
- package/dist/types/wallet/src/core/indexedDB/index.d.ts +2 -1
- package/dist/types/wallet/src/core/indexedDB/schemaNames.d.ts +0 -1
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/manager.d.ts +2 -1
- package/dist/types/wallet/src/core/indexedDB/walletDbName.d.ts +2 -0
- package/dist/types/wallet/src/core/signingEngine/flows/recovery/keyExportFlow.d.ts +0 -3
- package/dist/types/wallet/src/core/signingEngine/routerAb/ecdsaDerivation/presignaturePool.d.ts +0 -19
- package/dist/types/wallet/src/core/signingEngine/session/identity/ownerLaneScope.d.ts +0 -27
- package/dist/types/wallet/src/plugins/plugin-utils.d.ts +0 -30
- package/dist/types/wallet/src/react/components/AccountMenuButton/AccountMenuDialog.d.ts +1 -9
- package/dist/types/wallet/src/react/components/AccountMenuButton/AuthenticationMethodsModal.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/LinkedDevicesModal.d.ts +1 -1
- package/dist/workers/ecdsa-derivation-client.worker.js +3 -1
- package/package.json +1 -1
- package/dist/esm/plugins/headers.js +0 -55
- package/dist/esm/plugins/next.js +0 -196
- package/dist/esm/plugins/shared-ts/src/utils/normalize.js +0 -31
- package/dist/esm/plugins/vite.js +0 -293
- package/dist/esm/react/components/AccountMenuButton/icons/LayersIcon.js +0 -8
- package/dist/esm/sdk/ecdsaDerivationExport-C1cE5m0t.js +0 -1
- package/dist/esm/sdk/exportKeypairOperation-BHXMSA3v.js +0 -1
- package/dist/esm/sdk/host-BAeJh9rB.js +0 -1
- package/dist/esm/sdk/messages-DgJlG9NU.js +0 -1
- package/dist/esm/sdk/nearEd25519YaoMaterialActivation-DMGPKrn8.js +0 -1
- package/dist/esm/sdk/recovery-entrypoint-EHY_b7Z-.js +0 -1
- package/dist/esm/sdk/registration-CQxxUt5s.js +0 -1
- package/dist/esm/sdk/routerAbNormalSigning-B35zb-P-.js +0 -1
- package/dist/esm/sdk/runtime-auth-D7VqiZeg.js +0 -1
- package/dist/esm/sdk/runtime-device-link-BKc_MD5V.js +0 -1
- package/dist/esm/sdk/runtime-ecdsa-tempo-DC51NDrh.js +0 -1
- package/dist/esm/sdk/runtime-email-otp-C-wopKFf.js +0 -1
- package/dist/esm/sdk/runtime-export-BtGy8BKi.js +0 -1
- package/dist/esm/sdk/runtime-near-nq8pgRAl.js +0 -1
- package/dist/esm/sdk/runtime-preferences-778ZfMmT.js +0 -1
- package/dist/esm/sdk/runtime-recovery-B-JsRiN0.js +0 -1
- package/dist/esm/sdk/runtime-recovery-codes-rLR4Guy4.js +0 -1
- package/dist/esm/sdk/secp256k1-CYQS0rj-.js +0 -1
- package/dist/esm/sdk/shared-B6BCLs8L.js +0 -6
- package/dist/esm/sdk/signNear-bcWIHxEY.js +0 -1
- package/dist/esm/sdk/singletons-8UH3gOnZ.js +0 -1
- package/dist/esm/sdk/walletCustodyEcdsaContinuity-D-gYxv6e.js +0 -1
- package/dist/esm/sdk/walletRecoveryCommit-BYRC_2li.js +0 -1
- package/dist/esm/sdk/warmSessionHydration-B7-kCnJh.js +0 -1
- package/dist/public/sdk/ecdsaDerivationExport-C1cE5m0t.js +0 -1
- package/dist/public/sdk/exportKeypairOperation-BHXMSA3v.js +0 -1
- package/dist/public/sdk/host-BAeJh9rB.js +0 -1
- package/dist/public/sdk/messages-DgJlG9NU.js +0 -1
- package/dist/public/sdk/nearEd25519YaoMaterialActivation-DMGPKrn8.js +0 -1
- package/dist/public/sdk/recovery-entrypoint-EHY_b7Z-.js +0 -1
- package/dist/public/sdk/registration-CQxxUt5s.js +0 -1
- package/dist/public/sdk/routerAbNormalSigning-B35zb-P-.js +0 -1
- package/dist/public/sdk/runtime-auth-D7VqiZeg.js +0 -1
- package/dist/public/sdk/runtime-device-link-BKc_MD5V.js +0 -1
- package/dist/public/sdk/runtime-ecdsa-tempo-DC51NDrh.js +0 -1
- package/dist/public/sdk/runtime-email-otp-C-wopKFf.js +0 -1
- package/dist/public/sdk/runtime-export-BtGy8BKi.js +0 -1
- package/dist/public/sdk/runtime-near-nq8pgRAl.js +0 -1
- package/dist/public/sdk/runtime-preferences-778ZfMmT.js +0 -1
- package/dist/public/sdk/runtime-recovery-B-JsRiN0.js +0 -1
- package/dist/public/sdk/runtime-recovery-codes-rLR4Guy4.js +0 -1
- package/dist/public/sdk/secp256k1-CYQS0rj-.js +0 -1
- package/dist/public/sdk/shared-B6BCLs8L.js +0 -6
- package/dist/public/sdk/signNear-bcWIHxEY.js +0 -1
- package/dist/public/sdk/singletons-8UH3gOnZ.js +0 -1
- package/dist/public/sdk/walletCustodyEcdsaContinuity-D-gYxv6e.js +0 -1
- package/dist/public/sdk/walletRecoveryCommit-BYRC_2li.js +0 -1
- package/dist/public/sdk/warmSessionHydration-B7-kCnJh.js +0 -1
- package/dist/types/wallet/src/plugins/headers.d.ts +0 -25
- package/dist/types/wallet/src/plugins/next.d.ts +0 -66
- package/dist/types/wallet/src/plugins/vite.d.ts +0 -74
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LayersIcon.d.ts +0 -2
- /package/dist/esm/plugins/{wallet/src/core → core}/browser/walletIframe/hostVariant.js +0 -0
- /package/dist/esm/sdk/{accountIds-BzZs7YoX.js → accountIds-Cpvlkvbe.js} +0 -0
- /package/dist/esm/sdk/{appearance-DITtYj-z.js → appearance-4DmzKUWf.js} +0 -0
- /package/dist/esm/sdk/{authenticatorOptions-C9aCKgeF.js → authenticatorOptions-2_XK8aXv.js} +0 -0
- /package/dist/esm/sdk/{browser-DkCRXFkk.js → browser-n3IVr7qu.js} +0 -0
- /package/dist/esm/sdk/{digestEncoding-CkUc5vtR.js → digestEncoding-BX3VW9eF.js} +0 -0
- /package/dist/esm/sdk/{ecdsaChainTarget-DJBXHzbH.js → ecdsaChainTarget-Bfatk3oP.js} +0 -0
- /package/dist/esm/sdk/{helpers-BnkILY2_.js → helpers-B9fpZNAP.js} +0 -0
- /package/dist/esm/sdk/{intentDigest-DJBrMyLJ.js → intentDigest-P_-CM7lS.js} +0 -0
- /package/dist/esm/sdk/{jsonRpc-YKL5n8VL.js → jsonRpc-BVDv1wfm.js} +0 -0
- /package/dist/esm/sdk/{jsxRuntime.module-C8JOKu_4.js → jsxRuntime.module-DKsgiFjd.js} +0 -0
- /package/dist/esm/sdk/{keccak-BArcwgbj.js → keccak-mS0Mejjx.js} +0 -0
- /package/dist/esm/sdk/{normalization-CeZT7ob0.js → normalization-C6fQN6mW.js} +0 -0
- /package/dist/esm/sdk/{operationFingerprint-CUrnoh-M.js → operationFingerprint-BHNYryLY.js} +0 -0
- /package/dist/esm/sdk/{presignatures-DZm0d6Wy.js → presignatures-K-yuzOE0.js} +0 -0
- /package/dist/esm/sdk/{prfCache-DCkuB8Lu.js → prfCache-DJ93rtDv.js} +0 -0
- /package/dist/esm/sdk/{profileAccountProjection-B3LXAUmo.js → profileAccountProjection-BNVJLOt2.js} +0 -0
- /package/dist/esm/sdk/{promptText-B8RprJhO.js → promptText-CnyrLxgj.js} +0 -0
- /package/dist/esm/sdk/{registrationAuthMethodInput-BBCeWDmw.js → registrationAuthMethodInput-RbSR7R1G.js} +0 -0
- /package/dist/esm/sdk/{registrationIds-ByuReLUc.js → registrationIds-BaK3jUS6.js} +0 -0
- /package/dist/esm/sdk/{sdkSentEvents-Dl8fOL50.js → sdkSentEvents-D4KtK7_I.js} +0 -0
- /package/dist/esm/sdk/{signatureUses-8c8Ku_Fw.js → signatureUses-BKAoDbQd.js} +0 -0
- /package/dist/esm/sdk/{signerDomain-DqLCvI-D.js → signerDomain-Dp7BhfmZ.js} +0 -0
- /package/dist/esm/sdk/{signerSlot-B4Eq8Oe2.js → signerSlot-FJAGOhmg.js} +0 -0
- /package/dist/esm/sdk/{types-DhtByIcQ.js → types-Buoe6179.js} +0 -0
- /package/dist/esm/sdk/{walletRecoveryRotate-D_1a8Agl.js → walletRecoveryRotate-BN3H8byw.js} +0 -0
- /package/dist/esm/sdk/{walletSessionAuthorizationStatus-BLyzJbU8.js → walletSessionAuthorizationStatus-BL7j2TeM.js} +0 -0
- /package/dist/esm/sdk/{webauthnP256-DZCusNY9.js → webauthnP256-BwgxtG5N.js} +0 -0
- /package/dist/esm/sdk/{webauthnPromptCoordinator-CS4Xc_jZ.js → webauthnPromptCoordinator-CwJeKiYq.js} +0 -0
- /package/dist/public/sdk/{accountIds-BzZs7YoX.js → accountIds-Cpvlkvbe.js} +0 -0
- /package/dist/public/sdk/{appearance-DITtYj-z.js → appearance-4DmzKUWf.js} +0 -0
- /package/dist/public/sdk/{authenticatorOptions-C9aCKgeF.js → authenticatorOptions-2_XK8aXv.js} +0 -0
- /package/dist/public/sdk/{browser-DkCRXFkk.js → browser-n3IVr7qu.js} +0 -0
- /package/dist/public/sdk/{digestEncoding-CkUc5vtR.js → digestEncoding-BX3VW9eF.js} +0 -0
- /package/dist/public/sdk/{ecdsaChainTarget-DJBXHzbH.js → ecdsaChainTarget-Bfatk3oP.js} +0 -0
- /package/dist/public/sdk/{helpers-BnkILY2_.js → helpers-B9fpZNAP.js} +0 -0
- /package/dist/public/sdk/{intentDigest-DJBrMyLJ.js → intentDigest-P_-CM7lS.js} +0 -0
- /package/dist/public/sdk/{jsonRpc-YKL5n8VL.js → jsonRpc-BVDv1wfm.js} +0 -0
- /package/dist/public/sdk/{jsxRuntime.module-C8JOKu_4.js → jsxRuntime.module-DKsgiFjd.js} +0 -0
- /package/dist/public/sdk/{keccak-BArcwgbj.js → keccak-mS0Mejjx.js} +0 -0
- /package/dist/public/sdk/{normalization-CeZT7ob0.js → normalization-C6fQN6mW.js} +0 -0
- /package/dist/public/sdk/{operationFingerprint-CUrnoh-M.js → operationFingerprint-BHNYryLY.js} +0 -0
- /package/dist/public/sdk/{presignatures-DZm0d6Wy.js → presignatures-K-yuzOE0.js} +0 -0
- /package/dist/public/sdk/{prfCache-DCkuB8Lu.js → prfCache-DJ93rtDv.js} +0 -0
- /package/dist/public/sdk/{profileAccountProjection-B3LXAUmo.js → profileAccountProjection-BNVJLOt2.js} +0 -0
- /package/dist/public/sdk/{promptText-B8RprJhO.js → promptText-CnyrLxgj.js} +0 -0
- /package/dist/public/sdk/{registrationAuthMethodInput-BBCeWDmw.js → registrationAuthMethodInput-RbSR7R1G.js} +0 -0
- /package/dist/public/sdk/{registrationIds-ByuReLUc.js → registrationIds-BaK3jUS6.js} +0 -0
- /package/dist/public/sdk/{sdkSentEvents-Dl8fOL50.js → sdkSentEvents-D4KtK7_I.js} +0 -0
- /package/dist/public/sdk/{signatureUses-8c8Ku_Fw.js → signatureUses-BKAoDbQd.js} +0 -0
- /package/dist/public/sdk/{signerDomain-DqLCvI-D.js → signerDomain-Dp7BhfmZ.js} +0 -0
- /package/dist/public/sdk/{signerSlot-B4Eq8Oe2.js → signerSlot-FJAGOhmg.js} +0 -0
- /package/dist/public/sdk/{types-DhtByIcQ.js → types-Buoe6179.js} +0 -0
- /package/dist/public/sdk/{walletRecoveryRotate-D_1a8Agl.js → walletRecoveryRotate-BN3H8byw.js} +0 -0
- /package/dist/public/sdk/{walletSessionAuthorizationStatus-BLyzJbU8.js → walletSessionAuthorizationStatus-BL7j2TeM.js} +0 -0
- /package/dist/public/sdk/{webauthnP256-DZCusNY9.js → webauthnP256-BwgxtG5N.js} +0 -0
- /package/dist/public/sdk/{webauthnPromptCoordinator-CS4Xc_jZ.js → webauthnPromptCoordinator-CwJeKiYq.js} +0 -0
package/README.md
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
# Seams Wallet SDK
|
|
2
2
|
|
|
3
|
-
`@seams/wallet` **0.
|
|
3
|
+
`@seams/wallet` **0.14.0** provides browser wallet lifecycle, NEAR and EVM-family
|
|
4
4
|
threshold signing, React components, and hosted wallet runtime assets.
|
|
5
5
|
|
|
6
6
|
## Install
|
|
7
7
|
|
|
8
8
|
```sh
|
|
9
|
-
pnpm add @seams/wallet@0.
|
|
9
|
+
pnpm add @seams/wallet@0.14.0
|
|
10
10
|
```
|
|
11
11
|
|
|
12
12
|
React integrations support React 18 and 19. Import the provider and UI from
|
|
13
13
|
`@seams/wallet/react` and its stylesheet from `@seams/wallet/react/styles`.
|
|
14
14
|
Keep the application package, wallet-origin assets, and
|
|
15
|
-
`@seams/wallet-server@0.
|
|
15
|
+
`@seams/wallet-server@0.14.0` on the matching release.
|
|
16
16
|
|
|
17
17
|
## Next release migration (unreleased)
|
|
18
18
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
9f6cfefb8440e96d1b81504ee0d7e6ac3d60177f8489eb6c94686037c4861834
|
|
@@ -49,6 +49,7 @@ var SeamsWeb = class {
|
|
|
49
49
|
};
|
|
50
50
|
this.events = { subscribe: this.walletIframe.onSdkLifecycleEvent.bind(this.walletIframe) };
|
|
51
51
|
this.authMenu = {
|
|
52
|
+
prepare: this.walletIframe.prepareHostedAuthMenu.bind(this.walletIframe),
|
|
52
53
|
open: this.walletIframe.openHostedAuthMenu.bind(this.walletIframe),
|
|
53
54
|
cancel: this.walletIframe.cancelHostedAuthMenu.bind(this.walletIframe),
|
|
54
55
|
onExternalAuthRequest: this.walletIframe.onHostedAuthMenuExternalAuthRequest.bind(this.walletIframe),
|
|
@@ -32,7 +32,6 @@ async function exportKey(deps, input) {
|
|
|
32
32
|
};
|
|
33
33
|
requireKeyExportCapability(deps.configs, laneInput);
|
|
34
34
|
const lane = await deps.domain.resolveExactKeyExportLane(laneInput);
|
|
35
|
-
if (lane.kind === "relink_required") return lane;
|
|
36
35
|
if (lane.kind !== "ed25519") throw new Error(`[key-export] expected an Ed25519 lane, received ${lane.kind}`);
|
|
37
36
|
await deps.domain.exportKeypairWithUI({
|
|
38
37
|
...laneInput,
|
|
@@ -49,7 +48,6 @@ async function exportKey(deps, input) {
|
|
|
49
48
|
};
|
|
50
49
|
requireKeyExportCapability(deps.configs, laneInput);
|
|
51
50
|
const lane = await deps.domain.resolveExactKeyExportLane(laneInput);
|
|
52
|
-
if (lane.kind === "relink_required") return lane;
|
|
53
51
|
if (lane.kind !== "ecdsa") throw new Error(`[key-export] expected an ECDSA lane, received ${lane.kind}`);
|
|
54
52
|
await deps.domain.exportKeypairWithUI({
|
|
55
53
|
...laneInput,
|
|
@@ -242,10 +242,6 @@ function walletIframeLoginStatusFromExactSession(state) {
|
|
|
242
242
|
}
|
|
243
243
|
function parseResolveExactKeyExportLaneResult(result) {
|
|
244
244
|
switch (result.kind) {
|
|
245
|
-
case "relink_required": return {
|
|
246
|
-
kind: "relink_required",
|
|
247
|
-
reason: result.reason
|
|
248
|
-
};
|
|
249
245
|
case "ecdsa": return {
|
|
250
246
|
kind: "ecdsa",
|
|
251
247
|
laneIdentity: parseExactEcdsaSigningLaneIdentity(result.laneIdentity)
|
|
@@ -559,6 +555,7 @@ var WalletIframeRouter = class {
|
|
|
559
555
|
this.exactSessionState = null;
|
|
560
556
|
this.sessionSelectionGeneration = 0;
|
|
561
557
|
this.sessionObservationRevision = -1;
|
|
558
|
+
this.walletRuntimePreparedConnectionId = null;
|
|
562
559
|
this.lastPreferencesChangedPayload = null;
|
|
563
560
|
this.mirroredConfirmationUiMode = null;
|
|
564
561
|
this.debug = false;
|
|
@@ -2499,6 +2496,14 @@ var WalletIframeRouter = class {
|
|
|
2499
2496
|
}
|
|
2500
2497
|
});
|
|
2501
2498
|
}
|
|
2499
|
+
/** Asks the wallet host to download its runtime once per connection, ahead of sign-in. */
|
|
2500
|
+
async prepareWalletHostRuntime() {
|
|
2501
|
+
await this.ensureConfigured();
|
|
2502
|
+
const connectionId = this.state.connectionId;
|
|
2503
|
+
if (!connectionId || this.walletRuntimePreparedConnectionId === connectionId) return;
|
|
2504
|
+
this.walletRuntimePreparedConnectionId = connectionId;
|
|
2505
|
+
await this.post({ type: "PM_PREPARE_WALLET_RUNTIME" });
|
|
2506
|
+
}
|
|
2502
2507
|
async openHostedAuthMenu(request, anchorElement) {
|
|
2503
2508
|
await this.ensureConfigured();
|
|
2504
2509
|
const normalized = parseHostedAuthMenuOpenRequest(request);
|
|
@@ -6,6 +6,10 @@ function assertNeverConnection(state) {
|
|
|
6
6
|
throw new Error(`Unsupported connection state: ${String(state)}`);
|
|
7
7
|
}
|
|
8
8
|
function noSubscription() {}
|
|
9
|
+
function prepareRouterWalletHostRuntime(router) {
|
|
10
|
+
return router.prepareWalletHostRuntime();
|
|
11
|
+
}
|
|
12
|
+
function ignorePreparationFailure() {}
|
|
9
13
|
function rejectAbortedConnection(signal, _resolve, reject) {
|
|
10
14
|
signal.addEventListener("abort", reject.bind(null, /* @__PURE__ */ new Error("Wallet connection interrupted")), { once: true });
|
|
11
15
|
}
|
|
@@ -214,6 +218,10 @@ var WalletIframeCoordinator = class {
|
|
|
214
218
|
async getExactSessionState() {
|
|
215
219
|
return await (await this.requireRouter()).getExactSessionState();
|
|
216
220
|
}
|
|
221
|
+
prepareHostedAuthMenu() {
|
|
222
|
+
if (this.connection.kind === "disposed") return;
|
|
223
|
+
this.requireRouter().then(prepareRouterWalletHostRuntime).catch(ignorePreparationFailure);
|
|
224
|
+
}
|
|
217
225
|
async openHostedAuthMenu(request, anchorElement) {
|
|
218
226
|
return await (await this.requireRouter()).openHostedAuthMenu(request, anchorElement);
|
|
219
227
|
}
|
|
@@ -19,10 +19,6 @@ function normalizeResolveExactKeyExportLaneInput(input) {
|
|
|
19
19
|
}
|
|
20
20
|
function normalizeResolveExactKeyExportLaneResult(result) {
|
|
21
21
|
switch (result.kind) {
|
|
22
|
-
case "relink_required": return {
|
|
23
|
-
kind: "relink_required",
|
|
24
|
-
reason: result.reason
|
|
25
|
-
};
|
|
26
22
|
case "ecdsa": return {
|
|
27
23
|
kind: "ecdsa",
|
|
28
24
|
laneIdentity: parseExactEcdsaSigningLaneIdentity(result.laneIdentity)
|
|
@@ -458,7 +458,7 @@ function parseHostedAuthMenuOutcome(value) {
|
|
|
458
458
|
default: return null;
|
|
459
459
|
}
|
|
460
460
|
}
|
|
461
|
-
const WALLET_PROTOCOL_VERSION = "
|
|
461
|
+
const WALLET_PROTOCOL_VERSION = "16.0.0";
|
|
462
462
|
const WALLET_IFRAME_PROTOCOL_VERSION_MISMATCH = "WALLET_IFRAME_PROTOCOL_VERSION_MISMATCH";
|
|
463
463
|
const HOSTED_WALLET_REDEMPTION_PAYLOAD_FIELDS = [
|
|
464
464
|
"home",
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SEAMS_WALLET_DB_VERSION, SEAMS_WALLET_INDEXES, SEAMS_WALLET_SCHEMA_MANIFEST, SEAMS_WALLET_STORES, assertCanonicalIndexedDBName, createSeamsTestWalletDbName } from "./schemaNames.js";
|
|
2
|
+
import { SEAMS_WALLET_DB_NAME } from "./walletDbName.js";
|
|
2
3
|
import { upgradeSeamsWalletDBSchema } from "./seamsWalletDB/schema.js";
|
|
3
4
|
import { SeamsWalletDBManager } from "./seamsWalletDB/manager.js";
|
|
4
5
|
import { seamsWalletDB } from "./singletons.js";
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
//#region src/core/indexedDB/schemaNames.ts
|
|
2
|
-
const SEAMS_WALLET_DB_NAME = "seams_wallet";
|
|
3
2
|
const SEAMS_WALLET_DB_VERSION = 24;
|
|
4
3
|
const SEAMS_WALLET_STORES = {
|
|
5
4
|
appState: "app_state",
|
|
@@ -828,6 +827,6 @@ function createSeamsTestWalletDbName(suffix) {
|
|
|
828
827
|
return `seams_test_wallet_${safeSuffix}`;
|
|
829
828
|
}
|
|
830
829
|
//#endregion
|
|
831
|
-
export {
|
|
830
|
+
export { SEAMS_WALLET_DB_VERSION, SEAMS_WALLET_INDEXES, SEAMS_WALLET_SCHEMA_MANIFEST, SEAMS_WALLET_STORES, assertCanonicalIndexedDBName, createSeamsTestWalletDbName };
|
|
832
831
|
|
|
833
832
|
//# sourceMappingURL=schemaNames.js.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SEAMS_WALLET_SCHEMA_MANIFEST } from "../schemaNames.js";
|
|
2
|
+
import { SEAMS_WALLET_DB_NAME } from "../walletDbName.js";
|
|
2
3
|
//#region src/core/indexedDB/seamsWalletDB/schema.ts
|
|
3
4
|
const SEAMS_WALLET_DB_CONFIG = {
|
|
4
5
|
dbName: SEAMS_WALLET_DB_NAME,
|
|
@@ -704,7 +704,7 @@ function resolveSigningRequestExpiresAtMs(input) {
|
|
|
704
704
|
const expiresAtMs = Math.min(materialExpiresAtMs, authorizationExpiresAtMs, input.nowMs + ROUTER_AB_ECDSA_DERIVATION_SIGNING_TTL_MS);
|
|
705
705
|
return Number.isSafeInteger(expiresAtMs) && expiresAtMs > input.nowMs ? expiresAtMs : null;
|
|
706
706
|
}
|
|
707
|
-
async function signRouterAbEcdsaDerivationDigestWithPoolHitAttempt(args, retryCount,
|
|
707
|
+
async function signRouterAbEcdsaDerivationDigestWithPoolHitAttempt(args, retryCount, refillInput) {
|
|
708
708
|
let poolKey = null;
|
|
709
709
|
let poolIdentity = null;
|
|
710
710
|
let presignature = null;
|
|
@@ -792,16 +792,16 @@ async function signRouterAbEcdsaDerivationDigestWithPoolHitAttempt(args, retryCo
|
|
|
792
792
|
workerCtx: args.workerCtx
|
|
793
793
|
});
|
|
794
794
|
}
|
|
795
|
-
if (!presignature
|
|
795
|
+
if (!presignature) {
|
|
796
796
|
const foregroundRefillStartedAt = performance.now();
|
|
797
797
|
startForegroundRefill(poolKey);
|
|
798
798
|
try {
|
|
799
799
|
let refill = await refillRouterAbEcdsaDerivationClientPresignaturePool({
|
|
800
|
-
...
|
|
800
|
+
...refillInput,
|
|
801
801
|
trafficClass: "foreground"
|
|
802
802
|
});
|
|
803
803
|
if (!refill.ok && refill.code === "invalidated") refill = await refillRouterAbEcdsaDerivationClientPresignaturePool({
|
|
804
|
-
...
|
|
804
|
+
...refillInput,
|
|
805
805
|
trafficClass: "foreground"
|
|
806
806
|
});
|
|
807
807
|
if (!refill.ok && refill.code !== "pool_full") return refill;
|
|
@@ -884,7 +884,7 @@ async function signRouterAbEcdsaDerivationDigestWithPoolHitAttempt(args, retryCo
|
|
|
884
884
|
emitEcdsaSigningTiming(args.operationId, "presignature_reserve", reserveStartedAt);
|
|
885
885
|
if (reservation.kind === "unavailable") {
|
|
886
886
|
if (reservation.reason === "claimed_elsewhere") clientPresignatureCleanupState = { kind: "owned_elsewhere" };
|
|
887
|
-
if (retryCount < MAX_CLIENT_PRESIGNATURE_CLAIM_RETRIES) return await signRouterAbEcdsaDerivationDigestWithPoolHitAttempt(args, retryCount + 1,
|
|
887
|
+
if (retryCount < MAX_CLIENT_PRESIGNATURE_CLAIM_RETRIES) return await signRouterAbEcdsaDerivationDigestWithPoolHitAttempt(args, retryCount + 1, refillInput);
|
|
888
888
|
return {
|
|
889
889
|
ok: false,
|
|
890
890
|
code: reservation.reason === "expired" ? "pool_entry_expired" : "pool_entry_unavailable",
|
|
@@ -1066,29 +1066,26 @@ async function signRouterAbEcdsaDerivationDigestWithPool(args) {
|
|
|
1066
1066
|
code: "invalid_pool_fill_expiry",
|
|
1067
1067
|
message: "Router A/B ECDSA derivation pool fill expiry is unavailable or expired"
|
|
1068
1068
|
};
|
|
1069
|
-
const
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
workerCtx: args.workerCtx,
|
|
1087
|
-
...ecdsaPoolFillAuthorization(args)
|
|
1088
|
-
}
|
|
1069
|
+
const refillInput = {
|
|
1070
|
+
relayerUrl: args.relayerUrl,
|
|
1071
|
+
keyHandle: args.keyHandle,
|
|
1072
|
+
ecdsaThresholdKeyId: signingIdentity.ecdsaThresholdKeyId,
|
|
1073
|
+
clientVerifyingShareB64u: signingIdentity.clientVerifyingShareB64u,
|
|
1074
|
+
clientSigningMaterial: args.clientSigningMaterial,
|
|
1075
|
+
thresholdEcdsaPublicKeyB64u: signingIdentity.thresholdEcdsaPublicKeyB64u,
|
|
1076
|
+
credential: args.credential,
|
|
1077
|
+
materialActivation: args.materialActivation,
|
|
1078
|
+
routerAbEcdsaDerivationPoolFill: {
|
|
1079
|
+
kind: "router_ab_ecdsa_derivation_signing_worker_pool",
|
|
1080
|
+
scope: args.scope,
|
|
1081
|
+
ceremonyExpiresAtMs: Math.min(expiresAtMs, Date.now() + ROUTER_AB_ECDSA_PRESIGN_CEREMONY_MAX_LIFETIME_MS - PRESIGN_CEREMONY_CLOCK_SKEW_MARGIN_MS),
|
|
1082
|
+
materialExpiresAtMs: args.authorization.kind === "operation_step_up" ? expiresAtMs : Date.now() + MAX_DURABLE_CLIENT_PRESIGNATURE_LIFETIME_MS
|
|
1083
|
+
},
|
|
1084
|
+
workerCtx: args.workerCtx,
|
|
1085
|
+
...ecdsaPoolFillAuthorization(args)
|
|
1089
1086
|
};
|
|
1090
|
-
const result = await signRouterAbEcdsaDerivationDigestWithPoolHitAttempt(args, 0,
|
|
1091
|
-
if (!result.ok && (result.code === "pool_entry_expired" || result.code === "pool_entry_unavailable")) return await signRouterAbEcdsaDerivationDigestWithPoolHitAttempt(args, 0,
|
|
1087
|
+
const result = await signRouterAbEcdsaDerivationDigestWithPoolHitAttempt(args, 0, refillInput);
|
|
1088
|
+
if (!result.ok && (result.code === "pool_entry_expired" || result.code === "pool_entry_unavailable")) return await signRouterAbEcdsaDerivationDigestWithPoolHitAttempt(args, 0, refillInput);
|
|
1092
1089
|
return result;
|
|
1093
1090
|
}
|
|
1094
1091
|
async function refillRouterAbEcdsaDerivationClientPresignaturePool(args) {
|
|
@@ -1,27 +1,5 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import { normalizeWalletHostVariant, walletHostScriptFileForVariant } from "./wallet/src/core/browser/walletIframe/hostVariant.js";
|
|
3
|
-
import * as fs from "node:fs";
|
|
4
|
-
import * as path from "node:path";
|
|
5
|
-
import { createRequire } from "node:module";
|
|
1
|
+
import { normalizeWalletHostVariant, walletHostScriptFileForVariant } from "./core/browser/walletIframe/hostVariant.js";
|
|
6
2
|
//#region src/plugins/plugin-utils.ts
|
|
7
|
-
function addPreconnectLink(res, origin) {
|
|
8
|
-
if (!origin) return;
|
|
9
|
-
try {
|
|
10
|
-
const link = `<${origin}>; rel=preconnect; crossorigin`;
|
|
11
|
-
const existing = res.getHeader?.("Link");
|
|
12
|
-
if (!existing) {
|
|
13
|
-
res.setHeader?.("Link", link);
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
if (typeof existing === "string") {
|
|
17
|
-
if (!existing.includes(link)) res.setHeader?.("Link", existing + ", " + link);
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
if (Array.isArray(existing)) {
|
|
21
|
-
if (!existing.includes(link)) res.setHeader?.("Link", [...existing, link]);
|
|
22
|
-
}
|
|
23
|
-
} catch {}
|
|
24
|
-
}
|
|
25
3
|
function withAssetVersion(url, assetVersion) {
|
|
26
4
|
const version = String(assetVersion || "").trim();
|
|
27
5
|
if (!version) return url;
|
|
@@ -50,125 +28,7 @@ function buildWalletServiceHtml(sdkBasePath = "/sdk", assetVersion, walletHostVa
|
|
|
50
28
|
</body>
|
|
51
29
|
</html>`;
|
|
52
30
|
}
|
|
53
|
-
function resolveCoepMode(explicit) {
|
|
54
|
-
if (explicit === "strict" || explicit === "off") return explicit;
|
|
55
|
-
const raw = String(globalThis?.process?.env?.VITE_COEP_MODE || "").trim().toLowerCase();
|
|
56
|
-
if (raw === "strict" || raw === "on" || raw === "1" || raw === "require-corp") return "strict";
|
|
57
|
-
if (raw === "off" || raw === "0" || raw === "false") return "off";
|
|
58
|
-
return "off";
|
|
59
|
-
}
|
|
60
|
-
function applyCoepCorp(res) {
|
|
61
|
-
res.setHeader?.("Cross-Origin-Embedder-Policy", "require-corp");
|
|
62
|
-
res.setHeader?.("Cross-Origin-Resource-Policy", "cross-origin");
|
|
63
|
-
}
|
|
64
|
-
function applyCoepCorpIfNeeded(res, coepMode) {
|
|
65
|
-
if (resolveCoepMode(coepMode) !== "off") applyCoepCorp(res);
|
|
66
|
-
}
|
|
67
|
-
function echoCorsFromRequest(res, req, opts = {}) {
|
|
68
|
-
const honorExisting = opts.honorExistingAcaOrigin === true;
|
|
69
|
-
const allowCreds = opts.allowCredentialsWhenExplicit !== false;
|
|
70
|
-
const methods = opts.methods || "GET,OPTIONS";
|
|
71
|
-
const headers = opts.headers || "Content-Type,Authorization";
|
|
72
|
-
const handlePreflight = opts.handlePreflight === true;
|
|
73
|
-
const origin = req?.headers && req.headers.origin || "*";
|
|
74
|
-
const hasExisting = typeof res.getHeader === "function" && !!res.getHeader("Access-Control-Allow-Origin");
|
|
75
|
-
if (!honorExisting || !hasExisting) res.setHeader?.("Access-Control-Allow-Origin", origin);
|
|
76
|
-
res.setHeader?.("Vary", "Origin");
|
|
77
|
-
res.setHeader?.("Access-Control-Allow-Methods", methods);
|
|
78
|
-
res.setHeader?.("Access-Control-Allow-Headers", headers);
|
|
79
|
-
if (origin !== "*" && allowCreds) res.setHeader?.("Access-Control-Allow-Credentials", "true");
|
|
80
|
-
if (handlePreflight) {
|
|
81
|
-
if ((req?.method && String(req.method).toUpperCase()) === "OPTIONS") {
|
|
82
|
-
res.statusCode = 204;
|
|
83
|
-
res.end?.();
|
|
84
|
-
return true;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return false;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Log and validate Related Origin Requests (ROR) configuration.
|
|
91
|
-
* - Prints the well-known endpoint and the configured origins list.
|
|
92
|
-
* - Warns if any origins are not absolute (e.g., missing protocol/hostname).
|
|
93
|
-
*/
|
|
94
|
-
function logRorConfig(origins, endpoint = "/.well-known/webauthn") {
|
|
95
|
-
if (!Array.isArray(origins) || origins.length === 0) return;
|
|
96
|
-
const invalid = [];
|
|
97
|
-
for (const o of origins) try {
|
|
98
|
-
const u = new URL(o);
|
|
99
|
-
if (!u.protocol || !u.hostname) invalid.push(o);
|
|
100
|
-
} catch {
|
|
101
|
-
invalid.push(o);
|
|
102
|
-
}
|
|
103
|
-
const msg = `[seams] ROR enabled: GET ${endpoint} -> { origins: [${origins.join(", ")}] }`;
|
|
104
|
-
console.log(msg);
|
|
105
|
-
if (invalid.length > 0) console.warn(`[seams] ROR warning: invalid origins: ${invalid.join(", ")} (expected absolute origins like https://app.example.com)`);
|
|
106
|
-
}
|
|
107
|
-
function sanitizeOrigins(values) {
|
|
108
|
-
const out = /* @__PURE__ */ new Set();
|
|
109
|
-
if (Array.isArray(values)) for (const v of values) {
|
|
110
|
-
if (typeof v !== "string") continue;
|
|
111
|
-
try {
|
|
112
|
-
const u = new URL(v.trim());
|
|
113
|
-
const scheme = u.protocol;
|
|
114
|
-
const host = u.hostname.toLowerCase();
|
|
115
|
-
const port = u.port ? `:${u.port}` : "";
|
|
116
|
-
if (!(scheme === "https:") && !(scheme === "http:" && host === "localhost")) continue;
|
|
117
|
-
if (u.pathname && u.pathname !== "/" || u.search || u.hash) continue;
|
|
118
|
-
out.add(`${scheme}//${host}${port}`);
|
|
119
|
-
} catch {}
|
|
120
|
-
}
|
|
121
|
-
return Array.from(out);
|
|
122
|
-
}
|
|
123
|
-
function parseConfiguredRorOrigins(value) {
|
|
124
|
-
return value.split(",").map((s) => s.trim()).filter(Boolean);
|
|
125
|
-
}
|
|
126
|
-
function resolveRorOrigins(input) {
|
|
127
|
-
return sanitizeOrigins([
|
|
128
|
-
...input.configuredOrigins,
|
|
129
|
-
input.docsOrigin.trim(),
|
|
130
|
-
input.walletOrigin.trim()
|
|
131
|
-
]);
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Infer and set a proper Content-Type header for a given file path.
|
|
135
|
-
* Shared by both app and wallet-iframe dev servers.
|
|
136
|
-
*/
|
|
137
|
-
function setContentType(res, filePath) {
|
|
138
|
-
switch (path.extname(filePath)) {
|
|
139
|
-
case ".js":
|
|
140
|
-
res.setHeader("Content-Type", "application/javascript; charset=utf-8");
|
|
141
|
-
break;
|
|
142
|
-
case ".css":
|
|
143
|
-
res.setHeader("Content-Type", "text/css; charset=utf-8");
|
|
144
|
-
break;
|
|
145
|
-
case ".map":
|
|
146
|
-
case ".json":
|
|
147
|
-
res.setHeader("Content-Type", "application/json; charset=utf-8");
|
|
148
|
-
break;
|
|
149
|
-
case ".wasm":
|
|
150
|
-
res.setHeader("Content-Type", "application/wasm");
|
|
151
|
-
break;
|
|
152
|
-
case ".html":
|
|
153
|
-
res.setHeader("Content-Type", "text/html; charset=utf-8");
|
|
154
|
-
break;
|
|
155
|
-
default: res.setHeader("Content-Type", "application/octet-stream");
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
const requireCjs = createRequire(import.meta.url);
|
|
159
|
-
function resolveSdkDistRoot(explicit) {
|
|
160
|
-
if (explicit) return path.resolve(explicit);
|
|
161
|
-
const pkgPath = requireCjs.resolve("@seams/wallet/package.json");
|
|
162
|
-
const pkgDir = path.dirname(pkgPath);
|
|
163
|
-
try {
|
|
164
|
-
const esmEntry = JSON.parse(fs.readFileSync(pkgPath, "utf8")).module || "dist/esm/index.js";
|
|
165
|
-
const esmAbs = path.resolve(pkgDir, esmEntry);
|
|
166
|
-
return path.resolve(path.dirname(esmAbs), "..");
|
|
167
|
-
} catch {
|
|
168
|
-
return path.join(pkgDir, "dist");
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
31
|
//#endregion
|
|
172
|
-
export {
|
|
32
|
+
export { buildWalletServiceHtml };
|
|
173
33
|
|
|
174
34
|
//# sourceMappingURL=plugin-utils.js.map
|
|
@@ -1,58 +1,9 @@
|
|
|
1
1
|
import { Theme, useTheme } from "../theme/ThemeProvider.js";
|
|
2
2
|
import { AccountMenuScreen } from "./AccountMenuScreen.js";
|
|
3
|
-
import
|
|
4
|
-
import { LayersIcon } from "./icons/LayersIcon.js";
|
|
5
|
-
import React, { useEffect } from "react";
|
|
3
|
+
import React from "react";
|
|
6
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
5
|
//#region src/react/components/AccountMenuButton/AccountMenuDialog.tsx
|
|
8
|
-
|
|
9
|
-
const { isOpen, presentation, onClose, dialogRef, focusableSelector } = input;
|
|
10
|
-
const previousFocusRef = React.useRef(null);
|
|
11
|
-
const handleDialogKeyDown = React.useCallback((event) => {
|
|
12
|
-
if (event.key === "Escape" || event.key === "Esc") {
|
|
13
|
-
event.preventDefault();
|
|
14
|
-
onClose();
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
if (event.key !== "Tab" || !dialogRef.current) return;
|
|
18
|
-
const focusable = Array.from(dialogRef.current.querySelectorAll(focusableSelector));
|
|
19
|
-
if (focusable.length === 0) {
|
|
20
|
-
event.preventDefault();
|
|
21
|
-
dialogRef.current.focus();
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
const first = focusable[0];
|
|
25
|
-
const last = focusable[focusable.length - 1];
|
|
26
|
-
if (event.shiftKey && document.activeElement === first) {
|
|
27
|
-
event.preventDefault();
|
|
28
|
-
last.focus();
|
|
29
|
-
} else if (!event.shiftKey && document.activeElement === last) {
|
|
30
|
-
event.preventDefault();
|
|
31
|
-
first.focus();
|
|
32
|
-
}
|
|
33
|
-
}, [
|
|
34
|
-
dialogRef,
|
|
35
|
-
focusableSelector,
|
|
36
|
-
onClose
|
|
37
|
-
]);
|
|
38
|
-
useEffect(() => {
|
|
39
|
-
if (!isOpen || presentation !== "modal") return;
|
|
40
|
-
previousFocusRef.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;
|
|
41
|
-
dialogRef.current?.focus({ preventScroll: true });
|
|
42
|
-
window.addEventListener("keydown", handleDialogKeyDown);
|
|
43
|
-
return () => {
|
|
44
|
-
window.removeEventListener("keydown", handleDialogKeyDown);
|
|
45
|
-
previousFocusRef.current?.focus();
|
|
46
|
-
previousFocusRef.current = null;
|
|
47
|
-
};
|
|
48
|
-
}, [
|
|
49
|
-
dialogRef,
|
|
50
|
-
handleDialogKeyDown,
|
|
51
|
-
isOpen,
|
|
52
|
-
presentation
|
|
53
|
-
]);
|
|
54
|
-
}
|
|
55
|
-
const AccountMenuDialogFrame = ({ presentation, onClose, dialogRef, contentClassName, titleId, title, closeLabel, children }) => {
|
|
6
|
+
const AccountMenuDialogFrame = ({ presentation, onClose, dialogRef, contentClassName, titleId, title, children }) => {
|
|
56
7
|
const { theme, tokens } = useTheme();
|
|
57
8
|
const scopedTokens = React.useMemo(() => theme === "dark" ? { dark: tokens } : { light: tokens }, [theme, tokens]);
|
|
58
9
|
if (presentation === "embedded") return /* @__PURE__ */ jsx(AccountMenuScreen, {
|
|
@@ -68,52 +19,25 @@ const AccountMenuDialogFrame = ({ presentation, onClose, dialogRef, contentClass
|
|
|
68
19
|
className: `seams-linked-devices-modal-backdrop theme-${theme}`,
|
|
69
20
|
"data-presentation": presentation,
|
|
70
21
|
role: "presentation",
|
|
71
|
-
|
|
72
|
-
if (presentation === "modal" && event.target === event.currentTarget) onClose();
|
|
73
|
-
},
|
|
74
|
-
children: /* @__PURE__ */ jsxs("div", {
|
|
22
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
75
23
|
ref: dialogRef,
|
|
76
24
|
className: `seams-linked-devices-modal-content ${contentClassName}`,
|
|
77
|
-
role:
|
|
78
|
-
"aria-modal": presentation === "modal" ? true : void 0,
|
|
25
|
+
role: "region",
|
|
79
26
|
"aria-labelledby": titleId,
|
|
80
27
|
tabIndex: -1,
|
|
81
|
-
children:
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}),
|
|
90
|
-
/* @__PURE__ */ jsx("button", {
|
|
91
|
-
type: "button",
|
|
92
|
-
className: "seams-linked-devices-modal-close",
|
|
93
|
-
onClick: onClose,
|
|
94
|
-
"aria-label": closeLabel,
|
|
95
|
-
children: "✕"
|
|
96
|
-
})
|
|
97
|
-
]
|
|
98
|
-
}) : null,
|
|
99
|
-
/* @__PURE__ */ jsxs("div", {
|
|
100
|
-
className: "seams-account-menu-dialog-main",
|
|
101
|
-
children: [/* @__PURE__ */ jsx("h2", {
|
|
102
|
-
id: titleId,
|
|
103
|
-
className: "seams-linked-devices-modal-title",
|
|
104
|
-
children: title
|
|
105
|
-
}), children]
|
|
106
|
-
}),
|
|
107
|
-
presentation === "modal" ? /* @__PURE__ */ jsxs("footer", {
|
|
108
|
-
className: "seams-account-menu-dialog-footer",
|
|
109
|
-
children: [/* @__PURE__ */ jsx(LayersIcon, { size: 13 }), "Powered by seams"]
|
|
110
|
-
}) : null
|
|
111
|
-
]
|
|
28
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
29
|
+
className: "seams-account-menu-dialog-main",
|
|
30
|
+
children: [/* @__PURE__ */ jsx("h2", {
|
|
31
|
+
id: titleId,
|
|
32
|
+
className: "seams-linked-devices-modal-title",
|
|
33
|
+
children: title
|
|
34
|
+
}), children]
|
|
35
|
+
})
|
|
112
36
|
})
|
|
113
37
|
})
|
|
114
38
|
});
|
|
115
39
|
};
|
|
116
40
|
//#endregion
|
|
117
|
-
export { AccountMenuDialogFrame
|
|
41
|
+
export { AccountMenuDialogFrame };
|
|
118
42
|
|
|
119
43
|
//# sourceMappingURL=AccountMenuDialog.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useSeams } from "../../context/index.js";
|
|
2
|
-
import { AccountMenuDialogFrame
|
|
2
|
+
import { AccountMenuDialogFrame } from "./AccountMenuDialog.js";
|
|
3
3
|
import { AuthenticationMethodRow } from "./AuthenticationMethodRow.js";
|
|
4
4
|
import { AuthenticationMethodsView } from "./AuthenticationMethodsView.js";
|
|
5
5
|
import { PlusIcon } from "./icons/PlusIcon.js";
|
|
@@ -95,7 +95,6 @@ function currentAuthorityInventory(input) {
|
|
|
95
95
|
}
|
|
96
96
|
throw new Error("The selected authentication method is unavailable on this device authority.");
|
|
97
97
|
}
|
|
98
|
-
const FOCUSABLE_DIALOG_ELEMENTS = "button:not([disabled]), input:not([disabled]), [href], [tabindex]:not([tabindex=\"-1\"])";
|
|
99
98
|
function methodTitle(method) {
|
|
100
99
|
return method.kind === "passkey" ? "Passkey" : "Email OTP";
|
|
101
100
|
}
|
|
@@ -113,7 +112,7 @@ function inventoryStatus(state) {
|
|
|
113
112
|
case "loaded": return state.inventory.kind === "local_selection" ? "Unlock to manage" : "Active";
|
|
114
113
|
}
|
|
115
114
|
}
|
|
116
|
-
const AuthenticationMethodsModal = ({ walletId, isOpen, onClose, presentation
|
|
115
|
+
const AuthenticationMethodsModal = ({ walletId, isOpen, onClose, presentation }) => {
|
|
117
116
|
const { seams, loginState, refreshSession } = useSeams();
|
|
118
117
|
const [loadState, setLoadState] = React.useState({ kind: "idle" });
|
|
119
118
|
const [actionState, setActionState] = React.useState({ kind: "idle" });
|
|
@@ -184,13 +183,6 @@ const AuthenticationMethodsModal = ({ walletId, isOpen, onClose, presentation =
|
|
|
184
183
|
});
|
|
185
184
|
}
|
|
186
185
|
}, [selectedWalletAuthMethodId, walletId]);
|
|
187
|
-
useAccountMenuDialogKeyboard({
|
|
188
|
-
isOpen,
|
|
189
|
-
presentation,
|
|
190
|
-
onClose,
|
|
191
|
-
dialogRef,
|
|
192
|
-
focusableSelector: FOCUSABLE_DIALOG_ELEMENTS
|
|
193
|
-
});
|
|
194
186
|
useEffect(() => {
|
|
195
187
|
if (!isOpen) {
|
|
196
188
|
loadSequence.current += 1;
|
|
@@ -280,10 +272,8 @@ const AuthenticationMethodsModal = ({ walletId, isOpen, onClose, presentation =
|
|
|
280
272
|
walletAuthMethodId: method.walletAuthMethodId
|
|
281
273
|
});
|
|
282
274
|
await refreshSessionRef.current(walletId);
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
await loadInventory();
|
|
286
|
-
} else onClose();
|
|
275
|
+
setActionState({ kind: "idle" });
|
|
276
|
+
await loadInventory();
|
|
287
277
|
} catch (error) {
|
|
288
278
|
setActionState({
|
|
289
279
|
kind: "error",
|
|
@@ -293,8 +283,6 @@ const AuthenticationMethodsModal = ({ walletId, isOpen, onClose, presentation =
|
|
|
293
283
|
}, [
|
|
294
284
|
actionState,
|
|
295
285
|
loadInventory,
|
|
296
|
-
onClose,
|
|
297
|
-
presentation,
|
|
298
286
|
walletId
|
|
299
287
|
]);
|
|
300
288
|
if (!isOpen) return null;
|
|
@@ -311,7 +299,6 @@ const AuthenticationMethodsModal = ({ walletId, isOpen, onClose, presentation =
|
|
|
311
299
|
contentClassName: "seams-auth-methods-modal-content",
|
|
312
300
|
titleId: "seams-auth-methods-modal-title",
|
|
313
301
|
title: "Authentication methods",
|
|
314
|
-
closeLabel: "Close authentication methods",
|
|
315
302
|
children: /* @__PURE__ */ jsx(AuthenticationMethodsView, {
|
|
316
303
|
walletLabel: walletId ?? "Wallet",
|
|
317
304
|
status: inventoryStatus(loadState),
|