@seams/wallet-server 0.7.1 → 0.8.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 (643) hide show
  1. package/THIRD_PARTY_NOTICES.md +1 -113
  2. package/artifact-manifest.json +78 -33
  3. package/cloudflare-router-ab/build/deriver-a/build-stamp.json +1 -1
  4. package/cloudflare-router-ab/build/deriver-a/index.js +2 -2
  5. package/cloudflare-router-ab/build/deriver-a/index_bg.wasm +0 -0
  6. package/cloudflare-router-ab/build/deriver-b/build-stamp.json +1 -1
  7. package/cloudflare-router-ab/build/deriver-b/index.js +2 -2
  8. package/cloudflare-router-ab/build/deriver-b/index_bg.wasm +0 -0
  9. package/cloudflare-router-ab/build/local-tools/darwin-arm64/router_ab_local_init +0 -0
  10. package/cloudflare-router-ab/build/local-tools/darwin-x64/router_ab_local_init +0 -0
  11. package/cloudflare-router-ab/build/local-tools/linux-x64/router_ab_local_init +0 -0
  12. package/cloudflare-router-ab/build/router/build-stamp.json +1 -1
  13. package/cloudflare-router-ab/build/router/index.js +2 -2
  14. package/cloudflare-router-ab/build/router/index_bg.wasm +0 -0
  15. package/cloudflare-router-ab/build/signing-worker/build-stamp.json +1 -1
  16. package/cloudflare-router-ab/build/signing-worker/index.js +2 -2
  17. package/cloudflare-router-ab/build/signing-worker/index_bg.wasm +0 -0
  18. package/cloudflare-router-ab/build/tenant-root-control-plane/build-stamp.json +1 -1
  19. package/cloudflare-router-ab/build/tenant-root-control-plane/index.js +2 -2
  20. package/cloudflare-router-ab/build/tenant-root-control-plane/index_bg.wasm +0 -0
  21. package/cloudflare-router-ab/scripts/prepare-local-runtime-config.mjs +0 -2
  22. package/cloudflare-router-ab/scripts/start-local-role-workers.mjs +77 -20
  23. package/dist/esm/authorization/lifecycleRouting.js +62 -0
  24. package/dist/esm/authorization/service.js +43 -12
  25. package/dist/esm/authorization/vaultProxyUse.js +2 -6
  26. package/dist/esm/cloud-host.js +23 -25
  27. package/dist/esm/core/EmailOtpRecords.js +1 -217
  28. package/dist/esm/core/EmailOtpStores.js +0 -859
  29. package/dist/esm/core/IdentityStore.js +2 -426
  30. package/dist/esm/core/SessionService.js +7 -30
  31. package/dist/esm/core/ThresholdService/config.js +1 -9
  32. package/dist/esm/core/ThresholdService/index.js +0 -4
  33. package/dist/esm/core/ThresholdService/kv.js +1 -66
  34. package/dist/esm/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.js +1 -13
  35. package/dist/esm/core/ThresholdService/routerAbNormalSigningPolicy.js +4 -21
  36. package/dist/esm/core/ThresholdService/stores/WalletSessionStore.js +0 -617
  37. package/dist/esm/core/ThresholdService/validation.js +2 -346
  38. package/dist/esm/core/WalletAuthMethodStore.js +2 -123
  39. package/dist/esm/core/WalletStore.js +6 -214
  40. package/dist/esm/core/WebAuthnAuthenticatorStore.js +0 -202
  41. package/dist/esm/core/WebAuthnCredentialBindingStore.js +2 -182
  42. package/dist/esm/core/WebAuthnLoginChallengeStore.js +0 -52
  43. package/dist/esm/core/WebAuthnSyncChallengeStore.js +0 -54
  44. package/dist/esm/core/authService/emailOtpConfig.js +1 -195
  45. package/dist/esm/core/authService/emailOtpEnrollment.js +0 -141
  46. package/dist/esm/core/authService/emailOtpSeal.js +0 -78
  47. package/dist/esm/core/authService/nearTransactions.js +3 -98
  48. package/dist/esm/core/authService/rateLimits.js +0 -87
  49. package/dist/esm/core/authService/thresholdEcdsaKeyInventory.js +2 -1
  50. package/dist/esm/core/authService/webauthn.js +14 -464
  51. package/dist/esm/core/authService/webauthnOidcHelpers.js +1 -24
  52. package/dist/esm/core/authService/webauthnVerificationOutcomes.js +5 -24
  53. package/dist/esm/core/authService/webauthnWalletBinding.js +0 -37
  54. package/dist/esm/core/config.js +1 -95
  55. package/dist/esm/core/d1EcdsaSignerRead.js +76 -0
  56. package/dist/esm/core/d1IdentityStore.js +17 -77
  57. package/dist/esm/core/d1TenantStore.js +1 -24
  58. package/dist/esm/core/d1WalletAuthMethodStore.js +2 -5
  59. package/dist/esm/core/d1WalletStore.js +15 -25
  60. package/dist/esm/core/deviceLinking/linkedDeviceBootstrap.js +13 -0
  61. package/dist/esm/core/deviceLinking/linkedDeviceEmailOtpGrant.js +1 -5
  62. package/dist/esm/core/deviceLinking/linkedDeviceSession.js +20 -14
  63. package/dist/esm/core/deviceLinking/linkedDeviceSessionApproval.js +1 -3
  64. package/dist/esm/core/deviceLinking/linkedDeviceSessionRecord.js +2 -8
  65. package/dist/esm/core/deviceLinking/requestProof.js +22 -10
  66. package/dist/esm/core/ecdsaMaterialReadSnapshot.js +85 -0
  67. package/dist/esm/core/emailOtpD1Statements.js +107 -94
  68. package/dist/esm/core/keyMaterialBrands.js +2 -12
  69. package/dist/esm/core/nearKeys.js +0 -1
  70. package/dist/esm/core/nearRelayerAccountProvisioning.js +8 -14
  71. package/dist/esm/core/passkeyCredentialClaims.js +8 -0
  72. package/dist/esm/core/routerAbSigning/RouterAbEcdsaPresignRuntime.js +2 -6
  73. package/dist/esm/core/routerAbSigning/RouterAbNormalSigningRuntime.js +2 -30
  74. package/dist/esm/core/signingLanes/WalletExecutionLaneProjection.js +3 -6
  75. package/dist/esm/core/signingMaterial/ordinaryInactiveSignerMaterialReservation.js +2 -5
  76. package/dist/esm/core/thresholdEcdsaChainTarget.js +2 -7
  77. package/dist/esm/hosted-wallet-gateway.js +68 -45
  78. package/dist/esm/index.js +6 -19
  79. package/dist/esm/localHostedWalletGatewayHandler.js +25 -0
  80. package/dist/esm/localIntendedMaterialAdmissionFault.js +176 -0
  81. package/dist/esm/localIntendedPresignCancellation.js +44 -0
  82. package/dist/esm/localRegistrationSetupAuthority.js +89 -0
  83. package/dist/esm/router/auth/authRequestValidation.js +8 -16
  84. package/dist/esm/router/auth/commonRouterUtils.js +24 -10
  85. package/dist/esm/router/auth/walletSessionFailure.js +2 -5
  86. package/dist/esm/router/auth/webAuthnCredentialCodecs.js +4 -16
  87. package/dist/esm/router/cloudflare/d1/auth/d1AuthorizationAssembly.js +87 -0
  88. package/dist/esm/router/cloudflare/d1/auth/d1AuthorizedOperationRouteService.js +1 -0
  89. package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthBoundary.js +2 -6
  90. package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthConfig.js +12 -2
  91. package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthService.js +37 -308
  92. package/dist/esm/router/cloudflare/d1/auth/walletSessionCredentialReaders.js +76 -0
  93. package/dist/esm/router/cloudflare/d1/authorization/authorizedOperationStatements.js +52 -43
  94. package/dist/esm/router/cloudflare/d1/authorization/d1AuthorizationStore.js +217 -50
  95. package/dist/esm/router/cloudflare/d1/authorization/d1VaultProxyStore.js +8 -12
  96. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.js +62 -21
  97. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEd25519ExportRootStore.js +6 -1
  98. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpGrantStore.js +12 -2
  99. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpTargetFactor.js +4 -4
  100. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceOwnerAuthorizationProvider.js +1 -1
  101. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRequestProofNonceStore.js +3 -9
  102. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRouteService.js +2 -1
  103. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionStore.js +89 -7
  104. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetCredentialProvider.js +24 -15
  105. package/dist/esm/router/cloudflare/d1/deviceLinking/index.js +3 -3
  106. package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoCapabilityPersistence.js +9 -6
  107. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeIssuer.js +12 -56
  108. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeService.js +17 -81
  109. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.js +1 -1
  110. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeVerifier.js +0 -1
  111. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpDeliveryRuntime.js +6 -25
  112. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpEnrollmentStore.js +1 -1
  113. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpGrantStore.js +1 -7
  114. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore.js +19 -13
  115. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.js +12 -48
  116. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecoveryService.js +24 -86
  117. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRegistrationEnrollmentFinalizer.js +9 -32
  118. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpServerSealRuntime.js +5 -21
  119. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore.js +44 -12
  120. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationRecords.js +1 -49
  121. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.js +37 -136
  122. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleRegistrationCompletion.js +85 -0
  123. package/dist/esm/router/cloudflare/d1/identity/d1IdentityRecords.js +0 -1
  124. package/dist/esm/router/cloudflare/d1/identity/d1IdentityService.js +9 -88
  125. package/dist/esm/router/cloudflare/d1/near/d1SponsoredNearAccount.js +242 -0
  126. package/dist/esm/router/cloudflare/d1/oidc/d1OidcBoundary.js +18 -92
  127. package/dist/esm/router/cloudflare/d1/oidc/d1OidcVerificationService.js +4 -55
  128. package/dist/esm/router/cloudflare/d1/oidc/googleOidcToken.js +41 -0
  129. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyRouteService.js +9 -15
  130. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.js +36 -7
  131. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpRecords.js +9 -13
  132. package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpService.js +11 -50
  133. package/dist/esm/router/cloudflare/d1/registration/d1EvmFamilyEcdsaRegistrationBranch.js +5 -20
  134. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.js +13 -10
  135. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.js +9 -14
  136. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.js +25 -13
  137. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationIntentService.js +7 -31
  138. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationSetupSupport.js +74 -0
  139. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.js +7 -1
  140. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationService.js +101 -260
  141. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetup.js +12 -56
  142. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetupExecution.js +155 -0
  143. package/dist/esm/router/cloudflare/d1/registration/walletRegistrationEstablishedSessionIssuer.js +1 -3
  144. package/dist/esm/router/cloudflare/d1/registration/walletRegistrationSessionCommitReceipt.js +1 -4
  145. package/dist/esm/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.js +131 -31
  146. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerFinalizeRecord.js +68 -0
  147. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerService.js +7 -54
  148. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodService.js +9 -8
  149. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorityStore.js +2 -142
  150. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.js +55 -171
  151. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnRecords.js +10 -79
  152. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnStore.js +23 -7
  153. package/dist/esm/router/cloudflare/runtime/routerAbPrewarm.js +2 -2
  154. package/dist/esm/router/cloudflare/runtime/staticWalletConsoleBinding.js +6 -20
  155. package/dist/esm/router/cloudflare/runtime/tenantRootCreationGrant.js +2 -9
  156. package/dist/esm/router/cloudflare/runtime/walletConsoleOps.js +1 -0
  157. package/dist/esm/router/cloudflare/runtime/walletConsoleOpsClient.js +5 -0
  158. package/dist/esm/router/cloudflare/runtime/walletControlOps.js +2 -1
  159. package/dist/esm/router/cloudflare/runtime/walletGateway.js +1 -1
  160. package/dist/esm/router/cloudflare/runtime/walletRuntimeOps.js +16 -4
  161. package/dist/esm/router/cloudflare-adaptor.js +1 -2
  162. package/dist/esm/router/cloudflare.js +3390 -3437
  163. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js +11 -8
  164. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.js +3 -2
  165. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitioning.js +6 -6
  166. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPersistence.js +5 -8
  167. package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.js +6 -6
  168. package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExportRequestScopedCloudflare.js +3 -0
  169. package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryRequestScopedCloudflare.js +8 -0
  170. package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryWalletSessionAuthorization.js +3 -6
  171. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationIntentAuthorization.js +6 -25
  172. package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.js +39 -55
  173. package/dist/esm/router/domains/emailOtp/emailOtpRequestValidation.js +0 -1
  174. package/dist/esm/router/domains/emailOtp/emailOtpRouteHandlers.js +15 -62
  175. package/dist/esm/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrieval.js +2 -8
  176. package/dist/esm/router/domains/passkeyCustody/walletCustodyRegistrationCommit.js +2 -8
  177. package/dist/esm/router/domains/signingOperations/routerAbEcdsaDerivationNormalSigningRoute.js +83 -74
  178. package/dist/esm/router/domains/signingOperations/routerAbNormalSigningAdmission.js +1 -0
  179. package/dist/esm/router/domains/signingOperations/routerAbOperationStepUp.js +1 -0
  180. package/dist/esm/router/domains/signingOperations/routerAbPrivateSigningWorker.js +5 -19
  181. package/dist/esm/router/domains/signingOperations/walletExecutionAdmission.js +3 -7
  182. package/dist/esm/router/domains/tenantRoot/tenantRootIdentityResolution.js +7 -13
  183. package/dist/esm/router/domains/walletRegistration/walletRegistrationReservation.js +70 -0
  184. package/dist/esm/router/domains/walletRegistration/walletRegistrationRoutes.js +10 -11
  185. package/dist/esm/router/domains/walletRegistration/walletRegistrationSetupPayload.js +2 -3
  186. package/dist/esm/router/domains/walletUnlock/walletUnlockRouteHandlers.js +55 -200
  187. package/dist/esm/router/express.js +858 -1145
  188. package/dist/esm/router/framework/http.js +7 -1
  189. package/dist/esm/router/framework/registrationSetupDispatch.js +14 -0
  190. package/dist/esm/router/framework/ror/normalize.js +0 -1
  191. package/dist/esm/router/framework/ror/options.js +0 -1
  192. package/dist/esm/router/framework/ror/provider.js +0 -1
  193. package/dist/esm/router/framework/ror/staticProvider.js +0 -1
  194. package/dist/esm/router/framework/routeDefinitions.js +1 -2
  195. package/dist/esm/router/framework/routerApiWebhooks.js +0 -1
  196. package/dist/esm/router/framework/runtimeSnapshotConsumer.js +8 -35
  197. package/dist/esm/router/ror.js +0 -1
  198. package/dist/esm/router/transport/fetch/createFetchRouter.js +3 -8
  199. package/dist/esm/router/transport/fetch/routes/auth.js +11 -41
  200. package/dist/esm/router/transport/fetch/routes/deviceLinking.js +36 -147
  201. package/dist/esm/router/transport/fetch/routes/deviceLinkingOwnerAuthorization.js +7 -23
  202. package/dist/esm/router/transport/fetch/routes/deviceLinkingResponses.js +130 -0
  203. package/dist/esm/router/transport/fetch/routes/ecdsaOperationStepUpFactor.js +171 -0
  204. package/dist/esm/router/transport/fetch/routes/passkeyCustody.js +1 -0
  205. package/dist/esm/router/transport/fetch/routes/sessions.js +1 -0
  206. package/dist/esm/router/transport/fetch/routes/syncAccount.js +15 -38
  207. package/dist/esm/router/transport/fetch/routes/thresholdEcdsa.js +46 -194
  208. package/dist/esm/router/transport/fetch/routes/walletExecutionLanePreflight.js +4 -1
  209. package/dist/esm/router/transport/fetch/routes/walletRegistration.js +3 -1
  210. package/dist/esm/router/transport/fetch/routes/webauthnAuthenticators.js +4 -16
  211. package/dist/esm/shared-ts/src/authorization/walletSessionIssuance.js +0 -1
  212. package/dist/esm/shared-ts/src/authorization/walletSignerActivationEquality.js +12 -0
  213. package/dist/esm/shared-ts/src/device-linking/authorityActivation.js +0 -2
  214. package/dist/esm/shared-ts/src/device-linking/committedSignerPackages.js +2 -5
  215. package/dist/esm/shared-ts/src/device-linking/contracts.js +16 -1
  216. package/dist/esm/shared-ts/src/device-linking/delegatedActivationPlan.js +1 -5
  217. package/dist/esm/shared-ts/src/device-linking/digests.js +1 -8
  218. package/dist/esm/shared-ts/src/device-linking/ed25519ExportRoot.js +12 -16
  219. package/dist/esm/shared-ts/src/device-linking/sourceContribution.js +5 -8
  220. package/dist/esm/shared-ts/src/near/actions.js +0 -1
  221. package/dist/esm/shared-ts/src/near/nearClient.js +0 -2
  222. package/dist/esm/shared-ts/src/passkey-custody/primitives.js +5 -1
  223. package/dist/esm/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.js +1 -1
  224. package/dist/esm/shared-ts/src/signing-lanes/index.js +1 -6
  225. package/dist/esm/shared-ts/src/signing-lanes/ownerContinuity.js +5 -9
  226. package/dist/esm/shared-ts/src/signing-lanes/participantDigest.js +2 -81
  227. package/dist/esm/shared-ts/src/signing-lanes/participants.js +1 -219
  228. package/dist/esm/shared-ts/src/signing-lanes/recordParsers.js +0 -3
  229. package/dist/esm/shared-ts/src/tenant-root/tenantRootIdentifier.js +12 -0
  230. package/dist/esm/shared-ts/src/tenant-root/tenantRootIdentity.js +2 -9
  231. package/dist/esm/shared-ts/src/tenant-root/tenantRootOperationRecord.js +2 -6
  232. package/dist/esm/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.js +0 -1
  233. package/dist/esm/shared-ts/src/threshold/keyMaterialBrands.js +1 -22
  234. package/dist/esm/shared-ts/src/threshold/participants.js +0 -1
  235. package/dist/esm/shared-ts/src/threshold/signingRootScope.js +0 -1
  236. package/dist/esm/shared-ts/src/utils/addWalletAuthMethod.js +4 -13
  237. package/dist/esm/shared-ts/src/utils/canonicalPrimitives.js +1 -7
  238. package/dist/esm/shared-ts/src/utils/domainIds.js +1 -16
  239. package/dist/esm/shared-ts/src/utils/ecdsaCapabilityActivation.js +1 -11
  240. package/dist/esm/shared-ts/src/utils/ecdsaKeyFactsInventory.js +2 -5
  241. package/dist/esm/shared-ts/src/utils/ecdsaServerTiming.js +0 -1
  242. package/dist/esm/shared-ts/src/utils/emailOtpDomain.js +3 -1
  243. package/dist/esm/shared-ts/src/utils/errors.js +1 -19
  244. package/dist/esm/shared-ts/src/utils/exactKeys.js +17 -0
  245. package/dist/esm/shared-ts/src/utils/failure.js +20 -0
  246. package/dist/esm/shared-ts/src/utils/near.js +1 -1
  247. package/dist/esm/shared-ts/src/utils/registrationEstablishedSession.js +1 -1
  248. package/dist/esm/shared-ts/src/utils/registrationIds.js +1 -5
  249. package/dist/esm/shared-ts/src/utils/registrationIntent.js +3 -13
  250. package/dist/esm/shared-ts/src/utils/registrationSetupOperation.js +8 -0
  251. package/dist/esm/shared-ts/src/utils/registrationSignerPlan.js +3 -6
  252. package/dist/esm/shared-ts/src/utils/routerAbEcdsaDerivation.js +1 -2
  253. package/dist/esm/shared-ts/src/utils/routerAbEd25519Yao.js +1 -1
  254. package/dist/esm/shared-ts/src/utils/thresholdEcdsaChainTarget.js +9 -0
  255. package/dist/esm/shared-ts/src/utils/validation.js +1 -5
  256. package/dist/esm/shared-ts/src/utils/walletAuthAuthority.js +0 -1
  257. package/dist/esm/shared-ts/src/utils/walletManagementProtocol.js +6 -0
  258. package/dist/esm/shared-ts/src/utils/wireSchema.js +2 -13
  259. package/dist/esm/shared-ts/src/wallet-recovery/backupAcknowledgement.js +6 -24
  260. package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodeLocator.js +0 -1
  261. package/dist/esm/shared-ts/src/wallet-recovery/recoveryKeyId.js +5 -6
  262. package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryCommittedProjection.js +1 -4
  263. package/dist/esm/storage/d1Sql.js +1 -7
  264. package/dist/esm/threshold/session/signingSessionSeal/crypto/cipher.js +10 -33
  265. package/dist/esm/threshold/session/signingSessionSeal/guards/backends.js +1 -2
  266. package/dist/esm/threshold/session/signingSessionSeal/idempotencyBackends.js +3 -4
  267. package/dist/esm/threshold/session/signingSessionSeal/idempotencyRecords.js +3 -10
  268. package/dist/esm/threshold/session/signingSessionSeal/options.js +0 -1
  269. package/dist/esm/threshold/session/signingSessionSeal/service.js +8 -35
  270. package/dist/esm/threshold/session/signingSessionSeal/transport/express.js +18 -94
  271. package/dist/esm/threshold/session/signingSessionSeal/transport/fetch.js +6 -30
  272. package/dist/esm/threshold/session/signingSessionSeal/transport/shared.js +5 -20
  273. package/dist/esm/wasm/evm_crypto/pkg/evm_crypto_bg.wasm +0 -0
  274. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker.js +0 -611
  275. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
  276. package/dist/esm/wasm/shamir3pass_runtime/pkg/shamir3pass_runtime_bg.wasm +0 -0
  277. package/dist/types/shared-ts/src/authorization/capabilityKinds.d.ts +0 -4
  278. package/dist/types/shared-ts/src/authorization/delegatedAuthority.d.ts +2 -1
  279. package/dist/types/shared-ts/src/authorization/walletSessionIssuance.d.ts +9 -2
  280. package/dist/types/shared-ts/src/authorization/walletSignerActivationEquality.d.ts +4 -0
  281. package/dist/types/shared-ts/src/device-linking/committedSignerPackages.d.ts +3 -4
  282. package/dist/types/shared-ts/src/device-linking/contracts.d.ts +6 -63
  283. package/dist/types/shared-ts/src/device-linking/sourceContribution.d.ts +2 -0
  284. package/dist/types/shared-ts/src/passkey-custody/custodyEnvelope.d.ts +5 -12
  285. package/dist/types/shared-ts/src/passkey-custody/primitives.d.ts +9 -0
  286. package/dist/types/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.d.ts +0 -2
  287. package/dist/types/shared-ts/src/signing-lanes/execution.d.ts +11 -12
  288. package/dist/types/shared-ts/src/signing-lanes/ids.d.ts +3 -17
  289. package/dist/types/shared-ts/src/signing-lanes/index.d.ts +0 -4
  290. package/dist/types/shared-ts/src/signing-lanes/ownerContinuity.d.ts +0 -1
  291. package/dist/types/shared-ts/src/signing-lanes/participantDigest.d.ts +0 -18
  292. package/dist/types/shared-ts/src/signing-lanes/participants.d.ts +6 -35
  293. package/dist/types/shared-ts/src/signing-lanes/rotation.d.ts +6 -845
  294. package/dist/types/shared-ts/src/tenant-root/tenantRootIdentifier.d.ts +3 -0
  295. package/dist/types/shared-ts/src/tenant-root/tenantRootOperationRecord.d.ts +2 -1
  296. package/dist/types/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.d.ts +6 -0
  297. package/dist/types/shared-ts/src/threshold/keyMaterialBrands.d.ts +0 -10
  298. package/dist/types/shared-ts/src/threshold/participants.d.ts +1 -1
  299. package/dist/types/shared-ts/src/threshold/signingRootScope.d.ts +1 -0
  300. package/dist/types/shared-ts/src/utils/addWalletAuthMethod.d.ts +1 -133
  301. package/dist/types/shared-ts/src/utils/addWalletAuthMethod.typecheck.d.ts +4 -18
  302. package/dist/types/shared-ts/src/utils/domainIds.d.ts +0 -12
  303. package/dist/types/shared-ts/src/utils/ecdsaKeyFactsInventory.d.ts +2 -11
  304. package/dist/types/shared-ts/src/utils/eip1559TxWasmJson.d.ts +16 -0
  305. package/dist/types/shared-ts/src/utils/emailOtpDomain.d.ts +2 -0
  306. package/dist/types/shared-ts/src/utils/errors.d.ts +0 -4
  307. package/dist/types/shared-ts/src/utils/exactKeys.d.ts +11 -0
  308. package/dist/types/shared-ts/src/utils/failure.d.ts +12 -0
  309. package/dist/types/shared-ts/src/utils/jsonRpc.d.ts +3 -4
  310. package/dist/types/shared-ts/src/utils/near.d.ts +0 -20
  311. package/dist/types/shared-ts/src/utils/nearRpcResults.d.ts +1 -0
  312. package/dist/types/shared-ts/src/utils/normalize.d.ts +0 -2
  313. package/dist/types/shared-ts/src/utils/registrationAuthMethodInput.d.ts +3 -8
  314. package/dist/types/shared-ts/src/utils/registrationSetupOperation.d.ts +3 -0
  315. package/dist/types/shared-ts/src/utils/registrationSignerPlan.d.ts +7 -19
  316. package/dist/types/shared-ts/src/utils/routerAbEcdsaDerivation.d.ts +3 -1
  317. package/dist/types/shared-ts/src/utils/routerAbEd25519Yao.d.ts +1 -0
  318. package/dist/types/shared-ts/src/utils/routerAbEd25519YaoDigests.d.ts +3 -4
  319. package/dist/types/shared-ts/src/utils/routerAbNormalSigningIdentity.d.ts +30 -8
  320. package/dist/types/shared-ts/src/utils/routerApiKeyAuth.d.ts +2 -0
  321. package/dist/types/shared-ts/src/utils/signingSessionSeal.d.ts +10 -11
  322. package/dist/types/shared-ts/src/utils/thresholdEcdsaChainTarget.d.ts +25 -0
  323. package/dist/types/shared-ts/src/utils/validation.d.ts +1 -3
  324. package/dist/types/shared-ts/src/utils/variant.d.ts +18 -0
  325. package/dist/types/shared-ts/src/utils/walletAuthMethodRecord.d.ts +3 -6
  326. package/dist/types/shared-ts/src/utils/walletCapabilityBindings.d.ts +0 -1
  327. package/dist/types/shared-ts/src/utils/walletManagementProtocol.d.ts +3 -0
  328. package/dist/types/shared-ts/src/utils/webauthnDeviceInfo.d.ts +4 -2
  329. package/dist/types/shared-ts/src/utils/wireSchema.d.ts +0 -2
  330. package/dist/types/shared-ts/src/wallet-recovery/backupAcknowledgement.d.ts +0 -1
  331. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeReservation.d.ts +1 -10
  332. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodes.d.ts +1 -3
  333. package/dist/types/shared-ts/src/wallet-recovery/recoveryEnvelopes.d.ts +3 -16
  334. package/dist/types/shared-ts/src/wallet-recovery/recoveryKeyId.d.ts +5 -21
  335. package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryPreparation.d.ts +15 -0
  336. package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryTarget.d.ts +3 -4
  337. package/dist/types/wallet-server/src/authorization/domain.d.ts +13 -2
  338. package/dist/types/wallet-server/src/authorization/ecdsaWalletSessionAdmission.d.ts +27 -3
  339. package/dist/types/wallet-server/src/authorization/lifecycleRouting.d.ts +32 -0
  340. package/dist/types/wallet-server/src/authorization/lifecycleRouting.typecheck.d.ts +2 -0
  341. package/dist/types/wallet-server/src/authorization/recoveryRouting.d.ts +22 -0
  342. package/dist/types/wallet-server/src/authorization/recoveryRouting.typecheck.d.ts +2 -0
  343. package/dist/types/wallet-server/src/authorization/service.d.ts +27 -1
  344. package/dist/types/wallet-server/src/authorization/sessionRouting.d.ts +20 -0
  345. package/dist/types/wallet-server/src/authorization/sessionRouting.typecheck.d.ts +2 -0
  346. package/dist/types/wallet-server/src/cloud-host.d.ts +31 -9
  347. package/dist/types/wallet-server/src/core/EmailOtpRecords.d.ts +1 -22
  348. package/dist/types/wallet-server/src/core/EmailOtpStores.d.ts +1 -79
  349. package/dist/types/wallet-server/src/core/IdentityStore.d.ts +0 -10
  350. package/dist/types/wallet-server/src/core/RegistrationCeremonyStore.d.ts +0 -1
  351. package/dist/types/wallet-server/src/core/ThresholdService/config.d.ts +0 -2
  352. package/dist/types/wallet-server/src/core/ThresholdService/index.d.ts +1 -3
  353. package/dist/types/wallet-server/src/core/ThresholdService/kv.d.ts +0 -7
  354. package/dist/types/wallet-server/src/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.d.ts +0 -3
  355. package/dist/types/wallet-server/src/core/ThresholdService/routerAbNormalSigningPolicy.d.ts +0 -1
  356. package/dist/types/wallet-server/src/core/ThresholdService/stores/WalletSessionStore.d.ts +6 -18
  357. package/dist/types/wallet-server/src/core/ThresholdService/validation.d.ts +0 -127
  358. package/dist/types/wallet-server/src/core/WalletAuthMethodStore.d.ts +1 -5
  359. package/dist/types/wallet-server/src/core/WalletStore.d.ts +0 -3
  360. package/dist/types/wallet-server/src/core/WebAuthnAuthenticatorStore.d.ts +8 -20
  361. package/dist/types/wallet-server/src/core/WebAuthnCredentialBindingStore.d.ts +1 -27
  362. package/dist/types/wallet-server/src/core/WebAuthnLoginChallengeStore.d.ts +2 -16
  363. package/dist/types/wallet-server/src/core/WebAuthnSyncChallengeStore.d.ts +22 -14
  364. package/dist/types/wallet-server/src/core/authService/emailOtpConfig.d.ts +0 -24
  365. package/dist/types/wallet-server/src/core/authService/emailOtpEnrollment.d.ts +1 -70
  366. package/dist/types/wallet-server/src/core/authService/emailOtpSeal.d.ts +1 -14
  367. package/dist/types/wallet-server/src/core/authService/githubOAuth.d.ts +2 -1
  368. package/dist/types/wallet-server/src/core/authService/nearTransactions.d.ts +1 -39
  369. package/dist/types/wallet-server/src/core/authService/rateLimits.d.ts +0 -17
  370. package/dist/types/wallet-server/src/core/authService/webauthn.d.ts +0 -125
  371. package/dist/types/wallet-server/src/core/authService/webauthnOidcHelpers.d.ts +0 -3
  372. package/dist/types/wallet-server/src/core/authService/webauthnVerificationOutcomes.d.ts +1 -1
  373. package/dist/types/wallet-server/src/core/authService/webauthnWalletBinding.d.ts +0 -12
  374. package/dist/types/wallet-server/src/core/config.d.ts +0 -10
  375. package/dist/types/wallet-server/src/core/d1EcdsaSignerRead.d.ts +39 -0
  376. package/dist/types/wallet-server/src/core/d1IdentityStore.d.ts +0 -2
  377. package/dist/types/wallet-server/src/core/d1TenantStore.d.ts +0 -7
  378. package/dist/types/wallet-server/src/core/d1WalletAuthMethodStore.d.ts +0 -1
  379. package/dist/types/wallet-server/src/core/d1WalletStore.d.ts +10 -0
  380. package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceBootstrap.d.ts +19 -0
  381. package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceSession.d.ts +8 -6
  382. package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceSessionRecord.d.ts +3 -4
  383. package/dist/types/wallet-server/src/core/deviceLinking/requestProof.d.ts +2 -5
  384. package/dist/types/wallet-server/src/core/ecdsaMaterialReadSnapshot.d.ts +19 -0
  385. package/dist/types/wallet-server/src/core/emailOtpD1Statements.d.ts +10 -7
  386. package/dist/types/wallet-server/src/core/keyMaterialBrands.d.ts +1 -5
  387. package/dist/types/wallet-server/src/core/nearRelayerAccountProvisioning.d.ts +0 -1
  388. package/dist/types/wallet-server/src/core/passkeyCredentialClaims.d.ts +9 -0
  389. package/dist/types/wallet-server/src/core/routerAbSigning/RouterAbEcdsaPresignRuntime.d.ts +0 -2
  390. package/dist/types/wallet-server/src/core/routerAbSigning/RouterAbNormalSigningRuntime.d.ts +3 -7
  391. package/dist/types/wallet-server/src/core/rpcClients/near/NearClient.d.ts +1 -2
  392. package/dist/types/wallet-server/src/core/signingLanes/WalletExecutionLaneProjection.d.ts +2 -11
  393. package/dist/types/wallet-server/src/core/threeRouteRegistrationContracts.d.ts +1 -92
  394. package/dist/types/wallet-server/src/core/threeRouteRegistrationContracts.typecheck.d.ts +4 -52
  395. package/dist/types/wallet-server/src/core/thresholdEcdsaChainTarget.d.ts +3 -12
  396. package/dist/types/wallet-server/src/core/types.d.ts +2 -305
  397. package/dist/types/wallet-server/src/hosted-wallet-gateway.d.ts +15 -3
  398. package/dist/types/wallet-server/src/index.d.ts +8 -13
  399. package/dist/types/wallet-server/src/localIntendedMaterialAdmissionFault.d.ts +38 -0
  400. package/dist/types/wallet-server/src/localIntendedPresignCancellation.d.ts +4 -0
  401. package/dist/types/wallet-server/src/localRegistrationSetupAuthority.d.ts +13 -0
  402. package/dist/types/wallet-server/src/router/auth/authRequestValidation.d.ts +4 -9
  403. package/dist/types/wallet-server/src/router/auth/commonRouterUtils.d.ts +15 -1
  404. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1AuthorizationAssembly.d.ts +23 -0
  405. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthBoundary.d.ts +0 -1
  406. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthConfig.d.ts +25 -3
  407. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthService.d.ts +1 -1
  408. package/dist/types/wallet-server/src/router/cloudflare/d1/auth/walletSessionCredentialReaders.d.ts +9 -0
  409. package/dist/types/wallet-server/src/router/cloudflare/d1/authorization/authorizedOperationStatements.d.ts +4 -0
  410. package/dist/types/wallet-server/src/router/cloudflare/d1/authorization/d1AuthorizationStore.d.ts +11 -2
  411. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.d.ts +22 -3
  412. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpGrantStore.d.ts +7 -1
  413. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRequestProofNonceStore.d.ts +1 -10
  414. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRouteService.d.ts +4 -0
  415. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionStore.d.ts +8 -6
  416. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetCredentialProvider.d.ts +5 -8
  417. package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetPlanner.d.ts +1 -13
  418. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeService.d.ts +2 -2
  419. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.d.ts +1 -1
  420. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpEnrollmentStore.d.ts +2 -8
  421. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpGrantStore.d.ts +0 -2
  422. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore.d.ts +20 -11
  423. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.d.ts +5 -5
  424. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpServerSealRuntime.d.ts +4 -14
  425. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore.d.ts +29 -1
  426. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationRecords.d.ts +3 -16
  427. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.d.ts +7 -2
  428. package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleRegistrationCompletion.d.ts +23 -0
  429. package/dist/types/wallet-server/src/router/cloudflare/d1/identity/d1IdentityService.d.ts +0 -12
  430. package/dist/types/wallet-server/src/router/cloudflare/d1/near/d1SponsoredNearAccount.d.ts +24 -0
  431. package/dist/types/wallet-server/src/router/cloudflare/d1/near/d1SponsoredNearAccount.typecheck.d.ts +2 -0
  432. package/dist/types/wallet-server/src/router/cloudflare/d1/oidc/d1OidcVerificationService.d.ts +0 -1
  433. package/dist/types/wallet-server/src/router/cloudflare/d1/oidc/googleOidcToken.d.ts +4 -0
  434. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyRouteService.d.ts +5 -0
  435. package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.d.ts +9 -0
  436. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.d.ts +3 -7
  437. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.d.ts +10 -11
  438. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.d.ts +3 -2
  439. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationSetupSupport.d.ts +51 -0
  440. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.d.ts +3 -0
  441. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationService.d.ts +35 -50
  442. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationSetup.d.ts +3 -30
  443. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationSetupExecution.d.ts +11 -0
  444. package/dist/types/wallet-server/src/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.d.ts +14 -1
  445. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAddSignerFinalizeRecord.d.ts +27 -0
  446. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAddSignerService.d.ts +1 -10
  447. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthMethodService.d.ts +2 -2
  448. package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorityStore.d.ts +0 -4
  449. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.d.ts +3 -0
  450. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnRecords.d.ts +8 -50
  451. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnStore.d.ts +23 -10
  452. package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnStore.typecheck.d.ts +2 -0
  453. package/dist/types/wallet-server/src/router/cloudflare/runtime/cloudflare.types.d.ts +0 -2
  454. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleOps.d.ts +9 -34
  455. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleOpsClient.d.ts +2 -0
  456. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletGateway.d.ts +1 -1
  457. package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRuntimeOps.d.ts +3 -0
  458. package/dist/types/wallet-server/src/router/cloudflare-adaptor.d.ts +0 -1
  459. package/dist/types/wallet-server/src/router/domains/ecdsa/thresholdEcdsaRequestValidation.d.ts +3 -15
  460. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.d.ts +1 -1
  461. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitioning.d.ts +2 -2
  462. package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.d.ts +2 -2
  463. package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.typecheck.d.ts +2 -0
  464. package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExportRequestScopedCloudflare.d.ts +2 -0
  465. package/dist/types/wallet-server/src/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryRequestScopedCloudflare.d.ts +2 -0
  466. package/dist/types/wallet-server/src/router/domains/ed25519Yao/session/routerAbEd25519YaoWalletSession.d.ts +9 -50
  467. package/dist/types/wallet-server/src/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrieval.d.ts +0 -2
  468. package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletCustodyRegistrationCommit.d.ts +0 -3
  469. package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletRecoveryKeyManifest.d.ts +1 -13
  470. package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbEcdsaDerivationNormalSigningRoute.d.ts +8 -9
  471. package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbNormalSigningAdmission.d.ts +13 -0
  472. package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbOperationStepUp.d.ts +3 -4
  473. package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbPrivateSigningWorker.d.ts +7 -33
  474. package/dist/types/wallet-server/src/router/domains/signingOperations/walletExecutionAdmission.d.ts +1 -2
  475. package/dist/types/wallet-server/src/router/domains/syncAccount/syncAccountRequestValidation.d.ts +2 -7
  476. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationInputs.d.ts +1 -0
  477. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationReservation.d.ts +51 -0
  478. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationRoutes.d.ts +2 -10
  479. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationSetupPayload.d.ts +2 -2
  480. package/dist/types/wallet-server/src/router/framework/apiCredentialPorts.d.ts +3 -1
  481. package/dist/types/wallet-server/src/router/framework/authServicePort.d.ts +39 -38
  482. package/dist/types/wallet-server/src/router/framework/googleLoginResolution.typecheck.d.ts +2 -0
  483. package/dist/types/wallet-server/src/router/framework/http.d.ts +1 -0
  484. package/dist/types/wallet-server/src/router/framework/registrationSetupDispatch.d.ts +13 -0
  485. package/dist/types/wallet-server/src/router/framework/ror/normalize.d.ts +1 -9
  486. package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceLinking.d.ts +1 -1
  487. package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceLinkingOwnerAuthorization.d.ts +3 -6
  488. package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceLinkingResponses.d.ts +17 -0
  489. package/dist/types/wallet-server/src/router/transport/fetch/routes/ecdsaOperationStepUpFactor.d.ts +37 -0
  490. package/dist/types/wallet-server/src/router/transport/fetch/routes/syncAccountBootstrap.d.ts +3 -5
  491. package/dist/types/wallet-server/src/router/transport/fetch/routes/thresholdEcdsa.d.ts +0 -1
  492. package/dist/types/wallet-server/src/storage/d1Sql.d.ts +0 -1
  493. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/idempotencyRecords.d.ts +1 -2
  494. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/signingSessionSeal.types.d.ts +6 -8
  495. package/migrations/d1-signer/0040_namespace_home_challenges.sql +16 -0
  496. package/migrations/d1-signer/0041_step_up_admission_expiry.sql +28 -0
  497. package/migrations/d1-signer/0042_deployment_resource_challenges.sql +4 -0
  498. package/migrations/d1-signer/0043_google_registration_candidate_claim.sql +2 -0
  499. package/migrations/d1-signer/0044_linked_device_bootstrap_imports.sql +6 -0
  500. package/migrations/d1-signer/0045_wallet_owned_capability_receipts.sql +29 -0
  501. package/migrations/d1-signer/0046_wallet_owned_signing_abuse.sql +41 -0
  502. package/migrations/d1-signer/0047_remove_unused_near_public_keys.sql +2 -0
  503. package/migrations/d1-signer/0048_operation_owner_scope.sql +45 -0
  504. package/package.json +2 -3
  505. package/src/README.md +11 -3
  506. package/dist/esm/core/AuthService.js +0 -2
  507. package/dist/esm/core/NearPublicKeyStore.js +0 -200
  508. package/dist/esm/core/ThresholdService/stores/CloudflareDurableObjectStore.js +0 -397
  509. package/dist/esm/core/ThresholdService/stores/KeyStore.js +0 -140
  510. package/dist/esm/core/ThresholdService/stores/SessionStore.js +0 -361
  511. package/dist/esm/core/ThresholdService/stores/StoreConfig.js +0 -13
  512. package/dist/esm/core/authService/AuthService.js +0 -594
  513. package/dist/esm/core/authService/bytes.js +0 -22
  514. package/dist/esm/core/authService/configValues.js +0 -15
  515. package/dist/esm/core/authService/emailOtpChallengeOperations.js +0 -126
  516. package/dist/esm/core/authService/emailOtpChallengeProof.js +0 -214
  517. package/dist/esm/core/authService/emailOtpChallengeVerification.js +0 -335
  518. package/dist/esm/core/authService/emailOtpChallenges.js +0 -260
  519. package/dist/esm/core/authService/emailOtpDelivery.js +0 -169
  520. package/dist/esm/core/authService/emailOtpGrant.js +0 -74
  521. package/dist/esm/core/authService/emailOtpRegistrationEnrollment.js +0 -175
  522. package/dist/esm/core/authService/emailOtpUnlock.js +0 -264
  523. package/dist/esm/core/authService/googleEmailOtpOperations.js +0 -141
  524. package/dist/esm/core/authService/googleEmailOtpRegistration.js +0 -674
  525. package/dist/esm/core/authService/identity.js +0 -57
  526. package/dist/esm/core/authService/identityOperations.js +0 -32
  527. package/dist/esm/core/authService/nearAccountOperations.js +0 -229
  528. package/dist/esm/core/authService/nearPublicKeyMetadata.js +0 -127
  529. package/dist/esm/core/authService/oidcVerification.js +0 -261
  530. package/dist/esm/core/authService/registrationThresholdHelpers.js +0 -30
  531. package/dist/esm/core/authService/runtime.js +0 -45
  532. package/dist/esm/core/authService/storeRegistry.js +0 -102
  533. package/dist/esm/core/authService/thresholdStoreSummary.js +0 -32
  534. package/dist/esm/core/authService/webauthnAuthority.js +0 -17
  535. package/dist/esm/core/defaultConfigsServer.js +0 -9
  536. package/dist/esm/core/hostedAccountIds.js +0 -225
  537. package/dist/esm/core/routerAbSigning/createRouterAbSigningRuntimes.js +0 -84
  538. package/dist/esm/core/signingLanes/LaneAggregateRevocationApplicationService.js +0 -86
  539. package/dist/esm/core/signingLanes/LaneEnrollmentActivation.js +0 -324
  540. package/dist/esm/core/signingLanes/LaneEnrollmentRevocation.js +0 -173
  541. package/dist/esm/core/signingLanes/LaneLifecycleApplicationService.js +0 -198
  542. package/dist/esm/core/signingLanes/ecdsaServerRetirement.js +0 -73
  543. package/dist/esm/core/signingLanes/ed25519ServerRetirement.js +0 -68
  544. package/dist/esm/core/signingLanes/signingWorkerLaneMaterialIdentity.js +0 -0
  545. package/dist/esm/core/storeBackends.js +0 -208
  546. package/dist/esm/core/utils.js +0 -14
  547. package/dist/esm/core/webAuthnStoreBackends.js +0 -198
  548. package/dist/esm/router/cloudflare/d1/near/d1NearPublicKeyStore.js +0 -56
  549. package/dist/esm/router/cloudflare/d1/signingLanes/d1EcdsaLanePrivateBindingResolver.js +0 -10
  550. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneAggregateRevocationApplicationService.js +0 -22
  551. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneEffectJournalStore.js +0 -166
  552. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneEnrollmentGateway.js +0 -38
  553. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLifecycleApplicationService.js +0 -20
  554. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLifecycleStore.js +0 -1459
  555. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLockStore.js +0 -114
  556. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneProtocolCommitter.js +0 -16
  557. package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneRecords.js +0 -171
  558. package/dist/esm/router/cloudflare/d1/signingLanes/index.js +0 -10
  559. package/dist/esm/router/cloudflare/durableObjects/thresholdStore.js +0 -404
  560. package/dist/esm/router/cloudflare/signingLanes/cloudflareLaneCurveExecution.js +0 -596
  561. package/dist/esm/router/cloudflare/signingLanes/cloudflareLaneProtocolCommitter.js +0 -273
  562. package/dist/esm/router/cloudflare/signingLanes/index.js +0 -4
  563. package/dist/esm/router/cloudflare/signingLanes/linkedDeviceEd25519CeremonyBinding.js +0 -32
  564. package/dist/esm/router/transport/fetch/routes/nearPublicKeys.js +0 -39
  565. package/dist/esm/shared-ts/src/signing-lanes/rotation.js +0 -8
  566. package/dist/esm/shared-ts/src/signing-lanes/rotationDigests.js +0 -358
  567. package/dist/esm/shared-ts/src/signing-lanes/rotationLifecycle.js +0 -313
  568. package/dist/esm/shared-ts/src/signing-lanes/rotationParsers.js +0 -532
  569. package/dist/esm/shared-ts/src/signing-lanes/rotationProtocolParsers.js +0 -323
  570. package/dist/esm/shared-ts/src/signing-lanes/rotationWireFields.js +0 -59
  571. package/dist/esm/wasm/router_ab_ecdsa_signing_worker/pkg/router_ab_ecdsa_signing_worker_bg.wasm +0 -0
  572. package/dist/types/shared-ts/src/signing-lanes/participantDigest.typecheck.d.ts +0 -2
  573. package/dist/types/shared-ts/src/signing-lanes/rotation.typecheck.d.ts +0 -2
  574. package/dist/types/shared-ts/src/signing-lanes/rotationDigests.d.ts +0 -13
  575. package/dist/types/shared-ts/src/signing-lanes/rotationLifecycle.d.ts +0 -78
  576. package/dist/types/shared-ts/src/signing-lanes/rotationParsers.d.ts +0 -27
  577. package/dist/types/shared-ts/src/signing-lanes/rotationProtocolParsers.d.ts +0 -6
  578. package/dist/types/shared-ts/src/signing-lanes/rotationWireFields.d.ts +0 -20
  579. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeAttempt.d.ts +0 -59
  580. package/dist/types/wallet-server/src/core/AuthService.d.ts +0 -3
  581. package/dist/types/wallet-server/src/core/NearPublicKeyStore.d.ts +0 -48
  582. package/dist/types/wallet-server/src/core/ThresholdService/stores/CloudflareDurableObjectStore.d.ts +0 -21
  583. package/dist/types/wallet-server/src/core/ThresholdService/stores/KeyStore.d.ts +0 -40
  584. package/dist/types/wallet-server/src/core/ThresholdService/stores/SessionStore.d.ts +0 -98
  585. package/dist/types/wallet-server/src/core/ThresholdService/stores/StoreConfig.d.ts +0 -4
  586. package/dist/types/wallet-server/src/core/ThresholdService/stores/ThresholdStoreConfig.typecheck.d.ts +0 -2
  587. package/dist/types/wallet-server/src/core/authService/AuthService.d.ts +0 -490
  588. package/dist/types/wallet-server/src/core/authService/bytes.d.ts +0 -4
  589. package/dist/types/wallet-server/src/core/authService/configValues.d.ts +0 -7
  590. package/dist/types/wallet-server/src/core/authService/emailOtpChallengeOperations.d.ts +0 -109
  591. package/dist/types/wallet-server/src/core/authService/emailOtpChallengeProof.d.ts +0 -169
  592. package/dist/types/wallet-server/src/core/authService/emailOtpChallengeVerification.d.ts +0 -47
  593. package/dist/types/wallet-server/src/core/authService/emailOtpChallenges.d.ts +0 -94
  594. package/dist/types/wallet-server/src/core/authService/emailOtpDelivery.d.ts +0 -66
  595. package/dist/types/wallet-server/src/core/authService/emailOtpGrant.d.ts +0 -43
  596. package/dist/types/wallet-server/src/core/authService/emailOtpRegistrationEnrollment.d.ts +0 -49
  597. package/dist/types/wallet-server/src/core/authService/emailOtpUnlock.d.ts +0 -71
  598. package/dist/types/wallet-server/src/core/authService/googleEmailOtpOperations.d.ts +0 -126
  599. package/dist/types/wallet-server/src/core/authService/googleEmailOtpRegistration.d.ts +0 -169
  600. package/dist/types/wallet-server/src/core/authService/identity.d.ts +0 -25
  601. package/dist/types/wallet-server/src/core/authService/identityOperations.d.ts +0 -19
  602. package/dist/types/wallet-server/src/core/authService/nearAccountOperations.d.ts +0 -55
  603. package/dist/types/wallet-server/src/core/authService/nearPublicKeyMetadata.d.ts +0 -44
  604. package/dist/types/wallet-server/src/core/authService/oidcVerification.d.ts +0 -66
  605. package/dist/types/wallet-server/src/core/authService/registrationThresholdHelpers.d.ts +0 -11
  606. package/dist/types/wallet-server/src/core/authService/runtime.d.ts +0 -20
  607. package/dist/types/wallet-server/src/core/authService/storeRegistry.d.ts +0 -53
  608. package/dist/types/wallet-server/src/core/authService/thresholdStoreSummary.d.ts +0 -3
  609. package/dist/types/wallet-server/src/core/authService/webauthnAuthority.d.ts +0 -5
  610. package/dist/types/wallet-server/src/core/defaultConfigsServer.d.ts +0 -5
  611. package/dist/types/wallet-server/src/core/hostedAccountIds.d.ts +0 -16
  612. package/dist/types/wallet-server/src/core/routerAbSigning/createRouterAbSigningRuntimes.d.ts +0 -16
  613. package/dist/types/wallet-server/src/core/signingLanes/LaneAggregateRevocationApplicationService.d.ts +0 -36
  614. package/dist/types/wallet-server/src/core/signingLanes/LaneEffectJournalStore.d.ts +0 -62
  615. package/dist/types/wallet-server/src/core/signingLanes/LaneEnrollmentActivation.d.ts +0 -13
  616. package/dist/types/wallet-server/src/core/signingLanes/LaneEnrollmentRevocation.d.ts +0 -24
  617. package/dist/types/wallet-server/src/core/signingLanes/LaneLifecycleApplicationService.d.ts +0 -141
  618. package/dist/types/wallet-server/src/core/signingLanes/LaneLifecycleStore.d.ts +0 -228
  619. package/dist/types/wallet-server/src/core/signingLanes/ecdsaServerRetirement.d.ts +0 -58
  620. package/dist/types/wallet-server/src/core/signingLanes/ed25519ServerRetirement.d.ts +0 -30
  621. package/dist/types/wallet-server/src/core/signingLanes/signingWorkerLaneMaterialIdentity.d.ts +0 -21
  622. package/dist/types/wallet-server/src/core/storeBackends.d.ts +0 -83
  623. package/dist/types/wallet-server/src/core/utils.d.ts +0 -3
  624. package/dist/types/wallet-server/src/core/webAuthnStoreBackends.d.ts +0 -96
  625. package/dist/types/wallet-server/src/router/cloudflare/d1/near/d1NearPublicKeyStore.d.ts +0 -29
  626. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1EcdsaLanePrivateBindingResolver.d.ts +0 -4
  627. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneAggregateRevocationApplicationService.d.ts +0 -4
  628. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneEffectJournalStore.d.ts +0 -24
  629. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneEnrollmentGateway.d.ts +0 -20
  630. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneLifecycleApplicationService.d.ts +0 -13
  631. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneLifecycleStore.d.ts +0 -51
  632. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneLockStore.d.ts +0 -28
  633. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneProtocolCommitter.d.ts +0 -5
  634. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneRecords.d.ts +0 -107
  635. package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/index.d.ts +0 -10
  636. package/dist/types/wallet-server/src/router/cloudflare/durableObjects/thresholdStore.d.ts +0 -18
  637. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/cloudflareLaneCurveExecution.d.ts +0 -217
  638. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/cloudflareLaneProtocolCommitter.d.ts +0 -73
  639. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/index.d.ts +0 -4
  640. package/dist/types/wallet-server/src/router/cloudflare/signingLanes/linkedDeviceEd25519CeremonyBinding.d.ts +0 -6
  641. package/dist/types/wallet-server/src/router/transport/fetch/routes/nearPublicKeys.d.ts +0 -3
  642. /package/dist/esm/{core/signingLanes/LaneEffectJournalStore.js → authorization/recoveryRouting.js} +0 -0
  643. /package/dist/esm/{core/signingLanes/LaneLifecycleStore.js → authorization/sessionRouting.js} +0 -0
