@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,859 +0,0 @@
1
- import { normalizeOptionalTrimmedString } from "../shared-ts/src/utils/normalize.js";
2
- import { isPlainObject } from "../shared-ts/src/utils/validation.js";
3
- import { d1ChangedRows, resolveD1DatabaseFromConfig } from "../storage/d1Sql.js";
4
- import { D1TenantTable, d1TenantScopeFromConfig, resolveStorePrefix } from "./d1TenantStore.js";
5
- import { parseCurrentEmailOtpAuthStateRecord, parseCurrentEmailOtpAuthStateRow, parseCurrentEmailOtpChallengeRecord, parseCurrentEmailOtpChallengeRow, parseCurrentEmailOtpGrantRecord, parseCurrentEmailOtpGrantRow, parseCurrentEmailOtpUnlockChallengeRecord, parseCurrentEmailOtpUnlockChallengeRow, parseCurrentEmailOtpWalletEnrollmentRecord, parseCurrentEmailOtpWalletEnrollmentRow, parseCurrentGoogleEmailOtpRegistrationAttemptRecord, parseCurrentGoogleEmailOtpRegistrationAttemptRow, parseJsonRecord, registrationAttemptMatchesReplacementScope, registrationAttemptMatchesStartedScope } from "./EmailOtpRecords.js";
6
- import { emailOtpAuthStateRows, emailOtpChallengeRows, emailOtpGrantRows, emailOtpRegistrationAttemptRows, emailOtpUnlockChallengeRows, emailOtpWalletEnrollmentRows } from "./emailOtpD1Statements.js";
7
- //#region src/core/EmailOtpStores.ts
8
- /** Names the Email OTP stores in D1 scope errors. */
9
- const EMAIL_OTP_D1_STORE = "Email OTP store";
10
- const EMAIL_OTP_STORE_D1_SCHEMA_SQL = Object.freeze([
11
- `
12
- CREATE TABLE IF NOT EXISTS email_otp_challenges (
13
- namespace TEXT NOT NULL,
14
- org_id TEXT NOT NULL,
15
- project_id TEXT NOT NULL,
16
- env_id TEXT NOT NULL,
17
- challenge_id TEXT NOT NULL,
18
- challenge_subject_id TEXT NOT NULL,
19
- wallet_id TEXT NOT NULL,
20
- record_org_id TEXT NOT NULL,
21
- otp_channel TEXT NOT NULL,
22
- owner_proof_binding_digest TEXT NOT NULL,
23
- action TEXT NOT NULL,
24
- operation TEXT NOT NULL,
25
- otp_code TEXT NOT NULL,
26
- record_json TEXT NOT NULL,
27
- created_at_ms INTEGER NOT NULL,
28
- expires_at_ms INTEGER NOT NULL,
29
- PRIMARY KEY (namespace, org_id, project_id, env_id, challenge_id),
30
- CHECK (length(challenge_id) > 0),
31
- CHECK (length(challenge_subject_id) > 0),
32
- CHECK (length(wallet_id) > 0),
33
- CHECK (otp_channel = 'email_otp'),
34
- CHECK (length(owner_proof_binding_digest) > 0),
35
- CHECK (length(action) > 0),
36
- CHECK (length(operation) > 0),
37
- CHECK (length(otp_code) > 0),
38
- CHECK (json_valid(record_json)),
39
- CHECK (created_at_ms > 0),
40
- CHECK (expires_at_ms > created_at_ms)
41
- )
42
- `,
43
- `
44
- CREATE INDEX IF NOT EXISTS email_otp_challenges_context_idx
45
- ON email_otp_challenges (
46
- namespace,
47
- org_id,
48
- project_id,
49
- env_id,
50
- challenge_subject_id,
51
- wallet_id,
52
- record_org_id,
53
- otp_channel,
54
- owner_proof_binding_digest,
55
- action,
56
- operation,
57
- expires_at_ms
58
- )
59
- `,
60
- `
61
- CREATE INDEX IF NOT EXISTS email_otp_challenges_expires_idx
62
- ON email_otp_challenges (
63
- namespace,
64
- org_id,
65
- project_id,
66
- env_id,
67
- expires_at_ms
68
- )
69
- `,
70
- `
71
- CREATE TABLE IF NOT EXISTS email_otp_grants (
72
- namespace TEXT NOT NULL,
73
- org_id TEXT NOT NULL,
74
- project_id TEXT NOT NULL,
75
- env_id TEXT NOT NULL,
76
- grant_token TEXT NOT NULL,
77
- user_id TEXT NOT NULL,
78
- wallet_id TEXT NOT NULL,
79
- record_org_id TEXT NOT NULL,
80
- challenge_id TEXT NOT NULL,
81
- action TEXT NOT NULL,
82
- record_json TEXT NOT NULL,
83
- issued_at_ms INTEGER NOT NULL,
84
- expires_at_ms INTEGER NOT NULL,
85
- PRIMARY KEY (namespace, org_id, project_id, env_id, grant_token),
86
- CHECK (length(grant_token) > 0),
87
- CHECK (length(user_id) > 0),
88
- CHECK (length(wallet_id) > 0),
89
- CHECK (length(challenge_id) > 0),
90
- CHECK (length(action) > 0),
91
- CHECK (json_valid(record_json)),
92
- CHECK (issued_at_ms > 0),
93
- CHECK (expires_at_ms > issued_at_ms)
94
- )
95
- `,
96
- `
97
- CREATE INDEX IF NOT EXISTS email_otp_grants_expires_idx
98
- ON email_otp_grants (
99
- namespace,
100
- org_id,
101
- project_id,
102
- env_id,
103
- expires_at_ms
104
- )
105
- `,
106
- `
107
- CREATE TABLE IF NOT EXISTS email_otp_wallet_enrollments (
108
- namespace TEXT NOT NULL,
109
- org_id TEXT NOT NULL,
110
- project_id TEXT NOT NULL,
111
- env_id TEXT NOT NULL,
112
- wallet_id TEXT NOT NULL,
113
- provider_user_id TEXT NOT NULL,
114
- record_org_id TEXT NOT NULL,
115
- verified_email TEXT NOT NULL,
116
- record_json TEXT NOT NULL,
117
- created_at_ms INTEGER NOT NULL,
118
- updated_at_ms INTEGER NOT NULL,
119
- PRIMARY KEY (namespace, org_id, project_id, env_id, wallet_id),
120
- CHECK (length(wallet_id) > 0),
121
- CHECK (length(provider_user_id) > 0),
122
- CHECK (length(record_org_id) > 0),
123
- CHECK (length(verified_email) > 0),
124
- CHECK (json_valid(record_json)),
125
- CHECK (created_at_ms > 0),
126
- CHECK (updated_at_ms > 0)
127
- )
128
- `,
129
- `
130
- CREATE INDEX IF NOT EXISTS email_otp_wallet_enrollments_provider_idx
131
- ON email_otp_wallet_enrollments (
132
- namespace,
133
- org_id,
134
- project_id,
135
- env_id,
136
- record_org_id,
137
- provider_user_id,
138
- updated_at_ms
139
- )
140
- `,
141
- `
142
- CREATE TABLE IF NOT EXISTS email_otp_auth_states (
143
- namespace TEXT NOT NULL,
144
- org_id TEXT NOT NULL,
145
- project_id TEXT NOT NULL,
146
- env_id TEXT NOT NULL,
147
- wallet_id TEXT NOT NULL,
148
- provider_user_id TEXT NOT NULL,
149
- record_org_id TEXT NOT NULL,
150
- record_json TEXT NOT NULL,
151
- created_at_ms INTEGER NOT NULL,
152
- updated_at_ms INTEGER NOT NULL,
153
- PRIMARY KEY (namespace, org_id, project_id, env_id, wallet_id),
154
- CHECK (length(wallet_id) > 0),
155
- CHECK (length(provider_user_id) > 0),
156
- CHECK (length(record_org_id) > 0),
157
- CHECK (json_valid(record_json)),
158
- CHECK (created_at_ms > 0),
159
- CHECK (updated_at_ms > 0)
160
- )
161
- `,
162
- `
163
- CREATE TABLE IF NOT EXISTS email_otp_unlock_challenges (
164
- namespace TEXT NOT NULL,
165
- org_id TEXT NOT NULL,
166
- project_id TEXT NOT NULL,
167
- env_id TEXT NOT NULL,
168
- challenge_id TEXT NOT NULL,
169
- wallet_id TEXT NOT NULL,
170
- user_id TEXT NOT NULL,
171
- record_org_id TEXT NOT NULL,
172
- record_json TEXT NOT NULL,
173
- created_at_ms INTEGER NOT NULL,
174
- expires_at_ms INTEGER NOT NULL,
175
- PRIMARY KEY (namespace, org_id, project_id, env_id, challenge_id),
176
- CHECK (length(challenge_id) > 0),
177
- CHECK (length(wallet_id) > 0),
178
- CHECK (length(user_id) > 0),
179
- CHECK (json_valid(record_json)),
180
- CHECK (created_at_ms > 0),
181
- CHECK (expires_at_ms > created_at_ms)
182
- )
183
- `,
184
- `
185
- CREATE INDEX IF NOT EXISTS email_otp_unlock_challenges_expires_idx
186
- ON email_otp_unlock_challenges (
187
- namespace,
188
- org_id,
189
- project_id,
190
- env_id,
191
- expires_at_ms
192
- )
193
- `,
194
- `
195
- CREATE TABLE IF NOT EXISTS email_otp_registration_attempts (
196
- namespace TEXT NOT NULL,
197
- org_id TEXT NOT NULL,
198
- project_id TEXT NOT NULL,
199
- env_id TEXT NOT NULL,
200
- attempt_id TEXT NOT NULL,
201
- provider_subject TEXT NOT NULL,
202
- email TEXT NOT NULL,
203
- wallet_id TEXT NOT NULL,
204
- state TEXT NOT NULL,
205
- owner_proof_binding_digest TEXT NOT NULL,
206
- runtime_org_id TEXT NOT NULL,
207
- runtime_policy_key TEXT NOT NULL,
208
- offer_wallet_ids_json TEXT NOT NULL,
209
- record_json TEXT NOT NULL,
210
- created_at_ms INTEGER NOT NULL,
211
- updated_at_ms INTEGER NOT NULL,
212
- expires_at_ms INTEGER NOT NULL,
213
- PRIMARY KEY (namespace, org_id, project_id, env_id, attempt_id),
214
- CHECK (length(attempt_id) > 0),
215
- CHECK (length(provider_subject) > 0),
216
- CHECK (length(email) > 0),
217
- CHECK (length(wallet_id) > 0),
218
- CHECK (state IN ('started', 'key_finalized', 'active', 'abandoned', 'failed', 'expired')),
219
- CHECK (length(owner_proof_binding_digest) > 0),
220
- CHECK (json_valid(offer_wallet_ids_json)),
221
- CHECK (json_valid(record_json)),
222
- CHECK (created_at_ms > 0),
223
- CHECK (updated_at_ms > 0),
224
- CHECK (expires_at_ms > 0)
225
- )
226
- `,
227
- `
228
- CREATE INDEX IF NOT EXISTS email_otp_registration_attempts_subject_idx
229
- ON email_otp_registration_attempts (
230
- namespace,
231
- org_id,
232
- project_id,
233
- env_id,
234
- provider_subject,
235
- email,
236
- state,
237
- expires_at_ms,
238
- owner_proof_binding_digest,
239
- runtime_org_id,
240
- runtime_policy_key,
241
- updated_at_ms
242
- )
243
- `,
244
- `
245
- CREATE INDEX IF NOT EXISTS email_otp_registration_attempts_wallet_idx
246
- ON email_otp_registration_attempts (
247
- namespace,
248
- org_id,
249
- project_id,
250
- env_id,
251
- wallet_id,
252
- state,
253
- expires_at_ms
254
- )
255
- `
256
- ]);
257
- /**
258
- * Selects a store's backend: D1 when the config's `kind` is `d1`, else in memory; any other
259
- * `kind` is an error. `label` names the store in log lines and errors; the unknown-kind error
260
- * uses `kindLabel`, which the wallet enrollment store shortens to `enrollment`. The store type
261
- * `S` comes from the caller's return type.
262
- */
263
- function createEmailOtpStore(input, label, build, kindLabel = label) {
264
- const config = isPlainObject(input?.config) ? input.config : {};
265
- const kind = normalizeOptionalTrimmedString(config.kind);
266
- if (kind === "d1") {
267
- const database = resolveD1DatabaseFromConfig(config);
268
- if (!database) throw new Error(`[email-otp] D1 ${label} store selected but no D1 database was provided`);
269
- const scope = d1TenantScopeFromConfig(config, resolveStorePrefix(config, ["EMAIL_OTP_PREFIX", "EMAIL_OTP_STORE_PREFIX"], "email-otp:"), EMAIL_OTP_D1_STORE);
270
- input?.logger?.info(`[email-otp] Using D1 ${label} store`);
271
- return build.d1(database, scope);
272
- }
273
- if (kind && kind !== "in-memory") throw new Error(`[email-otp] Unknown ${kindLabel} store kind: ${kind}`);
274
- input?.logger?.info(`[email-otp] Using in-memory ${label} store (non-persistent)`);
275
- return build.inMemory();
276
- }
277
- const CHALLENGE_RECORD = {
278
- label: "Email OTP challenge",
279
- parse: parseCurrentEmailOtpChallengeRecord,
280
- id: (record) => record.challengeId,
281
- orgId: (record) => record.orgId
282
- };
283
- const GRANT_RECORD = {
284
- label: "Email OTP grant",
285
- parse: parseCurrentEmailOtpGrantRecord,
286
- id: (record) => record.grantToken,
287
- orgId: (record) => record.orgId
288
- };
289
- const WALLET_ENROLLMENT_RECORD = {
290
- label: "Email OTP wallet enrollment",
291
- parse: parseCurrentEmailOtpWalletEnrollmentRecord,
292
- id: (record) => record.walletId,
293
- orgId: (record) => record.orgId
294
- };
295
- const AUTH_STATE_RECORD = {
296
- label: "Email OTP auth state",
297
- parse: parseCurrentEmailOtpAuthStateRecord,
298
- id: (record) => record.walletId,
299
- orgId: (record) => record.orgId
300
- };
301
- const UNLOCK_CHALLENGE_RECORD = {
302
- label: "Email OTP unlock challenge",
303
- parse: parseCurrentEmailOtpUnlockChallengeRecord,
304
- id: (record) => record.challengeId,
305
- orgId: (record) => record.orgId
306
- };
307
- const REGISTRATION_ATTEMPT_RECORD = {
308
- label: "Google Email OTP registration attempt",
309
- parse: parseCurrentGoogleEmailOtpRegistrationAttemptRecord,
310
- id: (record) => record.attemptId,
311
- orgId: (record) => record.runtimePolicyScope?.orgId
312
- };
313
- function parseEmailOtpRecord(spec, record) {
314
- const parsed = spec.parse(record);
315
- if (!parsed) throw new Error(`Invalid ${spec.label} record`);
316
- return parsed;
317
- }
318
- function cloneRecord(value) {
319
- return JSON.parse(JSON.stringify(value));
320
- }
321
- function challengeContextMatches(record, input) {
322
- return record.expiresAtMs > input.nowMs && record.challengeSubjectId === input.challengeSubjectId && record.walletId === input.walletId && String(record.orgId || "") === String(input.orgId || "") && record.otpChannel === input.otpChannel && record.ownerProofBindingDigest === input.ownerProofBindingDigest && record.action === input.action && record.operation === input.operation;
323
- }
324
- /** Keeps copies of parsed records by id, so no caller shares a stored object. */
325
- var InMemoryEmailOtpStore = class {
326
- constructor(spec) {
327
- this.spec = spec;
328
- this.map = /* @__PURE__ */ new Map();
329
- }
330
- async put(record) {
331
- this.set(parseEmailOtpRecord(this.spec, record));
332
- }
333
- set(record) {
334
- this.map.set(this.spec.id(record), cloneRecord(record));
335
- }
336
- async get(id) {
337
- const key = normalizeOptionalTrimmedString(id);
338
- if (!key) return null;
339
- const record = this.map.get(key);
340
- return record ? cloneRecord(record) : null;
341
- }
342
- /** Reads and deletes, so a one-time record is used at most once. */
343
- async consume(id) {
344
- const key = normalizeOptionalTrimmedString(id);
345
- if (!key) return null;
346
- const record = this.map.get(key);
347
- this.map.delete(key);
348
- return record ? cloneRecord(record) : null;
349
- }
350
- async del(id) {
351
- const key = normalizeOptionalTrimmedString(id);
352
- if (!key) return;
353
- this.map.delete(key);
354
- }
355
- };
356
- var InMemoryEmailOtpChallengeStore = class extends InMemoryEmailOtpStore {
357
- constructor() {
358
- super(CHALLENGE_RECORD);
359
- }
360
- async deleteExpired(nowMs) {
361
- const deleted = [];
362
- for (const [challengeId, record] of this.map.entries()) {
363
- if (record.expiresAtMs > nowMs) continue;
364
- this.map.delete(challengeId);
365
- deleted.push(cloneRecord(record));
366
- }
367
- return deleted;
368
- }
369
- async countActiveByContext(input) {
370
- let count = 0;
371
- for (const record of this.map.values()) {
372
- if (!challengeContextMatches(record, input)) continue;
373
- count += 1;
374
- }
375
- return count;
376
- }
377
- async findLatestActiveByContext(input) {
378
- let latest = null;
379
- for (const record of this.map.values()) {
380
- if (!challengeContextMatches(record, input)) continue;
381
- if (!latest || record.expiresAtMs > latest.expiresAtMs) latest = record;
382
- }
383
- return latest ? cloneRecord(latest) : null;
384
- }
385
- async deleteOldestActiveByContext(input) {
386
- let oldest = null;
387
- for (const record of this.map.values()) {
388
- if (!challengeContextMatches(record, input)) continue;
389
- if (!oldest || record.createdAtMs < oldest.createdAtMs) oldest = record;
390
- }
391
- if (!oldest) return null;
392
- this.map.delete(oldest.challengeId);
393
- return cloneRecord(oldest);
394
- }
395
- async findActiveByContext(input) {
396
- for (const record of this.map.values()) {
397
- if (!challengeContextMatches(record, input)) continue;
398
- if (record.otpCode !== input.otpCode) continue;
399
- return cloneRecord(record);
400
- }
401
- return null;
402
- }
403
- };
404
- var InMemoryEmailOtpWalletEnrollmentStore = class extends InMemoryEmailOtpStore {
405
- constructor() {
406
- super(WALLET_ENROLLMENT_RECORD);
407
- }
408
- async getByProviderUserId(input) {
409
- const providerUserId = normalizeOptionalTrimmedString(input.providerUserId);
410
- const orgId = normalizeOptionalTrimmedString(input.orgId);
411
- if (!providerUserId || !orgId) return null;
412
- const record = Array.from(this.map.values()).find((candidate) => candidate.providerUserId === providerUserId && candidate.orgId === orgId) || null;
413
- return record ? cloneRecord(record) : null;
414
- }
415
- async put(record) {
416
- const parsed = parseEmailOtpRecord(this.spec, record);
417
- if (Array.from(this.map.values()).find((existing) => existing.walletId !== parsed.walletId && existing.orgId === parsed.orgId && existing.providerUserId === parsed.providerUserId)) throw new Error("Email OTP wallet enrollment already exists for this provider user in org");
418
- this.set(parsed);
419
- }
420
- };
421
- var InMemoryEmailOtpRegistrationAttemptStore = class extends InMemoryEmailOtpStore {
422
- constructor() {
423
- super(REGISTRATION_ATTEMPT_RECORD);
424
- }
425
- async findStartedBySubjectEmail(input) {
426
- for (const record of this.map.values()) if (registrationAttemptMatchesStartedScope(record, input)) return cloneRecord(record);
427
- return null;
428
- }
429
- async abandonStartedBySubjectEmailExceptBinding(input) {
430
- let abandoned = 0;
431
- for (const record of this.map.values()) {
432
- if (!registrationAttemptMatchesReplacementScope(record, input)) continue;
433
- this.map.set(record.attemptId, {
434
- ...cloneRecord(record),
435
- state: "abandoned",
436
- failureCode: input.failureCode,
437
- updatedAtMs: input.nowMs
438
- });
439
- abandoned += 1;
440
- }
441
- return abandoned;
442
- }
443
- async hasLiveStartedWalletAttempt(input) {
444
- for (const record of this.map.values()) if ((record.state === "started" || record.state === "key_finalized") && record.expiresAtMs > input.nowMs && (record.walletId === input.walletId || record.offerCandidates.some((candidate) => candidate.walletId === input.walletId))) return true;
445
- return false;
446
- }
447
- async deleteExpired(nowMs) {
448
- let deleted = 0;
449
- for (const [attemptId, record] of this.map.entries()) if (record.expiresAtMs <= nowMs || record.state === "expired") {
450
- this.map.delete(attemptId);
451
- deleted += 1;
452
- }
453
- return deleted;
454
- }
455
- };
456
- function challengeFromRow(row) {
457
- return parseCurrentEmailOtpChallengeRow({
458
- recordJson: parseJsonRecord(row?.record_json),
459
- expiresAtMs: row?.expires_at_ms
460
- });
461
- }
462
- function grantFromRow(row) {
463
- return parseCurrentEmailOtpGrantRow({
464
- recordJson: parseJsonRecord(row?.record_json),
465
- expiresAtMs: row?.expires_at_ms
466
- });
467
- }
468
- function walletEnrollmentFromRow(row) {
469
- return parseCurrentEmailOtpWalletEnrollmentRow({
470
- recordJson: parseJsonRecord(row?.record_json),
471
- updatedAtMs: row?.updated_at_ms
472
- });
473
- }
474
- function authStateFromRow(row) {
475
- return parseCurrentEmailOtpAuthStateRow({
476
- recordJson: parseJsonRecord(row?.record_json),
477
- updatedAtMs: row?.updated_at_ms
478
- });
479
- }
480
- function unlockChallengeFromRow(row) {
481
- return parseCurrentEmailOtpUnlockChallengeRow({
482
- recordJson: parseJsonRecord(row?.record_json),
483
- expiresAtMs: row?.expires_at_ms
484
- });
485
- }
486
- function registrationAttemptFromRow(row) {
487
- return parseCurrentGoogleEmailOtpRegistrationAttemptRow({
488
- recordJson: parseJsonRecord(row?.record_json),
489
- expiresAtMs: row?.expires_at_ms,
490
- updatedAtMs: row?.updated_at_ms
491
- });
492
- }
493
- /**
494
- * A record's store in one D1 tenant scope. The core schema is created on first use, and a row
495
- * that no longer parses is deleted when it is read.
496
- */
497
- var D1EmailOtpStore = class {
498
- constructor(database, scope, spec, rows) {
499
- this.spec = spec;
500
- this.rows = rows;
501
- this.adapterKind = "d1";
502
- this.prepare = (sql, values) => this.table.prepare(sql, values);
503
- this.table = new D1TenantTable({
504
- database,
505
- ...scope
506
- }, EMAIL_OTP_D1_STORE, EMAIL_OTP_STORE_D1_SCHEMA_SQL);
507
- }
508
- ensureSchema() {
509
- return this.table.ensureSchema();
510
- }
511
- async put(record) {
512
- await this.ensureSchema();
513
- const parsed = parseEmailOtpRecord(this.spec, record);
514
- const recordOrgId = this.spec.orgId(parsed);
515
- if (recordOrgId && recordOrgId !== this.table.scope.orgId) throw new Error(`${this.spec.label} orgId must match D1 Email OTP store orgId`);
516
- await this.rows.upsert(this.prepare, parsed).run();
517
- }
518
- async getById(id, select) {
519
- await this.ensureSchema();
520
- const key = normalizeOptionalTrimmedString(id);
521
- if (!key) return null;
522
- const row = await select(this.prepare, key).first();
523
- return row ? this.recordOrDiscard(row, key) : null;
524
- }
525
- /** Reads and deletes, so a one-time record is used at most once. */
526
- async consumeById(id, consume) {
527
- await this.ensureSchema();
528
- const key = normalizeOptionalTrimmedString(id);
529
- if (!key) return null;
530
- const row = await consume(this.prepare, key).first();
531
- const parsed = this.rows.fromRow(row);
532
- return parsed ? cloneRecord(parsed) : null;
533
- }
534
- async deleteById(id, remove) {
535
- await this.ensureSchema();
536
- const key = normalizeOptionalTrimmedString(id);
537
- if (!key) return;
538
- await remove(this.prepare, key).run();
539
- }
540
- /** The row's record; a row that does not parse is deleted by `malformedId` and reads as null. */
541
- async recordOrDiscard(row, malformedId) {
542
- const parsed = this.rows.fromRow(row);
543
- if (parsed) return cloneRecord(parsed);
544
- const id = normalizeOptionalTrimmedString(malformedId);
545
- if (id) await this.del(id);
546
- return null;
547
- }
548
- };
549
- const ACTIVE_CHALLENGE_CONTEXT_SQL = `WHERE namespace = ?
550
- AND org_id = ?
551
- AND project_id = ?
552
- AND env_id = ?
553
- AND expires_at_ms > ?
554
- AND challenge_subject_id = ?
555
- AND wallet_id = ?
556
- AND record_org_id = ?
557
- AND otp_channel = ?
558
- AND owner_proof_binding_digest = ?
559
- AND action = ?
560
- AND operation = ?`;
561
- function challengeContextValues(input) {
562
- return [
563
- input.nowMs,
564
- input.challengeSubjectId,
565
- input.walletId,
566
- String(input.orgId || ""),
567
- input.otpChannel,
568
- input.ownerProofBindingDigest,
569
- input.action,
570
- input.operation
571
- ];
572
- }
573
- var D1EmailOtpChallengeStore = class extends D1EmailOtpStore {
574
- constructor(database, scope) {
575
- super(database, scope, CHALLENGE_RECORD, {
576
- fromRow: challengeFromRow,
577
- upsert: emailOtpChallengeRows.upsert
578
- });
579
- }
580
- async get(challengeId) {
581
- await this.ensureSchema();
582
- const id = normalizeOptionalTrimmedString(challengeId);
583
- if (!id) return null;
584
- const row = await this.prepare(`SELECT record_json, expires_at_ms, challenge_id
585
- FROM email_otp_challenges
586
- WHERE namespace = ?
587
- AND org_id = ?
588
- AND project_id = ?
589
- AND env_id = ?
590
- AND challenge_id = ?
591
- LIMIT 1`, [id]).first();
592
- return row ? this.recordOrDiscard(row, id) : null;
593
- }
594
- async deleteExpired(nowMs) {
595
- await this.ensureSchema();
596
- return ((await this.prepare(`DELETE FROM email_otp_challenges
597
- WHERE namespace = ?
598
- AND org_id = ?
599
- AND project_id = ?
600
- AND env_id = ?
601
- AND expires_at_ms <= ?
602
- RETURNING record_json, expires_at_ms`, [nowMs]).all()).results || []).map((row) => challengeFromRow(row)).filter((record) => Boolean(record)).map((record) => cloneRecord(record));
603
- }
604
- async countActiveByContext(input) {
605
- await this.ensureSchema();
606
- const row = await this.prepare(`SELECT COUNT(*) AS count
607
- FROM email_otp_challenges
608
- ${ACTIVE_CHALLENGE_CONTEXT_SQL}`, challengeContextValues(input)).first();
609
- return Number(row?.count || 0);
610
- }
611
- async findLatestActiveByContext(input) {
612
- await this.ensureSchema();
613
- const row = await this.prepare(`SELECT record_json, expires_at_ms, challenge_id
614
- FROM email_otp_challenges
615
- ${ACTIVE_CHALLENGE_CONTEXT_SQL}
616
- ORDER BY expires_at_ms DESC, created_at_ms DESC
617
- LIMIT 1`, challengeContextValues(input)).first();
618
- return this.recordOrDiscard(row, row?.challenge_id);
619
- }
620
- async deleteOldestActiveByContext(input) {
621
- await this.ensureSchema();
622
- const row = await this.prepare(`WITH oldest AS (
623
- SELECT challenge_id
624
- FROM email_otp_challenges
625
- WHERE namespace = ?
626
- AND org_id = ?
627
- AND project_id = ?
628
- AND env_id = ?
629
- AND expires_at_ms > ?
630
- AND challenge_subject_id = ?
631
- AND wallet_id = ?
632
- AND record_org_id = ?
633
- AND otp_channel = ?
634
- AND owner_proof_binding_digest = ?
635
- AND action = ?
636
- AND operation = ?
637
- ORDER BY created_at_ms ASC, expires_at_ms ASC
638
- LIMIT 1
639
- )
640
- DELETE FROM email_otp_challenges
641
- WHERE namespace = ?
642
- AND org_id = ?
643
- AND project_id = ?
644
- AND env_id = ?
645
- AND challenge_id IN (SELECT challenge_id FROM oldest)
646
- RETURNING record_json, expires_at_ms, challenge_id`, [
647
- ...challengeContextValues(input),
648
- this.table.scope.namespace,
649
- this.table.scope.orgId,
650
- this.table.scope.projectId,
651
- this.table.scope.envId
652
- ]).first();
653
- return this.recordOrDiscard(row, row?.challenge_id);
654
- }
655
- async findActiveByContext(input) {
656
- await this.ensureSchema();
657
- const row = await this.prepare(`SELECT record_json, expires_at_ms, challenge_id
658
- FROM email_otp_challenges
659
- ${ACTIVE_CHALLENGE_CONTEXT_SQL}
660
- AND otp_code = ?
661
- ORDER BY expires_at_ms DESC
662
- LIMIT 1`, [...challengeContextValues(input), input.otpCode]).first();
663
- return this.recordOrDiscard(row, row?.challenge_id);
664
- }
665
- del(challengeId) {
666
- return this.deleteById(challengeId, emailOtpChallengeRows.delete);
667
- }
668
- };
669
- var D1EmailOtpGrantStore = class extends D1EmailOtpStore {
670
- constructor(database, scope) {
671
- super(database, scope, GRANT_RECORD, {
672
- fromRow: grantFromRow,
673
- upsert: emailOtpGrantRows.upsert
674
- });
675
- }
676
- get(grantToken) {
677
- return this.getById(grantToken, emailOtpGrantRows.select);
678
- }
679
- consume(grantToken) {
680
- return this.consumeById(grantToken, emailOtpGrantRows.consume);
681
- }
682
- del(grantToken) {
683
- return this.deleteById(grantToken, emailOtpGrantRows.delete);
684
- }
685
- };
686
- var D1EmailOtpWalletEnrollmentStore = class extends D1EmailOtpStore {
687
- constructor(database, scope) {
688
- super(database, scope, WALLET_ENROLLMENT_RECORD, {
689
- fromRow: walletEnrollmentFromRow,
690
- upsert: emailOtpWalletEnrollmentRows.upsert
691
- });
692
- }
693
- async get(walletId) {
694
- await this.ensureSchema();
695
- const key = normalizeOptionalTrimmedString(walletId);
696
- if (!key) return null;
697
- const row = await this.prepare(`SELECT record_json, updated_at_ms, wallet_id
698
- FROM email_otp_wallet_enrollments
699
- WHERE namespace = ?
700
- AND org_id = ?
701
- AND project_id = ?
702
- AND env_id = ?
703
- AND wallet_id = ?
704
- LIMIT 1`, [key]).first();
705
- return row ? this.recordOrDiscard(row, key) : null;
706
- }
707
- async getByProviderUserId(input) {
708
- await this.ensureSchema();
709
- const providerUserId = normalizeOptionalTrimmedString(input.providerUserId);
710
- const orgId = normalizeOptionalTrimmedString(input.orgId);
711
- if (!providerUserId || !orgId) return null;
712
- const row = await this.prepare(`SELECT record_json, updated_at_ms, wallet_id
713
- FROM email_otp_wallet_enrollments
714
- WHERE namespace = ?
715
- AND org_id = ?
716
- AND project_id = ?
717
- AND env_id = ?
718
- AND record_org_id = ?
719
- AND provider_user_id = ?
720
- ORDER BY updated_at_ms DESC
721
- LIMIT 1`, [orgId, providerUserId]).first();
722
- return this.recordOrDiscard(row, row?.wallet_id);
723
- }
724
- del(walletId) {
725
- return this.deleteById(walletId, emailOtpWalletEnrollmentRows.delete);
726
- }
727
- };
728
- var D1EmailOtpAuthStateStore = class extends D1EmailOtpStore {
729
- constructor(database, scope) {
730
- super(database, scope, AUTH_STATE_RECORD, {
731
- fromRow: authStateFromRow,
732
- upsert: emailOtpAuthStateRows.upsert
733
- });
734
- }
735
- get(walletId) {
736
- return this.getById(walletId, emailOtpAuthStateRows.select);
737
- }
738
- async del(walletId) {
739
- await this.ensureSchema();
740
- const key = normalizeOptionalTrimmedString(walletId);
741
- if (!key) return;
742
- await this.prepare(`DELETE FROM email_otp_auth_states
743
- WHERE namespace = ?
744
- AND org_id = ?
745
- AND project_id = ?
746
- AND env_id = ?
747
- AND wallet_id = ?`, [key]).run();
748
- }
749
- };
750
- var D1EmailOtpUnlockChallengeStore = class extends D1EmailOtpStore {
751
- constructor(database, scope) {
752
- super(database, scope, UNLOCK_CHALLENGE_RECORD, {
753
- fromRow: unlockChallengeFromRow,
754
- upsert: emailOtpUnlockChallengeRows.upsert
755
- });
756
- }
757
- consume(challengeId) {
758
- return this.consumeById(challengeId, emailOtpUnlockChallengeRows.consume);
759
- }
760
- async del(challengeId) {
761
- await this.ensureSchema();
762
- const id = normalizeOptionalTrimmedString(challengeId);
763
- if (!id) return;
764
- await this.prepare(`DELETE FROM email_otp_unlock_challenges
765
- WHERE namespace = ?
766
- AND org_id = ?
767
- AND project_id = ?
768
- AND env_id = ?
769
- AND challenge_id = ?`, [id]).run();
770
- }
771
- };
772
- var D1EmailOtpRegistrationAttemptStore = class extends D1EmailOtpStore {
773
- constructor(database, scope) {
774
- super(database, scope, REGISTRATION_ATTEMPT_RECORD, {
775
- fromRow: registrationAttemptFromRow,
776
- upsert: emailOtpRegistrationAttemptRows.upsert
777
- });
778
- }
779
- get(attemptId) {
780
- return this.getById(attemptId, emailOtpRegistrationAttemptRows.select);
781
- }
782
- async findStartedBySubjectEmail(input) {
783
- await this.ensureSchema();
784
- const row = await emailOtpRegistrationAttemptRows.selectStarted(this.prepare, input).first();
785
- const record = await this.recordOrDiscard(row, row?.attempt_id);
786
- return record && registrationAttemptMatchesStartedScope(record, input) ? record : null;
787
- }
788
- async abandonStartedBySubjectEmailExceptBinding(input) {
789
- await this.ensureSchema();
790
- const result = await emailOtpRegistrationAttemptRows.selectPending(this.prepare, input).all();
791
- let abandoned = 0;
792
- for (const row of result.results || []) {
793
- const record = await this.recordOrDiscard(row, row.attempt_id);
794
- if (!record || !registrationAttemptMatchesReplacementScope(record, input)) continue;
795
- await this.put({
796
- ...record,
797
- state: "abandoned",
798
- failureCode: input.failureCode,
799
- updatedAtMs: input.nowMs
800
- });
801
- abandoned += 1;
802
- }
803
- return abandoned;
804
- }
805
- async hasLiveStartedWalletAttempt(input) {
806
- await this.ensureSchema();
807
- const walletId = normalizeOptionalTrimmedString(input.walletId);
808
- if (!walletId) return false;
809
- const row = await emailOtpRegistrationAttemptRows.selectLiveForWallet(this.prepare, walletId, input.nowMs).first();
810
- return Boolean(row);
811
- }
812
- async deleteExpired(nowMs) {
813
- await this.ensureSchema();
814
- return d1ChangedRows(await emailOtpRegistrationAttemptRows.deleteExpired(this.prepare, nowMs).run());
815
- }
816
- del(attemptId) {
817
- return this.deleteById(attemptId, emailOtpRegistrationAttemptRows.delete);
818
- }
819
- };
820
- function createEmailOtpChallengeStore(input) {
821
- return createEmailOtpStore(input, "challenge", {
822
- d1: (database, scope) => new D1EmailOtpChallengeStore(database, scope),
823
- inMemory: () => new InMemoryEmailOtpChallengeStore()
824
- });
825
- }
826
- function createEmailOtpGrantStore(input) {
827
- return createEmailOtpStore(input, "grant", {
828
- d1: (database, scope) => new D1EmailOtpGrantStore(database, scope),
829
- inMemory: () => new InMemoryEmailOtpStore(GRANT_RECORD)
830
- });
831
- }
832
- function createEmailOtpWalletEnrollmentStore(input) {
833
- return createEmailOtpStore(input, "wallet enrollment", {
834
- d1: (database, scope) => new D1EmailOtpWalletEnrollmentStore(database, scope),
835
- inMemory: () => new InMemoryEmailOtpWalletEnrollmentStore()
836
- }, "enrollment");
837
- }
838
- function createEmailOtpAuthStateStore(input) {
839
- return createEmailOtpStore(input, "auth state", {
840
- d1: (database, scope) => new D1EmailOtpAuthStateStore(database, scope),
841
- inMemory: () => new InMemoryEmailOtpStore(AUTH_STATE_RECORD)
842
- });
843
- }
844
- function createEmailOtpUnlockChallengeStore(input) {
845
- return createEmailOtpStore(input, "unlock challenge", {
846
- d1: (database, scope) => new D1EmailOtpUnlockChallengeStore(database, scope),
847
- inMemory: () => new InMemoryEmailOtpStore(UNLOCK_CHALLENGE_RECORD)
848
- });
849
- }
850
- function createEmailOtpRegistrationAttemptStore(input) {
851
- return createEmailOtpStore(input, "registration attempt", {
852
- d1: (database, scope) => new D1EmailOtpRegistrationAttemptStore(database, scope),
853
- inMemory: () => new InMemoryEmailOtpRegistrationAttemptStore()
854
- });
855
- }
856
- //#endregion
857
- export { createEmailOtpAuthStateStore, createEmailOtpChallengeStore, createEmailOtpGrantStore, createEmailOtpRegistrationAttemptStore, createEmailOtpUnlockChallengeStore, createEmailOtpWalletEnrollmentStore };
858
-
859
- //# sourceMappingURL=EmailOtpStores.js.map