@lifi/sdk 3.6.1 → 3.6.2-beta.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/package.json +3 -3
- package/src/_cjs/core/BaseStepExecutor.js +13 -38
- package/src/_cjs/core/BaseStepExecutor.js.map +1 -1
- package/src/_cjs/core/EVM/EVMStepExecutor.js +329 -359
- package/src/_cjs/core/EVM/EVMStepExecutor.js.map +1 -1
- package/src/_cjs/core/EVM/checkAllowance.js +18 -9
- package/src/_cjs/core/EVM/checkAllowance.js.map +1 -1
- package/src/_cjs/core/EVM/checkPermitSupport.js +2 -2
- package/src/_cjs/core/EVM/checkPermitSupport.js.map +1 -1
- package/src/_cjs/core/EVM/permits/allowanceTransfer.js +8 -8
- package/src/_cjs/core/EVM/permits/allowanceTransfer.js.map +1 -1
- package/src/_cjs/core/EVM/permits/getNativePermit.js +12 -10
- package/src/_cjs/core/EVM/permits/getNativePermit.js.map +1 -1
- package/src/_cjs/core/EVM/permits/signPermit2Message.js +27 -26
- package/src/_cjs/core/EVM/permits/signPermit2Message.js.map +1 -1
- package/src/_cjs/core/EVM/permits/signatureTransfer.js +8 -8
- package/src/_cjs/core/EVM/permits/signatureTransfer.js.map +1 -1
- package/src/_cjs/core/EVM/typeguards.js +5 -2
- package/src/_cjs/core/EVM/typeguards.js.map +1 -1
- package/src/_cjs/core/EVM/types.js.map +1 -1
- package/src/_cjs/core/Solana/KeypairWalletAdapter.js +8 -33
- package/src/_cjs/core/Solana/KeypairWalletAdapter.js.map +1 -1
- package/src/_cjs/core/Solana/SolanaStepExecutor.js +97 -112
- package/src/_cjs/core/Solana/SolanaStepExecutor.js.map +1 -1
- package/src/_cjs/core/StatusManager.js +100 -135
- package/src/_cjs/core/StatusManager.js.map +1 -1
- package/src/_cjs/core/UTXO/UTXOStepExecutor.js +136 -151
- package/src/_cjs/core/UTXO/UTXOStepExecutor.js.map +1 -1
- package/src/_cjs/core/prepareRestart.js +7 -1
- package/src/_cjs/core/prepareRestart.js.map +1 -1
- package/src/_cjs/errors/SDKError.js +5 -30
- package/src/_cjs/errors/SDKError.js.map +1 -1
- package/src/_cjs/errors/baseError.js +2 -12
- package/src/_cjs/errors/baseError.js.map +1 -1
- package/src/_cjs/errors/httpError.js +6 -36
- package/src/_cjs/errors/httpError.js.map +1 -1
- package/src/_cjs/index.js +3 -2
- package/src/_cjs/index.js.map +1 -1
- package/src/_cjs/services/api.js +2 -4
- package/src/_cjs/services/api.js.map +1 -1
- package/src/_cjs/utils/withDedupe.js +1 -6
- package/src/_cjs/utils/withDedupe.js.map +1 -1
- package/src/_cjs/version.js +1 -1
- package/src/_cjs/version.js.map +1 -1
- package/src/_esm/core/BaseStepExecutor.js +13 -38
- package/src/_esm/core/BaseStepExecutor.js.map +1 -1
- package/src/_esm/core/EVM/EVMStepExecutor.js +367 -397
- package/src/_esm/core/EVM/EVMStepExecutor.js.map +1 -1
- package/src/_esm/core/EVM/checkAllowance.js +18 -9
- package/src/_esm/core/EVM/checkAllowance.js.map +1 -1
- package/src/_esm/core/EVM/checkPermitSupport.js +2 -2
- package/src/_esm/core/EVM/checkPermitSupport.js.map +1 -1
- package/src/_esm/core/EVM/permits/allowanceTransfer.js +8 -8
- package/src/_esm/core/EVM/permits/allowanceTransfer.js.map +1 -1
- package/src/_esm/core/EVM/permits/getNativePermit.js +12 -10
- package/src/_esm/core/EVM/permits/getNativePermit.js.map +1 -1
- package/src/_esm/core/EVM/permits/signPermit2Message.js +29 -28
- package/src/_esm/core/EVM/permits/signPermit2Message.js.map +1 -1
- package/src/_esm/core/EVM/permits/signatureTransfer.js +8 -8
- package/src/_esm/core/EVM/permits/signatureTransfer.js.map +1 -1
- package/src/_esm/core/EVM/typeguards.js +4 -2
- package/src/_esm/core/EVM/typeguards.js.map +1 -1
- package/src/_esm/core/EVM/types.js.map +1 -1
- package/src/_esm/core/Solana/KeypairWalletAdapter.js +12 -37
- package/src/_esm/core/Solana/KeypairWalletAdapter.js.map +1 -1
- package/src/_esm/core/Solana/SolanaStepExecutor.js +105 -120
- package/src/_esm/core/Solana/SolanaStepExecutor.js.map +1 -1
- package/src/_esm/core/StatusManager.js +129 -164
- package/src/_esm/core/StatusManager.js.map +1 -1
- package/src/_esm/core/UTXO/UTXOStepExecutor.js +144 -159
- package/src/_esm/core/UTXO/UTXOStepExecutor.js.map +1 -1
- package/src/_esm/core/prepareRestart.js +10 -1
- package/src/_esm/core/prepareRestart.js.map +1 -1
- package/src/_esm/errors/SDKError.js +5 -30
- package/src/_esm/errors/SDKError.js.map +1 -1
- package/src/_esm/errors/baseError.js +2 -12
- package/src/_esm/errors/baseError.js.map +1 -1
- package/src/_esm/errors/httpError.js +6 -36
- package/src/_esm/errors/httpError.js.map +1 -1
- package/src/_esm/index.js +1 -1
- package/src/_esm/index.js.map +1 -1
- package/src/_esm/services/api.js +2 -4
- package/src/_esm/services/api.js.map +1 -1
- package/src/_esm/utils/withDedupe.js +1 -6
- package/src/_esm/utils/withDedupe.js.map +1 -1
- package/src/_esm/version.js +1 -1
- package/src/_esm/version.js.map +1 -1
- package/src/_types/core/EVM/EVMStepExecutor.d.ts.map +1 -1
- package/src/_types/core/EVM/checkAllowance.d.ts +2 -3
- package/src/_types/core/EVM/checkAllowance.d.ts.map +1 -1
- package/src/_types/core/EVM/checkPermitSupport.d.ts.map +1 -1
- package/src/_types/core/EVM/permits/allowanceTransfer.d.ts +4 -4
- package/src/_types/core/EVM/permits/allowanceTransfer.d.ts.map +1 -1
- package/src/_types/core/EVM/permits/getNativePermit.d.ts +1 -2
- package/src/_types/core/EVM/permits/getNativePermit.d.ts.map +1 -1
- package/src/_types/core/EVM/permits/signPermit2Message.d.ts +2 -11
- package/src/_types/core/EVM/permits/signPermit2Message.d.ts.map +1 -1
- package/src/_types/core/EVM/permits/signatureTransfer.d.ts +2 -2
- package/src/_types/core/EVM/permits/signatureTransfer.d.ts.map +1 -1
- package/src/_types/core/EVM/permits/types.d.ts +3 -9
- package/src/_types/core/EVM/permits/types.d.ts.map +1 -1
- package/src/_types/core/EVM/typeguards.d.ts +6 -2
- package/src/_types/core/EVM/typeguards.d.ts.map +1 -1
- package/src/_types/core/EVM/types.d.ts +2 -5
- package/src/_types/core/EVM/types.d.ts.map +1 -1
- package/src/_types/core/prepareRestart.d.ts.map +1 -1
- package/src/_types/index.d.ts +1 -1
- package/src/_types/index.d.ts.map +1 -1
- package/src/_types/services/api.d.ts +2 -2
- package/src/_types/services/api.d.ts.map +1 -1
- package/src/_types/version.d.ts +1 -1
- package/src/_types/version.d.ts.map +1 -1
- package/src/core/EVM/EVMStepExecutor.ts +39 -44
- package/src/core/EVM/checkAllowance.ts +28 -19
- package/src/core/EVM/checkPermitSupport.ts +14 -2
- package/src/core/EVM/permits/allowanceTransfer.ts +14 -10
- package/src/core/EVM/permits/getNativePermit.ts +13 -11
- package/src/core/EVM/permits/signPermit2Message.ts +43 -63
- package/src/core/EVM/permits/signatureTransfer.ts +10 -10
- package/src/core/EVM/permits/types.ts +3 -16
- package/src/core/EVM/typeguards.ts +14 -4
- package/src/core/EVM/types.ts +2 -6
- package/src/core/prepareRestart.ts +14 -2
- package/src/index.ts +1 -1
- package/src/services/api.ts +3 -6
- package/src/version.ts +1 -1
- package/src/_cjs/core/EVM/permits/signNativePermitMessage.js +0 -20
- package/src/_cjs/core/EVM/permits/signNativePermitMessage.js.map +0 -1
- package/src/_cjs/core/EVM/permits/utils.js +0 -31
- package/src/_cjs/core/EVM/permits/utils.js.map +0 -1
- package/src/_esm/core/EVM/permits/signNativePermitMessage.js +0 -16
- package/src/_esm/core/EVM/permits/signNativePermitMessage.js.map +0 -1
- package/src/_esm/core/EVM/permits/utils.js +0 -26
- package/src/_esm/core/EVM/permits/utils.js.map +0 -1
- package/src/_types/core/EVM/permits/signNativePermitMessage.d.ts +0 -4
- package/src/_types/core/EVM/permits/signNativePermitMessage.d.ts.map +0 -1
- package/src/_types/core/EVM/permits/utils.d.ts +0 -6
- package/src/_types/core/EVM/permits/utils.d.ts.map +0 -1
- package/src/core/EVM/permits/signNativePermitMessage.ts +0 -27
- package/src/core/EVM/permits/utils.ts +0 -40
|
@@ -16,125 +16,110 @@ const connection_js_1 = require("./connection.js");
|
|
|
16
16
|
const parseSolanaErrors_js_1 = require("./parseSolanaErrors.js");
|
|
17
17
|
const sendAndConfirmTransaction_js_1 = require("./sendAndConfirmTransaction.js");
|
|
18
18
|
class SolanaStepExecutor extends BaseStepExecutor_js_1.BaseStepExecutor {
|
|
19
|
+
walletAdapter;
|
|
19
20
|
constructor(options) {
|
|
20
21
|
super(options);
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
this.walletAdapter = options.walletAdapter;
|
|
23
|
+
}
|
|
24
|
+
checkWalletAdapter = (step) => {
|
|
25
|
+
if (this.walletAdapter.publicKey.toString() !== step.action.fromAddress) {
|
|
26
|
+
throw new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.WalletChangedDuringExecution, 'The wallet address that requested the quote does not match the wallet address attempting to sign the transaction.');
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
executeStep = async (step) => {
|
|
30
|
+
step.execution = this.statusManager.initExecutionObject(step);
|
|
31
|
+
const fromChain = await config_js_1.config.getChainById(step.action.fromChainId);
|
|
32
|
+
const toChain = await config_js_1.config.getChainById(step.action.toChainId);
|
|
33
|
+
const isBridgeExecution = fromChain.id !== toChain.id;
|
|
34
|
+
const currentProcessType = isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP';
|
|
35
|
+
let process = this.statusManager.findOrCreateProcess({
|
|
36
|
+
step,
|
|
37
|
+
type: currentProcessType,
|
|
38
|
+
chainId: fromChain.id,
|
|
26
39
|
});
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
40
|
+
if (process.status !== 'DONE') {
|
|
41
|
+
try {
|
|
42
|
+
process = this.statusManager.updateProcess(step, process.type, 'STARTED');
|
|
43
|
+
await (0, checkBalance_js_1.checkBalance)(this.walletAdapter.publicKey.toString(), step);
|
|
44
|
+
if (!step.transactionRequest) {
|
|
45
|
+
const { execution, ...stepBase } = step;
|
|
46
|
+
const updatedStep = await (0, api_js_1.getStepTransaction)(stepBase);
|
|
47
|
+
const comparedStep = await (0, stepComparison_js_1.stepComparison)(this.statusManager, step, updatedStep, this.allowUserInteraction, this.executionOptions);
|
|
48
|
+
Object.assign(step, {
|
|
49
|
+
...comparedStep,
|
|
50
|
+
execution: step.execution,
|
|
51
|
+
});
|
|
34
52
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
53
|
+
if (!step.transactionRequest?.data) {
|
|
54
|
+
throw new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.TransactionUnprepared, 'Unable to prepare transaction.');
|
|
55
|
+
}
|
|
56
|
+
process = this.statusManager.updateProcess(step, process.type, 'ACTION_REQUIRED');
|
|
57
|
+
if (!this.allowUserInteraction) {
|
|
58
|
+
return step;
|
|
59
|
+
}
|
|
60
|
+
let transactionRequest = {
|
|
61
|
+
data: step.transactionRequest.data,
|
|
62
|
+
};
|
|
63
|
+
if (this.executionOptions?.updateTransactionRequestHook) {
|
|
64
|
+
const customizedTransactionRequest = await this.executionOptions.updateTransactionRequestHook({
|
|
65
|
+
requestType: 'transaction',
|
|
66
|
+
...transactionRequest,
|
|
67
|
+
});
|
|
68
|
+
transactionRequest = {
|
|
69
|
+
...transactionRequest,
|
|
70
|
+
...customizedTransactionRequest,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
if (!transactionRequest.data) {
|
|
74
|
+
throw new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.TransactionUnprepared, 'Unable to prepare transaction.');
|
|
75
|
+
}
|
|
76
|
+
const versionedTransaction = web3_js_1.VersionedTransaction.deserialize((0, base64ToUint8Array_js_1.base64ToUint8Array)(transactionRequest.data));
|
|
77
|
+
this.checkWalletAdapter(step);
|
|
78
|
+
const signedTx = await (0, viem_1.withTimeout)(() => this.walletAdapter.signTransaction(versionedTransaction), {
|
|
79
|
+
timeout: 120_000,
|
|
80
|
+
errorInstance: new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.TransactionExpired, 'Transaction has expired: blockhash is no longer recent enough.'),
|
|
51
81
|
});
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
const customizedTransactionRequest = await this.executionOptions.updateTransactionRequestHook({
|
|
77
|
-
requestType: 'transaction',
|
|
78
|
-
...transactionRequest,
|
|
79
|
-
});
|
|
80
|
-
transactionRequest = {
|
|
81
|
-
...transactionRequest,
|
|
82
|
-
...customizedTransactionRequest,
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
if (!transactionRequest.data) {
|
|
86
|
-
throw new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.TransactionUnprepared, 'Unable to prepare transaction.');
|
|
87
|
-
}
|
|
88
|
-
const versionedTransaction = web3_js_1.VersionedTransaction.deserialize((0, base64ToUint8Array_js_1.base64ToUint8Array)(transactionRequest.data));
|
|
89
|
-
this.checkWalletAdapter(step);
|
|
90
|
-
const signedTx = await (0, viem_1.withTimeout)(() => this.walletAdapter.signTransaction(versionedTransaction), {
|
|
91
|
-
timeout: 120_000,
|
|
92
|
-
errorInstance: new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.TransactionExpired, 'Transaction has expired: blockhash is no longer recent enough.'),
|
|
93
|
-
});
|
|
94
|
-
process = this.statusManager.updateProcess(step, process.type, 'PENDING');
|
|
95
|
-
const simulationResult = await (0, connection_js_1.callSolanaWithRetry)((connection) => connection.simulateTransaction(signedTx, {
|
|
96
|
-
commitment: 'confirmed',
|
|
97
|
-
replaceRecentBlockhash: true,
|
|
98
|
-
}));
|
|
99
|
-
if (simulationResult.value.err) {
|
|
100
|
-
throw new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.TransactionSimulationFailed, 'Transaction simulation failed');
|
|
101
|
-
}
|
|
102
|
-
const confirmedTx = await (0, sendAndConfirmTransaction_js_1.sendAndConfirmTransaction)(signedTx);
|
|
103
|
-
if (!confirmedTx.signatureResult) {
|
|
104
|
-
throw new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.TransactionExpired, 'Transaction has expired: The block height has exceeded the maximum allowed limit.');
|
|
105
|
-
}
|
|
106
|
-
if (confirmedTx.signatureResult.err) {
|
|
107
|
-
const reason = typeof confirmedTx.signatureResult.err === 'object'
|
|
108
|
-
? JSON.stringify(confirmedTx.signatureResult.err)
|
|
109
|
-
: confirmedTx.signatureResult.err;
|
|
110
|
-
throw new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.TransactionFailed, `Transaction failed: ${reason}`);
|
|
111
|
-
}
|
|
112
|
-
process = this.statusManager.updateProcess(step, process.type, 'PENDING', {
|
|
113
|
-
txHash: confirmedTx.txSignature,
|
|
114
|
-
txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${confirmedTx.txSignature}`,
|
|
115
|
-
});
|
|
116
|
-
if (isBridgeExecution) {
|
|
117
|
-
process = this.statusManager.updateProcess(step, process.type, 'DONE');
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
catch (e) {
|
|
121
|
-
const error = await (0, parseSolanaErrors_js_1.parseSolanaErrors)(e, step, process);
|
|
122
|
-
process = this.statusManager.updateProcess(step, process.type, 'FAILED', {
|
|
123
|
-
error: {
|
|
124
|
-
message: error.cause.message,
|
|
125
|
-
code: error.code,
|
|
126
|
-
},
|
|
127
|
-
});
|
|
128
|
-
this.statusManager.updateExecution(step, 'FAILED');
|
|
129
|
-
throw error;
|
|
130
|
-
}
|
|
82
|
+
process = this.statusManager.updateProcess(step, process.type, 'PENDING');
|
|
83
|
+
const simulationResult = await (0, connection_js_1.callSolanaWithRetry)((connection) => connection.simulateTransaction(signedTx, {
|
|
84
|
+
commitment: 'confirmed',
|
|
85
|
+
replaceRecentBlockhash: true,
|
|
86
|
+
}));
|
|
87
|
+
if (simulationResult.value.err) {
|
|
88
|
+
throw new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.TransactionSimulationFailed, 'Transaction simulation failed');
|
|
89
|
+
}
|
|
90
|
+
const confirmedTx = await (0, sendAndConfirmTransaction_js_1.sendAndConfirmTransaction)(signedTx);
|
|
91
|
+
if (!confirmedTx.signatureResult) {
|
|
92
|
+
throw new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.TransactionExpired, 'Transaction has expired: The block height has exceeded the maximum allowed limit.');
|
|
93
|
+
}
|
|
94
|
+
if (confirmedTx.signatureResult.err) {
|
|
95
|
+
const reason = typeof confirmedTx.signatureResult.err === 'object'
|
|
96
|
+
? JSON.stringify(confirmedTx.signatureResult.err)
|
|
97
|
+
: confirmedTx.signatureResult.err;
|
|
98
|
+
throw new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.TransactionFailed, `Transaction failed: ${reason}`);
|
|
99
|
+
}
|
|
100
|
+
process = this.statusManager.updateProcess(step, process.type, 'PENDING', {
|
|
101
|
+
txHash: confirmedTx.txSignature,
|
|
102
|
+
txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${confirmedTx.txSignature}`,
|
|
103
|
+
});
|
|
104
|
+
if (isBridgeExecution) {
|
|
105
|
+
process = this.statusManager.updateProcess(step, process.type, 'DONE');
|
|
131
106
|
}
|
|
132
|
-
await (0, waitForDestinationChainTransaction_js_1.waitForDestinationChainTransaction)(step, process, fromChain, toChain, this.statusManager);
|
|
133
|
-
return step;
|
|
134
107
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
108
|
+
catch (e) {
|
|
109
|
+
const error = await (0, parseSolanaErrors_js_1.parseSolanaErrors)(e, step, process);
|
|
110
|
+
process = this.statusManager.updateProcess(step, process.type, 'FAILED', {
|
|
111
|
+
error: {
|
|
112
|
+
message: error.cause.message,
|
|
113
|
+
code: error.code,
|
|
114
|
+
},
|
|
115
|
+
});
|
|
116
|
+
this.statusManager.updateExecution(step, 'FAILED');
|
|
117
|
+
throw error;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
await (0, waitForDestinationChainTransaction_js_1.waitForDestinationChainTransaction)(step, process, fromChain, toChain, this.statusManager);
|
|
121
|
+
return step;
|
|
122
|
+
};
|
|
138
123
|
}
|
|
139
124
|
exports.SolanaStepExecutor = SolanaStepExecutor;
|
|
140
125
|
//# sourceMappingURL=SolanaStepExecutor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolanaStepExecutor.js","sourceRoot":"","sources":["../../../core/Solana/SolanaStepExecutor.ts"],"names":[],"mappings":";;;AAEA,6CAAsD;AACtD,+BAAkC;AAClC,+CAAwC;AACxC,4DAAyD;AACzD,sDAAyD;AACzD,kDAA0D;AAC1D,6EAAsE;AACtE,gEAAyD;AACzD,wDAAiD;AACjD,4DAAqD;AAMrD,oGAA6F;AAC7F,mDAAqD;AACrD,iEAA0D;AAC1D,iFAA0E;AAM1E,MAAa,kBAAmB,SAAQ,sCAAgB;
|
|
1
|
+
{"version":3,"file":"SolanaStepExecutor.js","sourceRoot":"","sources":["../../../core/Solana/SolanaStepExecutor.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,144 +4,27 @@ exports.StatusManager = void 0;
|
|
|
4
4
|
const executionState_js_1 = require("./executionState.js");
|
|
5
5
|
const processMessages_js_1 = require("./processMessages.js");
|
|
6
6
|
class StatusManager {
|
|
7
|
+
routeId;
|
|
8
|
+
shouldUpdate = true;
|
|
7
9
|
constructor(routeId) {
|
|
8
|
-
Object.defineProperty(this, "routeId", {
|
|
9
|
-
enumerable: true,
|
|
10
|
-
configurable: true,
|
|
11
|
-
writable: true,
|
|
12
|
-
value: void 0
|
|
13
|
-
});
|
|
14
|
-
Object.defineProperty(this, "shouldUpdate", {
|
|
15
|
-
enumerable: true,
|
|
16
|
-
configurable: true,
|
|
17
|
-
writable: true,
|
|
18
|
-
value: true
|
|
19
|
-
});
|
|
20
|
-
Object.defineProperty(this, "initExecutionObject", {
|
|
21
|
-
enumerable: true,
|
|
22
|
-
configurable: true,
|
|
23
|
-
writable: true,
|
|
24
|
-
value: (step) => {
|
|
25
|
-
if (!step.execution) {
|
|
26
|
-
step.execution = {
|
|
27
|
-
status: 'PENDING',
|
|
28
|
-
process: [],
|
|
29
|
-
startedAt: Date.now(),
|
|
30
|
-
};
|
|
31
|
-
this.updateStepInRoute(step);
|
|
32
|
-
}
|
|
33
|
-
if (step.execution.status === 'FAILED') {
|
|
34
|
-
step.execution.startedAt = Date.now();
|
|
35
|
-
step.execution.status = 'PENDING';
|
|
36
|
-
this.updateStepInRoute(step);
|
|
37
|
-
}
|
|
38
|
-
return step.execution;
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
Object.defineProperty(this, "findOrCreateProcess", {
|
|
42
|
-
enumerable: true,
|
|
43
|
-
configurable: true,
|
|
44
|
-
writable: true,
|
|
45
|
-
value: ({ step, type, chainId, status, }) => {
|
|
46
|
-
const process = this.findProcess(step, type, status);
|
|
47
|
-
if (process) {
|
|
48
|
-
return process;
|
|
49
|
-
}
|
|
50
|
-
const newProcess = {
|
|
51
|
-
type: type,
|
|
52
|
-
startedAt: Date.now(),
|
|
53
|
-
message: (0, processMessages_js_1.getProcessMessage)(type, status ?? 'STARTED'),
|
|
54
|
-
status: status ?? 'STARTED',
|
|
55
|
-
chainId: chainId,
|
|
56
|
-
};
|
|
57
|
-
step.execution.process.push(newProcess);
|
|
58
|
-
this.updateStepInRoute(step);
|
|
59
|
-
return newProcess;
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
Object.defineProperty(this, "updateProcess", {
|
|
63
|
-
enumerable: true,
|
|
64
|
-
configurable: true,
|
|
65
|
-
writable: true,
|
|
66
|
-
value: (step, type, status, params) => {
|
|
67
|
-
if (!step.execution) {
|
|
68
|
-
throw new Error("Can't update an empty step execution.");
|
|
69
|
-
}
|
|
70
|
-
const currentProcess = this.findProcess(step, type);
|
|
71
|
-
if (!currentProcess) {
|
|
72
|
-
throw new Error("Can't find a process for the given type.");
|
|
73
|
-
}
|
|
74
|
-
switch (status) {
|
|
75
|
-
case 'CANCELLED':
|
|
76
|
-
currentProcess.doneAt = Date.now();
|
|
77
|
-
break;
|
|
78
|
-
case 'FAILED':
|
|
79
|
-
currentProcess.doneAt = Date.now();
|
|
80
|
-
step.execution.status = 'FAILED';
|
|
81
|
-
break;
|
|
82
|
-
case 'DONE':
|
|
83
|
-
currentProcess.doneAt = Date.now();
|
|
84
|
-
break;
|
|
85
|
-
case 'PENDING':
|
|
86
|
-
step.execution.status = 'PENDING';
|
|
87
|
-
break;
|
|
88
|
-
case 'ACTION_REQUIRED':
|
|
89
|
-
step.execution.status = 'ACTION_REQUIRED';
|
|
90
|
-
break;
|
|
91
|
-
default:
|
|
92
|
-
break;
|
|
93
|
-
}
|
|
94
|
-
currentProcess.status = status;
|
|
95
|
-
currentProcess.message = (0, processMessages_js_1.getProcessMessage)(type, status);
|
|
96
|
-
if (params) {
|
|
97
|
-
for (const [key, value] of Object.entries(params)) {
|
|
98
|
-
currentProcess[key] = value;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
step.execution.process = [
|
|
102
|
-
...step.execution.process.filter((process) => process.status === 'DONE'),
|
|
103
|
-
...step.execution.process.filter((process) => process.status !== 'DONE'),
|
|
104
|
-
];
|
|
105
|
-
this.updateStepInRoute(step);
|
|
106
|
-
return currentProcess;
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
Object.defineProperty(this, "removeProcess", {
|
|
110
|
-
enumerable: true,
|
|
111
|
-
configurable: true,
|
|
112
|
-
writable: true,
|
|
113
|
-
value: (step, type) => {
|
|
114
|
-
if (!step.execution) {
|
|
115
|
-
throw new Error("Execution hasn't been initialized.");
|
|
116
|
-
}
|
|
117
|
-
const index = step.execution.process.findIndex((p) => p.type === type);
|
|
118
|
-
step.execution.process.splice(index, 1);
|
|
119
|
-
this.updateStepInRoute(step);
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
Object.defineProperty(this, "updateStepInRoute", {
|
|
123
|
-
enumerable: true,
|
|
124
|
-
configurable: true,
|
|
125
|
-
writable: true,
|
|
126
|
-
value: (step) => {
|
|
127
|
-
if (!this.shouldUpdate) {
|
|
128
|
-
return step;
|
|
129
|
-
}
|
|
130
|
-
const data = executionState_js_1.executionState.get(this.routeId);
|
|
131
|
-
if (!data) {
|
|
132
|
-
throw new Error('Execution data not found.');
|
|
133
|
-
}
|
|
134
|
-
const stepIndex = data.route.steps.findIndex((routeStep) => routeStep.id === step.id);
|
|
135
|
-
if (stepIndex === -1) {
|
|
136
|
-
throw new Error("Couldn't find a step to update.");
|
|
137
|
-
}
|
|
138
|
-
data.route.steps[stepIndex] = { ...data.route.steps[stepIndex], ...step };
|
|
139
|
-
data.executionOptions?.updateRouteHook?.(data.route);
|
|
140
|
-
return data.route.steps[stepIndex];
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
10
|
this.routeId = routeId;
|
|
144
11
|
}
|
|
12
|
+
initExecutionObject = (step) => {
|
|
13
|
+
if (!step.execution) {
|
|
14
|
+
step.execution = {
|
|
15
|
+
status: 'PENDING',
|
|
16
|
+
process: [],
|
|
17
|
+
startedAt: Date.now(),
|
|
18
|
+
};
|
|
19
|
+
this.updateStepInRoute(step);
|
|
20
|
+
}
|
|
21
|
+
if (step.execution.status === 'FAILED') {
|
|
22
|
+
step.execution.startedAt = Date.now();
|
|
23
|
+
step.execution.status = 'PENDING';
|
|
24
|
+
this.updateStepInRoute(step);
|
|
25
|
+
}
|
|
26
|
+
return step.execution;
|
|
27
|
+
};
|
|
145
28
|
updateExecution(step, status, execution) {
|
|
146
29
|
if (!step.execution) {
|
|
147
30
|
throw Error("Can't update empty execution.");
|
|
@@ -170,6 +53,88 @@ class StatusManager {
|
|
|
170
53
|
}
|
|
171
54
|
return process;
|
|
172
55
|
}
|
|
56
|
+
findOrCreateProcess = ({ step, type, chainId, status, }) => {
|
|
57
|
+
const process = this.findProcess(step, type, status);
|
|
58
|
+
if (process) {
|
|
59
|
+
return process;
|
|
60
|
+
}
|
|
61
|
+
const newProcess = {
|
|
62
|
+
type: type,
|
|
63
|
+
startedAt: Date.now(),
|
|
64
|
+
message: (0, processMessages_js_1.getProcessMessage)(type, status ?? 'STARTED'),
|
|
65
|
+
status: status ?? 'STARTED',
|
|
66
|
+
chainId: chainId,
|
|
67
|
+
};
|
|
68
|
+
step.execution.process.push(newProcess);
|
|
69
|
+
this.updateStepInRoute(step);
|
|
70
|
+
return newProcess;
|
|
71
|
+
};
|
|
72
|
+
updateProcess = (step, type, status, params) => {
|
|
73
|
+
if (!step.execution) {
|
|
74
|
+
throw new Error("Can't update an empty step execution.");
|
|
75
|
+
}
|
|
76
|
+
const currentProcess = this.findProcess(step, type);
|
|
77
|
+
if (!currentProcess) {
|
|
78
|
+
throw new Error("Can't find a process for the given type.");
|
|
79
|
+
}
|
|
80
|
+
switch (status) {
|
|
81
|
+
case 'CANCELLED':
|
|
82
|
+
currentProcess.doneAt = Date.now();
|
|
83
|
+
break;
|
|
84
|
+
case 'FAILED':
|
|
85
|
+
currentProcess.doneAt = Date.now();
|
|
86
|
+
step.execution.status = 'FAILED';
|
|
87
|
+
break;
|
|
88
|
+
case 'DONE':
|
|
89
|
+
currentProcess.doneAt = Date.now();
|
|
90
|
+
break;
|
|
91
|
+
case 'PENDING':
|
|
92
|
+
step.execution.status = 'PENDING';
|
|
93
|
+
break;
|
|
94
|
+
case 'ACTION_REQUIRED':
|
|
95
|
+
step.execution.status = 'ACTION_REQUIRED';
|
|
96
|
+
break;
|
|
97
|
+
default:
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
currentProcess.status = status;
|
|
101
|
+
currentProcess.message = (0, processMessages_js_1.getProcessMessage)(type, status);
|
|
102
|
+
if (params) {
|
|
103
|
+
for (const [key, value] of Object.entries(params)) {
|
|
104
|
+
currentProcess[key] = value;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
step.execution.process = [
|
|
108
|
+
...step.execution.process.filter((process) => process.status === 'DONE'),
|
|
109
|
+
...step.execution.process.filter((process) => process.status !== 'DONE'),
|
|
110
|
+
];
|
|
111
|
+
this.updateStepInRoute(step);
|
|
112
|
+
return currentProcess;
|
|
113
|
+
};
|
|
114
|
+
removeProcess = (step, type) => {
|
|
115
|
+
if (!step.execution) {
|
|
116
|
+
throw new Error("Execution hasn't been initialized.");
|
|
117
|
+
}
|
|
118
|
+
const index = step.execution.process.findIndex((p) => p.type === type);
|
|
119
|
+
step.execution.process.splice(index, 1);
|
|
120
|
+
this.updateStepInRoute(step);
|
|
121
|
+
};
|
|
122
|
+
updateStepInRoute = (step) => {
|
|
123
|
+
if (!this.shouldUpdate) {
|
|
124
|
+
return step;
|
|
125
|
+
}
|
|
126
|
+
const data = executionState_js_1.executionState.get(this.routeId);
|
|
127
|
+
if (!data) {
|
|
128
|
+
throw new Error('Execution data not found.');
|
|
129
|
+
}
|
|
130
|
+
const stepIndex = data.route.steps.findIndex((routeStep) => routeStep.id === step.id);
|
|
131
|
+
if (stepIndex === -1) {
|
|
132
|
+
throw new Error("Couldn't find a step to update.");
|
|
133
|
+
}
|
|
134
|
+
data.route.steps[stepIndex] = { ...data.route.steps[stepIndex], ...step };
|
|
135
|
+
data.executionOptions?.updateRouteHook?.(data.route);
|
|
136
|
+
return data.route.steps[stepIndex];
|
|
137
|
+
};
|
|
173
138
|
allowUpdates(value) {
|
|
174
139
|
this.shouldUpdate = value;
|
|
175
140
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusManager.js","sourceRoot":"","sources":["../../core/StatusManager.ts"],"names":[],"mappings":";;;AACA,2DAAoD;AACpD,6DAAwD;AAsBxD,MAAa,aAAa;
|
|
1
|
+
{"version":3,"file":"StatusManager.js","sourceRoot":"","sources":["../../core/StatusManager.ts"],"names":[],"mappings":"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"}
|