@@ -1,14 +1,12 @@
1
1
  import { parseWalletId } from "../shared-ts/src/utils/domainIds.js";
2
2
  import { normalizeOptionalTrimmedString } from "../shared-ts/src/utils/normalize.js";
3
3
  import { isPlainObject } from "../shared-ts/src/utils/validation.js";
4
- import { sameRouterAbMpcMaterialActivationRef } from "../shared-ts/src/utils/routerAbNormalSigningIdentity.js";
5
4
  import { derivationClientSharePublicKey33B64uFromString, ecdsaClientRootPublicKey33B64uFromString, parseSdkEcdsaDerivationThresholdKeyId } from "../shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.js";
6
5
  import { normalizeRuntimePolicyScope } from "../shared-ts/src/threshold/signingRootScope.js";
7
- import { parseRouterAbEcdsaDerivationActivationRefreshRequestV1, parseRouterAbEcdsaDerivationActivationRefreshResponseV1, parseRouterAbEcdsaDerivationPublicCapabilityV1, parseRouterAbEcdsaRegistrationActivationReceiptV1, sameRouterAbEcdsaDerivationPublicCapabilityV1, sameRouterAbEcdsaDerivationPublicIdentityV1, sameRouterAbServerIdentityV1 } from "../shared-ts/src/utils/routerAbEcdsaDerivation.js";
8
- import { thresholdEcdsaChainTargetFromValue, thresholdEcdsaChainTargetKey } from "./thresholdEcdsaChainTarget.js";
9
- import { resolveStorePrefix } from "./d1TenantStore.js";
10
- import { createDurableObjectStore, postDurableObjectRequest } from "./storeBackends.js";
11
- import { D1WalletStore, WALLET_STORE_D1_SCHEMA_SQL, buildWalletEcdsaSignerRecord, ensureWalletStoreD1Schema, parseWalletEd25519SignerRecord } from "./d1WalletStore.js";
6
+ import { parseRouterAbEcdsaDerivationActivationRefreshRequestV1, parseRouterAbEcdsaDerivationActivationRefreshResponseV1, parseRouterAbEcdsaDerivationPublicCapabilityV1, parseRouterAbEcdsaRegistrationActivationReceiptV1, sameRegistrationSignerSet, sameRouterAbEcdsaDerivationPublicIdentityV1 } from "../shared-ts/src/utils/routerAbEcdsaDerivation.js";
7
+ import { thresholdEcdsaChainTargetKey } from "../shared-ts/src/utils/thresholdEcdsaChainTarget.js";
8
+ import { thresholdEcdsaChainTargetFromValue } from "./thresholdEcdsaChainTarget.js";
9
+ import { D1WalletStore, WALLET_STORE_D1_SCHEMA_SQL, buildWalletEcdsaSignerRecord, ensureWalletStoreD1Schema } from "./d1WalletStore.js";
12
10
  //#region src/core/WalletStore.ts
