@ledgerhq/evm-tools 1.3.1-nightly.0 → 1.4.0-nightly.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/.turbo/turbo-build.log +2 -2
- package/CHANGELOG.md +17 -3
- package/lib/message/EIP712/index.d.ts.map +1 -1
- package/lib/message/EIP712/index.js +13 -32
- package/lib/message/EIP712/index.js.map +1 -1
- package/lib-es/message/EIP712/index.d.ts.map +1 -1
- package/lib-es/message/EIP712/index.js +13 -32
- package/lib-es/message/EIP712/index.js.map +1 -1
- package/package.json +7 -7
- package/src/__tests__/messages/EIP712/index.unit.test.ts +55 -1
- package/src/message/EIP712/index.ts +8 -1
- package/tsconfig.json +0 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
> @ledgerhq/evm-tools@1.3.
|
|
3
|
-
> tsc && tsc -m
|
|
2
|
+
> @ledgerhq/evm-tools@1.3.1 build /home/runner/work/ledger-live/ledger-live/libs/evm-tools
|
|
3
|
+
> tsc && tsc -m esnext --moduleResolution bundler --outDir lib-es
|
|
4
4
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,26 @@
|
|
|
1
1
|
# @ledgerhq/evm-tools
|
|
2
2
|
|
|
3
|
-
## 1.
|
|
3
|
+
## 1.4.0-nightly.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#9120](https://github.com/LedgerHQ/ledger-live/pull/9120) [`551f2cc`](https://github.com/LedgerHQ/ledger-live/commit/551f2ccad6d7897a010d39110c0ba9336d407dfd) Thanks [@chrisduma-ledger](https://github.com/chrisduma-ledger)! - Fixes Lido triggering blind message
|
|
8
|
+
|
|
9
|
+
## 1.3.1
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [[`d98a964`](https://github.com/LedgerHQ/ledger-live/commit/d98a96476c3d44eab1575f6c7c58ec03b5daf890)]:
|
|
14
|
+
- @ledgerhq/live-env@2.5.0
|
|
15
|
+
- @ledgerhq/cryptoassets-evm-signatures@13.5.3
|
|
16
|
+
|
|
17
|
+
## 1.3.1-next.0
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
|
6
20
|
|
|
7
21
|
- Updated dependencies [[`d98a964`](https://github.com/LedgerHQ/ledger-live/commit/d98a96476c3d44eab1575f6c7c58ec03b5daf890)]:
|
|
8
|
-
- @ledgerhq/live-env@2.5.0-
|
|
9
|
-
- @ledgerhq/cryptoassets-evm-signatures@13.5.3-
|
|
22
|
+
- @ledgerhq/live-env@2.5.0-next.0
|
|
23
|
+
- @ledgerhq/cryptoassets-evm-signatures@13.5.3-next.0
|
|
10
24
|
|
|
11
25
|
## 1.3.0
|
|
12
26
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/message/EIP712/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAKrD,OAAO,EAA4B,cAAc,EAAE,MAAM,SAAS,CAAC;AAGnE,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,aAAa,CAS1E;AAED,eAAO,MAAM,wBAAwB,QAAS,OAAO,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,MAAM,EAAE,OAAO,CAgB7F,CAAC;AAEF,eAAO,MAAM,uBAAuB,YAAa,aAAa,KAAG,MAKhE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,YACtB,aAAa,uBACD,OAAO,kBACZ,MAAM,GAAG,IAAI,KAC5B,QAAQ,cAAc,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/message/EIP712/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAKrD,OAAO,EAA4B,cAAc,EAAE,MAAM,SAAS,CAAC;AAGnE,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,aAAa,CAS1E;AAED,eAAO,MAAM,wBAAwB,QAAS,OAAO,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,MAAM,EAAE,OAAO,CAgB7F,CAAC;AAEF,eAAO,MAAM,uBAAuB,YAAa,aAAa,KAAG,MAKhE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,YACtB,aAAa,uBACD,OAAO,kBACZ,MAAM,GAAG,IAAI,KAC5B,QAAQ,cAAc,GAAG,SAAS,CAuCpC,CAAC;AA4BF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,SAAU,MAAM,iBAAiB,aAAa,KAAG,MAAM,GAAG,MAAM,EAmB5F,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,8BAA8B,gBAC5B,aAAa,kBACX,MAAM,KACpB,QAAQ;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,EAAE,GAAG,IAAI,CAwE9D,CAAC"}
|
|
@@ -1,24 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
12
|
-
var t = {};
|
|
13
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
14
|
-
t[p] = s[p];
|
|
15
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
16
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
17
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
18
|
-
t[p[i]] = s[p[i]];
|
|
19
|
-
}
|
|
20
|
-
return t;
|
|
21
|
-
};
|
|
22
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
23
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
4
|
};
|
|
@@ -68,21 +48,22 @@ exports.getSchemaHashForMessage = getSchemaHashForMessage;
|
|
|
68
48
|
* @param {EIP712Message} message
|
|
69
49
|
* @returns {MessageFilters | undefined}
|
|
70
50
|
*/
|
|
71
|
-
const getFiltersForMessage = (message, shouldUseV1Filters, calServiceURL) =>
|
|
72
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
51
|
+
const getFiltersForMessage = async (message, shouldUseV1Filters, calServiceURL) => {
|
|
73
52
|
const schemaHash = (0, exports.getSchemaHashForMessage)(message);
|
|
74
|
-
const verifyingContract =
|
|
53
|
+
const verifyingContract = message.domain?.verifyingContract?.toLowerCase() || constants_1.AddressZero;
|
|
75
54
|
try {
|
|
76
55
|
if (calServiceURL) {
|
|
77
|
-
const { data } =
|
|
56
|
+
const { data } = await axios_1.default.get(`${calServiceURL}/v1/dapps`, {
|
|
78
57
|
params: {
|
|
79
58
|
output: "eip712_signatures",
|
|
80
59
|
eip712_signatures_version: shouldUseV1Filters ? "v1" : "v2",
|
|
81
|
-
chain_id:
|
|
60
|
+
chain_id: message.domain?.chainId,
|
|
82
61
|
contracts: verifyingContract,
|
|
83
62
|
},
|
|
84
63
|
});
|
|
85
|
-
|
|
64
|
+
// Rather than relying on array indices, find the right object wherever it may be, if it exists
|
|
65
|
+
const targetObject = data.find(item => item?.eip712_signatures?.[verifyingContract]?.[schemaHash]);
|
|
66
|
+
const filters = targetObject?.eip712_signatures?.[verifyingContract]?.[schemaHash];
|
|
86
67
|
if (!filters) {
|
|
87
68
|
// Fallback to catch
|
|
88
69
|
throw new Error("Fallback to static file");
|
|
@@ -93,13 +74,13 @@ const getFiltersForMessage = (message, shouldUseV1Filters, calServiceURL) => __a
|
|
|
93
74
|
throw new Error("Fallback to static file");
|
|
94
75
|
}
|
|
95
76
|
catch (e) {
|
|
96
|
-
const messageId = `${
|
|
77
|
+
const messageId = `${message.domain?.chainId ?? 0}:${verifyingContract}:${schemaHash}`;
|
|
97
78
|
if (shouldUseV1Filters) {
|
|
98
79
|
return eip712_1.default[messageId];
|
|
99
80
|
}
|
|
100
81
|
return eip712_v2_1.default[messageId];
|
|
101
82
|
}
|
|
102
|
-
}
|
|
83
|
+
};
|
|
103
84
|
exports.getFiltersForMessage = getFiltersForMessage;
|
|
104
85
|
/**
|
|
105
86
|
* Get the value at a specific path of an object and return it as a string or as an array of string
|
|
@@ -146,13 +127,13 @@ exports.getValueFromPath = getValueFromPath;
|
|
|
146
127
|
/**
|
|
147
128
|
* Gets the fields visible on the nano for a specific EIP712 message
|
|
148
129
|
*/
|
|
149
|
-
const getEIP712FieldsDisplayedOnNano =
|
|
130
|
+
const getEIP712FieldsDisplayedOnNano = async (messageData, calServiceURL = (0, live_env_1.getEnv)("CAL_SERVICE_URL")) => {
|
|
150
131
|
if (!isEIP712Message(messageData)) {
|
|
151
132
|
return null;
|
|
152
133
|
}
|
|
153
|
-
const
|
|
134
|
+
const { EIP712Domain, ...otherTypes } = messageData.types;
|
|
154
135
|
const displayedInfos = [];
|
|
155
|
-
const filters =
|
|
136
|
+
const filters = await (0, exports.getFiltersForMessage)(messageData, false, calServiceURL);
|
|
156
137
|
if (!filters) {
|
|
157
138
|
const { types } = messageData;
|
|
158
139
|
const domainFields = types["EIP712Domain"].map(({ name }) => name);
|
|
@@ -206,6 +187,6 @@ const getEIP712FieldsDisplayedOnNano = (messageData_1, ...args_1) => __awaiter(v
|
|
|
206
187
|
});
|
|
207
188
|
}
|
|
208
189
|
return displayedInfos;
|
|
209
|
-
}
|
|
190
|
+
};
|
|
210
191
|
exports.getEIP712FieldsDisplayedOnNano = getEIP712FieldsDisplayedOnNano;
|
|
211
192
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/message/EIP712/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/message/EIP712/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/message/EIP712/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAKrD,OAAO,EAA4B,cAAc,EAAE,MAAM,SAAS,CAAC;AAGnE,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,aAAa,CAS1E;AAED,eAAO,MAAM,wBAAwB,QAAS,OAAO,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,MAAM,EAAE,OAAO,CAgB7F,CAAC;AAEF,eAAO,MAAM,uBAAuB,YAAa,aAAa,KAAG,MAKhE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,YACtB,aAAa,uBACD,OAAO,kBACZ,MAAM,GAAG,IAAI,KAC5B,QAAQ,cAAc,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/message/EIP712/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAKrD,OAAO,EAA4B,cAAc,EAAE,MAAM,SAAS,CAAC;AAGnE,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,aAAa,CAS1E;AAED,eAAO,MAAM,wBAAwB,QAAS,OAAO,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,MAAM,EAAE,OAAO,CAgB7F,CAAC;AAEF,eAAO,MAAM,uBAAuB,YAAa,aAAa,KAAG,MAKhE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,YACtB,aAAa,uBACD,OAAO,kBACZ,MAAM,GAAG,IAAI,KAC5B,QAAQ,cAAc,GAAG,SAAS,CAuCpC,CAAC;AA4BF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,SAAU,MAAM,iBAAiB,aAAa,KAAG,MAAM,GAAG,MAAM,EAmB5F,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,8BAA8B,gBAC5B,aAAa,kBACX,MAAM,KACpB,QAAQ;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,EAAE,GAAG,IAAI,CAwE9D,CAAC"}
|
|
@@ -1,23 +1,3 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
11
|
-
var t = {};
|
|
12
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
13
|
-
t[p] = s[p];
|
|
14
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
15
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
16
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
17
|
-
t[p[i]] = s[p[i]];
|
|
18
|
-
}
|
|
19
|
-
return t;
|
|
20
|
-
};
|
|
21
1
|
import axios from "axios";
|
|
22
2
|
import SHA224 from "crypto-js/sha224";
|
|
23
3
|
import { getEnv } from "@ledgerhq/live-env";
|
|
@@ -59,21 +39,22 @@ export const getSchemaHashForMessage = (message) => {
|
|
|
59
39
|
* @param {EIP712Message} message
|
|
60
40
|
* @returns {MessageFilters | undefined}
|
|
61
41
|
*/
|
|
62
|
-
export const getFiltersForMessage = (message, shouldUseV1Filters, calServiceURL) =>
|
|
63
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
42
|
+
export const getFiltersForMessage = async (message, shouldUseV1Filters, calServiceURL) => {
|
|
64
43
|
const schemaHash = getSchemaHashForMessage(message);
|
|
65
|
-
const verifyingContract =
|
|
44
|
+
const verifyingContract = message.domain?.verifyingContract?.toLowerCase() || AddressZero;
|
|
66
45
|
try {
|
|
67
46
|
if (calServiceURL) {
|
|
68
|
-
const { data } =
|
|
47
|
+
const { data } = await axios.get(`${calServiceURL}/v1/dapps`, {
|
|
69
48
|
params: {
|
|
70
49
|
output: "eip712_signatures",
|
|
71
50
|
eip712_signatures_version: shouldUseV1Filters ? "v1" : "v2",
|
|
72
|
-
chain_id:
|
|
51
|
+
chain_id: message.domain?.chainId,
|
|
73
52
|
contracts: verifyingContract,
|
|
74
53
|
},
|
|
75
54
|
});
|
|
76
|
-
|
|
55
|
+
// Rather than relying on array indices, find the right object wherever it may be, if it exists
|
|
56
|
+
const targetObject = data.find(item => item?.eip712_signatures?.[verifyingContract]?.[schemaHash]);
|
|
57
|
+
const filters = targetObject?.eip712_signatures?.[verifyingContract]?.[schemaHash];
|
|
77
58
|
if (!filters) {
|
|
78
59
|
// Fallback to catch
|
|
79
60
|
throw new Error("Fallback to static file");
|
|
@@ -84,13 +65,13 @@ export const getFiltersForMessage = (message, shouldUseV1Filters, calServiceURL)
|
|
|
84
65
|
throw new Error("Fallback to static file");
|
|
85
66
|
}
|
|
86
67
|
catch (e) {
|
|
87
|
-
const messageId = `${
|
|
68
|
+
const messageId = `${message.domain?.chainId ?? 0}:${verifyingContract}:${schemaHash}`;
|
|
88
69
|
if (shouldUseV1Filters) {
|
|
89
70
|
return EIP712CAL[messageId];
|
|
90
71
|
}
|
|
91
72
|
return EIP712CALV2[messageId];
|
|
92
73
|
}
|
|
93
|
-
}
|
|
74
|
+
};
|
|
94
75
|
/**
|
|
95
76
|
* Get the value at a specific path of an object and return it as a string or as an array of string
|
|
96
77
|
* Used recursively by getValueFromPath
|
|
@@ -135,13 +116,13 @@ export const getValueFromPath = (path, eip721Message) => {
|
|
|
135
116
|
/**
|
|
136
117
|
* Gets the fields visible on the nano for a specific EIP712 message
|
|
137
118
|
*/
|
|
138
|
-
export const getEIP712FieldsDisplayedOnNano =
|
|
119
|
+
export const getEIP712FieldsDisplayedOnNano = async (messageData, calServiceURL = getEnv("CAL_SERVICE_URL")) => {
|
|
139
120
|
if (!isEIP712Message(messageData)) {
|
|
140
121
|
return null;
|
|
141
122
|
}
|
|
142
|
-
const
|
|
123
|
+
const { EIP712Domain, ...otherTypes } = messageData.types;
|
|
143
124
|
const displayedInfos = [];
|
|
144
|
-
const filters =
|
|
125
|
+
const filters = await getFiltersForMessage(messageData, false, calServiceURL);
|
|
145
126
|
if (!filters) {
|
|
146
127
|
const { types } = messageData;
|
|
147
128
|
const domainFields = types["EIP712Domain"].map(({ name }) => name);
|
|
@@ -195,5 +176,5 @@ export const getEIP712FieldsDisplayedOnNano = (messageData_1, ...args_1) => __aw
|
|
|
195
176
|
});
|
|
196
177
|
}
|
|
197
178
|
return displayedInfos;
|
|
198
|
-
}
|
|
179
|
+
};
|
|
199
180
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/message/EIP712/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/message/EIP712/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ledgerhq/evm-tools",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0-nightly.0",
|
|
4
4
|
"description": "EVM tooling used for coin integrations & app bindings",
|
|
5
5
|
"main": "./index.ts",
|
|
6
6
|
"keywords": [
|
|
@@ -49,24 +49,24 @@
|
|
|
49
49
|
"@ethersproject/hash": "^5.7.0",
|
|
50
50
|
"axios": "1.7.7",
|
|
51
51
|
"crypto-js": "4.2.0",
|
|
52
|
-
"@ledgerhq/cryptoassets-evm-signatures": "^13.5.3
|
|
53
|
-
"@ledgerhq/live-env": "^2.5.0
|
|
52
|
+
"@ledgerhq/cryptoassets-evm-signatures": "^13.5.3",
|
|
53
|
+
"@ledgerhq/live-env": "^2.5.0"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@types/axios": "^0.14.0",
|
|
57
57
|
"@types/crypto-js": "^4.1.1",
|
|
58
58
|
"@types/jest": "^29.5.10",
|
|
59
|
-
"@types/node": "^
|
|
59
|
+
"@types/node": "^22.10.10",
|
|
60
60
|
"jest": "^29.7.0",
|
|
61
61
|
"ts-jest": "^29.1.1",
|
|
62
|
-
"@ledgerhq/types-live": "^6.
|
|
62
|
+
"@ledgerhq/types-live": "^6.59.0"
|
|
63
63
|
},
|
|
64
64
|
"scripts": {
|
|
65
65
|
"clean": "rimraf lib lib-es",
|
|
66
|
-
"build": "tsc && tsc -m
|
|
66
|
+
"build": "tsc && tsc -m esnext --moduleResolution bundler --outDir lib-es",
|
|
67
67
|
"prewatch": "pnpm build",
|
|
68
68
|
"watch": "tsc --watch",
|
|
69
|
-
"watch:es": "tsc --watch -m
|
|
69
|
+
"watch:es": "tsc --watch -m esnext --moduleResolution bundler --outDir lib-es",
|
|
70
70
|
"doc": "documentation readme src/** --section=API --pe ts --re ts --re d.ts",
|
|
71
71
|
"lint": "eslint ./src --no-error-on-unmatched-pattern --ext .ts,.tsx --cache",
|
|
72
72
|
"lint:fix": "pnpm lint --fix",
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
isEIP712Message,
|
|
6
6
|
sortObjectAlphabetically,
|
|
7
7
|
} from "../../../message/EIP712/index";
|
|
8
|
-
import { dynamicCAL, messageNotInCAL } from "../../fixtures/dynamicCAL";
|
|
8
|
+
import { dynamicCAL, messageNotInCAL, messageNotInCALSchemaHash } from "../../fixtures/dynamicCAL";
|
|
9
9
|
import complexMessage from "../../fixtures/messages/5.json";
|
|
10
10
|
import messageInCAL from "../../fixtures/messages/2.json";
|
|
11
11
|
|
|
@@ -64,6 +64,60 @@ describe("evm-tools", () => {
|
|
|
64
64
|
}),
|
|
65
65
|
).toBe(true);
|
|
66
66
|
});
|
|
67
|
+
it("should find filters when matching data is not in first position of array", async () => {
|
|
68
|
+
const dynamicCALWithMultipleItems = [
|
|
69
|
+
{ eip712_signatures: { "0xdifferentContract": { differentHash: "wrong" } } },
|
|
70
|
+
{
|
|
71
|
+
eip712_signatures: {
|
|
72
|
+
[messageNotInCAL.domain.verifyingContract.toLowerCase()]: {
|
|
73
|
+
[messageNotInCALSchemaHash]: "found",
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
];
|
|
78
|
+
|
|
79
|
+
(axios.get as jest.Mock).mockReturnValueOnce({
|
|
80
|
+
data: dynamicCALWithMultipleItems,
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
const result = await getFiltersForMessage(messageNotInCAL, false, "http://CAL-ADDRESS");
|
|
84
|
+
expect(result).toEqual("found");
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
it("should handle empty eip712_signatures objects in array", async () => {
|
|
88
|
+
const dynamicCALWithEmptyItems = [
|
|
89
|
+
{ eip712_signatures: {} },
|
|
90
|
+
{
|
|
91
|
+
eip712_signatures: {
|
|
92
|
+
[messageNotInCAL.domain.verifyingContract.toLowerCase()]: {
|
|
93
|
+
[messageNotInCALSchemaHash]: "found",
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
];
|
|
98
|
+
|
|
99
|
+
(axios.get as jest.Mock).mockReturnValueOnce({
|
|
100
|
+
data: dynamicCALWithEmptyItems,
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
const result = await getFiltersForMessage(messageNotInCAL, false, "http://CAL-ADDRESS");
|
|
104
|
+
expect(result).toEqual("found");
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
it("should fallback to static file when no matching data found in any array position", async () => {
|
|
108
|
+
const dynamicCALWithNoMatch = [
|
|
109
|
+
{ eip712_signatures: { "0xcontract1": { hash1: "wrong1" } } },
|
|
110
|
+
{ eip712_signatures: { "0xcontract2": { hash2: "wrong2" } } },
|
|
111
|
+
];
|
|
112
|
+
|
|
113
|
+
(axios.get as jest.Mock).mockReturnValueOnce({
|
|
114
|
+
data: dynamicCALWithNoMatch,
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
const result = await getFiltersForMessage(messageInCAL, false, "http://CAL-ADDRESS");
|
|
118
|
+
const schemaHash = "d8e4f2bd77f7562e99ea5df4adb127291a2bfbc225ae55450038f27f";
|
|
119
|
+
expect(result).toEqual(CAL[`1:0x7f268357a8c2552623316e2562d90e642bb538e5:${schemaHash}`]);
|
|
120
|
+
});
|
|
67
121
|
});
|
|
68
122
|
|
|
69
123
|
describe("sortlphabetically", () => {
|
|
@@ -58,6 +58,7 @@ export const getFiltersForMessage = async (
|
|
|
58
58
|
calServiceURL?: string | null,
|
|
59
59
|
): Promise<MessageFilters | undefined> => {
|
|
60
60
|
const schemaHash = getSchemaHashForMessage(message);
|
|
61
|
+
|
|
61
62
|
const verifyingContract = message.domain?.verifyingContract?.toLowerCase() || AddressZero;
|
|
62
63
|
try {
|
|
63
64
|
if (calServiceURL) {
|
|
@@ -70,7 +71,13 @@ export const getFiltersForMessage = async (
|
|
|
70
71
|
},
|
|
71
72
|
});
|
|
72
73
|
|
|
73
|
-
|
|
74
|
+
// Rather than relying on array indices, find the right object wherever it may be, if it exists
|
|
75
|
+
const targetObject = data.find(
|
|
76
|
+
item => item?.eip712_signatures?.[verifyingContract]?.[schemaHash],
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
const filters = targetObject?.eip712_signatures?.[verifyingContract]?.[schemaHash];
|
|
80
|
+
|
|
74
81
|
if (!filters) {
|
|
75
82
|
// Fallback to catch
|
|
76
83
|
throw new Error("Fallback to static file");
|