tapimo 0.4.4 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/App.d.ts +4701 -3416
- package/dist/App.d.ts.map +1 -1
- package/dist/App.js +24 -2
- package/dist/App.js.map +1 -1
- package/dist/Assets.js +3 -3
- package/dist/Assets.js.map +1 -1
- package/dist/Scope.d.ts +18 -1
- package/dist/Scope.d.ts.map +1 -1
- package/dist/Scope.js +23 -3
- package/dist/Scope.js.map +1 -1
- package/dist/Webhooks.d.ts +1 -1
- package/dist/Webhooks.d.ts.map +1 -1
- package/dist/Webhooks.js +5 -10
- package/dist/Webhooks.js.map +1 -1
- package/dist/admin/App.d.ts +6 -34
- package/dist/admin/App.d.ts.map +1 -1
- package/dist/admin/apps/api-keys.d.ts +3 -3
- package/dist/admin/apps/api-keys.d.ts.map +1 -1
- package/dist/admin/apps/api-keys.js +4 -1
- package/dist/admin/apps/api-keys.js.map +1 -1
- package/dist/admin/apps/scopes.d.ts +6 -34
- package/dist/admin/apps/scopes.d.ts.map +1 -1
- package/dist/admin/apps/scopes.js +2 -2
- package/dist/admin/apps/scopes.js.map +1 -1
- package/dist/admin/apps/verified-tokens.d.ts +57 -57
- package/dist/admin/ui.generated.d.ts +1 -1
- package/dist/admin/ui.generated.js +33 -33
- package/dist/admin/ui.generated.js.map +1 -1
- package/dist/apps/data/App.d.ts +4574 -4277
- package/dist/apps/data/App.d.ts.map +1 -1
- package/dist/apps/data/App.js +155 -77
- package/dist/apps/data/App.js.map +1 -1
- package/dist/apps/data/FundingQuoteProviders.d.ts +109 -0
- package/dist/apps/data/FundingQuoteProviders.d.ts.map +1 -0
- package/dist/apps/data/FundingQuoteProviders.js +464 -0
- package/dist/apps/data/FundingQuoteProviders.js.map +1 -0
- package/dist/apps/data/index.d.ts +1 -1
- package/dist/apps/data/index.js +1 -1
- package/dist/apps/data/routes/activities.d.ts +26 -26
- package/dist/apps/data/routes/addresses.d.ts +38 -38
- package/dist/apps/data/routes/balances.d.ts +45 -45
- package/dist/apps/data/routes/balances.d.ts.map +1 -1
- package/dist/apps/data/routes/balances.js +67 -149
- package/dist/apps/data/routes/balances.js.map +1 -1
- package/dist/apps/data/routes/blocks.d.ts +2 -3
- package/dist/apps/data/routes/blocks.d.ts.map +1 -1
- package/dist/apps/data/routes/blocks.js +3 -5
- package/dist/apps/data/routes/blocks.js.map +1 -1
- package/dist/apps/data/routes/coingecko.d.ts +177 -176
- package/dist/apps/data/routes/coingecko.d.ts.map +1 -1
- package/dist/apps/data/routes/coingecko.js +3 -8
- package/dist/apps/data/routes/coingecko.js.map +1 -1
- package/dist/apps/data/routes/funding.d.ts +131 -228
- package/dist/apps/data/routes/funding.d.ts.map +1 -1
- package/dist/apps/data/routes/funding.js +152 -219
- package/dist/apps/data/routes/funding.js.map +1 -1
- package/dist/apps/data/routes/indexer.d.ts +34 -34
- package/dist/apps/data/routes/indexer.d.ts.map +1 -1
- package/dist/apps/data/routes/indexer.js +9 -2
- package/dist/apps/data/routes/indexer.js.map +1 -1
- package/dist/apps/data/routes/receipts.d.ts +228 -228
- package/dist/apps/data/routes/rpc.d.ts.map +1 -1
- package/dist/apps/data/routes/rpc.js +86 -16
- package/dist/apps/data/routes/rpc.js.map +1 -1
- package/dist/apps/data/routes/tokenlist.d.ts +12 -12
- package/dist/apps/data/routes/verified-tokens.d.ts +5 -5
- package/dist/apps/data/routes/webhooks.d.ts +340 -0
- package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
- package/dist/apps/data/routes/webhooks.js +13 -1
- package/dist/apps/data/routes/webhooks.js.map +1 -1
- package/dist/apps/index.d.ts +1 -1
- package/dist/apps/index.js +1 -1
- package/dist/apps/management/App.d.ts +1833 -851
- package/dist/apps/management/App.d.ts.map +1 -1
- package/dist/apps/management/App.js +4 -0
- package/dist/apps/management/App.js.map +1 -1
- package/dist/apps/management/routes/api-keys.d.ts +41 -41
- package/dist/apps/management/routes/api-keys.js +2 -2
- package/dist/apps/management/routes/api-keys.js.map +1 -1
- package/dist/apps/management/routes/billing.d.ts +48 -48
- package/dist/apps/management/routes/invitations.d.ts +132 -132
- package/dist/apps/management/routes/invite-links.d.ts +1100 -0
- package/dist/apps/management/routes/invite-links.d.ts.map +1 -0
- package/dist/apps/management/routes/invite-links.js +411 -0
- package/dist/apps/management/routes/invite-links.js.map +1 -0
- package/dist/apps/management/routes/members.d.ts +41 -41
- package/dist/apps/management/routes/orgs.d.ts +92 -92
- package/dist/apps/management/routes/projects.d.ts +9 -9
- package/dist/apps/management/routes/scopes.d.ts.map +1 -1
- package/dist/apps/management/routes/scopes.js +2 -2
- package/dist/apps/management/routes/scopes.js.map +1 -1
- package/dist/apps/management/routes/usage.d.ts +24 -24
- package/dist/apps/mcp.js +2 -2
- package/dist/apps/mcp.js.map +1 -1
- package/dist/apps/relay/App.d.ts +2 -2
- package/dist/apps/relay/App.d.ts.map +1 -1
- package/dist/apps/relay/App.js +44 -6
- package/dist/apps/relay/App.js.map +1 -1
- package/dist/db/Db.d.ts +3 -0
- package/dist/db/Db.d.ts.map +1 -1
- package/dist/db/Db.js +57 -0
- package/dist/db/Db.js.map +1 -1
- package/dist/db/Schema.d.ts +31 -0
- package/dist/db/Schema.d.ts.map +1 -1
- package/dist/db/Schema.js +31 -0
- package/dist/db/Schema.js.map +1 -1
- package/dist/db/tables/inviteLinks.d.ts +42 -0
- package/dist/db/tables/inviteLinks.d.ts.map +1 -0
- package/dist/db/tables/inviteLinks.js +148 -0
- package/dist/db/tables/inviteLinks.js.map +1 -0
- package/dist/db/tables/organizations.d.ts.map +1 -1
- package/dist/db/tables/organizations.js +2 -0
- package/dist/db/tables/organizations.js.map +1 -1
- package/dist/db/tables/sponsoredTransactions.d.ts.map +1 -1
- package/dist/db/tables/sponsoredTransactions.js +6 -2
- package/dist/db/tables/sponsoredTransactions.js.map +1 -1
- package/dist/handlers/relay.d.ts.map +1 -1
- package/dist/handlers/relay.js +13 -3
- package/dist/handlers/relay.js.map +1 -1
- package/dist/internal/Auth.d.ts +9 -1
- package/dist/internal/Auth.d.ts.map +1 -1
- package/dist/internal/Auth.js +138 -10
- package/dist/internal/Auth.js.map +1 -1
- package/dist/internal/EdgeCache.d.ts +3 -1
- package/dist/internal/EdgeCache.d.ts.map +1 -1
- package/dist/internal/EdgeCache.js +17 -2
- package/dist/internal/EdgeCache.js.map +1 -1
- package/dist/internal/{FundingRoutes.d.ts → FundingQuotes.d.ts} +240 -369
- package/dist/internal/FundingQuotes.d.ts.map +1 -0
- package/dist/internal/{FundingRoutes.js → FundingQuotes.js} +144 -183
- package/dist/internal/FundingQuotes.js.map +1 -0
- package/dist/internal/Log.d.ts +18 -12
- package/dist/internal/Log.d.ts.map +1 -1
- package/dist/internal/Log.js +2 -0
- package/dist/internal/Log.js.map +1 -1
- package/dist/internal/Tidx.d.ts +9 -3
- package/dist/internal/Tidx.d.ts.map +1 -1
- package/dist/internal/Tidx.js +13 -7
- package/dist/internal/Tidx.js.map +1 -1
- package/dist/internal/Viem.d.ts +17 -2
- package/dist/internal/Viem.d.ts.map +1 -1
- package/dist/internal/Viem.js +30 -3
- package/dist/internal/Viem.js.map +1 -1
- package/dist/internal/index.d.ts +1 -1
- package/dist/internal/index.js +1 -1
- package/package.json +2 -2
- package/src/ApiKeys.test.ts +25 -0
- package/src/App.test-d.ts +2 -0
- package/src/App.test.ts +13 -2
- package/src/App.ts +37 -5
- package/src/Assets.ts +3 -3
- package/src/Client.test-d.ts +21 -11
- package/src/Scope.test.ts +1 -0
- package/src/Scope.ts +32 -4
- package/src/Webhooks.ts +5 -10
- package/src/admin/apps/api-keys.test.ts +27 -0
- package/src/admin/apps/api-keys.ts +8 -1
- package/src/admin/apps/scopes.test.ts +7 -2
- package/src/admin/apps/scopes.ts +2 -2
- package/src/admin/ui/src/components/Dialog.tsx +8 -2
- package/src/admin/ui/src/lib/scopes.test.ts +19 -0
- package/src/admin/ui/src/lib/scopes.ts +12 -0
- package/src/admin/ui/src/routes/api-keys.tsx +128 -27
- package/src/admin/ui.generated.ts +33 -33
- package/src/apps/composition.test.ts +77 -0
- package/src/apps/data/App.test.ts +354 -0
- package/src/apps/data/App.ts +178 -91
- package/src/apps/data/FundingQuoteProviders.test.ts +577 -0
- package/src/apps/data/FundingQuoteProviders.ts +633 -0
- package/src/apps/data/index.ts +1 -1
- package/src/apps/data/routes/balances.test.ts +64 -18
- package/src/apps/data/routes/balances.ts +76 -177
- package/src/apps/data/routes/blocks.ts +3 -5
- package/src/apps/data/routes/coingecko.ts +3 -8
- package/src/apps/data/routes/funding.test.ts +304 -192
- package/src/apps/data/routes/funding.ts +166 -286
- package/src/apps/data/routes/indexer.test.ts +173 -15
- package/src/apps/data/routes/indexer.ts +8 -2
- package/src/apps/data/routes/rpc.test.ts +219 -0
- package/src/apps/data/routes/rpc.ts +92 -17
- package/src/apps/data/routes/webhooks.test.ts +21 -0
- package/src/apps/data/routes/webhooks.ts +13 -1
- package/src/apps/index.ts +1 -1
- package/src/apps/management/App.ts +4 -0
- package/src/apps/management/Billing.test.ts +2 -2
- package/src/apps/management/routes/api-keys.test.ts +47 -3
- package/src/apps/management/routes/api-keys.ts +2 -2
- package/src/apps/management/routes/invite-links.test.ts +385 -0
- package/src/apps/management/routes/invite-links.ts +570 -0
- package/src/apps/management/routes/scopes.test.ts +3 -2
- package/src/apps/management/routes/scopes.ts +4 -2
- package/src/apps/mcp.test.ts +18 -0
- package/src/apps/mcp.ts +2 -2
- package/src/apps/relay/App.test.ts +328 -7
- package/src/apps/relay/App.ts +42 -6
- package/src/apps/relay/Sponsorships.test.ts +2 -2
- package/src/db/Db.test.ts +5 -5
- package/src/db/Db.ts +65 -0
- package/src/db/Schema.ts +39 -0
- package/src/db/tables/billingSettings.test.ts +2 -2
- package/src/db/tables/inviteLinks.ts +187 -0
- package/src/db/tables/organizations.test.ts +2 -2
- package/src/db/tables/organizations.ts +2 -0
- package/src/db/tables/sponsoredTransactions.test.ts +19 -2
- package/src/db/tables/sponsoredTransactions.ts +21 -14
- package/src/db/tables/stripeCustomers.test.ts +2 -2
- package/src/handlers/relay.ts +16 -4
- package/src/internal/Auth.test.ts +132 -22
- package/src/internal/Auth.ts +181 -14
- package/src/internal/EdgeCache.test.ts +24 -3
- package/src/internal/EdgeCache.ts +18 -2
- package/src/internal/FundingQuotes.test.ts +268 -0
- package/src/internal/{FundingRoutes.ts → FundingQuotes.ts} +216 -277
- package/src/internal/Log.ts +21 -14
- package/src/internal/Tidx.test.ts +48 -0
- package/src/internal/Tidx.ts +21 -7
- package/src/internal/Viem.test.ts +46 -0
- package/src/internal/Viem.ts +48 -6
- package/src/internal/index.test.ts +1 -1
- package/src/internal/index.ts +1 -1
- package/dist/apps/data/FundingRouteProviders.d.ts +0 -36
- package/dist/apps/data/FundingRouteProviders.d.ts.map +0 -1
- package/dist/apps/data/FundingRouteProviders.js +0 -245
- package/dist/apps/data/FundingRouteProviders.js.map +0 -1
- package/dist/internal/FundingRoutes.d.ts.map +0 -1
- package/dist/internal/FundingRoutes.js.map +0 -1
- package/src/apps/data/FundingRouteProviders.test.ts +0 -225
- package/src/apps/data/FundingRouteProviders.ts +0 -312
- package/src/internal/FundingRoutes.test.ts +0 -213
package/dist/internal/Log.js
CHANGED
|
@@ -26,6 +26,7 @@ export function middleware(options = {}) {
|
|
|
26
26
|
const principal = c.get('principal');
|
|
27
27
|
const errorCode = c.get('errorCode');
|
|
28
28
|
const provider = c.get('providerFailure');
|
|
29
|
+
const providerFailures = c.get('providerFailures');
|
|
29
30
|
// The `request` total metric duplicates `duration` (measured here, one
|
|
30
31
|
// layer further out), so only operation timings are kept.
|
|
31
32
|
const metrics = c.get('serverTiming')?.filter((metric) => metric.name !== 'request');
|
|
@@ -72,6 +73,7 @@ export function middleware(options = {}) {
|
|
|
72
73
|
},
|
|
73
74
|
}),
|
|
74
75
|
...(provider === undefined ? {} : { provider }),
|
|
76
|
+
...(providerFailures === undefined ? {} : { providerFailures }),
|
|
75
77
|
...(query ? { query } : {}),
|
|
76
78
|
...(rateLimit === undefined ? {} : { rateLimit }),
|
|
77
79
|
requestId: c.get('requestId'),
|
package/dist/internal/Log.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Log.js","sourceRoot":"","sources":["../../src/internal/Log.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"Log.js","sourceRoot":"","sources":["../../src/internal/Log.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AA8GtC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CACxB,OAAO,GAAuB,EAAE;IAEhC,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAA;IAC/B,OAAO,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QACvB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;QAC/B,MAAM,IAAI,EAAE,CAAA;QACZ,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAA;QAE1C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC9B,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAChD,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAA;QAC3B,wEAAwE;QACxE,wEAAwE;QACxE,+DAA+D;QAC/D,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,WAAoB,CAA+B,CAAA;QAC3E,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,WAAoB,CAAuB,CAAA;QACnE,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,iBAA0B,CAAsB,CAAA;QACvE,MAAM,gBAAgB,GAAG,CAAC,CAAC,GAAG,CAAC,kBAA2B,CAA8B,CAAA;QAExF,uEAAuE;QACvE,0DAA0D;QAC1D,MAAM,OAAO,GAAI,CAAC,CAAC,GAAG,CAAC,cAAuB,CAAiC,EAAE,MAAM,CACrF,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CACtC,CAAA;QACD,MAAM,OAAO,GAAG,OAAO,EAAE,MAAM;YAC7B,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACpF,CAAC,CAAC,SAAS,CAAA;QAEb,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE;YACtB,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;YAClD,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;YAC1D,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;YAClD,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;YAClD,IAAI,KAAK,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI;gBAAE,OAAO,SAAS,CAAA;YAC1D,OAAO;gBACL,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;gBACpB,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC;gBAC5B,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnD,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;aACrC,CAAA;QACH,CAAC,CAAC,EAAE,CAAA;QAEJ,MAAM,MAAM,GAAG,EAAE,CAAC;YAChB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,iBAA0B,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC;YACzB,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;YACjD,KAAK,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;YAChE,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM;YACpB,IAAI,EAAE,GAAG,CAAC,QAAQ;YAClB,GAAG,CAAC,SAAS,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAClF,GAAG,CAAC,SAAS,KAAK,SAAS;gBACzB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC;oBACE,SAAS,EAAE;wBACT,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACvE,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS;4BAC9B,CAAC,CAAC,EAAE,aAAa,EAAE,SAAS,CAAC,MAAM,CAAC,aAAa,KAAK,IAAI,EAAE;4BAC5D,CAAC,CAAC,EAAE,CAAC;wBACP,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC/E,EAAE,EAAE,SAAS,CAAC,EAAE;wBAChB,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACnE,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS;4BACnE,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE;4BACpC,CAAC,CAAC,EAAE,CAAC;wBACP,IAAI,EAAE,SAAS,CAAC,IAAI;qBACrB;iBACF,CAAC;YACN,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;YAC/C,GAAG,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC;YAC/D,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;YACjD,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,WAAoB,CAAW;YAChD,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS;YACtB,MAAM;YACN,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;SAC9C,CAAC,CAAA;QAEF,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC,CAAA;YACxF,wEAAwE;YACxE,yEAAyE;YACzE,4EAA4E;YAC5E,IAAI,CAAC;gBACH,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;YACnC,CAAC;YAAC,MAAM,CAAC;gBACP,KAAK,OAAO,CAAA;YACd,CAAC;QACH,CAAC;IACH,CAAC,CAAA;AACH,CAAC;AAUD;;;;;GAKG;AACH,MAAM,UAAU,IAAI,CAAC,KAAY;IAC/B,IAAI,KAAK,CAAC,KAAK,KAAK,OAAO;QAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;SAC5C,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;;QAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AACzB,CAAC;AAED,qEAAqE;AACrE,MAAM,QAAQ,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAW,CAAA;AAExD;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,GAAU;IACrC,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAM;QACjD,IAAI,CAAC,KAAK,CAAC,CAAA;IACb,CAAC,CAAA;AACH,CAAC;AAED,SAAS,KAAK,CAAC,KAAa;IAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,EAAE,CAAA;AACpC,CAAC"}
|
package/dist/internal/Tidx.d.ts
CHANGED
|
@@ -20,8 +20,8 @@ export type UrlResolver = (chainId: Viem.ChainId) => string | undefined;
|
|
|
20
20
|
* receives a {@link Viem.resolve.Context} (`chainId` plus the request
|
|
21
21
|
* `principal`), so callers can route traffic per caller — e.g. send anonymous
|
|
22
22
|
* (`principal.type === 'public'`) traffic to a separate, no-auth indexer. A
|
|
23
|
-
* missing `baseUrl` falls back to the built-in public host map ({@link url});
|
|
24
|
-
* missing
|
|
23
|
+
* missing `baseUrl` falls back to the built-in public host map ({@link url});
|
|
24
|
+
* missing auth fields send no Authorization header.
|
|
25
25
|
*/
|
|
26
26
|
export declare function resolve(tidx: getClient.Tidx | undefined, context: Viem.resolve.Context): resolve.Resolved;
|
|
27
27
|
export declare namespace resolve {
|
|
@@ -35,6 +35,8 @@ export declare namespace resolve {
|
|
|
35
35
|
baseUrl: string | undefined;
|
|
36
36
|
/** Basic auth credentials, or undefined to send no Basic auth. */
|
|
37
37
|
basicAuth?: string | undefined;
|
|
38
|
+
/** Bearer auth credential, or undefined to send no Bearer auth. */
|
|
39
|
+
bearerAuth?: string | undefined;
|
|
38
40
|
};
|
|
39
41
|
}
|
|
40
42
|
export declare function getClient(options: getClient.Options): Client;
|
|
@@ -45,7 +47,7 @@ export declare function getClient(options: getClient.Options): Client;
|
|
|
45
47
|
* output (`baseUrl` + `basicAuth` + `chainId`), not the principal, so a resolver
|
|
46
48
|
* `tidx` may branch on any principal field while client cardinality stays
|
|
47
49
|
* bounded by the number of distinct upstreams — callers that resolve to the same
|
|
48
|
-
* upstream share a client. Shared by `
|
|
50
|
+
* upstream share a client. Shared by `data()` (per-request reads) and
|
|
49
51
|
* `Webhooks.createPoller` (the scheduled poller) so the resolver logic lives in
|
|
50
52
|
* one place.
|
|
51
53
|
*/
|
|
@@ -101,11 +103,15 @@ export declare namespace getClient {
|
|
|
101
103
|
baseUrl?: UrlResolver | string | undefined;
|
|
102
104
|
/** Basic auth credentials for TIDX requests. */
|
|
103
105
|
basicAuth?: string | undefined;
|
|
106
|
+
/** Bearer auth credential for TIDX requests. */
|
|
107
|
+
bearerAuth?: string | undefined;
|
|
104
108
|
} | ((context: Viem.resolve.Context) => {
|
|
105
109
|
/** TIDX base URL to use; falls back to the built-in public host when omitted. */
|
|
106
110
|
baseUrl?: string | undefined;
|
|
107
111
|
/** Basic auth credentials for TIDX requests, or undefined for none. */
|
|
108
112
|
basicAuth?: string | undefined;
|
|
113
|
+
/** Bearer auth credential for TIDX requests, or undefined for none. */
|
|
114
|
+
bearerAuth?: string | undefined;
|
|
109
115
|
});
|
|
110
116
|
}
|
|
111
117
|
export declare namespace createGetClient {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tidx.d.ts","sourceRoot":"","sources":["../../src/internal/Tidx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAE9B,OAAO,KAAK,KAAK,IAAI,MAAM,WAAW,CAAA;AACtC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC,8CAA8C;AAC9C,eAAO,MAAM,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGtC,CAAA;AAED,yBAAyB;AACzB,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAA;AAE9B,2EAA2E;AAC3E,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,KAAK,MAAM,CAAA;AAE7F;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,KAAK,MAAM,GAAG,SAAS,CAAA;AAEvE;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CACrB,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,SAAS,EAChC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,GAC5B,OAAO,CAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"Tidx.d.ts","sourceRoot":"","sources":["../../src/internal/Tidx.ts"],"names":[],"mappings":"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"}
|
package/dist/internal/Tidx.js
CHANGED
|
@@ -12,8 +12,8 @@ export const url = {
|
|
|
12
12
|
* receives a {@link Viem.resolve.Context} (`chainId` plus the request
|
|
13
13
|
* `principal`), so callers can route traffic per caller — e.g. send anonymous
|
|
14
14
|
* (`principal.type === 'public'`) traffic to a separate, no-auth indexer. A
|
|
15
|
-
* missing `baseUrl` falls back to the built-in public host map ({@link url});
|
|
16
|
-
* missing
|
|
15
|
+
* missing `baseUrl` falls back to the built-in public host map ({@link url});
|
|
16
|
+
* missing auth fields send no Authorization header.
|
|
17
17
|
*/
|
|
18
18
|
export function resolve(tidx, context) {
|
|
19
19
|
const config = typeof tidx === 'function' ? tidx(context) : tidx;
|
|
@@ -21,12 +21,18 @@ export function resolve(tidx, context) {
|
|
|
21
21
|
baseUrl: (typeof config?.baseUrl === 'function' ? config.baseUrl(context.chainId) : config?.baseUrl) ??
|
|
22
22
|
url[context.chainId],
|
|
23
23
|
basicAuth: config?.basicAuth,
|
|
24
|
+
...(config?.bearerAuth ? { bearerAuth: config.bearerAuth } : {}),
|
|
24
25
|
};
|
|
25
26
|
}
|
|
26
27
|
export function getClient(options) {
|
|
27
28
|
const { chainId = Viem.defaultChainId, principal = null, tidx } = options;
|
|
28
|
-
const { baseUrl, basicAuth } = resolve(tidx, { chainId, principal });
|
|
29
|
-
return withTransientRetry(Tidx.create({
|
|
29
|
+
const { baseUrl, basicAuth, bearerAuth } = resolve(tidx, { chainId, principal });
|
|
30
|
+
return withTransientRetry(Tidx.create({
|
|
31
|
+
baseUrl,
|
|
32
|
+
basicAuth,
|
|
33
|
+
bearerAuth,
|
|
34
|
+
chainId,
|
|
35
|
+
}));
|
|
30
36
|
}
|
|
31
37
|
/**
|
|
32
38
|
* Builds a memoized {@link GetClient} that constructs one TIDX client per
|
|
@@ -35,7 +41,7 @@ export function getClient(options) {
|
|
|
35
41
|
* output (`baseUrl` + `basicAuth` + `chainId`), not the principal, so a resolver
|
|
36
42
|
* `tidx` may branch on any principal field while client cardinality stays
|
|
37
43
|
* bounded by the number of distinct upstreams — callers that resolve to the same
|
|
38
|
-
* upstream share a client. Shared by `
|
|
44
|
+
* upstream share a client. Shared by `data()` (per-request reads) and
|
|
39
45
|
* `Webhooks.createPoller` (the scheduled poller) so the resolver logic lives in
|
|
40
46
|
* one place.
|
|
41
47
|
*/
|
|
@@ -45,8 +51,8 @@ export function createGetClient(options = {}) {
|
|
|
45
51
|
return (chainId = defaultChainId, principal = null) => {
|
|
46
52
|
// Resolve to derive the cache key; `getClient` re-resolves to build the
|
|
47
53
|
// client on a miss. `resolve` is pure and cheap, so the extra call is free.
|
|
48
|
-
const { baseUrl, basicAuth } = resolve(tidx, { chainId, principal });
|
|
49
|
-
const cacheKey = `${baseUrl}|${basicAuth ?? ''}|${chainId}`;
|
|
54
|
+
const { baseUrl, basicAuth, bearerAuth } = resolve(tidx, { chainId, principal });
|
|
55
|
+
const cacheKey = `${baseUrl}|${basicAuth ?? ''}|${bearerAuth ?? ''}|${chainId}`;
|
|
50
56
|
const existing = clients.get(cacheKey);
|
|
51
57
|
if (existing)
|
|
52
58
|
return existing;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tidx.js","sourceRoot":"","sources":["../../src/internal/Tidx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAG9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC,8CAA8C;AAC9C,MAAM,CAAC,MAAM,GAAG,GAA2B;IACzC,IAAI,EAAE,2BAA2B;IACjC,KAAK,EAAE,mCAAmC;CAC3C,CAAA;AAeD;;;;;;;;;GASG;AACH,MAAM,UAAU,OAAO,CACrB,IAAgC,EAChC,OAA6B;IAE7B,MAAM,MAAM,GAAG,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAChE,OAAO;QACL,OAAO,EACL,CAAC,OAAO,MAAM,EAAE,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC;YAC3F,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE,MAAM,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"Tidx.js","sourceRoot":"","sources":["../../src/internal/Tidx.ts"],"names":[],"mappings":"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"}
|
package/dist/internal/Viem.d.ts
CHANGED
|
@@ -518,7 +518,7 @@ export declare const chains: ({
|
|
|
518
518
|
prepareTransactionRequest: [(r: import("viem").PrepareTransactionRequestParameters, { client, phase }: {
|
|
519
519
|
client: import("viem").Client;
|
|
520
520
|
phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters";
|
|
521
|
-
}) => Promise<import("viem").PrepareTransactionRequestParameters
|
|
521
|
+
}) => Promise<import("viem").PrepareTransactionRequestParameters>, {
|
|
522
522
|
readonly runAt: readonly ["beforeFillTransaction", "afterFillParameters"];
|
|
523
523
|
}];
|
|
524
524
|
serializers: {
|
|
@@ -2102,7 +2102,7 @@ export type UrlResolver = (chainId: ChainId) => string | undefined;
|
|
|
2102
2102
|
* webhook poller). A missing `url` falls back to the built-in public host map
|
|
2103
2103
|
* ({@link url}); a missing `basicAuth` means no Basic auth is sent.
|
|
2104
2104
|
*
|
|
2105
|
-
* Memoization is keyed on the resolved output (see
|
|
2105
|
+
* Memoization is keyed on the resolved output (see {@link createGetClient} and
|
|
2106
2106
|
* {@link Tidx.createGetClient}), not the context, so a resolver may branch on
|
|
2107
2107
|
* any principal field without unbounded client cardinality: callers that
|
|
2108
2108
|
* resolve to the same upstream share a client. Pass the result to
|
|
@@ -2134,6 +2134,19 @@ export declare namespace resolve {
|
|
|
2134
2134
|
};
|
|
2135
2135
|
}
|
|
2136
2136
|
export declare function getClient(options: getClient.Options): getClient.ReturnType;
|
|
2137
|
+
/** Builds a memoized Tempo client resolver. */
|
|
2138
|
+
export declare function createGetClient(options?: createGetClient.Options): createGetClient.ReturnType;
|
|
2139
|
+
export declare namespace createGetClient {
|
|
2140
|
+
/** Options for building a memoized Tempo client resolver. */
|
|
2141
|
+
type Options = {
|
|
2142
|
+
/** Tempo chain id used when a caller omits one. */
|
|
2143
|
+
defaultChainId?: ChainId | undefined;
|
|
2144
|
+
/** Tempo RPC options applied to every constructed client. */
|
|
2145
|
+
rpc?: getClient.Rpc | undefined;
|
|
2146
|
+
};
|
|
2147
|
+
/** Memoized Tempo client resolver. */
|
|
2148
|
+
type ReturnType = (chainId?: ChainId, principal?: Auth.Principal | null) => getClient.ReturnType;
|
|
2149
|
+
}
|
|
2137
2150
|
export declare namespace getClient {
|
|
2138
2151
|
/** Tempo viem client with public and Tempo action helpers. */
|
|
2139
2152
|
type ReturnType = core_Client<HttpTransport, Chain, undefined, undefined, Omit<PublicActions<HttpTransport, Chain, undefined>, 'token'> & TempoActions<Chain, undefined>>;
|
|
@@ -2145,6 +2158,8 @@ export declare namespace getClient {
|
|
|
2145
2158
|
principal?: Auth.Principal | null | undefined;
|
|
2146
2159
|
/** Tempo RPC options. */
|
|
2147
2160
|
rpc?: Rpc | undefined;
|
|
2161
|
+
/** Zone authorization token forwarded to the RPC node. */
|
|
2162
|
+
zoneToken?: string | undefined;
|
|
2148
2163
|
};
|
|
2149
2164
|
/**
|
|
2150
2165
|
* Tempo RPC options: either a static config, or a per-request resolver
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Viem.d.ts","sourceRoot":"","sources":["../../src/internal/Viem.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Viem.d.ts","sourceRoot":"","sources":["../../src/internal/Viem.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,IAAI,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,MAAM,CAAA;AAE/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAgB,MAAM,mBAAmB,CAAA;AAC9D,OAAO,KAAK,KAAK,CAAC,MAAM,UAAU,CAAA;AAElC,OAAO,KAAK,KAAK,IAAI,MAAM,WAAW,CAAA;AACtC,OAAO,KAAK,KAAK,MAAM,MAAM,aAAa,CAAA;AAE1C,4DAA4D;AAC5D,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAA+B,CAAA;AAElD,w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"}
|
package/dist/internal/Viem.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ZoneRpcAuthentication } from 'ox/tempo';
|
|
1
2
|
import { createClient, http, publicActions } from 'viem';
|
|
2
3
|
import { tempoActions } from 'viem/tempo';
|
|
3
4
|
import { tempoMainnet, tempoTestnet } from 'viem/tempo/chains';
|
|
@@ -30,7 +31,7 @@ export const url = {
|
|
|
30
31
|
* webhook poller). A missing `url` falls back to the built-in public host map
|
|
31
32
|
* ({@link url}); a missing `basicAuth` means no Basic auth is sent.
|
|
32
33
|
*
|
|
33
|
-
* Memoization is keyed on the resolved output (see
|
|
34
|
+
* Memoization is keyed on the resolved output (see {@link createGetClient} and
|
|
34
35
|
* {@link Tidx.createGetClient}), not the context, so a resolver may branch on
|
|
35
36
|
* any principal field without unbounded client cardinality: callers that
|
|
36
37
|
* resolve to the same upstream share a client. Pass the result to
|
|
@@ -45,8 +46,16 @@ export function resolve(rpc, context) {
|
|
|
45
46
|
};
|
|
46
47
|
}
|
|
47
48
|
export function getClient(options) {
|
|
48
|
-
const { chainId = defaultChainId, principal = null, rpc } = options;
|
|
49
|
+
const { chainId = defaultChainId, principal = null, rpc, zoneToken } = options;
|
|
49
50
|
const { basicAuth, url: rpcUrl } = resolve(rpc, { chainId, principal });
|
|
51
|
+
const fetchOptions = basicAuth || zoneToken
|
|
52
|
+
? {
|
|
53
|
+
headers: {
|
|
54
|
+
...(basicAuth ? { Authorization: `Basic ${btoa(basicAuth)}` } : {}),
|
|
55
|
+
...(zoneToken ? { [ZoneRpcAuthentication.headerName]: zoneToken } : {}),
|
|
56
|
+
},
|
|
57
|
+
}
|
|
58
|
+
: undefined;
|
|
50
59
|
return createClient({
|
|
51
60
|
// Auto-batch `eth_call`s within the same macrotask into a single
|
|
52
61
|
// deployless multicall. Lets call sites issue `Promise.all` of N reads
|
|
@@ -55,9 +64,27 @@ export function getClient(options) {
|
|
|
55
64
|
// configure a deployed multicall3, can still serve the aggregated call.
|
|
56
65
|
batch: { multicall: { deployless: true } },
|
|
57
66
|
chain: { ...tempoMainnet, id: chainId },
|
|
58
|
-
transport: http(rpcUrl,
|
|
67
|
+
transport: http(rpcUrl, fetchOptions ? { fetchOptions } : {}),
|
|
59
68
|
})
|
|
60
69
|
.extend(publicActions)
|
|
61
70
|
.extend(tempoActions());
|
|
62
71
|
}
|
|
72
|
+
/** Builds a memoized Tempo client resolver. */
|
|
73
|
+
export function createGetClient(options = {}) {
|
|
74
|
+
const { defaultChainId: defaultChainId_option = defaultChainId, rpc } = options;
|
|
75
|
+
const clients = new Map();
|
|
76
|
+
return (chainId = defaultChainId_option, principal = null) => {
|
|
77
|
+
const { basicAuth, url } = resolve(rpc, { chainId, principal });
|
|
78
|
+
const cacheKey = JSON.stringify([url, basicAuth, chainId]);
|
|
79
|
+
const existing = clients.get(cacheKey);
|
|
80
|
+
if (existing)
|
|
81
|
+
return existing;
|
|
82
|
+
const client = getClient({
|
|
83
|
+
chainId,
|
|
84
|
+
rpc: { basicAuth, url: () => url },
|
|
85
|
+
});
|
|
86
|
+
clients.set(cacheKey, client);
|
|
87
|
+
return client;
|
|
88
|
+
};
|
|
89
|
+
}
|
|
63
90
|
//# sourceMappingURL=Viem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Viem.js","sourceRoot":"","sources":["../../src/internal/Viem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,MAAM,CAAA;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEzC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAM9D,4DAA4D;AAC5D,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;AAElD,wCAAwC;AACxC,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,OAAO,EAAE,YAAY,CAAC,EAAE;IACxB,OAAO,EAAE,YAAY,CAAC,EAAE;CAChB,CAAA;AAEV,8BAA8B;AAC9B,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAA;AAE7C,2CAA2C;AAC3C,MAAM,UAAU,SAAS,CAAC,EAAU;IAClC,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAA;AAC/B,CAAC;AAED,gDAAgD;AAChD,MAAM,CAAC,MAAM,GAAG,GAA2B;IACzC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,uBAAuB;IAC1C,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,+BAA+B;CACnD,CAAA;AAiBD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,OAAO,CACrB,GAA8B,EAC9B,OAAwB;IAExB,MAAM,MAAM,GAAG,OAAO,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;IAC7D,OAAO;QACL,SAAS,EAAE,MAAM,EAAE,SAAS;QAC5B,GAAG,EACD,CAAC,OAAO,MAAM,EAAE,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC;YAC/E,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;KACvB,CAAA;AACH,CAAC;AA4BD,MAAM,UAAU,SAAS,CAAC,OAA0B;IAClD,MAAM,EAAE,OAAO,GAAG,cAAc,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"Viem.js","sourceRoot":"","sources":["../../src/internal/Viem.ts"],"names":[],"mappings":"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"}
|
package/dist/internal/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export * as Cursor from './Cursor.js';
|
|
|
4
4
|
export * as EdgeCache from './EdgeCache.js';
|
|
5
5
|
export * as Errors from './Errors.js';
|
|
6
6
|
export * as Fees from './Fees.js';
|
|
7
|
-
export * as
|
|
7
|
+
export * as FundingQuotes from './FundingQuotes.js';
|
|
8
8
|
export * as Id from './Id.js';
|
|
9
9
|
export * as Log from './Log.js';
|
|
10
10
|
export * as MetricSink from './MetricSink.js';
|
package/dist/internal/index.js
CHANGED
|
@@ -4,7 +4,7 @@ export * as Cursor from './Cursor.js';
|
|
|
4
4
|
export * as EdgeCache from './EdgeCache.js';
|
|
5
5
|
export * as Errors from './Errors.js';
|
|
6
6
|
export * as Fees from './Fees.js';
|
|
7
|
-
export * as
|
|
7
|
+
export * as FundingQuotes from './FundingQuotes.js';
|
|
8
8
|
export * as Id from './Id.js';
|
|
9
9
|
export * as Log from './Log.js';
|
|
10
10
|
export * as MetricSink from './MetricSink.js';
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tapimo",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.5.1",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"bin": {
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"ox": "0.14.30",
|
|
27
27
|
"pg": "^8.22.0",
|
|
28
28
|
"stripe": "^19.1.0",
|
|
29
|
-
"tidx.ts": "^0.1.
|
|
29
|
+
"tidx.ts": "^0.1.2",
|
|
30
30
|
"viem": "2.54.6",
|
|
31
31
|
"vocs": "^2.3.3",
|
|
32
32
|
"zod": "^4.4.3"
|
package/src/ApiKeys.test.ts
CHANGED
|
@@ -97,6 +97,31 @@ describe('mint', () => {
|
|
|
97
97
|
ApiKeys.mint(Store.memory(), { orgId: 'org_a', scopes: ['totally:made-up' as never] }),
|
|
98
98
|
).rejects.toThrowError(/invalid API key input/)
|
|
99
99
|
})
|
|
100
|
+
|
|
101
|
+
test('mints a per-zone read scope', async () => {
|
|
102
|
+
const state = Store.memory()
|
|
103
|
+
const { token } = await ApiKeys.mint(state, {
|
|
104
|
+
orgId: 'org_a',
|
|
105
|
+
scopes: ['zone:421700001:read'],
|
|
106
|
+
})
|
|
107
|
+
const resolved = await ApiKeys.resolve(state, token)
|
|
108
|
+
expect(resolved?.scopes).toEqual(['zone:421700001:read'])
|
|
109
|
+
})
|
|
110
|
+
|
|
111
|
+
test('rejects malformed zone scopes', async () => {
|
|
112
|
+
for (const scope of [
|
|
113
|
+
'zone::read',
|
|
114
|
+
'zone:abc:read',
|
|
115
|
+
'zone:1.5:read',
|
|
116
|
+
'zone:-1:read',
|
|
117
|
+
'zone:0:read',
|
|
118
|
+
'zone:000421700001:read',
|
|
119
|
+
'zone:1:write',
|
|
120
|
+
])
|
|
121
|
+
await expect(
|
|
122
|
+
ApiKeys.mint(Store.memory(), { orgId: 'org_a', scopes: [scope as never] }),
|
|
123
|
+
).rejects.toThrowError(/invalid API key input/)
|
|
124
|
+
})
|
|
100
125
|
})
|
|
101
126
|
|
|
102
127
|
describe('list', () => {
|
package/src/App.test-d.ts
CHANGED
|
@@ -17,7 +17,9 @@ describe('App.Endpoint', () => {
|
|
|
17
17
|
|
|
18
18
|
expectTypeOf<'GET /v1/bogus'>().not.toExtend<App.Endpoint>()
|
|
19
19
|
// The mounted routes are GET-only; other verbs must not appear.
|
|
20
|
+
expectTypeOf<'POST /v1/indexer/query'>().not.toExtend<App.Endpoint>()
|
|
20
21
|
expectTypeOf<'POST /v1/tokens'>().not.toExtend<App.Endpoint>()
|
|
22
|
+
expectTypeOf<'POST /v1/tokens/:token'>().not.toExtend<App.Endpoint>()
|
|
21
23
|
expectTypeOf<'DELETE /v1/tokens/:token'>().not.toExtend<App.Endpoint>()
|
|
22
24
|
})
|
|
23
25
|
|
package/src/App.test.ts
CHANGED
|
@@ -74,6 +74,18 @@ describe('create', () => {
|
|
|
74
74
|
`)
|
|
75
75
|
})
|
|
76
76
|
|
|
77
|
+
test('ignores client-supplied request ids', async () => {
|
|
78
|
+
const entries: Log.Entry[] = []
|
|
79
|
+
const app = TestApp.create({ logger: (entry) => void entries.push(entry) })
|
|
80
|
+
const response = await app.request('/health', {
|
|
81
|
+
headers: { 'tempo-request-id': 'client-controlled' },
|
|
82
|
+
})
|
|
83
|
+
const requestId = response.headers.get('tempo-request-id')
|
|
84
|
+
|
|
85
|
+
expect(requestId === 'client-controlled').toMatchInlineSnapshot(`false`)
|
|
86
|
+
expect(entries[0]?.requestId === requestId).toMatchInlineSnapshot(`true`)
|
|
87
|
+
})
|
|
88
|
+
|
|
77
89
|
test('documents supported API key transports', async () => {
|
|
78
90
|
const app = TestApp.create()
|
|
79
91
|
const spec = await (await app.request('/openapi.json')).json()
|
|
@@ -473,7 +485,7 @@ describe('create', () => {
|
|
|
473
485
|
// key matches, so a `:chainId//icons` regression would drop every logo.
|
|
474
486
|
const db = TestApp.database()
|
|
475
487
|
await TestApp.verifiedSeed(db, 42431)
|
|
476
|
-
const app = App.create({ db }).route(
|
|
488
|
+
const app = App.create({ db, defaultChainId: 42431 }).route(
|
|
477
489
|
'/',
|
|
478
490
|
App.data({
|
|
479
491
|
assets: {
|
|
@@ -485,7 +497,6 @@ describe('create', () => {
|
|
|
485
497
|
}
|
|
486
498
|
: undefined,
|
|
487
499
|
},
|
|
488
|
-
defaultChainId: 42431,
|
|
489
500
|
}),
|
|
490
501
|
)
|
|
491
502
|
const response = await app.request('/v1/tokens?verified=true')
|
package/src/App.ts
CHANGED
|
@@ -72,6 +72,8 @@ export type Environment = {
|
|
|
72
72
|
tidx: Tidx.getClient.Tidx | undefined
|
|
73
73
|
/** Verified-token feature configuration (refresh window), or undefined when the feature is disabled. Token rows live in `db`. */
|
|
74
74
|
verifiedTokens: { refreshMs?: number | undefined } | undefined
|
|
75
|
+
/** Zone RPC endpoints keyed by chain id; empty when none are configured. */
|
|
76
|
+
zones: ReadonlyMap<number, Data.data.Zone>
|
|
75
77
|
/** Webhook feature configuration, or undefined when webhooks are disabled. Rows live in `db`. */
|
|
76
78
|
webhook: { maxPerOwner?: number | undefined } | undefined
|
|
77
79
|
} & EdgeCache.Variables &
|
|
@@ -147,6 +149,13 @@ export function create<const path extends string = '/'>(options: create.Options<
|
|
|
147
149
|
// `options.db`, API-key records in `options.kv`.
|
|
148
150
|
const store = options.cache?.store ?? Store.memory()
|
|
149
151
|
const scopeCatalog = Scope.extend(options.scopes)
|
|
152
|
+
const defaultChainId = options.defaultChainId ?? Viem.defaultChainId
|
|
153
|
+
const getClient = Viem.createGetClient({ defaultChainId, rpc: options.rpc })
|
|
154
|
+
const supportedChainIds = new Set<number>([
|
|
155
|
+
...Object.keys(Viem.url).map(Number),
|
|
156
|
+
defaultChainId,
|
|
157
|
+
...(options.supportedChainIds ?? []),
|
|
158
|
+
])
|
|
150
159
|
|
|
151
160
|
// Build the app in two phases: register middleware imperatively, then chain
|
|
152
161
|
// route mounts so the merged Hono schema flows through the return type. The
|
|
@@ -163,7 +172,11 @@ export function create<const path extends string = '/'>(options: create.Options<
|
|
|
163
172
|
'*',
|
|
164
173
|
hono_compress(typeof options.compress === 'object' ? options.compress : undefined),
|
|
165
174
|
)
|
|
166
|
-
base.use('*', requestId(
|
|
175
|
+
base.use('*', requestId())
|
|
176
|
+
base.use('*', async (c, next) => {
|
|
177
|
+
await next()
|
|
178
|
+
c.header('tempo-request-id', c.get('requestId'))
|
|
179
|
+
})
|
|
167
180
|
// One canonical structured log line per request, plus request metrics.
|
|
168
181
|
// Registered after `requestId` (the entry embeds it) and before the timing and
|
|
169
182
|
// edge-cache layers so the entry covers edge-cache hits and includes the
|
|
@@ -231,11 +244,15 @@ export function create<const path extends string = '/'>(options: create.Options<
|
|
|
231
244
|
base.use('*', async (c, next) => {
|
|
232
245
|
c.set('analytics', analytics)
|
|
233
246
|
c.set('basePath', basePath)
|
|
247
|
+
c.set('chainId', defaultChainId)
|
|
234
248
|
c.set('db', db.source)
|
|
235
249
|
c.set('dbCached', db.cached ?? db.source)
|
|
250
|
+
c.set('getClient', (chainId) => getClient(chainId, Auth.getPrincipal(c)))
|
|
236
251
|
c.set('kv', options.kv)
|
|
252
|
+
c.set('rpc', options.rpc)
|
|
237
253
|
c.set('scopeCatalog', scopeCatalog)
|
|
238
254
|
c.set('store', store)
|
|
255
|
+
c.set('supportedChainIds', supportedChainIds)
|
|
239
256
|
await next()
|
|
240
257
|
})
|
|
241
258
|
|
|
@@ -269,7 +286,10 @@ export function create<const path extends string = '/'>(options: create.Options<
|
|
|
269
286
|
const route = app.route.bind(app)
|
|
270
287
|
;(app as unknown as { route: typeof route }).route = ((path, sub) => {
|
|
271
288
|
const entry = Metadata.read(sub)
|
|
272
|
-
if (entry)
|
|
289
|
+
if (entry) {
|
|
290
|
+
metadata.push(entry)
|
|
291
|
+
for (const chainId of entry.supportedChainIds ?? []) supportedChainIds.add(chainId)
|
|
292
|
+
}
|
|
273
293
|
return route(path, sub)
|
|
274
294
|
}) as typeof route
|
|
275
295
|
|
|
@@ -398,6 +418,10 @@ export function create<const path extends string = '/'>(options: create.Options<
|
|
|
398
418
|
let finalized = false
|
|
399
419
|
const finalize = () => {
|
|
400
420
|
if (finalized) return
|
|
421
|
+
Auth.installMppManagementRoutes(app, {
|
|
422
|
+
basePath,
|
|
423
|
+
overrides: options.auth === false ? undefined : options.auth?.overrides,
|
|
424
|
+
})
|
|
401
425
|
finalized = true
|
|
402
426
|
|
|
403
427
|
app.get('/openapi.json', async (c) => c.json(await getSpec()))
|
|
@@ -436,9 +460,9 @@ export function listener(app: { fetch: NodeFetch }): Listener {
|
|
|
436
460
|
|
|
437
461
|
export declare namespace create {
|
|
438
462
|
/**
|
|
439
|
-
* Options for creating the Tempo API Hono app
|
|
440
|
-
*
|
|
441
|
-
*
|
|
463
|
+
* Options for creating the Tempo API Hono app: shared chain, RPC, database,
|
|
464
|
+
* cache, authentication, and cross-cutting configuration. Email belongs to
|
|
465
|
+
* {@link management}.
|
|
442
466
|
*/
|
|
443
467
|
type Options<path extends string = '/'> = {
|
|
444
468
|
/** Analytics store for usage reads (e.g. `Analytics.clickhouse(...)`), or a per-request factory. Accepts `{ source }` to mirror `db`. Omit to leave usage analytics unconfigured — usage routes answer 501. Ingest happens outside this app (queue consumer via `Analytics.handleQueue`). */
|
|
@@ -453,6 +477,8 @@ export declare namespace create {
|
|
|
453
477
|
cors?: boolean | Cors | undefined
|
|
454
478
|
/** Authoritative Postgres store backing stateful features (webhooks, verified tokens). Pass a long-lived `Db.postgres(...)` singleton on Node, or a factory (`() => Db.postgres(...)`) on Workers so each request builds a fresh Hyperdrive-pooled connection. Pass `{ source, cached }` to route staleness-tolerant reads (verified tokens) through a second, query-caching Hyperdrive config; `source` stays uncached for read-after-write correctness. Apply migrations out of band via `tapimo admin migrate`. */
|
|
455
479
|
db: Db.Source | { cached?: Db.Source | undefined; source: Db.Source }
|
|
480
|
+
/** Default Tempo chain id for requests that omit `chainId`. */
|
|
481
|
+
defaultChainId?: Viem.ChainId | undefined
|
|
456
482
|
/** KV state store backing API-key records (e.g. `Store.cloudflareKv(...)`). Omit to leave API-key auth closed — every token resolves to `null`. */
|
|
457
483
|
kv?: Kv | undefined
|
|
458
484
|
/** Request logging. Disabled by default. Pass `true` to emit one canonical structured log entry per request through the level-matched console method (indexed by Workers Logs); a level (e.g. `'warn'`) to emit only that level and above (dropping successful-request info lines); or an emit function for a custom sink. */
|
|
@@ -461,10 +487,14 @@ export declare namespace create {
|
|
|
461
487
|
metrics?: Metrics.Metrics | undefined
|
|
462
488
|
/** Base path to mount API handlers under. Provided as a literal via the `path` generic so the resulting Hono schema keeps typed route paths for `testClient`. */
|
|
463
489
|
path?: path | undefined
|
|
490
|
+
/** Tempo RPC options, including per-request routing by request principal. */
|
|
491
|
+
rpc?: Viem.getClient.Rpc | undefined
|
|
464
492
|
/** OpenAPI `servers` for the generated document. Defaults to a single relative server (the host serving the doc), so the reference targets the deployment it is served from. Set the canonical public URL(s) here, e.g. `[{ url: 'https://api.tempo.xyz' }]`. */
|
|
465
493
|
servers?: readonly Server[] | undefined
|
|
466
494
|
/** Host-defined API-key scopes appended to the built-in {@link Scope.catalog}. */
|
|
467
495
|
scopes?: readonly Scope.Entry[] | undefined
|
|
496
|
+
/** Extra chain ids served beyond the built-in chains and `defaultChainId`. */
|
|
497
|
+
supportedChainIds?: readonly number[] | undefined
|
|
468
498
|
}
|
|
469
499
|
|
|
470
500
|
/** KV state-store configuration. */
|
|
@@ -526,6 +556,8 @@ export declare namespace create {
|
|
|
526
556
|
docs?: Docs | undefined
|
|
527
557
|
/** Security scheme definitions this group's routes reference (e.g. the session cookie). */
|
|
528
558
|
securitySchemes?: Record<string, unknown> | undefined
|
|
559
|
+
/** Chain ids served by this route group, merged before auth handles the first request. */
|
|
560
|
+
supportedChainIds?: readonly number[] | undefined
|
|
529
561
|
/** Root-level OpenAPI tag definitions for this group's operations. */
|
|
530
562
|
tags?: readonly Tag[] | undefined
|
|
531
563
|
/** Builds the OAS 3.1 `webhooks` block documenting outbound deliveries, emitted only when the group's webhook routes are mounted. Called during spec generation only, keeping schema conversion off isolate startup. */
|
package/src/Assets.ts
CHANGED
|
@@ -26,9 +26,9 @@ export type Assets = {
|
|
|
26
26
|
export function cloudflareR2(bucket: cloudflareR2.Bucket): Assets {
|
|
27
27
|
return {
|
|
28
28
|
async get(key) {
|
|
29
|
-
//
|
|
30
|
-
const { objects } = await bucket.list({ limit:
|
|
31
|
-
if (objects
|
|
29
|
+
// Legacy source-extension aliases may sort before the extensionless key.
|
|
30
|
+
const { objects } = await bucket.list({ limit: 1_000, prefix: key })
|
|
31
|
+
if (!objects.some((object) => object.key === key)) return undefined
|
|
32
32
|
const object = await bucket.get(key)
|
|
33
33
|
if (!object) return undefined
|
|
34
34
|
return {
|