essential-eth 0.8.0 → 0.9.1-next.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/dist/cjs/classes/Contract.js +38 -34
- package/dist/cjs/classes/test/Contract/crv.test.js +146 -339
- package/dist/cjs/classes/test/Contract/ens-abi.d.ts +1 -1
- package/dist/cjs/classes/test/Contract/ens.test.js +9 -66
- package/dist/cjs/classes/test/Contract/fei.test.js +11 -11
- package/dist/cjs/classes/test/Contract/foo-abi.d.ts +1 -1
- package/dist/cjs/classes/test/Contract/uni.test.js +66 -164
- package/dist/cjs/classes/utils/clean-block.js +4 -4
- package/dist/cjs/classes/utils/clean-log.js +4 -4
- package/dist/cjs/classes/utils/clean-transaction-receipt.js +4 -4
- package/dist/cjs/classes/utils/clean-transaction.js +4 -4
- package/dist/cjs/classes/utils/encode-decode-transaction.js +10 -10
- package/dist/cjs/classes/utils/fetchers.d.ts +8 -2
- package/dist/cjs/classes/utils/fetchers.js +20 -12
- package/dist/cjs/classes/utils/prepare-transaction.js +4 -4
- package/dist/cjs/index.d.ts +21 -21
- package/dist/cjs/index.js +21 -21
- package/dist/cjs/index.umd.js +1 -1
- package/dist/cjs/index.umd.js.map +1 -1
- package/dist/cjs/logger/logger.js +79 -41
- package/dist/cjs/logger/package-version.d.ts +1 -1
- package/dist/cjs/logger/package-version.js +1 -1
- package/dist/cjs/providers/AlchemyProvider.d.ts +4 -0
- package/dist/cjs/providers/AlchemyProvider.js +84 -0
- package/dist/cjs/providers/BaseProvider.js +471 -404
- package/dist/cjs/providers/FallthroughProvider.js +74 -38
- package/dist/cjs/providers/JsonRpcProvider.js +52 -31
- package/dist/cjs/providers/test/fallthrough-provider/get-gas-price.test.js +9 -9
- package/dist/cjs/providers/test/get-transaction-count.test.js +54 -91
- package/dist/cjs/providers/test/json-rpc-provider/call.test.js +87 -148
- package/dist/cjs/providers/test/json-rpc-provider/estimate-gas.test.js +45 -116
- package/dist/cjs/providers/test/json-rpc-provider/get-balance.test.js +36 -74
- package/dist/cjs/providers/test/json-rpc-provider/get-block-number.test.js +27 -94
- package/dist/cjs/providers/test/json-rpc-provider/get-block.test.js +191 -278
- package/dist/cjs/providers/test/json-rpc-provider/get-code.test.js +106 -135
- package/dist/cjs/providers/test/json-rpc-provider/get-fee-data.test.js +48 -73
- package/dist/cjs/providers/test/json-rpc-provider/get-gas-price.test.js +29 -64
- package/dist/cjs/providers/test/json-rpc-provider/get-logs/get-logs.test.js +219 -0
- package/dist/cjs/providers/test/json-rpc-provider/get-logs/mocks.d.ts +14 -0
- package/dist/cjs/providers/test/json-rpc-provider/get-logs/mocks.js +149 -0
- package/dist/cjs/providers/test/json-rpc-provider/get-network.test.js +37 -79
- package/dist/cjs/providers/test/json-rpc-provider/get-transaction-receipt.test.js +136 -157
- package/dist/cjs/providers/test/json-rpc-provider/get-transaction.test.js +121 -162
- package/dist/cjs/providers/test/mock-of.d.ts +2 -0
- package/dist/cjs/providers/test/mock-of.js +9 -0
- package/dist/cjs/providers/test/rpc-urls.d.ts +1 -0
- package/dist/cjs/providers/test/rpc-urls.js +12 -6
- package/dist/cjs/providers/test/test-alchemy-provider.test.js +151 -0
- package/dist/cjs/providers/utils/chains-info.d.ts +5 -448
- package/dist/cjs/providers/utils/chains-info.js +13 -1344
- package/dist/cjs/shared/tiny-big/helpers.js +18 -18
- package/dist/cjs/shared/tiny-big/tiny-big.js +96 -56
- package/dist/cjs/shared/tiny-big/tiny-big.test.js +2 -2
- package/dist/cjs/shared/validate-type.d.ts +1 -1
- package/dist/cjs/shared/validate-type.js +4 -4
- package/dist/cjs/types/Block.types.d.ts +3 -3
- package/dist/cjs/types/Contract.types.d.ts +4 -4
- package/dist/cjs/types/Transaction.types.d.ts +5 -5
- package/dist/cjs/utils/bytes.d.ts +4 -4
- package/dist/cjs/utils/bytes.js +3 -3
- package/dist/cjs/utils/tests/bytes/arrayify.test.js +48 -24
- package/dist/cjs/utils/tests/bytes/concat.test.js +5 -3
- package/dist/cjs/utils/tests/bytes/hex-concat.test.js +15 -13
- package/dist/cjs/utils/tests/bytes/hex-data-length.test.js +49 -32
- package/dist/cjs/utils/tests/bytes/hex-data-slice.test.js +15 -16
- package/dist/cjs/utils/tests/bytes/hex-strip-zeros.test.js +57 -40
- package/dist/cjs/utils/tests/bytes/hex-value.test.js +118 -62
- package/dist/cjs/utils/tests/bytes/hex-zero-pad.test.js +71 -33
- package/dist/cjs/utils/tests/bytes/hexlify.test.js +45 -29
- package/dist/cjs/utils/tests/bytes/is-bytes-like.test.js +10 -11
- package/dist/cjs/utils/tests/bytes/is-bytes.test.js +70 -27
- package/dist/cjs/utils/tests/bytes/is-hex-string.test.js +37 -28
- package/dist/cjs/utils/tests/bytes/strip-zeros.test.js +94 -45
- package/dist/cjs/utils/tests/bytes/zero-pad.test.js +98 -34
- package/dist/cjs/utils/tests/compute-address.test.js +42 -20
- package/dist/cjs/utils/tests/compute-public-key.test.js +20 -9
- package/dist/cjs/utils/tests/ether-to-wei.test.js +5 -13
- package/dist/cjs/utils/tests/hash-message.test.js +26 -15
- package/dist/cjs/utils/tests/is-address.test.js +2 -9
- package/dist/cjs/utils/tests/keccak256.test.js +36 -12
- package/dist/cjs/utils/tests/solidity-keccak256.test.js +43 -42
- package/dist/cjs/utils/tests/split-signature.test.js +29 -8
- package/dist/cjs/utils/tests/to-checksum-address.test.js +1 -4
- package/dist/cjs/utils/tests/to-utf8-bytes.test.js +28 -8
- package/dist/cjs/utils/tests/wei-to-ether.test.js +10 -20
- package/dist/esm/classes/test/Contract/ens-abi.d.ts +1 -1
- package/dist/esm/classes/test/Contract/foo-abi.d.ts +1 -1
- package/dist/esm/classes/utils/fetchers.d.ts +8 -2
- package/dist/esm/classes/utils/fetchers.js +6 -3
- package/dist/esm/index.d.ts +21 -21
- package/dist/esm/index.js +16 -16
- package/dist/esm/logger/package-version.d.ts +1 -1
- package/dist/esm/logger/package-version.js +1 -1
- package/dist/esm/providers/AlchemyProvider.d.ts +4 -0
- package/dist/esm/providers/AlchemyProvider.js +7 -0
- package/dist/esm/providers/FallthroughProvider.js +15 -7
- package/dist/esm/providers/test/json-rpc-provider/get-logs/mocks.d.ts +14 -0
- package/dist/esm/providers/test/json-rpc-provider/get-logs/mocks.js +142 -0
- package/dist/esm/providers/test/mock-of.d.ts +2 -0
- package/dist/esm/providers/test/mock-of.js +1 -0
- package/dist/esm/providers/test/rpc-urls.d.ts +1 -0
- package/dist/esm/providers/test/rpc-urls.js +14 -6
- package/dist/esm/providers/utils/chains-info.d.ts +5 -448
- package/dist/esm/providers/utils/chains-info.js +13 -1344
- package/dist/esm/shared/validate-type.d.ts +1 -1
- package/dist/esm/types/Block.types.d.ts +3 -3
- package/dist/esm/types/Contract.types.d.ts +4 -4
- package/dist/esm/types/Transaction.types.d.ts +5 -5
- package/dist/esm/utils/bytes.d.ts +4 -4
- package/package.json +23 -51
- package/readme.md +16 -38
- package/dist/cjs/providers/test/json-rpc-provider/get-logs.test.js +0 -361
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
function _arrayLikeToArray(arr, len) {
|
|
2
|
-
if (len == null || len > arr.length) len = arr.length;
|
|
3
|
-
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
4
|
-
return arr2;
|
|
5
|
-
}
|
|
6
|
-
function _arrayWithHoles(arr) {
|
|
7
|
-
if (Array.isArray(arr)) return arr;
|
|
8
|
-
}
|
|
9
1
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
10
2
|
try {
|
|
11
3
|
var info = gen[key](arg);
|
|
@@ -20,7 +12,7 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
|
20
12
|
Promise.resolve(value).then(_next, _throw);
|
|
21
13
|
}
|
|
22
14
|
}
|
|
23
|
-
function
|
|
15
|
+
function _async_to_generator(fn) {
|
|
24
16
|
return function() {
|
|
25
17
|
var self = this, args = arguments;
|
|
26
18
|
return new Promise(function(resolve, reject) {
|
|
@@ -35,45 +27,7 @@ function _asyncToGenerator(fn) {
|
|
|
35
27
|
});
|
|
36
28
|
};
|
|
37
29
|
}
|
|
38
|
-
function
|
|
39
|
-
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
40
|
-
if (_i == null) return;
|
|
41
|
-
var _arr = [];
|
|
42
|
-
var _n = true;
|
|
43
|
-
var _d = false;
|
|
44
|
-
var _s, _e;
|
|
45
|
-
try {
|
|
46
|
-
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
|
|
47
|
-
_arr.push(_s.value);
|
|
48
|
-
if (i && _arr.length === i) break;
|
|
49
|
-
}
|
|
50
|
-
} catch (err) {
|
|
51
|
-
_d = true;
|
|
52
|
-
_e = err;
|
|
53
|
-
} finally{
|
|
54
|
-
try {
|
|
55
|
-
if (!_n && _i["return"] != null) _i["return"]();
|
|
56
|
-
} finally{
|
|
57
|
-
if (_d) throw _e;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return _arr;
|
|
61
|
-
}
|
|
62
|
-
function _nonIterableRest() {
|
|
63
|
-
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
64
|
-
}
|
|
65
|
-
function _slicedToArray(arr, i) {
|
|
66
|
-
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
67
|
-
}
|
|
68
|
-
function _unsupportedIterableToArray(o, minLen) {
|
|
69
|
-
if (!o) return;
|
|
70
|
-
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
71
|
-
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
72
|
-
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
73
|
-
if (n === "Map" || n === "Set") return Array.from(n);
|
|
74
|
-
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
75
|
-
}
|
|
76
|
-
var __generator = this && this.__generator || function(thisArg, body) {
|
|
30
|
+
function _ts_generator(thisArg, body) {
|
|
77
31
|
var f, y, t, g, _ = {
|
|
78
32
|
label: 0,
|
|
79
33
|
sent: function() {
|
|
@@ -83,13 +37,13 @@ var __generator = this && this.__generator || function(thisArg, body) {
|
|
|
83
37
|
trys: [],
|
|
84
38
|
ops: []
|
|
85
39
|
};
|
|
86
|
-
return
|
|
40
|
+
return g = {
|
|
87
41
|
next: verb(0),
|
|
88
42
|
"throw": verb(1),
|
|
89
43
|
"return": verb(2)
|
|
90
44
|
}, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
91
45
|
return this;
|
|
92
|
-
}), g
|
|
46
|
+
}), g;
|
|
93
47
|
function verb(n) {
|
|
94
48
|
return function(v) {
|
|
95
49
|
return step([
|
|
@@ -167,16 +121,16 @@ var __generator = this && this.__generator || function(thisArg, body) {
|
|
|
167
121
|
done: true
|
|
168
122
|
};
|
|
169
123
|
}
|
|
170
|
-
}
|
|
171
|
-
import
|
|
172
|
-
import
|
|
173
|
-
import { JsonRpcProvider } from "../../../index";
|
|
124
|
+
}
|
|
125
|
+
import * as unfetch from "isomorphic-unfetch";
|
|
126
|
+
import { buildFetchInit, buildRPCPostBody } from "../../../classes/utils/fetchers";
|
|
127
|
+
import { JsonRpcProvider, tinyBig } from "../../../index";
|
|
174
128
|
import { rpcUrls } from "./../rpc-urls";
|
|
175
129
|
// Using Polygon to be able to access archive blocks
|
|
176
130
|
// Choosing to use Ethereum mainnet means that as new blocks are generated, block numbers used in testing may be inaccessible and cause tests to fail
|
|
177
131
|
var rpcUrl = rpcUrls.matic;
|
|
178
|
-
|
|
179
|
-
var
|
|
132
|
+
jest.mock("isomorphic-unfetch");
|
|
133
|
+
var validInputs = [
|
|
180
134
|
{
|
|
181
135
|
address: "0x00153ab45951268d8813BCAb403152A059B99CB1",
|
|
182
136
|
blockTag: undefined
|
|
@@ -194,114 +148,131 @@ var inputs = [
|
|
|
194
148
|
blockTag: 28114328
|
|
195
149
|
}
|
|
196
150
|
];
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
151
|
+
var invalidInput = {
|
|
152
|
+
address: "0xd31a02A126Bb7ACD359BD61E9a8276959408855E",
|
|
153
|
+
blockTag: 28314328
|
|
154
|
+
};
|
|
155
|
+
var mockCodeResult = "0x06060060600606006060060600606006060";
|
|
156
|
+
var mockInvalidResult = "0x";
|
|
157
|
+
var provider = new JsonRpcProvider(rpcUrl);
|
|
158
|
+
function testGetCode(input, mockResult) {
|
|
159
|
+
return _testGetCode.apply(this, arguments);
|
|
160
|
+
}
|
|
161
|
+
function _testGetCode() {
|
|
162
|
+
_testGetCode = _async_to_generator(function(input, mockResult) {
|
|
163
|
+
var spy, code, _input_blockTag, expectedBlockTag;
|
|
164
|
+
return _ts_generator(this, function(_state) {
|
|
203
165
|
switch(_state.label){
|
|
204
166
|
case 0:
|
|
167
|
+
spy = jest.spyOn(unfetch, "default");
|
|
168
|
+
spy.mockResolvedValueOnce({
|
|
169
|
+
text: function() {
|
|
170
|
+
return Promise.resolve(JSON.stringify({
|
|
171
|
+
jsonrpc: "2.0",
|
|
172
|
+
id: 1,
|
|
173
|
+
result: mockResult
|
|
174
|
+
}));
|
|
175
|
+
}
|
|
176
|
+
});
|
|
205
177
|
return [
|
|
206
178
|
4,
|
|
207
|
-
|
|
208
|
-
var _ref = _asyncToGenerator(function(input) {
|
|
209
|
-
var _ref, essentialEthCode, ethersCode;
|
|
210
|
-
return __generator(this, function(_state) {
|
|
211
|
-
switch(_state.label){
|
|
212
|
-
case 0:
|
|
213
|
-
return [
|
|
214
|
-
4,
|
|
215
|
-
Promise.all([
|
|
216
|
-
essentialEthProvider.getCode(input.address, input.blockTag),
|
|
217
|
-
ethersProvider.getCode(input.address, input.blockTag)
|
|
218
|
-
])
|
|
219
|
-
];
|
|
220
|
-
case 1:
|
|
221
|
-
_ref = _slicedToArray.apply(void 0, [
|
|
222
|
-
_state.sent(),
|
|
223
|
-
2
|
|
224
|
-
]), essentialEthCode = _ref[0], ethersCode = _ref[1];
|
|
225
|
-
expect(essentialEthCode).toStrictEqual(ethersCode);
|
|
226
|
-
return [
|
|
227
|
-
2
|
|
228
|
-
];
|
|
229
|
-
}
|
|
230
|
-
});
|
|
231
|
-
});
|
|
232
|
-
return function(input) {
|
|
233
|
-
return _ref.apply(this, arguments);
|
|
234
|
-
};
|
|
235
|
-
}())
|
|
179
|
+
provider.getCode(input.address, input.blockTag)
|
|
236
180
|
];
|
|
237
181
|
case 1:
|
|
238
|
-
_state.sent();
|
|
182
|
+
code = _state.sent();
|
|
183
|
+
expect(code).toBe(mockResult);
|
|
184
|
+
expectedBlockTag = typeof input.blockTag === "number" ? tinyBig(input.blockTag).toHexString() : (_input_blockTag = input.blockTag) !== null && _input_blockTag !== void 0 ? _input_blockTag : "latest";
|
|
185
|
+
expect(spy).toHaveBeenCalledWith(rpcUrl, buildFetchInit(buildRPCPostBody("eth_getCode", [
|
|
186
|
+
input.address,
|
|
187
|
+
expectedBlockTag
|
|
188
|
+
])));
|
|
239
189
|
return [
|
|
240
190
|
2
|
|
241
191
|
];
|
|
242
192
|
}
|
|
243
193
|
});
|
|
244
|
-
})
|
|
245
|
-
|
|
246
|
-
|
|
194
|
+
});
|
|
195
|
+
return _testGetCode.apply(this, arguments);
|
|
196
|
+
}
|
|
197
|
+
describe("provider.getCode with Mock", function() {
|
|
198
|
+
it("should return the correct code for the given input", /*#__PURE__*/ _async_to_generator(function() {
|
|
199
|
+
var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, input, err;
|
|
200
|
+
return _ts_generator(this, function(_state) {
|
|
247
201
|
switch(_state.label){
|
|
248
202
|
case 0:
|
|
203
|
+
_iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
204
|
+
_state.label = 1;
|
|
205
|
+
case 1:
|
|
206
|
+
_state.trys.push([
|
|
207
|
+
1,
|
|
208
|
+
6,
|
|
209
|
+
7,
|
|
210
|
+
8
|
|
211
|
+
]);
|
|
212
|
+
_iterator = validInputs[Symbol.iterator]();
|
|
213
|
+
_state.label = 2;
|
|
214
|
+
case 2:
|
|
215
|
+
if (!!(_iteratorNormalCompletion = (_step = _iterator.next()).done)) return [
|
|
216
|
+
3,
|
|
217
|
+
5
|
|
218
|
+
];
|
|
219
|
+
input = _step.value;
|
|
249
220
|
return [
|
|
250
221
|
4,
|
|
251
|
-
|
|
252
|
-
var _ref = _asyncToGenerator(function(input) {
|
|
253
|
-
var _ref, essentialEthCode, web3Code;
|
|
254
|
-
return __generator(this, function(_state) {
|
|
255
|
-
switch(_state.label){
|
|
256
|
-
case 0:
|
|
257
|
-
return [
|
|
258
|
-
4,
|
|
259
|
-
Promise.all([
|
|
260
|
-
essentialEthProvider.getCode(input.address, input.blockTag),
|
|
261
|
-
web3Provider.eth.getCode(input.address, input.blockTag)
|
|
262
|
-
])
|
|
263
|
-
];
|
|
264
|
-
case 1:
|
|
265
|
-
_ref = _slicedToArray.apply(void 0, [
|
|
266
|
-
_state.sent(),
|
|
267
|
-
2
|
|
268
|
-
]), essentialEthCode = _ref[0], web3Code = _ref[1];
|
|
269
|
-
expect(essentialEthCode).toStrictEqual(web3Code);
|
|
270
|
-
return [
|
|
271
|
-
2
|
|
272
|
-
];
|
|
273
|
-
}
|
|
274
|
-
});
|
|
275
|
-
});
|
|
276
|
-
return function(input) {
|
|
277
|
-
return _ref.apply(this, arguments);
|
|
278
|
-
};
|
|
279
|
-
}())
|
|
222
|
+
testGetCode(input, mockCodeResult)
|
|
280
223
|
];
|
|
281
|
-
case
|
|
224
|
+
case 3:
|
|
282
225
|
_state.sent();
|
|
226
|
+
_state.label = 4;
|
|
227
|
+
case 4:
|
|
228
|
+
_iteratorNormalCompletion = true;
|
|
229
|
+
return [
|
|
230
|
+
3,
|
|
231
|
+
2
|
|
232
|
+
];
|
|
233
|
+
case 5:
|
|
234
|
+
return [
|
|
235
|
+
3,
|
|
236
|
+
8
|
|
237
|
+
];
|
|
238
|
+
case 6:
|
|
239
|
+
err = _state.sent();
|
|
240
|
+
_didIteratorError = true;
|
|
241
|
+
_iteratorError = err;
|
|
242
|
+
return [
|
|
243
|
+
3,
|
|
244
|
+
8
|
|
245
|
+
];
|
|
246
|
+
case 7:
|
|
247
|
+
try {
|
|
248
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
249
|
+
_iterator.return();
|
|
250
|
+
}
|
|
251
|
+
} finally{
|
|
252
|
+
if (_didIteratorError) {
|
|
253
|
+
throw _iteratorError;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
return [
|
|
257
|
+
7
|
|
258
|
+
];
|
|
259
|
+
case 8:
|
|
283
260
|
return [
|
|
284
261
|
2
|
|
285
262
|
];
|
|
286
263
|
}
|
|
287
264
|
});
|
|
288
265
|
}));
|
|
289
|
-
it("should return `0x` when a contract does not exist", /*#__PURE__*/
|
|
290
|
-
|
|
291
|
-
return __generator(this, function(_state) {
|
|
266
|
+
it("should return `0x` when a contract does not exist", /*#__PURE__*/ _async_to_generator(function() {
|
|
267
|
+
return _ts_generator(this, function(_state) {
|
|
292
268
|
switch(_state.label){
|
|
293
269
|
case 0:
|
|
294
|
-
invalidInput = {
|
|
295
|
-
address: "0xd31a02A126Bb7ACD359BD61E9a8276959408855E",
|
|
296
|
-
blockTag: 28314328
|
|
297
|
-
};
|
|
298
270
|
return [
|
|
299
271
|
4,
|
|
300
|
-
|
|
272
|
+
testGetCode(invalidInput, mockInvalidResult)
|
|
301
273
|
];
|
|
302
274
|
case 1:
|
|
303
|
-
|
|
304
|
-
expect(essentialEthCode).toBe("0x");
|
|
275
|
+
_state.sent();
|
|
305
276
|
return [
|
|
306
277
|
2
|
|
307
278
|
];
|
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
function _arrayLikeToArray(arr, len) {
|
|
2
|
-
if (len == null || len > arr.length) len = arr.length;
|
|
3
|
-
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
4
|
-
return arr2;
|
|
5
|
-
}
|
|
6
|
-
function _arrayWithHoles(arr) {
|
|
7
|
-
if (Array.isArray(arr)) return arr;
|
|
8
|
-
}
|
|
9
1
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
10
2
|
try {
|
|
11
3
|
var info = gen[key](arg);
|
|
@@ -20,7 +12,7 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
|
20
12
|
Promise.resolve(value).then(_next, _throw);
|
|
21
13
|
}
|
|
22
14
|
}
|
|
23
|
-
function
|
|
15
|
+
function _async_to_generator(fn) {
|
|
24
16
|
return function() {
|
|
25
17
|
var self = this, args = arguments;
|
|
26
18
|
return new Promise(function(resolve, reject) {
|
|
@@ -35,45 +27,7 @@ function _asyncToGenerator(fn) {
|
|
|
35
27
|
});
|
|
36
28
|
};
|
|
37
29
|
}
|
|
38
|
-
function
|
|
39
|
-
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
40
|
-
if (_i == null) return;
|
|
41
|
-
var _arr = [];
|
|
42
|
-
var _n = true;
|
|
43
|
-
var _d = false;
|
|
44
|
-
var _s, _e;
|
|
45
|
-
try {
|
|
46
|
-
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
|
|
47
|
-
_arr.push(_s.value);
|
|
48
|
-
if (i && _arr.length === i) break;
|
|
49
|
-
}
|
|
50
|
-
} catch (err) {
|
|
51
|
-
_d = true;
|
|
52
|
-
_e = err;
|
|
53
|
-
} finally{
|
|
54
|
-
try {
|
|
55
|
-
if (!_n && _i["return"] != null) _i["return"]();
|
|
56
|
-
} finally{
|
|
57
|
-
if (_d) throw _e;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return _arr;
|
|
61
|
-
}
|
|
62
|
-
function _nonIterableRest() {
|
|
63
|
-
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
64
|
-
}
|
|
65
|
-
function _slicedToArray(arr, i) {
|
|
66
|
-
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
67
|
-
}
|
|
68
|
-
function _unsupportedIterableToArray(o, minLen) {
|
|
69
|
-
if (!o) return;
|
|
70
|
-
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
71
|
-
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
72
|
-
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
73
|
-
if (n === "Map" || n === "Set") return Array.from(n);
|
|
74
|
-
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
75
|
-
}
|
|
76
|
-
var __generator = this && this.__generator || function(thisArg, body) {
|
|
30
|
+
function _ts_generator(thisArg, body) {
|
|
77
31
|
var f, y, t, g, _ = {
|
|
78
32
|
label: 0,
|
|
79
33
|
sent: function() {
|
|
@@ -167,42 +121,63 @@ var __generator = this && this.__generator || function(thisArg, body) {
|
|
|
167
121
|
done: true
|
|
168
122
|
};
|
|
169
123
|
}
|
|
170
|
-
}
|
|
171
|
-
import
|
|
124
|
+
}
|
|
125
|
+
import * as unfetch from "isomorphic-unfetch";
|
|
126
|
+
import { buildFetchInit, buildRPCPostBody } from "../../../classes/utils/fetchers";
|
|
172
127
|
import { JsonRpcProvider } from "../../JsonRpcProvider";
|
|
128
|
+
import { mockOf } from "../mock-of";
|
|
173
129
|
import { rpcUrls } from "./../rpc-urls";
|
|
174
130
|
var rpcUrl = rpcUrls.mainnet;
|
|
175
131
|
var essentialEthProvider = new JsonRpcProvider(rpcUrl);
|
|
176
|
-
|
|
132
|
+
jest.mock("isomorphic-unfetch");
|
|
133
|
+
// essentialEthProvider.getFeeData() calls these methods internally
|
|
134
|
+
var mockGetBlockResponse = JSON.stringify({
|
|
135
|
+
jsonrpc: "2.0",
|
|
136
|
+
id: 1,
|
|
137
|
+
result: {
|
|
138
|
+
baseFeePerGas: "0xa"
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
var mockGetGasPriceResponse = JSON.stringify({
|
|
142
|
+
jsonrpc: "2.0",
|
|
143
|
+
id: 1,
|
|
144
|
+
result: "0xa"
|
|
145
|
+
});
|
|
177
146
|
describe("provider.getFeeData", function() {
|
|
178
|
-
it("should match
|
|
179
|
-
var
|
|
180
|
-
return
|
|
147
|
+
it("should match mocked responses", /*#__PURE__*/ _async_to_generator(function() {
|
|
148
|
+
var spy, feeData;
|
|
149
|
+
return _ts_generator(this, function(_state) {
|
|
181
150
|
switch(_state.label){
|
|
182
151
|
case 0:
|
|
152
|
+
mockOf(unfetch.default).mockResolvedValueOnce({
|
|
153
|
+
text: function() {
|
|
154
|
+
return Promise.resolve(mockGetBlockResponse);
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
mockOf(unfetch.default).mockResolvedValueOnce({
|
|
158
|
+
text: function() {
|
|
159
|
+
return Promise.resolve(mockGetGasPriceResponse);
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
spy = jest.spyOn(unfetch, "default");
|
|
183
163
|
return [
|
|
184
164
|
4,
|
|
185
|
-
|
|
186
|
-
ethersProvider.getFeeData(),
|
|
187
|
-
essentialEthProvider.getFeeData()
|
|
188
|
-
])
|
|
165
|
+
essentialEthProvider.getFeeData()
|
|
189
166
|
];
|
|
190
167
|
case 1:
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
//
|
|
198
|
-
expect(
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
expect(eeFeeData.maxPriorityFeePerGas.toString()).toBe(// @ts-ignore
|
|
205
|
-
ethersFeeData === null || ethersFeeData === void 0 ? void 0 : ethersFeeData.maxPriorityFeePerGas.toString());
|
|
168
|
+
feeData = _state.sent();
|
|
169
|
+
expect(feeData.gasPrice.toString()).toBe("10");
|
|
170
|
+
// lastBaseFeePerGas should be equal to the mocked baseFeePerGas value
|
|
171
|
+
expect(feeData.lastBaseFeePerGas.toString()).toBe("10");
|
|
172
|
+
// maxFeePerGas is calculated as (baseFeePerGas * 2) + maxPriorityFeePerGas, (10 * 2) + 1500000000 = 1500000020
|
|
173
|
+
expect(feeData.maxFeePerGas.toString()).toBe("1500000020");
|
|
174
|
+
// maxPriorityFeePerGas is a constant value (1500000000) in the getFeeData function
|
|
175
|
+
expect(feeData.maxPriorityFeePerGas.toString()).toBe("1500000000");
|
|
176
|
+
expect(spy).toHaveBeenCalledWith(rpcUrl, buildFetchInit(buildRPCPostBody("eth_getBlockByNumber", [
|
|
177
|
+
"latest",
|
|
178
|
+
false
|
|
179
|
+
])));
|
|
180
|
+
expect(spy).toHaveBeenCalledWith(rpcUrl, buildFetchInit(buildRPCPostBody("eth_gasPrice", [])));
|
|
206
181
|
return [
|
|
207
182
|
2
|
|
208
183
|
];
|
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
function _arrayLikeToArray(arr, len) {
|
|
2
|
-
if (len == null || len > arr.length) len = arr.length;
|
|
3
|
-
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
4
|
-
return arr2;
|
|
5
|
-
}
|
|
6
|
-
function _arrayWithHoles(arr) {
|
|
7
|
-
if (Array.isArray(arr)) return arr;
|
|
8
|
-
}
|
|
9
1
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
10
2
|
try {
|
|
11
3
|
var info = gen[key](arg);
|
|
@@ -20,7 +12,7 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
|
20
12
|
Promise.resolve(value).then(_next, _throw);
|
|
21
13
|
}
|
|
22
14
|
}
|
|
23
|
-
function
|
|
15
|
+
function _async_to_generator(fn) {
|
|
24
16
|
return function() {
|
|
25
17
|
var self = this, args = arguments;
|
|
26
18
|
return new Promise(function(resolve, reject) {
|
|
@@ -35,45 +27,7 @@ function _asyncToGenerator(fn) {
|
|
|
35
27
|
});
|
|
36
28
|
};
|
|
37
29
|
}
|
|
38
|
-
function
|
|
39
|
-
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
40
|
-
if (_i == null) return;
|
|
41
|
-
var _arr = [];
|
|
42
|
-
var _n = true;
|
|
43
|
-
var _d = false;
|
|
44
|
-
var _s, _e;
|
|
45
|
-
try {
|
|
46
|
-
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
|
|
47
|
-
_arr.push(_s.value);
|
|
48
|
-
if (i && _arr.length === i) break;
|
|
49
|
-
}
|
|
50
|
-
} catch (err) {
|
|
51
|
-
_d = true;
|
|
52
|
-
_e = err;
|
|
53
|
-
} finally{
|
|
54
|
-
try {
|
|
55
|
-
if (!_n && _i["return"] != null) _i["return"]();
|
|
56
|
-
} finally{
|
|
57
|
-
if (_d) throw _e;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return _arr;
|
|
61
|
-
}
|
|
62
|
-
function _nonIterableRest() {
|
|
63
|
-
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
64
|
-
}
|
|
65
|
-
function _slicedToArray(arr, i) {
|
|
66
|
-
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
67
|
-
}
|
|
68
|
-
function _unsupportedIterableToArray(o, minLen) {
|
|
69
|
-
if (!o) return;
|
|
70
|
-
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
71
|
-
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
72
|
-
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
73
|
-
if (n === "Map" || n === "Set") return Array.from(n);
|
|
74
|
-
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
75
|
-
}
|
|
76
|
-
var __generator = this && this.__generator || function(thisArg, body) {
|
|
30
|
+
function _ts_generator(thisArg, body) {
|
|
77
31
|
var f, y, t, g, _ = {
|
|
78
32
|
label: 0,
|
|
79
33
|
sent: function() {
|
|
@@ -167,32 +121,43 @@ var __generator = this && this.__generator || function(thisArg, body) {
|
|
|
167
121
|
done: true
|
|
168
122
|
};
|
|
169
123
|
}
|
|
170
|
-
}
|
|
171
|
-
import
|
|
124
|
+
}
|
|
125
|
+
import * as unfetch from "isomorphic-unfetch";
|
|
126
|
+
import z from "zod";
|
|
127
|
+
import { buildFetchInit, buildRPCPostBody } from "../../../classes/utils/fetchers";
|
|
172
128
|
import { JsonRpcProvider } from "../../../index";
|
|
129
|
+
import { mockOf } from "../mock-of";
|
|
173
130
|
import { rpcUrls } from "../rpc-urls";
|
|
131
|
+
import { TinyBig } from "./../../../shared/tiny-big/tiny-big";
|
|
132
|
+
jest.mock("isomorphic-unfetch");
|
|
133
|
+
var mockPostResponse = JSON.stringify({
|
|
134
|
+
jsonrpc: "2.0",
|
|
135
|
+
id: 1,
|
|
136
|
+
result: "0xa"
|
|
137
|
+
});
|
|
174
138
|
var rpcUrl = rpcUrls.mainnet;
|
|
175
139
|
describe("provider.getGasPrice", function() {
|
|
176
|
-
it("should
|
|
177
|
-
var
|
|
178
|
-
return
|
|
140
|
+
it("should get TinyBig integer", /*#__PURE__*/ _async_to_generator(function() {
|
|
141
|
+
var provider, spy, gasPrice;
|
|
142
|
+
return _ts_generator(this, function(_state) {
|
|
179
143
|
switch(_state.label){
|
|
180
144
|
case 0:
|
|
181
|
-
|
|
182
|
-
|
|
145
|
+
provider = new JsonRpcProvider(rpcUrl);
|
|
146
|
+
mockOf(unfetch.default).mockResolvedValueOnce({
|
|
147
|
+
text: function() {
|
|
148
|
+
return Promise.resolve(mockPostResponse);
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
spy = jest.spyOn(unfetch, "default");
|
|
183
152
|
return [
|
|
184
153
|
4,
|
|
185
|
-
|
|
186
|
-
ethersProvider.getGasPrice(),
|
|
187
|
-
essentialEthProvider.getGasPrice()
|
|
188
|
-
])
|
|
154
|
+
provider.getGasPrice()
|
|
189
155
|
];
|
|
190
156
|
case 1:
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
expect(ethersGasPrice.sub(essentialEthGasPrice.toString()).toNumber()).toBeLessThan(100);
|
|
157
|
+
gasPrice = _state.sent();
|
|
158
|
+
expect(z.instanceof(TinyBig).safeParse(gasPrice).success).toBe(true);
|
|
159
|
+
expect(gasPrice.toString()).toBe("10");
|
|
160
|
+
expect(spy).toHaveBeenCalledWith(rpcUrl, buildFetchInit(buildRPCPostBody("eth_gasPrice", [])));
|
|
196
161
|
return [
|
|
197
162
|
2
|
|
198
163
|
];
|