@ledgerhq/hw-app-eth 6.31.0 → 6.32.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/CHANGELOG.md +13 -0
- package/README.md +1 -13
- package/lib/services/ledger/erc20.d.ts +2 -6
- package/lib/services/ledger/erc20.d.ts.map +1 -1
- package/lib/services/ledger/erc20.js +23 -37
- package/lib/services/ledger/erc20.js.map +1 -1
- package/lib/services/ledger/index.d.ts.map +1 -1
- package/lib/services/ledger/index.js +1 -1
- package/lib/services/ledger/index.js.map +1 -1
- package/lib-es/services/ledger/erc20.d.ts +2 -6
- package/lib-es/services/ledger/erc20.d.ts.map +1 -1
- package/lib-es/services/ledger/erc20.js +22 -35
- package/lib-es/services/ledger/erc20.js.map +1 -1
- package/lib-es/services/ledger/index.d.ts.map +1 -1
- package/lib-es/services/ledger/index.js +1 -1
- package/lib-es/services/ledger/index.js.map +1 -1
- package/package.json +4 -4
- package/src/services/ledger/erc20.ts +35 -38
- package/src/services/ledger/index.ts +4 -1
- package/tests/ERC20/ERC20-CAL-KO.unit.test.ts +53 -33
- package/tests/fixtures/SignatureCALEth.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @ledgerhq/hw-app-eth
|
|
2
2
|
|
|
3
|
+
## 6.32.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#2328](https://github.com/LedgerHQ/ledger-live/pull/2328) [`0725151a34`](https://github.com/LedgerHQ/ledger-live/commit/0725151a348608bec1f8338b57772f12a23cb471) Thanks [@lambertkevin](https://github.com/lambertkevin)! - Updated consummed CAL files for the new chain id based approach from @ledger/cryptoassets
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [[`0725151a34`](https://github.com/LedgerHQ/ledger-live/commit/0725151a348608bec1f8338b57772f12a23cb471), [`cec9e0f33d`](https://github.com/LedgerHQ/ledger-live/commit/cec9e0f33d5bc058c0e4b3a2680fc8791d5b61b1), [`62af25493e`](https://github.com/LedgerHQ/ledger-live/commit/62af25493e2becf897d517af42542db208b971c7), [`725000b4ed`](https://github.com/LedgerHQ/ledger-live/commit/725000b4ed37a2669f3a0cd70ca2b5d0b1d4825e)]:
|
|
12
|
+
- @ledgerhq/cryptoassets@9.0.0
|
|
13
|
+
- @ledgerhq/hw-transport@6.28.1
|
|
14
|
+
- @ledgerhq/hw-transport-mocker@6.27.12
|
|
15
|
+
|
|
3
16
|
## 6.31.0
|
|
4
17
|
|
|
5
18
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -77,8 +77,6 @@ For a smooth and quick integration:
|
|
|
77
77
|
* [Parameters](#parameters-18)
|
|
78
78
|
* [byContractAddressAndChainId](#bycontractaddressandchainid)
|
|
79
79
|
* [Parameters](#parameters-19)
|
|
80
|
-
* [list](#list)
|
|
81
|
-
* [Parameters](#parameters-20)
|
|
82
80
|
* [ResolutionConfig](#resolutionconfig)
|
|
83
81
|
* [Properties](#properties)
|
|
84
82
|
|
|
@@ -454,17 +452,7 @@ Retrieve the token information by a given contract address if any
|
|
|
454
452
|
* `chainId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)**
|
|
455
453
|
* `erc20SignaturesBlob` **([string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | null)?**
|
|
456
454
|
|
|
457
|
-
Returns **
|
|
458
|
-
|
|
459
|
-
### list
|
|
460
|
-
|
|
461
|
-
list all the ERC20 tokens informations
|
|
462
|
-
|
|
463
|
-
#### Parameters
|
|
464
|
-
|
|
465
|
-
* `erc20SignaturesBlob` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?**
|
|
466
|
-
|
|
467
|
-
Returns **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)\<TokenInfo>**
|
|
455
|
+
Returns **ReturnType\<any>**
|
|
468
456
|
|
|
469
457
|
### ResolutionConfig
|
|
470
458
|
|
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { LoadConfig } from "../types";
|
|
3
|
-
export declare const findERC20SignaturesInfo: (userLoadConfig: LoadConfig) => Promise<string | null>;
|
|
3
|
+
export declare const findERC20SignaturesInfo: (userLoadConfig: LoadConfig, chainId: number) => Promise<string | null>;
|
|
4
4
|
/**
|
|
5
5
|
* Retrieve the token information by a given contract address if any
|
|
6
6
|
*/
|
|
7
|
-
export declare const byContractAddressAndChainId: (contract: string, chainId: number, erc20SignaturesBlob?: string | null | undefined) =>
|
|
8
|
-
/**
|
|
9
|
-
* list all the ERC20 tokens informations
|
|
10
|
-
*/
|
|
11
|
-
export declare const list: (erc20SignaturesBlob?: string | undefined) => TokenInfo[];
|
|
7
|
+
export declare const byContractAddressAndChainId: (contract: string, chainId: number, erc20SignaturesBlob?: string | null | undefined) => ReturnType<API["byContractAndChainId"]>;
|
|
12
8
|
export declare type TokenInfo = {
|
|
13
9
|
contractAddress: string;
|
|
14
10
|
ticker: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"erc20.d.ts","sourceRoot":"","sources":["../../../src/services/ledger/erc20.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"erc20.d.ts","sourceRoot":"","sources":["../../../src/services/ledger/erc20.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAOtC,eAAO,MAAM,uBAAuB,mBAClB,UAAU,WACjB,MAAM,KACd,QAAQ,MAAM,GAAG,IAAI,CAqBvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B,aAC5B,MAAM,WACP,MAAM,sDAEd,WAAW,GAAG,CAAC,sBAAsB,CAAC,CAqBxC,CAAC;AAEF,oBAAY,SAAS,GAAG;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AACF,oBAAY,GAAG,GAAG;IAChB,oBAAoB,EAAE,CACpB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,KACP,SAAS,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,IAAI,EAAE,MAAM,SAAS,EAAE,CAAC;CACzB,CAAC"}
|
|
@@ -39,12 +39,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
39
39
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
40
|
};
|
|
41
41
|
exports.__esModule = true;
|
|
42
|
-
exports.
|
|
43
|
-
var erc20_signatures_1 = __importDefault(require("@ledgerhq/cryptoassets/data/erc20-signatures"));
|
|
44
|
-
var logs_1 = require("@ledgerhq/logs");
|
|
42
|
+
exports.byContractAddressAndChainId = exports.findERC20SignaturesInfo = void 0;
|
|
45
43
|
var axios_1 = __importDefault(require("axios"));
|
|
44
|
+
var logs_1 = require("@ledgerhq/logs");
|
|
45
|
+
var index_1 = require("@ledgerhq/cryptoassets/data/evm/index");
|
|
46
46
|
var loadConfig_1 = require("./loadConfig");
|
|
47
|
-
var
|
|
47
|
+
var asContractAddress = function (addr) {
|
|
48
|
+
var a = addr.toLowerCase();
|
|
49
|
+
return a.startsWith("0x") ? a : "0x" + a;
|
|
50
|
+
};
|
|
51
|
+
var findERC20SignaturesInfo = function (userLoadConfig, chainId) { return __awaiter(void 0, void 0, void 0, function () {
|
|
48
52
|
var cryptoassetsBaseURL, url, blob;
|
|
49
53
|
return __generator(this, function (_a) {
|
|
50
54
|
switch (_a.label) {
|
|
@@ -52,13 +56,13 @@ var findERC20SignaturesInfo = function (userLoadConfig) { return __awaiter(void
|
|
|
52
56
|
cryptoassetsBaseURL = (0, loadConfig_1.getLoadConfig)(userLoadConfig).cryptoassetsBaseURL;
|
|
53
57
|
if (!cryptoassetsBaseURL)
|
|
54
58
|
return [2 /*return*/, null];
|
|
55
|
-
url = "".concat(cryptoassetsBaseURL, "/erc20-signatures.json");
|
|
59
|
+
url = "".concat(cryptoassetsBaseURL, "/evm/").concat(chainId, "/erc20-signatures.json");
|
|
56
60
|
return [4 /*yield*/, axios_1["default"]
|
|
57
61
|
.get(url)
|
|
58
62
|
.then(function (_a) {
|
|
59
63
|
var data = _a.data;
|
|
60
64
|
if (!data || typeof data !== "string") {
|
|
61
|
-
throw new Error("ERC20 signatures file is malformed ".concat(url));
|
|
65
|
+
throw new Error("ERC20 signatures for chainId ".concat(chainId, " file is malformed ").concat(url));
|
|
62
66
|
}
|
|
63
67
|
return data;
|
|
64
68
|
})["catch"](function (e) {
|
|
@@ -76,40 +80,20 @@ exports.findERC20SignaturesInfo = findERC20SignaturesInfo;
|
|
|
76
80
|
* Retrieve the token information by a given contract address if any
|
|
77
81
|
*/
|
|
78
82
|
var byContractAddressAndChainId = function (contract, chainId, erc20SignaturesBlob) {
|
|
83
|
+
var _a, _b;
|
|
79
84
|
// If we are able to fetch data from s3 bucket that contains dynamic CAL
|
|
80
85
|
if (erc20SignaturesBlob) {
|
|
81
86
|
try {
|
|
82
87
|
return parse(erc20SignaturesBlob).byContractAndChainId(asContractAddress(contract), chainId);
|
|
83
88
|
}
|
|
84
89
|
catch (e) {
|
|
85
|
-
return get().byContractAndChainId(asContractAddress(contract), chainId);
|
|
90
|
+
return (_a = get(chainId)) === null || _a === void 0 ? void 0 : _a.byContractAndChainId(asContractAddress(contract), chainId);
|
|
86
91
|
}
|
|
87
92
|
}
|
|
88
93
|
// the static fallback when dynamic cal is not provided
|
|
89
|
-
return get().byContractAndChainId(asContractAddress(contract), chainId);
|
|
94
|
+
return (_b = get(chainId)) === null || _b === void 0 ? void 0 : _b.byContractAndChainId(asContractAddress(contract), chainId);
|
|
90
95
|
};
|
|
91
96
|
exports.byContractAddressAndChainId = byContractAddressAndChainId;
|
|
92
|
-
/**
|
|
93
|
-
* list all the ERC20 tokens informations
|
|
94
|
-
*/
|
|
95
|
-
var list = function (erc20SignaturesBlob) {
|
|
96
|
-
// If we are able to fetch data from s3 bucket that contains dynamic CAL
|
|
97
|
-
if (erc20SignaturesBlob) {
|
|
98
|
-
try {
|
|
99
|
-
return parse(erc20SignaturesBlob).list();
|
|
100
|
-
}
|
|
101
|
-
catch (e) {
|
|
102
|
-
return get().list();
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
// the static fallback when dynamic cal is not provided
|
|
106
|
-
return get().list();
|
|
107
|
-
};
|
|
108
|
-
exports.list = list;
|
|
109
|
-
var asContractAddress = function (addr) {
|
|
110
|
-
var a = addr.toLowerCase();
|
|
111
|
-
return a.startsWith("0x") ? a : "0x" + a;
|
|
112
|
-
};
|
|
113
97
|
var parse = function (erc20SignaturesBlob) {
|
|
114
98
|
var buf = Buffer.from(erc20SignaturesBlob, "base64");
|
|
115
99
|
var map = {};
|
|
@@ -143,22 +127,24 @@ var parse = function (erc20SignaturesBlob) {
|
|
|
143
127
|
map[String(chainId) + ":" + contractAddress] = entry;
|
|
144
128
|
i += length_1;
|
|
145
129
|
}
|
|
146
|
-
|
|
130
|
+
return {
|
|
147
131
|
list: function () { return entries; },
|
|
148
132
|
byContractAndChainId: function (contractAddress, chainId) {
|
|
149
133
|
return map[String(chainId) + ":" + contractAddress];
|
|
150
134
|
}
|
|
151
135
|
};
|
|
152
|
-
return api;
|
|
153
136
|
};
|
|
154
137
|
// this internal get() will lazy load and cache the data from the erc20 data blob
|
|
155
138
|
var get = (function () {
|
|
156
|
-
var cache;
|
|
157
|
-
return function () {
|
|
158
|
-
if (cache)
|
|
159
|
-
return cache;
|
|
160
|
-
var
|
|
161
|
-
|
|
139
|
+
var cache = {};
|
|
140
|
+
return function (chainId) {
|
|
141
|
+
if (cache[chainId])
|
|
142
|
+
return cache[chainId];
|
|
143
|
+
var signatureBlob = index_1.signatures[chainId];
|
|
144
|
+
if (!signatureBlob)
|
|
145
|
+
return null;
|
|
146
|
+
var api = parse(signatureBlob);
|
|
147
|
+
cache[chainId] = api;
|
|
162
148
|
return api;
|
|
163
149
|
};
|
|
164
150
|
})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"erc20.js","sourceRoot":"","sources":["../../../src/services/ledger/erc20.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"erc20.js","sourceRoot":"","sources":["../../../src/services/ledger/erc20.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/ledger/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,2BAA2B,EAE5B,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/ledger/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,2BAA2B,EAE5B,MAAM,UAAU,CAAC;AAsLlB,QAAA,MAAM,aAAa,EAAE,2BAqCpB,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -88,7 +88,7 @@ var getAdditionalDataForContract = function (contractAddress, chainIdTruncated,
|
|
|
88
88
|
_a.label = 2;
|
|
89
89
|
case 2:
|
|
90
90
|
if (!shouldResolve.token) return [3 /*break*/, 4];
|
|
91
|
-
return [4 /*yield*/, (0, erc20_1.findERC20SignaturesInfo)(loadConfig)];
|
|
91
|
+
return [4 /*yield*/, (0, erc20_1.findERC20SignaturesInfo)(loadConfig, chainIdTruncated)];
|
|
92
92
|
case 3:
|
|
93
93
|
erc20SignaturesBlob = _a.sent();
|
|
94
94
|
erc20Info = (0, erc20_1.byContractAddressAndChainId)(contractAddress, chainIdTruncated, erc20SignaturesBlob);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/ledger/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yEAAyE;AACzE,uCAAqC;AACrC,0CAA+C;AAO/C,yCAAyD;AACzD,iCAA+E;AAC/E,+BAAmD;AACnD,qCAKqB;AAQrB;;;;;;GAMG;AACH,IAAM,4BAA4B,GAAG,UACnC,eAAuB,EACvB,gBAAwB,EACxB,UAAsB,EACtB,aAAmC;;;;;gBAE7B,UAAU,GAGZ;oBACF,IAAI,EAAE,EAAE;oBACR,WAAW,EAAE,EAAE;iBAChB,CAAC;qBAEE,aAAa,CAAC,GAAG,EAAjB,wBAAiB;gBACH,qBAAM,IAAA,iBAAU,EAC9B,eAAe,EACf,gBAAgB,EAChB,UAAU,CACX,EAAA;;gBAJK,OAAO,GAAG,SAIf;gBAED,IAAI,OAAO,EAAE;oBACX,IAAA,UAAG,EACD,UAAU,EACV,sBAAsB;wBACpB,OAAO,CAAC,eAAe;wBACvB,IAAI;wBACJ,OAAO,CAAC,cAAc;wBACtB,GAAG,CACN,CAAC;oBACF,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBACpC;qBAAM;oBACL,IAAA,UAAG,EAAC,UAAU,EAAE,6BAA6B,GAAG,eAAe,CAAC,CAAC;iBAClE;;;qBAGC,aAAa,CAAC,KAAK,EAAnB,wBAAmB;gBACO,qBAAM,IAAA,+BAAuB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/ledger/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { LoadConfig } from "../types";
|
|
3
|
-
export declare const findERC20SignaturesInfo: (userLoadConfig: LoadConfig) => Promise<string | null>;
|
|
3
|
+
export declare const findERC20SignaturesInfo: (userLoadConfig: LoadConfig, chainId: number) => Promise<string | null>;
|
|
4
4
|
/**
|
|
5
5
|
* Retrieve the token information by a given contract address if any
|
|
6
6
|
*/
|
|
7
|
-
export declare const byContractAddressAndChainId: (contract: string, chainId: number, erc20SignaturesBlob?: string | null | undefined) =>
|
|
8
|
-
/**
|
|
9
|
-
* list all the ERC20 tokens informations
|
|
10
|
-
*/
|
|
11
|
-
export declare const list: (erc20SignaturesBlob?: string | undefined) => TokenInfo[];
|
|
7
|
+
export declare const byContractAddressAndChainId: (contract: string, chainId: number, erc20SignaturesBlob?: string | null | undefined) => ReturnType<API["byContractAndChainId"]>;
|
|
12
8
|
export declare type TokenInfo = {
|
|
13
9
|
contractAddress: string;
|
|
14
10
|
ticker: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"erc20.d.ts","sourceRoot":"","sources":["../../../src/services/ledger/erc20.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"erc20.d.ts","sourceRoot":"","sources":["../../../src/services/ledger/erc20.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAOtC,eAAO,MAAM,uBAAuB,mBAClB,UAAU,WACjB,MAAM,KACd,QAAQ,MAAM,GAAG,IAAI,CAqBvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B,aAC5B,MAAM,WACP,MAAM,sDAEd,WAAW,GAAG,CAAC,sBAAsB,CAAC,CAqBxC,CAAC;AAEF,oBAAY,SAAS,GAAG;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AACF,oBAAY,GAAG,GAAG;IAChB,oBAAoB,EAAE,CACpB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,KACP,SAAS,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,IAAI,EAAE,MAAM,SAAS,EAAE,CAAC;CACzB,CAAC"}
|
|
@@ -34,11 +34,15 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
34
34
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
35
|
}
|
|
36
36
|
};
|
|
37
|
-
import blob from "@ledgerhq/cryptoassets/data/erc20-signatures";
|
|
38
|
-
import { log } from "@ledgerhq/logs";
|
|
39
37
|
import axios from "axios";
|
|
38
|
+
import { log } from "@ledgerhq/logs";
|
|
39
|
+
import { signatures as signaturesByChainId } from "@ledgerhq/cryptoassets/data/evm/index";
|
|
40
40
|
import { getLoadConfig } from "./loadConfig";
|
|
41
|
-
|
|
41
|
+
var asContractAddress = function (addr) {
|
|
42
|
+
var a = addr.toLowerCase();
|
|
43
|
+
return a.startsWith("0x") ? a : "0x" + a;
|
|
44
|
+
};
|
|
45
|
+
export var findERC20SignaturesInfo = function (userLoadConfig, chainId) { return __awaiter(void 0, void 0, void 0, function () {
|
|
42
46
|
var cryptoassetsBaseURL, url, blob;
|
|
43
47
|
return __generator(this, function (_a) {
|
|
44
48
|
switch (_a.label) {
|
|
@@ -46,13 +50,13 @@ export var findERC20SignaturesInfo = function (userLoadConfig) { return __awaite
|
|
|
46
50
|
cryptoassetsBaseURL = getLoadConfig(userLoadConfig).cryptoassetsBaseURL;
|
|
47
51
|
if (!cryptoassetsBaseURL)
|
|
48
52
|
return [2 /*return*/, null];
|
|
49
|
-
url = "".concat(cryptoassetsBaseURL, "/erc20-signatures.json");
|
|
53
|
+
url = "".concat(cryptoassetsBaseURL, "/evm/").concat(chainId, "/erc20-signatures.json");
|
|
50
54
|
return [4 /*yield*/, axios
|
|
51
55
|
.get(url)
|
|
52
56
|
.then(function (_a) {
|
|
53
57
|
var data = _a.data;
|
|
54
58
|
if (!data || typeof data !== "string") {
|
|
55
|
-
throw new Error("ERC20 signatures file is malformed ".concat(url));
|
|
59
|
+
throw new Error("ERC20 signatures for chainId ".concat(chainId, " file is malformed ").concat(url));
|
|
56
60
|
}
|
|
57
61
|
return data;
|
|
58
62
|
})["catch"](function (e) {
|
|
@@ -69,37 +73,18 @@ export var findERC20SignaturesInfo = function (userLoadConfig) { return __awaite
|
|
|
69
73
|
* Retrieve the token information by a given contract address if any
|
|
70
74
|
*/
|
|
71
75
|
export var byContractAddressAndChainId = function (contract, chainId, erc20SignaturesBlob) {
|
|
76
|
+
var _a, _b;
|
|
72
77
|
// If we are able to fetch data from s3 bucket that contains dynamic CAL
|
|
73
78
|
if (erc20SignaturesBlob) {
|
|
74
79
|
try {
|
|
75
80
|
return parse(erc20SignaturesBlob).byContractAndChainId(asContractAddress(contract), chainId);
|
|
76
81
|
}
|
|
77
82
|
catch (e) {
|
|
78
|
-
return get().byContractAndChainId(asContractAddress(contract), chainId);
|
|
83
|
+
return (_a = get(chainId)) === null || _a === void 0 ? void 0 : _a.byContractAndChainId(asContractAddress(contract), chainId);
|
|
79
84
|
}
|
|
80
85
|
}
|
|
81
86
|
// the static fallback when dynamic cal is not provided
|
|
82
|
-
return get().byContractAndChainId(asContractAddress(contract), chainId);
|
|
83
|
-
};
|
|
84
|
-
/**
|
|
85
|
-
* list all the ERC20 tokens informations
|
|
86
|
-
*/
|
|
87
|
-
export var list = function (erc20SignaturesBlob) {
|
|
88
|
-
// If we are able to fetch data from s3 bucket that contains dynamic CAL
|
|
89
|
-
if (erc20SignaturesBlob) {
|
|
90
|
-
try {
|
|
91
|
-
return parse(erc20SignaturesBlob).list();
|
|
92
|
-
}
|
|
93
|
-
catch (e) {
|
|
94
|
-
return get().list();
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
// the static fallback when dynamic cal is not provided
|
|
98
|
-
return get().list();
|
|
99
|
-
};
|
|
100
|
-
var asContractAddress = function (addr) {
|
|
101
|
-
var a = addr.toLowerCase();
|
|
102
|
-
return a.startsWith("0x") ? a : "0x" + a;
|
|
87
|
+
return (_b = get(chainId)) === null || _b === void 0 ? void 0 : _b.byContractAndChainId(asContractAddress(contract), chainId);
|
|
103
88
|
};
|
|
104
89
|
var parse = function (erc20SignaturesBlob) {
|
|
105
90
|
var buf = Buffer.from(erc20SignaturesBlob, "base64");
|
|
@@ -134,22 +119,24 @@ var parse = function (erc20SignaturesBlob) {
|
|
|
134
119
|
map[String(chainId) + ":" + contractAddress] = entry;
|
|
135
120
|
i += length_1;
|
|
136
121
|
}
|
|
137
|
-
|
|
122
|
+
return {
|
|
138
123
|
list: function () { return entries; },
|
|
139
124
|
byContractAndChainId: function (contractAddress, chainId) {
|
|
140
125
|
return map[String(chainId) + ":" + contractAddress];
|
|
141
126
|
}
|
|
142
127
|
};
|
|
143
|
-
return api;
|
|
144
128
|
};
|
|
145
129
|
// this internal get() will lazy load and cache the data from the erc20 data blob
|
|
146
130
|
var get = (function () {
|
|
147
|
-
var cache;
|
|
148
|
-
return function () {
|
|
149
|
-
if (cache)
|
|
150
|
-
return cache;
|
|
151
|
-
var
|
|
152
|
-
|
|
131
|
+
var cache = {};
|
|
132
|
+
return function (chainId) {
|
|
133
|
+
if (cache[chainId])
|
|
134
|
+
return cache[chainId];
|
|
135
|
+
var signatureBlob = signaturesByChainId[chainId];
|
|
136
|
+
if (!signatureBlob)
|
|
137
|
+
return null;
|
|
138
|
+
var api = parse(signatureBlob);
|
|
139
|
+
cache[chainId] = api;
|
|
153
140
|
return api;
|
|
154
141
|
};
|
|
155
142
|
})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"erc20.js","sourceRoot":"","sources":["../../../src/services/ledger/erc20.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"erc20.js","sourceRoot":"","sources":["../../../src/services/ledger/erc20.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/ledger/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,2BAA2B,EAE5B,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/ledger/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,2BAA2B,EAE5B,MAAM,UAAU,CAAC;AAsLlB,QAAA,MAAM,aAAa,EAAE,2BAqCpB,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -86,7 +86,7 @@ var getAdditionalDataForContract = function (contractAddress, chainIdTruncated,
|
|
|
86
86
|
_a.label = 2;
|
|
87
87
|
case 2:
|
|
88
88
|
if (!shouldResolve.token) return [3 /*break*/, 4];
|
|
89
|
-
return [4 /*yield*/, findERC20SignaturesInfo(loadConfig)];
|
|
89
|
+
return [4 /*yield*/, findERC20SignaturesInfo(loadConfig, chainIdTruncated)];
|
|
90
90
|
case 3:
|
|
91
91
|
erc20SignaturesBlob = _a.sent();
|
|
92
92
|
erc20Info = byContractAddressAndChainId(contractAddress, chainIdTruncated, erc20SignaturesBlob);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/ledger/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yEAAyE;AACzE,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAO/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACnD,OAAO,EACL,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAQrB;;;;;;GAMG;AACH,IAAM,4BAA4B,GAAG,UACnC,eAAuB,EACvB,gBAAwB,EACxB,UAAsB,EACtB,aAAmC;;;;;gBAE7B,UAAU,GAGZ;oBACF,IAAI,EAAE,EAAE;oBACR,WAAW,EAAE,EAAE;iBAChB,CAAC;qBAEE,aAAa,CAAC,GAAG,EAAjB,wBAAiB;gBACH,qBAAM,UAAU,CAC9B,eAAe,EACf,gBAAgB,EAChB,UAAU,CACX,EAAA;;gBAJK,OAAO,GAAG,SAIf;gBAED,IAAI,OAAO,EAAE;oBACX,GAAG,CACD,UAAU,EACV,sBAAsB;wBACpB,OAAO,CAAC,eAAe;wBACvB,IAAI;wBACJ,OAAO,CAAC,cAAc;wBACtB,GAAG,CACN,CAAC;oBACF,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBACpC;qBAAM;oBACL,GAAG,CAAC,UAAU,EAAE,6BAA6B,GAAG,eAAe,CAAC,CAAC;iBAClE;;;qBAGC,aAAa,CAAC,KAAK,EAAnB,wBAAmB;gBACO,qBAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/ledger/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ledgerhq/hw-app-eth",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.32.0",
|
|
4
4
|
"description": "Ledger Hardware Wallet Ethereum Application API",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Ledger",
|
|
@@ -32,10 +32,10 @@
|
|
|
32
32
|
"axios": "^0.26.1",
|
|
33
33
|
"bignumber.js": "^9.1.0",
|
|
34
34
|
"crypto-js": "^4.1.1",
|
|
35
|
-
"@ledgerhq/cryptoassets": "^
|
|
35
|
+
"@ledgerhq/cryptoassets": "^9.0.0",
|
|
36
36
|
"@ledgerhq/errors": "^6.12.3",
|
|
37
|
-
"@ledgerhq/hw-transport": "^6.28.
|
|
38
|
-
"@ledgerhq/hw-transport-mocker": "^6.27.
|
|
37
|
+
"@ledgerhq/hw-transport": "^6.28.1",
|
|
38
|
+
"@ledgerhq/hw-transport-mocker": "^6.27.12",
|
|
39
39
|
"@ledgerhq/logs": "^6.10.1"
|
|
40
40
|
},
|
|
41
41
|
"gitHead": "dd0dea64b58e5a9125c8a422dcffd29e5ef6abec",
|
|
@@ -1,21 +1,29 @@
|
|
|
1
|
-
import blob from "@ledgerhq/cryptoassets/data/erc20-signatures";
|
|
2
|
-
import { log } from "@ledgerhq/logs";
|
|
3
1
|
import axios from "axios";
|
|
4
|
-
import {
|
|
2
|
+
import { log } from "@ledgerhq/logs";
|
|
3
|
+
import { signatures as signaturesByChainId } from "@ledgerhq/cryptoassets/data/evm/index";
|
|
5
4
|
import { getLoadConfig } from "./loadConfig";
|
|
5
|
+
import { LoadConfig } from "../types";
|
|
6
|
+
|
|
7
|
+
const asContractAddress = (addr: string) => {
|
|
8
|
+
const a = addr.toLowerCase();
|
|
9
|
+
return a.startsWith("0x") ? a : "0x" + a;
|
|
10
|
+
};
|
|
6
11
|
|
|
7
12
|
export const findERC20SignaturesInfo = async (
|
|
8
|
-
userLoadConfig: LoadConfig
|
|
13
|
+
userLoadConfig: LoadConfig,
|
|
14
|
+
chainId: number
|
|
9
15
|
): Promise<string | null> => {
|
|
10
16
|
const { cryptoassetsBaseURL } = getLoadConfig(userLoadConfig);
|
|
11
17
|
if (!cryptoassetsBaseURL) return null;
|
|
12
18
|
|
|
13
|
-
const url = `${cryptoassetsBaseURL}/erc20-signatures.json`;
|
|
19
|
+
const url = `${cryptoassetsBaseURL}/evm/${chainId}/erc20-signatures.json`;
|
|
14
20
|
const blob = await axios
|
|
15
21
|
.get<string>(url)
|
|
16
22
|
.then(({ data }) => {
|
|
17
23
|
if (!data || typeof data !== "string") {
|
|
18
|
-
throw new Error(
|
|
24
|
+
throw new Error(
|
|
25
|
+
`ERC20 signatures for chainId ${chainId} file is malformed ${url}`
|
|
26
|
+
);
|
|
19
27
|
}
|
|
20
28
|
return data;
|
|
21
29
|
})
|
|
@@ -34,7 +42,7 @@ export const byContractAddressAndChainId = (
|
|
|
34
42
|
contract: string,
|
|
35
43
|
chainId: number,
|
|
36
44
|
erc20SignaturesBlob?: string | null
|
|
37
|
-
):
|
|
45
|
+
): ReturnType<API["byContractAndChainId"]> => {
|
|
38
46
|
// If we are able to fetch data from s3 bucket that contains dynamic CAL
|
|
39
47
|
if (erc20SignaturesBlob) {
|
|
40
48
|
try {
|
|
@@ -43,27 +51,18 @@ export const byContractAddressAndChainId = (
|
|
|
43
51
|
chainId
|
|
44
52
|
);
|
|
45
53
|
} catch (e) {
|
|
46
|
-
return get()
|
|
54
|
+
return get(chainId)?.byContractAndChainId(
|
|
55
|
+
asContractAddress(contract),
|
|
56
|
+
chainId
|
|
57
|
+
);
|
|
47
58
|
}
|
|
48
59
|
}
|
|
49
|
-
// the static fallback when dynamic cal is not provided
|
|
50
|
-
return get().byContractAndChainId(asContractAddress(contract), chainId);
|
|
51
|
-
};
|
|
52
60
|
|
|
53
|
-
/**
|
|
54
|
-
* list all the ERC20 tokens informations
|
|
55
|
-
*/
|
|
56
|
-
export const list = (erc20SignaturesBlob?: string): TokenInfo[] => {
|
|
57
|
-
// If we are able to fetch data from s3 bucket that contains dynamic CAL
|
|
58
|
-
if (erc20SignaturesBlob) {
|
|
59
|
-
try {
|
|
60
|
-
return parse(erc20SignaturesBlob).list();
|
|
61
|
-
} catch (e) {
|
|
62
|
-
return get().list();
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
61
|
// the static fallback when dynamic cal is not provided
|
|
66
|
-
return get()
|
|
62
|
+
return get(chainId)?.byContractAndChainId(
|
|
63
|
+
asContractAddress(contract),
|
|
64
|
+
chainId
|
|
65
|
+
);
|
|
67
66
|
};
|
|
68
67
|
|
|
69
68
|
export type TokenInfo = {
|
|
@@ -82,12 +81,7 @@ export type API = {
|
|
|
82
81
|
list: () => TokenInfo[];
|
|
83
82
|
};
|
|
84
83
|
|
|
85
|
-
const
|
|
86
|
-
const a = addr.toLowerCase();
|
|
87
|
-
return a.startsWith("0x") ? a : "0x" + a;
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
const parse = (erc20SignaturesBlob: string) => {
|
|
84
|
+
const parse = (erc20SignaturesBlob: string): API => {
|
|
91
85
|
const buf = Buffer.from(erc20SignaturesBlob, "base64");
|
|
92
86
|
const map = {};
|
|
93
87
|
const entries: TokenInfo[] = [];
|
|
@@ -124,21 +118,24 @@ const parse = (erc20SignaturesBlob: string) => {
|
|
|
124
118
|
i += length;
|
|
125
119
|
}
|
|
126
120
|
|
|
127
|
-
|
|
121
|
+
return {
|
|
128
122
|
list: () => entries,
|
|
129
123
|
byContractAndChainId: (contractAddress, chainId) =>
|
|
130
124
|
map[String(chainId) + ":" + contractAddress],
|
|
131
125
|
};
|
|
132
|
-
return api;
|
|
133
126
|
};
|
|
134
127
|
|
|
135
128
|
// this internal get() will lazy load and cache the data from the erc20 data blob
|
|
136
|
-
const get: () => API = (() => {
|
|
137
|
-
|
|
138
|
-
return () => {
|
|
139
|
-
if (cache) return cache;
|
|
140
|
-
|
|
141
|
-
|
|
129
|
+
const get: (chainId: number) => API | null = (() => {
|
|
130
|
+
const cache: Record<number, API> = {};
|
|
131
|
+
return (chainId) => {
|
|
132
|
+
if (cache[chainId]) return cache[chainId];
|
|
133
|
+
|
|
134
|
+
const signatureBlob: string | undefined = signaturesByChainId[chainId];
|
|
135
|
+
if (!signatureBlob) return null;
|
|
136
|
+
|
|
137
|
+
const api = parse(signatureBlob);
|
|
138
|
+
cache[chainId] = api;
|
|
142
139
|
return api;
|
|
143
140
|
};
|
|
144
141
|
})();
|
|
@@ -67,7 +67,10 @@ const getAdditionalDataForContract = async (
|
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
if (shouldResolve.token) {
|
|
70
|
-
const erc20SignaturesBlob = await findERC20SignaturesInfo(
|
|
70
|
+
const erc20SignaturesBlob = await findERC20SignaturesInfo(
|
|
71
|
+
loadConfig,
|
|
72
|
+
chainIdTruncated
|
|
73
|
+
);
|
|
71
74
|
const erc20Info = byContractAddressAndChainId(
|
|
72
75
|
contractAddress,
|
|
73
76
|
chainIdTruncated,
|