@relayprotocol/relay-sdk 2.4.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/LICENSE +21 -0
- package/_cjs/package.json +1 -0
- package/_cjs/src/actions/claimAppFees.js +53 -0
- package/_cjs/src/actions/claimAppFees.js.map +1 -0
- package/_cjs/src/actions/execute.js +76 -0
- package/_cjs/src/actions/execute.js.map +1 -0
- package/_cjs/src/actions/getAppFees.js +24 -0
- package/_cjs/src/actions/getAppFees.js.map +1 -0
- package/_cjs/src/actions/getPrice.js +51 -0
- package/_cjs/src/actions/getPrice.js.map +1 -0
- package/_cjs/src/actions/getQuote.js +91 -0
- package/_cjs/src/actions/getQuote.js.map +1 -0
- package/_cjs/src/actions/getSolverCapacity.js +21 -0
- package/_cjs/src/actions/getSolverCapacity.js.map +1 -0
- package/_cjs/src/actions/index.js +10 -0
- package/_cjs/src/actions/index.js.map +1 -0
- package/_cjs/src/client.js +207 -0
- package/_cjs/src/client.js.map +1 -0
- package/_cjs/src/constants/address.js +48 -0
- package/_cjs/src/constants/address.js.map +1 -0
- package/_cjs/src/constants/bvm.js +5 -0
- package/_cjs/src/constants/bvm.js.map +1 -0
- package/_cjs/src/constants/index.js +6 -0
- package/_cjs/src/constants/index.js.map +1 -0
- package/_cjs/src/constants/servers.js +9 -0
- package/_cjs/src/constants/servers.js.map +1 -0
- package/_cjs/src/errors/DepositTransactionTimeoutError.js +18 -0
- package/_cjs/src/errors/DepositTransactionTimeoutError.js.map +1 -0
- package/_cjs/src/errors/SolverStatusTimeoutError.js +18 -0
- package/_cjs/src/errors/SolverStatusTimeoutError.js.map +1 -0
- package/_cjs/src/errors/TransactionConfirmationError.js +25 -0
- package/_cjs/src/errors/TransactionConfirmationError.js.map +1 -0
- package/_cjs/src/errors/index.js +10 -0
- package/_cjs/src/errors/index.js.map +1 -0
- package/_cjs/src/index.js +10 -0
- package/_cjs/src/index.js.map +1 -0
- package/_cjs/src/routes/index.js +46 -0
- package/_cjs/src/routes/index.js.map +1 -0
- package/_cjs/src/types/AdaptedWallet.js +3 -0
- package/_cjs/src/types/AdaptedWallet.js.map +1 -0
- package/_cjs/src/types/Execute.js +3 -0
- package/_cjs/src/types/Execute.js.map +1 -0
- package/_cjs/src/types/Progress.js +3 -0
- package/_cjs/src/types/Progress.js.map +1 -0
- package/_cjs/src/types/RelayChain.js +3 -0
- package/_cjs/src/types/RelayChain.js.map +1 -0
- package/_cjs/src/types/SignatureStepItem.js +3 -0
- package/_cjs/src/types/SignatureStepItem.js.map +1 -0
- package/_cjs/src/types/TransactionStepItem.js +3 -0
- package/_cjs/src/types/TransactionStepItem.js.map +1 -0
- package/_cjs/src/types/api.js +3 -0
- package/_cjs/src/types/api.js.map +1 -0
- package/_cjs/src/types/index.js +11 -0
- package/_cjs/src/types/index.js.map +1 -0
- package/_cjs/src/utils/axios.js +18 -0
- package/_cjs/src/utils/axios.js.map +1 -0
- package/_cjs/src/utils/chain.js +91 -0
- package/_cjs/src/utils/chain.js.map +1 -0
- package/_cjs/src/utils/executeSteps/index.js +298 -0
- package/_cjs/src/utils/executeSteps/index.js.map +1 -0
- package/_cjs/src/utils/executeSteps/signatureStep.js +186 -0
- package/_cjs/src/utils/executeSteps/signatureStep.js.map +1 -0
- package/_cjs/src/utils/executeSteps/transactionStep.js +74 -0
- package/_cjs/src/utils/executeSteps/transactionStep.js.map +1 -0
- package/_cjs/src/utils/executeSteps/websocketHandlers.js +112 -0
- package/_cjs/src/utils/executeSteps/websocketHandlers.js.map +1 -0
- package/_cjs/src/utils/fetchChainConfigs.js +20 -0
- package/_cjs/src/utils/fetchChainConfigs.js.map +1 -0
- package/_cjs/src/utils/getCurrentStepData.js +28 -0
- package/_cjs/src/utils/getCurrentStepData.js.map +1 -0
- package/_cjs/src/utils/getTenderlyDetails.js +24 -0
- package/_cjs/src/utils/getTenderlyDetails.js.map +1 -0
- package/_cjs/src/utils/hyperliquid.js +95 -0
- package/_cjs/src/utils/hyperliquid.js.map +1 -0
- package/_cjs/src/utils/index.js +39 -0
- package/_cjs/src/utils/index.js.map +1 -0
- package/_cjs/src/utils/logger.js +38 -0
- package/_cjs/src/utils/logger.js.map +1 -0
- package/_cjs/src/utils/params.js +21 -0
- package/_cjs/src/utils/params.js.map +1 -0
- package/_cjs/src/utils/pollApi.js +40 -0
- package/_cjs/src/utils/pollApi.js.map +1 -0
- package/_cjs/src/utils/prepareBatchTransaction.js +35 -0
- package/_cjs/src/utils/prepareBatchTransaction.js.map +1 -0
- package/_cjs/src/utils/prepareCallTransaction.js +14 -0
- package/_cjs/src/utils/prepareCallTransaction.js.map +1 -0
- package/_cjs/src/utils/repeatUntilOk.js +19 -0
- package/_cjs/src/utils/repeatUntilOk.js.map +1 -0
- package/_cjs/src/utils/request.js +48 -0
- package/_cjs/src/utils/request.js.map +1 -0
- package/_cjs/src/utils/simulateContract.js +8 -0
- package/_cjs/src/utils/simulateContract.js.map +1 -0
- package/_cjs/src/utils/structuredClone.js +11 -0
- package/_cjs/src/utils/structuredClone.js.map +1 -0
- package/_cjs/src/utils/transaction.js +351 -0
- package/_cjs/src/utils/transaction.js.map +1 -0
- package/_cjs/src/utils/viemWallet.js +211 -0
- package/_cjs/src/utils/viemWallet.js.map +1 -0
- package/_cjs/src/utils/websocket.js +76 -0
- package/_cjs/src/utils/websocket.js.map +1 -0
- package/_cjs/src/version.js +5 -0
- package/_cjs/src/version.js.map +1 -0
- package/_cjs/tsconfig.build.tsbuildinfo +1 -0
- package/_esm/package.json +1 -0
- package/_esm/src/actions/claimAppFees.js +54 -0
- package/_esm/src/actions/claimAppFees.js.map +1 -0
- package/_esm/src/actions/execute.js +83 -0
- package/_esm/src/actions/execute.js.map +1 -0
- package/_esm/src/actions/getAppFees.js +25 -0
- package/_esm/src/actions/getAppFees.js.map +1 -0
- package/_esm/src/actions/getPrice.js +53 -0
- package/_esm/src/actions/getPrice.js.map +1 -0
- package/_esm/src/actions/getQuote.js +92 -0
- package/_esm/src/actions/getQuote.js.map +1 -0
- package/_esm/src/actions/getSolverCapacity.js +18 -0
- package/_esm/src/actions/getSolverCapacity.js.map +1 -0
- package/_esm/src/actions/index.js +7 -0
- package/_esm/src/actions/index.js.map +1 -0
- package/_esm/src/client.js +217 -0
- package/_esm/src/client.js.map +1 -0
- package/_esm/src/constants/address.js +43 -0
- package/_esm/src/constants/address.js.map +1 -0
- package/_esm/src/constants/bvm.js +2 -0
- package/_esm/src/constants/bvm.js.map +1 -0
- package/_esm/src/constants/index.js +3 -0
- package/_esm/src/constants/index.js.map +1 -0
- package/_esm/src/constants/servers.js +7 -0
- package/_esm/src/constants/servers.js.map +1 -0
- package/_esm/src/errors/DepositTransactionTimeoutError.js +14 -0
- package/_esm/src/errors/DepositTransactionTimeoutError.js.map +1 -0
- package/_esm/src/errors/SolverStatusTimeoutError.js +14 -0
- package/_esm/src/errors/SolverStatusTimeoutError.js.map +1 -0
- package/_esm/src/errors/TransactionConfirmationError.js +21 -0
- package/_esm/src/errors/TransactionConfirmationError.js.map +1 -0
- package/_esm/src/errors/index.js +4 -0
- package/_esm/src/errors/index.js.map +1 -0
- package/_esm/src/index.js +7 -0
- package/_esm/src/index.js.map +1 -0
- package/_esm/src/routes/index.js +43 -0
- package/_esm/src/routes/index.js.map +1 -0
- package/_esm/src/types/AdaptedWallet.js +2 -0
- package/_esm/src/types/AdaptedWallet.js.map +1 -0
- package/_esm/src/types/Execute.js +2 -0
- package/_esm/src/types/Execute.js.map +1 -0
- package/_esm/src/types/Progress.js +2 -0
- package/_esm/src/types/Progress.js.map +1 -0
- package/_esm/src/types/RelayChain.js +2 -0
- package/_esm/src/types/RelayChain.js.map +1 -0
- package/_esm/src/types/SignatureStepItem.js +2 -0
- package/_esm/src/types/SignatureStepItem.js.map +1 -0
- package/_esm/src/types/TransactionStepItem.js +2 -0
- package/_esm/src/types/TransactionStepItem.js.map +1 -0
- package/_esm/src/types/api.js +6 -0
- package/_esm/src/types/api.js.map +1 -0
- package/_esm/src/types/index.js +8 -0
- package/_esm/src/types/index.js.map +1 -0
- package/_esm/src/utils/axios.js +15 -0
- package/_esm/src/utils/axios.js.map +1 -0
- package/_esm/src/utils/chain.js +86 -0
- package/_esm/src/utils/chain.js.map +1 -0
- package/_esm/src/utils/executeSteps/index.js +347 -0
- package/_esm/src/utils/executeSteps/index.js.map +1 -0
- package/_esm/src/utils/executeSteps/signatureStep.js +191 -0
- package/_esm/src/utils/executeSteps/signatureStep.js.map +1 -0
- package/_esm/src/utils/executeSteps/transactionStep.js +76 -0
- package/_esm/src/utils/executeSteps/transactionStep.js.map +1 -0
- package/_esm/src/utils/executeSteps/websocketHandlers.js +124 -0
- package/_esm/src/utils/executeSteps/websocketHandlers.js.map +1 -0
- package/_esm/src/utils/fetchChainConfigs.js +16 -0
- package/_esm/src/utils/fetchChainConfigs.js.map +1 -0
- package/_esm/src/utils/getCurrentStepData.js +24 -0
- package/_esm/src/utils/getCurrentStepData.js.map +1 -0
- package/_esm/src/utils/getTenderlyDetails.js +20 -0
- package/_esm/src/utils/getTenderlyDetails.js.map +1 -0
- package/_esm/src/utils/hyperliquid.js +90 -0
- package/_esm/src/utils/hyperliquid.js.map +1 -0
- package/_esm/src/utils/index.js +16 -0
- package/_esm/src/utils/index.js.map +1 -0
- package/_esm/src/utils/logger.js +34 -0
- package/_esm/src/utils/logger.js.map +1 -0
- package/_esm/src/utils/params.js +40 -0
- package/_esm/src/utils/params.js.map +1 -0
- package/_esm/src/utils/pollApi.js +57 -0
- package/_esm/src/utils/pollApi.js.map +1 -0
- package/_esm/src/utils/prepareBatchTransaction.js +31 -0
- package/_esm/src/utils/prepareBatchTransaction.js.map +1 -0
- package/_esm/src/utils/prepareCallTransaction.js +11 -0
- package/_esm/src/utils/prepareCallTransaction.js.map +1 -0
- package/_esm/src/utils/repeatUntilOk.js +23 -0
- package/_esm/src/utils/repeatUntilOk.js.map +1 -0
- package/_esm/src/utils/request.js +42 -0
- package/_esm/src/utils/request.js.map +1 -0
- package/_esm/src/utils/simulateContract.js +5 -0
- package/_esm/src/utils/simulateContract.js.map +1 -0
- package/_esm/src/utils/structuredClone.js +8 -0
- package/_esm/src/utils/structuredClone.js.map +1 -0
- package/_esm/src/utils/transaction.js +374 -0
- package/_esm/src/utils/transaction.js.map +1 -0
- package/_esm/src/utils/viemWallet.js +207 -0
- package/_esm/src/utils/viemWallet.js.map +1 -0
- package/_esm/src/utils/websocket.js +78 -0
- package/_esm/src/utils/websocket.js.map +1 -0
- package/_esm/src/version.js +2 -0
- package/_esm/src/version.js.map +1 -0
- package/_esm/tsconfig.build.tsbuildinfo +1 -0
- package/_types/src/actions/claimAppFees.d.ts +21 -0
- package/_types/src/actions/claimAppFees.d.ts.map +1 -0
- package/_types/src/actions/execute.d.ts +23 -0
- package/_types/src/actions/execute.d.ts.map +1 -0
- package/_types/src/actions/getAppFees.d.ts +12 -0
- package/_types/src/actions/getAppFees.d.ts.map +1 -0
- package/_types/src/actions/getPrice.d.ts +23 -0
- package/_types/src/actions/getPrice.d.ts.map +1 -0
- package/_types/src/actions/getQuote.d.ts +24 -0
- package/_types/src/actions/getQuote.d.ts.map +1 -0
- package/_types/src/actions/getSolverCapacity.d.ts +8 -0
- package/_types/src/actions/getSolverCapacity.d.ts.map +1 -0
- package/_types/src/actions/index.d.ts +7 -0
- package/_types/src/actions/index.d.ts.map +1 -0
- package/_types/src/client.d.ts +8039 -0
- package/_types/src/client.d.ts.map +1 -0
- package/_types/src/constants/address.d.ts +11 -0
- package/_types/src/constants/address.d.ts.map +1 -0
- package/_types/src/constants/bvm.d.ts +2 -0
- package/_types/src/constants/bvm.d.ts.map +1 -0
- package/_types/src/constants/index.d.ts +3 -0
- package/_types/src/constants/index.d.ts.map +1 -0
- package/_types/src/constants/servers.d.ts +6 -0
- package/_types/src/constants/servers.d.ts.map +1 -0
- package/_types/src/errors/DepositTransactionTimeoutError.d.ts +5 -0
- package/_types/src/errors/DepositTransactionTimeoutError.d.ts.map +1 -0
- package/_types/src/errors/SolverStatusTimeoutError.d.ts +5 -0
- package/_types/src/errors/SolverStatusTimeoutError.d.ts.map +1 -0
- package/_types/src/errors/TransactionConfirmationError.d.ts +9 -0
- package/_types/src/errors/TransactionConfirmationError.d.ts.map +1 -0
- package/_types/src/errors/index.d.ts +4 -0
- package/_types/src/errors/index.d.ts.map +1 -0
- package/_types/src/index.d.ts +7 -0
- package/_types/src/index.d.ts.map +1 -0
- package/_types/src/routes/index.d.ts +2 -0
- package/_types/src/routes/index.d.ts.map +1 -0
- package/_types/src/types/AdaptedWallet.d.ts +27 -0
- package/_types/src/types/AdaptedWallet.d.ts.map +1 -0
- package/_types/src/types/Execute.d.ts +64 -0
- package/_types/src/types/Execute.d.ts.map +1 -0
- package/_types/src/types/Progress.d.ts +17 -0
- package/_types/src/types/Progress.d.ts.map +1 -0
- package/_types/src/types/RelayChain.d.ts +47 -0
- package/_types/src/types/RelayChain.d.ts.map +1 -0
- package/_types/src/types/SignatureStepItem.d.ts +21 -0
- package/_types/src/types/SignatureStepItem.d.ts.map +1 -0
- package/_types/src/types/TransactionStepItem.d.ts +25 -0
- package/_types/src/types/TransactionStepItem.d.ts.map +1 -0
- package/_types/src/types/api.d.ts +4911 -0
- package/_types/src/types/api.d.ts.map +1 -0
- package/_types/src/types/index.d.ts +8 -0
- package/_types/src/types/index.d.ts.map +1 -0
- package/_types/src/utils/axios.d.ts +2 -0
- package/_types/src/utils/axios.d.ts.map +1 -0
- package/_types/src/utils/chain.d.ts +7 -0
- package/_types/src/utils/chain.d.ts.map +1 -0
- package/_types/src/utils/executeSteps/index.d.ts +34 -0
- package/_types/src/utils/executeSteps/index.d.ts.map +1 -0
- package/_types/src/utils/executeSteps/signatureStep.d.ts +21 -0
- package/_types/src/utils/executeSteps/signatureStep.d.ts.map +1 -0
- package/_types/src/utils/executeSteps/transactionStep.d.ts +25 -0
- package/_types/src/utils/executeSteps/transactionStep.d.ts.map +1 -0
- package/_types/src/utils/executeSteps/websocketHandlers.d.ts +21 -0
- package/_types/src/utils/executeSteps/websocketHandlers.d.ts.map +1 -0
- package/_types/src/utils/fetchChainConfigs.d.ts +3 -0
- package/_types/src/utils/fetchChainConfigs.d.ts.map +1 -0
- package/_types/src/utils/getCurrentStepData.d.ts +80 -0
- package/_types/src/utils/getCurrentStepData.d.ts.map +1 -0
- package/_types/src/utils/getTenderlyDetails.d.ts +6 -0
- package/_types/src/utils/getTenderlyDetails.d.ts.map +1 -0
- package/_types/src/utils/hyperliquid.d.ts +49 -0
- package/_types/src/utils/hyperliquid.d.ts.map +1 -0
- package/_types/src/utils/index.d.ts +16 -0
- package/_types/src/utils/index.d.ts.map +1 -0
- package/_types/src/utils/logger.d.ts +9 -0
- package/_types/src/utils/logger.d.ts.map +1 -0
- package/_types/src/utils/params.d.ts +27 -0
- package/_types/src/utils/params.d.ts.map +1 -0
- package/_types/src/utils/pollApi.d.ts +22 -0
- package/_types/src/utils/pollApi.d.ts.map +1 -0
- package/_types/src/utils/prepareBatchTransaction.d.ts +41 -0
- package/_types/src/utils/prepareBatchTransaction.d.ts.map +1 -0
- package/_types/src/utils/prepareCallTransaction.d.ts +6 -0
- package/_types/src/utils/prepareCallTransaction.d.ts.map +1 -0
- package/_types/src/utils/repeatUntilOk.d.ts +10 -0
- package/_types/src/utils/repeatUntilOk.d.ts.map +1 -0
- package/_types/src/utils/request.d.ts +11 -0
- package/_types/src/utils/request.d.ts.map +1 -0
- package/_types/src/utils/simulateContract.d.ts +4 -0
- package/_types/src/utils/simulateContract.d.ts.map +1 -0
- package/_types/src/utils/structuredClone.d.ts +2 -0
- package/_types/src/utils/structuredClone.d.ts.map +1 -0
- package/_types/src/utils/transaction.d.ts +12 -0
- package/_types/src/utils/transaction.d.ts.map +1 -0
- package/_types/src/utils/viemWallet.d.ts +5 -0
- package/_types/src/utils/viemWallet.d.ts.map +1 -0
- package/_types/src/utils/websocket.d.ts +30 -0
- package/_types/src/utils/websocket.d.ts.map +1 -0
- package/_types/src/version.d.ts +2 -0
- package/_types/src/version.d.ts.map +1 -0
- package/_types/tsconfig.build.tsbuildinfo +1 -0
- package/package.json +57 -0
- package/readme.md +37 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { LogLevel } from '../logger.js';
|
|
2
|
+
export function handleWebSocketUpdate({ data, stepItems, chainId, setState, json, client, statusControl, onTerminalError }) {
|
|
3
|
+
statusControl.lastKnownStatus = data.status;
|
|
4
|
+
// Clear any existing failure timeout if we receive a non-failure status
|
|
5
|
+
// This handles the case where failure -> pending -> refund flow occurs
|
|
6
|
+
if (data.status !== 'failure') {
|
|
7
|
+
clearFailureTimeout(statusControl, client, `status changed to ${data.status}`);
|
|
8
|
+
}
|
|
9
|
+
// Handle terminal states (success, refund)
|
|
10
|
+
if (isTerminalStatus(data.status)) {
|
|
11
|
+
client.log(['WebSocket received terminal status: ', data.status], LogLevel.Verbose);
|
|
12
|
+
statusControl.closeWebSocket?.();
|
|
13
|
+
switch (data.status) {
|
|
14
|
+
case 'success':
|
|
15
|
+
handleSuccessStatus(data, stepItems, chainId, setState, json, client);
|
|
16
|
+
break;
|
|
17
|
+
case 'refund':
|
|
18
|
+
handleRefundStatus(client, stepItems, onTerminalError);
|
|
19
|
+
break;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
// Handle failure status with delay (refund flow: pending -> failure -> pending -> refund)
|
|
23
|
+
else if (data.status === 'failure') {
|
|
24
|
+
handleFailureStatusWithDelay(stepItems, client, statusControl, onTerminalError);
|
|
25
|
+
}
|
|
26
|
+
// Handle pending status - just log it
|
|
27
|
+
else if (data.status === 'pending') {
|
|
28
|
+
client.log(['WebSocket received pending status'], LogLevel.Verbose);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function isTerminalStatus(status) {
|
|
32
|
+
// Note: 'failure' is not immediately terminal due to the refund flow:
|
|
33
|
+
// pending -> failure -> pending -> refund
|
|
34
|
+
return ['success', 'refund'].includes(status);
|
|
35
|
+
}
|
|
36
|
+
function handleSuccessStatus(data, stepItems, chainId, setState, json, client) {
|
|
37
|
+
// Update txHashes if provided
|
|
38
|
+
if (data.txHashes && data.txHashes.length > 0) {
|
|
39
|
+
const txHashes = data.txHashes.map((hash) => ({
|
|
40
|
+
txHash: hash,
|
|
41
|
+
chainId: data.destinationChainId ?? chainId
|
|
42
|
+
}));
|
|
43
|
+
updateIncompleteItems(stepItems, (item) => {
|
|
44
|
+
item.txHashes = txHashes;
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
// Update internalTxHashes if provided
|
|
48
|
+
if (data.inTxHashes && data.inTxHashes.length > 0) {
|
|
49
|
+
const internalTxHashes = data.inTxHashes.map((hash) => ({
|
|
50
|
+
txHash: hash,
|
|
51
|
+
chainId: data.originChainId ?? chainId
|
|
52
|
+
}));
|
|
53
|
+
updateIncompleteItems(stepItems, (item) => {
|
|
54
|
+
item.internalTxHashes = internalTxHashes;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
// Mark step items as complete
|
|
58
|
+
updateIncompleteItems(stepItems, (item) => {
|
|
59
|
+
item.status = 'complete';
|
|
60
|
+
item.progressState = 'complete';
|
|
61
|
+
item.checkStatus = 'success';
|
|
62
|
+
});
|
|
63
|
+
// Update state with completed steps
|
|
64
|
+
setState({
|
|
65
|
+
steps: [...json.steps],
|
|
66
|
+
fees: { ...json?.fees },
|
|
67
|
+
breakdown: json?.breakdown,
|
|
68
|
+
details: json?.details
|
|
69
|
+
});
|
|
70
|
+
client.log(['WebSocket: Step completed successfully', data], LogLevel.Verbose);
|
|
71
|
+
}
|
|
72
|
+
function handleFailureStatus(client, stepItems, onTerminalError) {
|
|
73
|
+
client.log(['WebSocket: transaction failed'], LogLevel.Error);
|
|
74
|
+
updateIncompleteItems(stepItems, (item) => {
|
|
75
|
+
item.checkStatus = 'failure';
|
|
76
|
+
});
|
|
77
|
+
const error = new Error('Transaction failed');
|
|
78
|
+
onTerminalError?.(error);
|
|
79
|
+
}
|
|
80
|
+
function handleRefundStatus(client, stepItems, onTerminalError) {
|
|
81
|
+
client.log(['WebSocket: transaction refunded'], LogLevel.Verbose);
|
|
82
|
+
updateIncompleteItems(stepItems, (item) => {
|
|
83
|
+
item.checkStatus = 'refund';
|
|
84
|
+
});
|
|
85
|
+
const error = new Error('Transaction failed: Refunded');
|
|
86
|
+
onTerminalError?.(error);
|
|
87
|
+
}
|
|
88
|
+
function handleFailureStatusWithDelay(stepItems, client, statusControl, onTerminalError) {
|
|
89
|
+
// Clear any existing failure timeout to handle multiple failure statuses
|
|
90
|
+
clearFailureTimeout(statusControl, client, 'new failure status received');
|
|
91
|
+
client.log([
|
|
92
|
+
'WebSocket received failure status, waiting 2 seconds for potential status change'
|
|
93
|
+
], LogLevel.Verbose);
|
|
94
|
+
// Set a 2-second timeout to handle the case where failure is truly terminal
|
|
95
|
+
statusControl.websocketFailureTimeoutId = setTimeout(() => {
|
|
96
|
+
// Only proceed with failure handling if timeout still exists and status is still failure
|
|
97
|
+
if (statusControl.websocketFailureTimeoutId &&
|
|
98
|
+
statusControl.lastKnownStatus === 'failure') {
|
|
99
|
+
client.log(['WebSocket: 2-second timeout expired, treating failure as terminal'], LogLevel.Error);
|
|
100
|
+
// Clear the timeout state
|
|
101
|
+
statusControl.websocketFailureTimeoutId = null;
|
|
102
|
+
// Handle as terminal failure
|
|
103
|
+
handleFailureStatus(client, stepItems, onTerminalError);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
client.log(['WebSocket: Failure timeout cancelled due to status change'], LogLevel.Verbose);
|
|
107
|
+
}
|
|
108
|
+
}, 2000); // 2 seconds
|
|
109
|
+
}
|
|
110
|
+
function updateIncompleteItems(stepItems, updateFn) {
|
|
111
|
+
stepItems.forEach((item) => {
|
|
112
|
+
if (item.status === 'incomplete') {
|
|
113
|
+
updateFn(item);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
function clearFailureTimeout(statusControl, client, reason) {
|
|
118
|
+
if (statusControl.websocketFailureTimeoutId) {
|
|
119
|
+
clearTimeout(statusControl.websocketFailureTimeoutId);
|
|
120
|
+
statusControl.websocketFailureTimeoutId = null;
|
|
121
|
+
client.log([`Cleared failure timeout: ${reason}`], LogLevel.Verbose);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=websocketHandlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocketHandlers.js","sourceRoot":"","sources":["../../../../src/utils/executeSteps/websocketHandlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { configureViemChain } from './chain.js';
|
|
2
|
+
import { axios } from './axios.js';
|
|
3
|
+
export const fetchChainConfigs = async (baseApiUrl, referrer) => {
|
|
4
|
+
let queryString = '';
|
|
5
|
+
if (referrer) {
|
|
6
|
+
const queryParams = new URLSearchParams();
|
|
7
|
+
queryParams.set('referrer', referrer);
|
|
8
|
+
queryString = `?${queryParams.toString()}`;
|
|
9
|
+
}
|
|
10
|
+
const response = await axios.get(`${baseApiUrl}/chains${queryString}`);
|
|
11
|
+
if (response.data && response.data.chains) {
|
|
12
|
+
return response.data.chains.map((chain) => configureViemChain(chain));
|
|
13
|
+
}
|
|
14
|
+
throw 'No Chain Data';
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=fetchChainConfigs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchChainConfigs.js","sourceRoot":"","sources":["../../../src/utils/fetchChainConfigs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAElC,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EACpC,UAAkB,EAClB,QAAiB,EACM,EAAE;IACzB,IAAI,WAAW,GAAG,EAAE,CAAA;IACpB,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAA;QACzC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QACrC,WAAW,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAA;IAC5C,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,UAAU,WAAW,EAAE,CAAC,CAAA;IACtE,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1C,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAA;IAC5E,CAAC;IACD,MAAM,eAAe,CAAA;AACvB,CAAC,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export const getCurrentStepData = (steps) => {
|
|
2
|
+
let currentStep = null;
|
|
3
|
+
let currentStepItem;
|
|
4
|
+
let txHashes = [];
|
|
5
|
+
for (const step of steps) {
|
|
6
|
+
for (const item of step.items || []) {
|
|
7
|
+
if (item.txHashes && item.txHashes.length > 0) {
|
|
8
|
+
txHashes = item.txHashes.concat([...txHashes]);
|
|
9
|
+
}
|
|
10
|
+
if (item.internalTxHashes && item.internalTxHashes.length > 0) {
|
|
11
|
+
txHashes = item.internalTxHashes.concat([...txHashes]);
|
|
12
|
+
}
|
|
13
|
+
if (item.status === 'incomplete') {
|
|
14
|
+
currentStep = step;
|
|
15
|
+
currentStepItem = item;
|
|
16
|
+
break; // Exit the inner loop once the first incomplete item is found
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
if (currentStep && currentStepItem)
|
|
20
|
+
break; // Exit the outer loop if the current step and item have been found
|
|
21
|
+
}
|
|
22
|
+
return { currentStep, currentStepItem, txHashes };
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=getCurrentStepData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getCurrentStepData.js","sourceRoot":"","sources":["../../../src/utils/getCurrentStepData.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAuB,EAAE,EAAE;IAC5D,IAAI,WAAW,GAA8C,IAAI,CAAA;IACjE,IAAI,eAAyE,CAAA;IAC7E,IAAI,QAAQ,GAA0C,EAAE,CAAA;IAExD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9C,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAA;YAChD,CAAC;YACD,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9D,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAA;YACxD,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;gBACjC,WAAW,GAAG,IAAI,CAAA;gBAClB,eAAe,GAAG,IAAI,CAAA;gBACtB,MAAK,CAAC,8DAA8D;YACtE,CAAC;QACH,CAAC;QACD,IAAI,WAAW,IAAI,eAAe;YAAE,MAAK,CAAC,mEAAmE;IAC/G,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAA;AACnD,CAAC,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { axios } from './axios.js';
|
|
2
|
+
export const getTenderlyDetails = (txHash) => {
|
|
3
|
+
return new Promise((resolve) => {
|
|
4
|
+
axios
|
|
5
|
+
.get(`https://api.tenderly.co/api/v1/explorer/${txHash}`, {
|
|
6
|
+
timeout: 5000
|
|
7
|
+
})
|
|
8
|
+
.then((response) => {
|
|
9
|
+
if (response && response.data && response.data.error_info) {
|
|
10
|
+
resolve(response.data.error_info);
|
|
11
|
+
}
|
|
12
|
+
resolve(null);
|
|
13
|
+
})
|
|
14
|
+
.catch((e) => {
|
|
15
|
+
console.warn(`Tenderly api failed: ${e}`);
|
|
16
|
+
resolve(null);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=getTenderlyDetails.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTenderlyDetails.js","sourceRoot":"","sources":["../../../src/utils/getTenderlyDetails.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAOlC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,MAAc,EACqB,EAAE;IACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,KAAK;aACF,GAAG,CAAC,2CAA2C,MAAM,EAAE,EAAE;YACxD,OAAO,EAAE,IAAI;SACd,CAAC;aACD,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;YACjB,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC1D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YACnC,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAA;QACf,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACX,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAA;YACzC,OAAO,CAAC,IAAI,CAAC,CAAA;QACf,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { parseSignature } from 'viem';
|
|
2
|
+
import axios from 'axios';
|
|
3
|
+
import { LogLevel } from './logger.js';
|
|
4
|
+
export function prepareHyperliquidSignatureStep(steps, chainId) {
|
|
5
|
+
const items = steps[0]?.items;
|
|
6
|
+
const amount = items[0]?.data?.action?.parameters?.amount;
|
|
7
|
+
const destination = items[0]?.data?.action?.parameters?.destination;
|
|
8
|
+
const signatureStep = {
|
|
9
|
+
id: 'sign',
|
|
10
|
+
action: 'Confirm transaction in your wallet',
|
|
11
|
+
description: `Sign a message to confirm the transaction`,
|
|
12
|
+
kind: 'signature',
|
|
13
|
+
items: [
|
|
14
|
+
{
|
|
15
|
+
status: 'incomplete',
|
|
16
|
+
data: {
|
|
17
|
+
sign: {
|
|
18
|
+
signatureKind: 'eip712',
|
|
19
|
+
domain: {
|
|
20
|
+
name: 'HyperliquidSignTransaction',
|
|
21
|
+
version: '1',
|
|
22
|
+
chainId: chainId,
|
|
23
|
+
verifyingContract: '0x0000000000000000000000000000000000000000'
|
|
24
|
+
},
|
|
25
|
+
types: {
|
|
26
|
+
'HyperliquidTransaction:UsdSend': [
|
|
27
|
+
{ name: 'hyperliquidChain', type: 'string' },
|
|
28
|
+
{ name: 'destination', type: 'string' },
|
|
29
|
+
{ name: 'amount', type: 'string' },
|
|
30
|
+
{ name: 'time', type: 'uint64' }
|
|
31
|
+
],
|
|
32
|
+
EIP712Domain: [
|
|
33
|
+
{ name: 'name', type: 'string' },
|
|
34
|
+
{ name: 'version', type: 'string' },
|
|
35
|
+
{ name: 'chainId', type: 'uint256' },
|
|
36
|
+
{ name: 'verifyingContract', type: 'address' }
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
primaryType: 'HyperliquidTransaction:UsdSend',
|
|
40
|
+
value: {
|
|
41
|
+
type: 'usdSend',
|
|
42
|
+
signatureChainId: `0x${chainId.toString(16)}`,
|
|
43
|
+
hyperliquidChain: 'Mainnet',
|
|
44
|
+
destination: destination?.toLowerCase(),
|
|
45
|
+
amount,
|
|
46
|
+
time: new Date().getTime()
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
check: {
|
|
51
|
+
endpoint: `/intents/status?requestId=${steps[0]?.requestId}`,
|
|
52
|
+
method: 'GET'
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
requestId: steps[0]?.requestId,
|
|
57
|
+
depositAddress: steps[0]?.depositAddress
|
|
58
|
+
};
|
|
59
|
+
return signatureStep;
|
|
60
|
+
}
|
|
61
|
+
export async function sendUsd(client, signature, stepItem) {
|
|
62
|
+
client.log(['Execute Steps: Sending signature to Hyperliquid', signature], LogLevel.Verbose);
|
|
63
|
+
const { r, s, v } = parseSignature(signature);
|
|
64
|
+
const currentTime = stepItem?.data?.sign?.value?.time ?? new Date().getTime();
|
|
65
|
+
const res = await axios.post('https://api.hyperliquid.xyz/exchange', {
|
|
66
|
+
signature: {
|
|
67
|
+
r,
|
|
68
|
+
s,
|
|
69
|
+
v: Number(v ?? 0n)
|
|
70
|
+
},
|
|
71
|
+
nonce: currentTime,
|
|
72
|
+
action: {
|
|
73
|
+
type: stepItem?.data?.sign?.value?.type,
|
|
74
|
+
signatureChainId: `0x${stepItem?.data?.sign?.domain?.chainId?.toString(16)}`,
|
|
75
|
+
hyperliquidChain: 'Mainnet',
|
|
76
|
+
destination: stepItem?.data?.sign?.value?.destination?.toLowerCase(),
|
|
77
|
+
amount: stepItem?.data?.sign?.value?.amount,
|
|
78
|
+
time: currentTime
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
if (!res ||
|
|
82
|
+
!res.data ||
|
|
83
|
+
(res && res.status !== 200) ||
|
|
84
|
+
res.data.status != 'ok') {
|
|
85
|
+
throw 'Failed to send signature to HyperLiquid';
|
|
86
|
+
}
|
|
87
|
+
client.log(['Execute Steps: Signature sent to Hyperliquid', res.data], LogLevel.Verbose);
|
|
88
|
+
return res.data;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=hyperliquid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hyperliquid.js","sourceRoot":"","sources":["../../../src/utils/hyperliquid.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export { executeSteps } from './executeSteps/index.js';
|
|
2
|
+
export { setParams } from './params.js';
|
|
3
|
+
export { pollUntilOk, pollUntilHasData } from './pollApi.js';
|
|
4
|
+
export { request, APIError, isAPIError } from './request.js';
|
|
5
|
+
export { log, LogLevel } from './logger.js';
|
|
6
|
+
export { axios } from './axios.js';
|
|
7
|
+
export { default as prepareCallTransaction } from './prepareCallTransaction.js';
|
|
8
|
+
export { adaptViemWallet } from './viemWallet.js';
|
|
9
|
+
export { configureViemChain, convertViemChainToRelayChain } from './chain.js';
|
|
10
|
+
export { fetchChainConfigs } from './fetchChainConfigs.js';
|
|
11
|
+
export { getCurrentStepData } from './getCurrentStepData.js';
|
|
12
|
+
export { isSimulateContractRequest } from './simulateContract.js';
|
|
13
|
+
export { safeStructuredClone } from './structuredClone.js';
|
|
14
|
+
export { repeatUntilOk } from './repeatUntilOk.js';
|
|
15
|
+
export { prepareHyperliquidSignatureStep } from './hyperliquid.js';
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAA;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAEL,yBAAyB,EAC1B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export var LogLevel;
|
|
2
|
+
(function (LogLevel) {
|
|
3
|
+
LogLevel[LogLevel["Verbose"] = 4] = "Verbose";
|
|
4
|
+
LogLevel[LogLevel["Info"] = 3] = "Info";
|
|
5
|
+
LogLevel[LogLevel["Warn"] = 2] = "Warn";
|
|
6
|
+
LogLevel[LogLevel["Error"] = 1] = "Error";
|
|
7
|
+
LogLevel[LogLevel["None"] = 0] = "None";
|
|
8
|
+
})(LogLevel || (LogLevel = {}));
|
|
9
|
+
export const log = (params, level, currentLevel) => {
|
|
10
|
+
if (currentLevel >= level) {
|
|
11
|
+
const data = params.reduce((params, param, i) => {
|
|
12
|
+
if ((i + 1) % 2) {
|
|
13
|
+
params.push('\n');
|
|
14
|
+
}
|
|
15
|
+
params.push(param);
|
|
16
|
+
return params;
|
|
17
|
+
}, []);
|
|
18
|
+
switch (level) {
|
|
19
|
+
case LogLevel.Info:
|
|
20
|
+
console.info(...data);
|
|
21
|
+
break;
|
|
22
|
+
case LogLevel.Error:
|
|
23
|
+
console.error(...data);
|
|
24
|
+
break;
|
|
25
|
+
case LogLevel.Warn:
|
|
26
|
+
console.warn(...data);
|
|
27
|
+
break;
|
|
28
|
+
default:
|
|
29
|
+
console.log(...data);
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,6CAAW,CAAA;IACX,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;IACT,uCAAQ,CAAA;AACV,CAAC,EANW,QAAQ,KAAR,QAAQ,QAMnB;AAED,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,MAAa,EAAE,KAAe,EAAE,YAAsB,EAAE,EAAE;IAC5E,IAAI,YAAY,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC9C,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACnB,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAClB,OAAO,MAAM,CAAA;QACf,CAAC,EAAE,EAAE,CAAC,CAAA;QACN,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,QAAQ,CAAC,IAAI;gBAChB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;gBACrB,MAAK;YACP,KAAK,QAAQ,CAAC,KAAK;gBACjB,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;gBACtB,MAAK;YACP,KAAK,QAAQ,CAAC,IAAI;gBAChB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;gBACrB,MAAK;YACP;gBACE,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;gBACpB,MAAK;QACT,CAAC;IACH,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Set URL query params using a typed objects
|
|
3
|
+
*
|
|
4
|
+
* This will convert an object
|
|
5
|
+
*
|
|
6
|
+
* ```js
|
|
7
|
+
* {
|
|
8
|
+
* foo: 'bar',
|
|
9
|
+
* age: 50,
|
|
10
|
+
* }
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* into a query string
|
|
14
|
+
*
|
|
15
|
+
* `?foo=bar&age=50`
|
|
16
|
+
*
|
|
17
|
+
* and append it to URL provided
|
|
18
|
+
*
|
|
19
|
+
* `https://api.example.com/tokens?foo=bar&age=50`
|
|
20
|
+
*
|
|
21
|
+
* @param url An URL instance
|
|
22
|
+
* @param query An object containing all needed query params.
|
|
23
|
+
*/
|
|
24
|
+
export function setParams(url, query) {
|
|
25
|
+
Object.keys(query).map((key) => {
|
|
26
|
+
let value = query[key];
|
|
27
|
+
if (value !== undefined) {
|
|
28
|
+
if (Array.isArray(value)) {
|
|
29
|
+
value.forEach((item) => {
|
|
30
|
+
url.searchParams.append(key, item);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
url.searchParams.append(key, query[key]?.toString());
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return url;
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=params.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"params.js","sourceRoot":"","sources":["../../../src/utils/params.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,MAAM,UAAU,SAAS,CAAC,GAAQ,EAAE,KAA2B;IAC7D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC7B,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;QACtB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;oBACrB,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;gBACpC,CAAC,CAAC,CAAA;YACJ,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;YACtD,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { axios } from './axios.js';
|
|
2
|
+
/**
|
|
3
|
+
* Poll the URL with a 5 second interval until the step has data
|
|
4
|
+
* available
|
|
5
|
+
* @param url an URL object
|
|
6
|
+
* @param index The index of the step to be polled for
|
|
7
|
+
* @param maximumAttempts The maximum amount of tries for this poll
|
|
8
|
+
* @param attemptCount The amount of attempts already done by the poll, should be left blank
|
|
9
|
+
* @returns The updated JSON response
|
|
10
|
+
*/
|
|
11
|
+
export async function pollUntilHasData(request, dataParser, maximumAttempts = 15, attemptCount = 0) {
|
|
12
|
+
if (attemptCount >= maximumAttempts) {
|
|
13
|
+
throw `Failed to get data after ${attemptCount} attempt(s), aborting`;
|
|
14
|
+
}
|
|
15
|
+
async function getData() {
|
|
16
|
+
let res = await axios.request(request);
|
|
17
|
+
return res.data;
|
|
18
|
+
}
|
|
19
|
+
const json = await getData();
|
|
20
|
+
// Check if the data exists
|
|
21
|
+
const dataExists = dataParser(json);
|
|
22
|
+
if (dataExists)
|
|
23
|
+
return json;
|
|
24
|
+
// The response is still unchanged. Check again in five seconds
|
|
25
|
+
await new Promise((resolve) => setTimeout(resolve, 5000));
|
|
26
|
+
attemptCount++;
|
|
27
|
+
await pollUntilHasData(request, dataParser, maximumAttempts, attemptCount);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Poll the URL with a 5 second interval until it responds with success
|
|
31
|
+
* @param url An URL object
|
|
32
|
+
* @param validate A function that checks if the request is "ok" or valid
|
|
33
|
+
* @param maximumAttempts The maximum amount of tries for this poll
|
|
34
|
+
* @param attemptCount The amount of attempts already done by the poll, should be left blank
|
|
35
|
+
* @param pollingInterval The frequency the api will be polled
|
|
36
|
+
* @returns When it has finished polling
|
|
37
|
+
*/
|
|
38
|
+
export async function pollUntilOk(request, validate, maximumAttempts = 15, attemptCount = 0, pollingInterval = 5000) {
|
|
39
|
+
if (attemptCount >= maximumAttempts) {
|
|
40
|
+
throw `Failed to get an ok response after ${attemptCount} attempt(s), aborting`;
|
|
41
|
+
}
|
|
42
|
+
const res = await axios.request(request);
|
|
43
|
+
if (!validate) {
|
|
44
|
+
validate = (res) => res.status === 200;
|
|
45
|
+
}
|
|
46
|
+
// Check that the response from an endpoint updated
|
|
47
|
+
if (validate(res)) {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
// The response is still unchanged
|
|
52
|
+
await new Promise((resolve) => setTimeout(resolve, pollingInterval));
|
|
53
|
+
attemptCount++;
|
|
54
|
+
await pollUntilOk(request, validate, maximumAttempts, attemptCount, pollingInterval);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=pollApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pollApi.js","sourceRoot":"","sources":["../../../src/utils/pollApi.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAElC;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAA2B,EAC3B,UAAkC,EAClC,kBAA0B,EAAE,EAC5B,eAAuB,CAAC;IAExB,IAAI,YAAY,IAAI,eAAe,EAAE,CAAC;QACpC,MAAM,4BAA4B,YAAY,uBAAuB,CAAA;IACvE,CAAC;IACD,KAAK,UAAU,OAAO;QACpB,IAAI,GAAG,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAEtC,OAAO,GAAG,CAAC,IAAI,CAAA;IACjB,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAA;IAE5B,2BAA2B;IAC3B,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IACnC,IAAI,UAAU;QAAE,OAAO,IAAI,CAAA;IAE3B,+DAA+D;IAC/D,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;IACzD,YAAY,EAAE,CAAA;IACd,MAAM,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,CAAC,CAAA;AAC5E,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAA2B,EAC3B,QAA0C,EAC1C,kBAA0B,EAAE,EAC5B,eAAuB,CAAC,EACxB,kBAA0B,IAAI;IAE9B,IAAI,YAAY,IAAI,eAAe,EAAE,CAAC;QACpC,MAAM,sCAAsC,YAAY,uBAAuB,CAAA;IACjF,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAExC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,GAAG,CAAA;IACxC,CAAC;IAED,mDAAmD;IACnD,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAClB,OAAO,IAAI,CAAA;IACb,CAAC;SAAM,CAAC;QACN,kCAAkC;QAClC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAA;QACpE,YAAY,EAAE,CAAA;QACd,MAAM,WAAW,CACf,OAAO,EACP,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,eAAe,CAChB,CAAA;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export function canBatchTransactions(steps) {
|
|
2
|
+
const firstStep = steps[0];
|
|
3
|
+
const secondStep = steps[1];
|
|
4
|
+
const hasIncompleteApproval = firstStep?.items?.some((item) => item.status === 'incomplete');
|
|
5
|
+
const hasIncompleteDeposit = secondStep?.items?.some((item) => item.status === 'incomplete');
|
|
6
|
+
return (firstStep?.id === 'approve' &&
|
|
7
|
+
(secondStep?.id === 'deposit' || secondStep?.id === 'swap') &&
|
|
8
|
+
hasIncompleteApproval &&
|
|
9
|
+
hasIncompleteDeposit);
|
|
10
|
+
}
|
|
11
|
+
export function prepareBatchTransaction(steps) {
|
|
12
|
+
const secondStepId = steps[1]?.id; // deposit or swap
|
|
13
|
+
const batchedStep = {
|
|
14
|
+
id: `approve-and-${secondStepId}`,
|
|
15
|
+
action: 'Confirm transaction in your wallet',
|
|
16
|
+
description: `Batching approval and ${secondStepId} transactions`,
|
|
17
|
+
kind: 'transaction',
|
|
18
|
+
items: [
|
|
19
|
+
...(steps[0].items || []),
|
|
20
|
+
...(steps[1].items || []).map((item) => {
|
|
21
|
+
// mark the second step as complete
|
|
22
|
+
item.status = 'complete';
|
|
23
|
+
item.progressState = 'complete';
|
|
24
|
+
return item;
|
|
25
|
+
})
|
|
26
|
+
],
|
|
27
|
+
requestId: steps[1].requestId ?? steps[0].requestId
|
|
28
|
+
};
|
|
29
|
+
return batchedStep;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=prepareBatchTransaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepareBatchTransaction.js","sourceRoot":"","sources":["../../../src/utils/prepareBatchTransaction.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,oBAAoB,CAAC,KAAuB;IAC1D,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IAC1B,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IAE3B,MAAM,qBAAqB,GAAG,SAAS,EAAE,KAAK,EAAE,IAAI,CAClD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,YAAY,CACvC,CAAA;IACD,MAAM,oBAAoB,GAAG,UAAU,EAAE,KAAK,EAAE,IAAI,CAClD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,YAAY,CACvC,CAAA;IAED,OAAO,CACL,SAAS,EAAE,EAAE,KAAK,SAAS;QAC3B,CAAC,UAAU,EAAE,EAAE,KAAK,SAAS,IAAI,UAAU,EAAE,EAAE,KAAK,MAAM,CAAC;QAC3D,qBAAqB;QACrB,oBAAoB,CACrB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAuB;IAC7D,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA,CAAC,kBAAkB;IAEpD,MAAM,WAAW,GAAG;QAClB,EAAE,EAAE,eAAe,YAAY,EAAS;QACxC,MAAM,EAAE,oCAAoC;QAC5C,WAAW,EAAE,yBAAyB,YAAY,eAAe;QACjE,IAAI,EAAE,aAAsB;QAC5B,KAAK,EAAE;YACL,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACzB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACrC,mCAAmC;gBACnC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAA;gBACxB,IAAI,CAAC,aAAa,GAAG,UAAU,CAAA;gBAC/B,OAAO,IAAI,CAAA;YACb,CAAC,CAAC;SACH;QACD,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;KACpD,CAAA;IAED,OAAO,WAAW,CAAA;AACpB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { encodeFunctionData } from 'viem';
|
|
2
|
+
export default function prepareCallTransaction(request) {
|
|
3
|
+
const { abi, functionName, args } = request;
|
|
4
|
+
const data = encodeFunctionData({ abi, functionName, args });
|
|
5
|
+
return {
|
|
6
|
+
to: request.address,
|
|
7
|
+
value: request?.value?.toString() ?? '0',
|
|
8
|
+
data: data
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=prepareCallTransaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepareCallTransaction.js","sourceRoot":"","sources":["../../../src/utils/prepareCallTransaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AAOzC,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAC5C,OAGC;IAED,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;IAE3C,MAAM,IAAI,GAAG,kBAAkB,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAA;IAC5D,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,OAAO;QACnB,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,GAAG;QACxC,IAAI,EAAE,IAAI;KACX,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repeat a function until the function returns true for a maximum set of attempts with a fixed interval
|
|
3
|
+
* @param callback A function that returns true to exit the loop
|
|
4
|
+
* @param maximumAttempts The maximum amount of tries for this poll
|
|
5
|
+
* @param attemptCount The amount of attempts already done by the poll, should be left blank
|
|
6
|
+
* @param pollingInterval The frequency of the loop
|
|
7
|
+
* @returns When it has finished polling
|
|
8
|
+
*/
|
|
9
|
+
export async function repeatUntilOk(callback, maximumAttempts = 15, attemptCount = 0, pollingInterval = 5000) {
|
|
10
|
+
if (attemptCount >= maximumAttempts) {
|
|
11
|
+
throw `Failed to get an ok response after ${attemptCount} attempt(s), aborting`;
|
|
12
|
+
}
|
|
13
|
+
const response = await callback();
|
|
14
|
+
if (response) {
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
await new Promise((resolve) => setTimeout(resolve, pollingInterval));
|
|
19
|
+
attemptCount++;
|
|
20
|
+
await repeatUntilOk(callback, maximumAttempts, attemptCount, pollingInterval);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=repeatUntilOk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repeatUntilOk.js","sourceRoot":"","sources":["../../../src/utils/repeatUntilOk.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAgC,EAChC,kBAA0B,EAAE,EAC5B,eAAuB,CAAC,EACxB,kBAA0B,IAAI;IAE9B,IAAI,YAAY,IAAI,eAAe,EAAE,CAAC;QACpC,MAAM,sCAAsC,YAAY,uBAAuB,CAAA;IACjF,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,QAAQ,EAAE,CAAA;IAEjC,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,IAAI,CAAA;IACb,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAA;QACpE,YAAY,EAAE,CAAA;QACd,MAAM,aAAa,CACjB,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,eAAe,CAChB,CAAA;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { axios } from './axios.js';
|
|
2
|
+
export function request(config = {}) {
|
|
3
|
+
return axios.request(config);
|
|
4
|
+
}
|
|
5
|
+
export function isAPIError(error) {
|
|
6
|
+
return error && error.cause === 'APIError';
|
|
7
|
+
}
|
|
8
|
+
export class APIError extends Error {
|
|
9
|
+
constructor(message = 'Unknown Reason', statusCode, rawError, type = 'APIError', options = {}) {
|
|
10
|
+
super(message, { ...options, cause: 'APIError' });
|
|
11
|
+
Object.defineProperty(this, "type", {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
configurable: true,
|
|
14
|
+
writable: true,
|
|
15
|
+
value: void 0
|
|
16
|
+
});
|
|
17
|
+
Object.defineProperty(this, "statusCode", {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
configurable: true,
|
|
20
|
+
writable: true,
|
|
21
|
+
value: void 0
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(this, "rawError", {
|
|
24
|
+
enumerable: true,
|
|
25
|
+
configurable: true,
|
|
26
|
+
writable: true,
|
|
27
|
+
value: void 0
|
|
28
|
+
});
|
|
29
|
+
Object.defineProperty(this, "endpoint", {
|
|
30
|
+
enumerable: true,
|
|
31
|
+
configurable: true,
|
|
32
|
+
writable: true,
|
|
33
|
+
value: void 0
|
|
34
|
+
});
|
|
35
|
+
this.name = 'APIError';
|
|
36
|
+
this.type = type;
|
|
37
|
+
this.statusCode = statusCode;
|
|
38
|
+
this.endpoint = rawError?.endpoint;
|
|
39
|
+
this.rawError = rawError;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/utils/request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAGlC,MAAM,UAAU,OAAO,CAAC,SAA6B,EAAE;IACrD,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,CAAA;AAC5C,CAAC;AAED,MAAM,OAAO,QAAS,SAAQ,KAAK;IAMjC,YACE,UAAkB,gBAAgB,EAClC,UAAkB,EAClB,QAAc,EACd,OAAe,UAAU,EACzB,UAAe,EAAE;QAEjB,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAA;QAZnD;;;;;WAAY;QACZ;;;;;WAAkB;QAClB;;;;;WAAa;QACb;;;;;WAAiB;QAUf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAA;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,QAAQ,GAAG,QAAQ,EAAE,QAAQ,CAAA;QAClC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simulateContract.js","sourceRoot":"","sources":["../../../src/utils/simulateContract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,MAAM,MAAM,CAAA;AAInD,MAAM,UAAU,yBAAyB,CACvC,EAAO;IAEP,OAAQ,EAA8B,CAAC,GAAG,KAAK,SAAS,CAAA;AAC1D,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export function safeStructuredClone(obj) {
|
|
2
|
+
if (typeof structuredClone === 'function') {
|
|
3
|
+
return structuredClone(obj);
|
|
4
|
+
}
|
|
5
|
+
// Fallback implementation, for Chrome < 98 (before 2022)
|
|
6
|
+
return JSON.parse(JSON.stringify(obj));
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=structuredClone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structuredClone.js","sourceRoot":"","sources":["../../../src/utils/structuredClone.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,mBAAmB,CAAI,GAAM;IAC3C,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE,CAAC;QAC1C,OAAO,eAAe,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;IACD,yDAAyD;IACzD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;AACxC,CAAC"}
|