@defillama/sdk 5.0.6 → 5.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/ChainApi.d.ts +8 -1
- package/build/ChainApi.js +10 -6
- package/build/abi/index.js +2 -8
- package/build/abi/multicall.js +3 -2
- package/build/abi/rpcCall.js +2 -4
- package/build/abi/tron.js +7 -7
- package/build/general.js +25 -19
- package/build/providers.json +1 -1
- package/build/util/cache.js +10 -2
- package/build/util/cosmos.js +2 -1
- package/build/util/debugLog.d.ts +1 -1
- package/build/util/debugLog.js +2 -1
- package/build/util/env.d.ts +14 -0
- package/build/util/env.js +103 -0
- package/build/util/index.js +2 -2
- package/build/util/internal-cache.js +2 -1
- package/build/util/logs.js +2 -4
- package/build/util/r2.js +2 -1
- package/package.json +1 -1
package/build/ChainApi.d.ts
CHANGED
|
@@ -39,7 +39,14 @@ export declare class ChainApi {
|
|
|
39
39
|
removeTokenBalance(token: string): void;
|
|
40
40
|
deleteToken(token: string): void;
|
|
41
41
|
deleteTokens(tokens: string[]): void;
|
|
42
|
-
erc4626Sum({ calls, tokenAbi, balanceAbi, balanceCalls, permitFailure }:
|
|
42
|
+
erc4626Sum({ calls, tokenAbi, balanceAbi, balanceCalls, permitFailure, isOG4626 }: {
|
|
43
|
+
calls: string[];
|
|
44
|
+
tokenAbi?: string;
|
|
45
|
+
balanceAbi?: string;
|
|
46
|
+
balanceCalls?: any[];
|
|
47
|
+
permitFailure?: boolean;
|
|
48
|
+
isOG4626?: boolean;
|
|
49
|
+
}): Promise<BalancesV1>;
|
|
43
50
|
sumTokens({ tokens, owners, owner, tokensAndOwners, tokensAndOwners2, blacklistedTokens, blacklistedOwners, ownerTokens, }: {
|
|
44
51
|
tokens?: string[];
|
|
45
52
|
owner?: string;
|
package/build/ChainApi.js
CHANGED
|
@@ -155,23 +155,27 @@ var ChainApi = /** @class */ (function () {
|
|
|
155
155
|
tokens.forEach(function (i) { return _this.deleteToken(i); });
|
|
156
156
|
};
|
|
157
157
|
ChainApi.prototype.erc4626Sum = function (_a) {
|
|
158
|
-
var calls = _a.calls, _b = _a.tokenAbi, tokenAbi = _b === void 0 ? 'address:token' : _b, _c = _a.balanceAbi, balanceAbi = _c === void 0 ? 'uint256:balance' : _c, balanceCalls = _a.balanceCalls, _d = _a.permitFailure, permitFailure = _d === void 0 ? false : _d;
|
|
158
|
+
var calls = _a.calls, _b = _a.tokenAbi, tokenAbi = _b === void 0 ? 'address:token' : _b, _c = _a.balanceAbi, balanceAbi = _c === void 0 ? 'uint256:balance' : _c, balanceCalls = _a.balanceCalls, _d = _a.permitFailure, permitFailure = _d === void 0 ? false : _d, _e = _a.isOG4626, isOG4626 = _e === void 0 ? false : _e;
|
|
159
159
|
return __awaiter(this, void 0, void 0, function () {
|
|
160
160
|
var tokens, balances;
|
|
161
161
|
var _this = this;
|
|
162
|
-
return __generator(this, function (
|
|
163
|
-
switch (
|
|
162
|
+
return __generator(this, function (_f) {
|
|
163
|
+
switch (_f.label) {
|
|
164
164
|
case 0:
|
|
165
|
+
if (isOG4626) {
|
|
166
|
+
tokenAbi = 'asset';
|
|
167
|
+
balanceAbi = 'totalAssets';
|
|
168
|
+
}
|
|
165
169
|
if (typeof tokenAbi === 'string' && (!tokenAbi.includes(':') && !tokenAbi.includes('(')))
|
|
166
170
|
tokenAbi = "address:".concat(tokenAbi);
|
|
167
171
|
if (typeof balanceAbi === 'string' && (!balanceAbi.includes(':') && !balanceAbi.includes('(')))
|
|
168
172
|
balanceAbi = "uint256:".concat(balanceAbi);
|
|
169
173
|
return [4 /*yield*/, this.multiCall({ calls: calls, abi: tokenAbi, permitFailure: permitFailure })];
|
|
170
174
|
case 1:
|
|
171
|
-
tokens =
|
|
175
|
+
tokens = _f.sent();
|
|
172
176
|
return [4 /*yield*/, this.multiCall({ calls: calls !== null && calls !== void 0 ? calls : balanceCalls, abi: balanceAbi, permitFailure: permitFailure })];
|
|
173
177
|
case 2:
|
|
174
|
-
balances =
|
|
178
|
+
balances = _f.sent();
|
|
175
179
|
if (!permitFailure)
|
|
176
180
|
this.addTokens(tokens, balances);
|
|
177
181
|
else
|
|
@@ -179,7 +183,7 @@ var ChainApi = /** @class */ (function () {
|
|
|
179
183
|
if (i && balances[j])
|
|
180
184
|
_this.addToken(i, balances[j]);
|
|
181
185
|
});
|
|
182
|
-
return [2 /*return
|
|
186
|
+
return [2 /*return*/, this.getBalances()];
|
|
183
187
|
}
|
|
184
188
|
});
|
|
185
189
|
});
|
package/build/abi/index.js
CHANGED
|
@@ -93,6 +93,7 @@ var internal_cache_1 = require("../util/internal-cache");
|
|
|
93
93
|
var util_1 = require("../util");
|
|
94
94
|
var Tron = __importStar(require("./tron"));
|
|
95
95
|
var generalUtil_1 = require("../generalUtil");
|
|
96
|
+
var env_1 = require("../util/env");
|
|
96
97
|
var nullAddress = '0x0000000000000000000000000000000000000000';
|
|
97
98
|
// https://docs.soliditylang.org/en/latest/abi-spec.html
|
|
98
99
|
var knownTypes = [
|
|
@@ -101,13 +102,6 @@ var knownTypes = [
|
|
|
101
102
|
'uint', 'uint8', 'uint16', 'uint32', 'uint64', 'uint128', 'uint256',
|
|
102
103
|
];
|
|
103
104
|
(__spreadArray([], knownTypes, true)).forEach(function (i) { return knownTypes.push(i + '[]'); }); // support array type for all known types
|
|
104
|
-
function getDefaultChunkSize(chain) {
|
|
105
|
-
if (process.env['SDK_MULTICALL_CHUNK_SIZE_' + (chain === null || chain === void 0 ? void 0 : chain.toUpperCase())])
|
|
106
|
-
return +process.env['SDK_MULTICALL_CHUNK_SIZE_' + (chain === null || chain === void 0 ? void 0 : chain.toUpperCase())];
|
|
107
|
-
if (chain === 'cronos')
|
|
108
|
-
return 200;
|
|
109
|
-
return process.env.SDK_MULTICALL_CHUNK_SIZE ? +process.env.SDK_MULTICALL_CHUNK_SIZE : 300;
|
|
110
|
-
}
|
|
111
105
|
function resolveABI(providedAbi) {
|
|
112
106
|
if (!providedAbi)
|
|
113
107
|
throw new Error('Missing ABI parameter!');
|
|
@@ -271,7 +265,7 @@ function multiCall(params) {
|
|
|
271
265
|
chunkSize = params.chunkSize;
|
|
272
266
|
if (!params.chunkSize) {
|
|
273
267
|
// Only a max of around 500 calls are supported by multicall, we have to split bigger batches
|
|
274
|
-
chunkSize = getDefaultChunkSize(chain);
|
|
268
|
+
chunkSize = (0, env_1.getDefaultChunkSize)(chain);
|
|
275
269
|
}
|
|
276
270
|
if (!params.target && !params.permitFailure) {
|
|
277
271
|
// check if target adddress is missing for one of the calls
|
package/build/abi/multicall.js
CHANGED
|
@@ -70,6 +70,7 @@ var rpcCall_1 = require("./rpcCall");
|
|
|
70
70
|
var debugLog_1 = require("../util/debugLog");
|
|
71
71
|
var util_1 = require("../util");
|
|
72
72
|
var Tron = __importStar(require("./tron"));
|
|
73
|
+
var env_1 = require("../util/env");
|
|
73
74
|
exports.MULTICALL_ADDRESS_MAINNET = "0xeefba1e63905ef1d7acba5a8513c70307c1ce441";
|
|
74
75
|
exports.MULTICALL_ADDRESS_KOVAN = "0x2cc8688c5f75e365aaeeb4ea8d6a480405a48d2a";
|
|
75
76
|
exports.MULTICALL_ADDRESS_RINKEBY = "0x42ad527de7d4e9d9d011ac45b31d8551f8fe9821";
|
|
@@ -228,7 +229,7 @@ function multicallAddressOrThrow(chain) {
|
|
|
228
229
|
return __generator(this, function (_a) {
|
|
229
230
|
switch (_a.label) {
|
|
230
231
|
case 0:
|
|
231
|
-
multicallEnv =
|
|
232
|
+
multicallEnv = (0, env_1.getEnvMulticallAddress)(chain);
|
|
232
233
|
if (multicallEnv)
|
|
233
234
|
return [2 /*return*/, multicallEnv];
|
|
234
235
|
return [4 /*yield*/, (0, general_1.getProvider)(chain).getNetwork()];
|
|
@@ -254,7 +255,7 @@ function networkSupportsMulticall(chain) {
|
|
|
254
255
|
return __generator(this, function (_b) {
|
|
255
256
|
switch (_b.label) {
|
|
256
257
|
case 0:
|
|
257
|
-
multicallEnv =
|
|
258
|
+
multicallEnv = (0, env_1.getEnvMulticallAddress)(chain);
|
|
258
259
|
if (multicallEnv)
|
|
259
260
|
networkMulticallCache[chain] = true;
|
|
260
261
|
if (!!networkMulticallCache.hasOwnProperty(chain)) return [3 /*break*/, 2];
|
package/build/abi/rpcCall.js
CHANGED
|
@@ -50,7 +50,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
50
50
|
exports.call = void 0;
|
|
51
51
|
var events_1 = require("events");
|
|
52
52
|
var debugLog_1 = require("../util/debugLog");
|
|
53
|
-
var
|
|
53
|
+
var env_1 = require("../util/env");
|
|
54
54
|
var COUNTERS = {};
|
|
55
55
|
var emitter = new events_1.EventEmitter();
|
|
56
56
|
emitter.setMaxListeners(500000);
|
|
@@ -77,9 +77,7 @@ function call(provider, data, block, chain, options) {
|
|
|
77
77
|
counter = getChainCounter(chain);
|
|
78
78
|
currentId = counter.requestCount++;
|
|
79
79
|
eventId = "".concat(chain, "-").concat(currentId);
|
|
80
|
-
chainMaxParallelCalls =
|
|
81
|
-
if (['avax', 'harmony'].includes(chain))
|
|
82
|
-
chainMaxParallelCalls = 20;
|
|
80
|
+
chainMaxParallelCalls = (0, env_1.getMaxParallelRequests)(chain);
|
|
83
81
|
if (!(counter.activeWorkers > chainMaxParallelCalls)) return [3 /*break*/, 2];
|
|
84
82
|
counter.queue.push(eventId);
|
|
85
83
|
return [4 /*yield*/, (0, events_1.once)(emitter, eventId)];
|
package/build/abi/tron.js
CHANGED
|
@@ -47,7 +47,6 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
47
47
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
48
48
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
49
49
|
};
|
|
50
|
-
var _a;
|
|
51
50
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
52
51
|
exports.getBalances = exports.getBalance = exports.multiCall = exports.call = void 0;
|
|
53
52
|
var node_fetch_1 = __importDefault(require("node-fetch"));
|
|
@@ -58,11 +57,11 @@ var debugLog_1 = require("../util/debugLog");
|
|
|
58
57
|
var util_1 = require("../util");
|
|
59
58
|
var general_1 = require("../general");
|
|
60
59
|
var p_limit_1 = __importDefault(require("p-limit"));
|
|
61
|
-
var
|
|
60
|
+
var env_1 = require("../util/env");
|
|
61
|
+
var limitRPCCalls = (0, p_limit_1.default)(+(0, env_1.getEnvValue)('TRON_RPC_CONCURRENCY_LIMIT', '5'));
|
|
62
62
|
var ownerAddress = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t';
|
|
63
|
-
var endpoint = 'https://api.trongrid.io';
|
|
64
63
|
var MULTICALL_ADDRESS = 'TGXuuKAb4bnrn137u39EKbYzKNXvdCes98';
|
|
65
|
-
var getEndpoint = function () {
|
|
64
|
+
var getEndpoint = function () { return (0, env_1.getEnvRPC)('tron'); };
|
|
66
65
|
function call(options) {
|
|
67
66
|
var _a, _b;
|
|
68
67
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -295,14 +294,15 @@ function post(body, endpoint) {
|
|
|
295
294
|
if (body === void 0) { body = {}; }
|
|
296
295
|
if (endpoint === void 0) { endpoint = '/wallet/triggerconstantcontract'; }
|
|
297
296
|
return __awaiter(this, void 0, void 0, function () {
|
|
298
|
-
var host, headers, response;
|
|
297
|
+
var host, headers, apiKey, response;
|
|
299
298
|
return __generator(this, function (_a) {
|
|
300
299
|
switch (_a.label) {
|
|
301
300
|
case 0:
|
|
302
301
|
host = getEndpoint();
|
|
303
302
|
headers = { 'Content-Type': 'application/json' };
|
|
304
|
-
|
|
305
|
-
|
|
303
|
+
apiKey = (0, env_1.getEnvValue)('TRON_PRO_API_KEY');
|
|
304
|
+
if (apiKey)
|
|
305
|
+
headers['TRON-PRO-API-KEY'] = apiKey;
|
|
306
306
|
return [4 /*yield*/, (0, node_fetch_1.default)(host + endpoint, {
|
|
307
307
|
method: 'post',
|
|
308
308
|
body: JSON.stringify(body),
|
package/build/general.js
CHANGED
|
@@ -4,23 +4,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.setProvider = exports.ETHER_ADDRESS = exports.handleDecimals = exports.TEN = exports.getProvider = exports.providers = void 0;
|
|
7
|
+
var debugLog_1 = require("./util/debugLog");
|
|
7
8
|
var ethers_1 = require("ethers");
|
|
8
9
|
var providers_json_1 = __importDefault(require("./providers.json"));
|
|
10
|
+
var env_1 = require("./util/env");
|
|
9
11
|
function createProvider(name, rpcString, chainId) {
|
|
10
|
-
|
|
12
|
+
chainId = (0, env_1.getChainId)(name, chainId);
|
|
11
13
|
var networkish = { name: name, chainId: chainId };
|
|
12
14
|
var rpcList = rpcString.split(',');
|
|
13
|
-
if (
|
|
14
|
-
chainId = +process.env["".concat(name.toUpperCase(), "_RPC_CHAIN_ID")];
|
|
15
|
-
if (process.env.HISTORICAL) {
|
|
15
|
+
if ((0, env_1.getEnvValue)('HISTORICAL')) {
|
|
16
16
|
if (chainId === 1) {
|
|
17
|
-
|
|
17
|
+
(0, debugLog_1.debugLog)("RPC providers set to historical, only the first RPC provider will be used");
|
|
18
18
|
}
|
|
19
|
-
return getProviderObject(rpcList[0]);
|
|
19
|
+
return getProviderObject(rpcList[0], name);
|
|
20
20
|
}
|
|
21
21
|
else {
|
|
22
22
|
try {
|
|
23
|
-
return new ethers_1.ethers.FallbackProvider(rpcList.map(function (url, i) { return ({ provider: getProviderObject(url), priority: i, chainId: chainId, }); }), networkish, { cacheTimeout: 5 * 1000, quorum: 1, eventQuorum: 1, });
|
|
23
|
+
return new ethers_1.ethers.FallbackProvider(rpcList.map(function (url, i) { return ({ provider: getProviderObject(url, name), priority: i, chainId: chainId, }); }), networkish, { cacheTimeout: 5 * 1000, quorum: 1, eventQuorum: 1, });
|
|
24
24
|
}
|
|
25
25
|
catch (e) {
|
|
26
26
|
// debugLog(`Error creating provider for ${name} with RPCs: ${rpcList.join(', ')}`)
|
|
@@ -30,7 +30,7 @@ function createProvider(name, rpcString, chainId) {
|
|
|
30
30
|
return null;
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
-
function getProviderObject(url) {
|
|
33
|
+
function getProviderObject(url, chain) {
|
|
34
34
|
/**
|
|
35
35
|
* Options for configuring a [[JsonRpcApiProvider]]. Much of this
|
|
36
36
|
* is targetted towards sub-classes, which often will not expose
|
|
@@ -70,7 +70,8 @@ function createProvider(name, rpcString, chainId) {
|
|
|
70
70
|
*/
|
|
71
71
|
// const batchMaxSize = 10 * (1024 * 1024) // 10Mb
|
|
72
72
|
// some rpcs throw error if batchMaxCount is set higher than 100
|
|
73
|
-
var
|
|
73
|
+
var batchMaxCount = (0, env_1.getBatchMaxCount)(chain);
|
|
74
|
+
var jsonRpcApiProviderOptions = { staticNetwork: true, batchStallTime: 42, batchMaxCount: batchMaxCount, cacheTimeout: 5 * 1000 };
|
|
74
75
|
if (url.startsWith('wss://')) {
|
|
75
76
|
delete jsonRpcApiProviderOptions.batchMaxCount;
|
|
76
77
|
return new ethers_1.ethers.WebSocketProvider(url, networkish, jsonRpcApiProviderOptions);
|
|
@@ -79,23 +80,28 @@ function createProvider(name, rpcString, chainId) {
|
|
|
79
80
|
}
|
|
80
81
|
}
|
|
81
82
|
exports.providers = {};
|
|
83
|
+
var archivalProviders = {};
|
|
82
84
|
function getProvider(chain, getArchivalNode) {
|
|
83
85
|
var _a, _b, _c;
|
|
84
86
|
if (chain === void 0) { chain = "ethereum"; }
|
|
85
87
|
if (getArchivalNode === void 0) { getArchivalNode = false; }
|
|
88
|
+
if (getArchivalNode) {
|
|
89
|
+
if (archivalProviders[chain])
|
|
90
|
+
return archivalProviders[chain]._provider;
|
|
91
|
+
var rpcList_1 = (0, env_1.getArchivalRPCs)(chain);
|
|
92
|
+
if (rpcList_1.length) {
|
|
93
|
+
// shuffle rpcList
|
|
94
|
+
rpcList_1 = rpcList_1.sort(function () { return Math.random() - 0.5; });
|
|
95
|
+
var provider = createProvider(chain, rpcList_1.join(','), (_a = providers_json_1.default[chain]) === null || _a === void 0 ? void 0 : _a.chainId);
|
|
96
|
+
if (rpcList_1.length === 1)
|
|
97
|
+
archivalProviders[chain] = { rpcList: rpcList_1[0], _provider: provider };
|
|
98
|
+
return provider;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
86
101
|
if (exports.providers[chain] && !getArchivalNode)
|
|
87
102
|
return exports.providers[chain]._provider;
|
|
88
|
-
var chainArchivalpcEnv = process.env[chain.toUpperCase() + "_ARCHIVAL_RPC"];
|
|
89
|
-
if (getArchivalNode && typeof chainArchivalpcEnv === 'string' && chainArchivalpcEnv.length > 0) {
|
|
90
|
-
var rpcList_1 = chainArchivalpcEnv === null || chainArchivalpcEnv === void 0 ? void 0 : chainArchivalpcEnv.split(',');
|
|
91
|
-
// shuffle rpcList
|
|
92
|
-
rpcList_1 = rpcList_1.sort(function () { return Math.random() - 0.5; });
|
|
93
|
-
return createProvider(chain, rpcList_1.join(','), (_a = providers_json_1.default[chain]) === null || _a === void 0 ? void 0 : _a.chainId);
|
|
94
|
-
}
|
|
95
103
|
// use RPC from env variable if set else use RPC from providers.json
|
|
96
|
-
var rpcList =
|
|
97
|
-
if (!rpcList)
|
|
98
|
-
rpcList = (_b = providers_json_1.default[chain]) === null || _b === void 0 ? void 0 : _b.rpc.join(',');
|
|
104
|
+
var rpcList = (0, env_1.getChainRPCs)(chain, (_b = providers_json_1.default[chain]) === null || _b === void 0 ? void 0 : _b.rpc);
|
|
99
105
|
if (!rpcList) {
|
|
100
106
|
// in case provider was set using `setProvider` function
|
|
101
107
|
if (exports.providers[chain])
|