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