@ledgerhq/hw-app-eth 6.21.3 → 6.22.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/README.md +51 -100
- package/erc20.js +1 -1
- package/lib/Eth.d.ts +14 -33
- package/lib/Eth.d.ts.map +1 -1
- package/lib/Eth.js +273 -305
- package/lib/Eth.js.map +1 -1
- package/lib/services/ledger/contracts.d.ts +14 -0
- package/lib/services/ledger/contracts.d.ts.map +1 -0
- package/lib/{contracts.js → services/ledger/contracts.js} +0 -0
- package/lib/services/ledger/contracts.js.map +1 -0
- package/lib/services/ledger/erc20.d.ts +22 -0
- package/lib/services/ledger/erc20.d.ts.map +1 -0
- package/lib/{erc20.js → services/ledger/erc20.js} +0 -0
- package/lib/services/ledger/erc20.js.map +1 -0
- package/lib/services/ledger/index.d.ts +4 -0
- package/lib/services/ledger/index.d.ts.map +1 -0
- package/lib/services/ledger/index.js +168 -0
- package/lib/services/ledger/index.js.map +1 -0
- package/lib/services/ledger/loadConfig.d.ts +3 -0
- package/lib/services/ledger/loadConfig.d.ts.map +1 -0
- package/lib/{loadConfig.js → services/ledger/loadConfig.js} +0 -0
- package/lib/services/ledger/loadConfig.js.map +1 -0
- package/lib/services/ledger/nfts.d.ts +10 -0
- package/lib/services/ledger/nfts.d.ts.map +1 -0
- package/lib/{nfts.js → services/ledger/nfts.js} +3 -14
- package/lib/services/ledger/nfts.js.map +1 -0
- package/lib/services/types.d.ts +18 -0
- package/lib/services/types.d.ts.map +1 -0
- package/lib/services/types.js +3 -0
- package/lib/services/types.js.map +1 -0
- package/lib/utils.d.ts +8 -27
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +68 -68
- package/lib/utils.js.map +1 -1
- package/lib-es/Eth.d.ts +14 -33
- package/lib-es/Eth.d.ts.map +1 -1
- package/lib-es/Eth.js +261 -296
- package/lib-es/Eth.js.map +1 -1
- package/{lib → lib-es/services/ledger}/contracts.d.ts +1 -1
- package/lib-es/services/ledger/contracts.d.ts.map +1 -0
- package/lib-es/services/ledger/contracts.js +96 -0
- package/lib-es/services/ledger/contracts.js.map +1 -0
- package/{lib → lib-es/services/ledger}/erc20.d.ts +0 -0
- package/lib-es/services/ledger/erc20.d.ts.map +1 -0
- package/lib-es/services/ledger/erc20.js +64 -0
- package/lib-es/services/ledger/erc20.js.map +1 -0
- package/lib-es/services/ledger/index.d.ts +4 -0
- package/lib-es/services/ledger/index.d.ts.map +1 -0
- package/lib-es/services/ledger/index.js +166 -0
- package/lib-es/services/ledger/index.js.map +1 -0
- package/lib-es/services/ledger/loadConfig.d.ts +3 -0
- package/lib-es/services/ledger/loadConfig.d.ts.map +1 -0
- package/lib-es/services/ledger/loadConfig.js +20 -0
- package/lib-es/services/ledger/loadConfig.js.map +1 -0
- package/{lib → lib-es/services/ledger}/nfts.d.ts +2 -3
- package/lib-es/services/ledger/nfts.d.ts.map +1 -0
- package/lib-es/services/ledger/nfts.js +83 -0
- package/lib-es/services/ledger/nfts.js.map +1 -0
- package/lib-es/services/types.d.ts +18 -0
- package/lib-es/services/types.d.ts.map +1 -0
- package/lib-es/services/types.js +2 -0
- package/lib-es/services/types.js.map +1 -0
- package/lib-es/utils.d.ts +8 -27
- package/lib-es/utils.d.ts.map +1 -1
- package/lib-es/utils.js +66 -61
- package/lib-es/utils.js.map +1 -1
- package/package.json +3 -3
- package/src/Eth.ts +124 -258
- package/src/{contracts.ts → services/ledger/contracts.ts} +1 -1
- package/src/{erc20.ts → services/ledger/erc20.ts} +0 -0
- package/src/services/ledger/index.ts +119 -0
- package/src/services/ledger/loadConfig.ts +14 -0
- package/src/{nfts.ts → services/ledger/nfts.ts} +5 -18
- package/src/services/types.ts +28 -0
- package/src/utils.ts +72 -94
- package/tests/Eth.test.ts +2 -2
- package/lib/contracts.d.ts.map +0 -1
- package/lib/contracts.js.map +0 -1
- package/lib/erc20.d.ts.map +0 -1
- package/lib/erc20.js.map +0 -1
- package/lib/loadConfig.d.ts +0 -7
- package/lib/loadConfig.d.ts.map +0 -1
- package/lib/loadConfig.js.map +0 -1
- package/lib/nfts.d.ts.map +0 -1
- package/lib/nfts.js.map +0 -1
- package/src/loadConfig.ts +0 -23
|
@@ -0,0 +1,83 @@
|
|
|
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 __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
12
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
+
function step(op) {
|
|
15
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
+
while (_) try {
|
|
17
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
+
switch (op[0]) {
|
|
20
|
+
case 0: case 1: t = op; break;
|
|
21
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
+
default:
|
|
25
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
+
if (t[2]) _.ops.pop();
|
|
30
|
+
_.trys.pop(); continue;
|
|
31
|
+
}
|
|
32
|
+
op = body.call(thisArg, _);
|
|
33
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
import axios from "axios";
|
|
38
|
+
import { getLoadConfig } from "./loadConfig";
|
|
39
|
+
export var getNFTInfo = function (contractAddress, chainId, userLoadConfig) { return __awaiter(void 0, void 0, void 0, function () {
|
|
40
|
+
var nftExplorerBaseURL, url, response, payload, collectionNameLength, collectionName;
|
|
41
|
+
return __generator(this, function (_a) {
|
|
42
|
+
switch (_a.label) {
|
|
43
|
+
case 0:
|
|
44
|
+
nftExplorerBaseURL = getLoadConfig(userLoadConfig).nftExplorerBaseURL;
|
|
45
|
+
if (!nftExplorerBaseURL)
|
|
46
|
+
return [2 /*return*/];
|
|
47
|
+
url = "".concat(nftExplorerBaseURL, "/").concat(chainId, "/contracts/").concat(contractAddress);
|
|
48
|
+
return [4 /*yield*/, axios.get(url).then(function (r) { return r.data; })];
|
|
49
|
+
case 1:
|
|
50
|
+
response = _a.sent();
|
|
51
|
+
if (!response)
|
|
52
|
+
return [2 /*return*/];
|
|
53
|
+
payload = response["payload"];
|
|
54
|
+
collectionNameLength = Number(payload.slice(2, 3));
|
|
55
|
+
collectionName = payload.slice(3, 3 + collectionNameLength).toString();
|
|
56
|
+
return [2 /*return*/, {
|
|
57
|
+
contractAddress: contractAddress,
|
|
58
|
+
collectionName: collectionName,
|
|
59
|
+
data: payload
|
|
60
|
+
}];
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}); };
|
|
64
|
+
export var loadNftPlugin = function (contractAddress, selector, chainId, userLoadConfig) { return __awaiter(void 0, void 0, void 0, function () {
|
|
65
|
+
var nftExplorerBaseURL, url, response, payload;
|
|
66
|
+
return __generator(this, function (_a) {
|
|
67
|
+
switch (_a.label) {
|
|
68
|
+
case 0:
|
|
69
|
+
nftExplorerBaseURL = getLoadConfig(userLoadConfig).nftExplorerBaseURL;
|
|
70
|
+
if (!nftExplorerBaseURL)
|
|
71
|
+
return [2 /*return*/];
|
|
72
|
+
url = "".concat(nftExplorerBaseURL, "/").concat(chainId, "/contracts/").concat(contractAddress, "/plugin-selector/").concat(selector);
|
|
73
|
+
return [4 /*yield*/, axios.get(url).then(function (r) { return r.data; })];
|
|
74
|
+
case 1:
|
|
75
|
+
response = _a.sent();
|
|
76
|
+
if (!response)
|
|
77
|
+
return [2 /*return*/];
|
|
78
|
+
payload = response["payload"];
|
|
79
|
+
return [2 /*return*/, payload];
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}); };
|
|
83
|
+
//# sourceMappingURL=nfts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nfts.js","sourceRoot":"","sources":["../../../src/services/ledger/nfts.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAa7C,MAAM,CAAC,IAAM,UAAU,GAAG,UACxB,eAAuB,EACvB,OAAe,EACf,cAA0B;;;;;gBAElB,kBAAkB,GAAK,aAAa,CAAC,cAAc,CAAC,mBAAlC,CAAmC;gBAC7D,IAAI,CAAC,kBAAkB;oBAAE,sBAAO;gBAC1B,GAAG,GAAG,UAAG,kBAAkB,cAAI,OAAO,wBAAc,eAAe,CAAE,CAAC;gBAC3D,qBAAM,KAAK,CAAC,GAAG,CAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,EAAN,CAAM,CAAC,EAAA;;gBAApE,QAAQ,GAAG,SAAyD;gBAC1E,IAAI,CAAC,QAAQ;oBAAE,sBAAO;gBAEhB,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAC9B,oBAAoB,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACnD,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC7E,sBAAO;wBACL,eAAe,EAAE,eAAe;wBAChC,cAAc,EAAE,cAAc;wBAC9B,IAAI,EAAE,OAAO;qBACd,EAAC;;;KACH,CAAC;AAEF,MAAM,CAAC,IAAM,aAAa,GAAG,UAC3B,eAAuB,EACvB,QAAgB,EAChB,OAAe,EACf,cAA0B;;;;;gBAElB,kBAAkB,GAAK,aAAa,CAAC,cAAc,CAAC,mBAAlC,CAAmC;gBAC7D,IAAI,CAAC,kBAAkB;oBAAE,sBAAO;gBAC1B,GAAG,GAAG,UAAG,kBAAkB,cAAI,OAAO,wBAAc,eAAe,8BAAoB,QAAQ,CAAE,CAAC;gBAEvF,qBAAM,KAAK,CAAC,GAAG,CAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,EAAN,CAAM,CAAC,EAAA;;gBAApE,QAAQ,GAAG,SAAyD;gBAC1E,IAAI,CAAC,QAAQ;oBAAE,sBAAO;gBAEhB,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACpC,sBAAO,OAAO,EAAC;;;KAChB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare type LedgerEthTransactionResolution = {
|
|
2
|
+
erc20Tokens: Array<string>;
|
|
3
|
+
nfts: Array<string>;
|
|
4
|
+
externalPlugin: Array<{
|
|
5
|
+
payload: string;
|
|
6
|
+
signature: string;
|
|
7
|
+
}>;
|
|
8
|
+
plugin: Array<string>;
|
|
9
|
+
};
|
|
10
|
+
export declare type LoadConfig = {
|
|
11
|
+
nftExplorerBaseURL?: string | null;
|
|
12
|
+
pluginBaseURL?: string | null;
|
|
13
|
+
extraPlugins?: any | null;
|
|
14
|
+
};
|
|
15
|
+
export declare type LedgerEthTransactionService = {
|
|
16
|
+
resolveTransaction: (rawTxHex: string, loadConfig: LoadConfig) => Promise<LedgerEthTransactionResolution>;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/services/types.ts"],"names":[],"mappings":"AAAA,oBAAY,8BAA8B,GAAG;IAE3C,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAE3B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAEpB,cAAc,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE9D,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACvB,CAAC;AAEF,oBAAY,UAAU,GAAG;IACvB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAInC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAG9B,YAAY,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,oBAAY,2BAA2B,GAAG;IACxC,kBAAkB,EAAE,CAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,UAAU,KACnB,OAAO,CAAC,8BAA8B,CAAC,CAAC;CAC9C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/services/types.ts"],"names":[],"mappings":""}
|
package/lib-es/utils.d.ts
CHANGED
|
@@ -1,29 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
*
|
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
* See the License for the specific language governing permissions and
|
|
15
|
-
* limitations under the License.
|
|
16
|
-
********************************************************************************/
|
|
17
|
-
declare type Defer<T> = {
|
|
18
|
-
promise: Promise<T>;
|
|
19
|
-
resolve: (arg0: T) => void;
|
|
20
|
-
reject: (arg0: any) => void;
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { BigNumber } from "bignumber.js";
|
|
3
|
+
export declare function decodeTxInfo(rawTx: Buffer): {
|
|
4
|
+
decodedTx: any;
|
|
5
|
+
txType: number | null;
|
|
6
|
+
chainId: BigNumber;
|
|
7
|
+
chainIdTruncated: number;
|
|
8
|
+
vrsOffset: number;
|
|
21
9
|
};
|
|
22
|
-
export declare function defer<T>(): Defer<T>;
|
|
23
|
-
export declare function splitPath(path: string): number[];
|
|
24
|
-
export declare function eachSeries<A>(arr: A[], fun: (arg0: A) => Promise<any>): Promise<any>;
|
|
25
|
-
export declare function foreach<T, A>(arr: T[], callback: (arg0: T, arg1: number) => Promise<A>): Promise<A[]>;
|
|
26
|
-
export declare function doIf(condition: boolean, callback: () => any | Promise<any>): Promise<void>;
|
|
27
|
-
export declare function asyncWhile<T>(predicate: () => boolean, callback: () => Promise<T>): Promise<Array<T>>;
|
|
28
|
-
export {};
|
|
29
10
|
//# sourceMappingURL=utils.d.ts.map
|
package/lib-es/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM;;;;;;EA8EzC"}
|
package/lib-es/utils.js
CHANGED
|
@@ -1,69 +1,74 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { ethers } from "ethers";
|
|
2
|
+
import { BigNumber } from "bignumber.js";
|
|
3
|
+
export function decodeTxInfo(rawTx) {
|
|
4
|
+
var VALID_TYPES = [1, 2];
|
|
5
|
+
var txType = VALID_TYPES.includes(rawTx[0]) ? rawTx[0] : null;
|
|
6
|
+
var rlpData = txType === null ? rawTx : rawTx.slice(1);
|
|
7
|
+
var rlpTx = ethers.utils.RLP.decode(rlpData).map(function (hex) {
|
|
8
|
+
return Buffer.from(hex.slice(2), "hex");
|
|
6
9
|
});
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
var result = [];
|
|
18
|
-
var components = path.split("/");
|
|
19
|
-
components.forEach(function (element) {
|
|
20
|
-
var number = parseInt(element, 10);
|
|
21
|
-
if (isNaN(number)) {
|
|
22
|
-
return; // FIXME shouldn't it throws instead?
|
|
23
|
-
}
|
|
24
|
-
if (element.length > 1 && element[element.length - 1] === "'") {
|
|
25
|
-
number += 0x80000000;
|
|
26
|
-
}
|
|
27
|
-
result.push(number);
|
|
28
|
-
});
|
|
29
|
-
return result;
|
|
30
|
-
}
|
|
31
|
-
// TODO use async await
|
|
32
|
-
export function eachSeries(arr, fun) {
|
|
33
|
-
return arr.reduce(function (p, e) { return p.then(function () { return fun(e); }); }, Promise.resolve());
|
|
34
|
-
}
|
|
35
|
-
export function foreach(arr, callback) {
|
|
36
|
-
function iterate(index, array, result) {
|
|
37
|
-
if (index >= array.length) {
|
|
38
|
-
return result;
|
|
39
|
-
}
|
|
40
|
-
else
|
|
41
|
-
return callback(array[index], index).then(function (res) {
|
|
42
|
-
result.push(res);
|
|
43
|
-
return iterate(index + 1, array, result);
|
|
44
|
-
});
|
|
10
|
+
var chainIdTruncated = 0;
|
|
11
|
+
var rlpDecoded = ethers.utils.RLP.decode(rlpData);
|
|
12
|
+
var decodedTx;
|
|
13
|
+
if (txType === 2) {
|
|
14
|
+
// EIP1559
|
|
15
|
+
decodedTx = {
|
|
16
|
+
data: rlpDecoded[7],
|
|
17
|
+
to: rlpDecoded[5],
|
|
18
|
+
chainId: rlpTx[0]
|
|
19
|
+
};
|
|
45
20
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
21
|
+
else if (txType === 1) {
|
|
22
|
+
// EIP2930
|
|
23
|
+
decodedTx = {
|
|
24
|
+
data: rlpDecoded[6],
|
|
25
|
+
to: rlpDecoded[4],
|
|
26
|
+
chainId: rlpTx[0]
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
// Legacy tx
|
|
31
|
+
decodedTx = {
|
|
32
|
+
data: rlpDecoded[5],
|
|
33
|
+
to: rlpDecoded[3],
|
|
34
|
+
// Default to 1 for non EIP 155 txs
|
|
35
|
+
chainId: rlpTx.length > 6 ? rlpTx[6] : Buffer.from("0x01", "hex")
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
var chainIdSrc = decodedTx.chainId;
|
|
39
|
+
var chainId = new BigNumber(0);
|
|
40
|
+
if (chainIdSrc) {
|
|
41
|
+
// Using BigNumber because chainID could be any uint256.
|
|
42
|
+
chainId = new BigNumber(chainIdSrc.toString("hex"), 16);
|
|
43
|
+
var chainIdTruncatedBuf = Buffer.alloc(4);
|
|
44
|
+
if (chainIdSrc.length > 4) {
|
|
45
|
+
chainIdSrc.copy(chainIdTruncatedBuf);
|
|
59
46
|
}
|
|
60
47
|
else {
|
|
61
|
-
|
|
62
|
-
result.push(res);
|
|
63
|
-
return iterate(result);
|
|
64
|
-
});
|
|
48
|
+
chainIdSrc.copy(chainIdTruncatedBuf, 4 - chainIdSrc.length);
|
|
65
49
|
}
|
|
50
|
+
chainIdTruncated = chainIdTruncatedBuf.readUInt32BE(0);
|
|
66
51
|
}
|
|
67
|
-
|
|
52
|
+
var vrsOffset = 0;
|
|
53
|
+
if (txType === null && rlpTx.length > 6) {
|
|
54
|
+
var rlpVrs = Buffer.from(ethers.utils.RLP.encode(rlpTx.slice(-3)).slice(2), "hex");
|
|
55
|
+
vrsOffset = rawTx.length - (rlpVrs.length - 1);
|
|
56
|
+
// First byte > 0xf7 means the length of the list length doesn't fit in a single byte.
|
|
57
|
+
if (rlpVrs[0] > 0xf7) {
|
|
58
|
+
// Increment vrsOffset to account for that extra byte.
|
|
59
|
+
vrsOffset++;
|
|
60
|
+
// Compute size of the list length.
|
|
61
|
+
var sizeOfListLen = rlpVrs[0] - 0xf7;
|
|
62
|
+
// Increase rlpOffset by the size of the list length.
|
|
63
|
+
vrsOffset += sizeOfListLen - 1;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
decodedTx: decodedTx,
|
|
68
|
+
txType: txType,
|
|
69
|
+
chainId: chainId,
|
|
70
|
+
chainIdTruncated: chainIdTruncated,
|
|
71
|
+
vrsOffset: vrsOffset
|
|
72
|
+
};
|
|
68
73
|
}
|
|
69
74
|
//# sourceMappingURL=utils.js.map
|
package/lib-es/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.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.22.0",
|
|
4
4
|
"description": "Ledger Hardware Wallet Ethereum Application API",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Ledger",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"types": "lib/Eth.d.ts",
|
|
28
28
|
"license": "Apache-2.0",
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@ledgerhq/cryptoassets": "^6.
|
|
30
|
+
"@ledgerhq/cryptoassets": "^6.22.0",
|
|
31
31
|
"@ledgerhq/errors": "^6.10.0",
|
|
32
32
|
"@ledgerhq/hw-transport": "^6.20.0",
|
|
33
33
|
"@ledgerhq/logs": "^6.10.0",
|
|
@@ -41,5 +41,5 @@
|
|
|
41
41
|
"watch": "bash ../../script/watch.sh",
|
|
42
42
|
"doc": "bash ../../script/doc.sh"
|
|
43
43
|
},
|
|
44
|
-
"gitHead": "
|
|
44
|
+
"gitHead": "df473b65fc3a869bc4cbb65de5b057272366f2da"
|
|
45
45
|
}
|