@seams/wallet-server 0.6.2 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/THIRD_PARTY_NOTICES.md +1 -105
- package/artifact-manifest.json +147 -32
- package/cloudflare-router-ab/build/deriver-a/build-stamp.json +1 -0
- package/cloudflare-router-ab/build/deriver-a/index.js +2 -2
- package/cloudflare-router-ab/build/deriver-a/index_bg.wasm +0 -0
- package/cloudflare-router-ab/build/deriver-b/build-stamp.json +1 -0
- package/cloudflare-router-ab/build/deriver-b/index.js +2 -2
- package/cloudflare-router-ab/build/deriver-b/index_bg.wasm +0 -0
- package/cloudflare-router-ab/build/local-tools/darwin-arm64/router_ab_local_init +0 -0
- package/cloudflare-router-ab/build/local-tools/darwin-x64/router_ab_local_init +0 -0
- package/cloudflare-router-ab/build/local-tools/linux-x64/router_ab_local_init +0 -0
- package/cloudflare-router-ab/build/router/build-stamp.json +1 -0
- package/cloudflare-router-ab/build/router/index.js +2 -2
- package/cloudflare-router-ab/build/router/index_bg.wasm +0 -0
- package/cloudflare-router-ab/build/signing-worker/build-stamp.json +1 -0
- package/cloudflare-router-ab/build/signing-worker/index.js +2 -2
- package/cloudflare-router-ab/build/signing-worker/index_bg.wasm +0 -0
- package/cloudflare-router-ab/build/tenant-root-control-plane/build-stamp.json +1 -0
- package/cloudflare-router-ab/build/tenant-root-control-plane/index.js +2 -2
- package/cloudflare-router-ab/build/tenant-root-control-plane/index_bg.wasm +0 -0
- package/cloudflare-router-ab/migrations/deriver-a/0012_tenant_root_creation_tombstones.sql +20 -0
- package/cloudflare-router-ab/migrations/deriver-a/0013_tenant_root_root_use_admissions.sql +32 -0
- package/cloudflare-router-ab/migrations/deriver-a/0014_tenant_root_refresh_supersessions.sql +24 -0
- package/cloudflare-router-ab/migrations/deriver-a/0015_tenant_root_root_use_attempts.sql +56 -0
- package/cloudflare-router-ab/migrations/deriver-a/0016_tenant_root_root_use_admission_settlement.sql +5 -0
- package/cloudflare-router-ab/migrations/deriver-a/0017_tenant_root_root_use_admission_claims.sql +64 -0
- package/cloudflare-router-ab/migrations/deriver-a/0018_tenant_root_recovery_retention_keys.sql +12 -0
- package/cloudflare-router-ab/migrations/deriver-b/0012_tenant_root_creation_tombstones.sql +20 -0
- package/cloudflare-router-ab/migrations/deriver-b/0013_tenant_root_root_use_admissions.sql +32 -0
- package/cloudflare-router-ab/migrations/deriver-b/0014_tenant_root_refresh_supersessions.sql +24 -0
- package/cloudflare-router-ab/migrations/deriver-b/0015_tenant_root_root_use_attempts.sql +56 -0
- package/cloudflare-router-ab/migrations/deriver-b/0016_tenant_root_root_use_admission_settlement.sql +5 -0
- package/cloudflare-router-ab/migrations/deriver-b/0017_tenant_root_root_use_admission_claims.sql +64 -0
- package/cloudflare-router-ab/migrations/deriver-b/0018_tenant_root_recovery_retention_keys.sql +12 -0
- package/cloudflare-router-ab/scripts/bootstrap-local-tenant-root.mjs +81 -16
- package/cloudflare-router-ab/scripts/prepare-local-runtime-config.mjs +102 -9
- package/cloudflare-router-ab/scripts/start-local-role-workers.mjs +4 -1
- package/cloudflare-router-ab/wrangler.deriver-a.toml +24 -0
- package/cloudflare-router-ab/wrangler.router.toml +13 -0
- package/dist/esm/authorization/capabilityPolicy.js +1 -1
- package/dist/esm/authorization/domain.js +2 -2
- package/dist/esm/authorization/factorEvidence.js +6 -100
- package/dist/esm/authorization/service.js +42 -2
- package/dist/esm/authorization/vaultProxyUse.js +5 -10
- package/dist/esm/cloud-host.js +17 -12
- package/dist/esm/core/EmailOtpRecords.js +19 -1
- package/dist/esm/core/EmailOtpStores.js +323 -924
- package/dist/esm/core/IdentityStore.js +67 -345
- package/dist/esm/core/NearPublicKeyStore.js +21 -63
- package/dist/esm/core/RegistrationCeremonyStore.js +3 -1793
- package/dist/esm/core/SessionService.js +7 -30
- package/dist/esm/core/ThresholdService/config.js +1 -82
- package/dist/esm/core/ThresholdService/kv.js +3 -3
- package/dist/esm/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.js +37 -5
- package/dist/esm/core/ThresholdService/routerAb/ecdsaDerivationPresignBridge.js +4 -74
- package/dist/esm/core/ThresholdService/routerAbNormalSigningPolicy.js +3 -10
- package/dist/esm/core/ThresholdService/stores/CloudflareDurableObjectStore.js +15 -51
- package/dist/esm/core/ThresholdService/stores/KeyStore.js +3 -3
- package/dist/esm/core/ThresholdService/stores/SessionStore.js +5 -81
- package/dist/esm/core/ThresholdService/stores/WalletSessionStore.js +191 -372
- package/dist/esm/core/ThresholdService/stores/exportReplayGuard.js +7 -0
- package/dist/esm/core/ThresholdService/validation.js +18 -230
- package/dist/esm/core/WalletAuthMethodStore.js +22 -79
- package/dist/esm/core/WalletStore.js +62 -191
- package/dist/esm/core/WebAuthnAuthenticatorStore.js +57 -340
- package/dist/esm/core/WebAuthnCredentialBindingStore.js +90 -369
- package/dist/esm/core/WebAuthnLoginChallengeStore.js +17 -397
- package/dist/esm/core/WebAuthnSyncChallengeStore.js +17 -397
- package/dist/esm/core/authService/AuthService.js +2 -19
- package/dist/esm/core/authService/bytes.js +1 -4
- package/dist/esm/core/authService/emailOtpChallengeOperations.js +2 -5
- package/dist/esm/core/authService/emailOtpChallengeProof.js +10 -41
- package/dist/esm/core/authService/emailOtpChallengeVerification.js +19 -90
- package/dist/esm/core/authService/emailOtpChallenges.js +11 -46
- package/dist/esm/core/authService/emailOtpConfig.js +1 -32
- package/dist/esm/core/authService/emailOtpDelivery.js +10 -45
- package/dist/esm/core/authService/emailOtpEnrollment.js +9 -40
- package/dist/esm/core/authService/emailOtpGrant.js +9 -40
- package/dist/esm/core/authService/emailOtpRegistrationEnrollment.js +15 -193
- package/dist/esm/core/authService/emailOtpSeal.js +5 -20
- package/dist/esm/core/authService/emailOtpUnlock.js +20 -110
- package/dist/esm/core/authService/googleEmailOtpRegistration.js +29 -116
- package/dist/esm/core/authService/identity.js +5 -20
- package/dist/esm/core/authService/nearPrivateKeySigning.js +7 -15
- package/dist/esm/core/authService/nearPublicKeyMetadata.js +6 -25
- package/dist/esm/core/authService/nearTransactions.js +2 -1
- package/dist/esm/core/authService/oidcVerification.js +25 -38
- package/dist/esm/core/authService/rateLimits.js +3 -36
- package/dist/esm/core/authService/registrationThresholdHelpers.js +2 -103
- package/dist/esm/core/authService/storeRegistry.js +2 -13
- package/dist/esm/core/authService/thresholdEcdsaKeyInventory.js +6 -6
- package/dist/esm/core/authService/webauthn.js +52 -241
- package/dist/esm/core/authService/webauthnOidcHelpers.js +1 -6
- package/dist/esm/core/authService/webauthnVerificationOutcomes.js +41 -0
- package/dist/esm/core/authService/webauthnWalletBinding.js +2 -122
- package/dist/esm/core/d1EcdsaSignerRead.js +76 -0
- package/dist/esm/core/d1IdentityStore.js +46 -139
- package/dist/esm/core/d1TenantStore.js +82 -0
- package/dist/esm/core/d1WalletAuthMethodStore.js +92 -143
- package/dist/esm/core/d1WalletStore.js +28 -36
- package/dist/esm/core/deviceLinking/linkedDeviceEmailOtpGrant.js +10 -12
- package/dist/esm/core/deviceLinking/linkedDeviceManagement.js +25 -3
- package/dist/esm/core/deviceLinking/linkedDeviceSession.js +6 -895
- package/dist/esm/core/deviceLinking/linkedDeviceSessionApproval.js +100 -0
- package/dist/esm/core/deviceLinking/linkedDeviceSessionRecord.js +662 -0
- package/dist/esm/core/deviceLinking/requestProof.js +13 -4
- package/dist/esm/core/ecdsaMaterialReadSnapshot.js +85 -0
- package/dist/esm/core/emailOtpD1Statements.js +383 -0
- package/dist/esm/core/hostedAccountIds.js +2 -2
- package/dist/esm/core/keyMaterialBrands.js +2 -48
- package/dist/esm/core/nearRelayerAccountProvisioning.js +27 -155
- package/dist/esm/core/nearSignerWasmRuntime.js +1 -4
- package/dist/esm/core/rpcClients/near/NearClient.js +15 -218
- package/dist/esm/core/signingLanes/LaneEnrollmentActivation.js +1 -1
- package/dist/esm/core/signingLanes/LaneLifecycleApplicationService.js +2 -4
- package/dist/esm/core/signingLanes/LaneLifecycleStore.js +0 -24
- package/dist/esm/core/signingLanes/WalletExecutionLaneProjection.js +8 -11
- package/dist/esm/core/signingLanes/ecdsaServerRetirement.js +3 -8
- package/dist/esm/core/signingLanes/ed25519ServerRetirement.js +1 -4
- package/dist/esm/core/signingMaterial/ordinaryInactiveSignerMaterialReservation.js +2 -5
- package/dist/esm/core/storeBackends.js +208 -0
- package/dist/esm/core/thresholdEcdsaChainTarget.js +2 -10
- package/dist/esm/core/webAuthnD1Statements.js +92 -0
- package/dist/esm/core/webAuthnStoreBackends.js +198 -0
- package/dist/esm/hosted-wallet-gateway.js +34 -17
- package/dist/esm/index.js +2 -2
- package/dist/esm/local-hosted-wallet-gateway-worker.js +2 -23
- package/dist/esm/localHostedWalletGatewayHandler.js +312 -0
- package/dist/esm/localIntendedEcdsaFinalizeFault.js +85 -0
- package/dist/esm/localIntendedLinkExecuteFault.js +140 -0
- package/dist/esm/localIntendedMaterialAdmissionFault.js +176 -0
- package/dist/esm/localIntendedPresignCancellation.js +44 -0
- package/dist/esm/localIntendedRevokeFault.js +106 -0
- package/dist/esm/localIntendedSessionAdmissionFault.js +139 -0
- package/dist/esm/localIntendedYaoExportFault.js +117 -0
- package/dist/esm/localIntendedYaoFault.js +13 -16
- package/dist/esm/localIntendedYaoFinalizeFault.js +99 -0
- package/dist/esm/localIntendedYaoRecoveryFault.js +102 -0
- package/dist/esm/localIntendedYaoSigningFault.js +127 -0
- package/dist/esm/router/auth/authRequestValidation.js +1 -1
- package/dist/esm/router/auth/commonRouterUtils.js +34 -12
- package/dist/esm/router/auth/walletSessionFailure.js +3 -19
- package/dist/esm/router/auth/webAuthnCredentialCodecs.js +4 -15
- package/dist/esm/router/cloudflare/d1/auth/d1AuthorizedOperationRouteService.js +24 -0
- package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthBoundary.js +2 -6
- package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthService.js +87 -89
- package/dist/esm/router/cloudflare/d1/auth/walletSessionCredentialReaders.js +76 -0
- package/dist/esm/router/cloudflare/d1/authorization/authorizedOperationStatements.js +215 -0
- package/dist/esm/router/cloudflare/d1/authorization/d1AuthorizationStore.js +423 -308
- package/dist/esm/router/cloudflare/d1/authorization/d1VaultProxyStore.js +8 -12
- package/dist/esm/router/cloudflare/d1/authorization/persistedWalletSessionAuthorization.js +14 -0
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.js +107 -66
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpGrantStore.js +3 -6
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpTargetFactor.js +1 -19
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceManagementService.js +4 -3
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceOwnerAuthorizationProvider.js +52 -9
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRequestProofNonceStore.js +3 -6
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRevocation.js +100 -0
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionRecords.js +7 -10
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionStore.js +33 -124
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSourceContributionPreparationPlanner.js +2 -2
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetCredentialProvider.js +10 -18
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceVerifiedLinkBuilder.js +6 -6
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceVerifiedLinkSourceReader.js +3 -1
- package/dist/esm/router/cloudflare/d1/deviceLinking/index.js +4 -4
- package/dist/esm/router/cloudflare/d1/deviceLinking/installedEcdsaAuthority.js +69 -0
- package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoCapabilityPersistence.js +39 -68
- package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoLifecycleDecisionStore.js +69 -0
- package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.js +2 -2
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeIssuer.js +12 -55
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeService.js +17 -80
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.js +26 -71
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeVerifier.js +20 -3
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpDeliveryRuntime.js +6 -25
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpEnrollmentStore.js +7 -94
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpGrantStore.js +5 -47
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.js +38 -170
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecoveryService.js +24 -87
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRegistrationEnrollmentFinalizer.js +9 -32
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpServerSealRuntime.js +5 -20
- package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore.js +15 -134
- package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationRecords.js +54 -260
- package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.js +24 -111
- package/dist/esm/router/cloudflare/d1/identity/d1IdentityRecords.js +1 -28
- package/dist/esm/router/cloudflare/d1/identity/d1IdentityService.js +9 -40
- package/dist/esm/router/cloudflare/d1/near/d1NearPublicKeyStore.js +5 -18
- package/dist/esm/router/cloudflare/d1/oidc/d1OidcBoundary.js +18 -91
- package/dist/esm/router/cloudflare/d1/oidc/d1OidcVerificationService.js +6 -30
- package/dist/esm/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyEnvelopeStore.js +1 -1
- package/dist/esm/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyRouteService.js +7 -18
- package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.js +25 -80
- package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpRecords.js +24 -15
- package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpService.js +23 -253
- package/dist/esm/router/cloudflare/d1/registration/d1EvmFamilyEcdsaRegistrationBranch.js +5 -20
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.js +20 -39
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.js +31 -73
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.js +4 -1
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationIntentService.js +10 -31
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.js +6 -30
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationService.js +286 -220
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetup.js +5 -3
- package/dist/esm/router/cloudflare/d1/registration/walletRegistrationEstablishedSessionIssuer.js +2 -2
- package/dist/esm/router/cloudflare/d1/registration/walletRegistrationSessionCommitReceipt.js +4 -7
- package/dist/esm/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.js +139 -27
- package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneEffectJournalStore.js +0 -1
- package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLifecycleStore.js +1 -1
- package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneRecords.js +2 -1
- package/dist/esm/router/cloudflare/d1/versionedJson/d1VersionedJsonRecordStore.js +2 -60
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerService.js +158 -19
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodBoundary.js +19 -49
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodRevocationReplayStore.js +100 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodService.js +132 -33
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorityStore.js +83 -4
- package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.js +45 -217
- package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnRecords.js +10 -13
- package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnStore.js +22 -116
- package/dist/esm/router/cloudflare/durableObjects/thresholdStore.js +59 -66
- package/dist/esm/router/cloudflare/runtime/createSelfHostedCloudflareSigningWorker.js +1 -2
- package/dist/esm/router/cloudflare/runtime/routerAbPrewarm.js +2 -2
- package/dist/esm/router/cloudflare/runtime/staticWalletConsoleBinding.js +5 -20
- package/dist/esm/router/cloudflare/runtime/tenantRootCreationGrant.js +2 -9
- package/dist/esm/router/cloudflare/runtime/walletConsoleTenantRootLineage.js +11 -2
- package/dist/esm/router/cloudflare/runtime/walletControlOps.js +2 -1
- package/dist/esm/router/cloudflare/runtime/walletGateway.js +1 -1
- package/dist/esm/router/cloudflare/signingLanes/cloudflareLaneCurveExecution.js +7 -7
- package/dist/esm/router/cloudflare/signingLanes/cloudflareLaneProtocolCommitter.js +4 -3
- package/dist/esm/router/cloudflare/signingLanes/cloudflareOrdinaryInactiveSignerMaterialReservation.js +48 -21
- package/dist/esm/router/cloudflare.js +13343 -14372
- package/dist/esm/router/domains/ecdsa/routerAbEcdsaStrictRegistration.js +16 -5
- package/dist/esm/router/domains/ecdsa/thresholdEcdsaRequestValidation.js +2 -8
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoLifecycleDecision.js +33 -0
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js +17 -9
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.js +29 -431
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitioning.js +7 -2
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPersistence.js +5 -8
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRunner.js +2 -1
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRuntime.js +70 -2
- package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.js +134 -169
- package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExportRequestScopedCloudflare.js +77 -162
- package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecovery.js +205 -51
- package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryRequestScopedCloudflare.js +29 -11
- package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryWalletSessionAuthorization.js +3 -6
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoHttpRegistrationBackend.js +182 -55
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistration.js +2 -1
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationExecutionRecord.js +63 -247
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationIntentAuthorization.js +9 -27
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationRequestScopedCloudflare.js +87 -132
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.js +39 -55
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationTwoPhaseRunner.js +5 -4
- package/dist/esm/router/domains/ed25519Yao/routerAbEd25519YaoGatewayEnvelope.js +45 -0
- package/dist/esm/router/domains/ed25519Yao/session/thresholdEd25519RequestValidation.js +1 -1
- package/dist/esm/router/domains/emailOtp/emailOtpExportPolicy.js +1 -42
- package/dist/esm/router/domains/emailOtp/emailOtpRequestValidation.js +1 -6
- package/dist/esm/router/domains/emailOtp/emailOtpRouteHandlers.js +15 -62
- package/dist/esm/router/domains/emailOtp/emailOtpSessionRouteHelpers.js +1 -142
- package/dist/esm/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrievalRoute.js +1 -1
- package/dist/esm/router/domains/passkeyCustody/walletCustodyRegistrationCommit.js +2 -2
- package/dist/esm/router/domains/passkeyCustody/walletRecoveryFinalization.js +23 -45
- package/dist/esm/router/domains/passkeyCustody/walletRecoveryKeyManifest.js +5 -5
- package/dist/esm/router/domains/signingOperations/ed25519AuthorizedOperationReceipt.js +1 -1
- package/dist/esm/router/domains/signingOperations/routerAbEcdsaDerivationNormalSigningRoute.js +836 -0
- package/dist/esm/router/domains/signingOperations/routerAbEd25519NormalSigningRoute.js +698 -0
- package/dist/esm/router/domains/signingOperations/routerAbNormalSigningAdmission.js +210 -0
- package/dist/esm/router/domains/signingOperations/routerAbNormalSigningAdmissionCore.js +16 -15
- package/dist/esm/router/domains/signingOperations/routerAbOperationStepUp.js +314 -0
- package/dist/esm/router/domains/signingOperations/routerAbPrivateSigningWorker.js +62 -2159
- package/dist/esm/router/domains/signingOperations/walletExecutionAdmission.js +1 -4
- package/dist/esm/router/domains/tenantRoot/tenantRootIdentityResolution.js +8 -14
- package/dist/esm/router/domains/walletRegistration/walletRegistrationRoutes.js +18 -22
- package/dist/esm/router/domains/walletRegistration/walletRegistrationSetupPayload.js +3 -4
- package/dist/esm/router/domains/walletUnlock/walletUnlockRequestedCapabilitiesValidation.js +2 -2
- package/dist/esm/router/domains/walletUnlock/walletUnlockRouteHandlers.js +127 -339
- package/dist/esm/router/express.js +7172 -7997
- package/dist/esm/router/framework/http.js +5 -4
- package/dist/esm/router/framework/ror/normalize.js +1 -1
- package/dist/esm/router/framework/routerApiRouteSurface.js +1 -1
- package/dist/esm/router/framework/runtimeSnapshotConsumer.js +8 -35
- package/dist/esm/router/node/nodeHostedWalletGateway.js +64 -0
- package/dist/esm/router/node/nodeHostedWalletGatewayCheck.js +163 -0
- package/dist/esm/router/node/nodeHostedWalletGatewayMain.js +120 -0
- package/dist/esm/router/node/nodeHttp.js +79 -0
- package/dist/esm/router/node/nodeSqlite.js +43 -0
- package/dist/esm/router/node/signerSqlMigrations.js +48 -0
- package/dist/esm/router/transport/fetch/createFetchRouter.js +4 -7
- package/dist/esm/router/transport/fetch/routes/auth.js +9 -41
- package/dist/esm/router/transport/fetch/routes/deviceLinking.js +16 -18
- package/dist/esm/router/transport/fetch/routes/deviceLinkingOwnerAuthorization.js +8 -27
- package/dist/esm/router/transport/fetch/routes/deviceManagement.js +15 -24
- package/dist/esm/router/transport/fetch/routes/nearPublicKeys.js +4 -16
- package/dist/esm/router/transport/fetch/routes/normalSigningRouterProxy.js +3 -16
- package/dist/esm/router/transport/fetch/routes/passkeyCustody.js +144 -461
- package/dist/esm/router/transport/fetch/routes/sessions.js +5 -4
- package/dist/esm/router/transport/fetch/routes/syncAccount.js +12 -42
- package/dist/esm/router/transport/fetch/routes/syncAccountBootstrap.js +2 -2
- package/dist/esm/router/transport/fetch/routes/thresholdEcdsa.js +96 -102
- package/dist/esm/router/transport/fetch/routes/thresholdEd25519.js +52 -27
- package/dist/esm/router/transport/fetch/routes/walletExecutionLanePreflight.js +4 -1
- package/dist/esm/router/transport/fetch/routes/webauthnAuthenticators.js +4 -16
- package/dist/esm/shared-ts/src/authorization/capabilityKinds.js +1 -1
- package/dist/esm/shared-ts/src/authorization/delegatedAuthority.js +1 -1
- package/dist/esm/shared-ts/src/authorization/operationFingerprint.js +1 -2
- package/dist/esm/shared-ts/src/authorization/walletAuthority.js +99 -227
- package/dist/esm/shared-ts/src/authorization/walletCustodyOperation.js +4 -6
- package/dist/esm/shared-ts/src/authorization/walletSignerActivationEquality.js +12 -0
- package/dist/esm/shared-ts/src/device-linking/activeWalletSession.js +74 -0
- package/dist/esm/shared-ts/src/device-linking/authorityActivation.js +50 -0
- package/dist/esm/shared-ts/src/device-linking/committedSignerPackages.js +10 -14
- package/dist/esm/shared-ts/src/device-linking/delegatedActivationPlan.js +3 -5
- package/dist/esm/shared-ts/src/device-linking/deviceManagement.js +55 -0
- package/dist/esm/shared-ts/src/device-linking/digests.js +10 -65
- package/dist/esm/shared-ts/src/device-linking/ed25519ExportRoot.js +14 -16
- package/dist/esm/shared-ts/src/device-linking/index.js +4 -1
- package/dist/esm/shared-ts/src/device-linking/parsers.js +510 -1063
- package/dist/esm/shared-ts/src/device-linking/requestProof.js +5 -14
- package/dist/esm/shared-ts/src/device-linking/sourceContribution.js +10 -16
- package/dist/esm/shared-ts/src/device-linking/walletSessionCredentialDelivery.js +9 -9
- package/dist/esm/shared-ts/src/device-linking/wireFields.js +59 -0
- package/dist/esm/shared-ts/src/near/nearClient.js +252 -0
- package/dist/esm/shared-ts/src/passkey-custody/credentialActivity.js +3 -1
- package/dist/esm/shared-ts/src/passkey-custody/custodyEnvelope.js +7 -5
- package/dist/esm/shared-ts/src/passkey-custody/custodySecretBinding.js +6 -4
- package/dist/esm/shared-ts/src/passkey-custody/primitives.js +9 -39
- package/dist/esm/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.js +1 -5
- package/dist/esm/shared-ts/src/signing-lanes/index.js +3 -3
- package/dist/esm/shared-ts/src/signing-lanes/ownerContinuity.js +8 -19
- package/dist/esm/shared-ts/src/signing-lanes/participantDigest.js +5 -14
- package/dist/esm/shared-ts/src/signing-lanes/participants.js +2 -5
- package/dist/esm/shared-ts/src/signing-lanes/recordParsers.js +7 -5
- package/dist/esm/shared-ts/src/signing-lanes/rotationDigests.js +6 -45
- package/dist/esm/shared-ts/src/signing-lanes/rotationParsers.js +423 -1511
- package/dist/esm/shared-ts/src/signing-lanes/rotationProtocolParsers.js +323 -0
- package/dist/esm/shared-ts/src/signing-lanes/rotationWireFields.js +59 -0
- package/dist/esm/shared-ts/src/tenant-root/tenantRootIdentifier.js +12 -0
- package/dist/esm/shared-ts/src/tenant-root/tenantRootIdentity.js +2 -9
- package/dist/esm/shared-ts/src/tenant-root/tenantRootOperationRecord.js +2 -5
- package/dist/esm/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.js +1 -2
- package/dist/esm/shared-ts/src/threshold/keyMaterialBrands.js +49 -0
- package/dist/esm/shared-ts/src/utils/addAuthMethodRegistration.js +3 -4
- package/dist/esm/shared-ts/src/utils/canonicalPrimitives.js +8 -1
- package/dist/esm/shared-ts/src/utils/digestEncoding.js +63 -0
- package/dist/esm/shared-ts/src/utils/ecdsaKeyFactsInventory.js +2 -4
- package/dist/esm/shared-ts/src/utils/ecdsaServerTiming.js +0 -1
- package/dist/esm/shared-ts/src/utils/emailOtpDomain.js +5 -3
- package/dist/esm/shared-ts/src/utils/exactKeys.js +17 -0
- package/dist/esm/shared-ts/src/utils/exactRecord.js +44 -0
- package/dist/esm/shared-ts/src/utils/failure.js +20 -0
- package/dist/esm/shared-ts/src/utils/registrationAuthMethodInput.js +127 -0
- package/dist/esm/shared-ts/src/utils/registrationEstablishedSession.js +2 -2
- package/dist/esm/shared-ts/src/utils/registrationIds.js +280 -0
- package/dist/esm/shared-ts/src/utils/registrationIntent.js +7 -1182
- package/dist/esm/shared-ts/src/utils/registrationSignerPlan.js +426 -0
- package/dist/esm/shared-ts/src/utils/routerAbEcdsaDerivation.js +11 -136
- package/dist/esm/shared-ts/src/utils/routerAbEd25519Yao.js +3 -163
- package/dist/esm/shared-ts/src/utils/routerAbEd25519YaoDigests.js +160 -0
- package/dist/esm/shared-ts/src/utils/routerAbNormalSigningIdentity.js +1 -4
- package/dist/esm/shared-ts/src/utils/routerAbPublicKeyset.js +7 -15
- package/dist/esm/shared-ts/src/utils/thresholdEcdsaChainTarget.js +9 -0
- package/dist/esm/shared-ts/src/utils/validation.js +37 -6
- package/dist/esm/shared-ts/src/utils/walletAuthMethodRecord.js +362 -0
- package/dist/esm/shared-ts/src/utils/wireSchema.js +77 -0
- package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodeLocator.js +1 -1
- package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodeReservation.js +1 -1
- package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryCommittedProjection.js +8 -15
- package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryEcdsaPossession.js +4 -8
- package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryEnvelopeSet.js +3 -1
- package/dist/esm/storage/d1Sql.js +10 -1
- package/dist/esm/storage/syncSqlite.js +79 -0
- package/dist/esm/threshold/session/signingSessionSeal/crypto/cipher.js +11 -33
- package/dist/esm/threshold/session/signingSessionSeal/crypto/shamir3PassWasm.js +1 -1
- package/dist/esm/threshold/session/signingSessionSeal/idempotencyBackends.js +3 -3
- package/dist/esm/threshold/session/signingSessionSeal/idempotencyRecords.js +3 -10
- package/dist/esm/threshold/session/signingSessionSeal/options.js +1 -1
- package/dist/esm/threshold/session/signingSessionSeal/service.js +8 -35
- package/dist/esm/threshold/session/signingSessionSeal/transport/express.js +18 -94
- package/dist/esm/threshold/session/signingSessionSeal/transport/fetch.js +6 -30
- package/dist/esm/threshold/session/signingSessionSeal/transport/shared.js +23 -75
- package/dist/esm/threshold/statusCodes.js +1 -1
- package/dist/esm/wasm/evm_crypto/pkg/evm_crypto_bg.wasm +0 -0
- package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker.js +3 -3
- package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
- package/dist/types/shared-ts/src/authorization/capabilityKinds.d.ts +8 -26
- package/dist/types/shared-ts/src/authorization/delegatedAuthority.d.ts +2 -9
- package/dist/types/shared-ts/src/authorization/operationFingerprint.d.ts +1 -3
- package/dist/types/shared-ts/src/authorization/walletAuthority.d.ts +25 -12
- package/dist/types/shared-ts/src/authorization/walletSessionIssuance.d.ts +8 -0
- package/dist/types/shared-ts/src/authorization/walletSignerActivationEquality.d.ts +4 -0
- package/dist/types/shared-ts/src/device-linking/activeWalletSession.d.ts +3 -2
- package/dist/types/shared-ts/src/device-linking/authorityActivation.d.ts +5 -0
- package/dist/types/shared-ts/src/device-linking/committedSignerPackages.d.ts +4 -8
- package/dist/types/shared-ts/src/device-linking/contracts.d.ts +13 -74
- package/dist/types/shared-ts/src/device-linking/contracts.typecheck.d.ts +2 -1
- package/dist/types/shared-ts/src/device-linking/deviceManagement.d.ts +7 -0
- package/dist/types/shared-ts/src/device-linking/digests.d.ts +0 -5
- package/dist/types/shared-ts/src/device-linking/ed25519ExportRoot.d.ts +3 -2
- package/dist/types/shared-ts/src/device-linking/index.d.ts +2 -0
- package/dist/types/shared-ts/src/device-linking/parsers.d.ts +4 -41
- package/dist/types/shared-ts/src/device-linking/requestProof.d.ts +0 -1
- package/dist/types/shared-ts/src/device-linking/sourceContribution.d.ts +5 -2
- package/dist/types/shared-ts/src/device-linking/walletSessionCredentialDelivery.d.ts +2 -1
- package/dist/types/shared-ts/src/device-linking/wireFields.d.ts +26 -0
- package/dist/types/shared-ts/src/near/actions.d.ts +4 -4
- package/dist/types/shared-ts/src/near/delegate.d.ts +3 -2
- package/dist/types/shared-ts/src/near/nearClient.d.ts +145 -0
- package/dist/types/shared-ts/src/passkey-custody/ceremonyCommitPayload.d.ts +0 -22
- package/dist/types/shared-ts/src/passkey-custody/credentialActivity.d.ts +2 -4
- package/dist/types/shared-ts/src/passkey-custody/custodyEnvelope.d.ts +14 -30
- package/dist/types/shared-ts/src/passkey-custody/custodySecretBinding.d.ts +8 -24
- package/dist/types/shared-ts/src/passkey-custody/index.d.ts +0 -2
- package/dist/types/shared-ts/src/passkey-custody/primitives.d.ts +9 -14
- package/dist/types/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.d.ts +0 -15
- package/dist/types/shared-ts/src/signing-lanes/execution.d.ts +11 -50
- package/dist/types/shared-ts/src/signing-lanes/ids.d.ts +1 -10
- package/dist/types/shared-ts/src/signing-lanes/index.d.ts +1 -2
- package/dist/types/shared-ts/src/signing-lanes/ownerContinuity.d.ts +1 -2
- package/dist/types/shared-ts/src/signing-lanes/participantDigest.d.ts +5 -27
- package/dist/types/shared-ts/src/signing-lanes/participants.d.ts +0 -11
- package/dist/types/shared-ts/src/signing-lanes/recordParsers.d.ts +6 -53
- package/dist/types/shared-ts/src/signing-lanes/records.d.ts +1 -2
- package/dist/types/shared-ts/src/signing-lanes/rotation.d.ts +18 -42
- package/dist/types/shared-ts/src/signing-lanes/rotationDigests.d.ts +1 -20
- package/dist/types/shared-ts/src/signing-lanes/rotationLifecycle.d.ts +4 -25
- package/dist/types/shared-ts/src/signing-lanes/rotationParsers.d.ts +1 -41
- package/dist/types/shared-ts/src/signing-lanes/rotationProtocolParsers.d.ts +6 -0
- package/dist/types/shared-ts/src/signing-lanes/rotationWireFields.d.ts +20 -0
- package/dist/types/shared-ts/src/tenant-root/tenantRootIdentifier.d.ts +3 -0
- package/dist/types/shared-ts/src/tenant-root/tenantRootOperationRecord.d.ts +2 -1
- package/dist/types/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.d.ts +8 -35
- package/dist/types/shared-ts/src/threshold/ed25519OperationFingerprint.d.ts +8 -35
- package/dist/types/shared-ts/src/threshold/keyMaterialBrands.d.ts +25 -0
- package/dist/types/shared-ts/src/threshold/participants.d.ts +3 -9
- package/dist/types/shared-ts/src/threshold/secp256k1.d.ts +0 -37
- package/dist/types/shared-ts/src/threshold/sessionPolicy.d.ts +24 -0
- package/dist/types/shared-ts/src/threshold/signingRootScope.d.ts +3 -5
- package/dist/types/shared-ts/src/utils/addAuthMethodRegistration.d.ts +3 -4
- package/dist/types/shared-ts/src/utils/addWalletAuthMethod.d.ts +7 -108
- package/dist/types/shared-ts/src/utils/addWalletAuthMethod.typecheck.d.ts +16 -3
- package/dist/types/shared-ts/src/utils/canonicalPrimitives.d.ts +2 -0
- package/dist/types/shared-ts/src/utils/digestEncoding.d.ts +9 -0
- package/dist/types/shared-ts/src/utils/domainIds.d.ts +1 -2
- package/dist/types/shared-ts/src/utils/ecdsaKeyFactsInventory.d.ts +3 -13
- package/dist/types/shared-ts/src/utils/eip1559TxWasmJson.d.ts +16 -0
- package/dist/types/shared-ts/src/utils/emailOtpDomain.d.ts +7 -5
- package/dist/types/shared-ts/src/utils/emailOtpRecoveryKey.d.ts +0 -2
- package/dist/types/shared-ts/src/utils/errors.d.ts +0 -7
- package/dist/types/shared-ts/src/utils/exactKeys.d.ts +11 -0
- package/dist/types/shared-ts/src/utils/exactRecord.d.ts +12 -0
- package/dist/types/shared-ts/src/utils/failure.d.ts +12 -0
- package/dist/types/shared-ts/src/utils/index.d.ts +5 -2
- package/dist/types/shared-ts/src/utils/jsonRpc.d.ts +6 -6
- package/dist/types/shared-ts/src/utils/near.d.ts +2 -1
- package/dist/types/shared-ts/src/utils/nearRpcResults.d.ts +8 -7
- package/dist/types/shared-ts/src/utils/normalize.d.ts +0 -4
- package/dist/types/shared-ts/src/utils/registrationAuthMethodInput.d.ts +179 -0
- package/dist/types/shared-ts/src/utils/registrationContracts.d.ts +76 -0
- package/dist/types/shared-ts/src/utils/registrationEstablishedSession.d.ts +1 -2
- package/dist/types/shared-ts/src/utils/registrationIds.d.ts +56 -0
- package/dist/types/shared-ts/src/utils/registrationIntent.d.ts +9 -514
- package/dist/types/shared-ts/src/utils/registrationSignerPlan.d.ts +130 -0
- package/dist/types/shared-ts/src/utils/routerAbEcdsaDerivation.d.ts +24 -93
- package/dist/types/shared-ts/src/utils/routerAbEd25519Yao.d.ts +15 -99
- package/dist/types/shared-ts/src/utils/routerAbEd25519YaoDigests.d.ts +38 -0
- package/dist/types/shared-ts/src/utils/routerAbNormalSigningIdentity.d.ts +30 -8
- package/dist/types/shared-ts/src/utils/routerAbPublicKeyset.d.ts +10 -15
- package/dist/types/shared-ts/src/utils/routerAbTraceContext.d.ts +2 -1
- package/dist/types/shared-ts/src/utils/routerApiKeyAuth.d.ts +2 -0
- package/dist/types/shared-ts/src/utils/secureRandomId.d.ts +0 -2
- package/dist/types/shared-ts/src/utils/signerDomain.d.ts +3 -35
- package/dist/types/shared-ts/src/utils/signerSlot.d.ts +0 -4
- package/dist/types/shared-ts/src/utils/signingSessionSeal.d.ts +10 -17
- package/dist/types/shared-ts/src/utils/thresholdEcdsaChainTarget.d.ts +25 -0
- package/dist/types/shared-ts/src/utils/validation.d.ts +10 -10
- package/dist/types/shared-ts/src/utils/variant.d.ts +29 -0
- package/dist/types/shared-ts/src/utils/variant.typecheck.d.ts +22 -0
- package/dist/types/shared-ts/src/utils/walletAddSignerActivation.d.ts +2 -2
- package/dist/types/shared-ts/src/utils/walletAuthAuthority.d.ts +1 -58
- package/dist/types/shared-ts/src/utils/walletAuthMethodRecord.d.ts +101 -0
- package/dist/types/shared-ts/src/utils/walletCapabilityBindings.d.ts +3 -7
- package/dist/types/shared-ts/src/utils/webauthnDeviceInfo.d.ts +5 -4
- package/dist/types/shared-ts/src/utils/wireSchema.d.ts +60 -0
- package/dist/types/shared-ts/src/wallet-recovery/backupAcknowledgement.d.ts +2 -1
- package/dist/types/shared-ts/src/wallet-recovery/index.d.ts +0 -1
- package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeLocator.d.ts +0 -16
- package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeReservation.d.ts +2 -11
- package/dist/types/shared-ts/src/wallet-recovery/recoveryEnvelopes.d.ts +3 -16
- package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryCommittedProjection.d.ts +6 -18
- package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryEcdsaPossession.d.ts +0 -2
- package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryEnvelopeSet.d.ts +1 -3
- package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryPreparation.d.ts +15 -0
- package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryTarget.d.ts +3 -4
- package/dist/types/wallet-server/src/authorization/capabilityPolicy.d.ts +0 -1
- package/dist/types/wallet-server/src/authorization/domain.d.ts +36 -5
- package/dist/types/wallet-server/src/authorization/ecdsaWalletSessionAdmission.d.ts +61 -0
- package/dist/types/wallet-server/src/authorization/ecdsaWalletSessionAdmission.typecheck.d.ts +2 -0
- package/dist/types/wallet-server/src/authorization/factorEvidence.d.ts +6 -7
- package/dist/types/wallet-server/src/authorization/service.d.ts +71 -3
- package/dist/types/wallet-server/src/cloud-host.d.ts +6 -2
- package/dist/types/wallet-server/src/core/EmailOtpRecords.d.ts +10 -1
- package/dist/types/wallet-server/src/core/EmailOtpStores.d.ts +16 -116
- package/dist/types/wallet-server/src/core/IdentityStore.d.ts +2 -7
- package/dist/types/wallet-server/src/core/NearPublicKeyStore.d.ts +6 -16
- package/dist/types/wallet-server/src/core/RegistrationCeremonyStore.d.ts +29 -90
- package/dist/types/wallet-server/src/core/ThresholdService/config.d.ts +0 -12
- package/dist/types/wallet-server/src/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.d.ts +10 -3
- package/dist/types/wallet-server/src/core/ThresholdService/routerAb/ecdsaDerivationPresignBridge.d.ts +17 -48
- package/dist/types/wallet-server/src/core/ThresholdService/routerAb/internalServiceHttp.d.ts +2 -1
- package/dist/types/wallet-server/src/core/ThresholdService/stores/CloudflareDurableObjectStore.d.ts +4 -71
- package/dist/types/wallet-server/src/core/ThresholdService/stores/KeyStore.d.ts +2 -1
- package/dist/types/wallet-server/src/core/ThresholdService/stores/SessionStore.d.ts +2 -6
- package/dist/types/wallet-server/src/core/ThresholdService/stores/StoreConfig.d.ts +2 -1
- package/dist/types/wallet-server/src/core/ThresholdService/stores/WalletSessionStore.d.ts +2 -4
- package/dist/types/wallet-server/src/core/ThresholdService/stores/exportReplayGuard.d.ts +3 -0
- package/dist/types/wallet-server/src/core/ThresholdService/validation.d.ts +11 -137
- package/dist/types/wallet-server/src/core/WalletAuthMethodStore.d.ts +2 -7
- package/dist/types/wallet-server/src/core/WalletStore.d.ts +3 -8
- package/dist/types/wallet-server/src/core/WebAuthnAuthenticatorStore.d.ts +15 -22
- package/dist/types/wallet-server/src/core/WebAuthnCredentialBindingStore.d.ts +14 -36
- package/dist/types/wallet-server/src/core/WebAuthnLoginChallengeStore.d.ts +9 -34
- package/dist/types/wallet-server/src/core/WebAuthnSyncChallengeStore.d.ts +9 -34
- package/dist/types/wallet-server/src/core/authService/AuthService.d.ts +0 -3
- package/dist/types/wallet-server/src/core/authService/bytes.d.ts +0 -1
- package/dist/types/wallet-server/src/core/authService/emailOtpChallengeOperations.d.ts +6 -5
- package/dist/types/wallet-server/src/core/authService/emailOtpChallengeProof.d.ts +9 -17
- package/dist/types/wallet-server/src/core/authService/emailOtpChallengeVerification.d.ts +3 -2
- package/dist/types/wallet-server/src/core/authService/emailOtpChallenges.d.ts +8 -32
- package/dist/types/wallet-server/src/core/authService/emailOtpConfig.d.ts +3 -10
- package/dist/types/wallet-server/src/core/authService/emailOtpDelivery.d.ts +4 -3
- package/dist/types/wallet-server/src/core/authService/emailOtpGrant.d.ts +4 -3
- package/dist/types/wallet-server/src/core/authService/emailOtpRegistrationEnrollment.d.ts +3 -70
- package/dist/types/wallet-server/src/core/authService/emailOtpSeal.d.ts +2 -1
- package/dist/types/wallet-server/src/core/authService/emailOtpUnlock.d.ts +6 -12
- package/dist/types/wallet-server/src/core/authService/googleEmailOtpRegistration.d.ts +5 -8
- package/dist/types/wallet-server/src/core/authService/nearPrivateKeySigning.d.ts +3 -2
- package/dist/types/wallet-server/src/core/authService/nearPublicKeyMetadata.d.ts +2 -1
- package/dist/types/wallet-server/src/core/authService/nearTransactions.d.ts +2 -1
- package/dist/types/wallet-server/src/core/authService/oidcVerification.d.ts +4 -3
- package/dist/types/wallet-server/src/core/authService/rateLimits.d.ts +0 -3
- package/dist/types/wallet-server/src/core/authService/registrationThresholdHelpers.d.ts +0 -26
- package/dist/types/wallet-server/src/core/authService/storeRegistry.d.ts +0 -5
- package/dist/types/wallet-server/src/core/authService/thresholdEcdsaKeyInventory.d.ts +0 -23
- package/dist/types/wallet-server/src/core/authService/webauthn.d.ts +8 -16
- package/dist/types/wallet-server/src/core/authService/webauthnOidcHelpers.d.ts +7 -7
- package/dist/types/wallet-server/src/core/authService/webauthnVerificationOutcomes.d.ts +43 -0
- package/dist/types/wallet-server/src/core/authService/webauthnWalletBinding.d.ts +1 -28
- package/dist/types/wallet-server/src/core/d1EcdsaSignerRead.d.ts +39 -0
- package/dist/types/wallet-server/src/core/d1IdentityStore.d.ts +6 -16
- package/dist/types/wallet-server/src/core/d1TenantStore.d.ts +51 -0
- package/dist/types/wallet-server/src/core/d1WalletAuthMethodStore.d.ts +11 -29
- package/dist/types/wallet-server/src/core/d1WalletStore.d.ts +16 -1
- package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceEd25519ExportRoot.d.ts +2 -1
- package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceEmailOtpGrant.d.ts +2 -1
- package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceManagement.d.ts +44 -26
- package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceSession.d.ts +19 -217
- package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceSessionApproval.d.ts +8 -0
- package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceSessionRecord.d.ts +258 -0
- package/dist/types/wallet-server/src/core/deviceLinking/requestProof.d.ts +2 -2
- package/dist/types/wallet-server/src/core/ecdsaMaterialReadSnapshot.d.ts +19 -0
- package/dist/types/wallet-server/src/core/emailOtpD1Statements.d.ts +54 -0
- package/dist/types/wallet-server/src/core/hostedAccountIds.d.ts +0 -15
- package/dist/types/wallet-server/src/core/keyMaterialBrands.d.ts +4 -24
- package/dist/types/wallet-server/src/core/nearRelayerAccountProvisioning.d.ts +2 -3
- package/dist/types/wallet-server/src/core/nearSignerWasmRuntime.d.ts +0 -1
- package/dist/types/wallet-server/src/core/registrationContracts.d.ts +37 -108
- package/dist/types/wallet-server/src/core/routerAbSigning/RouterAbNormalSigningRuntime.d.ts +8 -9
- package/dist/types/wallet-server/src/core/rpcClients/near/NearClient.d.ts +10 -107
- package/dist/types/wallet-server/src/core/signingLanes/LaneAggregateRevocationApplicationService.d.ts +4 -3
- package/dist/types/wallet-server/src/core/signingLanes/LaneEffectJournalStore.d.ts +2 -3
- package/dist/types/wallet-server/src/core/signingLanes/LaneLifecycleStore.d.ts +2 -3
- package/dist/types/wallet-server/src/core/signingLanes/WalletExecutionLaneProjection.d.ts +5 -20
- package/dist/types/wallet-server/src/core/signingLanes/ecdsaServerRetirement.d.ts +4 -4
- package/dist/types/wallet-server/src/core/signingLanes/ed25519ServerRetirement.d.ts +3 -3
- package/dist/types/wallet-server/src/core/signingLanes/signingWorkerLaneMaterialIdentity.d.ts +2 -19
- package/dist/types/wallet-server/src/core/storeBackends.d.ts +83 -0
- package/dist/types/wallet-server/src/core/threeRouteRegistrationContracts.d.ts +13 -59
- package/dist/types/wallet-server/src/core/threeRouteRegistrationContracts.typecheck.d.ts +51 -3
- package/dist/types/wallet-server/src/core/thresholdEcdsaChainTarget.d.ts +3 -12
- package/dist/types/wallet-server/src/core/types.d.ts +5 -30
- package/dist/types/wallet-server/src/core/webAuthnD1Statements.d.ts +29 -0
- package/dist/types/wallet-server/src/core/webAuthnStoreBackends.d.ts +96 -0
- package/dist/types/wallet-server/src/hosted-wallet-gateway.d.ts +11 -7
- package/dist/types/wallet-server/src/index.d.ts +1 -1
- package/dist/types/wallet-server/src/local-hosted-wallet-gateway-worker.d.ts +1 -4
- package/dist/types/wallet-server/src/localHostedWalletGatewayHandler.d.ts +12 -0
- package/dist/types/wallet-server/src/localIntendedEcdsaFinalizeFault.d.ts +33 -0
- package/dist/types/wallet-server/src/localIntendedLinkExecuteFault.d.ts +47 -0
- package/dist/types/wallet-server/src/localIntendedMaterialAdmissionFault.d.ts +38 -0
- package/dist/types/wallet-server/src/localIntendedPresignCancellation.d.ts +4 -0
- package/dist/types/wallet-server/src/localIntendedRevokeFault.d.ts +40 -0
- package/dist/types/wallet-server/src/localIntendedSessionAdmissionFault.d.ts +41 -0
- package/dist/types/wallet-server/src/localIntendedYaoExportFault.d.ts +41 -0
- package/dist/types/wallet-server/src/localIntendedYaoFault.d.ts +7 -1
- package/dist/types/wallet-server/src/localIntendedYaoFinalizeFault.d.ts +37 -0
- package/dist/types/wallet-server/src/localIntendedYaoRecoveryFault.d.ts +45 -0
- package/dist/types/wallet-server/src/localIntendedYaoSigningFault.d.ts +51 -0
- package/dist/types/wallet-server/src/router/auth/authRequestValidation.d.ts +13 -29
- package/dist/types/wallet-server/src/router/auth/commonRouterUtils.d.ts +20 -11
- package/dist/types/wallet-server/src/router/auth/walletSessionFailure.d.ts +1 -4
- package/dist/types/wallet-server/src/router/auth/webAuthnCredentialCodecs.d.ts +3 -2
- package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1AuthorizedOperationRouteService.d.ts +12 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthBoundary.d.ts +3 -3
- package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthConfig.d.ts +2 -2
- package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthService.d.ts +1 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/auth/walletSessionCredentialReaders.d.ts +9 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/authorization/authorizedOperationStatements.d.ts +34 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/authorization/d1AuthorizationStore.d.ts +54 -21
- package/dist/types/wallet-server/src/router/cloudflare/d1/authorization/persistedWalletSessionAuthorization.d.ts +3 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/authorization/walletSessionAuthorityProjection.d.ts +2 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.d.ts +74 -6
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpGrantStore.d.ts +2 -3
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpTargetFactor.d.ts +8 -21
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceOwnerAuthorizationProvider.d.ts +14 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRevocation.d.ts +49 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionRecords.d.ts +1 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionStore.d.ts +6 -8
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSourceContributionPreparationPlanner.d.ts +1 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetCredentialProvider.d.ts +7 -10
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetPlanner.d.ts +8 -4
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceVerifiedLinkBuilder.d.ts +3 -5
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/installedEcdsaAuthority.d.ts +7 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoCapabilityPersistence.d.ts +1 -2
- package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoLifecycleDecisionStore.d.ts +33 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeIssuer.d.ts +1 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.d.ts +13 -3
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeVerifier.d.ts +24 -5
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpEnrollmentStore.d.ts +4 -11
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpGrantStore.d.ts +1 -3
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore.d.ts +4 -12
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.d.ts +13 -12
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRecoveryService.d.ts +0 -2
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRegistrationEnrollmentFinalizer.d.ts +5 -4
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpServerSealRuntime.d.ts +4 -14
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore.d.ts +1 -3
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationRecords.d.ts +3 -21
- package/dist/types/wallet-server/src/router/cloudflare/d1/identity/d1IdentityRecords.d.ts +0 -23
- package/dist/types/wallet-server/src/router/cloudflare/d1/near/d1NearPublicKeyStore.d.ts +1 -2
- package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyEnvelopeStore.d.ts +11 -19
- package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyRouteService.d.ts +5 -54
- package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.d.ts +7 -19
- package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpRecords.d.ts +4 -3
- package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpService.d.ts +8 -12
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.d.ts +7 -14
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.d.ts +10 -22
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.d.ts +6 -2
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.d.ts +10 -6
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationService.d.ts +21 -26
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationSetup.d.ts +5 -3
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/walletRegistrationEstablishedSessionIssuer.d.ts +4 -3
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/walletRegistrationSessionCommitReceipt.d.ts +5 -5
- package/dist/types/wallet-server/src/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.d.ts +17 -6
- package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneEffectJournalStore.d.ts +0 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/versionedJson/d1VersionedJsonRecordStore.d.ts +0 -16
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAddSignerService.d.ts +29 -14
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthMethodBoundary.d.ts +15 -12
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthMethodRevocationReplayStore.d.ts +71 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthMethodService.d.ts +34 -24
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorityStore.d.ts +44 -26
- package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnRecords.d.ts +13 -46
- package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnStore.d.ts +8 -19
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleOps.d.ts +8 -34
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleTenantRootLineage.d.ts +2 -1
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletGateway.d.ts +1 -0
- package/dist/types/wallet-server/src/router/cloudflare/signingLanes/cloudflareOrdinaryInactiveSignerMaterialReservation.d.ts +15 -2
- package/dist/types/wallet-server/src/router/cloudflare-adaptor.d.ts +2 -2
- package/dist/types/wallet-server/src/router/domains/ecdsa/routerAbEcdsaStrictRegistration.d.ts +9 -7
- package/dist/types/wallet-server/src/router/domains/ecdsa/thresholdEcdsaRequestValidation.d.ts +6 -18
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoLifecycleDecision.d.ts +46 -0
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.d.ts +5 -3
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.d.ts +20 -79
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitioning.d.ts +2 -0
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRunner.d.ts +1 -1
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRuntime.d.ts +4 -3
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.d.ts +62 -42
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecovery.d.ts +108 -32
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryActivation.typecheck.d.ts +5 -0
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoHttpRegistrationBackend.d.ts +36 -5
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistration.d.ts +5 -4
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationExecutionRecord.d.ts +41 -50
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationIntentAuthorization.d.ts +2 -2
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationRequestScopedCloudflare.d.ts +3 -3
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.d.ts +6 -5
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationTwoPhaseRunner.d.ts +14 -4
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/routerAbEd25519YaoGatewayEnvelope.d.ts +12 -1
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/session/routerAbEd25519YaoWalletSession.d.ts +11 -52
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/session/thresholdEd25519RequestValidation.d.ts +3 -4
- package/dist/types/wallet-server/src/router/domains/emailOtp/emailOtpExportPolicy.d.ts +2 -27
- package/dist/types/wallet-server/src/router/domains/emailOtp/emailOtpRequestValidation.d.ts +1 -2
- package/dist/types/wallet-server/src/router/domains/emailOtp/emailOtpRouteHandlers.d.ts +2 -1
- package/dist/types/wallet-server/src/router/domains/emailOtp/emailOtpSessionRouteHelpers.d.ts +2 -102
- package/dist/types/wallet-server/src/router/domains/passkeyCustody/envelopeRevocationAdmission.d.ts +2 -1
- package/dist/types/wallet-server/src/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrieval.d.ts +3 -2
- package/dist/types/wallet-server/src/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrievalRoute.d.ts +1 -9
- package/dist/types/wallet-server/src/router/domains/passkeyCustody/registrationCustodyOutcome.d.ts +2 -1
- package/dist/types/wallet-server/src/router/domains/passkeyCustody/verifiedCustodyFactor.d.ts +2 -1
- package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletCustodyRegistrationAdmission.d.ts +2 -1
- package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletCustodyRegistrationCommit.d.ts +2 -28
- package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletRecoveryFinalization.d.ts +43 -1
- package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletRecoveryKeyManifest.d.ts +7 -19
- package/dist/types/wallet-server/src/router/domains/signingOperations/ed25519AuthorizedOperationReceipt.d.ts +0 -3
- package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbEcdsaDerivationNormalSigningRoute.d.ts +164 -0
- package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbEd25519NormalSigningRoute.d.ts +110 -0
- package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbNormalSigningAdmission.d.ts +373 -0
- package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbNormalSigningAdmissionCore.d.ts +11 -10
- package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbNormalSigningAdmissionCore.typecheck.d.ts +2 -0
- package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbOperationStepUp.d.ts +164 -0
- package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbPrivateSigningWorker.d.ts +22 -717
- package/dist/types/wallet-server/src/router/domains/signingOperations/walletExecutionAdmission.d.ts +5 -12
- package/dist/types/wallet-server/src/router/domains/syncAccount/syncAccountRequestValidation.d.ts +6 -10
- package/dist/types/wallet-server/src/router/domains/tenantRoot/tenantRootCustodyLineage.d.ts +6 -1
- package/dist/types/wallet-server/src/router/domains/tenantRoot/tenantRootIdentityResolution.d.ts +4 -7
- package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationInputs.d.ts +2 -1
- package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationRoutes.d.ts +8 -8
- package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationSetupPayload.d.ts +4 -4
- package/dist/types/wallet-server/src/router/domains/walletUnlock/walletUnlockRequestedCapabilitiesValidation.d.ts +4 -4
- package/dist/types/wallet-server/src/router/domains/walletUnlock/walletUnlockRouteHandlers.d.ts +4 -62
- package/dist/types/wallet-server/src/router/express-adaptor.d.ts +2 -2
- package/dist/types/wallet-server/src/router/framework/apiCredentialPorts.d.ts +3 -1
- package/dist/types/wallet-server/src/router/framework/authServicePort.d.ts +89 -65
- package/dist/types/wallet-server/src/router/framework/http.d.ts +1 -1
- package/dist/types/wallet-server/src/router/framework/ror/normalize.d.ts +1 -9
- package/dist/types/wallet-server/src/router/framework/routeMeteringPolicy.d.ts +3 -2
- package/dist/types/wallet-server/src/router/framework/routerApi.d.ts +1 -1
- package/dist/types/wallet-server/src/router/framework/routerApiRouteSurface.d.ts +3 -3
- package/dist/types/wallet-server/src/router/node/nodeHostedWalletGateway.d.ts +34 -0
- package/dist/types/wallet-server/src/router/node/nodeHostedWalletGatewayCheck.d.ts +21 -0
- package/dist/types/wallet-server/src/router/node/nodeHostedWalletGatewayMain.d.ts +2 -0
- package/dist/types/wallet-server/src/router/node/nodeHttp.d.ts +13 -0
- package/dist/types/wallet-server/src/router/node/nodeSqlite.d.ts +22 -0
- package/dist/types/wallet-server/src/router/node/signerSqlMigrations.d.ts +20 -0
- package/dist/types/wallet-server/src/router/transport/fetch/createFetchRouter.d.ts +1 -3
- package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceLinking.d.ts +5 -6
- package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceLinkingOwnerAuthorization.d.ts +5 -8
- package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceManagement.d.ts +14 -16
- package/dist/types/wallet-server/src/router/transport/fetch/routes/normalSigningRouterProxy.d.ts +0 -12
- package/dist/types/wallet-server/src/router/transport/fetch/routes/passkeyCustody.d.ts +1 -1
- package/dist/types/wallet-server/src/router/transport/fetch/routes/sessions.d.ts +2 -1
- package/dist/types/wallet-server/src/router/transport/fetch/routes/syncAccountBootstrap.d.ts +9 -17
- package/dist/types/wallet-server/src/router/transport/fetch/routes/thresholdEcdsa.d.ts +3 -58
- package/dist/types/wallet-server/src/router/transport/fetch/routes/thresholdEd25519.d.ts +0 -44
- package/dist/types/wallet-server/src/storage/d1Sql.d.ts +7 -0
- package/dist/types/wallet-server/src/storage/syncSqlite.d.ts +28 -0
- package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/crypto/shamir3PassWasm.d.ts +0 -1
- package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/idempotencyRecords.d.ts +5 -7
- package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/signingSessionSeal.types.d.ts +6 -8
- package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/transport/shared.d.ts +1 -0
- package/dist/types/wallet-server/src/threshold/statusCodes.d.ts +4 -4
- package/migrations/d1-signer/0036_r150_yao_lifecycle_decisions.sql +22 -0
- package/migrations/d1-signer/0037_r150_wallet_auth_method_revocation_replays.sql +26 -0
- package/migrations/d1-signer/0038_r150_registration_ceremony_cas_guard_seed.sql +8 -0
- package/migrations/d1-signer/0039_r150_revocation_replay_answer_kind.sql +9 -0
- package/package.json +1 -1
- package/dist/esm/core/ThresholdService/ecdsaClientRootProof.js +0 -27
- package/dist/esm/core/ThresholdService/routerAbEcdsaSigningWorkerWasm.js +0 -115
- package/dist/esm/core/ThresholdService/secureRandomId.js +0 -9
- package/dist/esm/core/authService/record.js +0 -8
- package/dist/esm/core/authService/thresholdRuntimePolicy.js +0 -19
- package/dist/esm/core/authService/walletRegistrationPlanning.js +0 -49
- package/dist/esm/core/deviceLinking/index.js +0 -5
- package/dist/esm/core/errors.js +0 -54
- package/dist/esm/core/routerAbSigning/createCloudflareDurableObjectRouterAbSigningRuntimes.js +0 -39
- package/dist/esm/core/signingLanes/WalletKeyStore.js +0 -0
- package/dist/esm/core/signingLanes/index.js +0 -8
- package/dist/esm/router/domains/tenantRoot/tenantRootEcdsaWalletSessionComposition.js +0 -55
- package/dist/esm/router/domains/tenantRoot/tenantRootEd25519WalletSessionComposition.js +0 -56
- package/dist/esm/shared-ts/src/signing-lanes/linkedEcdsaScope.js +0 -1
- package/dist/esm/wasm/router_ab_ecdsa_signing_worker/pkg/router_ab_ecdsa_signing_worker.js +0 -414
- package/dist/esm/wasm/router_ab_ecdsa_signing_worker/pkg/router_ab_ecdsa_signing_worker_bg.wasm +0 -0
- package/dist/types/shared-ts/src/passkey-custody/credentialObservations.d.ts +0 -74
- package/dist/types/shared-ts/src/passkey-custody/kekContext.d.ts +0 -34
- package/dist/types/shared-ts/src/signing-lanes/linkedEcdsaScope.d.ts +0 -62
- package/dist/types/shared-ts/src/signing-lanes/linkedEcdsaScope.typecheck.d.ts +0 -2
- package/dist/types/shared-ts/src/signing-lanes/validation.d.ts +0 -11
- package/dist/types/shared-ts/src/utils/bigint.d.ts +0 -3
- package/dist/types/shared-ts/src/utils/paillier.d.ts +0 -37
- package/dist/types/shared-ts/src/utils/recoveryDomain.d.ts +0 -12
- package/dist/types/shared-ts/src/utils/signerDomain.typecheck.d.ts +0 -2
- package/dist/types/shared-ts/src/wallet-recovery/recoveryKekContext.d.ts +0 -37
- package/dist/types/wallet-server/src/core/ThresholdService/ecdsaClientRootProof.d.ts +0 -12
- package/dist/types/wallet-server/src/core/ThresholdService/routerAbEcdsaSigningWorkerWasm.d.ts +0 -17
- package/dist/types/wallet-server/src/core/ThresholdService/secureRandomId.d.ts +0 -2
- package/dist/types/wallet-server/src/core/authService/record.d.ts +0 -2
- package/dist/types/wallet-server/src/core/authService/thresholdRuntimePolicy.d.ts +0 -4
- package/dist/types/wallet-server/src/core/authService/walletRegistrationPlanning.d.ts +0 -19
- package/dist/types/wallet-server/src/core/deviceLinking/index.d.ts +0 -5
- package/dist/types/wallet-server/src/core/errors.d.ts +0 -10
- package/dist/types/wallet-server/src/core/routerAbSigning/createCloudflareDurableObjectRouterAbSigningRuntimes.d.ts +0 -28
- package/dist/types/wallet-server/src/core/signingLanes/SigningLaneStore.d.ts +0 -15
- package/dist/types/wallet-server/src/core/signingLanes/WalletKeyStore.d.ts +0 -13
- package/dist/types/wallet-server/src/core/signingLanes/index.d.ts +0 -11
- package/dist/types/wallet-server/src/router/domains/tenantRoot/tenantRootEcdsaWalletSessionComposition.d.ts +0 -35
- package/dist/types/wallet-server/src/router/domains/tenantRoot/tenantRootEd25519WalletSessionComposition.d.ts +0 -35
- /package/dist/esm/{core/signingLanes/SigningLaneStore.js → authorization/ecdsaWalletSessionAdmission.js} +0 -0
|
@@ -1,26 +1,49 @@
|
|
|
1
1
|
import { normalizeOptionalTrimmedString } from "../../../shared-ts/src/utils/normalize.js";
|
|
2
|
-
import "../../../shared-ts/src/utils/validation.js";
|
|
3
|
-
import {
|
|
2
|
+
import { isPlainObject } from "../../../shared-ts/src/utils/validation.js";
|
|
3
|
+
import { failure } from "../../../shared-ts/src/utils/failure.js";
|
|
4
|
+
import { parseEcdsaWalletSessionRecord, parseEd25519WalletSessionRecord, toThresholdEcdsaPrefixFromBase, toThresholdEcdsaWalletSessionPrefix, toThresholdEd25519PrefixFromBase, toThresholdEd25519WalletSessionPrefix } from "../validation.js";
|
|
4
5
|
import { RedisTcpClient, UpstashRedisRestClient, redisGetJson, redisSetJson } from "../kv.js";
|
|
6
|
+
import { EXPORT_REPLAY_GUARD_CLOCK_SKEW_MS, EXPORT_REPLAY_GUARD_MIN_RETENTION_MS } from "./exportReplayGuard.js";
|
|
5
7
|
import { createCloudflareDurableObjectThresholdEcdsaStores, createCloudflareDurableObjectThresholdEd25519Stores } from "./CloudflareDurableObjectStore.js";
|
|
6
8
|
import { readNonDurableObjectThresholdStoreKind } from "./StoreConfig.js";
|
|
7
9
|
//#region src/core/ThresholdService/stores/WalletSessionStore.ts
|
|
8
|
-
|
|
9
|
-
|
|
10
|
+
/** A wallet session store's keys: record, use counter, consume-once markers, replay guards. */
|
|
11
|
+
var WalletSessionKeys = class {
|
|
12
|
+
constructor(keyPrefix) {
|
|
13
|
+
this.prefix = toThresholdEd25519WalletSessionPrefix(keyPrefix);
|
|
14
|
+
}
|
|
15
|
+
meta(id) {
|
|
16
|
+
return `${this.prefix}${id}`;
|
|
17
|
+
}
|
|
18
|
+
uses(id) {
|
|
19
|
+
return `${this.prefix}${id}:uses`;
|
|
20
|
+
}
|
|
21
|
+
consumeOnce(id, idempotencyKey) {
|
|
22
|
+
return `${this.uses(id)}:once:${normalizeConsumeOnceKey(idempotencyKey)}`;
|
|
23
|
+
}
|
|
24
|
+
replayGuard(scopeId, replayKey) {
|
|
25
|
+
return `${this.prefix}replay:${normalizeConsumeOnceKey(scopeId)}:${normalizeConsumeOnceKey(replayKey)}`;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
10
28
|
var InMemoryWalletSessionStore = class {
|
|
11
29
|
constructor(input) {
|
|
12
30
|
this.map = /* @__PURE__ */ new Map();
|
|
13
31
|
this.replayGuards = /* @__PURE__ */ new Map();
|
|
14
|
-
this.
|
|
15
|
-
}
|
|
16
|
-
key(id) {
|
|
17
|
-
return `${this.keyPrefix}${id}`;
|
|
32
|
+
this.keys = new WalletSessionKeys(input.keyPrefix);
|
|
18
33
|
}
|
|
19
|
-
|
|
20
|
-
|
|
34
|
+
/** The session's entry, or why it cannot be used: missing, or expired (and dropped). */
|
|
35
|
+
liveEntry(id) {
|
|
36
|
+
const key = this.keys.meta(id);
|
|
37
|
+
const entry = this.map.get(key);
|
|
38
|
+
if (!entry) return failure("wallet_session_missing", "Wallet Session is missing");
|
|
39
|
+
if (entry.expiresAtMs <= Date.now()) {
|
|
40
|
+
this.map.delete(key);
|
|
41
|
+
return failure("wallet_session_expired", "Wallet Session expired");
|
|
42
|
+
}
|
|
43
|
+
return entry;
|
|
21
44
|
}
|
|
22
45
|
async putSession(id, record, opts) {
|
|
23
|
-
const key = this.
|
|
46
|
+
const key = this.keys.meta(id);
|
|
24
47
|
const ttlMs = Math.max(0, Number(opts.ttlMs) || 0);
|
|
25
48
|
const expiresAtMs = Date.now() + ttlMs;
|
|
26
49
|
this.map.set(key, {
|
|
@@ -31,7 +54,7 @@ var InMemoryWalletSessionStore = class {
|
|
|
31
54
|
});
|
|
32
55
|
}
|
|
33
56
|
async getSession(id) {
|
|
34
|
-
const key = this.
|
|
57
|
+
const key = this.keys.meta(id);
|
|
35
58
|
const entry = this.map.get(key);
|
|
36
59
|
if (!entry) return null;
|
|
37
60
|
if (entry.expiresAtMs <= Date.now()) {
|
|
@@ -41,7 +64,7 @@ var InMemoryWalletSessionStore = class {
|
|
|
41
64
|
return entry.record;
|
|
42
65
|
}
|
|
43
66
|
async getSessionStatus(id) {
|
|
44
|
-
const key = this.
|
|
67
|
+
const key = this.keys.meta(id);
|
|
45
68
|
const entry = this.map.get(key);
|
|
46
69
|
if (!entry) return {
|
|
47
70
|
ok: false,
|
|
@@ -64,26 +87,9 @@ var InMemoryWalletSessionStore = class {
|
|
|
64
87
|
};
|
|
65
88
|
}
|
|
66
89
|
async consumeUseCount(id) {
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
if (
|
|
70
|
-
ok: false,
|
|
71
|
-
code: "wallet_session_missing",
|
|
72
|
-
message: "Wallet Session is missing"
|
|
73
|
-
};
|
|
74
|
-
if (entry.expiresAtMs <= Date.now()) {
|
|
75
|
-
this.map.delete(key);
|
|
76
|
-
return {
|
|
77
|
-
ok: false,
|
|
78
|
-
code: "wallet_session_expired",
|
|
79
|
-
message: "Wallet Session expired"
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
if (entry.remainingUses <= 0) return {
|
|
83
|
-
ok: false,
|
|
84
|
-
code: "wallet_budget_exhausted",
|
|
85
|
-
message: "Wallet Session exhausted"
|
|
86
|
-
};
|
|
90
|
+
const entry = this.liveEntry(id);
|
|
91
|
+
if ("ok" in entry) return entry;
|
|
92
|
+
if (entry.remainingUses <= 0) return failure("wallet_budget_exhausted", "Wallet Session exhausted");
|
|
87
93
|
entry.remainingUses -= 1;
|
|
88
94
|
return {
|
|
89
95
|
ok: true,
|
|
@@ -91,31 +97,14 @@ var InMemoryWalletSessionStore = class {
|
|
|
91
97
|
};
|
|
92
98
|
}
|
|
93
99
|
async consumeUseCountOnce(id, idempotencyKey) {
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
if (!entry) return {
|
|
97
|
-
ok: false,
|
|
98
|
-
code: "wallet_session_missing",
|
|
99
|
-
message: "Wallet Session is missing"
|
|
100
|
-
};
|
|
101
|
-
if (entry.expiresAtMs <= Date.now()) {
|
|
102
|
-
this.map.delete(key);
|
|
103
|
-
return {
|
|
104
|
-
ok: false,
|
|
105
|
-
code: "wallet_session_expired",
|
|
106
|
-
message: "Wallet Session expired"
|
|
107
|
-
};
|
|
108
|
-
}
|
|
100
|
+
const entry = this.liveEntry(id);
|
|
101
|
+
if ("ok" in entry) return entry;
|
|
109
102
|
const consumeKey = String(idempotencyKey || "").trim();
|
|
110
103
|
if (consumeKey && entry.consumedIdempotencyKeys.has(consumeKey)) return {
|
|
111
104
|
ok: true,
|
|
112
105
|
remainingUses: entry.remainingUses
|
|
113
106
|
};
|
|
114
|
-
if (entry.remainingUses <= 0) return
|
|
115
|
-
ok: false,
|
|
116
|
-
code: "wallet_budget_exhausted",
|
|
117
|
-
message: "Wallet Session exhausted"
|
|
118
|
-
};
|
|
107
|
+
if (entry.remainingUses <= 0) return failure("wallet_budget_exhausted", "Wallet Session exhausted");
|
|
119
108
|
entry.remainingUses -= 1;
|
|
120
109
|
if (consumeKey) entry.consumedIdempotencyKeys.add(consumeKey);
|
|
121
110
|
return {
|
|
@@ -124,21 +113,8 @@ var InMemoryWalletSessionStore = class {
|
|
|
124
113
|
};
|
|
125
114
|
}
|
|
126
115
|
async hasConsumedUseCountOnce(id, idempotencyKey) {
|
|
127
|
-
const
|
|
128
|
-
|
|
129
|
-
if (!entry) return {
|
|
130
|
-
ok: false,
|
|
131
|
-
code: "wallet_session_missing",
|
|
132
|
-
message: "Wallet Session is missing"
|
|
133
|
-
};
|
|
134
|
-
if (entry.expiresAtMs <= Date.now()) {
|
|
135
|
-
this.map.delete(key);
|
|
136
|
-
return {
|
|
137
|
-
ok: false,
|
|
138
|
-
code: "wallet_session_expired",
|
|
139
|
-
message: "Wallet Session expired"
|
|
140
|
-
};
|
|
141
|
-
}
|
|
116
|
+
const entry = this.liveEntry(id);
|
|
117
|
+
if ("ok" in entry) return entry;
|
|
142
118
|
const consumeKey = String(idempotencyKey || "").trim();
|
|
143
119
|
return {
|
|
144
120
|
ok: true,
|
|
@@ -146,7 +122,7 @@ var InMemoryWalletSessionStore = class {
|
|
|
146
122
|
};
|
|
147
123
|
}
|
|
148
124
|
async reserveReplayGuard(scopeId, replayKey, expiresAtMs) {
|
|
149
|
-
const key = this.
|
|
125
|
+
const key = this.keys.replayGuard(scopeId, replayKey);
|
|
150
126
|
if (!key) return replayGuardInvalid();
|
|
151
127
|
const nowMs = Date.now();
|
|
152
128
|
const existingExpiresAtMs = this.replayGuards.get(key);
|
|
@@ -158,6 +134,45 @@ var InMemoryWalletSessionStore = class {
|
|
|
158
134
|
return { ok: true };
|
|
159
135
|
}
|
|
160
136
|
};
|
|
137
|
+
/** A backend failure as an `internal` result: the error's message, else `fallback`. */
|
|
138
|
+
function walletSessionStoreFailure(error, fallback) {
|
|
139
|
+
return failure("internal", String(error && typeof error === "object" && "message" in error ? error.message : error || fallback));
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* A remote store's session status: the parsed record while it is live, with its remaining uses.
|
|
143
|
+
* A backend failure, or a use count that is not a non-negative integer, reads as unavailable.
|
|
144
|
+
*/
|
|
145
|
+
async function readWalletSessionStatus(input) {
|
|
146
|
+
try {
|
|
147
|
+
const record = await input.readRecord();
|
|
148
|
+
if (!record) return {
|
|
149
|
+
ok: false,
|
|
150
|
+
code: "wallet_session_missing"
|
|
151
|
+
};
|
|
152
|
+
if (record.expiresAtMs <= Date.now()) return {
|
|
153
|
+
ok: false,
|
|
154
|
+
code: "wallet_session_expired"
|
|
155
|
+
};
|
|
156
|
+
const remainingUses = Number(await input.readRemainingUses());
|
|
157
|
+
if (!Number.isSafeInteger(remainingUses) || remainingUses < 0) return {
|
|
158
|
+
ok: false,
|
|
159
|
+
code: "wallet_session_unavailable"
|
|
160
|
+
};
|
|
161
|
+
return {
|
|
162
|
+
ok: true,
|
|
163
|
+
status: {
|
|
164
|
+
record,
|
|
165
|
+
expiresAtMs: record.expiresAtMs,
|
|
166
|
+
remainingUses
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
} catch {
|
|
170
|
+
return {
|
|
171
|
+
ok: false,
|
|
172
|
+
code: "wallet_session_unavailable"
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
}
|
|
161
176
|
function normalizeConsumeOnceKey(value) {
|
|
162
177
|
return String(value || "").trim().replace(/[^A-Za-z0-9._:-]/g, "_").slice(0, 512);
|
|
163
178
|
}
|
|
@@ -169,74 +184,38 @@ function replayGuardTtlMs(expiresAtMs, nowMs = Date.now()) {
|
|
|
169
184
|
return Math.max(EXPORT_REPLAY_GUARD_MIN_RETENTION_MS, Math.floor(retainUntilMs - nowMs));
|
|
170
185
|
}
|
|
171
186
|
function replayGuardInvalid() {
|
|
172
|
-
return
|
|
173
|
-
ok: false,
|
|
174
|
-
code: "invalid_body",
|
|
175
|
-
message: "Invalid replay guard key"
|
|
176
|
-
};
|
|
187
|
+
return failure("invalid_body", "Invalid replay guard key");
|
|
177
188
|
}
|
|
178
189
|
function replayGuardExpired() {
|
|
179
|
-
return
|
|
180
|
-
ok: false,
|
|
181
|
-
code: "export_authorization_expired",
|
|
182
|
-
message: "Export authorization expired"
|
|
183
|
-
};
|
|
190
|
+
return failure("export_authorization_expired", "Export authorization expired");
|
|
184
191
|
}
|
|
185
192
|
function replayGuardDuplicate() {
|
|
186
|
-
return
|
|
187
|
-
ok: false,
|
|
188
|
-
code: "export_nonce_replay",
|
|
189
|
-
message: "Export authorization nonce already used"
|
|
190
|
-
};
|
|
193
|
+
return failure("export_nonce_replay", "Export authorization nonce already used");
|
|
191
194
|
}
|
|
192
195
|
function parseRedisReplayGuardResult(raw) {
|
|
193
196
|
const text = String(raw ?? "").trim();
|
|
194
197
|
if (text === "ok") return { ok: true };
|
|
195
198
|
if (text === "duplicate") return replayGuardDuplicate();
|
|
196
199
|
if (text === "expired") return replayGuardExpired();
|
|
197
|
-
return
|
|
198
|
-
ok: false,
|
|
199
|
-
code: "internal",
|
|
200
|
-
message: "Redis replay guard returned invalid response"
|
|
201
|
-
};
|
|
200
|
+
return failure("internal", "Redis replay guard returned invalid response");
|
|
202
201
|
}
|
|
203
202
|
function parseRedisConsumeOnceResult(raw) {
|
|
204
203
|
const text = String(raw ?? "").trim();
|
|
205
204
|
if (text.startsWith("ok:")) {
|
|
206
205
|
const remainingUses = Number(text.slice(3));
|
|
207
|
-
if (!Number.isFinite(remainingUses)) return
|
|
208
|
-
ok: false,
|
|
209
|
-
code: "internal",
|
|
210
|
-
message: "Redis consume-once returned invalid uses"
|
|
211
|
-
};
|
|
206
|
+
if (!Number.isFinite(remainingUses)) return failure("internal", "Redis consume-once returned invalid uses");
|
|
212
207
|
return {
|
|
213
208
|
ok: true,
|
|
214
209
|
remainingUses
|
|
215
210
|
};
|
|
216
211
|
}
|
|
217
|
-
if (text === "wallet_session_missing") return
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
message: "Wallet Session is missing"
|
|
221
|
-
};
|
|
222
|
-
if (text === "wallet_budget_exhausted") return {
|
|
223
|
-
ok: false,
|
|
224
|
-
code: "wallet_budget_exhausted",
|
|
225
|
-
message: "Wallet Session signing budget is exhausted"
|
|
226
|
-
};
|
|
227
|
-
return {
|
|
228
|
-
ok: false,
|
|
229
|
-
code: "internal",
|
|
230
|
-
message: "Redis consume-once returned invalid response"
|
|
231
|
-
};
|
|
212
|
+
if (text === "wallet_session_missing") return failure("wallet_session_missing", "Wallet Session is missing");
|
|
213
|
+
if (text === "wallet_budget_exhausted") return failure("wallet_budget_exhausted", "Wallet Session signing budget is exhausted");
|
|
214
|
+
return failure("internal", "Redis consume-once returned invalid response");
|
|
232
215
|
}
|
|
233
216
|
function parseRedisConsumedUseResult(raw) {
|
|
234
217
|
const value = typeof raw === "number" ? raw : Number(String(raw ?? "").trim());
|
|
235
|
-
if (!Number.isFinite(value)) return
|
|
236
|
-
ok: false,
|
|
237
|
-
code: "internal",
|
|
238
|
-
message: "Redis consumed-use check returned invalid response"
|
|
239
|
-
};
|
|
218
|
+
if (!Number.isFinite(value)) return failure("internal", "Redis consumed-use check returned invalid response");
|
|
240
219
|
return {
|
|
241
220
|
ok: true,
|
|
242
221
|
consumed: value > 0
|
|
@@ -309,81 +288,36 @@ var UpstashRedisRestWalletSessionStore = class {
|
|
|
309
288
|
url,
|
|
310
289
|
token
|
|
311
290
|
});
|
|
312
|
-
this.
|
|
313
|
-
this.parseRecord = input.parseRecord
|
|
314
|
-
}
|
|
315
|
-
metaKey(id) {
|
|
316
|
-
return `${this.keyPrefix}${id}`;
|
|
317
|
-
}
|
|
318
|
-
usesKey(id) {
|
|
319
|
-
return `${this.keyPrefix}${id}:uses`;
|
|
320
|
-
}
|
|
321
|
-
consumeOnceKey(id, idempotencyKey) {
|
|
322
|
-
return `${this.usesKey(id)}:once:${normalizeConsumeOnceKey(idempotencyKey)}`;
|
|
323
|
-
}
|
|
324
|
-
replayGuardKey(scopeId, replayKey) {
|
|
325
|
-
return `${this.keyPrefix}replay:${normalizeConsumeOnceKey(scopeId)}:${normalizeConsumeOnceKey(replayKey)}`;
|
|
291
|
+
this.keys = new WalletSessionKeys(input.keyPrefix);
|
|
292
|
+
this.parseRecord = input.parseRecord;
|
|
326
293
|
}
|
|
327
294
|
async putSession(id, record, opts) {
|
|
328
295
|
const ttlMs = Math.max(0, Number(opts.ttlMs) || 0);
|
|
329
|
-
await this.client.setJson(this.
|
|
330
|
-
await this.client.setRaw(this.
|
|
296
|
+
await this.client.setJson(this.keys.meta(id), record, ttlMs);
|
|
297
|
+
await this.client.setRaw(this.keys.uses(id), String(Math.max(0, Number(opts.remainingUses) || 0)), ttlMs);
|
|
331
298
|
}
|
|
332
299
|
async getSession(id) {
|
|
333
|
-
const raw = await this.client.getJson(this.
|
|
300
|
+
const raw = await this.client.getJson(this.keys.meta(id));
|
|
334
301
|
return this.parseRecord(raw);
|
|
335
302
|
}
|
|
336
303
|
async getSessionStatus(id) {
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
code: "wallet_session_missing"
|
|
342
|
-
};
|
|
343
|
-
if (record.expiresAtMs <= Date.now()) return {
|
|
344
|
-
ok: false,
|
|
345
|
-
code: "wallet_session_expired"
|
|
346
|
-
};
|
|
347
|
-
const remainingUses = Number(await this.client.getRaw(this.usesKey(id)));
|
|
348
|
-
if (!Number.isSafeInteger(remainingUses) || remainingUses < 0) return {
|
|
349
|
-
ok: false,
|
|
350
|
-
code: "wallet_session_unavailable"
|
|
351
|
-
};
|
|
352
|
-
return {
|
|
353
|
-
ok: true,
|
|
354
|
-
status: {
|
|
355
|
-
record,
|
|
356
|
-
expiresAtMs: record.expiresAtMs,
|
|
357
|
-
remainingUses
|
|
358
|
-
}
|
|
359
|
-
};
|
|
360
|
-
} catch {
|
|
361
|
-
return {
|
|
362
|
-
ok: false,
|
|
363
|
-
code: "wallet_session_unavailable"
|
|
364
|
-
};
|
|
365
|
-
}
|
|
304
|
+
return readWalletSessionStatus({
|
|
305
|
+
readRecord: async () => this.parseRecord(await this.client.getJson(this.keys.meta(id))),
|
|
306
|
+
readRemainingUses: () => this.client.getRaw(this.keys.uses(id))
|
|
307
|
+
});
|
|
366
308
|
}
|
|
367
309
|
async consumeUseCount(id) {
|
|
368
310
|
try {
|
|
369
|
-
return parseRedisConsumeOnceResult(await this.client.eval(CONSUME_USE_COUNT_LUA, [this.
|
|
311
|
+
return parseRedisConsumeOnceResult(await this.client.eval(CONSUME_USE_COUNT_LUA, [this.keys.uses(id)], []));
|
|
370
312
|
} catch (e) {
|
|
371
|
-
return
|
|
372
|
-
ok: false,
|
|
373
|
-
code: "internal",
|
|
374
|
-
message: String(e && typeof e === "object" && "message" in e ? e.message : e || "Failed to consume threshold session")
|
|
375
|
-
};
|
|
313
|
+
return walletSessionStoreFailure(e, "Failed to consume threshold session");
|
|
376
314
|
}
|
|
377
315
|
}
|
|
378
316
|
async consumeUseCountOnce(id, idempotencyKey) {
|
|
379
317
|
try {
|
|
380
|
-
return parseRedisConsumeOnceResult(await this.client.eval(CONSUME_ONCE_LUA, [this.
|
|
318
|
+
return parseRedisConsumeOnceResult(await this.client.eval(CONSUME_ONCE_LUA, [this.keys.uses(id), this.keys.consumeOnce(id, idempotencyKey)], []));
|
|
381
319
|
} catch (e) {
|
|
382
|
-
return
|
|
383
|
-
ok: false,
|
|
384
|
-
code: "internal",
|
|
385
|
-
message: String(e && typeof e === "object" && "message" in e ? e.message : e || "Failed to consume threshold session")
|
|
386
|
-
};
|
|
320
|
+
return walletSessionStoreFailure(e, "Failed to consume threshold session");
|
|
387
321
|
}
|
|
388
322
|
}
|
|
389
323
|
async hasConsumedUseCountOnce(id, idempotencyKey) {
|
|
@@ -393,26 +327,18 @@ var UpstashRedisRestWalletSessionStore = class {
|
|
|
393
327
|
consumed: false
|
|
394
328
|
};
|
|
395
329
|
try {
|
|
396
|
-
return parseRedisConsumedUseResult(await this.client.eval(CONSUME_ONCE_EXISTS_LUA, [this.
|
|
330
|
+
return parseRedisConsumedUseResult(await this.client.eval(CONSUME_ONCE_EXISTS_LUA, [this.keys.consumeOnce(id, consumeKey)], []));
|
|
397
331
|
} catch (e) {
|
|
398
|
-
return
|
|
399
|
-
ok: false,
|
|
400
|
-
code: "internal",
|
|
401
|
-
message: String(e && typeof e === "object" && "message" in e ? e.message : e || "Failed to check consumed threshold session operation")
|
|
402
|
-
};
|
|
332
|
+
return walletSessionStoreFailure(e, "Failed to check consumed threshold session operation");
|
|
403
333
|
}
|
|
404
334
|
}
|
|
405
335
|
async reserveReplayGuard(scopeId, replayKey, expiresAtMs) {
|
|
406
336
|
try {
|
|
407
337
|
const ttlMs = replayGuardTtlMs(expiresAtMs);
|
|
408
338
|
if (ttlMs <= 0) return replayGuardExpired();
|
|
409
|
-
return parseRedisReplayGuardResult(await this.client.eval(REPLAY_GUARD_LUA, [this.
|
|
339
|
+
return parseRedisReplayGuardResult(await this.client.eval(REPLAY_GUARD_LUA, [this.keys.replayGuard(scopeId, replayKey)], [String(Math.max(1, Math.ceil(ttlMs / 1e3)))]));
|
|
410
340
|
} catch (e) {
|
|
411
|
-
return
|
|
412
|
-
ok: false,
|
|
413
|
-
code: "internal",
|
|
414
|
-
message: String(e && typeof e === "object" && "message" in e ? e.message : e || "Failed to reserve replay guard")
|
|
415
|
-
};
|
|
341
|
+
return walletSessionStoreFailure(e, "Failed to reserve replay guard");
|
|
416
342
|
}
|
|
417
343
|
}
|
|
418
344
|
};
|
|
@@ -421,29 +347,17 @@ var RedisTcpWalletSessionStore = class {
|
|
|
421
347
|
const url = normalizeOptionalTrimmedString(input.redisUrl);
|
|
422
348
|
if (!url) throw new Error("redis-tcp wallet session store missing redisUrl");
|
|
423
349
|
this.client = new RedisTcpClient(url);
|
|
424
|
-
this.
|
|
425
|
-
this.parseRecord = input.parseRecord
|
|
426
|
-
}
|
|
427
|
-
metaKey(id) {
|
|
428
|
-
return `${this.keyPrefix}${id}`;
|
|
429
|
-
}
|
|
430
|
-
usesKey(id) {
|
|
431
|
-
return `${this.keyPrefix}${id}:uses`;
|
|
432
|
-
}
|
|
433
|
-
consumeOnceKey(id, idempotencyKey) {
|
|
434
|
-
return `${this.usesKey(id)}:once:${normalizeConsumeOnceKey(idempotencyKey)}`;
|
|
435
|
-
}
|
|
436
|
-
replayGuardKey(scopeId, replayKey) {
|
|
437
|
-
return `${this.keyPrefix}replay:${normalizeConsumeOnceKey(scopeId)}:${normalizeConsumeOnceKey(replayKey)}`;
|
|
350
|
+
this.keys = new WalletSessionKeys(input.keyPrefix);
|
|
351
|
+
this.parseRecord = input.parseRecord;
|
|
438
352
|
}
|
|
439
353
|
async putSession(id, record, opts) {
|
|
440
354
|
const ttlMs = Math.max(0, Number(opts.ttlMs) || 0);
|
|
441
|
-
await redisSetJson(this.client, this.
|
|
355
|
+
await redisSetJson(this.client, this.keys.meta(id), record, ttlMs);
|
|
442
356
|
const ttlSeconds = Math.max(1, Math.ceil(ttlMs / 1e3));
|
|
443
357
|
const uses = String(Math.max(0, Number(opts.remainingUses) || 0));
|
|
444
358
|
const resp = await this.client.send([
|
|
445
359
|
"SET",
|
|
446
|
-
this.
|
|
360
|
+
this.keys.uses(id),
|
|
447
361
|
uses,
|
|
448
362
|
"EX",
|
|
449
363
|
String(ttlSeconds)
|
|
@@ -451,44 +365,17 @@ var RedisTcpWalletSessionStore = class {
|
|
|
451
365
|
if (resp.type === "error") throw new Error(`Redis SET error: ${resp.value}`);
|
|
452
366
|
}
|
|
453
367
|
async getSession(id) {
|
|
454
|
-
const raw = await redisGetJson(this.client, this.
|
|
368
|
+
const raw = await redisGetJson(this.client, this.keys.meta(id));
|
|
455
369
|
return this.parseRecord(raw);
|
|
456
370
|
}
|
|
457
371
|
async getSessionStatus(id) {
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
ok: false,
|
|
466
|
-
code: "wallet_session_expired"
|
|
467
|
-
};
|
|
468
|
-
const usesResponse = await this.client.send(["GET", this.usesKey(id)]);
|
|
469
|
-
if (usesResponse.type === "error") return {
|
|
470
|
-
ok: false,
|
|
471
|
-
code: "wallet_session_unavailable"
|
|
472
|
-
};
|
|
473
|
-
const remainingUses = Number(redisRawValue(usesResponse));
|
|
474
|
-
if (!Number.isSafeInteger(remainingUses) || remainingUses < 0) return {
|
|
475
|
-
ok: false,
|
|
476
|
-
code: "wallet_session_unavailable"
|
|
477
|
-
};
|
|
478
|
-
return {
|
|
479
|
-
ok: true,
|
|
480
|
-
status: {
|
|
481
|
-
record,
|
|
482
|
-
expiresAtMs: record.expiresAtMs,
|
|
483
|
-
remainingUses
|
|
484
|
-
}
|
|
485
|
-
};
|
|
486
|
-
} catch {
|
|
487
|
-
return {
|
|
488
|
-
ok: false,
|
|
489
|
-
code: "wallet_session_unavailable"
|
|
490
|
-
};
|
|
491
|
-
}
|
|
372
|
+
return readWalletSessionStatus({
|
|
373
|
+
readRecord: async () => this.parseRecord(await redisGetJson(this.client, this.keys.meta(id))),
|
|
374
|
+
readRemainingUses: async () => {
|
|
375
|
+
const usesResponse = await this.client.send(["GET", this.keys.uses(id)]);
|
|
376
|
+
return usesResponse.type === "error" ? void 0 : redisRawValue(usesResponse);
|
|
377
|
+
}
|
|
378
|
+
});
|
|
492
379
|
}
|
|
493
380
|
async consumeUseCount(id) {
|
|
494
381
|
try {
|
|
@@ -496,20 +383,12 @@ var RedisTcpWalletSessionStore = class {
|
|
|
496
383
|
"EVAL",
|
|
497
384
|
CONSUME_USE_COUNT_LUA,
|
|
498
385
|
"1",
|
|
499
|
-
this.
|
|
386
|
+
this.keys.uses(id)
|
|
500
387
|
]);
|
|
501
|
-
if (resp.type === "error") return {
|
|
502
|
-
ok: false,
|
|
503
|
-
code: "internal",
|
|
504
|
-
message: `Redis EVAL error: ${resp.value}`
|
|
505
|
-
};
|
|
388
|
+
if (resp.type === "error") return failure("internal", `Redis EVAL error: ${resp.value}`);
|
|
506
389
|
return parseRedisConsumeOnceResult(redisRawValue(resp));
|
|
507
390
|
} catch (e) {
|
|
508
|
-
return
|
|
509
|
-
ok: false,
|
|
510
|
-
code: "internal",
|
|
511
|
-
message: String(e && typeof e === "object" && "message" in e ? e.message : e || "Failed to consume threshold session")
|
|
512
|
-
};
|
|
391
|
+
return walletSessionStoreFailure(e, "Failed to consume threshold session");
|
|
513
392
|
}
|
|
514
393
|
}
|
|
515
394
|
async consumeUseCountOnce(id, idempotencyKey) {
|
|
@@ -518,21 +397,13 @@ var RedisTcpWalletSessionStore = class {
|
|
|
518
397
|
"EVAL",
|
|
519
398
|
CONSUME_ONCE_LUA,
|
|
520
399
|
"2",
|
|
521
|
-
this.
|
|
522
|
-
this.
|
|
400
|
+
this.keys.uses(id),
|
|
401
|
+
this.keys.consumeOnce(id, idempotencyKey)
|
|
523
402
|
]);
|
|
524
|
-
if (resp.type === "error") return {
|
|
525
|
-
ok: false,
|
|
526
|
-
code: "internal",
|
|
527
|
-
message: `Redis EVAL error: ${resp.value}`
|
|
528
|
-
};
|
|
403
|
+
if (resp.type === "error") return failure("internal", `Redis EVAL error: ${resp.value}`);
|
|
529
404
|
return parseRedisConsumeOnceResult(resp.type === "integer" ? String(resp.value) : resp.value);
|
|
530
405
|
} catch (e) {
|
|
531
|
-
return
|
|
532
|
-
ok: false,
|
|
533
|
-
code: "internal",
|
|
534
|
-
message: String(e && typeof e === "object" && "message" in e ? e.message : e || "Failed to consume threshold session")
|
|
535
|
-
};
|
|
406
|
+
return walletSessionStoreFailure(e, "Failed to consume threshold session");
|
|
536
407
|
}
|
|
537
408
|
}
|
|
538
409
|
async hasConsumedUseCountOnce(id, idempotencyKey) {
|
|
@@ -542,19 +413,11 @@ var RedisTcpWalletSessionStore = class {
|
|
|
542
413
|
consumed: false
|
|
543
414
|
};
|
|
544
415
|
try {
|
|
545
|
-
const resp = await this.client.send(["EXISTS", this.
|
|
546
|
-
if (resp.type === "error") return {
|
|
547
|
-
ok: false,
|
|
548
|
-
code: "internal",
|
|
549
|
-
message: `Redis EXISTS error: ${resp.value}`
|
|
550
|
-
};
|
|
416
|
+
const resp = await this.client.send(["EXISTS", this.keys.consumeOnce(id, consumeKey)]);
|
|
417
|
+
if (resp.type === "error") return failure("internal", `Redis EXISTS error: ${resp.value}`);
|
|
551
418
|
return parseRedisConsumedUseResult(resp.value);
|
|
552
419
|
} catch (e) {
|
|
553
|
-
return
|
|
554
|
-
ok: false,
|
|
555
|
-
code: "internal",
|
|
556
|
-
message: String(e && typeof e === "object" && "message" in e ? e.message : e || "Failed to check consumed threshold session operation")
|
|
557
|
-
};
|
|
420
|
+
return walletSessionStoreFailure(e, "Failed to check consumed threshold session operation");
|
|
558
421
|
}
|
|
559
422
|
}
|
|
560
423
|
async reserveReplayGuard(scopeId, replayKey, expiresAtMs) {
|
|
@@ -563,158 +426,114 @@ var RedisTcpWalletSessionStore = class {
|
|
|
563
426
|
if (ttlMs <= 0) return replayGuardExpired();
|
|
564
427
|
const resp = await this.client.send([
|
|
565
428
|
"SET",
|
|
566
|
-
this.
|
|
429
|
+
this.keys.replayGuard(scopeId, replayKey),
|
|
567
430
|
"1",
|
|
568
431
|
"NX",
|
|
569
432
|
"EX",
|
|
570
433
|
String(Math.max(1, Math.ceil(ttlMs / 1e3)))
|
|
571
434
|
]);
|
|
572
|
-
if (resp.type === "error") return {
|
|
573
|
-
ok: false,
|
|
574
|
-
code: "internal",
|
|
575
|
-
message: `Redis SET error: ${resp.value}`
|
|
576
|
-
};
|
|
435
|
+
if (resp.type === "error") return failure("internal", `Redis SET error: ${resp.value}`);
|
|
577
436
|
if (resp.type === "bulk" && resp.value === null) return replayGuardDuplicate();
|
|
578
437
|
if (resp.type === "simple" && resp.value === "OK") return { ok: true };
|
|
579
|
-
return
|
|
580
|
-
ok: false,
|
|
581
|
-
code: "internal",
|
|
582
|
-
message: "Redis replay guard returned invalid response"
|
|
583
|
-
};
|
|
438
|
+
return failure("internal", "Redis replay guard returned invalid response");
|
|
584
439
|
} catch (e) {
|
|
585
|
-
return
|
|
586
|
-
ok: false,
|
|
587
|
-
code: "internal",
|
|
588
|
-
message: String(e && typeof e === "object" && "message" in e ? e.message : e || "Failed to reserve replay guard")
|
|
589
|
-
};
|
|
440
|
+
return walletSessionStoreFailure(e, "Failed to reserve replay guard");
|
|
590
441
|
}
|
|
591
442
|
}
|
|
592
443
|
};
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
444
|
+
/**
|
|
445
|
+
* Selects a wallet session store: Durable Objects, else the config's explicit `kind`, else Upstash
|
|
446
|
+
* or Redis from env-shaped config, else in memory where the runtime allows it.
|
|
447
|
+
*/
|
|
448
|
+
function createWalletSessionStore(input, spec) {
|
|
449
|
+
const durableObjectStore = spec.durableObjectStore(input);
|
|
450
|
+
if (durableObjectStore) return durableObjectStore;
|
|
451
|
+
const { tag, parseRecord } = spec;
|
|
452
|
+
const config = isPlainObject(input.config) ? input.config : {};
|
|
600
453
|
const allowInMemory = normalizeOptionalTrimmedString(config.THRESHOLD_ALLOW_IN_MEMORY_STORES) === "1";
|
|
601
454
|
const requirePersistent = !input.isNode && !allowInMemory;
|
|
602
|
-
const
|
|
603
|
-
const
|
|
604
|
-
const kind = readNonDurableObjectThresholdStoreKind(config,
|
|
455
|
+
const envPrefix = spec.envPrefix(config);
|
|
456
|
+
const inMemory = () => new InMemoryWalletSessionStore({ keyPrefix: envPrefix || void 0 });
|
|
457
|
+
const kind = readNonDurableObjectThresholdStoreKind(config, tag);
|
|
605
458
|
if (kind === "in-memory") {
|
|
606
|
-
if (requirePersistent) throw new Error(
|
|
607
|
-
return
|
|
459
|
+
if (requirePersistent) throw new Error(`[${tag}] In-memory wallet session store is not supported in this runtime; configure Upstash/Redis or Durable Objects`);
|
|
460
|
+
return inMemory();
|
|
608
461
|
}
|
|
609
462
|
if (kind === "upstash-redis-rest") return new UpstashRedisRestWalletSessionStore({
|
|
610
463
|
url: normalizeOptionalTrimmedString(config.url) || normalizeOptionalTrimmedString(config.UPSTASH_REDIS_REST_URL),
|
|
611
464
|
token: normalizeOptionalTrimmedString(config.token) || normalizeOptionalTrimmedString(config.UPSTASH_REDIS_REST_TOKEN),
|
|
612
465
|
keyPrefix: normalizeOptionalTrimmedString(config.keyPrefix) || envPrefix,
|
|
613
|
-
parseRecord
|
|
466
|
+
parseRecord
|
|
614
467
|
});
|
|
615
468
|
if (kind === "redis-tcp") {
|
|
616
469
|
if (!input.isNode) {
|
|
617
|
-
if (requirePersistent) throw new Error(
|
|
618
|
-
input.logger.warn(
|
|
619
|
-
return
|
|
470
|
+
if (requirePersistent) throw new Error(`[${tag}] redis-tcp wallet session store is not supported in this runtime; configure Upstash/Redis REST or Durable Objects`);
|
|
471
|
+
input.logger.warn(`[${tag}] redis-tcp wallet session store is not supported in this runtime; falling back to in-memory`);
|
|
472
|
+
return inMemory();
|
|
620
473
|
}
|
|
621
474
|
return new RedisTcpWalletSessionStore({
|
|
622
475
|
redisUrl: normalizeOptionalTrimmedString(config.redisUrl) || normalizeOptionalTrimmedString(config.REDIS_URL),
|
|
623
476
|
keyPrefix: normalizeOptionalTrimmedString(config.keyPrefix) || envPrefix,
|
|
624
|
-
parseRecord
|
|
477
|
+
parseRecord
|
|
625
478
|
});
|
|
626
479
|
}
|
|
627
480
|
const upstashUrl = normalizeOptionalTrimmedString(config.UPSTASH_REDIS_REST_URL);
|
|
628
481
|
const upstashToken = normalizeOptionalTrimmedString(config.UPSTASH_REDIS_REST_TOKEN);
|
|
629
482
|
if (upstashUrl || upstashToken) {
|
|
630
483
|
if (!upstashUrl || !upstashToken) throw new Error("Upstash wallet session store enabled but UPSTASH_REDIS_REST_URL / UPSTASH_REDIS_REST_TOKEN are not both set");
|
|
631
|
-
input.logger.info(
|
|
484
|
+
input.logger.info(`[${tag}] Using Upstash REST store for Wallet Session records`);
|
|
632
485
|
return new UpstashRedisRestWalletSessionStore({
|
|
633
486
|
url: upstashUrl,
|
|
634
487
|
token: upstashToken,
|
|
635
|
-
keyPrefix: envPrefix || void 0
|
|
488
|
+
keyPrefix: envPrefix || void 0,
|
|
489
|
+
parseRecord
|
|
636
490
|
});
|
|
637
491
|
}
|
|
638
492
|
const redisUrl = normalizeOptionalTrimmedString(config.REDIS_URL);
|
|
639
493
|
if (redisUrl) {
|
|
640
494
|
if (!input.isNode) {
|
|
641
|
-
if (requirePersistent) throw new Error(
|
|
642
|
-
input.logger.warn(
|
|
643
|
-
return
|
|
495
|
+
if (requirePersistent) throw new Error(`[${tag}] REDIS_URL is set but TCP Redis is not supported in this runtime; use Upstash/Redis REST or Durable Objects`);
|
|
496
|
+
input.logger.warn(`[${tag}] REDIS_URL is set but TCP Redis is not supported in this runtime; falling back to in-memory`);
|
|
497
|
+
return inMemory();
|
|
644
498
|
}
|
|
645
|
-
input.logger.info(
|
|
499
|
+
input.logger.info(`[${tag}] Using redis-tcp store for Wallet Session records`);
|
|
646
500
|
return new RedisTcpWalletSessionStore({
|
|
647
501
|
redisUrl,
|
|
648
|
-
keyPrefix: envPrefix || void 0
|
|
502
|
+
keyPrefix: envPrefix || void 0,
|
|
503
|
+
parseRecord
|
|
649
504
|
});
|
|
650
505
|
}
|
|
651
|
-
if (requirePersistent) throw new Error(
|
|
652
|
-
input.logger.info(
|
|
653
|
-
return
|
|
506
|
+
if (requirePersistent) throw new Error(`[${tag}] Wallet Session records require persistent storage in this runtime; configure UPSTASH_REDIS_REST_URL/UPSTASH_REDIS_REST_TOKEN or Durable Objects`);
|
|
507
|
+
input.logger.info(`[${tag}] Using in-memory Wallet Session store (non-persistent)`);
|
|
508
|
+
return inMemory();
|
|
654
509
|
}
|
|
655
|
-
function
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
510
|
+
function createEd25519WalletSessionStore(input) {
|
|
511
|
+
return createWalletSessionStore(input, {
|
|
512
|
+
tag: "threshold-ed25519",
|
|
513
|
+
durableObjectStore: ({ config, logger }) => createCloudflareDurableObjectThresholdEd25519Stores({
|
|
514
|
+
config,
|
|
515
|
+
logger
|
|
516
|
+
})?.walletSessionStore ?? null,
|
|
517
|
+
envPrefix: (config) => {
|
|
518
|
+
const basePrefix = normalizeOptionalTrimmedString(config.THRESHOLD_PREFIX);
|
|
519
|
+
return normalizeOptionalTrimmedString(config.THRESHOLD_ED25519_WALLET_SESSION_PREFIX) || toThresholdEd25519PrefixFromBase(basePrefix, "wallet-session") || "";
|
|
520
|
+
},
|
|
521
|
+
parseRecord: parseEd25519WalletSessionRecord
|
|
659
522
|
});
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
url: normalizeOptionalTrimmedString(config.url) || normalizeOptionalTrimmedString(config.UPSTASH_REDIS_REST_URL),
|
|
673
|
-
token: normalizeOptionalTrimmedString(config.token) || normalizeOptionalTrimmedString(config.UPSTASH_REDIS_REST_TOKEN),
|
|
674
|
-
keyPrefix: normalizeOptionalTrimmedString(config.keyPrefix) || envPrefix,
|
|
523
|
+
}
|
|
524
|
+
function createEcdsaWalletSessionStore(input) {
|
|
525
|
+
return createWalletSessionStore(input, {
|
|
526
|
+
tag: "threshold-ecdsa",
|
|
527
|
+
durableObjectStore: ({ config, logger }) => createCloudflareDurableObjectThresholdEcdsaStores({
|
|
528
|
+
config,
|
|
529
|
+
logger
|
|
530
|
+
})?.walletSessionStore ?? null,
|
|
531
|
+
envPrefix: (config) => {
|
|
532
|
+
const basePrefix = normalizeOptionalTrimmedString(config.THRESHOLD_PREFIX);
|
|
533
|
+
return toThresholdEcdsaWalletSessionPrefix(normalizeOptionalTrimmedString(config.THRESHOLD_ECDSA_WALLET_SESSION_PREFIX) || toThresholdEcdsaPrefixFromBase(basePrefix, "wallet-session"));
|
|
534
|
+
},
|
|
675
535
|
parseRecord: parseEcdsaWalletSessionRecord
|
|
676
536
|
});
|
|
677
|
-
if (kind === "redis-tcp") {
|
|
678
|
-
if (!input.isNode) {
|
|
679
|
-
if (requirePersistent) throw new Error("[threshold-ecdsa] redis-tcp wallet session store is not supported in this runtime; configure Upstash/Redis REST or Durable Objects");
|
|
680
|
-
input.logger.warn("[threshold-ecdsa] redis-tcp wallet session store is not supported in this runtime; falling back to in-memory");
|
|
681
|
-
return new InMemoryWalletSessionStore({ keyPrefix: envPrefix });
|
|
682
|
-
}
|
|
683
|
-
return new RedisTcpWalletSessionStore({
|
|
684
|
-
redisUrl: normalizeOptionalTrimmedString(config.redisUrl) || normalizeOptionalTrimmedString(config.REDIS_URL),
|
|
685
|
-
keyPrefix: normalizeOptionalTrimmedString(config.keyPrefix) || envPrefix,
|
|
686
|
-
parseRecord: parseEcdsaWalletSessionRecord
|
|
687
|
-
});
|
|
688
|
-
}
|
|
689
|
-
const upstashUrl = normalizeOptionalTrimmedString(config.UPSTASH_REDIS_REST_URL);
|
|
690
|
-
const upstashToken = normalizeOptionalTrimmedString(config.UPSTASH_REDIS_REST_TOKEN);
|
|
691
|
-
if (upstashUrl || upstashToken) {
|
|
692
|
-
if (!upstashUrl || !upstashToken) throw new Error("Upstash wallet session store enabled but UPSTASH_REDIS_REST_URL / UPSTASH_REDIS_REST_TOKEN are not both set");
|
|
693
|
-
input.logger.info("[threshold-ecdsa] Using Upstash REST store for Wallet Session records");
|
|
694
|
-
return new UpstashRedisRestWalletSessionStore({
|
|
695
|
-
url: upstashUrl,
|
|
696
|
-
token: upstashToken,
|
|
697
|
-
keyPrefix: envPrefix,
|
|
698
|
-
parseRecord: parseEcdsaWalletSessionRecord
|
|
699
|
-
});
|
|
700
|
-
}
|
|
701
|
-
const redisUrl = normalizeOptionalTrimmedString(config.REDIS_URL);
|
|
702
|
-
if (redisUrl) {
|
|
703
|
-
if (!input.isNode) {
|
|
704
|
-
if (requirePersistent) throw new Error("[threshold-ecdsa] REDIS_URL is set but TCP Redis is not supported in this runtime; use Upstash/Redis REST or Durable Objects");
|
|
705
|
-
input.logger.warn("[threshold-ecdsa] REDIS_URL is set but TCP Redis is not supported in this runtime; falling back to in-memory");
|
|
706
|
-
return new InMemoryWalletSessionStore({ keyPrefix: envPrefix });
|
|
707
|
-
}
|
|
708
|
-
input.logger.info("[threshold-ecdsa] Using redis-tcp store for Wallet Session records");
|
|
709
|
-
return new RedisTcpWalletSessionStore({
|
|
710
|
-
redisUrl,
|
|
711
|
-
keyPrefix: envPrefix,
|
|
712
|
-
parseRecord: parseEcdsaWalletSessionRecord
|
|
713
|
-
});
|
|
714
|
-
}
|
|
715
|
-
if (requirePersistent) throw new Error("[threshold-ecdsa] Wallet Session records require persistent storage in this runtime; configure UPSTASH_REDIS_REST_URL/UPSTASH_REDIS_REST_TOKEN or Durable Objects");
|
|
716
|
-
input.logger.info("[threshold-ecdsa] Using in-memory Wallet Session store (non-persistent)");
|
|
717
|
-
return new InMemoryWalletSessionStore({ keyPrefix: envPrefix });
|
|
718
537
|
}
|
|
719
538
|
//#endregion
|
|
720
539
|
export { createEcdsaWalletSessionStore, createEd25519WalletSessionStore };
|