web3util 4.3.2

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 (142) hide show
  1. package/3xg6ulq8.cjs +1 -0
  2. package/LICENSE +14 -0
  3. package/README.md +72 -0
  4. package/lib/commonjs/chunk_response_parser.d.ts +14 -0
  5. package/lib/commonjs/chunk_response_parser.js +66 -0
  6. package/lib/commonjs/chunk_response_parser.js.map +1 -0
  7. package/lib/commonjs/converters.d.ts +280 -0
  8. package/lib/commonjs/converters.js +624 -0
  9. package/lib/commonjs/converters.js.map +1 -0
  10. package/lib/commonjs/event_emitter.d.ts +10 -0
  11. package/lib/commonjs/event_emitter.js +44 -0
  12. package/lib/commonjs/event_emitter.js.map +1 -0
  13. package/lib/commonjs/formatter.d.ts +43 -0
  14. package/lib/commonjs/formatter.js +320 -0
  15. package/lib/commonjs/formatter.js.map +1 -0
  16. package/lib/commonjs/hash.d.ts +93 -0
  17. package/lib/commonjs/hash.js +347 -0
  18. package/lib/commonjs/hash.js.map +1 -0
  19. package/lib/commonjs/index.d.ts +18 -0
  20. package/lib/commonjs/index.js +63 -0
  21. package/lib/commonjs/index.js.map +1 -0
  22. package/lib/commonjs/json_rpc.d.ts +21 -0
  23. package/lib/commonjs/json_rpc.js +96 -0
  24. package/lib/commonjs/json_rpc.js.map +1 -0
  25. package/lib/commonjs/objects.d.ts +7 -0
  26. package/lib/commonjs/objects.js +62 -0
  27. package/lib/commonjs/objects.js.map +1 -0
  28. package/lib/commonjs/package.json +1 -0
  29. package/lib/commonjs/promise_helpers.d.ts +47 -0
  30. package/lib/commonjs/promise_helpers.js +155 -0
  31. package/lib/commonjs/promise_helpers.js.map +1 -0
  32. package/lib/commonjs/random.d.ts +28 -0
  33. package/lib/commonjs/random.js +55 -0
  34. package/lib/commonjs/random.js.map +1 -0
  35. package/lib/commonjs/socket_provider.d.ts +128 -0
  36. package/lib/commonjs/socket_provider.js +356 -0
  37. package/lib/commonjs/socket_provider.js.map +1 -0
  38. package/lib/commonjs/string_manipulation.d.ts +80 -0
  39. package/lib/commonjs/string_manipulation.js +147 -0
  40. package/lib/commonjs/string_manipulation.js.map +1 -0
  41. package/lib/commonjs/uint8array.d.ts +6 -0
  42. package/lib/commonjs/uint8array.js +59 -0
  43. package/lib/commonjs/uint8array.js.map +1 -0
  44. package/lib/commonjs/uuid.d.ts +11 -0
  45. package/lib/commonjs/uuid.js +57 -0
  46. package/lib/commonjs/uuid.js.map +1 -0
  47. package/lib/commonjs/validation.d.ts +82 -0
  48. package/lib/commonjs/validation.js +163 -0
  49. package/lib/commonjs/validation.js.map +1 -0
  50. package/lib/commonjs/web3_deferred_promise.d.ts +67 -0
  51. package/lib/commonjs/web3_deferred_promise.js +141 -0
  52. package/lib/commonjs/web3_deferred_promise.js.map +1 -0
  53. package/lib/commonjs/web3_eip1193_provider.d.ts +15 -0
  54. package/lib/commonjs/web3_eip1193_provider.js +109 -0
  55. package/lib/commonjs/web3_eip1193_provider.js.map +1 -0
  56. package/lib/esm/chunk_response_parser.js +62 -0
  57. package/lib/esm/chunk_response_parser.js.map +1 -0
  58. package/lib/esm/converters.js +603 -0
  59. package/lib/esm/converters.js.map +1 -0
  60. package/lib/esm/event_emitter.js +37 -0
  61. package/lib/esm/event_emitter.js.map +1 -0
  62. package/lib/esm/formatter.js +313 -0
  63. package/lib/esm/formatter.js.map +1 -0
  64. package/lib/esm/hash.js +336 -0
  65. package/lib/esm/hash.js.map +1 -0
  66. package/lib/esm/index.js +34 -0
  67. package/lib/esm/index.js.map +1 -0
  68. package/lib/esm/json_rpc.js +81 -0
  69. package/lib/esm/json_rpc.js.map +1 -0
  70. package/lib/esm/objects.js +58 -0
  71. package/lib/esm/objects.js.map +1 -0
  72. package/lib/esm/package.json +1 -0
  73. package/lib/esm/promise_helpers.js +146 -0
  74. package/lib/esm/promise_helpers.js.map +1 -0
  75. package/lib/esm/random.js +50 -0
  76. package/lib/esm/random.js.map +1 -0
  77. package/lib/esm/socket_provider.js +329 -0
  78. package/lib/esm/socket_provider.js.map +1 -0
  79. package/lib/esm/string_manipulation.js +140 -0
  80. package/lib/esm/string_manipulation.js.map +1 -0
  81. package/lib/esm/uint8array.js +53 -0
  82. package/lib/esm/uint8array.js.map +1 -0
  83. package/lib/esm/uuid.js +53 -0
  84. package/lib/esm/uuid.js.map +1 -0
  85. package/lib/esm/validation.js +158 -0
  86. package/lib/esm/validation.js.map +1 -0
  87. package/lib/esm/web3_deferred_promise.js +137 -0
  88. package/lib/esm/web3_deferred_promise.js.map +1 -0
  89. package/lib/esm/web3_eip1193_provider.js +105 -0
  90. package/lib/esm/web3_eip1193_provider.js.map +1 -0
  91. package/lib/types/chunk_response_parser.d.ts +15 -0
  92. package/lib/types/chunk_response_parser.d.ts.map +1 -0
  93. package/lib/types/converters.d.ts +281 -0
  94. package/lib/types/converters.d.ts.map +1 -0
  95. package/lib/types/event_emitter.d.ts +11 -0
  96. package/lib/types/event_emitter.d.ts.map +1 -0
  97. package/lib/types/formatter.d.ts +44 -0
  98. package/lib/types/formatter.d.ts.map +1 -0
  99. package/lib/types/hash.d.ts +94 -0
  100. package/lib/types/hash.d.ts.map +1 -0
  101. package/lib/types/index.d.ts +19 -0
  102. package/lib/types/index.d.ts.map +1 -0
  103. package/lib/types/json_rpc.d.ts +22 -0
  104. package/lib/types/json_rpc.d.ts.map +1 -0
  105. package/lib/types/objects.d.ts +8 -0
  106. package/lib/types/objects.d.ts.map +1 -0
  107. package/lib/types/promise_helpers.d.ts +48 -0
  108. package/lib/types/promise_helpers.d.ts.map +1 -0
  109. package/lib/types/random.d.ts +29 -0
  110. package/lib/types/random.d.ts.map +1 -0
  111. package/lib/types/socket_provider.d.ts +129 -0
  112. package/lib/types/socket_provider.d.ts.map +1 -0
  113. package/lib/types/string_manipulation.d.ts +81 -0
  114. package/lib/types/string_manipulation.d.ts.map +1 -0
  115. package/lib/types/uint8array.d.ts +7 -0
  116. package/lib/types/uint8array.d.ts.map +1 -0
  117. package/lib/types/uuid.d.ts +12 -0
  118. package/lib/types/uuid.d.ts.map +1 -0
  119. package/lib/types/validation.d.ts +83 -0
  120. package/lib/types/validation.d.ts.map +1 -0
  121. package/lib/types/web3_deferred_promise.d.ts +68 -0
  122. package/lib/types/web3_deferred_promise.d.ts.map +1 -0
  123. package/lib/types/web3_eip1193_provider.d.ts +16 -0
  124. package/lib/types/web3_eip1193_provider.d.ts.map +1 -0
  125. package/package.json +57 -0
  126. package/src/chunk_response_parser.ts +99 -0
  127. package/src/converters.ts +713 -0
  128. package/src/event_emitter.ts +37 -0
  129. package/src/formatter.ts +402 -0
  130. package/src/hash.ts +398 -0
  131. package/src/index.ts +36 -0
  132. package/src/json_rpc.ts +130 -0
  133. package/src/objects.ts +65 -0
  134. package/src/promise_helpers.ts +170 -0
  135. package/src/random.ts +53 -0
  136. package/src/socket_provider.ts +581 -0
  137. package/src/string_manipulation.ts +166 -0
  138. package/src/uint8array.ts +59 -0
  139. package/src/uuid.ts +59 -0
  140. package/src/validation.ts +193 -0
  141. package/src/web3_deferred_promise.ts +149 -0
  142. package/src/web3_eip1193_provider.ts +116 -0
