tapimo 0.12.0 → 0.13.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.
Files changed (257) hide show
  1. package/dist/App.d.ts +5561 -5026
  2. package/dist/App.d.ts.map +1 -1
  3. package/dist/App.js +38 -3
  4. package/dist/App.js.map +1 -1
  5. package/dist/Scope.d.ts +2 -0
  6. package/dist/Scope.d.ts.map +1 -1
  7. package/dist/Scope.js +17 -0
  8. package/dist/Scope.js.map +1 -1
  9. package/dist/admin/App.d.ts +123 -74
  10. package/dist/admin/App.d.ts.map +1 -1
  11. package/dist/admin/apps/api-keys.d.ts +80 -0
  12. package/dist/admin/apps/api-keys.d.ts.map +1 -1
  13. package/dist/admin/apps/api-keys.js +54 -0
  14. package/dist/admin/apps/api-keys.js.map +1 -1
  15. package/dist/admin/apps/earn-vaults.d.ts +15 -15
  16. package/dist/admin/apps/earn-vaults.js +1 -1
  17. package/dist/admin/apps/verified-tokens.d.ts +81 -81
  18. package/dist/admin/ui.generated.d.ts +1 -1
  19. package/dist/admin/ui.generated.d.ts.map +1 -1
  20. package/dist/admin/ui.generated.js +151 -151
  21. package/dist/admin/ui.generated.js.map +1 -1
  22. package/dist/apps/Zones.d.ts +16 -16
  23. package/dist/apps/Zones.js +4 -4
  24. package/dist/apps/data/App.js +18 -18
  25. package/dist/apps/data/App.js.map +1 -1
  26. package/dist/apps/data/ZoneSelection.d.ts +8 -8
  27. package/dist/apps/data/ZoneSelection.d.ts.map +1 -1
  28. package/dist/apps/data/ZoneSelection.js +1 -1
  29. package/dist/apps/data/ZoneSelection.js.map +1 -1
  30. package/dist/apps/data/routes/activities.d.ts +588 -584
  31. package/dist/apps/data/routes/activities.d.ts.map +1 -1
  32. package/dist/apps/data/routes/activities.js +1561 -1239
  33. package/dist/apps/data/routes/activities.js.map +1 -1
  34. package/dist/apps/data/routes/balances.d.ts +26 -26
  35. package/dist/apps/data/routes/balances.d.ts.map +1 -1
  36. package/dist/apps/data/routes/balances.js +43 -16
  37. package/dist/apps/data/routes/balances.js.map +1 -1
  38. package/dist/apps/data/routes/blocks.d.ts +44 -44
  39. package/dist/apps/data/routes/blocks.d.ts.map +1 -1
  40. package/dist/apps/data/routes/blocks.js +21 -11
  41. package/dist/apps/data/routes/blocks.js.map +1 -1
  42. package/dist/apps/data/routes/coingecko.d.ts +3 -3
  43. package/dist/apps/data/routes/earn.d.ts +18 -18
  44. package/dist/apps/data/routes/earn.js +13 -13
  45. package/dist/apps/data/routes/exchanges.d.ts +145 -145
  46. package/dist/apps/data/routes/fee-amm.d.ts +2 -2
  47. package/dist/apps/data/routes/receipts.d.ts +155 -55
  48. package/dist/apps/data/routes/receipts.d.ts.map +1 -1
  49. package/dist/apps/data/routes/receipts.js +28 -10
  50. package/dist/apps/data/routes/receipts.js.map +1 -1
  51. package/dist/apps/data/routes/tokenlist.d.ts +13 -13
  52. package/dist/apps/data/routes/tokens.d.ts +98 -98
  53. package/dist/apps/data/routes/tokens.d.ts.map +1 -1
  54. package/dist/apps/data/routes/tokens.js +51 -20
  55. package/dist/apps/data/routes/tokens.js.map +1 -1
  56. package/dist/apps/data/routes/transactions.d.ts +7 -2
  57. package/dist/apps/data/routes/transactions.d.ts.map +1 -1
  58. package/dist/apps/data/routes/transactions.js +37 -17
  59. package/dist/apps/data/routes/transactions.js.map +1 -1
  60. package/dist/apps/data/routes/transfers.d.ts +1 -1
  61. package/dist/apps/data/routes/transfers.d.ts.map +1 -1
  62. package/dist/apps/data/routes/transfers.js +18 -12
  63. package/dist/apps/data/routes/transfers.js.map +1 -1
  64. package/dist/apps/data/routes/valuation.d.ts +1 -1
  65. package/dist/apps/data/routes/valuation.d.ts.map +1 -1
  66. package/dist/apps/data/routes/valuation.js +12 -7
  67. package/dist/apps/data/routes/valuation.js.map +1 -1
  68. package/dist/apps/data/routes/verified-tokens.d.ts +3 -3
  69. package/dist/apps/data/routes/webhooks.d.ts +11 -11
  70. package/dist/apps/data/routes/zones.d.ts +14 -14
  71. package/dist/apps/data/routes/zones.js +1 -1
  72. package/dist/apps/funding/App.d.ts +11 -0
  73. package/dist/apps/funding/App.d.ts.map +1 -1
  74. package/dist/apps/funding/routes/deposit-addresses.d.ts.map +1 -1
  75. package/dist/apps/funding/routes/deposit-addresses.js +16 -11
  76. package/dist/apps/funding/routes/deposit-addresses.js.map +1 -1
  77. package/dist/apps/funding/routes/transfers.d.ts +60 -48
  78. package/dist/apps/funding/routes/transfers.d.ts.map +1 -1
  79. package/dist/apps/funding/routes/transfers.js +27 -19
  80. package/dist/apps/funding/routes/transfers.js.map +1 -1
  81. package/dist/apps/management/App.d.ts +4487 -3963
  82. package/dist/apps/management/App.d.ts.map +1 -1
  83. package/dist/apps/management/routes/api-keys.d.ts +710 -159
  84. package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
  85. package/dist/apps/management/routes/api-keys.js +236 -4
  86. package/dist/apps/management/routes/api-keys.js.map +1 -1
  87. package/dist/apps/management/routes/faucet.d.ts +6 -6
  88. package/dist/apps/management/routes/invite-links.d.ts +42 -42
  89. package/dist/apps/management/routes/members.d.ts +30 -30
  90. package/dist/apps/management/routes/projects.d.ts +40 -40
  91. package/dist/apps/management/routes/usage.d.ts +24 -24
  92. package/dist/apps/management/routes/verified-token-requests.d.ts +1 -1
  93. package/dist/apps/management/routes/webhooks.d.ts +55 -55
  94. package/dist/db/Db.d.ts.map +1 -1
  95. package/dist/db/Db.js +12 -1
  96. package/dist/db/Db.js.map +1 -1
  97. package/dist/db/Schema.d.ts +3 -2
  98. package/dist/db/Schema.d.ts.map +1 -1
  99. package/dist/db/Schema.js +5 -2
  100. package/dist/db/Schema.js.map +1 -1
  101. package/dist/db/tables/fundingCatalog.d.ts +4 -2
  102. package/dist/db/tables/fundingCatalog.d.ts.map +1 -1
  103. package/dist/db/tables/fundingCatalog.js +5 -1
  104. package/dist/db/tables/fundingCatalog.js.map +1 -1
  105. package/dist/handlers/internal/utils.d.ts.map +1 -1
  106. package/dist/handlers/internal/utils.js +9 -0
  107. package/dist/handlers/internal/utils.js.map +1 -1
  108. package/dist/internal/Auth.d.ts +3 -1
  109. package/dist/internal/Auth.d.ts.map +1 -1
  110. package/dist/internal/Auth.js +6 -3
  111. package/dist/internal/Auth.js.map +1 -1
  112. package/dist/internal/EarnVaults.d.ts +3 -3
  113. package/dist/internal/EarnVaults.js +3 -3
  114. package/dist/internal/Fetch.d.ts +23 -0
  115. package/dist/internal/Fetch.d.ts.map +1 -0
  116. package/dist/internal/Fetch.js +26 -0
  117. package/dist/internal/Fetch.js.map +1 -0
  118. package/dist/internal/Log.d.ts +3 -1
  119. package/dist/internal/Log.d.ts.map +1 -1
  120. package/dist/internal/Log.js +16 -3
  121. package/dist/internal/Log.js.map +1 -1
  122. package/dist/internal/OpenApi.d.ts +5 -3
  123. package/dist/internal/OpenApi.d.ts.map +1 -1
  124. package/dist/internal/OpenApi.js +13 -3
  125. package/dist/internal/OpenApi.js.map +1 -1
  126. package/dist/internal/Response.d.ts +1 -1
  127. package/dist/internal/Response.d.ts.map +1 -1
  128. package/dist/internal/Schema.d.ts +6 -3
  129. package/dist/internal/Schema.d.ts.map +1 -1
  130. package/dist/internal/Schema.js +8 -2
  131. package/dist/internal/Schema.js.map +1 -1
  132. package/dist/internal/Store.d.ts +16 -3
  133. package/dist/internal/Store.d.ts.map +1 -1
  134. package/dist/internal/Store.js +82 -16
  135. package/dist/internal/Store.js.map +1 -1
  136. package/dist/internal/Tidx.d.ts.map +1 -1
  137. package/dist/internal/Tidx.js +7 -2
  138. package/dist/internal/Tidx.js.map +1 -1
  139. package/dist/internal/Timeout.d.ts +36 -0
  140. package/dist/internal/Timeout.d.ts.map +1 -0
  141. package/dist/internal/Timeout.js +37 -0
  142. package/dist/internal/Timeout.js.map +1 -0
  143. package/dist/internal/Timing.d.ts +9 -0
  144. package/dist/internal/Timing.d.ts.map +1 -1
  145. package/dist/internal/Timing.js +7 -0
  146. package/dist/internal/Timing.js.map +1 -1
  147. package/dist/internal/WebhookDestination.d.ts.map +1 -1
  148. package/dist/internal/WebhookDestination.js +3 -0
  149. package/dist/internal/WebhookDestination.js.map +1 -1
  150. package/dist/internal/funding/Action.d.ts +9 -0
  151. package/dist/internal/funding/Action.d.ts.map +1 -1
  152. package/dist/internal/funding/Action.js +16 -8
  153. package/dist/internal/funding/Action.js.map +1 -1
  154. package/dist/internal/funding/Catalog.d.ts +9 -2
  155. package/dist/internal/funding/Catalog.d.ts.map +1 -1
  156. package/dist/internal/funding/Catalog.js +19 -8
  157. package/dist/internal/funding/Catalog.js.map +1 -1
  158. package/dist/internal/funding/Provider.d.ts +68 -13
  159. package/dist/internal/funding/Provider.d.ts.map +1 -1
  160. package/dist/internal/funding/Provider.js +29 -8
  161. package/dist/internal/funding/Provider.js.map +1 -1
  162. package/dist/internal/funding/Transfer.d.ts +13 -12
  163. package/dist/internal/funding/Transfer.d.ts.map +1 -1
  164. package/dist/internal/funding/Transfer.js +23 -21
  165. package/dist/internal/funding/Transfer.js.map +1 -1
  166. package/dist/internal/funding/providers/stargate.d.ts +28 -9
  167. package/dist/internal/funding/providers/stargate.d.ts.map +1 -1
  168. package/dist/internal/funding/providers/stargate.js +251 -117
  169. package/dist/internal/funding/providers/stargate.js.map +1 -1
  170. package/dist/internal/index.d.ts +1 -0
  171. package/dist/internal/index.d.ts.map +1 -1
  172. package/dist/internal/index.js +1 -0
  173. package/dist/internal/index.js.map +1 -1
  174. package/package.json +2 -2
  175. package/src/App.test.ts +100 -0
  176. package/src/App.ts +42 -3
  177. package/src/Client.test-d.ts +46 -0
  178. package/src/Scope.test.ts +20 -0
  179. package/src/Scope.ts +16 -0
  180. package/src/admin/apps/api-keys.test.ts +75 -0
  181. package/src/admin/apps/api-keys.ts +64 -0
  182. package/src/admin/apps/earn-vaults.test.ts +1 -1
  183. package/src/admin/apps/earn-vaults.ts +1 -1
  184. package/src/admin/ui/src/lib/api-keys.ts +19 -0
  185. package/src/admin/ui/src/routes/api-keys.tsx +89 -2
  186. package/src/admin/ui.generated.ts +189 -151
  187. package/src/apps/Zones.test.ts +4 -4
  188. package/src/apps/Zones.ts +4 -4
  189. package/src/apps/composition.test.ts +1 -1
  190. package/src/apps/data/App.test.ts +41 -0
  191. package/src/apps/data/App.ts +18 -18
  192. package/src/apps/data/ZoneSelection.test.ts +2 -2
  193. package/src/apps/data/ZoneSelection.ts +8 -8
  194. package/src/apps/data/routes/activities.test.ts +1526 -12
  195. package/src/apps/data/routes/activities.ts +1774 -1356
  196. package/src/apps/data/routes/balances.ts +133 -97
  197. package/src/apps/data/routes/blocks.test.ts +533 -0
  198. package/src/apps/data/routes/blocks.ts +35 -16
  199. package/src/apps/data/routes/earn.test.ts +4 -2
  200. package/src/apps/data/routes/earn.ts +13 -13
  201. package/src/apps/data/routes/earn.zone-access.test.ts +6 -6
  202. package/src/apps/data/routes/receipts.ts +47 -16
  203. package/src/apps/data/routes/tokens.test.ts +578 -0
  204. package/src/apps/data/routes/tokens.ts +283 -225
  205. package/src/apps/data/routes/transactions.ts +68 -29
  206. package/src/apps/data/routes/transfers.test.ts +421 -0
  207. package/src/apps/data/routes/transfers.ts +45 -27
  208. package/src/apps/data/routes/valuation.ts +94 -78
  209. package/src/apps/data/routes/zones.test.ts +2 -2
  210. package/src/apps/data/routes/zones.ts +1 -1
  211. package/src/apps/funding/routes/deposit-addresses.test.ts +25 -3
  212. package/src/apps/funding/routes/deposit-addresses.ts +17 -12
  213. package/src/apps/funding/routes/quotes.test.ts +5 -9
  214. package/src/apps/funding/routes/transfers.test.ts +395 -8
  215. package/src/apps/funding/routes/transfers.ts +76 -59
  216. package/src/apps/management/routes/api-keys.test.ts +220 -0
  217. package/src/apps/management/routes/api-keys.ts +280 -3
  218. package/src/db/Db.ts +13 -1
  219. package/src/db/Schema.ts +5 -2
  220. package/src/db/tables/earnVaults.test.ts +9 -9
  221. package/src/db/tables/fundingCatalog.test.ts +16 -2
  222. package/src/db/tables/fundingCatalog.ts +9 -3
  223. package/src/handlers/internal/utils.test.ts +53 -0
  224. package/src/handlers/internal/utils.ts +15 -0
  225. package/src/internal/Auth.ts +12 -4
  226. package/src/internal/EarnVaults.capabilities.test.ts +2 -2
  227. package/src/internal/EarnVaults.test.ts +1 -1
  228. package/src/internal/EarnVaults.ts +3 -3
  229. package/src/internal/Fetch.test.ts +46 -0
  230. package/src/internal/Fetch.ts +56 -0
  231. package/src/internal/Log.test.ts +21 -0
  232. package/src/internal/Log.ts +20 -5
  233. package/src/internal/OpenApi.ts +14 -4
  234. package/src/internal/Response.ts +1 -1
  235. package/src/internal/Schema.test.ts +2 -0
  236. package/src/internal/Schema.ts +12 -2
  237. package/src/internal/Store.test.ts +178 -0
  238. package/src/internal/Store.ts +104 -18
  239. package/src/internal/Tidx.test.ts +2 -1
  240. package/src/internal/Tidx.ts +7 -2
  241. package/src/internal/Timeout.test.ts +35 -0
  242. package/src/internal/Timeout.ts +73 -0
  243. package/src/internal/Timing.ts +16 -0
  244. package/src/internal/WebhookDestination.ts +3 -0
  245. package/src/internal/funding/Action.test.ts +41 -1
  246. package/src/internal/funding/Action.ts +69 -41
  247. package/src/internal/funding/Catalog.test.ts +34 -0
  248. package/src/internal/funding/Catalog.ts +28 -11
  249. package/src/internal/funding/Provider.test.ts +73 -0
  250. package/src/internal/funding/Provider.ts +82 -28
  251. package/src/internal/funding/Transfer.ts +133 -110
  252. package/src/internal/funding/providers/index.test.ts +4 -167
  253. package/src/internal/funding/providers/relay.test.ts +2 -2
  254. package/src/internal/funding/providers/stargate.test.ts +163 -0
  255. package/src/internal/funding/providers/stargate.ts +359 -134
  256. package/src/internal/index.test.ts +1 -0
  257. package/src/internal/index.ts +1 -0
