@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.
@@ -19,7 +19,7 @@ export declare function multiCall(params: {
19
19
  block?: number;
20
20
  target?: Address;
21
21
  chain?: Chain;
22
- requery?: boolean;
22
+ chunkSize?: number;
23
23
  }): Promise<{
24
24
  output: any[];
25
25
  }>;
@@ -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 abi, contractCalls, chunkSize, contractChunks, i, _b, results, errors, flatResults, failedQueries, failed, newResults_1;
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
- chunkSize = 500;
135
- contractChunks = [];
136
- for (i = 0; i < contractCalls.length; i += chunkSize)
137
- contractChunks.push(contractCalls.slice(i, i + chunkSize));
138
- return [4 /*yield*/, promise_pool_1.PromisePool
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
- _b = _c.sent(), results = _b.results, errors = _b.errors;
149
- if (errors.length)
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((_a = params.chain) !== null && _a !== void 0 ? _a : "ethereum", "] Failed multicalls:"), failedQueries.map(function (r) { return r.input; }));
163
- if (!(params.requery === true && flatResults.some(function (r) { return !r.success; }))) return [3 /*break*/, 3];
164
- failed = flatResults.map(function (r, i) { return [r, i]; }).filter(function (r) { return !r[0].success; });
165
- return [4 /*yield*/, multiCall({
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
  });
@@ -19,3 +19,4 @@ export default function makeMultiCall(functionABI: any, calls: {
19
19
  contract: string;
20
20
  params: any[];
21
21
  }[], chain: Chain, block?: number): Promise<any>;
22
+ export declare function networkSupportsMulticall(chain: Chain): boolean;
@@ -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, values;
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: return [4 /*yield*/, networkSupportsMulticall(chain)];
112
+ case 0:
113
+ if (!networkSupportsMulticall(chain)) return [3 /*break*/, 7];
114
+ _b.label = 1;
111
115
  case 1:
112
- if (!_b.sent()) return [3 /*break*/, 6];
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 3:
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 4:
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 5:
140
+ case 4:
140
141
  e_1 = _b.sent();
141
- if (!process.env.DEFILLAMA_SDK_MUTED) {
142
- console.log("Multicall failed, defaulting to single transactions...");
143
- }
144
- return [3 /*break*/, 6];
145
- case 6: return [4 /*yield*/, Promise.all(contractCalls.map(function (_a) {
146
- var to = _a.to, data = _a.data;
147
- return __awaiter(_this, void 0, void 0, function () {
148
- var e_2;
149
- return __generator(this, function (_b) {
150
- switch (_b.label) {
151
- case 0:
152
- _b.trys.push([0, 2, , 3]);
153
- return [4 /*yield*/, (0, rpcCall_1.call)((0, general_1.getProvider)(chain), { to: to, data: data }, block !== null && block !== void 0 ? block : "latest", chain)];
154
- case 1: return [2 /*return*/, _b.sent()];
155
- case 2:
156
- e_2 = _b.sent();
157
- return [2 /*return*/, null];
158
- case 3: return [2 /*return*/];
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
- return __awaiter(this, void 0, void 0, function () {
191
- var network, address;
192
- return __generator(this, function (_a) {
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:
@@ -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): Promise<string>;
3
+ export declare function call(provider: BaseProvider, data: Deferrable<TransactionRequest>, block: BlockTag, chain?: string, options?: {
4
+ retry: boolean;
5
+ }): Promise<any>;
@@ -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 : 30;
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 (_a) {
58
- switch (_a.label) {
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
- _a.sent();
70
- _a.label = 2;
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
- console.log("chain: ".concat(chain, " request #: ").concat(currentId, " queue: ").concat(counter.queue.length, " active requests: ").concat(counter.activeWorkers));
91
+ (0, debugLog_1.debugLog)("chain: ".concat(chain, " request #: ").concat(currentId, " queue: ").concat(counter.queue.length, " active requests: ").concat(counter.activeWorkers));
78
92
  }
79
- _a.label = 3;
93
+ _b.label = 3;
80
94
  case 3:
81
- _a.trys.push([3, 5, , 6]);
95
+ _b.trys.push([3, 5, , 6]);
82
96
  return [4 /*yield*/, provider.call(data, block)];
83
97
  case 4:
84
- response = _a.sent();
98
+ response = _b.sent();
85
99
  onComplete();
86
100
  return [3 /*break*/, 6];
87
101
  case 5:
88
- e_1 = _a.sent();
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),
@@ -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;
@@ -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,5 @@
1
+ export default function runInPromisePool(params: {
2
+ items: any[];
3
+ concurrency: number;
4
+ processor: any;
5
+ }): Promise<any[]>;
@@ -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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defillama/sdk",
3
- "version": "3.0.6",
3
+ "version": "3.0.8",
4
4
  "description": "SDK for calculating TVL",
5
5
  "main": "build/index.js",
6
6
  "scripts": {