tapimo 0.10.2 → 0.12.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 +4896 -2166
- package/dist/App.d.ts.map +1 -1
- package/dist/App.js +2 -2
- package/dist/App.js.map +1 -1
- package/dist/Assets.d.ts +15 -0
- package/dist/Assets.d.ts.map +1 -1
- package/dist/Assets.js +7 -0
- package/dist/Assets.js.map +1 -1
- package/dist/Webhooks.d.ts +0 -75
- package/dist/Webhooks.d.ts.map +1 -1
- package/dist/Webhooks.js +1 -143
- package/dist/Webhooks.js.map +1 -1
- package/dist/admin/App.d.ts +127 -78
- package/dist/admin/App.d.ts.map +1 -1
- package/dist/admin/apps/earn-vaults.d.ts +115 -1
- package/dist/admin/apps/earn-vaults.d.ts.map +1 -1
- package/dist/admin/apps/earn-vaults.js +59 -6
- package/dist/admin/apps/earn-vaults.js.map +1 -1
- package/dist/admin/apps/organizations.d.ts +3 -3
- package/dist/admin/apps/organizations.d.ts.map +1 -1
- package/dist/admin/apps/organizations.js +4 -2
- package/dist/admin/apps/organizations.js.map +1 -1
- package/dist/admin/apps/verified-tokens.d.ts +83 -83
- 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/data/App.d.ts +5924 -4310
- package/dist/apps/data/App.d.ts.map +1 -1
- package/dist/apps/data/App.js +61 -9
- package/dist/apps/data/App.js.map +1 -1
- package/dist/apps/data/ZoneSelection.d.ts +62 -0
- package/dist/apps/data/ZoneSelection.d.ts.map +1 -0
- package/dist/apps/data/ZoneSelection.js +44 -0
- package/dist/apps/data/ZoneSelection.js.map +1 -0
- package/dist/apps/data/routes/activities.d.ts +2368 -5
- package/dist/apps/data/routes/activities.d.ts.map +1 -1
- package/dist/apps/data/routes/activities.js +423 -114
- package/dist/apps/data/routes/activities.js.map +1 -1
- package/dist/apps/data/routes/addresses.d.ts +131 -0
- package/dist/apps/data/routes/addresses.d.ts.map +1 -1
- package/dist/apps/data/routes/balances.d.ts +25 -25
- package/dist/apps/data/routes/balances.js +1 -1
- package/dist/apps/data/routes/balances.js.map +1 -1
- package/dist/apps/data/routes/blocks.d.ts +1 -1
- package/dist/apps/data/routes/blocks.js +1 -1
- package/dist/apps/data/routes/blocks.js.map +1 -1
- package/dist/apps/data/routes/earn.d.ts +135 -10
- package/dist/apps/data/routes/earn.d.ts.map +1 -1
- package/dist/apps/data/routes/earn.js +157 -25
- package/dist/apps/data/routes/earn.js.map +1 -1
- package/dist/apps/data/routes/exchanges.d.ts +829 -123
- package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
- package/dist/apps/data/routes/exchanges.js +16 -13
- package/dist/apps/data/routes/exchanges.js.map +1 -1
- package/dist/apps/data/routes/fee-amm.d.ts +26 -26
- package/dist/apps/data/routes/fee-amm.d.ts.map +1 -1
- package/dist/apps/data/routes/fee-amm.js +9 -11
- package/dist/apps/data/routes/fee-amm.js.map +1 -1
- package/dist/apps/data/routes/receipts.d.ts +54 -54
- package/dist/apps/data/routes/receipts.js +1 -1
- package/dist/apps/data/routes/receipts.js.map +1 -1
- package/dist/apps/data/routes/rpc.js +24 -10
- package/dist/apps/data/routes/rpc.js.map +1 -1
- package/dist/apps/data/routes/tokenlist.d.ts +12 -12
- package/dist/apps/data/routes/tokenlist.d.ts.map +1 -1
- package/dist/apps/data/routes/tokenlist.js +16 -15
- package/dist/apps/data/routes/tokenlist.js.map +1 -1
- package/dist/apps/data/routes/tokens.d.ts +17 -3
- package/dist/apps/data/routes/tokens.d.ts.map +1 -1
- package/dist/apps/data/routes/tokens.js +34 -15
- package/dist/apps/data/routes/tokens.js.map +1 -1
- package/dist/apps/data/routes/transactions.d.ts +1 -1
- package/dist/apps/data/routes/transactions.js +1 -1
- 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 +7 -9
- package/dist/apps/data/routes/transfers.js.map +1 -1
- package/dist/apps/data/routes/valuation.d.ts +21 -21
- package/dist/apps/data/routes/verified-tokens.d.ts +5 -5
- package/dist/apps/data/routes/webhooks.d.ts +1011 -151
- package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
- package/dist/apps/data/routes/webhooks.js +126 -739
- package/dist/apps/data/routes/webhooks.js.map +1 -1
- package/dist/apps/data/routes/zones.d.ts +15 -15
- package/dist/apps/funding/App.d.ts +27 -27
- package/dist/apps/funding/routes/chains.d.ts.map +1 -1
- package/dist/apps/funding/routes/chains.js +5 -4
- package/dist/apps/funding/routes/chains.js.map +1 -1
- package/dist/apps/funding/routes/deposit-addresses.d.ts +18 -18
- package/dist/apps/funding/routes/deposit-addresses.d.ts.map +1 -1
- package/dist/apps/funding/routes/deposit-addresses.js +8 -8
- package/dist/apps/funding/routes/deposit-addresses.js.map +1 -1
- package/dist/apps/funding/routes/providers.d.ts.map +1 -1
- package/dist/apps/funding/routes/providers.js +3 -2
- package/dist/apps/funding/routes/providers.js.map +1 -1
- package/dist/apps/funding/routes/quotes.d.ts.map +1 -1
- package/dist/apps/funding/routes/quotes.js +2 -2
- package/dist/apps/funding/routes/quotes.js.map +1 -1
- package/dist/apps/funding/routes/transfers.d.ts +33 -33
- package/dist/apps/management/App.d.ts +1433 -322
- package/dist/apps/management/App.d.ts.map +1 -1
- package/dist/apps/management/Billing.d.ts.map +1 -1
- package/dist/apps/management/Billing.js +19 -6
- package/dist/apps/management/Billing.js.map +1 -1
- package/dist/apps/management/routes/api-keys.d.ts +154 -94
- package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
- package/dist/apps/management/routes/api-keys.js +76 -30
- package/dist/apps/management/routes/api-keys.js.map +1 -1
- package/dist/apps/management/routes/billing.d.ts +103 -30
- package/dist/apps/management/routes/billing.d.ts.map +1 -1
- package/dist/apps/management/routes/billing.js +91 -32
- package/dist/apps/management/routes/billing.js.map +1 -1
- package/dist/apps/management/routes/faucet.d.ts +12 -12
- package/dist/apps/management/routes/faucet.d.ts.map +1 -1
- package/dist/apps/management/routes/faucet.js +23 -12
- package/dist/apps/management/routes/faucet.js.map +1 -1
- package/dist/apps/management/routes/invitations.d.ts +46 -13
- package/dist/apps/management/routes/invitations.d.ts.map +1 -1
- package/dist/apps/management/routes/invitations.js +79 -29
- package/dist/apps/management/routes/invitations.js.map +1 -1
- package/dist/apps/management/routes/invite-links.d.ts +128 -83
- package/dist/apps/management/routes/invite-links.d.ts.map +1 -1
- package/dist/apps/management/routes/invite-links.js +100 -41
- package/dist/apps/management/routes/invite-links.js.map +1 -1
- package/dist/apps/management/routes/me.d.ts +5 -5
- package/dist/apps/management/routes/me.d.ts.map +1 -1
- package/dist/apps/management/routes/me.js +14 -10
- package/dist/apps/management/routes/me.js.map +1 -1
- package/dist/apps/management/routes/members.d.ts +68 -47
- package/dist/apps/management/routes/members.d.ts.map +1 -1
- package/dist/apps/management/routes/members.js +37 -18
- package/dist/apps/management/routes/members.js.map +1 -1
- package/dist/apps/management/routes/orgs.d.ts +48 -8
- package/dist/apps/management/routes/orgs.d.ts.map +1 -1
- package/dist/apps/management/routes/orgs.js +48 -19
- package/dist/apps/management/routes/orgs.js.map +1 -1
- package/dist/apps/management/routes/projects.d.ts +130 -68
- package/dist/apps/management/routes/projects.d.ts.map +1 -1
- package/dist/apps/management/routes/projects.js +72 -21
- package/dist/apps/management/routes/projects.js.map +1 -1
- package/dist/apps/management/routes/scopes.d.ts.map +1 -1
- package/dist/apps/management/routes/scopes.js +8 -5
- package/dist/apps/management/routes/scopes.js.map +1 -1
- package/dist/apps/management/routes/usage.d.ts +38 -38
- package/dist/apps/management/routes/usage.d.ts.map +1 -1
- package/dist/apps/management/routes/usage.js +41 -31
- package/dist/apps/management/routes/usage.js.map +1 -1
- package/dist/apps/management/routes/verified-token-requests.d.ts +34 -6
- package/dist/apps/management/routes/verified-token-requests.d.ts.map +1 -1
- package/dist/apps/management/routes/verified-token-requests.js +36 -17
- package/dist/apps/management/routes/verified-token-requests.js.map +1 -1
- package/dist/apps/management/routes/webhooks.d.ts +1186 -197
- package/dist/apps/management/routes/webhooks.d.ts.map +1 -1
- package/dist/apps/management/routes/webhooks.js +106 -38
- package/dist/apps/management/routes/webhooks.js.map +1 -1
- package/dist/apps/mpp/internal/Adapter.d.ts +1 -1
- package/dist/apps/mpp/internal/Adapter.d.ts.map +1 -1
- package/dist/apps/mpp/internal/Adapter.js +12 -0
- package/dist/apps/mpp/internal/Adapter.js.map +1 -1
- package/dist/db/Db.d.ts +2 -0
- package/dist/db/Db.d.ts.map +1 -1
- package/dist/db/Db.js +61 -0
- package/dist/db/Db.js.map +1 -1
- package/dist/db/Schema.d.ts +30 -2
- package/dist/db/Schema.d.ts.map +1 -1
- package/dist/db/Schema.js +28 -3
- package/dist/db/Schema.js.map +1 -1
- package/dist/db/tables/earnVaults.d.ts +5 -1
- package/dist/db/tables/earnVaults.d.ts.map +1 -1
- package/dist/db/tables/earnVaults.js +5 -0
- package/dist/db/tables/earnVaults.js.map +1 -1
- package/dist/db/tables/webhookDeliveries.d.ts.map +1 -1
- package/dist/db/tables/webhookDeliveries.js +10 -0
- package/dist/db/tables/webhookDeliveries.js.map +1 -1
- package/dist/db/tables/webhookQueueCompletions.d.ts +15 -0
- package/dist/db/tables/webhookQueueCompletions.d.ts.map +1 -0
- package/dist/db/tables/webhookQueueCompletions.js +32 -0
- package/dist/db/tables/webhookQueueCompletions.js.map +1 -0
- package/dist/db/tables/webhookQueueEvents.d.ts +16 -20
- package/dist/db/tables/webhookQueueEvents.d.ts.map +1 -1
- package/dist/db/tables/webhookQueueEvents.js +68 -43
- package/dist/db/tables/webhookQueueEvents.js.map +1 -1
- package/dist/db/tables/webhookSubscriptions.d.ts +47 -72
- package/dist/db/tables/webhookSubscriptions.d.ts.map +1 -1
- package/dist/db/tables/webhookSubscriptions.js +92 -105
- package/dist/db/tables/webhookSubscriptions.js.map +1 -1
- package/dist/internal/Auth.d.ts +8 -1
- package/dist/internal/Auth.d.ts.map +1 -1
- package/dist/internal/Auth.js +13 -3
- package/dist/internal/Auth.js.map +1 -1
- package/dist/internal/Cache.d.ts.map +1 -1
- package/dist/internal/Cache.js +11 -7
- package/dist/internal/Cache.js.map +1 -1
- package/dist/internal/EarnVaults.d.ts +41 -2
- package/dist/internal/EarnVaults.d.ts.map +1 -1
- package/dist/internal/EarnVaults.js +167 -0
- package/dist/internal/EarnVaults.js.map +1 -1
- package/dist/internal/MetricSink.d.ts +35 -125
- package/dist/internal/MetricSink.d.ts.map +1 -1
- package/dist/internal/MetricSink.js +50 -121
- package/dist/internal/MetricSink.js.map +1 -1
- package/dist/internal/OpenApi.d.ts +26 -22
- package/dist/internal/OpenApi.d.ts.map +1 -1
- package/dist/internal/OpenApi.js +128 -39
- package/dist/internal/OpenApi.js.map +1 -1
- package/dist/internal/Response.d.ts +13 -8
- package/dist/internal/Response.d.ts.map +1 -1
- package/dist/internal/Response.js +16 -5
- package/dist/internal/Response.js.map +1 -1
- package/dist/internal/Schema.d.ts +8 -8
- package/dist/internal/Schema.d.ts.map +1 -1
- package/dist/internal/Schema.js +10 -9
- package/dist/internal/Schema.js.map +1 -1
- package/dist/internal/Store.d.ts +15 -6
- package/dist/internal/Store.d.ts.map +1 -1
- package/dist/internal/Store.js +45 -15
- package/dist/internal/Store.js.map +1 -1
- package/dist/internal/Tidx.d.ts +2 -0
- package/dist/internal/Tidx.d.ts.map +1 -1
- package/dist/internal/Tidx.js +16 -4
- package/dist/internal/Tidx.js.map +1 -1
- package/dist/internal/WebhookTransfer.d.ts +1 -55
- package/dist/internal/WebhookTransfer.d.ts.map +1 -1
- package/dist/internal/WebhookTransfer.js +1 -239
- package/dist/internal/WebhookTransfer.js.map +1 -1
- package/dist/internal/Webhooks.d.ts +112 -56
- package/dist/internal/Webhooks.d.ts.map +1 -1
- package/dist/internal/Webhooks.js +124 -93
- package/dist/internal/Webhooks.js.map +1 -1
- package/dist/internal/funding/Deposit.d.ts +2 -2
- package/dist/internal/funding/Deposit.d.ts.map +1 -1
- package/dist/internal/funding/Deposit.js +9 -8
- package/dist/internal/funding/Deposit.js.map +1 -1
- package/dist/internal/funding/DepositAddress.d.ts +4 -4
- package/dist/internal/funding/DepositAddress.d.ts.map +1 -1
- package/dist/internal/funding/DepositAddress.js +9 -8
- package/dist/internal/funding/DepositAddress.js.map +1 -1
- package/dist/internal/funding/DepositWebhook.d.ts +25 -0
- package/dist/internal/funding/DepositWebhook.d.ts.map +1 -0
- package/dist/internal/funding/DepositWebhook.js +74 -0
- package/dist/internal/funding/DepositWebhook.js.map +1 -0
- package/dist/internal/funding/Provider.d.ts.map +1 -1
- package/dist/internal/funding/Provider.js +13 -12
- package/dist/internal/funding/Provider.js.map +1 -1
- package/dist/internal/funding/Reconciliation.d.ts +6 -0
- package/dist/internal/funding/Reconciliation.d.ts.map +1 -1
- package/dist/internal/funding/Reconciliation.js +42 -10
- package/dist/internal/funding/Reconciliation.js.map +1 -1
- 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/stargate.d.ts +19 -0
- package/dist/internal/funding/providers/stargate.d.ts.map +1 -0
- package/dist/internal/funding/providers/stargate.js +143 -0
- package/dist/internal/funding/providers/stargate.js.map +1 -0
- 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/dist/providers/index.d.ts +7 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +3 -0
- package/dist/providers/index.js.map +1 -1
- package/package.json +2 -2
- package/src/App.test.ts +48 -0
- package/src/App.ts +7 -2
- package/src/Assets.test.ts +18 -0
- package/src/Assets.ts +22 -0
- package/src/Client.test-d.ts +287 -17
- package/src/Webhooks.ts +1 -220
- package/src/admin/apps/earn-vaults.test.ts +143 -0
- package/src/admin/apps/earn-vaults.ts +83 -6
- package/src/admin/apps/organizations.ts +6 -2
- package/src/admin/ui/src/routes/api-keys.tsx +36 -0
- package/src/admin/ui.generated.ts +151 -189
- package/src/apps/data/App.test.ts +31 -0
- package/src/apps/data/App.ts +64 -10
- package/src/apps/data/ZoneSelection.test.ts +196 -0
- package/src/apps/data/ZoneSelection.ts +108 -0
- package/src/apps/data/routes/activities.test.ts +435 -12
- package/src/apps/data/routes/activities.ts +562 -125
- package/src/apps/data/routes/balances.ts +1 -1
- package/src/apps/data/routes/blocks.ts +1 -1
- package/src/apps/data/routes/earn.test.ts +183 -23
- package/src/apps/data/routes/earn.ts +225 -29
- package/src/apps/data/routes/earn.zone-access.test.ts +46 -0
- package/src/apps/data/routes/exchanges.test.ts +31 -1
- package/src/apps/data/routes/exchanges.ts +19 -15
- package/src/apps/data/routes/fee-amm.ts +18 -11
- package/src/apps/data/routes/receipts.ts +1 -1
- package/src/apps/data/routes/rpc.test.ts +75 -0
- package/src/apps/data/routes/rpc.ts +23 -9
- package/src/apps/data/routes/tokenlist.ts +21 -18
- package/src/apps/data/routes/tokens.test.ts +29 -0
- package/src/apps/data/routes/tokens.ts +38 -15
- package/src/apps/data/routes/transactions.ts +1 -1
- package/src/apps/data/routes/transfers.test.ts +3 -3
- package/src/apps/data/routes/transfers.ts +12 -9
- package/src/apps/data/routes/webhooks.test.ts +179 -1497
- package/src/apps/data/routes/webhooks.ts +156 -976
- package/src/apps/data/routes/zones.test.ts +19 -13
- package/src/apps/funding/routes/chains.test.ts +211 -7
- package/src/apps/funding/routes/chains.ts +19 -12
- package/src/apps/funding/routes/deposit-addresses.test.ts +394 -0
- package/src/apps/funding/routes/deposit-addresses.ts +84 -72
- package/src/apps/funding/routes/providers.ts +9 -5
- package/src/apps/funding/routes/quotes.test.ts +46 -0
- package/src/apps/funding/routes/quotes.ts +8 -5
- package/src/apps/funding/routes/transfers.test.ts +35 -32
- package/src/apps/management/Billing.test.ts +26 -0
- package/src/apps/management/Billing.ts +24 -7
- package/src/apps/management/routes/api-keys.test.ts +178 -0
- package/src/apps/management/routes/api-keys.ts +203 -144
- package/src/apps/management/routes/billing.test.ts +209 -0
- package/src/apps/management/routes/billing.ts +254 -177
- package/src/apps/management/routes/faucet.test.ts +39 -0
- package/src/apps/management/routes/faucet.ts +75 -41
- package/src/apps/management/routes/invitations.test.ts +216 -0
- package/src/apps/management/routes/invitations.ts +186 -109
- package/src/apps/management/routes/invite-links.test.ts +263 -1
- package/src/apps/management/routes/invite-links.ts +295 -214
- package/src/apps/management/routes/me.test.ts +49 -0
- package/src/apps/management/routes/me.ts +42 -32
- package/src/apps/management/routes/members.test.ts +124 -1
- package/src/apps/management/routes/members.ts +81 -51
- package/src/apps/management/routes/orgs.test.ts +176 -0
- package/src/apps/management/routes/orgs.ts +101 -59
- package/src/apps/management/routes/projects.test.ts +183 -0
- package/src/apps/management/routes/projects.ts +124 -60
- package/src/apps/management/routes/scopes.test.ts +44 -0
- package/src/apps/management/routes/scopes.ts +37 -28
- package/src/apps/management/routes/usage.test.ts +92 -0
- package/src/apps/management/routes/usage.ts +186 -151
- package/src/apps/management/routes/verified-token-requests.test.ts +114 -0
- package/src/apps/management/routes/verified-token-requests.ts +166 -133
- package/src/apps/management/routes/webhooks.test.ts +313 -1
- package/src/apps/management/routes/webhooks.ts +220 -71
- package/src/apps/mpp/internal/Adapter.ts +13 -1
- package/src/db/Db.test.ts +42 -5
- package/src/db/Db.ts +85 -0
- package/src/db/Schema.ts +41 -3
- package/src/db/tables/earnVaults.test.ts +22 -0
- package/src/db/tables/earnVaults.ts +11 -1
- package/src/db/tables/organizations.test.ts +5 -2
- package/src/db/tables/webhookDeliveries.ts +13 -0
- package/src/db/tables/webhookQueueCompletions.ts +55 -0
- package/src/db/tables/webhookQueueEvents.ts +97 -57
- package/src/db/tables/webhookSubscriptions.ts +134 -144
- package/src/internal/Auth.ts +23 -5
- package/src/internal/Cache.ts +14 -7
- package/src/internal/EarnVaults.capabilities.test.ts +33 -0
- package/src/internal/EarnVaults.test.ts +79 -0
- package/src/internal/EarnVaults.ts +277 -0
- package/src/internal/MetricSink.test.ts +41 -373
- package/src/internal/MetricSink.ts +92 -273
- package/src/internal/OpenApi.ts +165 -49
- package/src/internal/Response.test.ts +95 -0
- package/src/internal/Response.ts +40 -2
- package/src/internal/Schema.test.ts +34 -0
- package/src/internal/Schema.ts +20 -9
- package/src/internal/Store.test.ts +186 -0
- package/src/internal/Store.ts +57 -17
- package/src/internal/Tidx.test.ts +19 -0
- package/src/internal/Tidx.ts +16 -4
- package/src/internal/WebhookTransfer.ts +1 -351
- package/src/internal/Webhooks.test.ts +222 -145
- package/src/internal/Webhooks.ts +234 -135
- package/src/internal/funding/Deposit.ts +71 -64
- package/src/internal/funding/DepositAddress.ts +50 -43
- package/src/internal/funding/DepositWebhook.test.ts +131 -0
- package/src/internal/funding/DepositWebhook.ts +101 -0
- package/src/internal/funding/Provider.ts +164 -142
- package/src/internal/funding/Reconciliation.test.ts +14 -0
- package/src/internal/funding/Reconciliation.ts +161 -86
- 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 +185 -0
- package/src/internal/funding/providers/stargate.ts +184 -0
- package/src/internal/webhookDestinations/slack.ts +15 -0
- package/src/providers/index.test.ts +1 -0
- package/src/providers/index.ts +9 -0
- package/src/Webhooks.bench.ts +0 -714
- package/src/Webhooks.memory.bench.ts +0 -250
- package/src/Webhooks.test.ts +0 -146
|
@@ -297,7 +297,7 @@ export function addresses(options: addresses.Options = {}) {
|
|
|
297
297
|
} catch (cause) {
|
|
298
298
|
if (cause instanceof Valuation.UnsupportedDenominationError)
|
|
299
299
|
return Response.error(c, { code: 'query_invalid', message: cause.message, status: 400 })
|
|
300
|
-
return Response.upstream(c, cause)
|
|
300
|
+
return Response.upstream(c, cause, { page: query.page })
|
|
301
301
|
}
|
|
302
302
|
},
|
|
303
303
|
)
|
|
@@ -23,29 +23,46 @@ type EnrichedVault = Pick<
|
|
|
23
23
|
'apy' | 'instantLiquidity' | 'sharePrice' | 'state' | 'tvl'
|
|
24
24
|
>
|
|
25
25
|
|
|
26
|
+
type OpenApiSchema = { $ref?: string }
|
|
27
|
+
|
|
28
|
+
type OpenApiOperation = {
|
|
29
|
+
description?: string
|
|
30
|
+
parameters?: readonly {
|
|
31
|
+
description?: string
|
|
32
|
+
name?: string
|
|
33
|
+
schema?: { enum?: readonly unknown[]; examples?: readonly unknown[]; pattern?: string }
|
|
34
|
+
}[]
|
|
35
|
+
responses?: Record<string, { content?: { 'application/json'?: { schema?: OpenApiSchema } } }>
|
|
36
|
+
}
|
|
37
|
+
|
|
26
38
|
type OpenApiDocument = {
|
|
39
|
+
components?: { schemas?: Record<string, unknown> }
|
|
27
40
|
paths: Record<
|
|
28
41
|
string,
|
|
29
42
|
{
|
|
30
|
-
get?:
|
|
31
|
-
description?: string
|
|
32
|
-
parameters?: readonly {
|
|
33
|
-
description?: string
|
|
34
|
-
name?: string
|
|
35
|
-
schema?: { enum?: readonly unknown[]; examples?: readonly unknown[]; pattern?: string }
|
|
36
|
-
}[]
|
|
37
|
-
responses?: Record<string, unknown>
|
|
38
|
-
}
|
|
43
|
+
get?: OpenApiOperation
|
|
39
44
|
}
|
|
40
45
|
>
|
|
41
46
|
}
|
|
42
47
|
|
|
48
|
+
function errorSchemas(document: OpenApiDocument, operation: OpenApiOperation | undefined) {
|
|
49
|
+
return JSON.stringify(
|
|
50
|
+
Object.entries(operation?.responses ?? {})
|
|
51
|
+
.filter(([status]) => !status.startsWith('2'))
|
|
52
|
+
.map(([, response]) => {
|
|
53
|
+
const schema = response.content?.['application/json']?.schema
|
|
54
|
+
const name = schema?.$ref?.split('/').at(-1)
|
|
55
|
+
return name ? document.components?.schemas?.[name] : schema
|
|
56
|
+
}),
|
|
57
|
+
)
|
|
58
|
+
}
|
|
59
|
+
|
|
43
60
|
describe('schema.getEarnVaults.Query', () => {
|
|
44
61
|
test('parses collection filters', () => {
|
|
45
62
|
const query = Earn.schema.getEarnVaults.Query.parse({
|
|
46
63
|
capability: 'deposit,exactWithdraw',
|
|
47
64
|
'engine.type': 'erc4626',
|
|
48
|
-
include: 'access,apy,capabilities,zone,token.logoUri,tvl',
|
|
65
|
+
include: 'access,apy,capabilities,zone,zones,token.logoUri,tvl',
|
|
49
66
|
limit: '10',
|
|
50
67
|
})
|
|
51
68
|
|
|
@@ -56,6 +73,7 @@ describe('schema.getEarnVaults.Query', () => {
|
|
|
56
73
|
'apy',
|
|
57
74
|
'capabilities',
|
|
58
75
|
'zone',
|
|
76
|
+
'zones',
|
|
59
77
|
'token.logoUri',
|
|
60
78
|
'tvl',
|
|
61
79
|
])
|
|
@@ -365,6 +383,143 @@ describe('GET /v1/earn/vaults/verified', () => {
|
|
|
365
383
|
})
|
|
366
384
|
})
|
|
367
385
|
|
|
386
|
+
test.runIf(Runtime.get().mode === 'testnet')(
|
|
387
|
+
'folds scoped Zone routes into vault capabilities',
|
|
388
|
+
async () => {
|
|
389
|
+
const db = TestApp.database()
|
|
390
|
+
await core_EarnVaults.upsert(db, TestEarn.zoneVerifiedVault)
|
|
391
|
+
const otherZoneId = TestEarn.zone.id + 1
|
|
392
|
+
const scopedKey = {
|
|
393
|
+
...TestApp.key,
|
|
394
|
+
id: 'key_earn_zones',
|
|
395
|
+
scopes: ['data:read', `zone:${otherZoneId}:read`, `zone:${TestEarn.zone.id}:read`],
|
|
396
|
+
token: 'secret_earn_zones',
|
|
397
|
+
} satisfies TestApp.kvStore.Key
|
|
398
|
+
const unrelatedKey = {
|
|
399
|
+
...TestApp.key,
|
|
400
|
+
id: 'key_earn_other_zone',
|
|
401
|
+
scopes: ['data:read', `zone:${otherZoneId}:read`],
|
|
402
|
+
token: 'secret_earn_other_zone',
|
|
403
|
+
} satisfies TestApp.kvStore.Key
|
|
404
|
+
const writeOnlyKey = {
|
|
405
|
+
...TestApp.key,
|
|
406
|
+
id: 'key_earn_write_zone',
|
|
407
|
+
scopes: ['data:read', `zone:${TestEarn.zone.id}:write`],
|
|
408
|
+
token: 'secret_earn_write_zone',
|
|
409
|
+
} satisfies TestApp.kvStore.Key
|
|
410
|
+
const wildcardKey = {
|
|
411
|
+
...TestApp.key,
|
|
412
|
+
id: 'key_earn_all_zones',
|
|
413
|
+
scopes: ['*'],
|
|
414
|
+
token: 'secret_earn_all_zones',
|
|
415
|
+
} satisfies TestApp.kvStore.Key
|
|
416
|
+
const app = TestApp.create({
|
|
417
|
+
auth: { keys: [scopedKey, unrelatedKey, wildcardKey, writeOnlyKey] },
|
|
418
|
+
cache,
|
|
419
|
+
db,
|
|
420
|
+
zones: [TestEarn.zone],
|
|
421
|
+
})
|
|
422
|
+
const base = `/v1/earn/vaults/verified?chainId=${TestEarn.chain.id}&limit=5`
|
|
423
|
+
const included = `${base}&include=capabilities,zone,zones`
|
|
424
|
+
const filtered = `${included}&capability=privateRouting`
|
|
425
|
+
// Fill the query-credential cache entry before checking callers without its Zone scope.
|
|
426
|
+
const scopedResponse = await app.request(`${filtered}&key=${scopedKey.token}`)
|
|
427
|
+
const [
|
|
428
|
+
defaultResponse,
|
|
429
|
+
unrelatedResponse,
|
|
430
|
+
publicResponse,
|
|
431
|
+
wildcardResponse,
|
|
432
|
+
writeOnlyResponse,
|
|
433
|
+
] = await Promise.all([
|
|
434
|
+
app.request(base, { headers: { 'tempo-api-key': scopedKey.token } }),
|
|
435
|
+
app.request(included, { headers: { 'tempo-api-key': unrelatedKey.token } }),
|
|
436
|
+
app.request(filtered),
|
|
437
|
+
app.request(filtered, { headers: { 'tempo-api-key': wildcardKey.token } }),
|
|
438
|
+
app.request(filtered, { headers: { 'tempo-api-key': writeOnlyKey.token } }),
|
|
439
|
+
])
|
|
440
|
+
|
|
441
|
+
expect([
|
|
442
|
+
defaultResponse.status,
|
|
443
|
+
scopedResponse.status,
|
|
444
|
+
unrelatedResponse.status,
|
|
445
|
+
publicResponse.status,
|
|
446
|
+
wildcardResponse.status,
|
|
447
|
+
writeOnlyResponse.status,
|
|
448
|
+
]).toStrictEqual([200, 200, 200, 200, 200, 200])
|
|
449
|
+
const [defaultBody, scopedBody, unrelatedBody, publicBody, wildcardBody, writeOnlyBody] =
|
|
450
|
+
await Promise.all([
|
|
451
|
+
TestApp.json(defaultResponse, Earn.schema.getVerifiedEarnVaults.Response),
|
|
452
|
+
TestApp.json(scopedResponse, Earn.schema.getVerifiedEarnVaults.Response),
|
|
453
|
+
TestApp.json(unrelatedResponse, Earn.schema.getVerifiedEarnVaults.Response),
|
|
454
|
+
TestApp.json(publicResponse, Earn.schema.getVerifiedEarnVaults.Response),
|
|
455
|
+
TestApp.json(wildcardResponse, Earn.schema.getVerifiedEarnVaults.Response),
|
|
456
|
+
TestApp.json(writeOnlyResponse, Earn.schema.getVerifiedEarnVaults.Response),
|
|
457
|
+
])
|
|
458
|
+
expect(defaultBody.data[0]).not.toHaveProperty('zone')
|
|
459
|
+
expect(defaultBody.data[0]).not.toHaveProperty('zones')
|
|
460
|
+
expect(unrelatedBody.data[0]).toMatchObject({
|
|
461
|
+
capabilities: { privateRouting: true, routerSwaps: true },
|
|
462
|
+
zone: null,
|
|
463
|
+
zones: [],
|
|
464
|
+
})
|
|
465
|
+
expect(publicBody.data[0]).toMatchObject({
|
|
466
|
+
capabilities: { privateRouting: true, routerSwaps: true },
|
|
467
|
+
zone: null,
|
|
468
|
+
zones: [],
|
|
469
|
+
})
|
|
470
|
+
expect(writeOnlyBody.data[0]).toMatchObject({ zone: null, zones: [] })
|
|
471
|
+
const vault = scopedBody.data[0]
|
|
472
|
+
expect(vault?.capabilities).toMatchObject({ privateRouting: true, routerSwaps: true })
|
|
473
|
+
expect(vault?.zones).toHaveLength(1)
|
|
474
|
+
expect(vault?.zones?.[0]).toMatchObject(TestEarn.zoneRoute)
|
|
475
|
+
expect(vault?.zone).toStrictEqual(
|
|
476
|
+
vault?.zones?.[0]
|
|
477
|
+
? {
|
|
478
|
+
chainId: vault.zones[0].chainId,
|
|
479
|
+
inputTokens: vault.zones[0].inputTokens,
|
|
480
|
+
name: vault.zones[0].name,
|
|
481
|
+
outputTokens: vault.zones[0].outputTokens,
|
|
482
|
+
}
|
|
483
|
+
: null,
|
|
484
|
+
)
|
|
485
|
+
expect(wildcardBody.data[0]).toStrictEqual(vault)
|
|
486
|
+
},
|
|
487
|
+
90_000,
|
|
488
|
+
)
|
|
489
|
+
|
|
490
|
+
test.runIf(Runtime.get().mode === 'testnet')(
|
|
491
|
+
'returns null for an inaccessible legacy Zone route',
|
|
492
|
+
async () => {
|
|
493
|
+
const db = TestApp.database()
|
|
494
|
+
await core_EarnVaults.upsert(db, {
|
|
495
|
+
...TestEarn.zoneVerifiedVault,
|
|
496
|
+
privateInputTokens: [TestEarn.assetTokenAddress],
|
|
497
|
+
privateOutputTokens: [TestEarn.assetTokenAddress],
|
|
498
|
+
zones: [],
|
|
499
|
+
})
|
|
500
|
+
const zone = {
|
|
501
|
+
...TestEarn.zone,
|
|
502
|
+
contracts: {
|
|
503
|
+
...TestEarn.zone.contracts,
|
|
504
|
+
earnRouter: { address: TestEarn.zoneRoute.earnRouter },
|
|
505
|
+
},
|
|
506
|
+
}
|
|
507
|
+
const app = TestApp.create({ auth: false, cache, db, zones: [zone] })
|
|
508
|
+
const query = `chainId=${TestEarn.chain.id}&include=zone`
|
|
509
|
+
const [detail, list] = await Promise.all([
|
|
510
|
+
app.request(`/v1/earn/vaults/${TestEarn.zoneVaultAddress}?${query}`),
|
|
511
|
+
app.request(`/v1/earn/vaults/verified?${query}`),
|
|
512
|
+
])
|
|
513
|
+
|
|
514
|
+
expect([detail.status, list.status]).toStrictEqual([200, 200])
|
|
515
|
+
expect((await TestApp.json(detail, Earn.schema.getEarnVault.Response)).zone).toBeNull()
|
|
516
|
+
expect(
|
|
517
|
+
(await TestApp.json(list, Earn.schema.getVerifiedEarnVaults.Response)).data[0]?.zone,
|
|
518
|
+
).toBeNull()
|
|
519
|
+
},
|
|
520
|
+
90_000,
|
|
521
|
+
)
|
|
522
|
+
|
|
368
523
|
test.runIf(Runtime.get().mode === 'testnet')(
|
|
369
524
|
'returns curated fields for a public-only vault',
|
|
370
525
|
async () => {
|
|
@@ -467,14 +622,11 @@ describe('GET /v1/earn/vaults/verified', () => {
|
|
|
467
622
|
db,
|
|
468
623
|
zones: [TestEarn.zone],
|
|
469
624
|
})
|
|
470
|
-
const request = { headers: { 'cache-control': 'no-store' } }
|
|
471
625
|
const detail = await app.request(
|
|
472
626
|
`/v1/earn/vaults/${TestEarn.vaultAddress}?chainId=${TestEarn.chain.id}&include=access,capabilities,zone`,
|
|
473
|
-
request,
|
|
474
627
|
)
|
|
475
628
|
const verified = await app.request(
|
|
476
629
|
`/v1/earn/vaults/verified?chainId=${TestEarn.chain.id}&include=access,capabilities,zone&limit=5`,
|
|
477
|
-
request,
|
|
478
630
|
)
|
|
479
631
|
|
|
480
632
|
expect([detail.status, verified.status]).toStrictEqual([200, 200])
|
|
@@ -552,6 +704,7 @@ describe('GET /v1/earn/vaults/verified', () => {
|
|
|
552
704
|
privateInputTokens: [],
|
|
553
705
|
privateOutputTokens: [],
|
|
554
706
|
vaultAddress,
|
|
707
|
+
zones: [],
|
|
555
708
|
})
|
|
556
709
|
const app = TestApp.create({ auth: false, cache, db, zones: [TestEarn.zone] })
|
|
557
710
|
const cursor = Cursor.encode([TestEarn.indexedDeployment.vaultAddress])
|
|
@@ -1558,6 +1711,9 @@ describe('OpenAPI', () => {
|
|
|
1558
1711
|
expect(response).toContain('"type"')
|
|
1559
1712
|
expect(response).toContain('"vaultAddress"')
|
|
1560
1713
|
expect(response).toContain('"zone"')
|
|
1714
|
+
expect(response).toContain('"zones"')
|
|
1715
|
+
expect(response).toContain('"deploymentBlock"')
|
|
1716
|
+
expect(response).toContain('"earnRouter"')
|
|
1561
1717
|
expect(response).toContain('"apy"')
|
|
1562
1718
|
expect(response).toContain('"instantLiquidity"')
|
|
1563
1719
|
expect(response).toContain('"sharePrice"')
|
|
@@ -1590,6 +1746,7 @@ describe('OpenAPI', () => {
|
|
|
1590
1746
|
expect(include?.description).toContain('`apy,tvl`')
|
|
1591
1747
|
expect(JSON.stringify(include?.schema)).toContain('"apy"')
|
|
1592
1748
|
expect(JSON.stringify(include?.schema)).toContain('"tvl"')
|
|
1749
|
+
expect(JSON.stringify(include?.schema)).toContain('"zones"')
|
|
1593
1750
|
})
|
|
1594
1751
|
|
|
1595
1752
|
test('documents vault-position inputs and responses', async () => {
|
|
@@ -1597,14 +1754,15 @@ describe('OpenAPI', () => {
|
|
|
1597
1754
|
const spec = (await (await app.request('/openapi.json')).json()) as OpenApiDocument
|
|
1598
1755
|
const operation = spec.paths['/v1/earn/vaults/{vaultId}/positions/{address}']?.get
|
|
1599
1756
|
const address = operation?.parameters?.find((parameter) => parameter.name === 'address')
|
|
1757
|
+
const errors = errorSchemas(spec, operation)
|
|
1600
1758
|
const response = JSON.stringify(operation?.responses)
|
|
1601
1759
|
const vaultId = operation?.parameters?.find((parameter) => parameter.name === 'vaultId')
|
|
1602
1760
|
|
|
1603
|
-
expect(
|
|
1604
|
-
expect(
|
|
1605
|
-
expect(
|
|
1606
|
-
expect(
|
|
1607
|
-
expect(
|
|
1761
|
+
expect(errors).toContain('"chain_id_invalid"')
|
|
1762
|
+
expect(errors).toContain('"chain_id_unsupported"')
|
|
1763
|
+
expect(errors).toContain('"position_invalid"')
|
|
1764
|
+
expect(errors).toContain('"query_invalid"')
|
|
1765
|
+
expect(errors).toContain('"earn_vault_not_found"')
|
|
1608
1766
|
expect(response).toContain('Stable resource ID for this vault position')
|
|
1609
1767
|
expect(response).toContain('0x20c000000000000000000000b9537d11c60e8b50')
|
|
1610
1768
|
expect(response).toContain('0x20c000000000000000000000300e14ab91a10769')
|
|
@@ -1621,6 +1779,7 @@ describe('OpenAPI', () => {
|
|
|
1621
1779
|
(parameter) => parameter.name === 'valuation.currency',
|
|
1622
1780
|
)
|
|
1623
1781
|
const verified = operation?.parameters?.find((parameter) => parameter.name === 'verified')
|
|
1782
|
+
const errors = errorSchemas(spec, operation)
|
|
1624
1783
|
const response = JSON.stringify(operation?.responses)
|
|
1625
1784
|
|
|
1626
1785
|
expect(operation?.description).toContain('currently holds shares')
|
|
@@ -1628,10 +1787,10 @@ describe('OpenAPI', () => {
|
|
|
1628
1787
|
expect(denomination?.description).toContain('nominal value')
|
|
1629
1788
|
expect(verified?.description).toContain('registry-curated')
|
|
1630
1789
|
expect(verified?.schema?.examples).toStrictEqual([true])
|
|
1631
|
-
expect(
|
|
1632
|
-
expect(
|
|
1633
|
-
expect(
|
|
1634
|
-
expect(
|
|
1790
|
+
expect(errors).toContain('"chain_id_invalid"')
|
|
1791
|
+
expect(errors).toContain('"chain_id_unsupported"')
|
|
1792
|
+
expect(errors).toContain('"positions_invalid"')
|
|
1793
|
+
expect(errors).toContain('"query_invalid"')
|
|
1635
1794
|
expect(response).toContain('Stable resource ID for this position')
|
|
1636
1795
|
expect(response).toContain('Current asset value of the held shares')
|
|
1637
1796
|
expect(response).toContain('"assetAmount"')
|
|
@@ -1647,6 +1806,7 @@ describe('OpenAPI', () => {
|
|
|
1647
1806
|
const app = TestApp.create({ auth: false, cache })
|
|
1648
1807
|
const spec = (await (await app.request('/openapi.json')).json()) as OpenApiDocument
|
|
1649
1808
|
const operation = spec.paths['/v1/earn/vaults/{vaultId}/earnings/{address}']?.get
|
|
1809
|
+
const errors = errorSchemas(spec, operation)
|
|
1650
1810
|
const period = operation?.parameters?.find((parameter) => parameter.name === 'period')
|
|
1651
1811
|
const response = JSON.stringify(operation?.responses)
|
|
1652
1812
|
|
|
@@ -1654,7 +1814,7 @@ describe('OpenAPI', () => {
|
|
|
1654
1814
|
expect(period?.description).toContain('trailing 30 days')
|
|
1655
1815
|
expect(period?.schema?.enum).toStrictEqual(['30d', 'active', 'lifetime'])
|
|
1656
1816
|
expect(period?.schema?.examples).toStrictEqual(['lifetime'])
|
|
1657
|
-
expect(
|
|
1817
|
+
expect(errors).toContain('"earn_vault_not_found"')
|
|
1658
1818
|
expect(response).toContain('Stable resource ID for these vault earnings')
|
|
1659
1819
|
expect(response).toContain('Current share value plus completed redemptions')
|
|
1660
1820
|
expect(response).toContain('weighted-average asset cost basis')
|