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.
- package/dist/App.d.ts +5561 -5026
- package/dist/App.d.ts.map +1 -1
- package/dist/App.js +38 -3
- package/dist/App.js.map +1 -1
- package/dist/Scope.d.ts +2 -0
- package/dist/Scope.d.ts.map +1 -1
- package/dist/Scope.js +17 -0
- package/dist/Scope.js.map +1 -1
- package/dist/admin/App.d.ts +123 -74
- package/dist/admin/App.d.ts.map +1 -1
- package/dist/admin/apps/api-keys.d.ts +80 -0
- package/dist/admin/apps/api-keys.d.ts.map +1 -1
- package/dist/admin/apps/api-keys.js +54 -0
- package/dist/admin/apps/api-keys.js.map +1 -1
- package/dist/admin/apps/earn-vaults.d.ts +15 -15
- package/dist/admin/apps/earn-vaults.js +1 -1
- package/dist/admin/apps/verified-tokens.d.ts +81 -81
- package/dist/admin/ui.generated.d.ts +1 -1
- package/dist/admin/ui.generated.d.ts.map +1 -1
- package/dist/admin/ui.generated.js +151 -151
- package/dist/admin/ui.generated.js.map +1 -1
- package/dist/apps/Zones.d.ts +16 -16
- package/dist/apps/Zones.js +4 -4
- package/dist/apps/data/App.js +18 -18
- package/dist/apps/data/App.js.map +1 -1
- package/dist/apps/data/ZoneSelection.d.ts +8 -8
- package/dist/apps/data/ZoneSelection.d.ts.map +1 -1
- package/dist/apps/data/ZoneSelection.js +1 -1
- package/dist/apps/data/ZoneSelection.js.map +1 -1
- package/dist/apps/data/routes/activities.d.ts +588 -584
- package/dist/apps/data/routes/activities.d.ts.map +1 -1
- package/dist/apps/data/routes/activities.js +1561 -1239
- package/dist/apps/data/routes/activities.js.map +1 -1
- package/dist/apps/data/routes/balances.d.ts +26 -26
- package/dist/apps/data/routes/balances.d.ts.map +1 -1
- package/dist/apps/data/routes/balances.js +43 -16
- package/dist/apps/data/routes/balances.js.map +1 -1
- package/dist/apps/data/routes/blocks.d.ts +44 -44
- package/dist/apps/data/routes/blocks.d.ts.map +1 -1
- package/dist/apps/data/routes/blocks.js +21 -11
- package/dist/apps/data/routes/blocks.js.map +1 -1
- package/dist/apps/data/routes/coingecko.d.ts +3 -3
- package/dist/apps/data/routes/earn.d.ts +18 -18
- package/dist/apps/data/routes/earn.js +13 -13
- package/dist/apps/data/routes/exchanges.d.ts +145 -145
- package/dist/apps/data/routes/fee-amm.d.ts +2 -2
- package/dist/apps/data/routes/receipts.d.ts +155 -55
- package/dist/apps/data/routes/receipts.d.ts.map +1 -1
- package/dist/apps/data/routes/receipts.js +28 -10
- package/dist/apps/data/routes/receipts.js.map +1 -1
- package/dist/apps/data/routes/tokenlist.d.ts +13 -13
- package/dist/apps/data/routes/tokens.d.ts +98 -98
- package/dist/apps/data/routes/tokens.d.ts.map +1 -1
- package/dist/apps/data/routes/tokens.js +51 -20
- package/dist/apps/data/routes/tokens.js.map +1 -1
- package/dist/apps/data/routes/transactions.d.ts +7 -2
- package/dist/apps/data/routes/transactions.d.ts.map +1 -1
- package/dist/apps/data/routes/transactions.js +37 -17
- package/dist/apps/data/routes/transactions.js.map +1 -1
- package/dist/apps/data/routes/transfers.d.ts +1 -1
- package/dist/apps/data/routes/transfers.d.ts.map +1 -1
- package/dist/apps/data/routes/transfers.js +18 -12
- package/dist/apps/data/routes/transfers.js.map +1 -1
- package/dist/apps/data/routes/valuation.d.ts +1 -1
- package/dist/apps/data/routes/valuation.d.ts.map +1 -1
- package/dist/apps/data/routes/valuation.js +12 -7
- package/dist/apps/data/routes/valuation.js.map +1 -1
- package/dist/apps/data/routes/verified-tokens.d.ts +3 -3
- package/dist/apps/data/routes/webhooks.d.ts +11 -11
- package/dist/apps/data/routes/zones.d.ts +14 -14
- package/dist/apps/data/routes/zones.js +1 -1
- package/dist/apps/funding/App.d.ts +11 -0
- package/dist/apps/funding/App.d.ts.map +1 -1
- package/dist/apps/funding/routes/deposit-addresses.d.ts.map +1 -1
- package/dist/apps/funding/routes/deposit-addresses.js +16 -11
- package/dist/apps/funding/routes/deposit-addresses.js.map +1 -1
- package/dist/apps/funding/routes/transfers.d.ts +60 -48
- package/dist/apps/funding/routes/transfers.d.ts.map +1 -1
- package/dist/apps/funding/routes/transfers.js +27 -19
- package/dist/apps/funding/routes/transfers.js.map +1 -1
- package/dist/apps/management/App.d.ts +4487 -3963
- package/dist/apps/management/App.d.ts.map +1 -1
- package/dist/apps/management/routes/api-keys.d.ts +710 -159
- package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
- package/dist/apps/management/routes/api-keys.js +236 -4
- package/dist/apps/management/routes/api-keys.js.map +1 -1
- package/dist/apps/management/routes/faucet.d.ts +6 -6
- package/dist/apps/management/routes/invite-links.d.ts +42 -42
- package/dist/apps/management/routes/members.d.ts +30 -30
- package/dist/apps/management/routes/projects.d.ts +40 -40
- package/dist/apps/management/routes/usage.d.ts +24 -24
- package/dist/apps/management/routes/verified-token-requests.d.ts +1 -1
- package/dist/apps/management/routes/webhooks.d.ts +55 -55
- package/dist/db/Db.d.ts.map +1 -1
- package/dist/db/Db.js +12 -1
- package/dist/db/Db.js.map +1 -1
- package/dist/db/Schema.d.ts +3 -2
- package/dist/db/Schema.d.ts.map +1 -1
- package/dist/db/Schema.js +5 -2
- package/dist/db/Schema.js.map +1 -1
- package/dist/db/tables/fundingCatalog.d.ts +4 -2
- package/dist/db/tables/fundingCatalog.d.ts.map +1 -1
- package/dist/db/tables/fundingCatalog.js +5 -1
- package/dist/db/tables/fundingCatalog.js.map +1 -1
- package/dist/handlers/internal/utils.d.ts.map +1 -1
- package/dist/handlers/internal/utils.js +9 -0
- package/dist/handlers/internal/utils.js.map +1 -1
- package/dist/internal/Auth.d.ts +3 -1
- package/dist/internal/Auth.d.ts.map +1 -1
- package/dist/internal/Auth.js +6 -3
- package/dist/internal/Auth.js.map +1 -1
- package/dist/internal/EarnVaults.d.ts +3 -3
- package/dist/internal/EarnVaults.js +3 -3
- package/dist/internal/Fetch.d.ts +23 -0
- package/dist/internal/Fetch.d.ts.map +1 -0
- package/dist/internal/Fetch.js +26 -0
- package/dist/internal/Fetch.js.map +1 -0
- package/dist/internal/Log.d.ts +3 -1
- package/dist/internal/Log.d.ts.map +1 -1
- package/dist/internal/Log.js +16 -3
- package/dist/internal/Log.js.map +1 -1
- package/dist/internal/OpenApi.d.ts +5 -3
- package/dist/internal/OpenApi.d.ts.map +1 -1
- package/dist/internal/OpenApi.js +13 -3
- package/dist/internal/OpenApi.js.map +1 -1
- package/dist/internal/Response.d.ts +1 -1
- package/dist/internal/Response.d.ts.map +1 -1
- package/dist/internal/Schema.d.ts +6 -3
- package/dist/internal/Schema.d.ts.map +1 -1
- package/dist/internal/Schema.js +8 -2
- package/dist/internal/Schema.js.map +1 -1
- package/dist/internal/Store.d.ts +16 -3
- package/dist/internal/Store.d.ts.map +1 -1
- package/dist/internal/Store.js +82 -16
- package/dist/internal/Store.js.map +1 -1
- package/dist/internal/Tidx.d.ts.map +1 -1
- package/dist/internal/Tidx.js +7 -2
- package/dist/internal/Tidx.js.map +1 -1
- package/dist/internal/Timeout.d.ts +36 -0
- package/dist/internal/Timeout.d.ts.map +1 -0
- package/dist/internal/Timeout.js +37 -0
- package/dist/internal/Timeout.js.map +1 -0
- package/dist/internal/Timing.d.ts +9 -0
- package/dist/internal/Timing.d.ts.map +1 -1
- package/dist/internal/Timing.js +7 -0
- package/dist/internal/Timing.js.map +1 -1
- package/dist/internal/WebhookDestination.d.ts.map +1 -1
- package/dist/internal/WebhookDestination.js +3 -0
- package/dist/internal/WebhookDestination.js.map +1 -1
- package/dist/internal/funding/Action.d.ts +9 -0
- package/dist/internal/funding/Action.d.ts.map +1 -1
- package/dist/internal/funding/Action.js +16 -8
- package/dist/internal/funding/Action.js.map +1 -1
- package/dist/internal/funding/Catalog.d.ts +9 -2
- package/dist/internal/funding/Catalog.d.ts.map +1 -1
- package/dist/internal/funding/Catalog.js +19 -8
- package/dist/internal/funding/Catalog.js.map +1 -1
- package/dist/internal/funding/Provider.d.ts +68 -13
- package/dist/internal/funding/Provider.d.ts.map +1 -1
- package/dist/internal/funding/Provider.js +29 -8
- package/dist/internal/funding/Provider.js.map +1 -1
- package/dist/internal/funding/Transfer.d.ts +13 -12
- package/dist/internal/funding/Transfer.d.ts.map +1 -1
- package/dist/internal/funding/Transfer.js +23 -21
- package/dist/internal/funding/Transfer.js.map +1 -1
- package/dist/internal/funding/providers/stargate.d.ts +28 -9
- package/dist/internal/funding/providers/stargate.d.ts.map +1 -1
- package/dist/internal/funding/providers/stargate.js +251 -117
- package/dist/internal/funding/providers/stargate.js.map +1 -1
- package/dist/internal/index.d.ts +1 -0
- package/dist/internal/index.d.ts.map +1 -1
- package/dist/internal/index.js +1 -0
- package/dist/internal/index.js.map +1 -1
- package/package.json +2 -2
- package/src/App.test.ts +100 -0
- package/src/App.ts +42 -3
- package/src/Client.test-d.ts +46 -0
- package/src/Scope.test.ts +20 -0
- package/src/Scope.ts +16 -0
- package/src/admin/apps/api-keys.test.ts +75 -0
- package/src/admin/apps/api-keys.ts +64 -0
- package/src/admin/apps/earn-vaults.test.ts +1 -1
- package/src/admin/apps/earn-vaults.ts +1 -1
- package/src/admin/ui/src/lib/api-keys.ts +19 -0
- package/src/admin/ui/src/routes/api-keys.tsx +89 -2
- package/src/admin/ui.generated.ts +189 -151
- package/src/apps/Zones.test.ts +4 -4
- package/src/apps/Zones.ts +4 -4
- package/src/apps/composition.test.ts +1 -1
- package/src/apps/data/App.test.ts +41 -0
- package/src/apps/data/App.ts +18 -18
- package/src/apps/data/ZoneSelection.test.ts +2 -2
- package/src/apps/data/ZoneSelection.ts +8 -8
- package/src/apps/data/routes/activities.test.ts +1526 -12
- package/src/apps/data/routes/activities.ts +1774 -1356
- package/src/apps/data/routes/balances.ts +133 -97
- package/src/apps/data/routes/blocks.test.ts +533 -0
- package/src/apps/data/routes/blocks.ts +35 -16
- package/src/apps/data/routes/earn.test.ts +4 -2
- package/src/apps/data/routes/earn.ts +13 -13
- package/src/apps/data/routes/earn.zone-access.test.ts +6 -6
- package/src/apps/data/routes/receipts.ts +47 -16
- package/src/apps/data/routes/tokens.test.ts +578 -0
- package/src/apps/data/routes/tokens.ts +283 -225
- package/src/apps/data/routes/transactions.ts +68 -29
- package/src/apps/data/routes/transfers.test.ts +421 -0
- package/src/apps/data/routes/transfers.ts +45 -27
- package/src/apps/data/routes/valuation.ts +94 -78
- package/src/apps/data/routes/zones.test.ts +2 -2
- package/src/apps/data/routes/zones.ts +1 -1
- package/src/apps/funding/routes/deposit-addresses.test.ts +25 -3
- package/src/apps/funding/routes/deposit-addresses.ts +17 -12
- package/src/apps/funding/routes/quotes.test.ts +5 -9
- package/src/apps/funding/routes/transfers.test.ts +395 -8
- package/src/apps/funding/routes/transfers.ts +76 -59
- package/src/apps/management/routes/api-keys.test.ts +220 -0
- package/src/apps/management/routes/api-keys.ts +280 -3
- package/src/db/Db.ts +13 -1
- package/src/db/Schema.ts +5 -2
- package/src/db/tables/earnVaults.test.ts +9 -9
- package/src/db/tables/fundingCatalog.test.ts +16 -2
- package/src/db/tables/fundingCatalog.ts +9 -3
- package/src/handlers/internal/utils.test.ts +53 -0
- package/src/handlers/internal/utils.ts +15 -0
- package/src/internal/Auth.ts +12 -4
- package/src/internal/EarnVaults.capabilities.test.ts +2 -2
- package/src/internal/EarnVaults.test.ts +1 -1
- package/src/internal/EarnVaults.ts +3 -3
- package/src/internal/Fetch.test.ts +46 -0
- package/src/internal/Fetch.ts +56 -0
- package/src/internal/Log.test.ts +21 -0
- package/src/internal/Log.ts +20 -5
- package/src/internal/OpenApi.ts +14 -4
- package/src/internal/Response.ts +1 -1
- package/src/internal/Schema.test.ts +2 -0
- package/src/internal/Schema.ts +12 -2
- package/src/internal/Store.test.ts +178 -0
- package/src/internal/Store.ts +104 -18
- package/src/internal/Tidx.test.ts +2 -1
- package/src/internal/Tidx.ts +7 -2
- package/src/internal/Timeout.test.ts +35 -0
- package/src/internal/Timeout.ts +73 -0
- package/src/internal/Timing.ts +16 -0
- package/src/internal/WebhookDestination.ts +3 -0
- package/src/internal/funding/Action.test.ts +41 -1
- package/src/internal/funding/Action.ts +69 -41
- package/src/internal/funding/Catalog.test.ts +34 -0
- package/src/internal/funding/Catalog.ts +28 -11
- package/src/internal/funding/Provider.test.ts +73 -0
- package/src/internal/funding/Provider.ts +82 -28
- package/src/internal/funding/Transfer.ts +133 -110
- package/src/internal/funding/providers/index.test.ts +4 -167
- package/src/internal/funding/providers/relay.test.ts +2 -2
- package/src/internal/funding/providers/stargate.test.ts +163 -0
- package/src/internal/funding/providers/stargate.ts +359 -134
- package/src/internal/index.test.ts +1 -0
- package/src/internal/index.ts +1 -0
|
@@ -1,143 +1,277 @@
|
|
|
1
|
-
import { Address } from 'ox';
|
|
1
|
+
import { AbiFunction, Address, Hex, RpcTransport } from 'ox';
|
|
2
|
+
import { createClient, custom, fallback, publicActions } from 'viem';
|
|
2
3
|
import * as z from 'zod/mini';
|
|
4
|
+
import * as Action from '../Action.js';
|
|
3
5
|
import * as FundingProvider from '../Provider.js';
|
|
4
|
-
const
|
|
6
|
+
const approve = AbiFunction.from('function approve(address spender, uint256 amount)');
|
|
5
7
|
const defaultFetch = (input, init) => globalThis.fetch(input, init);
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
(function (
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
.array(z.object({
|
|
24
|
-
srcChainKey: z.string(),
|
|
25
|
-
type: z.string(),
|
|
26
|
-
}))
|
|
27
|
-
.check(z.minLength(1)),
|
|
28
|
-
srcAmount: IntegerString,
|
|
29
|
-
});
|
|
30
|
-
const Error = z.object({
|
|
31
|
-
message: z.string(),
|
|
32
|
-
status: z.union([z.string(), z.number()]),
|
|
33
|
-
});
|
|
34
|
-
schema.Quotes = z.object({
|
|
35
|
-
error: z.optional(z.nullable(Error)),
|
|
36
|
-
quotes: z.array(Quote),
|
|
37
|
-
});
|
|
38
|
-
})(schema || (schema = {}));
|
|
39
|
-
/** Creates a Stargate funding provider backed by LayerZero's `/quotes` endpoint. */
|
|
40
|
-
export function stargate(options) {
|
|
41
|
-
if (options.apiKey.trim().length === 0)
|
|
42
|
-
throw new FundingProvider.ProviderConfigurationError();
|
|
43
|
-
if (!Address.validate(options.userAddress, { strict: false }))
|
|
44
|
-
throw new FundingProvider.ProviderConfigurationError();
|
|
45
|
-
const endpoint = new URL(options.baseUrl ?? defaultBaseUrl);
|
|
46
|
-
endpoint.pathname = `${endpoint.pathname.replace(/\/+$/, '')}/quotes`;
|
|
8
|
+
const destinationChainId = 'eip155:4217';
|
|
9
|
+
const destinationEid = 30_410;
|
|
10
|
+
const destinationToken = '0x20C000000000000000000000b9537d11c60E8b50';
|
|
11
|
+
const quoteOft = AbiFunction.from('function quoteOFT((uint32 dstEid, bytes32 to, uint256 amountLD, uint256 minAmountLD, bytes extraOptions, bytes composeMsg, bytes oftCmd) sendParam) view returns ((uint256 minAmountLD, uint256 maxAmountLD) limit, (int256 feeAmountLD, string description)[] oftFeeDetails, (uint256 amountSentLD, uint256 amountReceivedLD) receipt)');
|
|
12
|
+
const quoteSend = AbiFunction.from('function quoteSend((uint32 dstEid, bytes32 to, uint256 amountLD, uint256 minAmountLD, bytes extraOptions, bytes composeMsg, bytes oftCmd) sendParam, bool payInLzToken) view returns ((uint256 nativeFee, uint256 lzTokenFee) fee)');
|
|
13
|
+
const sendToken = AbiFunction.from('function sendToken((uint32 dstEid, bytes32 to, uint256 amountLD, uint256 minAmountLD, bytes extraOptions, bytes composeMsg, bytes oftCmd) sendParam, (uint256 nativeFee, uint256 lzTokenFee) fee, address refundAddress) payable returns ((bytes32 guid, uint64 nonce, (uint256 nativeFee, uint256 lzTokenFee) fee) msgReceipt, (uint256 amountSentLD, uint256 amountReceivedLD) oftReceipt, (uint72 ticketId, bytes passengerBytes) ticket)');
|
|
14
|
+
const quoteTtlMs = 60_000;
|
|
15
|
+
const zeroAddress = '0x0000000000000000000000000000000000000000';
|
|
16
|
+
const configuration = z
|
|
17
|
+
.strictObject({
|
|
18
|
+
poolAddress: z
|
|
19
|
+
.string()
|
|
20
|
+
.check(z.regex(/^0x[0-9a-fA-F]{40}$/), z.describe('Stargate pool contract on the source chain.')),
|
|
21
|
+
})
|
|
22
|
+
.check(z.describe('Stargate configuration for one funding route.'));
|
|
23
|
+
/** Creates a direct Stargate V2 OFT funding provider. */
|
|
24
|
+
export function stargate(options = {}) {
|
|
47
25
|
const fetch = options.fetch ?? defaultFetch;
|
|
48
26
|
const now = options.now ?? (() => new Date());
|
|
49
27
|
return FundingProvider.from({
|
|
50
28
|
id: 'stargate',
|
|
51
29
|
name: 'Stargate',
|
|
52
30
|
async getQuote({ candidate, route }, signal) {
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
options: { amountType: 'EXACT_SRC_AMOUNT' },
|
|
60
|
-
srcChainKey: route.source.chain.slug,
|
|
61
|
-
srcTokenAddress: candidate.sourceToken.address,
|
|
62
|
-
srcWalletAddress: options.userAddress,
|
|
63
|
-
},
|
|
64
|
-
fetch,
|
|
65
|
-
headers: { 'user-agent': 'tempo-api', 'x-api-key': options.apiKey },
|
|
66
|
-
method: 'POST',
|
|
67
|
-
signal,
|
|
31
|
+
const deployment = resolveDeployment({
|
|
32
|
+
configuration: candidate.configuration,
|
|
33
|
+
destinationChainId: route.destination.chain.id,
|
|
34
|
+
destinationTokenAddress: route.destination.address,
|
|
35
|
+
sourceChainId: route.source.chain.id,
|
|
36
|
+
sourceTokenAddress: route.source.address,
|
|
68
37
|
});
|
|
69
|
-
const parsed = schema.Quotes.safeParse(response);
|
|
70
|
-
if (!parsed.success || parsed.data.error)
|
|
71
|
-
throw new FundingProvider.ProviderPayloadError();
|
|
72
38
|
const sampledAt = now();
|
|
73
|
-
|
|
39
|
+
if (!deployment)
|
|
40
|
+
return unavailable({ message: 'ROUTE_NOT_CONFIGURED', now: sampledAt });
|
|
41
|
+
const sendParam = createSendParam({
|
|
74
42
|
amount: candidate.sourceAmount.amount,
|
|
75
|
-
|
|
76
|
-
sourceChainKey: route.source.chain.slug,
|
|
43
|
+
recipient: zeroAddress,
|
|
77
44
|
});
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
45
|
+
const [limit, feeDetails, receipt] = await client({ fetch, route, signal }).readContract({
|
|
46
|
+
abi: [quoteOft],
|
|
47
|
+
address: deployment.pool,
|
|
48
|
+
args: [sendParam],
|
|
49
|
+
functionName: 'quoteOFT',
|
|
50
|
+
});
|
|
51
|
+
if (!isExactQuote({ amount: candidate.sourceAmount.amount, feeDetails, limit, receipt }))
|
|
52
|
+
return unavailable({ message: 'NO_EXACT_ROUTE', now: sampledAt });
|
|
86
53
|
return {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
quality: {
|
|
91
|
-
...(estimated === undefined ? {} : { estimatedSeconds: estimated }),
|
|
92
|
-
liquiditySource: 'providerQuote',
|
|
93
|
-
sourceDetail: sourceDetails[selected.type],
|
|
94
|
-
tier: 'liquid',
|
|
95
|
-
},
|
|
54
|
+
destinationAmountMin: receipt.amountReceivedLD.toString(),
|
|
55
|
+
destinationAmount: receipt.amountReceivedLD.toString(),
|
|
56
|
+
quality: quality(),
|
|
96
57
|
sampledAt: sampledAt.toISOString(),
|
|
97
58
|
status: 'available',
|
|
98
59
|
};
|
|
99
60
|
},
|
|
61
|
+
async prepareTransfer({ candidate, method, mode, recipient, sender }, signal) {
|
|
62
|
+
if (method !== 'transaction' ||
|
|
63
|
+
mode !== 'exactSource' ||
|
|
64
|
+
!Address.validate(recipient, { strict: false }) ||
|
|
65
|
+
!Address.validate(sender, { strict: false }))
|
|
66
|
+
throw new FundingProvider.ProviderConfigurationError();
|
|
67
|
+
const deployment = resolveDeployment({
|
|
68
|
+
configuration: candidate.configuration,
|
|
69
|
+
destinationChainId: candidate.destinationChain.id,
|
|
70
|
+
destinationTokenAddress: candidate.destinationToken.address,
|
|
71
|
+
sourceChainId: candidate.sourceChain.id,
|
|
72
|
+
sourceTokenAddress: candidate.sourceToken.address,
|
|
73
|
+
});
|
|
74
|
+
if (!deployment)
|
|
75
|
+
throw new FundingProvider.ProviderUnavailableError();
|
|
76
|
+
const sendParam = createSendParam({ amount: candidate.sourceAmount.amount, recipient });
|
|
77
|
+
const rpc = client({ fetch, route: candidate.route, signal });
|
|
78
|
+
const [[limit, feeDetails, receipt], messagingFee] = await Promise.all([
|
|
79
|
+
rpc.readContract({
|
|
80
|
+
abi: [quoteOft],
|
|
81
|
+
address: deployment.pool,
|
|
82
|
+
args: [sendParam],
|
|
83
|
+
functionName: 'quoteOFT',
|
|
84
|
+
}),
|
|
85
|
+
rpc.readContract({
|
|
86
|
+
abi: [quoteSend],
|
|
87
|
+
account: sender,
|
|
88
|
+
address: deployment.pool,
|
|
89
|
+
args: [sendParam, false],
|
|
90
|
+
functionName: 'quoteSend',
|
|
91
|
+
}),
|
|
92
|
+
]);
|
|
93
|
+
if (!isExactQuote({ amount: candidate.sourceAmount.amount, feeDetails, limit, receipt }))
|
|
94
|
+
throw new FundingProvider.ProviderUnavailableError();
|
|
95
|
+
if (messagingFee.lzTokenFee !== 0n)
|
|
96
|
+
throw new FundingProvider.ProviderPayloadError();
|
|
97
|
+
const action = {
|
|
98
|
+
calls: [
|
|
99
|
+
{
|
|
100
|
+
data: AbiFunction.encodeData(approve, [
|
|
101
|
+
deployment.pool,
|
|
102
|
+
BigInt(candidate.sourceAmount.amount),
|
|
103
|
+
]),
|
|
104
|
+
to: deployment.sourceToken,
|
|
105
|
+
value: '0x0',
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
data: AbiFunction.encodeData(sendToken, [sendParam, messagingFee, sender]),
|
|
109
|
+
to: deployment.pool,
|
|
110
|
+
value: Hex.fromNumber(messagingFee.nativeFee),
|
|
111
|
+
},
|
|
112
|
+
],
|
|
113
|
+
type: 'evm:calls',
|
|
114
|
+
};
|
|
115
|
+
validateAction({
|
|
116
|
+
action,
|
|
117
|
+
configuration: candidate.configuration,
|
|
118
|
+
destinationTokenAddress: candidate.destinationToken.address,
|
|
119
|
+
recipient,
|
|
120
|
+
sender,
|
|
121
|
+
sourceAmount: candidate.sourceAmount.amount,
|
|
122
|
+
sourceChainId: candidate.sourceChain.id,
|
|
123
|
+
sourceTokenAddress: candidate.sourceToken.address,
|
|
124
|
+
});
|
|
125
|
+
const sampledAt = now();
|
|
126
|
+
return {
|
|
127
|
+
action,
|
|
128
|
+
destinationAmountMin: receipt.amountReceivedLD.toString(),
|
|
129
|
+
destinationAmount: receipt.amountReceivedLD.toString(),
|
|
130
|
+
expiresAt: new Date(sampledAt.getTime() + quoteTtlMs).toISOString(),
|
|
131
|
+
fees: messagingFee.nativeFee === 0n
|
|
132
|
+
? []
|
|
133
|
+
: [
|
|
134
|
+
{
|
|
135
|
+
amount: messagingFee.nativeFee.toString(),
|
|
136
|
+
side: 'source',
|
|
137
|
+
token: nativeToken(candidate.sourceChain.id),
|
|
138
|
+
},
|
|
139
|
+
],
|
|
140
|
+
quality: quality(),
|
|
141
|
+
sampledAt: sampledAt.toISOString(),
|
|
142
|
+
};
|
|
143
|
+
},
|
|
144
|
+
validateTransferAction({ action, candidate, recipient, sender }) {
|
|
145
|
+
return {
|
|
146
|
+
nativeValues: validateAction({
|
|
147
|
+
action,
|
|
148
|
+
configuration: candidate.configuration,
|
|
149
|
+
destinationTokenAddress: candidate.destinationToken.address,
|
|
150
|
+
recipient,
|
|
151
|
+
sender,
|
|
152
|
+
sourceAmount: candidate.sourceAmount.amount,
|
|
153
|
+
sourceChainId: candidate.sourceChain.id,
|
|
154
|
+
sourceTokenAddress: candidate.sourceToken.address,
|
|
155
|
+
}),
|
|
156
|
+
};
|
|
157
|
+
},
|
|
100
158
|
});
|
|
101
159
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
BigInt(
|
|
160
|
+
/** Validates one direct Stargate action and returns its exact native-value allowance. */
|
|
161
|
+
export function validateAction(options) {
|
|
162
|
+
try {
|
|
163
|
+
const action = Action.schema.EvmCalls.parse(options.action);
|
|
164
|
+
const deployment = resolveDeployment({
|
|
165
|
+
configuration: options.configuration,
|
|
166
|
+
destinationChainId,
|
|
167
|
+
destinationTokenAddress: options.destinationTokenAddress,
|
|
168
|
+
sourceChainId: options.sourceChainId,
|
|
169
|
+
sourceTokenAddress: options.sourceTokenAddress,
|
|
170
|
+
});
|
|
171
|
+
if (!deployment || action.calls.length !== 2)
|
|
172
|
+
throw new FundingProvider.ProviderPayloadError();
|
|
173
|
+
const [approval, execution] = action.calls;
|
|
174
|
+
if (!Address.isEqual(approval.to, deployment.sourceToken) ||
|
|
175
|
+
BigInt(approval.value) !== 0n ||
|
|
176
|
+
!Address.isEqual(execution.to, deployment.pool))
|
|
118
177
|
throw new FundingProvider.ProviderPayloadError();
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
178
|
+
const [spender, approvalAmount] = AbiFunction.decodeData(approve, approval.data);
|
|
179
|
+
const [sendParam, messagingFee, refundAddress] = AbiFunction.decodeData(sendToken, execution.data);
|
|
180
|
+
const nativeValue = BigInt(execution.value);
|
|
181
|
+
if (!Address.isEqual(spender, deployment.pool) ||
|
|
182
|
+
approvalAmount !== BigInt(options.sourceAmount) ||
|
|
183
|
+
sendParam.amountLD !== BigInt(options.sourceAmount) ||
|
|
184
|
+
sendParam.composeMsg !== '0x' ||
|
|
185
|
+
sendParam.dstEid !== destinationEid ||
|
|
186
|
+
sendParam.extraOptions !== '0x' ||
|
|
187
|
+
sendParam.minAmountLD !== BigInt(options.sourceAmount) ||
|
|
188
|
+
sendParam.oftCmd !== '0x' ||
|
|
189
|
+
!Hex.isEqual(sendParam.to, recipientBytes32(options.recipient)) ||
|
|
190
|
+
messagingFee.lzTokenFee !== 0n ||
|
|
191
|
+
messagingFee.nativeFee !== nativeValue ||
|
|
192
|
+
!Address.isEqual(refundAddress, options.sender))
|
|
193
|
+
throw new FundingProvider.ProviderPayloadError();
|
|
194
|
+
return [{ to: execution.to, value: execution.value }];
|
|
195
|
+
}
|
|
196
|
+
catch (cause) {
|
|
197
|
+
if (cause instanceof FundingProvider.ProviderPayloadError)
|
|
198
|
+
throw cause;
|
|
199
|
+
throw new FundingProvider.ProviderPayloadError();
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
function client(options) {
|
|
203
|
+
if (options.route.source.chain.rpcUrls.length === 0)
|
|
204
|
+
throw new FundingProvider.ProviderConfigurationError();
|
|
205
|
+
return createClient({
|
|
206
|
+
transport: fallback(options.route.source.chain.rpcUrls.map((url) => custom(RpcTransport.fromHttp(url, {
|
|
207
|
+
fetchFn: (input, init) => options.fetch(input, { ...init, signal: options.signal }),
|
|
208
|
+
}), { retryCount: 0 }))),
|
|
209
|
+
}).extend(publicActions);
|
|
129
210
|
}
|
|
130
|
-
function
|
|
131
|
-
|
|
211
|
+
function createSendParam(options) {
|
|
212
|
+
const amount = BigInt(options.amount);
|
|
213
|
+
return {
|
|
214
|
+
amountLD: amount,
|
|
215
|
+
composeMsg: '0x',
|
|
216
|
+
dstEid: destinationEid,
|
|
217
|
+
extraOptions: '0x',
|
|
218
|
+
minAmountLD: amount,
|
|
219
|
+
oftCmd: '0x',
|
|
220
|
+
to: recipientBytes32(options.recipient),
|
|
221
|
+
};
|
|
132
222
|
}
|
|
133
|
-
function
|
|
134
|
-
|
|
223
|
+
function isExactQuote(options) {
|
|
224
|
+
const amount = BigInt(options.amount);
|
|
225
|
+
return (amount >= options.limit.minAmountLD &&
|
|
226
|
+
amount <= options.limit.maxAmountLD &&
|
|
227
|
+
options.feeDetails.every((fee) => fee.feeAmountLD >= 0n) &&
|
|
228
|
+
options.receipt.amountSentLD === amount &&
|
|
229
|
+
options.receipt.amountReceivedLD === amount);
|
|
230
|
+
}
|
|
231
|
+
function nativeToken(sourceChainId) {
|
|
232
|
+
return {
|
|
233
|
+
address: '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee',
|
|
234
|
+
currency: 'ETH',
|
|
235
|
+
decimals: 18,
|
|
236
|
+
name: 'Ether',
|
|
237
|
+
standard: 'native',
|
|
238
|
+
symbol: 'ETH',
|
|
239
|
+
tokenKey: `${sourceChainId}/slip44:60`,
|
|
240
|
+
verified: true,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
function quality() {
|
|
244
|
+
return {
|
|
245
|
+
liquiditySource: 'onchain',
|
|
246
|
+
sourceDetail: 'stargate:oft-v2:taxi',
|
|
247
|
+
tier: 'liquid',
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
function recipientBytes32(recipient) {
|
|
251
|
+
if (!Address.validate(recipient, { strict: false }))
|
|
252
|
+
throw new FundingProvider.ProviderConfigurationError();
|
|
253
|
+
return Hex.padLeft(recipient, 32);
|
|
254
|
+
}
|
|
255
|
+
function resolveDeployment(options) {
|
|
256
|
+
const parsed = configuration.safeParse(options.configuration);
|
|
257
|
+
if (!parsed.success ||
|
|
258
|
+
options.destinationChainId !== destinationChainId ||
|
|
259
|
+
!options.sourceChainId.startsWith('eip155:') ||
|
|
260
|
+
!Address.validate(options.destinationTokenAddress, { strict: false }) ||
|
|
261
|
+
!Address.validate(options.sourceTokenAddress, { strict: false }) ||
|
|
262
|
+
!Address.isEqual(options.destinationTokenAddress, destinationToken))
|
|
135
263
|
return undefined;
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
264
|
+
return {
|
|
265
|
+
pool: Address.checksum(parsed.data.poolAddress),
|
|
266
|
+
sourceToken: Address.checksum(options.sourceTokenAddress),
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
function unavailable(options) {
|
|
270
|
+
return FundingProvider.unavailableResult({
|
|
271
|
+
detail: 'stargate:oft-v2',
|
|
272
|
+
message: options.message,
|
|
273
|
+
now: options.now,
|
|
274
|
+
source: 'onchain',
|
|
275
|
+
});
|
|
142
276
|
}
|
|
143
277
|
//# sourceMappingURL=stargate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stargate.js","sourceRoot":"","sources":["../../../../src/internal/funding/providers/stargate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stargate.js","sourceRoot":"","sources":["../../../../src/internal/funding/providers/stargate.ts"],"names":[],"mappings":"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"}
|
package/dist/internal/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export * as EarnVaults from './EarnVaults.js';
|
|
|
7
7
|
export * as Errors from './Errors.js';
|
|
8
8
|
export * as Exchange from './exchange/index.js';
|
|
9
9
|
export * as Fees from './Fees.js';
|
|
10
|
+
export * as Fetch from './Fetch.js';
|
|
10
11
|
export * as Funding from './funding/index.js';
|
|
11
12
|
export * as Id from './Id.js';
|
|
12
13
|
export * as Idempotency from './Idempotency.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/internal/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAC/C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/internal/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAC/C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA"}
|
package/dist/internal/index.js
CHANGED
|
@@ -7,6 +7,7 @@ export * as EarnVaults from './EarnVaults.js';
|
|
|
7
7
|
export * as Errors from './Errors.js';
|
|
8
8
|
export * as Exchange from './exchange/index.js';
|
|
9
9
|
export * as Fees from './Fees.js';
|
|
10
|
+
export * as Fetch from './Fetch.js';
|
|
10
11
|
export * as Funding from './funding/index.js';
|
|
11
12
|
export * as Id from './Id.js';
|
|
12
13
|
export * as Idempotency from './Idempotency.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/internal/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAC/C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/internal/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAC/C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tapimo",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.13.0",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"bin": {
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"incur": "^0.4.19",
|
|
22
22
|
"jose": "^6.2.3",
|
|
23
23
|
"kysely": "^0.29.2",
|
|
24
|
-
"mppx": "^0.8.
|
|
24
|
+
"mppx": "^0.8.17",
|
|
25
25
|
"nanoid": "^5.1.16",
|
|
26
26
|
"ox": "0.14.33",
|
|
27
27
|
"pg": "^8.22.0",
|
package/src/App.test.ts
CHANGED
|
@@ -40,6 +40,37 @@ describe('create', () => {
|
|
|
40
40
|
expect(await store.get('status')).toMatchInlineSnapshot(`"ready"`)
|
|
41
41
|
})
|
|
42
42
|
|
|
43
|
+
test('keeps cache persistence alive via waitUntil', async () => {
|
|
44
|
+
const pending = Promise.withResolvers<void>()
|
|
45
|
+
const waited: Promise<unknown>[] = []
|
|
46
|
+
const store = Store.from({
|
|
47
|
+
...Store.memory(),
|
|
48
|
+
put: () => pending.promise,
|
|
49
|
+
type: 'cache',
|
|
50
|
+
})
|
|
51
|
+
const app = TestApp.create({ auth: false, cache: { store } })
|
|
52
|
+
app.get('/cache', async (c) =>
|
|
53
|
+
c.json(
|
|
54
|
+
await Store.memoize(async () => ({ value: 'fresh' }), {
|
|
55
|
+
key: 'app:cache',
|
|
56
|
+
store: c.get('store'),
|
|
57
|
+
ttl: 60_000,
|
|
58
|
+
}),
|
|
59
|
+
),
|
|
60
|
+
)
|
|
61
|
+
const executionCtx = {
|
|
62
|
+
passThroughOnException: () => {},
|
|
63
|
+
waitUntil: (promise: Promise<unknown>) => void waited.push(promise),
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const response = await app.request('/cache', undefined, undefined, executionCtx as never)
|
|
67
|
+
|
|
68
|
+
expect(response.status).toBe(200)
|
|
69
|
+
expect(waited).toHaveLength(1)
|
|
70
|
+
pending.resolve()
|
|
71
|
+
await Promise.all(waited)
|
|
72
|
+
})
|
|
73
|
+
|
|
43
74
|
test('leaves routes public without auth middleware', async () => {
|
|
44
75
|
const app = TestApp.create({ auth: false })
|
|
45
76
|
const response = await app.request('/v1/tokens/not-an-address')
|
|
@@ -47,6 +78,57 @@ describe('create', () => {
|
|
|
47
78
|
expect(response.status).toMatchInlineSnapshot(`400`)
|
|
48
79
|
})
|
|
49
80
|
|
|
81
|
+
test('bounds a stalled request with a 504 envelope', async () => {
|
|
82
|
+
vi.useFakeTimers()
|
|
83
|
+
try {
|
|
84
|
+
const app = TestApp.create({ auth: false })
|
|
85
|
+
app.get('/hang', () => new Promise<never>(() => {}))
|
|
86
|
+
|
|
87
|
+
const pending = app.request('/hang')
|
|
88
|
+
await vi.advanceTimersByTimeAsync(60_000)
|
|
89
|
+
const response = await pending
|
|
90
|
+
const { requestId, ...body } = (await response.json()) as Record<string, unknown>
|
|
91
|
+
|
|
92
|
+
expect(response.status).toMatchInlineSnapshot(`504`)
|
|
93
|
+
expect(requestId).toBeTypeOf('string')
|
|
94
|
+
expect(body).toMatchInlineSnapshot(`
|
|
95
|
+
{
|
|
96
|
+
"error": {
|
|
97
|
+
"code": "request_timeout",
|
|
98
|
+
"message": "Request timed out",
|
|
99
|
+
},
|
|
100
|
+
}
|
|
101
|
+
`)
|
|
102
|
+
} finally {
|
|
103
|
+
vi.useRealTimers()
|
|
104
|
+
}
|
|
105
|
+
})
|
|
106
|
+
|
|
107
|
+
test('exempts mutations and paid requests from the deadline', async () => {
|
|
108
|
+
vi.useFakeTimers()
|
|
109
|
+
try {
|
|
110
|
+
const app = TestApp.create({ auth: false })
|
|
111
|
+
const wait = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms))
|
|
112
|
+
app.post('/slow', async (c) => {
|
|
113
|
+
await wait(90_000)
|
|
114
|
+
return c.json({ ok: true }, 200)
|
|
115
|
+
})
|
|
116
|
+
app.get('/slow-paid', async (c) => {
|
|
117
|
+
await wait(90_000)
|
|
118
|
+
return c.json({ ok: true }, 200)
|
|
119
|
+
})
|
|
120
|
+
|
|
121
|
+
const post = app.request('/slow', { method: 'POST' })
|
|
122
|
+
const paid = app.request('/slow-paid', { headers: { authorization: 'Payment credential' } })
|
|
123
|
+
await vi.advanceTimersByTimeAsync(90_000)
|
|
124
|
+
|
|
125
|
+
expect((await post).status).toMatchInlineSnapshot(`200`)
|
|
126
|
+
expect((await paid).status).toMatchInlineSnapshot(`200`)
|
|
127
|
+
} finally {
|
|
128
|
+
vi.useRealTimers()
|
|
129
|
+
}
|
|
130
|
+
})
|
|
131
|
+
|
|
50
132
|
test('serves public health check', async () => {
|
|
51
133
|
const app = TestApp.create({ path: 'api/' })
|
|
52
134
|
const response = await app.request('/api/health')
|
|
@@ -501,6 +583,24 @@ describe('create', () => {
|
|
|
501
583
|
`)
|
|
502
584
|
})
|
|
503
585
|
|
|
586
|
+
test('passes the original request error to the configured logger', async () => {
|
|
587
|
+
const cause = new Error('boom')
|
|
588
|
+
let logged: Error | undefined
|
|
589
|
+
const app = TestApp.create({
|
|
590
|
+
logger: (_entry, error) => {
|
|
591
|
+
logged = error
|
|
592
|
+
},
|
|
593
|
+
})
|
|
594
|
+
app.get('/boom', () => {
|
|
595
|
+
throw cause
|
|
596
|
+
})
|
|
597
|
+
|
|
598
|
+
const response = await app.request('/boom')
|
|
599
|
+
|
|
600
|
+
expect(response.status).toBe(500)
|
|
601
|
+
expect(logged).toBe(cause)
|
|
602
|
+
})
|
|
603
|
+
|
|
504
604
|
test('logs the selected chain for anonymous edge-cache hits', async () => {
|
|
505
605
|
const entries: Log.Entry[] = []
|
|
506
606
|
const app = TestApp.create({
|