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
|
@@ -34,6 +34,7 @@ export async function upsert(db, options) {
|
|
|
34
34
|
slug,
|
|
35
35
|
updatedAt: now,
|
|
36
36
|
vaultAddress: normalize(options.vaultAddress),
|
|
37
|
+
zones: JSON.stringify(normalizeZones(options.zones)),
|
|
37
38
|
})
|
|
38
39
|
.onConflict((oc) => oc.columns(['chainId', 'vaultAddress']).doUpdateSet({
|
|
39
40
|
description: options.description,
|
|
@@ -42,6 +43,7 @@ export async function upsert(db, options) {
|
|
|
42
43
|
privateOutputTokens: JSON.stringify(options.privateOutputTokens),
|
|
43
44
|
...(options.slug !== undefined ? { slug } : {}),
|
|
44
45
|
updatedAt: now,
|
|
46
|
+
zones: JSON.stringify(normalizeZones(options.zones)),
|
|
45
47
|
}))
|
|
46
48
|
.returningAll()
|
|
47
49
|
.executeTakeFirstOrThrow();
|
|
@@ -69,4 +71,7 @@ function toRecord(row) {
|
|
|
69
71
|
function normalize(address) {
|
|
70
72
|
return address.toLowerCase();
|
|
71
73
|
}
|
|
74
|
+
function normalizeZones(zones) {
|
|
75
|
+
return zones.map((zone) => ({ ...zone, earnRouter: normalize(zone.earnRouter) }));
|
|
76
|
+
}
|
|
72
77
|
//# sourceMappingURL=earnVaults.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"earnVaults.js","sourceRoot":"","sources":["../../../src/db/tables/earnVaults.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAA;AAMvC,MAAM,UAAU,GAAG,cAAc,CAAC,sCAAsC,EAAE,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"earnVaults.js","sourceRoot":"","sources":["../../../src/db/tables/earnVaults.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAA;AAMvC,MAAM,UAAU,GAAG,cAAc,CAAC,sCAAsC,EAAE,CAAC,CAAC,CAAA;AAoB5E,0DAA0D;AAC1D,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,EAAS,EAAE,OAAoB;IACvD,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,MAAM;SACxB,UAAU,CAAC,aAAa,CAAC;SACzB,SAAS,EAAE;SACX,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SAC9C,KAAK,CAAC,cAAc,EAAE,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;SAC3D,gBAAgB,EAAE,CAAA;IACrB,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACxC,CAAC;AAYD,8DAA8D;AAC9D,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,EAAS,EAAE,OAAO,GAAiB,EAAE;IAC9D,IAAI,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,SAAS,EAAE,CAAA;IAC3D,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;QAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;IAC/F,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAA;IAC3F,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;AAC3B,CAAC;AAUD,sFAAsF;AACtF,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,EAAS,EAAE,OAAuB;IAC7D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACpC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,UAAU,EAAE,EAAE,CAAA;IACtE,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,MAAM;SACxB,UAAU,CAAC,aAAa,CAAC;SACzB,MAAM,CAAC;QACN,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,SAAS,EAAE,GAAG;QACd,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAC9D,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC;QAChE,IAAI;QACJ,SAAS,EAAE,GAAG;QACd,YAAY,EAAE,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC;QAC7C,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACrD,CAAC;SACD,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CACjB,EAAE,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC;QAClD,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAC9D,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC;QAChE,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,SAAS,EAAE,GAAG;QACd,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACrD,CAAC,CACH;SACA,YAAY,EAAE;SACd,uBAAuB,EAAE,CAAA;IAC5B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAA;AACtB,CAAC;AAwBD,iCAAiC;AACjC,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,EAAS,EAAE,OAAuB;IAC7D,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,MAAM;SACxB,UAAU,CAAC,aAAa,CAAC;SACzB,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SAC9C,KAAK,CAAC,cAAc,EAAE,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;SAC3D,YAAY,EAAE;SACd,gBAAgB,EAAE,CAAA;IACrB,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACxC,CAAC;AAYD,SAAS,KAAK,CAAC,KAAa;IAC1B,OAAO,CACL,KAAK;SACF,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,OAAO,CACpC,CAAA;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,GAAsB;IACtC,OAAO,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAA;AACjD,CAAC;AAED,SAAS,SAAS,CAAC,OAAe;IAChC,OAAO,OAAO,CAAC,WAAW,EAAa,CAAA;AACzC,CAAC;AAED,SAAS,cAAc,CAAC,KAAmC;IACzD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA;AACnF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhookDeliveries.d.ts","sourceRoot":"","sources":["../../../src/db/tables/webhookDeliveries.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"webhookDeliveries.d.ts","sourceRoot":"","sources":["../../../src/db/tables/webhookDeliveries.ts"],"names":[],"mappings":"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"}
|
|
@@ -138,6 +138,9 @@ export async function get(db, subscriptionId, deliveryId, now) {
|
|
|
138
138
|
.executeTakeFirst();
|
|
139
139
|
return row ? toDelivery(row) : null;
|
|
140
140
|
}
|
|
141
|
+
// Per-statement delete bound: prune runs every minute, so a backlog drains in
|
|
142
|
+
// a few ticks instead of one unbounded DELETE churning the origin.
|
|
143
|
+
const pruneBatchLimit = 50_000;
|
|
141
144
|
/**
|
|
142
145
|
* Deletes deliveries past their retention deadline. Called best-effort from
|
|
143
146
|
* the poller tick.
|
|
@@ -149,7 +152,14 @@ export async function get(db, subscriptionId, deliveryId, now) {
|
|
|
149
152
|
export async function pruneExpired(db, now) {
|
|
150
153
|
const result = await db.kysely
|
|
151
154
|
.deleteFrom('webhook_deliveries')
|
|
155
|
+
// Repeated on the outer delete: the row recheck under concurrency re-runs
|
|
156
|
+
// only this predicate, so a row renewed mid-statement survives.
|
|
152
157
|
.where('expiresAt', '<=', now)
|
|
158
|
+
.where('id', 'in', (eb) => eb
|
|
159
|
+
.selectFrom('webhook_deliveries')
|
|
160
|
+
.select('id')
|
|
161
|
+
.where('expiresAt', '<=', now)
|
|
162
|
+
.limit(pruneBatchLimit))
|
|
153
163
|
.executeTakeFirst();
|
|
154
164
|
return Number(result.numDeletedRows);
|
|
155
165
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhookDeliveries.js","sourceRoot":"","sources":["../../../src/db/tables/webhookDeliveries.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"webhookDeliveries.js","sourceRoot":"","sources":["../../../src/db/tables/webhookDeliveries.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type * as Webhooks from '../../internal/Webhooks.js';
|
|
2
|
+
import type * as Db from '../Db.js';
|
|
3
|
+
import type * as db_Schema from '../Schema.js';
|
|
4
|
+
/** Columns of the `webhook_queue_completions` table, derived from `Schema.WebhookQueueCompletion`. */
|
|
5
|
+
export type Table = db_Schema.WebhookQueueCompletion;
|
|
6
|
+
/** A terminal delivery-obligation outcome. */
|
|
7
|
+
export type TerminalStatus = db_Schema.WebhookQueueCompletion['status'];
|
|
8
|
+
/**
|
|
9
|
+
* Reads the unexpired completion for a reference, if any. Rows are written by
|
|
10
|
+
* the queue-event terminal transition and only ever read for dedupe.
|
|
11
|
+
*/
|
|
12
|
+
export declare function get(db: Db.Db, reference: Webhooks.QueueReference, now: string): Promise<Table | null>;
|
|
13
|
+
/** Deletes expired completions, bounded per call; expiry is filtered at query time, so pruning is space-only. */
|
|
14
|
+
export declare function pruneExpired(db: Db.Db, now: string): Promise<number>;
|
|
15
|
+
//# sourceMappingURL=webhookQueueCompletions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhookQueueCompletions.d.ts","sourceRoot":"","sources":["../../../src/db/tables/webhookQueueCompletions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,QAAQ,MAAM,4BAA4B,CAAA;AAC3D,OAAO,KAAK,KAAK,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,KAAK,KAAK,SAAS,MAAM,cAAc,CAAA;AAE9C,sGAAsG;AACtG,MAAM,MAAM,KAAK,GAAG,SAAS,CAAC,sBAAsB,CAAA;AAEpD,8CAA8C;AAC9C,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAA;AAEvE;;;GAGG;AACH,wBAAsB,GAAG,CACvB,EAAE,EAAE,EAAE,CAAC,EAAE,EACT,SAAS,EAAE,QAAQ,CAAC,cAAc,EAClC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAUvB;AAMD,iHAAiH;AACjH,wBAAsB,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmB1E"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads the unexpired completion for a reference, if any. Rows are written by
|
|
3
|
+
* the queue-event terminal transition and only ever read for dedupe.
|
|
4
|
+
*/
|
|
5
|
+
export async function get(db, reference, now) {
|
|
6
|
+
return ((await db.kysely
|
|
7
|
+
.selectFrom('webhook_queue_completions')
|
|
8
|
+
.selectAll()
|
|
9
|
+
.where('eventId', '=', reference.eventId)
|
|
10
|
+
.where('subscriptionId', '=', reference.subscriptionId)
|
|
11
|
+
.where('expiresAt', '>', now)
|
|
12
|
+
.executeTakeFirst()) ?? null);
|
|
13
|
+
}
|
|
14
|
+
// Per-statement delete bound: prune runs every minute, so a backlog drains in
|
|
15
|
+
// a few ticks instead of one unbounded DELETE churning the origin.
|
|
16
|
+
const pruneBatchLimit = 50_000;
|
|
17
|
+
/** Deletes expired completions, bounded per call; expiry is filtered at query time, so pruning is space-only. */
|
|
18
|
+
export async function pruneExpired(db, now) {
|
|
19
|
+
const result = await db.kysely
|
|
20
|
+
.deleteFrom('webhook_queue_completions')
|
|
21
|
+
// Repeated on the outer delete: the row recheck under concurrency re-runs
|
|
22
|
+
// only this predicate, so a completion renewed mid-statement survives.
|
|
23
|
+
.where('expiresAt', '<=', now)
|
|
24
|
+
.where(({ eb, refTuple, selectFrom }) => eb(refTuple('subscriptionId', 'eventId'), 'in', selectFrom('webhook_queue_completions')
|
|
25
|
+
.select(['subscriptionId', 'eventId'])
|
|
26
|
+
.where('expiresAt', '<=', now)
|
|
27
|
+
.limit(pruneBatchLimit)
|
|
28
|
+
.$asTuple('subscriptionId', 'eventId')))
|
|
29
|
+
.executeTakeFirst();
|
|
30
|
+
return Number(result.numDeletedRows);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=webhookQueueCompletions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhookQueueCompletions.js","sourceRoot":"","sources":["../../../src/db/tables/webhookQueueCompletions.ts"],"names":[],"mappings":"AAUA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,GAAG,CACvB,EAAS,EACT,SAAkC,EAClC,GAAW;IAEX,OAAO,CACL,CAAC,MAAM,EAAE,CAAC,MAAM;SACb,UAAU,CAAC,2BAA2B,CAAC;SACvC,SAAS,EAAE;SACX,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC;SACxC,KAAK,CAAC,gBAAgB,EAAE,GAAG,EAAE,SAAS,CAAC,cAAc,CAAC;SACtD,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,CAAC;SAC5B,gBAAgB,EAAE,CAAC,IAAI,IAAI,CAC/B,CAAA;AACH,CAAC;AAED,8EAA8E;AAC9E,mEAAmE;AACnE,MAAM,eAAe,GAAG,MAAM,CAAA;AAE9B,iHAAiH;AACjH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EAAS,EAAE,GAAW;IACvD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM;SAC3B,UAAU,CAAC,2BAA2B,CAAC;QACxC,0EAA0E;QAC1E,uEAAuE;SACtE,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC;SAC7B,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,CACtC,EAAE,CACA,QAAQ,CAAC,gBAAgB,EAAE,SAAS,CAAC,EACrC,IAAI,EACJ,UAAU,CAAC,2BAA2B,CAAC;SACpC,MAAM,CAAC,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;SACrC,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC;SAC7B,KAAK,CAAC,eAAe,CAAC;SACtB,QAAQ,CAAC,gBAAgB,EAAE,SAAS,CAAC,CACzC,CACF;SACA,gBAAgB,EAAE,CAAA;IACrB,OAAO,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;AACtC,CAAC"}
|
|
@@ -1,32 +1,34 @@
|
|
|
1
1
|
import { type Generated, type Insertable, type Selectable } from 'kysely';
|
|
2
2
|
import type * as Webhooks from '../../internal/Webhooks.js';
|
|
3
3
|
import type * as Db from '../Db.js';
|
|
4
|
+
import * as WebhookQueueCompletions from './webhookQueueCompletions.js';
|
|
4
5
|
import type * as db_Schema from '../Schema.js';
|
|
5
6
|
/** Columns of the `webhook_queue_events` table, derived from `Schema.WebhookQueueEvent`. */
|
|
6
|
-
export type Table = Omit<db_Schema.WebhookQueueEvent, 'attemptCount' | 'attemptingAt' | 'nextAttemptAt' | 'status'> & {
|
|
7
|
+
export type Table = Omit<db_Schema.WebhookQueueEvent, 'attemptCount' | 'attemptingAt' | 'expiresAt' | 'nextAttemptAt' | 'observedAt' | 'status'> & {
|
|
7
8
|
/** Delivery attempts claimed so far; database default 0. */
|
|
8
9
|
attemptCount: Generated<number>;
|
|
9
10
|
/** ISO timestamp of the current claim; database default null. */
|
|
10
11
|
attemptingAt: Generated<string | null>;
|
|
12
|
+
/** Legacy dedupe deadline; unwritten since completions took over. */
|
|
13
|
+
expiresAt: Generated<string | null>;
|
|
11
14
|
/** ISO retry due time; database default null (due immediately). */
|
|
12
15
|
nextAttemptAt: Generated<string | null>;
|
|
16
|
+
/** ISO head-observation stamp; database default null (replays carry none). */
|
|
17
|
+
observedAt: Generated<string | null>;
|
|
13
18
|
/** Delivery-obligation lifecycle status; database default `pending`. */
|
|
14
19
|
status: Generated<db_Schema.WebhookQueueEvent['status']>;
|
|
15
20
|
};
|
|
16
21
|
/** A stored webhook Queue event. */
|
|
17
22
|
export type Record = Selectable<Table>;
|
|
18
|
-
/** A terminal delivery-obligation outcome. */
|
|
19
|
-
export type TerminalStatus = Exclude<db_Schema.WebhookQueueEvent['status'], 'pending'>;
|
|
20
23
|
/**
|
|
21
|
-
* Reads one pending envelope.
|
|
22
|
-
*
|
|
24
|
+
* Reads one pending envelope. The status filter only ever excludes rows
|
|
25
|
+
* completed before the completions split; completions now leave the table.
|
|
23
26
|
*/
|
|
24
27
|
export declare function get(db: Db.Db, reference: Webhooks.QueueReference): Promise<Webhooks.QueueEvent | null>;
|
|
25
28
|
/**
|
|
26
|
-
* Stages envelopes as fresh obligations.
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* dedupe row pruning has not yet reclaimed never blocks a replay.
|
|
29
|
+
* Stages envelopes as fresh obligations. Unexpired completions and any
|
|
30
|
+
* existing row suppress the replay; a replay stages only when neither exists,
|
|
31
|
+
* which a completion past its dedupe window guarantees for completed work.
|
|
30
32
|
*/
|
|
31
33
|
export declare function ensure(db: Db.Db, rows: readonly Insertable<Table>[]): Promise<number>;
|
|
32
34
|
/** Claims one due pending obligation with a single atomic update. */
|
|
@@ -51,13 +53,13 @@ export declare namespace claim {
|
|
|
51
53
|
nextAttemptAt: string | null;
|
|
52
54
|
type: 'scheduled';
|
|
53
55
|
} | {
|
|
54
|
-
status: TerminalStatus;
|
|
56
|
+
status: WebhookQueueCompletions.TerminalStatus;
|
|
55
57
|
type: 'terminal';
|
|
56
58
|
};
|
|
57
59
|
}
|
|
58
60
|
/**
|
|
59
|
-
* Marks a claimed obligation terminal
|
|
60
|
-
*
|
|
61
|
+
* Marks a claimed obligation terminal: one atomic statement deletes the queue
|
|
62
|
+
* row and writes the insert-only completion that starts the dedupe window.
|
|
61
63
|
* The `attemptingAt` predicate fences stale claimants.
|
|
62
64
|
*/
|
|
63
65
|
export declare function complete(db: Db.Db, reference: Webhooks.QueueReference, options: complete.Options): Promise<boolean>;
|
|
@@ -66,10 +68,10 @@ export declare namespace complete {
|
|
|
66
68
|
type Options = {
|
|
67
69
|
/** Claim marker returned by {@link claim}; fences stale claimants. */
|
|
68
70
|
claimedAt: string;
|
|
69
|
-
/**
|
|
71
|
+
/** ISO retention deadline for the dedupe completion. */
|
|
70
72
|
expiresAt: string;
|
|
71
73
|
/** Terminal outcome. */
|
|
72
|
-
status: TerminalStatus;
|
|
74
|
+
status: WebhookQueueCompletions.TerminalStatus;
|
|
73
75
|
};
|
|
74
76
|
}
|
|
75
77
|
/** Releases a claim and schedules the next attempt; fenced like {@link complete}. */
|
|
@@ -113,10 +115,4 @@ export declare namespace pending {
|
|
|
113
115
|
oldestDueAt: string | null;
|
|
114
116
|
};
|
|
115
117
|
}
|
|
116
|
-
/**
|
|
117
|
-
* Deletes terminal dedupe rows past their retention deadline. Pending rows
|
|
118
|
-
* never expire: owed work drains only through terminal transitions
|
|
119
|
-
* (delivery, permanent failure, or the skip after auto-disable).
|
|
120
|
-
*/
|
|
121
|
-
export declare function pruneExpired(db: Db.Db, now: string): Promise<number>;
|
|
122
118
|
//# sourceMappingURL=webhookQueueEvents.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhookQueueEvents.d.ts","sourceRoot":"","sources":["../../../src/db/tables/webhookQueueEvents.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAO,MAAM,QAAQ,CAAA;AAEtG,OAAO,KAAK,KAAK,QAAQ,MAAM,4BAA4B,CAAA;AAC3D,OAAO,KAAK,KAAK,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,KAAK,KAAK,SAAS,MAAM,cAAc,CAAA;AAE9C,4FAA4F;AAC5F,MAAM,MAAM,KAAK,GAAG,IAAI,CACtB,SAAS,CAAC,iBAAiB,EAC3B,cAAc,GAAG,cAAc,GAAG,eAAe,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"webhookQueueEvents.d.ts","sourceRoot":"","sources":["../../../src/db/tables/webhookQueueEvents.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAO,MAAM,QAAQ,CAAA;AAEtG,OAAO,KAAK,KAAK,QAAQ,MAAM,4BAA4B,CAAA;AAC3D,OAAO,KAAK,KAAK,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,KAAK,uBAAuB,MAAM,8BAA8B,CAAA;AACvE,OAAO,KAAK,KAAK,SAAS,MAAM,cAAc,CAAA;AAE9C,4FAA4F;AAC5F,MAAM,MAAM,KAAK,GAAG,IAAI,CACtB,SAAS,CAAC,iBAAiB,EAC3B,cAAc,GAAG,cAAc,GAAG,WAAW,GAAG,eAAe,GAAG,YAAY,GAAG,QAAQ,CAC1F,GAAG;IACF,4DAA4D;IAC5D,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;IAC/B,iEAAiE;IACjE,YAAY,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACtC,qEAAqE;IACrE,SAAS,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACnC,mEAAmE;IACnE,aAAa,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACvC,8EAA8E;IAC9E,UAAU,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACpC,wEAAwE;IACxE,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAA;CACzD,CAAA;AAED,oCAAoC;AACpC,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;AAEtC;;;GAGG;AACH,wBAAsB,GAAG,CACvB,EAAE,EAAE,EAAE,CAAC,EAAE,EACT,SAAS,EAAE,QAAQ,CAAC,cAAc,GACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,CAUrC;AAED;;;;GAIG;AACH,wBAAsB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,UAAU,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA+C3F;AAcD,qEAAqE;AACrE,wBAAsB,KAAK,CACzB,EAAE,EAAE,EAAE,CAAC,EAAE,EACT,SAAS,EAAE,QAAQ,CAAC,cAAc,EAClC,OAAO,EAAE,KAAK,CAAC,OAAO,GACrB,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAgCvB;AAED,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,0BAA0B;IAC1B,KAAK,OAAO,GAAG;QACb,uDAAuD;QACvD,GAAG,EAAE,MAAM,CAAA;QACX,gEAAgE;QAChE,WAAW,EAAE,MAAM,CAAA;KACpB,CAAA;IAED,4BAA4B;IAC5B,KAAK,MAAM,GACP;QAAE,IAAI,EAAE,YAAY,CAAA;KAAE,GACtB;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE,GACnC;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,GACnB;QAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,EAAE,WAAW,CAAA;KAAE,GACnD;QAAE,MAAM,EAAE,uBAAuB,CAAC,cAAc,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,CAAA;CACzE;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAC5B,EAAE,EAAE,EAAE,CAAC,EAAE,EACT,SAAS,EAAE,QAAQ,CAAC,cAAc,EAClC,OAAO,EAAE,QAAQ,CAAC,OAAO,GACxB,OAAO,CAAC,OAAO,CAAC,CAkClB;AAED,MAAM,CAAC,OAAO,WAAW,QAAQ,CAAC;IAChC,kCAAkC;IAClC,KAAK,OAAO,GAAG;QACb,sEAAsE;QACtE,SAAS,EAAE,MAAM,CAAA;QACjB,wDAAwD;QACxD,SAAS,EAAE,MAAM,CAAA;QACjB,wBAAwB;QACxB,MAAM,EAAE,uBAAuB,CAAC,cAAc,CAAA;KAC/C,CAAA;CACF;AAED,qFAAqF;AACrF,wBAAsB,QAAQ,CAC5B,EAAE,EAAE,EAAE,CAAC,EAAE,EACT,SAAS,EAAE,QAAQ,CAAC,cAAc,EAClC,OAAO,EAAE,QAAQ,CAAC,OAAO,GACxB,OAAO,CAAC,OAAO,CAAC,CAUlB;AAED,MAAM,CAAC,OAAO,WAAW,QAAQ,CAAC;IAChC,+BAA+B;IAC/B,KAAK,OAAO,GAAG;QACb,sEAAsE;QACtE,SAAS,EAAE,MAAM,CAAA;QACjB,wCAAwC;QACxC,aAAa,EAAE,MAAM,CAAA;KACtB,CAAA;CACF;AAED,wEAAwE;AACxE,wBAAsB,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,CAW7F;AAED,MAAM,CAAC,OAAO,WAAW,GAAG,CAAC;IAC3B,oBAAoB;IACpB,KAAK,OAAO,GAAG;QACb,oCAAoC;QACpC,KAAK,EAAE,MAAM,CAAA;QACb,6BAA6B;QAC7B,GAAG,EAAE,MAAM,CAAA;QACX,gEAAgE;QAChE,WAAW,EAAE,MAAM,CAAA;KACpB,CAAA;CACF;AAED,gFAAgF;AAChF,wBAAsB,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAyB1F;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,4EAA4E;IAC5E,KAAK,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,GAAG,aAAa,CAAC,CAAA;IAEzD,6BAA6B;IAC7B,KAAK,MAAM,GAAG;QACZ,6EAA6E;QAC7E,KAAK,EAAE,MAAM,CAAA;QACb,qEAAqE;QACrE,QAAQ,EAAE,MAAM,CAAA;QAChB,2DAA2D;QAC3D,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;QACvB,sFAAsF;QACtF,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;KAC3B,CAAA;CACF"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { sql } from 'kysely'; // prettier-ignore
|
|
2
|
+
import * as WebhookQueueCompletions from './webhookQueueCompletions.js';
|
|
2
3
|
/**
|
|
3
|
-
* Reads one pending envelope.
|
|
4
|
-
*
|
|
4
|
+
* Reads one pending envelope. The status filter only ever excludes rows
|
|
5
|
+
* completed before the completions split; completions now leave the table.
|
|
5
6
|
*/
|
|
6
7
|
export async function get(db, reference) {
|
|
7
8
|
return ((await db.kysely
|
|
@@ -13,35 +14,44 @@ export async function get(db, reference) {
|
|
|
13
14
|
.executeTakeFirst()) ?? null);
|
|
14
15
|
}
|
|
15
16
|
/**
|
|
16
|
-
* Stages envelopes as fresh obligations.
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* dedupe row pruning has not yet reclaimed never blocks a replay.
|
|
17
|
+
* Stages envelopes as fresh obligations. Unexpired completions and any
|
|
18
|
+
* existing row suppress the replay; a replay stages only when neither exists,
|
|
19
|
+
* which a completion past its dedupe window guarantees for completed work.
|
|
20
20
|
*/
|
|
21
21
|
export async function ensure(db, rows) {
|
|
22
22
|
if (rows.length === 0)
|
|
23
23
|
return 0;
|
|
24
|
+
const values = sql.join(rows.map((row) => sql `(${row.subscriptionId}::text, ${row.eventId}::text, ${JSON.stringify(row.envelope)}::jsonb, ${row.createdAt}::text, ${row.nextAttemptAt ?? null}::text, ${row.observedAt ?? null}::text)`));
|
|
25
|
+
// The VALUES source is raw because kysely has no table constructor for it,
|
|
26
|
+
// but both real tables stay in the builder so WithSchemaPlugin qualifies
|
|
27
|
+
// them (previews isolate by schema; raw identifiers would escape it). The
|
|
28
|
+
// completion check must ride the insert: a separate read would let a
|
|
29
|
+
// completion commit between the statements and re-stage just-finished work.
|
|
30
|
+
// `column1..6` are Postgres's default VALUES names, in the row order above;
|
|
31
|
+
// the window comparison uses each row's own staging time, not a shared clock.
|
|
32
|
+
// Conflicts only ever hit pending rows (or pre-split terminal rows during
|
|
33
|
+
// the drain), and both suppress the replay; a legitimate post-expiry replay
|
|
34
|
+
// meets no conflict because its completed row was deleted.
|
|
24
35
|
const result = await db.kysely
|
|
25
36
|
.insertInto('webhook_queue_events')
|
|
26
|
-
.
|
|
27
|
-
.
|
|
28
|
-
.
|
|
29
|
-
.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
.
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
.columns(['subscriptionId', 'eventId', 'envelope', 'createdAt', 'nextAttemptAt', 'observedAt'])
|
|
38
|
+
.expression((eb) => eb
|
|
39
|
+
.selectFrom(sql `(VALUES ${values})`.as('v'))
|
|
40
|
+
.select([
|
|
41
|
+
sql `v.column1`.as('subscriptionId'),
|
|
42
|
+
sql `v.column2`.as('eventId'),
|
|
43
|
+
sql `v.column3`.as('envelope'),
|
|
44
|
+
sql `v.column4`.as('createdAt'),
|
|
45
|
+
sql `v.column5`.as('nextAttemptAt'),
|
|
46
|
+
sql `v.column6`.as('observedAt'),
|
|
47
|
+
])
|
|
48
|
+
.where(({ exists, not, selectFrom }) => not(exists(selectFrom('webhook_queue_completions')
|
|
49
|
+
.select('eventId')
|
|
50
|
+
.where('subscriptionId', '=', sql `v.column1`)
|
|
51
|
+
.where('eventId', '=', sql `v.column2`)
|
|
52
|
+
.where('expiresAt', '>', sql `v.column4`)))))
|
|
53
|
+
.onConflict((oc) => oc.columns(['subscriptionId', 'eventId']).doNothing())
|
|
42
54
|
.executeTakeFirst();
|
|
43
|
-
// The command tag counts inserted rows plus replaced expired rows; live
|
|
44
|
-
// conflicts fall out of the conditional update and are not counted.
|
|
45
55
|
return Number(result.numInsertedOrUpdatedRows ?? 0n);
|
|
46
56
|
}
|
|
47
57
|
/** Due, unclaimed pending work: shared by {@link claim} and {@link due}. */
|
|
@@ -64,14 +74,24 @@ export async function claim(db, reference, options) {
|
|
|
64
74
|
.executeTakeFirst();
|
|
65
75
|
if (claimed)
|
|
66
76
|
return { record: claimed, type: 'claimed' };
|
|
77
|
+
// Queue first, completions second: a complete() landing between the reads
|
|
78
|
+
// then still surfaces its completion, so a finished obligation never reads
|
|
79
|
+
// as missing, the one claim outcome alerts treat as a fault.
|
|
67
80
|
const existing = await db.kysely
|
|
68
81
|
.selectFrom('webhook_queue_events')
|
|
69
82
|
.select(['attemptingAt', 'nextAttemptAt', 'status'])
|
|
70
83
|
.where('subscriptionId', '=', reference.subscriptionId)
|
|
71
84
|
.where('eventId', '=', reference.eventId)
|
|
72
85
|
.executeTakeFirst();
|
|
73
|
-
if (!existing)
|
|
86
|
+
if (!existing) {
|
|
87
|
+
// An unexpired completion reads as terminal so claim-outcome metrics keep
|
|
88
|
+
// their meaning; an expired one reads as missing, like a pruned row.
|
|
89
|
+
const completed = await WebhookQueueCompletions.get(db, reference, options.now);
|
|
90
|
+
if (completed)
|
|
91
|
+
return { status: completed.status, type: 'terminal' };
|
|
74
92
|
return { type: 'missing' };
|
|
93
|
+
}
|
|
94
|
+
// Reachable only for rows completed before the completions split.
|
|
75
95
|
if (existing.status !== 'pending')
|
|
76
96
|
return { status: existing.status, type: 'terminal' };
|
|
77
97
|
if (existing.attemptingAt !== null && existing.attemptingAt > options.staleBefore)
|
|
@@ -79,20 +99,38 @@ export async function claim(db, reference, options) {
|
|
|
79
99
|
return { nextAttemptAt: existing.nextAttemptAt, type: 'scheduled' };
|
|
80
100
|
}
|
|
81
101
|
/**
|
|
82
|
-
* Marks a claimed obligation terminal
|
|
83
|
-
*
|
|
102
|
+
* Marks a claimed obligation terminal: one atomic statement deletes the queue
|
|
103
|
+
* row and writes the insert-only completion that starts the dedupe window.
|
|
84
104
|
* The `attemptingAt` predicate fences stale claimants.
|
|
85
105
|
*/
|
|
86
106
|
export async function complete(db, reference, options) {
|
|
87
107
|
const result = await db.kysely
|
|
88
|
-
.
|
|
89
|
-
.
|
|
108
|
+
.with('done', (qb) => qb
|
|
109
|
+
.deleteFrom('webhook_queue_events')
|
|
90
110
|
.where('subscriptionId', '=', reference.subscriptionId)
|
|
91
111
|
.where('eventId', '=', reference.eventId)
|
|
92
112
|
.where('status', '=', 'pending')
|
|
93
113
|
.where('attemptingAt', '=', options.claimedAt)
|
|
114
|
+
.returning(['subscriptionId', 'eventId']))
|
|
115
|
+
.insertInto('webhook_queue_completions')
|
|
116
|
+
.columns(['subscriptionId', 'eventId', 'status', 'expiresAt'])
|
|
117
|
+
.expression((eb) => eb
|
|
118
|
+
.selectFrom('done')
|
|
119
|
+
.select((s) => [
|
|
120
|
+
'subscriptionId',
|
|
121
|
+
'eventId',
|
|
122
|
+
s.val(options.status).as('status'),
|
|
123
|
+
s.val(options.expiresAt).as('expiresAt'),
|
|
124
|
+
]))
|
|
125
|
+
// Re-completing a replayed obligation: the latest delivery outcome wins
|
|
126
|
+
// and retention restarts, matching pre-split replay semantics; doNothing
|
|
127
|
+
// would also report zero rows and fail a fence that won.
|
|
128
|
+
.onConflict((oc) => oc.columns(['subscriptionId', 'eventId']).doUpdateSet((eb) => ({
|
|
129
|
+
expiresAt: eb.ref('excluded.expiresAt'),
|
|
130
|
+
status: eb.ref('excluded.status'),
|
|
131
|
+
})))
|
|
94
132
|
.executeTakeFirst();
|
|
95
|
-
return result.
|
|
133
|
+
return result.numInsertedOrUpdatedRows === 1n;
|
|
96
134
|
}
|
|
97
135
|
/** Releases a claim and schedules the next attempt; fenced like {@link complete}. */
|
|
98
136
|
export async function schedule(db, reference, options) {
|
|
@@ -144,17 +182,4 @@ export async function pending(db, options) {
|
|
|
144
182
|
oldestDueAt: row.oldestDueAt,
|
|
145
183
|
};
|
|
146
184
|
}
|
|
147
|
-
/**
|
|
148
|
-
* Deletes terminal dedupe rows past their retention deadline. Pending rows
|
|
149
|
-
* never expire: owed work drains only through terminal transitions
|
|
150
|
-
* (delivery, permanent failure, or the skip after auto-disable).
|
|
151
|
-
*/
|
|
152
|
-
export async function pruneExpired(db, now) {
|
|
153
|
-
const result = await db.kysely
|
|
154
|
-
.deleteFrom('webhook_queue_events')
|
|
155
|
-
.where('expiresAt', '<=', now)
|
|
156
|
-
.where('status', '!=', 'pending')
|
|
157
|
-
.executeTakeFirst();
|
|
158
|
-
return Number(result.numDeletedRows);
|
|
159
|
-
}
|
|
160
185
|
//# sourceMappingURL=webhookQueueEvents.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhookQueueEvents.js","sourceRoot":"","sources":["../../../src/db/tables/webhookQueueEvents.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4E,GAAG,EAAE,MAAM,QAAQ,CAAA,CAAC,kBAAkB;
|
|
1
|
+
{"version":3,"file":"webhookQueueEvents.js","sourceRoot":"","sources":["../../../src/db/tables/webhookQueueEvents.ts"],"names":[],"mappings":"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"}
|