@sudobility/indexer_client 0.0.41 → 0.0.43
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/business/indexer-service.d.ts.map +1 -1
- package/dist/business/indexer-service.js +3 -1
- package/dist/business/indexer-service.js.map +1 -1
- package/dist/hooks/useIndexerCreateNonce.d.ts +2 -2
- package/dist/hooks/useIndexerCreateNonce.d.ts.map +1 -1
- package/dist/hooks/useIndexerCreateNonce.js +4 -3
- package/dist/hooks/useIndexerCreateNonce.js.map +1 -1
- package/dist/hooks/useIndexerGetDelegatedFrom.d.ts +2 -2
- package/dist/hooks/useIndexerGetDelegatedFrom.d.ts.map +1 -1
- package/dist/hooks/useIndexerGetDelegatedFrom.js +3 -2
- package/dist/hooks/useIndexerGetDelegatedFrom.js.map +1 -1
- package/dist/hooks/useIndexerGetDelegatedTo.d.ts +2 -2
- package/dist/hooks/useIndexerGetDelegatedTo.d.ts.map +1 -1
- package/dist/hooks/useIndexerGetDelegatedTo.js +3 -2
- package/dist/hooks/useIndexerGetDelegatedTo.js.map +1 -1
- package/dist/hooks/useIndexerGetEntitlement.d.ts +2 -2
- package/dist/hooks/useIndexerGetEntitlement.d.ts.map +1 -1
- package/dist/hooks/useIndexerGetEntitlement.js +3 -2
- package/dist/hooks/useIndexerGetEntitlement.js.map +1 -1
- package/dist/hooks/useIndexerGetNonce.d.ts +2 -2
- package/dist/hooks/useIndexerGetNonce.d.ts.map +1 -1
- package/dist/hooks/useIndexerGetNonce.js +3 -2
- package/dist/hooks/useIndexerGetNonce.js.map +1 -1
- package/dist/hooks/useIndexerGetPointsBalance.d.ts +2 -2
- package/dist/hooks/useIndexerGetPointsBalance.d.ts.map +1 -1
- package/dist/hooks/useIndexerGetPointsBalance.js +3 -2
- package/dist/hooks/useIndexerGetPointsBalance.js.map +1 -1
- package/dist/hooks/useIndexerGetSigningMessage.d.ts +2 -2
- package/dist/hooks/useIndexerGetSigningMessage.d.ts.map +1 -1
- package/dist/hooks/useIndexerGetSigningMessage.js +4 -3
- package/dist/hooks/useIndexerGetSigningMessage.js.map +1 -1
- package/dist/hooks/useIndexerGetWalletAccounts.d.ts +2 -2
- package/dist/hooks/useIndexerGetWalletAccounts.d.ts.map +1 -1
- package/dist/hooks/useIndexerGetWalletAccounts.js +3 -2
- package/dist/hooks/useIndexerGetWalletAccounts.js.map +1 -1
- package/dist/hooks/useIndexerGetWalletPermissions.d.ts +2 -1
- package/dist/hooks/useIndexerGetWalletPermissions.d.ts.map +1 -1
- package/dist/hooks/useIndexerGetWalletPermissions.js +4 -3
- package/dist/hooks/useIndexerGetWalletPermissions.js.map +1 -1
- package/dist/hooks/useIndexerMail.d.ts +2 -2
- package/dist/hooks/useIndexerMail.d.ts.map +1 -1
- package/dist/hooks/useIndexerMail.js +24 -13
- package/dist/hooks/useIndexerMail.js.map +1 -1
- package/dist/hooks/useIndexerMailTemplates.d.ts +3 -3
- package/dist/hooks/useIndexerMailTemplates.d.ts.map +1 -1
- package/dist/hooks/useIndexerMailTemplates.js +3 -3
- package/dist/hooks/useIndexerMailTemplates.js.map +1 -1
- package/dist/hooks/useIndexerMailWebhooks.d.ts +3 -3
- package/dist/hooks/useIndexerMailWebhooks.d.ts.map +1 -1
- package/dist/hooks/useIndexerMailWebhooks.js +3 -3
- package/dist/hooks/useIndexerMailWebhooks.js.map +1 -1
- package/dist/hooks/useIndexerNameService.d.ts +3 -3
- package/dist/hooks/useIndexerNameService.d.ts.map +1 -1
- package/dist/hooks/useIndexerNameService.js +6 -4
- package/dist/hooks/useIndexerNameService.js.map +1 -1
- package/dist/hooks/useIndexerPoints.d.ts +6 -6
- package/dist/hooks/useIndexerPoints.d.ts.map +1 -1
- package/dist/hooks/useIndexerPoints.js +18 -17
- package/dist/hooks/useIndexerPoints.js.map +1 -1
- package/dist/hooks/useIndexerReferralCode.d.ts +3 -3
- package/dist/hooks/useIndexerReferralCode.d.ts.map +1 -1
- package/dist/hooks/useIndexerReferralCode.js +3 -3
- package/dist/hooks/useIndexerReferralCode.js.map +1 -1
- package/dist/hooks/useIndexerReferralStats.d.ts +3 -3
- package/dist/hooks/useIndexerReferralStats.d.ts.map +1 -1
- package/dist/hooks/useIndexerReferralStats.js +3 -3
- package/dist/hooks/useIndexerReferralStats.js.map +1 -1
- package/dist/hooks/useIndexerValidateUsername.d.ts +2 -2
- package/dist/hooks/useIndexerValidateUsername.d.ts.map +1 -1
- package/dist/hooks/useIndexerValidateUsername.js +4 -3
- package/dist/hooks/useIndexerValidateUsername.js.map +1 -1
- package/dist/network/FetchNetworkClient.d.ts +17 -0
- package/dist/network/FetchNetworkClient.d.ts.map +1 -0
- package/dist/network/FetchNetworkClient.js +83 -0
- package/dist/network/FetchNetworkClient.js.map +1 -0
- package/dist/network/IndexerClient.d.ts +3 -24
- package/dist/network/IndexerClient.d.ts.map +1 -1
- package/dist/network/IndexerClient.js +163 -342
- package/dist/network/IndexerClient.js.map +1 -1
- package/dist/network/index.d.ts +2 -1
- package/dist/network/index.d.ts.map +1 -1
- package/dist/network/index.js +1 -0
- package/dist/network/index.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/indexer-factory.d.ts.map +1 -1
- package/dist/utils/indexer-factory.js +7 -7
- package/dist/utils/indexer-factory.js.map +1 -1
- package/dist/utils/indexer-helpers.d.ts +6 -0
- package/dist/utils/indexer-helpers.d.ts.map +1 -0
- package/dist/utils/indexer-helpers.js +28 -0
- package/dist/utils/indexer-helpers.js.map +1 -0
- package/package.json +4 -6
|
@@ -1,285 +1,156 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { buildUrl, createAuthHeaders, createHeaders, handleApiError, } from '../utils/indexer-helpers';
|
|
2
2
|
export class IndexerClient {
|
|
3
|
-
constructor(endpointUrl, dev = false
|
|
3
|
+
constructor(endpointUrl, networkClient, dev = false) {
|
|
4
4
|
this.baseUrl = endpointUrl;
|
|
5
|
+
this.networkClient = networkClient;
|
|
5
6
|
this.dev = dev;
|
|
6
|
-
this.timeout = timeout;
|
|
7
|
-
}
|
|
8
|
-
async get(url, options) {
|
|
9
|
-
return this.request(url, { ...options, method: 'GET' });
|
|
10
|
-
}
|
|
11
|
-
async post(url, body, options) {
|
|
12
|
-
return this.request(url, {
|
|
13
|
-
...options,
|
|
14
|
-
method: 'POST',
|
|
15
|
-
body,
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
async put(url, body, options) {
|
|
19
|
-
return this.request(url, {
|
|
20
|
-
...options,
|
|
21
|
-
method: 'PUT',
|
|
22
|
-
body,
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
async delete(url, options) {
|
|
26
|
-
return this.request(url, { ...options, method: 'DELETE' });
|
|
27
|
-
}
|
|
28
|
-
async request(url, options) {
|
|
29
|
-
const fullUrl = `${this.baseUrl}${url}`;
|
|
30
|
-
const axiosConfig = {
|
|
31
|
-
method: options?.method || 'GET',
|
|
32
|
-
url: fullUrl,
|
|
33
|
-
headers: {
|
|
34
|
-
'Content-Type': 'application/json',
|
|
35
|
-
Accept: 'application/json',
|
|
36
|
-
...(this.dev && { 'x-dev': 'true' }),
|
|
37
|
-
...options?.headers,
|
|
38
|
-
},
|
|
39
|
-
timeout: this.timeout,
|
|
40
|
-
signal: options?.signal,
|
|
41
|
-
withCredentials: false,
|
|
42
|
-
};
|
|
43
|
-
if (options?.body) {
|
|
44
|
-
if (typeof options.body === 'string') {
|
|
45
|
-
try {
|
|
46
|
-
axiosConfig.data = JSON.parse(options.body);
|
|
47
|
-
}
|
|
48
|
-
catch {
|
|
49
|
-
axiosConfig.data = options.body;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
axiosConfig.data = options.body;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
try {
|
|
57
|
-
const response = await axios(axiosConfig);
|
|
58
|
-
return {
|
|
59
|
-
ok: response.status >= 200 && response.status < 300,
|
|
60
|
-
status: response.status,
|
|
61
|
-
statusText: response.statusText,
|
|
62
|
-
data: response.data,
|
|
63
|
-
headers: response.headers,
|
|
64
|
-
success: response.status >= 200 && response.status < 300,
|
|
65
|
-
timestamp: new Date().toISOString(),
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
catch (error) {
|
|
69
|
-
if (error.response || error.request) {
|
|
70
|
-
if (error.response) {
|
|
71
|
-
return {
|
|
72
|
-
ok: false,
|
|
73
|
-
status: error.response.status,
|
|
74
|
-
statusText: error.response.statusText,
|
|
75
|
-
data: error.response.data,
|
|
76
|
-
headers: error.response.headers,
|
|
77
|
-
success: false,
|
|
78
|
-
timestamp: new Date().toISOString(),
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
console.error('[IndexerClient] Network error details:', {
|
|
82
|
-
message: error.message,
|
|
83
|
-
code: error.code,
|
|
84
|
-
url: fullUrl,
|
|
85
|
-
method: axiosConfig.method,
|
|
86
|
-
});
|
|
87
|
-
throw new Error(`Indexer API request failed: ${error.message}`);
|
|
88
|
-
}
|
|
89
|
-
throw new Error(`Indexer API request failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
90
|
-
}
|
|
91
7
|
}
|
|
92
8
|
async validateUsername(username) {
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
throw new Error(`Failed to validate username: ${errorMessage}`);
|
|
9
|
+
const headers = createHeaders(this.dev);
|
|
10
|
+
const response = await this.networkClient.get(buildUrl(this.baseUrl, `/users/${encodeURIComponent(username)}/validate`), { headers });
|
|
11
|
+
if (!response.ok || !response.data) {
|
|
12
|
+
throw handleApiError(response, 'validate username');
|
|
98
13
|
}
|
|
99
14
|
return response.data;
|
|
100
15
|
}
|
|
101
16
|
async getMessage(chainId, walletAddress, domain, url) {
|
|
17
|
+
const headers = createHeaders(this.dev);
|
|
102
18
|
const queryParams = new URLSearchParams({
|
|
103
19
|
chainId: chainId.toString(),
|
|
104
20
|
domain,
|
|
105
21
|
url,
|
|
106
22
|
});
|
|
107
|
-
const response = await this.get(`/wallets/${encodeURIComponent(walletAddress)}/message?${queryParams.toString()}`);
|
|
108
|
-
if (!response.ok) {
|
|
109
|
-
|
|
110
|
-
console.error('[IndexerClient] getMessage failed:', errorMessage);
|
|
111
|
-
throw new Error(`Failed to get message: ${errorMessage}`);
|
|
23
|
+
const response = await this.networkClient.get(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/message?${queryParams.toString()}`), { headers });
|
|
24
|
+
if (!response.ok || !response.data) {
|
|
25
|
+
throw handleApiError(response, 'get message');
|
|
112
26
|
}
|
|
113
27
|
return response.data;
|
|
114
28
|
}
|
|
115
29
|
async getPointsInfo() {
|
|
116
|
-
const
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
throw new Error(`Failed to get points info: ${errorMessage}`);
|
|
30
|
+
const headers = createHeaders(this.dev);
|
|
31
|
+
const response = await this.networkClient.get(buildUrl(this.baseUrl, '/points'), { headers });
|
|
32
|
+
if (!response.ok || !response.data) {
|
|
33
|
+
throw handleApiError(response, 'get points info');
|
|
121
34
|
}
|
|
122
35
|
return response.data;
|
|
123
36
|
}
|
|
124
37
|
async getPointsLeaderboard(count = 10) {
|
|
125
|
-
const
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
throw new Error(`Failed to get points leaderboard: ${errorMessage}`);
|
|
38
|
+
const headers = createHeaders(this.dev);
|
|
39
|
+
const response = await this.networkClient.get(buildUrl(this.baseUrl, `/points/leaderboard/${count}`), { headers });
|
|
40
|
+
if (!response.ok || !response.data) {
|
|
41
|
+
throw handleApiError(response, 'get points leaderboard');
|
|
130
42
|
}
|
|
131
43
|
return response.data;
|
|
132
44
|
}
|
|
133
45
|
async getPointsSiteStats() {
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
throw new Error(`Failed to get site stats: ${errorMessage}`);
|
|
46
|
+
const headers = createHeaders(this.dev);
|
|
47
|
+
const response = await this.networkClient.get(buildUrl(this.baseUrl, '/points/site-stats'), { headers });
|
|
48
|
+
if (!response.ok || !response.data) {
|
|
49
|
+
throw handleApiError(response, 'get site stats');
|
|
139
50
|
}
|
|
140
51
|
return response.data;
|
|
141
52
|
}
|
|
142
|
-
createAuthHeaders(auth) {
|
|
143
|
-
return {
|
|
144
|
-
'x-signature': auth.signature.replace(/[\r\n]/g, ''),
|
|
145
|
-
'x-message': encodeURIComponent(auth.message),
|
|
146
|
-
'x-signer': auth.signer,
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
53
|
async getWalletAccounts(walletAddress, auth, referralCode) {
|
|
150
|
-
const
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
const response = await this.get(`/wallets/${encodeURIComponent(walletAddress)}/accounts
|
|
155
|
-
if (!response.ok) {
|
|
156
|
-
|
|
157
|
-
console.error('[IndexerClient] getWalletAccounts failed:', errorMessage);
|
|
158
|
-
throw new Error(`Failed to get wallet accounts: ${errorMessage}`);
|
|
54
|
+
const additionalHeaders = referralCode
|
|
55
|
+
? { 'x-referral': referralCode }
|
|
56
|
+
: undefined;
|
|
57
|
+
const headers = createAuthHeaders(auth, this.dev, additionalHeaders);
|
|
58
|
+
const response = await this.networkClient.get(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/accounts`), { headers });
|
|
59
|
+
if (!response.ok || !response.data) {
|
|
60
|
+
throw handleApiError(response, 'get wallet accounts');
|
|
159
61
|
}
|
|
160
62
|
return response.data;
|
|
161
63
|
}
|
|
162
64
|
async getDelegatedTo(walletAddress, auth) {
|
|
163
|
-
const
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
const errorMessage = response.data?.error || 'Unknown error';
|
|
168
|
-
console.error('[IndexerClient] getDelegatedTo failed:', errorMessage);
|
|
169
|
-
throw new Error(`Failed to get delegation: ${errorMessage}`);
|
|
65
|
+
const headers = createAuthHeaders(auth, this.dev);
|
|
66
|
+
const response = await this.networkClient.get(buildUrl(this.baseUrl, `/delegations/from/${encodeURIComponent(walletAddress)}`), { headers });
|
|
67
|
+
if (!response.ok || !response.data) {
|
|
68
|
+
throw handleApiError(response, 'get delegation');
|
|
170
69
|
}
|
|
171
70
|
return response.data;
|
|
172
71
|
}
|
|
173
72
|
async getDelegatedFrom(walletAddress, auth) {
|
|
174
|
-
const
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
const errorMessage = response.data?.error || 'Unknown error';
|
|
179
|
-
console.error('[IndexerClient] getDelegatedFrom failed:', errorMessage);
|
|
180
|
-
throw new Error(`Failed to get delegators: ${errorMessage}`);
|
|
73
|
+
const headers = createAuthHeaders(auth, this.dev);
|
|
74
|
+
const response = await this.networkClient.get(buildUrl(this.baseUrl, `/delegations/to/${encodeURIComponent(walletAddress)}`), { headers });
|
|
75
|
+
if (!response.ok || !response.data) {
|
|
76
|
+
throw handleApiError(response, 'get delegators');
|
|
181
77
|
}
|
|
182
78
|
return response.data;
|
|
183
79
|
}
|
|
184
80
|
async createNonce(username, auth) {
|
|
185
|
-
const
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
const errorMessage = response.data?.error || 'Unknown error';
|
|
190
|
-
console.error('[IndexerClient] createNonce failed:', errorMessage);
|
|
191
|
-
throw new Error(`Failed to create nonce: ${errorMessage}`);
|
|
81
|
+
const headers = createAuthHeaders(auth, this.dev);
|
|
82
|
+
const response = await this.networkClient.post(buildUrl(this.baseUrl, `/users/${encodeURIComponent(username)}/nonce`), {}, { headers });
|
|
83
|
+
if (!response.ok || !response.data) {
|
|
84
|
+
throw handleApiError(response, 'create nonce');
|
|
192
85
|
}
|
|
193
86
|
return response.data;
|
|
194
87
|
}
|
|
195
88
|
async getNonce(username, auth) {
|
|
196
|
-
const
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
const errorMessage = response.data?.error || 'Unknown error';
|
|
201
|
-
console.error('[IndexerClient] getNonce failed:', errorMessage);
|
|
202
|
-
throw new Error(`Failed to get nonce: ${errorMessage}`);
|
|
89
|
+
const headers = createAuthHeaders(auth, this.dev);
|
|
90
|
+
const response = await this.networkClient.get(buildUrl(this.baseUrl, `/users/${encodeURIComponent(username)}/nonce`), { headers });
|
|
91
|
+
if (!response.ok || !response.data) {
|
|
92
|
+
throw handleApiError(response, 'get nonce');
|
|
203
93
|
}
|
|
204
94
|
return response.data;
|
|
205
95
|
}
|
|
206
96
|
async getEntitlement(walletAddress, auth) {
|
|
207
|
-
const
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
const errorMessage = response.data?.error || 'Unknown error';
|
|
212
|
-
console.error('[IndexerClient] getEntitlement failed:', errorMessage);
|
|
213
|
-
throw new Error(`Failed to get entitlement: ${errorMessage}`);
|
|
97
|
+
const headers = createAuthHeaders(auth, this.dev);
|
|
98
|
+
const response = await this.networkClient.get(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/entitlements/`), { headers });
|
|
99
|
+
if (!response.ok || !response.data) {
|
|
100
|
+
throw handleApiError(response, 'get entitlement');
|
|
214
101
|
}
|
|
215
102
|
return response.data;
|
|
216
103
|
}
|
|
217
104
|
async getPointsBalance(walletAddress, auth) {
|
|
218
|
-
const
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
const errorMessage = response.data?.error || 'Unknown error';
|
|
223
|
-
console.error('[IndexerClient] getPointsBalance failed:', errorMessage);
|
|
224
|
-
throw new Error(`Failed to get points balance: ${errorMessage}`);
|
|
105
|
+
const headers = createAuthHeaders(auth, this.dev);
|
|
106
|
+
const response = await this.networkClient.get(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/points`), { headers });
|
|
107
|
+
if (!response.ok || !response.data) {
|
|
108
|
+
throw handleApiError(response, 'get points balance');
|
|
225
109
|
}
|
|
226
110
|
return response.data;
|
|
227
111
|
}
|
|
228
112
|
async getReferralCode(walletAddress, auth) {
|
|
229
|
-
const
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
const errorMessage = response.data?.error ||
|
|
234
|
-
response.data?.message ||
|
|
235
|
-
JSON.stringify(response.data) ||
|
|
236
|
-
`HTTP ${response.status}`;
|
|
237
|
-
console.error('[IndexerClient] getReferralCode failed:', errorMessage);
|
|
238
|
-
throw new Error(`Failed to get referral code: ${errorMessage}`);
|
|
113
|
+
const headers = createAuthHeaders(auth, this.dev);
|
|
114
|
+
const response = await this.networkClient.post(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/referral`), {}, { headers });
|
|
115
|
+
if (!response.ok || !response.data) {
|
|
116
|
+
throw handleApiError(response, 'get referral code');
|
|
239
117
|
}
|
|
240
118
|
return response.data;
|
|
241
119
|
}
|
|
242
120
|
async getReferralStats(referralCode) {
|
|
243
|
-
const
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
throw new Error(`Failed to get referral stats: ${errorMessage}`);
|
|
121
|
+
const headers = createHeaders(this.dev);
|
|
122
|
+
const response = await this.networkClient.post(buildUrl(this.baseUrl, `/referrals/${encodeURIComponent(referralCode)}/stats`), {}, { headers });
|
|
123
|
+
if (!response.ok || !response.data) {
|
|
124
|
+
throw handleApiError(response, 'get referral stats');
|
|
248
125
|
}
|
|
249
126
|
return response.data;
|
|
250
127
|
}
|
|
251
128
|
async getWalletNames(walletAddress, auth) {
|
|
252
|
-
const
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
const errorMessage = response.data?.error || 'Unknown error';
|
|
257
|
-
console.error('[IndexerClient] getWalletNames failed:', errorMessage);
|
|
258
|
-
throw new Error(`Failed to get wallet names: ${errorMessage}`);
|
|
129
|
+
const headers = createAuthHeaders(auth, this.dev);
|
|
130
|
+
const response = await this.networkClient.get(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/names`), { headers });
|
|
131
|
+
if (!response.ok || !response.data) {
|
|
132
|
+
throw handleApiError(response, 'get wallet names');
|
|
259
133
|
}
|
|
260
134
|
return response.data;
|
|
261
135
|
}
|
|
262
136
|
async resolveNameToAddress(name) {
|
|
263
|
-
const
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
throw new Error(`Failed to resolve name: ${errorMessage}`);
|
|
137
|
+
const headers = createHeaders(this.dev);
|
|
138
|
+
const response = await this.networkClient.get(buildUrl(this.baseUrl, `/wallets/named/${encodeURIComponent(name)}`), { headers });
|
|
139
|
+
if (!response.ok || !response.data) {
|
|
140
|
+
throw handleApiError(response, 'resolve name');
|
|
268
141
|
}
|
|
269
142
|
return response.data;
|
|
270
143
|
}
|
|
271
144
|
async createMailTemplate(walletAddress, auth, template) {
|
|
272
|
-
const
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
const errorMessage = response.data?.error || 'Unknown error';
|
|
277
|
-
console.error('[IndexerClient] createMailTemplate failed:', errorMessage);
|
|
278
|
-
throw new Error(`Failed to create template: ${errorMessage}`);
|
|
145
|
+
const headers = createAuthHeaders(auth, this.dev);
|
|
146
|
+
const response = await this.networkClient.post(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/templates`), template, { headers });
|
|
147
|
+
if (!response.ok || !response.data) {
|
|
148
|
+
throw handleApiError(response, 'create template');
|
|
279
149
|
}
|
|
280
150
|
return response.data;
|
|
281
151
|
}
|
|
282
152
|
async getMailTemplates(walletAddress, auth, params) {
|
|
153
|
+
const headers = createAuthHeaders(auth, this.dev);
|
|
283
154
|
const queryParams = new URLSearchParams();
|
|
284
155
|
if (params?.active !== undefined) {
|
|
285
156
|
queryParams.append('active', params.active.toString());
|
|
@@ -291,62 +162,47 @@ export class IndexerClient {
|
|
|
291
162
|
queryParams.append('offset', params.offset.toString());
|
|
292
163
|
}
|
|
293
164
|
const queryString = queryParams.toString();
|
|
294
|
-
const
|
|
295
|
-
const response = await this.get(
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
if (!response.ok) {
|
|
299
|
-
const errorMessage = response.data?.error || 'Unknown error';
|
|
300
|
-
console.error('[IndexerClient] getMailTemplates failed:', errorMessage);
|
|
301
|
-
throw new Error(`Failed to get templates: ${errorMessage}`);
|
|
165
|
+
const path = `/wallets/${encodeURIComponent(walletAddress)}/templates${queryString ? `?${queryString}` : ''}`;
|
|
166
|
+
const response = await this.networkClient.get(buildUrl(this.baseUrl, path), { headers });
|
|
167
|
+
if (!response.ok || !response.data) {
|
|
168
|
+
throw handleApiError(response, 'get templates');
|
|
302
169
|
}
|
|
303
170
|
return response.data;
|
|
304
171
|
}
|
|
305
172
|
async getMailTemplate(walletAddress, templateId, auth) {
|
|
306
|
-
const
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
const errorMessage = response.data?.error || 'Unknown error';
|
|
311
|
-
console.error('[IndexerClient] getMailTemplate failed:', errorMessage);
|
|
312
|
-
throw new Error(`Failed to get template: ${errorMessage}`);
|
|
173
|
+
const headers = createAuthHeaders(auth, this.dev);
|
|
174
|
+
const response = await this.networkClient.get(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/templates/${encodeURIComponent(templateId)}`), { headers });
|
|
175
|
+
if (!response.ok || !response.data) {
|
|
176
|
+
throw handleApiError(response, 'get template');
|
|
313
177
|
}
|
|
314
178
|
return response.data;
|
|
315
179
|
}
|
|
316
180
|
async updateMailTemplate(walletAddress, templateId, auth, updates) {
|
|
317
|
-
const
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
const errorMessage = response.data?.error || 'Unknown error';
|
|
322
|
-
console.error('[IndexerClient] updateMailTemplate failed:', errorMessage);
|
|
323
|
-
throw new Error(`Failed to update template: ${errorMessage}`);
|
|
181
|
+
const headers = createAuthHeaders(auth, this.dev);
|
|
182
|
+
const response = await this.networkClient.put(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/templates/${encodeURIComponent(templateId)}`), updates, { headers });
|
|
183
|
+
if (!response.ok || !response.data) {
|
|
184
|
+
throw handleApiError(response, 'update template');
|
|
324
185
|
}
|
|
325
186
|
return response.data;
|
|
326
187
|
}
|
|
327
188
|
async deleteMailTemplate(walletAddress, templateId, auth) {
|
|
328
|
-
const
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
const errorMessage = response.data?.error || 'Unknown error';
|
|
333
|
-
console.error('[IndexerClient] deleteMailTemplate failed:', errorMessage);
|
|
334
|
-
throw new Error(`Failed to delete template: ${errorMessage}`);
|
|
189
|
+
const headers = createAuthHeaders(auth, this.dev);
|
|
190
|
+
const response = await this.networkClient.delete(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/templates/${encodeURIComponent(templateId)}`), { headers });
|
|
191
|
+
if (!response.ok || !response.data) {
|
|
192
|
+
throw handleApiError(response, 'delete template');
|
|
335
193
|
}
|
|
336
194
|
return response.data;
|
|
337
195
|
}
|
|
338
196
|
async createWebhook(walletAddress, auth, webhook) {
|
|
339
|
-
const
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
const errorMessage = response.data?.error || 'Unknown error';
|
|
344
|
-
console.error('[IndexerClient] createWebhook failed:', errorMessage);
|
|
345
|
-
throw new Error(`Failed to create webhook: ${errorMessage}`);
|
|
197
|
+
const headers = createAuthHeaders(auth, this.dev);
|
|
198
|
+
const response = await this.networkClient.post(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/webhooks`), webhook, { headers });
|
|
199
|
+
if (!response.ok || !response.data) {
|
|
200
|
+
throw handleApiError(response, 'create webhook');
|
|
346
201
|
}
|
|
347
202
|
return response.data;
|
|
348
203
|
}
|
|
349
204
|
async getWebhooks(walletAddress, auth, params) {
|
|
205
|
+
const headers = createAuthHeaders(auth, this.dev);
|
|
350
206
|
const queryParams = new URLSearchParams();
|
|
351
207
|
if (params?.active !== undefined) {
|
|
352
208
|
queryParams.append('active', params.active.toString());
|
|
@@ -358,68 +214,57 @@ export class IndexerClient {
|
|
|
358
214
|
queryParams.append('offset', params.offset.toString());
|
|
359
215
|
}
|
|
360
216
|
const queryString = queryParams.toString();
|
|
361
|
-
const
|
|
362
|
-
const response = await this.get(
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
if (!response.ok) {
|
|
366
|
-
const errorMessage = response.data?.error || 'Unknown error';
|
|
367
|
-
console.error('[IndexerClient] getWebhooks failed:', errorMessage);
|
|
368
|
-
throw new Error(`Failed to get webhooks: ${errorMessage}`);
|
|
217
|
+
const path = `/wallets/${encodeURIComponent(walletAddress)}/webhooks${queryString ? `?${queryString}` : ''}`;
|
|
218
|
+
const response = await this.networkClient.get(buildUrl(this.baseUrl, path), { headers });
|
|
219
|
+
if (!response.ok || !response.data) {
|
|
220
|
+
throw handleApiError(response, 'get webhooks');
|
|
369
221
|
}
|
|
370
222
|
return response.data;
|
|
371
223
|
}
|
|
372
224
|
async getWebhook(walletAddress, webhookId, auth) {
|
|
373
|
-
const
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
const errorMessage = response.data?.error || 'Unknown error';
|
|
378
|
-
console.error('[IndexerClient] getWebhook failed:', errorMessage);
|
|
379
|
-
throw new Error(`Failed to get webhook: ${errorMessage}`);
|
|
225
|
+
const headers = createAuthHeaders(auth, this.dev);
|
|
226
|
+
const response = await this.networkClient.get(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/webhooks/${encodeURIComponent(webhookId)}`), { headers });
|
|
227
|
+
if (!response.ok || !response.data) {
|
|
228
|
+
throw handleApiError(response, 'get webhook');
|
|
380
229
|
}
|
|
381
230
|
return response.data;
|
|
382
231
|
}
|
|
383
232
|
async deleteWebhook(walletAddress, webhookId, auth) {
|
|
384
|
-
const
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
const errorMessage = response.data?.error || 'Unknown error';
|
|
389
|
-
console.error('[IndexerClient] deleteWebhook failed:', errorMessage);
|
|
390
|
-
throw new Error(`Failed to delete webhook: ${errorMessage}`);
|
|
233
|
+
const headers = createAuthHeaders(auth, this.dev);
|
|
234
|
+
const response = await this.networkClient.delete(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/webhooks/${encodeURIComponent(webhookId)}`), { headers });
|
|
235
|
+
if (!response.ok || !response.data) {
|
|
236
|
+
throw handleApiError(response, 'delete webhook');
|
|
391
237
|
}
|
|
392
238
|
return response.data;
|
|
393
239
|
}
|
|
394
240
|
async createAuthChallenge(walletIdentifier, clientId, redirectUri, deviceFingerprint) {
|
|
395
|
-
const
|
|
241
|
+
const headers = createHeaders(this.dev);
|
|
242
|
+
const response = await this.networkClient.post(buildUrl(this.baseUrl, '/auth/challenge'), {
|
|
396
243
|
wallet_identifier: walletIdentifier,
|
|
397
244
|
client_id: clientId,
|
|
398
245
|
redirect_uri: redirectUri,
|
|
399
246
|
device_fingerprint: deviceFingerprint,
|
|
400
|
-
});
|
|
401
|
-
if (!response.ok) {
|
|
402
|
-
|
|
403
|
-
console.error('[IndexerClient] createAuthChallenge failed:', errorMessage);
|
|
404
|
-
throw new Error(`Failed to create auth challenge: ${errorMessage}`);
|
|
247
|
+
}, { headers });
|
|
248
|
+
if (!response.ok || !response.data) {
|
|
249
|
+
throw handleApiError(response, 'create auth challenge');
|
|
405
250
|
}
|
|
406
251
|
return response.data;
|
|
407
252
|
}
|
|
408
253
|
async verifyAuthSignature(sessionId, signature, chainType, currentWallet) {
|
|
409
|
-
const
|
|
254
|
+
const headers = createHeaders(this.dev);
|
|
255
|
+
const response = await this.networkClient.post(buildUrl(this.baseUrl, '/auth/verify'), {
|
|
410
256
|
session_id: sessionId,
|
|
411
257
|
signature,
|
|
412
258
|
chain_type: chainType,
|
|
413
259
|
current_wallet: currentWallet,
|
|
414
|
-
});
|
|
415
|
-
if (!response.ok) {
|
|
416
|
-
|
|
417
|
-
console.error('[IndexerClient] verifyAuthSignature failed:', errorMessage);
|
|
418
|
-
throw new Error(`Failed to verify signature: ${errorMessage}`);
|
|
260
|
+
}, { headers });
|
|
261
|
+
if (!response.ok || !response.data) {
|
|
262
|
+
throw handleApiError(response, 'verify signature');
|
|
419
263
|
}
|
|
420
264
|
return response.data;
|
|
421
265
|
}
|
|
422
266
|
async authorizeOAuth(clientId, redirectUri, responseType, scope, state, sessionId, codeChallenge, codeChallengeMethod, nonce, privacy) {
|
|
267
|
+
const headers = createHeaders(this.dev, { 'X-Session-Id': sessionId });
|
|
423
268
|
const queryParams = new URLSearchParams({
|
|
424
269
|
client_id: clientId,
|
|
425
270
|
redirect_uri: redirectUri,
|
|
@@ -435,19 +280,14 @@ export class IndexerClient {
|
|
|
435
280
|
queryParams.append('nonce', nonce);
|
|
436
281
|
if (privacy)
|
|
437
282
|
queryParams.append('privacy', privacy);
|
|
438
|
-
const response = await this.get(`/oauth/authorize?${queryParams.toString()}
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
},
|
|
442
|
-
});
|
|
443
|
-
if (!response.ok) {
|
|
444
|
-
const errorMessage = response.data?.error || 'Unknown error';
|
|
445
|
-
console.error('[IndexerClient] authorizeOAuth failed:', errorMessage);
|
|
446
|
-
throw new Error(`Failed to authorize: ${errorMessage}`);
|
|
283
|
+
const response = await this.networkClient.get(buildUrl(this.baseUrl, `/oauth/authorize?${queryParams.toString()}`), { headers });
|
|
284
|
+
if (!response.ok || !response.data) {
|
|
285
|
+
throw handleApiError(response, 'authorize');
|
|
447
286
|
}
|
|
448
287
|
return response.data;
|
|
449
288
|
}
|
|
450
289
|
async exchangeOAuthToken(grantType, clientId, code, redirectUri, clientSecret, codeVerifier, refreshToken) {
|
|
290
|
+
const headers = createHeaders(this.dev);
|
|
451
291
|
const body = {
|
|
452
292
|
grant_type: grantType,
|
|
453
293
|
client_id: clientId,
|
|
@@ -462,112 +302,93 @@ export class IndexerClient {
|
|
|
462
302
|
body.code_verifier = codeVerifier;
|
|
463
303
|
if (refreshToken)
|
|
464
304
|
body.refresh_token = refreshToken;
|
|
465
|
-
const response = await this.post('/oauth/token', body);
|
|
466
|
-
if (!response.ok) {
|
|
467
|
-
|
|
468
|
-
console.error('[IndexerClient] exchangeOAuthToken failed:', errorMessage);
|
|
469
|
-
throw new Error(`Failed to exchange token: ${errorMessage}`);
|
|
305
|
+
const response = await this.networkClient.post(buildUrl(this.baseUrl, '/oauth/token'), body, { headers });
|
|
306
|
+
if (!response.ok || !response.data) {
|
|
307
|
+
throw handleApiError(response, 'exchange token');
|
|
470
308
|
}
|
|
471
309
|
return response.data;
|
|
472
310
|
}
|
|
473
311
|
async getOAuthUserInfo(accessToken) {
|
|
474
|
-
const
|
|
475
|
-
|
|
476
|
-
Authorization: `Bearer ${accessToken}`,
|
|
477
|
-
},
|
|
312
|
+
const headers = createHeaders(this.dev, {
|
|
313
|
+
Authorization: `Bearer ${accessToken}`,
|
|
478
314
|
});
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
throw new Error(`Failed to get user info: ${errorMessage}`);
|
|
315
|
+
const response = await this.networkClient.get(buildUrl(this.baseUrl, '/oauth/userinfo'), { headers });
|
|
316
|
+
if (!response.ok || !response.data) {
|
|
317
|
+
throw handleApiError(response, 'get user info');
|
|
483
318
|
}
|
|
484
319
|
return response.data;
|
|
485
320
|
}
|
|
486
321
|
async revokeOAuthToken(token, tokenTypeHint) {
|
|
322
|
+
const headers = createHeaders(this.dev);
|
|
487
323
|
const body = { token };
|
|
488
324
|
if (tokenTypeHint)
|
|
489
325
|
body.token_type_hint = tokenTypeHint;
|
|
490
|
-
const response = await this.post('/oauth/revoke', body);
|
|
491
|
-
if (!response.ok) {
|
|
492
|
-
|
|
493
|
-
console.error('[IndexerClient] revokeOAuthToken failed:', errorMessage);
|
|
494
|
-
throw new Error(`Failed to revoke token: ${errorMessage}`);
|
|
326
|
+
const response = await this.networkClient.post(buildUrl(this.baseUrl, '/oauth/revoke'), body, { headers });
|
|
327
|
+
if (!response.ok || !response.data) {
|
|
328
|
+
throw handleApiError(response, 'revoke token');
|
|
495
329
|
}
|
|
496
330
|
}
|
|
497
331
|
async getOAuthClientInfo(clientId) {
|
|
498
|
-
const
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
throw new Error(`Failed to get client info: ${errorMessage}`);
|
|
332
|
+
const headers = createHeaders(this.dev);
|
|
333
|
+
const response = await this.networkClient.get(buildUrl(this.baseUrl, `/oauth/clients/${clientId}`), { headers });
|
|
334
|
+
if (!response.ok || !response.data) {
|
|
335
|
+
throw handleApiError(response, 'get client info');
|
|
503
336
|
}
|
|
504
337
|
return response.data;
|
|
505
338
|
}
|
|
506
339
|
async initiateKYC(walletAddress, auth, verificationLevel) {
|
|
507
|
-
const
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
const errorMessage = response.data?.error || 'Unknown error';
|
|
512
|
-
console.error('[IndexerClient] initiateKYC failed:', errorMessage);
|
|
513
|
-
throw new Error(`Failed to initiate KYC: ${errorMessage}`);
|
|
340
|
+
const headers = createAuthHeaders(auth, this.dev);
|
|
341
|
+
const response = await this.networkClient.post(buildUrl(this.baseUrl, `/kyc/initiate/${encodeURIComponent(walletAddress)}`), { verificationLevel }, { headers });
|
|
342
|
+
if (!response.ok || !response.data) {
|
|
343
|
+
throw handleApiError(response, 'initiate KYC');
|
|
514
344
|
}
|
|
515
345
|
return response.data;
|
|
516
346
|
}
|
|
517
347
|
async getKYCStatus(walletAddress, auth) {
|
|
518
|
-
const
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
const errorMessage = response.data?.error || 'Unknown error';
|
|
523
|
-
console.error('[IndexerClient] getKYCStatus failed:', errorMessage);
|
|
524
|
-
throw new Error(`Failed to get KYC status: ${errorMessage}`);
|
|
348
|
+
const headers = createAuthHeaders(auth, this.dev);
|
|
349
|
+
const response = await this.networkClient.get(buildUrl(this.baseUrl, `/kyc/status/${encodeURIComponent(walletAddress)}`), { headers });
|
|
350
|
+
if (!response.ok || !response.data) {
|
|
351
|
+
throw handleApiError(response, 'get KYC status');
|
|
525
352
|
}
|
|
526
353
|
return response.data;
|
|
527
354
|
}
|
|
528
355
|
async checkAuthenticated(walletAddress, auth) {
|
|
529
|
-
const
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
const errorMessage = response.data?.error || 'Unknown error';
|
|
534
|
-
console.error('[IndexerClient] checkAuthenticated failed:', errorMessage);
|
|
535
|
-
throw new Error(`Failed to check authentication status: ${errorMessage}`);
|
|
356
|
+
const headers = createAuthHeaders(auth, this.dev);
|
|
357
|
+
const response = await this.networkClient.get(buildUrl(this.baseUrl, `/wallets/${encodeURIComponent(walletAddress)}/authenticated`), { headers });
|
|
358
|
+
if (!response.ok || !response.data) {
|
|
359
|
+
throw handleApiError(response, 'check authentication status');
|
|
536
360
|
}
|
|
537
361
|
return response.data;
|
|
538
362
|
}
|
|
539
363
|
async getBlockStatus() {
|
|
540
|
-
const
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
throw new Error(`Failed to get block status: ${errorMessage}`);
|
|
364
|
+
const headers = createHeaders(this.dev);
|
|
365
|
+
const response = await this.networkClient.get(buildUrl(this.baseUrl, '/blocks'), { headers });
|
|
366
|
+
if (!response.ok || !response.data) {
|
|
367
|
+
throw handleApiError(response, 'get block status');
|
|
545
368
|
}
|
|
546
369
|
return response.data;
|
|
547
370
|
}
|
|
548
371
|
async getContractPermissions(contractAddress, chainId, testNet = false) {
|
|
372
|
+
const headers = createHeaders(this.dev);
|
|
549
373
|
const queryParams = new URLSearchParams({
|
|
550
374
|
chainId: chainId.toString(),
|
|
551
375
|
testNet: testNet.toString(),
|
|
552
376
|
});
|
|
553
|
-
const response = await this.get(`/permissions/contract/${encodeURIComponent(contractAddress)}?${queryParams.toString()}`);
|
|
554
|
-
if (!response.ok) {
|
|
555
|
-
|
|
556
|
-
console.error('[IndexerClient] getContractPermissions failed:', errorMessage);
|
|
557
|
-
throw new Error(`Failed to get contract permissions: ${errorMessage}`);
|
|
377
|
+
const response = await this.networkClient.get(buildUrl(this.baseUrl, `/permissions/contract/${encodeURIComponent(contractAddress)}?${queryParams.toString()}`), { headers });
|
|
378
|
+
if (!response.ok || !response.data) {
|
|
379
|
+
throw handleApiError(response, 'get contract permissions');
|
|
558
380
|
}
|
|
559
381
|
return response.data;
|
|
560
382
|
}
|
|
561
383
|
async getWalletPermissions(walletAddress, chainId, testNet = false) {
|
|
384
|
+
const headers = createHeaders(this.dev);
|
|
562
385
|
const queryParams = new URLSearchParams({
|
|
563
386
|
chainId: chainId.toString(),
|
|
564
387
|
testNet: testNet.toString(),
|
|
565
388
|
});
|
|
566
|
-
const response = await this.get(`/permissions/wallet/${encodeURIComponent(walletAddress)}?${queryParams.toString()}`);
|
|
567
|
-
if (!response.ok) {
|
|
568
|
-
|
|
569
|
-
console.error('[IndexerClient] getWalletPermissions failed:', errorMessage);
|
|
570
|
-
throw new Error(`Failed to get wallet permissions: ${errorMessage}`);
|
|
389
|
+
const response = await this.networkClient.get(buildUrl(this.baseUrl, `/permissions/wallet/${encodeURIComponent(walletAddress)}?${queryParams.toString()}`), { headers });
|
|
390
|
+
if (!response.ok || !response.data) {
|
|
391
|
+
throw handleApiError(response, 'get wallet permissions');
|
|
571
392
|
}
|
|
572
393
|
return response.data;
|
|
573
394
|
}
|