@covalenthq/client-sdk 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ApprovalService.js +22 -33
- package/dist/ApprovalService.js.map +1 -1
- package/dist/BalancesService.js +157 -176
- package/dist/BalancesService.js.map +1 -1
- package/dist/BaseService.js +169 -192
- package/dist/BaseService.js.map +1 -1
- package/dist/LogEventService.js +40 -51
- package/dist/LogEventService.js.map +1 -1
- package/dist/NameResolverService.js +22 -33
- package/dist/NameResolverService.js.map +1 -1
- package/dist/NftService.js +292 -323
- package/dist/NftService.js.map +1 -1
- package/dist/PricingService.js +31 -42
- package/dist/PricingService.js.map +1 -1
- package/dist/TransactionsService.d.ts +1 -1
- package/dist/TransactionsService.js +286 -295
- package/dist/TransactionsService.js.map +1 -1
- package/dist/XykService.js +242 -273
- package/dist/XykService.js.map +1 -1
- package/package.json +1 -1
package/dist/ApprovalService.js
CHANGED
|
@@ -1,13 +1,4 @@
|
|
|
1
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.ApprovalService = void 0;
|
|
13
4
|
const baseDelayMs = 1000; // Base delay in milliseconds
|
|
@@ -21,35 +12,33 @@ class ApprovalService {
|
|
|
21
12
|
* @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, or an `Unstoppable Domain` resolves automatically.
|
|
22
13
|
*
|
|
23
14
|
*/
|
|
24
|
-
getApprovals(chainName, walletAddress) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
"Authorization": `Bearer ${this.apiKey}`
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
const data = yield response.json();
|
|
37
|
-
if (data.error && data.error_code === 429) {
|
|
38
|
-
retryCount++;
|
|
39
|
-
const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
|
|
40
|
-
yield new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
success = true;
|
|
44
|
-
return data;
|
|
15
|
+
async getApprovals(chainName, walletAddress) {
|
|
16
|
+
let retryCount = 0;
|
|
17
|
+
let success = false;
|
|
18
|
+
while (!success) {
|
|
19
|
+
try {
|
|
20
|
+
const urlParams = new URLSearchParams();
|
|
21
|
+
const response = await fetch(`https://api.covalenthq.com/v1/${chainName}/approvals/${walletAddress}/?${urlParams}`, {
|
|
22
|
+
headers: {
|
|
23
|
+
"Authorization": `Bearer ${this.apiKey}`
|
|
45
24
|
}
|
|
25
|
+
});
|
|
26
|
+
const data = await response.json();
|
|
27
|
+
if (data.error && data.error_code === 429) {
|
|
28
|
+
retryCount++;
|
|
29
|
+
const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
|
|
30
|
+
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
46
31
|
}
|
|
47
|
-
|
|
32
|
+
else {
|
|
48
33
|
success = true;
|
|
49
|
-
return
|
|
34
|
+
return data;
|
|
50
35
|
}
|
|
51
36
|
}
|
|
52
|
-
|
|
37
|
+
catch (error) {
|
|
38
|
+
success = true;
|
|
39
|
+
return error.message;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
53
42
|
}
|
|
54
43
|
}
|
|
55
44
|
exports.ApprovalService = ApprovalService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApprovalService.js","sourceRoot":"","sources":["../src/services/ApprovalService.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ApprovalService.js","sourceRoot":"","sources":["../src/services/ApprovalService.ts"],"names":[],"mappings":";;;AAkDA,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,6BAA6B;AAEvD,MAAa,eAAe;IACxB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAClC,CAAC;IAGD;;;;;OAKG;IACI,KAAK,CAAC,YAAY,CAAC,SAAkjE,EAAE,aAAqB;QAC/lE,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,OAAO,CAAC,OAAO,EAAE;YACb,IAAI;gBACA,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;gBAGxC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iCAAiC,SAAS,cAAc,aAAa,KAAK,SAAS,EAAE,EAAE;oBAChH,OAAO,EAAE;wBACL,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;qBAC3C;iBACJ,CAAC,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,KAAK,GAAG,EAAE;oBACvC,UAAU,EAAE,CAAC;oBACb,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,WAAW,CAAC,CAAC,gCAAgC;oBACvF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;iBAChE;qBAAM;oBACH,OAAO,GAAG,IAAI,CAAC;oBACf,OAAO,IAAI,CAAC;iBACf;aACJ;YAAC,OAAO,KAAK,EAAE;gBACZ,OAAO,GAAG,IAAI,CAAC;gBACf,OAAO,KAAK,CAAC,OAAO,CAAC;aACxB;SACJ;IACL,CAAC;CAGJ;AAzCD,0CAyCC"}
|
package/dist/BalancesService.js
CHANGED
|
@@ -1,13 +1,4 @@
|
|
|
1
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.BalancesService = void 0;
|
|
13
4
|
const baseDelayMs = 1000; // Base delay in milliseconds
|
|
@@ -26,50 +17,48 @@ class BalancesService {
|
|
|
26
17
|
* @param {boolean} noNftAssetMetadata - If `true`, the response shape is limited to a list of collections and token ids, omitting metadata and asset information. Helpful for faster response times and wallets holding a large number of NFTs.
|
|
27
18
|
*
|
|
28
19
|
*/
|
|
29
|
-
getTokenBalances(chainName, walletAddress, quoteCurrency, nft, noNftFetch, noSpam, noNftAssetMetadata) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
urlParams.append("no-nft-asset-metadata", noNftAssetMetadata.toString());
|
|
50
|
-
}
|
|
51
|
-
const response = yield fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/balances_v2/?${urlParams}`, {
|
|
52
|
-
headers: {
|
|
53
|
-
"Authorization": `Bearer ${this.apiKey}`
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
const data = yield response.json();
|
|
57
|
-
if (data.error && data.error_code === 429) {
|
|
58
|
-
retryCount++;
|
|
59
|
-
const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
|
|
60
|
-
yield new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
success = true;
|
|
64
|
-
return data;
|
|
65
|
-
}
|
|
20
|
+
async getTokenBalances(chainName, walletAddress, quoteCurrency, nft, noNftFetch, noSpam, noNftAssetMetadata) {
|
|
21
|
+
let retryCount = 0;
|
|
22
|
+
let success = false;
|
|
23
|
+
while (!success) {
|
|
24
|
+
try {
|
|
25
|
+
const urlParams = new URLSearchParams();
|
|
26
|
+
if (quoteCurrency !== undefined) {
|
|
27
|
+
urlParams.append("quote-currency", quoteCurrency.toString());
|
|
28
|
+
}
|
|
29
|
+
if (nft !== undefined) {
|
|
30
|
+
urlParams.append("nft", nft.toString());
|
|
31
|
+
}
|
|
32
|
+
if (noNftFetch !== undefined) {
|
|
33
|
+
urlParams.append("no-nft-fetch", noNftFetch.toString());
|
|
34
|
+
}
|
|
35
|
+
if (noSpam !== undefined) {
|
|
36
|
+
urlParams.append("no-spam", noSpam.toString());
|
|
37
|
+
}
|
|
38
|
+
if (noNftAssetMetadata !== undefined) {
|
|
39
|
+
urlParams.append("no-nft-asset-metadata", noNftAssetMetadata.toString());
|
|
66
40
|
}
|
|
67
|
-
|
|
41
|
+
const response = await fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/balances_v2/?${urlParams}`, {
|
|
42
|
+
headers: {
|
|
43
|
+
"Authorization": `Bearer ${this.apiKey}`
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
const data = await response.json();
|
|
47
|
+
if (data.error && data.error_code === 429) {
|
|
48
|
+
retryCount++;
|
|
49
|
+
const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
|
|
50
|
+
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
68
53
|
success = true;
|
|
69
|
-
return
|
|
54
|
+
return data;
|
|
70
55
|
}
|
|
71
56
|
}
|
|
72
|
-
|
|
57
|
+
catch (error) {
|
|
58
|
+
success = true;
|
|
59
|
+
return error.message;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
73
62
|
}
|
|
74
63
|
/**
|
|
75
64
|
*
|
|
@@ -79,41 +68,39 @@ class BalancesService {
|
|
|
79
68
|
* @param {number} days - The number of days to return data for. Defaults to 30 days.
|
|
80
69
|
*
|
|
81
70
|
*/
|
|
82
|
-
getAddressPortfolio(chainName, walletAddress, quoteCurrency, days) {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
urlParams.append("quote-currency", quoteCurrency.toString());
|
|
91
|
-
}
|
|
92
|
-
if (days !== undefined) {
|
|
93
|
-
urlParams.append("days", days.toString());
|
|
94
|
-
}
|
|
95
|
-
const response = yield fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/portfolio_v2/?${urlParams}`, {
|
|
96
|
-
headers: {
|
|
97
|
-
"Authorization": `Bearer ${this.apiKey}`
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
const data = yield response.json();
|
|
101
|
-
if (data.error && data.error_code === 429) {
|
|
102
|
-
retryCount++;
|
|
103
|
-
const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
|
|
104
|
-
yield new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
success = true;
|
|
108
|
-
return data;
|
|
109
|
-
}
|
|
71
|
+
async getAddressPortfolio(chainName, walletAddress, quoteCurrency, days) {
|
|
72
|
+
let retryCount = 0;
|
|
73
|
+
let success = false;
|
|
74
|
+
while (!success) {
|
|
75
|
+
try {
|
|
76
|
+
const urlParams = new URLSearchParams();
|
|
77
|
+
if (quoteCurrency !== undefined) {
|
|
78
|
+
urlParams.append("quote-currency", quoteCurrency.toString());
|
|
110
79
|
}
|
|
111
|
-
|
|
80
|
+
if (days !== undefined) {
|
|
81
|
+
urlParams.append("days", days.toString());
|
|
82
|
+
}
|
|
83
|
+
const response = await fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/portfolio_v2/?${urlParams}`, {
|
|
84
|
+
headers: {
|
|
85
|
+
"Authorization": `Bearer ${this.apiKey}`
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
const data = await response.json();
|
|
89
|
+
if (data.error && data.error_code === 429) {
|
|
90
|
+
retryCount++;
|
|
91
|
+
const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
|
|
92
|
+
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
112
95
|
success = true;
|
|
113
|
-
return
|
|
96
|
+
return data;
|
|
114
97
|
}
|
|
115
98
|
}
|
|
116
|
-
|
|
99
|
+
catch (error) {
|
|
100
|
+
success = true;
|
|
101
|
+
return error.message;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
117
104
|
}
|
|
118
105
|
/**
|
|
119
106
|
*
|
|
@@ -125,47 +112,45 @@ class BalancesService {
|
|
|
125
112
|
* @param {number} endingBlock - The block height to end at, defaults to current block height.
|
|
126
113
|
*
|
|
127
114
|
*/
|
|
128
|
-
getErc20Transfers(chainName, walletAddress, quoteCurrency, contractAddress, startingBlock, endingBlock) {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
urlParams.append("starting-block", startingBlock.toString());
|
|
143
|
-
}
|
|
144
|
-
if (endingBlock !== undefined) {
|
|
145
|
-
urlParams.append("ending-block", endingBlock.toString());
|
|
146
|
-
}
|
|
147
|
-
const response = yield fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transfers_v2/?${urlParams}`, {
|
|
148
|
-
headers: {
|
|
149
|
-
"Authorization": `Bearer ${this.apiKey}`
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
const data = yield response.json();
|
|
153
|
-
if (data.error && data.error_code === 429) {
|
|
154
|
-
retryCount++;
|
|
155
|
-
const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
|
|
156
|
-
yield new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
success = true;
|
|
160
|
-
return data;
|
|
161
|
-
}
|
|
115
|
+
async getErc20Transfers(chainName, walletAddress, quoteCurrency, contractAddress, startingBlock, endingBlock) {
|
|
116
|
+
let retryCount = 0;
|
|
117
|
+
let success = false;
|
|
118
|
+
while (!success) {
|
|
119
|
+
try {
|
|
120
|
+
const urlParams = new URLSearchParams();
|
|
121
|
+
if (quoteCurrency !== undefined) {
|
|
122
|
+
urlParams.append("quote-currency", quoteCurrency.toString());
|
|
123
|
+
}
|
|
124
|
+
if (contractAddress !== undefined) {
|
|
125
|
+
urlParams.append("contract-address", contractAddress.toString());
|
|
126
|
+
}
|
|
127
|
+
if (startingBlock !== undefined) {
|
|
128
|
+
urlParams.append("starting-block", startingBlock.toString());
|
|
162
129
|
}
|
|
163
|
-
|
|
130
|
+
if (endingBlock !== undefined) {
|
|
131
|
+
urlParams.append("ending-block", endingBlock.toString());
|
|
132
|
+
}
|
|
133
|
+
const response = await fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transfers_v2/?${urlParams}`, {
|
|
134
|
+
headers: {
|
|
135
|
+
"Authorization": `Bearer ${this.apiKey}`
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
const data = await response.json();
|
|
139
|
+
if (data.error && data.error_code === 429) {
|
|
140
|
+
retryCount++;
|
|
141
|
+
const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
|
|
142
|
+
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
164
145
|
success = true;
|
|
165
|
-
return
|
|
146
|
+
return data;
|
|
166
147
|
}
|
|
167
148
|
}
|
|
168
|
-
|
|
149
|
+
catch (error) {
|
|
150
|
+
success = true;
|
|
151
|
+
return error.message;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
169
154
|
}
|
|
170
155
|
/**
|
|
171
156
|
*
|
|
@@ -176,44 +161,42 @@ class BalancesService {
|
|
|
176
161
|
* @param {number} pageNumber - 0-indexed page number to begin pagination.
|
|
177
162
|
*
|
|
178
163
|
*/
|
|
179
|
-
getTokenHoldersV2(chainName, tokenAddress, blockHeight, pageSize, pageNumber) {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
urlParams.append("page-number", pageNumber.toString());
|
|
194
|
-
}
|
|
195
|
-
const response = yield fetch(`https://api.covalenthq.com/v1/${chainName}/tokens/${tokenAddress}/token_holders_v2/?${urlParams}`, {
|
|
196
|
-
headers: {
|
|
197
|
-
"Authorization": `Bearer ${this.apiKey}`
|
|
198
|
-
}
|
|
199
|
-
});
|
|
200
|
-
const data = yield response.json();
|
|
201
|
-
if (data.error && data.error_code === 429) {
|
|
202
|
-
retryCount++;
|
|
203
|
-
const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
|
|
204
|
-
yield new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
205
|
-
}
|
|
206
|
-
else {
|
|
207
|
-
success = true;
|
|
208
|
-
return data;
|
|
209
|
-
}
|
|
164
|
+
async getTokenHoldersV2(chainName, tokenAddress, blockHeight, pageSize, pageNumber) {
|
|
165
|
+
let retryCount = 0;
|
|
166
|
+
let success = false;
|
|
167
|
+
while (!success) {
|
|
168
|
+
try {
|
|
169
|
+
const urlParams = new URLSearchParams();
|
|
170
|
+
if (blockHeight !== undefined) {
|
|
171
|
+
urlParams.append("block-height", blockHeight.toString());
|
|
172
|
+
}
|
|
173
|
+
if (pageSize !== undefined) {
|
|
174
|
+
urlParams.append("page-size", pageSize.toString());
|
|
175
|
+
}
|
|
176
|
+
if (pageNumber !== undefined) {
|
|
177
|
+
urlParams.append("page-number", pageNumber.toString());
|
|
210
178
|
}
|
|
211
|
-
|
|
179
|
+
const response = await fetch(`https://api.covalenthq.com/v1/${chainName}/tokens/${tokenAddress}/token_holders_v2/?${urlParams}`, {
|
|
180
|
+
headers: {
|
|
181
|
+
"Authorization": `Bearer ${this.apiKey}`
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
const data = await response.json();
|
|
185
|
+
if (data.error && data.error_code === 429) {
|
|
186
|
+
retryCount++;
|
|
187
|
+
const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
|
|
188
|
+
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
212
191
|
success = true;
|
|
213
|
-
return
|
|
192
|
+
return data;
|
|
214
193
|
}
|
|
215
194
|
}
|
|
216
|
-
|
|
195
|
+
catch (error) {
|
|
196
|
+
success = true;
|
|
197
|
+
return error.message;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
217
200
|
}
|
|
218
201
|
/**
|
|
219
202
|
*
|
|
@@ -221,35 +204,33 @@ class BalancesService {
|
|
|
221
204
|
* @param {string} tokenAddress - The requested address. Passing in an `ENS`, `RNS`, or an `Unstoppable Domain` resolves automatically.
|
|
222
205
|
*
|
|
223
206
|
*/
|
|
224
|
-
getTokenHoldersChanges(chainName, tokenAddress) {
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
yield new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
241
|
-
}
|
|
242
|
-
else {
|
|
243
|
-
success = true;
|
|
244
|
-
return data;
|
|
245
|
-
}
|
|
207
|
+
async getTokenHoldersChanges(chainName, tokenAddress) {
|
|
208
|
+
let retryCount = 0;
|
|
209
|
+
let success = false;
|
|
210
|
+
while (!success) {
|
|
211
|
+
try {
|
|
212
|
+
const urlParams = new URLSearchParams();
|
|
213
|
+
const response = await fetch(`https://api.covalenthq.com/v1/${chainName}/tokens/${tokenAddress}/token_holders_changes/?${urlParams}`, {
|
|
214
|
+
headers: {
|
|
215
|
+
"Authorization": `Bearer ${this.apiKey}`
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
const data = await response.json();
|
|
219
|
+
if (data.error && data.error_code === 429) {
|
|
220
|
+
retryCount++;
|
|
221
|
+
const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
|
|
222
|
+
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
246
223
|
}
|
|
247
|
-
|
|
224
|
+
else {
|
|
248
225
|
success = true;
|
|
249
|
-
return
|
|
226
|
+
return data;
|
|
250
227
|
}
|
|
251
228
|
}
|
|
252
|
-
|
|
229
|
+
catch (error) {
|
|
230
|
+
success = true;
|
|
231
|
+
return error.message;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
253
234
|
}
|
|
254
235
|
}
|
|
255
236
|
exports.BalancesService = BalancesService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BalancesService.js","sourceRoot":"","sources":["../src/services/BalancesService.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BalancesService.js","sourceRoot":"","sources":["../src/services/BalancesService.ts"],"names":[],"mappings":"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"}
|