@seams/wallet-server 0.6.1 → 0.7.1
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/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 +34 -2
- package/dist/esm/authorization/vaultProxyUse.js +3 -4
- package/dist/esm/cloud-host.js +16 -11
- package/dist/esm/core/EmailOtpRecords.js +19 -1
- package/dist/esm/core/EmailOtpStores.js +323 -924
- package/dist/esm/core/IdentityStore.js +44 -235
- package/dist/esm/core/NearPublicKeyStore.js +21 -63
- package/dist/esm/core/RegistrationCeremonyStore.js +3 -1793
- 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/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 +185 -290
- package/dist/esm/core/ThresholdService/validation.js +18 -230
- package/dist/esm/core/WalletAuthMethodStore.js +22 -79
- package/dist/esm/core/WalletStore.js +58 -185
- 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/emailOtpChallengeProof.js +1 -1
- package/dist/esm/core/authService/emailOtpChallenges.js +1 -1
- package/dist/esm/core/authService/emailOtpConfig.js +1 -32
- package/dist/esm/core/authService/emailOtpRegistrationEnrollment.js +6 -153
- package/dist/esm/core/authService/googleEmailOtpRegistration.js +1 -1
- package/dist/esm/core/authService/nearPrivateKeySigning.js +7 -15
- package/dist/esm/core/authService/nearTransactions.js +2 -1
- package/dist/esm/core/authService/oidcVerification.js +3 -4
- package/dist/esm/core/authService/rateLimits.js +1 -31
- 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 +4 -5
- package/dist/esm/core/authService/webauthn.js +15 -50
- package/dist/esm/core/authService/webauthnOidcHelpers.js +1 -6
- package/dist/esm/core/authService/webauthnVerificationOutcomes.js +60 -0
- package/dist/esm/core/authService/webauthnWalletBinding.js +2 -122
- package/dist/esm/core/d1IdentityStore.js +32 -66
- package/dist/esm/core/d1TenantStore.js +82 -0
- package/dist/esm/core/d1WalletAuthMethodStore.js +92 -143
- package/dist/esm/core/d1WalletStore.js +14 -12
- package/dist/esm/core/deviceLinking/linkedDeviceEmailOtpGrant.js +10 -8
- 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 +102 -0
- package/dist/esm/core/deviceLinking/linkedDeviceSessionRecord.js +668 -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 +25 -150
- 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 +5 -5
- package/dist/esm/core/signingLanes/ecdsaServerRetirement.js +3 -8
- package/dist/esm/core/signingLanes/ed25519ServerRetirement.js +1 -4
- package/dist/esm/core/storeBackends.js +208 -0
- package/dist/esm/core/thresholdEcdsaChainTarget.js +1 -7
- package/dist/esm/core/webAuthnD1Statements.js +92 -0
- package/dist/esm/core/webAuthnStoreBackends.js +198 -0
- package/dist/esm/hosted-wallet-gateway.js +33 -16
- package/dist/esm/index.js +2 -2
- package/dist/esm/local-hosted-wallet-gateway-worker.js +2 -23
- package/dist/esm/localHostedWalletGatewayHandler.js +299 -0
- package/dist/esm/localIntendedEcdsaFinalizeFault.js +85 -0
- package/dist/esm/localIntendedLinkExecuteFault.js +140 -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 +10 -2
- package/dist/esm/router/auth/walletSessionFailure.js +1 -14
- package/dist/esm/router/cloudflare/d1/auth/d1AuthorizedOperationRouteService.js +23 -0
- package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthService.js +86 -66
- package/dist/esm/router/cloudflare/d1/authorization/authorizedOperationStatements.js +208 -0
- package/dist/esm/router/cloudflare/d1/authorization/d1AuthorizationStore.js +246 -296
- package/dist/esm/router/cloudflare/d1/authorization/persistedWalletSessionAuthorization.js +14 -0
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.js +62 -63
- 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 +9 -17
- 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 +3 -3
- 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/d1EmailOtpChallengeStore.js +26 -71
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeVerifier.js +20 -3
- 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 +26 -123
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecoveryService.js +0 -2
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRegistrationEnrollmentFinalizer.js +2 -2
- 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 +1 -1
- package/dist/esm/router/cloudflare/d1/identity/d1IdentityRecords.js +1 -28
- package/dist/esm/router/cloudflare/d1/near/d1NearPublicKeyStore.js +2 -8
- package/dist/esm/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyEnvelopeStore.js +1 -1
- package/dist/esm/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyRouteService.js +3 -3
- package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.js +23 -73
- package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpRecords.js +15 -2
- package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletRecoveryGoogleEmailOtpService.js +12 -203
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.js +16 -32
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.js +29 -72
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.js +4 -1
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationIntentService.js +3 -1
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.js +6 -30
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationService.js +261 -205
- 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 +3 -3
- package/dist/esm/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.js +43 -25
- 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 +14 -49
- package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnRecords.js +4 -4
- package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnStore.js +22 -116
- package/dist/esm/router/cloudflare/runtime/createSelfHostedCloudflareSigningWorker.js +1 -2
- package/dist/esm/router/cloudflare/runtime/walletConsoleTenantRootLineage.js +11 -2
- package/dist/esm/router/cloudflare/runtime/walletGateway.js +1 -1
- package/dist/esm/router/cloudflare/signingLanes/cloudflareLaneCurveExecution.js +5 -6
- package/dist/esm/router/cloudflare/signingLanes/cloudflareLaneProtocolCommitter.js +2 -1
- package/dist/esm/router/cloudflare/signingLanes/cloudflareOrdinaryInactiveSignerMaterialReservation.js +48 -21
- package/dist/esm/router/cloudflare.js +11480 -12853
- 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/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/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 +3 -2
- package/dist/esm/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationRequestScopedCloudflare.js +87 -132
- 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/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 +827 -0
- package/dist/esm/router/domains/signingOperations/routerAbEd25519NormalSigningRoute.js +698 -0
- package/dist/esm/router/domains/signingOperations/routerAbNormalSigningAdmission.js +209 -0
- package/dist/esm/router/domains/signingOperations/routerAbNormalSigningAdmissionCore.js +16 -15
- package/dist/esm/router/domains/signingOperations/routerAbOperationStepUp.js +313 -0
- package/dist/esm/router/domains/signingOperations/routerAbPrivateSigningWorker.js +62 -2159
- package/dist/esm/router/domains/tenantRoot/tenantRootIdentityResolution.js +1 -1
- 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 +97 -150
- package/dist/esm/router/express.js +5967 -6410
- package/dist/esm/router/framework/http.js +1 -4
- package/dist/esm/router/framework/ror/normalize.js +1 -1
- package/dist/esm/router/framework/routerApiRouteSurface.js +1 -1
- 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 +1 -1
- package/dist/esm/router/transport/fetch/routes/deviceLinking.js +16 -18
- package/dist/esm/router/transport/fetch/routes/deviceLinkingOwnerAuthorization.js +3 -5
- package/dist/esm/router/transport/fetch/routes/deviceManagement.js +15 -24
- 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 +4 -4
- package/dist/esm/router/transport/fetch/routes/syncAccount.js +4 -6
- package/dist/esm/router/transport/fetch/routes/syncAccountBootstrap.js +2 -2
- package/dist/esm/router/transport/fetch/routes/thresholdEcdsa.js +69 -23
- package/dist/esm/router/transport/fetch/routes/thresholdEd25519.js +52 -27
- 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/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 +8 -9
- package/dist/esm/shared-ts/src/device-linking/delegatedActivationPlan.js +3 -1
- 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 +3 -1
- 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 +6 -9
- 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 +5 -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 +5 -12
- 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/tenantRootOperationRecord.js +1 -1
- 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/emailOtpDomain.js +2 -2
- package/dist/esm/shared-ts/src/utils/exactRecord.js +44 -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 +4 -1170
- package/dist/esm/shared-ts/src/utils/registrationSignerPlan.js +429 -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/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 +7 -11
- 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 +1 -1
- package/dist/esm/threshold/session/signingSessionSeal/crypto/shamir3PassWasm.js +1 -1
- package/dist/esm/threshold/session/signingSessionSeal/idempotencyRecords.js +1 -2
- package/dist/esm/threshold/session/signingSessionSeal/options.js +1 -1
- package/dist/esm/threshold/session/signingSessionSeal/transport/shared.js +18 -55
- package/dist/esm/threshold/statusCodes.js +1 -1
- 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/esm/wasm/router_ab_ecdsa_signing_worker/pkg/router_ab_ecdsa_signing_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 +0 -8
- 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 +2 -1
- 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 +2 -5
- package/dist/types/shared-ts/src/device-linking/contracts.d.ts +8 -11
- 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 +3 -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 +9 -18
- 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 +0 -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 +2 -51
- 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 +15 -37
- 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/threshold/ecdsaDerivationRoleLocalBootstrap.d.ts +2 -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 +2 -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 +1 -2
- package/dist/types/shared-ts/src/utils/emailOtpDomain.d.ts +5 -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/exactRecord.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 +3 -2
- package/dist/types/shared-ts/src/utils/near.d.ts +2 -1
- package/dist/types/shared-ts/src/utils/nearRpcResults.d.ts +7 -7
- package/dist/types/shared-ts/src/utils/normalize.d.ts +0 -4
- package/dist/types/shared-ts/src/utils/registrationAuthMethodInput.d.ts +184 -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 +142 -0
- package/dist/types/shared-ts/src/utils/routerAbEcdsaDerivation.d.ts +21 -92
- package/dist/types/shared-ts/src/utils/routerAbEd25519Yao.d.ts +14 -99
- package/dist/types/shared-ts/src/utils/routerAbEd25519YaoDigests.d.ts +39 -0
- 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/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 +1 -7
- package/dist/types/shared-ts/src/utils/validation.d.ts +10 -10
- package/dist/types/shared-ts/src/utils/variant.d.ts +11 -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 +104 -0
- package/dist/types/shared-ts/src/utils/walletCapabilityBindings.d.ts +3 -7
- package/dist/types/shared-ts/src/utils/webauthnDeviceInfo.d.ts +3 -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/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/wallet-server/src/authorization/capabilityPolicy.d.ts +0 -1
- package/dist/types/wallet-server/src/authorization/domain.d.ts +25 -5
- package/dist/types/wallet-server/src/authorization/ecdsaWalletSessionAdmission.d.ts +37 -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 +52 -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 +4 -8
- 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 +1 -3
- package/dist/types/wallet-server/src/core/ThresholdService/validation.d.ts +14 -47
- 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 +7 -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/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 +7 -23
- 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 +3 -2
- package/dist/types/wallet-server/src/core/authService/emailOtpUnlock.d.ts +4 -3
- 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/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 +6 -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 +259 -0
- package/dist/types/wallet-server/src/core/deviceLinking/requestProof.d.ts +2 -2
- 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 +5 -4
- package/dist/types/wallet-server/src/core/rpcClients/near/NearClient.d.ts +10 -106
- 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 +3 -9
- 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/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 +0 -1
- package/dist/types/wallet-server/src/core/types.d.ts +3 -24
- 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/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 +10 -21
- package/dist/types/wallet-server/src/router/auth/commonRouterUtils.d.ts +5 -10
- 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 -2
- 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/authorization/authorizedOperationStatements.d.ts +30 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/authorization/d1AuthorizationStore.d.ts +45 -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 +57 -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 +4 -2
- 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 +2 -2
- 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 +2 -3
- 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 +3 -4
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.d.ts +9 -8
- 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/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 +5 -8
- 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 +15 -22
- 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 +3 -5
- 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 +3 -7
- package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnStore.d.ts +8 -19
- 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 +4 -4
- 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 +5 -5
- 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 -7
- 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 +165 -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 +360 -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 +165 -0
- package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbPrivateSigningWorker.d.ts +16 -702
- 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 +5 -4
- 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/authServicePort.d.ts +64 -61
- package/dist/types/wallet-server/src/router/framework/http.d.ts +0 -1
- package/dist/types/wallet-server/src/router/framework/ror/normalize.d.ts +2 -2
- 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 +2 -2
- 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 +7 -13
- package/dist/types/wallet-server/src/router/transport/fetch/routes/thresholdEcdsa.d.ts +3 -57
- 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 -6
- 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/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,57 @@
|
|
|
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 { parseEcdsaWalletSessionRecord, parseEd25519WalletSessionRecord, toThresholdEcdsaPrefixFromBase, toThresholdEcdsaWalletSessionPrefix, toThresholdEd25519PrefixFromBase, toThresholdEd25519WalletSessionPrefix } from "../validation.js";
|
|
4
4
|
import { RedisTcpClient, UpstashRedisRestClient, redisGetJson, redisSetJson } from "../kv.js";
|
|
5
5
|
import { createCloudflareDurableObjectThresholdEcdsaStores, createCloudflareDurableObjectThresholdEd25519Stores } from "./CloudflareDurableObjectStore.js";
|
|
6
6
|
import { readNonDurableObjectThresholdStoreKind } from "./StoreConfig.js";
|
|
7
7
|
//#region src/core/ThresholdService/stores/WalletSessionStore.ts
|
|
8
8
|
const EXPORT_REPLAY_GUARD_CLOCK_SKEW_MS = 5 * 6e4;
|
|
9
9
|
const EXPORT_REPLAY_GUARD_MIN_RETENTION_MS = 1440 * 6e4;
|
|
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 {
|
|
39
|
+
ok: false,
|
|
40
|
+
code: "wallet_session_missing",
|
|
41
|
+
message: "Wallet Session is missing"
|
|
42
|
+
};
|
|
43
|
+
if (entry.expiresAtMs <= Date.now()) {
|
|
44
|
+
this.map.delete(key);
|
|
45
|
+
return {
|
|
46
|
+
ok: false,
|
|
47
|
+
code: "wallet_session_expired",
|
|
48
|
+
message: "Wallet Session expired"
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
return entry;
|
|
21
52
|
}
|
|
22
53
|
async putSession(id, record, opts) {
|
|
23
|
-
const key = this.
|
|
54
|
+
const key = this.keys.meta(id);
|
|
24
55
|
const ttlMs = Math.max(0, Number(opts.ttlMs) || 0);
|
|
25
56
|
const expiresAtMs = Date.now() + ttlMs;
|
|
26
57
|
this.map.set(key, {
|
|
@@ -31,7 +62,7 @@ var InMemoryWalletSessionStore = class {
|
|
|
31
62
|
});
|
|
32
63
|
}
|
|
33
64
|
async getSession(id) {
|
|
34
|
-
const key = this.
|
|
65
|
+
const key = this.keys.meta(id);
|
|
35
66
|
const entry = this.map.get(key);
|
|
36
67
|
if (!entry) return null;
|
|
37
68
|
if (entry.expiresAtMs <= Date.now()) {
|
|
@@ -41,7 +72,7 @@ var InMemoryWalletSessionStore = class {
|
|
|
41
72
|
return entry.record;
|
|
42
73
|
}
|
|
43
74
|
async getSessionStatus(id) {
|
|
44
|
-
const key = this.
|
|
75
|
+
const key = this.keys.meta(id);
|
|
45
76
|
const entry = this.map.get(key);
|
|
46
77
|
if (!entry) return {
|
|
47
78
|
ok: false,
|
|
@@ -64,21 +95,8 @@ var InMemoryWalletSessionStore = class {
|
|
|
64
95
|
};
|
|
65
96
|
}
|
|
66
97
|
async consumeUseCount(id) {
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
if (!entry) return {
|
|
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
|
-
}
|
|
98
|
+
const entry = this.liveEntry(id);
|
|
99
|
+
if ("ok" in entry) return entry;
|
|
82
100
|
if (entry.remainingUses <= 0) return {
|
|
83
101
|
ok: false,
|
|
84
102
|
code: "wallet_budget_exhausted",
|
|
@@ -91,21 +109,8 @@ var InMemoryWalletSessionStore = class {
|
|
|
91
109
|
};
|
|
92
110
|
}
|
|
93
111
|
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
|
-
}
|
|
112
|
+
const entry = this.liveEntry(id);
|
|
113
|
+
if ("ok" in entry) return entry;
|
|
109
114
|
const consumeKey = String(idempotencyKey || "").trim();
|
|
110
115
|
if (consumeKey && entry.consumedIdempotencyKeys.has(consumeKey)) return {
|
|
111
116
|
ok: true,
|
|
@@ -124,21 +129,8 @@ var InMemoryWalletSessionStore = class {
|
|
|
124
129
|
};
|
|
125
130
|
}
|
|
126
131
|
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
|
-
}
|
|
132
|
+
const entry = this.liveEntry(id);
|
|
133
|
+
if ("ok" in entry) return entry;
|
|
142
134
|
const consumeKey = String(idempotencyKey || "").trim();
|
|
143
135
|
return {
|
|
144
136
|
ok: true,
|
|
@@ -146,7 +138,7 @@ var InMemoryWalletSessionStore = class {
|
|
|
146
138
|
};
|
|
147
139
|
}
|
|
148
140
|
async reserveReplayGuard(scopeId, replayKey, expiresAtMs) {
|
|
149
|
-
const key = this.
|
|
141
|
+
const key = this.keys.replayGuard(scopeId, replayKey);
|
|
150
142
|
if (!key) return replayGuardInvalid();
|
|
151
143
|
const nowMs = Date.now();
|
|
152
144
|
const existingExpiresAtMs = this.replayGuards.get(key);
|
|
@@ -158,6 +150,49 @@ var InMemoryWalletSessionStore = class {
|
|
|
158
150
|
return { ok: true };
|
|
159
151
|
}
|
|
160
152
|
};
|
|
153
|
+
/** A backend failure as an `internal` result: the error's message, else `fallback`. */
|
|
154
|
+
function walletSessionStoreFailure(error, fallback) {
|
|
155
|
+
return {
|
|
156
|
+
ok: false,
|
|
157
|
+
code: "internal",
|
|
158
|
+
message: String(error && typeof error === "object" && "message" in error ? error.message : error || fallback)
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* A remote store's session status: the parsed record while it is live, with its remaining uses.
|
|
163
|
+
* A backend failure, or a use count that is not a non-negative integer, reads as unavailable.
|
|
164
|
+
*/
|
|
165
|
+
async function readWalletSessionStatus(input) {
|
|
166
|
+
try {
|
|
167
|
+
const record = await input.readRecord();
|
|
168
|
+
if (!record) return {
|
|
169
|
+
ok: false,
|
|
170
|
+
code: "wallet_session_missing"
|
|
171
|
+
};
|
|
172
|
+
if (record.expiresAtMs <= Date.now()) return {
|
|
173
|
+
ok: false,
|
|
174
|
+
code: "wallet_session_expired"
|
|
175
|
+
};
|
|
176
|
+
const remainingUses = Number(await input.readRemainingUses());
|
|
177
|
+
if (!Number.isSafeInteger(remainingUses) || remainingUses < 0) return {
|
|
178
|
+
ok: false,
|
|
179
|
+
code: "wallet_session_unavailable"
|
|
180
|
+
};
|
|
181
|
+
return {
|
|
182
|
+
ok: true,
|
|
183
|
+
status: {
|
|
184
|
+
record,
|
|
185
|
+
expiresAtMs: record.expiresAtMs,
|
|
186
|
+
remainingUses
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
} catch {
|
|
190
|
+
return {
|
|
191
|
+
ok: false,
|
|
192
|
+
code: "wallet_session_unavailable"
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
}
|
|
161
196
|
function normalizeConsumeOnceKey(value) {
|
|
162
197
|
return String(value || "").trim().replace(/[^A-Za-z0-9._:-]/g, "_").slice(0, 512);
|
|
163
198
|
}
|
|
@@ -309,81 +344,36 @@ var UpstashRedisRestWalletSessionStore = class {
|
|
|
309
344
|
url,
|
|
310
345
|
token
|
|
311
346
|
});
|
|
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)}`;
|
|
347
|
+
this.keys = new WalletSessionKeys(input.keyPrefix);
|
|
348
|
+
this.parseRecord = input.parseRecord;
|
|
326
349
|
}
|
|
327
350
|
async putSession(id, record, opts) {
|
|
328
351
|
const ttlMs = Math.max(0, Number(opts.ttlMs) || 0);
|
|
329
|
-
await this.client.setJson(this.
|
|
330
|
-
await this.client.setRaw(this.
|
|
352
|
+
await this.client.setJson(this.keys.meta(id), record, ttlMs);
|
|
353
|
+
await this.client.setRaw(this.keys.uses(id), String(Math.max(0, Number(opts.remainingUses) || 0)), ttlMs);
|
|
331
354
|
}
|
|
332
355
|
async getSession(id) {
|
|
333
|
-
const raw = await this.client.getJson(this.
|
|
356
|
+
const raw = await this.client.getJson(this.keys.meta(id));
|
|
334
357
|
return this.parseRecord(raw);
|
|
335
358
|
}
|
|
336
359
|
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
|
-
}
|
|
360
|
+
return readWalletSessionStatus({
|
|
361
|
+
readRecord: async () => this.parseRecord(await this.client.getJson(this.keys.meta(id))),
|
|
362
|
+
readRemainingUses: () => this.client.getRaw(this.keys.uses(id))
|
|
363
|
+
});
|
|
366
364
|
}
|
|
367
365
|
async consumeUseCount(id) {
|
|
368
366
|
try {
|
|
369
|
-
return parseRedisConsumeOnceResult(await this.client.eval(CONSUME_USE_COUNT_LUA, [this.
|
|
367
|
+
return parseRedisConsumeOnceResult(await this.client.eval(CONSUME_USE_COUNT_LUA, [this.keys.uses(id)], []));
|
|
370
368
|
} 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
|
-
};
|
|
369
|
+
return walletSessionStoreFailure(e, "Failed to consume threshold session");
|
|
376
370
|
}
|
|
377
371
|
}
|
|
378
372
|
async consumeUseCountOnce(id, idempotencyKey) {
|
|
379
373
|
try {
|
|
380
|
-
return parseRedisConsumeOnceResult(await this.client.eval(CONSUME_ONCE_LUA, [this.
|
|
374
|
+
return parseRedisConsumeOnceResult(await this.client.eval(CONSUME_ONCE_LUA, [this.keys.uses(id), this.keys.consumeOnce(id, idempotencyKey)], []));
|
|
381
375
|
} 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
|
-
};
|
|
376
|
+
return walletSessionStoreFailure(e, "Failed to consume threshold session");
|
|
387
377
|
}
|
|
388
378
|
}
|
|
389
379
|
async hasConsumedUseCountOnce(id, idempotencyKey) {
|
|
@@ -393,26 +383,18 @@ var UpstashRedisRestWalletSessionStore = class {
|
|
|
393
383
|
consumed: false
|
|
394
384
|
};
|
|
395
385
|
try {
|
|
396
|
-
return parseRedisConsumedUseResult(await this.client.eval(CONSUME_ONCE_EXISTS_LUA, [this.
|
|
386
|
+
return parseRedisConsumedUseResult(await this.client.eval(CONSUME_ONCE_EXISTS_LUA, [this.keys.consumeOnce(id, consumeKey)], []));
|
|
397
387
|
} 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
|
-
};
|
|
388
|
+
return walletSessionStoreFailure(e, "Failed to check consumed threshold session operation");
|
|
403
389
|
}
|
|
404
390
|
}
|
|
405
391
|
async reserveReplayGuard(scopeId, replayKey, expiresAtMs) {
|
|
406
392
|
try {
|
|
407
393
|
const ttlMs = replayGuardTtlMs(expiresAtMs);
|
|
408
394
|
if (ttlMs <= 0) return replayGuardExpired();
|
|
409
|
-
return parseRedisReplayGuardResult(await this.client.eval(REPLAY_GUARD_LUA, [this.
|
|
395
|
+
return parseRedisReplayGuardResult(await this.client.eval(REPLAY_GUARD_LUA, [this.keys.replayGuard(scopeId, replayKey)], [String(Math.max(1, Math.ceil(ttlMs / 1e3)))]));
|
|
410
396
|
} 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
|
-
};
|
|
397
|
+
return walletSessionStoreFailure(e, "Failed to reserve replay guard");
|
|
416
398
|
}
|
|
417
399
|
}
|
|
418
400
|
};
|
|
@@ -421,29 +403,17 @@ var RedisTcpWalletSessionStore = class {
|
|
|
421
403
|
const url = normalizeOptionalTrimmedString(input.redisUrl);
|
|
422
404
|
if (!url) throw new Error("redis-tcp wallet session store missing redisUrl");
|
|
423
405
|
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)}`;
|
|
406
|
+
this.keys = new WalletSessionKeys(input.keyPrefix);
|
|
407
|
+
this.parseRecord = input.parseRecord;
|
|
438
408
|
}
|
|
439
409
|
async putSession(id, record, opts) {
|
|
440
410
|
const ttlMs = Math.max(0, Number(opts.ttlMs) || 0);
|
|
441
|
-
await redisSetJson(this.client, this.
|
|
411
|
+
await redisSetJson(this.client, this.keys.meta(id), record, ttlMs);
|
|
442
412
|
const ttlSeconds = Math.max(1, Math.ceil(ttlMs / 1e3));
|
|
443
413
|
const uses = String(Math.max(0, Number(opts.remainingUses) || 0));
|
|
444
414
|
const resp = await this.client.send([
|
|
445
415
|
"SET",
|
|
446
|
-
this.
|
|
416
|
+
this.keys.uses(id),
|
|
447
417
|
uses,
|
|
448
418
|
"EX",
|
|
449
419
|
String(ttlSeconds)
|
|
@@ -451,44 +421,17 @@ var RedisTcpWalletSessionStore = class {
|
|
|
451
421
|
if (resp.type === "error") throw new Error(`Redis SET error: ${resp.value}`);
|
|
452
422
|
}
|
|
453
423
|
async getSession(id) {
|
|
454
|
-
const raw = await redisGetJson(this.client, this.
|
|
424
|
+
const raw = await redisGetJson(this.client, this.keys.meta(id));
|
|
455
425
|
return this.parseRecord(raw);
|
|
456
426
|
}
|
|
457
427
|
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
|
-
}
|
|
428
|
+
return readWalletSessionStatus({
|
|
429
|
+
readRecord: async () => this.parseRecord(await redisGetJson(this.client, this.keys.meta(id))),
|
|
430
|
+
readRemainingUses: async () => {
|
|
431
|
+
const usesResponse = await this.client.send(["GET", this.keys.uses(id)]);
|
|
432
|
+
return usesResponse.type === "error" ? void 0 : redisRawValue(usesResponse);
|
|
433
|
+
}
|
|
434
|
+
});
|
|
492
435
|
}
|
|
493
436
|
async consumeUseCount(id) {
|
|
494
437
|
try {
|
|
@@ -496,7 +439,7 @@ var RedisTcpWalletSessionStore = class {
|
|
|
496
439
|
"EVAL",
|
|
497
440
|
CONSUME_USE_COUNT_LUA,
|
|
498
441
|
"1",
|
|
499
|
-
this.
|
|
442
|
+
this.keys.uses(id)
|
|
500
443
|
]);
|
|
501
444
|
if (resp.type === "error") return {
|
|
502
445
|
ok: false,
|
|
@@ -505,11 +448,7 @@ var RedisTcpWalletSessionStore = class {
|
|
|
505
448
|
};
|
|
506
449
|
return parseRedisConsumeOnceResult(redisRawValue(resp));
|
|
507
450
|
} 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
|
-
};
|
|
451
|
+
return walletSessionStoreFailure(e, "Failed to consume threshold session");
|
|
513
452
|
}
|
|
514
453
|
}
|
|
515
454
|
async consumeUseCountOnce(id, idempotencyKey) {
|
|
@@ -518,8 +457,8 @@ var RedisTcpWalletSessionStore = class {
|
|
|
518
457
|
"EVAL",
|
|
519
458
|
CONSUME_ONCE_LUA,
|
|
520
459
|
"2",
|
|
521
|
-
this.
|
|
522
|
-
this.
|
|
460
|
+
this.keys.uses(id),
|
|
461
|
+
this.keys.consumeOnce(id, idempotencyKey)
|
|
523
462
|
]);
|
|
524
463
|
if (resp.type === "error") return {
|
|
525
464
|
ok: false,
|
|
@@ -528,11 +467,7 @@ var RedisTcpWalletSessionStore = class {
|
|
|
528
467
|
};
|
|
529
468
|
return parseRedisConsumeOnceResult(resp.type === "integer" ? String(resp.value) : resp.value);
|
|
530
469
|
} 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
|
-
};
|
|
470
|
+
return walletSessionStoreFailure(e, "Failed to consume threshold session");
|
|
536
471
|
}
|
|
537
472
|
}
|
|
538
473
|
async hasConsumedUseCountOnce(id, idempotencyKey) {
|
|
@@ -542,7 +477,7 @@ var RedisTcpWalletSessionStore = class {
|
|
|
542
477
|
consumed: false
|
|
543
478
|
};
|
|
544
479
|
try {
|
|
545
|
-
const resp = await this.client.send(["EXISTS", this.
|
|
480
|
+
const resp = await this.client.send(["EXISTS", this.keys.consumeOnce(id, consumeKey)]);
|
|
546
481
|
if (resp.type === "error") return {
|
|
547
482
|
ok: false,
|
|
548
483
|
code: "internal",
|
|
@@ -550,11 +485,7 @@ var RedisTcpWalletSessionStore = class {
|
|
|
550
485
|
};
|
|
551
486
|
return parseRedisConsumedUseResult(resp.value);
|
|
552
487
|
} 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
|
-
};
|
|
488
|
+
return walletSessionStoreFailure(e, "Failed to check consumed threshold session operation");
|
|
558
489
|
}
|
|
559
490
|
}
|
|
560
491
|
async reserveReplayGuard(scopeId, replayKey, expiresAtMs) {
|
|
@@ -563,7 +494,7 @@ var RedisTcpWalletSessionStore = class {
|
|
|
563
494
|
if (ttlMs <= 0) return replayGuardExpired();
|
|
564
495
|
const resp = await this.client.send([
|
|
565
496
|
"SET",
|
|
566
|
-
this.
|
|
497
|
+
this.keys.replayGuard(scopeId, replayKey),
|
|
567
498
|
"1",
|
|
568
499
|
"NX",
|
|
569
500
|
"EX",
|
|
@@ -582,139 +513,103 @@ var RedisTcpWalletSessionStore = class {
|
|
|
582
513
|
message: "Redis replay guard returned invalid response"
|
|
583
514
|
};
|
|
584
515
|
} 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
|
-
};
|
|
516
|
+
return walletSessionStoreFailure(e, "Failed to reserve replay guard");
|
|
590
517
|
}
|
|
591
518
|
}
|
|
592
519
|
};
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
520
|
+
/**
|
|
521
|
+
* Selects a wallet session store: Durable Objects, else the config's explicit `kind`, else Upstash
|
|
522
|
+
* or Redis from env-shaped config, else in memory where the runtime allows it.
|
|
523
|
+
*/
|
|
524
|
+
function createWalletSessionStore(input, spec) {
|
|
525
|
+
const durableObjectStore = spec.durableObjectStore(input);
|
|
526
|
+
if (durableObjectStore) return durableObjectStore;
|
|
527
|
+
const { tag, parseRecord } = spec;
|
|
528
|
+
const config = isPlainObject(input.config) ? input.config : {};
|
|
600
529
|
const allowInMemory = normalizeOptionalTrimmedString(config.THRESHOLD_ALLOW_IN_MEMORY_STORES) === "1";
|
|
601
530
|
const requirePersistent = !input.isNode && !allowInMemory;
|
|
602
|
-
const
|
|
603
|
-
const
|
|
604
|
-
const kind = readNonDurableObjectThresholdStoreKind(config,
|
|
531
|
+
const envPrefix = spec.envPrefix(config);
|
|
532
|
+
const inMemory = () => new InMemoryWalletSessionStore({ keyPrefix: envPrefix || void 0 });
|
|
533
|
+
const kind = readNonDurableObjectThresholdStoreKind(config, tag);
|
|
605
534
|
if (kind === "in-memory") {
|
|
606
|
-
if (requirePersistent) throw new Error(
|
|
607
|
-
return
|
|
535
|
+
if (requirePersistent) throw new Error(`[${tag}] In-memory wallet session store is not supported in this runtime; configure Upstash/Redis or Durable Objects`);
|
|
536
|
+
return inMemory();
|
|
608
537
|
}
|
|
609
538
|
if (kind === "upstash-redis-rest") return new UpstashRedisRestWalletSessionStore({
|
|
610
539
|
url: normalizeOptionalTrimmedString(config.url) || normalizeOptionalTrimmedString(config.UPSTASH_REDIS_REST_URL),
|
|
611
540
|
token: normalizeOptionalTrimmedString(config.token) || normalizeOptionalTrimmedString(config.UPSTASH_REDIS_REST_TOKEN),
|
|
612
541
|
keyPrefix: normalizeOptionalTrimmedString(config.keyPrefix) || envPrefix,
|
|
613
|
-
parseRecord
|
|
542
|
+
parseRecord
|
|
614
543
|
});
|
|
615
544
|
if (kind === "redis-tcp") {
|
|
616
545
|
if (!input.isNode) {
|
|
617
|
-
if (requirePersistent) throw new Error(
|
|
618
|
-
input.logger.warn(
|
|
619
|
-
return
|
|
546
|
+
if (requirePersistent) throw new Error(`[${tag}] redis-tcp wallet session store is not supported in this runtime; configure Upstash/Redis REST or Durable Objects`);
|
|
547
|
+
input.logger.warn(`[${tag}] redis-tcp wallet session store is not supported in this runtime; falling back to in-memory`);
|
|
548
|
+
return inMemory();
|
|
620
549
|
}
|
|
621
550
|
return new RedisTcpWalletSessionStore({
|
|
622
551
|
redisUrl: normalizeOptionalTrimmedString(config.redisUrl) || normalizeOptionalTrimmedString(config.REDIS_URL),
|
|
623
552
|
keyPrefix: normalizeOptionalTrimmedString(config.keyPrefix) || envPrefix,
|
|
624
|
-
parseRecord
|
|
553
|
+
parseRecord
|
|
625
554
|
});
|
|
626
555
|
}
|
|
627
556
|
const upstashUrl = normalizeOptionalTrimmedString(config.UPSTASH_REDIS_REST_URL);
|
|
628
557
|
const upstashToken = normalizeOptionalTrimmedString(config.UPSTASH_REDIS_REST_TOKEN);
|
|
629
558
|
if (upstashUrl || upstashToken) {
|
|
630
559
|
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(
|
|
560
|
+
input.logger.info(`[${tag}] Using Upstash REST store for Wallet Session records`);
|
|
632
561
|
return new UpstashRedisRestWalletSessionStore({
|
|
633
562
|
url: upstashUrl,
|
|
634
563
|
token: upstashToken,
|
|
635
|
-
keyPrefix: envPrefix || void 0
|
|
564
|
+
keyPrefix: envPrefix || void 0,
|
|
565
|
+
parseRecord
|
|
636
566
|
});
|
|
637
567
|
}
|
|
638
568
|
const redisUrl = normalizeOptionalTrimmedString(config.REDIS_URL);
|
|
639
569
|
if (redisUrl) {
|
|
640
570
|
if (!input.isNode) {
|
|
641
|
-
if (requirePersistent) throw new Error(
|
|
642
|
-
input.logger.warn(
|
|
643
|
-
return
|
|
571
|
+
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`);
|
|
572
|
+
input.logger.warn(`[${tag}] REDIS_URL is set but TCP Redis is not supported in this runtime; falling back to in-memory`);
|
|
573
|
+
return inMemory();
|
|
644
574
|
}
|
|
645
|
-
input.logger.info(
|
|
575
|
+
input.logger.info(`[${tag}] Using redis-tcp store for Wallet Session records`);
|
|
646
576
|
return new RedisTcpWalletSessionStore({
|
|
647
577
|
redisUrl,
|
|
648
|
-
keyPrefix: envPrefix || void 0
|
|
578
|
+
keyPrefix: envPrefix || void 0,
|
|
579
|
+
parseRecord
|
|
649
580
|
});
|
|
650
581
|
}
|
|
651
|
-
if (requirePersistent) throw new Error(
|
|
652
|
-
input.logger.info(
|
|
653
|
-
return
|
|
582
|
+
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`);
|
|
583
|
+
input.logger.info(`[${tag}] Using in-memory Wallet Session store (non-persistent)`);
|
|
584
|
+
return inMemory();
|
|
654
585
|
}
|
|
655
|
-
function
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
586
|
+
function createEd25519WalletSessionStore(input) {
|
|
587
|
+
return createWalletSessionStore(input, {
|
|
588
|
+
tag: "threshold-ed25519",
|
|
589
|
+
durableObjectStore: ({ config, logger }) => createCloudflareDurableObjectThresholdEd25519Stores({
|
|
590
|
+
config,
|
|
591
|
+
logger
|
|
592
|
+
})?.walletSessionStore ?? null,
|
|
593
|
+
envPrefix: (config) => {
|
|
594
|
+
const basePrefix = normalizeOptionalTrimmedString(config.THRESHOLD_PREFIX);
|
|
595
|
+
return normalizeOptionalTrimmedString(config.THRESHOLD_ED25519_WALLET_SESSION_PREFIX) || toThresholdEd25519PrefixFromBase(basePrefix, "wallet-session") || "";
|
|
596
|
+
},
|
|
597
|
+
parseRecord: parseEd25519WalletSessionRecord
|
|
659
598
|
});
|
|
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,
|
|
599
|
+
}
|
|
600
|
+
function createEcdsaWalletSessionStore(input) {
|
|
601
|
+
return createWalletSessionStore(input, {
|
|
602
|
+
tag: "threshold-ecdsa",
|
|
603
|
+
durableObjectStore: ({ config, logger }) => createCloudflareDurableObjectThresholdEcdsaStores({
|
|
604
|
+
config,
|
|
605
|
+
logger
|
|
606
|
+
})?.walletSessionStore ?? null,
|
|
607
|
+
envPrefix: (config) => {
|
|
608
|
+
const basePrefix = normalizeOptionalTrimmedString(config.THRESHOLD_PREFIX);
|
|
609
|
+
return toThresholdEcdsaWalletSessionPrefix(normalizeOptionalTrimmedString(config.THRESHOLD_ECDSA_WALLET_SESSION_PREFIX) || toThresholdEcdsaPrefixFromBase(basePrefix, "wallet-session"));
|
|
610
|
+
},
|
|
675
611
|
parseRecord: parseEcdsaWalletSessionRecord
|
|
676
612
|
});
|
|
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
613
|
}
|
|
719
614
|
//#endregion
|
|
720
615
|
export { createEcdsaWalletSessionStore, createEd25519WalletSessionStore };
|