tapimo 0.4.3 → 0.5.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 (192) hide show
  1. package/dist/App.d.ts +7222 -6316
  2. package/dist/App.d.ts.map +1 -1
  3. package/dist/App.js +4 -0
  4. package/dist/App.js.map +1 -1
  5. package/dist/Scope.d.ts +18 -1
  6. package/dist/Scope.d.ts.map +1 -1
  7. package/dist/Scope.js +24 -3
  8. package/dist/Scope.js.map +1 -1
  9. package/dist/admin/apps/verified-tokens.d.ts +116 -116
  10. package/dist/apps/data/App.d.ts +2541 -2607
  11. package/dist/apps/data/App.d.ts.map +1 -1
  12. package/dist/apps/data/App.js +135 -44
  13. package/dist/apps/data/App.js.map +1 -1
  14. package/dist/apps/data/FundingQuoteProviders.d.ts +36 -0
  15. package/dist/apps/data/FundingQuoteProviders.d.ts.map +1 -0
  16. package/dist/apps/data/FundingQuoteProviders.js +190 -0
  17. package/dist/apps/data/FundingQuoteProviders.js.map +1 -0
  18. package/dist/apps/data/index.d.ts +1 -1
  19. package/dist/apps/data/index.js +1 -1
  20. package/dist/apps/data/routes/activities.d.ts +242 -242
  21. package/dist/apps/data/routes/addresses.d.ts +227 -227
  22. package/dist/apps/data/routes/balances.d.ts +12 -12
  23. package/dist/apps/data/routes/balances.d.ts.map +1 -1
  24. package/dist/apps/data/routes/balances.js +67 -149
  25. package/dist/apps/data/routes/balances.js.map +1 -1
  26. package/dist/apps/data/routes/blocks.d.ts +125 -126
  27. package/dist/apps/data/routes/blocks.d.ts.map +1 -1
  28. package/dist/apps/data/routes/blocks.js +3 -5
  29. package/dist/apps/data/routes/blocks.js.map +1 -1
  30. package/dist/apps/data/routes/coingecko.d.ts +55 -54
  31. package/dist/apps/data/routes/coingecko.d.ts.map +1 -1
  32. package/dist/apps/data/routes/coingecko.js +3 -8
  33. package/dist/apps/data/routes/coingecko.js.map +1 -1
  34. package/dist/apps/data/routes/exchanges.d.ts +455 -455
  35. package/dist/apps/data/routes/fee-amm.d.ts +92 -92
  36. package/dist/apps/data/routes/funding.d.ts +91 -864
  37. package/dist/apps/data/routes/funding.d.ts.map +1 -1
  38. package/dist/apps/data/routes/funding.js +138 -450
  39. package/dist/apps/data/routes/funding.js.map +1 -1
  40. package/dist/apps/data/routes/rpc.d.ts.map +1 -1
  41. package/dist/apps/data/routes/rpc.js +86 -16
  42. package/dist/apps/data/routes/rpc.js.map +1 -1
  43. package/dist/apps/data/routes/tokenlist.d.ts +36 -36
  44. package/dist/apps/data/routes/webhooks.d.ts +340 -0
  45. package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
  46. package/dist/apps/data/routes/webhooks.js +13 -1
  47. package/dist/apps/data/routes/webhooks.js.map +1 -1
  48. package/dist/apps/index.d.ts +1 -1
  49. package/dist/apps/index.js +1 -1
  50. package/dist/apps/management/App.d.ts +1843 -861
  51. package/dist/apps/management/App.d.ts.map +1 -1
  52. package/dist/apps/management/App.js +4 -0
  53. package/dist/apps/management/App.js.map +1 -1
  54. package/dist/apps/management/routes/api-keys.d.ts +121 -121
  55. package/dist/apps/management/routes/api-keys.js +2 -2
  56. package/dist/apps/management/routes/api-keys.js.map +1 -1
  57. package/dist/apps/management/routes/billing.d.ts +2 -2
  58. package/dist/apps/management/routes/invite-links.d.ts +1100 -0
  59. package/dist/apps/management/routes/invite-links.d.ts.map +1 -0
  60. package/dist/apps/management/routes/invite-links.js +411 -0
  61. package/dist/apps/management/routes/invite-links.js.map +1 -0
  62. package/dist/apps/management/routes/me.d.ts +13 -13
  63. package/dist/apps/management/routes/members.d.ts +77 -77
  64. package/dist/apps/management/routes/orgs.d.ts +96 -96
  65. package/dist/apps/management/routes/projects.d.ts +62 -62
  66. package/dist/apps/management/routes/scopes.d.ts +11 -11
  67. package/dist/apps/management/routes/scopes.d.ts.map +1 -1
  68. package/dist/apps/management/routes/scopes.js +2 -2
  69. package/dist/apps/management/routes/scopes.js.map +1 -1
  70. package/dist/apps/management/routes/usage.d.ts +79 -79
  71. package/dist/apps/mcp.d.ts.map +1 -1
  72. package/dist/apps/mcp.js +3 -1
  73. package/dist/apps/mcp.js.map +1 -1
  74. package/dist/apps/relay/App.d.ts.map +1 -1
  75. package/dist/apps/relay/App.js +42 -4
  76. package/dist/apps/relay/App.js.map +1 -1
  77. package/dist/cloudflare.d.ts +2 -0
  78. package/dist/cloudflare.d.ts.map +1 -1
  79. package/dist/cloudflare.js +4 -0
  80. package/dist/cloudflare.js.map +1 -1
  81. package/dist/db/Db.d.ts +3 -0
  82. package/dist/db/Db.d.ts.map +1 -1
  83. package/dist/db/Db.js +57 -0
  84. package/dist/db/Db.js.map +1 -1
  85. package/dist/db/Schema.d.ts +31 -0
  86. package/dist/db/Schema.d.ts.map +1 -1
  87. package/dist/db/Schema.js +31 -0
  88. package/dist/db/Schema.js.map +1 -1
  89. package/dist/db/tables/inviteLinks.d.ts +42 -0
  90. package/dist/db/tables/inviteLinks.d.ts.map +1 -0
  91. package/dist/db/tables/inviteLinks.js +148 -0
  92. package/dist/db/tables/inviteLinks.js.map +1 -0
  93. package/dist/db/tables/organizations.d.ts.map +1 -1
  94. package/dist/db/tables/organizations.js +2 -0
  95. package/dist/db/tables/organizations.js.map +1 -1
  96. package/dist/handlers/relay.d.ts.map +1 -1
  97. package/dist/handlers/relay.js +13 -3
  98. package/dist/handlers/relay.js.map +1 -1
  99. package/dist/internal/Auth.d.ts +42 -23
  100. package/dist/internal/Auth.d.ts.map +1 -1
  101. package/dist/internal/Auth.js +169 -20
  102. package/dist/internal/Auth.js.map +1 -1
  103. package/dist/internal/EdgeCache.d.ts +3 -1
  104. package/dist/internal/EdgeCache.d.ts.map +1 -1
  105. package/dist/internal/EdgeCache.js +17 -2
  106. package/dist/internal/EdgeCache.js.map +1 -1
  107. package/dist/internal/Errors.d.ts +6 -0
  108. package/dist/internal/Errors.d.ts.map +1 -0
  109. package/dist/internal/Errors.js +16 -0
  110. package/dist/internal/Errors.js.map +1 -0
  111. package/dist/internal/FundingQuotes.d.ts +644 -0
  112. package/dist/internal/FundingQuotes.d.ts.map +1 -0
  113. package/dist/internal/{FundingRoutes.js → FundingQuotes.js} +93 -289
  114. package/dist/internal/FundingQuotes.js.map +1 -0
  115. package/dist/internal/Store.d.ts +61 -16
  116. package/dist/internal/Store.d.ts.map +1 -1
  117. package/dist/internal/Store.js +72 -17
  118. package/dist/internal/Store.js.map +1 -1
  119. package/dist/internal/Viem.d.ts +2 -0
  120. package/dist/internal/Viem.d.ts.map +1 -1
  121. package/dist/internal/Viem.js +11 -2
  122. package/dist/internal/Viem.js.map +1 -1
  123. package/dist/internal/index.d.ts +27 -0
  124. package/dist/internal/index.d.ts.map +1 -0
  125. package/dist/internal/index.js +27 -0
  126. package/dist/internal/index.js.map +1 -0
  127. package/package.json +8 -3
  128. package/src/ApiKeys.test.ts +23 -0
  129. package/src/App.test-d.ts +2 -0
  130. package/src/App.test.ts +60 -4
  131. package/src/App.ts +6 -0
  132. package/src/Client.test-d.ts +16 -54
  133. package/src/Scope.test.ts +1 -0
  134. package/src/Scope.ts +30 -4
  135. package/src/apps/data/App.test.ts +354 -0
  136. package/src/apps/data/App.ts +159 -52
  137. package/src/apps/data/FundingQuoteProviders.test.ts +151 -0
  138. package/src/apps/data/FundingQuoteProviders.ts +251 -0
  139. package/src/apps/data/index.ts +1 -1
  140. package/src/apps/data/routes/balances.test.ts +64 -18
  141. package/src/apps/data/routes/balances.ts +76 -177
  142. package/src/apps/data/routes/blocks.ts +3 -5
  143. package/src/apps/data/routes/coingecko.ts +3 -8
  144. package/src/apps/data/routes/funding.test.ts +149 -306
  145. package/src/apps/data/routes/funding.ts +154 -604
  146. package/src/apps/data/routes/indexer.test.ts +99 -3
  147. package/src/apps/data/routes/rpc.test.ts +219 -0
  148. package/src/apps/data/routes/rpc.ts +92 -17
  149. package/src/apps/data/routes/webhooks.test.ts +23 -2
  150. package/src/apps/data/routes/webhooks.ts +13 -1
  151. package/src/apps/index.ts +1 -1
  152. package/src/apps/management/App.ts +4 -0
  153. package/src/apps/management/routes/api-keys.test.ts +47 -3
  154. package/src/apps/management/routes/api-keys.ts +2 -2
  155. package/src/apps/management/routes/invite-links.test.ts +385 -0
  156. package/src/apps/management/routes/invite-links.ts +570 -0
  157. package/src/apps/management/routes/scopes.test.ts +3 -2
  158. package/src/apps/management/routes/scopes.ts +4 -2
  159. package/src/apps/mcp.test.ts +55 -14
  160. package/src/apps/mcp.ts +3 -1
  161. package/src/apps/relay/App.test.ts +324 -4
  162. package/src/apps/relay/App.ts +40 -4
  163. package/src/cloudflare.ts +5 -0
  164. package/src/db/Db.ts +65 -0
  165. package/src/db/Schema.ts +39 -0
  166. package/src/db/tables/inviteLinks.ts +187 -0
  167. package/src/db/tables/organizations.ts +2 -0
  168. package/src/handlers/relay.ts +16 -4
  169. package/src/internal/Auth.test.ts +528 -37
  170. package/src/internal/Auth.ts +246 -45
  171. package/src/internal/EdgeCache.test.ts +24 -3
  172. package/src/internal/EdgeCache.ts +18 -2
  173. package/src/internal/FundingQuotes.test.ts +174 -0
  174. package/src/internal/FundingQuotes.ts +735 -0
  175. package/src/internal/Log.test.ts +4 -4
  176. package/src/internal/Store.test-d.ts +15 -0
  177. package/src/internal/Store.test.ts +153 -2
  178. package/src/internal/Store.ts +157 -41
  179. package/src/internal/Viem.ts +14 -5
  180. package/src/internal/index.test.ts +34 -0
  181. package/src/internal/index.ts +26 -0
  182. package/dist/apps/data/FundingRouteProviders.d.ts +0 -143
  183. package/dist/apps/data/FundingRouteProviders.d.ts.map +0 -1
  184. package/dist/apps/data/FundingRouteProviders.js +0 -546
  185. package/dist/apps/data/FundingRouteProviders.js.map +0 -1
  186. package/dist/internal/FundingRoutes.d.ts +0 -1085
  187. package/dist/internal/FundingRoutes.d.ts.map +0 -1
  188. package/dist/internal/FundingRoutes.js.map +0 -1
  189. package/src/apps/data/FundingRouteProviders.test.ts +0 -485
  190. package/src/apps/data/FundingRouteProviders.ts +0 -744
  191. package/src/internal/FundingRoutes.test.ts +0 -239
  192. package/src/internal/FundingRoutes.ts +0 -1067
