tapimo 0.7.0 → 0.7.2
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/dist/ApiKeys.d.ts +24 -7
- package/dist/ApiKeys.d.ts.map +1 -1
- package/dist/ApiKeys.js +17 -5
- package/dist/ApiKeys.js.map +1 -1
- package/dist/App.d.ts +12104 -7861
- package/dist/App.d.ts.map +1 -1
- package/dist/App.js +191 -128
- 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 +601 -20
- 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 +94 -11
- package/dist/admin/apps/api-keys.d.ts.map +1 -1
- package/dist/admin/apps/api-keys.js +141 -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/verified-tokens.d.ts +166 -166
- 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 +151 -95
- package/dist/admin/ui.generated.js.map +1 -1
- package/dist/analytics/Analytics.d.ts +2 -0
- package/dist/analytics/Analytics.d.ts.map +1 -1
- package/dist/analytics/Analytics.js +18 -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 +14377 -10165
- package/dist/apps/data/App.d.ts.map +1 -1
- package/dist/apps/data/App.js +91 -19
- 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 +32 -32
- 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 +312 -312
- package/dist/apps/data/routes/balances.d.ts +18 -18
- package/dist/apps/data/routes/balances.js +5 -5
- package/dist/apps/data/routes/balances.js.map +1 -1
- package/dist/apps/data/routes/coingecko.d.ts +176 -176
- 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 +2144 -0
- package/dist/apps/data/routes/earn.d.ts.map +1 -0
- package/dist/apps/data/routes/earn.js +947 -0
- package/dist/apps/data/routes/earn.js.map +1 -0
- package/dist/apps/data/routes/exchanges.d.ts +1231 -324
- 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.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/funding.d.ts +4092 -387
- package/dist/apps/data/routes/funding.d.ts.map +1 -1
- package/dist/apps/data/routes/funding.js +1403 -256
- package/dist/apps/data/routes/funding.js.map +1 -1
- package/dist/apps/data/routes/indexer.d.ts +5 -5
- package/dist/apps/data/routes/indexer.d.ts.map +1 -1
- package/dist/apps/data/routes/indexer.js +19 -2
- package/dist/apps/data/routes/indexer.js.map +1 -1
- package/dist/apps/data/routes/receipts.d.ts +265 -265
- 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 +5 -5
- package/dist/apps/data/routes/rpc.d.ts.map +1 -1
- package/dist/apps/data/routes/rpc.js +211 -22
- package/dist/apps/data/routes/rpc.js.map +1 -1
- package/dist/apps/data/routes/tokenlist.d.ts +36 -36
- package/dist/apps/data/routes/tokenlist.d.ts.map +1 -1
- package/dist/apps/data/routes/tokenlist.js +49 -9
- package/dist/apps/data/routes/tokenlist.js.map +1 -1
- package/dist/apps/data/routes/tokens.d.ts +116 -88
- package/dist/apps/data/routes/tokens.d.ts.map +1 -1
- package/dist/apps/data/routes/tokens.js +198 -91
- package/dist/apps/data/routes/tokens.js.map +1 -1
- package/dist/apps/data/routes/transactions.d.ts +55 -55
- 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 +78 -29
- 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 +10 -10
- 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.map +1 -1
- package/dist/apps/data/routes/verified-tokens.js +34 -9
- package/dist/apps/data/routes/verified-tokens.js.map +1 -1
- package/dist/apps/data/routes/webhooks.d.ts +5 -3
- package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
- package/dist/apps/data/routes/webhooks.js +175 -65
- 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/index.d.ts +2 -1
- package/dist/apps/index.d.ts.map +1 -1
- package/dist/apps/index.js +2 -1
- package/dist/apps/index.js.map +1 -1
- package/dist/apps/management/App.d.ts +670 -670
- 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 +5 -5
- package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
- package/dist/apps/management/routes/api-keys.js +2 -8
- 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 +62 -62
- 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 +30 -30
- package/dist/apps/management/routes/me.d.ts +6 -6
- package/dist/apps/management/routes/members.d.ts +78 -78
- package/dist/apps/management/routes/orgs.d.ts +48 -48
- 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 +9 -9
- 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 +80 -80
- package/dist/apps/management/routes/verified-token-requests.d.ts +36 -36
- package/dist/apps/management/routes/webhooks.d.ts +50 -50
- 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/mpp/App.d.ts +55 -56
- 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 +184 -24
- 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 +16 -7
- package/dist/apps/relay/Sponsorships.js.map +1 -1
- package/dist/db/Db.d.ts +20 -0
- package/dist/db/Db.d.ts.map +1 -1
- package/dist/db/Db.js +342 -0
- package/dist/db/Db.js.map +1 -1
- package/dist/db/Schema.d.ts +921 -1
- package/dist/db/Schema.d.ts.map +1 -1
- package/dist/db/Schema.js +269 -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 +159 -0
- package/dist/db/tables/fundingDepositAddresses.d.ts.map +1 -0
- package/dist/db/tables/fundingDepositAddresses.js +206 -0
- package/dist/db/tables/fundingDepositAddresses.js.map +1 -0
- package/dist/db/tables/fundingDeposits.d.ts +115 -0
- package/dist/db/tables/fundingDeposits.d.ts.map +1 -0
- package/dist/db/tables/fundingDeposits.js +100 -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 +35 -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 +4 -2
- package/dist/db/tables/sponsoredTransactions.d.ts.map +1 -1
- package/dist/db/tables/sponsoredTransactions.js +14 -4
- 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 +26 -0
- package/dist/internal/Auth.d.ts.map +1 -1
- package/dist/internal/Auth.js +35 -2
- package/dist/internal/Auth.js.map +1 -1
- package/dist/internal/Cache.d.ts.map +1 -1
- package/dist/internal/Cache.js +16 -10
- 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 +9 -2
- package/dist/internal/EdgeCache.d.ts.map +1 -1
- package/dist/internal/EdgeCache.js +36 -9
- 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/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 +1 -1
- package/dist/internal/OpenApi.d.ts.map +1 -1
- package/dist/internal/OpenApi.js +3 -0
- 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 +8 -3
- package/dist/internal/Schema.d.ts.map +1 -1
- package/dist/internal/Schema.js +24 -13
- 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 +43 -24
- package/dist/internal/Tidx.d.ts.map +1 -1
- package/dist/internal/Tidx.js +79 -11
- package/dist/internal/Tidx.js.map +1 -1
- package/dist/internal/Viem.d.ts +82 -65
- package/dist/internal/Viem.d.ts.map +1 -1
- package/dist/internal/Viem.js +83 -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 +366 -0
- package/dist/internal/funding/Deposit.d.ts.map +1 -0
- package/dist/internal/funding/Deposit.js +286 -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 +52 -0
- package/dist/internal/funding/Evidence.d.ts.map +1 -0
- package/dist/internal/funding/Evidence.js +314 -0
- package/dist/internal/funding/Evidence.js.map +1 -0
- package/dist/internal/funding/Provider.d.ts +1186 -0
- package/dist/internal/funding/Provider.d.ts.map +1 -0
- package/dist/internal/funding/Provider.js +1081 -0
- package/dist/internal/funding/Provider.js.map +1 -0
- package/dist/internal/funding/Reconciliation.d.ts +113 -0
- package/dist/internal/funding/Reconciliation.d.ts.map +1 -0
- package/dist/internal/funding/Reconciliation.js +676 -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/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 +13 -0
- package/dist/internal/funding/index.d.ts.map +1 -0
- package/dist/internal/funding/index.js +13 -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 +46 -0
- package/dist/internal/funding/providers/relay.d.ts.map +1 -0
- package/dist/internal/funding/providers/relay.js +464 -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 +9 -4
- package/src/ApiKeys.test.ts +11 -7
- package/src/ApiKeys.ts +37 -9
- package/src/App.test.ts +85 -10
- package/src/App.ts +224 -137
- package/src/Assets.ts +29 -4
- package/src/Client.test-d.ts +650 -30
- 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 +167 -23
- package/src/admin/apps/api-keys.ts +166 -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 +189 -95
- package/src/analytics/Analytics.test.ts +69 -10
- package/src/analytics/Analytics.ts +20 -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 +84 -1
- package/src/apps/data/App.test.ts +38 -9
- package/src/apps/data/App.ts +96 -33
- 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 +1108 -0
- package/src/apps/data/routes/earn.ts +1391 -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/funding.test.ts +2712 -221
- package/src/apps/data/routes/funding.ts +1604 -387
- package/src/apps/data/routes/indexer.test.ts +43 -34
- package/src/apps/data/routes/indexer.ts +19 -2
- 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 +243 -25
- package/src/apps/data/routes/tokenlist.test.ts +15 -0
- package/src/apps/data/routes/tokenlist.ts +88 -22
- package/src/apps/data/routes/tokens.ts +262 -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/verified-tokens.test.ts +51 -0
- package/src/apps/data/routes/verified-tokens.ts +52 -15
- package/src/apps/data/routes/webhooks.test.ts +432 -33
- package/src/apps/data/routes/webhooks.ts +189 -79
- 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/index.ts +2 -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 +5 -3
- package/src/apps/management/routes/api-keys.ts +2 -9
- 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/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 +122 -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 +495 -64
- package/src/apps/relay/App.ts +234 -24
- package/src/apps/relay/Sponsorships.test.ts +51 -0
- package/src/apps/relay/Sponsorships.ts +19 -7
- package/src/db/Db.ts +439 -0
- package/src/db/Schema.ts +325 -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 +376 -0
- package/src/db/tables/fundingDeposits.test.ts +261 -0
- package/src/db/tables/fundingDeposits.ts +229 -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.test.ts +88 -0
- package/src/db/tables/organizations.ts +42 -1
- package/src/db/tables/projects.ts +16 -0
- package/src/db/tables/requestUsage.ts +23 -0
- package/src/db/tables/sponsoredTransactions.test.ts +52 -2
- package/src/db/tables/sponsoredTransactions.ts +18 -6
- 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 +48 -0
- package/src/internal/Auth.ts +61 -2
- package/src/internal/Cache.ts +13 -9
- 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 +37 -5
- package/src/internal/EdgeCache.ts +39 -7
- 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/Log.test-d.ts +41 -8
- package/src/internal/Log.test.ts +189 -8
- 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 +3 -0
- package/src/internal/Provider.test.ts +17 -0
- package/src/internal/Provider.ts +17 -0
- package/src/internal/Schema.test.ts +13 -0
- package/src/internal/Schema.ts +41 -24
- 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 +212 -18
- package/src/internal/Tidx.ts +112 -32
- package/src/internal/VerifiedTokens.test.ts +15 -0
- package/src/internal/Viem.test.ts +170 -17
- package/src/internal/Viem.ts +111 -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 +453 -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 +430 -0
- package/src/internal/funding/Provider.test.ts +1328 -0
- package/src/internal/funding/Provider.ts +1796 -0
- package/src/internal/funding/Reconciliation.local.test.ts +504 -0
- package/src/internal/funding/Reconciliation.test.ts +2020 -0
- package/src/internal/funding/Reconciliation.ts +930 -0
- package/src/internal/funding/Route.test.ts +66 -0
- package/src/internal/funding/Route.ts +29 -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 +20 -0
- package/src/internal/funding/index.ts +12 -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 +474 -0
- package/src/internal/funding/providers/relay.ts +559 -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/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/internal/FundingQuotes.test.ts +0 -456
- package/src/internal/FundingQuotes.ts +0 -944
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,6 +51,52 @@ 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) })
|
|
@@ -174,6 +221,92 @@ describe('middleware', () => {
|
|
|
174
221
|
`)
|
|
175
222
|
})
|
|
176
223
|
|
|
224
|
+
test('includes bounded sponsorship rejection diagnostics', async () => {
|
|
225
|
+
const entries: Log.Entry[] = []
|
|
226
|
+
const api = app({ emit: (entry) => void entries.push(entry) })
|
|
227
|
+
api.post('/rpc/sponsor', (c) => {
|
|
228
|
+
const body = {
|
|
229
|
+
error: {
|
|
230
|
+
code: -32602,
|
|
231
|
+
data: { code: 'production_api_key_required' },
|
|
232
|
+
message: 'Sponsorship rejected.',
|
|
233
|
+
},
|
|
234
|
+
id: 1,
|
|
235
|
+
jsonrpc: '2.0',
|
|
236
|
+
}
|
|
237
|
+
c.set('rpcResponse', Log.rpcErrors(body))
|
|
238
|
+
c.set('sponsorship', {
|
|
239
|
+
chainId: 4217,
|
|
240
|
+
method: 'eth_signRawTransaction',
|
|
241
|
+
outcome: 'rejected',
|
|
242
|
+
payloadHash: `0x${'aa'.repeat(32)}` as Hex.Hex,
|
|
243
|
+
reason: 'production_api_key_required',
|
|
244
|
+
rejections: 1,
|
|
245
|
+
})
|
|
246
|
+
return c.json(body)
|
|
247
|
+
})
|
|
248
|
+
|
|
249
|
+
await api.request('/rpc/sponsor', { method: 'POST' })
|
|
250
|
+
|
|
251
|
+
expect(stable(entries[0]!)).toMatchInlineSnapshot(`
|
|
252
|
+
{
|
|
253
|
+
"level": "warn",
|
|
254
|
+
"method": "POST",
|
|
255
|
+
"path": "/rpc/sponsor",
|
|
256
|
+
"route": "/rpc/sponsor",
|
|
257
|
+
"rpc": {
|
|
258
|
+
"code": -32602,
|
|
259
|
+
"dataCode": "production_api_key_required",
|
|
260
|
+
"errors": 1,
|
|
261
|
+
},
|
|
262
|
+
"sponsorship": {
|
|
263
|
+
"chainId": 4217,
|
|
264
|
+
"method": "eth_signRawTransaction",
|
|
265
|
+
"outcome": "rejected",
|
|
266
|
+
"payloadHash": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
267
|
+
"reason": "production_api_key_required",
|
|
268
|
+
"rejections": 1,
|
|
269
|
+
},
|
|
270
|
+
"status": 200,
|
|
271
|
+
}
|
|
272
|
+
`)
|
|
273
|
+
})
|
|
274
|
+
|
|
275
|
+
test('records an MPP relay failure returned with HTTP 200', async () => {
|
|
276
|
+
const entries: Log.Entry[] = []
|
|
277
|
+
const api = app({ emit: (entry) => void entries.push(entry) })
|
|
278
|
+
api.post('/v1/mpp/validate', (c) => {
|
|
279
|
+
c.set('mpp', {
|
|
280
|
+
chainId: 4217,
|
|
281
|
+
errorCode: 'unknown',
|
|
282
|
+
feePayer: false,
|
|
283
|
+
operation: 'verify',
|
|
284
|
+
outcome: 'failure',
|
|
285
|
+
})
|
|
286
|
+
return c.json({ success: false }, 200)
|
|
287
|
+
})
|
|
288
|
+
|
|
289
|
+
const response = await api.request('/v1/mpp/validate', { method: 'POST' })
|
|
290
|
+
|
|
291
|
+
expect(response.status).toBe(200)
|
|
292
|
+
expect(stable(entries[0]!)).toMatchInlineSnapshot(`
|
|
293
|
+
{
|
|
294
|
+
"level": "error",
|
|
295
|
+
"method": "POST",
|
|
296
|
+
"mpp": {
|
|
297
|
+
"chainId": 4217,
|
|
298
|
+
"errorCode": "unknown",
|
|
299
|
+
"feePayer": false,
|
|
300
|
+
"operation": "verify",
|
|
301
|
+
"outcome": "failure",
|
|
302
|
+
},
|
|
303
|
+
"path": "/v1/mpp/validate",
|
|
304
|
+
"route": "/v1/mpp/validate",
|
|
305
|
+
"status": 200,
|
|
306
|
+
}
|
|
307
|
+
`)
|
|
308
|
+
})
|
|
309
|
+
|
|
177
310
|
test('logs JSON-RPC server errors at error level', async () => {
|
|
178
311
|
const entries: Log.Entry[] = []
|
|
179
312
|
const api = app({ emit: (entry) => void entries.push(entry) })
|
|
@@ -196,7 +329,24 @@ describe('middleware', () => {
|
|
|
196
329
|
expect(entries[0]?.level).toBe('error')
|
|
197
330
|
})
|
|
198
331
|
|
|
199
|
-
test('
|
|
332
|
+
test('logs internal sponsorship failures at error level', async () => {
|
|
333
|
+
const entries: Log.Entry[] = []
|
|
334
|
+
const api = app({ emit: (entry) => void entries.push(entry) })
|
|
335
|
+
api.post('/rpc/sponsor', (c) => {
|
|
336
|
+
c.set('sponsorship', {
|
|
337
|
+
internalErrors: 1,
|
|
338
|
+
outcome: 'rejected',
|
|
339
|
+
rejections: 1,
|
|
340
|
+
})
|
|
341
|
+
return c.json({ id: 1, jsonrpc: '2.0', result: {} })
|
|
342
|
+
})
|
|
343
|
+
|
|
344
|
+
await api.request('/rpc/sponsor', { method: 'POST' })
|
|
345
|
+
|
|
346
|
+
expect(entries[0]?.level).toBe('error')
|
|
347
|
+
})
|
|
348
|
+
|
|
349
|
+
test('escalates mixed JSON-RPC batches containing server errors', async () => {
|
|
200
350
|
const entries: Log.Entry[] = []
|
|
201
351
|
const api = app({ emit: (entry) => void entries.push(entry) })
|
|
202
352
|
api.post('/rpc/relay', (c) => {
|
|
@@ -217,12 +367,43 @@ describe('middleware', () => {
|
|
|
217
367
|
|
|
218
368
|
expect(stable(entries[0]!)).toMatchInlineSnapshot(`
|
|
219
369
|
{
|
|
220
|
-
"level": "
|
|
370
|
+
"level": "error",
|
|
221
371
|
"method": "POST",
|
|
222
372
|
"path": "/rpc/relay",
|
|
223
373
|
"route": "/rpc/relay",
|
|
224
374
|
"rpc": {
|
|
225
375
|
"errors": 2,
|
|
376
|
+
"serverErrors": 1,
|
|
377
|
+
},
|
|
378
|
+
"status": 200,
|
|
379
|
+
}
|
|
380
|
+
`)
|
|
381
|
+
})
|
|
382
|
+
|
|
383
|
+
test('keeps routine node rejections out of server-error alerts', async () => {
|
|
384
|
+
const entries: Log.Entry[] = []
|
|
385
|
+
const api = app({ emit: (entry) => void entries.push(entry) })
|
|
386
|
+
api.post('/rpc/relay', (c) => {
|
|
387
|
+
const body = {
|
|
388
|
+
error: { code: -32_000, message: 'insufficient funds' },
|
|
389
|
+
id: 1,
|
|
390
|
+
jsonrpc: '2.0',
|
|
391
|
+
}
|
|
392
|
+
c.set('rpcResponse', Log.rpcErrors(body))
|
|
393
|
+
return c.json(body)
|
|
394
|
+
})
|
|
395
|
+
|
|
396
|
+
await api.request('/rpc/relay', { method: 'POST' })
|
|
397
|
+
|
|
398
|
+
expect(stable(entries[0]!)).toMatchInlineSnapshot(`
|
|
399
|
+
{
|
|
400
|
+
"level": "warn",
|
|
401
|
+
"method": "POST",
|
|
402
|
+
"path": "/rpc/relay",
|
|
403
|
+
"route": "/rpc/relay",
|
|
404
|
+
"rpc": {
|
|
405
|
+
"code": -32000,
|
|
406
|
+
"errors": 1,
|
|
226
407
|
},
|
|
227
408
|
"status": 200,
|
|
228
409
|
}
|
|
@@ -237,7 +418,7 @@ describe('middleware', () => {
|
|
|
237
418
|
code: 'UNAUTHORIZED',
|
|
238
419
|
failure: 'http',
|
|
239
420
|
id: 'relay',
|
|
240
|
-
operation: '
|
|
421
|
+
operation: 'getQuote',
|
|
241
422
|
status: 401,
|
|
242
423
|
})
|
|
243
424
|
return Response.error(c, {
|
|
@@ -259,7 +440,7 @@ describe('middleware', () => {
|
|
|
259
440
|
"code": "UNAUTHORIZED",
|
|
260
441
|
"failure": "http",
|
|
261
442
|
"id": "relay",
|
|
262
|
-
"operation": "
|
|
443
|
+
"operation": "getQuote",
|
|
263
444
|
"status": 401,
|
|
264
445
|
},
|
|
265
446
|
"route": "/provider",
|
|
@@ -276,14 +457,14 @@ describe('middleware', () => {
|
|
|
276
457
|
{
|
|
277
458
|
durationMs: 12.5,
|
|
278
459
|
id: 'relay',
|
|
279
|
-
operation: '
|
|
460
|
+
operation: 'getQuote',
|
|
280
461
|
outcome: 'available',
|
|
281
462
|
},
|
|
282
463
|
{
|
|
283
464
|
durationMs: 25,
|
|
284
465
|
failure: 'timeout',
|
|
285
466
|
id: 'across',
|
|
286
|
-
operation: '
|
|
467
|
+
operation: 'getQuote',
|
|
287
468
|
outcome: 'failed',
|
|
288
469
|
},
|
|
289
470
|
])
|
|
@@ -298,14 +479,14 @@ describe('middleware', () => {
|
|
|
298
479
|
{
|
|
299
480
|
"durationMs": 12.5,
|
|
300
481
|
"id": "relay",
|
|
301
|
-
"operation": "
|
|
482
|
+
"operation": "getQuote",
|
|
302
483
|
"outcome": "available",
|
|
303
484
|
},
|
|
304
485
|
{
|
|
305
486
|
"durationMs": 25,
|
|
306
487
|
"failure": "timeout",
|
|
307
488
|
"id": "across",
|
|
308
|
-
"operation": "
|
|
489
|
+
"operation": "getQuote",
|
|
309
490
|
"outcome": "failed",
|
|
310
491
|
},
|
|
311
492
|
],
|
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 {
|