@exodus/web3-ethereum-utils 4.0.0 → 4.1.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.
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { tryParsingSIWE } from '@exodus/web3-utils';
|
|
1
2
|
import assert from 'minimalistic-assert';
|
|
2
3
|
import { getMessageType } from './simulation/getMessageType.js';
|
|
3
4
|
import { simulateMessage } from './simulation/simulateMessage.js';
|
|
4
|
-
import { tryParsingSIWE } from './simulation/tryParsingSIWE.js';
|
|
5
5
|
export const createSimulateMessage = ({ apiEndpoint = 'https://simulation.a.exodus.io/simulateMessage', headers = {
|
|
6
6
|
'X-Api-Version': '2023-06-05',
|
|
7
7
|
}, } = {}) => async ({ message, url, asset, address, }) => {
|
|
@@ -14,12 +14,14 @@ export const createSimulateMessage = ({ apiEndpoint = 'https://simulation.a.exod
|
|
|
14
14
|
if (messageType === 2 /* MessageTypeEnum.Unknown */) {
|
|
15
15
|
return simulationResult;
|
|
16
16
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
if (messageType === 0 /* MessageTypeEnum.RawMessage */) {
|
|
18
|
+
tryParsingSIWE({
|
|
19
|
+
address,
|
|
20
|
+
message,
|
|
21
|
+
url,
|
|
22
|
+
simulationResult,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
23
25
|
await simulateMessage({
|
|
24
26
|
address,
|
|
25
27
|
message: {
|
|
@@ -153,13 +153,12 @@ export const simulateTransactions = async ({ transactions, apiEndpoint, origin,
|
|
|
153
153
|
simulationResult.metadata.simulatedLocally = false;
|
|
154
154
|
const { expectedStateChanges = {}, error } = response.simulationResults.aggregated;
|
|
155
155
|
if (error) {
|
|
156
|
-
const { humanReadableError } = response.simulationResults.aggregated;
|
|
157
156
|
// ToDo: accept a logger dep and log the error
|
|
158
157
|
// ToDo: consider pushing an error to the "warnings" list
|
|
159
158
|
return {
|
|
160
159
|
kind: 'error',
|
|
161
160
|
error: 1 /* SimulationErrorMessages.SimulationFailed */,
|
|
162
|
-
errorMessage: humanReadableError
|
|
161
|
+
errorMessage: error?.humanReadableError,
|
|
163
162
|
};
|
|
164
163
|
}
|
|
165
164
|
const noExpectedStateChangesDetected = Object.keys(expectedStateChanges).length === 0;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@exodus/web3-ethereum-utils",
|
|
3
3
|
"description": "Web3 Ethereum utils.",
|
|
4
|
-
"version": "4.
|
|
4
|
+
"version": "4.1.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
7
7
|
"module": "lib/index.js",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@exodus/basic-utils": "^3.0.1",
|
|
41
41
|
"@exodus/ethereumjs": "^1.0.0",
|
|
42
|
-
"@exodus/web3-utils": "^1.
|
|
42
|
+
"@exodus/web3-utils": "^1.49.0",
|
|
43
43
|
"@metamask/eth-sig-util": "^4.0.1",
|
|
44
44
|
"minimalistic-assert": "^1.0.1"
|
|
45
45
|
},
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
"url": "https://github.com/ExodusMovement/assets/issues?q=is%3Aissue+is%3Aopen+label%3Aweb3-ethereum-utils"
|
|
49
49
|
},
|
|
50
50
|
"homepage": "https://github.com/ExodusMovement/assets/tree/master/web3/web3-ethereum-utils",
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "f6e9ee7f3ee6ec75e5e774aa6cd1d7eb8a032a43"
|
|
52
52
|
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { MessageTypeEnum } from './getMessageType.js';
|
|
2
|
-
import type { MessageSimulationResult } from '@exodus/web3-types';
|
|
3
|
-
export declare const tryParsingSIWE: ({ message, messageType, url, simulationResult, }: {
|
|
4
|
-
message: string;
|
|
5
|
-
messageType: MessageTypeEnum;
|
|
6
|
-
url: URL;
|
|
7
|
-
simulationResult: MessageSimulationResult;
|
|
8
|
-
}) => void;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export const tryParsingSIWE = ({ message, messageType, url, simulationResult, }) => {
|
|
2
|
-
if (messageType === 1 /* MessageTypeEnum.TypedData */) {
|
|
3
|
-
return;
|
|
4
|
-
}
|
|
5
|
-
/*
|
|
6
|
-
Some dApps don't comply with EIP-4361 and use their custom Sign-In messages. This code block detects such known custom SIWE messages.
|
|
7
|
-
*/
|
|
8
|
-
if (url.hostname === 'rarible.com' &&
|
|
9
|
-
message.includes('I want to login on Rarible')) {
|
|
10
|
-
simulationResult.kind = {
|
|
11
|
-
kind: 'SIWE',
|
|
12
|
-
info: {
|
|
13
|
-
date: new Date(),
|
|
14
|
-
statement: 'I accept the Rarible Terms of Service https://static.rarible.com/terms.pdf and I am at least 13 years old.',
|
|
15
|
-
},
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
// TODO: add proper EIP-4361 parsing.
|
|
19
|
-
return;
|
|
20
|
-
};
|