@defillama/sdk 3.0.6 → 3.0.8
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 -51
- 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.js +1 -1
- 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,8 +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");
|
|
60
|
+
var util_1 = require("../util");
|
|
61
|
+
var defaultChunkSize = !!process.env.SDK_MULTICALL_CHUNK_SIZE ? +process.env.SDK_MULTICALL_CHUNK_SIZE : 500;
|
|
61
62
|
function resolveABI(providedAbi) {
|
|
62
63
|
var abi = providedAbi;
|
|
63
64
|
if (typeof abi === "string") {
|
|
@@ -108,13 +109,13 @@ function call(params) {
|
|
|
108
109
|
}
|
|
109
110
|
exports.call = call;
|
|
110
111
|
function multiCall(params) {
|
|
111
|
-
var _a;
|
|
112
|
+
var _a, _b;
|
|
112
113
|
return __awaiter(this, void 0, void 0, function () {
|
|
113
|
-
var
|
|
114
|
-
var _this = this;
|
|
114
|
+
var chain, chunkSize, abi, contractCalls, results, flatResults, failedQueries;
|
|
115
115
|
return __generator(this, function (_c) {
|
|
116
116
|
switch (_c.label) {
|
|
117
117
|
case 0:
|
|
118
|
+
chain = (_a = params.chain) !== null && _a !== void 0 ? _a : 'ethereum';
|
|
118
119
|
if (!params.calls)
|
|
119
120
|
throw new Error('Missing calls parameter');
|
|
120
121
|
if (params.target && !params.target.startsWith('0x'))
|
|
@@ -122,6 +123,11 @@ function multiCall(params) {
|
|
|
122
123
|
if (!params.calls.length) {
|
|
123
124
|
return [2 /*return*/, { output: [] }];
|
|
124
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
|
+
}
|
|
125
131
|
abi = resolveABI(params.abi);
|
|
126
132
|
contractCalls = (params.calls).map(function (call) {
|
|
127
133
|
var _a;
|
|
@@ -131,56 +137,20 @@ function multiCall(params) {
|
|
|
131
137
|
contract: (_a = call.target) !== null && _a !== void 0 ? _a : params.target,
|
|
132
138
|
};
|
|
133
139
|
});
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
.withConcurrency(20)
|
|
140
|
-
.for(contractChunks)
|
|
141
|
-
.process(function (calls, i) { return __awaiter(_this, void 0, void 0, function () {
|
|
142
|
-
var _a;
|
|
143
|
-
return __generator(this, function (_b) {
|
|
144
|
-
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]; })];
|
|
145
|
-
});
|
|
146
|
-
}); })];
|
|
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
|
+
})];
|
|
147
145
|
case 1:
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
throw errors[0];
|
|
151
|
-
flatResults = [].concat.apply([], results
|
|
152
|
-
.sort(function (_a, _b) {
|
|
153
|
-
var c1 = _a[0], i1 = _a[1];
|
|
154
|
-
var c2 = _b[0], i2 = _b[1];
|
|
155
|
-
return i1 - i2;
|
|
156
|
-
}).map(function (_a) {
|
|
157
|
-
var c = _a[0], i = _a[1];
|
|
158
|
-
return c;
|
|
159
|
-
}));
|
|
146
|
+
results = _c.sent();
|
|
147
|
+
flatResults = [].concat.apply([], results);
|
|
160
148
|
failedQueries = flatResults.filter(function (r) { return !r.success; });
|
|
161
149
|
if (failedQueries.length)
|
|
162
|
-
(0, debugLog_1.debugLog)("[chain: ".concat((
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
abi: params.abi,
|
|
167
|
-
chain: params.chain,
|
|
168
|
-
calls: failed.map(function (f) { return f[0].input; }),
|
|
169
|
-
block: params.block,
|
|
170
|
-
requery: params.requery,
|
|
171
|
-
}).then(function (_a) {
|
|
172
|
-
var output = _a.output;
|
|
173
|
-
return output;
|
|
174
|
-
})];
|
|
175
|
-
case 2:
|
|
176
|
-
newResults_1 = _c.sent();
|
|
177
|
-
failed.forEach(function (f, i) {
|
|
178
|
-
flatResults[f[1]] = newResults_1[i];
|
|
179
|
-
});
|
|
180
|
-
_c.label = 3;
|
|
181
|
-
case 3: return [2 /*return*/, {
|
|
182
|
-
output: flatResults, // flatten array
|
|
183
|
-
}];
|
|
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
|
+
}];
|
|
184
154
|
}
|
|
185
155
|
});
|
|
186
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.js
CHANGED
|
@@ -120,7 +120,7 @@ exports.providers = {
|
|
|
120
120
|
bitkub: createProvider("bitkub", "https://rpc.bitkubchain.io/", 96),
|
|
121
121
|
bitgert: createProvider("bitgert", "https://rpc.icecreamswap.com,https://nodes.vefinetwork.org/bitgert", 32520),
|
|
122
122
|
canto: createProvider("canto", "https://jsonrpc.canto.nodestake.top,https://canto.evm.chandrastation.com/", 7700),
|
|
123
|
-
dogechain: createProvider("dogechain", "https://dogechain.ankr.com,https://rpc.dogechain.dog,https://rpc01-sg.dogechain.dog,https://rpc02-sg.dogechain.dog,https://rpc03-sg.dogechain.dog", 2000),
|
|
123
|
+
dogechain: createProvider("dogechain", "https://dogechain-sj.ankr.com,https://dogechain.ankr.com,https://rpc.dogechain.dog,https://rpc01-sg.dogechain.dog,https://rpc02-sg.dogechain.dog,https://rpc03-sg.dogechain.dog", 2000),
|
|
124
124
|
posi: createProvider("posi", "https://api.posichain.org,https://api.s0.posichain.org", 900000),
|
|
125
125
|
arbitrum_nova: createProvider("posi", "https://nova.arbitrum.io/rpc", 42170),
|
|
126
126
|
ultron: createProvider("ultron", "https://ultron-rpc.net", 1231),
|
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;
|