13
11
  function parseWalletEcdsaPendingSessionActivationRecord(raw) {
14
12
  if (!isPlainObject(raw) || raw.version !== "wallet_ecdsa_pending_session_activation_v1") return null;
@@ -44,40 +42,14 @@ function parseForwardedEcdsaRefreshResponse(raw) {
44
42
  if (response.result !== "forwarded") throw new Error("Persisted ECDSA refresh proof must be forwarded");
45
43
  return response;
46
44
  }
47
- function ecdsaPublicCapabilitiesEqual(left, right) {
48
- return sameRouterAbEcdsaDerivationPublicCapabilityV1(left, right);
49
- }
50
- function sameWalletEcdsaSignerSetV1(left, right) {
51
- return left.signer_set_id === right.signer_set_id && left.policy === right.policy && left.signer_a.role === right.signer_a.role && left.signer_a.signer_id === right.signer_a.signer_id && left.signer_a.key_epoch === right.signer_a.key_epoch && left.signer_b.role === right.signer_b.role && left.signer_b.signer_id === right.signer_b.signer_id && left.signer_b.key_epoch === right.signer_b.key_epoch && sameRouterAbServerIdentityV1(left.selected_server, right.selected_server);
52
- }
53
45
  function ecdsaPostRegistrationRequestMatchesCapability(input) {
54
- return input.request.client_id === input.capability.client_id && input.request.router_id === input.capability.router_id && input.request.context.application_binding_digest_b64u === input.capability.context.application_binding_digest_b64u && sameRouterAbEcdsaDerivationPublicIdentityV1(input.request.public_identity, input.capability.public_identity) && sameWalletEcdsaSignerSetV1(input.request.signer_set, input.capability.signer_set);
55
- }
56
- function resolveWalletStoreNamespace(config) {
57
- return resolveStorePrefix(config, ["WALLET_PREFIX"], "wallet:");
58
- }
59
- function signerFamily(record) {
60
- return record.version === "wallet_signer_ed25519_v1" ? "ed25519" : "ecdsa";
46
+ return input.request.client_id === input.capability.client_id && input.request.router_id === input.capability.router_id && input.request.context.application_binding_digest_b64u === input.capability.context.application_binding_digest_b64u && sameRouterAbEcdsaDerivationPublicIdentityV1(input.request.public_identity, input.capability.public_identity) && sameRegistrationSignerSet(input.request.signer_set, input.capability.signer_set);
61
47
  }
62
48
  function normalizeTimestampMs(value) {
63
49
  const numberValue = Number(value);
64
50
  if (!Number.isFinite(numberValue) || numberValue < 0) return null;
65
51
  return Math.floor(numberValue);
66
52
  }
67
- function parseWalletRecord(raw) {
68
- if (!isPlainObject(raw)) return null;
69
- if (raw.version !== "wallet_v1") return null;
70
- const walletId = parseWalletId(raw.walletId);
71
- const createdAtMs = normalizeTimestampMs(raw.createdAtMs);
72
- const updatedAtMs = normalizeTimestampMs(raw.updatedAtMs);
73
- if (!walletId.ok || createdAtMs == null || updatedAtMs == null) return null;
74
- return {
75
- version: "wallet_v1",
76
- walletId: walletId.value,
77
- createdAtMs,
78
- updatedAtMs
79
- };
80
- }
81
53
  function parseWalletEcdsaSignerRecord(raw) {
82
54
  if (!isPlainObject(raw) || raw.version !== "wallet_signer_ecdsa_v1") return null;
83
55
  if ("evmFamilySigningKeySlotId" in raw) return null;
@@ -182,187 +154,7 @@ function buildWalletEd25519SignerId(input) {
182
154
  if (!Number.isSafeInteger(signerSlot) || signerSlot < 1) throw new Error("Ed25519 signer ID requires an exact signerSlot");
183
155
  return `ed25519:${nearAccountId}:${signerSlot}`;
184
156
  }
185
- var InMemoryWalletStore = class {
186
- constructor(prefix) {
187
- this.prefix = prefix;
188
- this.subjects = /* @__PURE__ */ new Map();
189
- this.signers = /* @__PURE__ */ new Map();
190
- this.pendingEcdsaActivations = /* @__PURE__ */ new Map();
191
- }
192
- async getWallet(input) {
193
- const walletId = normalizeOptionalTrimmedString(input.walletId);
194
- if (!walletId) return null;
195
- return this.subjects.get(`${this.prefix}${walletId}`) ?? null;
196
- }
197
- async getEcdsaSignerByKeyHandle(input) {
198
- const walletId = normalizeOptionalTrimmedString(input.walletId);
199
- const keyHandle = normalizeOptionalTrimmedString(input.keyHandle);
200
- if (!walletId || !keyHandle) return null;
201
- const chainTargetKey = thresholdEcdsaChainTargetKey(input.chainTarget);
202
- const matches = [...this.signers.values()].filter((record) => record.version === "wallet_signer_ecdsa_v1" && record.walletId === walletId && record.walletKey.keyHandle === keyHandle && record.chainTargetKey === chainTargetKey);
203
- return matches.length === 1 ? matches[0] : null;
204
- }
205
- async getEd25519SignerBySlot(input) {
206
- const matches = [...this.signers.values()].filter((record) => record.version === "wallet_signer_ed25519_v1" && record.walletId === input.walletId && record.signerSlot === input.signerSlot);
207
- return matches.length === 1 ? matches[0] ?? null : null;
208
- }
209
- async getEcdsaSignerByPublicCapability(input) {
210
- const matches = [...this.signers.values()].filter((record) => record.version === "wallet_signer_ecdsa_v1" && record.walletId === input.walletId && ecdsaPublicCapabilitiesEqual(record.walletKey.publicCapability, input.publicCapability));
211
- if (matches.length === 0) return null;
212
- const keyHandle = matches[0]?.walletKey.keyHandle;
213
- if (!keyHandle || matches.some((record) => record.walletKey.keyHandle !== keyHandle)) throw new Error("Wallet has conflicting ECDSA public capabilities");
214
- return matches[0] ?? null;
215
- }
216
- async getEcdsaSignerByMaterialActivation(input) {
217
- const matches = [...this.signers.values()].filter((record) => record.version === "wallet_signer_ecdsa_v1" && record.walletId === input.walletId && sameRouterAbMpcMaterialActivationRef(record.walletKey.publicCapability.material_activation, input.materialActivation));
218
- if (matches.length === 0) return null;
219
- const keyHandle = matches[0]?.walletKey.keyHandle;
220
- if (!keyHandle || matches.some((record) => record.walletKey.keyHandle !== keyHandle)) throw new Error("Wallet has conflicting ECDSA material activations");
221
- return matches[0] ?? null;
222
- }
223
- async getEcdsaSignerByPostRegistrationRequest(input) {
224
- const matches = [...this.signers.values()].filter((record) => record.version === "wallet_signer_ecdsa_v1" && record.walletId === input.walletId && ecdsaPostRegistrationRequestMatchesCapability({
225
- request: input.request,
226
- capability: record.walletKey.publicCapability
227
- }));
228
- if (matches.length === 0) return null;
229
- const keyHandle = matches[0]?.walletKey.keyHandle;
230
- if (!keyHandle || matches.some((record) => record.walletKey.keyHandle !== keyHandle)) throw new Error("Wallet has conflicting ECDSA post-registration identities");
231
- return matches[0] ?? null;
232
- }
233
- async listEcdsaSignersForWallet(input) {
234
- return [...this.signers.values()].filter((record) => record.version === "wallet_signer_ecdsa_v1" && record.walletId === input.walletId);
235
- }
236
- async putEcdsaPendingSessionActivation(record) {
237
- this.pendingEcdsaActivations.set(`${record.walletId}:${record.lifecycleId}:${record.requestId}`, record);
238
- }
239
- async putSubject(record) {
240
- this.subjects.set(`${this.prefix}${record.walletId}`, record);
241
- }
242
- async putSigner(record) {
243
- this.signers.set(`${this.prefix}${record.walletId}:${signerFamily(record)}:${record.signerId}`, record);
244
- }
245
- async putSigners(records) {
246
- for (const record of records) await this.putSigner(record);
247
- }
248
- };
249
- var CloudflareDurableObjectWalletStore = class {
250
- constructor(stub, prefix) {
251
- this.stub = stub;
252
- this.prefix = prefix;
253
- }
254
- key(scope, id) {
255
- return `${this.prefix}${scope}:${id}`;
256
- }
257
- /** The object's reply to a `get`, or `undefined` when it answers with an HTTP error. */
258
- async get(key) {
259
- const response = await postDurableObjectRequest(this.stub, {
260
- op: "get",
261
- key
262
- });
263
- if (!response.ok) return void 0;
264
- return await response.json().catch(() => null);
265
- }
266
- async put(key, value) {
267
- const response = await postDurableObjectRequest(this.stub, {
268
- op: "set",
269
- key,
270
- value
271
- });
272
- if (!response.ok) throw new Error(`Wallet DO store HTTP ${response.status}: ${await response.text()}`);
273
- }
274
- async putSubject(record) {
275
- await this.put(this.key("subject", record.walletId), record);
276
- }
277
- async getWallet(input) {
278
- const walletId = normalizeOptionalTrimmedString(input.walletId);
279
- if (!walletId) return null;
280
- const current = await this.get(this.key("subject", walletId));
281
- if (current === void 0) return null;
282
- return parseWalletRecord(current?.value);
283
- }
284
- async getEcdsaSignerByKeyHandle(input) {
285
- const walletId = normalizeOptionalTrimmedString(input.walletId);
286
- const keyHandle = normalizeOptionalTrimmedString(input.keyHandle);
287
- if (!walletId || !keyHandle) return null;
288
- const chainTargetKey = thresholdEcdsaChainTargetKey(input.chainTarget);
289
- const current = await this.get(this.key("signer", `${walletId}:ecdsa-key-handle:${keyHandle}:${chainTargetKey}`));
290
- if (current === void 0) return null;
291
- return parseWalletEcdsaSignerRecord(current?.value);
292
- }
293
- async getEd25519SignerBySlot(input) {
294
- const current = await this.get(this.key("signer", `${input.walletId}:ed25519-slot:${input.signerSlot}`));
295
- if (current === void 0) return null;
296
- return parseWalletEd25519SignerRecord(current?.value);
297
- }
298
- async getEcdsaSignerByPublicCapability(input) {
299
- const current = await this.get(this.key("signer", `${input.walletId}:ecdsa-public-capability:${input.publicCapability.registration_request_digest_b64u}`));
300
- if (current === void 0) return null;
301
- const signer = parseWalletEcdsaSignerRecord(current?.value);
302
- return signer && ecdsaPublicCapabilitiesEqual(signer.walletKey.publicCapability, input.publicCapability) ? signer : null;
303
- }
304
- async getEcdsaSignerByMaterialActivation(input) {
305
- const current = await this.get(this.key("signer", `${input.walletId}:ecdsa-material-activation:${input.materialActivation.activation_id}`));
306
- if (current === void 0) return null;
307
- const signer = parseWalletEcdsaSignerRecord(current?.value);
308
- return signer && signer.walletId === input.walletId && sameRouterAbMpcMaterialActivationRef(signer.walletKey.publicCapability.material_activation, input.materialActivation) ? signer : null;
309
- }
310
- async getEcdsaSignerByPostRegistrationRequest(input) {
311
- const capabilityDigest = input.request.public_identity.context_binding_b64u;
312
- const current = await this.get(this.key("signer", `${input.walletId}:ecdsa-context-binding:${capabilityDigest}`));
313
- if (current === void 0) return null;
314
- const signer = parseWalletEcdsaSignerRecord(current?.value);
315
- return signer && ecdsaPostRegistrationRequestMatchesCapability({
316
- request: input.request,
317
- capability: signer.walletKey.publicCapability
318
- }) ? signer : null;
319
- }
320
- async listEcdsaSignersForWallet(input) {
321
- const current = await this.get(this.key("signer", `${input.walletId}:ecdsa-list`));
322
- if (current?.value === void 0 || current.value === null) return [];
323
- if (!Array.isArray(current.value)) throw new Error("Wallet ECDSA signer list is invalid");
324
- const signers = [];
325
- for (const raw of current.value) {
326
- const signer = parseWalletEcdsaSignerRecord(raw);
327
- if (!signer || signer.walletId !== input.walletId) throw new Error("Wallet ECDSA signer list contains an invalid record");
328
- signers.push(signer);
329
- }
330
- return signers;
331
- }
332
- async putEcdsaPendingSessionActivation(record) {
333
- await this.put(this.key("ecdsa-session-activation", `${record.walletId}:${record.lifecycleId}:${record.requestId}`), record);
334
- }
335
- async putSigner(record) {
336
- await this.put(this.key("signer", `${record.walletId}:${signerFamily(record)}:${record.signerId}`), record);
337
- if (record.version === "wallet_signer_ecdsa_v1") {
338
- await this.put(this.key("signer", `${record.walletId}:ecdsa-key-handle:${record.walletKey.keyHandle}:${record.chainTargetKey}`), record);
339
- await this.put(this.key("signer", `${record.walletId}:ecdsa-public-capability:${record.walletKey.publicCapability.registration_request_digest_b64u}`), record);
340
- await this.put(this.key("signer", `${record.walletId}:ecdsa-material-activation:${record.walletKey.publicCapability.material_activation.activation_id}`), record);
341
- await this.put(this.key("signer", `${record.walletId}:ecdsa-context-binding:${record.walletKey.publicCapability.public_identity.context_binding_b64u}`), record);
342
- const next = (await this.listEcdsaSignersForWallet({ walletId: record.walletId })).filter((signer) => signer.chainTargetKey !== record.chainTargetKey);
343
- await this.put(this.key("signer", `${record.walletId}:ecdsa-list`), [...next, record]);
344
- }
345
- if (record.version === "wallet_signer_ed25519_v1") await this.put(this.key("signer", `${record.walletId}:ed25519-slot:${record.signerSlot}`), record);
346
- }
347
- async putSigners(records) {
348
- for (const record of records) await this.putSigner(record);
349
- }
350
- };
351
- const WALLET_STORE = {
352
- tag: "wallet",
353
- name: "wallet",
354
- inMemoryLog: "Using in-memory store (non-persistent)",
355
- d1StoreName: "wallet store",
356
- resolvePrefix: resolveWalletStoreNamespace
357
- };
358
- function createWalletStore(input) {
359
- return createDurableObjectStore(input, WALLET_STORE, {
360
- d1: (options) => new D1WalletStore(options),
361
- durableObject: (stub, prefix) => new CloudflareDurableObjectWalletStore(stub, prefix),
362
- inMemory: (prefix) => new InMemoryWalletStore(prefix)
363
- });
364
- }
365
157
  //#endregion
366
- export { D1WalletStore, WALLET_STORE_D1_SCHEMA_SQL, buildWalletEcdsaSignerRecord, buildWalletEd25519SignerId, createWalletStore, ecdsaPostRegistrationRequestMatchesCapability, ensureWalletStoreD1Schema, parseWalletEcdsaPendingSessionActivationRecord, parseWalletEcdsaSignerRecord, resolveWalletStoreNamespace };
158
+ export { D1WalletStore, WALLET_STORE_D1_SCHEMA_SQL, buildWalletEcdsaSignerRecord, buildWalletEd25519SignerId, ecdsaPostRegistrationRequestMatchesCapability, ensureWalletStoreD1Schema, parseWalletEcdsaPendingSessionActivationRecord, parseWalletEcdsaSignerRecord };
367
159
 
368
160
  //# sourceMappingURL=WalletStore.js.map
@@ -1,202 +0,0 @@
1
- import { normalizeOptionalTrimmedString } from "../shared-ts/src/utils/normalize.js";
2
- import { isObject } from "../shared-ts/src/utils/validation.js";
3
- import { parseWebAuthnAuthenticatorDeviceInfo, parseWebAuthnAuthenticatorDeviceInfoJson, unknownWebAuthnAuthenticatorDeviceInfo } from "../shared-ts/src/utils/webauthnDeviceInfo.js";
4
- import { D1TenantTable, ensureD1Schema } from "./d1TenantStore.js";
5
- import { UPSERT_WEBAUTHN_AUTHENTICATOR_SQL, webAuthnAuthenticatorRows } from "./webAuthnD1Statements.js";
6
- import { WebAuthnCredentialRecords, createWebAuthnStore, resolveWebAuthnStorePrefix, webAuthnD1Store } from "./webAuthnStoreBackends.js";
7
- //#region src/core/WebAuthnAuthenticatorStore.ts
8
- const WEBAUTHN_AUTHENTICATOR_STORE_D1_SCHEMA_SQL = Object.freeze([`
9
- CREATE TABLE IF NOT EXISTS webauthn_authenticators (
10
- namespace TEXT NOT NULL,
11
- org_id TEXT NOT NULL,
12
- project_id TEXT NOT NULL,
13
- env_id TEXT NOT NULL,
14
- user_id TEXT NOT NULL,
15
- credential_id_b64u TEXT NOT NULL,
16
- credential_public_key_b64u TEXT NOT NULL,
17
- counter INTEGER NOT NULL,
18
- created_at_ms INTEGER NOT NULL,
19
- updated_at_ms INTEGER NOT NULL,
20
- device_info_json TEXT NOT NULL DEFAULT '{}',
21
- PRIMARY KEY (namespace, org_id, project_id, env_id, user_id, credential_id_b64u),
22
- CHECK (length(user_id) > 0),
23
- CHECK (length(credential_id_b64u) > 0),
24
- CHECK (length(credential_public_key_b64u) > 0),
25
- CHECK (counter >= 0),
26
- CHECK (created_at_ms > 0),
27
- CHECK (updated_at_ms > 0)
28
- )
29
- `, `
30
- CREATE INDEX IF NOT EXISTS webauthn_authenticators_user_idx
31
- ON webauthn_authenticators (
32
- namespace,
33
- org_id,
34
- project_id,
35
- env_id,
36
- user_id,
37
- created_at_ms
38
- )
39
- `]);
40
- async function ensureWebAuthnAuthenticatorStoreD1Schema(options) {
41
- await ensureD1Schema(options.database, WEBAUTHN_AUTHENTICATOR_STORE_D1_SCHEMA_SQL);
42
- }
43
- const AUTHENTICATOR_STORE = {
44
- label: "authenticator",
45
- prefixConfigKey: "WEBAUTHN_AUTHENTICATOR_PREFIX",
46
- prefixName: "authenticator",
47
- parse: parseWebAuthnAuthenticatorRecord,
48
- durableObjectLogSubject: "authenticator persistence",
49
- connectionErrorSubject: "webauthn store",
50
- unconfiguredNote: "non-persistent",
51
- d1ScopeLabel: "authenticator"
52
- };
53
- function resolveWebAuthnAuthenticatorStoreNamespace(config) {
54
- return resolveWebAuthnStorePrefix(config, AUTHENTICATOR_STORE);
55
- }
56
- function parseWebAuthnAuthenticatorRecord(raw) {
57
- if (!isObject(raw)) return null;
58
- const version = normalizeOptionalTrimmedString(raw.version);
59
- const credentialIdB64u = normalizeOptionalTrimmedString(raw.credentialIdB64u);
60
- const credentialPublicKeyB64u = normalizeOptionalTrimmedString(raw.credentialPublicKeyB64u);
61
- const counter = typeof raw.counter === "number" ? raw.counter : Number(raw.counter);
62
- const createdAtMs = typeof raw.createdAtMs === "number" ? raw.createdAtMs : Number(raw.createdAtMs);
63
- const updatedAtMs = typeof raw.updatedAtMs === "number" ? raw.updatedAtMs : Number(raw.updatedAtMs);
64
- if (version !== "webauthn_authenticator_v1") return null;
65
- if (!credentialIdB64u || !credentialPublicKeyB64u) return null;
66
- if (!Number.isFinite(counter) || counter < 0) return null;
67
- if (!Number.isFinite(createdAtMs) || createdAtMs <= 0) return null;
68
- if (!Number.isFinite(updatedAtMs) || updatedAtMs <= 0) return null;
69
- return {
70
- version: "webauthn_authenticator_v1",
71
- credentialIdB64u,
72
- credentialPublicKeyB64u,
73
- counter: Math.floor(counter),
74
- createdAtMs: Math.floor(createdAtMs),
75
- updatedAtMs: Math.floor(updatedAtMs),
76
- deviceInfo: parseWebAuthnAuthenticatorDeviceInfo(raw.deviceInfo) ?? unknownWebAuthnAuthenticatorDeviceInfo()
77
- };
78
- }
79
- function parseD1WebAuthnAuthenticatorRow(row) {
80
- if (!row) return null;
81
- return parseWebAuthnAuthenticatorRecord({
82
- version: "webauthn_authenticator_v1",
83
- credentialIdB64u: row.credential_id_b64u,
84
- credentialPublicKeyB64u: row.credential_public_key_b64u,
85
- counter: row.counter,
86
- createdAtMs: row.created_at_ms,
87
- updatedAtMs: row.updated_at_ms,
88
- deviceInfo: parseWebAuthnAuthenticatorDeviceInfoJson(row.device_info_json)
89
- });
90
- }
91
- var KeyValueWebAuthnAuthenticatorStore = class {
92
- constructor(records, prefix) {
93
- this.records = new WebAuthnCredentialRecords(records, prefix);
94
- }
95
- async get(userId, credentialIdB64u) {
96
- return this.records.get(userId, credentialIdB64u);
97
- }
98
- async put(userId, record) {
99
- const uid = normalizeOptionalTrimmedString(userId);
100
- if (!uid) throw new Error("Missing userId");
101
- const parsed = parseWebAuthnAuthenticatorRecord(record);
102
- if (!parsed) throw new Error("Invalid authenticator record");
103
- await this.records.set(uid, parsed.credentialIdB64u, parsed);
104
- }
105
- async del(userId, credentialIdB64u) {
106
- await this.records.del(userId, credentialIdB64u);
107
- }
108
- };
109
- /** Only the in-memory backend can enumerate a user's authenticators. */
110
- var InMemoryWebAuthnAuthenticatorStore = class extends KeyValueWebAuthnAuthenticatorStore {
111
- constructor(memory, prefix) {
112
- super(memory, prefix);
113
- this.memory = memory;
114
- this.prefix = prefix;
115
- }
116
- async list(userId) {
117
- const uid = normalizeOptionalTrimmedString(userId);
118
- if (!uid) return [];
119
- const keyPrefix = `${this.prefix}${uid}:`;
120
- const out = [];
121
- for (const [k, v] of this.memory.map.entries()) {
122
- if (!k.startsWith(keyPrefix)) continue;
123
- const parsed = parseWebAuthnAuthenticatorRecord(v);
124
- if (parsed) out.push(parsed);
125
- }
126
- out.sort((a, b) => a.createdAtMs - b.createdAtMs);
127
- return out;
128
- }
129
- };
130
- var D1WebAuthnAuthenticatorStore = class {
131
- constructor(input) {
132
- this.adapterKind = "d1";
133
- this.prepare = (sql, values) => this.table.prepare(sql, values);
134
- this.table = new D1TenantTable(input, webAuthnD1Store(AUTHENTICATOR_STORE.d1ScopeLabel), WEBAUTHN_AUTHENTICATOR_STORE_D1_SCHEMA_SQL);
135
- }
136
- async get(userId, credentialIdB64u) {
137
- await this.table.ensureSchema();
138
- const uid = normalizeOptionalTrimmedString(userId);
139
- const cid = normalizeOptionalTrimmedString(credentialIdB64u);
140
- if (!uid || !cid) return null;
141
- return parseD1WebAuthnAuthenticatorRow(await webAuthnAuthenticatorRows.select(this.prepare, uid, cid).first());
142
- }
143
- async put(userId, record) {
144
- await this.table.ensureSchema();
145
- const uid = normalizeOptionalTrimmedString(userId);
146
- if (!uid) throw new Error("Missing userId");
147
- const parsed = parseWebAuthnAuthenticatorRecord(record);
148
- if (!parsed) throw new Error("Invalid authenticator record");
149
- await this.table.prepare(UPSERT_WEBAUTHN_AUTHENTICATOR_SQL, [
150
- uid,
151
- parsed.credentialIdB64u,
152
- parsed.credentialPublicKeyB64u,
153
- parsed.counter,
154
- parsed.createdAtMs,
155
- parsed.updatedAtMs,
156
- JSON.stringify(parsed.deviceInfo)
157
- ]).run();
158
- }
159
- async del(userId, credentialIdB64u) {
160
- await this.table.ensureSchema();
161
- const uid = normalizeOptionalTrimmedString(userId);
162
- const cid = normalizeOptionalTrimmedString(credentialIdB64u);
163
- if (!uid || !cid) return;
164
- await this.table.prepare(`DELETE FROM webauthn_authenticators
165
- WHERE namespace = ?
166
- AND org_id = ?
167
- AND project_id = ?
168
- AND env_id = ?
169
- AND user_id = ?
170
- AND credential_id_b64u = ?`, [uid, cid]).run();
171
- }
172
- async list(userId) {
173
- await this.table.ensureSchema();
174
- const uid = normalizeOptionalTrimmedString(userId);
175
- if (!uid) return [];
176
- const result = await this.table.prepare(`SELECT credential_id_b64u, credential_public_key_b64u, counter, created_at_ms, updated_at_ms, device_info_json
177
- FROM webauthn_authenticators
178
- WHERE namespace = ?
179
- AND org_id = ?
180
- AND project_id = ?
181
- AND env_id = ?
182
- AND user_id = ?
183
- ORDER BY created_at_ms ASC`, [uid]).all();
184
- const records = [];
185
- for (const row of result.results || []) {
186
- const parsed = parseD1WebAuthnAuthenticatorRow(row);
187
- if (parsed) records.push(parsed);
188
- }
189
- return records;
190
- }
191
- };
192
- function createWebAuthnAuthenticatorStore(input) {
193
- return createWebAuthnStore(input, AUTHENTICATOR_STORE, {
194
- d1: (options) => new D1WebAuthnAuthenticatorStore(options),
195
- keyValue: (records, prefix) => new KeyValueWebAuthnAuthenticatorStore(records, prefix),
196
- inMemory: (records, prefix) => new InMemoryWebAuthnAuthenticatorStore(records, prefix)
197
- });
198
- }
199
- //#endregion
200
- export { D1WebAuthnAuthenticatorStore, WEBAUTHN_AUTHENTICATOR_STORE_D1_SCHEMA_SQL, createWebAuthnAuthenticatorStore, ensureWebAuthnAuthenticatorStoreD1Schema, resolveWebAuthnAuthenticatorStoreNamespace };
201
-
202
- //# sourceMappingURL=WebAuthnAuthenticatorStore.js.map
@@ -1,10 +1,7 @@
1
1
  import { normalizeOptionalTrimmedString } from "../shared-ts/src/utils/normalize.js";
2
2
  import { isObject } from "../shared-ts/src/utils/validation.js";
3
3
  import { normalizeRuntimePolicyScope } from "../shared-ts/src/threshold/signingRootScope.js";
4
- import { parseD1JsonColumn } from "../storage/d1Sql.js";
5
- import { D1TenantTable, ensureD1Schema, prepareD1TenantStatement } from "./d1TenantStore.js";
6
- import { webAuthnCredentialBindingRows } from "./webAuthnD1Statements.js";
7
- import { WebAuthnCredentialRecords, createWebAuthnStore, resolveWebAuthnStorePrefix, webAuthnD1Store } from "./webAuthnStoreBackends.js";
4
+ import { prepareD1TenantStatement } from "./d1TenantStore.js";
8
5
  //#region src/core/WebAuthnCredentialBindingStore.ts
9
6
  const INSERT_CREDENTIAL_BINDING_SQL = `INSERT INTO webauthn_credential_bindings (
10
7
  namespace,
@@ -64,57 +61,6 @@ function prepareD1WebAuthnCredentialBindingPutStatement(input) {
64
61
  function prepareD1WebAuthnCredentialBindingInsertStatement(input) {
65
62
  return prepareCredentialBindingWrite(input, INSERT_CREDENTIAL_BINDING_SQL);
66
63
  }
67
- const WEBAUTHN_CREDENTIAL_BINDING_STORE_D1_SCHEMA_SQL = Object.freeze([`
68
- CREATE TABLE IF NOT EXISTS webauthn_credential_bindings (
69
- namespace TEXT NOT NULL,
70
- org_id TEXT NOT NULL,
71
- project_id TEXT NOT NULL,
72
- env_id TEXT NOT NULL,
73
- rp_id TEXT NOT NULL,
74
- credential_id_b64u TEXT NOT NULL,
75
- user_id TEXT NOT NULL,
76
- -- Nullable until the wallet's Ed25519 Yao ceremony settles.
77
- signer_slot INTEGER,
78
- record_json TEXT NOT NULL,
79
- created_at_ms INTEGER NOT NULL,
80
- updated_at_ms INTEGER NOT NULL,
81
- PRIMARY KEY (namespace, org_id, project_id, env_id, rp_id, credential_id_b64u),
82
- CHECK (length(rp_id) > 0),
83
- CHECK (length(credential_id_b64u) > 0),
84
- CHECK (length(user_id) > 0),
85
- CHECK (signer_slot IS NULL OR signer_slot >= 1),
86
- CHECK (json_valid(record_json)),
87
- CHECK (created_at_ms > 0),
88
- CHECK (updated_at_ms > 0)
89
- )
90
- `, `
91
- CREATE INDEX IF NOT EXISTS webauthn_credential_bindings_user_idx
92
- ON webauthn_credential_bindings (
93
- namespace,
94
- org_id,
95
- project_id,
96
- env_id,
97
- user_id,
98
- rp_id,
99
- signer_slot
100
- )
101
- `]);
102
- async function ensureWebAuthnCredentialBindingStoreD1Schema(options) {
103
- await ensureD1Schema(options.database, WEBAUTHN_CREDENTIAL_BINDING_STORE_D1_SCHEMA_SQL);
104
- }
105
- const CREDENTIAL_BINDING_STORE = {
106
- label: "credential binding",
107
- prefixConfigKey: "WEBAUTHN_CREDENTIAL_BINDING_PREFIX",
108
- prefixName: "credential_binding",
109
- parse: parseWebAuthnCredentialBindingRecord,
110
- durableObjectLogSubject: "credential bindings",
111
- connectionErrorSubject: "webauthn store",
112
- unconfiguredNote: "no persistence configured",
113
- d1ScopeLabel: "credential"
114
- };
115
- function resolveWebAuthnCredentialBindingStoreNamespace(config) {
116
- return resolveWebAuthnStorePrefix(config, CREDENTIAL_BINDING_STORE);
117
- }
118
64
  function parseWebAuthnCredentialBindingRecord(raw) {
119
65
  if (!isObject(raw)) return null;
120
66
  const version = normalizeOptionalTrimmedString(raw.version);
@@ -183,133 +129,7 @@ function parseWebAuthnCredentialBindingRecord(raw) {
183
129
  ...ed25519Facts
184
130
  } : base;
185
131
  }
186
- /** One user's bindings, on one RP ID when given. The scope binds ahead of `values`. */
187
- function userBindingsFilter(userId, rpId) {
188
- const clauses = [
189
- "namespace = ?",
190
- "org_id = ?",
191
- "project_id = ?",
192
- "env_id = ?",
193
- "user_id = ?"
194
- ];
195
- const values = [userId];
196
- if (rpId) {
197
- clauses.push("rp_id = ?");
198
- values.push(rpId);
199
- }
200
- return {
201
- where: clauses.join(" AND "),
202
- values
203
- };
204
- }
205
- var KeyValueWebAuthnCredentialBindingStore = class {
206
- constructor(records, prefix) {
207
- this.records = new WebAuthnCredentialRecords(records, prefix);
208
- }
209
- async get(rpId, credentialIdB64u) {
210
- return this.records.get(rpId, credentialIdB64u);
211
- }
212
- async put(record) {
213
- const parsed = parseWebAuthnCredentialBindingRecord(record);
214
- if (!parsed) throw new Error("Invalid credential binding record");
215
- await this.records.set(parsed.rpId, parsed.credentialIdB64u, parsed);
216
- }
217
- async del(rpId, credentialIdB64u) {
218
- await this.records.del(rpId, credentialIdB64u);
219
- }
220
- };
221
- /** Only the in-memory backend can enumerate a user's bindings. */
222
- var InMemoryWebAuthnCredentialBindingStore = class extends KeyValueWebAuthnCredentialBindingStore {
223
- constructor(memory, prefix) {
224
- super(memory, prefix);
225
- this.memory = memory;
226
- }
227
- async listByUserId(input) {
228
- const uid = normalizeOptionalTrimmedString(input.userId);
229
- const rpId = normalizeOptionalTrimmedString(input.rpId);
230
- if (!uid) return [];
231
- const out = [];
232
- for (const v of this.memory.map.values()) {
233
- const parsed = parseWebAuthnCredentialBindingRecord(v);
234
- if (!parsed) continue;
235
- if (parsed.userId !== uid) continue;
236
- if (rpId && parsed.rpId !== rpId) continue;
237
- out.push(parsed);
238
- }
239
- out.sort((a, b) => (a.signerSlot ?? Number.MAX_SAFE_INTEGER) - (b.signerSlot ?? Number.MAX_SAFE_INTEGER));
240
- return out;
241
- }
242
- };
243
- var D1WebAuthnCredentialBindingStore = class {
244
- constructor(input) {
245
- this.adapterKind = "d1";
246
- this.prepare = (sql, values) => this.table.prepare(sql, values);
247
- this.table = new D1TenantTable(input, webAuthnD1Store(CREDENTIAL_BINDING_STORE.d1ScopeLabel), WEBAUTHN_CREDENTIAL_BINDING_STORE_D1_SCHEMA_SQL);
248
- }
249
- async get(rpId, credentialIdB64u) {
250
- await this.table.ensureSchema();
251
- const r = normalizeOptionalTrimmedString(rpId);
252
- const c = normalizeOptionalTrimmedString(credentialIdB64u);
253
- if (!r || !c) return null;
254
- return parseWebAuthnCredentialBindingRecord(parseD1JsonColumn((await webAuthnCredentialBindingRows.select(this.prepare, r, c).first())?.record_json));
255
- }
256
- async put(record) {
257
- await this.table.ensureSchema();
258
- await prepareD1WebAuthnCredentialBindingPutStatement({
259
- database: this.table.database,
260
- scope: this.table.scope,
261
- record
262
- }).run();
263
- }
264
- async del(rpId, credentialIdB64u) {
265
- await this.table.ensureSchema();
266
- const r = normalizeOptionalTrimmedString(rpId);
267
- const c = normalizeOptionalTrimmedString(credentialIdB64u);
268
- if (!r || !c) return;
269
- await this.table.prepare(`DELETE FROM webauthn_credential_bindings
270
- WHERE namespace = ?
271
- AND org_id = ?
272
- AND project_id = ?
273
- AND env_id = ?
274
- AND rp_id = ?
275
- AND credential_id_b64u = ?`, [r, c]).run();
276
- }
277
- async getMaxSignerSlot(input) {
278
- await this.table.ensureSchema();
279
- const userId = normalizeOptionalTrimmedString(input.userId);
280
- if (!userId) return null;
281
- const filter = userBindingsFilter(userId, normalizeOptionalTrimmedString(input.rpId));
282
- const row = await this.table.prepare(`SELECT MAX(signer_slot) AS max_signer_slot
283
- FROM webauthn_credential_bindings
284
- WHERE ${filter.where}`, filter.values).first();
285
- const maxSignerSlot = Number(row?.max_signer_slot);
286
- return Number.isFinite(maxSignerSlot) && maxSignerSlot > 0 ? Math.floor(maxSignerSlot) : null;
287
- }
288
- async listByUserId(input) {
289
- await this.table.ensureSchema();
290
- const userId = normalizeOptionalTrimmedString(input.userId);
291
- if (!userId) return [];
292
- const filter = userBindingsFilter(userId, normalizeOptionalTrimmedString(input.rpId));
293
- const result = await this.table.prepare(`SELECT record_json
294
- FROM webauthn_credential_bindings
295
- WHERE ${filter.where}
296
- ORDER BY signer_slot ASC`, filter.values).all();
297
- const records = [];
298
- for (const row of result.results || []) {
299
- const parsed = parseWebAuthnCredentialBindingRecord(parseD1JsonColumn(row.record_json));
300
- if (parsed) records.push(parsed);
301
- }
302
- return records;
303
- }
304
- };
305
- function createWebAuthnCredentialBindingStore(input) {
306
- return createWebAuthnStore(input, CREDENTIAL_BINDING_STORE, {
307
- d1: (options) => new D1WebAuthnCredentialBindingStore(options),
308
- keyValue: (records, prefix) => new KeyValueWebAuthnCredentialBindingStore(records, prefix),
309
- inMemory: (records, prefix) => new InMemoryWebAuthnCredentialBindingStore(records, prefix)
310
- });
311
- }
312
132
  //#endregion
313
- export { D1WebAuthnCredentialBindingStore, WEBAUTHN_CREDENTIAL_BINDING_STORE_D1_SCHEMA_SQL, createWebAuthnCredentialBindingStore, ensureWebAuthnCredentialBindingStoreD1Schema, prepareD1WebAuthnCredentialBindingInsertStatement, prepareD1WebAuthnCredentialBindingPutStatement, resolveWebAuthnCredentialBindingStoreNamespace };
133
+ export { prepareD1WebAuthnCredentialBindingInsertStatement, prepareD1WebAuthnCredentialBindingPutStatement };
314
134
 
315
135
  //# sourceMappingURL=WebAuthnCredentialBindingStore.js.map