@waku/rln 0.1.5-bc093d3.0 → 0.1.5-d17562d.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/bundle/index.js +2 -1
- package/bundle/packages/rln/dist/contract/constants.js +5 -1
- package/bundle/packages/rln/dist/contract/rln_base_contract.js +33 -35
- package/bundle/packages/rln/dist/contract/rln_contract.js +1 -1
- package/bundle/packages/rln/dist/utils/bytes.js +8 -2
- package/bundle/packages/rln/dist/utils/metamask.js +2 -2
- package/dist/.tsbuildinfo +1 -1
- package/dist/contract/index.d.ts +1 -0
- package/dist/contract/index.js +1 -0
- package/dist/contract/index.js.map +1 -1
- package/dist/contract/rln_base_contract.d.ts +4 -4
- package/dist/contract/rln_base_contract.js +31 -33
- package/dist/contract/rln_base_contract.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/keystore/keystore.js.map +1 -1
- package/dist/keystore/types.d.ts +2 -2
- package/dist/utils/bytes.js +8 -2
- package/dist/utils/bytes.js.map +1 -1
- package/package.json +1 -1
- package/src/contract/index.ts +1 -0
- package/src/contract/rln_base_contract.ts +47 -47
- package/src/index.ts +3 -1
- package/src/keystore/keystore.ts +4 -2
- package/src/keystore/types.ts +2 -2
- package/src/utils/bytes.ts +10 -2
- package/bundle/_virtual/__node-resolve_empty.js +0 -6
- package/bundle/_virtual/_node-resolve_empty.js +0 -3
- package/bundle/_virtual/bn.js +0 -3
- package/bundle/_virtual/common.js +0 -3
- package/bundle/_virtual/common2.js +0 -3
- package/bundle/_virtual/hash.js +0 -3
- package/bundle/_virtual/inherits_browser.js +0 -3
- package/bundle/_virtual/ripemd.js +0 -3
- package/bundle/_virtual/sha.js +0 -3
- package/bundle/_virtual/sha3.js +0 -3
- package/bundle/_virtual/utils3.js +0 -3
- package/bundle/node_modules/@ethersproject/abi/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/abi/lib.esm/abi-coder.js +0 -96
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/abstract-coder.js +0 -148
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/address.js +0 -26
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/anonymous.js +0 -20
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/array.js +0 -210
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/boolean.js +0 -18
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/bytes.js +0 -30
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/fixed-bytes.js +0 -26
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/null.js +0 -22
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/number.js +0 -43
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/string.js +0 -19
- package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/tuple.js +0 -58
- package/bundle/node_modules/@ethersproject/abi/lib.esm/fragments.js +0 -854
- package/bundle/node_modules/@ethersproject/abi/lib.esm/interface.js +0 -609
- package/bundle/node_modules/@ethersproject/abstract-provider/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/abstract-provider/lib.esm/index.js +0 -66
- package/bundle/node_modules/@ethersproject/abstract-signer/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/abstract-signer/lib.esm/index.js +0 -302
- package/bundle/node_modules/@ethersproject/address/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/address/lib.esm/index.js +0 -110
- package/bundle/node_modules/@ethersproject/base64/lib.esm/base64.js +0 -20
- package/bundle/node_modules/@ethersproject/basex/lib.esm/index.js +0 -120
- package/bundle/node_modules/@ethersproject/bignumber/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/bignumber/lib.esm/bignumber.js +0 -287
- package/bundle/node_modules/@ethersproject/bytes/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/bytes/lib.esm/index.js +0 -402
- package/bundle/node_modules/@ethersproject/constants/lib.esm/addresses.js +0 -3
- package/bundle/node_modules/@ethersproject/constants/lib.esm/bignumbers.js +0 -8
- package/bundle/node_modules/@ethersproject/constants/lib.esm/hashes.js +0 -3
- package/bundle/node_modules/@ethersproject/contracts/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/contracts/lib.esm/index.js +0 -893
- package/bundle/node_modules/@ethersproject/hash/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/hash/lib.esm/ens-normalize/decoder.js +0 -256
- package/bundle/node_modules/@ethersproject/hash/lib.esm/ens-normalize/include.js +0 -36
- package/bundle/node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js +0 -135
- package/bundle/node_modules/@ethersproject/hash/lib.esm/id.js +0 -8
- package/bundle/node_modules/@ethersproject/hash/lib.esm/namehash.js +0 -64
- package/bundle/node_modules/@ethersproject/hash/lib.esm/typed-data.js +0 -443
- package/bundle/node_modules/@ethersproject/keccak256/lib.esm/index.js +0 -8
- package/bundle/node_modules/@ethersproject/keccak256/node_modules/js-sha3/src/sha3.js +0 -660
- package/bundle/node_modules/@ethersproject/logger/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/logger/lib.esm/index.js +0 -352
- package/bundle/node_modules/@ethersproject/networks/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/networks/lib.esm/index.js +0 -248
- package/bundle/node_modules/@ethersproject/properties/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/properties/lib.esm/index.js +0 -127
- package/bundle/node_modules/@ethersproject/providers/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/providers/lib.esm/base-provider.js +0 -2007
- package/bundle/node_modules/@ethersproject/providers/lib.esm/formatter.js +0 -422
- package/bundle/node_modules/@ethersproject/providers/lib.esm/json-rpc-provider.js +0 -674
- package/bundle/node_modules/@ethersproject/providers/lib.esm/web3-provider.js +0 -132
- package/bundle/node_modules/@ethersproject/rlp/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/rlp/lib.esm/index.js +0 -120
- package/bundle/node_modules/@ethersproject/sha2/lib.esm/sha2.js +0 -8
- package/bundle/node_modules/@ethersproject/signing-key/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/signing-key/lib.esm/elliptic.js +0 -2430
- package/bundle/node_modules/@ethersproject/signing-key/lib.esm/index.js +0 -76
- package/bundle/node_modules/@ethersproject/strings/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/strings/lib.esm/utf8.js +0 -219
- package/bundle/node_modules/@ethersproject/transactions/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/transactions/lib.esm/index.js +0 -279
- package/bundle/node_modules/@ethersproject/web/lib.esm/_version.js +0 -3
- package/bundle/node_modules/@ethersproject/web/lib.esm/geturl.js +0 -69
- package/bundle/node_modules/@ethersproject/web/lib.esm/index.js +0 -404
- package/bundle/node_modules/bech32/index.js +0 -187
- package/bundle/node_modules/bn.js/lib/bn.js +0 -3361
- package/bundle/node_modules/hash.js/lib/hash/common.js +0 -97
- package/bundle/node_modules/hash.js/lib/hash/hmac.js +0 -51
- package/bundle/node_modules/hash.js/lib/hash/ripemd.js +0 -152
- package/bundle/node_modules/hash.js/lib/hash/sha/1.js +0 -81
- package/bundle/node_modules/hash.js/lib/hash/sha/224.js +0 -33
- package/bundle/node_modules/hash.js/lib/hash/sha/256.js +0 -113
- package/bundle/node_modules/hash.js/lib/hash/sha/384.js +0 -39
- package/bundle/node_modules/hash.js/lib/hash/sha/512.js +0 -336
- package/bundle/node_modules/hash.js/lib/hash/sha/common.js +0 -53
- package/bundle/node_modules/hash.js/lib/hash/sha.js +0 -14
- package/bundle/node_modules/hash.js/lib/hash/utils.js +0 -282
- package/bundle/node_modules/hash.js/lib/hash.js +0 -33
- package/bundle/node_modules/inherits/inherits_browser.js +0 -33
- package/bundle/node_modules/minimalistic-assert/index.js +0 -13
@@ -1,422 +0,0 @@
|
|
1
|
-
import { getAddress, getContractAddress } from '../../address/lib.esm/index.js';
|
2
|
-
import { isHexString, hexDataSlice, hexValue, hexDataLength, hexZeroPad } from '../../bytes/lib.esm/index.js';
|
3
|
-
import { shallowCopy } from '../../properties/lib.esm/index.js';
|
4
|
-
import { accessListify, parse } from '../../transactions/lib.esm/index.js';
|
5
|
-
import { Logger } from '../../logger/lib.esm/index.js';
|
6
|
-
import { version } from './_version.js';
|
7
|
-
import { BigNumber } from '../../bignumber/lib.esm/bignumber.js';
|
8
|
-
import { AddressZero } from '../../constants/lib.esm/addresses.js';
|
9
|
-
|
10
|
-
const logger = new Logger(version);
|
11
|
-
class Formatter {
|
12
|
-
constructor() {
|
13
|
-
this.formats = this.getDefaultFormats();
|
14
|
-
}
|
15
|
-
getDefaultFormats() {
|
16
|
-
const formats = ({});
|
17
|
-
const address = this.address.bind(this);
|
18
|
-
const bigNumber = this.bigNumber.bind(this);
|
19
|
-
const blockTag = this.blockTag.bind(this);
|
20
|
-
const data = this.data.bind(this);
|
21
|
-
const hash = this.hash.bind(this);
|
22
|
-
const hex = this.hex.bind(this);
|
23
|
-
const number = this.number.bind(this);
|
24
|
-
const type = this.type.bind(this);
|
25
|
-
const strictData = (v) => { return this.data(v, true); };
|
26
|
-
formats.transaction = {
|
27
|
-
hash: hash,
|
28
|
-
type: type,
|
29
|
-
accessList: Formatter.allowNull(this.accessList.bind(this), null),
|
30
|
-
blockHash: Formatter.allowNull(hash, null),
|
31
|
-
blockNumber: Formatter.allowNull(number, null),
|
32
|
-
transactionIndex: Formatter.allowNull(number, null),
|
33
|
-
confirmations: Formatter.allowNull(number, null),
|
34
|
-
from: address,
|
35
|
-
// either (gasPrice) or (maxPriorityFeePerGas + maxFeePerGas)
|
36
|
-
// must be set
|
37
|
-
gasPrice: Formatter.allowNull(bigNumber),
|
38
|
-
maxPriorityFeePerGas: Formatter.allowNull(bigNumber),
|
39
|
-
maxFeePerGas: Formatter.allowNull(bigNumber),
|
40
|
-
gasLimit: bigNumber,
|
41
|
-
to: Formatter.allowNull(address, null),
|
42
|
-
value: bigNumber,
|
43
|
-
nonce: number,
|
44
|
-
data: data,
|
45
|
-
r: Formatter.allowNull(this.uint256),
|
46
|
-
s: Formatter.allowNull(this.uint256),
|
47
|
-
v: Formatter.allowNull(number),
|
48
|
-
creates: Formatter.allowNull(address, null),
|
49
|
-
raw: Formatter.allowNull(data),
|
50
|
-
};
|
51
|
-
formats.transactionRequest = {
|
52
|
-
from: Formatter.allowNull(address),
|
53
|
-
nonce: Formatter.allowNull(number),
|
54
|
-
gasLimit: Formatter.allowNull(bigNumber),
|
55
|
-
gasPrice: Formatter.allowNull(bigNumber),
|
56
|
-
maxPriorityFeePerGas: Formatter.allowNull(bigNumber),
|
57
|
-
maxFeePerGas: Formatter.allowNull(bigNumber),
|
58
|
-
to: Formatter.allowNull(address),
|
59
|
-
value: Formatter.allowNull(bigNumber),
|
60
|
-
data: Formatter.allowNull(strictData),
|
61
|
-
type: Formatter.allowNull(number),
|
62
|
-
accessList: Formatter.allowNull(this.accessList.bind(this), null),
|
63
|
-
};
|
64
|
-
formats.receiptLog = {
|
65
|
-
transactionIndex: number,
|
66
|
-
blockNumber: number,
|
67
|
-
transactionHash: hash,
|
68
|
-
address: address,
|
69
|
-
topics: Formatter.arrayOf(hash),
|
70
|
-
data: data,
|
71
|
-
logIndex: number,
|
72
|
-
blockHash: hash,
|
73
|
-
};
|
74
|
-
formats.receipt = {
|
75
|
-
to: Formatter.allowNull(this.address, null),
|
76
|
-
from: Formatter.allowNull(this.address, null),
|
77
|
-
contractAddress: Formatter.allowNull(address, null),
|
78
|
-
transactionIndex: number,
|
79
|
-
// should be allowNull(hash), but broken-EIP-658 support is handled in receipt
|
80
|
-
root: Formatter.allowNull(hex),
|
81
|
-
gasUsed: bigNumber,
|
82
|
-
logsBloom: Formatter.allowNull(data),
|
83
|
-
blockHash: hash,
|
84
|
-
transactionHash: hash,
|
85
|
-
logs: Formatter.arrayOf(this.receiptLog.bind(this)),
|
86
|
-
blockNumber: number,
|
87
|
-
confirmations: Formatter.allowNull(number, null),
|
88
|
-
cumulativeGasUsed: bigNumber,
|
89
|
-
effectiveGasPrice: Formatter.allowNull(bigNumber),
|
90
|
-
status: Formatter.allowNull(number),
|
91
|
-
type: type
|
92
|
-
};
|
93
|
-
formats.block = {
|
94
|
-
hash: Formatter.allowNull(hash),
|
95
|
-
parentHash: hash,
|
96
|
-
number: number,
|
97
|
-
timestamp: number,
|
98
|
-
nonce: Formatter.allowNull(hex),
|
99
|
-
difficulty: this.difficulty.bind(this),
|
100
|
-
gasLimit: bigNumber,
|
101
|
-
gasUsed: bigNumber,
|
102
|
-
miner: Formatter.allowNull(address),
|
103
|
-
extraData: data,
|
104
|
-
transactions: Formatter.allowNull(Formatter.arrayOf(hash)),
|
105
|
-
baseFeePerGas: Formatter.allowNull(bigNumber)
|
106
|
-
};
|
107
|
-
formats.blockWithTransactions = shallowCopy(formats.block);
|
108
|
-
formats.blockWithTransactions.transactions = Formatter.allowNull(Formatter.arrayOf(this.transactionResponse.bind(this)));
|
109
|
-
formats.filter = {
|
110
|
-
fromBlock: Formatter.allowNull(blockTag, undefined),
|
111
|
-
toBlock: Formatter.allowNull(blockTag, undefined),
|
112
|
-
blockHash: Formatter.allowNull(hash, undefined),
|
113
|
-
address: Formatter.allowNull(address, undefined),
|
114
|
-
topics: Formatter.allowNull(this.topics.bind(this), undefined),
|
115
|
-
};
|
116
|
-
formats.filterLog = {
|
117
|
-
blockNumber: Formatter.allowNull(number),
|
118
|
-
blockHash: Formatter.allowNull(hash),
|
119
|
-
transactionIndex: number,
|
120
|
-
removed: Formatter.allowNull(this.boolean.bind(this)),
|
121
|
-
address: address,
|
122
|
-
data: Formatter.allowFalsish(data, "0x"),
|
123
|
-
topics: Formatter.arrayOf(hash),
|
124
|
-
transactionHash: hash,
|
125
|
-
logIndex: number,
|
126
|
-
};
|
127
|
-
return formats;
|
128
|
-
}
|
129
|
-
accessList(accessList) {
|
130
|
-
return accessListify(accessList || []);
|
131
|
-
}
|
132
|
-
// Requires a BigNumberish that is within the IEEE754 safe integer range; returns a number
|
133
|
-
// Strict! Used on input.
|
134
|
-
number(number) {
|
135
|
-
if (number === "0x") {
|
136
|
-
return 0;
|
137
|
-
}
|
138
|
-
return BigNumber.from(number).toNumber();
|
139
|
-
}
|
140
|
-
type(number) {
|
141
|
-
if (number === "0x" || number == null) {
|
142
|
-
return 0;
|
143
|
-
}
|
144
|
-
return BigNumber.from(number).toNumber();
|
145
|
-
}
|
146
|
-
// Strict! Used on input.
|
147
|
-
bigNumber(value) {
|
148
|
-
return BigNumber.from(value);
|
149
|
-
}
|
150
|
-
// Requires a boolean, "true" or "false"; returns a boolean
|
151
|
-
boolean(value) {
|
152
|
-
if (typeof (value) === "boolean") {
|
153
|
-
return value;
|
154
|
-
}
|
155
|
-
if (typeof (value) === "string") {
|
156
|
-
value = value.toLowerCase();
|
157
|
-
if (value === "true") {
|
158
|
-
return true;
|
159
|
-
}
|
160
|
-
if (value === "false") {
|
161
|
-
return false;
|
162
|
-
}
|
163
|
-
}
|
164
|
-
throw new Error("invalid boolean - " + value);
|
165
|
-
}
|
166
|
-
hex(value, strict) {
|
167
|
-
if (typeof (value) === "string") {
|
168
|
-
if (!strict && value.substring(0, 2) !== "0x") {
|
169
|
-
value = "0x" + value;
|
170
|
-
}
|
171
|
-
if (isHexString(value)) {
|
172
|
-
return value.toLowerCase();
|
173
|
-
}
|
174
|
-
}
|
175
|
-
return logger.throwArgumentError("invalid hash", "value", value);
|
176
|
-
}
|
177
|
-
data(value, strict) {
|
178
|
-
const result = this.hex(value, strict);
|
179
|
-
if ((result.length % 2) !== 0) {
|
180
|
-
throw new Error("invalid data; odd-length - " + value);
|
181
|
-
}
|
182
|
-
return result;
|
183
|
-
}
|
184
|
-
// Requires an address
|
185
|
-
// Strict! Used on input.
|
186
|
-
address(value) {
|
187
|
-
return getAddress(value);
|
188
|
-
}
|
189
|
-
callAddress(value) {
|
190
|
-
if (!isHexString(value, 32)) {
|
191
|
-
return null;
|
192
|
-
}
|
193
|
-
const address = getAddress(hexDataSlice(value, 12));
|
194
|
-
return (address === AddressZero) ? null : address;
|
195
|
-
}
|
196
|
-
contractAddress(value) {
|
197
|
-
return getContractAddress(value);
|
198
|
-
}
|
199
|
-
// Strict! Used on input.
|
200
|
-
blockTag(blockTag) {
|
201
|
-
if (blockTag == null) {
|
202
|
-
return "latest";
|
203
|
-
}
|
204
|
-
if (blockTag === "earliest") {
|
205
|
-
return "0x0";
|
206
|
-
}
|
207
|
-
switch (blockTag) {
|
208
|
-
case "earliest": return "0x0";
|
209
|
-
case "latest":
|
210
|
-
case "pending":
|
211
|
-
case "safe":
|
212
|
-
case "finalized":
|
213
|
-
return blockTag;
|
214
|
-
}
|
215
|
-
if (typeof (blockTag) === "number" || isHexString(blockTag)) {
|
216
|
-
return hexValue(blockTag);
|
217
|
-
}
|
218
|
-
throw new Error("invalid blockTag");
|
219
|
-
}
|
220
|
-
// Requires a hash, optionally requires 0x prefix; returns prefixed lowercase hash.
|
221
|
-
hash(value, strict) {
|
222
|
-
const result = this.hex(value, strict);
|
223
|
-
if (hexDataLength(result) !== 32) {
|
224
|
-
return logger.throwArgumentError("invalid hash", "value", value);
|
225
|
-
}
|
226
|
-
return result;
|
227
|
-
}
|
228
|
-
// Returns the difficulty as a number, or if too large (i.e. PoA network) null
|
229
|
-
difficulty(value) {
|
230
|
-
if (value == null) {
|
231
|
-
return null;
|
232
|
-
}
|
233
|
-
const v = BigNumber.from(value);
|
234
|
-
try {
|
235
|
-
return v.toNumber();
|
236
|
-
}
|
237
|
-
catch (error) { }
|
238
|
-
return null;
|
239
|
-
}
|
240
|
-
uint256(value) {
|
241
|
-
if (!isHexString(value)) {
|
242
|
-
throw new Error("invalid uint256");
|
243
|
-
}
|
244
|
-
return hexZeroPad(value, 32);
|
245
|
-
}
|
246
|
-
_block(value, format) {
|
247
|
-
if (value.author != null && value.miner == null) {
|
248
|
-
value.miner = value.author;
|
249
|
-
}
|
250
|
-
// The difficulty may need to come from _difficulty in recursed blocks
|
251
|
-
const difficulty = (value._difficulty != null) ? value._difficulty : value.difficulty;
|
252
|
-
const result = Formatter.check(format, value);
|
253
|
-
result._difficulty = ((difficulty == null) ? null : BigNumber.from(difficulty));
|
254
|
-
return result;
|
255
|
-
}
|
256
|
-
block(value) {
|
257
|
-
return this._block(value, this.formats.block);
|
258
|
-
}
|
259
|
-
blockWithTransactions(value) {
|
260
|
-
return this._block(value, this.formats.blockWithTransactions);
|
261
|
-
}
|
262
|
-
// Strict! Used on input.
|
263
|
-
transactionRequest(value) {
|
264
|
-
return Formatter.check(this.formats.transactionRequest, value);
|
265
|
-
}
|
266
|
-
transactionResponse(transaction) {
|
267
|
-
// Rename gas to gasLimit
|
268
|
-
if (transaction.gas != null && transaction.gasLimit == null) {
|
269
|
-
transaction.gasLimit = transaction.gas;
|
270
|
-
}
|
271
|
-
// Some clients (TestRPC) do strange things like return 0x0 for the
|
272
|
-
// 0 address; correct this to be a real address
|
273
|
-
if (transaction.to && BigNumber.from(transaction.to).isZero()) {
|
274
|
-
transaction.to = "0x0000000000000000000000000000000000000000";
|
275
|
-
}
|
276
|
-
// Rename input to data
|
277
|
-
if (transaction.input != null && transaction.data == null) {
|
278
|
-
transaction.data = transaction.input;
|
279
|
-
}
|
280
|
-
// If to and creates are empty, populate the creates from the transaction
|
281
|
-
if (transaction.to == null && transaction.creates == null) {
|
282
|
-
transaction.creates = this.contractAddress(transaction);
|
283
|
-
}
|
284
|
-
if ((transaction.type === 1 || transaction.type === 2) && transaction.accessList == null) {
|
285
|
-
transaction.accessList = [];
|
286
|
-
}
|
287
|
-
const result = Formatter.check(this.formats.transaction, transaction);
|
288
|
-
if (transaction.chainId != null) {
|
289
|
-
let chainId = transaction.chainId;
|
290
|
-
if (isHexString(chainId)) {
|
291
|
-
chainId = BigNumber.from(chainId).toNumber();
|
292
|
-
}
|
293
|
-
result.chainId = chainId;
|
294
|
-
}
|
295
|
-
else {
|
296
|
-
let chainId = transaction.networkId;
|
297
|
-
// geth-etc returns chainId
|
298
|
-
if (chainId == null && result.v == null) {
|
299
|
-
chainId = transaction.chainId;
|
300
|
-
}
|
301
|
-
if (isHexString(chainId)) {
|
302
|
-
chainId = BigNumber.from(chainId).toNumber();
|
303
|
-
}
|
304
|
-
if (typeof (chainId) !== "number" && result.v != null) {
|
305
|
-
chainId = (result.v - 35) / 2;
|
306
|
-
if (chainId < 0) {
|
307
|
-
chainId = 0;
|
308
|
-
}
|
309
|
-
chainId = parseInt(chainId);
|
310
|
-
}
|
311
|
-
if (typeof (chainId) !== "number") {
|
312
|
-
chainId = 0;
|
313
|
-
}
|
314
|
-
result.chainId = chainId;
|
315
|
-
}
|
316
|
-
// 0x0000... should actually be null
|
317
|
-
if (result.blockHash && result.blockHash.replace(/0/g, "") === "x") {
|
318
|
-
result.blockHash = null;
|
319
|
-
}
|
320
|
-
return result;
|
321
|
-
}
|
322
|
-
transaction(value) {
|
323
|
-
return parse(value);
|
324
|
-
}
|
325
|
-
receiptLog(value) {
|
326
|
-
return Formatter.check(this.formats.receiptLog, value);
|
327
|
-
}
|
328
|
-
receipt(value) {
|
329
|
-
const result = Formatter.check(this.formats.receipt, value);
|
330
|
-
// RSK incorrectly implemented EIP-658, so we munge things a bit here for it
|
331
|
-
if (result.root != null) {
|
332
|
-
if (result.root.length <= 4) {
|
333
|
-
// Could be 0x00, 0x0, 0x01 or 0x1
|
334
|
-
const value = BigNumber.from(result.root).toNumber();
|
335
|
-
if (value === 0 || value === 1) {
|
336
|
-
// Make sure if both are specified, they match
|
337
|
-
if (result.status != null && (result.status !== value)) {
|
338
|
-
logger.throwArgumentError("alt-root-status/status mismatch", "value", { root: result.root, status: result.status });
|
339
|
-
}
|
340
|
-
result.status = value;
|
341
|
-
delete result.root;
|
342
|
-
}
|
343
|
-
else {
|
344
|
-
logger.throwArgumentError("invalid alt-root-status", "value.root", result.root);
|
345
|
-
}
|
346
|
-
}
|
347
|
-
else if (result.root.length !== 66) {
|
348
|
-
// Must be a valid bytes32
|
349
|
-
logger.throwArgumentError("invalid root hash", "value.root", result.root);
|
350
|
-
}
|
351
|
-
}
|
352
|
-
if (result.status != null) {
|
353
|
-
result.byzantium = true;
|
354
|
-
}
|
355
|
-
return result;
|
356
|
-
}
|
357
|
-
topics(value) {
|
358
|
-
if (Array.isArray(value)) {
|
359
|
-
return value.map((v) => this.topics(v));
|
360
|
-
}
|
361
|
-
else if (value != null) {
|
362
|
-
return this.hash(value, true);
|
363
|
-
}
|
364
|
-
return null;
|
365
|
-
}
|
366
|
-
filter(value) {
|
367
|
-
return Formatter.check(this.formats.filter, value);
|
368
|
-
}
|
369
|
-
filterLog(value) {
|
370
|
-
return Formatter.check(this.formats.filterLog, value);
|
371
|
-
}
|
372
|
-
static check(format, object) {
|
373
|
-
const result = {};
|
374
|
-
for (const key in format) {
|
375
|
-
try {
|
376
|
-
const value = format[key](object[key]);
|
377
|
-
if (value !== undefined) {
|
378
|
-
result[key] = value;
|
379
|
-
}
|
380
|
-
}
|
381
|
-
catch (error) {
|
382
|
-
error.checkKey = key;
|
383
|
-
error.checkValue = object[key];
|
384
|
-
throw error;
|
385
|
-
}
|
386
|
-
}
|
387
|
-
return result;
|
388
|
-
}
|
389
|
-
// if value is null-ish, nullValue is returned
|
390
|
-
static allowNull(format, nullValue) {
|
391
|
-
return (function (value) {
|
392
|
-
if (value == null) {
|
393
|
-
return nullValue;
|
394
|
-
}
|
395
|
-
return format(value);
|
396
|
-
});
|
397
|
-
}
|
398
|
-
// If value is false-ish, replaceValue is returned
|
399
|
-
static allowFalsish(format, replaceValue) {
|
400
|
-
return (function (value) {
|
401
|
-
if (!value) {
|
402
|
-
return replaceValue;
|
403
|
-
}
|
404
|
-
return format(value);
|
405
|
-
});
|
406
|
-
}
|
407
|
-
// Requires an Array satisfying check
|
408
|
-
static arrayOf(format) {
|
409
|
-
return (function (array) {
|
410
|
-
if (!Array.isArray(array)) {
|
411
|
-
throw new Error("not an array");
|
412
|
-
}
|
413
|
-
const result = [];
|
414
|
-
array.forEach(function (value) {
|
415
|
-
result.push(format(value));
|
416
|
-
});
|
417
|
-
return result;
|
418
|
-
});
|
419
|
-
}
|
420
|
-
}
|
421
|
-
|
422
|
-
export { Formatter };
|