tapimo 0.0.0 → 0.0.2
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/LICENSE +21 -0
- package/README.md +119 -0
- package/dist/ApiKey.d.ts +65 -0
- package/dist/ApiKey.d.ts.map +1 -0
- package/dist/ApiKey.js +105 -0
- package/dist/ApiKey.js.map +1 -0
- package/dist/ApiKeySource.d.ts +166 -0
- package/dist/ApiKeySource.d.ts.map +1 -0
- package/dist/ApiKeySource.js +234 -0
- package/dist/ApiKeySource.js.map +1 -0
- package/dist/App.d.ts +19317 -0
- package/dist/App.d.ts.map +1 -0
- package/dist/App.js +612 -0
- package/dist/App.js.map +1 -0
- package/dist/Assets.d.ts +44 -0
- package/dist/Assets.d.ts.map +1 -0
- package/dist/Assets.js +23 -0
- package/dist/Assets.js.map +1 -0
- package/dist/Auth.d.ts +2 -0
- package/dist/Auth.d.ts.map +1 -0
- package/dist/Auth.js +2 -0
- package/dist/Auth.js.map +1 -0
- package/dist/Cli.d.ts +21 -0
- package/dist/Cli.d.ts.map +1 -0
- package/dist/Cli.js +13 -0
- package/dist/Cli.js.map +1 -0
- package/dist/Client.d.ts +20 -0
- package/dist/Client.d.ts.map +1 -0
- package/dist/Client.js +24 -0
- package/dist/Client.js.map +1 -0
- package/dist/Metrics.d.ts +70 -0
- package/dist/Metrics.d.ts.map +1 -0
- package/dist/Metrics.js +91 -0
- package/dist/Metrics.js.map +1 -0
- package/dist/Scope.d.ts +35 -0
- package/dist/Scope.d.ts.map +1 -0
- package/dist/Scope.js +38 -0
- package/dist/Scope.js.map +1 -0
- package/dist/Webhooks.d.ts +79 -0
- package/dist/Webhooks.d.ts.map +1 -0
- package/dist/Webhooks.js +107 -0
- package/dist/Webhooks.js.map +1 -0
- package/dist/admin/Access.d.ts +41 -0
- package/dist/admin/Access.d.ts.map +1 -0
- package/dist/admin/Access.js +75 -0
- package/dist/admin/Access.js.map +1 -0
- package/dist/admin/App.d.ts +1221 -0
- package/dist/admin/App.d.ts.map +1 -0
- package/dist/admin/App.js +113 -0
- package/dist/admin/App.js.map +1 -0
- package/dist/admin/apps/api-keys.d.ts +209 -0
- package/dist/admin/apps/api-keys.d.ts.map +1 -0
- package/dist/admin/apps/api-keys.js +129 -0
- package/dist/admin/apps/api-keys.js.map +1 -0
- package/dist/admin/apps/scopes.d.ts +46 -0
- package/dist/admin/apps/scopes.d.ts.map +1 -0
- package/dist/admin/apps/scopes.js +41 -0
- package/dist/admin/apps/scopes.js.map +1 -0
- package/dist/admin/apps/verified-tokens.d.ts +1206 -0
- package/dist/admin/apps/verified-tokens.d.ts.map +1 -0
- package/dist/admin/apps/verified-tokens.js +485 -0
- package/dist/admin/apps/verified-tokens.js.map +1 -0
- package/dist/admin/index.d.ts +3 -0
- package/dist/admin/index.d.ts.map +1 -0
- package/dist/admin/index.js +3 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/ui.generated.d.ts +11 -0
- package/dist/admin/ui.generated.d.ts.map +1 -0
- package/dist/admin/ui.generated.js +43 -0
- package/dist/admin/ui.generated.js.map +1 -0
- package/dist/apps/activities.d.ts +18725 -0
- package/dist/apps/activities.d.ts.map +1 -0
- package/dist/apps/activities.js +3138 -0
- package/dist/apps/activities.js.map +1 -0
- package/dist/apps/addresses.d.ts +3662 -0
- package/dist/apps/addresses.d.ts.map +1 -0
- package/dist/apps/addresses.js +22 -0
- package/dist/apps/addresses.js.map +1 -0
- package/dist/apps/balances.d.ts +342 -0
- package/dist/apps/balances.d.ts.map +1 -0
- package/dist/apps/balances.js +393 -0
- package/dist/apps/balances.js.map +1 -0
- package/dist/apps/blocks.d.ts +931 -0
- package/dist/apps/blocks.d.ts.map +1 -0
- package/dist/apps/blocks.js +689 -0
- package/dist/apps/blocks.js.map +1 -0
- package/dist/apps/coingecko.d.ts +1053 -0
- package/dist/apps/coingecko.d.ts.map +1 -0
- package/dist/apps/coingecko.js +1015 -0
- package/dist/apps/coingecko.js.map +1 -0
- package/dist/apps/exchanges.d.ts +3000 -0
- package/dist/apps/exchanges.d.ts.map +1 -0
- package/dist/apps/exchanges.js +3570 -0
- package/dist/apps/exchanges.js.map +1 -0
- package/dist/apps/fee-amm.d.ts +640 -0
- package/dist/apps/fee-amm.d.ts.map +1 -0
- package/dist/apps/fee-amm.js +815 -0
- package/dist/apps/fee-amm.js.map +1 -0
- package/dist/apps/indexer.d.ts +116 -0
- package/dist/apps/indexer.d.ts.map +1 -0
- package/dist/apps/indexer.js +270 -0
- package/dist/apps/indexer.js.map +1 -0
- package/dist/apps/receipts.d.ts +1438 -0
- package/dist/apps/receipts.d.ts.map +1 -0
- package/dist/apps/receipts.js +874 -0
- package/dist/apps/receipts.js.map +1 -0
- package/dist/apps/rpc.d.ts +173 -0
- package/dist/apps/rpc.d.ts.map +1 -0
- package/dist/apps/rpc.js +191 -0
- package/dist/apps/rpc.js.map +1 -0
- package/dist/apps/tokenlist.d.ts +192 -0
- package/dist/apps/tokenlist.d.ts.map +1 -0
- package/dist/apps/tokenlist.js +153 -0
- package/dist/apps/tokenlist.js.map +1 -0
- package/dist/apps/tokens.d.ts +2246 -0
- package/dist/apps/tokens.d.ts.map +1 -0
- package/dist/apps/tokens.js +1789 -0
- package/dist/apps/tokens.js.map +1 -0
- package/dist/apps/transactions.d.ts +2327 -0
- package/dist/apps/transactions.d.ts.map +1 -0
- package/dist/apps/transactions.js +975 -0
- package/dist/apps/transactions.js.map +1 -0
- package/dist/apps/transfers.d.ts +589 -0
- package/dist/apps/transfers.d.ts.map +1 -0
- package/dist/apps/transfers.js +769 -0
- package/dist/apps/transfers.js.map +1 -0
- package/dist/apps/verified-tokens.d.ts +544 -0
- package/dist/apps/verified-tokens.d.ts.map +1 -0
- package/dist/apps/verified-tokens.js +234 -0
- package/dist/apps/verified-tokens.js.map +1 -0
- package/dist/apps/webhooks.d.ts +7684 -0
- package/dist/apps/webhooks.d.ts.map +1 -0
- package/dist/apps/webhooks.js +2112 -0
- package/dist/apps/webhooks.js.map +1 -0
- package/dist/cloudflare.d.ts +32 -0
- package/dist/cloudflare.d.ts.map +1 -0
- package/dist/cloudflare.js +45 -0
- package/dist/cloudflare.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/Auth.d.ts +298 -0
- package/dist/internal/Auth.d.ts.map +1 -0
- package/dist/internal/Auth.js +618 -0
- package/dist/internal/Auth.js.map +1 -0
- package/dist/internal/Cache.d.ts +74 -0
- package/dist/internal/Cache.d.ts.map +1 -0
- package/dist/internal/Cache.js +215 -0
- package/dist/internal/Cache.js.map +1 -0
- package/dist/internal/Cursor.d.ts +79 -0
- package/dist/internal/Cursor.d.ts.map +1 -0
- package/dist/internal/Cursor.js +116 -0
- package/dist/internal/Cursor.js.map +1 -0
- package/dist/internal/EdgeCache.d.ts +59 -0
- package/dist/internal/EdgeCache.d.ts.map +1 -0
- package/dist/internal/EdgeCache.js +174 -0
- package/dist/internal/EdgeCache.js.map +1 -0
- package/dist/internal/Log.d.ts +104 -0
- package/dist/internal/Log.d.ts.map +1 -0
- package/dist/internal/Log.js +118 -0
- package/dist/internal/Log.js.map +1 -0
- package/dist/internal/MetricSink.d.ts +65 -0
- package/dist/internal/MetricSink.d.ts.map +1 -0
- package/dist/internal/MetricSink.js +146 -0
- package/dist/internal/MetricSink.js.map +1 -0
- package/dist/internal/Mpp.d.ts +71 -0
- package/dist/internal/Mpp.d.ts.map +1 -0
- package/dist/internal/Mpp.js +105 -0
- package/dist/internal/Mpp.js.map +1 -0
- package/dist/internal/OpenApi.d.ts +313 -0
- package/dist/internal/OpenApi.d.ts.map +1 -0
- package/dist/internal/OpenApi.fonts.d.ts +2 -0
- package/dist/internal/OpenApi.fonts.d.ts.map +1 -0
- package/dist/internal/OpenApi.fonts.js +39 -0
- package/dist/internal/OpenApi.fonts.js.map +1 -0
- package/dist/internal/OpenApi.js +335 -0
- package/dist/internal/OpenApi.js.map +1 -0
- package/dist/internal/OpenApi.logo.d.ts +6 -0
- package/dist/internal/OpenApi.logo.d.ts.map +1 -0
- package/dist/internal/OpenApi.logo.js +19 -0
- package/dist/internal/OpenApi.logo.js.map +1 -0
- package/dist/internal/Path.d.ts +5 -0
- package/dist/internal/Path.d.ts.map +1 -0
- package/dist/internal/Path.js +16 -0
- package/dist/internal/Path.js.map +1 -0
- package/dist/internal/RateLimit.d.ts +60 -0
- package/dist/internal/RateLimit.d.ts.map +1 -0
- package/dist/internal/RateLimit.js +48 -0
- package/dist/internal/RateLimit.js.map +1 -0
- package/dist/internal/Response.d.ts +132 -0
- package/dist/internal/Response.d.ts.map +1 -0
- package/dist/internal/Response.js +72 -0
- package/dist/internal/Response.js.map +1 -0
- package/dist/internal/Schema.d.ts +257 -0
- package/dist/internal/Schema.d.ts.map +1 -0
- package/dist/internal/Schema.js +360 -0
- package/dist/internal/Schema.js.map +1 -0
- package/dist/internal/Store.d.ts +204 -0
- package/dist/internal/Store.d.ts.map +1 -0
- package/dist/internal/Store.js +291 -0
- package/dist/internal/Store.js.map +1 -0
- package/dist/internal/Tidx.d.ts +120 -0
- package/dist/internal/Tidx.d.ts.map +1 -0
- package/dist/internal/Tidx.js +156 -0
- package/dist/internal/Tidx.js.map +1 -0
- package/dist/internal/Timing.d.ts +22 -0
- package/dist/internal/Timing.d.ts.map +1 -0
- package/dist/internal/Timing.js +32 -0
- package/dist/internal/Timing.js.map +1 -0
- package/dist/internal/Ttl.d.ts +25 -0
- package/dist/internal/Ttl.d.ts.map +1 -0
- package/dist/internal/Ttl.js +49 -0
- package/dist/internal/Ttl.js.map +1 -0
- package/dist/internal/Value.d.ts +47 -0
- package/dist/internal/Value.d.ts.map +1 -0
- package/dist/internal/Value.js +122 -0
- package/dist/internal/Value.js.map +1 -0
- package/dist/internal/VerifiedTokens.d.ts +228 -0
- package/dist/internal/VerifiedTokens.d.ts.map +1 -0
- package/dist/internal/VerifiedTokens.js +450 -0
- package/dist/internal/VerifiedTokens.js.map +1 -0
- package/dist/internal/Viem.d.ts +2082 -0
- package/dist/internal/Viem.d.ts.map +1 -0
- package/dist/internal/Viem.js +63 -0
- package/dist/internal/Viem.js.map +1 -0
- package/dist/internal/WebhookDestination.d.ts +198 -0
- package/dist/internal/WebhookDestination.d.ts.map +1 -0
- package/dist/internal/WebhookDestination.js +170 -0
- package/dist/internal/WebhookDestination.js.map +1 -0
- package/dist/internal/Webhooks.d.ts +433 -0
- package/dist/internal/Webhooks.d.ts.map +1 -0
- package/dist/internal/Webhooks.js +489 -0
- package/dist/internal/Webhooks.js.map +1 -0
- package/dist/internal/webhookDestinations/betterStack.d.ts +26 -0
- package/dist/internal/webhookDestinations/betterStack.d.ts.map +1 -0
- package/dist/internal/webhookDestinations/betterStack.js +76 -0
- package/dist/internal/webhookDestinations/betterStack.js.map +1 -0
- package/dist/internal/webhookDestinations/slack.d.ts +59 -0
- package/dist/internal/webhookDestinations/slack.d.ts.map +1 -0
- package/dist/internal/webhookDestinations/slack.js +422 -0
- package/dist/internal/webhookDestinations/slack.js.map +1 -0
- package/dist/internal/webhookDestinations/url.d.ts +17 -0
- package/dist/internal/webhookDestinations/url.d.ts.map +1 -0
- package/dist/internal/webhookDestinations/url.js +130 -0
- package/dist/internal/webhookDestinations/url.js.map +1 -0
- package/dist/openrpc.json +5302 -0
- package/package.json +46 -4
- package/seeds/31318/icons/0x20c0000000000000000000000000000000000000.svg +1 -0
- package/seeds/31318/icons/0x20c0000000000000000000000000000000000001.svg +1 -0
- package/seeds/31318/icons/0x20c0000000000000000000000000000000000002.svg +1 -0
- package/seeds/31318/icons/0x20c0000000000000000000000000000000000003.svg +1 -0
- package/seeds/31318/verified-tokens.json +30 -0
- package/seeds/4217/icons/0x20c0000000000000000000000000000000000000.svg +25 -0
- package/seeds/4217/icons/0x20c000000000000000000000048c8f36df1c9a4a.svg +1 -0
- package/seeds/4217/icons/0x20c0000000000000000000000520792dcccccccc.svg +1 -0
- package/seeds/4217/icons/0x20c0000000000000000000000a6da882d075a4c3.svg +4 -0
- package/seeds/4217/icons/0x20c000000000000000000000111111111e910f0f.svg +30 -0
- package/seeds/4217/icons/0x20c00000000000000000000014f22ca97301eb73.svg +1 -0
- package/seeds/4217/icons/0x20c0000000000000000000001621e21f71cf12fb.svg +1 -0
- package/seeds/4217/icons/0x20c0000000000000000000002f52d5cc21a3207b.svg +1 -0
- package/seeds/4217/icons/0x20c0000000000000000000003158081efd85bfc2.svg +11 -0
- package/seeds/4217/icons/0x20c0000000000000000000003554d28269e0f3c2.svg +1 -0
- package/seeds/4217/icons/0x20c000000000000000000000383a23bacb546ab9.svg +1 -0
- package/seeds/4217/icons/0x20c00000000000000000000042109aef2f8b28e1.png +0 -0
- package/seeds/4217/icons/0x20c0000000000000000000005c0bac7cef389a11.svg +1 -0
- package/seeds/4217/icons/0x20c0000000000000000000006fd9a167923ba194.png +0 -0
- package/seeds/4217/icons/0x20c0000000000000000000007f7ba549dd0251b9.svg +1 -0
- package/seeds/4217/icons/0x20c0000000000000000000008191667423f70e67.svg +5 -0
- package/seeds/4217/icons/0x20c0000000000000000000008ee4fcff88888888.svg +1 -0
- package/seeds/4217/icons/0x20c0000000000000000000009a4a4b17e0dc6651.svg +1 -0
- package/seeds/4217/icons/0x20c000000000000000000000ab02d39df30bd17e.svg +1 -0
- package/seeds/4217/icons/0x20c000000000000000000000ae247a1130450f09.svg +1 -0
- package/seeds/4217/icons/0x20c000000000000000000000aeed2ec36a54d0e5.svg +1 -0
- package/seeds/4217/icons/0x20c000000000000000000000b9537d11c60e8b50.svg +1 -0
- package/seeds/4217/icons/0x20c000000000000000000000bd95bfb69fbe6ce3.svg +1 -0
- package/seeds/4217/icons/0x20c000000000000000000000c412ec89d0c08be5.svg +1 -0
- package/seeds/4217/icons/0x20c000000000000000000000f047dd7018e50367.png +0 -0
- package/seeds/4217/verified-tokens.json +177 -0
- package/seeds/42431/icons/0x20c0000000000000000000000000000000000000.svg +25 -0
- package/seeds/42431/icons/0x20c0000000000000000000000000000000000001.svg +1 -0
- package/seeds/42431/icons/0x20c0000000000000000000000000000000000002.svg +1 -0
- package/seeds/42431/icons/0x20c0000000000000000000000000000000000003.svg +1 -0
- package/seeds/42431/icons/0x20c0000000000000000000009e8d7eb59b783726.svg +1 -0
- package/seeds/42431/icons/0x20c000000000000000000000d72572838bbee59c.svg +1 -0
- package/seeds/42431/verified-tokens.json +44 -0
- package/seeds/openrpc/README.md +27 -0
- package/seeds/openrpc/execution-apis.json +8989 -0
- package/src/ApiKey.test.ts +91 -0
- package/src/ApiKey.ts +122 -0
- package/src/ApiKeySource.test-d.ts +11 -0
- package/src/ApiKeySource.test.ts +295 -0
- package/src/ApiKeySource.ts +303 -0
- package/src/App.test-d.ts +38 -0
- package/src/App.test.ts +65927 -0
- package/src/App.ts +855 -0
- package/src/Assets.ts +58 -0
- package/src/Auth.ts +1 -0
- package/src/Cli.test.ts +81 -0
- package/src/Cli.ts +38 -0
- package/src/Client.test-d.ts +1438 -0
- package/src/Client.test.ts +134 -0
- package/src/Client.ts +45 -0
- package/src/Metrics.ts +154 -0
- package/src/Scope.ts +50 -0
- package/src/Webhooks.test.ts +49 -0
- package/src/Webhooks.ts +172 -0
- package/src/admin/Access.test.ts +130 -0
- package/src/admin/Access.ts +87 -0
- package/src/admin/App.test.ts +225 -0
- package/src/admin/App.ts +216 -0
- package/src/admin/apps/api-keys.test.ts +156 -0
- package/src/admin/apps/api-keys.ts +157 -0
- package/src/admin/apps/scopes.test.ts +52 -0
- package/src/admin/apps/scopes.ts +47 -0
- package/src/admin/apps/verified-tokens.test.ts +415 -0
- package/src/admin/apps/verified-tokens.ts +566 -0
- package/src/admin/index.ts +2 -0
- package/src/admin/ui/plugin.ts +135 -0
- package/src/admin/ui/src/components/Checkbox.tsx +22 -0
- package/src/admin/ui/src/components/Dialog.tsx +32 -0
- package/src/admin/ui/src/components/MobileProfile.tsx +31 -0
- package/src/admin/ui/src/components/Page.tsx +53 -0
- package/src/admin/ui/src/components/TempoLogo.tsx +37 -0
- package/src/admin/ui/src/fonts/Pilat-Demi.woff2 +0 -0
- package/src/admin/ui/src/fonts/Pilat-Regular.woff2 +0 -0
- package/src/admin/ui/src/lib/api-keys.ts +63 -0
- package/src/admin/ui/src/lib/client.ts +15 -0
- package/src/admin/ui/src/lib/config.ts +57 -0
- package/src/admin/ui/src/lib/query-client.ts +26 -0
- package/src/admin/ui/src/lib/scopes.ts +25 -0
- package/src/admin/ui/src/lib/verified-tokens.ts +89 -0
- package/src/admin/ui/src/lib/wagmi.ts +18 -0
- package/src/admin/ui/src/routeTree.gen.ts +104 -0
- package/src/admin/ui/src/router.tsx +25 -0
- package/src/admin/ui/src/routes/__root.tsx +219 -0
- package/src/admin/ui/src/routes/api-keys.tsx +329 -0
- package/src/admin/ui/src/routes/index.tsx +7 -0
- package/src/admin/ui/src/routes/verified-tokens.tsx +331 -0
- package/src/admin/ui/src/styles.css +20 -0
- package/src/admin/ui/tsconfig.json +16 -0
- package/src/admin/ui/vite.config.ts +29 -0
- package/src/admin/ui.generated.ts +60 -0
- package/src/apps/activities.test.ts +1020 -0
- package/src/apps/activities.ts +3934 -0
- package/src/apps/addresses.ts +24 -0
- package/src/apps/balances.test.ts +274 -0
- package/src/apps/balances.ts +533 -0
- package/src/apps/blocks.test.ts +385 -0
- package/src/apps/blocks.ts +896 -0
- package/src/apps/coingecko.test.ts +218 -0
- package/src/apps/coingecko.ts +1383 -0
- package/src/apps/exchanges.test.ts +958 -0
- package/src/apps/exchanges.ts +4773 -0
- package/src/apps/fee-amm.test.ts +321 -0
- package/src/apps/fee-amm.ts +1121 -0
- package/src/apps/indexer.test.ts +153 -0
- package/src/apps/indexer.ts +330 -0
- package/src/apps/receipts.test.ts +285 -0
- package/src/apps/receipts.ts +1193 -0
- package/src/apps/rpc.test.ts +302 -0
- package/src/apps/rpc.ts +222 -0
- package/src/apps/tokenlist.test.ts +80 -0
- package/src/apps/tokenlist.ts +207 -0
- package/src/apps/tokens.test.ts +1062 -0
- package/src/apps/tokens.ts +2292 -0
- package/src/apps/transactions.test.ts +408 -0
- package/src/apps/transactions.ts +1363 -0
- package/src/apps/transfers.test.ts +371 -0
- package/src/apps/transfers.ts +1116 -0
- package/src/apps/verified-tokens.test.ts +114 -0
- package/src/apps/verified-tokens.ts +295 -0
- package/src/apps/webhooks.test.ts +1937 -0
- package/src/apps/webhooks.ts +2926 -0
- package/src/cloudflare.ts +55 -0
- package/src/index.ts +15 -0
- package/src/internal/Auth.test.ts +980 -0
- package/src/internal/Auth.ts +1012 -0
- package/src/internal/Cache.test.ts +240 -0
- package/src/internal/Cache.ts +262 -0
- package/src/internal/Cursor.test.ts +100 -0
- package/src/internal/Cursor.ts +149 -0
- package/src/internal/EdgeCache.test.ts +234 -0
- package/src/internal/EdgeCache.ts +224 -0
- package/src/internal/Errors.ts +14 -0
- package/src/internal/Log.test.ts +244 -0
- package/src/internal/Log.ts +216 -0
- package/src/internal/MetricSink.ts +220 -0
- package/src/internal/Mpp.test.ts +64 -0
- package/src/internal/Mpp.ts +141 -0
- package/src/internal/OpenApi.fonts.ts +38 -0
- package/src/internal/OpenApi.logo.ts +18 -0
- package/src/internal/OpenApi.ts +488 -0
- package/src/internal/Path.test.ts +14 -0
- package/src/internal/Path.ts +15 -0
- package/src/internal/RateLimit.test.ts +93 -0
- package/src/internal/RateLimit.ts +93 -0
- package/src/internal/Response.ts +131 -0
- package/src/internal/Schema.test.ts +34 -0
- package/src/internal/Schema.ts +523 -0
- package/src/internal/Store.test.ts +545 -0
- package/src/internal/Store.ts +526 -0
- package/src/internal/Tidx.local.test.ts +33 -0
- package/src/internal/Tidx.test.ts +294 -0
- package/src/internal/Tidx.ts +238 -0
- package/src/internal/Timing.test.ts +22 -0
- package/src/internal/Timing.ts +62 -0
- package/src/internal/Ttl.test.ts +18 -0
- package/src/internal/Ttl.ts +59 -0
- package/src/internal/Value.ts +114 -0
- package/src/internal/VerifiedTokens.test.ts +333 -0
- package/src/internal/VerifiedTokens.ts +645 -0
- package/src/internal/Viem.test.ts +115 -0
- package/src/internal/Viem.ts +165 -0
- package/src/internal/WebhookDestination.test.ts +648 -0
- package/src/internal/WebhookDestination.ts +331 -0
- package/src/internal/Webhooks.test.ts +668 -0
- package/src/internal/Webhooks.ts +940 -0
- package/src/internal/webhookDestinations/betterStack.ts +91 -0
- package/src/internal/webhookDestinations/slack.ts +496 -0
- package/src/internal/webhookDestinations/url.ts +128 -0
- package/src/openrpc.json +5302 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import type * as Auth from './Auth.js'
|
|
2
|
+
import * as Viem from './Viem.js'
|
|
3
|
+
|
|
4
|
+
/** Anonymous (public) request principal. */
|
|
5
|
+
const publicPrincipal: Auth.Principal = { id: 'pub', type: 'public' }
|
|
6
|
+
/** Authenticated API-key request principal. */
|
|
7
|
+
const apiKeyPrincipal: Auth.Principal = {
|
|
8
|
+
apiKey: {} as never,
|
|
9
|
+
environment: 'production',
|
|
10
|
+
id: 'key_test',
|
|
11
|
+
orgId: 'org_test',
|
|
12
|
+
type: 'api_key',
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
describe('isMainnet', () => {
|
|
16
|
+
test('is true only for the mainnet chain id', () => {
|
|
17
|
+
expect(Viem.isMainnet(Viem.chainId.mainnet)).toBe(true)
|
|
18
|
+
expect(Viem.isMainnet(Viem.chainId.testnet)).toBe(false)
|
|
19
|
+
expect(Viem.isMainnet(31337)).toBe(false)
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
test('mainnet is the default chain', () => {
|
|
23
|
+
expect(Viem.defaultChainId).toBe(Viem.chainId.mainnet)
|
|
24
|
+
})
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
describe('resolve', () => {
|
|
28
|
+
test('defaults to the per-chain RPC URL', () => {
|
|
29
|
+
expect(Viem.resolve(undefined, { chainId: 4217, principal: null })).toMatchInlineSnapshot(`
|
|
30
|
+
{
|
|
31
|
+
"basicAuth": undefined,
|
|
32
|
+
"url": "https://rpc.tempo.xyz",
|
|
33
|
+
}
|
|
34
|
+
`)
|
|
35
|
+
expect(Viem.resolve(undefined, { chainId: 42431, principal: null })).toMatchInlineSnapshot(`
|
|
36
|
+
{
|
|
37
|
+
"basicAuth": undefined,
|
|
38
|
+
"url": "https://rpc.testnet.tempo.xyz",
|
|
39
|
+
}
|
|
40
|
+
`)
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
test('uses a static config override', () => {
|
|
44
|
+
expect(
|
|
45
|
+
Viem.resolve(
|
|
46
|
+
{ basicAuth: 'user:pass', url: (chainId) => `https://${chainId}.rpc.test` },
|
|
47
|
+
{ chainId: 4217, principal: null },
|
|
48
|
+
),
|
|
49
|
+
).toMatchInlineSnapshot(`
|
|
50
|
+
{
|
|
51
|
+
"basicAuth": "user:pass",
|
|
52
|
+
"url": "https://4217.rpc.test",
|
|
53
|
+
}
|
|
54
|
+
`)
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
test('the static form ignores the principal', () => {
|
|
58
|
+
const rpc = { basicAuth: 'user:pass', url: () => 'https://internal.rpc' }
|
|
59
|
+
expect(Viem.resolve(rpc, { chainId: 4217, principal: publicPrincipal })).toMatchInlineSnapshot(`
|
|
60
|
+
{
|
|
61
|
+
"basicAuth": "user:pass",
|
|
62
|
+
"url": "https://internal.rpc",
|
|
63
|
+
}
|
|
64
|
+
`)
|
|
65
|
+
expect(Viem.resolve(rpc, { chainId: 4217, principal: apiKeyPrincipal })).toMatchInlineSnapshot(`
|
|
66
|
+
{
|
|
67
|
+
"basicAuth": "user:pass",
|
|
68
|
+
"url": "https://internal.rpc",
|
|
69
|
+
}
|
|
70
|
+
`)
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
test('the resolver form routes anonymous callers to a separate upstream', () => {
|
|
74
|
+
const rpc = ({ principal }: Viem.resolve.Context) =>
|
|
75
|
+
principal?.type === 'public'
|
|
76
|
+
? { url: 'https://rpc.tempo.xyz' }
|
|
77
|
+
: { basicAuth: 'user:pass', url: 'https://internal.rpc' }
|
|
78
|
+
expect(Viem.resolve(rpc, { chainId: 4217, principal: publicPrincipal })).toMatchInlineSnapshot(`
|
|
79
|
+
{
|
|
80
|
+
"basicAuth": undefined,
|
|
81
|
+
"url": "https://rpc.tempo.xyz",
|
|
82
|
+
}
|
|
83
|
+
`)
|
|
84
|
+
expect(Viem.resolve(rpc, { chainId: 4217, principal: apiKeyPrincipal })).toMatchInlineSnapshot(`
|
|
85
|
+
{
|
|
86
|
+
"basicAuth": "user:pass",
|
|
87
|
+
"url": "https://internal.rpc",
|
|
88
|
+
}
|
|
89
|
+
`)
|
|
90
|
+
})
|
|
91
|
+
|
|
92
|
+
test('a null principal (trusted poller) takes the non-public branch', () => {
|
|
93
|
+
const rpc = ({ principal }: Viem.resolve.Context) =>
|
|
94
|
+
principal?.type === 'public'
|
|
95
|
+
? { url: 'https://rpc.tempo.xyz' }
|
|
96
|
+
: { basicAuth: 'user:pass', url: 'https://internal.rpc' }
|
|
97
|
+
expect(Viem.resolve(rpc, { chainId: 4217, principal: null })).toMatchInlineSnapshot(`
|
|
98
|
+
{
|
|
99
|
+
"basicAuth": "user:pass",
|
|
100
|
+
"url": "https://internal.rpc",
|
|
101
|
+
}
|
|
102
|
+
`)
|
|
103
|
+
})
|
|
104
|
+
|
|
105
|
+
test('a resolver that omits url falls back to the built-in public host', () => {
|
|
106
|
+
const rpc = () => ({})
|
|
107
|
+
expect(Viem.resolve(rpc, { chainId: 42431, principal: publicPrincipal }))
|
|
108
|
+
.toMatchInlineSnapshot(`
|
|
109
|
+
{
|
|
110
|
+
"basicAuth": undefined,
|
|
111
|
+
"url": "https://rpc.testnet.tempo.xyz",
|
|
112
|
+
}
|
|
113
|
+
`)
|
|
114
|
+
})
|
|
115
|
+
})
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { createClient, http, publicActions } from 'viem'
|
|
2
|
+
import type { Client as core_Client, HttpTransport, PublicActions } from 'viem'
|
|
3
|
+
import { tempoActions } from 'viem/tempo'
|
|
4
|
+
import type { TempoActions } from 'viem/tempo'
|
|
5
|
+
import { tempoMainnet, tempoTestnet } from 'viem/tempo/chains'
|
|
6
|
+
import type * as z from 'zod/mini'
|
|
7
|
+
|
|
8
|
+
import type * as Auth from './Auth.js'
|
|
9
|
+
import type * as Schema from './Schema.js'
|
|
10
|
+
|
|
11
|
+
/** Known Tempo chains keyed by id, for metadata lookups. */
|
|
12
|
+
export const chains = [tempoMainnet, tempoTestnet]
|
|
13
|
+
|
|
14
|
+
/** Tempo chain ids keyed by network. */
|
|
15
|
+
export const chainId = {
|
|
16
|
+
mainnet: tempoMainnet.id,
|
|
17
|
+
testnet: tempoTestnet.id,
|
|
18
|
+
} as const
|
|
19
|
+
|
|
20
|
+
/** Default Tempo chain id. */
|
|
21
|
+
export const defaultChainId = chainId.mainnet
|
|
22
|
+
|
|
23
|
+
/** Whether a chain id is Tempo mainnet. */
|
|
24
|
+
export function isMainnet(id: number): boolean {
|
|
25
|
+
return id === chainId.mainnet
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** Default Tempo RPC URLs keyed by chain id. */
|
|
29
|
+
export const url: Record<number, string> = {
|
|
30
|
+
[chainId.mainnet]: 'https://rpc.tempo.xyz',
|
|
31
|
+
[chainId.testnet]: 'https://rpc.testnet.tempo.xyz',
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** Tempo chain id. */
|
|
35
|
+
export type ChainId = z.output<typeof Schema.ChainId>
|
|
36
|
+
|
|
37
|
+
/** Tempo chain metadata with a configurable chain id. */
|
|
38
|
+
export type Chain = Omit<typeof tempoMainnet, 'id'> & { id: ChainId }
|
|
39
|
+
|
|
40
|
+
/** Gets a Tempo viem client for a chain id. */
|
|
41
|
+
export type GetClient = (chainId?: ChainId) => getClient.ReturnType
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Resolves an RPC URL for a Tempo chain id. May return `undefined` to fall back
|
|
45
|
+
* to the built-in {@link url} map (e.g. for a chain the resolver doesn't serve).
|
|
46
|
+
*/
|
|
47
|
+
export type UrlResolver = (chainId: ChainId) => string | undefined
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Resolves the effective RPC config for a single request.
|
|
51
|
+
*
|
|
52
|
+
* Accepts either a static config object or a per-request resolver function. The
|
|
53
|
+
* resolver receives a {@link resolve.Context} (`chainId` plus the request
|
|
54
|
+
* `principal`), so callers can route traffic per caller — e.g. send anonymous
|
|
55
|
+
* (`principal.type === 'public'`) traffic to a separate, no-auth upstream. A
|
|
56
|
+
* `null` principal denotes a trusted, non-request caller (the scheduled
|
|
57
|
+
* webhook poller). A missing `url` falls back to the built-in public host map
|
|
58
|
+
* ({@link url}); a missing `basicAuth` means no Basic auth is sent.
|
|
59
|
+
*
|
|
60
|
+
* Memoization is keyed on the resolved output (see `App.create` and
|
|
61
|
+
* {@link Tidx.createGetClient}), not the context, so a resolver may branch on
|
|
62
|
+
* any principal field without unbounded client cardinality: callers that
|
|
63
|
+
* resolve to the same upstream share a client. Pass the result to
|
|
64
|
+
* {@link getClient} (or let `getClient` resolve for you) to build a client.
|
|
65
|
+
*/
|
|
66
|
+
export function resolve(
|
|
67
|
+
rpc: getClient.Rpc | undefined,
|
|
68
|
+
context: resolve.Context,
|
|
69
|
+
): resolve.Resolved {
|
|
70
|
+
const config = typeof rpc === 'function' ? rpc(context) : rpc
|
|
71
|
+
return {
|
|
72
|
+
basicAuth: config?.basicAuth,
|
|
73
|
+
url:
|
|
74
|
+
(typeof config?.url === 'function' ? config.url(context.chainId) : config?.url) ??
|
|
75
|
+
url[context.chainId],
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export declare namespace resolve {
|
|
80
|
+
/** RPC resolution context. */
|
|
81
|
+
type Context = {
|
|
82
|
+
/** Tempo chain id. */
|
|
83
|
+
chainId: ChainId
|
|
84
|
+
/**
|
|
85
|
+
* Request principal, or `null` for a trusted non-request caller (the
|
|
86
|
+
* scheduled webhook poller). Anonymous and MPP-paid public requests carry a
|
|
87
|
+
* `type: 'public'` principal; authenticated requests a `type: 'api_key'` one.
|
|
88
|
+
*/
|
|
89
|
+
principal: Auth.Principal | null
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/** Resolved RPC config for a single request. */
|
|
93
|
+
type Resolved = {
|
|
94
|
+
/** Basic auth credentials, or undefined to send no Basic auth. */
|
|
95
|
+
basicAuth?: string | undefined
|
|
96
|
+
/**
|
|
97
|
+
* Resolved RPC URL, or `undefined` when neither a configured `rpc` nor the
|
|
98
|
+
* built-in {@link url} map covers the chain (e.g. an unconfigured localnet).
|
|
99
|
+
* A `undefined` URL falls through to viem's chain default transport.
|
|
100
|
+
*/
|
|
101
|
+
url: string | undefined
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export function getClient(options: getClient.Options): getClient.ReturnType {
|
|
106
|
+
const { chainId = defaultChainId, principal = null, rpc } = options
|
|
107
|
+
const { basicAuth, url: rpcUrl } = resolve(rpc, { chainId, principal })
|
|
108
|
+
|
|
109
|
+
return createClient({
|
|
110
|
+
// Auto-batch `eth_call`s within the same macrotask into a single
|
|
111
|
+
// deployless multicall. Lets call sites issue `Promise.all` of N reads
|
|
112
|
+
// (e.g. `balanceOf` across many tokens) and pay one RPC round-trip.
|
|
113
|
+
// Deployless mode bytecode-injects multicall3 so Tempo, which doesn't
|
|
114
|
+
// configure a deployed multicall3, can still serve the aggregated call.
|
|
115
|
+
batch: { multicall: { deployless: true } },
|
|
116
|
+
chain: { ...tempoMainnet, id: chainId },
|
|
117
|
+
transport: http(
|
|
118
|
+
rpcUrl,
|
|
119
|
+
basicAuth ? { fetchOptions: { headers: { Authorization: `Basic ${btoa(basicAuth)}` } } } : {},
|
|
120
|
+
),
|
|
121
|
+
})
|
|
122
|
+
.extend(publicActions)
|
|
123
|
+
.extend(tempoActions())
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export declare namespace getClient {
|
|
127
|
+
/** Tempo viem client with public and Tempo action helpers. */
|
|
128
|
+
type ReturnType = core_Client<
|
|
129
|
+
HttpTransport,
|
|
130
|
+
Chain,
|
|
131
|
+
undefined,
|
|
132
|
+
undefined,
|
|
133
|
+
// Omit core's ERC-20 `token` namespace; `tempoActions` shadows it at runtime.
|
|
134
|
+
Omit<PublicActions<HttpTransport, Chain, undefined>, 'token'> & TempoActions<Chain, undefined>
|
|
135
|
+
>
|
|
136
|
+
|
|
137
|
+
/** Options for getting a Tempo viem client. */
|
|
138
|
+
type Options = {
|
|
139
|
+
/** Tempo chain id. */
|
|
140
|
+
chainId?: ChainId | undefined
|
|
141
|
+
/** Request principal, or `null`/omitted for a trusted non-request caller. */
|
|
142
|
+
principal?: Auth.Principal | null | undefined
|
|
143
|
+
/** Tempo RPC options. */
|
|
144
|
+
rpc?: Rpc | undefined
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Tempo RPC options: either a static config, or a per-request resolver
|
|
149
|
+
* function that receives a {@link resolve.Context} and returns the config to
|
|
150
|
+
* use (e.g. routing anonymous callers to a public, no-auth RPC).
|
|
151
|
+
*/
|
|
152
|
+
type Rpc =
|
|
153
|
+
| {
|
|
154
|
+
/** Basic auth credentials for RPC requests. */
|
|
155
|
+
basicAuth?: string | undefined
|
|
156
|
+
/** Resolves the RPC URL for a Tempo chain id. */
|
|
157
|
+
url?: UrlResolver | undefined
|
|
158
|
+
}
|
|
159
|
+
| ((context: resolve.Context) => {
|
|
160
|
+
/** Basic auth credentials for RPC requests, or undefined for none. */
|
|
161
|
+
basicAuth?: string | undefined
|
|
162
|
+
/** RPC URL to use; falls back to the built-in public host when omitted. */
|
|
163
|
+
url?: string | undefined
|
|
164
|
+
})
|
|
165
|
+
}
|