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
|
@@ -11,6 +11,7 @@ import * as Schema from '../../../internal/Schema.js';
|
|
|
11
11
|
import * as Store from '../../../internal/Store.js';
|
|
12
12
|
import * as Ttl from '../../../internal/Ttl.js';
|
|
13
13
|
import * as Value from '../../../internal/Value.js';
|
|
14
|
+
import * as WebhookDestination from '../../../internal/WebhookDestination.js';
|
|
14
15
|
import * as Webhooks from '../../../internal/Webhooks.js';
|
|
15
16
|
import * as Receipts from './receipts.js';
|
|
16
17
|
import * as Transactions from './transactions.js';
|
|
@@ -852,6 +853,12 @@ export function webhooks(options = {}) {
|
|
|
852
853
|
if (!supportedChainIds.has(chainId))
|
|
853
854
|
return Response.unsupportedChainId(c, chainId, supportedChainIds);
|
|
854
855
|
try {
|
|
856
|
+
// Preserve destination errors before the creation-time RPC dependency.
|
|
857
|
+
WebhookDestination.assertDestination(body.destination);
|
|
858
|
+
const maxPerOwner = webhook.maxPerOwner ?? defaultMaxPerOwner;
|
|
859
|
+
if ((await Webhooks.countSubscriptions(db, owner)) >= maxPerOwner)
|
|
860
|
+
throw new Webhooks.LimitExceededError(maxPerOwner);
|
|
861
|
+
const startBlockNumber = await getRpcHead(c.get('getClient')(chainId));
|
|
855
862
|
const subscription = await Webhooks.createSubscription(db, {
|
|
856
863
|
chainId,
|
|
857
864
|
...(body.context === undefined ? {} : { context: body.context }),
|
|
@@ -860,7 +867,10 @@ export function webhooks(options = {}) {
|
|
|
860
867
|
filters: body.filters,
|
|
861
868
|
owner,
|
|
862
869
|
...(owner.type === 'mpp' ? { ttl: mppTtlMs } : {}),
|
|
863
|
-
}, {
|
|
870
|
+
}, {
|
|
871
|
+
maxPerOwner,
|
|
872
|
+
startBlockNumber,
|
|
873
|
+
});
|
|
864
874
|
return c.json(Response.validated(schema.createWebhook.Response, toCreated(subscription)), 200);
|
|
865
875
|
}
|
|
866
876
|
catch (cause) {
|
|
@@ -1306,6 +1316,21 @@ export function webhooks(options = {}) {
|
|
|
1306
1316
|
* can equal it).
|
|
1307
1317
|
*/
|
|
1308
1318
|
const endOfBlockIndex = 2_147_483_647;
|
|
1319
|
+
const scanPageSize = 100;
|
|
1320
|
+
/** Returns `candidate` only when it is lexicographically after `current`. */
|
|
1321
|
+
function laterCursor(current, candidate) {
|
|
1322
|
+
const before = Cursor.decode(current, ['int', 'int']);
|
|
1323
|
+
const after = Cursor.decode(candidate, ['int', 'int']);
|
|
1324
|
+
if (!after)
|
|
1325
|
+
return current;
|
|
1326
|
+
if (!before)
|
|
1327
|
+
return candidate;
|
|
1328
|
+
const [beforeBlock, beforeIndex] = before;
|
|
1329
|
+
const [afterBlock, afterIndex] = after;
|
|
1330
|
+
return afterBlock > beforeBlock || (afterBlock === beforeBlock && afterIndex > beforeIndex)
|
|
1331
|
+
? candidate
|
|
1332
|
+
: current;
|
|
1333
|
+
}
|
|
1309
1334
|
/**
|
|
1310
1335
|
* Polls the chain over RPC for new events and dispatches a signed envelope per
|
|
1311
1336
|
* matching row, advancing each active subscription's `(block, index)` keyset
|
|
@@ -1326,9 +1351,11 @@ const endOfBlockIndex = 2_147_483_647;
|
|
|
1326
1351
|
*
|
|
1327
1352
|
* Cursor advances only past successfully dispatched rows, so a dispatch failure
|
|
1328
1353
|
* pauses that subscription at the last good position and the next tick resumes.
|
|
1354
|
+
* Scan failures leave that subscription unchanged; the first error is rethrown
|
|
1355
|
+
* after the remaining subscriptions run.
|
|
1329
1356
|
*/
|
|
1330
1357
|
export async function poll(options) {
|
|
1331
|
-
const { batchSize =
|
|
1358
|
+
const { batchSize = 200, cache: cache_metadata = Store.memory(), chainId, client, confirmations = 2, db, eventTypes = ['token:transfer', 'transaction:included', 'log:emitted', 'block:created'], maxBlocks = 1_000, tidx, } = options;
|
|
1332
1359
|
const now = options.now ?? (() => new Date());
|
|
1333
1360
|
// Default (self-host) transport: deliver inline and record the outcome so a
|
|
1334
1361
|
// sustained-failure subscription auto-disables. On Cloudflare, callers pass a
|
|
@@ -1358,74 +1385,134 @@ export async function poll(options) {
|
|
|
1358
1385
|
scanned: 0,
|
|
1359
1386
|
subscriptions: 0,
|
|
1360
1387
|
};
|
|
1388
|
+
const scanErrors = [];
|
|
1361
1389
|
for (const eventType of eventTypes) {
|
|
1362
1390
|
const legacy = eventType === 'token:transfer';
|
|
1363
1391
|
const safeBlock = legacy ? Math.max(0, (await resolveTidxHead()) - confirmations) : rpcSafeBlock;
|
|
1364
1392
|
const subscriptions = await Webhooks.listActive(db, chainId, eventType);
|
|
1393
|
+
let states = [];
|
|
1365
1394
|
for (const subscription of subscriptions) {
|
|
1366
1395
|
result.subscriptions++;
|
|
1367
|
-
|
|
1396
|
+
let cursor = await Webhooks.getCursor(db, subscription.id);
|
|
1368
1397
|
if (cursor === null) {
|
|
1369
|
-
//
|
|
1370
|
-
// confirmed
|
|
1371
|
-
|
|
1372
|
-
|
|
1398
|
+
// Legacy subscriptions without a creation checkpoint anchor at the
|
|
1399
|
+
// current confirmed head, avoiding a genesis backfill.
|
|
1400
|
+
await Webhooks.compareAndSetCursor(db, {
|
|
1401
|
+
cursor: Cursor.encode([safeBlock, endOfBlockIndex]),
|
|
1402
|
+
expectedCursor: null,
|
|
1403
|
+
subscriptionId: subscription.id,
|
|
1404
|
+
});
|
|
1373
1405
|
continue;
|
|
1374
1406
|
}
|
|
1375
|
-
const
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1407
|
+
const checkpoint = Cursor.decode(cursor, ['int']);
|
|
1408
|
+
if (checkpoint) {
|
|
1409
|
+
// Creation checkpoints record the live head without finalizing it. Rebase
|
|
1410
|
+
// to this poller's confirmed boundary so replacement blocks stay eligible.
|
|
1411
|
+
const confirmedCursor = Cursor.encode([
|
|
1412
|
+
Math.max(0, checkpoint[0] - confirmations),
|
|
1413
|
+
endOfBlockIndex,
|
|
1414
|
+
]);
|
|
1415
|
+
const committed = await Webhooks.compareAndSetCursor(db, {
|
|
1416
|
+
cursor: confirmedCursor,
|
|
1417
|
+
expectedCursor: cursor,
|
|
1418
|
+
subscriptionId: subscription.id,
|
|
1419
|
+
});
|
|
1420
|
+
if (!committed)
|
|
1421
|
+
continue;
|
|
1422
|
+
cursor = confirmedCursor;
|
|
1423
|
+
}
|
|
1424
|
+
const window = legacy ? undefined : scanWindow(cursor, safeBlock, maxBlocks);
|
|
1425
|
+
states.push({
|
|
1379
1426
|
cursor,
|
|
1380
|
-
|
|
1381
|
-
safeBlock,
|
|
1427
|
+
remaining: batchSize,
|
|
1428
|
+
safeBlock: window?.to ?? safeBlock,
|
|
1382
1429
|
subscription,
|
|
1383
|
-
tidx,
|
|
1384
1430
|
});
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
const
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
:
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
if (!delivered.ok) {
|
|
1405
|
-
result.failed++;
|
|
1406
|
-
failed = true;
|
|
1407
|
-
break;
|
|
1431
|
+
}
|
|
1432
|
+
// Every subscription gets one bounded page before any subscription gets a
|
|
1433
|
+
// continuation page, preserving fairness while allowing catch-up.
|
|
1434
|
+
while (states.length > 0) {
|
|
1435
|
+
const continuations = [];
|
|
1436
|
+
for (const state of states) {
|
|
1437
|
+
const { subscription } = state;
|
|
1438
|
+
let page;
|
|
1439
|
+
try {
|
|
1440
|
+
page = await scanSubscription({
|
|
1441
|
+
batchSize: Math.min(scanPageSize, state.remaining),
|
|
1442
|
+
cache,
|
|
1443
|
+
client,
|
|
1444
|
+
cursor: state.cursor,
|
|
1445
|
+
maxBlocks,
|
|
1446
|
+
safeBlock: state.safeBlock,
|
|
1447
|
+
subscription,
|
|
1448
|
+
tidx,
|
|
1449
|
+
});
|
|
1408
1450
|
}
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1451
|
+
catch (error) {
|
|
1452
|
+
scanErrors.push(error);
|
|
1453
|
+
continue;
|
|
1454
|
+
}
|
|
1455
|
+
result.scanned += page.items.length;
|
|
1456
|
+
state.remaining -= page.items.length;
|
|
1457
|
+
let accepted;
|
|
1458
|
+
let failed = false;
|
|
1459
|
+
for (const item of page.items) {
|
|
1460
|
+
// Token metadata is best-effort for webhooks: transfers use it for display,
|
|
1461
|
+
// while transactions expose fee-token references without blocking delivery.
|
|
1462
|
+
const data = eventType === 'token:transfer'
|
|
1463
|
+
? await withTokenMetadata(item.data, { cache: cache_metadata, chainId, client })
|
|
1464
|
+
: eventType === 'transaction:included'
|
|
1465
|
+
? await withFeeTokenMetadata(item.data, { cache: cache_metadata, chainId, client })
|
|
1466
|
+
: item.data;
|
|
1467
|
+
const envelope = Webhooks.buildEnvelope({
|
|
1468
|
+
blockNumber: item.cursor[0],
|
|
1469
|
+
createdAt: now(),
|
|
1470
|
+
data,
|
|
1471
|
+
logIndex: item.cursor[1],
|
|
1472
|
+
subscription,
|
|
1473
|
+
});
|
|
1474
|
+
const delivered = await dispatch({ envelope, subscription });
|
|
1475
|
+
if (!delivered.ok) {
|
|
1476
|
+
result.failed++;
|
|
1477
|
+
failed = true;
|
|
1478
|
+
break;
|
|
1479
|
+
}
|
|
1480
|
+
accepted = item.cursor;
|
|
1481
|
+
result.dispatched++;
|
|
1482
|
+
}
|
|
1483
|
+
// Persist every accepted page before another subscription begins its
|
|
1484
|
+
// continuation, so a later scan failure retains completed work.
|
|
1485
|
+
const candidate = (() => {
|
|
1486
|
+
if (failed)
|
|
1487
|
+
return accepted ? Cursor.encode([...accepted]) : undefined;
|
|
1488
|
+
if (page.scannedThrough !== undefined)
|
|
1489
|
+
return Cursor.encode([page.scannedThrough, endOfBlockIndex]);
|
|
1490
|
+
if (accepted)
|
|
1491
|
+
return Cursor.encode([...accepted]);
|
|
1492
|
+
if (!page.hasMore)
|
|
1493
|
+
return Cursor.encode([state.safeBlock, endOfBlockIndex]);
|
|
1494
|
+
return undefined;
|
|
1495
|
+
})();
|
|
1496
|
+
const cursor = candidate ? laterCursor(state.cursor, candidate) : state.cursor;
|
|
1497
|
+
const progressed = cursor !== state.cursor;
|
|
1498
|
+
let committed = false;
|
|
1499
|
+
if (progressed) {
|
|
1500
|
+
committed = await Webhooks.compareAndSetCursor(db, {
|
|
1501
|
+
cursor,
|
|
1502
|
+
expectedCursor: state.cursor,
|
|
1503
|
+
subscriptionId: subscription.id,
|
|
1504
|
+
});
|
|
1505
|
+
if (committed)
|
|
1506
|
+
state.cursor = cursor;
|
|
1507
|
+
}
|
|
1508
|
+
if (!failed && page.hasMore === true && committed && state.remaining > 0)
|
|
1509
|
+
continuations.push(state);
|
|
1420
1510
|
}
|
|
1421
|
-
|
|
1422
|
-
await Webhooks.setCursor(db, subscription.id, Cursor.encode([page.scannedThrough, endOfBlockIndex]));
|
|
1423
|
-
else if (accepted)
|
|
1424
|
-
await Webhooks.setCursor(db, subscription.id, Cursor.encode([...accepted]));
|
|
1425
|
-
else if (!page.hasMore)
|
|
1426
|
-
await Webhooks.setCursor(db, subscription.id, Cursor.encode([safeBlock, endOfBlockIndex]));
|
|
1511
|
+
states = continuations;
|
|
1427
1512
|
}
|
|
1428
1513
|
}
|
|
1514
|
+
if (scanErrors.length > 0)
|
|
1515
|
+
throw scanErrors[0];
|
|
1429
1516
|
return result;
|
|
1430
1517
|
}
|
|
1431
1518
|
/**
|
|
@@ -1557,6 +1644,7 @@ async function scanSubscription(options) {
|
|
|
1557
1644
|
const chainId = subscription.chainId;
|
|
1558
1645
|
if (subscription.eventType === 'log:emitted')
|
|
1559
1646
|
return scanLogs({
|
|
1647
|
+
batchSize,
|
|
1560
1648
|
cache,
|
|
1561
1649
|
client,
|
|
1562
1650
|
cursor,
|
|
@@ -1566,6 +1654,7 @@ async function scanSubscription(options) {
|
|
|
1566
1654
|
});
|
|
1567
1655
|
if (subscription.eventType === 'block:created')
|
|
1568
1656
|
return scanBlocks({
|
|
1657
|
+
batchSize,
|
|
1569
1658
|
cache,
|
|
1570
1659
|
cursor,
|
|
1571
1660
|
filters: parseFilters('block:created', subscription.filters),
|
|
@@ -1574,6 +1663,7 @@ async function scanSubscription(options) {
|
|
|
1574
1663
|
});
|
|
1575
1664
|
if (subscription.eventType === 'transaction:included')
|
|
1576
1665
|
return scanTxs({
|
|
1666
|
+
batchSize,
|
|
1577
1667
|
cache,
|
|
1578
1668
|
cursor,
|
|
1579
1669
|
filters: parseFilters('transaction:included', subscription.filters),
|
|
@@ -1585,6 +1675,10 @@ async function scanSubscription(options) {
|
|
|
1585
1675
|
return { hasMore: false, items: [] };
|
|
1586
1676
|
const filters = transferFilters(subscription.filters);
|
|
1587
1677
|
const page = await Transfers.scan({ tidx }, { chainId, cursor, limit: batchSize, order: 'asc', toBlock: safeBlock, ...filters });
|
|
1678
|
+
// A cap-truncated fallback sample is an arbitrary subset: dispatching it
|
|
1679
|
+
// would advance the cursor past unseen matches. Hold position and retry.
|
|
1680
|
+
if (page.capped)
|
|
1681
|
+
return { hasMore: true, items: [] };
|
|
1588
1682
|
return { hasMore: page.hasMore, items: page.items };
|
|
1589
1683
|
}
|
|
1590
1684
|
const filterSchemas = {
|
|
@@ -1762,7 +1856,11 @@ function createChainCache(client) {
|
|
|
1762
1856
|
p = rpc(client, 'eth_getBlockByNumber', [
|
|
1763
1857
|
blockTag(n),
|
|
1764
1858
|
true,
|
|
1765
|
-
]).then((
|
|
1859
|
+
]).then((block) => {
|
|
1860
|
+
if (!block)
|
|
1861
|
+
throw new BlockUnavailableError(n);
|
|
1862
|
+
return block;
|
|
1863
|
+
});
|
|
1766
1864
|
blocks.set(n, p);
|
|
1767
1865
|
}
|
|
1768
1866
|
return p;
|
|
@@ -1770,9 +1868,7 @@ function createChainCache(client) {
|
|
|
1770
1868
|
header(n) {
|
|
1771
1869
|
let p = headers.get(n);
|
|
1772
1870
|
if (!p) {
|
|
1773
|
-
p = client
|
|
1774
|
-
.getBlock({ blockNumber: BigInt(n), includeTransactions: false })
|
|
1775
|
-
.catch(() => undefined);
|
|
1871
|
+
p = client.getBlock({ blockNumber: BigInt(n), includeTransactions: false });
|
|
1776
1872
|
headers.set(n, p);
|
|
1777
1873
|
}
|
|
1778
1874
|
return p;
|
|
@@ -1956,7 +2052,7 @@ function decodeScanLog(log, event) {
|
|
|
1956
2052
|
* all operators are re-checked in JS over the narrow window.
|
|
1957
2053
|
*/
|
|
1958
2054
|
async function scanLogs(options) {
|
|
1959
|
-
const { cache, client, cursor, filters, maxBlocks, safeBlock } = options;
|
|
2055
|
+
const { batchSize, cache, client, cursor, filters, maxBlocks, safeBlock } = options;
|
|
1960
2056
|
const f = filters;
|
|
1961
2057
|
const window = scanWindow(cursor, safeBlock, maxBlocks);
|
|
1962
2058
|
if (!window)
|
|
@@ -2011,8 +2107,11 @@ async function scanLogs(options) {
|
|
|
2011
2107
|
const header = await cache.header(blockNumber);
|
|
2012
2108
|
const timestamp = blockIso(header);
|
|
2013
2109
|
const data = toLogEvent(log, timestamp, f.signature, event);
|
|
2014
|
-
if (data)
|
|
2110
|
+
if (data) {
|
|
2015
2111
|
items.push({ cursor: [data.blockNumber, data.logIndex], data });
|
|
2112
|
+
if (items.length >= batchSize)
|
|
2113
|
+
return { hasMore: true, items };
|
|
2114
|
+
}
|
|
2016
2115
|
}
|
|
2017
2116
|
return { items, scannedThrough: window.to };
|
|
2018
2117
|
}
|
|
@@ -2096,7 +2195,7 @@ function toBlockEvent(block) {
|
|
|
2096
2195
|
* empty filter is a per-block heartbeat.
|
|
2097
2196
|
*/
|
|
2098
2197
|
async function scanBlocks(options) {
|
|
2099
|
-
const { cache, cursor, filters, maxBlocks, safeBlock } = options;
|
|
2198
|
+
const { batchSize, cache, cursor, filters, maxBlocks, safeBlock } = options;
|
|
2100
2199
|
const f = filters;
|
|
2101
2200
|
const window = scanWindow(cursor, safeBlock, maxBlocks);
|
|
2102
2201
|
if (!window)
|
|
@@ -2111,8 +2210,11 @@ async function scanBlocks(options) {
|
|
|
2111
2210
|
if (!matchesBlock(block, f))
|
|
2112
2211
|
continue;
|
|
2113
2212
|
const data = toBlockEvent(block);
|
|
2114
|
-
if (data)
|
|
2213
|
+
if (data) {
|
|
2115
2214
|
items.push({ cursor: [data.number, 0], data });
|
|
2215
|
+
if (items.length >= batchSize)
|
|
2216
|
+
return { hasMore: true, items };
|
|
2217
|
+
}
|
|
2116
2218
|
}
|
|
2117
2219
|
return { items, scannedThrough: window.to };
|
|
2118
2220
|
}
|
|
@@ -2159,7 +2261,7 @@ const txFields = {
|
|
|
2159
2261
|
* poller then resolves its fee-token references.
|
|
2160
2262
|
*/
|
|
2161
2263
|
async function scanTxs(options) {
|
|
2162
|
-
const { cache, cursor, filters, maxBlocks, safeBlock } = options;
|
|
2264
|
+
const { batchSize, cache, cursor, filters, maxBlocks, safeBlock } = options;
|
|
2163
2265
|
const f = filters;
|
|
2164
2266
|
const window = scanWindow(cursor, safeBlock, maxBlocks);
|
|
2165
2267
|
if (!window)
|
|
@@ -2172,11 +2274,11 @@ async function scanTxs(options) {
|
|
|
2172
2274
|
const items = [];
|
|
2173
2275
|
for (let n = window.from; n <= window.to; n++) {
|
|
2174
2276
|
const block = await cache.block(n);
|
|
2175
|
-
const txs = Array.isArray(block
|
|
2277
|
+
const txs = Array.isArray(block['transactions']) ? block['transactions'] : [];
|
|
2176
2278
|
if (txs.length === 0)
|
|
2177
2279
|
continue;
|
|
2178
2280
|
const receipts = needsReceipt || includeReceipt ? await cache.receipts(n) : undefined;
|
|
2179
|
-
const timestamp = asString(block
|
|
2281
|
+
const timestamp = asString(block['timestamp']);
|
|
2180
2282
|
for (let i = 0; i < txs.length; i++) {
|
|
2181
2283
|
const tx = txs[i];
|
|
2182
2284
|
const index = Value.hexToNumber(tx['transactionIndex']) ?? i;
|
|
@@ -2205,6 +2307,8 @@ async function scanTxs(options) {
|
|
|
2205
2307
|
};
|
|
2206
2308
|
}
|
|
2207
2309
|
items.push({ cursor: [n, index], data });
|
|
2310
|
+
if (items.length >= batchSize)
|
|
2311
|
+
return { hasMore: true, items };
|
|
2208
2312
|
}
|
|
2209
2313
|
}
|
|
2210
2314
|
return { items, scannedThrough: window.to };
|
|
@@ -2362,4 +2466,10 @@ function unauthorized(c) {
|
|
|
2362
2466
|
status: 401,
|
|
2363
2467
|
});
|
|
2364
2468
|
}
|
|
2469
|
+
class BlockUnavailableError extends Error {
|
|
2470
|
+
name = 'Webhooks.BlockUnavailableError';
|
|
2471
|
+
constructor(blockNumber) {
|
|
2472
|
+
super(`Block ${blockNumber} is unavailable.`);
|
|
2473
|
+
}
|
|
2474
|
+
}
|
|
2365
2475
|
//# sourceMappingURL=webhooks.js.map
|