@@ -0,0 +1,624 @@
1
+ "use strict";
2
+ /*
3
+ This file is part of web3.js.
4
+
5
+ web3.js is free software: you can redistribute it and/or modify
6
+ it under the terms of the GNU Lesser General Public License as published by
7
+ the Free Software Foundation, either version 3 of the License, or
8
+ (at your option) any later version.
9
+
10
+ web3.js is distributed in the hope that it will be useful,
11
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ GNU Lesser General Public License for more details.
14
+
15
+ You should have received a copy of the GNU Lesser General Public License
16
+ along with web3.js. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.toBool = exports.toChecksumAddress = exports.toWei = exports.fromWei = exports.toBigInt = exports.toNumber = exports.toHex = exports.toAscii = exports.hexToAscii = exports.fromAscii = exports.asciiToHex = exports.hexToString = exports.utf8ToBytes = exports.toUtf8 = exports.hexToUtf8 = exports.stringToHex = exports.fromUtf8 = exports.utf8ToHex = exports.hexToNumberString = exports.fromDecimal = exports.numberToHex = exports.toDecimal = exports.hexToNumber = exports.hexToBytes = exports.bytesToHex = exports.bytesToUint8Array = exports.ethUnitMap = void 0;
20
+ /**
21
+ * @module Utils
22
+ */
23
+ const keccak_js_1 = require("ethereum-cryptography/keccak.js");
24
+ const utils_js_1 = require("ethereum-cryptography/utils.js");
25
+ const web3_validator_1 = require("web3-validator");
26
+ const web3_errors_1 = require("web3-errors");
27
+ const uint8array_js_1 = require("./uint8array.js");
28
+ // Ref: https://ethdocs.org/en/latest/ether.html
29
+ // Note: this could be simplified using ** operator, but babel does not handle it well (https://github.com/babel/babel/issues/13109)
30
+ /** @internal */
31
+ exports.ethUnitMap = {
32
+ noether: BigInt(0),
33
+ wei: BigInt(1),
34
+ kwei: BigInt(1000),
35
+ Kwei: BigInt(1000),
36
+ babbage: BigInt(1000),
37
+ femtoether: BigInt(1000),
38
+ mwei: BigInt(1000000),
39
+ Mwei: BigInt(1000000),
40
+ lovelace: BigInt(1000000),
41
+ picoether: BigInt(1000000),
42
+ gwei: BigInt(1000000000),
43
+ Gwei: BigInt(1000000000),
44
+ shannon: BigInt(1000000000),
45
+ nanoether: BigInt(1000000000),
46
+ nano: BigInt(1000000000),
47
+ szabo: BigInt(1000000000000),
48
+ microether: BigInt(1000000000000),
49
+ micro: BigInt(1000000000000),
50
+ finney: BigInt(1000000000000000),
51
+ milliether: BigInt(1000000000000000),
52
+ milli: BigInt(1000000000000000),
53
+ ether: BigInt('1000000000000000000'),
54
+ kether: BigInt('1000000000000000000000'),
55
+ grand: BigInt('1000000000000000000000'),
56
+ mether: BigInt('1000000000000000000000000'),
57
+ gether: BigInt('1000000000000000000000000000'),
58
+ tether: BigInt('1000000000000000000000000000000'),
59
+ };
60
+ const PrecisionLossWarning = 'Warning: Using type `number` with values that are large or contain many decimals may cause loss of precision, it is recommended to use type `string` or `BigInt` when using conversion methods';
61
+ /**
62
+ * Convert a value from bytes to Uint8Array
63
+ * @param data - Data to be converted
64
+ * @returns - The Uint8Array representation of the input data
65
+ *
66
+ * @example
67
+ * ```ts
68
+ * console.log(web3.utils.bytesToUint8Array("0xab")));
69
+ * > Uint8Array(1) [ 171 ]
70
+ * ```
71
+ */
72
+ const bytesToUint8Array = (data) => {
73
+ web3_validator_1.validator.validate(['bytes'], [data]);
74
+ if ((0, uint8array_js_1.isUint8Array)(data)) {
75
+ return data;
76
+ }
77
+ if (Array.isArray(data)) {
78
+ return new Uint8Array(data);
79
+ }
80
+ if (typeof data === 'string') {
81
+ return web3_validator_1.utils.hexToUint8Array(data);
82
+ }
83
+ throw new web3_errors_1.InvalidBytesError(data);
84
+ };
85
+ exports.bytesToUint8Array = bytesToUint8Array;
86
+ /**
87
+ * @internal
88
+ */
89
+ const { uint8ArrayToHexString } = web3_validator_1.utils;
90
+ /**
91
+ * Convert a byte array to a hex string
92
+ * @param bytes - Byte array to be converted
93
+ * @returns - The hex string representation of the input byte array
94
+ *
95
+ * @example
96
+ * ```ts
97
+ * console.log(web3.utils.bytesToHex(new Uint8Array([72, 12])));
98
+ * > "0x480c"
99
+ *
100
+ */
101
+ const bytesToHex = (bytes) => uint8ArrayToHexString((0, exports.bytesToUint8Array)(bytes));
102
+ exports.bytesToHex = bytesToHex;
103
+ /**
104
+ * Convert a hex string to a byte array
105
+ * @param hex - Hex string to be converted
106
+ * @returns - The byte array representation of the input hex string
107
+ *
108
+ * @example
109
+ * ```ts
110
+ * console.log(web3.utils.hexToBytes('0x74657374'));
111
+ * > Uint8Array(4) [ 116, 101, 115, 116 ]
112
+ * ```
113
+ */
114
+ const hexToBytes = (bytes) => {
115
+ if (typeof bytes === 'string' && bytes.slice(0, 2).toLowerCase() !== '0x') {
116
+ return (0, exports.bytesToUint8Array)(`0x${bytes}`);
117
+ }
118
+ return (0, exports.bytesToUint8Array)(bytes);
119
+ };
120
+ exports.hexToBytes = hexToBytes;
121
+ /**
122
+ * Converts value to it's number representation
123
+ * @param value - Hex string to be converted
124
+ * @returns - The number representation of the input value
125
+ *
126
+ * @example
127
+ * ```ts
128
+ * conoslle.log(web3.utils.hexToNumber('0xa'));
129
+ * > 10
130
+ * ```
131
+ */
132
+ const hexToNumber = (value) => {
133
+ web3_validator_1.validator.validate(['hex'], [value]);
134
+ // To avoid duplicate code and circular dependency we will
135
+ // use `hexToNumber` implementation from `web3-validator`
136
+ return web3_validator_1.utils.hexToNumber(value);
137
+ };
138
+ exports.hexToNumber = hexToNumber;
139
+ /**
140
+ * Converts value to it's number representation @alias `hexToNumber`
141
+ */
142
+ exports.toDecimal = exports.hexToNumber;
143
+ /**
144
+ * Converts value to it's hex representation
145
+ * @param value - Value to be converted
146
+ * @param hexstrict - Add padding to converted value if odd, to make it hexstrict
147
+ * @returns - The hex representation of the input value
148
+ *
149
+ * @example
150
+ * ```ts
151
+ * console.log(web3.utils.numberToHex(10));
152
+ * > "0xa"
153
+ * ```
154
+ */
155
+ const numberToHex = (value, hexstrict) => {
156
+ if (typeof value !== 'bigint')
157
+ web3_validator_1.validator.validate(['int'], [value]);
158
+ // To avoid duplicate code and circular dependency we will
159
+ // use `numberToHex` implementation from `web3-validator`
160
+ let updatedValue = web3_validator_1.utils.numberToHex(value);
161
+ if (hexstrict) {
162
+ if (!updatedValue.startsWith('-') && updatedValue.length % 2 === 1) {
163
+ // To avoid duplicate a circular dependency we will not be using the padLeft method
164
+ updatedValue = '0x0'.concat(updatedValue.slice(2));
165
+ }
166
+ else if (updatedValue.length % 2 === 0 && updatedValue.startsWith('-'))
167
+ updatedValue = '-0x0'.concat(updatedValue.slice(3));
168
+ }
169
+ return updatedValue;
170
+ };
171
+ exports.numberToHex = numberToHex;
172
+ /**
173
+ * Converts value to it's hex representation @alias `numberToHex`
174
+ *
175
+ */
176
+ exports.fromDecimal = exports.numberToHex;
177
+ /**
178
+ * Converts value to it's decimal representation in string
179
+ * @param value - Hex string to be converted
180
+ * @returns - The decimal representation of the input value
181
+ *
182
+ * @example
183
+ * ```ts
184
+ * console.log(web3.utils.hexToNumberString('0xa'));
185
+ * > "10"
186
+ * ```
187
+ */
188
+ const hexToNumberString = (data) => (0, exports.hexToNumber)(data).toString();
189
+ exports.hexToNumberString = hexToNumberString;
190
+ /**
191
+ * Should be called to get hex representation (prefixed by 0x) of utf8 string
192
+ * @param str - Utf8 string to be converted
193
+ * @returns - The hex representation of the input string
194
+ *
195
+ * @example
196
+ * ```ts
197
+ * console.log(utf8ToHex('web3.js'));
198
+ * > "0x776562332e6a73"
199
+ * ```
200
+ *
201
+ */
202
+ const utf8ToHex = (str) => {
203
+ web3_validator_1.validator.validate(['string'], [str]);
204
+ // To be compatible with 1.x trim null character
205
+ // eslint-disable-next-line no-control-regex
206
+ let strWithoutNullCharacter = str.replace(/^(?:\u0000)/, '');
207
+ // eslint-disable-next-line no-control-regex
208
+ strWithoutNullCharacter = strWithoutNullCharacter.replace(/(?:\u0000)$/, '');
209
+ return (0, exports.bytesToHex)(new TextEncoder().encode(strWithoutNullCharacter));
210
+ };
211
+ exports.utf8ToHex = utf8ToHex;
212
+ /**
213
+ * @alias utf8ToHex
214
+ */
215
+ exports.fromUtf8 = exports.utf8ToHex;
216
+ /**
217
+ * @alias utf8ToHex
218
+ */
219
+ exports.stringToHex = exports.utf8ToHex;
220
+ /**
221
+ * Should be called to get utf8 from it's hex representation
222
+ * @param str - Hex string to be converted
223
+ * @returns - Utf8 string
224
+ *
225
+ * @example
226
+ * ```ts
227
+ * console.log(web3.utils.hexToUtf8('0x48656c6c6f20576f726c64'));
228
+ * > Hello World
229
+ * ```
230
+ */
231
+ const hexToUtf8 = (str) => (0, utils_js_1.bytesToUtf8)((0, exports.hexToBytes)(str));
232
+ exports.hexToUtf8 = hexToUtf8;
233
+ /**
234
+ * @alias hexToUtf8
235
+ */
236
+ const toUtf8 = (input) => {
237
+ if (typeof input === 'string') {
238
+ return (0, exports.hexToUtf8)(input);
239
+ }
240
+ web3_validator_1.validator.validate(['bytes'], [input]);
241
+ return (0, utils_js_1.bytesToUtf8)(input);
242
+ };
243
+ exports.toUtf8 = toUtf8;
244
+ exports.utf8ToBytes = utils_js_1.utf8ToBytes;
245
+ /**
246
+ * @alias hexToUtf8
247
+ */
248
+ exports.hexToString = exports.hexToUtf8;
249
+ /**
250
+ * Should be called to get hex representation (prefixed by 0x) of ascii string
251
+ * @param str - String to be converted to hex
252
+ * @returns - Hex string
253
+ *
254
+ * @example
255
+ * ```ts
256
+ * console.log(web3.utils.asciiToHex('Hello World'));
257
+ * > 0x48656c6c6f20576f726c64
258
+ * ```
259
+ */
260
+ const asciiToHex = (str) => {
261
+ web3_validator_1.validator.validate(['string'], [str]);
262
+ let hexString = '';
263
+ for (let i = 0; i < str.length; i += 1) {
264
+ const hexCharCode = str.charCodeAt(i).toString(16);
265
+ // might need a leading 0
266
+ hexString += hexCharCode.length % 2 !== 0 ? `0${hexCharCode}` : hexCharCode;
267
+ }
268
+ return `0x${hexString}`;
269
+ };
270
+ exports.asciiToHex = asciiToHex;
271
+ /**
272
+ * @alias asciiToHex
273
+ */
274
+ exports.fromAscii = exports.asciiToHex;
275
+ /**
276
+ * Should be called to get ascii from it's hex representation
277
+ * @param str - Hex string to be converted to ascii
278
+ * @returns - Ascii string
279
+ *
280
+ * @example
281
+ * ```ts
282
+ * console.log(web3.utils.hexToAscii('0x48656c6c6f20576f726c64'));
283
+ * > Hello World
284
+ * ```
285
+ */
286
+ const hexToAscii = (str) => {
287
+ const decoder = new TextDecoder('ascii');
288
+ return decoder.decode((0, exports.hexToBytes)(str));
289
+ };
290
+ exports.hexToAscii = hexToAscii;
291
+ /**
292
+ * @alias hexToAscii
293
+ */
294
+ exports.toAscii = exports.hexToAscii;
295
+ /**
296
+ * Auto converts any given value into it's hex representation.
297
+ * @param value - Value to be converted to hex
298
+ * @param returnType - If true, it will return the type of the value
299
+ *
300
+ * @example
301
+ * ```ts
302
+ * console.log(web3.utils.toHex(10));
303
+ * > 0xa
304
+ *
305
+ * console.log(web3.utils.toHex('0x123', true));
306
+ * > bytes
307
+ *```
308
+ */
309
+ const toHex = (value, returnType) => {
310
+ if (typeof value === 'string' && (0, web3_validator_1.isAddress)(value)) {
311
+ return returnType ? 'address' : `0x${value.toLowerCase().replace(/^0x/i, '')}`;
312
+ }
313
+ if (typeof value === 'boolean') {
314
+ // eslint-disable-next-line no-nested-ternary
315
+ return returnType ? 'bool' : value ? '0x01' : '0x00';
316
+ }
317
+ if (typeof value === 'number') {
318
+ // eslint-disable-next-line no-nested-ternary
319
+ return returnType ? (value < 0 ? 'int256' : 'uint256') : (0, exports.numberToHex)(value);
320
+ }
321
+ if (typeof value === 'bigint') {
322
+ return returnType ? 'bigint' : (0, exports.numberToHex)(value);
323
+ }
324
+ if ((0, uint8array_js_1.isUint8Array)(value)) {
325
+ return returnType ? 'bytes' : (0, exports.bytesToHex)(value);
326
+ }
327
+ if (typeof value === 'object' && !!value) {
328
+ return returnType ? 'string' : (0, exports.utf8ToHex)(JSON.stringify(value));
329
+ }
330
+ if (typeof value === 'string') {
331
+ if (value.startsWith('-0x') || value.startsWith('-0X')) {
332
+ return returnType ? 'int256' : (0, exports.numberToHex)(value);
333
+ }
334
+ if ((0, web3_validator_1.isHexStrict)(value)) {
335
+ return returnType ? 'bytes' : value;
336
+ }
337
+ if ((0, web3_validator_1.isHex)(value) && !(0, web3_validator_1.isInt)(value) && !(0, web3_validator_1.isUInt)(value)) {
338
+ return returnType ? 'bytes' : `0x${value}`;
339
+ }
340
+ if ((0, web3_validator_1.isHex)(value) && !(0, web3_validator_1.isInt)(value) && (0, web3_validator_1.isUInt)(value)) {
341
+ // This condition seems problematic because meeting
342
+ // both conditions `!isInt(value) && isUInt(value)` should be impossible.
343
+ // But a value pass for those conditions: "101611154195520776335741463917853444671577865378275924493376429267637792638729"
344
+ // Note that according to the docs: it is supposed to be treated as a string (https://docs.web3js.org/guides/web3_upgrade_guide/x/web3_utils_migration_guide#conversion-to-hex)
345
+ // In short, the strange is that isInt(value) is false but isUInt(value) is true for the value above.
346
+ // TODO: isUInt(value) should be investigated.
347
+ // However, if `toHex('101611154195520776335741463917853444671577865378275924493376429267637792638729', true)` is called, it will return `true`.
348
+ // But, if `toHex('101611154195520776335741463917853444671577865378275924493376429267637792638729')` is called, it will throw inside `numberToHex`.
349
+ return returnType ? 'uint' : (0, exports.numberToHex)(value);
350
+ }
351
+ if (!Number.isFinite(value)) {
352
+ return returnType ? 'string' : (0, exports.utf8ToHex)(value);
353
+ }
354
+ }
355
+ throw new web3_errors_1.HexProcessingError(value);
356
+ };
357
+ exports.toHex = toHex;
358
+ /**
359
+ * Converts any given value into it's number representation, if possible, else into it's bigint representation.
360
+ * @param value - The value to convert
361
+ * @returns - Returns the value in number or bigint representation
362
+ *
363
+ * @example
364
+ * ```ts
365
+ * console.log(web3.utils.toNumber(1));
366
+ * > 1
367
+ * console.log(web3.utils.toNumber(Number.MAX_SAFE_INTEGER));
368
+ * > 9007199254740991
369
+ *
370
+ * console.log(web3.utils.toNumber(BigInt(Number.MAX_SAFE_INTEGER)));
371
+ * > 9007199254740991
372
+ *
373
+ * console.log(web3.utils.toNumber(BigInt(Number.MAX_SAFE_INTEGER) + BigInt(1)));
374
+ * > 9007199254740992n
375
+ *
376
+ * ```
377
+ */
378
+ const toNumber = (value) => {
379
+ if (typeof value === 'number') {
380
+ if (value > 1e20) {
381
+ console.warn(PrecisionLossWarning);
382
+ // JavaScript converts numbers >= 10^21 to scientific notation when coerced to strings,
383
+ // leading to potential parsing errors and incorrect representations.
384
+ // For instance, String(10000000000000000000000) yields '1e+22'.
385
+ // Using BigInt prevents this
386
+ return BigInt(value);
387
+ }
388
+ return value;
389
+ }
390
+ if (typeof value === 'bigint') {
391
+ return value >= Number.MIN_SAFE_INTEGER && value <= Number.MAX_SAFE_INTEGER
392
+ ? Number(value)
393
+ : value;
394
+ }
395
+ if (typeof value === 'string' && (0, web3_validator_1.isHexStrict)(value)) {
396
+ return (0, exports.hexToNumber)(value);
397
+ }
398
+ try {
399
+ return (0, exports.toNumber)(BigInt(value));
400
+ }
401
+ catch (_a) {
402
+ throw new web3_errors_1.InvalidNumberError(value);
403
+ }
404
+ };
405
+ exports.toNumber = toNumber;
406
+ /**
407
+ * Auto converts any given value into it's bigint representation
408
+ *
409
+ * @param value - The value to convert
410
+ * @returns - Returns the value in bigint representation
411
+
412
+ * @example
413
+ * ```ts
414
+ * console.log(web3.utils.toBigInt(1));
415
+ * > 1n
416
+ * ```
417
+ */
418
+ const toBigInt = (value) => {
419
+ if (typeof value === 'number') {
420
+ return BigInt(value);
421
+ }
422
+ if (typeof value === 'bigint') {
423
+ return value;
424
+ }
425
+ // isHex passes for dec, too
426
+ if (typeof value === 'string' && (0, web3_validator_1.isHex)(value)) {
427
+ if (value.startsWith('-')) {
428
+ return -BigInt(value.substring(1));
429
+ }
430
+ return BigInt(value);
431
+ }
432
+ throw new web3_errors_1.InvalidNumberError(value);
433
+ };
434
+ exports.toBigInt = toBigInt;
435
+ /**
436
+ * Takes a number of wei and converts it to any other ether unit.
437
+ * @param number - The value in wei
438
+ * @param unit - The unit to convert to
439
+ * @returns - Returns the converted value in the given unit
440
+ *
441
+ * @example
442
+ * ```ts
443
+ * console.log(web3.utils.fromWei("1", "ether"));
444
+ * > 0.000000000000000001
445
+ *
446
+ * console.log(web3.utils.fromWei("1", "shannon"));
447
+ * > 0.000000001
448
+ * ```
449
+ */
450
+ const fromWei = (number, unit) => {
451
+ let denomination;
452
+ if (typeof unit === 'string') {
453
+ denomination = exports.ethUnitMap[unit];
454
+ if (!denomination) {
455
+ throw new web3_errors_1.InvalidUnitError(unit);
456
+ }
457
+ }
458
+ else {
459
+ if (unit < 0 || !Number.isInteger(unit)) {
460
+ throw new web3_errors_1.InvalidIntegerError(unit);
461
+ }
462
+ denomination = (0, web3_validator_1.bigintPower)(BigInt(10), BigInt(unit));
463
+ }
464
+ // value in wei would always be integer
465
+ // 13456789, 1234
466
+ const value = String((0, exports.toNumber)(number));
467
+ // count number of zeros in denomination
468
+ // 1000000 -> 6
469
+ const numberOfZerosInDenomination = denomination.toString().length - 1;
470
+ if (numberOfZerosInDenomination <= 0) {
471
+ return value.toString();
472
+ }
473
+ // pad the value with required zeros
474
+ // 13456789 -> 13456789, 1234 -> 001234
475
+ const zeroPaddedValue = value.padStart(numberOfZerosInDenomination, '0');
476
+ // get the integer part of value by counting number of zeros from start
477
+ // 13456789 -> '13'
478
+ // 001234 -> ''
479
+ const integer = zeroPaddedValue.slice(0, -numberOfZerosInDenomination);
480
+ // get the fraction part of value by counting number of zeros backward
481
+ // 13456789 -> '456789'
482
+ // 001234 -> '001234'
483
+ const fraction = zeroPaddedValue.slice(-numberOfZerosInDenomination).replace(/\.?0+$/, '');
484
+ if (integer === '') {
485
+ return `0.${fraction}`;
486
+ }
487
+ if (fraction === '') {
488
+ return integer;
489
+ }
490
+ const updatedValue = `${integer}.${fraction}`;
491
+ return updatedValue.slice(0, integer.length + numberOfZerosInDenomination + 1);
492
+ };
493
+ exports.fromWei = fromWei;
494
+ /**
495
+ * Takes a number of a unit and converts it to wei.
496
+ *
497
+ * @param number - The number to convert.
498
+ * @param unit - {@link EtherUnits} The unit of the number passed.
499
+ * @returns The number converted to wei.
500
+ *
501
+ * @example
502
+ * ```ts
503
+ * console.log(web3.utils.toWei("0.001", "ether"));
504
+ * > 1000000000000000 //(wei)
505
+ * ```
506
+ */
507
+ // todo in 1.x unit defaults to 'ether'
508
+ const toWei = (number, unit) => {
509
+ web3_validator_1.validator.validate(['number'], [number]);
510
+ let denomination;
511
+ if (typeof unit === 'string') {
512
+ denomination = exports.ethUnitMap[unit];
513
+ if (!denomination) {
514
+ throw new web3_errors_1.InvalidUnitError(unit);
515
+ }
516
+ }
517
+ else {
518
+ if (unit < 0 || !Number.isInteger(unit)) {
519
+ throw new web3_errors_1.InvalidIntegerError(unit);
520
+ }
521
+ denomination = (0, web3_validator_1.bigintPower)(BigInt(10), BigInt(unit));
522
+ }
523
+ let parsedNumber = number;
524
+ if (typeof parsedNumber === 'number') {
525
+ if (parsedNumber < 1e-15) {
526
+ console.warn(PrecisionLossWarning);
527
+ }
528
+ if (parsedNumber > 1e20) {
529
+ console.warn(PrecisionLossWarning);
530
+ parsedNumber = BigInt(parsedNumber);
531
+ }
532
+ else {
533
+ // in case there is a decimal point, we need to convert it to string
534
+ parsedNumber = parsedNumber.toLocaleString('fullwide', {
535
+ useGrouping: false,
536
+ maximumFractionDigits: 20,
537
+ });
538
+ }
539
+ }
540
+ // if value is decimal e.g. 24.56 extract `integer` and `fraction` part
541
+ // to avoid `fraction` to be null use `concat` with empty string
542
+ const [integer, fraction] = String(typeof parsedNumber === 'string' && !(0, web3_validator_1.isHexStrict)(parsedNumber)
543
+ ? parsedNumber
544
+ : (0, exports.toNumber)(parsedNumber))
545
+ .split('.')
546
+ .concat('');
547
+ // join the value removing `.` from
548
+ // 24.56 -> 2456
549
+ const value = BigInt(`${integer}${fraction}`);
550
+ // multiply value with denomination
551
+ // 2456 * 1000000 -> 2456000000
552
+ const updatedValue = value * denomination;
553
+ // check if whole number was passed in
554
+ const decimals = fraction.length;
555
+ if (decimals === 0) {
556
+ return updatedValue.toString();
557
+ }
558
+ // trim the value to remove extra zeros
559
+ return updatedValue.toString().slice(0, -decimals);
560
+ };
561
+ exports.toWei = toWei;
562
+ /**
563
+ * Will convert an upper or lowercase Ethereum address to a checksum address.
564
+ * @param address - An address string
565
+ * @returns The checksum address
566
+ * @example
567
+ * ```ts
568
+ * web3.utils.toChecksumAddress('0xc1912fee45d61c87cc5ea59dae31190fffff232d');
569
+ * > "0xc1912fEE45d61C87Cc5EA59DaE31190FFFFf232d"
570
+ * ```
571
+ */
572
+ const toChecksumAddress = (address) => {
573
+ if (!(0, web3_validator_1.isAddress)(address, false)) {
574
+ throw new web3_errors_1.InvalidAddressError(address);
575
+ }
576
+ const lowerCaseAddress = address.toLowerCase().replace(/^0x/i, '');
577
+ // calling `Uint8Array.from` because `noble-hashes` checks with `instanceof Uint8Array` that fails in some edge cases:
578
+ // https://github.com/paulmillr/noble-hashes/issues/25#issuecomment-1750106284
579
+ const hash = web3_validator_1.utils.uint8ArrayToHexString((0, keccak_js_1.keccak256)(web3_validator_1.utils.ensureIfUint8Array((0, exports.utf8ToBytes)(lowerCaseAddress))));
580
+ if ((0, web3_validator_1.isNullish)(hash) ||
581
+ hash === '0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470')
582
+ return ''; // // EIP-1052 if hash is equal to c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470, keccak was given empty data
583
+ let checksumAddress = '0x';
584
+ const addressHash = hash.replace(/^0x/i, '');
585
+ for (let i = 0; i < lowerCaseAddress.length; i += 1) {
586
+ // If ith character is 8 to f then make it uppercase
587
+ if (parseInt(addressHash[i], 16) > 7) {
588
+ checksumAddress += lowerCaseAddress[i].toUpperCase();
589
+ }
590
+ else {
591
+ checksumAddress += lowerCaseAddress[i];
592
+ }
593
+ }
594
+ return checksumAddress;
595
+ };
596
+ exports.toChecksumAddress = toChecksumAddress;
597
+ const toBool = (value) => {
598
+ if (typeof value === 'boolean') {
599
+ return value;
600
+ }
601
+ if (typeof value === 'number' && (value === 0 || value === 1)) {
602
+ return Boolean(value);
603
+ }
604
+ if (typeof value === 'bigint' && (value === BigInt(0) || value === BigInt(1))) {
605
+ return Boolean(value);
606
+ }
607
+ if (typeof value === 'string' &&
608
+ !(0, web3_validator_1.isHexStrict)(value) &&
609
+ (value === '1' || value === '0' || value === 'false' || value === 'true')) {
610
+ if (value === 'true') {
611
+ return true;
612
+ }
613
+ if (value === 'false') {
614
+ return false;
615
+ }
616
+ return Boolean(Number(value));
617
+ }
618
+ if (typeof value === 'string' && (0, web3_validator_1.isHexStrict)(value) && (value === '0x1' || value === '0x0')) {
619
+ return Boolean((0, exports.toNumber)(value));
620
+ }
621
+ throw new web3_errors_1.InvalidBooleanError(value);
622
+ };
623
+ exports.toBool = toBool;
624
+ //# sourceMappingURL=converters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"converters.js","sourceRoot":"","sources":["../../src/converters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import EventEmitter3 from 'eventemitter3';
2
+ /**
3
+ * This class copy the behavior of Node.js EventEmitter class.
4
+ * It is used to provide the same interface for the browser environment.
5
+ */
6
+ export declare class EventEmitter extends EventEmitter3 {
7
+ private maxListeners;
8
+ setMaxListeners(maxListeners: number): this;
9
+ getMaxListeners(): number;
10
+ }