@@ -5,11 +5,11 @@ describe('chains', () => {
5
5
  expect(Zones.chains).toMatchObject([
6
6
  {
7
7
  contracts: {
8
- messenger: { address: '0x2fB7Aba18510622cd88F5f45B3AC0E7Dd70606a5' },
9
- portal: { address: '0x5765e8B9003054e479df44D12D3dEeaADEfa8b7c' },
10
- verifier: { address: '0xfa16b9C6A356a096F0e7ceF0135C393A81d4a355' },
8
+ messenger: { address: '0x5A4d000000000000000000000000000000000000' },
9
+ portal: { address: '0x5Ad0000000000000000000000000000000000003' },
10
+ verifier: { address: '0x5a56000000000000000000000000000000000000' },
11
11
  },
12
- id: 1_424_310_001,
12
+ id: 1_424_310_003,
13
13
  name: 'zone-moderato-internal',
14
14
  rpcUrls: {
15
15
  default: { http: ['https://zone-internal-rpc.testnet.tempo.xyz'] },
package/src/apps/Zones.ts CHANGED
@@ -6,11 +6,11 @@ export const zoneModeratoInternal = defineChain({
6
6
  ...tempoTestnet,
7
7
  contracts: {
8
8
  ...tempoTestnet.contracts,
9
- messenger: { address: '0x2fB7Aba18510622cd88F5f45B3AC0E7Dd70606a5' },
10
- portal: { address: '0x5765e8B9003054e479df44D12D3dEeaADEfa8b7c' },
11
- verifier: { address: '0xfa16b9C6A356a096F0e7ceF0135C393A81d4a355' },
9
+ messenger: { address: '0x5A4d000000000000000000000000000000000000' },
10
+ portal: { address: '0x5Ad0000000000000000000000000000000000003' },
11
+ verifier: { address: '0x5a56000000000000000000000000000000000000' },
12
12
  },
13
- id: 1_424_310_001,
13
+ id: 1_424_310_003,
14
14
  name: 'zone-moderato-internal',
15
15
  rpcUrls: {
16
16
  default: { http: ['https://zone-internal-rpc.testnet.tempo.xyz'] },
@@ -197,7 +197,7 @@ describe('data()', () => {
197
197
  42431,
198
198
  421700001,
199
199
  421700006,
200
- 1424310001,
200
+ 1424310003,
201
201
  ],
202
202
  }
203
203
  `)
@@ -183,11 +183,20 @@ describe('MPP session management', () => {
183
183
  })
184
184
 
185
185
  describe('zone chain gate', () => {
186
+ const legacyModerato = 1_424_310_001
187
+ const moderato = 1_424_310_003
186
188
  /** A consumer-supplied zone chain id (the API never derives these). */
187
189
  const zone = 421_700_001
188
190
  /** A second zone, isolating per-zone grants. */
189
191
  const zoneB = 4_217_000_002
190
192
 
193
+ const legacyModeratoReader = {
194
+ id: 'key_legacy_moderato',
195
+ orgId: 'org_test',
196
+ scopes: ['data:read', 'indexer:query', `zone:${legacyModerato}:read`],
197
+ token: 'secret_legacy_moderato',
198
+ } satisfies TestApp.kvStore.Key
199
+
191
200
  function zoneOptions(chainId: number) {
192
201
  return TestApp.zone({
193
202
  chainId,
@@ -292,6 +301,38 @@ describe('zone chain gate', () => {
292
301
  expect(response.status).toBe(200)
293
302
  })
294
303
 
304
+ test('the legacy Moderato id and read scope route to current upstreams', async () => {
305
+ const fetch = vi
306
+ .spyOn(globalThis, 'fetch')
307
+ .mockResolvedValueOnce(Response.json({ id: 1, jsonrpc: '2.0', result: '0x54e89ac3' }))
308
+ .mockResolvedValueOnce(Response.json({ columns: [], ok: true, row_count: 0, rows: [] }))
309
+ try {
310
+ const app = TestApp.create({
311
+ auth: { keys: [legacyModeratoReader] },
312
+ rpc: { url: (chainId) => `https://${chainId}.rpc.test` },
313
+ tidx: { baseUrl: (chainId) => `https://${chainId}.tidx.test` },
314
+ zones: true,
315
+ })
316
+ const rpc = await app.request(`/rpc/${legacyModerato}`, {
317
+ body: JSON.stringify({ id: 1, jsonrpc: '2.0', method: 'eth_chainId' }),
318
+ headers: as(legacyModeratoReader).headers,
319
+ method: 'POST',
320
+ })
321
+ const tidx = await app.request(
322
+ `/v1/indexer/query?chainId=${legacyModerato}&sql=select%201`,
323
+ as(legacyModeratoReader),
324
+ )
325
+ const tidxUpstream = new URL((fetch.mock.calls[1]![0] as Request).url)
326
+
327
+ expect([rpc.status, tidx.status]).toEqual([200, 200])
328
+ expect((fetch.mock.calls[0]![0] as Request).url).toBe(`https://${moderato}.rpc.test/`)
329
+ expect(tidxUpstream.origin).toBe(`https://${moderato}.tidx.test`)
330
+ expect(tidxUpstream.searchParams.get('chainId')).toBe(String(moderato))
331
+ } finally {
332
+ fetch.mockRestore()
333
+ }
334
+ })
335
+
295
336
  test('a Zone write scope reads Zone data', async () => {
296
337
  const response = await zoneApp().request(`/v1/tokenlist?chainId=${zone}`, as(zoneWriter))
297
338
  expect(response.status).toBe(200)
@@ -130,6 +130,21 @@ export function data(options: data.Options = {}) {
130
130
  const rpc_config = c.get('rpc')
131
131
  const tidx_config = c.get('tidx')
132
132
  const zones = c.get('zones')
133
+ // Raw passthroughs and RPC-only reads need only RPC; composed data routes
134
+ // require both upstreams to avoid falling through to unrelated defaults.
135
+ const narrowedChainIds = new Set(
136
+ [...supportedChainIds].filter((chainId) => {
137
+ const context = { chainId, principal, zone: zones.get(chainId) }
138
+ const hasRpc = Viem.resolveRpc(rpc_config, context).url !== undefined
139
+ const hasTidx = Tidx.resolve(tidx_config, context).baseUrl !== undefined
140
+ if (selection.rpc || selection.rpcOnly) return hasRpc
141
+ if (selection.indexer) return hasTidx
142
+ return hasRpc && hasTidx
143
+ }),
144
+ )
145
+ c.set('supportedChainIds', narrowedChainIds)
146
+ if (!narrowedChainIds.has(selection.chainId))
147
+ return Response.unsupportedChainId(c, selection.chainId, narrowedChainIds)
133
148
  if (selection.inferredZones) {
134
149
  if (principal?.type !== 'api_key')
135
150
  return Response.error(c, {
@@ -150,25 +165,10 @@ export function data(options: data.Options = {}) {
150
165
  message: 'The API key has no readable configured Zones.',
151
166
  status: 403,
152
167
  })
153
- c.set('supportedChainIds', new Set(zoneChainIds))
168
+ c.set('supportedChainIds', new Set([selection.chainId, ...zoneChainIds]))
154
169
  c.set('zoneChainIds', zoneChainIds)
155
170
  return next()
156
171
  }
157
- // Raw passthroughs and RPC-only reads need only RPC; composed data routes
158
- // require both upstreams to avoid falling through to unrelated defaults.
159
- const narrowedChainIds = new Set(
160
- [...supportedChainIds].filter((chainId) => {
161
- const context = { chainId, principal, zone: zones.get(chainId) }
162
- const hasRpc = Viem.resolveRpc(rpc_config, context).url !== undefined
163
- const hasTidx = Tidx.resolve(tidx_config, context).baseUrl !== undefined
164
- if (selection.rpc || selection.rpcOnly) return hasRpc
165
- if (selection.indexer) return hasTidx
166
- return hasRpc && hasTidx
167
- }),
168
- )
169
- c.set('supportedChainIds', narrowedChainIds)
170
- if (!narrowedChainIds.has(selection.chainId))
171
- return Response.unsupportedChainId(c, selection.chainId, narrowedChainIds)
172
172
  c.set('chainId', selection.chainId)
173
173
  return next()
174
174
  })
@@ -201,8 +201,8 @@ export function data(options: data.Options = {}) {
201
201
  return Response.error(c, {
202
202
  code: 'api_key_forbidden',
203
203
  message: selection.rpc
204
- ? `Chain id ${chainId} is a zone. Use an API key granting \`zone:${chainId}:read\` or \`zone:${chainId}:write\`, or pass a Zone token via \`X-Authorization-Token\`.`
205
- : `Chain id ${chainId} is a zone. Use an API key granting \`zone:${chainId}:read\` or \`zone:${chainId}:write\`.`,
204
+ ? `Chain ID ${chainId} is a Zone. Use an API key granting \`zone:${chainId}:read\` or \`zone:${chainId}:write\`, or pass a Zone token via \`X-Authorization-Token\`.`
205
+ : `Chain ID ${chainId} is a Zone. Use an API key granting \`zone:${chainId}:read\` or \`zone:${chainId}:write\`.`,
206
206
  status: 403,
207
207
  })
208
208
 
@@ -138,7 +138,7 @@ describe('readableChainIds', () => {
138
138
  })
139
139
 
140
140
  describe('uniqueMatch', () => {
141
- test('selects one match after every Zone completes', () => {
141
+ test('selects one match after every chain completes', () => {
142
142
  expect(
143
143
  ZoneSelection.uniqueMatch([
144
144
  { chainId: 1, value: null },
@@ -159,7 +159,7 @@ describe('uniqueMatch', () => {
159
159
  ).toStrictEqual({ kind: 'ambiguous' })
160
160
  })
161
161
 
162
- test('fails the selection when any Zone lookup fails', () => {
162
+ test('fails the selection when any chain lookup fails', () => {
163
163
  const cause = new Error('unavailable')
164
164
  expect(
165
165
  ZoneSelection.uniqueMatch([
@@ -48,7 +48,7 @@ export declare namespace readableChainIds {
48
48
  }
49
49
  }
50
50
 
51
- /** Resolves receipt probes without treating partial upstream results as complete. */
51
+ /** Resolves chain receipt probes without treating partial upstream results as complete. */
52
52
  export function uniqueMatch<const value>(
53
53
  probes: readonly uniqueMatch.Probe<value>[],
54
54
  ): uniqueMatch.Result<value> {
@@ -66,25 +66,25 @@ export function uniqueMatch<const value>(
66
66
  }
67
67
 
68
68
  export declare namespace uniqueMatch {
69
- /** One completed Zone lookup. */
69
+ /** One completed chain lookup. */
70
70
  type Probe<value> =
71
71
  | {
72
- /** Zone that completed the lookup. */
72
+ /** Chain that completed the lookup. */
73
73
  chainId: number
74
- /** Matching value, or null when the Zone did not contain the resource. */
74
+ /** Matching value, or null when the chain did not contain the resource. */
75
75
  value: value | null
76
76
  }
77
77
  | {
78
- /** Upstream failure from this Zone. */
78
+ /** Upstream failure from this chain. */
79
79
  cause: unknown
80
- /** Zone that failed the lookup. */
80
+ /** Chain that failed the lookup. */
81
81
  chainId: number
82
82
  }
83
83
 
84
- /** Unique-match decision across every requested Zone. */
84
+ /** Unique-match decision across every requested chain. */
85
85
  type Result<value> =
86
86
  | {
87
- /** Zone containing the unique match. */
87
+ /** Chain containing the unique match. */
88
88
  chainId: number
89
89
  /** Unique match result. */
90
90
  kind: 'selected'