tapimo 0.19.0 → 0.20.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/README.md +13 -5
- package/dist/ApiKey.d.ts +2 -2
- package/dist/ApiKey.d.ts.map +1 -1
- package/dist/ApiKey.js +2 -2
- package/dist/ApiKey.js.map +1 -1
- package/dist/ApiKeys.d.ts +85 -11
- package/dist/ApiKeys.d.ts.map +1 -1
- package/dist/ApiKeys.js +218 -56
- package/dist/ApiKeys.js.map +1 -1
- package/dist/App.d.ts +12543 -13912
- package/dist/App.d.ts.map +1 -1
- package/dist/App.js +4 -5
- package/dist/App.js.map +1 -1
- package/dist/Scope.d.ts +12 -20
- package/dist/Scope.d.ts.map +1 -1
- package/dist/Scope.js +20 -36
- package/dist/Scope.js.map +1 -1
- package/dist/admin/App.d.ts +871 -828
- package/dist/admin/App.d.ts.map +1 -1
- package/dist/admin/App.js +14 -26
- package/dist/admin/App.js.map +1 -1
- package/dist/admin/apps/api-keys.d.ts +93 -186
- package/dist/admin/apps/api-keys.d.ts.map +1 -1
- package/dist/admin/apps/api-keys.js +3 -5
- package/dist/admin/apps/api-keys.js.map +1 -1
- package/dist/admin/apps/audit-logs.d.ts +18 -18
- package/dist/admin/apps/audit-logs.js +1 -1
- package/dist/admin/apps/audit-logs.js.map +1 -1
- package/dist/admin/apps/earn-vaults.d.ts +27 -27
- package/dist/admin/apps/earn-vaults.d.ts.map +1 -1
- package/dist/admin/apps/earn-vaults.js +11 -5
- package/dist/admin/apps/earn-vaults.js.map +1 -1
- package/dist/admin/apps/organizations.d.ts +17 -17
- package/dist/admin/apps/prop-amms.d.ts +4 -4
- package/dist/admin/apps/routes-support.js +1 -38
- package/dist/admin/apps/routes-support.js.map +1 -1
- package/dist/admin/apps/routes.d.ts +153 -153
- package/dist/admin/apps/sentinel.d.ts +4 -4
- package/dist/admin/apps/verified-tokens.d.ts +24 -24
- package/dist/admin/apps/zone-delegation-requests.d.ts +332 -0
- package/dist/admin/apps/zone-delegation-requests.d.ts.map +1 -0
- package/dist/admin/apps/zone-delegation-requests.js +200 -0
- package/dist/admin/apps/zone-delegation-requests.js.map +1 -0
- package/dist/admin/apps/zone-delegations.d.ts +512 -52
- package/dist/admin/apps/zone-delegations.d.ts.map +1 -1
- package/dist/admin/apps/zone-delegations.js +134 -44
- package/dist/admin/apps/zone-delegations.js.map +1 -1
- package/dist/admin/index.d.ts +1 -1
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.js.map +1 -1
- 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 +341 -397
- package/dist/admin/ui.generated.js.map +1 -1
- package/dist/analytics/tables/requestEvents.d.ts.map +1 -1
- package/dist/analytics/tables/requestEvents.js +4 -2
- package/dist/analytics/tables/requestEvents.js.map +1 -1
- package/dist/apps/data/App.d.ts +11932 -13214
- package/dist/apps/data/App.d.ts.map +1 -1
- package/dist/apps/data/App.js +32 -13
- package/dist/apps/data/App.js.map +1 -1
- package/dist/apps/data/ZoneSelection.d.ts +1 -1
- package/dist/apps/data/ZoneSelection.d.ts.map +1 -1
- package/dist/apps/data/ZoneSelection.js +2 -2
- package/dist/apps/data/ZoneSelection.js.map +1 -1
- package/dist/apps/data/routes/activities.d.ts +60 -27
- package/dist/apps/data/routes/activities.d.ts.map +1 -1
- package/dist/apps/data/routes/activities.js +91 -16
- package/dist/apps/data/routes/activities.js.map +1 -1
- package/dist/apps/data/routes/addresses.d.ts +893 -875
- package/dist/apps/data/routes/addresses.d.ts.map +1 -1
- package/dist/apps/data/routes/balances.d.ts +36 -36
- package/dist/apps/data/routes/balances.d.ts.map +1 -1
- package/dist/apps/data/routes/balances.js +3 -1
- package/dist/apps/data/routes/balances.js.map +1 -1
- package/dist/apps/data/routes/blocks.d.ts +40 -40
- package/dist/apps/data/routes/blocks.d.ts.map +1 -1
- package/dist/apps/data/routes/blocks.js +3 -7
- package/dist/apps/data/routes/blocks.js.map +1 -1
- package/dist/apps/data/routes/coingecko.d.ts +236 -236
- package/dist/apps/data/routes/earn-transactions.d.ts +14 -14
- package/dist/apps/data/routes/earn.d.ts +261 -1445
- package/dist/apps/data/routes/earn.d.ts.map +1 -1
- package/dist/apps/data/routes/earn.js +64 -490
- package/dist/apps/data/routes/earn.js.map +1 -1
- package/dist/apps/data/routes/exchanges.d.ts +144 -144
- package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
- package/dist/apps/data/routes/exchanges.js +5 -15
- 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 +3 -9
- package/dist/apps/data/routes/fee-amm.js.map +1 -1
- package/dist/apps/data/routes/indexer.d.ts +13 -13
- package/dist/apps/data/routes/receipts.d.ts +53 -53
- 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.d.ts +52 -0
- package/dist/apps/data/routes/rpc.d.ts.map +1 -1
- package/dist/apps/data/routes/rpc.js +19 -18
- package/dist/apps/data/routes/rpc.js.map +1 -1
- package/dist/apps/data/routes/tokenlist.d.ts +14 -14
- package/dist/apps/data/routes/tokenlist.d.ts.map +1 -1
- package/dist/apps/data/routes/tokenlist.js +1 -3
- package/dist/apps/data/routes/tokenlist.js.map +1 -1
- package/dist/apps/data/routes/tokens.d.ts.map +1 -1
- package/dist/apps/data/routes/tokens.js +7 -5
- package/dist/apps/data/routes/tokens.js.map +1 -1
- package/dist/apps/data/routes/transactions.d.ts +281 -281
- package/dist/apps/data/routes/transactions.js +3 -3
- package/dist/apps/data/routes/transactions.js.map +1 -1
- package/dist/apps/data/routes/transfers.d.ts +12 -12
- package/dist/apps/data/routes/transfers.d.ts.map +1 -1
- package/dist/apps/data/routes/transfers.js +1 -3
- package/dist/apps/data/routes/transfers.js.map +1 -1
- package/dist/apps/data/routes/valuation.d.ts +30 -30
- package/dist/apps/data/routes/valuation.d.ts.map +1 -1
- package/dist/apps/data/routes/valuation.js +1 -3
- package/dist/apps/data/routes/valuation.js.map +1 -1
- package/dist/apps/data/routes/verified-tokens.d.ts +86 -86
- package/dist/apps/data/routes/webhooks.d.ts +102 -102
- package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
- package/dist/apps/data/routes/webhooks.js +9 -23
- package/dist/apps/data/routes/webhooks.js.map +1 -1
- package/dist/apps/data/routes/zone-deposits.d.ts +16 -16
- package/dist/apps/data/routes/zone-withdrawals.d.ts +31 -31
- package/dist/apps/data/routes/zones.d.ts +28 -28
- package/dist/apps/management/App.d.ts +18 -102
- package/dist/apps/management/App.d.ts.map +1 -1
- package/dist/apps/management/App.js +1 -1
- package/dist/apps/management/App.js.map +1 -1
- package/dist/apps/management/routes/api-keys.d.ts +253 -339
- package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
- package/dist/apps/management/routes/api-keys.js +25 -11
- package/dist/apps/management/routes/api-keys.js.map +1 -1
- package/dist/apps/management/routes/billing.d.ts +92 -92
- package/dist/apps/management/routes/billing.d.ts.map +1 -1
- package/dist/apps/management/routes/billing.js +5 -13
- package/dist/apps/management/routes/billing.js.map +1 -1
- package/dist/apps/management/routes/cli.d.ts.map +1 -1
- package/dist/apps/management/routes/cli.js +3 -9
- package/dist/apps/management/routes/cli.js.map +1 -1
- package/dist/apps/management/routes/faucet.d.ts +16 -16
- package/dist/apps/management/routes/fee-payer-usage.d.ts +38 -38
- package/dist/apps/management/routes/fee-payer-usage.d.ts.map +1 -1
- package/dist/apps/management/routes/fee-payer-usage.js +2 -4
- package/dist/apps/management/routes/fee-payer-usage.js.map +1 -1
- package/dist/apps/management/routes/invitations.d.ts +52 -52
- package/dist/apps/management/routes/invitations.d.ts.map +1 -1
- package/dist/apps/management/routes/invitations.js +4 -12
- package/dist/apps/management/routes/invitations.js.map +1 -1
- package/dist/apps/management/routes/invite-links.d.ts.map +1 -1
- package/dist/apps/management/routes/invite-links.js +6 -14
- package/dist/apps/management/routes/invite-links.js.map +1 -1
- package/dist/apps/management/routes/me.d.ts +6 -6
- package/dist/apps/management/routes/me.d.ts.map +1 -1
- package/dist/apps/management/routes/me.js +3 -7
- package/dist/apps/management/routes/me.js.map +1 -1
- package/dist/apps/management/routes/members.d.ts +84 -84
- package/dist/apps/management/routes/members.d.ts.map +1 -1
- package/dist/apps/management/routes/members.js +2 -4
- package/dist/apps/management/routes/members.js.map +1 -1
- package/dist/apps/management/routes/orgs.d.ts +44 -44
- package/dist/apps/management/routes/orgs.d.ts.map +1 -1
- package/dist/apps/management/routes/orgs.js +2 -6
- package/dist/apps/management/routes/orgs.js.map +1 -1
- package/dist/apps/management/routes/projects.d.ts.map +1 -1
- package/dist/apps/management/routes/projects.js +2 -6
- package/dist/apps/management/routes/projects.js.map +1 -1
- package/dist/apps/management/routes/route-usage.d.ts +34 -34
- package/dist/apps/management/routes/route-usage.d.ts.map +1 -1
- package/dist/apps/management/routes/route-usage.js +2 -4
- package/dist/apps/management/routes/route-usage.js.map +1 -1
- package/dist/apps/management/routes/routes-access-requests.d.ts +120 -91
- package/dist/apps/management/routes/routes-access-requests.d.ts.map +1 -1
- package/dist/apps/management/routes/routes-access-requests.js +49 -9
- package/dist/apps/management/routes/routes-access-requests.js.map +1 -1
- package/dist/apps/management/routes/usage.d.ts.map +1 -1
- package/dist/apps/management/routes/usage.js +8 -16
- package/dist/apps/management/routes/usage.js.map +1 -1
- package/dist/apps/management/routes/verified-token-requests.d.ts +39 -39
- package/dist/apps/management/routes/verified-token-requests.d.ts.map +1 -1
- package/dist/apps/management/routes/verified-token-requests.js +3 -7
- package/dist/apps/management/routes/verified-token-requests.js.map +1 -1
- package/dist/apps/management/routes/webhooks.d.ts +2089 -2089
- package/dist/apps/management/routes/zone-delegations.d.ts +14 -17
- package/dist/apps/management/routes/zone-delegations.d.ts.map +1 -1
- package/dist/apps/management/routes/zone-delegations.js +1 -6
- package/dist/apps/management/routes/zone-delegations.js.map +1 -1
- package/dist/apps/mpp/App.d.ts +44 -44
- package/dist/apps/mpp/App.js +3 -3
- package/dist/apps/mpp/App.js.map +1 -1
- package/dist/apps/mpp/internal/Adapter.js +1 -1
- package/dist/apps/mpp/internal/Adapter.js.map +1 -1
- package/dist/apps/mpp/internal/Error.d.ts.map +1 -1
- package/dist/apps/mpp/internal/Error.js +1 -0
- package/dist/apps/mpp/internal/Error.js.map +1 -1
- package/dist/apps/mpp/internal/Policy.d.ts +5 -1
- package/dist/apps/mpp/internal/Policy.d.ts.map +1 -1
- package/dist/apps/mpp/internal/Policy.js +35 -13
- package/dist/apps/mpp/internal/Policy.js.map +1 -1
- package/dist/apps/relay/App.d.ts +2 -2
- package/dist/apps/relay/App.d.ts.map +1 -1
- package/dist/apps/relay/App.js +25 -16
- package/dist/apps/relay/App.js.map +1 -1
- package/dist/apps/routes/App.d.ts +311 -311
- package/dist/apps/routes/routes/deposit-addresses.d.ts +1099 -1099
- package/dist/apps/routes/routes/list.d.ts +74 -74
- package/dist/apps/routes/routes/transfers.d.ts +94 -94
- package/dist/cli/ApiKeys.d.ts +19 -26
- package/dist/cli/ApiKeys.d.ts.map +1 -1
- package/dist/db/Db.d.ts +3 -3
- package/dist/db/Db.d.ts.map +1 -1
- package/dist/db/Db.js +27 -0
- package/dist/db/Db.js.map +1 -1
- package/dist/db/Schema.d.ts +28 -62
- package/dist/db/Schema.d.ts.map +1 -1
- package/dist/db/Schema.js +18 -18
- package/dist/db/Schema.js.map +1 -1
- package/dist/db/tables/rewardRuns.d.ts +21 -0
- package/dist/db/tables/rewardRuns.d.ts.map +1 -1
- package/dist/db/tables/rewardRuns.js +19 -0
- package/dist/db/tables/rewardRuns.js.map +1 -1
- package/dist/db/tables/routesAccessRequests.d.ts +13 -0
- package/dist/db/tables/routesAccessRequests.d.ts.map +1 -1
- package/dist/db/tables/routesAccessRequests.js +12 -0
- package/dist/db/tables/routesAccessRequests.js.map +1 -1
- package/dist/db/tables/zoneDelegationRequests.d.ts +165 -0
- package/dist/db/tables/zoneDelegationRequests.d.ts.map +1 -0
- package/dist/db/tables/{zoneKeyRequests.js → zoneDelegationRequests.js} +43 -42
- package/dist/db/tables/zoneDelegationRequests.js.map +1 -0
- package/dist/db/tables/zoneDelegations.d.ts +11 -5
- package/dist/db/tables/zoneDelegations.d.ts.map +1 -1
- package/dist/db/tables/zoneDelegations.js +21 -3
- package/dist/db/tables/zoneDelegations.js.map +1 -1
- package/dist/handlers/internal/accounts.d.ts +7 -0
- package/dist/handlers/internal/accounts.d.ts.map +1 -0
- package/dist/handlers/internal/{multisig.js → accounts.js} +10 -10
- package/dist/handlers/internal/{multisig.js.map → accounts.js.map} +1 -1
- package/dist/handlers/internal/sponsorship.js +17 -17
- package/dist/handlers/internal/sponsorship.js.map +1 -1
- package/dist/handlers/relay.d.ts +6 -6
- package/dist/handlers/relay.d.ts.map +1 -1
- package/dist/handlers/relay.js +15 -15
- package/dist/handlers/relay.js.map +1 -1
- package/dist/internal/Auth.d.ts.map +1 -1
- package/dist/internal/Auth.js +4 -8
- package/dist/internal/Auth.js.map +1 -1
- package/dist/internal/EarnRates.d.ts.map +1 -1
- package/dist/internal/EarnRates.js +1 -3
- package/dist/internal/EarnRates.js.map +1 -1
- package/dist/internal/EarnVaults.js +2 -2
- package/dist/internal/Log.d.ts +2 -4
- package/dist/internal/Log.d.ts.map +1 -1
- package/dist/internal/Log.js +0 -3
- package/dist/internal/Log.js.map +1 -1
- package/dist/internal/Response.d.ts +1 -1
- package/dist/internal/Response.d.ts.map +1 -1
- package/dist/internal/Response.js +0 -3
- package/dist/internal/Response.js.map +1 -1
- package/dist/internal/Schema.d.ts +11 -0
- package/dist/internal/Schema.d.ts.map +1 -1
- package/dist/internal/Schema.js +24 -1
- package/dist/internal/Schema.js.map +1 -1
- package/dist/internal/ZoneAccess.d.ts +70 -35
- package/dist/internal/ZoneAccess.d.ts.map +1 -1
- package/dist/internal/ZoneAccess.js +312 -131
- package/dist/internal/ZoneAccess.js.map +1 -1
- package/dist/internal/ZoneDelegation.d.ts +7 -19
- package/dist/internal/ZoneDelegation.d.ts.map +1 -1
- package/dist/internal/ZoneDelegation.js +8 -29
- package/dist/internal/ZoneDelegation.js.map +1 -1
- package/dist/internal/{ZoneKeyApproval.d.ts → ZoneDelegationApproval.d.ts} +3 -5
- package/dist/internal/ZoneDelegationApproval.d.ts.map +1 -0
- package/dist/internal/ZoneDelegationApproval.js +16 -0
- package/dist/internal/ZoneDelegationApproval.js.map +1 -0
- package/dist/internal/ZoneKeyRewrite.d.ts +98 -0
- package/dist/internal/ZoneKeyRewrite.d.ts.map +1 -0
- package/dist/internal/ZoneKeyRewrite.js +151 -0
- package/dist/internal/ZoneKeyRewrite.js.map +1 -0
- package/dist/internal/rewards/Campaigns.d.ts +2 -0
- package/dist/internal/rewards/Campaigns.d.ts.map +1 -1
- package/dist/internal/rewards/Campaigns.js.map +1 -1
- package/dist/internal/rewards/Distributions.d.ts.map +1 -1
- package/dist/internal/rewards/Distributions.js +2 -6
- package/dist/internal/rewards/Distributions.js.map +1 -1
- package/dist/internal/rewards/Monitor.d.ts +4 -1
- package/dist/internal/rewards/Monitor.d.ts.map +1 -1
- package/dist/internal/rewards/Monitor.js +19 -2
- package/dist/internal/rewards/Monitor.js.map +1 -1
- package/dist/internal/rewards/Runner.d.ts.map +1 -1
- package/dist/internal/rewards/Runner.js +9 -1
- package/dist/internal/rewards/Runner.js.map +1 -1
- package/dist/internal/routes/Action.d.ts.map +1 -1
- package/dist/internal/routes/Action.js +2 -3
- package/dist/internal/routes/Action.js.map +1 -1
- package/dist/internal/routes/Deposit.d.ts.map +1 -1
- package/dist/internal/routes/Deposit.js +2 -6
- package/dist/internal/routes/Deposit.js.map +1 -1
- package/dist/internal/routes/DepositAddress.d.ts.map +1 -1
- package/dist/internal/routes/DepositAddress.js +4 -10
- package/dist/internal/routes/DepositAddress.js.map +1 -1
- package/dist/internal/routes/Policy.d.ts.map +1 -1
- package/dist/internal/routes/Policy.js +2 -1
- package/dist/internal/routes/Policy.js.map +1 -1
- package/dist/internal/routes/Provider.js +8 -8
- package/dist/internal/routes/Provider.js.map +1 -1
- package/dist/internal/routes/Reconciliation.d.ts.map +1 -1
- package/dist/internal/routes/Reconciliation.js +3 -2
- package/dist/internal/routes/Reconciliation.js.map +1 -1
- package/dist/internal/routes/Transfer.d.ts.map +1 -1
- package/dist/internal/routes/Transfer.js +4 -12
- package/dist/internal/routes/Transfer.js.map +1 -1
- package/dist/internal/routes/UniversalDepositAddress.d.ts.map +1 -1
- package/dist/internal/routes/UniversalDepositAddress.js +3 -6
- package/dist/internal/routes/UniversalDepositAddress.js.map +1 -1
- package/dist/internal/routes/providers/SquidOrder.d.ts.map +1 -1
- package/dist/internal/routes/providers/SquidOrder.js +3 -2
- package/dist/internal/routes/providers/SquidOrder.js.map +1 -1
- package/dist/internal/routes/providers/relay.d.ts.map +1 -1
- package/dist/internal/routes/providers/relay.js +4 -3
- package/dist/internal/routes/providers/relay.js.map +1 -1
- package/package.json +20 -5
- package/src/ApiKey.ts +2 -2
- package/src/ApiKeys.test.ts +284 -51
- package/src/ApiKeys.ts +297 -64
- package/src/App.ts +4 -5
- package/src/Client.test-d.ts +33 -126
- package/src/Scope.test.ts +26 -45
- package/src/Scope.ts +24 -37
- package/src/admin/App.test.ts +51 -4
- package/src/admin/App.ts +25 -33
- package/src/admin/Mcp.test.ts +2 -1
- package/src/admin/apps/api-keys.test.ts +90 -20
- package/src/admin/apps/api-keys.ts +5 -8
- package/src/admin/apps/audit-logs.ts +1 -1
- package/src/admin/apps/earn-vaults.test.ts +19 -19
- package/src/admin/apps/earn-vaults.ts +11 -5
- package/src/admin/apps/routes-support.test.ts +254 -3
- package/src/admin/apps/routes-support.ts +1 -44
- package/src/admin/apps/scopes.test.ts +3 -3
- package/src/admin/apps/zone-delegation-requests.test.ts +246 -0
- package/src/admin/apps/zone-delegation-requests.ts +240 -0
- package/src/admin/apps/zone-delegations.test.ts +218 -58
- package/src/admin/apps/zone-delegations.ts +146 -46
- package/src/admin/index.ts +1 -1
- package/src/admin/ui/src/components/ApiKeyForm.tsx +4 -3
- package/src/admin/ui/src/lib/config.ts +3 -3
- package/src/admin/ui/src/lib/query-client.ts +1 -1
- package/src/admin/ui/src/lib/review-queues.ts +10 -10
- package/src/admin/ui/src/lib/routes-setup.test.ts +1 -2
- package/src/admin/ui/src/lib/routes-setup.ts +3 -5
- package/src/admin/ui/src/lib/scopes.test.ts +3 -6
- package/src/admin/ui/src/lib/scopes.ts +2 -9
- package/src/admin/ui/src/lib/{zone-key-requests.ts → zone-delegation-requests.ts} +27 -31
- package/src/admin/ui/src/routeTree.gen.ts +17 -17
- package/src/admin/ui/src/routes/__root.tsx +1 -1
- package/src/admin/ui/src/routes/api-keys.tsx +2 -15
- package/src/admin/ui/src/routes/audit-logs.tsx +2 -2
- package/src/admin/ui/src/routes/index.tsx +11 -11
- package/src/admin/ui/src/routes/organizations.tsx +3 -1
- package/src/admin/ui/src/routes/organizations_.$orgId.tsx +3 -1
- package/src/admin/ui/src/routes/organizations_.$orgId_.setup.tsx +1 -3
- package/src/admin/ui/src/routes/{zone-key-requests.tsx → zone-delegation-requests.tsx} +228 -172
- package/src/admin/ui/vite.config.ts +14 -1
- package/src/admin/ui.generated.ts +412 -583
- package/src/analytics/tables/requestEvents.test.ts +13 -3
- package/src/analytics/tables/requestEvents.ts +4 -3
- package/src/apps/data/App.test.ts +72 -35
- package/src/apps/data/App.ts +29 -13
- package/src/apps/data/ZoneSelection.test.ts +53 -70
- package/src/apps/data/ZoneSelection.ts +2 -2
- package/src/apps/data/routes/activities.test.ts +140 -6
- package/src/apps/data/routes/activities.ts +124 -18
- package/src/apps/data/routes/balances.ts +5 -1
- package/src/apps/data/routes/blocks.ts +9 -13
- package/src/apps/data/routes/earn-transactions.local.test.ts +6 -1
- package/src/apps/data/routes/earn-transactions.test.ts +7 -3
- package/src/apps/data/routes/earn.bench.ts +0 -14
- package/src/apps/data/routes/earn.discovery.test.ts +4 -39
- package/src/apps/data/routes/earn.local.test.ts +27 -34
- package/src/apps/data/routes/earn.test.ts +172 -490
- package/src/apps/data/routes/earn.ts +103 -652
- package/src/apps/data/routes/exchanges.ts +20 -30
- package/src/apps/data/routes/fee-amm.ts +12 -18
- package/src/apps/data/routes/indexer.test.ts +14 -12
- package/src/apps/data/routes/receipts.ts +1 -1
- package/src/apps/data/routes/rpc.test.ts +23 -18
- package/src/apps/data/routes/rpc.ts +21 -21
- package/src/apps/data/routes/rpc.zone.test.ts +60 -6
- package/src/apps/data/routes/tokenlist.ts +4 -6
- package/src/apps/data/routes/tokens.test.ts +20 -0
- package/src/apps/data/routes/tokens.ts +10 -5
- package/src/apps/data/routes/transactions.ts +3 -3
- package/src/apps/data/routes/transfers.ts +4 -6
- package/src/apps/data/routes/valuation.test.ts +2 -4
- package/src/apps/data/routes/valuation.ts +4 -6
- package/src/apps/data/routes/webhooks.test.ts +1 -5
- package/src/apps/data/routes/webhooks.ts +30 -44
- package/src/apps/data/routes/zones.test.ts +35 -19
- package/src/apps/management/App.ts +3 -1
- package/src/apps/management/routes/api-keys.test.ts +112 -22
- package/src/apps/management/routes/api-keys.ts +30 -15
- package/src/apps/management/routes/billing.ts +17 -25
- package/src/apps/management/routes/cli.ts +12 -18
- package/src/apps/management/routes/fee-payer-usage.ts +5 -4
- package/src/apps/management/routes/invitations.ts +16 -21
- package/src/apps/management/routes/invite-links.ts +18 -26
- package/src/apps/management/routes/me.ts +9 -13
- package/src/apps/management/routes/members.ts +5 -7
- package/src/apps/management/routes/orgs.ts +8 -12
- package/src/apps/management/routes/projects.ts +8 -12
- package/src/apps/management/routes/route-usage.ts +5 -4
- package/src/apps/management/routes/routes-access-requests.test.ts +64 -2
- package/src/apps/management/routes/routes-access-requests.ts +99 -15
- package/src/apps/management/routes/scopes.test.ts +3 -3
- package/src/apps/management/routes/usage.ts +20 -28
- package/src/apps/management/routes/verified-token-requests.ts +9 -13
- package/src/apps/management/routes/zone-delegations.test.ts +3 -5
- package/src/apps/management/routes/zone-delegations.ts +4 -9
- package/src/apps/mpp/App.ts +3 -3
- package/src/apps/mpp/Mpp.zone.test.ts +49 -18
- package/src/apps/mpp/internal/Adapter.ts +1 -1
- package/src/apps/mpp/internal/Error.test.ts +3 -0
- package/src/apps/mpp/internal/Error.ts +1 -0
- package/src/apps/mpp/internal/Policy.test.ts +9 -8
- package/src/apps/mpp/internal/Policy.ts +37 -14
- package/src/apps/relay/App.sandbox.test.ts +15 -14
- package/src/apps/relay/App.test.ts +120 -61
- package/src/apps/relay/App.ts +28 -18
- package/src/apps/relay/App.zone-billing.test.ts +9 -4
- package/src/apps/routes/App.test.ts +21 -22
- package/src/db/Db.ts +34 -3
- package/src/db/Schema.ts +26 -26
- package/src/db/tables/rewardRuns.ts +39 -0
- package/src/db/tables/routesAccessRequests.test.ts +65 -0
- package/src/db/tables/routesAccessRequests.ts +25 -0
- package/src/db/tables/{zoneKeyRequests.test.ts → zoneDelegationRequests.test.ts} +36 -77
- package/src/db/tables/{zoneKeyRequests.ts → zoneDelegationRequests.ts} +69 -52
- package/src/db/tables/zoneDelegations.test.ts +5 -6
- package/src/db/tables/zoneDelegations.ts +25 -8
- package/src/handlers/internal/{multisig.store.test.ts → accounts.store.test.ts} +16 -16
- package/src/handlers/internal/{multisig.test.ts → accounts.test.ts} +85 -82
- package/src/handlers/internal/{multisig.ts → accounts.ts} +9 -9
- package/src/handlers/internal/sponsorship.ts +20 -20
- package/src/handlers/relay.test.ts +48 -46
- package/src/handlers/relay.ts +26 -26
- package/src/internal/Auth.test.ts +6 -2
- package/src/internal/Auth.ts +4 -10
- package/src/internal/EarnRates.ts +4 -6
- package/src/internal/EarnVaults.ts +2 -2
- package/src/internal/Log.test-d.ts +1 -0
- package/src/internal/Log.test.ts +4 -6
- package/src/internal/Log.ts +2 -6
- package/src/internal/Response.ts +0 -3
- package/src/internal/Schema.test.ts +42 -0
- package/src/internal/Schema.ts +36 -1
- package/src/internal/ZoneAccess.test.ts +515 -312
- package/src/internal/ZoneAccess.ts +410 -158
- package/src/internal/ZoneDelegation.test.ts +1 -41
- package/src/internal/ZoneDelegation.ts +10 -48
- package/src/internal/ZoneDelegationApproval.test.ts +22 -0
- package/src/internal/{ZoneKeyApproval.ts → ZoneDelegationApproval.ts} +4 -11
- package/src/internal/ZoneKeyRewrite.ts +231 -0
- package/src/internal/rewards/Campaigns.ts +2 -0
- package/src/internal/rewards/Distributions.ts +8 -12
- package/src/internal/rewards/Monitor.test.ts +64 -0
- package/src/internal/rewards/Monitor.ts +27 -4
- package/src/internal/rewards/Runner.ts +9 -1
- package/src/internal/routes/Action.ts +5 -6
- package/src/internal/routes/Deposit.ts +8 -12
- package/src/internal/routes/DepositAddress.ts +13 -19
- package/src/internal/routes/Policy.ts +2 -1
- package/src/internal/routes/Provider.ts +8 -8
- package/src/internal/routes/Reconciliation.ts +3 -2
- package/src/internal/routes/Transfer.ts +16 -24
- package/src/internal/routes/UniversalDepositAddress.ts +9 -12
- package/src/internal/routes/providers/SquidOrder.ts +3 -2
- package/src/internal/routes/providers/relay.ts +4 -3
- package/dist/admin/apps/zone-key-requests.d.ts +0 -406
- package/dist/admin/apps/zone-key-requests.d.ts.map +0 -1
- package/dist/admin/apps/zone-key-requests.js +0 -183
- package/dist/admin/apps/zone-key-requests.js.map +0 -1
- package/dist/db/tables/zoneKeyRequests.d.ts +0 -289
- package/dist/db/tables/zoneKeyRequests.d.ts.map +0 -1
- package/dist/db/tables/zoneKeyRequests.js.map +0 -1
- package/dist/handlers/internal/multisig.d.ts +0 -7
- package/dist/handlers/internal/multisig.d.ts.map +0 -1
- package/dist/internal/ZoneKeyApproval.d.ts.map +0 -1
- package/dist/internal/ZoneKeyApproval.js +0 -21
- package/dist/internal/ZoneKeyApproval.js.map +0 -1
- package/src/admin/apps/zone-key-requests.test.ts +0 -272
- package/src/admin/apps/zone-key-requests.ts +0 -231
- package/src/internal/ZoneKeyApproval.test.ts +0 -46
|
@@ -1,289 +0,0 @@
|
|
|
1
|
-
import type { JSONColumnType } from 'kysely';
|
|
2
|
-
import * as ZoneKeyApproval from '../../internal/ZoneKeyApproval.js';
|
|
3
|
-
import type * as Db from '../Db.js';
|
|
4
|
-
import type * as Schema from '../Schema.js';
|
|
5
|
-
/** Persisted immutable request, without plaintext credentials. */
|
|
6
|
-
export type Table = Omit<Schema.ZoneKeyRequest, 'input'> & {
|
|
7
|
-
/** Validated settings persisted as JSON, never a plaintext credential. */
|
|
8
|
-
input: JSONColumnType<Schema.ZoneKeyRequest['input']>;
|
|
9
|
-
};
|
|
10
|
-
/** One unique approver's decision. */
|
|
11
|
-
export type ApprovalTable = Schema.ZoneKeyApproval;
|
|
12
|
-
/** Stores an immutable issuance request that expires after 24 hours. */
|
|
13
|
-
export declare function create(db: Db.Db, options: create.Options): Promise<{
|
|
14
|
-
createdAt: string;
|
|
15
|
-
expiresAt: string;
|
|
16
|
-
groupId: string;
|
|
17
|
-
id: string;
|
|
18
|
-
input: {
|
|
19
|
-
allowedIps?: readonly string[] | undefined;
|
|
20
|
-
billingActive?: boolean | undefined;
|
|
21
|
-
environment?: "production" | "sandbox" | undefined;
|
|
22
|
-
name?: string | undefined;
|
|
23
|
-
projectId?: string | undefined;
|
|
24
|
-
rateLimits?: Record<string, {
|
|
25
|
-
limit: number;
|
|
26
|
-
period: "minute" | "second";
|
|
27
|
-
}> | undefined;
|
|
28
|
-
zoneTags?: readonly number[] | undefined;
|
|
29
|
-
createdBy?: string | undefined;
|
|
30
|
-
expiresAt?: string | undefined;
|
|
31
|
-
orgId?: string | undefined;
|
|
32
|
-
scopes: readonly string[];
|
|
33
|
-
} & {
|
|
34
|
-
orgId: string;
|
|
35
|
-
};
|
|
36
|
-
keyId: string | null;
|
|
37
|
-
requesterEmail: string;
|
|
38
|
-
requesterId: string;
|
|
39
|
-
status: "cancelled" | "failed" | "issued" | "issuing" | "pending";
|
|
40
|
-
}>;
|
|
41
|
-
export declare namespace create {
|
|
42
|
-
/** Validated request and authenticated requester. */
|
|
43
|
-
type Options = {
|
|
44
|
-
/** Approver group pinned for this request. */
|
|
45
|
-
groupId: string;
|
|
46
|
-
/** Exact key settings reviewed by approvers. */
|
|
47
|
-
input: Schema.ZoneKeyRequest['input'];
|
|
48
|
-
/** Requester from the verified internal identity session. */
|
|
49
|
-
requester: ZoneKeyApproval.Member;
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
/** Reads a request and its recorded approvals. */
|
|
53
|
-
export declare function get(db: Db.Db, id: string): Promise<{
|
|
54
|
-
approvals: {
|
|
55
|
-
approvedAt: string;
|
|
56
|
-
approverEmail: string;
|
|
57
|
-
approverId: string;
|
|
58
|
-
createdAt: string;
|
|
59
|
-
expiresAt: string;
|
|
60
|
-
groupId: string;
|
|
61
|
-
id: string;
|
|
62
|
-
input: {
|
|
63
|
-
allowedIps?: readonly string[] | undefined;
|
|
64
|
-
billingActive?: boolean | undefined;
|
|
65
|
-
environment?: "production" | "sandbox" | undefined;
|
|
66
|
-
name?: string | undefined;
|
|
67
|
-
projectId?: string | undefined;
|
|
68
|
-
rateLimits?: Record<string, {
|
|
69
|
-
limit: number;
|
|
70
|
-
period: "minute" | "second";
|
|
71
|
-
}> | undefined;
|
|
72
|
-
zoneTags?: readonly number[] | undefined;
|
|
73
|
-
createdBy?: string | undefined;
|
|
74
|
-
expiresAt?: string | undefined;
|
|
75
|
-
orgId?: string | undefined;
|
|
76
|
-
scopes: readonly string[];
|
|
77
|
-
} & {
|
|
78
|
-
orgId: string;
|
|
79
|
-
};
|
|
80
|
-
keyId: string | null;
|
|
81
|
-
requestId: string;
|
|
82
|
-
requesterEmail: string;
|
|
83
|
-
requesterId: string;
|
|
84
|
-
status: "cancelled" | "failed" | "issued" | "issuing" | "pending";
|
|
85
|
-
}[];
|
|
86
|
-
createdAt: string;
|
|
87
|
-
expiresAt: string;
|
|
88
|
-
groupId: string;
|
|
89
|
-
id: string;
|
|
90
|
-
input: {
|
|
91
|
-
allowedIps?: readonly string[] | undefined;
|
|
92
|
-
billingActive?: boolean | undefined;
|
|
93
|
-
environment?: "production" | "sandbox" | undefined;
|
|
94
|
-
name?: string | undefined;
|
|
95
|
-
projectId?: string | undefined;
|
|
96
|
-
rateLimits?: Record<string, {
|
|
97
|
-
limit: number;
|
|
98
|
-
period: "minute" | "second";
|
|
99
|
-
}> | undefined;
|
|
100
|
-
zoneTags?: readonly number[] | undefined;
|
|
101
|
-
createdBy?: string | undefined;
|
|
102
|
-
expiresAt?: string | undefined;
|
|
103
|
-
orgId?: string | undefined;
|
|
104
|
-
scopes: readonly string[];
|
|
105
|
-
} & {
|
|
106
|
-
orgId: string;
|
|
107
|
-
};
|
|
108
|
-
keyId: string | null;
|
|
109
|
-
requesterEmail: string;
|
|
110
|
-
requesterId: string;
|
|
111
|
-
status: "cancelled" | "failed" | "issued" | "issuing" | "pending";
|
|
112
|
-
} | null>;
|
|
113
|
-
/** Lists requests newest first, one page at a time, so every request stays reachable. */
|
|
114
|
-
export declare function list(db: Db.Db, options?: list.Options): Promise<{
|
|
115
|
-
data: {
|
|
116
|
-
createdAt: string;
|
|
117
|
-
expiresAt: string;
|
|
118
|
-
groupId: string;
|
|
119
|
-
id: string;
|
|
120
|
-
input: {
|
|
121
|
-
allowedIps?: readonly string[] | undefined;
|
|
122
|
-
billingActive?: boolean | undefined;
|
|
123
|
-
environment?: "production" | "sandbox" | undefined;
|
|
124
|
-
name?: string | undefined;
|
|
125
|
-
projectId?: string | undefined;
|
|
126
|
-
rateLimits?: Record<string, {
|
|
127
|
-
limit: number;
|
|
128
|
-
period: "minute" | "second";
|
|
129
|
-
}> | undefined;
|
|
130
|
-
zoneTags?: readonly number[] | undefined;
|
|
131
|
-
createdBy?: string | undefined;
|
|
132
|
-
expiresAt?: string | undefined;
|
|
133
|
-
orgId?: string | undefined;
|
|
134
|
-
scopes: readonly string[];
|
|
135
|
-
} & {
|
|
136
|
-
orgId: string;
|
|
137
|
-
};
|
|
138
|
-
keyId: string | null;
|
|
139
|
-
requesterEmail: string;
|
|
140
|
-
requesterId: string;
|
|
141
|
-
status: "cancelled" | "failed" | "issued" | "issuing" | "pending";
|
|
142
|
-
}[];
|
|
143
|
-
nextCursor: string | null;
|
|
144
|
-
}>;
|
|
145
|
-
export declare namespace list {
|
|
146
|
-
type Options = {
|
|
147
|
-
/** Opaque position from the preceding page. */
|
|
148
|
-
cursor?: string | undefined;
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
/** Records one independent approval while serializing with issuance and cancellation. */
|
|
152
|
-
export declare function approve(db: Db.Db, options: approve.Options): Promise<{
|
|
153
|
-
approvals: {
|
|
154
|
-
approvedAt: string;
|
|
155
|
-
approverEmail: string;
|
|
156
|
-
approverId: string;
|
|
157
|
-
createdAt: string;
|
|
158
|
-
expiresAt: string;
|
|
159
|
-
groupId: string;
|
|
160
|
-
id: string;
|
|
161
|
-
input: {
|
|
162
|
-
allowedIps?: readonly string[] | undefined;
|
|
163
|
-
billingActive?: boolean | undefined;
|
|
164
|
-
environment?: "production" | "sandbox" | undefined;
|
|
165
|
-
name?: string | undefined;
|
|
166
|
-
projectId?: string | undefined;
|
|
167
|
-
rateLimits?: Record<string, {
|
|
168
|
-
limit: number;
|
|
169
|
-
period: "minute" | "second";
|
|
170
|
-
}> | undefined;
|
|
171
|
-
zoneTags?: readonly number[] | undefined;
|
|
172
|
-
createdBy?: string | undefined;
|
|
173
|
-
expiresAt?: string | undefined;
|
|
174
|
-
orgId?: string | undefined;
|
|
175
|
-
scopes: readonly string[];
|
|
176
|
-
} & {
|
|
177
|
-
orgId: string;
|
|
178
|
-
};
|
|
179
|
-
keyId: string | null;
|
|
180
|
-
requestId: string;
|
|
181
|
-
requesterEmail: string;
|
|
182
|
-
requesterId: string;
|
|
183
|
-
status: "cancelled" | "failed" | "issued" | "issuing" | "pending";
|
|
184
|
-
}[];
|
|
185
|
-
createdAt: string;
|
|
186
|
-
expiresAt: string;
|
|
187
|
-
groupId: string;
|
|
188
|
-
id: string;
|
|
189
|
-
input: {
|
|
190
|
-
allowedIps?: readonly string[] | undefined;
|
|
191
|
-
billingActive?: boolean | undefined;
|
|
192
|
-
environment?: "production" | "sandbox" | undefined;
|
|
193
|
-
name?: string | undefined;
|
|
194
|
-
projectId?: string | undefined;
|
|
195
|
-
rateLimits?: Record<string, {
|
|
196
|
-
limit: number;
|
|
197
|
-
period: "minute" | "second";
|
|
198
|
-
}> | undefined;
|
|
199
|
-
zoneTags?: readonly number[] | undefined;
|
|
200
|
-
createdBy?: string | undefined;
|
|
201
|
-
expiresAt?: string | undefined;
|
|
202
|
-
orgId?: string | undefined;
|
|
203
|
-
scopes: readonly string[];
|
|
204
|
-
} & {
|
|
205
|
-
orgId: string;
|
|
206
|
-
};
|
|
207
|
-
keyId: string | null;
|
|
208
|
-
requesterEmail: string;
|
|
209
|
-
requesterId: string;
|
|
210
|
-
status: "cancelled" | "failed" | "issued" | "issuing" | "pending";
|
|
211
|
-
} | null>;
|
|
212
|
-
export declare namespace approve {
|
|
213
|
-
/** Authenticated decision context. */
|
|
214
|
-
type Options = {
|
|
215
|
-
/** Currently configured approver group. */
|
|
216
|
-
groupId: string;
|
|
217
|
-
/** Request being approved. */
|
|
218
|
-
id: string;
|
|
219
|
-
/** Fetches current account and approval-group status without caching. */
|
|
220
|
-
lookup: ZoneKeyApproval.Lookup;
|
|
221
|
-
/** Identity from the current verified session. */
|
|
222
|
-
member: ZoneKeyApproval.Member | null;
|
|
223
|
-
};
|
|
224
|
-
}
|
|
225
|
-
/** Consumes approval once, before external KV writes, and reserves the resulting key id. */
|
|
226
|
-
export declare function claim(db: Db.Db, options: claim.Options): Promise<{
|
|
227
|
-
keyId: string;
|
|
228
|
-
createdAt: string;
|
|
229
|
-
expiresAt: string;
|
|
230
|
-
groupId: string;
|
|
231
|
-
id: string;
|
|
232
|
-
input: {
|
|
233
|
-
allowedIps?: readonly string[] | undefined;
|
|
234
|
-
billingActive?: boolean | undefined;
|
|
235
|
-
environment?: "production" | "sandbox" | undefined;
|
|
236
|
-
name?: string | undefined;
|
|
237
|
-
projectId?: string | undefined;
|
|
238
|
-
rateLimits?: Record<string, {
|
|
239
|
-
limit: number;
|
|
240
|
-
period: "minute" | "second";
|
|
241
|
-
}> | undefined;
|
|
242
|
-
zoneTags?: readonly number[] | undefined;
|
|
243
|
-
createdBy?: string | undefined;
|
|
244
|
-
expiresAt?: string | undefined;
|
|
245
|
-
orgId?: string | undefined;
|
|
246
|
-
scopes: readonly string[];
|
|
247
|
-
} & {
|
|
248
|
-
orgId: string;
|
|
249
|
-
};
|
|
250
|
-
requesterEmail: string;
|
|
251
|
-
requesterId: string;
|
|
252
|
-
status: "cancelled" | "failed" | "issued" | "issuing" | "pending";
|
|
253
|
-
}>;
|
|
254
|
-
export declare namespace claim {
|
|
255
|
-
/** Current requester session accompanying the one-time claim. */
|
|
256
|
-
type Options = approve.Options;
|
|
257
|
-
}
|
|
258
|
-
/** Records the terminal issuance outcome; a failed or interrupted claim cannot be replayed. */
|
|
259
|
-
export declare function finish(db: Db.Db, id: string, status: 'issued' | 'failed'): Promise<void>;
|
|
260
|
-
/** Cancels a pending request without needing quorum. */
|
|
261
|
-
export declare function cancel(db: Db.Db, id: string): Promise<{
|
|
262
|
-
createdAt: string;
|
|
263
|
-
expiresAt: string;
|
|
264
|
-
groupId: string;
|
|
265
|
-
id: string;
|
|
266
|
-
input: {
|
|
267
|
-
allowedIps?: readonly string[] | undefined;
|
|
268
|
-
billingActive?: boolean | undefined;
|
|
269
|
-
environment?: "production" | "sandbox" | undefined;
|
|
270
|
-
name?: string | undefined;
|
|
271
|
-
projectId?: string | undefined;
|
|
272
|
-
rateLimits?: Record<string, {
|
|
273
|
-
limit: number;
|
|
274
|
-
period: "minute" | "second";
|
|
275
|
-
}> | undefined;
|
|
276
|
-
zoneTags?: readonly number[] | undefined;
|
|
277
|
-
createdBy?: string | undefined;
|
|
278
|
-
expiresAt?: string | undefined;
|
|
279
|
-
orgId?: string | undefined;
|
|
280
|
-
scopes: readonly string[];
|
|
281
|
-
} & {
|
|
282
|
-
orgId: string;
|
|
283
|
-
};
|
|
284
|
-
keyId: string | null;
|
|
285
|
-
requesterEmail: string;
|
|
286
|
-
requesterId: string;
|
|
287
|
-
status: "cancelled" | "failed" | "issued" | "issuing" | "pending";
|
|
288
|
-
} | undefined>;
|
|
289
|
-
//# sourceMappingURL=zoneKeyRequests.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zoneKeyRequests.d.ts","sourceRoot":"","sources":["../../../src/db/tables/zoneKeyRequests.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zoneKeyRequests.js","sourceRoot":"","sources":["../../../src/db/tables/zoneKeyRequests.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { Store } from 'viem/tempo';
|
|
2
|
-
import type * as core_Store from '../../internal/Store.js';
|
|
3
|
-
/** Methods the relay answers through stored multisig coordination when a multisig store is configured. */
|
|
4
|
-
export declare const methods: Set<string>;
|
|
5
|
-
/** Adapts Tempo API state to Viem's atomic multisig store. */
|
|
6
|
-
export declare function fromStore(store: core_Store.State): Store.Atomic;
|
|
7
|
-
//# sourceMappingURL=multisig.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multisig.d.ts","sourceRoot":"","sources":["../../../src/handlers/internal/multisig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAElC,OAAO,KAAK,KAAK,UAAU,MAAM,yBAAyB,CAAA;AAE1D,0GAA0G;AAC1G,eAAO,MAAM,OAAO,aAUlB,CAAA;AAEF,8DAA8D;AAC9D,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAiB/D"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ZoneKeyApproval.d.ts","sourceRoot":"","sources":["../../src/internal/ZoneKeyApproval.ts"],"names":[],"mappings":"AAEA,0EAA0E;AAC1E,eAAO,MAAM,MAAM,IAAI,CAAA;AAEvB,+GAA+G;AAC/G,eAAO,MAAM,gBAAgB,QAAuB,CAAA;AAEpD,yEAAyE;AACzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAE3D;AAED,sFAAsF;AACtF,MAAM,MAAM,MAAM,GAAG;IACnB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAA;IACb,6EAA6E;IAC7E,QAAQ,EAAE,OAAO,CAAA;IACjB,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAA;IACjB,6EAA6E;IAC7E,EAAE,EAAE,MAAM,CAAA;CACX,CAAA;AAED,0EAA0E;AAC1E,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,IAAI,MAAM,CAE1E;AAED,4DAA4D;AAC5D,MAAM,MAAM,MAAM,GAAG;IACnB,oDAAoD;IACpD,MAAM,EAAE,OAAO,CAAA;IACf,2DAA2D;IAC3D,QAAQ,EAAE,OAAO,CAAA;IACjB,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAA;CACX,CAAA;AAED,8FAA8F;AAC9F,MAAM,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAA;AAE3E,+EAA+E;AAC/E,qBAAa,aAAc,SAAQ,KAAK;IAC7B,IAAI,SAAkC;IAC/C,YACE,OAAO,SAAmG,EAG3G;CACF"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import * as Scope from '../Scope.js';
|
|
2
|
-
/** Number of independent approvals required for Zone read credentials. */
|
|
3
|
-
export const quorum = 2;
|
|
4
|
-
/** Maximum lifetime of an approval, matching the request lifetime and bounded by its authenticated session. */
|
|
5
|
-
export const approvalLifetime = 24 * 60 * 60 * 1_000;
|
|
6
|
-
/** Returns whether scopes grant access subject to Zone read approval. */
|
|
7
|
-
export function required(scopes) {
|
|
8
|
-
return scopes.some((scope) => scope === '*' || Scope.parseZone(scope)?.verb === 'read');
|
|
9
|
-
}
|
|
10
|
-
/** Returns whether an authenticated identity's session is still valid. */
|
|
11
|
-
export function active(member) {
|
|
12
|
-
return Boolean(member?.id && member.email && Date.parse(member.expiresAt) > Date.now());
|
|
13
|
-
}
|
|
14
|
-
/** Expected rejection of a Zone key request or an unapproved issuance path. */
|
|
15
|
-
export class RequiredError extends Error {
|
|
16
|
-
name = 'ZoneKeyApproval.RequiredError';
|
|
17
|
-
constructor(message = 'Zone read keys require two independent group approvals through the admin key-request workflow.') {
|
|
18
|
-
super(message);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=ZoneKeyApproval.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ZoneKeyApproval.js","sourceRoot":"","sources":["../../src/internal/ZoneKeyApproval.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;AAEpC,0EAA0E;AAC1E,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAA;AAEvB,+GAA+G;AAC/G,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAA;AAEpD,yEAAyE;AACzE,MAAM,UAAU,QAAQ,CAAC,MAAyB;IAChD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,MAAM,CAAC,CAAA;AACzF,CAAC;AAcD,0EAA0E;AAC1E,MAAM,UAAU,MAAM,CAAC,MAAiC;IACtD,OAAO,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;AACzF,CAAC;AAeD,+EAA+E;AAC/E,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC7B,IAAI,GAAG,+BAA+B,CAAA;IAC/C,YACE,OAAO,GAAG,gGAAgG;QAE1G,KAAK,CAAC,OAAO,CAAC,CAAA;IAChB,CAAC;CACF"}
|
|
@@ -1,272 +0,0 @@
|
|
|
1
|
-
import * as ApiKeys from '../../ApiKeys.js'
|
|
2
|
-
import * as Metrics from '../../Metrics.js'
|
|
3
|
-
import * as Organizations from '../../db/tables/organizations.js'
|
|
4
|
-
import * as Requests from '../../db/tables/zoneKeyRequests.js'
|
|
5
|
-
import type * as ZoneKeyApproval from '../../internal/ZoneKeyApproval.js'
|
|
6
|
-
import * as TestAdmin from '../../../test/Admin.js'
|
|
7
|
-
|
|
8
|
-
describe('zoneKeyRequests', () => {
|
|
9
|
-
test('a lookup outage blocks issuance, preserves the request, and emits the failure metric', async () => {
|
|
10
|
-
const member = employee('requester', false)
|
|
11
|
-
const counts: Parameters<Metrics.Metrics['count']>[] = []
|
|
12
|
-
const { app, db, store } = TestAdmin.setup({
|
|
13
|
-
identify: () => member,
|
|
14
|
-
metrics: Metrics.from({
|
|
15
|
-
count(...parameters) {
|
|
16
|
-
counts.push(parameters)
|
|
17
|
-
},
|
|
18
|
-
flush() {},
|
|
19
|
-
gauge() {},
|
|
20
|
-
histogram() {},
|
|
21
|
-
}),
|
|
22
|
-
zoneKeyApproval: {
|
|
23
|
-
groupId,
|
|
24
|
-
identify: () => member,
|
|
25
|
-
lookup: async () => {
|
|
26
|
-
await fetch('http://127.0.0.1:1/unavailable')
|
|
27
|
-
return []
|
|
28
|
-
},
|
|
29
|
-
},
|
|
30
|
-
})
|
|
31
|
-
const org = await Organizations.create(db, { name: 'Zone outage' })
|
|
32
|
-
const request = await Requests.create(db, {
|
|
33
|
-
groupId,
|
|
34
|
-
input: { name: 'Zone read', orgId: org.id, scopes: ['zone:421700001:read'] },
|
|
35
|
-
requester: member,
|
|
36
|
-
})
|
|
37
|
-
for (const id of ['first', 'second'])
|
|
38
|
-
await Requests.approve(db, { groupId, id: request.id, lookup, member: employee(id, true) })
|
|
39
|
-
const response = await app.request(`/zone-key-requests/${request.id}/issue`, { method: 'POST' })
|
|
40
|
-
expect(response.status).toBe(502)
|
|
41
|
-
expect((await Requests.get(db, request.id))?.status).toBe('pending')
|
|
42
|
-
expect(await ApiKeys.list(store)).toEqual([])
|
|
43
|
-
expect(counts.filter(([name]) => name === 'zone_key_approval_failure_count')).toEqual([
|
|
44
|
-
['zone_key_approval_failure_count', 1],
|
|
45
|
-
])
|
|
46
|
-
expect((await app.request('/api-keys')).status).toBe(200)
|
|
47
|
-
})
|
|
48
|
-
|
|
49
|
-
test('ordinary staff retain general administration and can request but cannot approve Zone keys', async () => {
|
|
50
|
-
const member = employee('requester', false)
|
|
51
|
-
const { app, db, store } = TestAdmin.setup({
|
|
52
|
-
identify: () => member,
|
|
53
|
-
zoneKeyApproval: { lookup: (_request, ids) => lookup(ids), groupId, identify: () => member },
|
|
54
|
-
})
|
|
55
|
-
for (const path of ['/api-keys', '/organizations', '/audit-logs'])
|
|
56
|
-
expect((await app.request(path)).status).toBe(200)
|
|
57
|
-
const ordinary = await app.request('/api-keys', {
|
|
58
|
-
body: JSON.stringify({ name: 'Ordinary key', scopes: ['data:read'] }),
|
|
59
|
-
headers: { 'content-type': 'application/json' },
|
|
60
|
-
method: 'POST',
|
|
61
|
-
})
|
|
62
|
-
expect(ordinary.status).toBe(200)
|
|
63
|
-
const org = await Organizations.create(db, { name: 'Zone requester' })
|
|
64
|
-
const input = { name: 'Zone read', orgId: org.id, scopes: ['zone:421700001:read'] }
|
|
65
|
-
const created = await app.request('/zone-key-requests', {
|
|
66
|
-
body: JSON.stringify(input),
|
|
67
|
-
headers: { 'content-type': 'application/json' },
|
|
68
|
-
method: 'POST',
|
|
69
|
-
})
|
|
70
|
-
expect(created.status).toBe(201)
|
|
71
|
-
const request = await created.json()
|
|
72
|
-
const path = `/zone-key-requests/${request.id}`
|
|
73
|
-
expect((await app.request(`${path}/approve`, { method: 'POST' })).status).toBe(403)
|
|
74
|
-
expect((await app.request(`${path}/issue`, { method: 'POST' })).status).toBe(403)
|
|
75
|
-
const nonmember = employee('nonmember', false)
|
|
76
|
-
const { app: nonmemberApp } = TestAdmin.setup({
|
|
77
|
-
db,
|
|
78
|
-
identify: () => nonmember,
|
|
79
|
-
zoneKeyApproval: {
|
|
80
|
-
lookup: (_request, ids) => lookup(ids),
|
|
81
|
-
groupId,
|
|
82
|
-
identify: () => nonmember,
|
|
83
|
-
},
|
|
84
|
-
})
|
|
85
|
-
expect((await nonmemberApp.request(`${path}/approve`, { method: 'POST' })).status).toBe(403)
|
|
86
|
-
for (const id of ['first', 'second']) {
|
|
87
|
-
const reviewer = employee(id, true)
|
|
88
|
-
const { app: review } = TestAdmin.setup({
|
|
89
|
-
db,
|
|
90
|
-
identify: () => reviewer,
|
|
91
|
-
zoneKeyApproval: {
|
|
92
|
-
lookup: (_request, ids) => lookup(ids),
|
|
93
|
-
groupId,
|
|
94
|
-
identify: () => reviewer,
|
|
95
|
-
},
|
|
96
|
-
})
|
|
97
|
-
expect((await review.request(path)).status).toBe(200)
|
|
98
|
-
expect((await review.request(`${path}/approve`, { method: 'POST' })).status).toBe(200)
|
|
99
|
-
expect((await review.request(`${path}/issue`, { method: 'POST' })).status).toBe(403)
|
|
100
|
-
}
|
|
101
|
-
const issued = await app.request(`${path}/issue`, { method: 'POST' })
|
|
102
|
-
expect(issued.status).toBe(200)
|
|
103
|
-
const key = await issued.json()
|
|
104
|
-
expect(key.scopes).toEqual(input.scopes)
|
|
105
|
-
expect((await ApiKeys.resolve(store, key.token))?.id).toBe(key.id)
|
|
106
|
-
expect((await app.request(`${path}/issue`, { method: 'POST' })).status).toBe(403)
|
|
107
|
-
expect((await Requests.get(db, request.id))?.status).toBe('issued')
|
|
108
|
-
expect((await app.request(`/api-keys/${key.id}`, { method: 'DELETE' })).status).toBe(200)
|
|
109
|
-
expect(await ApiKeys.resolve(store, key.token)).toBeNull()
|
|
110
|
-
})
|
|
111
|
-
|
|
112
|
-
test('rejects missing, mismatched, and expired workflow identities without blocking other routes', async () => {
|
|
113
|
-
for (const member of [
|
|
114
|
-
null,
|
|
115
|
-
employee('different', true),
|
|
116
|
-
{ ...employee('admin', true), expiresAt: new Date().toISOString() },
|
|
117
|
-
]) {
|
|
118
|
-
const { app } = TestAdmin.setup({
|
|
119
|
-
zoneKeyApproval: {
|
|
120
|
-
lookup: (_request, ids) => lookup(ids),
|
|
121
|
-
groupId,
|
|
122
|
-
identify: () => member,
|
|
123
|
-
},
|
|
124
|
-
})
|
|
125
|
-
expect((await app.request('/zone-key-requests')).status).toBe(401)
|
|
126
|
-
expect((await app.request('/api-keys')).status).toBe(200)
|
|
127
|
-
}
|
|
128
|
-
})
|
|
129
|
-
|
|
130
|
-
test('requires admin authentication and fails closed until configured', async () => {
|
|
131
|
-
const anonymous = TestAdmin.setup({ identify: () => null })
|
|
132
|
-
expect((await anonymous.app.request('/zone-key-requests')).status).toBe(401)
|
|
133
|
-
const { app } = TestAdmin.setup()
|
|
134
|
-
const response = await app.request('/zone-key-requests')
|
|
135
|
-
expect(response.status).toBe(503)
|
|
136
|
-
expect((await response.json()).error.code).toBe('zone_key_approval_unconfigured')
|
|
137
|
-
})
|
|
138
|
-
|
|
139
|
-
test('requires a verified internal session for the approval workflow', async () => {
|
|
140
|
-
const { app } = TestAdmin.setup({
|
|
141
|
-
zoneKeyApproval: {
|
|
142
|
-
lookup: (_request, ids) => lookup(ids),
|
|
143
|
-
groupId: 'app-tempo-api-zone-issuers',
|
|
144
|
-
identify: () => null,
|
|
145
|
-
},
|
|
146
|
-
})
|
|
147
|
-
expect((await app.request('/zone-key-requests')).status).toBe(401)
|
|
148
|
-
})
|
|
149
|
-
|
|
150
|
-
test('pages through every request newest first', async () => {
|
|
151
|
-
const member = employee('requester', false)
|
|
152
|
-
const { app, db } = TestAdmin.setup({
|
|
153
|
-
identify: () => member,
|
|
154
|
-
zoneKeyApproval: { groupId, identify: () => member, lookup: (_request, ids) => lookup(ids) },
|
|
155
|
-
})
|
|
156
|
-
const created = []
|
|
157
|
-
for (let index = 0; index < 51; index++)
|
|
158
|
-
created.push(
|
|
159
|
-
await Requests.create(db, {
|
|
160
|
-
groupId,
|
|
161
|
-
input: {
|
|
162
|
-
name: `Zone read ${index}`,
|
|
163
|
-
orgId: 'org_fixture',
|
|
164
|
-
scopes: ['zone:421700001:read'],
|
|
165
|
-
},
|
|
166
|
-
requester: member,
|
|
167
|
-
}),
|
|
168
|
-
)
|
|
169
|
-
const first = await (await app.request('/zone-key-requests')).json()
|
|
170
|
-
expect(first.data).toHaveLength(50)
|
|
171
|
-
expect(first.nextCursor).toEqual(expect.any(String))
|
|
172
|
-
const second = await (
|
|
173
|
-
await app.request(`/zone-key-requests?cursor=${encodeURIComponent(first.nextCursor)}`)
|
|
174
|
-
).json()
|
|
175
|
-
expect(second.nextCursor).toBeNull()
|
|
176
|
-
expect(
|
|
177
|
-
[...first.data, ...second.data].map((request: { id: string }) => request.id).sort(),
|
|
178
|
-
).toEqual(created.map((request) => request.id).sort())
|
|
179
|
-
expect((await app.request('/zone-key-requests?cursor=invalid')).status).toBe(400)
|
|
180
|
-
})
|
|
181
|
-
|
|
182
|
-
test('reports approver group membership in the bootstrap config', async () => {
|
|
183
|
-
const counts: Parameters<Metrics.Metrics['count']>[] = []
|
|
184
|
-
const cases: readonly [ZoneKeyIdentify, boolean | null][] = [
|
|
185
|
-
[() => employee('approver', true), true],
|
|
186
|
-
[() => employee('approver', false), false],
|
|
187
|
-
[() => employee('approver', true, -1), false],
|
|
188
|
-
[() => ({ ...employee('approver', true), email: 'other@tempo.xyz' }), false],
|
|
189
|
-
[() => null, false],
|
|
190
|
-
[
|
|
191
|
-
() => {
|
|
192
|
-
throw new Error('not authenticated')
|
|
193
|
-
},
|
|
194
|
-
null,
|
|
195
|
-
],
|
|
196
|
-
]
|
|
197
|
-
for (const [identify, expected] of cases) {
|
|
198
|
-
const { app } = TestAdmin.setup({
|
|
199
|
-
identify: () => ({ email: 'approver@tempo.xyz' }),
|
|
200
|
-
metrics: Metrics.from({
|
|
201
|
-
count(...parameters) {
|
|
202
|
-
counts.push(parameters)
|
|
203
|
-
},
|
|
204
|
-
flush() {},
|
|
205
|
-
gauge() {},
|
|
206
|
-
histogram() {},
|
|
207
|
-
}),
|
|
208
|
-
zoneKeyApproval: { groupId, identify, lookup: (_request, ids) => lookup(ids) },
|
|
209
|
-
})
|
|
210
|
-
const config = await (await app.request('/config.json')).json()
|
|
211
|
-
expect(config.auth.zoneKeyApprover).toBe(expected)
|
|
212
|
-
}
|
|
213
|
-
expect(counts.filter(([name]) => name === 'zone_key_approval_failure_count')).toEqual([
|
|
214
|
-
['zone_key_approval_failure_count', 1],
|
|
215
|
-
])
|
|
216
|
-
})
|
|
217
|
-
|
|
218
|
-
test('rejects cross-origin approval mutations', async () => {
|
|
219
|
-
const { app } = TestAdmin.setup()
|
|
220
|
-
const response = await app.request('/zone-key-requests/zkr_fixture/approve', {
|
|
221
|
-
headers: { origin: 'https://other.example' },
|
|
222
|
-
method: 'POST',
|
|
223
|
-
})
|
|
224
|
-
expect(response.status).toBe(403)
|
|
225
|
-
expect((await response.json()).error.code).toBe('forbidden')
|
|
226
|
-
})
|
|
227
|
-
|
|
228
|
-
test('direct admin creation, rotation, and elevation cannot grant protected scopes', async () => {
|
|
229
|
-
const { app, store } = TestAdmin.setup()
|
|
230
|
-
for (const scopes of [['zone:421700001:read'], ['*']]) {
|
|
231
|
-
const response = await app.request('/api-keys', {
|
|
232
|
-
body: JSON.stringify({ name: 'Protected', scopes }),
|
|
233
|
-
headers: { 'content-type': 'application/json' },
|
|
234
|
-
method: 'POST',
|
|
235
|
-
})
|
|
236
|
-
expect(response.status).toBe(403)
|
|
237
|
-
expect((await response.json()).error.code).toBe('zone_key_approval_required')
|
|
238
|
-
}
|
|
239
|
-
const source = await ApiKeys.mint(store, { scopes: ['zone:421700001:read'] })
|
|
240
|
-
const rotation = await app.request(`/api-keys/${source.record.id}/rotate`, { method: 'POST' })
|
|
241
|
-
expect(rotation.status).toBe(403)
|
|
242
|
-
const unprivileged = await ApiKeys.mint(store, { scopes: ['data:read'] })
|
|
243
|
-
const update = await app.request(`/api-keys/${unprivileged.record.id}`, {
|
|
244
|
-
body: JSON.stringify({ scopes: ['zone:421700001:read'] }),
|
|
245
|
-
headers: { 'content-type': 'application/json' },
|
|
246
|
-
method: 'PATCH',
|
|
247
|
-
})
|
|
248
|
-
expect(update.status).toBe(403)
|
|
249
|
-
expect((await ApiKeys.get(store, unprivileged.record.id))?.scopes).toEqual(['data:read'])
|
|
250
|
-
})
|
|
251
|
-
})
|
|
252
|
-
|
|
253
|
-
const groupId = 'app-tempo-api-zone-issuers'
|
|
254
|
-
|
|
255
|
-
type ZoneKeyIdentify = () => ZoneKeyApproval.Member | null
|
|
256
|
-
|
|
257
|
-
function employee(id: string, eligible: boolean, hours = 1): ZoneKeyApproval.Member {
|
|
258
|
-
return {
|
|
259
|
-
email: `${id}@tempo.xyz`,
|
|
260
|
-
eligible,
|
|
261
|
-
expiresAt: new Date(Date.now() + hours * 3_600_000).toISOString(),
|
|
262
|
-
id: `employee_${id}`,
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
async function lookup(ids: readonly string[]): Promise<ZoneKeyApproval.Status[]> {
|
|
267
|
-
return ids.map((id) => ({
|
|
268
|
-
active: true,
|
|
269
|
-
eligible: id !== 'employee_requester' && id !== 'employee_nonmember',
|
|
270
|
-
id,
|
|
271
|
-
}))
|
|
272
|
-
}
|