@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.
Files changed (309) hide show
  1. package/README.md +3 -3
  2. package/dist/.build-inputs.sha256 +1 -1
  3. package/dist/esm/SeamsWeb/SeamsWeb.js +1 -0
  4. package/dist/esm/SeamsWeb/publicApi/keyExport.js +0 -2
  5. package/dist/esm/SeamsWeb/walletIframe/client/router.js +9 -4
  6. package/dist/esm/SeamsWeb/walletIframe/coordinator.js +8 -0
  7. package/dist/esm/SeamsWeb/walletIframe/shared/facadeBoundary.js +0 -4
  8. package/dist/esm/SeamsWeb/walletIframe/shared/messages.js +1 -1
  9. package/dist/esm/core/indexedDB/index.js +2 -1
  10. package/dist/esm/core/indexedDB/schemaNames.js +1 -2
  11. package/dist/esm/core/indexedDB/seamsWalletDB/schema.js +2 -1
  12. package/dist/esm/core/indexedDB/walletDbName.js +6 -0
  13. package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/presignaturePool.js +24 -27
  14. package/dist/esm/plugins/plugin-utils.js +2 -142
  15. package/dist/esm/react/components/AccountMenuButton/AccountMenuDialog.js +13 -89
  16. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsModal.js +4 -17
  17. package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.css +0 -68
  18. package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.js +2 -11
  19. package/dist/esm/react/components/AccountMenuButton/index.js +4 -4
  20. package/dist/esm/sdk/{ConfirmationDrawer-Frj3uEee.js → ConfirmationDrawer-BFzQjd1P.js} +1 -1
  21. package/dist/esm/sdk/{NonceCoordinator-S5ZbrkDp.js → NonceCoordinator-CDGnEgfI.js} +1 -1
  22. package/dist/{public/sdk/accountLifecycle-HEUmDLus.js → esm/sdk/accountLifecycle-CBOkr0vU.js} +1 -1
  23. package/dist/esm/sdk/{adapters-CGvNLOfZ.js → adapters-DsAaBNNY.js} +2 -2
  24. package/dist/esm/sdk/{challengeDelivery-5lIu9spR.js → challengeDelivery-CATQ4u6P.js} +1 -1
  25. package/dist/{public/sdk/clientSessionPersistenceState-DRdve9rC.js → esm/sdk/clientSessionPersistenceState-CBylL1Ul.js} +1 -1
  26. package/dist/esm/sdk/{commitQueue-qjvY_zWn.js → commitQueue-DYEgzoLA.js} +1 -1
  27. package/dist/esm/sdk/{display-DTbGoX4e.js → display-DsfJkAra.js} +1 -1
  28. package/dist/{public/sdk/ecdsaCapabilityManifest-ChszYCC0.js → esm/sdk/ecdsaCapabilityManifest-DX6TflEz.js} +1 -1
  29. package/dist/{public/sdk/ecdsaDerivationClientWasm-CpH-b3jx.js → esm/sdk/ecdsaDerivationClientWasm-CpjnN4aK.js} +1 -1
  30. package/dist/esm/sdk/ecdsaDerivationExport-DOGzq0qC.js +1 -0
  31. package/dist/esm/sdk/{ecdsaWalletRecords-Di_NUxD_.js → ecdsaWalletRecords-CHfrYvKr.js} +1 -1
  32. package/dist/esm/sdk/{emailOtpEcdsaDerivationIdentity-p0C1CQva.js → emailOtpEcdsaDerivationIdentity-Bik0N8v9.js} +1 -1
  33. package/dist/esm/sdk/{enrichDisplayModelWithAbi-DZIhvE-x.js → enrichDisplayModelWithAbi-DSj4NAlY.js} +1 -1
  34. package/dist/esm/sdk/{export-viewer-host-DUMwD6zP.js → export-viewer-host-CV-lSsQF.js} +1 -1
  35. package/dist/esm/sdk/exportKeypairOperation-DzbjKbnk.js +1 -0
  36. package/dist/esm/sdk/host-DYuu07E5.js +1 -0
  37. package/dist/esm/sdk/{lanes-Ck81oEGv.js → lanes-5kcTFbPx.js} +1 -1
  38. package/dist/esm/sdk/{localOnly-CUVRoMy2.js → localOnly-C5mSXb_D.js} +1 -1
  39. package/dist/{public/sdk/mountExportPrivateKeySurface-B4gH1Sel.js → esm/sdk/mountExportPrivateKeySurface-CatAhYoG.js} +1 -1
  40. package/dist/{public/sdk/mountRecoveryCodeBackupSurface-D1G-iCPI.js → esm/sdk/mountRecoveryCodeBackupSurface-DlEb3uD7.js} +1 -1
  41. package/dist/esm/sdk/nearEd25519YaoMaterialActivation-Bo3IOTS-.js +1 -0
  42. package/dist/esm/sdk/{nearEd25519YaoSigningPreparation-Eiq_ikXk.js → nearEd25519YaoSigningPreparation-RIfkYN0d.js} +1 -1
  43. package/dist/esm/sdk/{nonceLaneKeys-Do5Vs-De.js → nonceLaneKeys-BCYfl1wv.js} +1 -1
  44. package/dist/esm/sdk/{normalization-DJPmcXTg.js → normalization-n503J-BI.js} +1 -1
  45. package/dist/{public/sdk/passkey-custody-Cd_yyoRa.js → esm/sdk/passkey-custody-DpTM-eNJ.js} +1 -1
  46. package/dist/esm/sdk/{pendingWalletRecoveryCodeBackup-DMg5U0Fk.js → pendingWalletRecoveryCodeBackup-C60sZMj5.js} +1 -1
  47. package/dist/{public/sdk/presignaturePool-Bkk6bLFB.js → esm/sdk/presignaturePool-V10fZpG3.js} +1 -1
  48. package/dist/esm/sdk/recovery-entrypoint-BULjaFBM.js +1 -0
  49. package/dist/esm/sdk/{registration-Drtkzrlc.js → registration-CyF7nOXs.js} +1 -1
  50. package/dist/esm/sdk/registration-DEGZR8kA.js +1 -0
  51. package/dist/esm/sdk/{registrationAccounts-DP-32yCK.js → registrationAccounts-BQMUusdD.js} +1 -1
  52. package/dist/{public/sdk/registrationIntent-BHU5k2Q-.js → esm/sdk/registrationIntent-090Zj7Iu.js} +1 -1
  53. package/dist/esm/sdk/{registrationSignerPlan-dY9Rp0m_.js → registrationSignerPlan-CPzHavPM.js} +1 -1
  54. package/dist/esm/sdk/{requireStepUpAuth-FqZSU021.js → requireStepUpAuth-BCY5ZStI.js} +1 -1
  55. package/dist/esm/sdk/routerAbNormalSigning-C4P2tDU-.js +1 -0
  56. package/dist/esm/sdk/runtime-auth-BNR1wI8E.js +1 -0
  57. package/dist/esm/sdk/runtime-device-link-Dq8g_UNb.js +1 -0
  58. package/dist/esm/sdk/runtime-ecdsa-tempo-AGjT7Xpa.js +1 -0
  59. package/dist/esm/sdk/runtime-email-otp-BpBOuSsT.js +1 -0
  60. package/dist/esm/sdk/runtime-export-CBsacCPY.js +1 -0
  61. package/dist/esm/sdk/runtime-near-J3hKjC7G.js +1 -0
  62. package/dist/esm/sdk/runtime-preferences-CVt5sLvm.js +1 -0
  63. package/dist/esm/sdk/runtime-recovery-BzewdcoT.js +1 -0
  64. package/dist/esm/sdk/runtime-recovery-codes-GOytzExh.js +1 -0
  65. package/dist/esm/sdk/secp256k1-CKq7_HD-.js +1 -0
  66. package/dist/esm/sdk/sessionObservationRevision-CnEOLDbl.js +1 -0
  67. package/dist/esm/sdk/shared-BywEqTsd.js +6 -0
  68. package/dist/{public/sdk/signEvmFamily-ttVfV0qm.js → esm/sdk/signEvmFamily-Cpm3e6Zs.js} +1 -1
  69. package/dist/esm/sdk/{signEvmFamilyWithUiConfirmForTempo-Bo25SwuV.js → signEvmFamilyWithUiConfirmForTempo-DGWmm9n7.js} +1 -1
  70. package/dist/esm/sdk/{signEvmWithUiConfirm-CFcqJRj3.js → signEvmWithUiConfirm-BRmdLgmm.js} +1 -1
  71. package/dist/esm/sdk/signNear-XGZBxc_g.js +1 -0
  72. package/dist/esm/sdk/signer-worker-DlK58rEA.js +1 -0
  73. package/dist/esm/sdk/{signingFlow-DZvV4AgG.js → signingFlow-VAnM8L5C.js} +1 -1
  74. package/dist/{public/sdk/signingQueue-2pr7lAUS.js → esm/sdk/signingQueue-D_Ebmzcn.js} +1 -1
  75. package/dist/esm/sdk/singletons-BXhnsqeY.js +1 -0
  76. package/dist/esm/sdk/{thresholdEcdsa-D-QMyevW.js → thresholdEcdsa-CneSKcRt.js} +1 -1
  77. package/dist/esm/sdk/{trace-QLsbYdld.js → trace-BBux0jtr.js} +1 -1
  78. package/dist/{public/sdk/transaction-activity-xfeHKJoq.js → esm/sdk/transaction-activity-Cccvec2J.js} +1 -1
  79. package/dist/esm/sdk/{transactionState-CGULLokO.js → transactionState-Day-1x7Y.js} +1 -1
  80. package/dist/esm/sdk/{types-WGrFMQSw.js → types-hKLqDUhR.js} +1 -1
  81. package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -1
  82. package/dist/esm/sdk/wallet-iframe-host-full.js +1 -1
  83. package/dist/esm/sdk/wallet-iframe-host-near.js +1 -1
  84. package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -1
  85. package/dist/esm/sdk/{wallet-recovery-LMtGiEL3.js → wallet-recovery-Bfhfk52N.js} +1 -1
  86. package/dist/esm/sdk/{walletAuthMethodRecord-CnBw27ED.js → walletAuthMethodRecord-LniOQQmj.js} +1 -1
  87. package/dist/esm/sdk/{walletAuthority-BWvfaKIX.js → walletAuthority-CAiGuWW2.js} +1 -1
  88. package/dist/esm/sdk/walletCustodyEcdsaContinuity-B4fTDL10.js +1 -0
  89. package/dist/esm/sdk/{sessionPolicy-CBTZQe1n.js → walletDbName-DtRewci9.js} +1 -1
  90. package/dist/{public/sdk/walletOwnershipGeneration-CAycHv-H.js → esm/sdk/walletOwnershipGeneration-B6HyR2rE.js} +1 -1
  91. package/dist/esm/sdk/walletRecoveryCommit-C6HF84_U.js +1 -0
  92. package/dist/{public/sdk/walletSessionAuthorizationStore-BiKGIBWQ.js → esm/sdk/walletSessionAuthorizationStore-DmYe-cDR.js} +1 -1
  93. package/dist/esm/sdk/warmSessionHydration-CsQpQVuy.js +1 -0
  94. package/dist/public/headers.manifest.json +1 -1
  95. package/dist/public/sdk/{ConfirmationDrawer-Frj3uEee.js → ConfirmationDrawer-BFzQjd1P.js} +1 -1
  96. package/dist/public/sdk/{NonceCoordinator-S5ZbrkDp.js → NonceCoordinator-CDGnEgfI.js} +1 -1
  97. package/dist/{esm/sdk/accountLifecycle-HEUmDLus.js → public/sdk/accountLifecycle-CBOkr0vU.js} +1 -1
  98. package/dist/public/sdk/{adapters-CGvNLOfZ.js → adapters-DsAaBNNY.js} +2 -2
  99. package/dist/public/sdk/{challengeDelivery-5lIu9spR.js → challengeDelivery-CATQ4u6P.js} +1 -1
  100. package/dist/{esm/sdk/clientSessionPersistenceState-DRdve9rC.js → public/sdk/clientSessionPersistenceState-CBylL1Ul.js} +1 -1
  101. package/dist/public/sdk/{commitQueue-qjvY_zWn.js → commitQueue-DYEgzoLA.js} +1 -1
  102. package/dist/public/sdk/{display-DTbGoX4e.js → display-DsfJkAra.js} +1 -1
  103. package/dist/{esm/sdk/ecdsaCapabilityManifest-ChszYCC0.js → public/sdk/ecdsaCapabilityManifest-DX6TflEz.js} +1 -1
  104. package/dist/{esm/sdk/ecdsaDerivationClientWasm-CpH-b3jx.js → public/sdk/ecdsaDerivationClientWasm-CpjnN4aK.js} +1 -1
  105. package/dist/public/sdk/ecdsaDerivationExport-DOGzq0qC.js +1 -0
  106. package/dist/public/sdk/{ecdsaWalletRecords-Di_NUxD_.js → ecdsaWalletRecords-CHfrYvKr.js} +1 -1
  107. package/dist/public/sdk/{emailOtpEcdsaDerivationIdentity-p0C1CQva.js → emailOtpEcdsaDerivationIdentity-Bik0N8v9.js} +1 -1
  108. package/dist/public/sdk/{enrichDisplayModelWithAbi-DZIhvE-x.js → enrichDisplayModelWithAbi-DSj4NAlY.js} +1 -1
  109. package/dist/public/sdk/{export-viewer-host-DUMwD6zP.js → export-viewer-host-CV-lSsQF.js} +1 -1
  110. package/dist/public/sdk/exportKeypairOperation-DzbjKbnk.js +1 -0
  111. package/dist/public/sdk/host-DYuu07E5.js +1 -0
  112. package/dist/public/sdk/{lanes-Ck81oEGv.js → lanes-5kcTFbPx.js} +1 -1
  113. package/dist/public/sdk/{localOnly-CUVRoMy2.js → localOnly-C5mSXb_D.js} +1 -1
  114. package/dist/{esm/sdk/mountExportPrivateKeySurface-B4gH1Sel.js → public/sdk/mountExportPrivateKeySurface-CatAhYoG.js} +1 -1
  115. package/dist/{esm/sdk/mountRecoveryCodeBackupSurface-D1G-iCPI.js → public/sdk/mountRecoveryCodeBackupSurface-DlEb3uD7.js} +1 -1
  116. package/dist/public/sdk/nearEd25519YaoMaterialActivation-Bo3IOTS-.js +1 -0
  117. package/dist/public/sdk/{nearEd25519YaoSigningPreparation-Eiq_ikXk.js → nearEd25519YaoSigningPreparation-RIfkYN0d.js} +1 -1
  118. package/dist/public/sdk/{nonceLaneKeys-Do5Vs-De.js → nonceLaneKeys-BCYfl1wv.js} +1 -1
  119. package/dist/public/sdk/{normalization-DJPmcXTg.js → normalization-n503J-BI.js} +1 -1
  120. package/dist/{esm/sdk/passkey-custody-Cd_yyoRa.js → public/sdk/passkey-custody-DpTM-eNJ.js} +1 -1
  121. package/dist/public/sdk/{pendingWalletRecoveryCodeBackup-DMg5U0Fk.js → pendingWalletRecoveryCodeBackup-C60sZMj5.js} +1 -1
  122. package/dist/{esm/sdk/presignaturePool-Bkk6bLFB.js → public/sdk/presignaturePool-V10fZpG3.js} +1 -1
  123. package/dist/public/sdk/recovery-entrypoint-BULjaFBM.js +1 -0
  124. package/dist/public/sdk/{registration-Drtkzrlc.js → registration-CyF7nOXs.js} +1 -1
  125. package/dist/public/sdk/registration-DEGZR8kA.js +1 -0
  126. package/dist/public/sdk/{registrationAccounts-DP-32yCK.js → registrationAccounts-BQMUusdD.js} +1 -1
  127. package/dist/{esm/sdk/registrationIntent-BHU5k2Q-.js → public/sdk/registrationIntent-090Zj7Iu.js} +1 -1
  128. package/dist/public/sdk/{registrationSignerPlan-dY9Rp0m_.js → registrationSignerPlan-CPzHavPM.js} +1 -1
  129. package/dist/public/sdk/{requireStepUpAuth-FqZSU021.js → requireStepUpAuth-BCY5ZStI.js} +1 -1
  130. package/dist/public/sdk/routerAbNormalSigning-C4P2tDU-.js +1 -0
  131. package/dist/public/sdk/runtime-auth-BNR1wI8E.js +1 -0
  132. package/dist/public/sdk/runtime-device-link-Dq8g_UNb.js +1 -0
  133. package/dist/public/sdk/runtime-ecdsa-tempo-AGjT7Xpa.js +1 -0
  134. package/dist/public/sdk/runtime-email-otp-BpBOuSsT.js +1 -0
  135. package/dist/public/sdk/runtime-export-CBsacCPY.js +1 -0
  136. package/dist/public/sdk/runtime-near-J3hKjC7G.js +1 -0
  137. package/dist/public/sdk/runtime-preferences-CVt5sLvm.js +1 -0
  138. package/dist/public/sdk/runtime-recovery-BzewdcoT.js +1 -0
  139. package/dist/public/sdk/runtime-recovery-codes-GOytzExh.js +1 -0
  140. package/dist/public/sdk/secp256k1-CKq7_HD-.js +1 -0
  141. package/dist/public/sdk/sessionObservationRevision-CnEOLDbl.js +1 -0
  142. package/dist/public/sdk/shared-BywEqTsd.js +6 -0
  143. package/dist/{esm/sdk/signEvmFamily-ttVfV0qm.js → public/sdk/signEvmFamily-Cpm3e6Zs.js} +1 -1
  144. package/dist/public/sdk/{signEvmFamilyWithUiConfirmForTempo-Bo25SwuV.js → signEvmFamilyWithUiConfirmForTempo-DGWmm9n7.js} +1 -1
  145. package/dist/public/sdk/{signEvmWithUiConfirm-CFcqJRj3.js → signEvmWithUiConfirm-BRmdLgmm.js} +1 -1
  146. package/dist/public/sdk/signNear-XGZBxc_g.js +1 -0
  147. package/dist/public/sdk/signer-worker-DlK58rEA.js +1 -0
  148. package/dist/public/sdk/{signingFlow-DZvV4AgG.js → signingFlow-VAnM8L5C.js} +1 -1
  149. package/dist/{esm/sdk/signingQueue-2pr7lAUS.js → public/sdk/signingQueue-D_Ebmzcn.js} +1 -1
  150. package/dist/public/sdk/singletons-BXhnsqeY.js +1 -0
  151. package/dist/public/sdk/{thresholdEcdsa-D-QMyevW.js → thresholdEcdsa-CneSKcRt.js} +1 -1
  152. package/dist/public/sdk/{trace-QLsbYdld.js → trace-BBux0jtr.js} +1 -1
  153. package/dist/{esm/sdk/transaction-activity-xfeHKJoq.js → public/sdk/transaction-activity-Cccvec2J.js} +1 -1
  154. package/dist/public/sdk/{transactionState-CGULLokO.js → transactionState-Day-1x7Y.js} +1 -1
  155. package/dist/public/sdk/{types-WGrFMQSw.js → types-hKLqDUhR.js} +1 -1
  156. package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -1
  157. package/dist/public/sdk/wallet-iframe-host-full.js +1 -1
  158. package/dist/public/sdk/wallet-iframe-host-near.js +1 -1
  159. package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -1
  160. package/dist/public/sdk/{wallet-recovery-LMtGiEL3.js → wallet-recovery-Bfhfk52N.js} +1 -1
  161. package/dist/public/sdk/{walletAuthMethodRecord-CnBw27ED.js → walletAuthMethodRecord-LniOQQmj.js} +1 -1
  162. package/dist/public/sdk/{walletAuthority-BWvfaKIX.js → walletAuthority-CAiGuWW2.js} +1 -1
  163. package/dist/public/sdk/walletCustodyEcdsaContinuity-B4fTDL10.js +1 -0
  164. package/dist/public/sdk/{sessionPolicy-CBTZQe1n.js → walletDbName-DtRewci9.js} +1 -1
  165. package/dist/{esm/sdk/walletOwnershipGeneration-CAycHv-H.js → public/sdk/walletOwnershipGeneration-B6HyR2rE.js} +1 -1
  166. package/dist/public/sdk/walletRecoveryCommit-C6HF84_U.js +1 -0
  167. package/dist/{esm/sdk/walletSessionAuthorizationStore-BiKGIBWQ.js → public/sdk/walletSessionAuthorizationStore-DmYe-cDR.js} +1 -1
  168. package/dist/public/sdk/warmSessionHydration-CsQpQVuy.js +1 -0
  169. package/dist/public/sdk/workers/ecdsa-derivation-client.worker.js +3 -1
  170. package/dist/public/wallet-assets.manifest.json +233 -209
  171. package/dist/public/wallet-service/index.html +4 -4
  172. package/dist/types/shared-ts/src/device-linking/contracts.d.ts +0 -9
  173. package/dist/types/shared-ts/src/utils/routerAbEcdsaDerivation.d.ts +0 -1
  174. package/dist/types/wallet/src/SeamsWeb/operations/auth/login.d.ts +1 -2
  175. package/dist/types/wallet/src/SeamsWeb/publicApi/types.d.ts +9 -11
  176. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/router.d.ts +3 -0
  177. package/dist/types/wallet/src/SeamsWeb/walletIframe/coordinator.d.ts +1 -0
  178. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/emptyWalletStoreReads.d.ts +19 -0
  179. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/requestRouter.d.ts +1 -1
  180. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/runtimeLoader.d.ts +5 -0
  181. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/sessionObservationRevision.d.ts +7 -0
  182. package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/messages.d.ts +3 -3
  183. package/dist/types/wallet/src/core/indexedDB/index.d.ts +2 -1
  184. package/dist/types/wallet/src/core/indexedDB/schemaNames.d.ts +0 -1
  185. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/manager.d.ts +2 -1
  186. package/dist/types/wallet/src/core/indexedDB/walletDbName.d.ts +2 -0
  187. package/dist/types/wallet/src/core/signingEngine/flows/recovery/keyExportFlow.d.ts +0 -3
  188. package/dist/types/wallet/src/core/signingEngine/routerAb/ecdsaDerivation/presignaturePool.d.ts +0 -19
  189. package/dist/types/wallet/src/core/signingEngine/session/identity/ownerLaneScope.d.ts +0 -27
  190. package/dist/types/wallet/src/plugins/plugin-utils.d.ts +0 -30
  191. package/dist/types/wallet/src/react/components/AccountMenuButton/AccountMenuDialog.d.ts +1 -9
  192. package/dist/types/wallet/src/react/components/AccountMenuButton/AuthenticationMethodsModal.d.ts +1 -1
  193. package/dist/types/wallet/src/react/components/AccountMenuButton/LinkedDevicesModal.d.ts +1 -1
  194. package/dist/workers/ecdsa-derivation-client.worker.js +3 -1
  195. package/package.json +1 -1
  196. package/dist/esm/plugins/headers.js +0 -55
  197. package/dist/esm/plugins/next.js +0 -196
  198. package/dist/esm/plugins/shared-ts/src/utils/normalize.js +0 -31
  199. package/dist/esm/plugins/vite.js +0 -293
  200. package/dist/esm/react/components/AccountMenuButton/icons/LayersIcon.js +0 -8
  201. package/dist/esm/sdk/ecdsaDerivationExport-C1cE5m0t.js +0 -1
  202. package/dist/esm/sdk/exportKeypairOperation-BHXMSA3v.js +0 -1
  203. package/dist/esm/sdk/host-BAeJh9rB.js +0 -1
  204. package/dist/esm/sdk/messages-DgJlG9NU.js +0 -1
  205. package/dist/esm/sdk/nearEd25519YaoMaterialActivation-DMGPKrn8.js +0 -1
  206. package/dist/esm/sdk/recovery-entrypoint-EHY_b7Z-.js +0 -1
  207. package/dist/esm/sdk/registration-CQxxUt5s.js +0 -1
  208. package/dist/esm/sdk/routerAbNormalSigning-B35zb-P-.js +0 -1
  209. package/dist/esm/sdk/runtime-auth-D7VqiZeg.js +0 -1
  210. package/dist/esm/sdk/runtime-device-link-BKc_MD5V.js +0 -1
  211. package/dist/esm/sdk/runtime-ecdsa-tempo-DC51NDrh.js +0 -1
  212. package/dist/esm/sdk/runtime-email-otp-C-wopKFf.js +0 -1
  213. package/dist/esm/sdk/runtime-export-BtGy8BKi.js +0 -1
  214. package/dist/esm/sdk/runtime-near-nq8pgRAl.js +0 -1
  215. package/dist/esm/sdk/runtime-preferences-778ZfMmT.js +0 -1
  216. package/dist/esm/sdk/runtime-recovery-B-JsRiN0.js +0 -1
  217. package/dist/esm/sdk/runtime-recovery-codes-rLR4Guy4.js +0 -1
  218. package/dist/esm/sdk/secp256k1-CYQS0rj-.js +0 -1
  219. package/dist/esm/sdk/shared-B6BCLs8L.js +0 -6
  220. package/dist/esm/sdk/signNear-bcWIHxEY.js +0 -1
  221. package/dist/esm/sdk/singletons-8UH3gOnZ.js +0 -1
  222. package/dist/esm/sdk/walletCustodyEcdsaContinuity-D-gYxv6e.js +0 -1
  223. package/dist/esm/sdk/walletRecoveryCommit-BYRC_2li.js +0 -1
  224. package/dist/esm/sdk/warmSessionHydration-B7-kCnJh.js +0 -1
  225. package/dist/public/sdk/ecdsaDerivationExport-C1cE5m0t.js +0 -1
  226. package/dist/public/sdk/exportKeypairOperation-BHXMSA3v.js +0 -1
  227. package/dist/public/sdk/host-BAeJh9rB.js +0 -1
  228. package/dist/public/sdk/messages-DgJlG9NU.js +0 -1
  229. package/dist/public/sdk/nearEd25519YaoMaterialActivation-DMGPKrn8.js +0 -1
  230. package/dist/public/sdk/recovery-entrypoint-EHY_b7Z-.js +0 -1
  231. package/dist/public/sdk/registration-CQxxUt5s.js +0 -1
  232. package/dist/public/sdk/routerAbNormalSigning-B35zb-P-.js +0 -1
  233. package/dist/public/sdk/runtime-auth-D7VqiZeg.js +0 -1
  234. package/dist/public/sdk/runtime-device-link-BKc_MD5V.js +0 -1
  235. package/dist/public/sdk/runtime-ecdsa-tempo-DC51NDrh.js +0 -1
  236. package/dist/public/sdk/runtime-email-otp-C-wopKFf.js +0 -1
  237. package/dist/public/sdk/runtime-export-BtGy8BKi.js +0 -1
  238. package/dist/public/sdk/runtime-near-nq8pgRAl.js +0 -1
  239. package/dist/public/sdk/runtime-preferences-778ZfMmT.js +0 -1
  240. package/dist/public/sdk/runtime-recovery-B-JsRiN0.js +0 -1
  241. package/dist/public/sdk/runtime-recovery-codes-rLR4Guy4.js +0 -1
  242. package/dist/public/sdk/secp256k1-CYQS0rj-.js +0 -1
  243. package/dist/public/sdk/shared-B6BCLs8L.js +0 -6
  244. package/dist/public/sdk/signNear-bcWIHxEY.js +0 -1
  245. package/dist/public/sdk/singletons-8UH3gOnZ.js +0 -1
  246. package/dist/public/sdk/walletCustodyEcdsaContinuity-D-gYxv6e.js +0 -1
  247. package/dist/public/sdk/walletRecoveryCommit-BYRC_2li.js +0 -1
  248. package/dist/public/sdk/warmSessionHydration-B7-kCnJh.js +0 -1
  249. package/dist/types/wallet/src/plugins/headers.d.ts +0 -25
  250. package/dist/types/wallet/src/plugins/next.d.ts +0 -66
  251. package/dist/types/wallet/src/plugins/vite.d.ts +0 -74
  252. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LayersIcon.d.ts +0 -2
  253. /package/dist/esm/plugins/{wallet/src/core → core}/browser/walletIframe/hostVariant.js +0 -0
  254. /package/dist/esm/sdk/{accountIds-BzZs7YoX.js → accountIds-Cpvlkvbe.js} +0 -0
  255. /package/dist/esm/sdk/{appearance-DITtYj-z.js → appearance-4DmzKUWf.js} +0 -0
  256. /package/dist/esm/sdk/{authenticatorOptions-C9aCKgeF.js → authenticatorOptions-2_XK8aXv.js} +0 -0
  257. /package/dist/esm/sdk/{browser-DkCRXFkk.js → browser-n3IVr7qu.js} +0 -0
  258. /package/dist/esm/sdk/{digestEncoding-CkUc5vtR.js → digestEncoding-BX3VW9eF.js} +0 -0
  259. /package/dist/esm/sdk/{ecdsaChainTarget-DJBXHzbH.js → ecdsaChainTarget-Bfatk3oP.js} +0 -0
  260. /package/dist/esm/sdk/{helpers-BnkILY2_.js → helpers-B9fpZNAP.js} +0 -0
  261. /package/dist/esm/sdk/{intentDigest-DJBrMyLJ.js → intentDigest-P_-CM7lS.js} +0 -0
  262. /package/dist/esm/sdk/{jsonRpc-YKL5n8VL.js → jsonRpc-BVDv1wfm.js} +0 -0
  263. /package/dist/esm/sdk/{jsxRuntime.module-C8JOKu_4.js → jsxRuntime.module-DKsgiFjd.js} +0 -0
  264. /package/dist/esm/sdk/{keccak-BArcwgbj.js → keccak-mS0Mejjx.js} +0 -0
  265. /package/dist/esm/sdk/{normalization-CeZT7ob0.js → normalization-C6fQN6mW.js} +0 -0
  266. /package/dist/esm/sdk/{operationFingerprint-CUrnoh-M.js → operationFingerprint-BHNYryLY.js} +0 -0
  267. /package/dist/esm/sdk/{presignatures-DZm0d6Wy.js → presignatures-K-yuzOE0.js} +0 -0
  268. /package/dist/esm/sdk/{prfCache-DCkuB8Lu.js → prfCache-DJ93rtDv.js} +0 -0
  269. /package/dist/esm/sdk/{profileAccountProjection-B3LXAUmo.js → profileAccountProjection-BNVJLOt2.js} +0 -0
  270. /package/dist/esm/sdk/{promptText-B8RprJhO.js → promptText-CnyrLxgj.js} +0 -0
  271. /package/dist/esm/sdk/{registrationAuthMethodInput-BBCeWDmw.js → registrationAuthMethodInput-RbSR7R1G.js} +0 -0
  272. /package/dist/esm/sdk/{registrationIds-ByuReLUc.js → registrationIds-BaK3jUS6.js} +0 -0
  273. /package/dist/esm/sdk/{sdkSentEvents-Dl8fOL50.js → sdkSentEvents-D4KtK7_I.js} +0 -0
  274. /package/dist/esm/sdk/{signatureUses-8c8Ku_Fw.js → signatureUses-BKAoDbQd.js} +0 -0
  275. /package/dist/esm/sdk/{signerDomain-DqLCvI-D.js → signerDomain-Dp7BhfmZ.js} +0 -0
  276. /package/dist/esm/sdk/{signerSlot-B4Eq8Oe2.js → signerSlot-FJAGOhmg.js} +0 -0
  277. /package/dist/esm/sdk/{types-DhtByIcQ.js → types-Buoe6179.js} +0 -0
  278. /package/dist/esm/sdk/{walletRecoveryRotate-D_1a8Agl.js → walletRecoveryRotate-BN3H8byw.js} +0 -0
  279. /package/dist/esm/sdk/{walletSessionAuthorizationStatus-BLyzJbU8.js → walletSessionAuthorizationStatus-BL7j2TeM.js} +0 -0
  280. /package/dist/esm/sdk/{webauthnP256-DZCusNY9.js → webauthnP256-BwgxtG5N.js} +0 -0
  281. /package/dist/esm/sdk/{webauthnPromptCoordinator-CS4Xc_jZ.js → webauthnPromptCoordinator-CwJeKiYq.js} +0 -0
  282. /package/dist/public/sdk/{accountIds-BzZs7YoX.js → accountIds-Cpvlkvbe.js} +0 -0
  283. /package/dist/public/sdk/{appearance-DITtYj-z.js → appearance-4DmzKUWf.js} +0 -0
  284. /package/dist/public/sdk/{authenticatorOptions-C9aCKgeF.js → authenticatorOptions-2_XK8aXv.js} +0 -0
  285. /package/dist/public/sdk/{browser-DkCRXFkk.js → browser-n3IVr7qu.js} +0 -0
  286. /package/dist/public/sdk/{digestEncoding-CkUc5vtR.js → digestEncoding-BX3VW9eF.js} +0 -0
  287. /package/dist/public/sdk/{ecdsaChainTarget-DJBXHzbH.js → ecdsaChainTarget-Bfatk3oP.js} +0 -0
  288. /package/dist/public/sdk/{helpers-BnkILY2_.js → helpers-B9fpZNAP.js} +0 -0
  289. /package/dist/public/sdk/{intentDigest-DJBrMyLJ.js → intentDigest-P_-CM7lS.js} +0 -0
  290. /package/dist/public/sdk/{jsonRpc-YKL5n8VL.js → jsonRpc-BVDv1wfm.js} +0 -0
  291. /package/dist/public/sdk/{jsxRuntime.module-C8JOKu_4.js → jsxRuntime.module-DKsgiFjd.js} +0 -0
  292. /package/dist/public/sdk/{keccak-BArcwgbj.js → keccak-mS0Mejjx.js} +0 -0
  293. /package/dist/public/sdk/{normalization-CeZT7ob0.js → normalization-C6fQN6mW.js} +0 -0
  294. /package/dist/public/sdk/{operationFingerprint-CUrnoh-M.js → operationFingerprint-BHNYryLY.js} +0 -0
  295. /package/dist/public/sdk/{presignatures-DZm0d6Wy.js → presignatures-K-yuzOE0.js} +0 -0
  296. /package/dist/public/sdk/{prfCache-DCkuB8Lu.js → prfCache-DJ93rtDv.js} +0 -0
  297. /package/dist/public/sdk/{profileAccountProjection-B3LXAUmo.js → profileAccountProjection-BNVJLOt2.js} +0 -0
  298. /package/dist/public/sdk/{promptText-B8RprJhO.js → promptText-CnyrLxgj.js} +0 -0
  299. /package/dist/public/sdk/{registrationAuthMethodInput-BBCeWDmw.js → registrationAuthMethodInput-RbSR7R1G.js} +0 -0
  300. /package/dist/public/sdk/{registrationIds-ByuReLUc.js → registrationIds-BaK3jUS6.js} +0 -0
  301. /package/dist/public/sdk/{sdkSentEvents-Dl8fOL50.js → sdkSentEvents-D4KtK7_I.js} +0 -0
  302. /package/dist/public/sdk/{signatureUses-8c8Ku_Fw.js → signatureUses-BKAoDbQd.js} +0 -0
  303. /package/dist/public/sdk/{signerDomain-DqLCvI-D.js → signerDomain-Dp7BhfmZ.js} +0 -0
  304. /package/dist/public/sdk/{signerSlot-B4Eq8Oe2.js → signerSlot-FJAGOhmg.js} +0 -0
  305. /package/dist/public/sdk/{types-DhtByIcQ.js → types-Buoe6179.js} +0 -0
  306. /package/dist/public/sdk/{walletRecoveryRotate-D_1a8Agl.js → walletRecoveryRotate-BN3H8byw.js} +0 -0
  307. /package/dist/public/sdk/{walletSessionAuthorizationStatus-BLyzJbU8.js → walletSessionAuthorizationStatus-BL7j2TeM.js} +0 -0
  308. /package/dist/public/sdk/{webauthnP256-DZCusNY9.js → webauthnP256-BwgxtG5N.js} +0 -0
  309. /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.13.1** provides browser wallet lifecycle, NEAR and EVM-family
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.13.1
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.13.1` on the matching release.
15
+ `@seams/wallet-server@0.14.0` on the matching release.
16
16
 
17
17
  ## Next release migration (unreleased)
18
18
 
@@ -1 +1 @@
1
- d55abaddea2337462727d3d8dcc55bdc61ab16087d349e2ad48feffaac2c4f43
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 = "15.0.0";
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 { SEAMS_WALLET_DB_NAME, SEAMS_WALLET_DB_VERSION, SEAMS_WALLET_INDEXES, SEAMS_WALLET_SCHEMA_MANIFEST, SEAMS_WALLET_STORES, assertCanonicalIndexedDBName, createSeamsTestWalletDbName } from "./schemaNames.js";
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 { SEAMS_WALLET_DB_NAME, SEAMS_WALLET_DB_VERSION, SEAMS_WALLET_INDEXES, SEAMS_WALLET_SCHEMA_MANIFEST, SEAMS_WALLET_STORES, assertCanonicalIndexedDBName, createSeamsTestWalletDbName };
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 { SEAMS_WALLET_DB_NAME, SEAMS_WALLET_SCHEMA_MANIFEST } from "../schemaNames.js";
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,
@@ -0,0 +1,6 @@
1
+ //#region src/core/indexedDB/walletDbName.ts
2
+ const SEAMS_WALLET_DB_NAME = "seams_wallet";
3
+ //#endregion
4
+ export { SEAMS_WALLET_DB_NAME };
5
+
6
+ //# sourceMappingURL=walletDbName.js.map
@@ -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, supply) {
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 && supply.kind === "on_demand") {
795
+ if (!presignature) {
796
796
  const foregroundRefillStartedAt = performance.now();
797
797
  startForegroundRefill(poolKey);
798
798
  try {
799
799
  let refill = await refillRouterAbEcdsaDerivationClientPresignaturePool({
800
- ...supply.refill,
800
+ ...refillInput,
801
801
  trafficClass: "foreground"
802
802
  });
803
803
  if (!refill.ok && refill.code === "invalidated") refill = await refillRouterAbEcdsaDerivationClientPresignaturePool({
804
- ...supply.refill,
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, supply);
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 supply = {
1070
- kind: "on_demand",
1071
- refill: {
1072
- relayerUrl: args.relayerUrl,
1073
- keyHandle: args.keyHandle,
1074
- ecdsaThresholdKeyId: signingIdentity.ecdsaThresholdKeyId,
1075
- clientVerifyingShareB64u: signingIdentity.clientVerifyingShareB64u,
1076
- clientSigningMaterial: args.clientSigningMaterial,
1077
- thresholdEcdsaPublicKeyB64u: signingIdentity.thresholdEcdsaPublicKeyB64u,
1078
- credential: args.credential,
1079
- materialActivation: args.materialActivation,
1080
- routerAbEcdsaDerivationPoolFill: {
1081
- kind: "router_ab_ecdsa_derivation_signing_worker_pool",
1082
- scope: args.scope,
1083
- ceremonyExpiresAtMs: Math.min(expiresAtMs, Date.now() + ROUTER_AB_ECDSA_PRESIGN_CEREMONY_MAX_LIFETIME_MS - PRESIGN_CEREMONY_CLOCK_SKEW_MARGIN_MS),
1084
- materialExpiresAtMs: args.authorization.kind === "operation_step_up" ? expiresAtMs : Date.now() + MAX_DURABLE_CLIENT_PRESIGNATURE_LIFETIME_MS
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, supply);
1091
- if (!result.ok && (result.code === "pool_entry_expired" || result.code === "pool_entry_unavailable")) return await signRouterAbEcdsaDerivationDigestWithPoolHitAttempt(args, 0, supply);
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 "./shared-ts/src/utils/normalize.js";
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 { addPreconnectLink, applyCoepCorpIfNeeded, buildWalletServiceHtml, echoCorsFromRequest, logRorConfig, parseConfiguredRorOrigins, resolveCoepMode, resolveRorOrigins, resolveSdkDistRoot, setContentType };
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 { LockKeyholeIcon } from "./icons/LockKeyholeIcon.js";
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
- function useAccountMenuDialogKeyboard(input) {
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
- onMouseDown: (event) => {
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: presentation === "modal" ? "dialog" : "region",
78
- "aria-modal": presentation === "modal" ? true : void 0,
25
+ role: "region",
79
26
  "aria-labelledby": titleId,
80
27
  tabIndex: -1,
81
- children: [
82
- presentation === "modal" ? /* @__PURE__ */ jsxs("header", {
83
- className: "seams-account-menu-dialog-header",
84
- children: [
85
- /* @__PURE__ */ jsx(LockKeyholeIcon, { size: 13 }),
86
- /* @__PURE__ */ jsx("span", {
87
- className: "seams-account-menu-dialog-host",
88
- children: window.location.host
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, useAccountMenuDialogKeyboard };
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, useAccountMenuDialogKeyboard } from "./AccountMenuDialog.js";
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 = "modal" }) => {
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
- if (presentation !== "modal") {
284
- setActionState({ kind: "idle" });
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),