tapimo 0.7.1 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -7
- package/dist/ApiKey.d.ts +3 -0
- package/dist/ApiKey.d.ts.map +1 -1
- package/dist/ApiKey.js +10 -0
- package/dist/ApiKey.js.map +1 -1
- package/dist/ApiKeys.d.ts +29 -8
- package/dist/ApiKeys.d.ts.map +1 -1
- package/dist/ApiKeys.js +24 -5
- package/dist/ApiKeys.js.map +1 -1
- package/dist/App.d.ts +20680 -15487
- package/dist/App.d.ts.map +1 -1
- package/dist/App.js +250 -129
- package/dist/App.js.map +1 -1
- package/dist/Assets.d.ts +10 -0
- package/dist/Assets.d.ts.map +1 -1
- package/dist/Assets.js +17 -4
- package/dist/Assets.js.map +1 -1
- package/dist/Scope.d.ts +19 -8
- package/dist/Scope.d.ts.map +1 -1
- package/dist/Scope.js +25 -9
- package/dist/Scope.js.map +1 -1
- package/dist/Webhooks.d.ts +1 -1
- package/dist/admin/App.d.ts +667 -76
- package/dist/admin/App.d.ts.map +1 -1
- package/dist/admin/App.js +12 -2
- package/dist/admin/App.js.map +1 -1
- package/dist/admin/apps/api-keys.d.ts +107 -11
- package/dist/admin/apps/api-keys.d.ts.map +1 -1
- package/dist/admin/apps/api-keys.js +145 -32
- package/dist/admin/apps/api-keys.js.map +1 -1
- package/dist/admin/apps/earn-vaults.d.ts +1069 -0
- package/dist/admin/apps/earn-vaults.d.ts.map +1 -0
- package/dist/admin/apps/earn-vaults.js +409 -0
- package/dist/admin/apps/earn-vaults.js.map +1 -0
- package/dist/admin/apps/organizations.d.ts +2 -0
- package/dist/admin/apps/organizations.d.ts.map +1 -1
- package/dist/admin/apps/verified-tokens.d.ts +74 -74
- 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 -43
- package/dist/admin/ui.generated.js.map +1 -1
- package/dist/analytics/Analytics.d.ts +4 -0
- package/dist/analytics/Analytics.d.ts.map +1 -1
- package/dist/analytics/Analytics.js +21 -2
- package/dist/analytics/Analytics.js.map +1 -1
- package/dist/analytics/tables/requestEvents.d.ts +22 -1
- package/dist/analytics/tables/requestEvents.d.ts.map +1 -1
- package/dist/analytics/tables/requestEvents.js +59 -39
- package/dist/analytics/tables/requestEvents.js.map +1 -1
- package/dist/apps/Zones.d.ts +8335 -0
- package/dist/apps/Zones.d.ts.map +1 -0
- package/dist/apps/Zones.js +38 -0
- package/dist/apps/Zones.js.map +1 -0
- package/dist/apps/data/App.d.ts +5666 -3934
- package/dist/apps/data/App.d.ts.map +1 -1
- package/dist/apps/data/App.js +90 -22
- package/dist/apps/data/App.js.map +1 -1
- package/dist/apps/data/FxOracle.d.ts +1 -1
- package/dist/apps/data/FxOracle.d.ts.map +1 -1
- package/dist/apps/data/index.d.ts +0 -1
- package/dist/apps/data/index.d.ts.map +1 -1
- package/dist/apps/data/index.js +0 -1
- package/dist/apps/data/index.js.map +1 -1
- package/dist/apps/data/routes/activities.d.ts +56 -56
- package/dist/apps/data/routes/activities.d.ts.map +1 -1
- package/dist/apps/data/routes/activities.js +130 -65
- package/dist/apps/data/routes/activities.js.map +1 -1
- package/dist/apps/data/routes/addresses.d.ts +65 -65
- package/dist/apps/data/routes/balances.d.ts +14 -14
- package/dist/apps/data/routes/balances.js +5 -5
- package/dist/apps/data/routes/balances.js.map +1 -1
- package/dist/apps/data/routes/blocks.d.ts +39 -39
- package/dist/apps/data/routes/coingecko.d.ts +54 -54
- package/dist/apps/data/routes/coingecko.d.ts.map +1 -1
- package/dist/apps/data/routes/coingecko.js +62 -35
- package/dist/apps/data/routes/coingecko.js.map +1 -1
- package/dist/apps/data/routes/earn.d.ts +2574 -0
- package/dist/apps/data/routes/earn.d.ts.map +1 -0
- package/dist/apps/data/routes/earn.js +1574 -0
- package/dist/apps/data/routes/earn.js.map +1 -0
- package/dist/apps/data/routes/exchanges.d.ts +1626 -719
- package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
- package/dist/apps/data/routes/exchanges.js +656 -193
- package/dist/apps/data/routes/exchanges.js.map +1 -1
- package/dist/apps/data/routes/fee-amm.d.ts +108 -108
- package/dist/apps/data/routes/fee-amm.d.ts.map +1 -1
- package/dist/apps/data/routes/fee-amm.js +59 -8
- package/dist/apps/data/routes/fee-amm.js.map +1 -1
- package/dist/apps/data/routes/indexer.d.ts +35 -35
- package/dist/apps/data/routes/indexer.d.ts.map +1 -1
- package/dist/apps/data/routes/indexer.js +23 -3
- package/dist/apps/data/routes/indexer.js.map +1 -1
- package/dist/apps/data/routes/receipts.d.ts +33 -33
- package/dist/apps/data/routes/receipts.d.ts.map +1 -1
- package/dist/apps/data/routes/receipts.js +11 -11
- package/dist/apps/data/routes/receipts.js.map +1 -1
- package/dist/apps/data/routes/rpc.d.ts +6 -6
- package/dist/apps/data/routes/rpc.d.ts.map +1 -1
- package/dist/apps/data/routes/rpc.js +214 -22
- package/dist/apps/data/routes/rpc.js.map +1 -1
- package/dist/apps/data/routes/tokenlist.d.ts +1 -1
- package/dist/apps/data/routes/tokenlist.d.ts.map +1 -1
- package/dist/apps/data/routes/tokenlist.js +39 -8
- package/dist/apps/data/routes/tokenlist.js.map +1 -1
- package/dist/apps/data/routes/tokens.d.ts +115 -87
- package/dist/apps/data/routes/tokens.d.ts.map +1 -1
- package/dist/apps/data/routes/tokens.js +194 -91
- package/dist/apps/data/routes/tokens.js.map +1 -1
- package/dist/apps/data/routes/transactions.d.ts +54 -54
- package/dist/apps/data/routes/transactions.d.ts.map +1 -1
- package/dist/apps/data/routes/transactions.js +78 -39
- package/dist/apps/data/routes/transactions.js.map +1 -1
- package/dist/apps/data/routes/transfers.d.ts +76 -27
- package/dist/apps/data/routes/transfers.d.ts.map +1 -1
- package/dist/apps/data/routes/transfers.js +165 -67
- package/dist/apps/data/routes/transfers.js.map +1 -1
- package/dist/apps/data/routes/valuation.d.ts +42 -42
- package/dist/apps/data/routes/valuation.js +2 -2
- package/dist/apps/data/routes/valuation.js.map +1 -1
- package/dist/apps/data/routes/verified-tokens.d.ts +36 -36
- package/dist/apps/data/routes/webhooks.d.ts +370 -368
- package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
- package/dist/apps/data/routes/webhooks.js +161 -59
- package/dist/apps/data/routes/webhooks.js.map +1 -1
- package/dist/apps/data/routes/zones.d.ts +281 -0
- package/dist/apps/data/routes/zones.d.ts.map +1 -0
- package/dist/apps/data/routes/zones.js +252 -0
- package/dist/apps/data/routes/zones.js.map +1 -0
- package/dist/apps/docs/reference.js +6 -5
- package/dist/apps/docs/reference.js.map +1 -1
- package/dist/apps/funding/Access.d.ts +16 -0
- package/dist/apps/funding/Access.d.ts.map +1 -0
- package/dist/apps/funding/Access.js +22 -0
- package/dist/apps/funding/Access.js.map +1 -0
- package/dist/apps/funding/App.d.ts +3183 -0
- package/dist/apps/funding/App.d.ts.map +1 -0
- package/dist/apps/funding/App.js +46 -0
- package/dist/apps/funding/App.js.map +1 -0
- package/dist/apps/funding/Inventory.d.ts +5 -0
- package/dist/apps/funding/Inventory.d.ts.map +1 -0
- package/dist/apps/funding/Inventory.js +25 -0
- package/dist/apps/funding/Inventory.js.map +1 -0
- package/dist/apps/funding/ProviderAttempts.d.ts +5 -0
- package/dist/apps/funding/ProviderAttempts.d.ts.map +1 -0
- package/dist/apps/funding/ProviderAttempts.js +24 -0
- package/dist/apps/funding/ProviderAttempts.js.map +1 -0
- package/dist/apps/funding/index.d.ts +2 -0
- package/dist/apps/funding/index.d.ts.map +1 -0
- package/dist/apps/funding/index.js +2 -0
- package/dist/apps/funding/index.js.map +1 -0
- package/dist/apps/funding/routes/chains.d.ts +169 -0
- package/dist/apps/funding/routes/chains.d.ts.map +1 -0
- package/dist/apps/funding/routes/chains.js +80 -0
- package/dist/apps/funding/routes/chains.js.map +1 -0
- package/dist/apps/funding/routes/deposit-addresses.d.ts +2388 -0
- package/dist/apps/funding/routes/deposit-addresses.d.ts.map +1 -0
- package/dist/apps/funding/routes/deposit-addresses.js +860 -0
- package/dist/apps/funding/routes/deposit-addresses.js.map +1 -0
- package/dist/apps/funding/routes/providers.d.ts +91 -0
- package/dist/apps/funding/routes/providers.d.ts.map +1 -0
- package/dist/apps/funding/routes/providers.js +56 -0
- package/dist/apps/funding/routes/providers.js.map +1 -0
- package/dist/apps/{data/routes/funding.d.ts → funding/routes/quotes.d.ts} +26 -396
- package/dist/apps/funding/routes/quotes.d.ts.map +1 -0
- package/dist/apps/funding/routes/quotes.js +188 -0
- package/dist/apps/funding/routes/quotes.js.map +1 -0
- package/dist/apps/funding/routes/transfers.d.ts +1999 -0
- package/dist/apps/funding/routes/transfers.d.ts.map +1 -0
- package/dist/apps/funding/routes/transfers.js +614 -0
- package/dist/apps/funding/routes/transfers.js.map +1 -0
- package/dist/apps/index.d.ts +3 -1
- package/dist/apps/index.d.ts.map +1 -1
- package/dist/apps/index.js +3 -1
- package/dist/apps/index.js.map +1 -1
- package/dist/apps/management/App.d.ts +839 -574
- package/dist/apps/management/App.d.ts.map +1 -1
- package/dist/apps/management/Billing.d.ts +8 -0
- package/dist/apps/management/Billing.d.ts.map +1 -1
- package/dist/apps/management/Billing.js +12 -0
- package/dist/apps/management/Billing.js.map +1 -1
- package/dist/apps/management/Error.d.ts +12 -0
- package/dist/apps/management/Error.d.ts.map +1 -0
- package/dist/apps/management/Error.js +10 -0
- package/dist/apps/management/Error.js.map +1 -0
- package/dist/apps/management/routes/api-keys.d.ts +296 -19
- package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
- package/dist/apps/management/routes/api-keys.js +77 -9
- package/dist/apps/management/routes/api-keys.js.map +1 -1
- package/dist/apps/management/routes/billing.d.ts +119 -119
- package/dist/apps/management/routes/faucet.d.ts +35 -35
- package/dist/apps/management/routes/invitations.d.ts +17 -17
- package/dist/apps/management/routes/invitations.d.ts.map +1 -1
- package/dist/apps/management/routes/invitations.js +4 -10
- package/dist/apps/management/routes/invitations.js.map +1 -1
- package/dist/apps/management/routes/invite-links.d.ts +38 -38
- package/dist/apps/management/routes/me.d.ts +6 -6
- package/dist/apps/management/routes/members.d.ts +69 -69
- package/dist/apps/management/routes/orgs.d.ts +16 -16
- package/dist/apps/management/routes/orgs.d.ts.map +1 -1
- package/dist/apps/management/routes/orgs.js +2 -8
- package/dist/apps/management/routes/orgs.js.map +1 -1
- package/dist/apps/management/routes/projects.d.ts +19 -19
- package/dist/apps/management/routes/scopes.d.ts +1 -1
- package/dist/apps/management/routes/scopes.js +2 -2
- package/dist/apps/management/routes/scopes.js.map +1 -1
- package/dist/apps/management/routes/usage.d.ts +72 -72
- package/dist/apps/management/routes/verified-token-requests.d.ts +18 -18
- package/dist/apps/management/routes/webhooks.d.ts +122 -122
- package/dist/apps/management/routes/webhooks.d.ts.map +1 -1
- package/dist/apps/management/routes/webhooks.js +15 -3
- package/dist/apps/management/routes/webhooks.js.map +1 -1
- package/dist/apps/mcp.d.ts +2 -3
- package/dist/apps/mcp.d.ts.map +1 -1
- package/dist/apps/mcp.js +16 -14
- package/dist/apps/mcp.js.map +1 -1
- package/dist/apps/metadata.d.ts +4 -0
- package/dist/apps/metadata.d.ts.map +1 -1
- package/dist/apps/metadata.js +10 -0
- package/dist/apps/metadata.js.map +1 -1
- package/dist/apps/mpp/App.d.ts +57 -58
- package/dist/apps/mpp/App.d.ts.map +1 -1
- package/dist/apps/mpp/App.js +192 -27
- package/dist/apps/mpp/App.js.map +1 -1
- package/dist/apps/mpp/Mpp.d.ts +0 -20
- package/dist/apps/mpp/Mpp.d.ts.map +1 -1
- package/dist/apps/mpp/Mpp.js +0 -24
- package/dist/apps/mpp/Mpp.js.map +1 -1
- package/dist/apps/mpp/internal/Adapter.d.ts +40 -0
- package/dist/apps/mpp/internal/Adapter.d.ts.map +1 -0
- package/dist/apps/mpp/internal/Adapter.js +66 -0
- package/dist/apps/mpp/internal/Adapter.js.map +1 -0
- package/dist/apps/mpp/internal/Error.d.ts +4 -0
- package/dist/apps/mpp/internal/Error.d.ts.map +1 -0
- package/dist/apps/mpp/internal/Error.js +41 -0
- package/dist/apps/mpp/internal/Error.js.map +1 -0
- package/dist/apps/mpp/internal/Idempotency.d.ts +33 -0
- package/dist/apps/mpp/internal/Idempotency.d.ts.map +1 -0
- package/dist/apps/mpp/internal/Idempotency.js +28 -0
- package/dist/apps/mpp/internal/Idempotency.js.map +1 -0
- package/dist/apps/mpp/internal/Policy.d.ts +46 -0
- package/dist/apps/mpp/internal/Policy.d.ts.map +1 -0
- package/dist/apps/mpp/internal/Policy.js +57 -0
- package/dist/apps/mpp/internal/Policy.js.map +1 -0
- package/dist/apps/mpp/internal/ScreenManager.d.ts +27 -0
- package/dist/apps/mpp/internal/ScreenManager.d.ts.map +1 -0
- package/dist/apps/mpp/internal/ScreenManager.js +18 -0
- package/dist/apps/mpp/internal/ScreenManager.js.map +1 -0
- package/dist/apps/mpp/internal/Screening.d.ts +35 -0
- package/dist/apps/mpp/internal/Screening.d.ts.map +1 -0
- package/dist/apps/mpp/internal/Screening.js +20 -0
- package/dist/apps/mpp/internal/Screening.js.map +1 -0
- package/dist/apps/mpp/internal/Sponsorship.d.ts +36 -0
- package/dist/apps/mpp/internal/Sponsorship.d.ts.map +1 -0
- package/dist/apps/mpp/internal/Sponsorship.js +103 -0
- package/dist/apps/mpp/internal/Sponsorship.js.map +1 -0
- package/dist/apps/mpp/internal/Utils.d.ts +7 -0
- package/dist/apps/mpp/internal/Utils.d.ts.map +1 -0
- package/dist/apps/mpp/internal/Utils.js +24 -0
- package/dist/apps/mpp/internal/Utils.js.map +1 -0
- package/dist/apps/relay/App.js +183 -23
- package/dist/apps/relay/App.js.map +1 -1
- package/dist/apps/relay/Sponsorships.d.ts +4 -0
- package/dist/apps/relay/Sponsorships.d.ts.map +1 -1
- package/dist/apps/relay/Sponsorships.js +15 -6
- package/dist/apps/relay/Sponsorships.js.map +1 -1
- package/dist/cloudflare.d.ts +50 -0
- package/dist/cloudflare.d.ts.map +1 -1
- package/dist/cloudflare.js +178 -0
- package/dist/cloudflare.js.map +1 -1
- package/dist/db/Db.d.ts +22 -0
- package/dist/db/Db.d.ts.map +1 -1
- package/dist/db/Db.js +379 -0
- package/dist/db/Db.js.map +1 -1
- package/dist/db/Schema.d.ts +933 -1
- package/dist/db/Schema.d.ts.map +1 -1
- package/dist/db/Schema.js +289 -1
- package/dist/db/Schema.js.map +1 -1
- package/dist/db/tables/earnVaults.d.ts +68 -0
- package/dist/db/tables/earnVaults.d.ts.map +1 -0
- package/dist/db/tables/earnVaults.js +72 -0
- package/dist/db/tables/earnVaults.js.map +1 -0
- package/dist/db/tables/fundingCatalog.d.ts +56 -0
- package/dist/db/tables/fundingCatalog.d.ts.map +1 -0
- package/dist/db/tables/fundingCatalog.js +85 -0
- package/dist/db/tables/fundingCatalog.js.map +1 -0
- package/dist/db/tables/fundingDepositAddresses.d.ts +172 -0
- package/dist/db/tables/fundingDepositAddresses.d.ts.map +1 -0
- package/dist/db/tables/fundingDepositAddresses.js +218 -0
- package/dist/db/tables/fundingDepositAddresses.js.map +1 -0
- package/dist/db/tables/fundingDepositRequestObservations.d.ts +45 -0
- package/dist/db/tables/fundingDepositRequestObservations.d.ts.map +1 -0
- package/dist/db/tables/fundingDepositRequestObservations.js +46 -0
- package/dist/db/tables/fundingDepositRequestObservations.js.map +1 -0
- package/dist/db/tables/fundingDeposits.d.ts +171 -0
- package/dist/db/tables/fundingDeposits.d.ts.map +1 -0
- package/dist/db/tables/fundingDeposits.js +182 -0
- package/dist/db/tables/fundingDeposits.js.map +1 -0
- package/dist/db/tables/fundingIdempotency.d.ts +91 -0
- package/dist/db/tables/fundingIdempotency.d.ts.map +1 -0
- package/dist/db/tables/fundingIdempotency.js +103 -0
- package/dist/db/tables/fundingIdempotency.js.map +1 -0
- package/dist/db/tables/fundingTransferEvents.d.ts +12 -0
- package/dist/db/tables/fundingTransferEvents.d.ts.map +1 -0
- package/dist/db/tables/fundingTransferEvents.js +18 -0
- package/dist/db/tables/fundingTransferEvents.js.map +1 -0
- package/dist/db/tables/fundingTransferTransactions.d.ts +15 -0
- package/dist/db/tables/fundingTransferTransactions.d.ts.map +1 -0
- package/dist/db/tables/fundingTransferTransactions.js +27 -0
- package/dist/db/tables/fundingTransferTransactions.js.map +1 -0
- package/dist/db/tables/fundingTransfers.d.ts +82 -0
- package/dist/db/tables/fundingTransfers.d.ts.map +1 -0
- package/dist/db/tables/fundingTransfers.js +89 -0
- package/dist/db/tables/fundingTransfers.js.map +1 -0
- package/dist/db/tables/organizations.d.ts +8 -0
- package/dist/db/tables/organizations.d.ts.map +1 -1
- package/dist/db/tables/organizations.js +16 -0
- package/dist/db/tables/organizations.js.map +1 -1
- package/dist/db/tables/projects.d.ts +8 -0
- package/dist/db/tables/projects.d.ts.map +1 -1
- package/dist/db/tables/projects.js +16 -0
- package/dist/db/tables/projects.js.map +1 -1
- package/dist/db/tables/requestUsage.d.ts +13 -0
- package/dist/db/tables/requestUsage.d.ts.map +1 -1
- package/dist/db/tables/requestUsage.js +16 -0
- package/dist/db/tables/requestUsage.js.map +1 -1
- package/dist/db/tables/sponsoredTransactions.d.ts +2 -2
- package/dist/db/tables/sponsoredTransactions.d.ts.map +1 -1
- package/dist/db/tables/sponsoredTransactions.js +1 -1
- package/dist/db/tables/sponsoredTransactions.js.map +1 -1
- package/dist/db/tables/users.d.ts +8 -0
- package/dist/db/tables/users.d.ts.map +1 -1
- package/dist/db/tables/users.js +16 -0
- package/dist/db/tables/users.js.map +1 -1
- package/dist/db/tables/verifiedTokens.d.ts +14 -7
- package/dist/db/tables/verifiedTokens.d.ts.map +1 -1
- package/dist/db/tables/verifiedTokens.js +9 -7
- package/dist/db/tables/verifiedTokens.js.map +1 -1
- package/dist/db/tables/webhookSubscriptions.d.ts +31 -1
- package/dist/db/tables/webhookSubscriptions.d.ts.map +1 -1
- package/dist/db/tables/webhookSubscriptions.js +24 -3
- package/dist/db/tables/webhookSubscriptions.js.map +1 -1
- package/dist/handlers/relay.js +108 -108
- package/dist/handlers/relay.js.map +1 -1
- package/dist/internal/Auth.d.ts +37 -11
- package/dist/internal/Auth.d.ts.map +1 -1
- package/dist/internal/Auth.js +75 -16
- package/dist/internal/Auth.js.map +1 -1
- package/dist/internal/Cache.d.ts.map +1 -1
- package/dist/internal/Cache.js +17 -11
- package/dist/internal/Cache.js.map +1 -1
- package/dist/internal/Cursor.js +1 -1
- package/dist/internal/Cursor.js.map +1 -1
- package/dist/internal/EarnRates.d.ts +89 -0
- package/dist/internal/EarnRates.d.ts.map +1 -0
- package/dist/internal/EarnRates.js +266 -0
- package/dist/internal/EarnRates.js.map +1 -0
- package/dist/internal/EarnVaults.d.ts +171 -0
- package/dist/internal/EarnVaults.d.ts.map +1 -0
- package/dist/internal/EarnVaults.js +547 -0
- package/dist/internal/EarnVaults.js.map +1 -0
- package/dist/internal/EdgeCache.d.ts +10 -3
- package/dist/internal/EdgeCache.d.ts.map +1 -1
- package/dist/internal/EdgeCache.js +43 -11
- package/dist/internal/EdgeCache.js.map +1 -1
- package/dist/internal/Id.d.ts +11 -0
- package/dist/internal/Id.d.ts.map +1 -1
- package/dist/internal/Id.js +13 -0
- package/dist/internal/Id.js.map +1 -1
- package/dist/internal/Idempotency.d.ts +83 -0
- package/dist/internal/Idempotency.d.ts.map +1 -0
- package/dist/internal/Idempotency.js +113 -0
- package/dist/internal/Idempotency.js.map +1 -0
- package/dist/internal/IpAllowlist.d.ts +15 -0
- package/dist/internal/IpAllowlist.d.ts.map +1 -0
- package/dist/internal/IpAllowlist.js +27 -0
- package/dist/internal/IpAllowlist.js.map +1 -0
- package/dist/internal/Log.d.ts +64 -9
- package/dist/internal/Log.d.ts.map +1 -1
- package/dist/internal/Log.js +29 -7
- package/dist/internal/Log.js.map +1 -1
- package/dist/internal/MetricSink.d.ts.map +1 -1
- package/dist/internal/MetricSink.js +47 -1
- package/dist/internal/MetricSink.js.map +1 -1
- package/dist/internal/OpenApi.d.ts +2 -2
- package/dist/internal/OpenApi.d.ts.map +1 -1
- package/dist/internal/OpenApi.js +4 -1
- package/dist/internal/OpenApi.js.map +1 -1
- package/dist/internal/Provider.d.ts +14 -0
- package/dist/internal/Provider.d.ts.map +1 -0
- package/dist/internal/Provider.js +5 -0
- package/dist/internal/Provider.js.map +1 -0
- package/dist/internal/Schema.d.ts +6 -1
- package/dist/internal/Schema.d.ts.map +1 -1
- package/dist/internal/Schema.js +20 -11
- package/dist/internal/Schema.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 +35 -0
- package/dist/internal/Store.js.map +1 -1
- package/dist/internal/Tidx.d.ts +49 -24
- package/dist/internal/Tidx.d.ts.map +1 -1
- package/dist/internal/Tidx.js +90 -12
- package/dist/internal/Tidx.js.map +1 -1
- package/dist/internal/Viem.d.ts +90 -65
- package/dist/internal/Viem.d.ts.map +1 -1
- package/dist/internal/Viem.js +90 -12
- package/dist/internal/Viem.js.map +1 -1
- package/dist/internal/WebhookDestination.d.ts.map +1 -1
- package/dist/internal/WebhookDestination.js +34 -28
- package/dist/internal/WebhookDestination.js.map +1 -1
- package/dist/internal/Webhooks.d.ts +9 -0
- package/dist/internal/Webhooks.d.ts.map +1 -1
- package/dist/internal/Webhooks.js +15 -10
- package/dist/internal/Webhooks.js.map +1 -1
- package/dist/internal/exchange/Provider.d.ts +219 -0
- package/dist/internal/exchange/Provider.d.ts.map +1 -0
- package/dist/internal/exchange/Provider.js +117 -0
- package/dist/internal/exchange/Provider.js.map +1 -0
- package/dist/internal/exchange/index.d.ts +2 -0
- package/dist/internal/exchange/index.d.ts.map +1 -0
- package/dist/internal/exchange/index.js +2 -0
- package/dist/internal/exchange/index.js.map +1 -0
- package/dist/internal/exchange/providers/uniswap.d.ts +57 -0
- package/dist/internal/exchange/providers/uniswap.d.ts.map +1 -0
- package/dist/internal/exchange/providers/uniswap.js +553 -0
- package/dist/internal/exchange/providers/uniswap.js.map +1 -0
- package/dist/internal/funding/Action.d.ts +55 -0
- package/dist/internal/funding/Action.d.ts.map +1 -0
- package/dist/internal/funding/Action.js +74 -0
- package/dist/internal/funding/Action.js.map +1 -0
- package/dist/internal/funding/Catalog.d.ts +107 -0
- package/dist/internal/funding/Catalog.d.ts.map +1 -0
- package/dist/internal/funding/Catalog.js +270 -0
- package/dist/internal/funding/Catalog.js.map +1 -0
- package/dist/internal/funding/Chain.d.ts +76 -0
- package/dist/internal/funding/Chain.d.ts.map +1 -0
- package/dist/internal/funding/Chain.js +38 -0
- package/dist/internal/funding/Chain.js.map +1 -0
- package/dist/internal/funding/Deposit.d.ts +408 -0
- package/dist/internal/funding/Deposit.d.ts.map +1 -0
- package/dist/internal/funding/Deposit.js +318 -0
- package/dist/internal/funding/Deposit.js.map +1 -0
- package/dist/internal/funding/DepositAddress.d.ts +345 -0
- package/dist/internal/funding/DepositAddress.d.ts.map +1 -0
- package/dist/internal/funding/DepositAddress.js +189 -0
- package/dist/internal/funding/DepositAddress.js.map +1 -0
- package/dist/internal/funding/Evidence.d.ts +48 -0
- package/dist/internal/funding/Evidence.d.ts.map +1 -0
- package/dist/internal/funding/Evidence.js +315 -0
- package/dist/internal/funding/Evidence.js.map +1 -0
- package/dist/internal/funding/Provider.d.ts +1288 -0
- package/dist/internal/funding/Provider.d.ts.map +1 -0
- package/dist/internal/funding/Provider.js +1086 -0
- package/dist/internal/funding/Provider.js.map +1 -0
- package/dist/internal/funding/Reconciliation.d.ts +127 -0
- package/dist/internal/funding/Reconciliation.d.ts.map +1 -0
- package/dist/internal/funding/Reconciliation.js +885 -0
- package/dist/internal/funding/Reconciliation.js.map +1 -0
- package/dist/internal/funding/Route.d.ts +21 -0
- package/dist/internal/funding/Route.d.ts.map +1 -0
- package/dist/internal/funding/Route.js +5 -0
- package/dist/internal/funding/Route.js.map +1 -0
- package/dist/internal/funding/SourceObservation.d.ts +108 -0
- package/dist/internal/funding/SourceObservation.d.ts.map +1 -0
- package/dist/internal/funding/SourceObservation.js +143 -0
- package/dist/internal/funding/SourceObservation.js.map +1 -0
- package/dist/internal/funding/Subsidy.d.ts +113 -0
- package/dist/internal/funding/Subsidy.d.ts.map +1 -0
- package/dist/internal/funding/Subsidy.js +138 -0
- package/dist/internal/funding/Subsidy.js.map +1 -0
- package/dist/internal/funding/Token.d.ts +41 -0
- package/dist/internal/funding/Token.d.ts.map +1 -0
- package/dist/internal/funding/Token.js +22 -0
- package/dist/internal/funding/Token.js.map +1 -0
- package/dist/internal/funding/Transfer.d.ts +643 -0
- package/dist/internal/funding/Transfer.d.ts.map +1 -0
- package/dist/internal/funding/Transfer.js +332 -0
- package/dist/internal/funding/Transfer.js.map +1 -0
- package/dist/internal/funding/index.d.ts +14 -0
- package/dist/internal/funding/index.d.ts.map +1 -0
- package/dist/internal/funding/index.js +14 -0
- package/dist/internal/funding/index.js.map +1 -0
- package/dist/internal/funding/providers/across.d.ts +21 -0
- package/dist/internal/funding/providers/across.d.ts.map +1 -0
- package/dist/internal/funding/providers/across.js +117 -0
- package/dist/internal/funding/providers/across.js.map +1 -0
- package/dist/internal/funding/providers/relay.d.ts +88 -0
- package/dist/internal/funding/providers/relay.d.ts.map +1 -0
- package/dist/internal/funding/providers/relay.js +871 -0
- package/dist/internal/funding/providers/relay.js.map +1 -0
- package/dist/internal/funding/providers/rhino.d.ts +15 -0
- package/dist/internal/funding/providers/rhino.d.ts.map +1 -0
- package/dist/internal/funding/providers/rhino.js +116 -0
- package/dist/internal/funding/providers/rhino.js.map +1 -0
- package/dist/internal/funding/providers/squid.d.ts +19 -0
- package/dist/internal/funding/providers/squid.d.ts.map +1 -0
- package/dist/internal/funding/providers/squid.js +120 -0
- package/dist/internal/funding/providers/squid.js.map +1 -0
- package/dist/internal/funding/providers/symbiosis.d.ts +20 -0
- package/dist/internal/funding/providers/symbiosis.d.ts.map +1 -0
- package/dist/internal/funding/providers/symbiosis.js +176 -0
- package/dist/internal/funding/providers/symbiosis.js.map +1 -0
- package/dist/internal/index.d.ts +5 -1
- package/dist/internal/index.d.ts.map +1 -1
- package/dist/internal/index.js +5 -1
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/webhookDestinations/url.js +61 -57
- package/dist/internal/webhookDestinations/url.js.map +1 -1
- package/dist/providers/index.d.ts +43 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +19 -0
- package/dist/providers/index.js.map +1 -0
- package/package.json +10 -5
- package/src/ApiKey.test.ts +35 -0
- package/src/ApiKey.ts +27 -0
- package/src/ApiKeys.test.ts +40 -7
- package/src/ApiKeys.ts +46 -10
- package/src/App.test.ts +108 -15
- package/src/App.ts +296 -138
- package/src/Assets.ts +29 -4
- package/src/Client.test-d.ts +809 -37
- package/src/Scope.test.ts +19 -0
- package/src/Scope.ts +28 -11
- package/src/Webhooks.test.ts +25 -0
- package/src/Webhooks.ts +1 -1
- package/src/admin/App.test.ts +9 -2
- package/src/admin/App.ts +32 -9
- package/src/admin/apps/api-keys.test.ts +190 -22
- package/src/admin/apps/api-keys.ts +170 -28
- package/src/admin/apps/earn-vaults.test.ts +338 -0
- package/src/admin/apps/earn-vaults.ts +572 -0
- package/src/admin/apps/scopes.test.ts +16 -1
- package/src/admin/ui/plugin.ts +2 -2
- package/src/admin/ui/src/components/EarnVaultForm.tsx +137 -0
- package/src/admin/ui/src/components/MobileProfile.tsx +2 -2
- package/src/admin/ui/src/components/Page.tsx +1 -1
- package/src/admin/ui/src/components/ThemeToggle.tsx +1 -1
- package/src/admin/ui/src/lib/api-keys.ts +37 -7
- package/src/admin/ui/src/lib/client.ts +1 -1
- package/src/admin/ui/src/lib/config.ts +1 -1
- package/src/admin/ui/src/lib/early-access.ts +8 -9
- package/src/admin/ui/src/lib/earn-vaults.ts +207 -0
- package/src/admin/ui/src/lib/format.ts +13 -0
- package/src/admin/ui/src/lib/organizations.test.ts +14 -4
- package/src/admin/ui/src/lib/organizations.ts +7 -1
- package/src/admin/ui/src/lib/response.ts +22 -0
- package/src/admin/ui/src/lib/scopes.test.ts +19 -11
- package/src/admin/ui/src/lib/scopes.ts +28 -7
- package/src/admin/ui/src/lib/verified-tokens.ts +10 -9
- package/src/admin/ui/src/routeTree.gen.ts +70 -7
- package/src/admin/ui/src/router.tsx +2 -2
- package/src/admin/ui/src/routes/__root.tsx +9 -8
- package/src/admin/ui/src/routes/api-keys.tsx +475 -64
- package/src/admin/ui/src/routes/early-access.tsx +5 -12
- package/src/admin/ui/src/routes/earn.vaults.tsx +348 -0
- package/src/admin/ui/src/routes/earn.vaults_.$vaultId.edit.tsx +154 -0
- package/src/admin/ui/src/routes/earn.vaults_.new.tsx +190 -0
- package/src/admin/ui/src/routes/organizations.tsx +4 -7
- package/src/admin/ui/src/routes/organizations_.$orgId.tsx +56 -54
- package/src/admin/ui/src/routes/verified-tokens.tsx +4 -4
- package/src/admin/ui/vite.config.ts +4 -1
- package/src/admin/ui.generated.ts +113 -43
- package/src/analytics/Analytics.test.ts +69 -10
- package/src/analytics/Analytics.ts +24 -1
- package/src/analytics/tables/requestEvents.ts +79 -37
- package/src/apps/Zones.test.ts +33 -0
- package/src/apps/Zones.ts +40 -0
- package/src/apps/composition.test.ts +184 -3
- package/src/apps/data/App.test.ts +28 -23
- package/src/apps/data/App.ts +95 -36
- package/src/apps/data/FxOracle.ts +1 -1
- package/src/apps/data/index.ts +0 -1
- package/src/apps/data/routes/activities.test.ts +82 -6
- package/src/apps/data/routes/activities.ts +131 -71
- package/src/apps/data/routes/balances.test.ts +50 -37
- package/src/apps/data/routes/balances.ts +5 -5
- package/src/apps/data/routes/blocks.test.ts +2 -0
- package/src/apps/data/routes/coingecko.test.ts +22 -0
- package/src/apps/data/routes/coingecko.ts +84 -48
- package/src/apps/data/routes/earn.test.ts +1391 -0
- package/src/apps/data/routes/earn.ts +2188 -0
- package/src/apps/data/routes/exchanges.test.ts +82 -33
- package/src/apps/data/routes/exchanges.ts +842 -227
- package/src/apps/data/routes/fee-amm.test.ts +4 -6
- package/src/apps/data/routes/fee-amm.ts +69 -12
- package/src/apps/data/routes/indexer.test.ts +43 -34
- package/src/apps/data/routes/indexer.ts +21 -3
- package/src/apps/data/routes/receipts.test.ts +5 -3
- package/src/apps/data/routes/receipts.ts +13 -11
- package/src/apps/data/routes/rpc.test.ts +446 -28
- package/src/apps/data/routes/rpc.ts +245 -25
- package/src/apps/data/routes/tokenlist.ts +72 -19
- package/src/apps/data/routes/tokens.test.ts +6 -8
- package/src/apps/data/routes/tokens.ts +258 -86
- package/src/apps/data/routes/transactions.test.ts +2 -0
- package/src/apps/data/routes/transactions.ts +77 -42
- package/src/apps/data/routes/transfers.test.ts +166 -4
- package/src/apps/data/routes/transfers.ts +216 -78
- package/src/apps/data/routes/valuation.test.ts +62 -9
- package/src/apps/data/routes/valuation.ts +2 -2
- package/src/apps/data/routes/webhooks.test.ts +386 -43
- package/src/apps/data/routes/webhooks.ts +172 -71
- package/src/apps/data/routes/zones.test.ts +473 -0
- package/src/apps/data/routes/zones.ts +338 -0
- package/src/apps/docs/reference.ts +8 -6
- package/src/apps/funding/Access.ts +26 -0
- package/src/apps/funding/App.test.ts +78 -0
- package/src/apps/funding/App.ts +63 -0
- package/src/apps/funding/Inventory.ts +30 -0
- package/src/apps/funding/ProviderAttempts.ts +26 -0
- package/src/apps/funding/index.ts +1 -0
- package/src/apps/funding/routes/chains.test.ts +78 -0
- package/src/apps/funding/routes/chains.ts +101 -0
- package/src/apps/funding/routes/deposit-addresses.test.ts +1628 -0
- package/src/apps/funding/routes/deposit-addresses.ts +1015 -0
- package/src/apps/funding/routes/providers.test.ts +165 -0
- package/src/apps/funding/routes/providers.ts +73 -0
- package/src/apps/funding/routes/quotes.test.ts +511 -0
- package/src/apps/funding/routes/quotes.ts +205 -0
- package/src/apps/funding/routes/transfers.test.ts +1255 -0
- package/src/apps/funding/routes/transfers.ts +704 -0
- package/src/apps/index.ts +3 -1
- package/src/apps/management/Billing.test.ts +29 -0
- package/src/apps/management/Billing.ts +23 -0
- package/src/apps/management/Error.ts +12 -0
- package/src/apps/management/routes/api-keys.test.ts +103 -3
- package/src/apps/management/routes/api-keys.ts +98 -10
- package/src/apps/management/routes/invitations.ts +4 -11
- package/src/apps/management/routes/orgs.ts +2 -9
- package/src/apps/management/routes/scopes.test.ts +7 -2
- package/src/apps/management/routes/scopes.ts +2 -2
- package/src/apps/management/routes/webhooks.test.ts +6 -1
- package/src/apps/management/routes/webhooks.ts +15 -3
- package/src/apps/mcp.test.ts +17 -2
- package/src/apps/mcp.ts +18 -13
- package/src/apps/metadata.ts +12 -0
- package/src/apps/mpp/App.ts +276 -29
- package/src/apps/mpp/Mpp.test.ts +631 -26
- package/src/apps/mpp/Mpp.ts +0 -42
- package/src/apps/mpp/internal/Adapter.ts +108 -3
- package/src/apps/mpp/internal/Error.test.ts +33 -0
- package/src/apps/mpp/internal/Error.ts +44 -6
- package/src/apps/mpp/internal/Idempotency.test.ts +213 -0
- package/src/apps/mpp/internal/Idempotency.ts +59 -5
- package/src/apps/mpp/internal/Policy.test.ts +128 -0
- package/src/apps/mpp/internal/Policy.ts +98 -0
- package/src/apps/mpp/internal/ScreenManager.test.ts +68 -0
- package/src/apps/mpp/internal/ScreenManager.ts +41 -0
- package/src/apps/mpp/internal/Screening.ts +40 -3
- package/src/apps/mpp/internal/Sponsorship.ts +144 -0
- package/src/apps/mpp/internal/Utils.ts +30 -0
- package/src/apps/relay/App.test.ts +493 -62
- package/src/apps/relay/App.ts +233 -23
- package/src/apps/relay/Sponsorships.test.ts +49 -0
- package/src/apps/relay/Sponsorships.ts +18 -6
- package/src/cloudflare.ts +279 -0
- package/src/db/Db.ts +501 -0
- package/src/db/Schema.ts +349 -2
- package/src/db/tables/earnVaults.test.ts +185 -0
- package/src/db/tables/earnVaults.ts +151 -0
- package/src/db/tables/fundingCatalog.test.ts +108 -0
- package/src/db/tables/fundingCatalog.ts +157 -0
- package/src/db/tables/fundingDepositAddresses.test.ts +580 -0
- package/src/db/tables/fundingDepositAddresses.ts +404 -0
- package/src/db/tables/fundingDepositRequestObservations.test.ts +106 -0
- package/src/db/tables/fundingDepositRequestObservations.ts +99 -0
- package/src/db/tables/fundingDeposits.test.ts +399 -0
- package/src/db/tables/fundingDeposits.ts +373 -0
- package/src/db/tables/fundingIdempotency.test.ts +182 -0
- package/src/db/tables/fundingIdempotency.ts +180 -0
- package/src/db/tables/fundingTransferEvents.ts +28 -0
- package/src/db/tables/fundingTransferTransactions.test.ts +69 -0
- package/src/db/tables/fundingTransferTransactions.ts +37 -0
- package/src/db/tables/fundingTransfers.test.ts +89 -0
- package/src/db/tables/fundingTransfers.ts +153 -0
- package/src/db/tables/organizations.ts +16 -0
- package/src/db/tables/projects.ts +16 -0
- package/src/db/tables/requestUsage.ts +23 -0
- package/src/db/tables/sponsoredTransactions.test.ts +11 -0
- package/src/db/tables/sponsoredTransactions.ts +3 -3
- package/src/db/tables/users.ts +16 -0
- package/src/db/tables/verifiedTokens.ts +19 -14
- package/src/db/tables/webhookSubscriptions.ts +58 -3
- package/src/handlers/relay.test.ts +2 -0
- package/src/handlers/relay.ts +95 -99
- package/src/internal/Auth.test.ts +225 -5
- package/src/internal/Auth.ts +109 -20
- package/src/internal/Cache.test.ts +37 -3
- package/src/internal/Cache.ts +14 -10
- package/src/internal/Cursor.test.ts +2 -2
- package/src/internal/Cursor.ts +1 -1
- package/src/internal/EarnRates.test.ts +125 -0
- package/src/internal/EarnRates.ts +409 -0
- package/src/internal/EarnVaults.test.ts +195 -0
- package/src/internal/EarnVaults.ts +876 -0
- package/src/internal/EdgeCache.test.ts +26 -7
- package/src/internal/EdgeCache.ts +48 -9
- package/src/internal/Id.ts +14 -0
- package/src/internal/Idempotency.test.ts +109 -0
- package/src/internal/Idempotency.ts +237 -0
- package/src/internal/IpAllowlist.test.ts +52 -0
- package/src/internal/IpAllowlist.ts +39 -0
- package/src/internal/Log.test-d.ts +41 -8
- package/src/internal/Log.test.ts +196 -9
- package/src/internal/Log.ts +124 -17
- package/src/internal/MetricSink.test.ts +244 -4
- package/src/internal/MetricSink.ts +51 -1
- package/src/internal/OpenApi.ts +4 -1
- package/src/internal/Provider.test.ts +17 -0
- package/src/internal/Provider.ts +17 -0
- package/src/internal/Schema.ts +27 -17
- package/src/internal/Store.test.ts +25 -0
- package/src/internal/Store.ts +46 -0
- package/src/internal/Tidx.local.test.ts +78 -3
- package/src/internal/Tidx.test.ts +240 -18
- package/src/internal/Tidx.ts +129 -33
- package/src/internal/VerifiedTokens.test.ts +15 -0
- package/src/internal/Viem.test.ts +198 -17
- package/src/internal/Viem.ts +127 -28
- package/src/internal/WebhookDestination.ts +25 -23
- package/src/internal/Webhooks.test.ts +59 -0
- package/src/internal/Webhooks.ts +34 -10
- package/src/internal/exchange/Provider.test.ts +216 -0
- package/src/internal/exchange/Provider.ts +326 -0
- package/src/internal/exchange/index.test.ts +6 -0
- package/src/internal/exchange/index.ts +1 -0
- package/src/internal/exchange/providers/uniswap.test.ts +122 -0
- package/src/internal/exchange/providers/uniswap.ts +682 -0
- package/src/internal/funding/Action.test.ts +138 -0
- package/src/internal/funding/Action.ts +117 -0
- package/src/internal/funding/Catalog.test.ts +311 -0
- package/src/internal/funding/Catalog.ts +347 -0
- package/src/internal/funding/Chain.test.ts +79 -0
- package/src/internal/funding/Chain.ts +120 -0
- package/src/internal/funding/Deposit.test.ts +26 -0
- package/src/internal/funding/Deposit.ts +522 -0
- package/src/internal/funding/DepositAddress.test.ts +18 -0
- package/src/internal/funding/DepositAddress.ts +312 -0
- package/src/internal/funding/Evidence.test.ts +297 -0
- package/src/internal/funding/Evidence.ts +425 -0
- package/src/internal/funding/Provider.test.ts +1328 -0
- package/src/internal/funding/Provider.ts +1911 -0
- package/src/internal/funding/Reconciliation.local.test.ts +511 -0
- package/src/internal/funding/Reconciliation.test.ts +3037 -0
- package/src/internal/funding/Reconciliation.ts +1202 -0
- package/src/internal/funding/Route.test.ts +66 -0
- package/src/internal/funding/Route.ts +29 -0
- package/src/internal/funding/SourceObservation.test.ts +301 -0
- package/src/internal/funding/SourceObservation.ts +267 -0
- package/src/internal/funding/Subsidy.local.test.ts +152 -0
- package/src/internal/funding/Subsidy.test.ts +75 -0
- package/src/internal/funding/Subsidy.ts +260 -0
- package/src/internal/funding/Token.test.ts +47 -0
- package/src/internal/funding/Token.ts +59 -0
- package/src/internal/funding/Transfer.test.ts +369 -0
- package/src/internal/funding/Transfer.ts +522 -0
- package/src/internal/funding/index.test.ts +21 -0
- package/src/internal/funding/index.ts +13 -0
- package/src/internal/funding/providers/across.ts +149 -0
- package/src/{apps/data/FundingQuoteProviders.test.ts → internal/funding/providers/index.test.ts} +178 -157
- package/src/internal/funding/providers/relay.test.ts +564 -0
- package/src/internal/funding/providers/relay.ts +1060 -0
- package/src/internal/funding/providers/rhino.ts +139 -0
- package/src/internal/funding/providers/squid.ts +151 -0
- package/src/internal/funding/providers/symbiosis.ts +221 -0
- package/src/internal/index.test.ts +5 -1
- package/src/internal/index.ts +5 -1
- package/src/internal/webhookDestinations/url.ts +49 -45
- package/src/providers/index.test.ts +14 -0
- package/src/providers/index.ts +54 -0
- package/dist/apps/data/FundingQuoteProviders.d.ts +0 -174
- package/dist/apps/data/FundingQuoteProviders.d.ts.map +0 -1
- package/dist/apps/data/FundingQuoteProviders.js +0 -775
- package/dist/apps/data/FundingQuoteProviders.js.map +0 -1
- package/dist/apps/data/routes/funding.d.ts.map +0 -1
- package/dist/apps/data/routes/funding.js +0 -410
- package/dist/apps/data/routes/funding.js.map +0 -1
- package/dist/internal/FundingQuotes.d.ts +0 -864
- package/dist/internal/FundingQuotes.d.ts.map +0 -1
- package/dist/internal/FundingQuotes.js +0 -672
- package/dist/internal/FundingQuotes.js.map +0 -1
- package/src/apps/data/FundingQuoteProviders.ts +0 -1043
- package/src/apps/data/routes/funding.test.ts +0 -503
- package/src/apps/data/routes/funding.ts +0 -604
- package/src/internal/FundingQuotes.test.ts +0 -456
- package/src/internal/FundingQuotes.ts +0 -944
|
@@ -1,21 +1,54 @@
|
|
|
1
|
-
import type * as
|
|
1
|
+
import type * as FundingProvider from './funding/Provider.js'
|
|
2
2
|
import type * as Log from './Log.js'
|
|
3
3
|
|
|
4
|
-
test('
|
|
5
|
-
const provider = null as never as
|
|
4
|
+
test('accepts deployment-supplied funding provider identifiers', () => {
|
|
5
|
+
const provider = null as never as FundingProvider.ProviderId
|
|
6
6
|
const id: Log.FundingProviderAttempt['id'] = provider
|
|
7
|
-
const provider_roundTrip:
|
|
7
|
+
const provider_roundTrip: FundingProvider.ProviderId = id
|
|
8
8
|
void provider_roundTrip
|
|
9
9
|
|
|
10
10
|
const attempt = {
|
|
11
11
|
durationMs: 1,
|
|
12
12
|
id: 'relay',
|
|
13
|
-
operation: '
|
|
13
|
+
operation: 'getQuote',
|
|
14
14
|
outcome: 'available',
|
|
15
15
|
} satisfies Log.FundingProviderAttempt
|
|
16
16
|
void attempt
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
const custom: Log.FundingProviderAttempt['id'] = 'custom-bridge'
|
|
19
|
+
void custom
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
test('bounds sponsorship diagnostics', () => {
|
|
23
|
+
const reasons = [
|
|
24
|
+
'api_key_forbidden',
|
|
25
|
+
'api_key_required',
|
|
26
|
+
'billing_past_due',
|
|
27
|
+
'billing_required',
|
|
28
|
+
'chain_id_unsupported',
|
|
29
|
+
'fee_token_unsupported',
|
|
30
|
+
'internal_error',
|
|
31
|
+
'production_api_key_required',
|
|
32
|
+
'spend_limit_exceeded',
|
|
33
|
+
'tx_fee_limit_exceeded',
|
|
34
|
+
] as const satisfies readonly Log.SponsorshipReason[]
|
|
35
|
+
expectTypeOf<(typeof reasons)[number]>().toEqualTypeOf<Log.SponsorshipReason>()
|
|
36
|
+
|
|
37
|
+
const sponsorship = {
|
|
38
|
+
chainId: 4217,
|
|
39
|
+
method: 'eth_signRawTransaction',
|
|
40
|
+
outcome: 'rejected',
|
|
41
|
+
payloadHash: `0x${'aa'.repeat(32)}`,
|
|
42
|
+
reason: 'production_api_key_required',
|
|
43
|
+
rejections: 1,
|
|
44
|
+
} satisfies Log.Sponsorship
|
|
45
|
+
void sponsorship
|
|
46
|
+
|
|
47
|
+
// @ts-expect-error arbitrary method names would create unbounded log values
|
|
48
|
+
const method: Log.SponsorshipMethod = 'wallet_userControlled'
|
|
49
|
+
void method
|
|
50
|
+
|
|
51
|
+
// @ts-expect-error arbitrary reasons would create unbounded log values
|
|
52
|
+
const reason: Log.SponsorshipReason = 'user_controlled_reason'
|
|
53
|
+
void reason
|
|
21
54
|
})
|
package/src/internal/Log.test.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Hono } from 'hono'
|
|
2
2
|
import { requestId } from 'hono/request-id'
|
|
3
|
+
import type { Hex } from 'ox'
|
|
3
4
|
|
|
4
5
|
import * as Log from './Log.js'
|
|
5
6
|
import * as Response from './Response.js'
|
|
@@ -50,12 +51,64 @@ describe('middleware', () => {
|
|
|
50
51
|
`)
|
|
51
52
|
})
|
|
52
53
|
|
|
54
|
+
test('includes a failed optional funding transfer count', async () => {
|
|
55
|
+
const entries: Log.Entry[] = []
|
|
56
|
+
const api = app({ emit: (entry) => void entries.push(entry) })
|
|
57
|
+
api.get('/v1/funding/transfers', (c) => {
|
|
58
|
+
c.set('fundingTransferCountFailed', true)
|
|
59
|
+
return c.json({ data: [], nextCursor: null }, 200)
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
await api.request('/v1/funding/transfers?include=totalCount')
|
|
63
|
+
|
|
64
|
+
expect(stable(entries[0]!)).toMatchInlineSnapshot(`
|
|
65
|
+
{
|
|
66
|
+
"fundingTransferCountFailed": true,
|
|
67
|
+
"level": "info",
|
|
68
|
+
"method": "GET",
|
|
69
|
+
"path": "/v1/funding/transfers",
|
|
70
|
+
"query": "include=totalCount",
|
|
71
|
+
"route": "/v1/funding/transfers",
|
|
72
|
+
"status": 200,
|
|
73
|
+
}
|
|
74
|
+
`)
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
test('keeps the longest duration when a timing name repeats', async () => {
|
|
78
|
+
vi.useFakeTimers()
|
|
79
|
+
try {
|
|
80
|
+
const entries: Log.Entry[] = []
|
|
81
|
+
const api = app({ emit: (entry) => void entries.push(entry) })
|
|
82
|
+
api.get('/', async (c) => {
|
|
83
|
+
await Timing.time(c, 'transactions', () => vi.advanceTimersByTime(20))
|
|
84
|
+
await Timing.time(c, 'transactions', () => vi.advanceTimersByTime(5))
|
|
85
|
+
return c.json({ ok: true }, 200)
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
await api.request('/')
|
|
89
|
+
|
|
90
|
+
expect(entries[0]?.timings).toMatchInlineSnapshot(`
|
|
91
|
+
{
|
|
92
|
+
"transactions": 20,
|
|
93
|
+
}
|
|
94
|
+
`)
|
|
95
|
+
} finally {
|
|
96
|
+
vi.useRealTimers()
|
|
97
|
+
}
|
|
98
|
+
})
|
|
99
|
+
|
|
53
100
|
test('includes the caller principal, never the raw token', async () => {
|
|
54
101
|
const entries: Log.Entry[] = []
|
|
55
102
|
const api = app({ emit: (entry) => void entries.push(entry) })
|
|
56
103
|
api.use('*', async (c, next) => {
|
|
57
104
|
c.set('principal', {
|
|
58
|
-
apiKey: {
|
|
105
|
+
apiKey: {
|
|
106
|
+
allowedIps: [],
|
|
107
|
+
environment: 'production',
|
|
108
|
+
id: 'key_1',
|
|
109
|
+
orgId: 'org_1',
|
|
110
|
+
scopes: ['data:read'],
|
|
111
|
+
},
|
|
59
112
|
environment: 'production',
|
|
60
113
|
id: 'key_1',
|
|
61
114
|
orgId: 'org_1',
|
|
@@ -174,6 +227,92 @@ describe('middleware', () => {
|
|
|
174
227
|
`)
|
|
175
228
|
})
|
|
176
229
|
|
|
230
|
+
test('includes bounded sponsorship rejection diagnostics', async () => {
|
|
231
|
+
const entries: Log.Entry[] = []
|
|
232
|
+
const api = app({ emit: (entry) => void entries.push(entry) })
|
|
233
|
+
api.post('/rpc/sponsor', (c) => {
|
|
234
|
+
const body = {
|
|
235
|
+
error: {
|
|
236
|
+
code: -32602,
|
|
237
|
+
data: { code: 'production_api_key_required' },
|
|
238
|
+
message: 'Sponsorship rejected.',
|
|
239
|
+
},
|
|
240
|
+
id: 1,
|
|
241
|
+
jsonrpc: '2.0',
|
|
242
|
+
}
|
|
243
|
+
c.set('rpcResponse', Log.rpcErrors(body))
|
|
244
|
+
c.set('sponsorship', {
|
|
245
|
+
chainId: 4217,
|
|
246
|
+
method: 'eth_signRawTransaction',
|
|
247
|
+
outcome: 'rejected',
|
|
248
|
+
payloadHash: `0x${'aa'.repeat(32)}` as Hex.Hex,
|
|
249
|
+
reason: 'production_api_key_required',
|
|
250
|
+
rejections: 1,
|
|
251
|
+
})
|
|
252
|
+
return c.json(body)
|
|
253
|
+
})
|
|
254
|
+
|
|
255
|
+
await api.request('/rpc/sponsor', { method: 'POST' })
|
|
256
|
+
|
|
257
|
+
expect(stable(entries[0]!)).toMatchInlineSnapshot(`
|
|
258
|
+
{
|
|
259
|
+
"level": "warn",
|
|
260
|
+
"method": "POST",
|
|
261
|
+
"path": "/rpc/sponsor",
|
|
262
|
+
"route": "/rpc/sponsor",
|
|
263
|
+
"rpc": {
|
|
264
|
+
"code": -32602,
|
|
265
|
+
"dataCode": "production_api_key_required",
|
|
266
|
+
"errors": 1,
|
|
267
|
+
},
|
|
268
|
+
"sponsorship": {
|
|
269
|
+
"chainId": 4217,
|
|
270
|
+
"method": "eth_signRawTransaction",
|
|
271
|
+
"outcome": "rejected",
|
|
272
|
+
"payloadHash": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
273
|
+
"reason": "production_api_key_required",
|
|
274
|
+
"rejections": 1,
|
|
275
|
+
},
|
|
276
|
+
"status": 200,
|
|
277
|
+
}
|
|
278
|
+
`)
|
|
279
|
+
})
|
|
280
|
+
|
|
281
|
+
test('records an MPP relay failure returned with HTTP 200', async () => {
|
|
282
|
+
const entries: Log.Entry[] = []
|
|
283
|
+
const api = app({ emit: (entry) => void entries.push(entry) })
|
|
284
|
+
api.post('/v1/mpp/validate', (c) => {
|
|
285
|
+
c.set('mpp', {
|
|
286
|
+
chainId: 4217,
|
|
287
|
+
errorCode: 'unknown',
|
|
288
|
+
feePayer: false,
|
|
289
|
+
operation: 'verify',
|
|
290
|
+
outcome: 'failure',
|
|
291
|
+
})
|
|
292
|
+
return c.json({ success: false }, 200)
|
|
293
|
+
})
|
|
294
|
+
|
|
295
|
+
const response = await api.request('/v1/mpp/validate', { method: 'POST' })
|
|
296
|
+
|
|
297
|
+
expect(response.status).toBe(200)
|
|
298
|
+
expect(stable(entries[0]!)).toMatchInlineSnapshot(`
|
|
299
|
+
{
|
|
300
|
+
"level": "error",
|
|
301
|
+
"method": "POST",
|
|
302
|
+
"mpp": {
|
|
303
|
+
"chainId": 4217,
|
|
304
|
+
"errorCode": "unknown",
|
|
305
|
+
"feePayer": false,
|
|
306
|
+
"operation": "verify",
|
|
307
|
+
"outcome": "failure",
|
|
308
|
+
},
|
|
309
|
+
"path": "/v1/mpp/validate",
|
|
310
|
+
"route": "/v1/mpp/validate",
|
|
311
|
+
"status": 200,
|
|
312
|
+
}
|
|
313
|
+
`)
|
|
314
|
+
})
|
|
315
|
+
|
|
177
316
|
test('logs JSON-RPC server errors at error level', async () => {
|
|
178
317
|
const entries: Log.Entry[] = []
|
|
179
318
|
const api = app({ emit: (entry) => void entries.push(entry) })
|
|
@@ -196,7 +335,24 @@ describe('middleware', () => {
|
|
|
196
335
|
expect(entries[0]?.level).toBe('error')
|
|
197
336
|
})
|
|
198
337
|
|
|
199
|
-
test('
|
|
338
|
+
test('logs internal sponsorship failures at error level', async () => {
|
|
339
|
+
const entries: Log.Entry[] = []
|
|
340
|
+
const api = app({ emit: (entry) => void entries.push(entry) })
|
|
341
|
+
api.post('/rpc/sponsor', (c) => {
|
|
342
|
+
c.set('sponsorship', {
|
|
343
|
+
internalErrors: 1,
|
|
344
|
+
outcome: 'rejected',
|
|
345
|
+
rejections: 1,
|
|
346
|
+
})
|
|
347
|
+
return c.json({ id: 1, jsonrpc: '2.0', result: {} })
|
|
348
|
+
})
|
|
349
|
+
|
|
350
|
+
await api.request('/rpc/sponsor', { method: 'POST' })
|
|
351
|
+
|
|
352
|
+
expect(entries[0]?.level).toBe('error')
|
|
353
|
+
})
|
|
354
|
+
|
|
355
|
+
test('escalates mixed JSON-RPC batches containing server errors', async () => {
|
|
200
356
|
const entries: Log.Entry[] = []
|
|
201
357
|
const api = app({ emit: (entry) => void entries.push(entry) })
|
|
202
358
|
api.post('/rpc/relay', (c) => {
|
|
@@ -217,12 +373,43 @@ describe('middleware', () => {
|
|
|
217
373
|
|
|
218
374
|
expect(stable(entries[0]!)).toMatchInlineSnapshot(`
|
|
219
375
|
{
|
|
220
|
-
"level": "
|
|
376
|
+
"level": "error",
|
|
221
377
|
"method": "POST",
|
|
222
378
|
"path": "/rpc/relay",
|
|
223
379
|
"route": "/rpc/relay",
|
|
224
380
|
"rpc": {
|
|
225
381
|
"errors": 2,
|
|
382
|
+
"serverErrors": 1,
|
|
383
|
+
},
|
|
384
|
+
"status": 200,
|
|
385
|
+
}
|
|
386
|
+
`)
|
|
387
|
+
})
|
|
388
|
+
|
|
389
|
+
test('keeps routine node rejections out of server-error alerts', async () => {
|
|
390
|
+
const entries: Log.Entry[] = []
|
|
391
|
+
const api = app({ emit: (entry) => void entries.push(entry) })
|
|
392
|
+
api.post('/rpc/relay', (c) => {
|
|
393
|
+
const body = {
|
|
394
|
+
error: { code: -32_000, message: 'insufficient funds' },
|
|
395
|
+
id: 1,
|
|
396
|
+
jsonrpc: '2.0',
|
|
397
|
+
}
|
|
398
|
+
c.set('rpcResponse', Log.rpcErrors(body))
|
|
399
|
+
return c.json(body)
|
|
400
|
+
})
|
|
401
|
+
|
|
402
|
+
await api.request('/rpc/relay', { method: 'POST' })
|
|
403
|
+
|
|
404
|
+
expect(stable(entries[0]!)).toMatchInlineSnapshot(`
|
|
405
|
+
{
|
|
406
|
+
"level": "warn",
|
|
407
|
+
"method": "POST",
|
|
408
|
+
"path": "/rpc/relay",
|
|
409
|
+
"route": "/rpc/relay",
|
|
410
|
+
"rpc": {
|
|
411
|
+
"code": -32000,
|
|
412
|
+
"errors": 1,
|
|
226
413
|
},
|
|
227
414
|
"status": 200,
|
|
228
415
|
}
|
|
@@ -237,7 +424,7 @@ describe('middleware', () => {
|
|
|
237
424
|
code: 'UNAUTHORIZED',
|
|
238
425
|
failure: 'http',
|
|
239
426
|
id: 'relay',
|
|
240
|
-
operation: '
|
|
427
|
+
operation: 'getQuote',
|
|
241
428
|
status: 401,
|
|
242
429
|
})
|
|
243
430
|
return Response.error(c, {
|
|
@@ -259,7 +446,7 @@ describe('middleware', () => {
|
|
|
259
446
|
"code": "UNAUTHORIZED",
|
|
260
447
|
"failure": "http",
|
|
261
448
|
"id": "relay",
|
|
262
|
-
"operation": "
|
|
449
|
+
"operation": "getQuote",
|
|
263
450
|
"status": 401,
|
|
264
451
|
},
|
|
265
452
|
"route": "/provider",
|
|
@@ -276,14 +463,14 @@ describe('middleware', () => {
|
|
|
276
463
|
{
|
|
277
464
|
durationMs: 12.5,
|
|
278
465
|
id: 'relay',
|
|
279
|
-
operation: '
|
|
466
|
+
operation: 'getQuote',
|
|
280
467
|
outcome: 'available',
|
|
281
468
|
},
|
|
282
469
|
{
|
|
283
470
|
durationMs: 25,
|
|
284
471
|
failure: 'timeout',
|
|
285
472
|
id: 'across',
|
|
286
|
-
operation: '
|
|
473
|
+
operation: 'getQuote',
|
|
287
474
|
outcome: 'failed',
|
|
288
475
|
},
|
|
289
476
|
])
|
|
@@ -298,14 +485,14 @@ describe('middleware', () => {
|
|
|
298
485
|
{
|
|
299
486
|
"durationMs": 12.5,
|
|
300
487
|
"id": "relay",
|
|
301
|
-
"operation": "
|
|
488
|
+
"operation": "getQuote",
|
|
302
489
|
"outcome": "available",
|
|
303
490
|
},
|
|
304
491
|
{
|
|
305
492
|
"durationMs": 25,
|
|
306
493
|
"failure": "timeout",
|
|
307
494
|
"id": "across",
|
|
308
|
-
"operation": "
|
|
495
|
+
"operation": "getQuote",
|
|
309
496
|
"outcome": "failed",
|
|
310
497
|
},
|
|
311
498
|
],
|
package/src/internal/Log.ts
CHANGED
|
@@ -1,24 +1,42 @@
|
|
|
1
1
|
import type { MiddlewareHandler } from 'hono'
|
|
2
2
|
import type { RequestIdVariables } from 'hono/request-id'
|
|
3
|
+
import type { Hex } from 'ox'
|
|
3
4
|
|
|
4
5
|
import * as ApiKey from '../ApiKey.js'
|
|
5
6
|
import type * as Auth from './Auth.js'
|
|
6
7
|
import type * as EdgeCache from './EdgeCache.js'
|
|
7
|
-
import type * as
|
|
8
|
+
import type * as FundingProvider from './funding/Provider.js'
|
|
8
9
|
import type * as Timing from './Timing.js'
|
|
9
10
|
|
|
10
11
|
/** Hono variables read by the request logger and written by other layers. */
|
|
11
12
|
export type Variables = {
|
|
13
|
+
/** Whether the original request exception was already reported. */
|
|
14
|
+
errorCaptured?: boolean | undefined
|
|
12
15
|
/** Stable error code recorded by `Response.error` for the request log entry. */
|
|
13
16
|
errorCode?: string | undefined
|
|
17
|
+
/** Bounded MPP relay outcome emitted by the credential routes. */
|
|
18
|
+
mpp?: Entry['mpp'] | undefined
|
|
14
19
|
/** Bounded outcomes for funding providers attempted by the request. */
|
|
15
20
|
fundingProviderAttempts?: Entry['fundingProviderAttempts'] | undefined
|
|
16
|
-
/**
|
|
21
|
+
/** Whether the optional funding transfer count query failed. */
|
|
22
|
+
fundingTransferCountFailed?: true | undefined
|
|
23
|
+
/** Redacted provider failure details recorded by an upstream provider. */
|
|
17
24
|
providerFailure?: Entry['provider'] | undefined
|
|
18
|
-
/** Redacted provider failures when multiple upstream
|
|
25
|
+
/** Redacted provider failures when multiple upstream providers fail. */
|
|
19
26
|
providerFailures?: Entry['providerFailures'] | undefined
|
|
20
27
|
/** Bounded JSON-RPC failure metadata recorded by a composed RPC handler. */
|
|
21
28
|
rpcResponse?: Entry['rpc'] | undefined
|
|
29
|
+
/** Bounded sponsorship rejection details recorded by the relay app. */
|
|
30
|
+
sponsorship?: Sponsorship | undefined
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
type ErrorMetadata = {
|
|
34
|
+
/** Bounded provider attempts attached to a caught error. */
|
|
35
|
+
fundingProviderAttempts?: Entry['fundingProviderAttempts'] | undefined
|
|
36
|
+
/** Redacted first provider failure attached to a caught error. */
|
|
37
|
+
providerFailure?: Entry['provider'] | undefined
|
|
38
|
+
/** Redacted provider failures attached to a caught error. */
|
|
39
|
+
providerFailures?: Entry['providerFailures'] | undefined
|
|
22
40
|
}
|
|
23
41
|
|
|
24
42
|
/** Hono environment shape used by the request logger. */
|
|
@@ -37,10 +55,12 @@ export type Level = 'error' | 'info' | 'warn'
|
|
|
37
55
|
|
|
38
56
|
/** Redacted upstream provider failure details. */
|
|
39
57
|
export type ProviderFailure = {
|
|
58
|
+
/** Chain whose upstream request failed, when the request selected one. */
|
|
59
|
+
chainId?: number | undefined
|
|
40
60
|
/** Stable provider error code, when one is safe to retain. */
|
|
41
61
|
code?: string | undefined
|
|
42
62
|
/** Failure boundary that rejected the provider request. */
|
|
43
|
-
failure: 'http' | 'network' | 'payload' | 'rate_limit' | 'timeout' | 'unknown'
|
|
63
|
+
failure: 'http' | 'network' | 'payload' | 'query' | 'rate_limit' | 'timeout' | 'unknown'
|
|
44
64
|
/** Provider identifier. */
|
|
45
65
|
id: string
|
|
46
66
|
/** Provider operation identifier. */
|
|
@@ -56,23 +76,65 @@ export type FundingProviderAttempt = {
|
|
|
56
76
|
/** Failure class, present only when the provider attempt failed. */
|
|
57
77
|
failure?: ProviderFailure['failure'] | undefined
|
|
58
78
|
/** Provider identifier. */
|
|
59
|
-
id:
|
|
79
|
+
id: FundingProvider.ProviderId
|
|
60
80
|
/** Stable upstream operation identifier. */
|
|
61
|
-
operation:
|
|
81
|
+
operation: FundingProvider.ProviderOperation
|
|
62
82
|
/** Provider attempt outcome. */
|
|
63
83
|
outcome: 'available' | 'failed' | 'thin' | 'unavailable'
|
|
64
84
|
}
|
|
65
85
|
|
|
86
|
+
/** JSON-RPC methods that can request managed sponsorship. */
|
|
87
|
+
export type SponsorshipMethod =
|
|
88
|
+
| 'eth_fillTransaction'
|
|
89
|
+
| 'eth_sendRawTransaction'
|
|
90
|
+
| 'eth_sendRawTransactionSync'
|
|
91
|
+
| 'eth_signRawTransaction'
|
|
92
|
+
|
|
93
|
+
/** Stable client error codes for sponsorship rejections. */
|
|
94
|
+
export type SponsorshipReason =
|
|
95
|
+
| 'api_key_forbidden'
|
|
96
|
+
| 'api_key_required'
|
|
97
|
+
| 'billing_past_due'
|
|
98
|
+
| 'billing_required'
|
|
99
|
+
| 'chain_id_unsupported'
|
|
100
|
+
| 'fee_token_unsupported'
|
|
101
|
+
| 'internal_error'
|
|
102
|
+
| 'production_api_key_required'
|
|
103
|
+
| 'spend_limit_exceeded'
|
|
104
|
+
| 'tx_fee_limit_exceeded'
|
|
105
|
+
|
|
106
|
+
/** Bounded diagnostics for sponsorship rejections in one JSON-RPC request. */
|
|
107
|
+
export type Sponsorship = {
|
|
108
|
+
/** Common target chain, absent when rejected batch items disagree or are invalid. */
|
|
109
|
+
chainId?: number | undefined
|
|
110
|
+
/** Number of internal sponsorship failures, capped at 65,535; absent when zero. */
|
|
111
|
+
internalErrors?: number | undefined
|
|
112
|
+
/** Common sponsorship method, absent when rejected batch items use different methods. */
|
|
113
|
+
method?: SponsorshipMethod | undefined
|
|
114
|
+
/** Sponsorship request outcome. */
|
|
115
|
+
outcome: 'rejected'
|
|
116
|
+
/** Keccak256 of the caller's raw transaction, present only for a single-request body. */
|
|
117
|
+
payloadHash?: Hex.Hex | undefined
|
|
118
|
+
/** Common client error code, absent when rejected batch items have different codes. */
|
|
119
|
+
reason?: SponsorshipReason | undefined
|
|
120
|
+
/** Number of sponsorship policy rejections, capped at 65,535. */
|
|
121
|
+
rejections: number
|
|
122
|
+
}
|
|
123
|
+
|
|
66
124
|
/** One canonical request log entry. */
|
|
67
125
|
export type Entry = {
|
|
68
126
|
/** `'hit'` when the edge response cache served the request without reaching the origin handlers. */
|
|
69
127
|
cache?: 'hit' | undefined
|
|
70
128
|
/** Total request duration in milliseconds. */
|
|
71
129
|
duration: number
|
|
130
|
+
/** Whether the original request exception was already reported. */
|
|
131
|
+
errorCaptured?: boolean | undefined
|
|
72
132
|
/** Stable error code when the response is a JSON error envelope (e.g. `not_found`, `api_key_invalid`). */
|
|
73
133
|
errorCode?: string | undefined
|
|
74
134
|
/** Bounded funding provider attempts made while serving the request. */
|
|
75
135
|
fundingProviderAttempts?: readonly FundingProviderAttempt[] | undefined
|
|
136
|
+
/** Whether the optional funding transfer count query failed. */
|
|
137
|
+
fundingTransferCountFailed?: true | undefined
|
|
76
138
|
/** Log level: 5xx `error`; 4xx or JSON-RPC failure `warn`; otherwise `info`. */
|
|
77
139
|
level: Level
|
|
78
140
|
/** Request method. */
|
|
@@ -81,6 +143,21 @@ export type Entry = {
|
|
|
81
143
|
path: string
|
|
82
144
|
/** MPP payment reason when the request was paid per call. */
|
|
83
145
|
payment?: Auth.Payment['reason'] | undefined
|
|
146
|
+
/** Bounded outcome for an MPP relay operation. */
|
|
147
|
+
mpp?: {
|
|
148
|
+
/** Resolved Tempo chain selected by the credential. */
|
|
149
|
+
chainId: number
|
|
150
|
+
/** Stable relay failure code, absent when the operation succeeded. */
|
|
151
|
+
errorCode?: string | undefined
|
|
152
|
+
/** Idempotency claim outcome for broadcast operations. */
|
|
153
|
+
idempotency?: 'claimed' | 'pending' | 'replay' | undefined
|
|
154
|
+
/** Whether a fee payer was supplied for the credential. */
|
|
155
|
+
feePayer: boolean
|
|
156
|
+
/** Relay route operation. */
|
|
157
|
+
operation: 'broadcast' | 'verify'
|
|
158
|
+
/** Relay operation outcome, independent of the HTTP status. */
|
|
159
|
+
outcome: 'failure' | 'success'
|
|
160
|
+
}
|
|
84
161
|
/** Caller identity. Raw API-key tokens and the super admin secret are never logged. */
|
|
85
162
|
principal?:
|
|
86
163
|
| {
|
|
@@ -100,9 +177,9 @@ export type Entry = {
|
|
|
100
177
|
type: 'api_key' | 'public' | 'session' | 'super_admin'
|
|
101
178
|
}
|
|
102
179
|
| undefined
|
|
103
|
-
/** Redacted upstream provider failure details, when
|
|
180
|
+
/** Redacted upstream provider failure details, when a provider request fails. */
|
|
104
181
|
provider?: ProviderFailure | undefined
|
|
105
|
-
/** Redacted failures for every provider when multiple
|
|
182
|
+
/** Redacted failures for every provider when multiple providers fail. */
|
|
106
183
|
providerFailures?: readonly ProviderFailure[] | undefined
|
|
107
184
|
/** Raw query string (no leading `?`) with API-key tokens redacted, when present. */
|
|
108
185
|
query?: string | undefined
|
|
@@ -131,10 +208,14 @@ export type Entry = {
|
|
|
131
208
|
dataCode?: string | undefined
|
|
132
209
|
/** Number of failed responses in the single or batch JSON-RPC response. */
|
|
133
210
|
errors: number
|
|
211
|
+
/** Number of JSON-RPC server errors, capped at 65,535; absent when zero. */
|
|
212
|
+
serverErrors?: number | undefined
|
|
134
213
|
}
|
|
214
|
+
/** Bounded sponsorship rejection diagnostics, without request or response bodies. */
|
|
215
|
+
sponsorship?: Sponsorship | undefined
|
|
135
216
|
/** HTTP response status code. JSON-RPC failures retain their protocol-native `200`. */
|
|
136
217
|
status: number
|
|
137
|
-
/**
|
|
218
|
+
/** Longest upstream operation duration per Server-Timing name, in milliseconds (e.g. RPC and TIDX calls). */
|
|
138
219
|
timings?: Record<string, number> | undefined
|
|
139
220
|
}
|
|
140
221
|
|
|
@@ -169,14 +250,23 @@ export function middleware<environment extends Environment = Environment>(
|
|
|
169
250
|
// Hono cannot resolve variable types through the generic `environment`,
|
|
170
251
|
// so shared-variable reads are cast from the environment contract above
|
|
171
252
|
// (the same pattern EdgeCache uses for its cross-layer reads).
|
|
253
|
+
const error = c.error as ErrorMetadata | undefined
|
|
172
254
|
const principal = c.get('principal' as never) as Auth.Principal | undefined
|
|
255
|
+
const errorCaptured = c.get('errorCaptured' as never) as boolean | undefined
|
|
173
256
|
const errorCode = c.get('errorCode' as never) as string | undefined
|
|
174
|
-
const fundingProviderAttempts =
|
|
175
|
-
|
|
257
|
+
const fundingProviderAttempts =
|
|
258
|
+
error?.fundingProviderAttempts ??
|
|
259
|
+
(c.get('fundingProviderAttempts' as never) as Entry['fundingProviderAttempts'] | undefined)
|
|
260
|
+
const fundingTransferCountFailed = c.get('fundingTransferCountFailed' as never) as
|
|
261
|
+
| true
|
|
176
262
|
| undefined
|
|
177
|
-
const
|
|
178
|
-
const
|
|
263
|
+
const mpp = c.get('mpp' as never) as Entry['mpp']
|
|
264
|
+
const provider =
|
|
265
|
+
error?.providerFailure ?? (c.get('providerFailure' as never) as Entry['provider'])
|
|
266
|
+
const providerFailures =
|
|
267
|
+
error?.providerFailures ?? (c.get('providerFailures' as never) as Entry['providerFailures'])
|
|
179
268
|
const rpc = c.get('rpcResponse' as never) as Entry['rpc']
|
|
269
|
+
const sponsorship = c.get('sponsorship' as never) as Entry['sponsorship']
|
|
180
270
|
|
|
181
271
|
// The `request` total metric duplicates `duration` (measured here, one
|
|
182
272
|
// layer further out), so only operation timings are kept.
|
|
@@ -184,7 +274,14 @@ export function middleware<environment extends Environment = Environment>(
|
|
|
184
274
|
(metric) => metric.name !== 'request',
|
|
185
275
|
)
|
|
186
276
|
const timings = metrics?.length
|
|
187
|
-
? Object.fromEntries(
|
|
277
|
+
? Object.fromEntries(
|
|
278
|
+
metrics.reduce((result, metric) => {
|
|
279
|
+
const duration = round(metric.duration)
|
|
280
|
+
const existing = result.get(metric.name)
|
|
281
|
+
if (existing === undefined || duration > existing) result.set(metric.name, duration)
|
|
282
|
+
return result
|
|
283
|
+
}, new Map<string, number>()),
|
|
284
|
+
)
|
|
188
285
|
: undefined
|
|
189
286
|
|
|
190
287
|
const rateLimit = (() => {
|
|
@@ -204,15 +301,22 @@ export function middleware<environment extends Environment = Environment>(
|
|
|
204
301
|
const result = fn({
|
|
205
302
|
...(c.get('edgeCacheStatus' as never) === 'hit' ? { cache: 'hit' as const } : {}),
|
|
206
303
|
duration: round(duration),
|
|
304
|
+
...(errorCaptured === undefined ? {} : { errorCaptured }),
|
|
207
305
|
...(errorCode === undefined ? {} : { errorCode }),
|
|
208
306
|
...(fundingProviderAttempts === undefined ? {} : { fundingProviderAttempts }),
|
|
307
|
+
...(fundingTransferCountFailed === undefined ? {} : { fundingTransferCountFailed }),
|
|
209
308
|
level:
|
|
210
|
-
status >= 500 ||
|
|
309
|
+
status >= 500 ||
|
|
310
|
+
rpcServerError(rpc?.code) ||
|
|
311
|
+
(rpc?.serverErrors ?? 0) > 0 ||
|
|
312
|
+
(sponsorship?.internalErrors ?? 0) > 0 ||
|
|
313
|
+
mpp?.errorCode === 'unknown'
|
|
211
314
|
? 'error'
|
|
212
|
-
: status >= 400 || rpc
|
|
315
|
+
: status >= 400 || rpc || sponsorship
|
|
213
316
|
? 'warn'
|
|
214
317
|
: 'info',
|
|
215
318
|
method: c.req.method,
|
|
319
|
+
...(mpp === undefined ? {} : { mpp }),
|
|
216
320
|
path: url.pathname,
|
|
217
321
|
...(principal?.payment === undefined ? {} : { payment: principal.payment.reason }),
|
|
218
322
|
...(principal === undefined
|
|
@@ -239,6 +343,7 @@ export function middleware<environment extends Environment = Environment>(
|
|
|
239
343
|
requestId: c.get('requestId' as never) as string,
|
|
240
344
|
route: c.req.routePath,
|
|
241
345
|
...(rpc === undefined ? {} : { rpc }),
|
|
346
|
+
...(sponsorship === undefined ? {} : { sponsorship }),
|
|
242
347
|
status,
|
|
243
348
|
...(timings === undefined ? {} : { timings }),
|
|
244
349
|
})
|
|
@@ -289,17 +394,19 @@ export function rpcErrors(body: unknown): Entry['rpc'] {
|
|
|
289
394
|
|
|
290
395
|
const codes = new Set(errors.map((error) => error.code))
|
|
291
396
|
const dataCodes = new Set(errors.map((error) => error.dataCode).filter(Boolean))
|
|
397
|
+
const serverErrors = errors.filter((error) => rpcServerError(error.code)).length
|
|
292
398
|
return {
|
|
293
399
|
...(codes.size === 1 ? { code: errors[0]!.code } : {}),
|
|
294
400
|
...(dataCodes.size === 1 && errors.every((error) => error.dataCode !== undefined)
|
|
295
401
|
? { dataCode: errors[0]!.dataCode }
|
|
296
402
|
: {}),
|
|
297
403
|
errors: Math.min(errors.length, 65_535),
|
|
404
|
+
...(serverErrors === 0 ? {} : { serverErrors: Math.min(serverErrors, 65_535) }),
|
|
298
405
|
}
|
|
299
406
|
}
|
|
300
407
|
|
|
301
408
|
function rpcServerError(code: number | undefined) {
|
|
302
|
-
return code === -32603
|
|
409
|
+
return code === -32603
|
|
303
410
|
}
|
|
304
411
|
|
|
305
412
|
export declare namespace middleware {
|