@waku/rln 0.1.5-cad3e7a.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.
Files changed (168) hide show
  1. package/bundle/index.js +4 -3
  2. package/bundle/packages/rln/dist/contract/constants.js +2 -1
  3. package/bundle/packages/rln/dist/contract/{rln_light_contract.js → rln_base_contract.js} +191 -186
  4. package/bundle/packages/rln/dist/contract/rln_contract.js +10 -420
  5. package/bundle/packages/rln/dist/contract/types.js +9 -0
  6. package/bundle/packages/rln/dist/create.js +1 -1
  7. package/bundle/packages/rln/dist/{rln_light.js → credentials_manager.js} +114 -48
  8. package/bundle/packages/rln/dist/identity.js +0 -9
  9. package/bundle/packages/rln/dist/keystore/keystore.js +31 -17
  10. package/bundle/packages/rln/dist/rln.js +57 -167
  11. package/bundle/packages/rln/dist/utils/bytes.js +8 -2
  12. package/bundle/packages/rln/dist/utils/metamask.js +2 -2
  13. package/bundle/packages/rln/dist/zerokit.js +5 -5
  14. package/dist/.tsbuildinfo +1 -1
  15. package/dist/contract/constants.d.ts +1 -1
  16. package/dist/contract/constants.js +1 -1
  17. package/dist/contract/constants.js.map +1 -1
  18. package/dist/contract/index.d.ts +1 -0
  19. package/dist/contract/index.js +1 -0
  20. package/dist/contract/index.js.map +1 -1
  21. package/dist/contract/{rln_light_contract.d.ts → rln_base_contract.d.ts} +24 -58
  22. package/dist/contract/{rln_light_contract.js → rln_base_contract.js} +189 -184
  23. package/dist/contract/rln_base_contract.js.map +1 -0
  24. package/dist/contract/rln_contract.d.ts +5 -122
  25. package/dist/contract/rln_contract.js +8 -417
  26. package/dist/contract/rln_contract.js.map +1 -1
  27. package/dist/contract/types.d.ts +45 -0
  28. package/dist/contract/types.js +8 -0
  29. package/dist/contract/types.js.map +1 -0
  30. package/dist/create.js +1 -1
  31. package/dist/create.js.map +1 -1
  32. package/dist/credentials_manager.d.ts +44 -0
  33. package/dist/credentials_manager.js +197 -0
  34. package/dist/credentials_manager.js.map +1 -0
  35. package/dist/identity.d.ts +0 -1
  36. package/dist/identity.js +0 -9
  37. package/dist/identity.js.map +1 -1
  38. package/dist/index.d.ts +5 -4
  39. package/dist/index.js +4 -3
  40. package/dist/index.js.map +1 -1
  41. package/dist/keystore/keystore.d.ts +1 -0
  42. package/dist/keystore/keystore.js +31 -17
  43. package/dist/keystore/keystore.js.map +1 -1
  44. package/dist/keystore/types.d.ts +3 -3
  45. package/dist/rln.d.ts +9 -52
  46. package/dist/rln.js +55 -164
  47. package/dist/rln.js.map +1 -1
  48. package/dist/types.d.ts +27 -0
  49. package/dist/types.js +2 -0
  50. package/dist/types.js.map +1 -0
  51. package/dist/utils/bytes.js +8 -2
  52. package/dist/utils/bytes.js.map +1 -1
  53. package/dist/zerokit.d.ts +3 -3
  54. package/dist/zerokit.js +5 -5
  55. package/dist/zerokit.js.map +1 -1
  56. package/package.json +1 -1
  57. package/src/contract/constants.ts +1 -1
  58. package/src/contract/index.ts +1 -0
  59. package/src/contract/{rln_light_contract.ts → rln_base_contract.ts} +308 -323
  60. package/src/contract/rln_contract.ts +9 -663
  61. package/src/contract/types.ts +53 -0
  62. package/src/create.ts +1 -1
  63. package/src/credentials_manager.ts +282 -0
  64. package/src/identity.ts +0 -10
  65. package/src/index.ts +7 -5
  66. package/src/keystore/keystore.ts +57 -31
  67. package/src/keystore/types.ts +3 -3
  68. package/src/rln.ts +68 -259
  69. package/src/types.ts +31 -0
  70. package/src/utils/bytes.ts +10 -2
  71. package/src/zerokit.ts +3 -3
  72. package/bundle/_virtual/__node-resolve_empty.js +0 -6
  73. package/bundle/_virtual/_node-resolve_empty.js +0 -3
  74. package/bundle/_virtual/bn.js +0 -3
  75. package/bundle/_virtual/common.js +0 -3
  76. package/bundle/_virtual/common2.js +0 -3
  77. package/bundle/_virtual/hash.js +0 -3
  78. package/bundle/_virtual/inherits_browser.js +0 -3
  79. package/bundle/_virtual/ripemd.js +0 -3
  80. package/bundle/_virtual/sha.js +0 -3
  81. package/bundle/_virtual/sha3.js +0 -3
  82. package/bundle/_virtual/utils3.js +0 -3
  83. package/bundle/node_modules/@ethersproject/abi/lib.esm/_version.js +0 -3
  84. package/bundle/node_modules/@ethersproject/abi/lib.esm/abi-coder.js +0 -96
  85. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/abstract-coder.js +0 -148
  86. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/address.js +0 -26
  87. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/anonymous.js +0 -20
  88. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/array.js +0 -210
  89. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/boolean.js +0 -18
  90. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/bytes.js +0 -30
  91. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/fixed-bytes.js +0 -26
  92. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/null.js +0 -22
  93. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/number.js +0 -43
  94. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/string.js +0 -19
  95. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/tuple.js +0 -58
  96. package/bundle/node_modules/@ethersproject/abi/lib.esm/fragments.js +0 -854
  97. package/bundle/node_modules/@ethersproject/abi/lib.esm/interface.js +0 -609
  98. package/bundle/node_modules/@ethersproject/abstract-provider/lib.esm/_version.js +0 -3
  99. package/bundle/node_modules/@ethersproject/abstract-provider/lib.esm/index.js +0 -66
  100. package/bundle/node_modules/@ethersproject/abstract-signer/lib.esm/_version.js +0 -3
  101. package/bundle/node_modules/@ethersproject/abstract-signer/lib.esm/index.js +0 -302
  102. package/bundle/node_modules/@ethersproject/address/lib.esm/_version.js +0 -3
  103. package/bundle/node_modules/@ethersproject/address/lib.esm/index.js +0 -110
  104. package/bundle/node_modules/@ethersproject/base64/lib.esm/base64.js +0 -20
  105. package/bundle/node_modules/@ethersproject/basex/lib.esm/index.js +0 -120
  106. package/bundle/node_modules/@ethersproject/bignumber/lib.esm/_version.js +0 -3
  107. package/bundle/node_modules/@ethersproject/bignumber/lib.esm/bignumber.js +0 -287
  108. package/bundle/node_modules/@ethersproject/bytes/lib.esm/_version.js +0 -3
  109. package/bundle/node_modules/@ethersproject/bytes/lib.esm/index.js +0 -402
  110. package/bundle/node_modules/@ethersproject/constants/lib.esm/addresses.js +0 -3
  111. package/bundle/node_modules/@ethersproject/constants/lib.esm/bignumbers.js +0 -8
  112. package/bundle/node_modules/@ethersproject/constants/lib.esm/hashes.js +0 -3
  113. package/bundle/node_modules/@ethersproject/contracts/lib.esm/_version.js +0 -3
  114. package/bundle/node_modules/@ethersproject/contracts/lib.esm/index.js +0 -893
  115. package/bundle/node_modules/@ethersproject/hash/lib.esm/_version.js +0 -3
  116. package/bundle/node_modules/@ethersproject/hash/lib.esm/ens-normalize/decoder.js +0 -256
  117. package/bundle/node_modules/@ethersproject/hash/lib.esm/ens-normalize/include.js +0 -36
  118. package/bundle/node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js +0 -135
  119. package/bundle/node_modules/@ethersproject/hash/lib.esm/id.js +0 -8
  120. package/bundle/node_modules/@ethersproject/hash/lib.esm/namehash.js +0 -64
  121. package/bundle/node_modules/@ethersproject/hash/lib.esm/typed-data.js +0 -443
  122. package/bundle/node_modules/@ethersproject/keccak256/lib.esm/index.js +0 -8
  123. package/bundle/node_modules/@ethersproject/keccak256/node_modules/js-sha3/src/sha3.js +0 -660
  124. package/bundle/node_modules/@ethersproject/logger/lib.esm/_version.js +0 -3
  125. package/bundle/node_modules/@ethersproject/logger/lib.esm/index.js +0 -352
  126. package/bundle/node_modules/@ethersproject/networks/lib.esm/_version.js +0 -3
  127. package/bundle/node_modules/@ethersproject/networks/lib.esm/index.js +0 -248
  128. package/bundle/node_modules/@ethersproject/properties/lib.esm/_version.js +0 -3
  129. package/bundle/node_modules/@ethersproject/properties/lib.esm/index.js +0 -127
  130. package/bundle/node_modules/@ethersproject/providers/lib.esm/_version.js +0 -3
  131. package/bundle/node_modules/@ethersproject/providers/lib.esm/base-provider.js +0 -2007
  132. package/bundle/node_modules/@ethersproject/providers/lib.esm/formatter.js +0 -422
  133. package/bundle/node_modules/@ethersproject/providers/lib.esm/json-rpc-provider.js +0 -674
  134. package/bundle/node_modules/@ethersproject/providers/lib.esm/web3-provider.js +0 -132
  135. package/bundle/node_modules/@ethersproject/rlp/lib.esm/_version.js +0 -3
  136. package/bundle/node_modules/@ethersproject/rlp/lib.esm/index.js +0 -120
  137. package/bundle/node_modules/@ethersproject/sha2/lib.esm/sha2.js +0 -8
  138. package/bundle/node_modules/@ethersproject/signing-key/lib.esm/_version.js +0 -3
  139. package/bundle/node_modules/@ethersproject/signing-key/lib.esm/elliptic.js +0 -2430
  140. package/bundle/node_modules/@ethersproject/signing-key/lib.esm/index.js +0 -76
  141. package/bundle/node_modules/@ethersproject/strings/lib.esm/_version.js +0 -3
  142. package/bundle/node_modules/@ethersproject/strings/lib.esm/utf8.js +0 -219
  143. package/bundle/node_modules/@ethersproject/transactions/lib.esm/_version.js +0 -3
  144. package/bundle/node_modules/@ethersproject/transactions/lib.esm/index.js +0 -279
  145. package/bundle/node_modules/@ethersproject/web/lib.esm/_version.js +0 -3
  146. package/bundle/node_modules/@ethersproject/web/lib.esm/geturl.js +0 -69
  147. package/bundle/node_modules/@ethersproject/web/lib.esm/index.js +0 -404
  148. package/bundle/node_modules/bech32/index.js +0 -187
  149. package/bundle/node_modules/bn.js/lib/bn.js +0 -3361
  150. package/bundle/node_modules/hash.js/lib/hash/common.js +0 -97
  151. package/bundle/node_modules/hash.js/lib/hash/hmac.js +0 -51
  152. package/bundle/node_modules/hash.js/lib/hash/ripemd.js +0 -152
  153. package/bundle/node_modules/hash.js/lib/hash/sha/1.js +0 -81
  154. package/bundle/node_modules/hash.js/lib/hash/sha/224.js +0 -33
  155. package/bundle/node_modules/hash.js/lib/hash/sha/256.js +0 -113
  156. package/bundle/node_modules/hash.js/lib/hash/sha/384.js +0 -39
  157. package/bundle/node_modules/hash.js/lib/hash/sha/512.js +0 -336
  158. package/bundle/node_modules/hash.js/lib/hash/sha/common.js +0 -53
  159. package/bundle/node_modules/hash.js/lib/hash/sha.js +0 -14
  160. package/bundle/node_modules/hash.js/lib/hash/utils.js +0 -282
  161. package/bundle/node_modules/hash.js/lib/hash.js +0 -33
  162. package/bundle/node_modules/inherits/inherits_browser.js +0 -33
  163. package/bundle/node_modules/minimalistic-assert/index.js +0 -13
  164. package/dist/contract/rln_light_contract.js.map +0 -1
  165. package/dist/rln_light.d.ts +0 -64
  166. package/dist/rln_light.js +0 -144
  167. package/dist/rln_light.js.map +0 -1
  168. package/src/rln_light.ts +0 -235
@@ -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 };