tapimo 0.7.0 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ApiKeys.d.ts +24 -7
- package/dist/ApiKeys.d.ts.map +1 -1
- package/dist/ApiKeys.js +17 -5
- package/dist/ApiKeys.js.map +1 -1
- package/dist/App.d.ts +12104 -7861
- package/dist/App.d.ts.map +1 -1
- package/dist/App.js +191 -128
- package/dist/App.js.map +1 -1
- package/dist/Assets.d.ts +10 -0
- package/dist/Assets.d.ts.map +1 -1
- package/dist/Assets.js +17 -4
- package/dist/Assets.js.map +1 -1
- package/dist/Scope.d.ts +19 -8
- package/dist/Scope.d.ts.map +1 -1
- package/dist/Scope.js +25 -9
- package/dist/Scope.js.map +1 -1
- package/dist/Webhooks.d.ts +1 -1
- package/dist/admin/App.d.ts +601 -20
- package/dist/admin/App.d.ts.map +1 -1
- package/dist/admin/App.js +12 -2
- package/dist/admin/App.js.map +1 -1
- package/dist/admin/apps/api-keys.d.ts +94 -11
- package/dist/admin/apps/api-keys.d.ts.map +1 -1
- package/dist/admin/apps/api-keys.js +141 -32
- package/dist/admin/apps/api-keys.js.map +1 -1
- package/dist/admin/apps/earn-vaults.d.ts +1069 -0
- package/dist/admin/apps/earn-vaults.d.ts.map +1 -0
- package/dist/admin/apps/earn-vaults.js +409 -0
- package/dist/admin/apps/earn-vaults.js.map +1 -0
- package/dist/admin/apps/verified-tokens.d.ts +166 -166
- package/dist/admin/ui.generated.d.ts +1 -1
- package/dist/admin/ui.generated.d.ts.map +1 -1
- package/dist/admin/ui.generated.js +151 -95
- package/dist/admin/ui.generated.js.map +1 -1
- package/dist/analytics/Analytics.d.ts +2 -0
- package/dist/analytics/Analytics.d.ts.map +1 -1
- package/dist/analytics/Analytics.js +18 -2
- package/dist/analytics/Analytics.js.map +1 -1
- package/dist/analytics/tables/requestEvents.d.ts +22 -1
- package/dist/analytics/tables/requestEvents.d.ts.map +1 -1
- package/dist/analytics/tables/requestEvents.js +59 -39
- package/dist/analytics/tables/requestEvents.js.map +1 -1
- package/dist/apps/Zones.d.ts +8335 -0
- package/dist/apps/Zones.d.ts.map +1 -0
- package/dist/apps/Zones.js +38 -0
- package/dist/apps/Zones.js.map +1 -0
- package/dist/apps/data/App.d.ts +14377 -10165
- package/dist/apps/data/App.d.ts.map +1 -1
- package/dist/apps/data/App.js +91 -19
- package/dist/apps/data/App.js.map +1 -1
- package/dist/apps/data/FxOracle.d.ts +1 -1
- package/dist/apps/data/FxOracle.d.ts.map +1 -1
- package/dist/apps/data/index.d.ts +0 -1
- package/dist/apps/data/index.d.ts.map +1 -1
- package/dist/apps/data/index.js +0 -1
- package/dist/apps/data/index.js.map +1 -1
- package/dist/apps/data/routes/activities.d.ts +32 -32
- package/dist/apps/data/routes/activities.d.ts.map +1 -1
- package/dist/apps/data/routes/activities.js +130 -65
- package/dist/apps/data/routes/activities.js.map +1 -1
- package/dist/apps/data/routes/addresses.d.ts +312 -312
- package/dist/apps/data/routes/balances.d.ts +18 -18
- package/dist/apps/data/routes/balances.js +5 -5
- package/dist/apps/data/routes/balances.js.map +1 -1
- package/dist/apps/data/routes/coingecko.d.ts +176 -176
- package/dist/apps/data/routes/coingecko.d.ts.map +1 -1
- package/dist/apps/data/routes/coingecko.js +62 -35
- package/dist/apps/data/routes/coingecko.js.map +1 -1
- package/dist/apps/data/routes/earn.d.ts +2144 -0
- package/dist/apps/data/routes/earn.d.ts.map +1 -0
- package/dist/apps/data/routes/earn.js +947 -0
- package/dist/apps/data/routes/earn.js.map +1 -0
- package/dist/apps/data/routes/exchanges.d.ts +1231 -324
- package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
- package/dist/apps/data/routes/exchanges.js +656 -193
- package/dist/apps/data/routes/exchanges.js.map +1 -1
- package/dist/apps/data/routes/fee-amm.d.ts.map +1 -1
- package/dist/apps/data/routes/fee-amm.js +59 -8
- package/dist/apps/data/routes/fee-amm.js.map +1 -1
- package/dist/apps/data/routes/funding.d.ts +4092 -387
- package/dist/apps/data/routes/funding.d.ts.map +1 -1
- package/dist/apps/data/routes/funding.js +1403 -256
- package/dist/apps/data/routes/funding.js.map +1 -1
- package/dist/apps/data/routes/indexer.d.ts +5 -5
- package/dist/apps/data/routes/indexer.d.ts.map +1 -1
- package/dist/apps/data/routes/indexer.js +19 -2
- package/dist/apps/data/routes/indexer.js.map +1 -1
- package/dist/apps/data/routes/receipts.d.ts +265 -265
- package/dist/apps/data/routes/receipts.d.ts.map +1 -1
- package/dist/apps/data/routes/receipts.js +11 -11
- package/dist/apps/data/routes/receipts.js.map +1 -1
- package/dist/apps/data/routes/rpc.d.ts +5 -5
- package/dist/apps/data/routes/rpc.d.ts.map +1 -1
- package/dist/apps/data/routes/rpc.js +211 -22
- package/dist/apps/data/routes/rpc.js.map +1 -1
- package/dist/apps/data/routes/tokenlist.d.ts +36 -36
- package/dist/apps/data/routes/tokenlist.d.ts.map +1 -1
- package/dist/apps/data/routes/tokenlist.js +49 -9
- package/dist/apps/data/routes/tokenlist.js.map +1 -1
- package/dist/apps/data/routes/tokens.d.ts +116 -88
- package/dist/apps/data/routes/tokens.d.ts.map +1 -1
- package/dist/apps/data/routes/tokens.js +198 -91
- package/dist/apps/data/routes/tokens.js.map +1 -1
- package/dist/apps/data/routes/transactions.d.ts +55 -55
- package/dist/apps/data/routes/transactions.d.ts.map +1 -1
- package/dist/apps/data/routes/transactions.js +78 -39
- package/dist/apps/data/routes/transactions.js.map +1 -1
- package/dist/apps/data/routes/transfers.d.ts +78 -29
- package/dist/apps/data/routes/transfers.d.ts.map +1 -1
- package/dist/apps/data/routes/transfers.js +165 -67
- package/dist/apps/data/routes/transfers.js.map +1 -1
- package/dist/apps/data/routes/valuation.d.ts +10 -10
- package/dist/apps/data/routes/valuation.js +2 -2
- package/dist/apps/data/routes/valuation.js.map +1 -1
- package/dist/apps/data/routes/verified-tokens.d.ts.map +1 -1
- package/dist/apps/data/routes/verified-tokens.js +34 -9
- package/dist/apps/data/routes/verified-tokens.js.map +1 -1
- package/dist/apps/data/routes/webhooks.d.ts +5 -3
- package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
- package/dist/apps/data/routes/webhooks.js +175 -65
- package/dist/apps/data/routes/webhooks.js.map +1 -1
- package/dist/apps/data/routes/zones.d.ts +281 -0
- package/dist/apps/data/routes/zones.d.ts.map +1 -0
- package/dist/apps/data/routes/zones.js +252 -0
- package/dist/apps/data/routes/zones.js.map +1 -0
- package/dist/apps/docs/reference.js +6 -5
- package/dist/apps/docs/reference.js.map +1 -1
- package/dist/apps/index.d.ts +2 -1
- package/dist/apps/index.d.ts.map +1 -1
- package/dist/apps/index.js +2 -1
- package/dist/apps/index.js.map +1 -1
- package/dist/apps/management/App.d.ts +670 -670
- package/dist/apps/management/Billing.d.ts +8 -0
- package/dist/apps/management/Billing.d.ts.map +1 -1
- package/dist/apps/management/Billing.js +12 -0
- package/dist/apps/management/Billing.js.map +1 -1
- package/dist/apps/management/Error.d.ts +12 -0
- package/dist/apps/management/Error.d.ts.map +1 -0
- package/dist/apps/management/Error.js +10 -0
- package/dist/apps/management/Error.js.map +1 -0
- package/dist/apps/management/routes/api-keys.d.ts +5 -5
- package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
- package/dist/apps/management/routes/api-keys.js +2 -8
- package/dist/apps/management/routes/api-keys.js.map +1 -1
- package/dist/apps/management/routes/billing.d.ts +119 -119
- package/dist/apps/management/routes/faucet.d.ts +35 -35
- package/dist/apps/management/routes/invitations.d.ts +62 -62
- package/dist/apps/management/routes/invitations.d.ts.map +1 -1
- package/dist/apps/management/routes/invitations.js +4 -10
- package/dist/apps/management/routes/invitations.js.map +1 -1
- package/dist/apps/management/routes/invite-links.d.ts +30 -30
- package/dist/apps/management/routes/me.d.ts +6 -6
- package/dist/apps/management/routes/members.d.ts +78 -78
- package/dist/apps/management/routes/orgs.d.ts +48 -48
- package/dist/apps/management/routes/orgs.d.ts.map +1 -1
- package/dist/apps/management/routes/orgs.js +2 -8
- package/dist/apps/management/routes/orgs.js.map +1 -1
- package/dist/apps/management/routes/projects.d.ts +9 -9
- package/dist/apps/management/routes/scopes.js +2 -2
- package/dist/apps/management/routes/scopes.js.map +1 -1
- package/dist/apps/management/routes/usage.d.ts +80 -80
- package/dist/apps/management/routes/verified-token-requests.d.ts +36 -36
- package/dist/apps/management/routes/webhooks.d.ts +50 -50
- package/dist/apps/management/routes/webhooks.d.ts.map +1 -1
- package/dist/apps/management/routes/webhooks.js +15 -3
- package/dist/apps/management/routes/webhooks.js.map +1 -1
- package/dist/apps/mpp/App.d.ts +55 -56
- package/dist/apps/mpp/App.d.ts.map +1 -1
- package/dist/apps/mpp/App.js +192 -27
- package/dist/apps/mpp/App.js.map +1 -1
- package/dist/apps/mpp/Mpp.d.ts +0 -20
- package/dist/apps/mpp/Mpp.d.ts.map +1 -1
- package/dist/apps/mpp/Mpp.js +0 -24
- package/dist/apps/mpp/Mpp.js.map +1 -1
- package/dist/apps/mpp/internal/Adapter.d.ts +40 -0
- package/dist/apps/mpp/internal/Adapter.d.ts.map +1 -0
- package/dist/apps/mpp/internal/Adapter.js +66 -0
- package/dist/apps/mpp/internal/Adapter.js.map +1 -0
- package/dist/apps/mpp/internal/Error.d.ts +4 -0
- package/dist/apps/mpp/internal/Error.d.ts.map +1 -0
- package/dist/apps/mpp/internal/Error.js +41 -0
- package/dist/apps/mpp/internal/Error.js.map +1 -0
- package/dist/apps/mpp/internal/Idempotency.d.ts +33 -0
- package/dist/apps/mpp/internal/Idempotency.d.ts.map +1 -0
- package/dist/apps/mpp/internal/Idempotency.js +28 -0
- package/dist/apps/mpp/internal/Idempotency.js.map +1 -0
- package/dist/apps/mpp/internal/Policy.d.ts +46 -0
- package/dist/apps/mpp/internal/Policy.d.ts.map +1 -0
- package/dist/apps/mpp/internal/Policy.js +57 -0
- package/dist/apps/mpp/internal/Policy.js.map +1 -0
- package/dist/apps/mpp/internal/ScreenManager.d.ts +27 -0
- package/dist/apps/mpp/internal/ScreenManager.d.ts.map +1 -0
- package/dist/apps/mpp/internal/ScreenManager.js +18 -0
- package/dist/apps/mpp/internal/ScreenManager.js.map +1 -0
- package/dist/apps/mpp/internal/Screening.d.ts +35 -0
- package/dist/apps/mpp/internal/Screening.d.ts.map +1 -0
- package/dist/apps/mpp/internal/Screening.js +20 -0
- package/dist/apps/mpp/internal/Screening.js.map +1 -0
- package/dist/apps/mpp/internal/Sponsorship.d.ts +36 -0
- package/dist/apps/mpp/internal/Sponsorship.d.ts.map +1 -0
- package/dist/apps/mpp/internal/Sponsorship.js +103 -0
- package/dist/apps/mpp/internal/Sponsorship.js.map +1 -0
- package/dist/apps/mpp/internal/Utils.d.ts +7 -0
- package/dist/apps/mpp/internal/Utils.d.ts.map +1 -0
- package/dist/apps/mpp/internal/Utils.js +24 -0
- package/dist/apps/mpp/internal/Utils.js.map +1 -0
- package/dist/apps/relay/App.js +184 -24
- package/dist/apps/relay/App.js.map +1 -1
- package/dist/apps/relay/Sponsorships.d.ts +4 -0
- package/dist/apps/relay/Sponsorships.d.ts.map +1 -1
- package/dist/apps/relay/Sponsorships.js +16 -7
- package/dist/apps/relay/Sponsorships.js.map +1 -1
- package/dist/db/Db.d.ts +20 -0
- package/dist/db/Db.d.ts.map +1 -1
- package/dist/db/Db.js +342 -0
- package/dist/db/Db.js.map +1 -1
- package/dist/db/Schema.d.ts +921 -1
- package/dist/db/Schema.d.ts.map +1 -1
- package/dist/db/Schema.js +269 -1
- package/dist/db/Schema.js.map +1 -1
- package/dist/db/tables/earnVaults.d.ts +68 -0
- package/dist/db/tables/earnVaults.d.ts.map +1 -0
- package/dist/db/tables/earnVaults.js +72 -0
- package/dist/db/tables/earnVaults.js.map +1 -0
- package/dist/db/tables/fundingCatalog.d.ts +56 -0
- package/dist/db/tables/fundingCatalog.d.ts.map +1 -0
- package/dist/db/tables/fundingCatalog.js +85 -0
- package/dist/db/tables/fundingCatalog.js.map +1 -0
- package/dist/db/tables/fundingDepositAddresses.d.ts +159 -0
- package/dist/db/tables/fundingDepositAddresses.d.ts.map +1 -0
- package/dist/db/tables/fundingDepositAddresses.js +206 -0
- package/dist/db/tables/fundingDepositAddresses.js.map +1 -0
- package/dist/db/tables/fundingDeposits.d.ts +115 -0
- package/dist/db/tables/fundingDeposits.d.ts.map +1 -0
- package/dist/db/tables/fundingDeposits.js +100 -0
- package/dist/db/tables/fundingDeposits.js.map +1 -0
- package/dist/db/tables/fundingIdempotency.d.ts +91 -0
- package/dist/db/tables/fundingIdempotency.d.ts.map +1 -0
- package/dist/db/tables/fundingIdempotency.js +103 -0
- package/dist/db/tables/fundingIdempotency.js.map +1 -0
- package/dist/db/tables/fundingTransferEvents.d.ts +12 -0
- package/dist/db/tables/fundingTransferEvents.d.ts.map +1 -0
- package/dist/db/tables/fundingTransferEvents.js +18 -0
- package/dist/db/tables/fundingTransferEvents.js.map +1 -0
- package/dist/db/tables/fundingTransferTransactions.d.ts +15 -0
- package/dist/db/tables/fundingTransferTransactions.d.ts.map +1 -0
- package/dist/db/tables/fundingTransferTransactions.js +27 -0
- package/dist/db/tables/fundingTransferTransactions.js.map +1 -0
- package/dist/db/tables/fundingTransfers.d.ts +82 -0
- package/dist/db/tables/fundingTransfers.d.ts.map +1 -0
- package/dist/db/tables/fundingTransfers.js +89 -0
- package/dist/db/tables/fundingTransfers.js.map +1 -0
- package/dist/db/tables/organizations.d.ts +8 -0
- package/dist/db/tables/organizations.d.ts.map +1 -1
- package/dist/db/tables/organizations.js +35 -0
- package/dist/db/tables/organizations.js.map +1 -1
- package/dist/db/tables/projects.d.ts +8 -0
- package/dist/db/tables/projects.d.ts.map +1 -1
- package/dist/db/tables/projects.js +16 -0
- package/dist/db/tables/projects.js.map +1 -1
- package/dist/db/tables/requestUsage.d.ts +13 -0
- package/dist/db/tables/requestUsage.d.ts.map +1 -1
- package/dist/db/tables/requestUsage.js +16 -0
- package/dist/db/tables/requestUsage.js.map +1 -1
- package/dist/db/tables/sponsoredTransactions.d.ts +4 -2
- package/dist/db/tables/sponsoredTransactions.d.ts.map +1 -1
- package/dist/db/tables/sponsoredTransactions.js +14 -4
- package/dist/db/tables/sponsoredTransactions.js.map +1 -1
- package/dist/db/tables/users.d.ts +8 -0
- package/dist/db/tables/users.d.ts.map +1 -1
- package/dist/db/tables/users.js +16 -0
- package/dist/db/tables/users.js.map +1 -1
- package/dist/db/tables/verifiedTokens.d.ts +14 -7
- package/dist/db/tables/verifiedTokens.d.ts.map +1 -1
- package/dist/db/tables/verifiedTokens.js +9 -7
- package/dist/db/tables/verifiedTokens.js.map +1 -1
- package/dist/db/tables/webhookSubscriptions.d.ts +31 -1
- package/dist/db/tables/webhookSubscriptions.d.ts.map +1 -1
- package/dist/db/tables/webhookSubscriptions.js +24 -3
- package/dist/db/tables/webhookSubscriptions.js.map +1 -1
- package/dist/handlers/relay.js +108 -108
- package/dist/handlers/relay.js.map +1 -1
- package/dist/internal/Auth.d.ts +26 -0
- package/dist/internal/Auth.d.ts.map +1 -1
- package/dist/internal/Auth.js +35 -2
- package/dist/internal/Auth.js.map +1 -1
- package/dist/internal/Cache.d.ts.map +1 -1
- package/dist/internal/Cache.js +16 -10
- package/dist/internal/Cache.js.map +1 -1
- package/dist/internal/Cursor.js +1 -1
- package/dist/internal/Cursor.js.map +1 -1
- package/dist/internal/EarnRates.d.ts +89 -0
- package/dist/internal/EarnRates.d.ts.map +1 -0
- package/dist/internal/EarnRates.js +266 -0
- package/dist/internal/EarnRates.js.map +1 -0
- package/dist/internal/EarnVaults.d.ts +171 -0
- package/dist/internal/EarnVaults.d.ts.map +1 -0
- package/dist/internal/EarnVaults.js +547 -0
- package/dist/internal/EarnVaults.js.map +1 -0
- package/dist/internal/EdgeCache.d.ts +9 -2
- package/dist/internal/EdgeCache.d.ts.map +1 -1
- package/dist/internal/EdgeCache.js +36 -9
- package/dist/internal/EdgeCache.js.map +1 -1
- package/dist/internal/Id.d.ts +11 -0
- package/dist/internal/Id.d.ts.map +1 -1
- package/dist/internal/Id.js +13 -0
- package/dist/internal/Id.js.map +1 -1
- package/dist/internal/Idempotency.d.ts +83 -0
- package/dist/internal/Idempotency.d.ts.map +1 -0
- package/dist/internal/Idempotency.js +113 -0
- package/dist/internal/Idempotency.js.map +1 -0
- package/dist/internal/Log.d.ts +64 -9
- package/dist/internal/Log.d.ts.map +1 -1
- package/dist/internal/Log.js +29 -7
- package/dist/internal/Log.js.map +1 -1
- package/dist/internal/MetricSink.d.ts.map +1 -1
- package/dist/internal/MetricSink.js +47 -1
- package/dist/internal/MetricSink.js.map +1 -1
- package/dist/internal/OpenApi.d.ts +1 -1
- package/dist/internal/OpenApi.d.ts.map +1 -1
- package/dist/internal/OpenApi.js +3 -0
- package/dist/internal/OpenApi.js.map +1 -1
- package/dist/internal/Provider.d.ts +14 -0
- package/dist/internal/Provider.d.ts.map +1 -0
- package/dist/internal/Provider.js +5 -0
- package/dist/internal/Provider.js.map +1 -0
- package/dist/internal/Schema.d.ts +8 -3
- package/dist/internal/Schema.d.ts.map +1 -1
- package/dist/internal/Schema.js +24 -13
- package/dist/internal/Schema.js.map +1 -1
- package/dist/internal/Store.d.ts +6 -0
- package/dist/internal/Store.d.ts.map +1 -1
- package/dist/internal/Store.js +35 -0
- package/dist/internal/Store.js.map +1 -1
- package/dist/internal/Tidx.d.ts +43 -24
- package/dist/internal/Tidx.d.ts.map +1 -1
- package/dist/internal/Tidx.js +79 -11
- package/dist/internal/Tidx.js.map +1 -1
- package/dist/internal/Viem.d.ts +82 -65
- package/dist/internal/Viem.d.ts.map +1 -1
- package/dist/internal/Viem.js +83 -12
- package/dist/internal/Viem.js.map +1 -1
- package/dist/internal/WebhookDestination.d.ts.map +1 -1
- package/dist/internal/WebhookDestination.js +34 -28
- package/dist/internal/WebhookDestination.js.map +1 -1
- package/dist/internal/Webhooks.d.ts +9 -0
- package/dist/internal/Webhooks.d.ts.map +1 -1
- package/dist/internal/Webhooks.js +15 -10
- package/dist/internal/Webhooks.js.map +1 -1
- package/dist/internal/exchange/Provider.d.ts +219 -0
- package/dist/internal/exchange/Provider.d.ts.map +1 -0
- package/dist/internal/exchange/Provider.js +117 -0
- package/dist/internal/exchange/Provider.js.map +1 -0
- package/dist/internal/exchange/index.d.ts +2 -0
- package/dist/internal/exchange/index.d.ts.map +1 -0
- package/dist/internal/exchange/index.js +2 -0
- package/dist/internal/exchange/index.js.map +1 -0
- package/dist/internal/exchange/providers/uniswap.d.ts +57 -0
- package/dist/internal/exchange/providers/uniswap.d.ts.map +1 -0
- package/dist/internal/exchange/providers/uniswap.js +553 -0
- package/dist/internal/exchange/providers/uniswap.js.map +1 -0
- package/dist/internal/funding/Action.d.ts +55 -0
- package/dist/internal/funding/Action.d.ts.map +1 -0
- package/dist/internal/funding/Action.js +74 -0
- package/dist/internal/funding/Action.js.map +1 -0
- package/dist/internal/funding/Catalog.d.ts +107 -0
- package/dist/internal/funding/Catalog.d.ts.map +1 -0
- package/dist/internal/funding/Catalog.js +270 -0
- package/dist/internal/funding/Catalog.js.map +1 -0
- package/dist/internal/funding/Chain.d.ts +76 -0
- package/dist/internal/funding/Chain.d.ts.map +1 -0
- package/dist/internal/funding/Chain.js +38 -0
- package/dist/internal/funding/Chain.js.map +1 -0
- package/dist/internal/funding/Deposit.d.ts +366 -0
- package/dist/internal/funding/Deposit.d.ts.map +1 -0
- package/dist/internal/funding/Deposit.js +286 -0
- package/dist/internal/funding/Deposit.js.map +1 -0
- package/dist/internal/funding/DepositAddress.d.ts +345 -0
- package/dist/internal/funding/DepositAddress.d.ts.map +1 -0
- package/dist/internal/funding/DepositAddress.js +189 -0
- package/dist/internal/funding/DepositAddress.js.map +1 -0
- package/dist/internal/funding/Evidence.d.ts +52 -0
- package/dist/internal/funding/Evidence.d.ts.map +1 -0
- package/dist/internal/funding/Evidence.js +314 -0
- package/dist/internal/funding/Evidence.js.map +1 -0
- package/dist/internal/funding/Provider.d.ts +1186 -0
- package/dist/internal/funding/Provider.d.ts.map +1 -0
- package/dist/internal/funding/Provider.js +1081 -0
- package/dist/internal/funding/Provider.js.map +1 -0
- package/dist/internal/funding/Reconciliation.d.ts +113 -0
- package/dist/internal/funding/Reconciliation.d.ts.map +1 -0
- package/dist/internal/funding/Reconciliation.js +676 -0
- package/dist/internal/funding/Reconciliation.js.map +1 -0
- package/dist/internal/funding/Route.d.ts +21 -0
- package/dist/internal/funding/Route.d.ts.map +1 -0
- package/dist/internal/funding/Route.js +5 -0
- package/dist/internal/funding/Route.js.map +1 -0
- package/dist/internal/funding/Subsidy.d.ts +113 -0
- package/dist/internal/funding/Subsidy.d.ts.map +1 -0
- package/dist/internal/funding/Subsidy.js +138 -0
- package/dist/internal/funding/Subsidy.js.map +1 -0
- package/dist/internal/funding/Token.d.ts +41 -0
- package/dist/internal/funding/Token.d.ts.map +1 -0
- package/dist/internal/funding/Token.js +22 -0
- package/dist/internal/funding/Token.js.map +1 -0
- package/dist/internal/funding/Transfer.d.ts +643 -0
- package/dist/internal/funding/Transfer.d.ts.map +1 -0
- package/dist/internal/funding/Transfer.js +332 -0
- package/dist/internal/funding/Transfer.js.map +1 -0
- package/dist/internal/funding/index.d.ts +13 -0
- package/dist/internal/funding/index.d.ts.map +1 -0
- package/dist/internal/funding/index.js +13 -0
- package/dist/internal/funding/index.js.map +1 -0
- package/dist/internal/funding/providers/across.d.ts +21 -0
- package/dist/internal/funding/providers/across.d.ts.map +1 -0
- package/dist/internal/funding/providers/across.js +117 -0
- package/dist/internal/funding/providers/across.js.map +1 -0
- package/dist/internal/funding/providers/relay.d.ts +46 -0
- package/dist/internal/funding/providers/relay.d.ts.map +1 -0
- package/dist/internal/funding/providers/relay.js +464 -0
- package/dist/internal/funding/providers/relay.js.map +1 -0
- package/dist/internal/funding/providers/rhino.d.ts +15 -0
- package/dist/internal/funding/providers/rhino.d.ts.map +1 -0
- package/dist/internal/funding/providers/rhino.js +116 -0
- package/dist/internal/funding/providers/rhino.js.map +1 -0
- package/dist/internal/funding/providers/squid.d.ts +19 -0
- package/dist/internal/funding/providers/squid.d.ts.map +1 -0
- package/dist/internal/funding/providers/squid.js +120 -0
- package/dist/internal/funding/providers/squid.js.map +1 -0
- package/dist/internal/funding/providers/symbiosis.d.ts +20 -0
- package/dist/internal/funding/providers/symbiosis.d.ts.map +1 -0
- package/dist/internal/funding/providers/symbiosis.js +176 -0
- package/dist/internal/funding/providers/symbiosis.js.map +1 -0
- package/dist/internal/index.d.ts +5 -1
- package/dist/internal/index.d.ts.map +1 -1
- package/dist/internal/index.js +5 -1
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/webhookDestinations/url.js +61 -57
- package/dist/internal/webhookDestinations/url.js.map +1 -1
- package/dist/providers/index.d.ts +43 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +19 -0
- package/dist/providers/index.js.map +1 -0
- package/package.json +9 -4
- package/src/ApiKeys.test.ts +11 -7
- package/src/ApiKeys.ts +37 -9
- package/src/App.test.ts +85 -10
- package/src/App.ts +224 -137
- package/src/Assets.ts +29 -4
- package/src/Client.test-d.ts +650 -30
- package/src/Scope.test.ts +19 -0
- package/src/Scope.ts +28 -11
- package/src/Webhooks.test.ts +25 -0
- package/src/Webhooks.ts +1 -1
- package/src/admin/App.test.ts +9 -2
- package/src/admin/App.ts +32 -9
- package/src/admin/apps/api-keys.test.ts +167 -23
- package/src/admin/apps/api-keys.ts +166 -28
- package/src/admin/apps/earn-vaults.test.ts +338 -0
- package/src/admin/apps/earn-vaults.ts +572 -0
- package/src/admin/apps/scopes.test.ts +16 -1
- package/src/admin/ui/plugin.ts +2 -2
- package/src/admin/ui/src/components/EarnVaultForm.tsx +137 -0
- package/src/admin/ui/src/components/MobileProfile.tsx +2 -2
- package/src/admin/ui/src/components/Page.tsx +1 -1
- package/src/admin/ui/src/components/ThemeToggle.tsx +1 -1
- package/src/admin/ui/src/lib/api-keys.ts +37 -7
- package/src/admin/ui/src/lib/client.ts +1 -1
- package/src/admin/ui/src/lib/config.ts +1 -1
- package/src/admin/ui/src/lib/early-access.ts +8 -9
- package/src/admin/ui/src/lib/earn-vaults.ts +207 -0
- package/src/admin/ui/src/lib/format.ts +13 -0
- package/src/admin/ui/src/lib/organizations.test.ts +14 -4
- package/src/admin/ui/src/lib/organizations.ts +7 -1
- package/src/admin/ui/src/lib/response.ts +22 -0
- package/src/admin/ui/src/lib/scopes.test.ts +19 -11
- package/src/admin/ui/src/lib/scopes.ts +28 -7
- package/src/admin/ui/src/lib/verified-tokens.ts +10 -9
- package/src/admin/ui/src/routeTree.gen.ts +70 -7
- package/src/admin/ui/src/router.tsx +2 -2
- package/src/admin/ui/src/routes/__root.tsx +9 -8
- package/src/admin/ui/src/routes/api-keys.tsx +475 -64
- package/src/admin/ui/src/routes/early-access.tsx +5 -12
- package/src/admin/ui/src/routes/earn.vaults.tsx +348 -0
- package/src/admin/ui/src/routes/earn.vaults_.$vaultId.edit.tsx +154 -0
- package/src/admin/ui/src/routes/earn.vaults_.new.tsx +190 -0
- package/src/admin/ui/src/routes/organizations.tsx +4 -7
- package/src/admin/ui/src/routes/organizations_.$orgId.tsx +56 -54
- package/src/admin/ui/src/routes/verified-tokens.tsx +4 -4
- package/src/admin/ui/vite.config.ts +4 -1
- package/src/admin/ui.generated.ts +189 -95
- package/src/analytics/Analytics.test.ts +69 -10
- package/src/analytics/Analytics.ts +20 -1
- package/src/analytics/tables/requestEvents.ts +79 -37
- package/src/apps/Zones.test.ts +33 -0
- package/src/apps/Zones.ts +40 -0
- package/src/apps/composition.test.ts +84 -1
- package/src/apps/data/App.test.ts +38 -9
- package/src/apps/data/App.ts +96 -33
- package/src/apps/data/FxOracle.ts +1 -1
- package/src/apps/data/index.ts +0 -1
- package/src/apps/data/routes/activities.test.ts +82 -6
- package/src/apps/data/routes/activities.ts +131 -71
- package/src/apps/data/routes/balances.test.ts +50 -37
- package/src/apps/data/routes/balances.ts +5 -5
- package/src/apps/data/routes/blocks.test.ts +2 -0
- package/src/apps/data/routes/coingecko.test.ts +22 -0
- package/src/apps/data/routes/coingecko.ts +84 -48
- package/src/apps/data/routes/earn.test.ts +1108 -0
- package/src/apps/data/routes/earn.ts +1391 -0
- package/src/apps/data/routes/exchanges.test.ts +82 -33
- package/src/apps/data/routes/exchanges.ts +842 -227
- package/src/apps/data/routes/fee-amm.test.ts +4 -6
- package/src/apps/data/routes/fee-amm.ts +69 -12
- package/src/apps/data/routes/funding.test.ts +2712 -221
- package/src/apps/data/routes/funding.ts +1604 -387
- package/src/apps/data/routes/indexer.test.ts +43 -34
- package/src/apps/data/routes/indexer.ts +19 -2
- package/src/apps/data/routes/receipts.test.ts +5 -3
- package/src/apps/data/routes/receipts.ts +13 -11
- package/src/apps/data/routes/rpc.test.ts +446 -28
- package/src/apps/data/routes/rpc.ts +243 -25
- package/src/apps/data/routes/tokenlist.test.ts +15 -0
- package/src/apps/data/routes/tokenlist.ts +88 -22
- package/src/apps/data/routes/tokens.ts +262 -86
- package/src/apps/data/routes/transactions.test.ts +2 -0
- package/src/apps/data/routes/transactions.ts +77 -42
- package/src/apps/data/routes/transfers.test.ts +166 -4
- package/src/apps/data/routes/transfers.ts +216 -78
- package/src/apps/data/routes/valuation.test.ts +62 -9
- package/src/apps/data/routes/valuation.ts +2 -2
- package/src/apps/data/routes/verified-tokens.test.ts +51 -0
- package/src/apps/data/routes/verified-tokens.ts +52 -15
- package/src/apps/data/routes/webhooks.test.ts +432 -33
- package/src/apps/data/routes/webhooks.ts +189 -79
- package/src/apps/data/routes/zones.test.ts +473 -0
- package/src/apps/data/routes/zones.ts +338 -0
- package/src/apps/docs/reference.ts +8 -6
- package/src/apps/index.ts +2 -1
- package/src/apps/management/Billing.test.ts +29 -0
- package/src/apps/management/Billing.ts +23 -0
- package/src/apps/management/Error.ts +12 -0
- package/src/apps/management/routes/api-keys.test.ts +5 -3
- package/src/apps/management/routes/api-keys.ts +2 -9
- package/src/apps/management/routes/invitations.ts +4 -11
- package/src/apps/management/routes/orgs.ts +2 -9
- package/src/apps/management/routes/scopes.test.ts +7 -2
- package/src/apps/management/routes/scopes.ts +2 -2
- package/src/apps/management/routes/webhooks.test.ts +6 -1
- package/src/apps/management/routes/webhooks.ts +15 -3
- package/src/apps/mpp/App.ts +276 -29
- package/src/apps/mpp/Mpp.test.ts +631 -26
- package/src/apps/mpp/Mpp.ts +0 -42
- package/src/apps/mpp/internal/Adapter.ts +108 -3
- package/src/apps/mpp/internal/Error.test.ts +33 -0
- package/src/apps/mpp/internal/Error.ts +44 -6
- package/src/apps/mpp/internal/Idempotency.test.ts +213 -0
- package/src/apps/mpp/internal/Idempotency.ts +59 -5
- package/src/apps/mpp/internal/Policy.test.ts +122 -0
- package/src/apps/mpp/internal/Policy.ts +98 -0
- package/src/apps/mpp/internal/ScreenManager.test.ts +68 -0
- package/src/apps/mpp/internal/ScreenManager.ts +41 -0
- package/src/apps/mpp/internal/Screening.ts +40 -3
- package/src/apps/mpp/internal/Sponsorship.ts +144 -0
- package/src/apps/mpp/internal/Utils.ts +30 -0
- package/src/apps/relay/App.test.ts +495 -64
- package/src/apps/relay/App.ts +234 -24
- package/src/apps/relay/Sponsorships.test.ts +51 -0
- package/src/apps/relay/Sponsorships.ts +19 -7
- package/src/db/Db.ts +439 -0
- package/src/db/Schema.ts +325 -2
- package/src/db/tables/earnVaults.test.ts +185 -0
- package/src/db/tables/earnVaults.ts +151 -0
- package/src/db/tables/fundingCatalog.test.ts +108 -0
- package/src/db/tables/fundingCatalog.ts +157 -0
- package/src/db/tables/fundingDepositAddresses.test.ts +580 -0
- package/src/db/tables/fundingDepositAddresses.ts +376 -0
- package/src/db/tables/fundingDeposits.test.ts +261 -0
- package/src/db/tables/fundingDeposits.ts +229 -0
- package/src/db/tables/fundingIdempotency.test.ts +182 -0
- package/src/db/tables/fundingIdempotency.ts +180 -0
- package/src/db/tables/fundingTransferEvents.ts +28 -0
- package/src/db/tables/fundingTransferTransactions.test.ts +69 -0
- package/src/db/tables/fundingTransferTransactions.ts +37 -0
- package/src/db/tables/fundingTransfers.test.ts +89 -0
- package/src/db/tables/fundingTransfers.ts +153 -0
- package/src/db/tables/organizations.test.ts +88 -0
- package/src/db/tables/organizations.ts +42 -1
- package/src/db/tables/projects.ts +16 -0
- package/src/db/tables/requestUsage.ts +23 -0
- package/src/db/tables/sponsoredTransactions.test.ts +52 -2
- package/src/db/tables/sponsoredTransactions.ts +18 -6
- package/src/db/tables/users.ts +16 -0
- package/src/db/tables/verifiedTokens.ts +19 -14
- package/src/db/tables/webhookSubscriptions.ts +58 -3
- package/src/handlers/relay.test.ts +2 -0
- package/src/handlers/relay.ts +95 -99
- package/src/internal/Auth.test.ts +48 -0
- package/src/internal/Auth.ts +61 -2
- package/src/internal/Cache.ts +13 -9
- package/src/internal/Cursor.test.ts +2 -2
- package/src/internal/Cursor.ts +1 -1
- package/src/internal/EarnRates.test.ts +125 -0
- package/src/internal/EarnRates.ts +409 -0
- package/src/internal/EarnVaults.test.ts +195 -0
- package/src/internal/EarnVaults.ts +876 -0
- package/src/internal/EdgeCache.test.ts +37 -5
- package/src/internal/EdgeCache.ts +39 -7
- package/src/internal/Id.ts +14 -0
- package/src/internal/Idempotency.test.ts +109 -0
- package/src/internal/Idempotency.ts +237 -0
- package/src/internal/Log.test-d.ts +41 -8
- package/src/internal/Log.test.ts +189 -8
- package/src/internal/Log.ts +124 -17
- package/src/internal/MetricSink.test.ts +244 -4
- package/src/internal/MetricSink.ts +51 -1
- package/src/internal/OpenApi.ts +3 -0
- package/src/internal/Provider.test.ts +17 -0
- package/src/internal/Provider.ts +17 -0
- package/src/internal/Schema.test.ts +13 -0
- package/src/internal/Schema.ts +41 -24
- package/src/internal/Store.test.ts +25 -0
- package/src/internal/Store.ts +46 -0
- package/src/internal/Tidx.local.test.ts +78 -3
- package/src/internal/Tidx.test.ts +212 -18
- package/src/internal/Tidx.ts +112 -32
- package/src/internal/VerifiedTokens.test.ts +15 -0
- package/src/internal/Viem.test.ts +170 -17
- package/src/internal/Viem.ts +111 -28
- package/src/internal/WebhookDestination.ts +25 -23
- package/src/internal/Webhooks.test.ts +59 -0
- package/src/internal/Webhooks.ts +34 -10
- package/src/internal/exchange/Provider.test.ts +216 -0
- package/src/internal/exchange/Provider.ts +326 -0
- package/src/internal/exchange/index.test.ts +6 -0
- package/src/internal/exchange/index.ts +1 -0
- package/src/internal/exchange/providers/uniswap.test.ts +122 -0
- package/src/internal/exchange/providers/uniswap.ts +682 -0
- package/src/internal/funding/Action.test.ts +138 -0
- package/src/internal/funding/Action.ts +117 -0
- package/src/internal/funding/Catalog.test.ts +311 -0
- package/src/internal/funding/Catalog.ts +347 -0
- package/src/internal/funding/Chain.test.ts +79 -0
- package/src/internal/funding/Chain.ts +120 -0
- package/src/internal/funding/Deposit.test.ts +26 -0
- package/src/internal/funding/Deposit.ts +453 -0
- package/src/internal/funding/DepositAddress.test.ts +18 -0
- package/src/internal/funding/DepositAddress.ts +312 -0
- package/src/internal/funding/Evidence.test.ts +297 -0
- package/src/internal/funding/Evidence.ts +430 -0
- package/src/internal/funding/Provider.test.ts +1328 -0
- package/src/internal/funding/Provider.ts +1796 -0
- package/src/internal/funding/Reconciliation.local.test.ts +504 -0
- package/src/internal/funding/Reconciliation.test.ts +2020 -0
- package/src/internal/funding/Reconciliation.ts +930 -0
- package/src/internal/funding/Route.test.ts +66 -0
- package/src/internal/funding/Route.ts +29 -0
- package/src/internal/funding/Subsidy.local.test.ts +152 -0
- package/src/internal/funding/Subsidy.test.ts +75 -0
- package/src/internal/funding/Subsidy.ts +260 -0
- package/src/internal/funding/Token.test.ts +47 -0
- package/src/internal/funding/Token.ts +59 -0
- package/src/internal/funding/Transfer.test.ts +369 -0
- package/src/internal/funding/Transfer.ts +522 -0
- package/src/internal/funding/index.test.ts +20 -0
- package/src/internal/funding/index.ts +12 -0
- package/src/internal/funding/providers/across.ts +149 -0
- package/src/{apps/data/FundingQuoteProviders.test.ts → internal/funding/providers/index.test.ts} +178 -157
- package/src/internal/funding/providers/relay.test.ts +474 -0
- package/src/internal/funding/providers/relay.ts +559 -0
- package/src/internal/funding/providers/rhino.ts +139 -0
- package/src/internal/funding/providers/squid.ts +151 -0
- package/src/internal/funding/providers/symbiosis.ts +221 -0
- package/src/internal/index.test.ts +5 -1
- package/src/internal/index.ts +5 -1
- package/src/internal/webhookDestinations/url.ts +49 -45
- package/src/providers/index.test.ts +14 -0
- package/src/providers/index.ts +54 -0
- package/dist/apps/data/FundingQuoteProviders.d.ts +0 -174
- package/dist/apps/data/FundingQuoteProviders.d.ts.map +0 -1
- package/dist/apps/data/FundingQuoteProviders.js +0 -775
- package/dist/apps/data/FundingQuoteProviders.js.map +0 -1
- package/dist/internal/FundingQuotes.d.ts +0 -864
- package/dist/internal/FundingQuotes.d.ts.map +0 -1
- package/dist/internal/FundingQuotes.js +0 -672
- package/dist/internal/FundingQuotes.js.map +0 -1
- package/src/apps/data/FundingQuoteProviders.ts +0 -1043
- package/src/internal/FundingQuotes.test.ts +0 -456
- package/src/internal/FundingQuotes.ts +0 -944
package/src/App.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { cors as hono_cors } from 'hono/cors'
|
|
|
5
5
|
import { HTTPException } from 'hono/http-exception'
|
|
6
6
|
import { requestId, type RequestIdVariables } from 'hono/request-id'
|
|
7
7
|
import { generateSpecs } from 'hono-openapi'
|
|
8
|
+
import type { Chain } from 'viem'
|
|
8
9
|
|
|
9
10
|
import type * as Analytics from './analytics/Analytics.js'
|
|
10
11
|
import * as ApiKey from './ApiKey.js'
|
|
@@ -18,6 +19,7 @@ import type * as Metrics from './Metrics.js'
|
|
|
18
19
|
import * as OpenApi from './internal/OpenApi.js'
|
|
19
20
|
import * as Store from './internal/Store.js'
|
|
20
21
|
import * as Path from './internal/Path.js'
|
|
22
|
+
import type * as Provider from './internal/Provider.js'
|
|
21
23
|
import * as Response from './internal/Response.js'
|
|
22
24
|
import * as Scope from './Scope.js'
|
|
23
25
|
import type * as Tidx from './internal/Tidx.js'
|
|
@@ -27,6 +29,7 @@ import * as Viem from './internal/Viem.js'
|
|
|
27
29
|
import openrpcSpec from './openrpc.json' with { type: 'json' }
|
|
28
30
|
|
|
29
31
|
import * as Metadata from './apps/metadata.js'
|
|
32
|
+
import * as Zones from './apps/Zones.js'
|
|
30
33
|
import * as Data from './apps/data/App.js'
|
|
31
34
|
import * as Management from './apps/management/App.js'
|
|
32
35
|
import * as Mpp from './apps/mpp/App.js'
|
|
@@ -62,6 +65,8 @@ export type Environment = {
|
|
|
62
65
|
dbCached: Db.Source
|
|
63
66
|
/** KV state store backing API-key records, or undefined when key auth is closed. */
|
|
64
67
|
kv: { store: Store.State } | undefined
|
|
68
|
+
/** Providers registered by the host application. */
|
|
69
|
+
providers: readonly Provider.Provider[]
|
|
65
70
|
/** Issuable API-key scope catalog, including host-defined entries. */
|
|
66
71
|
scopeCatalog: Scope.Catalog
|
|
67
72
|
/** Gets one static API asset. */
|
|
@@ -80,8 +85,8 @@ export type Environment = {
|
|
|
80
85
|
tidx: Tidx.getClient.Tidx | undefined
|
|
81
86
|
/** Verified-token feature configuration (refresh window), or undefined when the feature is disabled. Token rows live in `db`. */
|
|
82
87
|
verifiedTokens: { refreshMs?: number | undefined } | undefined
|
|
83
|
-
/** Zone
|
|
84
|
-
zones: ReadonlyMap<number,
|
|
88
|
+
/** Zone chains keyed by chain id; empty when none are configured. */
|
|
89
|
+
zones: ReadonlyMap<number, Chain>
|
|
85
90
|
/** Webhook feature configuration, or undefined when webhooks are disabled. Rows live in `db`. */
|
|
86
91
|
webhook: Webhook | undefined
|
|
87
92
|
} & EdgeCache.Variables &
|
|
@@ -108,7 +113,7 @@ function compose(options: create.Options) {
|
|
|
108
113
|
return create(options)
|
|
109
114
|
.route('/', data())
|
|
110
115
|
.route('/', relay())
|
|
111
|
-
.route('/', mpp())
|
|
116
|
+
.route('/', mpp({ state: Store.memory() }))
|
|
112
117
|
.route('/', management())
|
|
113
118
|
}
|
|
114
119
|
|
|
@@ -141,10 +146,28 @@ export type Asset = {
|
|
|
141
146
|
}
|
|
142
147
|
|
|
143
148
|
/** Gets one static API asset for a chain, or undefined when it is missing. */
|
|
144
|
-
export type GetAsset = (
|
|
149
|
+
export type GetAsset = ((
|
|
145
150
|
chainId: Viem.ChainId,
|
|
146
151
|
path: string,
|
|
147
|
-
) => Asset | undefined | Promise<Asset | undefined>
|
|
152
|
+
) => Asset | undefined | Promise<Asset | undefined>) & {
|
|
153
|
+
/** Lists public asset locations under a path prefix, when supported. */
|
|
154
|
+
list?: GetAsset.List | undefined
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export declare namespace GetAsset {
|
|
158
|
+
/** Lists public asset locations for a chain and path prefix. */
|
|
159
|
+
type List = (
|
|
160
|
+
chainId: Viem.ChainId,
|
|
161
|
+
path: string,
|
|
162
|
+
) => Promise<
|
|
163
|
+
readonly {
|
|
164
|
+
/** Internal asset-store key. */
|
|
165
|
+
key: string
|
|
166
|
+
/** Absolute public API URL for the asset. */
|
|
167
|
+
uri: string
|
|
168
|
+
}[]
|
|
169
|
+
>
|
|
170
|
+
}
|
|
148
171
|
|
|
149
172
|
/** Top-level OpenAPI `info.description`, rendered above the reference. */
|
|
150
173
|
const infoDescription = 'REST API for reading and interacting with Tempo'
|
|
@@ -170,11 +193,22 @@ export function create<const path extends string = '/'>(options: create.Options<
|
|
|
170
193
|
const store = options.cache?.store ?? Store.memory()
|
|
171
194
|
const scopeCatalog = Scope.extend(options.scopes)
|
|
172
195
|
const defaultChainId = options.defaultChainId ?? Viem.defaultChainId
|
|
173
|
-
const
|
|
196
|
+
const zones = new Map(
|
|
197
|
+
(options.zones === true ? Zones.chains : (options.zones ?? [])).map((zone) => [zone.id, zone]),
|
|
198
|
+
)
|
|
199
|
+
const getClient = Viem.createGetClient({
|
|
200
|
+
defaultChainId,
|
|
201
|
+
rpc: options.rpc,
|
|
202
|
+
zones: [...zones.values()],
|
|
203
|
+
})
|
|
204
|
+
const configuredRpcChainIds =
|
|
205
|
+
typeof options.rpc === 'function' ? [] : Viem.configuredChainIds(options.rpc?.url)
|
|
174
206
|
const supportedChainIds = new Set<number>([
|
|
175
207
|
...Object.keys(Viem.url).map(Number),
|
|
176
208
|
defaultChainId,
|
|
209
|
+
...configuredRpcChainIds,
|
|
177
210
|
...(options.supportedChainIds ?? []),
|
|
211
|
+
...zones.keys(),
|
|
178
212
|
])
|
|
179
213
|
|
|
180
214
|
// Build the app in two phases: register middleware imperatively, then chain
|
|
@@ -242,6 +276,18 @@ export function create<const path extends string = '/'>(options: create.Options<
|
|
|
242
276
|
// side; `cached` falls back to `source` so consumers never branch.
|
|
243
277
|
const db = 'source' in options.db ? options.db : { source: options.db }
|
|
244
278
|
|
|
279
|
+
const providers = (() => {
|
|
280
|
+
const values = options.providers ?? []
|
|
281
|
+
const ids = new Set<string>()
|
|
282
|
+
for (const provider of values) {
|
|
283
|
+
if (provider.id.length === 0 || provider.id !== provider.id.trim().toLowerCase())
|
|
284
|
+
throw new InvalidProviderIdError(provider.id)
|
|
285
|
+
if (ids.has(provider.id)) throw new DuplicateProviderIdError(provider.id)
|
|
286
|
+
ids.add(provider.id)
|
|
287
|
+
}
|
|
288
|
+
return values
|
|
289
|
+
})()
|
|
290
|
+
|
|
245
291
|
// Normalize the `analytics` option: accept the bare source or `{ source }`,
|
|
246
292
|
// mirroring `db`. Undefined leaves usage analytics unconfigured (501).
|
|
247
293
|
const analytics =
|
|
@@ -269,10 +315,12 @@ export function create<const path extends string = '/'>(options: create.Options<
|
|
|
269
315
|
c.set('dbCached', db.cached ?? db.source)
|
|
270
316
|
c.set('getClient', (chainId) => getClient(chainId, Auth.getPrincipal(c)))
|
|
271
317
|
c.set('kv', options.kv)
|
|
318
|
+
c.set('providers', providers)
|
|
272
319
|
c.set('rpc', options.rpc)
|
|
273
320
|
c.set('scopeCatalog', scopeCatalog)
|
|
274
321
|
c.set('store', store)
|
|
275
322
|
c.set('supportedChainIds', supportedChainIds)
|
|
323
|
+
c.set('zones', zones)
|
|
276
324
|
await next()
|
|
277
325
|
})
|
|
278
326
|
|
|
@@ -425,15 +473,15 @@ export function create<const path extends string = '/'>(options: create.Options<
|
|
|
425
473
|
// from each route's resolved auth policy (the single source of truth), so
|
|
426
474
|
// the anonymous option and `402` appear only where the public/MPP lanes
|
|
427
475
|
// are enabled, not on every operation via the document default.
|
|
428
|
-
applyAccess(generated.paths, Auth.describeAccess(app))
|
|
476
|
+
OpenApiDocument.applyAccess(generated.paths, Auth.describeAccess(app))
|
|
429
477
|
// Point the `/rpc` operation at the OpenRPC document via `x-openrpc`.
|
|
430
|
-
applyOpenrpcLink(generated.paths, basePath)
|
|
478
|
+
OpenApiDocument.applyOpenrpcLink(generated.paths, basePath)
|
|
431
479
|
// Re-order paths so list endpoints appear before get endpoints inside each
|
|
432
480
|
// tag group in the sidebar. We classify by operation summary, which every
|
|
433
481
|
// handler sets as either "List ..." or "Get ...". The reference groups by
|
|
434
482
|
// tag and preserves document path order within a tag, so reordering here
|
|
435
483
|
// drives the sidebar sub-item order.
|
|
436
|
-
return { ...generated, ...webhooksDoc, paths: sortPaths(generated.paths) }
|
|
484
|
+
return { ...generated, ...webhooksDoc, paths: OpenApiDocument.sortPaths(generated.paths) }
|
|
437
485
|
}
|
|
438
486
|
let finalized = false
|
|
439
487
|
const finalize = () => {
|
|
@@ -474,8 +522,8 @@ export function create<const path extends string = '/'>(options: create.Options<
|
|
|
474
522
|
* Hono type (which `testClient` needs); intersecting the listener onto the
|
|
475
523
|
* app degrades the typed proxy inference.
|
|
476
524
|
*/
|
|
477
|
-
export function listener(app: { fetch:
|
|
478
|
-
return getRequestListener(app.fetch)
|
|
525
|
+
export function listener(app: { fetch: NodeServer.Fetch }): Listener {
|
|
526
|
+
return NodeServer.getRequestListener(app.fetch)
|
|
479
527
|
}
|
|
480
528
|
|
|
481
529
|
export declare namespace create {
|
|
@@ -507,6 +555,8 @@ export declare namespace create {
|
|
|
507
555
|
metrics?: Metrics.Metrics | undefined
|
|
508
556
|
/** Base path to mount API handlers under. Provided as a literal via the `path` generic so the resulting Hono schema keeps typed route paths for `testClient`. */
|
|
509
557
|
path?: path | undefined
|
|
558
|
+
/** Providers available to mounted route groups. */
|
|
559
|
+
providers?: readonly Provider.Provider[] | undefined
|
|
510
560
|
/** Tempo RPC options, including per-request routing by request principal. */
|
|
511
561
|
rpc?: Viem.getClient.Rpc | undefined
|
|
512
562
|
/** OpenAPI `servers` for the generated document. Defaults to a single relative server (the host serving the doc), so the reference targets the deployment it is served from. Set the canonical public URL(s) here, e.g. `[{ url: 'https://api.tempo.xyz' }]`. */
|
|
@@ -515,6 +565,8 @@ export declare namespace create {
|
|
|
515
565
|
scopes?: readonly Scope.Entry[] | undefined
|
|
516
566
|
/** Extra chain ids served beyond the built-in chains and `defaultChainId`. */
|
|
517
567
|
supportedChainIds?: readonly number[] | undefined
|
|
568
|
+
/** Zone chains served by this deployment. Pass true to use the hosted Zone list. */
|
|
569
|
+
zones?: true | readonly Chain[] | undefined
|
|
518
570
|
}
|
|
519
571
|
|
|
520
572
|
/** KV state-store configuration. */
|
|
@@ -612,157 +664,192 @@ async function errorFromException(c: Context<Environment>, cause: HTTPException)
|
|
|
612
664
|
const response = cause.getResponse()
|
|
613
665
|
response.headers.set('tempo-request-id', requestId)
|
|
614
666
|
|
|
615
|
-
if (!isJson(response)) return response
|
|
667
|
+
if (!ResponseBody.isJson(response)) return response
|
|
616
668
|
|
|
617
669
|
const body = await response
|
|
618
670
|
.clone()
|
|
619
671
|
.json()
|
|
620
672
|
.catch(() => null)
|
|
621
|
-
if (!
|
|
673
|
+
if (!body || typeof body !== 'object' || Array.isArray(body)) return response
|
|
622
674
|
|
|
623
675
|
return c.json({ ...body, requestId }, cause.status, Object.fromEntries(response.headers))
|
|
624
676
|
}
|
|
625
677
|
|
|
626
|
-
|
|
627
|
-
//
|
|
628
|
-
//
|
|
629
|
-
// tokens" — `/
|
|
630
|
-
//
|
|
631
|
-
//
|
|
632
|
-
//
|
|
633
|
-
//
|
|
634
|
-
//
|
|
635
|
-
//
|
|
636
|
-
//
|
|
637
|
-
//
|
|
638
|
-
//
|
|
639
|
-
//
|
|
640
|
-
//
|
|
641
|
-
//
|
|
642
|
-
//
|
|
643
|
-
//
|
|
644
|
-
//
|
|
645
|
-
//
|
|
646
|
-
//
|
|
647
|
-
//
|
|
648
|
-
//
|
|
649
|
-
//
|
|
650
|
-
//
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
const
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
if (
|
|
663
|
-
|
|
678
|
+
namespace OpenApiDocument {
|
|
679
|
+
// Reorder OpenAPI `paths` so reads come before writes within each tag group,
|
|
680
|
+
// and shallower paths come before deeper paths inside each bucket so root-level
|
|
681
|
+
// routes ("List tokens" — `/tokens`) win over nested ones ("List address
|
|
682
|
+
// tokens" — `/addresses/{address}/tokens`). Tie-break by original document
|
|
683
|
+
// order to keep registered grouping.
|
|
684
|
+
//
|
|
685
|
+
// A path is ranked as a unit because REST groups verbs onto shared paths (and
|
|
686
|
+
// the reference renders all methods of a path adjacently, in the fixed canonical
|
|
687
|
+
// method order GET→POST→PATCH→DELETE), so two operations on the same path can
|
|
688
|
+
// never be separated or reordered relative to each other.
|
|
689
|
+
//
|
|
690
|
+
// Read-only tags keep lists-before-gets (tiers 0/2). The `Webhooks` tag instead
|
|
691
|
+
// groups all reads (lists, then the item GET) ahead of the item writes, scoped
|
|
692
|
+
// to that tag so the read tags are untouched. The shared-path constraint means
|
|
693
|
+
// the desired "Create, all GETs (lists first), Update, Delete" can only be
|
|
694
|
+
// approximated: `Create webhook` shares `/webhooks` with `List webhooks`, and
|
|
695
|
+
// vocs renders GET before POST, so "List webhooks" unavoidably precedes
|
|
696
|
+
// "Create". `Get`/`Update`/`Delete` all share `/webhooks/{id}`, so they render
|
|
697
|
+
// adjacently as Get→Update→Delete. The `{id}` item is tiered right after the
|
|
698
|
+
// collection root, so `Get/Update/Delete` sit just below `List webhooks/Create`,
|
|
699
|
+
// ahead of the remaining lists and action POSTs. Tiers:
|
|
700
|
+
// 0 collection root (`GET`+`POST /webhooks`) → "List webhooks, Create webhook"
|
|
701
|
+
// 1 item (`GET`+`PATCH`+`DELETE /webhooks/{id}`) → "Get, Update, Delete"
|
|
702
|
+
// 2 other list-only paths (`/event-types`, `/deliveries`)
|
|
703
|
+
// 3 other writes/actions (`POST .../ping`, `.../retry`)
|
|
704
|
+
// `Funding` keeps discovery reads first, then groups its three create operations;
|
|
705
|
+
// the collection list precedes create because both share one path.
|
|
706
|
+
export function sortPaths(paths: PathsObject): PathsObject {
|
|
707
|
+
const entries = Object.entries(paths)
|
|
708
|
+
const rank = (entry: [string, PathItem]) => {
|
|
709
|
+
const operations = Object.values(entry[1])
|
|
710
|
+
const summaries = operations.flatMap((op) =>
|
|
711
|
+
isOperation(op) && op.summary ? [op.summary] : [],
|
|
712
|
+
)
|
|
713
|
+
const has = (prefix: string) => summaries.some((summary) => summary.startsWith(prefix))
|
|
714
|
+
if (operations.some((op) => isOperation(op) && op.tags?.includes('Webhooks'))) {
|
|
715
|
+
if (has('Create')) return 0
|
|
716
|
+
if (has('Get')) return 1
|
|
717
|
+
if (has('List')) return 2
|
|
718
|
+
return 3
|
|
719
|
+
}
|
|
720
|
+
if (operations.some((op) => isOperation(op) && op.tags?.includes('Funding'))) {
|
|
721
|
+
if (has('Create')) return 1
|
|
722
|
+
if (has('Get transfer')) return 2
|
|
723
|
+
return 0
|
|
724
|
+
}
|
|
725
|
+
if (has('List')) return has('Create') ? 1 : 0
|
|
726
|
+
if (has('Get')) return 2
|
|
727
|
+
if (has('Create')) return 3
|
|
728
|
+
return 4
|
|
664
729
|
}
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
730
|
+
const depth = (path: string) =>
|
|
731
|
+
path.endsWith('/rpc') ? 2 : path.split('/').filter(Boolean).length
|
|
732
|
+
const indexed = entries.map(
|
|
733
|
+
(entry, index) => [entry, index, rank(entry), depth(entry[0])] as const,
|
|
734
|
+
)
|
|
735
|
+
indexed.sort(([, ai, ar, ad], [, bi, br, bd]) => ar - br || ad - bd || ai - bi)
|
|
736
|
+
return Object.fromEntries(indexed.map(([entry]) => entry))
|
|
669
737
|
}
|
|
670
|
-
const depth = (path: string) =>
|
|
671
|
-
path.endsWith('/rpc') ? 2 : path.split('/').filter(Boolean).length
|
|
672
|
-
const indexed = entries.map(
|
|
673
|
-
(entry, index) => [entry, index, rank(entry), depth(entry[0])] as const,
|
|
674
|
-
)
|
|
675
|
-
indexed.sort(([, ai, ar, ad], [, bi, br, bd]) => ar - br || ad - bd || ai - bi)
|
|
676
|
-
return Object.fromEntries(indexed.map(([entry]) => entry))
|
|
677
|
-
}
|
|
678
738
|
|
|
679
|
-
/**
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
function applyAccess(paths: PathsObject, access: Record<string, Auth.OperationAccess>) {
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
739
|
+
/**
|
|
740
|
+
* Applies route security, required scopes, and payment responses from resolved access lanes.
|
|
741
|
+
* API keys support header, query, and bearer authentication.
|
|
742
|
+
*/
|
|
743
|
+
export function applyAccess(paths: PathsObject, access: Record<string, Auth.OperationAccess>) {
|
|
744
|
+
for (const item of Object.values(paths)) {
|
|
745
|
+
for (const op of Object.values(item as Record<string, unknown>)) {
|
|
746
|
+
if (!isMutableOperation(op)) continue
|
|
747
|
+
const lanes = access[op.operationId]
|
|
748
|
+
if (!lanes) continue
|
|
749
|
+
const security = [
|
|
750
|
+
...(lanes.apiKey ? [{ apiKey: [] }, { queryApiKey: [] }, { bearerAuth: [] }] : []),
|
|
751
|
+
...(lanes.session
|
|
752
|
+
? [{ session: [] }, ...(lanes.apiKey ? [] : [{ bearerAuth: [] }])]
|
|
753
|
+
: []),
|
|
754
|
+
...(lanes.public ? [{}] : []),
|
|
755
|
+
]
|
|
756
|
+
if (security.length > 0) op.security = security
|
|
757
|
+
if (lanes.scopes.length > 0) op['x-required-scopes'] = [...lanes.scopes]
|
|
758
|
+
if (lanes.mpp) op.responses = { ...op.responses, 402: OpenApi.paymentChallengeRef }
|
|
759
|
+
else if (op.responses) delete op.responses['402']
|
|
760
|
+
}
|
|
698
761
|
}
|
|
699
762
|
}
|
|
700
|
-
}
|
|
701
763
|
|
|
702
|
-
/**
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
function applyOpenrpcLink(paths: PathsObject, basePath: string) {
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
}
|
|
764
|
+
/**
|
|
765
|
+
* Links the JSON-RPC passthrough operation to the OpenRPC document (served at
|
|
766
|
+
* `{basePath}/openrpc.json`) via an `x-openrpc` vendor extension. The raw `/rpc`
|
|
767
|
+
* request body is opaque to OpenAPI, so this lets consumers discover the
|
|
768
|
+
* method/param/return schemas it accepts.
|
|
769
|
+
*
|
|
770
|
+
* The public `/openapi.json` keeps a URL reference (small, conventional). The
|
|
771
|
+
* docs handler instead inlines the document — see `inlineOpenrpc` in `tapimo/docs`.
|
|
772
|
+
*/
|
|
773
|
+
export function applyOpenrpcLink(paths: PathsObject, basePath: string) {
|
|
774
|
+
// `basePath` is `/` at the root mount and `/api` etc. otherwise; strip any
|
|
775
|
+
// trailing slash so the join never doubles up (`//openrpc.json`).
|
|
776
|
+
const url = `${basePath.replace(/\/$/, '')}/openrpc.json`
|
|
777
|
+
for (const item of Object.values(paths))
|
|
778
|
+
for (const op of Object.values(item as Record<string, unknown>))
|
|
779
|
+
if (isMutableOperation(op) && isRpcOperation(op)) op['x-openrpc'] = url
|
|
780
|
+
}
|
|
719
781
|
|
|
720
|
-
type PathsObject = Awaited<ReturnType<typeof generateSpecs>>['paths']
|
|
721
|
-
type PathItem = PathsObject[string]
|
|
722
|
-
type Operation = { summary?: string | undefined }
|
|
723
|
-
type MutableOperation = {
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
}
|
|
782
|
+
type PathsObject = Awaited<ReturnType<typeof generateSpecs>>['paths']
|
|
783
|
+
type PathItem = PathsObject[string]
|
|
784
|
+
type Operation = { summary?: string | undefined }
|
|
785
|
+
type MutableOperation = {
|
|
786
|
+
operationId: string
|
|
787
|
+
responses?: Record<string, unknown> | undefined
|
|
788
|
+
security?: unknown
|
|
789
|
+
'x-openrpc'?: unknown
|
|
790
|
+
'x-required-scopes'?: unknown
|
|
791
|
+
}
|
|
730
792
|
|
|
731
|
-
function isRpcOperation(op: MutableOperation) {
|
|
732
|
-
|
|
733
|
-
}
|
|
793
|
+
function isRpcOperation(op: MutableOperation) {
|
|
794
|
+
return op.operationId === 'rpcRequest'
|
|
795
|
+
}
|
|
796
|
+
|
|
797
|
+
function isOperation(value: unknown): value is Operation {
|
|
798
|
+
return !!value && typeof value === 'object' && 'summary' in value
|
|
799
|
+
}
|
|
734
800
|
|
|
735
|
-
function
|
|
736
|
-
|
|
801
|
+
function isMutableOperation(value: unknown): value is MutableOperation {
|
|
802
|
+
return (
|
|
803
|
+
!!value &&
|
|
804
|
+
typeof value === 'object' &&
|
|
805
|
+
!Array.isArray(value) &&
|
|
806
|
+
'operationId' in value &&
|
|
807
|
+
typeof value.operationId === 'string'
|
|
808
|
+
)
|
|
809
|
+
}
|
|
737
810
|
}
|
|
738
811
|
|
|
739
|
-
|
|
740
|
-
|
|
812
|
+
namespace ResponseBody {
|
|
813
|
+
export function isJson(response: globalThis.Response) {
|
|
814
|
+
return response.headers.get('content-type')?.includes('application/json') ?? false
|
|
815
|
+
}
|
|
741
816
|
}
|
|
742
817
|
|
|
743
|
-
|
|
744
|
-
|
|
818
|
+
namespace NodeServer {
|
|
819
|
+
type GetRequestListener = (typeof import('@hono/node-server'))['getRequestListener']
|
|
820
|
+
export type Fetch = Parameters<GetRequestListener>[0]
|
|
821
|
+
type NodeRequestListener = ReturnType<GetRequestListener>
|
|
822
|
+
|
|
823
|
+
export function getRequestListener(fetch: Fetch): Listener {
|
|
824
|
+
let listener: NodeRequestListener | undefined
|
|
825
|
+
return async (incoming_, outgoing_) => {
|
|
826
|
+
// Resolve the Node-only adapter at call time. The split specifier keeps
|
|
827
|
+
// Worker bundlers from eagerly including a server adapter they never run.
|
|
828
|
+
if (listener === undefined) {
|
|
829
|
+
const nodeServer = (await import(
|
|
830
|
+
/* @vite-ignore */ ['@hono', 'node-server'].join('/')
|
|
831
|
+
)) as typeof import('@hono/node-server')
|
|
832
|
+
listener = nodeServer.getRequestListener(fetch)
|
|
833
|
+
}
|
|
834
|
+
return listener(incoming_ as never, outgoing_ as never)
|
|
835
|
+
}
|
|
836
|
+
}
|
|
745
837
|
}
|
|
746
838
|
|
|
747
|
-
|
|
748
|
-
|
|
839
|
+
/** Error thrown when an app registers the same provider identifier more than once. */
|
|
840
|
+
export class DuplicateProviderIdError extends Error {
|
|
841
|
+
override name = 'App.DuplicateProviderIdError'
|
|
842
|
+
|
|
843
|
+
constructor(id: string) {
|
|
844
|
+
super(`Duplicate provider id "${id}".`)
|
|
845
|
+
}
|
|
749
846
|
}
|
|
750
847
|
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
return async (incoming_, outgoing_) => {
|
|
758
|
-
// Resolve the Node-only adapter at call time. The split specifier keeps
|
|
759
|
-
// Worker bundlers from eagerly including a server adapter they never run.
|
|
760
|
-
if (listener === undefined) {
|
|
761
|
-
const nodeServer = (await import(
|
|
762
|
-
/* @vite-ignore */ ['@hono', 'node-server'].join('/')
|
|
763
|
-
)) as typeof import('@hono/node-server')
|
|
764
|
-
listener = nodeServer.getRequestListener(fetch)
|
|
765
|
-
}
|
|
766
|
-
return listener(incoming_ as never, outgoing_ as never)
|
|
848
|
+
/** Error thrown when an app registers a provider with a non-normalized identifier. */
|
|
849
|
+
export class InvalidProviderIdError extends Error {
|
|
850
|
+
override name = 'App.InvalidProviderIdError'
|
|
851
|
+
|
|
852
|
+
constructor(id: string) {
|
|
853
|
+
super(`Invalid provider id "${id}". Provider ids must be lowercase and trimmed.`)
|
|
767
854
|
}
|
|
768
855
|
}
|
package/src/Assets.ts
CHANGED
|
@@ -18,6 +18,8 @@ export type Asset = {
|
|
|
18
18
|
export type Assets = {
|
|
19
19
|
/** Reads an asset by `key`, or `undefined` when absent. */
|
|
20
20
|
get(key: string): Promise<Asset | undefined>
|
|
21
|
+
/** Lists asset keys matching `prefix`, when the backend supports enumeration. */
|
|
22
|
+
list?: ((prefix: string) => Promise<readonly string[]>) | undefined
|
|
21
23
|
/** Stores an asset at `key`, replacing any existing object. Omit for read-only stores. */
|
|
22
24
|
put?: ((key: string, asset: Asset) => Promise<void>) | undefined
|
|
23
25
|
}
|
|
@@ -26,9 +28,6 @@ export type Assets = {
|
|
|
26
28
|
export function cloudflareR2(bucket: cloudflareR2.Bucket): Assets {
|
|
27
29
|
return {
|
|
28
30
|
async get(key) {
|
|
29
|
-
// Legacy source-extension aliases may sort before the extensionless key.
|
|
30
|
-
const { objects } = await bucket.list({ limit: 1_000, prefix: key })
|
|
31
|
-
if (!objects.some((object) => object.key === key)) return undefined
|
|
32
31
|
const object = await bucket.get(key)
|
|
33
32
|
if (!object) return undefined
|
|
34
33
|
return {
|
|
@@ -36,6 +35,21 @@ export function cloudflareR2(bucket: cloudflareR2.Bucket): Assets {
|
|
|
36
35
|
contentType: object.httpMetadata?.contentType ?? 'application/octet-stream',
|
|
37
36
|
}
|
|
38
37
|
},
|
|
38
|
+
async list(prefix) {
|
|
39
|
+
const keys: string[] = []
|
|
40
|
+
let cursor: string | undefined
|
|
41
|
+
for (;;) {
|
|
42
|
+
const page = await bucket.list({
|
|
43
|
+
...(cursor === undefined ? {} : { cursor }),
|
|
44
|
+
limit: 1_000,
|
|
45
|
+
prefix,
|
|
46
|
+
})
|
|
47
|
+
keys.push(...page.objects.map((object) => object.key))
|
|
48
|
+
if (!page.truncated) return keys
|
|
49
|
+
if (!page.cursor) throw new Error('R2 returned a truncated asset list without a cursor.')
|
|
50
|
+
cursor = page.cursor
|
|
51
|
+
}
|
|
52
|
+
},
|
|
39
53
|
put: (key, { body, contentType }) =>
|
|
40
54
|
bucket.put(key, body, { httpMetadata: { contentType } }).then(() => undefined),
|
|
41
55
|
}
|
|
@@ -52,9 +66,20 @@ export declare namespace cloudflareR2 {
|
|
|
52
66
|
httpMetadata?: { contentType?: string | undefined } | undefined
|
|
53
67
|
} | null>
|
|
54
68
|
/** Lists objects matching a key prefix. */
|
|
55
|
-
list(options: {
|
|
69
|
+
list(options: {
|
|
70
|
+
/** Continues a previous truncated listing. */
|
|
71
|
+
cursor?: string | undefined
|
|
72
|
+
/** Maximum objects returned in one page. */
|
|
73
|
+
limit: number
|
|
74
|
+
/** Object-key prefix to match. */
|
|
75
|
+
prefix: string
|
|
76
|
+
}): Promise<{
|
|
77
|
+
/** Cursor for the next page. */
|
|
78
|
+
cursor?: string | undefined
|
|
56
79
|
/** Matching objects. */
|
|
57
80
|
objects: readonly { key: string }[]
|
|
81
|
+
/** Whether more matching objects remain. */
|
|
82
|
+
truncated: boolean
|
|
58
83
|
}>
|
|
59
84
|
/** Writes an object. */
|
|
60
85
|
put(
|