@seams/wallet-server 0.7.3 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/THIRD_PARTY_NOTICES.md +1 -9
- package/artifact-manifest.json +78 -33
- package/cloudflare-router-ab/build/deriver-a/build-stamp.json +1 -1
- 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 -1
- 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 -1
- 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 -1
- 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 -1
- 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/scripts/prepare-local-runtime-config.mjs +0 -2
- package/cloudflare-router-ab/scripts/start-local-role-workers.mjs +77 -20
- package/dist/esm/authorization/lifecycleRouting.js +62 -0
- package/dist/esm/authorization/service.js +35 -12
- package/dist/esm/cloud-host.js +20 -22
- package/dist/esm/core/EmailOtpRecords.js +1 -217
- package/dist/esm/core/EmailOtpStores.js +0 -859
- package/dist/esm/core/IdentityStore.js +2 -339
- package/dist/esm/core/ThresholdService/config.js +1 -9
- package/dist/esm/core/ThresholdService/index.js +0 -4
- package/dist/esm/core/ThresholdService/kv.js +1 -66
- package/dist/esm/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.js +1 -13
- package/dist/esm/core/ThresholdService/routerAbNormalSigningPolicy.js +1 -11
- package/dist/esm/core/ThresholdService/stores/WalletSessionStore.js +0 -541
- package/dist/esm/core/ThresholdService/validation.js +2 -346
- package/dist/esm/core/WalletAuthMethodStore.js +2 -123
- package/dist/esm/core/WalletStore.js +3 -209
- package/dist/esm/core/WebAuthnAuthenticatorStore.js +0 -202
- package/dist/esm/core/WebAuthnCredentialBindingStore.js +2 -182
- package/dist/esm/core/WebAuthnLoginChallengeStore.js +0 -52
- package/dist/esm/core/WebAuthnSyncChallengeStore.js +0 -54
- package/dist/esm/core/authService/emailOtpConfig.js +1 -195
- package/dist/esm/core/authService/emailOtpEnrollment.js +0 -110
- package/dist/esm/core/authService/emailOtpSeal.js +0 -63
- package/dist/esm/core/authService/nearTransactions.js +3 -98
- package/dist/esm/core/authService/rateLimits.js +0 -84
- package/dist/esm/core/authService/webauthn.js +2 -298
- package/dist/esm/core/authService/webauthnOidcHelpers.js +1 -24
- package/dist/esm/core/authService/webauthnWalletBinding.js +0 -37
- package/dist/esm/core/config.js +1 -95
- package/dist/esm/core/d1EcdsaSignerRead.js +1 -1
- package/dist/esm/core/d1IdentityStore.js +1 -2
- package/dist/esm/core/d1TenantStore.js +1 -24
- package/dist/esm/core/d1WalletAuthMethodStore.js +2 -5
- package/dist/esm/core/d1WalletStore.js +2 -2
- package/dist/esm/core/deviceLinking/linkedDeviceBootstrap.js +13 -0
- package/dist/esm/core/deviceLinking/linkedDeviceSession.js +20 -14
- package/dist/esm/core/deviceLinking/requestProof.js +9 -6
- package/dist/esm/core/emailOtpD1Statements.js +107 -94
- package/dist/esm/core/keyMaterialBrands.js +2 -12
- package/dist/esm/core/nearKeys.js +0 -1
- package/dist/esm/core/nearRelayerAccountProvisioning.js +6 -9
- package/dist/esm/core/passkeyCredentialClaims.js +8 -0
- package/dist/esm/core/routerAbSigning/RouterAbEcdsaPresignRuntime.js +2 -6
- package/dist/esm/core/routerAbSigning/RouterAbNormalSigningRuntime.js +2 -30
- package/dist/esm/core/thresholdEcdsaChainTarget.js +1 -4
- package/dist/esm/hosted-wallet-gateway.js +66 -43
- package/dist/esm/index.js +6 -19
- package/dist/esm/localHostedWalletGatewayHandler.js +12 -0
- package/dist/esm/localRegistrationSetupAuthority.js +89 -0
- package/dist/esm/router/auth/authRequestValidation.js +8 -16
- package/dist/esm/router/auth/webAuthnCredentialCodecs.js +0 -1
- package/dist/esm/router/cloudflare/d1/auth/d1AuthorizationAssembly.js +87 -0
- package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthConfig.js +12 -2
- package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthService.js +32 -281
- package/dist/esm/router/cloudflare/d1/authorization/authorizedOperationStatements.js +24 -22
- package/dist/esm/router/cloudflare/d1/authorization/d1AuthorizationStore.js +8 -6
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.js +12 -13
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEd25519ExportRootStore.js +6 -1
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpGrantStore.js +12 -2
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpTargetFactor.js +4 -4
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceOwnerAuthorizationProvider.js +1 -1
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRequestProofNonceStore.js +3 -9
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRouteService.js +2 -1
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionStore.js +89 -7
- package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetCredentialProvider.js +23 -14
- package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoCapabilityPersistence.js +9 -6
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeIssuer.js +0 -1
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeService.js +0 -1
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.js +1 -1
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeVerifier.js +0 -1
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpEnrollmentStore.js +1 -1
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpGrantStore.js +1 -7
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore.js +19 -13
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.js +0 -1
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecoveryService.js +0 -1
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRegistrationEnrollmentFinalizer.js +2 -2
- package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpServerSealRuntime.js +0 -1
- package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore.js +44 -12
- package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationRecords.js +1 -49
- package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.js +19 -31
- package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleRegistrationCompletion.js +85 -0
- package/dist/esm/router/cloudflare/d1/identity/d1IdentityRecords.js +0 -1
- package/dist/esm/router/cloudflare/d1/identity/d1IdentityService.js +0 -48
- package/dist/esm/router/cloudflare/d1/near/d1SponsoredNearAccount.js +242 -0
- package/dist/esm/router/cloudflare/d1/oidc/d1OidcBoundary.js +0 -1
- package/dist/esm/router/cloudflare/d1/oidc/d1OidcVerificationService.js +2 -29
- package/dist/esm/router/cloudflare/d1/oidc/googleOidcToken.js +41 -0
- package/dist/esm/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyRouteService.js +5 -0
- package/dist/esm/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.js +34 -0
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.js +9 -3
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.js +7 -13
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.js +25 -13
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationIntentService.js +0 -1
- package/dist/esm/router/cloudflare/d1/registration/d1RegistrationSetupSupport.js +74 -0
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.js +7 -1
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationService.js +69 -238
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetup.js +12 -56
- package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetupExecution.js +155 -0
- package/dist/esm/router/cloudflare/d1/registration/walletRegistrationEstablishedSessionIssuer.js +1 -3
- package/dist/esm/router/cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.js +12 -6
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerFinalizeRecord.js +68 -0
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerService.js +7 -54
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodService.js +9 -8
- package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthorityStore.js +2 -142
- package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.js +25 -4
- package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnRecords.js +4 -70
- package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnStore.js +23 -7
- package/dist/esm/router/cloudflare/runtime/staticWalletConsoleBinding.js +1 -0
- package/dist/esm/router/cloudflare/runtime/walletConsoleOps.js +1 -0
- package/dist/esm/router/cloudflare/runtime/walletConsoleOpsClient.js +5 -0
- package/dist/esm/router/cloudflare/runtime/walletGateway.js +1 -1
- package/dist/esm/router/cloudflare/runtime/walletRuntimeOps.js +16 -4
- package/dist/esm/router/cloudflare-adaptor.js +1 -2
- package/dist/esm/router/cloudflare.js +1342 -1733
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js +11 -8
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.js +3 -2
- package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitioning.js +6 -6
- package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.js +6 -6
- package/dist/esm/router/domains/ed25519Yao/export/routerAbEd25519YaoExportRequestScopedCloudflare.js +3 -0
- package/dist/esm/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryRequestScopedCloudflare.js +8 -0
- package/dist/esm/router/domains/emailOtp/emailOtpRequestValidation.js +0 -1
- package/dist/esm/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrieval.js +2 -8
- package/dist/esm/router/domains/passkeyCustody/walletCustodyRegistrationCommit.js +2 -8
- package/dist/esm/router/domains/signingOperations/routerAbPrivateSigningWorker.js +5 -19
- package/dist/esm/router/domains/signingOperations/walletExecutionAdmission.js +2 -3
- package/dist/esm/router/domains/walletRegistration/walletRegistrationReservation.js +70 -0
- package/dist/esm/router/domains/walletRegistration/walletRegistrationRoutes.js +10 -11
- package/dist/esm/router/domains/walletRegistration/walletRegistrationSetupPayload.js +2 -3
- package/dist/esm/router/domains/walletUnlock/walletUnlockRouteHandlers.js +14 -0
- package/dist/esm/router/express.js +574 -479
- package/dist/esm/router/framework/http.js +2 -0
- package/dist/esm/router/framework/registrationSetupDispatch.js +14 -0
- package/dist/esm/router/framework/ror/normalize.js +0 -1
- package/dist/esm/router/framework/ror/options.js +0 -1
- package/dist/esm/router/framework/ror/provider.js +0 -1
- package/dist/esm/router/framework/ror/staticProvider.js +0 -1
- package/dist/esm/router/framework/routeDefinitions.js +1 -2
- package/dist/esm/router/framework/routerApiWebhooks.js +0 -1
- package/dist/esm/router/ror.js +0 -1
- package/dist/esm/router/transport/fetch/createFetchRouter.js +0 -2
- package/dist/esm/router/transport/fetch/routes/auth.js +2 -0
- package/dist/esm/router/transport/fetch/routes/deviceLinking.js +36 -147
- package/dist/esm/router/transport/fetch/routes/deviceLinkingOwnerAuthorization.js +3 -2
- package/dist/esm/router/transport/fetch/routes/deviceLinkingResponses.js +130 -0
- package/dist/esm/router/transport/fetch/routes/ecdsaOperationStepUpFactor.js +171 -0
- package/dist/esm/router/transport/fetch/routes/passkeyCustody.js +1 -0
- package/dist/esm/router/transport/fetch/routes/syncAccount.js +7 -2
- package/dist/esm/router/transport/fetch/routes/thresholdEcdsa.js +19 -115
- package/dist/esm/router/transport/fetch/routes/walletRegistration.js +3 -1
- package/dist/esm/shared-ts/src/authorization/walletSessionIssuance.js +0 -1
- package/dist/esm/shared-ts/src/device-linking/authorityActivation.js +0 -2
- package/dist/esm/shared-ts/src/device-linking/contracts.js +16 -1
- package/dist/esm/shared-ts/src/device-linking/digests.js +1 -8
- package/dist/esm/shared-ts/src/near/actions.js +0 -1
- package/dist/esm/shared-ts/src/near/nearClient.js +0 -2
- package/dist/esm/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.js +1 -1
- package/dist/esm/shared-ts/src/signing-lanes/index.js +1 -6
- package/dist/esm/shared-ts/src/signing-lanes/ownerContinuity.js +1 -1
- package/dist/esm/shared-ts/src/signing-lanes/participantDigest.js +2 -81
- package/dist/esm/shared-ts/src/signing-lanes/participants.js +1 -219
- package/dist/esm/shared-ts/src/signing-lanes/recordParsers.js +0 -3
- package/dist/esm/shared-ts/src/tenant-root/tenantRootOperationRecord.js +1 -2
- package/dist/esm/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.js +0 -1
- package/dist/esm/shared-ts/src/threshold/keyMaterialBrands.js +1 -22
- package/dist/esm/shared-ts/src/threshold/participants.js +0 -1
- package/dist/esm/shared-ts/src/threshold/signingRootScope.js +0 -1
- package/dist/esm/shared-ts/src/utils/addWalletAuthMethod.js +4 -13
- package/dist/esm/shared-ts/src/utils/canonicalPrimitives.js +1 -7
- package/dist/esm/shared-ts/src/utils/domainIds.js +1 -16
- package/dist/esm/shared-ts/src/utils/ecdsaCapabilityActivation.js +1 -11
- package/dist/esm/shared-ts/src/utils/ecdsaKeyFactsInventory.js +0 -1
- package/dist/esm/shared-ts/src/utils/errors.js +1 -19
- package/dist/esm/shared-ts/src/utils/near.js +1 -1
- package/dist/esm/shared-ts/src/utils/registrationEstablishedSession.js +1 -1
- package/dist/esm/shared-ts/src/utils/registrationIds.js +1 -5
- package/dist/esm/shared-ts/src/utils/registrationIntent.js +0 -1
- package/dist/esm/shared-ts/src/utils/registrationSetupOperation.js +8 -0
- package/dist/esm/shared-ts/src/utils/registrationSignerPlan.js +1 -1
- package/dist/esm/shared-ts/src/utils/routerAbEcdsaDerivation.js +0 -1
- package/dist/esm/shared-ts/src/utils/validation.js +1 -5
- package/dist/esm/shared-ts/src/utils/walletAuthAuthority.js +0 -1
- package/dist/esm/shared-ts/src/utils/walletManagementProtocol.js +6 -0
- package/dist/esm/shared-ts/src/utils/wireSchema.js +2 -13
- package/dist/esm/shared-ts/src/wallet-recovery/backupAcknowledgement.js +6 -24
- package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodeLocator.js +0 -1
- package/dist/esm/shared-ts/src/wallet-recovery/recoveryKeyId.js +5 -6
- package/dist/esm/storage/d1Sql.js +1 -7
- package/dist/esm/threshold/session/signingSessionSeal/crypto/cipher.js +0 -1
- package/dist/esm/threshold/session/signingSessionSeal/guards/backends.js +1 -2
- package/dist/esm/threshold/session/signingSessionSeal/idempotencyBackends.js +0 -1
- package/dist/esm/threshold/session/signingSessionSeal/idempotencyRecords.js +0 -1
- package/dist/esm/threshold/session/signingSessionSeal/options.js +0 -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 +0 -611
- package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
- package/dist/esm/wasm/shamir3pass_runtime/pkg/shamir3pass_runtime_bg.wasm +0 -0
- package/dist/types/shared-ts/src/authorization/capabilityKinds.d.ts +0 -4
- package/dist/types/shared-ts/src/device-linking/contracts.d.ts +1 -0
- package/dist/types/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.d.ts +0 -2
- package/dist/types/shared-ts/src/signing-lanes/execution.d.ts +0 -11
- package/dist/types/shared-ts/src/signing-lanes/ids.d.ts +2 -7
- package/dist/types/shared-ts/src/signing-lanes/index.d.ts +0 -4
- package/dist/types/shared-ts/src/signing-lanes/ownerContinuity.d.ts +0 -1
- package/dist/types/shared-ts/src/signing-lanes/participantDigest.d.ts +0 -18
- package/dist/types/shared-ts/src/signing-lanes/participants.d.ts +6 -35
- package/dist/types/shared-ts/src/signing-lanes/rotation.d.ts +6 -843
- package/dist/types/shared-ts/src/threshold/keyMaterialBrands.d.ts +0 -10
- package/dist/types/shared-ts/src/threshold/participants.d.ts +1 -1
- package/dist/types/shared-ts/src/utils/addWalletAuthMethod.d.ts +1 -133
- package/dist/types/shared-ts/src/utils/addWalletAuthMethod.typecheck.d.ts +4 -18
- package/dist/types/shared-ts/src/utils/domainIds.d.ts +0 -12
- package/dist/types/shared-ts/src/utils/errors.d.ts +0 -4
- package/dist/types/shared-ts/src/utils/near.d.ts +0 -20
- package/dist/types/shared-ts/src/utils/normalize.d.ts +0 -2
- package/dist/types/shared-ts/src/utils/registrationSetupOperation.d.ts +3 -0
- package/dist/types/shared-ts/src/utils/validation.d.ts +1 -3
- package/dist/types/shared-ts/src/utils/walletCapabilityBindings.d.ts +0 -1
- package/dist/types/shared-ts/src/utils/walletManagementProtocol.d.ts +3 -0
- package/dist/types/shared-ts/src/utils/wireSchema.d.ts +0 -2
- package/dist/types/shared-ts/src/wallet-recovery/backupAcknowledgement.d.ts +0 -1
- package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeReservation.d.ts +1 -10
- package/dist/types/shared-ts/src/wallet-recovery/recoveryCodes.d.ts +1 -3
- package/dist/types/shared-ts/src/wallet-recovery/recoveryKeyId.d.ts +5 -21
- package/dist/types/wallet-server/src/authorization/lifecycleRouting.d.ts +32 -0
- package/dist/types/wallet-server/src/authorization/lifecycleRouting.typecheck.d.ts +2 -0
- package/dist/types/wallet-server/src/authorization/recoveryRouting.d.ts +22 -0
- package/dist/types/wallet-server/src/authorization/recoveryRouting.typecheck.d.ts +2 -0
- package/dist/types/wallet-server/src/authorization/service.d.ts +8 -1
- package/dist/types/wallet-server/src/authorization/sessionRouting.d.ts +20 -0
- package/dist/types/wallet-server/src/authorization/sessionRouting.typecheck.d.ts +2 -0
- package/dist/types/wallet-server/src/cloud-host.d.ts +31 -9
- package/dist/types/wallet-server/src/core/EmailOtpRecords.d.ts +1 -22
- package/dist/types/wallet-server/src/core/EmailOtpStores.d.ts +1 -79
- package/dist/types/wallet-server/src/core/IdentityStore.d.ts +0 -10
- package/dist/types/wallet-server/src/core/RegistrationCeremonyStore.d.ts +0 -1
- package/dist/types/wallet-server/src/core/ThresholdService/config.d.ts +0 -2
- package/dist/types/wallet-server/src/core/ThresholdService/index.d.ts +1 -3
- package/dist/types/wallet-server/src/core/ThresholdService/kv.d.ts +0 -7
- package/dist/types/wallet-server/src/core/ThresholdService/routerAb/ecdsaDerivationPoolFillHandlers.d.ts +0 -3
- package/dist/types/wallet-server/src/core/ThresholdService/routerAbNormalSigningPolicy.d.ts +0 -1
- package/dist/types/wallet-server/src/core/ThresholdService/stores/WalletSessionStore.d.ts +7 -19
- package/dist/types/wallet-server/src/core/ThresholdService/validation.d.ts +0 -34
- package/dist/types/wallet-server/src/core/WalletAuthMethodStore.d.ts +1 -5
- package/dist/types/wallet-server/src/core/WalletStore.d.ts +0 -3
- package/dist/types/wallet-server/src/core/WebAuthnAuthenticatorStore.d.ts +0 -20
- package/dist/types/wallet-server/src/core/WebAuthnCredentialBindingStore.d.ts +1 -27
- package/dist/types/wallet-server/src/core/WebAuthnLoginChallengeStore.d.ts +2 -16
- package/dist/types/wallet-server/src/core/WebAuthnSyncChallengeStore.d.ts +22 -14
- package/dist/types/wallet-server/src/core/authService/emailOtpConfig.d.ts +0 -24
- package/dist/types/wallet-server/src/core/authService/emailOtpEnrollment.d.ts +1 -70
- package/dist/types/wallet-server/src/core/authService/emailOtpSeal.d.ts +0 -13
- package/dist/types/wallet-server/src/core/authService/githubOAuth.d.ts +2 -1
- package/dist/types/wallet-server/src/core/authService/nearTransactions.d.ts +1 -39
- package/dist/types/wallet-server/src/core/authService/rateLimits.d.ts +0 -17
- package/dist/types/wallet-server/src/core/authService/webauthn.d.ts +0 -125
- package/dist/types/wallet-server/src/core/authService/webauthnOidcHelpers.d.ts +0 -3
- package/dist/types/wallet-server/src/core/authService/webauthnVerificationOutcomes.d.ts +1 -1
- package/dist/types/wallet-server/src/core/authService/webauthnWalletBinding.d.ts +0 -12
- package/dist/types/wallet-server/src/core/config.d.ts +0 -10
- package/dist/types/wallet-server/src/core/d1IdentityStore.d.ts +0 -2
- package/dist/types/wallet-server/src/core/d1TenantStore.d.ts +0 -7
- package/dist/types/wallet-server/src/core/d1WalletAuthMethodStore.d.ts +0 -1
- package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceBootstrap.d.ts +19 -0
- package/dist/types/wallet-server/src/core/deviceLinking/linkedDeviceSession.d.ts +8 -6
- package/dist/types/wallet-server/src/core/deviceLinking/requestProof.d.ts +2 -5
- package/dist/types/wallet-server/src/core/emailOtpD1Statements.d.ts +10 -7
- package/dist/types/wallet-server/src/core/keyMaterialBrands.d.ts +1 -5
- package/dist/types/wallet-server/src/core/nearRelayerAccountProvisioning.d.ts +0 -1
- package/dist/types/wallet-server/src/core/passkeyCredentialClaims.d.ts +9 -0
- package/dist/types/wallet-server/src/core/routerAbSigning/RouterAbEcdsaPresignRuntime.d.ts +0 -2
- package/dist/types/wallet-server/src/core/routerAbSigning/RouterAbNormalSigningRuntime.d.ts +0 -2
- package/dist/types/wallet-server/src/core/threeRouteRegistrationContracts.d.ts +1 -92
- package/dist/types/wallet-server/src/core/threeRouteRegistrationContracts.typecheck.d.ts +4 -52
- package/dist/types/wallet-server/src/core/thresholdEcdsaChainTarget.d.ts +0 -1
- package/dist/types/wallet-server/src/core/types.d.ts +0 -299
- package/dist/types/wallet-server/src/hosted-wallet-gateway.d.ts +15 -3
- package/dist/types/wallet-server/src/index.d.ts +8 -13
- package/dist/types/wallet-server/src/localRegistrationSetupAuthority.d.ts +13 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1AuthorizationAssembly.d.ts +23 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/auth/d1RouterApiAuthConfig.d.ts +25 -3
- package/dist/types/wallet-server/src/router/cloudflare/d1/authorization/d1AuthorizationStore.d.ts +1 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceAuthorityInstallService.d.ts +3 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceEmailOtpGrantStore.d.ts +7 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRequestProofNonceStore.d.ts +1 -10
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceRouteService.d.ts +4 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceSessionStore.d.ts +6 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetPlanner.d.ts +1 -13
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeService.d.ts +2 -2
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpChallengeStore.d.ts +1 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpGrantStore.d.ts +0 -2
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1EmailOtpRateLimitStore.d.ts +18 -2
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationAttemptStore.d.ts +29 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpRegistrationRecords.d.ts +3 -16
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.d.ts +7 -2
- package/dist/types/wallet-server/src/router/cloudflare/d1/emailOtp/d1GoogleRegistrationCompletion.d.ts +23 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/identity/d1IdentityService.d.ts +0 -12
- package/dist/types/wallet-server/src/router/cloudflare/d1/near/d1SponsoredNearAccount.d.ts +24 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/near/d1SponsoredNearAccount.typecheck.d.ts +2 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/oidc/d1OidcVerificationService.d.ts +0 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/oidc/googleOidcToken.d.ts +4 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1PasskeyCustodyRouteService.d.ts +5 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/passkeyCustody/d1WalletCustodyCommitStore.d.ts +9 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.d.ts +1 -1
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.d.ts +10 -11
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.d.ts +3 -2
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationSetupSupport.d.ts +51 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.d.ts +3 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationService.d.ts +30 -47
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationSetup.d.ts +3 -30
- package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationSetupExecution.d.ts +11 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAddSignerFinalizeRecord.d.ts +27 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAddSignerService.d.ts +1 -10
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthMethodService.d.ts +2 -2
- package/dist/types/wallet-server/src/router/cloudflare/d1/wallet/d1WalletAuthorityStore.d.ts +0 -4
- package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.d.ts +3 -0
- package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnRecords.d.ts +0 -13
- package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnStore.d.ts +23 -10
- package/dist/types/wallet-server/src/router/cloudflare/d1/webauthn/d1WebAuthnStore.typecheck.d.ts +2 -0
- package/dist/types/wallet-server/src/router/cloudflare/runtime/cloudflare.types.d.ts +0 -2
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleOps.d.ts +1 -0
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletConsoleOpsClient.d.ts +2 -0
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletGateway.d.ts +1 -1
- package/dist/types/wallet-server/src/router/cloudflare/runtime/walletRuntimeOps.d.ts +3 -0
- package/dist/types/wallet-server/src/router/cloudflare-adaptor.d.ts +0 -1
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.d.ts +1 -1
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitioning.d.ts +2 -2
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.d.ts +2 -2
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExport.typecheck.d.ts +2 -0
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/export/routerAbEd25519YaoExportRequestScopedCloudflare.d.ts +2 -0
- package/dist/types/wallet-server/src/router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryRequestScopedCloudflare.d.ts +2 -0
- package/dist/types/wallet-server/src/router/domains/passkeyCustody/passkeyCustodyEnvelopeRetrieval.d.ts +0 -2
- package/dist/types/wallet-server/src/router/domains/passkeyCustody/walletCustodyRegistrationCommit.d.ts +0 -3
- package/dist/types/wallet-server/src/router/domains/signingOperations/routerAbPrivateSigningWorker.d.ts +0 -17
- package/dist/types/wallet-server/src/router/domains/signingOperations/walletExecutionAdmission.d.ts +1 -2
- package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationInputs.d.ts +1 -0
- package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationReservation.d.ts +51 -0
- package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationRoutes.d.ts +2 -10
- package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationSetupPayload.d.ts +2 -2
- package/dist/types/wallet-server/src/router/framework/authServicePort.d.ts +14 -34
- package/dist/types/wallet-server/src/router/framework/googleLoginResolution.typecheck.d.ts +2 -0
- package/dist/types/wallet-server/src/router/framework/registrationSetupDispatch.d.ts +13 -0
- package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceLinking.d.ts +1 -1
- package/dist/types/wallet-server/src/router/transport/fetch/routes/deviceLinkingResponses.d.ts +17 -0
- package/dist/types/wallet-server/src/router/transport/fetch/routes/ecdsaOperationStepUpFactor.d.ts +37 -0
- package/dist/types/wallet-server/src/storage/d1Sql.d.ts +0 -1
- package/migrations/d1-signer/0040_namespace_home_challenges.sql +16 -0
- package/migrations/d1-signer/0041_step_up_admission_expiry.sql +28 -0
- package/migrations/d1-signer/0042_deployment_resource_challenges.sql +4 -0
- package/migrations/d1-signer/0043_google_registration_candidate_claim.sql +2 -0
- package/migrations/d1-signer/0044_linked_device_bootstrap_imports.sql +6 -0
- package/migrations/d1-signer/0045_wallet_owned_capability_receipts.sql +29 -0
- package/migrations/d1-signer/0046_wallet_owned_signing_abuse.sql +41 -0
- package/migrations/d1-signer/0047_remove_unused_near_public_keys.sql +2 -0
- package/migrations/d1-signer/0048_operation_owner_scope.sql +45 -0
- package/package.json +2 -3
- package/src/README.md +11 -3
- package/dist/esm/core/AuthService.js +0 -2
- package/dist/esm/core/NearPublicKeyStore.js +0 -200
- package/dist/esm/core/ThresholdService/stores/CloudflareDurableObjectStore.js +0 -397
- package/dist/esm/core/ThresholdService/stores/KeyStore.js +0 -140
- package/dist/esm/core/ThresholdService/stores/SessionStore.js +0 -361
- package/dist/esm/core/ThresholdService/stores/StoreConfig.js +0 -13
- package/dist/esm/core/ThresholdService/stores/exportReplayGuard.js +0 -7
- package/dist/esm/core/authService/AuthService.js +0 -594
- package/dist/esm/core/authService/bytes.js +0 -19
- package/dist/esm/core/authService/configValues.js +0 -15
- package/dist/esm/core/authService/emailOtpChallengeOperations.js +0 -123
- package/dist/esm/core/authService/emailOtpChallengeProof.js +0 -183
- package/dist/esm/core/authService/emailOtpChallengeVerification.js +0 -264
- package/dist/esm/core/authService/emailOtpChallenges.js +0 -225
- package/dist/esm/core/authService/emailOtpDelivery.js +0 -134
- package/dist/esm/core/authService/emailOtpGrant.js +0 -43
- package/dist/esm/core/authService/emailOtpRegistrationEnrollment.js +0 -144
- package/dist/esm/core/authService/emailOtpUnlock.js +0 -174
- package/dist/esm/core/authService/googleEmailOtpOperations.js +0 -141
- package/dist/esm/core/authService/googleEmailOtpRegistration.js +0 -587
- package/dist/esm/core/authService/identity.js +0 -42
- package/dist/esm/core/authService/identityOperations.js +0 -32
- package/dist/esm/core/authService/nearAccountOperations.js +0 -229
- package/dist/esm/core/authService/nearPublicKeyMetadata.js +0 -108
- package/dist/esm/core/authService/oidcVerification.js +0 -249
- package/dist/esm/core/authService/registrationThresholdHelpers.js +0 -30
- package/dist/esm/core/authService/runtime.js +0 -45
- package/dist/esm/core/authService/storeRegistry.js +0 -102
- package/dist/esm/core/authService/thresholdStoreSummary.js +0 -32
- package/dist/esm/core/authService/webauthnAuthority.js +0 -17
- package/dist/esm/core/defaultConfigsServer.js +0 -9
- package/dist/esm/core/hostedAccountIds.js +0 -225
- package/dist/esm/core/routerAbSigning/createRouterAbSigningRuntimes.js +0 -84
- package/dist/esm/core/signingLanes/LaneAggregateRevocationApplicationService.js +0 -86
- package/dist/esm/core/signingLanes/LaneEnrollmentActivation.js +0 -324
- package/dist/esm/core/signingLanes/LaneEnrollmentRevocation.js +0 -173
- package/dist/esm/core/signingLanes/LaneLifecycleApplicationService.js +0 -198
- package/dist/esm/core/signingLanes/ecdsaServerRetirement.js +0 -73
- package/dist/esm/core/signingLanes/ed25519ServerRetirement.js +0 -68
- package/dist/esm/core/signingLanes/signingWorkerLaneMaterialIdentity.js +0 -0
- package/dist/esm/core/storeBackends.js +0 -208
- package/dist/esm/core/utils.js +0 -14
- package/dist/esm/core/webAuthnStoreBackends.js +0 -198
- package/dist/esm/router/cloudflare/d1/near/d1NearPublicKeyStore.js +0 -49
- package/dist/esm/router/cloudflare/d1/signingLanes/d1EcdsaLanePrivateBindingResolver.js +0 -10
- package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneAggregateRevocationApplicationService.js +0 -22
- package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneEffectJournalStore.js +0 -166
- package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneEnrollmentGateway.js +0 -38
- package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLifecycleApplicationService.js +0 -20
- package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLifecycleStore.js +0 -1459
- package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneLockStore.js +0 -114
- package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneProtocolCommitter.js +0 -16
- package/dist/esm/router/cloudflare/d1/signingLanes/d1LaneRecords.js +0 -171
- package/dist/esm/router/cloudflare/d1/signingLanes/index.js +0 -10
- package/dist/esm/router/cloudflare/durableObjects/thresholdStore.js +0 -397
- package/dist/esm/router/cloudflare/signingLanes/cloudflareLaneCurveExecution.js +0 -597
- package/dist/esm/router/cloudflare/signingLanes/cloudflareLaneProtocolCommitter.js +0 -273
- package/dist/esm/router/cloudflare/signingLanes/index.js +0 -4
- package/dist/esm/router/cloudflare/signingLanes/linkedDeviceEd25519CeremonyBinding.js +0 -32
- package/dist/esm/router/transport/fetch/routes/nearPublicKeys.js +0 -27
- package/dist/esm/shared-ts/src/signing-lanes/rotation.js +0 -8
- package/dist/esm/shared-ts/src/signing-lanes/rotationDigests.js +0 -358
- package/dist/esm/shared-ts/src/signing-lanes/rotationLifecycle.js +0 -313
- package/dist/esm/shared-ts/src/signing-lanes/rotationParsers.js +0 -532
- package/dist/esm/shared-ts/src/signing-lanes/rotationProtocolParsers.js +0 -323
- package/dist/esm/shared-ts/src/signing-lanes/rotationWireFields.js +0 -59
- package/dist/types/shared-ts/src/signing-lanes/participantDigest.typecheck.d.ts +0 -2
- package/dist/types/shared-ts/src/signing-lanes/rotation.typecheck.d.ts +0 -2
- package/dist/types/shared-ts/src/signing-lanes/rotationDigests.d.ts +0 -13
- package/dist/types/shared-ts/src/signing-lanes/rotationLifecycle.d.ts +0 -78
- package/dist/types/shared-ts/src/signing-lanes/rotationParsers.d.ts +0 -27
- package/dist/types/shared-ts/src/signing-lanes/rotationProtocolParsers.d.ts +0 -6
- package/dist/types/shared-ts/src/signing-lanes/rotationWireFields.d.ts +0 -20
- package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeAttempt.d.ts +0 -59
- package/dist/types/wallet-server/src/core/AuthService.d.ts +0 -3
- package/dist/types/wallet-server/src/core/NearPublicKeyStore.d.ts +0 -48
- package/dist/types/wallet-server/src/core/ThresholdService/stores/CloudflareDurableObjectStore.d.ts +0 -21
- package/dist/types/wallet-server/src/core/ThresholdService/stores/KeyStore.d.ts +0 -40
- package/dist/types/wallet-server/src/core/ThresholdService/stores/SessionStore.d.ts +0 -98
- package/dist/types/wallet-server/src/core/ThresholdService/stores/StoreConfig.d.ts +0 -4
- package/dist/types/wallet-server/src/core/ThresholdService/stores/ThresholdStoreConfig.typecheck.d.ts +0 -2
- package/dist/types/wallet-server/src/core/ThresholdService/stores/exportReplayGuard.d.ts +0 -3
- package/dist/types/wallet-server/src/core/authService/AuthService.d.ts +0 -490
- package/dist/types/wallet-server/src/core/authService/bytes.d.ts +0 -3
- package/dist/types/wallet-server/src/core/authService/configValues.d.ts +0 -7
- package/dist/types/wallet-server/src/core/authService/emailOtpChallengeOperations.d.ts +0 -109
- package/dist/types/wallet-server/src/core/authService/emailOtpChallengeProof.d.ts +0 -169
- package/dist/types/wallet-server/src/core/authService/emailOtpChallengeVerification.d.ts +0 -47
- package/dist/types/wallet-server/src/core/authService/emailOtpChallenges.d.ts +0 -86
- package/dist/types/wallet-server/src/core/authService/emailOtpDelivery.d.ts +0 -66
- package/dist/types/wallet-server/src/core/authService/emailOtpGrant.d.ts +0 -43
- package/dist/types/wallet-server/src/core/authService/emailOtpRegistrationEnrollment.d.ts +0 -49
- package/dist/types/wallet-server/src/core/authService/emailOtpUnlock.d.ts +0 -64
- package/dist/types/wallet-server/src/core/authService/googleEmailOtpOperations.d.ts +0 -126
- package/dist/types/wallet-server/src/core/authService/googleEmailOtpRegistration.d.ts +0 -169
- package/dist/types/wallet-server/src/core/authService/identity.d.ts +0 -25
- package/dist/types/wallet-server/src/core/authService/identityOperations.d.ts +0 -19
- package/dist/types/wallet-server/src/core/authService/nearAccountOperations.d.ts +0 -55
- package/dist/types/wallet-server/src/core/authService/nearPublicKeyMetadata.d.ts +0 -44
- package/dist/types/wallet-server/src/core/authService/oidcVerification.d.ts +0 -66
- package/dist/types/wallet-server/src/core/authService/registrationThresholdHelpers.d.ts +0 -11
- package/dist/types/wallet-server/src/core/authService/runtime.d.ts +0 -20
- package/dist/types/wallet-server/src/core/authService/storeRegistry.d.ts +0 -53
- package/dist/types/wallet-server/src/core/authService/thresholdStoreSummary.d.ts +0 -3
- package/dist/types/wallet-server/src/core/authService/webauthnAuthority.d.ts +0 -5
- package/dist/types/wallet-server/src/core/defaultConfigsServer.d.ts +0 -5
- package/dist/types/wallet-server/src/core/hostedAccountIds.d.ts +0 -16
- package/dist/types/wallet-server/src/core/routerAbSigning/createRouterAbSigningRuntimes.d.ts +0 -16
- package/dist/types/wallet-server/src/core/signingLanes/LaneAggregateRevocationApplicationService.d.ts +0 -36
- package/dist/types/wallet-server/src/core/signingLanes/LaneEffectJournalStore.d.ts +0 -62
- package/dist/types/wallet-server/src/core/signingLanes/LaneEnrollmentActivation.d.ts +0 -13
- package/dist/types/wallet-server/src/core/signingLanes/LaneEnrollmentRevocation.d.ts +0 -24
- package/dist/types/wallet-server/src/core/signingLanes/LaneLifecycleApplicationService.d.ts +0 -141
- package/dist/types/wallet-server/src/core/signingLanes/LaneLifecycleStore.d.ts +0 -228
- package/dist/types/wallet-server/src/core/signingLanes/ecdsaServerRetirement.d.ts +0 -58
- package/dist/types/wallet-server/src/core/signingLanes/ed25519ServerRetirement.d.ts +0 -30
- package/dist/types/wallet-server/src/core/signingLanes/signingWorkerLaneMaterialIdentity.d.ts +0 -4
- package/dist/types/wallet-server/src/core/storeBackends.d.ts +0 -83
- package/dist/types/wallet-server/src/core/utils.d.ts +0 -3
- package/dist/types/wallet-server/src/core/webAuthnStoreBackends.d.ts +0 -96
- package/dist/types/wallet-server/src/router/cloudflare/d1/near/d1NearPublicKeyStore.d.ts +0 -29
- package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1EcdsaLanePrivateBindingResolver.d.ts +0 -4
- package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneAggregateRevocationApplicationService.d.ts +0 -4
- package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneEffectJournalStore.d.ts +0 -24
- package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneEnrollmentGateway.d.ts +0 -20
- package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneLifecycleApplicationService.d.ts +0 -13
- package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneLifecycleStore.d.ts +0 -51
- package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneLockStore.d.ts +0 -28
- package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneProtocolCommitter.d.ts +0 -5
- package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/d1LaneRecords.d.ts +0 -107
- package/dist/types/wallet-server/src/router/cloudflare/d1/signingLanes/index.d.ts +0 -10
- package/dist/types/wallet-server/src/router/cloudflare/durableObjects/thresholdStore.d.ts +0 -18
- package/dist/types/wallet-server/src/router/cloudflare/signingLanes/cloudflareLaneCurveExecution.d.ts +0 -217
- package/dist/types/wallet-server/src/router/cloudflare/signingLanes/cloudflareLaneProtocolCommitter.d.ts +0 -73
- package/dist/types/wallet-server/src/router/cloudflare/signingLanes/index.d.ts +0 -4
- package/dist/types/wallet-server/src/router/cloudflare/signingLanes/linkedDeviceEd25519CeremonyBinding.d.ts +0 -6
- package/dist/types/wallet-server/src/router/transport/fetch/routes/nearPublicKeys.d.ts +0 -3
- /package/dist/esm/{core/signingLanes/LaneEffectJournalStore.js → authorization/recoveryRouting.js} +0 -0
- /package/dist/esm/{core/signingLanes/LaneLifecycleStore.js → authorization/sessionRouting.js} +0 -0
|
@@ -1,541 +0,0 @@
|
|
|
1
|
-
import { normalizeOptionalTrimmedString } from "../../../shared-ts/src/utils/normalize.js";
|
|
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";
|
|
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";
|
|
7
|
-
import { createCloudflareDurableObjectThresholdEcdsaStores, createCloudflareDurableObjectThresholdEd25519Stores } from "./CloudflareDurableObjectStore.js";
|
|
8
|
-
import { readNonDurableObjectThresholdStoreKind } from "./StoreConfig.js";
|
|
9
|
-
//#region src/core/ThresholdService/stores/WalletSessionStore.ts
|
|
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
|
-
};
|
|
28
|
-
var InMemoryWalletSessionStore = class {
|
|
29
|
-
constructor(input) {
|
|
30
|
-
this.map = /* @__PURE__ */ new Map();
|
|
31
|
-
this.replayGuards = /* @__PURE__ */ new Map();
|
|
32
|
-
this.keys = new WalletSessionKeys(input.keyPrefix);
|
|
33
|
-
}
|
|
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;
|
|
44
|
-
}
|
|
45
|
-
async putSession(id, record, opts) {
|
|
46
|
-
const key = this.keys.meta(id);
|
|
47
|
-
const ttlMs = Math.max(0, Number(opts.ttlMs) || 0);
|
|
48
|
-
const expiresAtMs = Date.now() + ttlMs;
|
|
49
|
-
this.map.set(key, {
|
|
50
|
-
record,
|
|
51
|
-
remainingUses: Math.max(0, Number(opts.remainingUses) || 0),
|
|
52
|
-
expiresAtMs,
|
|
53
|
-
consumedIdempotencyKeys: /* @__PURE__ */ new Set()
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
async getSession(id) {
|
|
57
|
-
const key = this.keys.meta(id);
|
|
58
|
-
const entry = this.map.get(key);
|
|
59
|
-
if (!entry) return null;
|
|
60
|
-
if (entry.expiresAtMs <= Date.now()) {
|
|
61
|
-
this.map.delete(key);
|
|
62
|
-
return null;
|
|
63
|
-
}
|
|
64
|
-
return entry.record;
|
|
65
|
-
}
|
|
66
|
-
async getSessionStatus(id) {
|
|
67
|
-
const key = this.keys.meta(id);
|
|
68
|
-
const entry = this.map.get(key);
|
|
69
|
-
if (!entry) return {
|
|
70
|
-
ok: false,
|
|
71
|
-
code: "wallet_session_missing"
|
|
72
|
-
};
|
|
73
|
-
if (entry.expiresAtMs <= Date.now()) {
|
|
74
|
-
this.map.delete(key);
|
|
75
|
-
return {
|
|
76
|
-
ok: false,
|
|
77
|
-
code: "wallet_session_expired"
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
return {
|
|
81
|
-
ok: true,
|
|
82
|
-
status: {
|
|
83
|
-
record: entry.record,
|
|
84
|
-
expiresAtMs: entry.expiresAtMs,
|
|
85
|
-
remainingUses: entry.remainingUses
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
async consumeUseCount(id) {
|
|
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");
|
|
93
|
-
entry.remainingUses -= 1;
|
|
94
|
-
return {
|
|
95
|
-
ok: true,
|
|
96
|
-
remainingUses: entry.remainingUses
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
async consumeUseCountOnce(id, idempotencyKey) {
|
|
100
|
-
const entry = this.liveEntry(id);
|
|
101
|
-
if ("ok" in entry) return entry;
|
|
102
|
-
const consumeKey = String(idempotencyKey || "").trim();
|
|
103
|
-
if (consumeKey && entry.consumedIdempotencyKeys.has(consumeKey)) return {
|
|
104
|
-
ok: true,
|
|
105
|
-
remainingUses: entry.remainingUses
|
|
106
|
-
};
|
|
107
|
-
if (entry.remainingUses <= 0) return failure("wallet_budget_exhausted", "Wallet Session exhausted");
|
|
108
|
-
entry.remainingUses -= 1;
|
|
109
|
-
if (consumeKey) entry.consumedIdempotencyKeys.add(consumeKey);
|
|
110
|
-
return {
|
|
111
|
-
ok: true,
|
|
112
|
-
remainingUses: entry.remainingUses
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
async hasConsumedUseCountOnce(id, idempotencyKey) {
|
|
116
|
-
const entry = this.liveEntry(id);
|
|
117
|
-
if ("ok" in entry) return entry;
|
|
118
|
-
const consumeKey = String(idempotencyKey || "").trim();
|
|
119
|
-
return {
|
|
120
|
-
ok: true,
|
|
121
|
-
consumed: !!consumeKey && entry.consumedIdempotencyKeys.has(consumeKey)
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
async reserveReplayGuard(scopeId, replayKey, expiresAtMs) {
|
|
125
|
-
const key = this.keys.replayGuard(scopeId, replayKey);
|
|
126
|
-
if (!key) return replayGuardInvalid();
|
|
127
|
-
const nowMs = Date.now();
|
|
128
|
-
const existingExpiresAtMs = this.replayGuards.get(key);
|
|
129
|
-
if (existingExpiresAtMs !== void 0 && existingExpiresAtMs > nowMs) return replayGuardDuplicate();
|
|
130
|
-
if (existingExpiresAtMs !== void 0) this.replayGuards.delete(key);
|
|
131
|
-
const ttlMs = replayGuardTtlMs(expiresAtMs, nowMs);
|
|
132
|
-
if (ttlMs <= 0) return replayGuardExpired();
|
|
133
|
-
this.replayGuards.set(key, nowMs + ttlMs);
|
|
134
|
-
return { ok: true };
|
|
135
|
-
}
|
|
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
|
-
}
|
|
176
|
-
function normalizeConsumeOnceKey(value) {
|
|
177
|
-
return String(value || "").trim().replace(/[^A-Za-z0-9._:-]/g, "_").slice(0, 512);
|
|
178
|
-
}
|
|
179
|
-
function replayGuardTtlMs(expiresAtMs, nowMs = Date.now()) {
|
|
180
|
-
const expires = Number(expiresAtMs);
|
|
181
|
-
if (!Number.isFinite(expires)) return 0;
|
|
182
|
-
const retainUntilMs = expires + EXPORT_REPLAY_GUARD_CLOCK_SKEW_MS;
|
|
183
|
-
if (retainUntilMs <= nowMs) return 0;
|
|
184
|
-
return Math.max(EXPORT_REPLAY_GUARD_MIN_RETENTION_MS, Math.floor(retainUntilMs - nowMs));
|
|
185
|
-
}
|
|
186
|
-
function replayGuardInvalid() {
|
|
187
|
-
return failure("invalid_body", "Invalid replay guard key");
|
|
188
|
-
}
|
|
189
|
-
function replayGuardExpired() {
|
|
190
|
-
return failure("export_authorization_expired", "Export authorization expired");
|
|
191
|
-
}
|
|
192
|
-
function replayGuardDuplicate() {
|
|
193
|
-
return failure("export_nonce_replay", "Export authorization nonce already used");
|
|
194
|
-
}
|
|
195
|
-
function parseRedisReplayGuardResult(raw) {
|
|
196
|
-
const text = String(raw ?? "").trim();
|
|
197
|
-
if (text === "ok") return { ok: true };
|
|
198
|
-
if (text === "duplicate") return replayGuardDuplicate();
|
|
199
|
-
if (text === "expired") return replayGuardExpired();
|
|
200
|
-
return failure("internal", "Redis replay guard returned invalid response");
|
|
201
|
-
}
|
|
202
|
-
function parseRedisConsumeOnceResult(raw) {
|
|
203
|
-
const text = String(raw ?? "").trim();
|
|
204
|
-
if (text.startsWith("ok:")) {
|
|
205
|
-
const remainingUses = Number(text.slice(3));
|
|
206
|
-
if (!Number.isFinite(remainingUses)) return failure("internal", "Redis consume-once returned invalid uses");
|
|
207
|
-
return {
|
|
208
|
-
ok: true,
|
|
209
|
-
remainingUses
|
|
210
|
-
};
|
|
211
|
-
}
|
|
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");
|
|
215
|
-
}
|
|
216
|
-
function parseRedisConsumedUseResult(raw) {
|
|
217
|
-
const value = typeof raw === "number" ? raw : Number(String(raw ?? "").trim());
|
|
218
|
-
if (!Number.isFinite(value)) return failure("internal", "Redis consumed-use check returned invalid response");
|
|
219
|
-
return {
|
|
220
|
-
ok: true,
|
|
221
|
-
consumed: value > 0
|
|
222
|
-
};
|
|
223
|
-
}
|
|
224
|
-
function redisRawValue(resp) {
|
|
225
|
-
if (resp.type === "integer") return String(resp.value);
|
|
226
|
-
return resp.value;
|
|
227
|
-
}
|
|
228
|
-
const CONSUME_ONCE_EXISTS_LUA = `
|
|
229
|
-
local marker_key = KEYS[1]
|
|
230
|
-
return redis.call('EXISTS', marker_key)
|
|
231
|
-
`;
|
|
232
|
-
const CONSUME_USE_COUNT_LUA = `
|
|
233
|
-
local uses_key = KEYS[1]
|
|
234
|
-
local current = tonumber(redis.call('GET', uses_key) or '')
|
|
235
|
-
if current == nil then
|
|
236
|
-
return 'wallet_session_missing'
|
|
237
|
-
end
|
|
238
|
-
if current <= 0 then
|
|
239
|
-
return 'wallet_budget_exhausted'
|
|
240
|
-
end
|
|
241
|
-
return 'ok:' .. tostring(redis.call('INCRBY', uses_key, -1))
|
|
242
|
-
`;
|
|
243
|
-
const CONSUME_ONCE_LUA = `
|
|
244
|
-
local uses_key = KEYS[1]
|
|
245
|
-
local marker_key = KEYS[2]
|
|
246
|
-
if redis.call('EXISTS', marker_key) == 1 then
|
|
247
|
-
local current = redis.call('GET', uses_key)
|
|
248
|
-
if not current then
|
|
249
|
-
return 'wallet_session_missing'
|
|
250
|
-
end
|
|
251
|
-
return 'ok:' .. tostring(current)
|
|
252
|
-
end
|
|
253
|
-
local current = tonumber(redis.call('GET', uses_key) or '')
|
|
254
|
-
if current == nil then
|
|
255
|
-
return 'wallet_session_missing'
|
|
256
|
-
end
|
|
257
|
-
if current <= 0 then
|
|
258
|
-
return 'wallet_budget_exhausted'
|
|
259
|
-
end
|
|
260
|
-
local remaining = redis.call('INCRBY', uses_key, -1)
|
|
261
|
-
local ttl = redis.call('TTL', uses_key)
|
|
262
|
-
if ttl and ttl > 0 then
|
|
263
|
-
redis.call('SET', marker_key, '1', 'EX', ttl)
|
|
264
|
-
else
|
|
265
|
-
redis.call('SET', marker_key, '1', 'EX', 60)
|
|
266
|
-
end
|
|
267
|
-
return 'ok:' .. tostring(remaining)
|
|
268
|
-
`;
|
|
269
|
-
const REPLAY_GUARD_LUA = `
|
|
270
|
-
local key = KEYS[1]
|
|
271
|
-
local ttl_seconds = tonumber(ARGV[1] or '')
|
|
272
|
-
if ttl_seconds == nil or ttl_seconds <= 0 then
|
|
273
|
-
return 'expired'
|
|
274
|
-
end
|
|
275
|
-
if redis.call('EXISTS', key) == 1 then
|
|
276
|
-
return 'duplicate'
|
|
277
|
-
end
|
|
278
|
-
redis.call('SET', key, '1', 'EX', ttl_seconds)
|
|
279
|
-
return 'ok'
|
|
280
|
-
`;
|
|
281
|
-
var UpstashRedisRestWalletSessionStore = class {
|
|
282
|
-
constructor(input) {
|
|
283
|
-
const url = normalizeOptionalTrimmedString(input.url);
|
|
284
|
-
const token = normalizeOptionalTrimmedString(input.token);
|
|
285
|
-
if (!url) throw new Error("Upstash wallet session store missing url");
|
|
286
|
-
if (!token) throw new Error("Upstash wallet session store missing token");
|
|
287
|
-
this.client = new UpstashRedisRestClient({
|
|
288
|
-
url,
|
|
289
|
-
token
|
|
290
|
-
});
|
|
291
|
-
this.keys = new WalletSessionKeys(input.keyPrefix);
|
|
292
|
-
this.parseRecord = input.parseRecord;
|
|
293
|
-
}
|
|
294
|
-
async putSession(id, record, opts) {
|
|
295
|
-
const ttlMs = Math.max(0, Number(opts.ttlMs) || 0);
|
|
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);
|
|
298
|
-
}
|
|
299
|
-
async getSession(id) {
|
|
300
|
-
const raw = await this.client.getJson(this.keys.meta(id));
|
|
301
|
-
return this.parseRecord(raw);
|
|
302
|
-
}
|
|
303
|
-
async getSessionStatus(id) {
|
|
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
|
-
});
|
|
308
|
-
}
|
|
309
|
-
async consumeUseCount(id) {
|
|
310
|
-
try {
|
|
311
|
-
return parseRedisConsumeOnceResult(await this.client.eval(CONSUME_USE_COUNT_LUA, [this.keys.uses(id)], []));
|
|
312
|
-
} catch (e) {
|
|
313
|
-
return walletSessionStoreFailure(e, "Failed to consume threshold session");
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
async consumeUseCountOnce(id, idempotencyKey) {
|
|
317
|
-
try {
|
|
318
|
-
return parseRedisConsumeOnceResult(await this.client.eval(CONSUME_ONCE_LUA, [this.keys.uses(id), this.keys.consumeOnce(id, idempotencyKey)], []));
|
|
319
|
-
} catch (e) {
|
|
320
|
-
return walletSessionStoreFailure(e, "Failed to consume threshold session");
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
async hasConsumedUseCountOnce(id, idempotencyKey) {
|
|
324
|
-
const consumeKey = normalizeConsumeOnceKey(idempotencyKey);
|
|
325
|
-
if (!consumeKey) return {
|
|
326
|
-
ok: true,
|
|
327
|
-
consumed: false
|
|
328
|
-
};
|
|
329
|
-
try {
|
|
330
|
-
return parseRedisConsumedUseResult(await this.client.eval(CONSUME_ONCE_EXISTS_LUA, [this.keys.consumeOnce(id, consumeKey)], []));
|
|
331
|
-
} catch (e) {
|
|
332
|
-
return walletSessionStoreFailure(e, "Failed to check consumed threshold session operation");
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
async reserveReplayGuard(scopeId, replayKey, expiresAtMs) {
|
|
336
|
-
try {
|
|
337
|
-
const ttlMs = replayGuardTtlMs(expiresAtMs);
|
|
338
|
-
if (ttlMs <= 0) return replayGuardExpired();
|
|
339
|
-
return parseRedisReplayGuardResult(await this.client.eval(REPLAY_GUARD_LUA, [this.keys.replayGuard(scopeId, replayKey)], [String(Math.max(1, Math.ceil(ttlMs / 1e3)))]));
|
|
340
|
-
} catch (e) {
|
|
341
|
-
return walletSessionStoreFailure(e, "Failed to reserve replay guard");
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
};
|
|
345
|
-
var RedisTcpWalletSessionStore = class {
|
|
346
|
-
constructor(input) {
|
|
347
|
-
const url = normalizeOptionalTrimmedString(input.redisUrl);
|
|
348
|
-
if (!url) throw new Error("redis-tcp wallet session store missing redisUrl");
|
|
349
|
-
this.client = new RedisTcpClient(url);
|
|
350
|
-
this.keys = new WalletSessionKeys(input.keyPrefix);
|
|
351
|
-
this.parseRecord = input.parseRecord;
|
|
352
|
-
}
|
|
353
|
-
async putSession(id, record, opts) {
|
|
354
|
-
const ttlMs = Math.max(0, Number(opts.ttlMs) || 0);
|
|
355
|
-
await redisSetJson(this.client, this.keys.meta(id), record, ttlMs);
|
|
356
|
-
const ttlSeconds = Math.max(1, Math.ceil(ttlMs / 1e3));
|
|
357
|
-
const uses = String(Math.max(0, Number(opts.remainingUses) || 0));
|
|
358
|
-
const resp = await this.client.send([
|
|
359
|
-
"SET",
|
|
360
|
-
this.keys.uses(id),
|
|
361
|
-
uses,
|
|
362
|
-
"EX",
|
|
363
|
-
String(ttlSeconds)
|
|
364
|
-
]);
|
|
365
|
-
if (resp.type === "error") throw new Error(`Redis SET error: ${resp.value}`);
|
|
366
|
-
}
|
|
367
|
-
async getSession(id) {
|
|
368
|
-
const raw = await redisGetJson(this.client, this.keys.meta(id));
|
|
369
|
-
return this.parseRecord(raw);
|
|
370
|
-
}
|
|
371
|
-
async getSessionStatus(id) {
|
|
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
|
-
});
|
|
379
|
-
}
|
|
380
|
-
async consumeUseCount(id) {
|
|
381
|
-
try {
|
|
382
|
-
const resp = await this.client.send([
|
|
383
|
-
"EVAL",
|
|
384
|
-
CONSUME_USE_COUNT_LUA,
|
|
385
|
-
"1",
|
|
386
|
-
this.keys.uses(id)
|
|
387
|
-
]);
|
|
388
|
-
if (resp.type === "error") return failure("internal", `Redis EVAL error: ${resp.value}`);
|
|
389
|
-
return parseRedisConsumeOnceResult(redisRawValue(resp));
|
|
390
|
-
} catch (e) {
|
|
391
|
-
return walletSessionStoreFailure(e, "Failed to consume threshold session");
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
async consumeUseCountOnce(id, idempotencyKey) {
|
|
395
|
-
try {
|
|
396
|
-
const resp = await this.client.send([
|
|
397
|
-
"EVAL",
|
|
398
|
-
CONSUME_ONCE_LUA,
|
|
399
|
-
"2",
|
|
400
|
-
this.keys.uses(id),
|
|
401
|
-
this.keys.consumeOnce(id, idempotencyKey)
|
|
402
|
-
]);
|
|
403
|
-
if (resp.type === "error") return failure("internal", `Redis EVAL error: ${resp.value}`);
|
|
404
|
-
return parseRedisConsumeOnceResult(resp.type === "integer" ? String(resp.value) : resp.value);
|
|
405
|
-
} catch (e) {
|
|
406
|
-
return walletSessionStoreFailure(e, "Failed to consume threshold session");
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
async hasConsumedUseCountOnce(id, idempotencyKey) {
|
|
410
|
-
const consumeKey = normalizeConsumeOnceKey(idempotencyKey);
|
|
411
|
-
if (!consumeKey) return {
|
|
412
|
-
ok: true,
|
|
413
|
-
consumed: false
|
|
414
|
-
};
|
|
415
|
-
try {
|
|
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}`);
|
|
418
|
-
return parseRedisConsumedUseResult(resp.value);
|
|
419
|
-
} catch (e) {
|
|
420
|
-
return walletSessionStoreFailure(e, "Failed to check consumed threshold session operation");
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
async reserveReplayGuard(scopeId, replayKey, expiresAtMs) {
|
|
424
|
-
try {
|
|
425
|
-
const ttlMs = replayGuardTtlMs(expiresAtMs);
|
|
426
|
-
if (ttlMs <= 0) return replayGuardExpired();
|
|
427
|
-
const resp = await this.client.send([
|
|
428
|
-
"SET",
|
|
429
|
-
this.keys.replayGuard(scopeId, replayKey),
|
|
430
|
-
"1",
|
|
431
|
-
"NX",
|
|
432
|
-
"EX",
|
|
433
|
-
String(Math.max(1, Math.ceil(ttlMs / 1e3)))
|
|
434
|
-
]);
|
|
435
|
-
if (resp.type === "error") return failure("internal", `Redis SET error: ${resp.value}`);
|
|
436
|
-
if (resp.type === "bulk" && resp.value === null) return replayGuardDuplicate();
|
|
437
|
-
if (resp.type === "simple" && resp.value === "OK") return { ok: true };
|
|
438
|
-
return failure("internal", "Redis replay guard returned invalid response");
|
|
439
|
-
} catch (e) {
|
|
440
|
-
return walletSessionStoreFailure(e, "Failed to reserve replay guard");
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
};
|
|
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 : {};
|
|
453
|
-
const allowInMemory = normalizeOptionalTrimmedString(config.THRESHOLD_ALLOW_IN_MEMORY_STORES) === "1";
|
|
454
|
-
const requirePersistent = !input.isNode && !allowInMemory;
|
|
455
|
-
const envPrefix = spec.envPrefix(config);
|
|
456
|
-
const inMemory = () => new InMemoryWalletSessionStore({ keyPrefix: envPrefix || void 0 });
|
|
457
|
-
const kind = readNonDurableObjectThresholdStoreKind(config, tag);
|
|
458
|
-
if (kind === "in-memory") {
|
|
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();
|
|
461
|
-
}
|
|
462
|
-
if (kind === "upstash-redis-rest") return new UpstashRedisRestWalletSessionStore({
|
|
463
|
-
url: normalizeOptionalTrimmedString(config.url) || normalizeOptionalTrimmedString(config.UPSTASH_REDIS_REST_URL),
|
|
464
|
-
token: normalizeOptionalTrimmedString(config.token) || normalizeOptionalTrimmedString(config.UPSTASH_REDIS_REST_TOKEN),
|
|
465
|
-
keyPrefix: normalizeOptionalTrimmedString(config.keyPrefix) || envPrefix,
|
|
466
|
-
parseRecord
|
|
467
|
-
});
|
|
468
|
-
if (kind === "redis-tcp") {
|
|
469
|
-
if (!input.isNode) {
|
|
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();
|
|
473
|
-
}
|
|
474
|
-
return new RedisTcpWalletSessionStore({
|
|
475
|
-
redisUrl: normalizeOptionalTrimmedString(config.redisUrl) || normalizeOptionalTrimmedString(config.REDIS_URL),
|
|
476
|
-
keyPrefix: normalizeOptionalTrimmedString(config.keyPrefix) || envPrefix,
|
|
477
|
-
parseRecord
|
|
478
|
-
});
|
|
479
|
-
}
|
|
480
|
-
const upstashUrl = normalizeOptionalTrimmedString(config.UPSTASH_REDIS_REST_URL);
|
|
481
|
-
const upstashToken = normalizeOptionalTrimmedString(config.UPSTASH_REDIS_REST_TOKEN);
|
|
482
|
-
if (upstashUrl || upstashToken) {
|
|
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");
|
|
484
|
-
input.logger.info(`[${tag}] Using Upstash REST store for Wallet Session records`);
|
|
485
|
-
return new UpstashRedisRestWalletSessionStore({
|
|
486
|
-
url: upstashUrl,
|
|
487
|
-
token: upstashToken,
|
|
488
|
-
keyPrefix: envPrefix || void 0,
|
|
489
|
-
parseRecord
|
|
490
|
-
});
|
|
491
|
-
}
|
|
492
|
-
const redisUrl = normalizeOptionalTrimmedString(config.REDIS_URL);
|
|
493
|
-
if (redisUrl) {
|
|
494
|
-
if (!input.isNode) {
|
|
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();
|
|
498
|
-
}
|
|
499
|
-
input.logger.info(`[${tag}] Using redis-tcp store for Wallet Session records`);
|
|
500
|
-
return new RedisTcpWalletSessionStore({
|
|
501
|
-
redisUrl,
|
|
502
|
-
keyPrefix: envPrefix || void 0,
|
|
503
|
-
parseRecord
|
|
504
|
-
});
|
|
505
|
-
}
|
|
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();
|
|
509
|
-
}
|
|
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
|
|
522
|
-
});
|
|
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
|
-
},
|
|
535
|
-
parseRecord: parseEcdsaWalletSessionRecord
|
|
536
|
-
});
|
|
537
|
-
}
|
|
538
|
-
//#endregion
|
|
539
|
-
export { createEcdsaWalletSessionStore, createEd25519WalletSessionStore };
|
|
540
|
-
|
|
541
|
-
//# sourceMappingURL=WalletSessionStore.js.map
|