@@ -1,239 +0,0 @@
1
- import * as FundingRoutes from './FundingRoutes.js'
2
-
3
- const baseUsdcRequest = {
4
- limit: 10,
5
- provider: 'across',
6
- sourceAmount: '1000000',
7
- sourceAmountUnits: 'baseUnits',
8
- sourceChain: 'base',
9
- sourceToken: 'USDC',
10
- } as const
11
-
12
- const baseAcrossQuoteRequest = {
13
- depositor: '0x1111111111111111111111111111111111111111',
14
- provider: 'across',
15
- sourceAmount: '1000000',
16
- sourceAmountUnits: 'baseUnits',
17
- sourceChain: 'base',
18
- sourceToken: 'USDC',
19
- } as const
20
-
21
- describe('listRoutes', () => {
22
- test('enriches static candidates with adapter quote probes', async () => {
23
- let seen: FundingRoutes.QuoteProbeInput | undefined
24
- const routes = await FundingRoutes.listRoutes({
25
- ...baseUsdcRequest,
26
- adapters: {
27
- across: {
28
- async probeQuote(input, signal) {
29
- seen = input
30
- expect(signal.aborted).toBe(false)
31
- expect(input.cache.bypass).toBe(false)
32
- expect(input.destinationChain.id).toBe('eip155:4217')
33
- expect(input.destinationToken.symbol).toBe('USDC.e')
34
- expect(input.include).toEqual([])
35
- expect(input.request.sourceChain).toBe('base')
36
- return {
37
- expiresAt: '2026-01-01T00:00:30Z',
38
- limits: {
39
- instantSourceAmount: '1000000000',
40
- maxSourceAmount: '100000000000',
41
- minSourceAmount: '500000',
42
- },
43
- minimumOutputAmount: '980000',
44
- outputAmount: '990000',
45
- outputAmountFormatted: '0.99',
46
- quality: {
47
- availableVolumeUsd: '1000.00',
48
- estimatedSeconds: 4,
49
- feeBps: 12,
50
- historicalVolumeUsd24h: '100000.00',
51
- instantVolumeUsd: '1000.00',
52
- liquiditySource: 'providerQuote',
53
- score: 91,
54
- sourceDetail: 'providerEndpoint',
55
- tier: 'liquid',
56
- },
57
- sampledAt: '2026-01-01T00:00:00Z',
58
- status: 'available',
59
- }
60
- },
61
- },
62
- },
63
- })
64
-
65
- expect(seen?.route.id).toBe('base-usdc-tempo-usdce-across')
66
- expect(seen?.sourceAmount.amount).toBe('1000000')
67
- expect(seen?.sourceChain.id).toBe('eip155:8453')
68
- expect(seen?.sourceToken.symbol).toBe('USDC')
69
- expect(routes).toHaveLength(1)
70
- expect(routes[0]).toMatchObject({
71
- errorCode: null,
72
- id: 'base-usdc-tempo-usdce-across',
73
- quality: {
74
- availableVolumeUsd: '1000.00',
75
- estimatedSeconds: 4,
76
- feeBps: 12,
77
- historicalVolumeUsd24h: '100000.00',
78
- instantVolumeUsd: '1000.00',
79
- liquiditySource: 'providerQuote',
80
- score: 91,
81
- sourceDetail: 'providerEndpoint',
82
- tier: 'liquid',
83
- },
84
- quote: {
85
- expiresAt: '2026-01-01T00:00:30Z',
86
- inputAmount: '1000000',
87
- limits: {
88
- instantSourceAmount: '1000000000',
89
- maxSourceAmount: '100000000000',
90
- minSourceAmount: '500000',
91
- },
92
- minimumOutputAmount: '980000',
93
- outputAmount: '990000',
94
- outputAmountFormatted: '0.99',
95
- sampledAt: '2026-01-01T00:00:00Z',
96
- },
97
- status: 'available',
98
- })
99
- })
100
-
101
- test('leaves candidates static when their provider has no adapter', async () => {
102
- let calls = 0
103
- const routes = await FundingRoutes.listRoutes({
104
- ...baseUsdcRequest,
105
- adapters: {
106
- relay: {
107
- async probeQuote() {
108
- calls += 1
109
- throw new Error('unexpected call')
110
- },
111
- },
112
- },
113
- })
114
-
115
- expect(calls).toBe(0)
116
- expect(routes[0]).toMatchObject({
117
- quality: {
118
- liquiditySource: 'staticInventory',
119
- sourceDetail: null,
120
- tier: 'unknown',
121
- },
122
- quote: null,
123
- status: 'unknown',
124
- })
125
- })
126
-
127
- test('marks candidates as errors when an adapter throws', async () => {
128
- const routes = await FundingRoutes.listRoutes({
129
- ...baseUsdcRequest,
130
- adapters: {
131
- across: {
132
- async probeQuote() {
133
- throw new Error('upstream unavailable')
134
- },
135
- },
136
- },
137
- })
138
-
139
- expect(routes[0]).toMatchObject({
140
- errorCode: 'provider_error',
141
- quality: {
142
- liquiditySource: 'providerError',
143
- sourceDetail: null,
144
- tier: 'error',
145
- },
146
- quote: null,
147
- status: 'error',
148
- })
149
- })
150
-
151
- test('aborts slow adapters and marks candidates as timed-out errors', async () => {
152
- let aborted = false
153
- const routes = await FundingRoutes.listRoutes({
154
- ...baseUsdcRequest,
155
- adapterTimeoutMs: 1,
156
- adapters: {
157
- across: {
158
- probeQuote(_input, signal) {
159
- signal.addEventListener('abort', () => {
160
- aborted = true
161
- })
162
- return new Promise<FundingRoutes.QuoteProbeResult>(() => {})
163
- },
164
- },
165
- },
166
- })
167
-
168
- expect(aborted).toBe(true)
169
- expect(routes[0]).toMatchObject({
170
- errorCode: 'provider_timeout',
171
- quality: {
172
- liquiditySource: 'providerError',
173
- sourceDetail: null,
174
- tier: 'error',
175
- },
176
- quote: null,
177
- status: 'error',
178
- })
179
- })
180
-
181
- test('passes include and cache policy through to adapters', async () => {
182
- let seen: FundingRoutes.QuoteProbeInput | undefined
183
- const routes = await FundingRoutes.listRoutes({
184
- ...baseUsdcRequest,
185
- adapters: {
186
- across: {
187
- async probeQuote(input) {
188
- seen = input
189
- return {
190
- errorCode: 'provider_unavailable',
191
- sampledAt: '2026-01-01T00:00:00Z',
192
- status: 'error',
193
- }
194
- },
195
- },
196
- },
197
- cache: { bypass: true },
198
- include: ['quotes'],
199
- })
200
-
201
- expect(seen?.cache.bypass).toBe(true)
202
- expect(seen?.include).toEqual(['quotes'])
203
- expect(seen?.request.include).toEqual(['quotes'])
204
- expect(routes[0]).toMatchObject({
205
- errorCode: 'provider_unavailable',
206
- quote: null,
207
- status: 'error',
208
- })
209
- })
210
- })
211
-
212
- describe('quoteRoute', () => {
213
- test('rejects requests without a configured quote capability', async () => {
214
- await expect(FundingRoutes.quoteRoute(baseAcrossQuoteRequest)).rejects.toBeInstanceOf(
215
- FundingRoutes.ProviderNotConfiguredError,
216
- )
217
- })
218
-
219
- test('rejects requests outside curated inventory', async () => {
220
- await expect(
221
- FundingRoutes.quoteRoute({
222
- ...baseAcrossQuoteRequest,
223
- sourceToken: 'USDT',
224
- }),
225
- ).rejects.toBeInstanceOf(FundingRoutes.FundingRouteNotFoundError)
226
- })
227
- })
228
-
229
- describe('parseInclude', () => {
230
- test('parses comma-separated include values', () => {
231
- expect(FundingRoutes.parseInclude('quotes,quotes')).toEqual(['quotes'])
232
- })
233
-
234
- test('rejects unsupported include values', () => {
235
- expect(() => FundingRoutes.parseInclude('quotes,debug')).toThrow(
236
- FundingRoutes.UnsupportedIncludeError,
237
- )
238
- })
239
- })