tapimo 0.5.0 → 0.5.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/dist/App.d.ts +4854 -4829
- package/dist/App.d.ts.map +1 -1
- package/dist/App.js +20 -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.map +1 -1
- package/dist/Scope.js +1 -2
- 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 +2 -2
- 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 +1398 -1405
- package/dist/apps/data/App.d.ts.map +1 -1
- package/dist/apps/data/App.js +25 -38
- package/dist/apps/data/App.js.map +1 -1
- package/dist/apps/data/FundingQuoteProviders.d.ts +108 -3
- package/dist/apps/data/FundingQuoteProviders.d.ts.map +1 -1
- package/dist/apps/data/FundingQuoteProviders.js +409 -2
- package/dist/apps/data/FundingQuoteProviders.js.map +1 -1
- package/dist/apps/data/routes/activities.d.ts +245 -245
- package/dist/apps/data/routes/blocks.d.ts +123 -123
- package/dist/apps/data/routes/funding.d.ts +236 -146
- package/dist/apps/data/routes/funding.d.ts.map +1 -1
- package/dist/apps/data/routes/funding.js +23 -12
- package/dist/apps/data/routes/funding.js.map +1 -1
- 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/rpc.d.ts +31 -31
- package/dist/apps/data/routes/tokenlist.d.ts +36 -36
- package/dist/apps/data/routes/transactions.d.ts +281 -281
- package/dist/apps/data/routes/transfers.d.ts +66 -73
- package/dist/apps/data/routes/transfers.d.ts.map +1 -1
- package/dist/apps/data/routes/transfers.js +21 -27
- package/dist/apps/data/routes/transfers.js.map +1 -1
- package/dist/apps/data/routes/verified-tokens.d.ts +86 -86
- package/dist/apps/data/routes/webhooks.d.ts +35 -35
- package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
- package/dist/apps/data/routes/webhooks.js +176 -42
- package/dist/apps/data/routes/webhooks.js.map +1 -1
- package/dist/apps/management/App.d.ts +520 -504
- package/dist/apps/management/App.d.ts.map +1 -1
- package/dist/apps/management/Billing.d.ts.map +1 -1
- package/dist/apps/management/Billing.js +5 -4
- package/dist/apps/management/Billing.js.map +1 -1
- package/dist/apps/management/routes/api-keys.d.ts +120 -120
- package/dist/apps/management/routes/billing.d.ts +211 -211
- package/dist/apps/management/routes/billing.d.ts.map +1 -1
- package/dist/apps/management/routes/billing.js +1 -1
- package/dist/apps/management/routes/billing.js.map +1 -1
- package/dist/apps/management/routes/invitations.d.ts +72 -72
- package/dist/apps/management/routes/invite-links.d.ts +159 -159
- package/dist/apps/management/routes/me.d.ts +17 -17
- package/dist/apps/management/routes/members.d.ts +80 -80
- package/dist/apps/management/routes/orgs.d.ts +59 -43
- package/dist/apps/management/routes/orgs.d.ts.map +1 -1
- package/dist/apps/management/routes/orgs.js +18 -1
- package/dist/apps/management/routes/orgs.js.map +1 -1
- package/dist/apps/management/routes/projects.d.ts +109 -109
- package/dist/apps/management/routes/scopes.d.ts +11 -11
- package/dist/apps/management/routes/usage.d.ts +79 -79
- 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.js +2 -2
- package/dist/apps/relay/Sponsorships.d.ts +3 -0
- package/dist/apps/relay/Sponsorships.d.ts.map +1 -1
- package/dist/apps/relay/Sponsorships.js +15 -1
- package/dist/apps/relay/Sponsorships.js.map +1 -1
- package/dist/db/Db.d.ts.map +1 -1
- package/dist/db/Db.js +4 -0
- package/dist/db/Db.js.map +1 -1
- package/dist/db/Schema.js +1 -1
- package/dist/db/Schema.js.map +1 -1
- package/dist/db/tables/organizations.d.ts +6 -0
- package/dist/db/tables/organizations.d.ts.map +1 -1
- package/dist/db/tables/organizations.js +26 -0
- package/dist/db/tables/organizations.js.map +1 -1
- package/dist/db/tables/requestUsage.d.ts +2 -11
- package/dist/db/tables/requestUsage.d.ts.map +1 -1
- package/dist/db/tables/requestUsage.js +1 -20
- package/dist/db/tables/requestUsage.js.map +1 -1
- package/dist/db/tables/sponsoredTransactions.d.ts +2 -1
- package/dist/db/tables/sponsoredTransactions.d.ts.map +1 -1
- package/dist/db/tables/sponsoredTransactions.js +52 -10
- package/dist/db/tables/sponsoredTransactions.js.map +1 -1
- package/dist/internal/Auth.d.ts +4 -0
- package/dist/internal/Auth.d.ts.map +1 -1
- package/dist/internal/Auth.js +15 -8
- package/dist/internal/Auth.js.map +1 -1
- package/dist/internal/Cache.d.ts.map +1 -1
- package/dist/internal/Cache.js +9 -1
- package/dist/internal/Cache.js.map +1 -1
- package/dist/internal/EdgeCache.d.ts.map +1 -1
- package/dist/internal/EdgeCache.js +12 -3
- package/dist/internal/EdgeCache.js.map +1 -1
- package/dist/internal/FundingQuotes.d.ts +176 -56
- package/dist/internal/FundingQuotes.d.ts.map +1 -1
- package/dist/internal/FundingQuotes.js +100 -5
- package/dist/internal/FundingQuotes.js.map +1 -1
- 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/RateLimit.d.ts +2 -0
- package/dist/internal/RateLimit.d.ts.map +1 -1
- package/dist/internal/RateLimit.js +4 -4
- package/dist/internal/RateLimit.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 +14 -1
- package/dist/internal/Viem.d.ts.map +1 -1
- package/dist/internal/Viem.js +19 -1
- package/dist/internal/Viem.js.map +1 -1
- package/package.json +7 -2
- package/src/ApiKeys.test.ts +2 -0
- package/src/App.test.ts +15 -4
- package/src/App.ts +31 -5
- package/src/Assets.ts +3 -3
- package/src/Client.test-d.ts +30 -3
- package/src/Scope.ts +4 -2
- 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.ts +25 -45
- package/src/apps/data/FundingQuoteProviders.test.ts +615 -5
- package/src/apps/data/FundingQuoteProviders.ts +570 -4
- package/src/apps/data/routes/funding.test.ts +181 -7
- package/src/apps/data/routes/funding.ts +27 -12
- package/src/apps/data/routes/indexer.test.ts +82 -20
- package/src/apps/data/routes/indexer.ts +8 -2
- package/src/apps/data/routes/tokens.test.ts +54 -0
- package/src/apps/data/routes/transfers.test.ts +73 -1
- package/src/apps/data/routes/transfers.ts +24 -30
- package/src/apps/data/routes/webhooks.test.ts +203 -0
- package/src/apps/data/routes/webhooks.ts +191 -54
- package/src/apps/management/Billing.test.ts +52 -3
- package/src/apps/management/Billing.ts +5 -4
- package/src/apps/management/routes/billing.ts +6 -1
- package/src/apps/management/routes/orgs.ts +19 -1
- package/src/apps/mcp.test.ts +18 -0
- package/src/apps/mcp.ts +2 -2
- package/src/apps/relay/App.test.ts +6 -5
- package/src/apps/relay/App.ts +2 -2
- package/src/apps/relay/Sponsorships.test.ts +2 -2
- package/src/apps/relay/Sponsorships.ts +24 -1
- package/src/db/Db.test.ts +5 -5
- package/src/db/Db.ts +4 -0
- package/src/db/Schema.ts +1 -1
- package/src/db/tables/billingSettings.test.ts +2 -2
- package/src/db/tables/organizations.test.ts +32 -2
- package/src/db/tables/organizations.ts +28 -0
- package/src/db/tables/requestUsage.ts +3 -23
- package/src/db/tables/sponsoredTransactions.test.ts +60 -2
- package/src/db/tables/sponsoredTransactions.ts +67 -21
- package/src/db/tables/stripeCustomers.test.ts +2 -2
- package/src/internal/Auth.test.ts +63 -10
- package/src/internal/Auth.ts +21 -9
- package/src/internal/Cache.test.ts +19 -0
- package/src/internal/Cache.ts +13 -1
- package/src/internal/EdgeCache.test.ts +40 -0
- package/src/internal/EdgeCache.ts +11 -3
- package/src/internal/FundingQuotes.test.ts +130 -3
- package/src/internal/FundingQuotes.ts +113 -6
- package/src/internal/Log.ts +21 -14
- package/src/internal/RateLimit.test.ts +12 -0
- package/src/internal/RateLimit.ts +4 -4
- 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 +34 -1
|
@@ -36,7 +36,18 @@ function RouteComponent() {
|
|
|
36
36
|
const rateLimit = field('rateLimit')
|
|
37
37
|
const perMinute = rateLimit ? Number(rateLimit) : undefined
|
|
38
38
|
const environment = field('environment') === 'sandbox' ? 'sandbox' : 'production'
|
|
39
|
-
const
|
|
39
|
+
const zoneChainId = field('zoneChainId')
|
|
40
|
+
const pendingZoneScope = zoneChainId ? Scopes.fromZoneChainId(zoneChainId) : undefined
|
|
41
|
+
if (zoneChainId && !pendingZoneScope) {
|
|
42
|
+
alert('Enter a positive integer Zone chain ID.')
|
|
43
|
+
return
|
|
44
|
+
}
|
|
45
|
+
const scopes = [
|
|
46
|
+
...new Set([
|
|
47
|
+
...form.getAll('scopes').filter((v): v is string => typeof v === 'string'),
|
|
48
|
+
...(pendingZoneScope ? [pendingZoneScope] : []),
|
|
49
|
+
]),
|
|
50
|
+
]
|
|
40
51
|
if (scopes.length === 0) {
|
|
41
52
|
alert('Select at least one scope.')
|
|
42
53
|
return
|
|
@@ -98,7 +109,7 @@ function RouteComponent() {
|
|
|
98
109
|
)}
|
|
99
110
|
loading={keys.isPending}
|
|
100
111
|
/>
|
|
101
|
-
<Dialog.Popup>
|
|
112
|
+
<Dialog.Popup className="flex max-h-[calc(100dvh-2rem)] flex-col overflow-hidden">
|
|
102
113
|
<ProvisionForm
|
|
103
114
|
onSubmit={onSubmit}
|
|
104
115
|
orgId={filters.orgId}
|
|
@@ -169,7 +180,7 @@ function ProvisionForm(props: {
|
|
|
169
180
|
: 'Create a key that authenticates requests to the API.'}
|
|
170
181
|
</Dialog.Description>
|
|
171
182
|
<form
|
|
172
|
-
className="mt-6 flex flex-col gap-8"
|
|
183
|
+
className="mt-6 flex min-h-0 flex-1 flex-col gap-8"
|
|
173
184
|
onSubmit={(event) => {
|
|
174
185
|
event.preventDefault()
|
|
175
186
|
props.onSubmit(new FormData(event.currentTarget))
|
|
@@ -190,7 +201,10 @@ function ProvisionForm(props: {
|
|
|
190
201
|
) : null}
|
|
191
202
|
</div>
|
|
192
203
|
) : null}
|
|
193
|
-
<Fields
|
|
204
|
+
<Fields
|
|
205
|
+
className="min-h-0 flex-1 gap-6 [grid-template-rows:auto_auto_auto_minmax(0,1fr)]"
|
|
206
|
+
variant="default"
|
|
207
|
+
>
|
|
194
208
|
<Input label="Name" name="name" placeholder="e.g. production-api" />
|
|
195
209
|
<div className="flex flex-col gap-2">
|
|
196
210
|
<span className="label-13 text-foreground-secondary">Environment</span>
|
|
@@ -212,35 +226,41 @@ function ProvisionForm(props: {
|
|
|
212
226
|
suffix="req/min"
|
|
213
227
|
type="number"
|
|
214
228
|
/>
|
|
215
|
-
<div className="flex flex-col gap-2">
|
|
229
|
+
<div className="flex min-h-0 flex-col gap-2 overflow-hidden">
|
|
216
230
|
<span className="label-13 text-foreground-secondary">Scopes</span>
|
|
217
231
|
{scopes.isPending ? (
|
|
218
232
|
<span className="text-label-13 text-foreground-secondary">Loading scopes…</span>
|
|
219
233
|
) : scopes.error ? (
|
|
220
234
|
<span className="text-label-13 text-negative">{scopes.error.message}</span>
|
|
221
235
|
) : (
|
|
222
|
-
<
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
236
|
+
<div className="min-h-0 flex-1 overflow-y-auto overscroll-contain border border-border">
|
|
237
|
+
<Rows variant="surface">
|
|
238
|
+
{(scopes.data?.data ?? []).map((entry) =>
|
|
239
|
+
entry.scope === Scopes.zoneTemplate ? (
|
|
240
|
+
<ZoneScopeRow description={entry.description} key={entry.scope} />
|
|
241
|
+
) : (
|
|
242
|
+
<Rows.Row
|
|
243
|
+
key={entry.scope}
|
|
244
|
+
className="min-h-[56px] py-3"
|
|
245
|
+
render={<label className="cursor-pointer" />}
|
|
246
|
+
style={{ height: 'auto' }}
|
|
247
|
+
>
|
|
248
|
+
<Checkbox
|
|
249
|
+
defaultChecked={entry.scope === 'data:read'}
|
|
250
|
+
name="scopes"
|
|
251
|
+
value={entry.scope}
|
|
252
|
+
/>
|
|
253
|
+
<span className="flex min-w-0 flex-col gap-0.5">
|
|
254
|
+
<span className="text-label-13 text-foreground">{entry.scope}</span>
|
|
255
|
+
<span className="text-label-12 text-foreground-secondary">
|
|
256
|
+
{entry.description}
|
|
257
|
+
</span>
|
|
258
|
+
</span>
|
|
259
|
+
</Rows.Row>
|
|
260
|
+
),
|
|
261
|
+
)}
|
|
262
|
+
</Rows>
|
|
263
|
+
</div>
|
|
244
264
|
)}
|
|
245
265
|
</div>
|
|
246
266
|
</Fields>
|
|
@@ -255,6 +275,87 @@ function ProvisionForm(props: {
|
|
|
255
275
|
)
|
|
256
276
|
}
|
|
257
277
|
|
|
278
|
+
function ZoneScopeRow(props: { description: string }) {
|
|
279
|
+
const [chainId, setChainId] = useState('')
|
|
280
|
+
const [selected, setSelected] = useState<readonly string[]>([])
|
|
281
|
+
const scope = Scopes.fromZoneChainId(chainId)
|
|
282
|
+
const duplicate = scope ? selected.includes(scope) : false
|
|
283
|
+
const error =
|
|
284
|
+
chainId && !scope
|
|
285
|
+
? 'Enter a positive integer chain ID.'
|
|
286
|
+
: duplicate
|
|
287
|
+
? 'Zone already added.'
|
|
288
|
+
: false
|
|
289
|
+
|
|
290
|
+
function add() {
|
|
291
|
+
if (!scope || duplicate) return
|
|
292
|
+
setSelected((current) => [...current, scope])
|
|
293
|
+
setChainId('')
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
return (
|
|
297
|
+
<Rows.Row className="min-h-[56px] flex-col items-stretch py-3" style={{ height: 'auto' }}>
|
|
298
|
+
<span className="flex min-w-0 flex-col gap-0.5">
|
|
299
|
+
<span className="text-label-13 text-foreground">{Scopes.zoneTemplate}</span>
|
|
300
|
+
<span className="text-label-12 text-foreground-secondary">{props.description}</span>
|
|
301
|
+
</span>
|
|
302
|
+
<div className="flex items-start gap-2 max-sm:flex-col">
|
|
303
|
+
<div className="min-w-0 flex-1 max-sm:w-full">
|
|
304
|
+
<Input
|
|
305
|
+
aria-label="Zone chain ID"
|
|
306
|
+
autoComplete="off"
|
|
307
|
+
error={error}
|
|
308
|
+
inputMode="numeric"
|
|
309
|
+
name="zoneChainId"
|
|
310
|
+
onChange={(event) => setChainId(event.target.value)}
|
|
311
|
+
onKeyDown={(event) => {
|
|
312
|
+
if (event.key !== 'Enter') return
|
|
313
|
+
event.preventDefault()
|
|
314
|
+
add()
|
|
315
|
+
}}
|
|
316
|
+
pattern="[0-9]*"
|
|
317
|
+
placeholder="421700001"
|
|
318
|
+
prefix="zone:"
|
|
319
|
+
suffix=":read"
|
|
320
|
+
value={chainId}
|
|
321
|
+
/>
|
|
322
|
+
</div>
|
|
323
|
+
<Button
|
|
324
|
+
className="max-sm:w-full"
|
|
325
|
+
disabled={!scope || duplicate}
|
|
326
|
+
onClick={add}
|
|
327
|
+
type="button"
|
|
328
|
+
>
|
|
329
|
+
Add zone
|
|
330
|
+
</Button>
|
|
331
|
+
</div>
|
|
332
|
+
{selected.length > 0 ? (
|
|
333
|
+
<ul className="flex flex-col gap-2">
|
|
334
|
+
{selected.map((scope) => (
|
|
335
|
+
<li
|
|
336
|
+
className="flex min-w-0 items-center gap-2 border border-border bg-secondary py-1 pr-1 pl-2"
|
|
337
|
+
key={scope}
|
|
338
|
+
>
|
|
339
|
+
<input name="scopes" type="hidden" value={scope} />
|
|
340
|
+
<code className="min-w-0 flex-1 truncate text-label-12 text-foreground">{scope}</code>
|
|
341
|
+
<Button.Icon
|
|
342
|
+
onClick={() =>
|
|
343
|
+
setSelected((current) => current.filter((candidate) => candidate !== scope))
|
|
344
|
+
}
|
|
345
|
+
size="md"
|
|
346
|
+
title={`Remove ${scope}`}
|
|
347
|
+
variant="plain"
|
|
348
|
+
>
|
|
349
|
+
<X className="size-4" />
|
|
350
|
+
</Button.Icon>
|
|
351
|
+
</li>
|
|
352
|
+
))}
|
|
353
|
+
</ul>
|
|
354
|
+
) : null}
|
|
355
|
+
</Rows.Row>
|
|
356
|
+
)
|
|
357
|
+
}
|
|
358
|
+
|
|
258
359
|
function KeyList(props: {
|
|
259
360
|
environment: 'production' | 'sandbox'
|
|
260
361
|
error: Error | null
|