tapimo 0.15.0 → 0.18.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/README.md +137 -0
- package/dist/ApiKey.d.ts +1 -0
- package/dist/ApiKey.d.ts.map +1 -1
- package/dist/ApiKey.js +4 -2
- package/dist/ApiKey.js.map +1 -1
- package/dist/ApiKeys.d.ts +37 -11
- package/dist/ApiKeys.d.ts.map +1 -1
- package/dist/ApiKeys.js +163 -10
- package/dist/ApiKeys.js.map +1 -1
- package/dist/App.d.ts +13085 -11974
- package/dist/App.d.ts.map +1 -1
- package/dist/App.js +46 -15
- package/dist/App.js.map +1 -1
- package/dist/Scope.d.ts +1 -1
- package/dist/Scope.d.ts.map +1 -1
- package/dist/Scope.js +1 -1
- package/dist/Scope.js.map +1 -1
- package/dist/admin/App.d.ts +896 -191
- package/dist/admin/App.d.ts.map +1 -1
- package/dist/admin/App.js +5 -1
- package/dist/admin/App.js.map +1 -1
- package/dist/admin/apps/api-keys.d.ts +33 -33
- package/dist/admin/apps/api-keys.d.ts.map +1 -1
- package/dist/admin/apps/api-keys.js +8 -3
- package/dist/admin/apps/api-keys.js.map +1 -1
- package/dist/admin/apps/earn-vaults.d.ts +66 -27
- package/dist/admin/apps/earn-vaults.d.ts.map +1 -1
- package/dist/admin/apps/earn-vaults.js +36 -7
- package/dist/admin/apps/earn-vaults.js.map +1 -1
- package/dist/admin/apps/organizations.d.ts +25 -25
- package/dist/admin/apps/organizations.d.ts.map +1 -1
- package/dist/admin/apps/organizations.js +5 -4
- package/dist/admin/apps/organizations.js.map +1 -1
- package/dist/admin/apps/route-policies.d.ts +632 -0
- package/dist/admin/apps/route-policies.d.ts.map +1 -0
- package/dist/admin/apps/route-policies.js +257 -0
- package/dist/admin/apps/route-policies.js.map +1 -0
- package/dist/admin/apps/routes-support.js +39 -3
- package/dist/admin/apps/routes-support.js.map +1 -1
- package/dist/admin/apps/routes.d.ts +454 -1
- package/dist/admin/apps/routes.d.ts.map +1 -1
- package/dist/admin/apps/routes.js +82 -1
- package/dist/admin/apps/routes.js.map +1 -1
- package/dist/admin/apps/verified-tokens.d.ts +10 -4
- package/dist/admin/apps/verified-tokens.d.ts.map +1 -1
- package/dist/admin/apps/verified-tokens.js +24 -4
- package/dist/admin/apps/verified-tokens.js.map +1 -1
- package/dist/admin/index.d.ts +0 -1
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +0 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/ui.generated.d.ts +1 -1
- package/dist/admin/ui.generated.d.ts.map +1 -1
- package/dist/admin/ui.generated.js +99 -103
- package/dist/admin/ui.generated.js.map +1 -1
- package/dist/analytics/Analytics.d.ts.map +1 -1
- package/dist/analytics/Analytics.js +65 -1
- package/dist/analytics/Analytics.js.map +1 -1
- package/dist/analytics/tables/requestEvents.d.ts +1 -1
- package/dist/analytics/tables/requestEvents.d.ts.map +1 -1
- package/dist/analytics/tables/requestEvents.js +58 -59
- package/dist/analytics/tables/requestEvents.js.map +1 -1
- package/dist/apps/data/App.d.ts +2709 -2670
- package/dist/apps/data/App.d.ts.map +1 -1
- package/dist/apps/data/routes/activities.d.ts +5 -5
- package/dist/apps/data/routes/activities.d.ts.map +1 -1
- package/dist/apps/data/routes/activities.js +50 -0
- package/dist/apps/data/routes/activities.js.map +1 -1
- package/dist/apps/data/routes/addresses.d.ts +248 -248
- package/dist/apps/data/routes/balances.d.ts +22 -22
- package/dist/apps/data/routes/balances.d.ts.map +1 -1
- package/dist/apps/data/routes/balances.js +5 -7
- package/dist/apps/data/routes/balances.js.map +1 -1
- package/dist/apps/data/routes/coingecko.d.ts +54 -54
- package/dist/apps/data/routes/earn.d.ts +103 -12
- package/dist/apps/data/routes/earn.d.ts.map +1 -1
- package/dist/apps/data/routes/earn.js +456 -220
- package/dist/apps/data/routes/earn.js.map +1 -1
- package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
- package/dist/apps/data/routes/exchanges.js +267 -97
- package/dist/apps/data/routes/exchanges.js.map +1 -1
- package/dist/apps/data/routes/fee-amm.d.ts +1 -19
- package/dist/apps/data/routes/fee-amm.d.ts.map +1 -1
- package/dist/apps/data/routes/fee-amm.js +93 -56
- package/dist/apps/data/routes/fee-amm.js.map +1 -1
- package/dist/apps/data/routes/indexer.d.ts +10 -10
- package/dist/apps/data/routes/rpc.d.ts +30 -30
- package/dist/apps/data/routes/rpc.js +45 -11
- package/dist/apps/data/routes/rpc.js.map +1 -1
- package/dist/apps/data/routes/tokens.d.ts.map +1 -1
- package/dist/apps/data/routes/tokens.js +11 -6
- package/dist/apps/data/routes/tokens.js.map +1 -1
- package/dist/apps/data/routes/transactions.d.ts +2 -0
- package/dist/apps/data/routes/transactions.d.ts.map +1 -1
- package/dist/apps/data/routes/transactions.js +30 -22
- package/dist/apps/data/routes/transactions.js.map +1 -1
- package/dist/apps/data/routes/transfers.d.ts +12 -12
- package/dist/apps/data/routes/valuation.d.ts +30 -30
- package/dist/apps/data/routes/verified-tokens.d.ts +5 -5
- package/dist/apps/data/routes/webhooks.d.ts +1 -1
- package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
- package/dist/apps/data/routes/webhooks.js +18 -11
- package/dist/apps/data/routes/webhooks.js.map +1 -1
- package/dist/apps/data/routes/zones.d.ts +3 -3
- package/dist/apps/management/App.d.ts +3043 -2198
- package/dist/apps/management/App.d.ts.map +1 -1
- package/dist/apps/management/App.js +2 -0
- package/dist/apps/management/App.js.map +1 -1
- package/dist/apps/management/Billing.d.ts +2 -4
- package/dist/apps/management/Billing.d.ts.map +1 -1
- package/dist/apps/management/Billing.js +65 -26
- package/dist/apps/management/Billing.js.map +1 -1
- package/dist/apps/management/routes/api-keys.d.ts +16 -4
- package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
- package/dist/apps/management/routes/api-keys.js +70 -11
- package/dist/apps/management/routes/api-keys.js.map +1 -1
- package/dist/apps/management/routes/billing.d.ts +84 -84
- package/dist/apps/management/routes/cli.d.ts +912 -0
- package/dist/apps/management/routes/cli.d.ts.map +1 -0
- package/dist/apps/management/routes/cli.js +416 -0
- package/dist/apps/management/routes/cli.js.map +1 -0
- package/dist/apps/management/routes/faucet.d.ts +8 -8
- package/dist/apps/management/routes/invitations.d.ts +24 -24
- package/dist/apps/management/routes/invite-links.d.ts +66 -66
- package/dist/apps/management/routes/members.d.ts +16 -16
- package/dist/apps/management/routes/orgs.d.ts +20 -20
- package/dist/apps/management/routes/orgs.d.ts.map +1 -1
- package/dist/apps/management/routes/orgs.js +8 -2
- package/dist/apps/management/routes/orgs.js.map +1 -1
- package/dist/apps/management/routes/projects.d.ts +76 -76
- package/dist/apps/management/routes/usage.d.ts +8 -8
- package/dist/apps/management/routes/verified-token-requests.d.ts +42 -42
- package/dist/apps/management/routes/verified-token-requests.d.ts.map +1 -1
- package/dist/apps/management/routes/verified-token-requests.js +7 -9
- package/dist/apps/management/routes/verified-token-requests.js.map +1 -1
- package/dist/apps/management/routes/webhooks.d.ts +119 -119
- package/dist/apps/mcp.d.ts.map +1 -1
- package/dist/apps/mcp.js +16 -3
- package/dist/apps/mcp.js.map +1 -1
- package/dist/apps/mpp/internal/Policy.d.ts.map +1 -1
- package/dist/apps/mpp/internal/Policy.js +4 -2
- package/dist/apps/mpp/internal/Policy.js.map +1 -1
- package/dist/apps/mpp/internal/Sponsorship.d.ts.map +1 -1
- package/dist/apps/mpp/internal/Sponsorship.js +6 -4
- package/dist/apps/mpp/internal/Sponsorship.js.map +1 -1
- package/dist/apps/relay/App.d.ts +8 -0
- package/dist/apps/relay/App.d.ts.map +1 -1
- package/dist/apps/relay/App.js +16 -4
- package/dist/apps/relay/App.js.map +1 -1
- package/dist/apps/relay/Sponsorships.d.ts +4 -6
- package/dist/apps/relay/Sponsorships.d.ts.map +1 -1
- package/dist/apps/relay/Sponsorships.js +71 -60
- package/dist/apps/relay/Sponsorships.js.map +1 -1
- package/dist/apps/routes/Access.d.ts +53 -0
- package/dist/apps/routes/Access.d.ts.map +1 -1
- package/dist/apps/routes/Access.js +121 -0
- package/dist/apps/routes/Access.js.map +1 -1
- package/dist/apps/routes/App.d.ts +397 -158
- package/dist/apps/routes/App.d.ts.map +1 -1
- package/dist/apps/routes/App.js.map +1 -1
- package/dist/apps/routes/routes/deposit-addresses.d.ts +169 -61
- package/dist/apps/routes/routes/deposit-addresses.d.ts.map +1 -1
- package/dist/apps/routes/routes/deposit-addresses.js +217 -32
- package/dist/apps/routes/routes/deposit-addresses.js.map +1 -1
- package/dist/apps/routes/routes/quotes.d.ts +90 -0
- package/dist/apps/routes/routes/quotes.d.ts.map +1 -1
- package/dist/apps/routes/routes/quotes.js +101 -27
- package/dist/apps/routes/routes/quotes.js.map +1 -1
- package/dist/apps/routes/routes/transfers.d.ts +187 -135
- package/dist/apps/routes/routes/transfers.d.ts.map +1 -1
- package/dist/apps/routes/routes/transfers.js +182 -37
- package/dist/apps/routes/routes/transfers.js.map +1 -1
- package/dist/cli/ApiKeys.d.ts +120 -0
- package/dist/cli/ApiKeys.d.ts.map +1 -0
- package/dist/cli/ApiKeys.js +138 -0
- package/dist/cli/ApiKeys.js.map +1 -0
- package/dist/cli/Cli.d.ts +92 -34
- package/dist/cli/Cli.d.ts.map +1 -1
- package/dist/cli/Cli.js +188 -11
- package/dist/cli/Cli.js.map +1 -1
- package/dist/cli/Credentials.d.ts +95 -0
- package/dist/cli/Credentials.d.ts.map +1 -0
- package/dist/cli/Credentials.js +110 -0
- package/dist/cli/Credentials.js.map +1 -0
- package/dist/cli/Spec.d.ts +59 -0
- package/dist/cli/Spec.d.ts.map +1 -0
- package/dist/cli/Spec.js +77 -0
- package/dist/cli/Spec.js.map +1 -0
- package/dist/cli/bin.js +5 -1
- package/dist/cli/bin.js.map +1 -1
- package/dist/cli/commands/admin.d.ts +5 -5
- package/dist/cli/commands/admin.d.ts.map +1 -1
- package/dist/cli/commands/auth.d.ts +73 -0
- package/dist/cli/commands/auth.d.ts.map +1 -0
- package/dist/cli/commands/auth.js +204 -0
- package/dist/cli/commands/auth.js.map +1 -0
- package/dist/cli/commands/keys.d.ts +17 -0
- package/dist/cli/commands/keys.d.ts.map +1 -0
- package/dist/cli/commands/keys.js +109 -0
- package/dist/cli/commands/keys.js.map +1 -0
- package/dist/cloudflare.d.ts +27 -2
- package/dist/cloudflare.d.ts.map +1 -1
- package/dist/cloudflare.js +144 -17
- package/dist/cloudflare.js.map +1 -1
- package/dist/db/Db.d.ts +23 -0
- package/dist/db/Db.d.ts.map +1 -1
- package/dist/db/Db.js +418 -1
- package/dist/db/Db.js.map +1 -1
- package/dist/db/Schema.d.ts +44 -1
- package/dist/db/Schema.d.ts.map +1 -1
- package/dist/db/Schema.js +56 -3
- package/dist/db/Schema.js.map +1 -1
- package/dist/db/tables/apiKeyAdmissions.d.ts +28 -2
- package/dist/db/tables/apiKeyAdmissions.d.ts.map +1 -1
- package/dist/db/tables/apiKeyAdmissions.js +65 -9
- package/dist/db/tables/apiKeyAdmissions.js.map +1 -1
- package/dist/db/tables/apiKeyOwnerTombstones.d.ts +2 -0
- package/dist/db/tables/apiKeyOwnerTombstones.d.ts.map +1 -1
- package/dist/db/tables/apiKeyOwnerTombstones.js +2 -2
- package/dist/db/tables/apiKeyOwnerTombstones.js.map +1 -1
- package/dist/db/tables/authAccounts.d.ts.map +1 -1
- package/dist/db/tables/authAccounts.js +1 -0
- package/dist/db/tables/authAccounts.js.map +1 -1
- package/dist/db/tables/earnVaults.d.ts +5 -1
- package/dist/db/tables/earnVaults.d.ts.map +1 -1
- package/dist/db/tables/earnVaults.js +12 -1
- package/dist/db/tables/earnVaults.js.map +1 -1
- package/dist/db/tables/organizations.d.ts +4 -2
- package/dist/db/tables/organizations.d.ts.map +1 -1
- package/dist/db/tables/organizations.js +8 -34
- package/dist/db/tables/organizations.js.map +1 -1
- package/dist/db/tables/requestUsage.d.ts +5 -1
- package/dist/db/tables/requestUsage.d.ts.map +1 -1
- package/dist/db/tables/requestUsage.js +10 -2
- package/dist/db/tables/requestUsage.js.map +1 -1
- package/dist/db/tables/rewardEligibilityAssociations.d.ts +13 -0
- package/dist/db/tables/rewardEligibilityAssociations.d.ts.map +1 -1
- package/dist/db/tables/rewardEligibilityAssociations.js +11 -0
- package/dist/db/tables/rewardEligibilityAssociations.js.map +1 -1
- package/dist/db/tables/rewardRuns.d.ts.map +1 -1
- package/dist/db/tables/rewardRuns.js +4 -0
- package/dist/db/tables/rewardRuns.js.map +1 -1
- package/dist/db/tables/rewardTransactionAttempts.d.ts.map +1 -1
- package/dist/db/tables/rewardTransactionAttempts.js +2 -0
- package/dist/db/tables/rewardTransactionAttempts.js.map +1 -1
- package/dist/db/tables/routesDepositAddresses.d.ts +29 -0
- package/dist/db/tables/routesDepositAddresses.d.ts.map +1 -1
- package/dist/db/tables/routesDepositAddresses.js +84 -31
- package/dist/db/tables/routesDepositAddresses.js.map +1 -1
- package/dist/db/tables/routesDeposits.d.ts.map +1 -1
- package/dist/db/tables/routesDeposits.js +31 -21
- package/dist/db/tables/routesDeposits.js.map +1 -1
- package/dist/db/tables/routesIdempotency.d.ts.map +1 -1
- package/dist/db/tables/routesIdempotency.js +2 -0
- package/dist/db/tables/routesIdempotency.js.map +1 -1
- package/dist/db/tables/routesPolicies.d.ts +58 -0
- package/dist/db/tables/routesPolicies.d.ts.map +1 -0
- package/dist/db/tables/routesPolicies.js +198 -0
- package/dist/db/tables/routesPolicies.js.map +1 -0
- package/dist/db/tables/routesTransferSubsidies.d.ts +22 -0
- package/dist/db/tables/routesTransferSubsidies.d.ts.map +1 -1
- package/dist/db/tables/routesTransferSubsidies.js +41 -0
- package/dist/db/tables/routesTransferSubsidies.js.map +1 -1
- package/dist/db/tables/routesTransferSubsidyNonces.d.ts.map +1 -1
- package/dist/db/tables/routesTransferSubsidyNonces.js +12 -4
- package/dist/db/tables/routesTransferSubsidyNonces.js.map +1 -1
- package/dist/db/tables/routesTransfers.d.ts +26 -1
- package/dist/db/tables/routesTransfers.d.ts.map +1 -1
- package/dist/db/tables/routesTransfers.js +36 -6
- package/dist/db/tables/routesTransfers.js.map +1 -1
- package/dist/db/tables/sponsoredTransactions.d.ts +45 -13
- package/dist/db/tables/sponsoredTransactions.d.ts.map +1 -1
- package/dist/db/tables/sponsoredTransactions.js +144 -33
- package/dist/db/tables/sponsoredTransactions.js.map +1 -1
- package/dist/db/tables/users.d.ts +2 -0
- package/dist/db/tables/users.d.ts.map +1 -1
- package/dist/db/tables/users.js +11 -0
- package/dist/db/tables/users.js.map +1 -1
- package/dist/db/tables/verifiedTokenRequests.d.ts +21 -4
- package/dist/db/tables/verifiedTokenRequests.d.ts.map +1 -1
- package/dist/db/tables/verifiedTokenRequests.js +65 -44
- package/dist/db/tables/verifiedTokenRequests.js.map +1 -1
- package/dist/handlers/internal/multisig.d.ts +1 -1
- package/dist/handlers/internal/multisig.d.ts.map +1 -1
- package/dist/handlers/internal/multisig.js +3 -2
- package/dist/handlers/internal/multisig.js.map +1 -1
- package/dist/handlers/relay.d.ts +2 -0
- package/dist/handlers/relay.d.ts.map +1 -1
- package/dist/handlers/relay.js +34 -15
- package/dist/handlers/relay.js.map +1 -1
- package/dist/internal/Auth.d.ts +73 -6
- package/dist/internal/Auth.d.ts.map +1 -1
- package/dist/internal/Auth.js +212 -85
- package/dist/internal/Auth.js.map +1 -1
- package/dist/internal/BetterAuth.d.ts +22 -0
- package/dist/internal/BetterAuth.d.ts.map +1 -1
- package/dist/internal/BetterAuth.js +17 -14
- package/dist/internal/BetterAuth.js.map +1 -1
- package/dist/internal/Cache.d.ts +5 -0
- package/dist/internal/Cache.d.ts.map +1 -1
- package/dist/internal/Cache.js +3 -1
- package/dist/internal/Cache.js.map +1 -1
- package/dist/internal/CliAuth.d.ts +243 -0
- package/dist/internal/CliAuth.d.ts.map +1 -0
- package/dist/internal/CliAuth.js +249 -0
- package/dist/internal/CliAuth.js.map +1 -0
- package/dist/internal/EarnSharePrices.d.ts +1 -1
- package/dist/internal/EarnSharePrices.d.ts.map +1 -1
- package/dist/internal/EarnSharePrices.js +7 -3
- package/dist/internal/EarnSharePrices.js.map +1 -1
- package/dist/internal/EarnVaults.d.ts +47 -0
- package/dist/internal/EarnVaults.d.ts.map +1 -1
- package/dist/internal/EarnVaults.js +188 -4
- package/dist/internal/EarnVaults.js.map +1 -1
- package/dist/internal/EarnWithdrawals.d.ts +73 -0
- package/dist/internal/EarnWithdrawals.d.ts.map +1 -0
- package/dist/internal/EarnWithdrawals.js +189 -0
- package/dist/internal/EarnWithdrawals.js.map +1 -0
- package/dist/internal/ExecutionContext.d.ts +21 -0
- package/dist/internal/ExecutionContext.d.ts.map +1 -0
- package/dist/internal/ExecutionContext.js +16 -0
- package/dist/internal/ExecutionContext.js.map +1 -0
- package/dist/internal/Log.d.ts +7 -3
- package/dist/internal/Log.d.ts.map +1 -1
- package/dist/internal/Log.js +163 -130
- package/dist/internal/Log.js.map +1 -1
- package/dist/internal/MetricSink.d.ts.map +1 -1
- package/dist/internal/MetricSink.js +26 -1
- package/dist/internal/MetricSink.js.map +1 -1
- package/dist/internal/RateLimit.d.ts +67 -0
- package/dist/internal/RateLimit.d.ts.map +1 -1
- package/dist/internal/RateLimit.js +174 -27
- package/dist/internal/RateLimit.js.map +1 -1
- package/dist/internal/Store.d.ts +6 -0
- package/dist/internal/Store.d.ts.map +1 -1
- package/dist/internal/Store.js +4 -5
- package/dist/internal/Store.js.map +1 -1
- package/dist/internal/Timing.d.ts +6 -0
- package/dist/internal/Timing.d.ts.map +1 -1
- package/dist/internal/Timing.js +21 -1
- package/dist/internal/Timing.js.map +1 -1
- package/dist/internal/Tron.d.ts +124 -0
- package/dist/internal/Tron.d.ts.map +1 -0
- package/dist/internal/Tron.js +202 -0
- package/dist/internal/Tron.js.map +1 -0
- package/dist/internal/Viem.d.ts +4 -0
- package/dist/internal/Viem.d.ts.map +1 -1
- package/dist/internal/Viem.js +25 -6
- package/dist/internal/Viem.js.map +1 -1
- package/dist/internal/rewards/Read.d.ts +2 -2
- package/dist/internal/rewards/Read.d.ts.map +1 -1
- package/dist/internal/rewards/Read.js +11 -2
- package/dist/internal/rewards/Read.js.map +1 -1
- package/dist/internal/routes/Action.d.ts +27 -0
- package/dist/internal/routes/Action.d.ts.map +1 -1
- package/dist/internal/routes/Action.js +49 -1
- package/dist/internal/routes/Action.js.map +1 -1
- package/dist/internal/routes/Chain.d.ts +2 -0
- package/dist/internal/routes/Chain.d.ts.map +1 -1
- package/dist/internal/routes/Chain.js +4 -0
- package/dist/internal/routes/Chain.js.map +1 -1
- package/dist/internal/routes/DepositAddress.d.ts.map +1 -1
- package/dist/internal/routes/DepositAddress.js +5 -0
- package/dist/internal/routes/DepositAddress.js.map +1 -1
- package/dist/internal/routes/Evidence.d.ts.map +1 -1
- package/dist/internal/routes/Evidence.js +6 -2
- package/dist/internal/routes/Evidence.js.map +1 -1
- package/dist/internal/routes/EvmTransferSettlement.d.ts +17 -0
- package/dist/internal/routes/EvmTransferSettlement.d.ts.map +1 -0
- package/dist/internal/routes/EvmTransferSettlement.js +196 -0
- package/dist/internal/routes/EvmTransferSettlement.js.map +1 -0
- package/dist/internal/routes/Policy.d.ts +161 -0
- package/dist/internal/routes/Policy.d.ts.map +1 -0
- package/dist/internal/routes/Policy.js +249 -0
- package/dist/internal/routes/Policy.js.map +1 -0
- package/dist/internal/routes/Provider.d.ts +66 -3
- package/dist/internal/routes/Provider.d.ts.map +1 -1
- package/dist/internal/routes/Provider.js +106 -27
- package/dist/internal/routes/Provider.js.map +1 -1
- package/dist/internal/routes/Quota.d.ts +57 -0
- package/dist/internal/routes/Quota.d.ts.map +1 -0
- package/dist/internal/routes/Quota.js +144 -0
- package/dist/internal/routes/Quota.js.map +1 -0
- package/dist/internal/routes/Reconciliation.d.ts.map +1 -1
- package/dist/internal/routes/Reconciliation.js +163 -47
- package/dist/internal/routes/Reconciliation.js.map +1 -1
- package/dist/internal/routes/SolanaTransferSettlement.d.ts +12 -0
- package/dist/internal/routes/SolanaTransferSettlement.d.ts.map +1 -0
- package/dist/internal/routes/SolanaTransferSettlement.js +220 -0
- package/dist/internal/routes/SolanaTransferSettlement.js.map +1 -0
- package/dist/internal/routes/SolanaTransferSubsidy.d.ts +172 -0
- package/dist/internal/routes/SolanaTransferSubsidy.d.ts.map +1 -0
- package/dist/internal/routes/SolanaTransferSubsidy.js +564 -0
- package/dist/internal/routes/SolanaTransferSubsidy.js.map +1 -0
- package/dist/internal/routes/Subsidy.d.ts +2 -2
- package/dist/internal/routes/Subsidy.d.ts.map +1 -1
- package/dist/internal/routes/Subsidy.js +2 -2
- package/dist/internal/routes/Subsidy.js.map +1 -1
- package/dist/internal/routes/Transfer.d.ts +229 -1
- package/dist/internal/routes/Transfer.d.ts.map +1 -1
- package/dist/internal/routes/Transfer.js +644 -7
- package/dist/internal/routes/Transfer.js.map +1 -1
- package/dist/internal/routes/TransferReconciliation.d.ts +6 -0
- package/dist/internal/routes/TransferReconciliation.d.ts.map +1 -1
- package/dist/internal/routes/TransferReconciliation.js +83 -159
- package/dist/internal/routes/TransferReconciliation.js.map +1 -1
- package/dist/internal/routes/TransferSettlement.d.ts +45 -0
- package/dist/internal/routes/TransferSettlement.d.ts.map +1 -0
- package/dist/internal/routes/TransferSettlement.js +2 -0
- package/dist/internal/routes/TransferSettlement.js.map +1 -0
- package/dist/internal/routes/TransferSubsidy.d.ts +23 -8
- package/dist/internal/routes/TransferSubsidy.d.ts.map +1 -1
- package/dist/internal/routes/TransferSubsidy.js +64 -5
- package/dist/internal/routes/TransferSubsidy.js.map +1 -1
- package/dist/internal/routes/TronTransferSettlement.d.ts +12 -0
- package/dist/internal/routes/TronTransferSettlement.d.ts.map +1 -0
- package/dist/internal/routes/TronTransferSettlement.js +201 -0
- package/dist/internal/routes/TronTransferSettlement.js.map +1 -0
- package/dist/internal/routes/TronTransferSubsidy.d.ts +174 -0
- package/dist/internal/routes/TronTransferSubsidy.d.ts.map +1 -0
- package/dist/internal/routes/TronTransferSubsidy.js +439 -0
- package/dist/internal/routes/TronTransferSubsidy.js.map +1 -0
- package/dist/internal/routes/index.d.ts +3 -0
- package/dist/internal/routes/index.d.ts.map +1 -1
- package/dist/internal/routes/index.js +3 -0
- package/dist/internal/routes/index.js.map +1 -1
- package/dist/internal/routes/providers/across.d.ts +3 -0
- package/dist/internal/routes/providers/across.d.ts.map +1 -1
- package/dist/internal/routes/providers/across.js +11 -0
- package/dist/internal/routes/providers/across.js.map +1 -1
- package/dist/internal/routes/providers/legacyMesh.d.ts +29 -0
- package/dist/internal/routes/providers/legacyMesh.d.ts.map +1 -0
- package/dist/internal/routes/providers/legacyMesh.js +474 -0
- package/dist/internal/routes/providers/legacyMesh.js.map +1 -0
- package/dist/internal/routes/providers/legacyMeshDelivery.d.ts +59 -0
- package/dist/internal/routes/providers/legacyMeshDelivery.d.ts.map +1 -0
- package/dist/internal/routes/providers/legacyMeshDelivery.js +229 -0
- package/dist/internal/routes/providers/legacyMeshDelivery.js.map +1 -0
- package/dist/internal/routes/providers/legacyMeshOutbound.d.ts +19 -0
- package/dist/internal/routes/providers/legacyMeshOutbound.d.ts.map +1 -0
- package/dist/internal/routes/providers/legacyMeshOutbound.js +457 -0
- package/dist/internal/routes/providers/legacyMeshOutbound.js.map +1 -0
- package/dist/internal/routes/providers/legacyMeshOutboundDelivery.d.ts +123 -0
- package/dist/internal/routes/providers/legacyMeshOutboundDelivery.d.ts.map +1 -0
- package/dist/internal/routes/providers/legacyMeshOutboundDelivery.js +333 -0
- package/dist/internal/routes/providers/legacyMeshOutboundDelivery.js.map +1 -0
- package/dist/internal/routes/providers/propAmm.d.ts +70 -0
- package/dist/internal/routes/providers/propAmm.d.ts.map +1 -0
- package/dist/internal/routes/providers/propAmm.js +524 -0
- package/dist/internal/routes/providers/propAmm.js.map +1 -0
- package/dist/internal/routes/providers/relay.d.ts +4 -1
- package/dist/internal/routes/providers/relay.d.ts.map +1 -1
- package/dist/internal/routes/providers/relay.js +353 -42
- package/dist/internal/routes/providers/relay.js.map +1 -1
- package/dist/internal/routes/providers/rhino.d.ts +3 -0
- package/dist/internal/routes/providers/rhino.d.ts.map +1 -1
- package/dist/internal/routes/providers/rhino.js +11 -0
- package/dist/internal/routes/providers/rhino.js.map +1 -1
- package/dist/internal/routes/providers/squid.d.ts +3 -0
- package/dist/internal/routes/providers/squid.d.ts.map +1 -1
- package/dist/internal/routes/providers/squid.js +19 -0
- package/dist/internal/routes/providers/squid.js.map +1 -1
- package/dist/internal/routes/providers/stargate.d.ts.map +1 -1
- package/dist/internal/routes/providers/stargate.js +22 -9
- package/dist/internal/routes/providers/stargate.js.map +1 -1
- package/dist/internal/routes/providers/symbiosis.d.ts.map +1 -1
- package/dist/internal/routes/providers/symbiosis.js +13 -17
- package/dist/internal/routes/providers/symbiosis.js.map +1 -1
- package/dist/providers/index.d.ts +14 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +6 -0
- package/dist/providers/index.js.map +1 -1
- package/package.json +16 -6
- package/src/ApiKey.ts +7 -3
- package/src/ApiKeys.test.ts +652 -8
- package/src/ApiKeys.ts +191 -11
- package/src/App.test.ts +405 -18
- package/src/App.ts +51 -15
- package/src/Client.test-d.ts +157 -10
- package/src/Client.test.ts +4 -4
- package/src/Scope.ts +1 -2
- package/src/admin/App.ts +11 -5
- package/src/admin/apps/api-keys.test.ts +98 -2
- package/src/admin/apps/api-keys.ts +21 -12
- package/src/admin/apps/earn-vaults.test.ts +76 -7
- package/src/admin/apps/earn-vaults.ts +47 -8
- package/src/admin/apps/organizations.test.ts +147 -31
- package/src/admin/apps/organizations.ts +5 -4
- package/src/admin/apps/route-policies.test.ts +220 -0
- package/src/admin/apps/route-policies.ts +322 -0
- package/src/admin/apps/routes-support.test.ts +107 -2
- package/src/admin/apps/routes-support.ts +43 -3
- package/src/admin/apps/routes.test.ts +150 -0
- package/src/admin/apps/routes.ts +97 -1
- package/src/admin/apps/scopes.test.ts +1 -1
- package/src/admin/apps/verified-tokens.test.ts +32 -0
- package/src/admin/apps/verified-tokens.ts +30 -4
- package/src/admin/index.ts +0 -1
- package/src/admin/ui/plugin.ts +2 -1
- package/src/admin/ui/src/components/Dialog.tsx +1 -1
- package/src/admin/ui/src/components/EarnVaultForm.tsx +45 -0
- package/src/admin/ui/src/components/RoutePicker.tsx +79 -0
- package/src/admin/ui/src/lib/earn-vaults.ts +1 -1
- package/src/admin/ui/src/lib/route-policies.test.ts +452 -0
- package/src/admin/ui/src/lib/route-policies.ts +232 -0
- package/src/admin/ui/src/lib/routes.ts +34 -0
- package/src/admin/ui/src/lib/verified-tokens.ts +24 -9
- package/src/admin/ui/src/routeTree.gen.ts +21 -0
- package/src/admin/ui/src/routes/__root.tsx +1 -1
- package/src/admin/ui/src/routes/api-keys.tsx +21 -2
- package/src/admin/ui/src/routes/early-access.tsx +1 -0
- package/src/admin/ui/src/routes/earn.vaults.tsx +1 -0
- package/src/admin/ui/src/routes/earn.vaults_.$vaultId.edit.tsx +22 -0
- package/src/admin/ui/src/routes/earn.vaults_.new.tsx +10 -0
- package/src/admin/ui/src/routes/organizations.tsx +35 -4
- package/src/admin/ui/src/routes/organizations_.$orgId.tsx +18 -3
- package/src/admin/ui/src/routes/route-policies.tsx +678 -0
- package/src/admin/ui/src/routes/routes.tsx +85 -2
- package/src/admin/ui/src/routes/routes_.support.tsx +6 -22
- package/src/admin/ui/src/routes/subsidies.tsx +1 -0
- package/src/admin/ui/src/routes/verified-tokens.tsx +65 -20
- package/src/admin/ui.generated.ts +99 -104
- package/src/analytics/Analytics.test.ts +4 -50
- package/src/analytics/Analytics.ts +65 -1
- package/src/analytics/tables/requestEvents.test.ts +402 -1
- package/src/analytics/tables/requestEvents.ts +62 -93
- package/src/apps/data/App.test.ts +26 -0
- package/src/apps/data/routes/activities.test.ts +315 -14
- package/src/apps/data/routes/activities.ts +60 -0
- package/src/apps/data/routes/balances.ts +5 -7
- package/src/apps/data/routes/earn.bench.ts +18 -0
- package/src/apps/data/routes/earn.local.test.ts +507 -0
- package/src/apps/data/routes/earn.test.ts +405 -127
- package/src/apps/data/routes/earn.ts +660 -270
- package/src/apps/data/routes/exchanges.bench.ts +3 -1
- package/src/apps/data/routes/exchanges.test.ts +166 -2
- package/src/apps/data/routes/exchanges.ts +308 -101
- package/src/apps/data/routes/fee-amm.test.ts +153 -2
- package/src/apps/data/routes/fee-amm.ts +132 -62
- package/src/apps/data/routes/receipts.test.ts +21 -18
- package/src/apps/data/routes/rpc.test.ts +34 -2
- package/src/apps/data/routes/rpc.ts +47 -10
- package/src/apps/data/routes/tokens.provenance.test.ts +157 -0
- package/src/apps/data/routes/tokens.test.ts +4 -4
- package/src/apps/data/routes/tokens.ts +11 -6
- package/src/apps/data/routes/transactions.test.ts +29 -0
- package/src/apps/data/routes/transactions.ts +33 -22
- package/src/apps/data/routes/webhooks.scan.test.ts +29 -0
- package/src/apps/data/routes/webhooks.test.ts +18 -3
- package/src/apps/data/routes/webhooks.ts +27 -13
- package/src/apps/management/App.ts +4 -0
- package/src/apps/management/Billing.test.ts +253 -27
- package/src/apps/management/Billing.ts +83 -29
- package/src/apps/management/routes/api-keys.test.ts +1 -1
- package/src/apps/management/routes/api-keys.ts +85 -11
- package/src/apps/management/routes/billing.test.ts +68 -4
- package/src/apps/management/routes/cli.test.ts +370 -0
- package/src/apps/management/routes/cli.ts +533 -0
- package/src/apps/management/routes/me.test.ts +14 -4
- package/src/apps/management/routes/orgs.test.ts +108 -4
- package/src/apps/management/routes/orgs.ts +7 -2
- package/src/apps/management/routes/usage.test.ts +2 -2
- package/src/apps/management/routes/verified-token-requests.test.ts +16 -2
- package/src/apps/management/routes/verified-token-requests.ts +7 -10
- package/src/apps/mcp.test.ts +108 -25
- package/src/apps/mcp.ts +15 -3
- package/src/apps/mpp/internal/Policy.test.ts +51 -4
- package/src/apps/mpp/internal/Policy.ts +6 -2
- package/src/apps/mpp/internal/Sponsorship.test.ts +29 -0
- package/src/apps/mpp/internal/Sponsorship.ts +6 -4
- package/src/apps/relay/App.test.ts +85 -1
- package/src/apps/relay/App.ts +28 -4
- package/src/apps/relay/Sponsorships.test.ts +97 -1
- package/src/apps/relay/Sponsorships.ts +77 -66
- package/src/apps/routes/Access.test.ts +319 -0
- package/src/apps/routes/Access.ts +147 -0
- package/src/apps/routes/App.ts +10 -0
- package/src/apps/routes/routes/chains.test.ts +3 -2
- package/src/apps/routes/routes/deposit-addresses.test.ts +978 -34
- package/src/apps/routes/routes/deposit-addresses.ts +243 -32
- package/src/apps/routes/routes/propAmm.local.test.ts +951 -0
- package/src/apps/routes/routes/quotes.test.ts +81 -8
- package/src/apps/routes/routes/quotes.ts +109 -27
- package/src/apps/routes/routes/transfers.test.ts +252 -15
- package/src/apps/routes/routes/transfers.ts +212 -33
- package/src/cli/ApiKeys.test.ts +265 -0
- package/src/cli/ApiKeys.ts +189 -0
- package/src/cli/Cli.test.ts +188 -0
- package/src/cli/Cli.ts +280 -12
- package/src/cli/Credentials.test.ts +122 -0
- package/src/cli/Credentials.ts +144 -0
- package/src/cli/Spec.test.ts +133 -0
- package/src/cli/Spec.ts +132 -0
- package/src/cli/bin.test.ts +49 -0
- package/src/cli/bin.ts +5 -1
- package/src/cli/commands/auth.test.ts +138 -0
- package/src/cli/commands/auth.ts +254 -0
- package/src/cli/commands/keys.test.ts +68 -0
- package/src/cli/commands/keys.ts +125 -0
- package/src/cloudflare.ts +184 -36
- package/src/db/Db.test.ts +877 -0
- package/src/db/Db.ts +507 -1
- package/src/db/Schema.ts +75 -4
- package/src/db/tables/apiKeyAdmissions.test.ts +57 -0
- package/src/db/tables/apiKeyAdmissions.ts +101 -11
- package/src/db/tables/apiKeyOwnerTombstones.ts +2 -2
- package/src/db/tables/authAccounts.test.ts +30 -0
- package/src/db/tables/authAccounts.ts +1 -0
- package/src/db/tables/earnVaults.test.ts +34 -0
- package/src/db/tables/earnVaults.ts +17 -2
- package/src/db/tables/organizations.test.ts +148 -84
- package/src/db/tables/organizations.ts +11 -43
- package/src/db/tables/requestUsage.ts +13 -2
- package/src/db/tables/rewardCampaigns.test.ts +163 -0
- package/src/db/tables/rewardEligibilityAssociations.test.ts +14 -0
- package/src/db/tables/rewardEligibilityAssociations.ts +24 -0
- package/src/db/tables/rewardRuns.ts +4 -0
- package/src/db/tables/rewardTransactionAttempts.ts +2 -0
- package/src/db/tables/routesDepositAddresses.test.ts +263 -0
- package/src/db/tables/routesDepositAddresses.ts +118 -34
- package/src/db/tables/routesDeposits.test.ts +133 -0
- package/src/db/tables/routesDeposits.ts +47 -26
- package/src/db/tables/routesIdempotency.test.ts +80 -0
- package/src/db/tables/routesIdempotency.ts +2 -0
- package/src/db/tables/routesPolicies.test.ts +143 -0
- package/src/db/tables/routesPolicies.ts +251 -0
- package/src/db/tables/routesTransferSubsidies.ts +64 -0
- package/src/db/tables/routesTransferSubsidyNonces.ts +16 -4
- package/src/db/tables/routesTransfers.test.ts +183 -2
- package/src/db/tables/routesTransfers.ts +65 -6
- package/src/db/tables/sponsoredTransactions.test.ts +351 -76
- package/src/db/tables/sponsoredTransactions.ts +182 -38
- package/src/db/tables/users.test.ts +51 -0
- package/src/db/tables/users.ts +12 -0
- package/src/db/tables/verifiedTokenRequests.test.ts +39 -20
- package/src/db/tables/verifiedTokenRequests.ts +80 -44
- package/src/handlers/internal/multisig.store.test.ts +120 -0
- package/src/handlers/internal/multisig.test.ts +389 -0
- package/src/handlers/internal/multisig.ts +13 -10
- package/src/handlers/relay.test.ts +259 -83
- package/src/handlers/relay.ts +36 -17
- package/src/internal/Auth.test.ts +383 -8
- package/src/internal/Auth.ts +272 -99
- package/src/internal/BetterAuth.test.ts +58 -22
- package/src/internal/BetterAuth.ts +23 -17
- package/src/internal/Cache.ts +3 -1
- package/src/internal/CliAuth.test.ts +279 -0
- package/src/internal/CliAuth.ts +319 -0
- package/src/internal/EarnSharePrices.test.ts +25 -0
- package/src/internal/EarnSharePrices.ts +9 -2
- package/src/internal/EarnVaults.test.ts +67 -0
- package/src/internal/EarnVaults.ts +299 -4
- package/src/internal/EarnWithdrawals.test.ts +315 -0
- package/src/internal/EarnWithdrawals.ts +266 -0
- package/src/internal/ExecutionContext.ts +31 -0
- package/src/internal/Log.test.ts +210 -0
- package/src/internal/Log.ts +180 -142
- package/src/internal/MetricSink.test.ts +190 -15
- package/src/internal/MetricSink.ts +27 -1
- package/src/internal/RateLimit.test.ts +144 -8
- package/src/internal/RateLimit.ts +254 -26
- package/src/internal/Store.ts +4 -5
- package/src/internal/Timing.test.ts +32 -0
- package/src/internal/Timing.ts +20 -1
- package/src/internal/Tron.test-d.ts +22 -0
- package/src/internal/Tron.test.ts +94 -0
- package/src/internal/Tron.ts +289 -0
- package/src/internal/Viem.rpc.test.ts +76 -0
- package/src/internal/Viem.ts +29 -6
- package/src/internal/rewards/Read.test.ts +109 -0
- package/src/internal/rewards/Read.ts +13 -4
- package/src/internal/routes/Action.test.ts +70 -0
- package/src/internal/routes/Action.ts +76 -1
- package/src/internal/routes/Chain.test.ts +18 -0
- package/src/internal/routes/Chain.ts +5 -0
- package/src/internal/routes/DepositAddress.ts +5 -0
- package/src/internal/routes/Evidence.test.ts +64 -0
- package/src/internal/routes/Evidence.ts +11 -3
- package/src/internal/routes/EvmTransferSettlement.ts +213 -0
- package/src/internal/routes/Policy.test.ts +316 -0
- package/src/internal/routes/Policy.ts +399 -0
- package/src/internal/routes/Provider.test.ts +103 -2
- package/src/internal/routes/Provider.ts +149 -27
- package/src/internal/routes/Quota.test.ts +149 -0
- package/src/internal/routes/Quota.ts +226 -0
- package/src/internal/routes/Reconciliation.local.test.ts +285 -0
- package/src/internal/routes/Reconciliation.test.ts +371 -13
- package/src/internal/routes/Reconciliation.ts +193 -42
- package/src/internal/routes/SolanaTransferSettlement.ts +232 -0
- package/src/internal/routes/SolanaTransferSubsidy.test.ts +471 -0
- package/src/internal/routes/SolanaTransferSubsidy.ts +760 -0
- package/src/internal/routes/SourceObservation.test.ts +221 -0
- package/src/internal/routes/Subsidy.local.test.ts +46 -0
- package/src/internal/routes/Subsidy.ts +4 -2
- package/src/internal/routes/Transfer.solana.test.ts +389 -0
- package/src/internal/routes/Transfer.test.ts +130 -1
- package/src/internal/routes/Transfer.tron.test.ts +172 -0
- package/src/internal/routes/Transfer.ts +866 -8
- package/src/internal/routes/TransferReconciliation.test.ts +26 -4
- package/src/internal/routes/TransferReconciliation.ts +91 -166
- package/src/internal/routes/TransferSettlement.ts +48 -0
- package/src/internal/routes/TransferSubsidy.local.test.ts +143 -0
- package/src/internal/routes/TransferSubsidy.test.ts +34 -4
- package/src/internal/routes/TransferSubsidy.ts +87 -12
- package/src/internal/routes/TronTransferSettlement.ts +212 -0
- package/src/internal/routes/TronTransferSubsidy.test.ts +109 -0
- package/src/internal/routes/TronTransferSubsidy.ts +619 -0
- package/src/internal/routes/index.test.ts +3 -0
- package/src/internal/routes/index.ts +3 -0
- package/src/internal/routes/providers/across.ts +13 -0
- package/src/internal/routes/providers/index.test.ts +141 -0
- package/src/internal/routes/providers/legacyMesh.test.ts +484 -0
- package/src/internal/routes/providers/legacyMesh.ts +633 -0
- package/src/internal/routes/providers/legacyMeshDelivery.test.ts +306 -0
- package/src/internal/routes/providers/legacyMeshDelivery.ts +320 -0
- package/src/internal/routes/providers/legacyMeshOutbound.test.ts +401 -0
- package/src/internal/routes/providers/legacyMeshOutbound.ts +566 -0
- package/src/internal/routes/providers/legacyMeshOutboundDelivery.ts +473 -0
- package/src/internal/routes/providers/propAmm.ts +640 -0
- package/src/internal/routes/providers/relay.test.ts +1299 -18
- package/src/internal/routes/providers/relay.ts +424 -39
- package/src/internal/routes/providers/rhino.ts +14 -1
- package/src/internal/routes/providers/squid.ts +21 -0
- package/src/internal/routes/providers/stargate.test.ts +105 -1
- package/src/internal/routes/providers/stargate.ts +22 -9
- package/src/internal/routes/providers/symbiosis.ts +13 -47
- package/src/providers/index.test.ts +2 -0
- package/src/providers/index.ts +18 -0
- package/dist/admin/Access.d.ts +0 -39
- package/dist/admin/Access.d.ts.map +0 -1
- package/dist/admin/Access.js +0 -73
- package/dist/admin/Access.js.map +0 -1
- package/src/admin/Access.test.ts +0 -130
- package/src/admin/Access.ts +0 -85
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import * as z from 'zod/mini';
|
|
2
|
+
import type * as Store from './Store.js';
|
|
3
|
+
/** Lifetime of a pending CLI authorization before the CLI must restart sign-in. */
|
|
4
|
+
export declare const authorizationTtl: number;
|
|
5
|
+
/** Seconds a CLI waits between token polls. */
|
|
6
|
+
export declare const pollInterval = 5;
|
|
7
|
+
/** Default lifetime of a CLI session. */
|
|
8
|
+
export declare const sessionTtl: number;
|
|
9
|
+
/** API scopes selected by default when approving a CLI sign-in. */
|
|
10
|
+
export declare const defaultScopes: string[];
|
|
11
|
+
/** Storage schemas for pending authorizations and minted sessions. */
|
|
12
|
+
export declare namespace schema {
|
|
13
|
+
/** Client details the CLI reports so the approver can recognize the request. */
|
|
14
|
+
const Client: z.ZodMiniObject<{
|
|
15
|
+
device: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
16
|
+
name: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
17
|
+
}, z.core.$strip>;
|
|
18
|
+
/** A PKCE S256 code challenge: base64url SHA-256, unpadded. */
|
|
19
|
+
const CodeChallenge: z.ZodMiniString<string>;
|
|
20
|
+
/** A PKCE code verifier (RFC 7636 section 4.1). */
|
|
21
|
+
const CodeVerifier: z.ZodMiniString<string>;
|
|
22
|
+
/** A pending, approved, or denied CLI sign-in request. */
|
|
23
|
+
const Authorization: z.ZodMiniObject<{
|
|
24
|
+
approvedAt: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
25
|
+
client: z.ZodMiniObject<{
|
|
26
|
+
device: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
27
|
+
name: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
28
|
+
}, z.core.$strip>;
|
|
29
|
+
code: z.ZodMiniString<string>;
|
|
30
|
+
codeChallenge: z.ZodMiniString<string>;
|
|
31
|
+
createdAt: z.ZodMiniString<string>;
|
|
32
|
+
expiresAt: z.ZodMiniString<string>;
|
|
33
|
+
ip: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
34
|
+
scopes: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
|
|
35
|
+
status: z.ZodMiniEnum<{
|
|
36
|
+
approved: "approved";
|
|
37
|
+
denied: "denied";
|
|
38
|
+
pending: "pending";
|
|
39
|
+
}>;
|
|
40
|
+
userId: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
41
|
+
}, z.core.$strip>;
|
|
42
|
+
/** A minted CLI session, keyed by its token hash. */
|
|
43
|
+
const Session: z.ZodMiniObject<{
|
|
44
|
+
client: z.ZodMiniObject<{
|
|
45
|
+
device: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
46
|
+
name: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
47
|
+
}, z.core.$strip>;
|
|
48
|
+
createdAt: z.ZodMiniString<string>;
|
|
49
|
+
expiresAt: z.ZodMiniString<string>;
|
|
50
|
+
id: z.ZodMiniString<string>;
|
|
51
|
+
scopes: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniString<string>>>;
|
|
52
|
+
userId: z.ZodMiniString<string>;
|
|
53
|
+
}, z.core.$strip>;
|
|
54
|
+
}
|
|
55
|
+
/** Client details reported by the CLI. */
|
|
56
|
+
export type Client = z.output<typeof schema.Client>;
|
|
57
|
+
/** A stored CLI sign-in request. */
|
|
58
|
+
export type Authorization = z.output<typeof schema.Authorization>;
|
|
59
|
+
/** A stored CLI session. */
|
|
60
|
+
export type Session = z.output<typeof schema.Session>;
|
|
61
|
+
/** Generates a human-typeable authorization code (8 consonants, stored without a separator). */
|
|
62
|
+
export declare function generateCode(): string;
|
|
63
|
+
/** Normalizes user- or URL-supplied code input (case, dashes, spaces), or `undefined` when malformed. */
|
|
64
|
+
export declare function normalizeCode(value: string): string | undefined;
|
|
65
|
+
/** Formats a stored code for display (`BCDF-GHJK`). */
|
|
66
|
+
export declare function formatCode(code: string): string;
|
|
67
|
+
/** Derives the PKCE S256 challenge for a code verifier. */
|
|
68
|
+
export declare function challengeFrom(verifier: string): string;
|
|
69
|
+
/** Generates a CLI session token (`tempo:cli:` + 64 lowercase hex chars). */
|
|
70
|
+
export declare function generateToken(): string;
|
|
71
|
+
/** Whether a credential is a CLI session token rather than an API key. */
|
|
72
|
+
export declare function isToken(value: string): boolean;
|
|
73
|
+
/** Masks CLI session tokens embedded in text so they never reach logs. */
|
|
74
|
+
export declare function redact(text: string): string;
|
|
75
|
+
/** Stores a new pending authorization for a CLI that holds the matching code verifier. */
|
|
76
|
+
export declare function authorize(store: Store.State, options: authorize.Options): Promise<{
|
|
77
|
+
approvedAt?: string | undefined;
|
|
78
|
+
client: {
|
|
79
|
+
device?: string | undefined;
|
|
80
|
+
name?: string | undefined;
|
|
81
|
+
};
|
|
82
|
+
code: string;
|
|
83
|
+
codeChallenge: string;
|
|
84
|
+
createdAt: string;
|
|
85
|
+
expiresAt: string;
|
|
86
|
+
ip?: string | undefined;
|
|
87
|
+
scopes?: string[] | undefined;
|
|
88
|
+
status: "approved" | "denied" | "pending";
|
|
89
|
+
userId?: string | undefined;
|
|
90
|
+
}>;
|
|
91
|
+
export declare namespace authorize {
|
|
92
|
+
/** Options for {@link authorize}. */
|
|
93
|
+
type Options = {
|
|
94
|
+
/** Client details shown to the approver. */
|
|
95
|
+
client: Client;
|
|
96
|
+
/** PKCE S256 challenge derived from the CLI's code verifier. */
|
|
97
|
+
codeChallenge: string;
|
|
98
|
+
/** Caller IP address shown to the approver, when known. */
|
|
99
|
+
ip?: string | undefined;
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/** Reads an unexpired authorization by its normalized code. */
|
|
103
|
+
export declare function getAuthorization(store: Store.State, code: string): Promise<{
|
|
104
|
+
approvedAt?: string | undefined;
|
|
105
|
+
client: {
|
|
106
|
+
device?: string | undefined;
|
|
107
|
+
name?: string | undefined;
|
|
108
|
+
};
|
|
109
|
+
code: string;
|
|
110
|
+
codeChallenge: string;
|
|
111
|
+
createdAt: string;
|
|
112
|
+
expiresAt: string;
|
|
113
|
+
ip?: string | undefined;
|
|
114
|
+
scopes?: string[] | undefined;
|
|
115
|
+
status: "approved" | "denied" | "pending";
|
|
116
|
+
userId?: string | undefined;
|
|
117
|
+
} | undefined>;
|
|
118
|
+
/** Approves a pending authorization for a user; approving it again as the same user is a no-op. */
|
|
119
|
+
export declare function approve(store: Store.State, options: approve.Options): Promise<{
|
|
120
|
+
readonly status: 'not_found';
|
|
121
|
+
readonly authorization?: never;
|
|
122
|
+
} | {
|
|
123
|
+
readonly authorization: {
|
|
124
|
+
approvedAt?: string | undefined;
|
|
125
|
+
client: {
|
|
126
|
+
device?: string | undefined;
|
|
127
|
+
name?: string | undefined;
|
|
128
|
+
};
|
|
129
|
+
code: string;
|
|
130
|
+
codeChallenge: string;
|
|
131
|
+
createdAt: string;
|
|
132
|
+
expiresAt: string;
|
|
133
|
+
ip?: string | undefined;
|
|
134
|
+
scopes?: string[] | undefined;
|
|
135
|
+
status: "approved" | "denied" | "pending";
|
|
136
|
+
userId?: string | undefined;
|
|
137
|
+
};
|
|
138
|
+
readonly status: 'approved';
|
|
139
|
+
} | {
|
|
140
|
+
readonly authorization?: never;
|
|
141
|
+
readonly status: 'conflict';
|
|
142
|
+
}>;
|
|
143
|
+
export declare namespace approve {
|
|
144
|
+
/** Options for {@link approve}. */
|
|
145
|
+
type Options = {
|
|
146
|
+
/** Normalized authorization code. */
|
|
147
|
+
code: string;
|
|
148
|
+
/** API scopes approved for this device. Defaults to {@link defaultScopes}. */
|
|
149
|
+
scopes?: readonly string[] | undefined;
|
|
150
|
+
/** User the CLI session will act as. */
|
|
151
|
+
userId: string;
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
/** Denies a pending authorization so the waiting CLI stops polling. */
|
|
155
|
+
export declare function deny(store: Store.State, code: string): Promise<{
|
|
156
|
+
readonly status: 'not_found';
|
|
157
|
+
} | {
|
|
158
|
+
readonly status: 'denied';
|
|
159
|
+
} | {
|
|
160
|
+
readonly status: 'conflict';
|
|
161
|
+
}>;
|
|
162
|
+
/**
|
|
163
|
+
* Exchanges an authorization for a CLI session once approved. Returns `undefined`
|
|
164
|
+
* when the code is unknown, expired, or the verifier does not match, so callers
|
|
165
|
+
* cannot probe for live codes.
|
|
166
|
+
*/
|
|
167
|
+
export declare function redeem(store: Store.State, options: redeem.Options): Promise<{
|
|
168
|
+
readonly status: 'pending';
|
|
169
|
+
readonly session?: never;
|
|
170
|
+
readonly token?: never;
|
|
171
|
+
} | {
|
|
172
|
+
readonly status: 'denied';
|
|
173
|
+
readonly session?: never;
|
|
174
|
+
readonly token?: never;
|
|
175
|
+
} | {
|
|
176
|
+
readonly session: {
|
|
177
|
+
client: {
|
|
178
|
+
device?: string | undefined;
|
|
179
|
+
name?: string | undefined;
|
|
180
|
+
};
|
|
181
|
+
createdAt: string;
|
|
182
|
+
expiresAt: string;
|
|
183
|
+
id: string;
|
|
184
|
+
scopes?: string[] | undefined;
|
|
185
|
+
userId: string;
|
|
186
|
+
};
|
|
187
|
+
readonly status: 'approved';
|
|
188
|
+
readonly token: string;
|
|
189
|
+
} | undefined>;
|
|
190
|
+
export declare namespace redeem {
|
|
191
|
+
/** Options for {@link redeem}. */
|
|
192
|
+
type Options = {
|
|
193
|
+
/** Normalized authorization code. */
|
|
194
|
+
code: string;
|
|
195
|
+
/** PKCE code verifier whose S256 challenge was stored at authorization. */
|
|
196
|
+
codeVerifier: string;
|
|
197
|
+
/** Session lifetime in milliseconds. Defaults to {@link sessionTtl}. */
|
|
198
|
+
ttl?: number | undefined;
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
/** Mints a CLI session for a user, returning the plaintext token once. */
|
|
202
|
+
export declare function mint(store: Store.State, options: mint.Options): Promise<{
|
|
203
|
+
session: {
|
|
204
|
+
client: {
|
|
205
|
+
device?: string | undefined;
|
|
206
|
+
name?: string | undefined;
|
|
207
|
+
};
|
|
208
|
+
createdAt: string;
|
|
209
|
+
expiresAt: string;
|
|
210
|
+
id: string;
|
|
211
|
+
scopes?: string[] | undefined;
|
|
212
|
+
userId: string;
|
|
213
|
+
};
|
|
214
|
+
token: string;
|
|
215
|
+
}>;
|
|
216
|
+
export declare namespace mint {
|
|
217
|
+
/** Options for {@link mint}. */
|
|
218
|
+
type Options = {
|
|
219
|
+
/** Client details recorded on the session. */
|
|
220
|
+
client: Client;
|
|
221
|
+
/** API scopes approved for this device; absent on legacy sessions. */
|
|
222
|
+
scopes?: readonly string[] | undefined;
|
|
223
|
+
/** Session lifetime in milliseconds. Defaults to {@link sessionTtl}. */
|
|
224
|
+
ttl?: number | undefined;
|
|
225
|
+
/** User the session acts as. */
|
|
226
|
+
userId: string;
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
/** Resolves an unexpired CLI session by its plaintext token. */
|
|
230
|
+
export declare function resolve(store: Store.State, token: string): Promise<{
|
|
231
|
+
client: {
|
|
232
|
+
device?: string | undefined;
|
|
233
|
+
name?: string | undefined;
|
|
234
|
+
};
|
|
235
|
+
createdAt: string;
|
|
236
|
+
expiresAt: string;
|
|
237
|
+
id: string;
|
|
238
|
+
scopes?: string[] | undefined;
|
|
239
|
+
userId: string;
|
|
240
|
+
} | undefined>;
|
|
241
|
+
/** Revokes a CLI session by its plaintext token. */
|
|
242
|
+
export declare function revoke(store: Store.State, token: string): Promise<void>;
|
|
243
|
+
//# sourceMappingURL=CliAuth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CliAuth.d.ts","sourceRoot":"","sources":["../../src/internal/CliAuth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { Base64, Bytes, Hash, Hex } from 'ox';
|
|
2
|
+
import * as z from 'zod/mini';
|
|
3
|
+
import * as Id from './Id.js';
|
|
4
|
+
import * as Ttl from './Ttl.js';
|
|
5
|
+
/** Lifetime of a pending CLI authorization before the CLI must restart sign-in. */
|
|
6
|
+
export const authorizationTtl = Ttl.minutes(10);
|
|
7
|
+
/** Seconds a CLI waits between token polls. */
|
|
8
|
+
export const pollInterval = 5;
|
|
9
|
+
/** Default lifetime of a CLI session. */
|
|
10
|
+
export const sessionTtl = Ttl.days(30);
|
|
11
|
+
/** API scopes selected by default when approving a CLI sign-in. */
|
|
12
|
+
export const defaultScopes = ['data:read', 'routes:read', 'routes:write', 'rpc-relay:read'];
|
|
13
|
+
// Consonants only: codes never spell words and never mix up 0/O or 1/I.
|
|
14
|
+
const codeAlphabet = 'BCDFGHJKLMNPQRSTVWXZ';
|
|
15
|
+
const codeLength = 8;
|
|
16
|
+
const tokenPrefix = 'tempo:cli:';
|
|
17
|
+
/** Storage schemas for pending authorizations and minted sessions. */
|
|
18
|
+
export var schema;
|
|
19
|
+
(function (schema) {
|
|
20
|
+
/** Client details the CLI reports so the approver can recognize the request. */
|
|
21
|
+
schema.Client = z.object({
|
|
22
|
+
device: z.optional(z.string().check(z.minLength(1), z.maxLength(100))),
|
|
23
|
+
name: z.optional(z.string().check(z.minLength(1), z.maxLength(100))),
|
|
24
|
+
});
|
|
25
|
+
/** A PKCE S256 code challenge: base64url SHA-256, unpadded. */
|
|
26
|
+
schema.CodeChallenge = z.string().check(z.regex(/^[A-Za-z0-9_-]{43}$/));
|
|
27
|
+
/** A PKCE code verifier (RFC 7636 section 4.1). */
|
|
28
|
+
schema.CodeVerifier = z.string().check(z.regex(/^[A-Za-z0-9._~-]{43,128}$/));
|
|
29
|
+
/** A pending, approved, or denied CLI sign-in request. */
|
|
30
|
+
schema.Authorization = z.object({
|
|
31
|
+
approvedAt: z.optional(z.string()),
|
|
32
|
+
client: schema.Client,
|
|
33
|
+
code: z.string(),
|
|
34
|
+
codeChallenge: schema.CodeChallenge,
|
|
35
|
+
createdAt: z.string(),
|
|
36
|
+
expiresAt: z.string(),
|
|
37
|
+
ip: z.optional(z.string()),
|
|
38
|
+
scopes: z.optional(z.array(z.string())),
|
|
39
|
+
status: z.enum(['approved', 'denied', 'pending']),
|
|
40
|
+
userId: z.optional(z.string()),
|
|
41
|
+
});
|
|
42
|
+
/** A minted CLI session, keyed by its token hash. */
|
|
43
|
+
schema.Session = z.object({
|
|
44
|
+
client: schema.Client,
|
|
45
|
+
createdAt: z.string(),
|
|
46
|
+
expiresAt: z.string(),
|
|
47
|
+
id: z.string(),
|
|
48
|
+
scopes: z.optional(z.array(z.string())),
|
|
49
|
+
userId: z.string(),
|
|
50
|
+
});
|
|
51
|
+
})(schema || (schema = {}));
|
|
52
|
+
/** Generates a human-typeable authorization code (8 consonants, stored without a separator). */
|
|
53
|
+
export function generateCode() {
|
|
54
|
+
let code = '';
|
|
55
|
+
while (code.length < codeLength)
|
|
56
|
+
for (const byte of Bytes.random(codeLength)) {
|
|
57
|
+
// Rejection sampling keeps every letter equally likely (240 = 12 * 20).
|
|
58
|
+
if (byte >= 240 || code.length === codeLength)
|
|
59
|
+
continue;
|
|
60
|
+
code += codeAlphabet[byte % codeAlphabet.length];
|
|
61
|
+
}
|
|
62
|
+
return code;
|
|
63
|
+
}
|
|
64
|
+
/** Normalizes user- or URL-supplied code input (case, dashes, spaces), or `undefined` when malformed. */
|
|
65
|
+
export function normalizeCode(value) {
|
|
66
|
+
const code = value.toUpperCase().replace(/[\s-]/g, '');
|
|
67
|
+
if (code.length !== codeLength)
|
|
68
|
+
return undefined;
|
|
69
|
+
for (const character of code)
|
|
70
|
+
if (!codeAlphabet.includes(character))
|
|
71
|
+
return undefined;
|
|
72
|
+
return code;
|
|
73
|
+
}
|
|
74
|
+
/** Formats a stored code for display (`BCDF-GHJK`). */
|
|
75
|
+
export function formatCode(code) {
|
|
76
|
+
return `${code.slice(0, 4)}-${code.slice(4)}`;
|
|
77
|
+
}
|
|
78
|
+
/** Derives the PKCE S256 challenge for a code verifier. */
|
|
79
|
+
export function challengeFrom(verifier) {
|
|
80
|
+
return Base64.fromBytes(Hash.sha256(Bytes.fromString(verifier)), { pad: false, url: true });
|
|
81
|
+
}
|
|
82
|
+
/** Generates a CLI session token (`tempo:cli:` + 64 lowercase hex chars). */
|
|
83
|
+
export function generateToken() {
|
|
84
|
+
return `${tokenPrefix}${Hex.random(32).slice(2)}`;
|
|
85
|
+
}
|
|
86
|
+
/** Whether a credential is a CLI session token rather than an API key. */
|
|
87
|
+
export function isToken(value) {
|
|
88
|
+
return value.startsWith(tokenPrefix);
|
|
89
|
+
}
|
|
90
|
+
/** Masks CLI session tokens embedded in text so they never reach logs. */
|
|
91
|
+
export function redact(text) {
|
|
92
|
+
return text.replace(/tempo:cli:[a-f0-9]{64}/g, `${tokenPrefix}…`);
|
|
93
|
+
}
|
|
94
|
+
/** Stores a new pending authorization for a CLI that holds the matching code verifier. */
|
|
95
|
+
export async function authorize(store, options) {
|
|
96
|
+
const { client, codeChallenge, ip } = options;
|
|
97
|
+
const now = Date.now();
|
|
98
|
+
// A collision in a 20^8 space is vanishingly rare; skip occupied codes instead of overwriting them.
|
|
99
|
+
const code = await (async () => {
|
|
100
|
+
for (let attempt = 0; attempt < 3; attempt++) {
|
|
101
|
+
const candidate = generateCode();
|
|
102
|
+
if ((await store.get(authorizationKey(candidate))) === null)
|
|
103
|
+
return candidate;
|
|
104
|
+
}
|
|
105
|
+
throw new Error('Could not allocate a CLI authorization code');
|
|
106
|
+
})();
|
|
107
|
+
const authorization = {
|
|
108
|
+
client,
|
|
109
|
+
code,
|
|
110
|
+
codeChallenge,
|
|
111
|
+
createdAt: new Date(now).toISOString(),
|
|
112
|
+
expiresAt: new Date(now + authorizationTtl).toISOString(),
|
|
113
|
+
...(ip ? { ip } : {}),
|
|
114
|
+
status: 'pending',
|
|
115
|
+
};
|
|
116
|
+
await store.put(authorizationKey(code), JSON.stringify(authorization), { ttl: authorizationTtl });
|
|
117
|
+
return authorization;
|
|
118
|
+
}
|
|
119
|
+
/** Reads an unexpired authorization by its normalized code. */
|
|
120
|
+
export async function getAuthorization(store, code) {
|
|
121
|
+
const value = await store.get(authorizationKey(code));
|
|
122
|
+
if (value === null)
|
|
123
|
+
return undefined;
|
|
124
|
+
const authorization = schema.Authorization.parse(JSON.parse(value));
|
|
125
|
+
// KV expiry is eventual; the stored deadline is authoritative.
|
|
126
|
+
if (Date.parse(authorization.expiresAt) <= Date.now())
|
|
127
|
+
return undefined;
|
|
128
|
+
return authorization;
|
|
129
|
+
}
|
|
130
|
+
/** Approves a pending authorization for a user; approving it again as the same user is a no-op. */
|
|
131
|
+
export async function approve(store, options) {
|
|
132
|
+
const { code, scopes = defaultScopes, userId } = options;
|
|
133
|
+
const authorization = await getAuthorization(store, code);
|
|
134
|
+
if (!authorization)
|
|
135
|
+
return { status: 'not_found' };
|
|
136
|
+
if (authorization.status === 'approved' && authorization.userId === userId)
|
|
137
|
+
return { authorization, status: 'approved' };
|
|
138
|
+
if (authorization.status !== 'pending')
|
|
139
|
+
return { status: 'conflict' };
|
|
140
|
+
const approved = {
|
|
141
|
+
...authorization,
|
|
142
|
+
approvedAt: new Date().toISOString(),
|
|
143
|
+
scopes: [...scopes],
|
|
144
|
+
status: 'approved',
|
|
145
|
+
userId,
|
|
146
|
+
};
|
|
147
|
+
await write(store, approved);
|
|
148
|
+
return { authorization: approved, status: 'approved' };
|
|
149
|
+
}
|
|
150
|
+
/** Denies a pending authorization so the waiting CLI stops polling. */
|
|
151
|
+
export async function deny(store, code) {
|
|
152
|
+
const authorization = await getAuthorization(store, code);
|
|
153
|
+
if (!authorization)
|
|
154
|
+
return { status: 'not_found' };
|
|
155
|
+
if (authorization.status === 'denied')
|
|
156
|
+
return { status: 'denied' };
|
|
157
|
+
if (authorization.status !== 'pending')
|
|
158
|
+
return { status: 'conflict' };
|
|
159
|
+
await write(store, { ...authorization, status: 'denied' });
|
|
160
|
+
return { status: 'denied' };
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Exchanges an authorization for a CLI session once approved. Returns `undefined`
|
|
164
|
+
* when the code is unknown, expired, or the verifier does not match, so callers
|
|
165
|
+
* cannot probe for live codes.
|
|
166
|
+
*/
|
|
167
|
+
export async function redeem(store, options) {
|
|
168
|
+
const { code, codeVerifier, ttl = sessionTtl } = options;
|
|
169
|
+
const authorization = await getAuthorization(store, code);
|
|
170
|
+
if (!authorization)
|
|
171
|
+
return undefined;
|
|
172
|
+
if (!timingSafeEqual(challengeFrom(codeVerifier), authorization.codeChallenge))
|
|
173
|
+
return undefined;
|
|
174
|
+
if (authorization.status === 'pending')
|
|
175
|
+
return { status: 'pending' };
|
|
176
|
+
// Settled authorizations are single use; KV lacks compare-and-delete, so a
|
|
177
|
+
// concurrent redeem by the same verifier holder may mint a second session.
|
|
178
|
+
const consumed = await store.delete(authorizationKey(code)).then(() => true, () => false);
|
|
179
|
+
// KV rejects a second write to a key within a second (a poll right after the decision); the next poll retries.
|
|
180
|
+
if (!consumed)
|
|
181
|
+
return { status: 'pending' };
|
|
182
|
+
if (authorization.status === 'denied' || !authorization.userId)
|
|
183
|
+
return { status: 'denied' };
|
|
184
|
+
const { session, token } = await mint(store, {
|
|
185
|
+
client: authorization.client,
|
|
186
|
+
scopes: authorization.scopes ?? [],
|
|
187
|
+
ttl,
|
|
188
|
+
userId: authorization.userId,
|
|
189
|
+
});
|
|
190
|
+
return { session, status: 'approved', token };
|
|
191
|
+
}
|
|
192
|
+
/** Mints a CLI session for a user, returning the plaintext token once. */
|
|
193
|
+
export async function mint(store, options) {
|
|
194
|
+
const { client, scopes, ttl = sessionTtl, userId } = options;
|
|
195
|
+
const now = Date.now();
|
|
196
|
+
const token = generateToken();
|
|
197
|
+
const session = {
|
|
198
|
+
client,
|
|
199
|
+
createdAt: new Date(now).toISOString(),
|
|
200
|
+
expiresAt: new Date(now + ttl).toISOString(),
|
|
201
|
+
id: Id.generate('cli'),
|
|
202
|
+
...(scopes ? { scopes: [...scopes] } : {}),
|
|
203
|
+
userId,
|
|
204
|
+
};
|
|
205
|
+
await store.put(sessionKey(token), JSON.stringify(session), { ttl });
|
|
206
|
+
return { session, token };
|
|
207
|
+
}
|
|
208
|
+
/** Resolves an unexpired CLI session by its plaintext token. */
|
|
209
|
+
export async function resolve(store, token) {
|
|
210
|
+
if (!isToken(token))
|
|
211
|
+
return undefined;
|
|
212
|
+
const value = await store.get(sessionKey(token));
|
|
213
|
+
if (value === null)
|
|
214
|
+
return undefined;
|
|
215
|
+
const session = schema.Session.parse(JSON.parse(value));
|
|
216
|
+
if (Date.parse(session.expiresAt) <= Date.now())
|
|
217
|
+
return undefined;
|
|
218
|
+
return session;
|
|
219
|
+
}
|
|
220
|
+
/** Revokes a CLI session by its plaintext token. */
|
|
221
|
+
export async function revoke(store, token) {
|
|
222
|
+
if (!isToken(token))
|
|
223
|
+
return;
|
|
224
|
+
await store.delete(sessionKey(token));
|
|
225
|
+
}
|
|
226
|
+
function authorizationKey(code) {
|
|
227
|
+
return `cli:authorization:${code}`;
|
|
228
|
+
}
|
|
229
|
+
function sessionKey(token) {
|
|
230
|
+
// Tokens are stored by hash so a KV read never exposes a usable credential.
|
|
231
|
+
return `cli:session:${Hash.sha256(Hex.fromString(token)).slice(2)}`;
|
|
232
|
+
}
|
|
233
|
+
// Rewrites an authorization with its remaining lifetime. Cloudflare KV rejects
|
|
234
|
+
// TTLs under a minute, so storage may outlive `expiresAt`, which reads enforce.
|
|
235
|
+
async function write(store, authorization) {
|
|
236
|
+
const ttl = Date.parse(authorization.expiresAt) - Date.now();
|
|
237
|
+
await store.put(authorizationKey(authorization.code), JSON.stringify(authorization), {
|
|
238
|
+
ttl: Math.max(ttl, Ttl.minutes(1)),
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
function timingSafeEqual(left, right) {
|
|
242
|
+
if (left.length !== right.length)
|
|
243
|
+
return false;
|
|
244
|
+
let difference = 0;
|
|
245
|
+
for (let index = 0; index < left.length; index++)
|
|
246
|
+
difference |= left.charCodeAt(index) ^ right.charCodeAt(index);
|
|
247
|
+
return difference === 0;
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=CliAuth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CliAuth.js","sourceRoot":"","sources":["../../src/internal/CliAuth.ts"],"names":[],"mappings":"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"}
|
|
@@ -53,7 +53,7 @@ export declare namespace timestamps {
|
|
|
53
53
|
to: string;
|
|
54
54
|
};
|
|
55
55
|
}
|
|
56
|
-
/** Returns whether
|
|
56
|
+
/** Returns whether contract execution or missing historical state makes a quote unavailable. */
|
|
57
57
|
export declare function isUnavailable(error: unknown): boolean;
|
|
58
58
|
/** Validates that indexed block timestamps cover a requested observation. */
|
|
59
59
|
export declare function parseCoverage(options: parseCoverage.Options): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EarnSharePrices.d.ts","sourceRoot":"","sources":["../../src/internal/EarnSharePrices.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"EarnSharePrices.d.ts","sourceRoot":"","sources":["../../src/internal/EarnSharePrices.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAKb,MAAM,MAAM,CAAA;AAEb,OAAO,KAAK,KAAK,IAAI,MAAM,WAAW,CAAA;AAGtC,OAAO,KAAK,KAAK,IAAI,MAAM,WAAW,CAAA;AAEtC,+DAA+D;AAC/D,eAAO,MAAM,QAAQ,EAAG,KAAc,CAAA;AAEtC,2EAA2E;AAC3E,eAAO,MAAM,SAAS,KAAK,CAAA;AAO3B,8DAA8D;AAC9D,wBAAsB,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC,CAuBjF;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,0DAA0D;IAC1D,KAAK,OAAO,GAAG;QACb,uCAAuC;QACvC,OAAO,EAAE,MAAM,CAAA;QACf,mEAAmE;QACnE,IAAI,EAAE,MAAM,CAAA;QACZ,gEAAgE;QAChE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAA;QACzB,mEAAmE;QACnE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAA;QACvB,oDAAoD;QACpD,aAAa,EAAE,MAAM,CAAA;QACrB,8EAA8E;QAC9E,EAAE,EAAE,MAAM,CAAA;QACV,mCAAmC;QACnC,KAAK,EAAE,OAAO,CAAA;KACf,CAAA;CACF;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,CAAC,OAAO,GAAG,MAAM,CAI1E;AAED,MAAM,CAAC,OAAO,WAAW,gBAAgB,CAAC;IACxC,2DAA2D;IAC3D,KAAK,OAAO,GAAG;QACb,oDAAoD;QACpD,aAAa,EAAE,MAAM,CAAA;KACtB,CAAA;CACF;AAED,8CAA8C;AAC9C,MAAM,MAAM,KAAK,GAAG;IAClB,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAA;IACd,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,GAAG,SAAS,MAAM,EAAE,CAMzE;AAED,MAAM,CAAC,OAAO,WAAW,UAAU,CAAC;IAClC,2CAA2C;IAC3C,KAAK,OAAO,GAAG;QACb,mEAAmE;QACnE,IAAI,EAAE,MAAM,CAAA;QACZ,8EAA8E;QAC9E,EAAE,EAAE,MAAM,CAAA;KACX,CAAA;CACF;AAED,gGAAgG;AAChG,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAerD;AAuED,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,GAAG,IAAI,CAMlE;AAED,MAAM,CAAC,OAAO,WAAW,aAAa,CAAC;IACrC,8DAA8D;IAC9D,KAAK,OAAO,GAAG;QACb,yCAAyC;QACzC,GAAG,EAAE,GAAG,GAAG,SAAS,CAAA;QACpB,uCAAuC;QACvC,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF;AASD,KAAK,KAAK,GAAG;IACX,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAA;IACd,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAA;IACnB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,0DAA0D;AAC1D,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,WAsBvD;AAED,MAAM,CAAC,OAAO,WAAW,WAAW,CAAC;IACnC,qDAAqD;IACrD,KAAK,OAAO,GAAG;QACb,gDAAgD;QAChD,IAAI,EAAE,SAAS,GAAG,EAAE,CAAA;QACpB,wEAAwE;QACxE,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;KAC9B,CAAA;CACF;AAED,KAAK,GAAG,GAAG;IACT,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,uEAAuE;AACvE,qBAAa,yBAA0B,SAAQ,KAAK;IACzC,IAAI,SAA8C;IAE3D,YAAY,SAAS,EAAE,MAAM,EAE5B;CACF;AAED,uEAAuE;AACvE,qBAAa,oBAAqB,SAAQ,KAAK;IACpC,IAAI,SAAyC;IAEtD,YAAY,SAAS,EAAE,MAAM,EAE5B;CACF;AAED,sEAAsE;AACtE,qBAAa,sBAAuB,SAAQ,KAAK;IACtC,IAAI,SAA2C;IAExD,YAAY,OAAO,EAAE,MAAM,EAE1B;CACF;AAED,8EAA8E;AAC9E,qBAAa,gBAAiB,SAAQ,KAAK;IAChC,IAAI,SAAqC;IAElD,YAAY,KAAK,EAAE,OAAO,EAEzB;CACF;AAED,wEAAwE;AACxE,qBAAa,6BAA8B,SAAQ,KAAK;IAC7C,IAAI,SAAkD;IAE/D,YAAY,QAAQ,EAAE,MAAM,EAE3B;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ContractFunctionExecutionError, ContractFunctionRevertedError, ContractFunctionZeroDataError, } from 'viem';
|
|
1
|
+
import { ContractFunctionExecutionError, ContractFunctionRevertedError, ContractFunctionZeroDataError, RpcRequestError, } from 'viem';
|
|
2
2
|
import * as Ttl from './Ttl.js';
|
|
3
3
|
import * as Value from './Value.js';
|
|
4
4
|
/** Only interval supported by historical Earn share prices. */
|
|
@@ -40,12 +40,16 @@ export function timestamps(options) {
|
|
|
40
40
|
const to = Date.parse(options.to);
|
|
41
41
|
return Array.from({ length: Math.floor((to - from) / Ttl.days(1)) + 1 }, (_, index) => new Date(from + index * Ttl.days(1)).toISOString());
|
|
42
42
|
}
|
|
43
|
-
/** Returns whether
|
|
43
|
+
/** Returns whether contract execution or missing historical state makes a quote unavailable. */
|
|
44
44
|
export function isUnavailable(error) {
|
|
45
45
|
if (!(error instanceof ContractFunctionExecutionError))
|
|
46
46
|
return false;
|
|
47
47
|
return Boolean(error.walk((cause) => cause instanceof ContractFunctionRevertedError ||
|
|
48
|
-
cause instanceof ContractFunctionZeroDataError
|
|
48
|
+
cause instanceof ContractFunctionZeroDataError ||
|
|
49
|
+
// These RPC codes also cover transient failures; require explicit missing-state evidence.
|
|
50
|
+
(cause instanceof RpcRequestError &&
|
|
51
|
+
(cause.code === -32000 || cause.code === -32001) &&
|
|
52
|
+
/\b(?:historical state|state at block)\b.*\b(?:not available|unavailable|pruned)\b|\bmissing trie node\b|\bno state available for block\b/i.test(cause.details ?? ''))));
|
|
49
53
|
}
|
|
50
54
|
/** Resolves one indexed block at or before every requested observation. */
|
|
51
55
|
async function getBlocks(tidx, options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EarnSharePrices.js","sourceRoot":"","sources":["../../src/internal/EarnSharePrices.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,8BAA8B,EAC9B,6BAA6B,EAC7B,6BAA6B,
|
|
1
|
+
{"version":3,"file":"EarnSharePrices.js","sourceRoot":"","sources":["../../src/internal/EarnSharePrices.ts"],"names":[],"mappings":"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"}
|