tapimo 0.7.1 → 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 +99 -43
- 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 +12125 -7913
- 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 +1625 -718
- 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/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 +30 -30
- 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 +263 -263
- 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 +39 -8
- package/dist/apps/data/routes/tokenlist.js.map +1 -1
- package/dist/apps/data/routes/tokens.d.ts +114 -86
- 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 +53 -53
- 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/webhooks.d.ts +369 -367
- 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/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 +2 -2
- 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 +2 -2
- 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/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 +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/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 +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 +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 +8 -1
- package/dist/internal/EdgeCache.d.ts.map +1 -1
- package/dist/internal/EdgeCache.js +33 -7
- 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 +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 +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 +113 -43
- 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 +28 -11
- 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.ts +72 -19
- 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/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 +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/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.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 +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 +19 -0
- package/src/internal/EdgeCache.ts +35 -5
- 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.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 +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
|
@@ -59,7 +59,13 @@ export function middleware(options = {}) {
|
|
|
59
59
|
// Query credentials must reach auth and never enter cache keys.
|
|
60
60
|
!new URL(c.req.url).searchParams.has('key') &&
|
|
61
61
|
isCacheableRoute(c);
|
|
62
|
-
const key = eligible
|
|
62
|
+
const key = eligible
|
|
63
|
+
? await routeCacheKey(c).catch(() => {
|
|
64
|
+
// Key generators may parse request input before route validation runs.
|
|
65
|
+
// Bypass caching so the validation middleware can return its response.
|
|
66
|
+
return undefined;
|
|
67
|
+
})
|
|
68
|
+
: undefined;
|
|
63
69
|
// Honor the standard request `Cache-Control` directives so a caller can
|
|
64
70
|
// refresh a stale entry on the colo serving them without any out-of-band
|
|
65
71
|
// purge: `no-cache` skips the stored hit but still re-stores the fresh
|
|
@@ -114,12 +120,15 @@ export function middleware(options = {}) {
|
|
|
114
120
|
// pays the store lookup only when a matched handler carries it.
|
|
115
121
|
const cacheableSymbol = Symbol('tempoApi.edgeCacheable');
|
|
116
122
|
const eligibility = new WeakMap();
|
|
123
|
+
const keys = new WeakMap();
|
|
117
124
|
/**
|
|
118
125
|
* Marks a route handler/middleware as publishing an edge-cache policy, so
|
|
119
126
|
* {@link middleware} looks its route up in the edge cache. `Cache.response`
|
|
120
127
|
* applies it; routes composed any other way never enter the shared cache.
|
|
121
128
|
*/
|
|
122
|
-
export function markCacheable(handler) {
|
|
129
|
+
export function markCacheable(handler, options = {}) {
|
|
130
|
+
if (options.key)
|
|
131
|
+
keys.set(handler, options.key);
|
|
123
132
|
return Object.assign(handler, { [cacheableSymbol]: true });
|
|
124
133
|
}
|
|
125
134
|
/** Adds a request eligibility check; every check must permit caching. */
|
|
@@ -141,6 +150,17 @@ function isCacheableRoute(c) {
|
|
|
141
150
|
}
|
|
142
151
|
return cacheable;
|
|
143
152
|
}
|
|
153
|
+
async function routeCacheKey(c) {
|
|
154
|
+
let requestUrl = c.req.url;
|
|
155
|
+
for (const route of matchedRoutes(c)) {
|
|
156
|
+
if (!(cacheableSymbol in route.handler))
|
|
157
|
+
continue;
|
|
158
|
+
const key = keys.get(route.handler);
|
|
159
|
+
if (key)
|
|
160
|
+
requestUrl = await key(c);
|
|
161
|
+
}
|
|
162
|
+
return cacheKey(requestUrl);
|
|
163
|
+
}
|
|
144
164
|
// Consumes `response` (callers pass a dedicated clone; the client streams the
|
|
145
165
|
// original).
|
|
146
166
|
async function serialize(response, policy) {
|
|
@@ -167,7 +187,7 @@ function serveHit(ifNoneMatch, value) {
|
|
|
167
187
|
const { body, encoding, headers, status } = JSON.parse(value);
|
|
168
188
|
const responseHeaders = new Headers(headers);
|
|
169
189
|
const etag = responseHeaders.get('etag');
|
|
170
|
-
if (
|
|
190
|
+
if (Etag.matches(etag, ifNoneMatch)) {
|
|
171
191
|
const notModified = new Headers();
|
|
172
192
|
for (const name of ['Cache-Control', 'ETag', 'Vary']) {
|
|
173
193
|
const header = responseHeaders.get(name);
|
|
@@ -213,10 +233,16 @@ function getWaitUntil(c) {
|
|
|
213
233
|
return undefined;
|
|
214
234
|
}
|
|
215
235
|
}
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
236
|
+
var Etag;
|
|
237
|
+
(function (Etag) {
|
|
238
|
+
function matches(etag, ifNoneMatch) {
|
|
239
|
+
if (!etag || !ifNoneMatch)
|
|
240
|
+
return false;
|
|
241
|
+
const strip = (tag) => tag.trim().replace(/^W\//, '');
|
|
242
|
+
return ifNoneMatch.split(',').some((tag) => strip(tag) === strip(etag));
|
|
243
|
+
}
|
|
244
|
+
Etag.matches = matches;
|
|
245
|
+
})(Etag || (Etag = {}));
|
|
220
246
|
/**
|
|
221
247
|
* Builds the shared-cache `Cache-Control` value for a stored copy: `public`
|
|
222
248
|
* with `max-age`/`s-maxage` bound to the policy plus an optional
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EdgeCache.js","sourceRoot":"","sources":["../../src/internal/EdgeCache.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAwB3B,4EAA4E;AAC5E,+EAA+E;AAC/E,4EAA4E;AAC5E,sDAAsD;AACtD,MAAM,eAAe,GAAG;IACtB,KAAK;IACL,iBAAiB;IACjB,kBAAkB;IAClB,gBAAgB;IAChB,iBAAiB;IACjB,0BAA0B;IAC1B,iBAAiB;IACjB,qBAAqB;IACrB,iBAAiB;IACjB,iBAAiB;IACjB,eAAe;IACf,YAAY;IACZ,kBAAkB;IAClB,kBAAkB;CACnB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,UAAU,CACxB,OAAO,GAAuB,EAAE;IAEhC,OAAO,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QACvB,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;QACzB,uEAAuE;QACvE,0EAA0E;QAC1E,iEAAiE;QACjE,MAAM,QAAQ,GACZ,KAAK,KAAK,SAAS;YACnB,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,KAAK;YACtB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;YAC/B,gEAAgE;YAChE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;YAC3C,gBAAgB,CAAC,CAAC,CAAC,CAAA;QACrB,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"EdgeCache.js","sourceRoot":"","sources":["../../src/internal/EdgeCache.ts"],"names":[],"mappings":"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"}
|
package/dist/internal/Id.d.ts
CHANGED
|
@@ -12,4 +12,15 @@ export declare function generate(prefix: string): string;
|
|
|
12
12
|
* @returns The generated segment.
|
|
13
13
|
*/
|
|
14
14
|
export declare function random(): string;
|
|
15
|
+
/**
|
|
16
|
+
* Generates a time-prefixed resource id (`{prefix}_{epoch ms}_{24 base62
|
|
17
|
+
* chars}`). The epoch-ms is zero-padded to 15 digits (headroom past the year
|
|
18
|
+
* 5138) so lexical id order is chronological, letting newest-first lists page
|
|
19
|
+
* by keyset on the id alone.
|
|
20
|
+
*
|
|
21
|
+
* @param prefix - The resource-type prefix (e.g. `wh`, `ftr`).
|
|
22
|
+
* @param now - The timestamp to embed.
|
|
23
|
+
* @returns The generated id.
|
|
24
|
+
*/
|
|
25
|
+
export declare function generateSortable(prefix: string, now?: Date): string;
|
|
15
26
|
//# sourceMappingURL=Id.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Id.d.ts","sourceRoot":"","sources":["../../src/internal/Id.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,IAAI,MAAM,CAE/B"}
|
|
1
|
+
{"version":3,"file":"Id.d.ts","sourceRoot":"","sources":["../../src/internal/Id.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,IAAI,MAAM,CAE/B;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,CAE/E"}
|
package/dist/internal/Id.js
CHANGED
|
@@ -19,4 +19,17 @@ export function generate(prefix) {
|
|
|
19
19
|
export function random() {
|
|
20
20
|
return segment();
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Generates a time-prefixed resource id (`{prefix}_{epoch ms}_{24 base62
|
|
24
|
+
* chars}`). The epoch-ms is zero-padded to 15 digits (headroom past the year
|
|
25
|
+
* 5138) so lexical id order is chronological, letting newest-first lists page
|
|
26
|
+
* by keyset on the id alone.
|
|
27
|
+
*
|
|
28
|
+
* @param prefix - The resource-type prefix (e.g. `wh`, `ftr`).
|
|
29
|
+
* @param now - The timestamp to embed.
|
|
30
|
+
* @returns The generated id.
|
|
31
|
+
*/
|
|
32
|
+
export function generateSortable(prefix, now = new Date()) {
|
|
33
|
+
return `${prefix}_${now.getTime().toString().padStart(15, '0')}_${random()}`;
|
|
34
|
+
}
|
|
22
35
|
//# sourceMappingURL=Id.js.map
|
package/dist/internal/Id.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Id.js","sourceRoot":"","sources":["../../src/internal/Id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAA;AAEvC,uFAAuF;AACvF,MAAM,OAAO,GAAG,cAAc,CAAC,gEAAgE,EAAE,EAAE,CAAC,CAAA;AAEpG;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAc;IACrC,OAAO,GAAG,MAAM,IAAI,MAAM,EAAE,EAAE,CAAA;AAChC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,MAAM;IACpB,OAAO,OAAO,EAAE,CAAA;AAClB,CAAC"}
|
|
1
|
+
{"version":3,"file":"Id.js","sourceRoot":"","sources":["../../src/internal/Id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAA;AAEvC,uFAAuF;AACvF,MAAM,OAAO,GAAG,cAAc,CAAC,gEAAgE,EAAE,EAAE,CAAC,CAAA;AAEpG;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAc;IACrC,OAAO,GAAG,MAAM,IAAI,MAAM,EAAE,EAAE,CAAA;AAChC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,MAAM;IACpB,OAAO,OAAO,EAAE,CAAA;AAClB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,GAAG,GAAS,IAAI,IAAI,EAAE;IACrE,OAAO,GAAG,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,MAAM,EAAE,EAAE,CAAA;AAC9E,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import * as Store from './Store.js';
|
|
2
|
+
/**
|
|
3
|
+
* API-level retry coordination for idempotent write endpoints, letting a
|
|
4
|
+
* caller recover a successful response after a transport timeout.
|
|
5
|
+
*
|
|
6
|
+
* A key moves from missing to pending to complete. Only the claim token may
|
|
7
|
+
* finish or release pending state, preventing an older request from
|
|
8
|
+
* overwriting a newer owner.
|
|
9
|
+
*/
|
|
10
|
+
/** Identity for one caller-supplied idempotent request. */
|
|
11
|
+
export type Identity = {
|
|
12
|
+
/** API key that submitted the request. */
|
|
13
|
+
apiKeyId: string;
|
|
14
|
+
/** Opaque caller-supplied idempotency key. */
|
|
15
|
+
idempotencyKey: string;
|
|
16
|
+
/** Hash of the request content bound to this idempotency key. */
|
|
17
|
+
inputHash: string;
|
|
18
|
+
};
|
|
19
|
+
/** Returns a stable digest without retaining request contents in durable state. */
|
|
20
|
+
export declare function inputHash(input: unknown): string;
|
|
21
|
+
/** Creates an idempotency coordinator over one durable-store key namespace. */
|
|
22
|
+
export declare function create<response>(options: create.Options): {
|
|
23
|
+
claim: (options: claim.Options) => Promise<claim.Result<response>>;
|
|
24
|
+
complete: (options: complete.Options<response>) => Promise<void>;
|
|
25
|
+
release: (options: release.Options) => Promise<void>;
|
|
26
|
+
};
|
|
27
|
+
export declare namespace create {
|
|
28
|
+
/** Coordinator configuration bound at creation. */
|
|
29
|
+
type Options = {
|
|
30
|
+
/** Durable-store key namespace (e.g. `mpp:relay:v1`). */
|
|
31
|
+
namespace: string;
|
|
32
|
+
/** How long a pending claim blocks equivalent requests, in milliseconds. */
|
|
33
|
+
pendingTtl: number;
|
|
34
|
+
/** How long a completed response replays, in milliseconds. */
|
|
35
|
+
receiptTtl: number;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export declare namespace claim {
|
|
39
|
+
/** Dependencies for claiming one idempotency key. */
|
|
40
|
+
type Options = {
|
|
41
|
+
/** API-key-scoped idempotency identity. */
|
|
42
|
+
identity: Identity;
|
|
43
|
+
/** Authoritative state with atomic compare-and-swap, normally a Durable Object. */
|
|
44
|
+
state: Store.State;
|
|
45
|
+
};
|
|
46
|
+
/** Outcome from attempting to claim an idempotency key. */
|
|
47
|
+
type Result<response> = {
|
|
48
|
+
token: string;
|
|
49
|
+
type: 'claimed';
|
|
50
|
+
} | {
|
|
51
|
+
type: 'mismatch';
|
|
52
|
+
} | {
|
|
53
|
+
response: response;
|
|
54
|
+
type: 'replay';
|
|
55
|
+
} | {
|
|
56
|
+
type: 'pending';
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export declare namespace complete {
|
|
60
|
+
/** Dependencies for persisting one terminal response. */
|
|
61
|
+
type Options<response> = {
|
|
62
|
+
/** API-key-scoped idempotency identity. */
|
|
63
|
+
identity: Identity;
|
|
64
|
+
/** Terminal successful response to replay. */
|
|
65
|
+
response: response;
|
|
66
|
+
/** Authoritative state with atomic compare-and-swap, normally a Durable Object. */
|
|
67
|
+
state: Store.State;
|
|
68
|
+
/** Token returned by the successful claim. */
|
|
69
|
+
token: string;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
export declare namespace release {
|
|
73
|
+
/** Dependencies for releasing one idempotency claim. */
|
|
74
|
+
type Options = {
|
|
75
|
+
/** API-key-scoped idempotency identity. */
|
|
76
|
+
identity: Identity;
|
|
77
|
+
/** Authoritative state with atomic compare-and-swap, normally a Durable Object. */
|
|
78
|
+
state: Store.State;
|
|
79
|
+
/** Token returned by the successful claim. */
|
|
80
|
+
token: string;
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=Idempotency.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Idempotency.d.ts","sourceRoot":"","sources":["../../src/internal/Idempotency.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;;;;;;GAOG;AAEH,2DAA2D;AAC3D,MAAM,MAAM,QAAQ,GAAG;IACrB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAA;IAChB,8CAA8C;IAC9C,cAAc,EAAE,MAAM,CAAA;IACtB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,mFAAmF;AACnF,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEhD;AAED,+EAA+E;AAC/E,wBAAgB,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO;qBAYxB,KAAK,CAAC,OAAO,KAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;wBA8B5C,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAG,OAAO,CAAC,IAAI,CAAC;uBA4B3C,OAAO,CAAC,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC;EAkBhE;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,mDAAmD;IACnD,KAAK,OAAO,GAAG;QACb,yDAAyD;QACzD,SAAS,EAAE,MAAM,CAAA;QACjB,4EAA4E;QAC5E,UAAU,EAAE,MAAM,CAAA;QAClB,8DAA8D;QAC9D,UAAU,EAAE,MAAM,CAAA;KACnB,CAAA;CACF;AAED,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,qDAAqD;IACrD,KAAK,OAAO,GAAG;QACb,2CAA2C;QAC3C,QAAQ,EAAE,QAAQ,CAAA;QAClB,mFAAmF;QACnF,KAAK,EAAE,KAAK,CAAC,KAAK,CAAA;KACnB,CAAA;IAED,2DAA2D;IAC3D,KAAK,MAAM,CAAC,QAAQ,IAChB;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE,GAClC;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,GACpB;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,GACtC;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,CAAA;CACxB;AAED,MAAM,CAAC,OAAO,WAAW,QAAQ,CAAC;IAChC,yDAAyD;IACzD,KAAK,OAAO,CAAC,QAAQ,IAAI;QACvB,2CAA2C;QAC3C,QAAQ,EAAE,QAAQ,CAAA;QAClB,8CAA8C;QAC9C,QAAQ,EAAE,QAAQ,CAAA;QAClB,mFAAmF;QACnF,KAAK,EAAE,KAAK,CAAC,KAAK,CAAA;QAClB,8CAA8C;QAC9C,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;CACF;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,wDAAwD;IACxD,KAAK,OAAO,GAAG;QACb,2CAA2C;QAC3C,QAAQ,EAAE,QAAQ,CAAA;QAClB,mFAAmF;QACnF,KAAK,EAAE,KAAK,CAAC,KAAK,CAAA;QAClB,8CAA8C;QAC9C,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;CACF"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { Hash, Hex } from 'ox';
|
|
2
|
+
import * as Store from './Store.js';
|
|
3
|
+
/** Returns a stable digest without retaining request contents in durable state. */
|
|
4
|
+
export function inputHash(input) {
|
|
5
|
+
return Hash.sha256(Hex.fromString(canonicalJson(input)));
|
|
6
|
+
}
|
|
7
|
+
/** Creates an idempotency coordinator over one durable-store key namespace. */
|
|
8
|
+
export function create(options) {
|
|
9
|
+
const { namespace, pendingTtl, receiptTtl } = options;
|
|
10
|
+
function keyFor(identity) {
|
|
11
|
+
// Scope keys to the authenticated API key so different tenants can reuse
|
|
12
|
+
// the same client-generated value. Hashing keeps that opaque value out of
|
|
13
|
+
// durable-store key names and enumeration output.
|
|
14
|
+
const digest = Hash.sha256(Hex.fromString(identity.idempotencyKey)).slice(2);
|
|
15
|
+
return `${namespace}:${identity.apiKeyId}:${digest}`;
|
|
16
|
+
}
|
|
17
|
+
/** Claims a request or returns its current outcome. */
|
|
18
|
+
async function claim(options) {
|
|
19
|
+
const { identity, state } = options;
|
|
20
|
+
const token = crypto.randomUUID();
|
|
21
|
+
return Store.change(state, keyFor(identity), (current) => {
|
|
22
|
+
const currentRecord = record(current);
|
|
23
|
+
// A completed request is the only cacheable terminal outcome. Failed
|
|
24
|
+
// attempts must be retried with the same input. Legacy records lack
|
|
25
|
+
// an input hash, so cannot be safely replayed.
|
|
26
|
+
if (currentRecord && currentRecord.inputHash !== identity.inputHash)
|
|
27
|
+
return { op: 'noop', result: { type: 'mismatch' } };
|
|
28
|
+
if (currentRecord?.type === 'complete')
|
|
29
|
+
return { op: 'noop', result: { response: currentRecord.response, type: 'replay' } };
|
|
30
|
+
// A parallel request must not settle the same caller operation while
|
|
31
|
+
// the first request still owns its pending claim.
|
|
32
|
+
if (currentRecord?.type === 'pending')
|
|
33
|
+
return { op: 'noop', result: { type: 'pending' } };
|
|
34
|
+
return {
|
|
35
|
+
op: 'set',
|
|
36
|
+
result: { token, type: 'claimed' },
|
|
37
|
+
value: encode({ inputHash: identity.inputHash, token, type: 'pending' }),
|
|
38
|
+
};
|
|
39
|
+
}, { ttl: pendingTtl });
|
|
40
|
+
}
|
|
41
|
+
/** Persists a successful response for an owned request claim. */
|
|
42
|
+
async function complete(options) {
|
|
43
|
+
const { identity, response, state, token } = options;
|
|
44
|
+
await Store.change(state, keyFor(identity), (current) => {
|
|
45
|
+
const currentRecord = record(current);
|
|
46
|
+
// Claim tokens fence delayed requests: a request cannot complete a
|
|
47
|
+
// claim it no longer owns after expiry or a later retry.
|
|
48
|
+
if (currentRecord?.type !== 'pending' ||
|
|
49
|
+
currentRecord.inputHash !== identity.inputHash ||
|
|
50
|
+
currentRecord.token !== token)
|
|
51
|
+
return { op: 'noop', result: undefined };
|
|
52
|
+
canonicalJson(response, 'Idempotency responses must be JSON values.');
|
|
53
|
+
return {
|
|
54
|
+
op: 'set',
|
|
55
|
+
result: undefined,
|
|
56
|
+
value: encode({ inputHash: identity.inputHash, response, type: 'complete' }),
|
|
57
|
+
};
|
|
58
|
+
}, { ttl: receiptTtl });
|
|
59
|
+
}
|
|
60
|
+
/** Releases an owned retryable request claim. */
|
|
61
|
+
async function release(options) {
|
|
62
|
+
const { identity, state, token } = options;
|
|
63
|
+
await Store.change(state, keyFor(identity), (current) => {
|
|
64
|
+
const currentRecord = record(current);
|
|
65
|
+
// Never delete a newer pending claim after this request has lost
|
|
66
|
+
// ownership through expiry and another caller has retried.
|
|
67
|
+
if (currentRecord?.type !== 'pending' ||
|
|
68
|
+
currentRecord.inputHash !== identity.inputHash ||
|
|
69
|
+
currentRecord.token !== token)
|
|
70
|
+
return { op: 'noop', result: undefined };
|
|
71
|
+
return { op: 'delete', result: undefined };
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
return { claim, complete, release };
|
|
75
|
+
}
|
|
76
|
+
function encode(record) {
|
|
77
|
+
return JSON.stringify(record);
|
|
78
|
+
}
|
|
79
|
+
function canonicalJson(value, errorMessage = 'Idempotency inputs must be JSON values.') {
|
|
80
|
+
if (value === null)
|
|
81
|
+
return 'null';
|
|
82
|
+
if (typeof value === 'number' && !Number.isFinite(value))
|
|
83
|
+
throw new Error(errorMessage);
|
|
84
|
+
if (typeof value === 'boolean' || typeof value === 'number' || typeof value === 'string')
|
|
85
|
+
return JSON.stringify(value);
|
|
86
|
+
if (Array.isArray(value))
|
|
87
|
+
return `[${value.map((item) => canonicalJson(item, errorMessage)).join(',')}]`;
|
|
88
|
+
if (typeof value === 'object') {
|
|
89
|
+
const record = value;
|
|
90
|
+
return `{${Object.keys(record)
|
|
91
|
+
.sort()
|
|
92
|
+
.map((key) => `${JSON.stringify(key)}:${canonicalJson(record[key], errorMessage)}`)
|
|
93
|
+
.join(',')}}`;
|
|
94
|
+
}
|
|
95
|
+
throw new Error(errorMessage);
|
|
96
|
+
}
|
|
97
|
+
function record(value) {
|
|
98
|
+
if (value === null)
|
|
99
|
+
return undefined;
|
|
100
|
+
try {
|
|
101
|
+
const parsed = JSON.parse(value);
|
|
102
|
+
if (!parsed || typeof parsed !== 'object')
|
|
103
|
+
return undefined;
|
|
104
|
+
const candidate = parsed;
|
|
105
|
+
if (candidate.type === 'pending' && typeof candidate.token === 'string')
|
|
106
|
+
return candidate;
|
|
107
|
+
if (candidate.type === 'complete' && candidate.response !== undefined)
|
|
108
|
+
return candidate;
|
|
109
|
+
}
|
|
110
|
+
catch { }
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=Idempotency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Idempotency.js","sourceRoot":"","sources":["../../src/internal/Idempotency.ts"],"names":[],"mappings":"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"}
|
package/dist/internal/Log.d.ts
CHANGED
|
@@ -1,22 +1,31 @@
|
|
|
1
1
|
import type { MiddlewareHandler } from 'hono';
|
|
2
2
|
import type { RequestIdVariables } from 'hono/request-id';
|
|
3
|
+
import type { Hex } from 'ox';
|
|
3
4
|
import * as ApiKey from '../ApiKey.js';
|
|
4
5
|
import type * as Auth from './Auth.js';
|
|
5
6
|
import type * as EdgeCache from './EdgeCache.js';
|
|
6
|
-
import type * as
|
|
7
|
+
import type * as FundingProvider from './funding/Provider.js';
|
|
7
8
|
import type * as Timing from './Timing.js';
|
|
8
9
|
/** Hono variables read by the request logger and written by other layers. */
|
|
9
10
|
export type Variables = {
|
|
11
|
+
/** Whether the original request exception was already reported. */
|
|
12
|
+
errorCaptured?: boolean | undefined;
|
|
10
13
|
/** Stable error code recorded by `Response.error` for the request log entry. */
|
|
11
14
|
errorCode?: string | undefined;
|
|
15
|
+
/** Bounded MPP relay outcome emitted by the credential routes. */
|
|
16
|
+
mpp?: Entry['mpp'] | undefined;
|
|
12
17
|
/** Bounded outcomes for funding providers attempted by the request. */
|
|
13
18
|
fundingProviderAttempts?: Entry['fundingProviderAttempts'] | undefined;
|
|
14
|
-
/**
|
|
19
|
+
/** Whether the optional funding transfer count query failed. */
|
|
20
|
+
fundingTransferCountFailed?: true | undefined;
|
|
21
|
+
/** Redacted provider failure details recorded by an upstream provider. */
|
|
15
22
|
providerFailure?: Entry['provider'] | undefined;
|
|
16
|
-
/** Redacted provider failures when multiple upstream
|
|
23
|
+
/** Redacted provider failures when multiple upstream providers fail. */
|
|
17
24
|
providerFailures?: Entry['providerFailures'] | undefined;
|
|
18
25
|
/** Bounded JSON-RPC failure metadata recorded by a composed RPC handler. */
|
|
19
26
|
rpcResponse?: Entry['rpc'] | undefined;
|
|
27
|
+
/** Bounded sponsorship rejection details recorded by the relay app. */
|
|
28
|
+
sponsorship?: Sponsorship | undefined;
|
|
20
29
|
};
|
|
21
30
|
/** Hono environment shape used by the request logger. */
|
|
22
31
|
export type Environment = {
|
|
@@ -29,10 +38,12 @@ export type Environment = {
|
|
|
29
38
|
export type Level = 'error' | 'info' | 'warn';
|
|
30
39
|
/** Redacted upstream provider failure details. */
|
|
31
40
|
export type ProviderFailure = {
|
|
41
|
+
/** Chain whose upstream request failed, when the request selected one. */
|
|
42
|
+
chainId?: number | undefined;
|
|
32
43
|
/** Stable provider error code, when one is safe to retain. */
|
|
33
44
|
code?: string | undefined;
|
|
34
45
|
/** Failure boundary that rejected the provider request. */
|
|
35
|
-
failure: 'http' | 'network' | 'payload' | 'rate_limit' | 'timeout' | 'unknown';
|
|
46
|
+
failure: 'http' | 'network' | 'payload' | 'query' | 'rate_limit' | 'timeout' | 'unknown';
|
|
36
47
|
/** Provider identifier. */
|
|
37
48
|
id: string;
|
|
38
49
|
/** Provider operation identifier. */
|
|
@@ -47,22 +58,47 @@ export type FundingProviderAttempt = {
|
|
|
47
58
|
/** Failure class, present only when the provider attempt failed. */
|
|
48
59
|
failure?: ProviderFailure['failure'] | undefined;
|
|
49
60
|
/** Provider identifier. */
|
|
50
|
-
id:
|
|
61
|
+
id: FundingProvider.ProviderId;
|
|
51
62
|
/** Stable upstream operation identifier. */
|
|
52
|
-
operation:
|
|
63
|
+
operation: FundingProvider.ProviderOperation;
|
|
53
64
|
/** Provider attempt outcome. */
|
|
54
65
|
outcome: 'available' | 'failed' | 'thin' | 'unavailable';
|
|
55
66
|
};
|
|
67
|
+
/** JSON-RPC methods that can request managed sponsorship. */
|
|
68
|
+
export type SponsorshipMethod = 'eth_fillTransaction' | 'eth_sendRawTransaction' | 'eth_sendRawTransactionSync' | 'eth_signRawTransaction';
|
|
69
|
+
/** Stable client error codes for sponsorship rejections. */
|
|
70
|
+
export type SponsorshipReason = 'api_key_forbidden' | 'api_key_required' | 'billing_past_due' | 'billing_required' | 'chain_id_unsupported' | 'fee_token_unsupported' | 'internal_error' | 'production_api_key_required' | 'spend_limit_exceeded' | 'tx_fee_limit_exceeded';
|
|
71
|
+
/** Bounded diagnostics for sponsorship rejections in one JSON-RPC request. */
|
|
72
|
+
export type Sponsorship = {
|
|
73
|
+
/** Common target chain, absent when rejected batch items disagree or are invalid. */
|
|
74
|
+
chainId?: number | undefined;
|
|
75
|
+
/** Number of internal sponsorship failures, capped at 65,535; absent when zero. */
|
|
76
|
+
internalErrors?: number | undefined;
|
|
77
|
+
/** Common sponsorship method, absent when rejected batch items use different methods. */
|
|
78
|
+
method?: SponsorshipMethod | undefined;
|
|
79
|
+
/** Sponsorship request outcome. */
|
|
80
|
+
outcome: 'rejected';
|
|
81
|
+
/** Keccak256 of the caller's raw transaction, present only for a single-request body. */
|
|
82
|
+
payloadHash?: Hex.Hex | undefined;
|
|
83
|
+
/** Common client error code, absent when rejected batch items have different codes. */
|
|
84
|
+
reason?: SponsorshipReason | undefined;
|
|
85
|
+
/** Number of sponsorship policy rejections, capped at 65,535. */
|
|
86
|
+
rejections: number;
|
|
87
|
+
};
|
|
56
88
|
/** One canonical request log entry. */
|
|
57
89
|
export type Entry = {
|
|
58
90
|
/** `'hit'` when the edge response cache served the request without reaching the origin handlers. */
|
|
59
91
|
cache?: 'hit' | undefined;
|
|
60
92
|
/** Total request duration in milliseconds. */
|
|
61
93
|
duration: number;
|
|
94
|
+
/** Whether the original request exception was already reported. */
|
|
95
|
+
errorCaptured?: boolean | undefined;
|
|
62
96
|
/** Stable error code when the response is a JSON error envelope (e.g. `not_found`, `api_key_invalid`). */
|
|
63
97
|
errorCode?: string | undefined;
|
|
64
98
|
/** Bounded funding provider attempts made while serving the request. */
|
|
65
99
|
fundingProviderAttempts?: readonly FundingProviderAttempt[] | undefined;
|
|
100
|
+
/** Whether the optional funding transfer count query failed. */
|
|
101
|
+
fundingTransferCountFailed?: true | undefined;
|
|
66
102
|
/** Log level: 5xx `error`; 4xx or JSON-RPC failure `warn`; otherwise `info`. */
|
|
67
103
|
level: Level;
|
|
68
104
|
/** Request method. */
|
|
@@ -71,6 +107,21 @@ export type Entry = {
|
|
|
71
107
|
path: string;
|
|
72
108
|
/** MPP payment reason when the request was paid per call. */
|
|
73
109
|
payment?: Auth.Payment['reason'] | undefined;
|
|
110
|
+
/** Bounded outcome for an MPP relay operation. */
|
|
111
|
+
mpp?: {
|
|
112
|
+
/** Resolved Tempo chain selected by the credential. */
|
|
113
|
+
chainId: number;
|
|
114
|
+
/** Stable relay failure code, absent when the operation succeeded. */
|
|
115
|
+
errorCode?: string | undefined;
|
|
116
|
+
/** Idempotency claim outcome for broadcast operations. */
|
|
117
|
+
idempotency?: 'claimed' | 'pending' | 'replay' | undefined;
|
|
118
|
+
/** Whether a fee payer was supplied for the credential. */
|
|
119
|
+
feePayer: boolean;
|
|
120
|
+
/** Relay route operation. */
|
|
121
|
+
operation: 'broadcast' | 'verify';
|
|
122
|
+
/** Relay operation outcome, independent of the HTTP status. */
|
|
123
|
+
outcome: 'failure' | 'success';
|
|
124
|
+
};
|
|
74
125
|
/** Caller identity. Raw API-key tokens and the super admin secret are never logged. */
|
|
75
126
|
principal?: {
|
|
76
127
|
/** Attributed super admin identity for super admin callers. */
|
|
@@ -88,9 +139,9 @@ export type Entry = {
|
|
|
88
139
|
/** Principal kind. */
|
|
89
140
|
type: 'api_key' | 'public' | 'session' | 'super_admin';
|
|
90
141
|
} | undefined;
|
|
91
|
-
/** Redacted upstream provider failure details, when
|
|
142
|
+
/** Redacted upstream provider failure details, when a provider request fails. */
|
|
92
143
|
provider?: ProviderFailure | undefined;
|
|
93
|
-
/** Redacted failures for every provider when multiple
|
|
144
|
+
/** Redacted failures for every provider when multiple providers fail. */
|
|
94
145
|
providerFailures?: readonly ProviderFailure[] | undefined;
|
|
95
146
|
/** Raw query string (no leading `?`) with API-key tokens redacted, when present. */
|
|
96
147
|
query?: string | undefined;
|
|
@@ -117,10 +168,14 @@ export type Entry = {
|
|
|
117
168
|
dataCode?: string | undefined;
|
|
118
169
|
/** Number of failed responses in the single or batch JSON-RPC response. */
|
|
119
170
|
errors: number;
|
|
171
|
+
/** Number of JSON-RPC server errors, capped at 65,535; absent when zero. */
|
|
172
|
+
serverErrors?: number | undefined;
|
|
120
173
|
};
|
|
174
|
+
/** Bounded sponsorship rejection diagnostics, without request or response bodies. */
|
|
175
|
+
sponsorship?: Sponsorship | undefined;
|
|
121
176
|
/** HTTP response status code. JSON-RPC failures retain their protocol-native `200`. */
|
|
122
177
|
status: number;
|
|
123
|
-
/**
|
|
178
|
+
/** Longest upstream operation duration per Server-Timing name, in milliseconds (e.g. RPC and TIDX calls). */
|
|
124
179
|
timings?: Record<string, number> | undefined;
|
|
125
180
|
};
|
|
126
181
|
/** Sink receiving one {@link Entry} per request. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Log.d.ts","sourceRoot":"","sources":["../../src/internal/Log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAA;AAC7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"Log.d.ts","sourceRoot":"","sources":["../../src/internal/Log.ts"],"names":[],"mappings":"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"}
|
package/dist/internal/Log.js
CHANGED
|
@@ -24,17 +24,29 @@ export function middleware(options = {}) {
|
|
|
24
24
|
// Hono cannot resolve variable types through the generic `environment`,
|
|
25
25
|
// so shared-variable reads are cast from the environment contract above
|
|
26
26
|
// (the same pattern EdgeCache uses for its cross-layer reads).
|
|
27
|
+
const error = c.error;
|
|
27
28
|
const principal = c.get('principal');
|
|
29
|
+
const errorCaptured = c.get('errorCaptured');
|
|
28
30
|
const errorCode = c.get('errorCode');
|
|
29
|
-
const fundingProviderAttempts =
|
|
30
|
-
|
|
31
|
-
const
|
|
31
|
+
const fundingProviderAttempts = error?.fundingProviderAttempts ??
|
|
32
|
+
c.get('fundingProviderAttempts');
|
|
33
|
+
const fundingTransferCountFailed = c.get('fundingTransferCountFailed');
|
|
34
|
+
const mpp = c.get('mpp');
|
|
35
|
+
const provider = error?.providerFailure ?? c.get('providerFailure');
|
|
36
|
+
const providerFailures = error?.providerFailures ?? c.get('providerFailures');
|
|
32
37
|
const rpc = c.get('rpcResponse');
|
|
38
|
+
const sponsorship = c.get('sponsorship');
|
|
33
39
|
// The `request` total metric duplicates `duration` (measured here, one
|
|
34
40
|
// layer further out), so only operation timings are kept.
|
|
35
41
|
const metrics = c.get('serverTiming')?.filter((metric) => metric.name !== 'request');
|
|
36
42
|
const timings = metrics?.length
|
|
37
|
-
? Object.fromEntries(metrics.
|
|
43
|
+
? Object.fromEntries(metrics.reduce((result, metric) => {
|
|
44
|
+
const duration = round(metric.duration);
|
|
45
|
+
const existing = result.get(metric.name);
|
|
46
|
+
if (existing === undefined || duration > existing)
|
|
47
|
+
result.set(metric.name, duration);
|
|
48
|
+
return result;
|
|
49
|
+
}, new Map()))
|
|
38
50
|
: undefined;
|
|
39
51
|
const rateLimit = (() => {
|
|
40
52
|
const limit = c.res.headers.get('RateLimit-Limit');
|
|
@@ -53,14 +65,21 @@ export function middleware(options = {}) {
|
|
|
53
65
|
const result = fn({
|
|
54
66
|
...(c.get('edgeCacheStatus') === 'hit' ? { cache: 'hit' } : {}),
|
|
55
67
|
duration: round(duration),
|
|
68
|
+
...(errorCaptured === undefined ? {} : { errorCaptured }),
|
|
56
69
|
...(errorCode === undefined ? {} : { errorCode }),
|
|
57
70
|
...(fundingProviderAttempts === undefined ? {} : { fundingProviderAttempts }),
|
|
58
|
-
|
|
71
|
+
...(fundingTransferCountFailed === undefined ? {} : { fundingTransferCountFailed }),
|
|
72
|
+
level: status >= 500 ||
|
|
73
|
+
rpcServerError(rpc?.code) ||
|
|
74
|
+
(rpc?.serverErrors ?? 0) > 0 ||
|
|
75
|
+
(sponsorship?.internalErrors ?? 0) > 0 ||
|
|
76
|
+
mpp?.errorCode === 'unknown'
|
|
59
77
|
? 'error'
|
|
60
|
-
: status >= 400 || rpc
|
|
78
|
+
: status >= 400 || rpc || sponsorship
|
|
61
79
|
? 'warn'
|
|
62
80
|
: 'info',
|
|
63
81
|
method: c.req.method,
|
|
82
|
+
...(mpp === undefined ? {} : { mpp }),
|
|
64
83
|
path: url.pathname,
|
|
65
84
|
...(principal?.payment === undefined ? {} : { payment: principal.payment.reason }),
|
|
66
85
|
...(principal === undefined
|
|
@@ -87,6 +106,7 @@ export function middleware(options = {}) {
|
|
|
87
106
|
requestId: c.get('requestId'),
|
|
88
107
|
route: c.req.routePath,
|
|
89
108
|
...(rpc === undefined ? {} : { rpc }),
|
|
109
|
+
...(sponsorship === undefined ? {} : { sponsorship }),
|
|
90
110
|
status,
|
|
91
111
|
...(timings === undefined ? {} : { timings }),
|
|
92
112
|
});
|
|
@@ -133,16 +153,18 @@ export function rpcErrors(body) {
|
|
|
133
153
|
return undefined;
|
|
134
154
|
const codes = new Set(errors.map((error) => error.code));
|
|
135
155
|
const dataCodes = new Set(errors.map((error) => error.dataCode).filter(Boolean));
|
|
156
|
+
const serverErrors = errors.filter((error) => rpcServerError(error.code)).length;
|
|
136
157
|
return {
|
|
137
158
|
...(codes.size === 1 ? { code: errors[0].code } : {}),
|
|
138
159
|
...(dataCodes.size === 1 && errors.every((error) => error.dataCode !== undefined)
|
|
139
160
|
? { dataCode: errors[0].dataCode }
|
|
140
161
|
: {}),
|
|
141
162
|
errors: Math.min(errors.length, 65_535),
|
|
163
|
+
...(serverErrors === 0 ? {} : { serverErrors: Math.min(serverErrors, 65_535) }),
|
|
142
164
|
};
|
|
143
165
|
}
|
|
144
166
|
function rpcServerError(code) {
|
|
145
|
-
return code === -32603
|
|
167
|
+
return code === -32603;
|
|
146
168
|
}
|
|
147
169
|
/**
|
|
148
170
|
* Default log sink: writes the entry as a structured object through the
|