tapimo 0.15.1 → 0.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +893 -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 +70 -70
- 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 +529 -76
- 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 +157 -157
- 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 +205 -201
- 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 +357 -357
- 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/blocks.d.ts +125 -125
- 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 +109 -127
- package/dist/apps/data/routes/fee-amm.d.ts.map +1 -1
- package/dist/apps/data/routes/fee-amm.js +83 -54
- package/dist/apps/data/routes/fee-amm.js.map +1 -1
- package/dist/apps/data/routes/indexer.d.ts +43 -43
- package/dist/apps/data/routes/receipts.d.ts +235 -235
- package/dist/apps/data/routes/rpc.d.ts +30 -30
- 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 +77 -77
- package/dist/apps/data/routes/valuation.d.ts +32 -32
- package/dist/apps/data/routes/verified-tokens.d.ts +86 -86
- package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
- package/dist/apps/data/routes/webhooks.js +1 -1
- package/dist/apps/data/routes/webhooks.js.map +1 -1
- package/dist/apps/data/routes/zones.d.ts +31 -31
- package/dist/apps/management/App.d.ts +2909 -2064
- 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 +257 -245
- 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 +138 -138
- package/dist/apps/management/routes/invite-links.d.ts +172 -172
- package/dist/apps/management/routes/members.d.ts +16 -16
- package/dist/apps/management/routes/orgs.d.ts +104 -104
- 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 +125 -125
- package/dist/apps/management/routes/usage.d.ts +8 -8
- package/dist/apps/management/routes/verified-token-requests.d.ts +86 -86
- package/dist/apps/management/routes/webhooks.d.ts +485 -485
- package/dist/apps/mpp/App.d.ts +44 -44
- 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/chains.d.ts +25 -25
- 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 +171 -81
- 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 +532 -480
- 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 +413 -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/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 +57 -6
- package/dist/internal/Auth.d.ts.map +1 -1
- package/dist/internal/Auth.js +182 -78
- 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 +3 -0
- package/dist/internal/routes/providers/relay.d.ts.map +1 -1
- package/dist/internal/routes/providers/relay.js +352 -41
- 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/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/routeTree.gen.ts +21 -0
- 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 +1 -0
- 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 +1 -0
- package/src/admin/ui.generated.ts +258 -202
- 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/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 +134 -2
- package/src/apps/data/routes/fee-amm.ts +122 -60
- package/src/apps/data/routes/receipts.test.ts +21 -18
- package/src/apps/data/routes/rpc.test.ts +2 -2
- 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.test.ts +12 -3
- package/src/apps/data/routes/webhooks.ts +2 -1
- 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/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 +498 -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 +66 -5
- 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/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 +291 -8
- package/src/internal/Auth.ts +227 -96
- 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 +1263 -41
- package/src/internal/routes/providers/relay.ts +423 -38
- 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":"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"}
|
|
@@ -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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"}
|