tapimo 0.12.0 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/App.d.ts +11333 -9563
- package/dist/App.d.ts.map +1 -1
- package/dist/App.js +39 -3
- package/dist/App.js.map +1 -1
- package/dist/Scope.d.ts +2 -0
- package/dist/Scope.d.ts.map +1 -1
- package/dist/Scope.js +17 -0
- package/dist/Scope.js.map +1 -1
- package/dist/Webhooks.js +2 -2
- package/dist/Webhooks.js.map +1 -1
- package/dist/admin/App.d.ts +1064 -924
- package/dist/admin/App.d.ts.map +1 -1
- package/dist/admin/apps/api-keys.d.ts +80 -0
- package/dist/admin/apps/api-keys.d.ts.map +1 -1
- package/dist/admin/apps/api-keys.js +54 -0
- package/dist/admin/apps/api-keys.js.map +1 -1
- package/dist/admin/apps/earn-vaults.d.ts +63 -15
- package/dist/admin/apps/earn-vaults.d.ts.map +1 -1
- package/dist/admin/apps/earn-vaults.js +2 -1
- package/dist/admin/apps/earn-vaults.js.map +1 -1
- package/dist/admin/apps/organizations.d.ts +92 -3
- package/dist/admin/apps/organizations.d.ts.map +1 -1
- package/dist/admin/apps/organizations.js +69 -7
- package/dist/admin/apps/organizations.js.map +1 -1
- package/dist/admin/apps/verified-tokens.d.ts +7 -7
- 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 -151
- package/dist/admin/ui.generated.js.map +1 -1
- package/dist/apps/Zones.d.ts +28 -28
- package/dist/apps/Zones.js +7 -7
- package/dist/apps/data/App.d.ts +2909 -2523
- package/dist/apps/data/App.d.ts.map +1 -1
- package/dist/apps/data/App.js +26 -21
- package/dist/apps/data/App.js.map +1 -1
- package/dist/apps/data/ZoneSelection.d.ts +8 -8
- package/dist/apps/data/ZoneSelection.d.ts.map +1 -1
- package/dist/apps/data/ZoneSelection.js +1 -1
- package/dist/apps/data/ZoneSelection.js.map +1 -1
- package/dist/apps/data/routes/activities.d.ts +588 -584
- package/dist/apps/data/routes/activities.d.ts.map +1 -1
- package/dist/apps/data/routes/activities.js +1561 -1239
- package/dist/apps/data/routes/activities.js.map +1 -1
- package/dist/apps/data/routes/addresses.d.ts +22 -22
- package/dist/apps/data/routes/balances.d.ts +26 -26
- package/dist/apps/data/routes/balances.d.ts.map +1 -1
- package/dist/apps/data/routes/balances.js +43 -16
- package/dist/apps/data/routes/balances.js.map +1 -1
- package/dist/apps/data/routes/blocks.d.ts +44 -44
- package/dist/apps/data/routes/blocks.d.ts.map +1 -1
- package/dist/apps/data/routes/blocks.js +21 -11
- package/dist/apps/data/routes/blocks.js.map +1 -1
- package/dist/apps/data/routes/coingecko.d.ts +3 -3
- package/dist/apps/data/routes/earn.d.ts +201 -25
- package/dist/apps/data/routes/earn.d.ts.map +1 -1
- package/dist/apps/data/routes/earn.js +434 -75
- package/dist/apps/data/routes/earn.js.map +1 -1
- package/dist/apps/data/routes/exchanges.d.ts +160 -145
- package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
- package/dist/apps/data/routes/exchanges.js +180 -114
- package/dist/apps/data/routes/exchanges.js.map +1 -1
- package/dist/apps/data/routes/fee-amm.d.ts +2 -2
- package/dist/apps/data/routes/fee-amm.d.ts.map +1 -1
- package/dist/apps/data/routes/fee-amm.js +18 -19
- package/dist/apps/data/routes/fee-amm.js.map +1 -1
- package/dist/apps/data/routes/receipts.d.ts +155 -55
- package/dist/apps/data/routes/receipts.d.ts.map +1 -1
- package/dist/apps/data/routes/receipts.js +28 -10
- package/dist/apps/data/routes/receipts.js.map +1 -1
- package/dist/apps/data/routes/tokenlist.d.ts +13 -13
- package/dist/apps/data/routes/tokens.d.ts +5 -5
- package/dist/apps/data/routes/tokens.d.ts.map +1 -1
- package/dist/apps/data/routes/tokens.js +51 -20
- package/dist/apps/data/routes/tokens.js.map +1 -1
- package/dist/apps/data/routes/transactions.d.ts +7 -2
- package/dist/apps/data/routes/transactions.d.ts.map +1 -1
- package/dist/apps/data/routes/transactions.js +37 -17
- package/dist/apps/data/routes/transactions.js.map +1 -1
- package/dist/apps/data/routes/transfers.d.ts +13 -13
- package/dist/apps/data/routes/transfers.d.ts.map +1 -1
- package/dist/apps/data/routes/transfers.js +18 -12
- package/dist/apps/data/routes/transfers.js.map +1 -1
- package/dist/apps/data/routes/valuation.d.ts +31 -31
- package/dist/apps/data/routes/valuation.d.ts.map +1 -1
- package/dist/apps/data/routes/valuation.js +12 -7
- package/dist/apps/data/routes/valuation.js.map +1 -1
- package/dist/apps/data/routes/verified-tokens.d.ts +8 -8
- package/dist/apps/data/routes/webhooks.d.ts +816 -113
- package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
- package/dist/apps/data/routes/webhooks.js +47 -5
- package/dist/apps/data/routes/webhooks.js.map +1 -1
- package/dist/apps/data/routes/zones.d.ts +14 -14
- package/dist/apps/data/routes/zones.js +1 -1
- package/dist/apps/funding/App.d.ts +466 -44
- package/dist/apps/funding/App.d.ts.map +1 -1
- package/dist/apps/funding/App.js +1 -1
- package/dist/apps/funding/App.js.map +1 -1
- package/dist/apps/funding/routes/deposit-addresses.d.ts +17 -17
- package/dist/apps/funding/routes/deposit-addresses.d.ts.map +1 -1
- package/dist/apps/funding/routes/deposit-addresses.js +17 -12
- package/dist/apps/funding/routes/deposit-addresses.js.map +1 -1
- package/dist/apps/funding/routes/transfers.d.ts +650 -57
- package/dist/apps/funding/routes/transfers.d.ts.map +1 -1
- package/dist/apps/funding/routes/transfers.js +238 -24
- package/dist/apps/funding/routes/transfers.js.map +1 -1
- package/dist/apps/management/App.d.ts +5120 -4152
- package/dist/apps/management/App.d.ts.map +1 -1
- package/dist/apps/management/Billing.d.ts +1 -1
- package/dist/apps/management/Billing.d.ts.map +1 -1
- package/dist/apps/management/Billing.js +17 -1
- package/dist/apps/management/Billing.js.map +1 -1
- package/dist/apps/management/routes/api-keys.d.ts +632 -81
- package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
- package/dist/apps/management/routes/api-keys.js +236 -4
- package/dist/apps/management/routes/api-keys.js.map +1 -1
- package/dist/apps/management/routes/billing.d.ts +76 -76
- package/dist/apps/management/routes/faucet.d.ts +6 -6
- package/dist/apps/management/routes/invitations.d.ts +24 -24
- package/dist/apps/management/routes/invite-links.d.ts +4 -4
- package/dist/apps/management/routes/members.d.ts +16 -16
- package/dist/apps/management/routes/orgs.d.ts +20 -20
- package/dist/apps/management/routes/projects.d.ts +4 -4
- package/dist/apps/management/routes/usage.d.ts +8 -8
- package/dist/apps/management/routes/verified-token-requests.d.ts +17 -17
- package/dist/apps/management/routes/webhooks.d.ts +675 -25
- package/dist/apps/management/routes/webhooks.d.ts.map +1 -1
- package/dist/apps/management/routes/webhooks.js +21 -21
- package/dist/apps/management/routes/webhooks.js.map +1 -1
- package/dist/apps/relay/App.d.ts.map +1 -1
- package/dist/apps/relay/App.js +115 -23
- package/dist/apps/relay/App.js.map +1 -1
- package/dist/apps/relay/Sponsorships.d.ts.map +1 -1
- package/dist/apps/relay/Sponsorships.js +27 -1
- package/dist/apps/relay/Sponsorships.js.map +1 -1
- package/dist/db/Db.d.ts.map +1 -1
- package/dist/db/Db.js +34 -1
- package/dist/db/Db.js.map +1 -1
- package/dist/db/Schema.d.ts +11 -5
- package/dist/db/Schema.d.ts.map +1 -1
- package/dist/db/Schema.js +21 -3
- package/dist/db/Schema.js.map +1 -1
- package/dist/db/tables/fundingCatalog.d.ts +4 -2
- package/dist/db/tables/fundingCatalog.d.ts.map +1 -1
- package/dist/db/tables/fundingCatalog.js +5 -1
- package/dist/db/tables/fundingCatalog.js.map +1 -1
- package/dist/db/tables/fundingTransferTransactions.d.ts +38 -0
- package/dist/db/tables/fundingTransferTransactions.d.ts.map +1 -1
- package/dist/db/tables/fundingTransferTransactions.js +44 -3
- package/dist/db/tables/fundingTransferTransactions.js.map +1 -1
- package/dist/db/tables/fundingTransfers.d.ts +17 -0
- package/dist/db/tables/fundingTransfers.d.ts.map +1 -1
- package/dist/db/tables/fundingTransfers.js +21 -0
- package/dist/db/tables/fundingTransfers.js.map +1 -1
- package/dist/db/tables/organizations.d.ts +24 -0
- package/dist/db/tables/organizations.d.ts.map +1 -1
- package/dist/db/tables/organizations.js +27 -0
- package/dist/db/tables/organizations.js.map +1 -1
- package/dist/db/tables/projects.d.ts +25 -1
- package/dist/db/tables/projects.d.ts.map +1 -1
- package/dist/db/tables/projects.js +26 -0
- package/dist/db/tables/projects.js.map +1 -1
- package/dist/db/tables/sponsoredTransactions.d.ts +44 -0
- package/dist/db/tables/sponsoredTransactions.d.ts.map +1 -1
- package/dist/db/tables/sponsoredTransactions.js +146 -13
- package/dist/db/tables/sponsoredTransactions.js.map +1 -1
- package/dist/db/tables/webhookSubscriptions.d.ts +10 -6
- package/dist/db/tables/webhookSubscriptions.d.ts.map +1 -1
- package/dist/db/tables/webhookSubscriptions.js +9 -6
- package/dist/db/tables/webhookSubscriptions.js.map +1 -1
- package/dist/handlers/internal/utils.d.ts.map +1 -1
- package/dist/handlers/internal/utils.js +9 -0
- package/dist/handlers/internal/utils.js.map +1 -1
- package/dist/internal/Auth.d.ts +3 -1
- package/dist/internal/Auth.d.ts.map +1 -1
- package/dist/internal/Auth.js +6 -3
- package/dist/internal/Auth.js.map +1 -1
- package/dist/internal/EarnVaults.d.ts +3 -3
- package/dist/internal/EarnVaults.js +5 -5
- package/dist/internal/EarnVaults.js.map +1 -1
- package/dist/internal/Fetch.d.ts +23 -0
- package/dist/internal/Fetch.d.ts.map +1 -0
- package/dist/internal/Fetch.js +26 -0
- package/dist/internal/Fetch.js.map +1 -0
- package/dist/internal/Log.d.ts +4 -2
- package/dist/internal/Log.d.ts.map +1 -1
- package/dist/internal/Log.js +16 -3
- package/dist/internal/Log.js.map +1 -1
- package/dist/internal/OpenApi.d.ts +5 -3
- package/dist/internal/OpenApi.d.ts.map +1 -1
- package/dist/internal/OpenApi.js +13 -3
- package/dist/internal/OpenApi.js.map +1 -1
- package/dist/internal/Response.d.ts +1 -1
- package/dist/internal/Response.d.ts.map +1 -1
- package/dist/internal/Schema.d.ts +6 -3
- package/dist/internal/Schema.d.ts.map +1 -1
- package/dist/internal/Schema.js +8 -2
- package/dist/internal/Schema.js.map +1 -1
- package/dist/internal/Store.d.ts +16 -3
- package/dist/internal/Store.d.ts.map +1 -1
- package/dist/internal/Store.js +82 -16
- package/dist/internal/Store.js.map +1 -1
- package/dist/internal/Tidx.d.ts.map +1 -1
- package/dist/internal/Tidx.js +7 -2
- package/dist/internal/Tidx.js.map +1 -1
- package/dist/internal/Timeout.d.ts +36 -0
- package/dist/internal/Timeout.d.ts.map +1 -0
- package/dist/internal/Timeout.js +37 -0
- package/dist/internal/Timeout.js.map +1 -0
- package/dist/internal/Timing.d.ts +9 -0
- package/dist/internal/Timing.d.ts.map +1 -1
- package/dist/internal/Timing.js +7 -0
- package/dist/internal/Timing.js.map +1 -1
- package/dist/internal/Viem.d.ts +16 -1
- package/dist/internal/Viem.d.ts.map +1 -1
- package/dist/internal/Viem.js +12 -2
- package/dist/internal/Viem.js.map +1 -1
- package/dist/internal/WebhookDestination.d.ts.map +1 -1
- package/dist/internal/WebhookDestination.js +3 -0
- package/dist/internal/WebhookDestination.js.map +1 -1
- package/dist/internal/funding/Action.d.ts +9 -0
- package/dist/internal/funding/Action.d.ts.map +1 -1
- package/dist/internal/funding/Action.js +16 -8
- package/dist/internal/funding/Action.js.map +1 -1
- package/dist/internal/funding/Catalog.d.ts +9 -2
- package/dist/internal/funding/Catalog.d.ts.map +1 -1
- package/dist/internal/funding/Catalog.js +19 -8
- package/dist/internal/funding/Catalog.js.map +1 -1
- package/dist/internal/funding/DepositWebhook.d.ts.map +1 -1
- package/dist/internal/funding/DepositWebhook.js +2 -1
- package/dist/internal/funding/DepositWebhook.js.map +1 -1
- package/dist/internal/funding/Evidence.d.ts.map +1 -1
- package/dist/internal/funding/Evidence.js +2 -10
- package/dist/internal/funding/Evidence.js.map +1 -1
- package/dist/internal/funding/Provider.d.ts +108 -13
- package/dist/internal/funding/Provider.d.ts.map +1 -1
- package/dist/internal/funding/Provider.js +34 -8
- package/dist/internal/funding/Provider.js.map +1 -1
- package/dist/internal/funding/SourceObservation.d.ts.map +1 -1
- package/dist/internal/funding/SourceObservation.js +5 -7
- package/dist/internal/funding/SourceObservation.js.map +1 -1
- package/dist/internal/funding/Transfer.d.ts +114 -18
- package/dist/internal/funding/Transfer.d.ts.map +1 -1
- package/dist/internal/funding/Transfer.js +185 -55
- package/dist/internal/funding/Transfer.js.map +1 -1
- package/dist/internal/funding/TransferReconciliation.d.ts +52 -0
- package/dist/internal/funding/TransferReconciliation.d.ts.map +1 -0
- package/dist/internal/funding/TransferReconciliation.js +192 -0
- package/dist/internal/funding/TransferReconciliation.js.map +1 -0
- package/dist/internal/funding/TransferWebhook.d.ts +21 -0
- package/dist/internal/funding/TransferWebhook.d.ts.map +1 -0
- package/dist/internal/funding/TransferWebhook.js +43 -0
- package/dist/internal/funding/TransferWebhook.js.map +1 -0
- package/dist/internal/funding/index.d.ts +1 -0
- package/dist/internal/funding/index.d.ts.map +1 -1
- package/dist/internal/funding/index.js +1 -0
- package/dist/internal/funding/index.js.map +1 -1
- package/dist/internal/funding/providers/relay.d.ts.map +1 -1
- package/dist/internal/funding/providers/relay.js +3 -12
- package/dist/internal/funding/providers/relay.js.map +1 -1
- package/dist/internal/funding/providers/stargate.d.ts +127 -9
- package/dist/internal/funding/providers/stargate.d.ts.map +1 -1
- package/dist/internal/funding/providers/stargate.js +548 -112
- package/dist/internal/funding/providers/stargate.js.map +1 -1
- package/dist/internal/index.d.ts +1 -0
- package/dist/internal/index.d.ts.map +1 -1
- package/dist/internal/index.js +1 -0
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/webhookDestinations/slack.d.ts.map +1 -1
- package/dist/internal/webhookDestinations/slack.js +16 -0
- package/dist/internal/webhookDestinations/slack.js.map +1 -1
- package/package.json +2 -2
- package/src/App.test.ts +100 -0
- package/src/App.ts +43 -3
- package/src/Client.test-d.ts +129 -2
- package/src/Scope.test.ts +20 -0
- package/src/Scope.ts +16 -0
- package/src/Webhooks.ts +2 -2
- package/src/admin/apps/api-keys.test.ts +75 -0
- package/src/admin/apps/api-keys.ts +64 -0
- package/src/admin/apps/earn-vaults.test.ts +1 -1
- package/src/admin/apps/earn-vaults.ts +2 -1
- package/src/admin/apps/organizations.test.ts +53 -1
- package/src/admin/apps/organizations.ts +90 -5
- package/src/admin/ui/src/lib/api-keys.ts +19 -0
- package/src/admin/ui/src/lib/organizations.test.ts +112 -1
- package/src/admin/ui/src/lib/organizations.ts +55 -0
- package/src/admin/ui/src/routes/api-keys.tsx +89 -2
- package/src/admin/ui/src/routes/organizations_.$orgId.tsx +116 -0
- package/src/admin/ui.generated.ts +189 -151
- package/src/apps/Zones.test.ts +7 -7
- package/src/apps/Zones.ts +7 -7
- package/src/apps/composition.test.ts +2 -1
- package/src/apps/data/App.test.ts +41 -0
- package/src/apps/data/App.ts +30 -21
- package/src/apps/data/ZoneSelection.test.ts +2 -2
- package/src/apps/data/ZoneSelection.ts +8 -8
- package/src/apps/data/routes/activities.test.ts +1526 -12
- package/src/apps/data/routes/activities.ts +1774 -1356
- package/src/apps/data/routes/balances.ts +133 -97
- package/src/apps/data/routes/blocks.test.ts +533 -0
- package/src/apps/data/routes/blocks.ts +35 -16
- package/src/apps/data/routes/earn.test.ts +373 -16
- package/src/apps/data/routes/earn.ts +548 -79
- package/src/apps/data/routes/earn.zone-access.test.ts +6 -6
- package/src/apps/data/routes/exchanges.test.ts +740 -15
- package/src/apps/data/routes/exchanges.ts +954 -753
- package/src/apps/data/routes/fee-amm.ts +17 -18
- package/src/apps/data/routes/receipts.ts +47 -16
- package/src/apps/data/routes/tokens.test.ts +578 -0
- package/src/apps/data/routes/tokens.ts +283 -225
- package/src/apps/data/routes/transactions.ts +68 -29
- package/src/apps/data/routes/transfers.test.ts +421 -0
- package/src/apps/data/routes/transfers.ts +45 -27
- package/src/apps/data/routes/valuation.ts +94 -78
- package/src/apps/data/routes/webhooks.test.ts +21 -5
- package/src/apps/data/routes/webhooks.ts +63 -8
- package/src/apps/data/routes/zones.test.ts +2 -2
- package/src/apps/data/routes/zones.ts +1 -1
- package/src/apps/funding/App.ts +12 -2
- package/src/apps/funding/routes/deposit-addresses.test.ts +29 -7
- package/src/apps/funding/routes/deposit-addresses.ts +19 -14
- package/src/apps/funding/routes/quotes.test.ts +5 -9
- package/src/apps/funding/routes/transfers.test.ts +901 -23
- package/src/apps/funding/routes/transfers.ts +347 -64
- package/src/apps/management/Billing.ts +18 -5
- package/src/apps/management/routes/api-keys.test.ts +220 -0
- package/src/apps/management/routes/api-keys.ts +280 -3
- package/src/apps/management/routes/webhooks.test.ts +3 -3
- package/src/apps/management/routes/webhooks.ts +24 -25
- package/src/apps/relay/App.test.ts +212 -1
- package/src/apps/relay/App.ts +158 -29
- package/src/apps/relay/Sponsorships.ts +24 -1
- package/src/db/Db.ts +48 -1
- package/src/db/Schema.ts +22 -4
- package/src/db/tables/earnVaults.test.ts +9 -9
- package/src/db/tables/fundingCatalog.test.ts +16 -2
- package/src/db/tables/fundingCatalog.ts +9 -3
- package/src/db/tables/fundingTransferTransactions.test.ts +43 -0
- package/src/db/tables/fundingTransferTransactions.ts +79 -3
- package/src/db/tables/fundingTransfers.test.ts +26 -0
- package/src/db/tables/fundingTransfers.ts +36 -0
- package/src/db/tables/organizations.test.ts +41 -0
- package/src/db/tables/organizations.ts +49 -0
- package/src/db/tables/projects.test.ts +55 -0
- package/src/db/tables/projects.ts +46 -1
- package/src/db/tables/sponsoredTransactions.test.ts +338 -0
- package/src/db/tables/sponsoredTransactions.ts +197 -13
- package/src/db/tables/webhookSubscriptions.ts +18 -11
- package/src/handlers/internal/utils.test.ts +53 -0
- package/src/handlers/internal/utils.ts +15 -0
- package/src/internal/Auth.ts +12 -4
- package/src/internal/EarnVaults.capabilities.test.ts +2 -2
- package/src/internal/EarnVaults.test.ts +1 -1
- package/src/internal/EarnVaults.ts +5 -5
- package/src/internal/Fetch.test.ts +46 -0
- package/src/internal/Fetch.ts +56 -0
- package/src/internal/Log.test-d.ts +2 -0
- package/src/internal/Log.test.ts +21 -0
- package/src/internal/Log.ts +22 -5
- package/src/internal/OpenApi.ts +14 -4
- package/src/internal/Response.ts +1 -1
- package/src/internal/Schema.test.ts +2 -0
- package/src/internal/Schema.ts +12 -2
- package/src/internal/Store.test.ts +178 -0
- package/src/internal/Store.ts +104 -18
- package/src/internal/Tidx.test.ts +2 -1
- package/src/internal/Tidx.ts +7 -2
- package/src/internal/Timeout.test.ts +35 -0
- package/src/internal/Timeout.ts +73 -0
- package/src/internal/Timing.ts +16 -0
- package/src/internal/Viem.ts +39 -3
- package/src/internal/WebhookDestination.ts +3 -0
- package/src/internal/Webhooks.test.ts +45 -0
- package/src/internal/funding/Action.test.ts +41 -1
- package/src/internal/funding/Action.ts +69 -41
- package/src/internal/funding/Catalog.test.ts +34 -0
- package/src/internal/funding/Catalog.ts +28 -11
- package/src/internal/funding/DepositWebhook.ts +2 -1
- package/src/internal/funding/Evidence.ts +2 -13
- package/src/internal/funding/Provider.test.ts +73 -0
- package/src/internal/funding/Provider.ts +125 -28
- package/src/internal/funding/SourceObservation.ts +5 -9
- package/src/internal/funding/Transfer.test.ts +155 -0
- package/src/internal/funding/Transfer.ts +387 -147
- package/src/internal/funding/TransferReconciliation.test.ts +147 -0
- package/src/internal/funding/TransferReconciliation.ts +264 -0
- package/src/internal/funding/TransferWebhook.test.ts +128 -0
- package/src/internal/funding/TransferWebhook.ts +67 -0
- package/src/internal/funding/index.test.ts +1 -0
- package/src/internal/funding/index.ts +1 -0
- package/src/internal/funding/providers/index.test.ts +4 -167
- package/src/internal/funding/providers/relay.test.ts +2 -2
- package/src/internal/funding/providers/relay.ts +3 -15
- package/src/internal/funding/providers/stargate.test.ts +328 -0
- package/src/internal/funding/providers/stargate.ts +807 -135
- package/src/internal/index.test.ts +1 -0
- package/src/internal/index.ts +1 -0
- package/src/internal/webhookDestinations/slack.ts +15 -0
package/src/apps/Zones.test.ts
CHANGED
|
@@ -5,11 +5,11 @@ describe('chains', () => {
|
|
|
5
5
|
expect(Zones.chains).toMatchObject([
|
|
6
6
|
{
|
|
7
7
|
contracts: {
|
|
8
|
-
messenger: { address: '
|
|
9
|
-
portal: { address: '
|
|
10
|
-
verifier: { address: '
|
|
8
|
+
messenger: { address: '0x5A4d000000000000000000000000000000000000' },
|
|
9
|
+
portal: { address: '0x5Ad0000000000000000000000000000000000003' },
|
|
10
|
+
verifier: { address: '0x5a56000000000000000000000000000000000000' },
|
|
11
11
|
},
|
|
12
|
-
id:
|
|
12
|
+
id: 1_424_310_003,
|
|
13
13
|
name: 'zone-moderato-internal',
|
|
14
14
|
rpcUrls: {
|
|
15
15
|
default: { http: ['https://zone-internal-rpc.testnet.tempo.xyz'] },
|
|
@@ -20,9 +20,9 @@ describe('chains', () => {
|
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
22
|
contracts: {
|
|
23
|
-
messenger: { address: '
|
|
24
|
-
portal: { address: '
|
|
25
|
-
verifier: { address: '
|
|
23
|
+
messenger: { address: '0x5A4d000000000000000000000000000000000000' },
|
|
24
|
+
portal: { address: '0x5ad0000000000000000000000000000000000001' },
|
|
25
|
+
verifier: { address: '0x5a56000000000000000000000000000000000000' },
|
|
26
26
|
},
|
|
27
27
|
id: 421_700_001,
|
|
28
28
|
name: 'zone-mainnet-internal',
|
package/src/apps/Zones.ts
CHANGED
|
@@ -6,11 +6,11 @@ export const zoneModeratoInternal = defineChain({
|
|
|
6
6
|
...tempoTestnet,
|
|
7
7
|
contracts: {
|
|
8
8
|
...tempoTestnet.contracts,
|
|
9
|
-
messenger: { address: '
|
|
10
|
-
portal: { address: '
|
|
11
|
-
verifier: { address: '
|
|
9
|
+
messenger: { address: '0x5A4d000000000000000000000000000000000000' },
|
|
10
|
+
portal: { address: '0x5Ad0000000000000000000000000000000000003' },
|
|
11
|
+
verifier: { address: '0x5a56000000000000000000000000000000000000' },
|
|
12
12
|
},
|
|
13
|
-
id:
|
|
13
|
+
id: 1_424_310_003,
|
|
14
14
|
name: 'zone-moderato-internal',
|
|
15
15
|
rpcUrls: {
|
|
16
16
|
default: { http: ['https://zone-internal-rpc.testnet.tempo.xyz'] },
|
|
@@ -25,9 +25,9 @@ export const zoneMainnetInternal = defineChain({
|
|
|
25
25
|
...tempo,
|
|
26
26
|
contracts: {
|
|
27
27
|
...tempo.contracts,
|
|
28
|
-
messenger: { address: '
|
|
29
|
-
portal: { address: '
|
|
30
|
-
verifier: { address: '
|
|
28
|
+
messenger: { address: '0x5A4d000000000000000000000000000000000000' },
|
|
29
|
+
portal: { address: '0x5ad0000000000000000000000000000000000001' },
|
|
30
|
+
verifier: { address: '0x5a56000000000000000000000000000000000000' },
|
|
31
31
|
},
|
|
32
32
|
id: 421_700_001,
|
|
33
33
|
name: 'zone-mainnet-internal',
|
|
@@ -197,7 +197,7 @@ describe('data()', () => {
|
|
|
197
197
|
42431,
|
|
198
198
|
421700001,
|
|
199
199
|
421700006,
|
|
200
|
-
|
|
200
|
+
1424310003,
|
|
201
201
|
],
|
|
202
202
|
}
|
|
203
203
|
`)
|
|
@@ -309,6 +309,7 @@ describe('funding()', () => {
|
|
|
309
309
|
'/v1/funding/transfers/vault',
|
|
310
310
|
'/v1/funding/transfers/zone',
|
|
311
311
|
'/v1/funding/transfers/{id}',
|
|
312
|
+
'/v1/funding/transfers/{id}/source-transactions',
|
|
312
313
|
].sort(),
|
|
313
314
|
)
|
|
314
315
|
expect(Object.keys(spec.paths).some((path) => path.startsWith('/v1/tokens'))).toBe(false)
|
|
@@ -183,11 +183,20 @@ describe('MPP session management', () => {
|
|
|
183
183
|
})
|
|
184
184
|
|
|
185
185
|
describe('zone chain gate', () => {
|
|
186
|
+
const legacyModerato = 1_424_310_001
|
|
187
|
+
const moderato = 1_424_310_003
|
|
186
188
|
/** A consumer-supplied zone chain id (the API never derives these). */
|
|
187
189
|
const zone = 421_700_001
|
|
188
190
|
/** A second zone, isolating per-zone grants. */
|
|
189
191
|
const zoneB = 4_217_000_002
|
|
190
192
|
|
|
193
|
+
const legacyModeratoReader = {
|
|
194
|
+
id: 'key_legacy_moderato',
|
|
195
|
+
orgId: 'org_test',
|
|
196
|
+
scopes: ['data:read', 'indexer:query', `zone:${legacyModerato}:read`],
|
|
197
|
+
token: 'secret_legacy_moderato',
|
|
198
|
+
} satisfies TestApp.kvStore.Key
|
|
199
|
+
|
|
191
200
|
function zoneOptions(chainId: number) {
|
|
192
201
|
return TestApp.zone({
|
|
193
202
|
chainId,
|
|
@@ -292,6 +301,38 @@ describe('zone chain gate', () => {
|
|
|
292
301
|
expect(response.status).toBe(200)
|
|
293
302
|
})
|
|
294
303
|
|
|
304
|
+
test('the legacy Moderato id and read scope route to current upstreams', async () => {
|
|
305
|
+
const fetch = vi
|
|
306
|
+
.spyOn(globalThis, 'fetch')
|
|
307
|
+
.mockResolvedValueOnce(Response.json({ id: 1, jsonrpc: '2.0', result: '0x54e89ac3' }))
|
|
308
|
+
.mockResolvedValueOnce(Response.json({ columns: [], ok: true, row_count: 0, rows: [] }))
|
|
309
|
+
try {
|
|
310
|
+
const app = TestApp.create({
|
|
311
|
+
auth: { keys: [legacyModeratoReader] },
|
|
312
|
+
rpc: { url: (chainId) => `https://${chainId}.rpc.test` },
|
|
313
|
+
tidx: { baseUrl: (chainId) => `https://${chainId}.tidx.test` },
|
|
314
|
+
zones: true,
|
|
315
|
+
})
|
|
316
|
+
const rpc = await app.request(`/rpc/${legacyModerato}`, {
|
|
317
|
+
body: JSON.stringify({ id: 1, jsonrpc: '2.0', method: 'eth_chainId' }),
|
|
318
|
+
headers: as(legacyModeratoReader).headers,
|
|
319
|
+
method: 'POST',
|
|
320
|
+
})
|
|
321
|
+
const tidx = await app.request(
|
|
322
|
+
`/v1/indexer/query?chainId=${legacyModerato}&sql=select%201`,
|
|
323
|
+
as(legacyModeratoReader),
|
|
324
|
+
)
|
|
325
|
+
const tidxUpstream = new URL((fetch.mock.calls[1]![0] as Request).url)
|
|
326
|
+
|
|
327
|
+
expect([rpc.status, tidx.status]).toEqual([200, 200])
|
|
328
|
+
expect((fetch.mock.calls[0]![0] as Request).url).toBe(`https://${moderato}.rpc.test/`)
|
|
329
|
+
expect(tidxUpstream.origin).toBe(`https://${moderato}.tidx.test`)
|
|
330
|
+
expect(tidxUpstream.searchParams.get('chainId')).toBe(String(moderato))
|
|
331
|
+
} finally {
|
|
332
|
+
fetch.mockRestore()
|
|
333
|
+
}
|
|
334
|
+
})
|
|
335
|
+
|
|
295
336
|
test('a Zone write scope reads Zone data', async () => {
|
|
296
337
|
const response = await zoneApp().request(`/v1/tokenlist?chainId=${zone}`, as(zoneWriter))
|
|
297
338
|
expect(response.status).toBe(200)
|
package/src/apps/data/App.ts
CHANGED
|
@@ -23,7 +23,7 @@ import { transactions as transactionActivities } from './routes/activities.js'
|
|
|
23
23
|
import { addresses } from './routes/addresses.js'
|
|
24
24
|
import { blocks, blocksByTimestampCompat } from './routes/blocks.js'
|
|
25
25
|
import { coingecko } from './routes/coingecko.js'
|
|
26
|
-
import
|
|
26
|
+
import * as Earn from './routes/earn.js'
|
|
27
27
|
import { exchanges } from './routes/exchanges.js'
|
|
28
28
|
import { feeAmm } from './routes/fee-amm.js'
|
|
29
29
|
import { indexer } from './routes/indexer.js'
|
|
@@ -60,7 +60,7 @@ export function data(options: data.Options = {}) {
|
|
|
60
60
|
|
|
61
61
|
const getTidx = Tidx.createGetClient({ tidx })
|
|
62
62
|
const addresses_routes = addresses({ fx: options.fx })
|
|
63
|
-
const earn_routes = earn({ fx: options.fx })
|
|
63
|
+
const earn_routes = Earn.earn({ fx: options.fx })
|
|
64
64
|
const indexer_routes = indexer()
|
|
65
65
|
const transactionActivities_routes = transactionActivities({ fx: options.fx })
|
|
66
66
|
const indexerRouteHandlers = new Set(indexer_routes.routes.map((route) => route.handler))
|
|
@@ -130,6 +130,30 @@ export function data(options: data.Options = {}) {
|
|
|
130
130
|
const rpc_config = c.get('rpc')
|
|
131
131
|
const tidx_config = c.get('tidx')
|
|
132
132
|
const zones = c.get('zones')
|
|
133
|
+
const query = Earn.schema.getEarnVaultPosition.Query.safeParse(
|
|
134
|
+
Object.fromEntries(
|
|
135
|
+
Object.entries(c.req.queries()).map(([key, values]) => [
|
|
136
|
+
key,
|
|
137
|
+
values.length === 1 ? values[0] : values,
|
|
138
|
+
]),
|
|
139
|
+
),
|
|
140
|
+
)
|
|
141
|
+
const requiresTidx = selection.rpcOnly && query.success && query.data.asOf !== undefined
|
|
142
|
+
// Raw passthroughs and current RPC-only reads need RPC. Historical
|
|
143
|
+
// position reads and composed data routes require both upstreams.
|
|
144
|
+
const narrowedChainIds = new Set(
|
|
145
|
+
[...supportedChainIds].filter((chainId) => {
|
|
146
|
+
const context = { chainId, principal, zone: zones.get(chainId) }
|
|
147
|
+
const hasRpc = Viem.resolveRpc(rpc_config, context).url !== undefined
|
|
148
|
+
const hasTidx = Tidx.resolve(tidx_config, context).baseUrl !== undefined
|
|
149
|
+
if (selection.rpc || (selection.rpcOnly && !requiresTidx)) return hasRpc
|
|
150
|
+
if (selection.indexer) return hasTidx
|
|
151
|
+
return hasRpc && hasTidx
|
|
152
|
+
}),
|
|
153
|
+
)
|
|
154
|
+
c.set('supportedChainIds', narrowedChainIds)
|
|
155
|
+
if (!narrowedChainIds.has(selection.chainId))
|
|
156
|
+
return Response.unsupportedChainId(c, selection.chainId, narrowedChainIds)
|
|
133
157
|
if (selection.inferredZones) {
|
|
134
158
|
if (principal?.type !== 'api_key')
|
|
135
159
|
return Response.error(c, {
|
|
@@ -150,25 +174,10 @@ export function data(options: data.Options = {}) {
|
|
|
150
174
|
message: 'The API key has no readable configured Zones.',
|
|
151
175
|
status: 403,
|
|
152
176
|
})
|
|
153
|
-
c.set('supportedChainIds', new Set(zoneChainIds))
|
|
177
|
+
c.set('supportedChainIds', new Set([selection.chainId, ...zoneChainIds]))
|
|
154
178
|
c.set('zoneChainIds', zoneChainIds)
|
|
155
179
|
return next()
|
|
156
180
|
}
|
|
157
|
-
// Raw passthroughs and RPC-only reads need only RPC; composed data routes
|
|
158
|
-
// require both upstreams to avoid falling through to unrelated defaults.
|
|
159
|
-
const narrowedChainIds = new Set(
|
|
160
|
-
[...supportedChainIds].filter((chainId) => {
|
|
161
|
-
const context = { chainId, principal, zone: zones.get(chainId) }
|
|
162
|
-
const hasRpc = Viem.resolveRpc(rpc_config, context).url !== undefined
|
|
163
|
-
const hasTidx = Tidx.resolve(tidx_config, context).baseUrl !== undefined
|
|
164
|
-
if (selection.rpc || selection.rpcOnly) return hasRpc
|
|
165
|
-
if (selection.indexer) return hasTidx
|
|
166
|
-
return hasRpc && hasTidx
|
|
167
|
-
}),
|
|
168
|
-
)
|
|
169
|
-
c.set('supportedChainIds', narrowedChainIds)
|
|
170
|
-
if (!narrowedChainIds.has(selection.chainId))
|
|
171
|
-
return Response.unsupportedChainId(c, selection.chainId, narrowedChainIds)
|
|
172
181
|
c.set('chainId', selection.chainId)
|
|
173
182
|
return next()
|
|
174
183
|
})
|
|
@@ -201,8 +210,8 @@ export function data(options: data.Options = {}) {
|
|
|
201
210
|
return Response.error(c, {
|
|
202
211
|
code: 'api_key_forbidden',
|
|
203
212
|
message: selection.rpc
|
|
204
|
-
? `Chain
|
|
205
|
-
: `Chain
|
|
213
|
+
? `Chain ID ${chainId} is a Zone. Use an API key granting \`zone:${chainId}:read\` or \`zone:${chainId}:write\`, or pass a Zone token via \`X-Authorization-Token\`.`
|
|
214
|
+
: `Chain ID ${chainId} is a Zone. Use an API key granting \`zone:${chainId}:read\` or \`zone:${chainId}:write\`.`,
|
|
206
215
|
status: 403,
|
|
207
216
|
})
|
|
208
217
|
|
|
@@ -500,7 +509,7 @@ function webhooksBlock() {
|
|
|
500
509
|
'tempo-event-id',
|
|
501
510
|
'A unique, stable id for this event (`evt_…`). The same event may be delivered more than once, so use this id to skip duplicates.',
|
|
502
511
|
),
|
|
503
|
-
header('tempo-event-type', 'What happened: `token:transfer`, `transaction:included`, `log:emitted`, `block:created`, `funding:deposit.updated`, or `ping`.'), // prettier-ignore
|
|
512
|
+
header('tempo-event-type', 'What happened: `token:transfer`, `transaction:included`, `log:emitted`, `block:created`, `funding:deposit.updated`, `funding:transfer.updated`, or `ping`.'), // prettier-ignore
|
|
504
513
|
],
|
|
505
514
|
requestBody: {
|
|
506
515
|
content: { 'application/json': { schema: envelope } },
|
|
@@ -138,7 +138,7 @@ describe('readableChainIds', () => {
|
|
|
138
138
|
})
|
|
139
139
|
|
|
140
140
|
describe('uniqueMatch', () => {
|
|
141
|
-
test('selects one match after every
|
|
141
|
+
test('selects one match after every chain completes', () => {
|
|
142
142
|
expect(
|
|
143
143
|
ZoneSelection.uniqueMatch([
|
|
144
144
|
{ chainId: 1, value: null },
|
|
@@ -159,7 +159,7 @@ describe('uniqueMatch', () => {
|
|
|
159
159
|
).toStrictEqual({ kind: 'ambiguous' })
|
|
160
160
|
})
|
|
161
161
|
|
|
162
|
-
test('fails the selection when any
|
|
162
|
+
test('fails the selection when any chain lookup fails', () => {
|
|
163
163
|
const cause = new Error('unavailable')
|
|
164
164
|
expect(
|
|
165
165
|
ZoneSelection.uniqueMatch([
|
|
@@ -48,7 +48,7 @@ export declare namespace readableChainIds {
|
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
/** Resolves receipt probes without treating partial upstream results as complete. */
|
|
51
|
+
/** Resolves chain receipt probes without treating partial upstream results as complete. */
|
|
52
52
|
export function uniqueMatch<const value>(
|
|
53
53
|
probes: readonly uniqueMatch.Probe<value>[],
|
|
54
54
|
): uniqueMatch.Result<value> {
|
|
@@ -66,25 +66,25 @@ export function uniqueMatch<const value>(
|
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
export declare namespace uniqueMatch {
|
|
69
|
-
/** One completed
|
|
69
|
+
/** One completed chain lookup. */
|
|
70
70
|
type Probe<value> =
|
|
71
71
|
| {
|
|
72
|
-
/**
|
|
72
|
+
/** Chain that completed the lookup. */
|
|
73
73
|
chainId: number
|
|
74
|
-
/** Matching value, or null when the
|
|
74
|
+
/** Matching value, or null when the chain did not contain the resource. */
|
|
75
75
|
value: value | null
|
|
76
76
|
}
|
|
77
77
|
| {
|
|
78
|
-
/** Upstream failure from this
|
|
78
|
+
/** Upstream failure from this chain. */
|
|
79
79
|
cause: unknown
|
|
80
|
-
/**
|
|
80
|
+
/** Chain that failed the lookup. */
|
|
81
81
|
chainId: number
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
-
/** Unique-match decision across every requested
|
|
84
|
+
/** Unique-match decision across every requested chain. */
|
|
85
85
|
type Result<value> =
|
|
86
86
|
| {
|
|
87
|
-
/**
|
|
87
|
+
/** Chain containing the unique match. */
|
|
88
88
|
chainId: number
|
|
89
89
|
/** Unique match result. */
|
|
90
90
|
kind: 'selected'
|