@defillama/sdk 3.0.7 → 3.0.9
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/build/abi/index.d.ts +1 -1
- package/build/abi/index.js +21 -55
- package/build/abi/multicall.d.ts +1 -0
- package/build/abi/multicall.js +57 -46
- package/build/abi/rpcCall.d.ts +3 -1
- package/build/abi/rpcCall.js +28 -12
- package/build/general.d.ts +1 -1
- package/build/general.js +1 -0
- package/build/util/index.d.ts +3 -0
- package/build/util/index.js +13 -1
- package/build/util/promisePool.d.ts +5 -0
- package/build/util/promisePool.js +65 -0
- package/package.json +1 -1
package/build/abi/index.d.ts
CHANGED
package/build/abi/index.js
CHANGED
|
@@ -56,9 +56,9 @@ var ethers_1 = require("ethers");
|
|
|
56
56
|
var general_1 = require("../general");
|
|
57
57
|
var multicall_1 = __importDefault(require("./multicall"));
|
|
58
58
|
var convertResults_1 = __importDefault(require("./convertResults"));
|
|
59
|
-
var promise_pool_1 = require("@supercharge/promise-pool");
|
|
60
59
|
var debugLog_1 = require("../util/debugLog");
|
|
61
|
-
var
|
|
60
|
+
var util_1 = require("../util");
|
|
61
|
+
var defaultChunkSize = !!process.env.SDK_MULTICALL_CHUNK_SIZE ? +process.env.SDK_MULTICALL_CHUNK_SIZE : 500;
|
|
62
62
|
function resolveABI(providedAbi) {
|
|
63
63
|
var abi = providedAbi;
|
|
64
64
|
if (typeof abi === "string") {
|
|
@@ -109,13 +109,13 @@ function call(params) {
|
|
|
109
109
|
}
|
|
110
110
|
exports.call = call;
|
|
111
111
|
function multiCall(params) {
|
|
112
|
-
var _a;
|
|
112
|
+
var _a, _b;
|
|
113
113
|
return __awaiter(this, void 0, void 0, function () {
|
|
114
|
-
var
|
|
115
|
-
var _this = this;
|
|
114
|
+
var chain, chunkSize, abi, contractCalls, results, flatResults, failedQueries;
|
|
116
115
|
return __generator(this, function (_c) {
|
|
117
116
|
switch (_c.label) {
|
|
118
117
|
case 0:
|
|
118
|
+
chain = (_a = params.chain) !== null && _a !== void 0 ? _a : 'ethereum';
|
|
119
119
|
if (!params.calls)
|
|
120
120
|
throw new Error('Missing calls parameter');
|
|
121
121
|
if (params.target && !params.target.startsWith('0x'))
|
|
@@ -123,6 +123,11 @@ function multiCall(params) {
|
|
|
123
123
|
if (!params.calls.length) {
|
|
124
124
|
return [2 /*return*/, { output: [] }];
|
|
125
125
|
}
|
|
126
|
+
chunkSize = params.chunkSize;
|
|
127
|
+
if (!params.chunkSize) {
|
|
128
|
+
// Only a max of around 500 calls are supported by multicall, we have to split bigger batches
|
|
129
|
+
chunkSize = defaultChunkSize;
|
|
130
|
+
}
|
|
126
131
|
abi = resolveABI(params.abi);
|
|
127
132
|
contractCalls = (params.calls).map(function (call) {
|
|
128
133
|
var _a;
|
|
@@ -132,59 +137,20 @@ function multiCall(params) {
|
|
|
132
137
|
contract: (_a = call.target) !== null && _a !== void 0 ? _a : params.target,
|
|
133
138
|
};
|
|
134
139
|
});
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
for (i = 0; i < contractCalls.length; i += chunkSize)
|
|
141
|
-
contractChunks.push(contractCalls.slice(i, i + chunkSize));
|
|
142
|
-
return [4 /*yield*/, promise_pool_1.PromisePool
|
|
143
|
-
.withConcurrency(20)
|
|
144
|
-
.for(contractChunks)
|
|
145
|
-
.process(function (calls, i) { return __awaiter(_this, void 0, void 0, function () {
|
|
146
|
-
var _a;
|
|
147
|
-
return __generator(this, function (_b) {
|
|
148
|
-
return [2 /*return*/, (0, multicall_1.default)(abi, calls, (_a = params.chain) !== null && _a !== void 0 ? _a : "ethereum", params.block).then(function (calls) { return [calls, i]; })];
|
|
149
|
-
});
|
|
150
|
-
}); })];
|
|
140
|
+
return [4 /*yield*/, (0, util_1.runInPromisePool)({
|
|
141
|
+
items: (0, util_1.sliceIntoChunks)(contractCalls, chunkSize),
|
|
142
|
+
concurrency: 20,
|
|
143
|
+
processor: function (calls) { return (0, multicall_1.default)(abi, calls, chain, params.block); }
|
|
144
|
+
})];
|
|
151
145
|
case 1:
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
throw errors[0];
|
|
155
|
-
flatResults = [].concat.apply([], results
|
|
156
|
-
.sort(function (_a, _b) {
|
|
157
|
-
var c1 = _a[0], i1 = _a[1];
|
|
158
|
-
var c2 = _b[0], i2 = _b[1];
|
|
159
|
-
return i1 - i2;
|
|
160
|
-
}).map(function (_a) {
|
|
161
|
-
var c = _a[0], i = _a[1];
|
|
162
|
-
return c;
|
|
163
|
-
}));
|
|
146
|
+
results = _c.sent();
|
|
147
|
+
flatResults = [].concat.apply([], results);
|
|
164
148
|
failedQueries = flatResults.filter(function (r) { return !r.success; });
|
|
165
149
|
if (failedQueries.length)
|
|
166
|
-
(0, debugLog_1.debugLog)("[chain: ".concat((
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
abi: params.abi,
|
|
171
|
-
chain: params.chain,
|
|
172
|
-
calls: failed.map(function (f) { return f[0].input; }),
|
|
173
|
-
block: params.block,
|
|
174
|
-
requery: params.requery,
|
|
175
|
-
}).then(function (_a) {
|
|
176
|
-
var output = _a.output;
|
|
177
|
-
return output;
|
|
178
|
-
})];
|
|
179
|
-
case 2:
|
|
180
|
-
newResults_1 = _c.sent();
|
|
181
|
-
failed.forEach(function (f, i) {
|
|
182
|
-
flatResults[f[1]] = newResults_1[i];
|
|
183
|
-
});
|
|
184
|
-
_c.label = 3;
|
|
185
|
-
case 3: return [2 /*return*/, {
|
|
186
|
-
output: flatResults, // flatten array
|
|
187
|
-
}];
|
|
150
|
+
(0, debugLog_1.debugLog)("[chain: ".concat((_b = params.chain) !== null && _b !== void 0 ? _b : "ethereum", "] Failed multicalls:"), failedQueries.map(function (r) { return r.input; }));
|
|
151
|
+
return [2 /*return*/, {
|
|
152
|
+
output: flatResults, // flatten array
|
|
153
|
+
}];
|
|
188
154
|
}
|
|
189
155
|
});
|
|
190
156
|
});
|
package/build/abi/multicall.d.ts
CHANGED
package/build/abi/multicall.js
CHANGED
|
@@ -39,12 +39,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
39
39
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
40
|
};
|
|
41
41
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
exports.AGGREGATE_SELECTOR = exports.MULTICALL_ADDRESS_OPTIMISM = exports.MULTICALL_ADDRESS_AURORA = exports.MULTICALL_ADDRESS_MOONRIVER = exports.MULTICALL_ADDRESS_AVAX = exports.MULTICALL_ADDRESS_ARBITRUM = exports.MULTICALL_ADDRESS_HARMONY = exports.MULTICALL_ADDRESS_HECO = exports.MULTICALL_ADDRESS_XDAI = exports.MULTICALL_ADDRESS_FANTOM = exports.MULTICALL_ADDRESS_BSC = exports.MULTICALL_ADDRESS_POLYGON = exports.MULTICALL_ADDRESS_GOERLI = exports.MULTICALL_ADDRESS_RINKEBY = exports.MULTICALL_ADDRESS_KOVAN = exports.MULTICALL_ADDRESS_MAINNET = void 0;
|
|
42
|
+
exports.networkSupportsMulticall = exports.AGGREGATE_SELECTOR = exports.MULTICALL_ADDRESS_OPTIMISM = exports.MULTICALL_ADDRESS_AURORA = exports.MULTICALL_ADDRESS_MOONRIVER = exports.MULTICALL_ADDRESS_AVAX = exports.MULTICALL_ADDRESS_ARBITRUM = exports.MULTICALL_ADDRESS_HARMONY = exports.MULTICALL_ADDRESS_HECO = exports.MULTICALL_ADDRESS_XDAI = exports.MULTICALL_ADDRESS_FANTOM = exports.MULTICALL_ADDRESS_BSC = exports.MULTICALL_ADDRESS_POLYGON = exports.MULTICALL_ADDRESS_GOERLI = exports.MULTICALL_ADDRESS_RINKEBY = exports.MULTICALL_ADDRESS_KOVAN = exports.MULTICALL_ADDRESS_MAINNET = void 0;
|
|
43
43
|
var ethers_1 = require("ethers");
|
|
44
44
|
var utils_1 = require("ethers/lib/utils");
|
|
45
45
|
var general_1 = require("../general");
|
|
46
46
|
var convertResults_1 = __importDefault(require("./convertResults"));
|
|
47
47
|
var rpcCall_1 = require("./rpcCall");
|
|
48
|
+
var debugLog_1 = require("../util/debugLog");
|
|
49
|
+
var util_1 = require("../util");
|
|
48
50
|
exports.MULTICALL_ADDRESS_MAINNET = "0xeefba1e63905ef1d7acba5a8513c70307c1ce441";
|
|
49
51
|
exports.MULTICALL_ADDRESS_KOVAN = "0x2cc8688c5f75e365aaeeb4ea8d6a480405a48d2a";
|
|
50
52
|
exports.MULTICALL_ADDRESS_RINKEBY = "0x42ad527de7d4e9d9d011ac45b31d8551f8fe9821";
|
|
@@ -103,16 +105,15 @@ function makeMultiCall(functionABI, calls, chain, block) {
|
|
|
103
105
|
exports.default = makeMultiCall;
|
|
104
106
|
function executeCalls(contractCalls, chain, block) {
|
|
105
107
|
return __awaiter(this, void 0, void 0, function () {
|
|
106
|
-
var multicallData, address, callData, tx, returnData, _a, blockNumber, returnValues, e_1,
|
|
108
|
+
var multicallData, address, callData, tx, returnData, _a, blockNumber, returnValues, e_1, chunkSize, chunks, response;
|
|
107
109
|
var _this = this;
|
|
108
110
|
return __generator(this, function (_b) {
|
|
109
111
|
switch (_b.label) {
|
|
110
|
-
case 0:
|
|
112
|
+
case 0:
|
|
113
|
+
if (!networkSupportsMulticall(chain)) return [3 /*break*/, 7];
|
|
114
|
+
_b.label = 1;
|
|
111
115
|
case 1:
|
|
112
|
-
|
|
113
|
-
_b.label = 2;
|
|
114
|
-
case 2:
|
|
115
|
-
_b.trys.push([2, 5, , 6]);
|
|
116
|
+
_b.trys.push([1, 4, , 7]);
|
|
116
117
|
multicallData = ethers_1.ethers.utils.defaultAbiCoder.encode([
|
|
117
118
|
utils_1.ParamType.fromObject({
|
|
118
119
|
components: [
|
|
@@ -124,7 +125,7 @@ function executeCalls(contractCalls, chain, block) {
|
|
|
124
125
|
}),
|
|
125
126
|
], [contractCalls.map(function (call) { return [call.to, call.data]; })]);
|
|
126
127
|
return [4 /*yield*/, multicallAddressOrThrow(chain)];
|
|
127
|
-
case
|
|
128
|
+
case 2:
|
|
128
129
|
address = _b.sent();
|
|
129
130
|
callData = exports.AGGREGATE_SELECTOR + multicallData.substr(2);
|
|
130
131
|
tx = {
|
|
@@ -132,37 +133,55 @@ function executeCalls(contractCalls, chain, block) {
|
|
|
132
133
|
data: callData,
|
|
133
134
|
};
|
|
134
135
|
return [4 /*yield*/, (0, rpcCall_1.call)((0, general_1.getProvider)(chain), tx, block !== null && block !== void 0 ? block : "latest", chain)];
|
|
135
|
-
case
|
|
136
|
+
case 3:
|
|
136
137
|
returnData = _b.sent();
|
|
137
138
|
_a = ethers_1.ethers.utils.defaultAbiCoder.decode(["uint256", "bytes[]"], returnData), blockNumber = _a[0], returnValues = _a[1];
|
|
138
139
|
return [2 /*return*/, returnValues];
|
|
139
|
-
case
|
|
140
|
+
case 4:
|
|
140
141
|
e_1 = _b.sent();
|
|
141
|
-
if (!
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
142
|
+
if (!(contractCalls.length > 10)) return [3 /*break*/, 6];
|
|
143
|
+
chunkSize = Math.ceil(contractCalls.length / 5);
|
|
144
|
+
chunks = (0, util_1.sliceIntoChunks)(contractCalls, chunkSize);
|
|
145
|
+
(0, debugLog_1.debugLog)("Multicall failed, call size: ".concat(contractCalls.length, ", splitting into smaller chunks and trying again, new call size: ").concat(chunks[0].length));
|
|
146
|
+
return [4 /*yield*/, (0, util_1.runInPromisePool)({
|
|
147
|
+
items: chunks,
|
|
148
|
+
concurrency: 2,
|
|
149
|
+
processor: function (calls) { return executeCalls(calls, chain, block); }
|
|
150
|
+
})];
|
|
151
|
+
case 5:
|
|
152
|
+
response = _b.sent();
|
|
153
|
+
return [2 /*return*/, response.flat()];
|
|
154
|
+
case 6:
|
|
155
|
+
(0, debugLog_1.debugLog)("Multicall failed, defaulting to single transactions...");
|
|
156
|
+
return [3 /*break*/, 7];
|
|
157
|
+
case 7: return [2 /*return*/, (0, util_1.runInPromisePool)({
|
|
158
|
+
items: contractCalls,
|
|
159
|
+
concurrency: networkSupportsMulticall(chain) ? 2 : 10,
|
|
160
|
+
processor: function (_a) {
|
|
161
|
+
var to = _a.to, data = _a.data;
|
|
162
|
+
return __awaiter(_this, void 0, void 0, function () {
|
|
163
|
+
var result, e_2;
|
|
164
|
+
return __generator(this, function (_b) {
|
|
165
|
+
switch (_b.label) {
|
|
166
|
+
case 0:
|
|
167
|
+
result = null;
|
|
168
|
+
_b.label = 1;
|
|
169
|
+
case 1:
|
|
170
|
+
_b.trys.push([1, 3, , 4]);
|
|
171
|
+
return [4 /*yield*/, (0, rpcCall_1.call)((0, general_1.getProvider)(chain), { to: to, data: data }, block !== null && block !== void 0 ? block : "latest", chain)];
|
|
172
|
+
case 2:
|
|
173
|
+
result = _b.sent();
|
|
174
|
+
return [3 /*break*/, 4];
|
|
175
|
+
case 3:
|
|
176
|
+
e_2 = _b.sent();
|
|
177
|
+
(0, debugLog_1.debugLog)(e_2);
|
|
178
|
+
return [3 /*break*/, 4];
|
|
179
|
+
case 4: return [2 /*return*/, result];
|
|
180
|
+
}
|
|
181
|
+
});
|
|
160
182
|
});
|
|
161
|
-
}
|
|
162
|
-
})
|
|
163
|
-
case 7:
|
|
164
|
-
values = _b.sent();
|
|
165
|
-
return [2 /*return*/, values];
|
|
183
|
+
}
|
|
184
|
+
})];
|
|
166
185
|
}
|
|
167
186
|
});
|
|
168
187
|
});
|
|
@@ -187,19 +206,11 @@ function multicallAddressOrThrow(chain) {
|
|
|
187
206
|
});
|
|
188
207
|
}
|
|
189
208
|
function networkSupportsMulticall(chain) {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
switch (_a.label) {
|
|
194
|
-
case 0: return [4 /*yield*/, (0, general_1.getProvider)(chain).network];
|
|
195
|
-
case 1:
|
|
196
|
-
network = _a.sent();
|
|
197
|
-
address = multicallAddress(network.chainId);
|
|
198
|
-
return [2 /*return*/, address !== null];
|
|
199
|
-
}
|
|
200
|
-
});
|
|
201
|
-
});
|
|
209
|
+
var network = (0, general_1.getProvider)(chain).network;
|
|
210
|
+
var address = multicallAddress(network.chainId);
|
|
211
|
+
return address !== null;
|
|
202
212
|
}
|
|
213
|
+
exports.networkSupportsMulticall = networkSupportsMulticall;
|
|
203
214
|
function multicallAddress(chainId) {
|
|
204
215
|
switch (chainId) {
|
|
205
216
|
case 1:
|
package/build/abi/rpcCall.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import { Deferrable } from "@ethersproject/properties";
|
|
2
2
|
import { BaseProvider, BlockTag, TransactionRequest } from "@ethersproject/providers";
|
|
3
|
-
export declare function call(provider: BaseProvider, data: Deferrable<TransactionRequest>, block: BlockTag, chain?: string
|
|
3
|
+
export declare function call(provider: BaseProvider, data: Deferrable<TransactionRequest>, block: BlockTag, chain?: string, options?: {
|
|
4
|
+
retry: boolean;
|
|
5
|
+
}): Promise<any>;
|
package/build/abi/rpcCall.js
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
2
13
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
14
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
15
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -39,11 +50,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
39
50
|
exports.call = void 0;
|
|
40
51
|
var events_1 = require("events");
|
|
41
52
|
var debugLog_1 = require("../util/debugLog");
|
|
42
|
-
var maxParallelCalls = !!process.env.LLAMA_SDK_MAX_PARALLEL ? +process.env.LLAMA_SDK_MAX_PARALLEL :
|
|
53
|
+
var maxParallelCalls = !!process.env.LLAMA_SDK_MAX_PARALLEL ? +process.env.LLAMA_SDK_MAX_PARALLEL : 100;
|
|
43
54
|
var COUNTERS = {};
|
|
44
55
|
var emitter = new events_1.EventEmitter();
|
|
45
56
|
emitter.setMaxListeners(500000);
|
|
46
|
-
function call(provider, data, block, chain) {
|
|
57
|
+
function call(provider, data, block, chain, options) {
|
|
58
|
+
var _a;
|
|
59
|
+
if (options === void 0) { options = { retry: true }; }
|
|
47
60
|
return __awaiter(this, void 0, void 0, function () {
|
|
48
61
|
function onComplete() {
|
|
49
62
|
counter.activeWorkers--;
|
|
@@ -53,10 +66,11 @@ function call(provider, data, block, chain) {
|
|
|
53
66
|
emitter.emit(nextRequestId);
|
|
54
67
|
}
|
|
55
68
|
}
|
|
56
|
-
var counter, currentId, eventId, showEveryX, response, e_1;
|
|
57
|
-
return __generator(this, function (
|
|
58
|
-
switch (
|
|
69
|
+
var retry, counter, currentId, eventId, showEveryX, response, e_1;
|
|
70
|
+
return __generator(this, function (_b) {
|
|
71
|
+
switch (_b.label) {
|
|
59
72
|
case 0:
|
|
73
|
+
retry = (_a = options.retry) !== null && _a !== void 0 ? _a : true;
|
|
60
74
|
if (!chain)
|
|
61
75
|
chain = 'noChain';
|
|
62
76
|
counter = getChainCounter(chain);
|
|
@@ -66,27 +80,29 @@ function call(provider, data, block, chain) {
|
|
|
66
80
|
counter.queue.push(eventId);
|
|
67
81
|
return [4 /*yield*/, (0, events_1.once)(emitter, eventId)];
|
|
68
82
|
case 1:
|
|
69
|
-
|
|
70
|
-
|
|
83
|
+
_b.sent();
|
|
84
|
+
_b.label = 2;
|
|
71
85
|
case 2:
|
|
72
86
|
counter.activeWorkers++;
|
|
73
87
|
if (debugLog_1.DEBUG_ENABLED) {
|
|
74
88
|
showEveryX = counter.queue.length > 100 ? 50 : 10 // show log fewer times if lot more are queued up
|
|
75
89
|
;
|
|
76
90
|
if (currentId % showEveryX === 0)
|
|
77
|
-
|
|
91
|
+
(0, debugLog_1.debugLog)("chain: ".concat(chain, " request #: ").concat(currentId, " queue: ").concat(counter.queue.length, " active requests: ").concat(counter.activeWorkers));
|
|
78
92
|
}
|
|
79
|
-
|
|
93
|
+
_b.label = 3;
|
|
80
94
|
case 3:
|
|
81
|
-
|
|
95
|
+
_b.trys.push([3, 5, , 6]);
|
|
82
96
|
return [4 /*yield*/, provider.call(data, block)];
|
|
83
97
|
case 4:
|
|
84
|
-
response =
|
|
98
|
+
response = _b.sent();
|
|
85
99
|
onComplete();
|
|
86
100
|
return [3 /*break*/, 6];
|
|
87
101
|
case 5:
|
|
88
|
-
e_1 =
|
|
102
|
+
e_1 = _b.sent();
|
|
89
103
|
onComplete();
|
|
104
|
+
if (retry)
|
|
105
|
+
return [2 /*return*/, call(provider, data, block, chain, __assign(__assign({}, options), { retry: false }))];
|
|
90
106
|
throw e_1;
|
|
91
107
|
case 6: return [2 /*return*/, response];
|
|
92
108
|
}
|
package/build/general.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { ethers, BigNumber } from "ethers";
|
|
|
2
2
|
export declare const providers: {
|
|
3
3
|
[chain: string]: ethers.providers.BaseProvider;
|
|
4
4
|
};
|
|
5
|
-
export type Chain = "ethereum" | "bsc" | "polygon" | "heco" | "fantom" | "rsk" | "tomochain" | "xdai" | "avax" | "wan" | "iotex" | "harmony" | "thundercore" | "okexchain" | "optimism" | "arbitrum" | "kcc" | "celo" | "moonriver" | "shiden" | "palm" | "energyweb" | "energi" | "songbird" | "hpb" | "gochain" | "ethereumclassic" | "xdaiarb" | "kardia" | "fuse" | "smartbch" | "elastos" | "hoo" | "fusion" | "aurora" | "ronin" | "boba" | "cronos" | "polis" | "zyx" | "telos" | "metis" | "ubiq" | "velas" | "callisto" | "csc" | "nahmii" | "liquidchain" | "meter" | "theta" | "oasis" | "syscoin" | "moonbeam" | "curio" | "astar" | "godwoken" | "evmos" | "conflux" | "milkomeda" | "milkomeda_a1" | "dfk" | "bittorrent" | "findora" | "candle" | "lachain" | "reichain" | "rei" | "clv" | "echelon" | "multivac" | "sx" | "karura_evm" | "nova" | "ontology_evm" | "jfin" | "bitkub" | "bitgert" | "canto" | "dogechain" | "posi" | "arbitrum_nova" | "ultron" | "tombchain" | "vision" | "ethpow" | "functionx" | "cube" | "xdc" | "step" | "kekchain" | "muuchain";
|
|
5
|
+
export type Chain = "ethereum" | "bsc" | "polygon" | "heco" | "fantom" | "rsk" | "tomochain" | "xdai" | "avax" | "wan" | "iotex" | "harmony" | "thundercore" | "okexchain" | "optimism" | "arbitrum" | "kcc" | "celo" | "moonriver" | "shiden" | "palm" | "energyweb" | "energi" | "songbird" | "hpb" | "gochain" | "ethereumclassic" | "xdaiarb" | "kardia" | "fuse" | "smartbch" | "elastos" | "hoo" | "fusion" | "aurora" | "ronin" | "boba" | "cronos" | "polis" | "zyx" | "telos" | "metis" | "ubiq" | "velas" | "callisto" | "csc" | "nahmii" | "liquidchain" | "meter" | "theta" | "oasis" | "syscoin" | "moonbeam" | "curio" | "astar" | "godwoken" | "evmos" | "conflux" | "milkomeda" | "milkomeda_a1" | "dfk" | "bittorrent" | "findora" | "candle" | "lachain" | "reichain" | "rei" | "clv" | "echelon" | "multivac" | "sx" | "karura_evm" | "nova" | "ontology_evm" | "jfin" | "bitkub" | "bitgert" | "canto" | "dogechain" | "posi" | "arbitrum_nova" | "ultron" | "tombchain" | "vision" | "ethpow" | "functionx" | "cube" | "xdc" | "step" | "kekchain" | "muuchain" | "dexit";
|
|
6
6
|
export declare function getProvider(chain?: Chain): ethers.providers.BaseProvider;
|
|
7
7
|
export declare const TEN: ethers.BigNumber;
|
|
8
8
|
export declare function handleDecimals(num: BigNumber, decimals?: number): string;
|
package/build/general.js
CHANGED
|
@@ -133,6 +133,7 @@ exports.providers = {
|
|
|
133
133
|
kekchain: createProvider("kekchain", "https://mainnet.kekchain.com", 420420),
|
|
134
134
|
step: createProvider("step", "https://rpc.step.network/", 1234),
|
|
135
135
|
muuchain: createProvider("muu", "https://mainnet-rpc.muuchain.com", 20402),
|
|
136
|
+
dexit: createProvider("dexit", "https://dxt.dexit.network", 877),
|
|
136
137
|
};
|
|
137
138
|
function getProvider(chain) {
|
|
138
139
|
if (chain === void 0) { chain = "ethereum"; }
|
package/build/util/index.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { Chain } from "../general";
|
|
2
2
|
import type { Address } from "../types";
|
|
3
3
|
import type { Log } from "@ethersproject/abstract-provider";
|
|
4
|
+
import runInPromisePoolOrig from "./promisePool";
|
|
5
|
+
export declare const runInPromisePool: typeof runInPromisePoolOrig;
|
|
6
|
+
export declare function sliceIntoChunks(arr: any[], chunkSize?: number): any[][];
|
|
4
7
|
interface TimestampBlock {
|
|
5
8
|
number: number;
|
|
6
9
|
timestamp: number;
|
package/build/util/index.js
CHANGED
|
@@ -50,12 +50,24 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
50
50
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
51
51
|
};
|
|
52
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
|
-
exports.normalizeBalances = exports.normalizePrefixes = exports.normalizeAddress = exports.getLogs = exports.lookupBlock = exports.getLatestBlock = void 0;
|
|
53
|
+
exports.normalizeBalances = exports.normalizePrefixes = exports.normalizeAddress = exports.getLogs = exports.lookupBlock = exports.getLatestBlock = exports.sliceIntoChunks = exports.runInPromisePool = void 0;
|
|
54
54
|
var general_1 = require("../general");
|
|
55
55
|
var node_fetch_1 = __importDefault(require("node-fetch"));
|
|
56
56
|
var ethers_1 = require("ethers");
|
|
57
57
|
var generalUtil_1 = require("../generalUtil");
|
|
58
58
|
var debugLog_1 = require("./debugLog");
|
|
59
|
+
var promisePool_1 = __importDefault(require("./promisePool"));
|
|
60
|
+
exports.runInPromisePool = promisePool_1.default;
|
|
61
|
+
function sliceIntoChunks(arr, chunkSize) {
|
|
62
|
+
if (chunkSize === void 0) { chunkSize = 100; }
|
|
63
|
+
var res = [];
|
|
64
|
+
for (var i = 0; i < arr.length; i += chunkSize) {
|
|
65
|
+
var chunk = arr.slice(i, i + chunkSize);
|
|
66
|
+
res.push(chunk);
|
|
67
|
+
}
|
|
68
|
+
return res;
|
|
69
|
+
}
|
|
70
|
+
exports.sliceIntoChunks = sliceIntoChunks;
|
|
59
71
|
var kavaBlockProvider = {
|
|
60
72
|
getBlock: function (height) { return __awaiter(void 0, void 0, void 0, function () {
|
|
61
73
|
return __generator(this, function (_a) {
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
var promise_pool_1 = require("@supercharge/promise-pool");
|
|
40
|
+
function runInPromisePool(params) {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
42
|
+
var _a, results, errors, flatResults;
|
|
43
|
+
var _this = this;
|
|
44
|
+
return __generator(this, function (_b) {
|
|
45
|
+
switch (_b.label) {
|
|
46
|
+
case 0: return [4 /*yield*/, promise_pool_1.PromisePool
|
|
47
|
+
.withConcurrency(params.concurrency)
|
|
48
|
+
.for(params.items)
|
|
49
|
+
.process(function (item, i) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
50
|
+
switch (_a.label) {
|
|
51
|
+
case 0: return [4 /*yield*/, params.processor(item, i)];
|
|
52
|
+
case 1: return [2 /*return*/, [_a.sent(), i]];
|
|
53
|
+
}
|
|
54
|
+
}); }); })];
|
|
55
|
+
case 1:
|
|
56
|
+
_a = _b.sent(), results = _a.results, errors = _a.errors;
|
|
57
|
+
if (errors.length)
|
|
58
|
+
throw errors[0];
|
|
59
|
+
flatResults = results.sort(function (a, b) { return a[1] - b[1]; }).map((function (i) { return i[0]; }));
|
|
60
|
+
return [2 /*return*/, flatResults];
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
exports.default = runInPromisePool;
|