tapimo 0.0.2 → 0.2.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 +38 -16
- package/dist/ApiKey.d.ts +14 -11
- package/dist/ApiKey.d.ts.map +1 -1
- package/dist/ApiKey.js +11 -12
- package/dist/ApiKey.js.map +1 -1
- package/dist/ApiKeys.d.ts +207 -0
- package/dist/ApiKeys.d.ts.map +1 -0
- package/dist/ApiKeys.js +282 -0
- package/dist/ApiKeys.js.map +1 -0
- package/dist/App.d.ts +6771 -3819
- package/dist/App.d.ts.map +1 -1
- package/dist/App.js +145 -317
- package/dist/App.js.map +1 -1
- package/dist/Handler.d.ts +86 -0
- package/dist/Handler.d.ts.map +1 -0
- package/dist/Handler.js +83 -0
- package/dist/Handler.js.map +1 -0
- package/dist/Scope.d.ts +14 -4
- package/dist/Scope.d.ts.map +1 -1
- package/dist/Scope.js +16 -4
- package/dist/Scope.js.map +1 -1
- package/dist/Webhooks.d.ts +5 -7
- package/dist/Webhooks.d.ts.map +1 -1
- package/dist/Webhooks.js +11 -4
- package/dist/Webhooks.js.map +1 -1
- package/dist/admin/Access.d.ts +1 -3
- package/dist/admin/Access.d.ts.map +1 -1
- package/dist/admin/Access.js +1 -3
- package/dist/admin/Access.js.map +1 -1
- package/dist/admin/App.d.ts +167 -205
- package/dist/admin/App.d.ts.map +1 -1
- package/dist/admin/App.js +2 -4
- package/dist/admin/App.js.map +1 -1
- package/dist/admin/apps/api-keys.d.ts +105 -5
- package/dist/admin/apps/api-keys.d.ts.map +1 -1
- package/dist/admin/apps/api-keys.js +75 -9
- package/dist/admin/apps/api-keys.js.map +1 -1
- package/dist/admin/apps/scopes.d.ts +6 -0
- package/dist/admin/apps/scopes.d.ts.map +1 -1
- package/dist/admin/apps/verified-tokens.d.ts +35 -149
- package/dist/admin/apps/verified-tokens.d.ts.map +1 -1
- package/dist/admin/apps/verified-tokens.js +18 -39
- package/dist/admin/apps/verified-tokens.js.map +1 -1
- package/dist/admin/ui.generated.d.ts +1 -1
- package/dist/admin/ui.generated.js +1 -1
- package/dist/apps/data/App.d.ts +19176 -0
- package/dist/apps/data/App.d.ts.map +1 -0
- package/dist/apps/data/App.js +236 -0
- package/dist/apps/data/App.js.map +1 -0
- package/dist/apps/data/index.d.ts +3 -0
- package/dist/apps/data/index.d.ts.map +1 -0
- package/dist/apps/data/index.js +3 -0
- package/dist/apps/data/index.js.map +1 -0
- package/dist/apps/{activities.d.ts → data/routes/activities.d.ts} +32 -32
- package/dist/apps/{activities.d.ts.map → data/routes/activities.d.ts.map} +1 -1
- package/dist/apps/{activities.js → data/routes/activities.js} +13 -13
- package/dist/apps/data/routes/activities.js.map +1 -0
- package/dist/apps/{addresses.d.ts → data/routes/addresses.d.ts} +22 -22
- package/dist/apps/{addresses.d.ts.map → data/routes/addresses.d.ts.map} +1 -1
- package/dist/apps/{addresses.js → data/routes/addresses.js} +5 -5
- package/dist/apps/data/routes/addresses.js.map +1 -0
- package/dist/apps/{balances.d.ts → data/routes/balances.d.ts} +49 -49
- package/dist/apps/data/routes/balances.d.ts.map +1 -0
- package/dist/apps/{balances.js → data/routes/balances.js} +42 -11
- package/dist/apps/data/routes/balances.js.map +1 -0
- package/dist/apps/{blocks.d.ts → data/routes/blocks.d.ts} +47 -47
- package/dist/apps/data/routes/blocks.d.ts.map +1 -0
- package/dist/apps/{blocks.js → data/routes/blocks.js} +13 -13
- package/dist/apps/data/routes/blocks.js.map +1 -0
- package/dist/apps/{coingecko.d.ts → data/routes/coingecko.d.ts} +183 -183
- package/dist/apps/data/routes/coingecko.d.ts.map +1 -0
- package/dist/apps/{coingecko.js → data/routes/coingecko.js} +13 -13
- package/dist/apps/data/routes/coingecko.js.map +1 -0
- package/dist/apps/{exchanges.d.ts → data/routes/exchanges.d.ts} +460 -460
- package/dist/apps/data/routes/exchanges.d.ts.map +1 -0
- package/dist/apps/{exchanges.js → data/routes/exchanges.js} +19 -19
- package/dist/apps/data/routes/exchanges.js.map +1 -0
- package/dist/apps/{fee-amm.d.ts → data/routes/fee-amm.d.ts} +94 -94
- package/dist/apps/data/routes/fee-amm.d.ts.map +1 -0
- package/dist/apps/{fee-amm.js → data/routes/fee-amm.js} +17 -17
- package/dist/apps/data/routes/fee-amm.js.map +1 -0
- package/dist/apps/{indexer.d.ts → data/routes/indexer.d.ts} +4 -4
- package/dist/apps/data/routes/indexer.d.ts.map +1 -0
- package/dist/apps/{indexer.js → data/routes/indexer.js} +13 -9
- package/dist/apps/data/routes/indexer.js.map +1 -0
- package/dist/apps/{receipts.d.ts → data/routes/receipts.d.ts} +6 -6
- package/dist/apps/data/routes/receipts.d.ts.map +1 -0
- package/dist/apps/{receipts.js → data/routes/receipts.js} +12 -12
- package/dist/apps/data/routes/receipts.js.map +1 -0
- package/dist/apps/{rpc.d.ts → data/routes/rpc.d.ts} +4 -4
- package/dist/apps/data/routes/rpc.d.ts.map +1 -0
- package/dist/apps/{rpc.js → data/routes/rpc.js} +6 -6
- package/dist/apps/data/routes/rpc.js.map +1 -0
- package/dist/apps/{tokenlist.d.ts → data/routes/tokenlist.d.ts} +4 -4
- package/dist/apps/data/routes/tokenlist.d.ts.map +1 -0
- package/dist/apps/{tokenlist.js → data/routes/tokenlist.js} +8 -8
- package/dist/apps/data/routes/tokenlist.js.map +1 -0
- package/dist/apps/{tokens.d.ts → data/routes/tokens.d.ts} +11 -11
- package/dist/apps/data/routes/tokens.d.ts.map +1 -0
- package/dist/apps/{tokens.js → data/routes/tokens.js} +19 -19
- package/dist/apps/data/routes/tokens.js.map +1 -0
- package/dist/apps/{transactions.d.ts → data/routes/transactions.d.ts} +288 -288
- package/dist/apps/data/routes/transactions.d.ts.map +1 -0
- package/dist/apps/{transactions.js → data/routes/transactions.js} +13 -13
- package/dist/apps/data/routes/transactions.js.map +1 -0
- package/dist/apps/{transfers.d.ts → data/routes/transfers.d.ts} +35 -35
- package/dist/apps/data/routes/transfers.d.ts.map +1 -0
- package/dist/apps/{transfers.js → data/routes/transfers.js} +13 -13
- package/dist/apps/data/routes/transfers.js.map +1 -0
- package/dist/apps/{verified-tokens.d.ts → data/routes/verified-tokens.d.ts} +42 -42
- package/dist/apps/data/routes/verified-tokens.d.ts.map +1 -0
- package/dist/apps/{verified-tokens.js → data/routes/verified-tokens.js} +9 -9
- package/dist/apps/data/routes/verified-tokens.js.map +1 -0
- package/dist/apps/{webhooks.d.ts → data/routes/webhooks.d.ts} +66 -63
- package/dist/apps/{webhooks.d.ts.map → data/routes/webhooks.d.ts.map} +1 -1
- package/dist/apps/{webhooks.js → data/routes/webhooks.js} +67 -59
- package/dist/apps/data/routes/webhooks.js.map +1 -0
- package/dist/apps/docs/App.d.ts +27 -0
- package/dist/apps/docs/App.d.ts.map +1 -0
- package/dist/apps/docs/App.js +122 -0
- package/dist/apps/docs/App.js.map +1 -0
- package/dist/{internal/OpenApi.fonts.d.ts → apps/docs/fonts.d.ts} +1 -1
- package/dist/apps/docs/fonts.d.ts.map +1 -0
- package/dist/{internal/OpenApi.fonts.js → apps/docs/fonts.js} +1 -1
- package/dist/apps/docs/fonts.js.map +1 -0
- package/dist/apps/docs/index.d.ts +2 -0
- package/dist/apps/docs/index.d.ts.map +1 -0
- package/dist/apps/docs/index.js +2 -0
- package/dist/apps/docs/index.js.map +1 -0
- package/dist/{internal/OpenApi.logo.d.ts → apps/docs/logo.d.ts} +1 -1
- package/dist/apps/docs/logo.d.ts.map +1 -0
- package/dist/{internal/OpenApi.logo.js → apps/docs/logo.js} +1 -1
- package/dist/apps/docs/logo.js.map +1 -0
- package/dist/apps/index.d.ts +4 -0
- package/dist/apps/index.d.ts.map +1 -0
- package/dist/apps/index.js +4 -0
- package/dist/apps/index.js.map +1 -0
- package/dist/apps/metadata.d.ts +7 -0
- package/dist/apps/metadata.d.ts.map +1 -0
- package/dist/apps/metadata.js +15 -0
- package/dist/apps/metadata.js.map +1 -0
- package/dist/apps/platform/App.d.ts +2985 -0
- package/dist/apps/platform/App.d.ts.map +1 -0
- package/dist/apps/platform/App.js +74 -0
- package/dist/apps/platform/App.js.map +1 -0
- package/dist/apps/platform/index.d.ts +2 -0
- package/dist/apps/platform/index.d.ts.map +1 -0
- package/dist/apps/platform/index.js +2 -0
- package/dist/apps/platform/index.js.map +1 -0
- package/dist/apps/platform/routes/api-keys.d.ts +681 -0
- package/dist/apps/platform/routes/api-keys.d.ts.map +1 -0
- package/dist/apps/platform/routes/api-keys.js +328 -0
- package/dist/apps/platform/routes/api-keys.js.map +1 -0
- package/dist/apps/platform/routes/invitations.d.ts +733 -0
- package/dist/apps/platform/routes/invitations.d.ts.map +1 -0
- package/dist/apps/platform/routes/invitations.js +413 -0
- package/dist/apps/platform/routes/invitations.js.map +1 -0
- package/dist/apps/platform/routes/me.d.ts +95 -0
- package/dist/apps/platform/routes/me.d.ts.map +1 -0
- package/dist/apps/platform/routes/me.js +81 -0
- package/dist/apps/platform/routes/me.js.map +1 -0
- package/dist/apps/platform/routes/members.d.ts +554 -0
- package/dist/apps/platform/routes/members.d.ts.map +1 -0
- package/dist/apps/platform/routes/members.js +251 -0
- package/dist/apps/platform/routes/members.js.map +1 -0
- package/dist/apps/platform/routes/orgs.d.ts +582 -0
- package/dist/apps/platform/routes/orgs.d.ts.map +1 -0
- package/dist/apps/platform/routes/orgs.js +265 -0
- package/dist/apps/platform/routes/orgs.js.map +1 -0
- package/dist/apps/platform/routes/projects.d.ts +740 -0
- package/dist/apps/platform/routes/projects.d.ts.map +1 -0
- package/dist/apps/platform/routes/projects.js +286 -0
- package/dist/apps/platform/routes/projects.js.map +1 -0
- package/dist/apps/relay/App.d.ts +41 -0
- package/dist/apps/relay/App.d.ts.map +1 -0
- package/dist/apps/relay/App.js +103 -0
- package/dist/apps/relay/App.js.map +1 -0
- package/dist/apps/relay/Sponsorships.d.ts +107 -0
- package/dist/apps/relay/Sponsorships.d.ts.map +1 -0
- package/dist/apps/relay/Sponsorships.js +193 -0
- package/dist/apps/relay/Sponsorships.js.map +1 -0
- package/dist/apps/relay/index.d.ts +3 -0
- package/dist/apps/relay/index.d.ts.map +1 -0
- package/dist/apps/relay/index.js +3 -0
- package/dist/apps/relay/index.js.map +1 -0
- package/dist/{Cli.d.ts → cli/Cli.d.ts} +13 -2
- package/dist/cli/Cli.d.ts.map +1 -0
- package/dist/cli/Cli.js +19 -0
- package/dist/cli/Cli.js.map +1 -0
- package/dist/cli/bin.d.ts +3 -0
- package/dist/cli/bin.d.ts.map +1 -0
- package/dist/cli/bin.js +4 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/commands/admin.d.ts +15 -0
- package/dist/cli/commands/admin.d.ts.map +1 -0
- package/dist/cli/commands/admin.js +60 -0
- package/dist/cli/commands/admin.js.map +1 -0
- package/dist/cloudflare.d.ts +7 -0
- package/dist/cloudflare.d.ts.map +1 -1
- package/dist/cloudflare.js +9 -0
- package/dist/cloudflare.js.map +1 -1
- package/dist/db/Db.d.ts +113 -0
- package/dist/db/Db.d.ts.map +1 -0
- package/dist/db/Db.js +402 -0
- package/dist/db/Db.js.map +1 -0
- package/dist/db/Schema.d.ts +168 -0
- package/dist/db/Schema.d.ts.map +1 -0
- package/dist/db/Schema.js +229 -0
- package/dist/db/Schema.js.map +1 -0
- package/dist/db/tables/invitations.d.ts +84 -0
- package/dist/db/tables/invitations.d.ts.map +1 -0
- package/dist/db/tables/invitations.js +165 -0
- package/dist/db/tables/invitations.js.map +1 -0
- package/dist/db/tables/memberships.d.ts +108 -0
- package/dist/db/tables/memberships.d.ts.map +1 -0
- package/dist/db/tables/memberships.js +153 -0
- package/dist/db/tables/memberships.js.map +1 -0
- package/dist/db/tables/organizations.d.ts +123 -0
- package/dist/db/tables/organizations.d.ts.map +1 -0
- package/dist/db/tables/organizations.js +170 -0
- package/dist/db/tables/organizations.js.map +1 -0
- package/dist/db/tables/projects.d.ts +65 -0
- package/dist/db/tables/projects.d.ts.map +1 -0
- package/dist/db/tables/projects.js +75 -0
- package/dist/db/tables/projects.js.map +1 -0
- package/dist/db/tables/sponsoredTransactions.d.ts +120 -0
- package/dist/db/tables/sponsoredTransactions.d.ts.map +1 -0
- package/dist/db/tables/sponsoredTransactions.js +161 -0
- package/dist/db/tables/sponsoredTransactions.js.map +1 -0
- package/dist/db/tables/users.d.ts +48 -0
- package/dist/db/tables/users.d.ts.map +1 -0
- package/dist/db/tables/users.js +65 -0
- package/dist/db/tables/users.js.map +1 -0
- package/dist/db/tables/verifiedTokens.d.ts +53 -0
- package/dist/db/tables/verifiedTokens.d.ts.map +1 -0
- package/dist/db/tables/verifiedTokens.js +74 -0
- package/dist/db/tables/verifiedTokens.js.map +1 -0
- package/dist/db/tables/webhookDeliveries.d.ts +71 -0
- package/dist/db/tables/webhookDeliveries.d.ts.map +1 -0
- package/dist/db/tables/webhookDeliveries.js +119 -0
- package/dist/db/tables/webhookDeliveries.js.map +1 -0
- package/dist/db/tables/webhookSubscriptions.d.ts +158 -0
- package/dist/db/tables/webhookSubscriptions.d.ts.map +1 -0
- package/dist/db/tables/webhookSubscriptions.js +272 -0
- package/dist/db/tables/webhookSubscriptions.js.map +1 -0
- package/dist/handlers/internal/executionError.d.ts +25 -0
- package/dist/handlers/internal/executionError.d.ts.map +1 -0
- package/dist/handlers/internal/executionError.js +186 -0
- package/dist/handlers/internal/executionError.js.map +1 -0
- package/dist/handlers/internal/multisig.d.ts +233 -0
- package/dist/handlers/internal/multisig.d.ts.map +1 -0
- package/dist/handlers/internal/multisig.js +542 -0
- package/dist/handlers/internal/multisig.js.map +1 -0
- package/dist/handlers/internal/requestListener.d.ts +124 -0
- package/dist/handlers/internal/requestListener.d.ts.map +1 -0
- package/dist/handlers/internal/requestListener.js +173 -0
- package/dist/handlers/internal/requestListener.js.map +1 -0
- package/dist/handlers/internal/sponsorship.d.ts +113 -0
- package/dist/handlers/internal/sponsorship.d.ts.map +1 -0
- package/dist/handlers/internal/sponsorship.js +128 -0
- package/dist/handlers/internal/sponsorship.js.map +1 -0
- package/dist/handlers/internal/types.d.ts +284 -0
- package/dist/handlers/internal/types.d.ts.map +1 -0
- package/dist/handlers/internal/types.js +2 -0
- package/dist/handlers/internal/types.js.map +1 -0
- package/dist/handlers/internal/utils.d.ts +34 -0
- package/dist/handlers/internal/utils.d.ts.map +1 -0
- package/dist/handlers/internal/utils.js +131 -0
- package/dist/handlers/internal/utils.js.map +1 -0
- package/dist/handlers/relay.d.ts +123 -0
- package/dist/handlers/relay.d.ts.map +1 -0
- package/dist/handlers/relay.js +1278 -0
- package/dist/handlers/relay.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/internal/Auth.d.ts +224 -16
- package/dist/internal/Auth.d.ts.map +1 -1
- package/dist/internal/Auth.js +572 -33
- package/dist/internal/Auth.js.map +1 -1
- package/dist/internal/Log.d.ts +7 -3
- package/dist/internal/Log.d.ts.map +1 -1
- package/dist/internal/Log.js +4 -0
- package/dist/internal/Log.js.map +1 -1
- package/dist/internal/OpenApi.d.ts +0 -19
- package/dist/internal/OpenApi.d.ts.map +1 -1
- package/dist/internal/OpenApi.js +0 -57
- package/dist/internal/OpenApi.js.map +1 -1
- package/dist/internal/RpcSchema.d.ts +10 -0
- package/dist/internal/RpcSchema.d.ts.map +1 -0
- package/dist/internal/RpcSchema.js +2 -0
- package/dist/internal/RpcSchema.js.map +1 -0
- package/dist/internal/Store.d.ts +49 -4
- package/dist/internal/Store.d.ts.map +1 -1
- package/dist/internal/Store.js +81 -5
- package/dist/internal/Store.js.map +1 -1
- package/dist/internal/VerifiedTokens.d.ts +15 -34
- package/dist/internal/VerifiedTokens.d.ts.map +1 -1
- package/dist/internal/VerifiedTokens.js +115 -159
- package/dist/internal/VerifiedTokens.js.map +1 -1
- package/dist/internal/Viem.d.ts +84 -0
- package/dist/internal/Viem.d.ts.map +1 -1
- package/dist/internal/Webhooks.d.ts +50 -36
- package/dist/internal/Webhooks.d.ts.map +1 -1
- package/dist/internal/Webhooks.js +92 -205
- package/dist/internal/Webhooks.js.map +1 -1
- package/package.json +37 -6
- package/src/ApiKey.test.ts +3 -3
- package/src/ApiKey.ts +11 -12
- package/src/ApiKeys.test.ts +278 -0
- package/src/ApiKeys.ts +358 -0
- package/src/App.test-d.ts +1 -1
- package/src/App.test.ts +40508 -19083
- package/src/App.ts +239 -416
- package/src/Client.test-d.ts +307 -16
- package/src/Handler.ts +154 -0
- package/src/Scope.ts +17 -4
- package/src/Webhooks.test.ts +8 -7
- package/src/Webhooks.ts +13 -7
- package/src/admin/Access.ts +1 -3
- package/src/admin/App.ts +19 -24
- package/src/admin/apps/api-keys.test.ts +70 -18
- package/src/admin/apps/api-keys.ts +92 -9
- package/src/admin/apps/scopes.test.ts +8 -0
- package/src/admin/apps/verified-tokens.test.ts +3 -30
- package/src/admin/apps/verified-tokens.ts +18 -37
- package/src/admin/ui.generated.ts +1 -1
- package/src/apps/composition.test.ts +66 -0
- package/src/apps/data/App.ts +295 -0
- package/src/apps/data/index.ts +2 -0
- package/src/apps/{activities.test.ts → data/routes/activities.test.ts} +3 -3
- package/src/apps/{activities.ts → data/routes/activities.ts} +15 -15
- package/src/apps/{addresses.ts → data/routes/addresses.ts} +6 -6
- package/src/apps/{balances.test.ts → data/routes/balances.test.ts} +6 -5
- package/src/apps/{balances.ts → data/routes/balances.ts} +46 -12
- package/src/apps/{blocks.test.ts → data/routes/blocks.test.ts} +4 -4
- package/src/apps/{blocks.ts → data/routes/blocks.ts} +14 -14
- package/src/apps/{coingecko.test.ts → data/routes/coingecko.test.ts} +2 -2
- package/src/apps/{coingecko.ts → data/routes/coingecko.ts} +14 -14
- package/src/apps/{exchanges.test.ts → data/routes/exchanges.test.ts} +2 -2
- package/src/apps/{exchanges.ts → data/routes/exchanges.ts} +20 -20
- package/src/apps/{fee-amm.test.ts → data/routes/fee-amm.test.ts} +3 -3
- package/src/apps/{fee-amm.ts → data/routes/fee-amm.ts} +18 -18
- package/src/apps/{indexer.test.ts → data/routes/indexer.test.ts} +27 -6
- package/src/apps/{indexer.ts → data/routes/indexer.ts} +13 -10
- package/src/apps/{receipts.test.ts → data/routes/receipts.test.ts} +4 -4
- package/src/apps/{receipts.ts → data/routes/receipts.ts} +13 -13
- package/src/apps/{rpc.test.ts → data/routes/rpc.test.ts} +142 -13
- package/src/apps/{rpc.ts → data/routes/rpc.ts} +7 -7
- package/src/apps/{tokenlist.test.ts → data/routes/tokenlist.test.ts} +8 -10
- package/src/apps/{tokenlist.ts → data/routes/tokenlist.ts} +9 -9
- package/src/apps/{tokens.test.ts → data/routes/tokens.test.ts} +6 -5
- package/src/apps/{tokens.ts → data/routes/tokens.ts} +20 -20
- package/src/apps/{transactions.test.ts → data/routes/transactions.test.ts} +4 -4
- package/src/apps/{transactions.ts → data/routes/transactions.ts} +15 -15
- package/src/apps/{transfers.test.ts → data/routes/transfers.test.ts} +3 -3
- package/src/apps/{transfers.ts → data/routes/transfers.ts} +15 -15
- package/src/apps/{verified-tokens.test.ts → data/routes/verified-tokens.test.ts} +27 -15
- package/src/apps/{verified-tokens.ts → data/routes/verified-tokens.ts} +10 -10
- package/src/apps/{webhooks.test.ts → data/routes/webhooks.test.ts} +137 -150
- package/src/apps/{webhooks.ts → data/routes/webhooks.ts} +83 -81
- package/src/apps/docs/App.ts +136 -0
- package/src/apps/docs/index.ts +1 -0
- package/src/apps/index.ts +3 -0
- package/src/apps/metadata.ts +23 -0
- package/src/apps/platform/App.ts +130 -0
- package/src/apps/platform/index.ts +1 -0
- package/src/apps/platform/routes/api-keys.test.ts +330 -0
- package/src/apps/platform/routes/api-keys.ts +427 -0
- package/src/apps/platform/routes/invitations.test.ts +361 -0
- package/src/apps/platform/routes/invitations.ts +519 -0
- package/src/apps/platform/routes/me.test.ts +121 -0
- package/src/apps/platform/routes/me.ts +106 -0
- package/src/apps/platform/routes/members.test.ts +195 -0
- package/src/apps/platform/routes/members.ts +313 -0
- package/src/apps/platform/routes/orgs.test.ts +313 -0
- package/src/apps/platform/routes/orgs.ts +343 -0
- package/src/apps/platform/routes/projects.test.ts +181 -0
- package/src/apps/platform/routes/projects.ts +367 -0
- package/src/apps/relay/App.test.ts +484 -0
- package/src/apps/relay/App.ts +128 -0
- package/src/apps/relay/Sponsorships.test.ts +375 -0
- package/src/apps/relay/Sponsorships.ts +305 -0
- package/src/apps/relay/index.ts +2 -0
- package/src/{Cli.test.ts → cli/Cli.test.ts} +10 -9
- package/src/{Cli.ts → cli/Cli.ts} +16 -9
- package/src/cli/bin.ts +4 -0
- package/src/cli/commands/admin.test.ts +71 -0
- package/src/cli/commands/admin.ts +60 -0
- package/src/cloudflare.ts +10 -0
- package/src/db/Db.test.ts +84 -0
- package/src/db/Db.ts +542 -0
- package/src/db/Schema.ts +301 -0
- package/src/db/tables/invitations.ts +198 -0
- package/src/db/tables/memberships.ts +208 -0
- package/src/db/tables/organizations.test.ts +160 -0
- package/src/db/tables/organizations.ts +232 -0
- package/src/db/tables/projects.ts +107 -0
- package/src/db/tables/sponsoredTransactions.test.ts +218 -0
- package/src/db/tables/sponsoredTransactions.ts +236 -0
- package/src/db/tables/users.ts +85 -0
- package/src/db/tables/verifiedTokens.ts +111 -0
- package/src/db/tables/webhookDeliveries.ts +159 -0
- package/src/db/tables/webhookSubscriptions.ts +358 -0
- package/src/handlers/internal/executionError.ts +207 -0
- package/src/handlers/internal/multisig.test.ts +818 -0
- package/src/handlers/internal/multisig.ts +823 -0
- package/src/handlers/internal/requestListener.ts +273 -0
- package/src/handlers/internal/sponsorship.ts +245 -0
- package/src/handlers/internal/types.ts +378 -0
- package/src/handlers/internal/utils.ts +153 -0
- package/src/handlers/relay.test.ts +2035 -0
- package/src/handlers/relay.ts +1623 -0
- package/src/index.ts +4 -2
- package/src/internal/Auth.test.ts +337 -21
- package/src/internal/Auth.ts +783 -44
- package/src/internal/Cursor.test.ts +3 -2
- package/src/internal/Log.test.ts +1 -1
- package/src/internal/Log.ts +11 -3
- package/src/internal/MetricSink.ts +1 -1
- package/src/internal/OpenApi.ts +0 -59
- package/src/internal/RateLimit.test.ts +1 -1
- package/src/internal/RpcSchema.ts +10 -0
- package/src/internal/Store.test.ts +150 -10
- package/src/internal/Store.ts +136 -11
- package/src/internal/Tidx.local.test.ts +1 -1
- package/src/internal/VerifiedTokens.test.ts +99 -115
- package/src/internal/VerifiedTokens.ts +123 -175
- package/src/internal/WebhookDestination.test.ts +1 -1
- package/src/internal/Webhooks.test.ts +111 -111
- package/src/internal/Webhooks.ts +103 -221
- package/dist/ApiKeySource.d.ts +0 -166
- package/dist/ApiKeySource.d.ts.map +0 -1
- package/dist/ApiKeySource.js +0 -234
- package/dist/ApiKeySource.js.map +0 -1
- package/dist/Cli.d.ts.map +0 -1
- package/dist/Cli.js +0 -13
- package/dist/Cli.js.map +0 -1
- package/dist/apps/activities.js.map +0 -1
- package/dist/apps/addresses.js.map +0 -1
- package/dist/apps/balances.d.ts.map +0 -1
- package/dist/apps/balances.js.map +0 -1
- package/dist/apps/blocks.d.ts.map +0 -1
- package/dist/apps/blocks.js.map +0 -1
- package/dist/apps/coingecko.d.ts.map +0 -1
- package/dist/apps/coingecko.js.map +0 -1
- package/dist/apps/exchanges.d.ts.map +0 -1
- package/dist/apps/exchanges.js.map +0 -1
- package/dist/apps/fee-amm.d.ts.map +0 -1
- package/dist/apps/fee-amm.js.map +0 -1
- package/dist/apps/indexer.d.ts.map +0 -1
- package/dist/apps/indexer.js.map +0 -1
- package/dist/apps/receipts.d.ts.map +0 -1
- package/dist/apps/receipts.js.map +0 -1
- package/dist/apps/rpc.d.ts.map +0 -1
- package/dist/apps/rpc.js.map +0 -1
- package/dist/apps/tokenlist.d.ts.map +0 -1
- package/dist/apps/tokenlist.js.map +0 -1
- package/dist/apps/tokens.d.ts.map +0 -1
- package/dist/apps/tokens.js.map +0 -1
- package/dist/apps/transactions.d.ts.map +0 -1
- package/dist/apps/transactions.js.map +0 -1
- package/dist/apps/transfers.d.ts.map +0 -1
- package/dist/apps/transfers.js.map +0 -1
- package/dist/apps/verified-tokens.d.ts.map +0 -1
- package/dist/apps/verified-tokens.js.map +0 -1
- package/dist/apps/webhooks.js.map +0 -1
- package/dist/internal/OpenApi.fonts.d.ts.map +0 -1
- package/dist/internal/OpenApi.fonts.js.map +0 -1
- package/dist/internal/OpenApi.logo.d.ts.map +0 -1
- package/dist/internal/OpenApi.logo.js.map +0 -1
- package/seeds/31318/icons/0x20c0000000000000000000000000000000000000.svg +0 -1
- package/seeds/31318/icons/0x20c0000000000000000000000000000000000001.svg +0 -1
- package/seeds/31318/icons/0x20c0000000000000000000000000000000000002.svg +0 -1
- package/seeds/31318/icons/0x20c0000000000000000000000000000000000003.svg +0 -1
- package/seeds/31318/verified-tokens.json +0 -30
- package/seeds/4217/icons/0x20c0000000000000000000000000000000000000.svg +0 -25
- package/seeds/4217/icons/0x20c000000000000000000000048c8f36df1c9a4a.svg +0 -1
- package/seeds/4217/icons/0x20c0000000000000000000000520792dcccccccc.svg +0 -1
- package/seeds/4217/icons/0x20c0000000000000000000000a6da882d075a4c3.svg +0 -4
- package/seeds/4217/icons/0x20c000000000000000000000111111111e910f0f.svg +0 -30
- package/seeds/4217/icons/0x20c00000000000000000000014f22ca97301eb73.svg +0 -1
- package/seeds/4217/icons/0x20c0000000000000000000001621e21f71cf12fb.svg +0 -1
- package/seeds/4217/icons/0x20c0000000000000000000002f52d5cc21a3207b.svg +0 -1
- package/seeds/4217/icons/0x20c0000000000000000000003158081efd85bfc2.svg +0 -11
- package/seeds/4217/icons/0x20c0000000000000000000003554d28269e0f3c2.svg +0 -1
- package/seeds/4217/icons/0x20c000000000000000000000383a23bacb546ab9.svg +0 -1
- package/seeds/4217/icons/0x20c00000000000000000000042109aef2f8b28e1.png +0 -0
- package/seeds/4217/icons/0x20c0000000000000000000005c0bac7cef389a11.svg +0 -1
- package/seeds/4217/icons/0x20c0000000000000000000006fd9a167923ba194.png +0 -0
- package/seeds/4217/icons/0x20c0000000000000000000007f7ba549dd0251b9.svg +0 -1
- package/seeds/4217/icons/0x20c0000000000000000000008191667423f70e67.svg +0 -5
- package/seeds/4217/icons/0x20c0000000000000000000008ee4fcff88888888.svg +0 -1
- package/seeds/4217/icons/0x20c0000000000000000000009a4a4b17e0dc6651.svg +0 -1
- package/seeds/4217/icons/0x20c000000000000000000000ab02d39df30bd17e.svg +0 -1
- package/seeds/4217/icons/0x20c000000000000000000000ae247a1130450f09.svg +0 -1
- package/seeds/4217/icons/0x20c000000000000000000000aeed2ec36a54d0e5.svg +0 -1
- package/seeds/4217/icons/0x20c000000000000000000000b9537d11c60e8b50.svg +0 -1
- package/seeds/4217/icons/0x20c000000000000000000000bd95bfb69fbe6ce3.svg +0 -1
- package/seeds/4217/icons/0x20c000000000000000000000c412ec89d0c08be5.svg +0 -1
- package/seeds/4217/icons/0x20c000000000000000000000f047dd7018e50367.png +0 -0
- package/seeds/4217/verified-tokens.json +0 -177
- package/seeds/42431/icons/0x20c0000000000000000000000000000000000000.svg +0 -25
- package/seeds/42431/icons/0x20c0000000000000000000000000000000000001.svg +0 -1
- package/seeds/42431/icons/0x20c0000000000000000000000000000000000002.svg +0 -1
- package/seeds/42431/icons/0x20c0000000000000000000000000000000000003.svg +0 -1
- package/seeds/42431/icons/0x20c0000000000000000000009e8d7eb59b783726.svg +0 -1
- package/seeds/42431/icons/0x20c000000000000000000000d72572838bbee59c.svg +0 -1
- package/seeds/42431/verified-tokens.json +0 -44
- package/seeds/openrpc/README.md +0 -27
- package/seeds/openrpc/execution-apis.json +0 -8989
- package/src/ApiKeySource.test-d.ts +0 -11
- package/src/ApiKeySource.test.ts +0 -295
- package/src/ApiKeySource.ts +0 -303
- /package/src/{internal/OpenApi.fonts.ts → apps/docs/fonts.ts} +0 -0
- /package/src/{internal/OpenApi.logo.ts → apps/docs/logo.ts} +0 -0
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
import { nanoid } from 'nanoid';
|
|
2
2
|
import { Hash, Hex } from 'ox';
|
|
3
|
+
import * as WebhookDeliveries from '../db/tables/webhookDeliveries.js';
|
|
4
|
+
import * as WebhookSubscriptions from '../db/tables/webhookSubscriptions.js';
|
|
3
5
|
import * as MetricSink from './MetricSink.js';
|
|
4
|
-
import * as Store from './Store.js';
|
|
5
6
|
import * as WebhookDestination from './WebhookDestination.js';
|
|
6
7
|
export { InvalidUrlError, sign, signatureHeader, verify } from './WebhookDestination.js';
|
|
7
8
|
/**
|
|
8
9
|
* Creates a subscription, validating its URL and (optionally) enforcing a
|
|
9
|
-
* per-owner cap, then persists it
|
|
10
|
+
* per-owner cap, then persists it. The cap check stays best-effort (count then
|
|
11
|
+
* insert, non-transactional) — parity with the old store behavior.
|
|
10
12
|
*/
|
|
11
|
-
export async function createSubscription(
|
|
13
|
+
export async function createSubscription(db, input, options = {}) {
|
|
12
14
|
WebhookDestination.assertDestination(input.destination);
|
|
15
|
+
const now = (options.now ?? (() => new Date()))();
|
|
16
|
+
const iso = now.toISOString();
|
|
13
17
|
if (options.maxPerOwner !== undefined) {
|
|
14
|
-
const existing = await
|
|
15
|
-
if (existing
|
|
18
|
+
const existing = await WebhookSubscriptions.count(db, input.owner, iso);
|
|
19
|
+
if (existing >= options.maxPerOwner)
|
|
16
20
|
throw new LimitExceededError(options.maxPerOwner);
|
|
17
21
|
}
|
|
18
|
-
const now = (options.now ?? (() => new Date()))();
|
|
19
|
-
const iso = now.toISOString();
|
|
20
22
|
const subscription = {
|
|
21
23
|
chainId: input.chainId,
|
|
22
24
|
...(input.context === undefined ? {} : { context: input.context }),
|
|
@@ -34,110 +36,79 @@ export async function createSubscription(store, input, options = {}) {
|
|
|
34
36
|
? {}
|
|
35
37
|
: { expiresAt: new Date(now.getTime() + input.ttl).toISOString() }),
|
|
36
38
|
};
|
|
37
|
-
await
|
|
39
|
+
await WebhookSubscriptions.insert(db, subscription);
|
|
38
40
|
return subscription;
|
|
39
41
|
}
|
|
40
42
|
/** Reads a single subscription scoped to its owner. Returns null when absent. */
|
|
41
|
-
export async function getSubscription(
|
|
42
|
-
return
|
|
43
|
+
export async function getSubscription(db, owner, id) {
|
|
44
|
+
return WebhookSubscriptions.get(db, owner, id, new Date().toISOString());
|
|
43
45
|
}
|
|
44
46
|
/**
|
|
45
47
|
* Lists an owner's subscriptions, newest first, with optional keyset paging.
|
|
46
|
-
* Subscription ids embed a timestamp, so lexical
|
|
48
|
+
* Subscription ids embed a timestamp, so lexical id order is chronological.
|
|
47
49
|
*/
|
|
48
|
-
export async function listSubscriptions(
|
|
49
|
-
|
|
50
|
-
const { keys } = await store.list({ prefix });
|
|
51
|
-
// Newest first: ids sort chronologically ascending, so reverse for descending.
|
|
52
|
-
let names = keys
|
|
53
|
-
.map((key) => key.name)
|
|
54
|
-
.sort()
|
|
55
|
-
.reverse();
|
|
56
|
-
if (options.cursor)
|
|
57
|
-
names = names.filter((name) => name < `${prefix}${options.cursor}`);
|
|
58
|
-
if (options.offset)
|
|
59
|
-
names = names.slice(options.offset);
|
|
60
|
-
if (options.limit !== undefined)
|
|
61
|
-
names = names.slice(0, options.limit);
|
|
62
|
-
// Hydrate the page in parallel: the reads are independent, and a serial
|
|
63
|
-
// loop costs one store round trip per row (an N+1 against the production
|
|
64
|
-
// Durable Object).
|
|
65
|
-
const subscriptions = await Promise.all(names.map((name) => readSubscription(store, name)));
|
|
66
|
-
return subscriptions.filter((subscription) => subscription !== null);
|
|
50
|
+
export async function listSubscriptions(db, owner, options = {}) {
|
|
51
|
+
return WebhookSubscriptions.list(db, owner, { ...options, now: new Date().toISOString() });
|
|
67
52
|
}
|
|
68
53
|
/**
|
|
69
|
-
* Counts an owner's subscriptions
|
|
70
|
-
* prefix (no row hydration), so it's a single store `list` — exact and cheap,
|
|
54
|
+
* Counts an owner's subscriptions — a single indexed count, exact and cheap,
|
|
71
55
|
* since the per-owner set is bounded by `maxPerOwner`. Feeds the opt-in
|
|
72
56
|
* `meta.totalCount` on `GET /webhooks`.
|
|
73
57
|
*/
|
|
74
|
-
export async function countSubscriptions(
|
|
75
|
-
|
|
76
|
-
return keys.length;
|
|
58
|
+
export async function countSubscriptions(db, owner) {
|
|
59
|
+
return WebhookSubscriptions.count(db, owner, new Date().toISOString());
|
|
77
60
|
}
|
|
78
61
|
/**
|
|
79
|
-
* Patches an owner's subscription, re-validating the URL when changed
|
|
80
|
-
*
|
|
62
|
+
* Patches an owner's subscription, re-validating the URL when changed.
|
|
63
|
+
* Returns null when absent. The status column drives the poller's partial
|
|
64
|
+
* index, so no secondary-index maintenance is needed.
|
|
81
65
|
*/
|
|
82
|
-
export async function updateSubscription(
|
|
83
|
-
const current = await getSubscription(
|
|
66
|
+
export async function updateSubscription(db, owner, id, patch, options = {}) {
|
|
67
|
+
const current = await getSubscription(db, owner, id);
|
|
84
68
|
if (!current)
|
|
85
69
|
return null;
|
|
86
70
|
if (patch.destination !== undefined)
|
|
87
71
|
WebhookDestination.assertDestination(patch.destination);
|
|
88
72
|
const now = (options.now ?? (() => new Date()))();
|
|
89
|
-
const next = {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
...(patch.context === undefined
|
|
93
|
-
? {}
|
|
94
|
-
: { context: patch.context === null ? undefined : patch.context }),
|
|
73
|
+
const next = await WebhookSubscriptions.update(db, id, {
|
|
74
|
+
// `context: null` clears it (stored as a null column; drops from reads).
|
|
75
|
+
...(patch.context === undefined ? {} : { context: patch.context }),
|
|
95
76
|
...(patch.destination === undefined ? {} : { destination: patch.destination }),
|
|
96
77
|
...(patch.filters === undefined ? {} : { filters: patch.filters }),
|
|
97
78
|
...(patch.status === undefined ? {} : { status: patch.status }),
|
|
98
79
|
updatedAt: now.toISOString(),
|
|
99
|
-
};
|
|
100
|
-
|
|
101
|
-
return next;
|
|
80
|
+
});
|
|
81
|
+
return next ?? null;
|
|
102
82
|
}
|
|
103
|
-
/** Deletes an owner's subscription
|
|
104
|
-
export async function deleteSubscription(
|
|
105
|
-
|
|
106
|
-
if (!current)
|
|
107
|
-
return false;
|
|
108
|
-
await store.delete(subscriptionKey(owner, id));
|
|
109
|
-
await store.delete(activeKey(current.chainId, current.eventType, id));
|
|
110
|
-
await store.delete(cursorKey(id));
|
|
111
|
-
// Drop the delivery log so a deleted subscription leaves no orphaned rows.
|
|
112
|
-
const { keys } = await store.list({ prefix: deliveryPrefix(id) });
|
|
113
|
-
for (const { name } of keys)
|
|
114
|
-
await store.delete(name);
|
|
115
|
-
return true;
|
|
83
|
+
/** Deletes an owner's subscription; its delivery rows cascade via the FK. */
|
|
84
|
+
export async function deleteSubscription(db, owner, id) {
|
|
85
|
+
return WebhookSubscriptions.remove(db, owner, id, new Date().toISOString());
|
|
116
86
|
}
|
|
117
87
|
/**
|
|
118
88
|
* Lists active subscriptions for a `(chainId, eventType)` stream. Used by the
|
|
119
|
-
* poller;
|
|
89
|
+
* poller; one indexed query (the partial status index replaces the old
|
|
90
|
+
* secondary key space).
|
|
120
91
|
*/
|
|
121
|
-
export async function listActive(
|
|
122
|
-
|
|
123
|
-
const subscriptions = [];
|
|
124
|
-
for (const { name } of keys) {
|
|
125
|
-
const subKey = await store.get(name);
|
|
126
|
-
if (!subKey)
|
|
127
|
-
continue;
|
|
128
|
-
const subscription = await readSubscription(store, subKey);
|
|
129
|
-
if (subscription)
|
|
130
|
-
subscriptions.push(subscription);
|
|
131
|
-
}
|
|
132
|
-
return subscriptions;
|
|
92
|
+
export async function listActive(db, chainId, eventType) {
|
|
93
|
+
return WebhookSubscriptions.listActive(db, chainId, eventType, new Date().toISOString());
|
|
133
94
|
}
|
|
134
95
|
/** Reads a subscription's keyset cursor. Returns null when unset. */
|
|
135
|
-
export async function getCursor(
|
|
136
|
-
return
|
|
96
|
+
export async function getCursor(db, subscriptionId) {
|
|
97
|
+
return WebhookSubscriptions.getCursor(db, subscriptionId);
|
|
137
98
|
}
|
|
138
99
|
/** Writes a subscription's keyset cursor. */
|
|
139
|
-
export async function setCursor(
|
|
140
|
-
await
|
|
100
|
+
export async function setCursor(db, subscriptionId, cursor) {
|
|
101
|
+
await WebhookSubscriptions.setCursor(db, subscriptionId, cursor);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Deletes expired MPP-owned subscriptions (delivery rows cascade) and
|
|
105
|
+
* deliveries past retention. Reads already filter expiry at query time — this
|
|
106
|
+
* is the janitor reclaiming space, called best-effort per poller tick.
|
|
107
|
+
*/
|
|
108
|
+
export async function pruneExpired(db, options = {}) {
|
|
109
|
+
const iso = (options.now ?? (() => new Date()))().toISOString();
|
|
110
|
+
await WebhookDeliveries.pruneExpired(db, iso);
|
|
111
|
+
await WebhookSubscriptions.pruneExpired(db, iso);
|
|
141
112
|
}
|
|
142
113
|
/**
|
|
143
114
|
* Default delivery-log retention. Rows are written with this TTL so a busy
|
|
@@ -145,49 +116,32 @@ export async function setCursor(store, subscriptionId, cursor) {
|
|
|
145
116
|
*/
|
|
146
117
|
export const deliveryRetentionMs = 7 * 24 * 60 * 60 * 1_000;
|
|
147
118
|
/** Records one delivery-log row (stateful, owner-agnostic; scoped per subscription). */
|
|
148
|
-
export async function recordDelivery(
|
|
119
|
+
export async function recordDelivery(db, delivery, options = {}) {
|
|
149
120
|
const ttl = options.ttl ?? deliveryRetentionMs;
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
121
|
+
// The retention deadline replaces the old store TTL: reads filter on it at
|
|
122
|
+
// query time and the poller prunes past it. Anchored to write time (not the
|
|
123
|
+
// row's `createdAt`, which tests pin) — exactly like the old `put` TTL.
|
|
124
|
+
const expiresAt = new Date(Date.now() + ttl).toISOString();
|
|
125
|
+
await WebhookDeliveries.insert(db, delivery, expiresAt);
|
|
153
126
|
}
|
|
154
127
|
/**
|
|
155
128
|
* Lists a subscription's delivery log, newest first, with optional keyset
|
|
156
129
|
* paging. Delivery ids embed a timestamp, so lexical key order is chronological.
|
|
157
130
|
*/
|
|
158
|
-
export async function listDeliveries(
|
|
159
|
-
|
|
160
|
-
const { keys } = await store.list({ prefix });
|
|
161
|
-
// Newest first: ids sort chronologically ascending, so reverse for descending.
|
|
162
|
-
let names = keys
|
|
163
|
-
.map((key) => key.name)
|
|
164
|
-
.sort()
|
|
165
|
-
.reverse();
|
|
166
|
-
if (options.cursor)
|
|
167
|
-
names = names.filter((name) => name < `${prefix}${options.cursor}`);
|
|
168
|
-
if (options.offset)
|
|
169
|
-
names = names.slice(options.offset);
|
|
170
|
-
if (options.limit !== undefined)
|
|
171
|
-
names = names.slice(0, options.limit);
|
|
172
|
-
// Hydrate the page in parallel: the reads are independent, and a serial
|
|
173
|
-
// loop costs one store round trip per row (an N+1 against the production
|
|
174
|
-
// Durable Object).
|
|
175
|
-
const deliveries = await Promise.all(names.map((name) => readDelivery(store, name)));
|
|
176
|
-
return deliveries.filter((delivery) => delivery !== null);
|
|
131
|
+
export async function listDeliveries(db, subscriptionId, options = {}) {
|
|
132
|
+
return WebhookDeliveries.list(db, subscriptionId, { ...options, now: new Date().toISOString() });
|
|
177
133
|
}
|
|
178
134
|
/**
|
|
179
|
-
* Counts a subscription's delivery-log entries
|
|
180
|
-
*
|
|
181
|
-
* exact, and bounded by the delivery retention TTL. Feeds the opt-in
|
|
135
|
+
* Counts a subscription's delivery-log entries — a single indexed count,
|
|
136
|
+
* exact, and bounded by the delivery retention window. Feeds the opt-in
|
|
182
137
|
* `meta.totalCount` on `GET /webhooks/:id/deliveries`.
|
|
183
138
|
*/
|
|
184
|
-
export async function countDeliveries(
|
|
185
|
-
|
|
186
|
-
return keys.length;
|
|
139
|
+
export async function countDeliveries(db, subscriptionId) {
|
|
140
|
+
return WebhookDeliveries.count(db, subscriptionId, new Date().toISOString());
|
|
187
141
|
}
|
|
188
142
|
/** Loads a single delivery-log row (`null` when absent), scoped to its subscription. */
|
|
189
|
-
export async function getDelivery(
|
|
190
|
-
return
|
|
143
|
+
export async function getDelivery(db, subscriptionId, deliveryId) {
|
|
144
|
+
return WebhookDeliveries.get(db, subscriptionId, deliveryId, new Date().toISOString());
|
|
191
145
|
}
|
|
192
146
|
/**
|
|
193
147
|
* Default number of consecutive delivery failures after which a subscription
|
|
@@ -196,38 +150,39 @@ export async function getDelivery(store, subscriptionId, deliveryId) {
|
|
|
196
150
|
export const maxFailures = 10;
|
|
197
151
|
/**
|
|
198
152
|
* Records a successful delivery: resets the consecutive-failure counter and
|
|
199
|
-
* stamps `lastDeliveryAt`.
|
|
200
|
-
*
|
|
153
|
+
* stamps `lastDeliveryAt`. A column-targeted update, so a concurrent patch is
|
|
154
|
+
* never clobbered by the stale copy carried through the delivery queue.
|
|
201
155
|
*/
|
|
202
|
-
export async function recordSuccess(
|
|
156
|
+
export async function recordSuccess(db, subscription, options = {}) {
|
|
203
157
|
const now = (options.now ?? (() => new Date()))();
|
|
204
|
-
const
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
};
|
|
210
|
-
await writeSubscription(store, next);
|
|
211
|
-
return next;
|
|
158
|
+
const iso = now.toISOString();
|
|
159
|
+
const next = await WebhookSubscriptions.recordSuccess(db, subscription.id, iso);
|
|
160
|
+
// A concurrently deleted subscription is not resurrected; return the
|
|
161
|
+
// optimistic next state so the caller still observes the outcome.
|
|
162
|
+
return next ?? { ...subscription, failureCount: 0, lastDeliveryAt: iso, updatedAt: iso };
|
|
212
163
|
}
|
|
213
164
|
/**
|
|
214
|
-
* Records a failed delivery: increments the consecutive-failure
|
|
215
|
-
* once it reaches `maxFailures`, sets `status: 'disabled'` so the
|
|
216
|
-
* drops out of the poller's
|
|
217
|
-
* updated subscription.
|
|
165
|
+
* Records a failed delivery: atomically increments the consecutive-failure
|
|
166
|
+
* counter and, once it reaches `maxFailures`, sets `status: 'disabled'` so the
|
|
167
|
+
* subscription drops out of the poller's partial index (surfaced via the API).
|
|
168
|
+
* Returns the updated subscription.
|
|
218
169
|
*/
|
|
219
|
-
export async function recordFailure(
|
|
170
|
+
export async function recordFailure(db, subscription, options = {}) {
|
|
220
171
|
const now = (options.now ?? (() => new Date()))();
|
|
172
|
+
const iso = now.toISOString();
|
|
173
|
+
const max = options.maxFailures ?? maxFailures;
|
|
174
|
+
const next = await WebhookSubscriptions.recordFailure(db, subscription.id, max, iso);
|
|
175
|
+
if (next)
|
|
176
|
+
return next;
|
|
177
|
+
// A concurrently deleted subscription is not resurrected; return the
|
|
178
|
+
// optimistic next state so the caller still observes the outcome.
|
|
221
179
|
const failureCount = subscription.failureCount + 1;
|
|
222
|
-
|
|
223
|
-
const next = {
|
|
180
|
+
return {
|
|
224
181
|
...subscription,
|
|
225
182
|
failureCount,
|
|
226
|
-
...(
|
|
227
|
-
updatedAt:
|
|
183
|
+
...(failureCount >= max ? { status: 'disabled' } : {}),
|
|
184
|
+
updatedAt: iso,
|
|
228
185
|
};
|
|
229
|
-
await writeSubscription(store, next);
|
|
230
|
-
return next;
|
|
231
186
|
}
|
|
232
187
|
/**
|
|
233
188
|
* Delivers an envelope to its subscription and records the outcome: success
|
|
@@ -235,7 +190,7 @@ export async function recordFailure(store, subscription, options = {}) {
|
|
|
235
190
|
* and auto-disables after {@link maxFailures}. This is the single delivery entry
|
|
236
191
|
* point shared by the Cloudflare Queue consumer and the self-host inline path.
|
|
237
192
|
*/
|
|
238
|
-
export async function deliverAndRecord(
|
|
193
|
+
export async function deliverAndRecord(db, subscription, envelope, options = {}) {
|
|
239
194
|
// Snapshot the attempt before recordSuccess/recordFailure mutate the counter.
|
|
240
195
|
const attempt = subscription.failureCount + 1;
|
|
241
196
|
const result = await WebhookDestination.from(subscription.destination).deliver({
|
|
@@ -245,9 +200,9 @@ export async function deliverAndRecord(store, subscription, envelope, options =
|
|
|
245
200
|
...(options.timeoutMs === undefined ? {} : { timeoutMs: options.timeoutMs }),
|
|
246
201
|
});
|
|
247
202
|
if (result.ok)
|
|
248
|
-
await recordSuccess(
|
|
203
|
+
await recordSuccess(db, subscription, options);
|
|
249
204
|
else
|
|
250
|
-
await recordFailure(
|
|
205
|
+
await recordFailure(db, subscription, options);
|
|
251
206
|
// Emit a `webhook:delivery` metric. recordSuccess/recordFailure are immutable
|
|
252
207
|
// (they spread into a new record), so `subscription.failureCount` here is still
|
|
253
208
|
// the pre-mutation snapshot the sink needs to derive the attempt bucket.
|
|
@@ -266,7 +221,7 @@ export async function deliverAndRecord(store, subscription, envelope, options =
|
|
|
266
221
|
// Append a delivery-log row. Best-effort: a logging failure must never change
|
|
267
222
|
// the delivery outcome the caller (Queue consumer / inline path) acts on.
|
|
268
223
|
try {
|
|
269
|
-
await recordDelivery(
|
|
224
|
+
await recordDelivery(db, buildDelivery({ attempt, envelope, result, subscription }, options), options.deliveryRetentionMs === undefined ? {} : { ttl: options.deliveryRetentionMs });
|
|
270
225
|
}
|
|
271
226
|
catch {
|
|
272
227
|
// delivery logging is best-effort
|
|
@@ -346,7 +301,7 @@ export function buildPingEnvelope(subscription, options = {}) {
|
|
|
346
301
|
* delivery row is still appended (best-effort) so the ping is observable via the
|
|
347
302
|
* delivery log.
|
|
348
303
|
*/
|
|
349
|
-
export async function ping(
|
|
304
|
+
export async function ping(db, subscription, options = {}) {
|
|
350
305
|
const now = options.now ?? (() => new Date());
|
|
351
306
|
const envelope = buildPingEnvelope(subscription, {
|
|
352
307
|
createdAt: now(),
|
|
@@ -361,81 +316,13 @@ export async function ping(store, subscription, options = {}) {
|
|
|
361
316
|
// Best-effort: a logging failure must never change the result the caller sees.
|
|
362
317
|
const delivery = buildDelivery({ attempt: 1, envelope, result, subscription }, { now });
|
|
363
318
|
try {
|
|
364
|
-
await recordDelivery(
|
|
319
|
+
await recordDelivery(db, delivery, options.deliveryRetentionMs === undefined ? {} : { ttl: options.deliveryRetentionMs });
|
|
365
320
|
}
|
|
366
321
|
catch {
|
|
367
322
|
// delivery logging is best-effort
|
|
368
323
|
}
|
|
369
324
|
return { delivery, envelope, result };
|
|
370
325
|
}
|
|
371
|
-
function ownerKey(owner) {
|
|
372
|
-
return owner.type === 'api_key'
|
|
373
|
-
? `api_key:${encodeURIComponent(owner.orgId)}`
|
|
374
|
-
: `mpp:${encodeURIComponent(owner.payer)}`;
|
|
375
|
-
}
|
|
376
|
-
function subscriptionPrefix(owner) {
|
|
377
|
-
return `webhook:sub:${ownerKey(owner)}:`;
|
|
378
|
-
}
|
|
379
|
-
function subscriptionKey(owner, id) {
|
|
380
|
-
return `${subscriptionPrefix(owner)}${id}`;
|
|
381
|
-
}
|
|
382
|
-
function cursorKey(subscriptionId) {
|
|
383
|
-
return `webhook:cursor:${subscriptionId}`;
|
|
384
|
-
}
|
|
385
|
-
function deliveryPrefix(subscriptionId) {
|
|
386
|
-
return `webhook:delivery:${subscriptionId}:`;
|
|
387
|
-
}
|
|
388
|
-
function deliveryKey(subscriptionId, deliveryId) {
|
|
389
|
-
return `${deliveryPrefix(subscriptionId)}${deliveryId}`;
|
|
390
|
-
}
|
|
391
|
-
function activePrefix(chainId, eventType) {
|
|
392
|
-
return `webhook:active:${chainId}:${eventType}:`;
|
|
393
|
-
}
|
|
394
|
-
function activeKey(chainId, eventType, id) {
|
|
395
|
-
return `${activePrefix(chainId, eventType)}${id}`;
|
|
396
|
-
}
|
|
397
|
-
async function readSubscription(store, key) {
|
|
398
|
-
const raw = await store.get(key);
|
|
399
|
-
if (!raw)
|
|
400
|
-
return null;
|
|
401
|
-
try {
|
|
402
|
-
return JSON.parse(raw);
|
|
403
|
-
}
|
|
404
|
-
catch {
|
|
405
|
-
// Corrupt entries are treated as absent.
|
|
406
|
-
return null;
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
async function readDelivery(store, key) {
|
|
410
|
-
const raw = await store.get(key);
|
|
411
|
-
if (!raw)
|
|
412
|
-
return null;
|
|
413
|
-
try {
|
|
414
|
-
return JSON.parse(raw);
|
|
415
|
-
}
|
|
416
|
-
catch {
|
|
417
|
-
// Corrupt entries are treated as absent.
|
|
418
|
-
return null;
|
|
419
|
-
}
|
|
420
|
-
}
|
|
421
|
-
async function writeSubscription(store, subscription) {
|
|
422
|
-
const ttl = ttlFor(subscription);
|
|
423
|
-
const key = subscriptionKey(subscription.owner, subscription.id);
|
|
424
|
-
await store.put(key, JSON.stringify(subscription), { ttl });
|
|
425
|
-
// Mirror status into the poller's secondary index: only `active`
|
|
426
|
-
// subscriptions are polled. The index value is the subscription's storage key
|
|
427
|
-
// so the poller can hydrate without knowing the owner.
|
|
428
|
-
const indexKey = activeKey(subscription.chainId, subscription.eventType, subscription.id);
|
|
429
|
-
if (subscription.status === 'active')
|
|
430
|
-
await store.put(indexKey, key, { ttl });
|
|
431
|
-
else
|
|
432
|
-
await store.delete(indexKey);
|
|
433
|
-
}
|
|
434
|
-
function ttlFor(subscription) {
|
|
435
|
-
if (!subscription.expiresAt)
|
|
436
|
-
return undefined;
|
|
437
|
-
return Math.max(1, new Date(subscription.expiresAt).getTime() - Date.now());
|
|
438
|
-
}
|
|
439
326
|
function generateId(now) {
|
|
440
327
|
// Zero-pad the epoch-ms so ids sort chronologically by string comparison
|
|
441
328
|
// (mirroring delivery ids), letting listSubscriptions page newest-first; 15
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Webhooks.js","sourceRoot":"","sources":["../../src/internal/Webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,IAAI,CAAA;AAI9B,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAS7D,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AA+IxF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAkB,EAClB,KAAkB,EAClB,OAAO,GAA+B,EAAE;IAExC,kBAAkB,CAAC,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IAEvD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;QAC5D,IAAI,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,WAAW;YAAE,MAAM,IAAI,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAC/F,CAAC;IAED,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,CAAA;IACjD,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;IAC7B,MAAM,YAAY,GAAiB;QACjC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAClE,SAAS,EAAE,GAAG;QACd,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,YAAY,EAAE,CAAC;QACf,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;QAC5B,EAAE,EAAE,UAAU,CAAC,GAAG,CAAC;QACnB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,cAAc,EAAE;QACxB,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,GAAG;QACd,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS;YACzB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;KACtE,CAAA;IAED,MAAM,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;IAC5C,OAAO,YAAY,CAAA;AACrB,CAAC;AAYD,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAkB,EAClB,KAAY,EACZ,EAAU;IAEV,OAAO,gBAAgB,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAA;AAC5D,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAAkB,EAClB,KAAY,EACZ,OAAO,GAA8B,EAAE;IAEvC,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;IACxC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;IAE7C,+EAA+E;IAC/E,IAAI,KAAK,GAAG,IAAI;SACb,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;SACtB,IAAI,EAAE;SACN,OAAO,EAAE,CAAA;IACZ,IAAI,OAAO,CAAC,MAAM;QAAE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACvF,IAAI,OAAO,CAAC,MAAM;QAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACvD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;QAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IAEtE,wEAAwE;IACxE,yEAAyE;IACzE,mBAAmB;IACnB,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;IAC3F,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,KAAK,IAAI,CAAC,CAAA;AACtE,CAAC;AAcD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAAkB,EAAE,KAAY;IACvE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACxE,OAAO,IAAI,CAAC,MAAM,CAAA;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAkB,EAClB,KAAY,EACZ,EAAU,EACV,KAAiB,EACjB,OAAO,GAA+B,EAAE;IAExC,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;IACvD,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IAEzB,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;QAAE,kBAAkB,CAAC,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IAE5F,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,CAAA;IACjD,MAAM,IAAI,GAAiB;QACzB,GAAG,OAAO;QACV,4EAA4E;QAC5E,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS;YAC7B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACpE,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;QAC9E,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAClE,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;QAC/D,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;KAC7B,CAAA;IAED,MAAM,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACpC,OAAO,IAAI,CAAA;AACb,CAAC;AAUD,iEAAiE;AACjE,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAkB,EAClB,KAAY,EACZ,EAAU;IAEV,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;IACvD,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAA;IAE1B,MAAM,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAA;IAC9C,MAAM,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAA;IACrE,MAAM,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAA;IAEjC,2EAA2E;IAC3E,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACjE,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,IAAI;QAAE,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACrD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAkB,EAClB,OAAe,EACf,SAAoB;IAEpB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,CAAA;IAE/E,MAAM,aAAa,GAAmB,EAAE,CAAA;IACxC,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACpC,IAAI,CAAC,MAAM;YAAE,SAAQ;QACrB,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAC1D,IAAI,YAAY;YAAE,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACpD,CAAC;IACD,OAAO,aAAa,CAAA;AACtB,CAAC;AAED,qEAAqE;AACrE,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,KAAkB,EAClB,cAAsB;IAEtB,OAAO,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAA;AAC7C,CAAC;AAED,6CAA6C;AAC7C,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,KAAkB,EAClB,cAAsB,EACtB,MAAc;IAEd,MAAM,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,CAAA;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAA;AAE3D,wFAAwF;AACxF,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAkB,EAClB,QAAkB,EAClB,OAAO,GAA2B,EAAE;IAEpC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,mBAAmB,CAAA;IAC9C,MAAM,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;QAC3F,GAAG;KACJ,CAAC,CAAA;AACJ,CAAC;AAUD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAkB,EAClB,cAAsB,EACtB,OAAO,GAA2B,EAAE;IAEpC,MAAM,MAAM,GAAG,cAAc,CAAC,cAAc,CAAC,CAAA;IAC7C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;IAE7C,+EAA+E;IAC/E,IAAI,KAAK,GAAG,IAAI;SACb,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;SACtB,IAAI,EAAE;SACN,OAAO,EAAE,CAAA;IACZ,IAAI,OAAO,CAAC,MAAM;QAAE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACvF,IAAI,OAAO,CAAC,MAAM;QAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACvD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;QAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IAEtE,wEAAwE;IACxE,yEAAyE;IACzE,mBAAmB;IACnB,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;IACpF,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAA;AAC3D,CAAC;AAcD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAkB,EAAE,cAAsB;IAC9E,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;IAC7E,OAAO,IAAI,CAAC,MAAM,CAAA;AACpB,CAAC;AAED,wFAAwF;AACxF,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAkB,EAClB,cAAsB,EACtB,UAAkB;IAElB,OAAO,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAA;AACrE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAA;AAE7B;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAkB,EAClB,YAA0B,EAC1B,OAAO,GAA0B,EAAE;IAEnC,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,CAAA;IACjD,MAAM,IAAI,GAAiB;QACzB,GAAG,YAAY;QACf,YAAY,EAAE,CAAC;QACf,cAAc,EAAE,GAAG,CAAC,WAAW,EAAE;QACjC,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;KAC7B,CAAA;IACD,MAAM,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACpC,OAAO,IAAI,CAAA;AACb,CAAC;AAUD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAkB,EAClB,YAA0B,EAC1B,OAAO,GAA0B,EAAE;IAEnC,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,CAAA;IACjD,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY,GAAG,CAAC,CAAA;IAClD,MAAM,QAAQ,GAAG,YAAY,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,WAAW,CAAC,CAAA;IACrE,MAAM,IAAI,GAAiB;QACzB,GAAG,YAAY;QACf,YAAY;QACZ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;KAC7B,CAAA;IACD,MAAM,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACpC,OAAO,IAAI,CAAA;AACb,CAAC;AAYD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAAkB,EAClB,YAA0B,EAC1B,QAAkB,EAClB,OAAO,GAA6B,EAAE;IAEtC,8EAA8E;IAC9E,MAAM,OAAO,GAAG,YAAY,CAAC,YAAY,GAAG,CAAC,CAAA;IAC7C,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC;QAC7E,QAAQ;QACR,MAAM,EAAE,YAAY,CAAC,MAAM;QAC3B,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;QAChE,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;KAC7E,CAAC,CAAA;IACF,IAAI,MAAM,CAAC,EAAE;QAAE,MAAM,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,CAAA;;QAC3D,MAAM,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,CAAA;IAEtD,8EAA8E;IAC9E,gFAAgF;IAChF,yEAAyE;IACzE,sCAAsC;IACtC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAClF,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,MAAM,CAAC;YACb,QAAQ;YACR,MAAM;YACN,YAAY;YACZ,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO;YACnC,IAAI,EAAE,kBAAkB;SACzB,CAAC,CAAA;QACF,OAAO,CAAC,KAAK,EAAE,CAAA;IACjB,CAAC;IAED,8EAA8E;IAC9E,0EAA0E;IAC1E,IAAI,CAAC;QACH,MAAM,cAAc,CAClB,KAAK,EACL,aAAa,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,OAAO,CAAC,EACnE,OAAO,CAAC,mBAAmB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,mBAAmB,EAAE,CACtF,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QACP,kCAAkC;IACpC,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAsBD,kFAAkF;AAClF,SAAS,aAAa,CACpB,KAKC,EACD,OAAO,GAAuC,EAAE;IAEhD,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAA;IACzD,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,CAAA;IACjD,OAAO;QACL,OAAO;QACP,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;QAC5B,QAAQ;QACR,OAAO,EAAE,QAAQ,CAAC,EAAE;QACpB,EAAE,EAAE,kBAAkB,CAAC,GAAG,CAAC;QAC3B,UAAU,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,YAAY,CAAC,WAAW,CAAC;QACzE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;QAC1C,cAAc,EAAE,YAAY,CAAC,EAAE;QAC/B,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAC9D,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;QAC7E,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;KAC1E,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,OAAwB;IAC9C,MAAM,KAAK,GAAG,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAA;IAClG,OAAO,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;AAC7D,CAAC;AAkCD,8EAA8E;AAC9E,MAAM,UAAU,aAAa,CAAC,OAA8B;IAC1D,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAA;IAChC,OAAO;QACL,OAAO,EAAE,YAAY,CAAC,OAAO;QAC7B,GAAG,CAAC,YAAY,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC;QAChF,SAAS,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE;QAC1D,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,EAAE,EAAE,OAAO,CAAC;YACV,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,OAAO,EAAE,YAAY,CAAC,OAAO;YAC7B,SAAS,EAAE,YAAY,CAAC,SAAS;YACjC,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC;QACF,cAAc,EAAE,YAAY,CAAC,EAAE;QAC/B,IAAI,EAAE,YAAY,CAAC,SAAS;KAC7B,CAAA;AACH,CAAC;AAkBD;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,YAA0B,EAC1B,OAAO,GAA8B,EAAE;IAEvC,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAA;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACtD,OAAO;QACL,OAAO,EAAE,YAAY,CAAC,OAAO;QAC7B,GAAG,CAAC,YAAY,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC;QAChF,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;QAC5B,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;QACpB,EAAE,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,YAAY,CAAC,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QACrF,cAAc,EAAE,YAAY,CAAC,EAAE;QAC/B,IAAI,EAAE,MAAM;KACb,CAAA;AACH,CAAC;AAYD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,KAAkB,EAClB,YAA0B,EAC1B,OAAO,GAAiB,EAAE;IAE1B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;IAC7C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,YAAY,EAAE;QAC/C,SAAS,EAAE,GAAG,EAAE;QAChB,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;KACjE,CAAC,CAAA;IACF,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC;QAC7E,QAAQ;QACR,MAAM,EAAE,YAAY,CAAC,MAAM;QAC3B,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;QAChE,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;KAC7E,CAAC,CAAA;IAEF,+EAA+E;IAC/E,MAAM,QAAQ,GAAG,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;IACvF,IAAI,CAAC;QACH,MAAM,cAAc,CAClB,KAAK,EACL,QAAQ,EACR,OAAO,CAAC,mBAAmB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,mBAAmB,EAAE,CACtF,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QACP,kCAAkC;IACpC,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;AACvC,CAAC;AA2BD,SAAS,QAAQ,CAAC,KAAY;IAC5B,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS;QAC7B,CAAC,CAAC,WAAW,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QAC9C,CAAC,CAAC,OAAO,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAA;AAC9C,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAY;IACtC,OAAO,eAAe,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAA;AAC1C,CAAC;AAED,SAAS,eAAe,CAAC,KAAY,EAAE,EAAU;IAC/C,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAA;AAC5C,CAAC;AAED,SAAS,SAAS,CAAC,cAAsB;IACvC,OAAO,kBAAkB,cAAc,EAAE,CAAA;AAC3C,CAAC;AAED,SAAS,cAAc,CAAC,cAAsB;IAC5C,OAAO,oBAAoB,cAAc,GAAG,CAAA;AAC9C,CAAC;AAED,SAAS,WAAW,CAAC,cAAsB,EAAE,UAAkB;IAC7D,OAAO,GAAG,cAAc,CAAC,cAAc,CAAC,GAAG,UAAU,EAAE,CAAA;AACzD,CAAC;AAED,SAAS,YAAY,CAAC,OAAe,EAAE,SAAoB;IACzD,OAAO,kBAAkB,OAAO,IAAI,SAAS,GAAG,CAAA;AAClD,CAAC;AAED,SAAS,SAAS,CAAC,OAAe,EAAE,SAAoB,EAAE,EAAU;IAClE,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,EAAE,EAAE,CAAA;AACnD,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,KAAkB,EAAE,GAAW;IAC7D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAChC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAA;IACrB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAA;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,yCAAyC;QACzC,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,KAAkB,EAAE,GAAW;IACzD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAChC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAA;IACrB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAa,CAAA;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,yCAAyC;QACzC,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,KAAkB,EAAE,YAA0B;IAC7E,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA;IAChC,MAAM,GAAG,GAAG,eAAe,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC,CAAA;IAChE,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;IAE3D,iEAAiE;IACjE,8EAA8E;IAC9E,uDAAuD;IACvD,MAAM,QAAQ,GAAG,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,CAAC,CAAA;IACzF,IAAI,YAAY,CAAC,MAAM,KAAK,QAAQ;QAAE,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;;QACxE,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AACnC,CAAC;AAED,SAAS,MAAM,CAAC,YAA0B;IACxC,IAAI,CAAC,YAAY,CAAC,SAAS;QAAE,OAAO,SAAS,CAAA;IAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;AAC7E,CAAC;AAED,SAAS,UAAU,CAAC,GAAS;IAC3B,yEAAyE;IACzE,4EAA4E;IAC5E,kDAAkD;IAClD,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;IAC5D,OAAO,MAAM,SAAS,IAAI,MAAM,EAAE,EAAE,CAAA;AACtC,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAS;IACnC,6EAA6E;IAC7E,kDAAkD;IAClD,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;IAC5D,OAAO,OAAO,SAAS,IAAI,MAAM,EAAE,EAAE,CAAA;AACvC,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,SAAS,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;AAC3C,CAAC;AAED,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,gCAAgC;IAChC,KAAK,CAAQ;IAEb,YAAY,KAAa;QACvB,KAAK,CAAC,uCAAuC,KAAK,IAAI,CAAC,CAAA;QACvD,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAA;QACzC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,kDAAkD;IAClD,SAAS,CAAQ;IACjB,8EAA8E;IAC9E,OAAO,CAAsC;IAE7C,YAAY,SAAiB,EAAE,OAAO,GAAyC,EAAE;QAC/E,KAAK,CAAC,wBAAwB,SAAS,yBAAyB,CAAC,CAAA;QACjE,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAA;QACzC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;CACF;AAYD,2EAA2E;AAC3E,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C;QACE,KAAK,CAAC,kDAAkD,CAAC,CAAA;QACzD,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAA;IAC1C,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"Webhooks.js","sourceRoot":"","sources":["../../src/internal/Webhooks.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,27 +1,33 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tapimo",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0
|
|
4
|
+
"version": "0.2.0",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"license": "MIT",
|
|
7
|
+
"bin": {
|
|
8
|
+
"tapimo": "./dist/cli/bin.js",
|
|
9
|
+
"tapimo.src": "./src/cli/bin.ts"
|
|
10
|
+
},
|
|
7
11
|
"files": [
|
|
8
12
|
"dist",
|
|
9
|
-
"seeds",
|
|
10
13
|
"src"
|
|
11
14
|
],
|
|
12
15
|
"dependencies": {
|
|
13
16
|
"@hono/node-server": "^2.0.3",
|
|
14
17
|
"@hono/standard-validator": "^0.2.2",
|
|
18
|
+
"accounts": "^0.14.11",
|
|
15
19
|
"hono": "^4.12.26",
|
|
16
20
|
"hono-openapi": "^1.3.0",
|
|
17
21
|
"incur": "^0.4.7",
|
|
18
22
|
"jose": "^6.2.3",
|
|
19
|
-
"
|
|
23
|
+
"kysely": "^0.29.2",
|
|
24
|
+
"mppx": "^0.8.5",
|
|
20
25
|
"nanoid": "^5.1.11",
|
|
21
|
-
"ox": "0.14.
|
|
26
|
+
"ox": "0.14.30",
|
|
27
|
+
"pg": "^8.22.0",
|
|
22
28
|
"tidx.ts": "^0.1.1",
|
|
23
|
-
"viem": "2.54.
|
|
24
|
-
"vocs": "^2.
|
|
29
|
+
"viem": "2.54.6",
|
|
30
|
+
"vocs": "^2.3.3",
|
|
25
31
|
"zod": "^4.4.3"
|
|
26
32
|
},
|
|
27
33
|
"sideEffects": false,
|
|
@@ -33,6 +39,11 @@
|
|
|
33
39
|
"types": "./dist/index.d.ts",
|
|
34
40
|
"default": "./dist/index.js"
|
|
35
41
|
},
|
|
42
|
+
"./apps": {
|
|
43
|
+
"src": "./src/apps/index.ts",
|
|
44
|
+
"types": "./dist/apps/index.d.ts",
|
|
45
|
+
"default": "./dist/apps/index.js"
|
|
46
|
+
},
|
|
36
47
|
"./admin": {
|
|
37
48
|
"src": "./src/admin/index.ts",
|
|
38
49
|
"types": "./dist/admin/index.d.ts",
|
|
@@ -42,6 +53,26 @@
|
|
|
42
53
|
"src": "./src/cloudflare.ts",
|
|
43
54
|
"types": "./dist/cloudflare.d.ts",
|
|
44
55
|
"default": "./dist/cloudflare.js"
|
|
56
|
+
},
|
|
57
|
+
"./data": {
|
|
58
|
+
"src": "./src/apps/data/index.ts",
|
|
59
|
+
"types": "./dist/apps/data/index.d.ts",
|
|
60
|
+
"default": "./dist/apps/data/index.js"
|
|
61
|
+
},
|
|
62
|
+
"./docs": {
|
|
63
|
+
"src": "./src/apps/docs/index.ts",
|
|
64
|
+
"types": "./dist/apps/docs/index.d.ts",
|
|
65
|
+
"default": "./dist/apps/docs/index.js"
|
|
66
|
+
},
|
|
67
|
+
"./platform": {
|
|
68
|
+
"src": "./src/apps/platform/index.ts",
|
|
69
|
+
"types": "./dist/apps/platform/index.d.ts",
|
|
70
|
+
"default": "./dist/apps/platform/index.js"
|
|
71
|
+
},
|
|
72
|
+
"./relay": {
|
|
73
|
+
"src": "./src/apps/relay/index.ts",
|
|
74
|
+
"types": "./dist/apps/relay/index.d.ts",
|
|
75
|
+
"default": "./dist/apps/relay/index.js"
|
|
45
76
|
}
|
|
46
77
|
}
|
|
47
78
|
}
|
package/src/ApiKey.test.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as ApiKeySource from './ApiKeySource.js'
|
|
2
1
|
import * as ApiKey from './ApiKey.js'
|
|
2
|
+
import * as ApiKeys from './ApiKeys.js'
|
|
3
3
|
import * as Store from './internal/Store.js'
|
|
4
4
|
|
|
5
5
|
describe('schema.ApiKey', () => {
|
|
@@ -81,8 +81,8 @@ describe('keyFor', () => {
|
|
|
81
81
|
scopes: ['data:read'],
|
|
82
82
|
tokenLast4: token.slice(-4),
|
|
83
83
|
}
|
|
84
|
-
const
|
|
85
|
-
expect(await
|
|
84
|
+
const state = Store.memory({ entries: [[ApiKey.keyFor(token), JSON.stringify(record)]] })
|
|
85
|
+
expect(await ApiKeys.resolve(state, token)).toMatchObject({
|
|
86
86
|
id: 'key_smoke',
|
|
87
87
|
orgId: 'org_test',
|
|
88
88
|
scopes: ['data:read'],
|
package/src/ApiKey.ts
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The resolved API-key resource and the reusable credential primitives
|
|
3
|
-
* source backend shares.
|
|
2
|
+
* The resolved API-key resource and the reusable credential primitives.
|
|
4
3
|
*
|
|
5
4
|
* Holds the resolved {@link ApiKey} type and its {@link schema}, the token
|
|
6
|
-
* format/generation ({@link generateToken}/{@link generateId}), the
|
|
7
|
-
* derivation ({@link keyFor}/{@link recordPrefix}), and log
|
|
8
|
-
* These live here — not in
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* `
|
|
13
|
-
* persistence.
|
|
5
|
+
* format/generation ({@link generateToken}/{@link generateId}), the
|
|
6
|
+
* storage-key derivation ({@link keyFor}/{@link recordPrefix}), and log
|
|
7
|
+
* {@link redact}ion. These live here — not in the persistence module — so
|
|
8
|
+
* issued and parsed credentials are byte-identical and cannot drift. The
|
|
9
|
+
* persisted record/mint-input shapes and provisioning (mint/list/revoke) live
|
|
10
|
+
* in `./ApiKeys.js`, which composes these primitives with the app's KV state
|
|
11
|
+
* store (`App.create({ kv })`).
|
|
14
12
|
*/
|
|
15
13
|
|
|
16
14
|
import { nanoid } from 'nanoid'
|
|
@@ -24,7 +22,7 @@ import * as Scope from './Scope.js'
|
|
|
24
22
|
export namespace schema {
|
|
25
23
|
/**
|
|
26
24
|
* Canonical schema for resolved API-key metadata, and the single source of
|
|
27
|
-
* truth for the {@link ApiKey} type. `
|
|
25
|
+
* truth for the {@link ApiKey} type. `ApiKeys` derives its persisted
|
|
28
26
|
* `Record` and `MintInput` schemas from this one, so the resolved and
|
|
29
27
|
* persisted shapes cannot drift.
|
|
30
28
|
*/
|
|
@@ -35,6 +33,7 @@ export namespace schema {
|
|
|
35
33
|
id: z.string().check(z.describe('Stable key id.')),
|
|
36
34
|
name: z.optional(z.string()).check(z.describe('Human-readable key name.')),
|
|
37
35
|
orgId: z.string().check(z.describe('Owning organization id.')),
|
|
36
|
+
projectId: z.optional(z.string()).check(z.describe('Owning project id (`prj_…`).')),
|
|
38
37
|
rateLimits: z
|
|
39
38
|
.optional(z.record(z.string(), RateLimit.schema.Limit))
|
|
40
39
|
.check(
|
|
@@ -112,7 +111,7 @@ export function generateId(): string {
|
|
|
112
111
|
export const recordPrefix = 'apikey:'
|
|
113
112
|
|
|
114
113
|
/** Hashes a plaintext token to its at-rest lookup hash (lowercase hex, no `0x`). */
|
|
115
|
-
function hash(token: string): string {
|
|
114
|
+
export function hash(token: string): string {
|
|
116
115
|
return Hash.sha256(Hex.fromString(token)).slice(2)
|
|
117
116
|
}
|
|
118
117
|
|