1 | "use strict";
|
2 | var __read = (this && this.__read) || function (o, n) {
|
3 | var m = typeof Symbol === "function" && o[Symbol.iterator];
|
4 | if (!m) return o;
|
5 | var i = m.call(o), r, ar = [], e;
|
6 | try {
|
7 | while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
8 | }
|
9 | catch (error) { e = { error: error }; }
|
10 | finally {
|
11 | try {
|
12 | if (r && !r.done && (m = i["return"])) m.call(i);
|
13 | }
|
14 | finally { if (e) throw e.error; }
|
15 | }
|
16 | return ar;
|
17 | };
|
18 | var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
19 | if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
20 | if (ar || !(i in from)) {
|
21 | if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
22 | ar[i] = from[i];
|
23 | }
|
24 | }
|
25 | return to.concat(ar || Array.prototype.slice.call(from));
|
26 | };
|
27 | exports.__esModule = true;
|
28 | exports.mergeResolutions = exports.nftSelectors = exports.tokenSelectors = exports.ERC1155_CLEAR_SIGNED_SELECTORS = exports.ERC721_CLEAR_SIGNED_SELECTORS = exports.ERC20_CLEAR_SIGNED_SELECTORS = exports.intAsHexBytes = exports.decodeTxInfo = exports.maybeHexBuffer = exports.hexBuffer = exports.splitPath = void 0;
|
29 | var rlp_1 = require("@ethersproject/rlp");
|
30 | var bignumber_js_1 = require("bignumber.js");
|
31 | function splitPath(path) {
|
32 | var result = [];
|
33 | var components = path.split("/");
|
34 | components.forEach(function (element) {
|
35 | var number = parseInt(element, 10);
|
36 | if (isNaN(number)) {
|
37 | return;
|
38 | }
|
39 | if (element.length > 1 && element[element.length - 1] === "'") {
|
40 | number += 0x80000000;
|
41 | }
|
42 | result.push(number);
|
43 | });
|
44 | return result;
|
45 | }
|
46 | exports.splitPath = splitPath;
|
47 | function hexBuffer(str) {
|
48 | return Buffer.from(str.startsWith("0x") ? str.slice(2) : str, "hex");
|
49 | }
|
50 | exports.hexBuffer = hexBuffer;
|
51 | function maybeHexBuffer(str) {
|
52 | if (!str)
|
53 | return null;
|
54 | return hexBuffer(str);
|
55 | }
|
56 | exports.maybeHexBuffer = maybeHexBuffer;
|
57 | var decodeTxInfo = function (rawTx) {
|
58 | var VALID_TYPES = [1, 2];
|
59 | var txType = VALID_TYPES.includes(rawTx[0]) ? rawTx[0] : null;
|
60 | var rlpData = txType === null ? rawTx : rawTx.slice(1);
|
61 | var rlpTx = (0, rlp_1.decode)(rlpData).map(function (hex) { return Buffer.from(hex.slice(2), "hex"); });
|
62 | var chainIdTruncated = 0;
|
63 | var rlpDecoded = (0, rlp_1.decode)(rlpData);
|
64 | var decodedTx;
|
65 | if (txType === 2) {
|
66 |
|
67 | decodedTx = {
|
68 | data: rlpDecoded[7],
|
69 | to: rlpDecoded[5],
|
70 | chainId: rlpTx[0]
|
71 | };
|
72 | }
|
73 | else if (txType === 1) {
|
74 |
|
75 | decodedTx = {
|
76 | data: rlpDecoded[6],
|
77 | to: rlpDecoded[4],
|
78 | chainId: rlpTx[0]
|
79 | };
|
80 | }
|
81 | else {
|
82 |
|
83 | decodedTx = {
|
84 | data: rlpDecoded[5],
|
85 | to: rlpDecoded[3],
|
86 |
|
87 | chainId: rlpTx.length > 6 ? rlpTx[6] : Buffer.from("0x01", "hex")
|
88 | };
|
89 | }
|
90 | var chainIdSrc = decodedTx.chainId;
|
91 | var chainId = new bignumber_js_1.BigNumber(0);
|
92 | if (chainIdSrc) {
|
93 |
|
94 | chainId = new bignumber_js_1.BigNumber(chainIdSrc.toString("hex"), 16);
|
95 | var chainIdTruncatedBuf = Buffer.alloc(4);
|
96 | if (chainIdSrc.length > 4) {
|
97 | chainIdSrc.copy(chainIdTruncatedBuf);
|
98 | }
|
99 | else {
|
100 | chainIdSrc.copy(chainIdTruncatedBuf, 4 - chainIdSrc.length);
|
101 | }
|
102 | chainIdTruncated = chainIdTruncatedBuf.readUInt32BE(0);
|
103 | }
|
104 | var vrsOffset = 0;
|
105 | if (txType === null && rlpTx.length > 6) {
|
106 | var rlpVrs = Buffer.from((0, rlp_1.encode)(rlpTx.slice(-3)).slice(2), "hex");
|
107 | vrsOffset = rawTx.length - (rlpVrs.length - 1);
|
108 |
|
109 | if (rlpVrs[0] > 0xf7) {
|
110 |
|
111 | vrsOffset++;
|
112 |
|
113 | var sizeOfListLen = rlpVrs[0] - 0xf7;
|
114 |
|
115 | vrsOffset += sizeOfListLen - 1;
|
116 | }
|
117 | }
|
118 | return {
|
119 | decodedTx: decodedTx,
|
120 | txType: txType,
|
121 | chainId: chainId,
|
122 | chainIdTruncated: chainIdTruncated,
|
123 | vrsOffset: vrsOffset
|
124 | };
|
125 | };
|
126 | exports.decodeTxInfo = decodeTxInfo;
|
127 |
|
128 |
|
129 |
|
130 |
|
131 |
|
132 |
|
133 |
|
134 |
|
135 |
|
136 |
|
137 | var intAsHexBytes = function (int, bytes) {
|
138 | return int.toString(16).padStart(2 * bytes, "0");
|
139 | };
|
140 | exports.intAsHexBytes = intAsHexBytes;
|
141 |
|
142 |
|
143 |
|
144 |
|
145 |
|
146 |
|
147 |
|
148 | var ERC20_CLEAR_SIGNED_SELECTORS;
|
149 | (function (ERC20_CLEAR_SIGNED_SELECTORS) {
|
150 | ERC20_CLEAR_SIGNED_SELECTORS["APPROVE"] = "0x095ea7b3";
|
151 | ERC20_CLEAR_SIGNED_SELECTORS["TRANSFER"] = "0xa9059cbb";
|
152 | })(ERC20_CLEAR_SIGNED_SELECTORS = exports.ERC20_CLEAR_SIGNED_SELECTORS || (exports.ERC20_CLEAR_SIGNED_SELECTORS = {}));
|
153 | var ERC721_CLEAR_SIGNED_SELECTORS;
|
154 | (function (ERC721_CLEAR_SIGNED_SELECTORS) {
|
155 | ERC721_CLEAR_SIGNED_SELECTORS["APPROVE"] = "0x095ea7b3";
|
156 | ERC721_CLEAR_SIGNED_SELECTORS["SET_APPROVAL_FOR_ALL"] = "0xa22cb465";
|
157 | ERC721_CLEAR_SIGNED_SELECTORS["TRANSFER_FROM"] = "0x23b872dd";
|
158 | ERC721_CLEAR_SIGNED_SELECTORS["SAFE_TRANSFER_FROM"] = "0x42842e0e";
|
159 | ERC721_CLEAR_SIGNED_SELECTORS["SAFE_TRANSFER_FROM_WITH_DATA"] = "0xb88d4fde";
|
160 | })(ERC721_CLEAR_SIGNED_SELECTORS = exports.ERC721_CLEAR_SIGNED_SELECTORS || (exports.ERC721_CLEAR_SIGNED_SELECTORS = {}));
|
161 | var ERC1155_CLEAR_SIGNED_SELECTORS;
|
162 | (function (ERC1155_CLEAR_SIGNED_SELECTORS) {
|
163 | ERC1155_CLEAR_SIGNED_SELECTORS["SET_APPROVAL_FOR_ALL"] = "0xa22cb465";
|
164 | ERC1155_CLEAR_SIGNED_SELECTORS["SAFE_TRANSFER_FROM"] = "0xf242432a";
|
165 | ERC1155_CLEAR_SIGNED_SELECTORS["SAFE_BATCH_TRANSFER_FROM"] = "0x2eb2c2d6";
|
166 | })(ERC1155_CLEAR_SIGNED_SELECTORS = exports.ERC1155_CLEAR_SIGNED_SELECTORS || (exports.ERC1155_CLEAR_SIGNED_SELECTORS = {}));
|
167 | exports.tokenSelectors = Object.values(ERC20_CLEAR_SIGNED_SELECTORS);
|
168 | exports.nftSelectors = __spreadArray(__spreadArray([], __read(Object.values(ERC721_CLEAR_SIGNED_SELECTORS)), false), __read(Object.values(ERC1155_CLEAR_SIGNED_SELECTORS)), false);
|
169 | var mergeResolutions = function (oldResolution, newResolution) {
|
170 | var _a, _b;
|
171 | var resolutions = {
|
172 | nfts: [],
|
173 | erc20Tokens: [],
|
174 | externalPlugin: [],
|
175 | plugin: []
|
176 | };
|
177 | for (var key in oldResolution) {
|
178 | (_a = resolutions[key]).push.apply(_a, __spreadArray([], __read(oldResolution[key]), false));
|
179 | }
|
180 | for (var key in newResolution) {
|
181 | (_b = resolutions[key]).push.apply(_b, __spreadArray([], __read(newResolution[key]), false));
|
182 | }
|
183 | return resolutions;
|
184 | };
|
185 | exports.mergeResolutions = mergeResolutions;
|
186 |
|
\ | No newline at end of file |