@talken/talkenkit 2.4.21 → 2.4.22
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/LICENSE +9 -0
- package/dist/abcWallet-4RS3B4ZG.js +188 -0
- package/dist/abcWallet-EBOW2RJB.js +188 -0
- package/dist/abcWallet-RS4EOJ4I.js +188 -0
- package/dist/abcWallet-SNEZVK7V.js +188 -0
- package/dist/abcWallet-TC7M2JYX.js +188 -0
- package/dist/abcWallet-VZMW2DR3.js +188 -0
- package/dist/abcWallet-XJ3WSUVI.js +188 -0
- package/dist/abcWallet-XNCBZAIQ.js +188 -0
- package/dist/chunk-6FLQAAC4.js +7213 -0
- package/dist/chunk-7GIIMIPN.js +7213 -0
- package/dist/chunk-IBFA37SC.js +7228 -0
- package/dist/chunk-O5ZOC4NJ.js +7215 -0
- package/dist/chunk-OPOAKGEX.js +7216 -0
- package/dist/chunk-OTIHVCVR.js +7213 -0
- package/dist/chunk-P77BVZZF.js +7369 -0
- package/dist/chunk-RFLXXSQH.js +7139 -0
- package/dist/components/ConfirmationModal/NonEvmConfirmationModal.css.d.ts +11 -0
- package/dist/components/ConfirmationModal/NonEvmSignConfirmationModal.d.ts +9 -0
- package/dist/components/ConfirmationModal/NonEvmTransferConfirmationModal.d.ts +9 -0
- package/dist/components/ConfirmationModal/SignConfirmationModal.css.d.ts +1 -19
- package/dist/components/ConfirmationModal/TransactionConfirmationModal.css.d.ts +1 -20
- package/dist/components/ConfirmationModal/commonStyles.css.d.ts +19 -0
- package/dist/components/ConfirmationModal/index.d.ts +2 -0
- package/dist/components/ConfirmationModal/utils.d.ts +2 -1
- package/dist/hooks/useWalletCapabilities.d.ts +2 -0
- package/dist/index.css +227 -307
- package/dist/index.d.ts +4 -2
- package/dist/index.js +2004 -1064
- package/dist/providers/SignConfirmationProvider/NonEvmConfirmationContext.d.ts +6 -0
- package/dist/providers/SignConfirmationProvider/index.d.ts +2 -1
- package/dist/providers/SignConfirmationProvider/requestParsers.d.ts +6 -1
- package/dist/providers/SignConfirmationProvider/types.d.ts +35 -1
- package/dist/wallets/capabilities/detectCapabilities.d.ts +7 -0
- package/dist/wallets/capabilities/requestWalletAction.d.ts +8 -0
- package/dist/wallets/capabilities/types.d.ts +50 -0
- package/dist/wallets/walletConnectors/abcWallet/abcApi.js +3 -3
- package/dist/wallets/walletConnectors/abcWallet/abcBitcoinConnector.js +3 -3
- package/dist/wallets/walletConnectors/abcWallet/abcBitcoinProvider.d.ts +10 -0
- package/dist/wallets/walletConnectors/abcWallet/abcBitcoinProvider.js +1 -1
- package/dist/wallets/walletConnectors/abcWallet/abcConnector.js +5 -5
- package/dist/wallets/walletConnectors/abcWallet/abcProvider.d.ts +9 -0
- package/dist/wallets/walletConnectors/abcWallet/abcProvider.js +3 -3
- package/dist/wallets/walletConnectors/abcWallet/abcSolanaProvider.d.ts +10 -0
- package/dist/wallets/walletConnectors/abcWallet/abcSolanaProvider.js +1 -1
- package/dist/wallets/walletConnectors/abcWallet/abcSolanaWalletAdapter.d.ts +16 -0
- package/dist/wallets/walletConnectors/abcWallet/abcSolanaWalletAdapter.js +115 -33
- package/dist/wallets/walletConnectors/abcWallet/abcTronProvider.d.ts +16 -0
- package/dist/wallets/walletConnectors/abcWallet/abcTronProvider.js +1 -1
- package/dist/wallets/walletConnectors/abcWallet/abcWallet.js +7 -7
- package/dist/wallets/walletConnectors/abcWallet/api/AuthApi.js +4 -4
- package/dist/wallets/walletConnectors/abcWallet/api/BaseApiClient.js +3 -3
- package/dist/wallets/walletConnectors/abcWallet/api/BitcoinApi.js +4 -4
- package/dist/wallets/walletConnectors/abcWallet/api/GasApi.js +4 -4
- package/dist/wallets/walletConnectors/abcWallet/api/SolanaApi.js +4 -4
- package/dist/wallets/walletConnectors/abcWallet/api/TalkenApiClient.d.ts +9 -4
- package/dist/wallets/walletConnectors/abcWallet/api/TalkenApiClient.js +2 -2
- package/dist/wallets/walletConnectors/abcWallet/api/TransactionApi.js +4 -4
- package/dist/wallets/walletConnectors/abcWallet/api/TronApi.js +4 -4
- package/dist/wallets/walletConnectors/abcWallet/api/WalletApi.js +4 -4
- package/dist/wallets/walletConnectors/abcWallet/api/WalletscanApi.js +4 -4
- package/dist/wallets/walletConnectors/abcWallet/api/index.js +13 -13
- package/dist/wallets/walletConnectors/abcWallet/constants.d.ts +5 -4
- package/dist/wallets/walletConnectors/abcWallet/constants.js +1 -1
- package/dist/wallets/walletConnectors/abcWallet/index.js +21 -21
- package/dist/wallets/walletConnectors/abcWallet/types.d.ts +31 -1
- package/dist/wallets/walletConnectors/abcWallet/utils.js +2 -2
- package/dist/wallets/walletConnectors/berasigWallet/berasigWallet.js +2 -2
- package/dist/wallets/walletConnectors/bifrostWallet/bifrostWallet.js +2 -2
- package/dist/wallets/walletConnectors/binanceWallet/binanceWallet.js +2 -2
- package/dist/wallets/walletConnectors/bitgetWallet/bitgetWallet.js +2 -2
- package/dist/wallets/walletConnectors/bybitWallet/bybitWallet.js +2 -2
- package/dist/wallets/walletConnectors/chunk-2IZBLAHI.js +52 -0
- package/dist/wallets/walletConnectors/chunk-32IJ3ILH.js +71 -0
- package/dist/wallets/walletConnectors/chunk-3AX66UHT.js +479 -0
- package/dist/wallets/walletConnectors/chunk-3BVPV64G.js +36 -0
- package/dist/wallets/walletConnectors/chunk-3DGFHWI3.js +302 -0
- package/dist/wallets/walletConnectors/chunk-4FKUVQCM.js +655 -0
- package/dist/wallets/walletConnectors/chunk-56SF4VRC.js +640 -0
- package/dist/wallets/walletConnectors/chunk-5KOE7NJW.js +52 -0
- package/dist/wallets/walletConnectors/chunk-6CVXZ3ZW.js +771 -0
- package/dist/wallets/walletConnectors/chunk-6GCWEPU7.js +643 -0
- package/dist/wallets/walletConnectors/chunk-6YFP3Q2I.js +118 -0
- package/dist/wallets/walletConnectors/chunk-7EEPPULA.js +118 -0
- package/dist/wallets/walletConnectors/chunk-7QL42XTB.js +302 -0
- package/dist/wallets/walletConnectors/chunk-A7ZSPSFX.js +577 -0
- package/dist/wallets/walletConnectors/chunk-AI3CT254.js +302 -0
- package/dist/wallets/walletConnectors/chunk-AMNVH7CZ.js +151 -0
- package/dist/wallets/walletConnectors/chunk-AOREXGRM.js +350 -0
- package/dist/wallets/walletConnectors/chunk-BLO7E54F.js +302 -0
- package/dist/wallets/walletConnectors/chunk-BNRH5PYS.js +52 -0
- package/dist/wallets/walletConnectors/chunk-BOV5FXU6.js +151 -0
- package/dist/wallets/walletConnectors/chunk-BR25RFNF.js +260 -0
- package/dist/wallets/walletConnectors/chunk-BXQ2UWJ3.js +91 -0
- package/dist/wallets/walletConnectors/chunk-CAMPW7O2.js +874 -0
- package/dist/wallets/walletConnectors/chunk-CLMFCNP7.js +52 -0
- package/dist/wallets/walletConnectors/chunk-DSZOE65L.js +107 -0
- package/dist/wallets/walletConnectors/chunk-DU6RCLWT.js +272 -0
- package/dist/wallets/walletConnectors/chunk-ENN6UGGA.js +421 -0
- package/dist/wallets/walletConnectors/chunk-EXWDLN5V.js +204 -0
- package/dist/wallets/walletConnectors/chunk-FFU26Y5Y.js +272 -0
- package/dist/wallets/walletConnectors/chunk-FGS2WHVA.js +118 -0
- package/dist/wallets/walletConnectors/chunk-FJJ3QI4R.js +91 -0
- package/dist/wallets/walletConnectors/chunk-FS2OOQYF.js +204 -0
- package/dist/wallets/walletConnectors/chunk-G5X3COSW.js +205 -0
- package/dist/wallets/walletConnectors/chunk-H53R4SFZ.js +204 -0
- package/dist/wallets/walletConnectors/chunk-J4QGDATF.js +71 -0
- package/dist/wallets/walletConnectors/chunk-JIJNCMJR.js +874 -0
- package/dist/wallets/walletConnectors/chunk-JSGZYU4A.js +52 -0
- package/dist/wallets/walletConnectors/chunk-JVT7R2GZ.js +771 -0
- package/dist/wallets/walletConnectors/chunk-K3JNN5UK.js +71 -0
- package/dist/wallets/walletConnectors/chunk-KBHPY3NA.js +302 -0
- package/dist/wallets/walletConnectors/chunk-KEX6WS23.js +640 -0
- package/dist/wallets/walletConnectors/chunk-KHYKVVR7.js +52 -0
- package/dist/wallets/walletConnectors/chunk-LOL7ZZ3S.js +302 -0
- package/dist/wallets/walletConnectors/chunk-LOSXI36Y.js +479 -0
- package/dist/wallets/walletConnectors/chunk-M2U5QGM7.js +260 -0
- package/dist/wallets/walletConnectors/chunk-M73AWLIV.js +107 -0
- package/dist/wallets/walletConnectors/chunk-MAUC46AE.js +302 -0
- package/dist/wallets/walletConnectors/chunk-MBRXYEQC.js +272 -0
- package/dist/wallets/walletConnectors/chunk-MDDD4LG2.js +874 -0
- package/dist/wallets/walletConnectors/chunk-MMR2QAEU.js +642 -0
- package/dist/wallets/walletConnectors/chunk-MNZZRFUC.js +302 -0
- package/dist/wallets/walletConnectors/chunk-OIRY24PH.js +302 -0
- package/dist/wallets/walletConnectors/chunk-ORBX4JE2.js +52 -0
- package/dist/wallets/walletConnectors/chunk-OXJFFDW7.js +761 -0
- package/dist/wallets/walletConnectors/chunk-QD3PPWTN.js +272 -0
- package/dist/wallets/walletConnectors/chunk-RCIABMG5.js +259 -0
- package/dist/wallets/walletConnectors/chunk-RHC4SVLB.js +71 -0
- package/dist/wallets/walletConnectors/chunk-S2CB4KFC.js +71 -0
- package/dist/wallets/walletConnectors/chunk-S6HZD4XZ.js +302 -0
- package/dist/wallets/walletConnectors/chunk-S72LCNVX.js +272 -0
- package/dist/wallets/walletConnectors/chunk-SCWE5EEX.js +91 -0
- package/dist/wallets/walletConnectors/chunk-TKEL4D4E.js +151 -0
- package/dist/wallets/walletConnectors/chunk-TKJEMEBZ.js +71 -0
- package/dist/wallets/walletConnectors/chunk-TZ44ZREA.js +302 -0
- package/dist/wallets/walletConnectors/chunk-UGQSI3US.js +547 -0
- package/dist/wallets/walletConnectors/chunk-UU4JYY3C.js +205 -0
- package/dist/wallets/walletConnectors/chunk-V5P5BL6Z.js +302 -0
- package/dist/wallets/walletConnectors/chunk-VH6DIRPF.js +71 -0
- package/dist/wallets/walletConnectors/chunk-VPNZAMW5.js +205 -0
- package/dist/wallets/walletConnectors/chunk-W6QN6QXO.js +52 -0
- package/dist/wallets/walletConnectors/chunk-WDULICVN.js +302 -0
- package/dist/wallets/walletConnectors/chunk-WGGHGODM.js +272 -0
- package/dist/wallets/walletConnectors/chunk-XUCMTLM3.js +52 -0
- package/dist/wallets/walletConnectors/chunk-Y5WAX6WO.js +52 -0
- package/dist/wallets/walletConnectors/chunk-Y62PFBWE.js +640 -0
- package/dist/wallets/walletConnectors/chunk-Z6ABK6G6.js +107 -0
- package/dist/wallets/walletConnectors/chunk-ZCA5QSIM.js +71 -0
- package/dist/wallets/walletConnectors/chunk-ZJDZJW55.js +479 -0
- package/dist/wallets/walletConnectors/chunk-ZOF7ZDGU.js +52 -0
- package/dist/wallets/walletConnectors/chunk-ZUU57RHO.js +36 -0
- package/dist/wallets/walletConnectors/chunk-ZWFGRREM.js +36 -0
- package/dist/wallets/walletConnectors/chunk-ZY5BCHP2.js +302 -0
- package/dist/wallets/walletConnectors/clvWallet/clvWallet.js +2 -2
- package/dist/wallets/walletConnectors/coin98Wallet/coin98Wallet.js +2 -2
- package/dist/wallets/walletConnectors/coreWallet/coreWallet.js +2 -2
- package/dist/wallets/walletConnectors/foxWallet/foxWallet.js +2 -2
- package/dist/wallets/walletConnectors/frontierWallet/frontierWallet.js +2 -2
- package/dist/wallets/walletConnectors/gateWallet/gateWallet.js +2 -2
- package/dist/wallets/walletConnectors/index.js +91 -91
- package/dist/wallets/walletConnectors/iopayWallet/iopayWallet.js +2 -2
- package/dist/wallets/walletConnectors/kaiaWallet/kaiaWallet.js +2 -2
- package/dist/wallets/walletConnectors/kaikasWallet/kaikasWallet.js +2 -2
- package/dist/wallets/walletConnectors/metaMaskWallet/metaMaskWallet.js +2 -2
- package/dist/wallets/walletConnectors/okxWallet/okxWallet.js +2 -2
- package/dist/wallets/walletConnectors/rainbowWallet/rainbowWallet.js +2 -2
- package/dist/wallets/walletConnectors/roninWallet/roninWallet.js +2 -2
- package/dist/wallets/walletConnectors/safepalWallet/safepalWallet.js +2 -2
- package/dist/wallets/walletConnectors/subWallet/subWallet.js +2 -2
- package/dist/wallets/walletConnectors/tokenPocketWallet/tokenPocketWallet.js +2 -2
- package/dist/wallets/walletConnectors/trustWallet/trustWallet.js +2 -2
- package/dist/wallets/walletConnectors/zealWallet/zealWallet.js +2 -2
- package/dist/wallets/walletConnectors/zerionWallet/zerionWallet.js +2 -2
- package/package.json +11 -12
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
calculateExpiryTimestamp,
|
|
4
|
+
createAbcError,
|
|
5
|
+
isTokenExpired,
|
|
6
|
+
loadFromStorage,
|
|
7
|
+
parseApiError,
|
|
8
|
+
removeFromStorage,
|
|
9
|
+
saveToStorage
|
|
10
|
+
} from "./chunk-LOSXI36Y.js";
|
|
11
|
+
import {
|
|
12
|
+
DEFAULT_HEADERS,
|
|
13
|
+
REQUEST_TIMEOUT
|
|
14
|
+
} from "./chunk-BR25RFNF.js";
|
|
15
|
+
|
|
16
|
+
// src/wallets/walletConnectors/abcWallet/api/BaseApiClient.ts
|
|
17
|
+
import { getTalkenApiClient } from "@talken/talkenkit";
|
|
18
|
+
var BaseApiClient = class {
|
|
19
|
+
constructor(config) {
|
|
20
|
+
this.accessToken = null;
|
|
21
|
+
this.refreshToken = null;
|
|
22
|
+
this.expiresAt = null;
|
|
23
|
+
this.isRefreshing = false;
|
|
24
|
+
this.refreshPromise = null;
|
|
25
|
+
this.config = config;
|
|
26
|
+
this.baseURL = config.waasUrl;
|
|
27
|
+
this.loadTokens();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Load tokens from storage
|
|
31
|
+
*/
|
|
32
|
+
loadTokens() {
|
|
33
|
+
this.accessToken = loadFromStorage("access_token" /* ACCESS_TOKEN */);
|
|
34
|
+
this.refreshToken = loadFromStorage("refresh_token" /* REFRESH_TOKEN */);
|
|
35
|
+
this.expiresAt = loadFromStorage("expires_at" /* EXPIRES_AT */);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Set tokens in client instance (useful when restoring from storage or state)
|
|
39
|
+
* Call this before making API requests if tokens are managed externally
|
|
40
|
+
*/
|
|
41
|
+
setTokens(accessToken, refreshToken, expiresAt) {
|
|
42
|
+
this.accessToken = accessToken;
|
|
43
|
+
this.refreshToken = refreshToken;
|
|
44
|
+
this.expiresAt = expiresAt;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Save tokens to storage
|
|
48
|
+
*/
|
|
49
|
+
saveTokens(accessToken, refreshToken, expiresIn) {
|
|
50
|
+
this.accessToken = accessToken;
|
|
51
|
+
this.refreshToken = refreshToken;
|
|
52
|
+
this.expiresAt = calculateExpiryTimestamp(expiresIn);
|
|
53
|
+
saveToStorage("access_token" /* ACCESS_TOKEN */, accessToken);
|
|
54
|
+
saveToStorage("refresh_token" /* REFRESH_TOKEN */, refreshToken);
|
|
55
|
+
saveToStorage("expires_at" /* EXPIRES_AT */, this.expiresAt);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Clear tokens
|
|
59
|
+
*/
|
|
60
|
+
clearTokens() {
|
|
61
|
+
this.accessToken = null;
|
|
62
|
+
this.refreshToken = null;
|
|
63
|
+
this.expiresAt = null;
|
|
64
|
+
removeFromStorage("access_token" /* ACCESS_TOKEN */);
|
|
65
|
+
removeFromStorage("refresh_token" /* REFRESH_TOKEN */);
|
|
66
|
+
removeFromStorage("expires_at" /* EXPIRES_AT */);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Check if access token is expired
|
|
70
|
+
*/
|
|
71
|
+
isTokenExpired() {
|
|
72
|
+
return isTokenExpired(this.expiresAt);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get current access token
|
|
76
|
+
*/
|
|
77
|
+
getAccessToken() {
|
|
78
|
+
return this.accessToken;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Set access token manually
|
|
82
|
+
*/
|
|
83
|
+
setAccessToken(token) {
|
|
84
|
+
this.accessToken = token;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get base URL
|
|
88
|
+
*/
|
|
89
|
+
getBaseURL() {
|
|
90
|
+
return this.baseURL;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Get configuration
|
|
94
|
+
*/
|
|
95
|
+
getConfig() {
|
|
96
|
+
return this.config;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Refresh access token via TalkenApiClient
|
|
100
|
+
*/
|
|
101
|
+
async refreshAccessToken() {
|
|
102
|
+
if (this.isRefreshing) {
|
|
103
|
+
if (this.refreshPromise) {
|
|
104
|
+
await this.refreshPromise;
|
|
105
|
+
}
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
const api = getTalkenApiClient();
|
|
109
|
+
if (api) {
|
|
110
|
+
this.isRefreshing = true;
|
|
111
|
+
this.refreshPromise = (async () => {
|
|
112
|
+
try {
|
|
113
|
+
const res = await api.auth.refresh();
|
|
114
|
+
this.saveTokens(res.accessToken, res.refreshToken, res.expiresIn);
|
|
115
|
+
} finally {
|
|
116
|
+
this.isRefreshing = false;
|
|
117
|
+
this.refreshPromise = null;
|
|
118
|
+
}
|
|
119
|
+
})();
|
|
120
|
+
await this.refreshPromise;
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
if (!this.refreshToken) {
|
|
124
|
+
throw createAbcError(
|
|
125
|
+
"TOKEN_EXPIRED" /* TOKEN_EXPIRED */,
|
|
126
|
+
"No refresh token available"
|
|
127
|
+
);
|
|
128
|
+
}
|
|
129
|
+
throw createAbcError(
|
|
130
|
+
"TOKEN_EXPIRED" /* TOKEN_EXPIRED */,
|
|
131
|
+
"TalkenApiClient not initialized for token refresh"
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Make HTTP request with automatic token refresh
|
|
136
|
+
*/
|
|
137
|
+
async request(endpoint, options = {}) {
|
|
138
|
+
const {
|
|
139
|
+
method = "GET",
|
|
140
|
+
body,
|
|
141
|
+
headers = {},
|
|
142
|
+
skipAuth = false,
|
|
143
|
+
isRetry = false,
|
|
144
|
+
contentType = "form"
|
|
145
|
+
// Default to form-encoded for backward compatibility
|
|
146
|
+
} = options;
|
|
147
|
+
if (!skipAuth && this.isTokenExpired() && this.refreshToken) {
|
|
148
|
+
await this.refreshAccessToken();
|
|
149
|
+
}
|
|
150
|
+
const url = `${this.baseURL}${endpoint}`;
|
|
151
|
+
const requestHeaders = {
|
|
152
|
+
...DEFAULT_HEADERS,
|
|
153
|
+
...headers
|
|
154
|
+
};
|
|
155
|
+
if (contentType === "json") {
|
|
156
|
+
requestHeaders["Content-Type"] = "application/json";
|
|
157
|
+
requestHeaders["Accept"] = "application/json";
|
|
158
|
+
}
|
|
159
|
+
if (this.config.environment === "production") {
|
|
160
|
+
requestHeaders["User-Agent"] = "Android";
|
|
161
|
+
}
|
|
162
|
+
if (!skipAuth && this.accessToken) {
|
|
163
|
+
requestHeaders.Authorization = `Bearer ${this.accessToken}`;
|
|
164
|
+
}
|
|
165
|
+
if (this.config.apiKey) {
|
|
166
|
+
requestHeaders["X-API-Key"] = this.config.apiKey;
|
|
167
|
+
}
|
|
168
|
+
try {
|
|
169
|
+
const controller = new AbortController();
|
|
170
|
+
const timeoutId = setTimeout(() => controller.abort(), REQUEST_TIMEOUT);
|
|
171
|
+
const requestBody = body ? contentType === "json" ? JSON.stringify(body) : new URLSearchParams(body).toString() : void 0;
|
|
172
|
+
const response = await fetch(url, {
|
|
173
|
+
method,
|
|
174
|
+
headers: requestHeaders,
|
|
175
|
+
body: requestBody,
|
|
176
|
+
signal: controller.signal
|
|
177
|
+
});
|
|
178
|
+
clearTimeout(timeoutId);
|
|
179
|
+
const text = await response.text();
|
|
180
|
+
let data;
|
|
181
|
+
if (text) {
|
|
182
|
+
try {
|
|
183
|
+
data = JSON.parse(text);
|
|
184
|
+
} catch (parseError) {
|
|
185
|
+
console.error("[BaseApiClient] \u274C JSON parse error:", {
|
|
186
|
+
url,
|
|
187
|
+
method,
|
|
188
|
+
status: response.status,
|
|
189
|
+
responseText: text.substring(0, 200)
|
|
190
|
+
});
|
|
191
|
+
throw createAbcError(
|
|
192
|
+
"UNKNOWN_ERROR" /* UNKNOWN_ERROR */,
|
|
193
|
+
"Invalid JSON response from server",
|
|
194
|
+
{ text, parseError }
|
|
195
|
+
);
|
|
196
|
+
}
|
|
197
|
+
} else {
|
|
198
|
+
data = { status: "success" };
|
|
199
|
+
}
|
|
200
|
+
if (response.status === 401 && !skipAuth && this.refreshToken && !isRetry) {
|
|
201
|
+
try {
|
|
202
|
+
await this.refreshAccessToken();
|
|
203
|
+
return await this.request(endpoint, {
|
|
204
|
+
...options,
|
|
205
|
+
isRetry: true
|
|
206
|
+
});
|
|
207
|
+
} catch (refreshError) {
|
|
208
|
+
console.error("Token refresh failed:", refreshError);
|
|
209
|
+
throw parseApiError({
|
|
210
|
+
response: {
|
|
211
|
+
status: response.status,
|
|
212
|
+
data
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
if (!response.ok) {
|
|
218
|
+
if (response.status !== 409) {
|
|
219
|
+
console.error("[BaseApiClient] \u274C API Error:", {
|
|
220
|
+
url,
|
|
221
|
+
method,
|
|
222
|
+
status: response.status,
|
|
223
|
+
statusText: response.statusText,
|
|
224
|
+
data
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
throw parseApiError({
|
|
228
|
+
response: {
|
|
229
|
+
status: response.status,
|
|
230
|
+
data
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
return data;
|
|
235
|
+
} catch (error) {
|
|
236
|
+
if (error.response?.status !== 409 && error.code !== "WALLET_ALREADY_EXISTS") {
|
|
237
|
+
console.error("[BaseApiClient] \u274C Request failed:", {
|
|
238
|
+
url,
|
|
239
|
+
method,
|
|
240
|
+
error: error.message
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
if (error.name === "AbortError") {
|
|
244
|
+
throw createAbcError(
|
|
245
|
+
"NETWORK_ERROR" /* NETWORK_ERROR */,
|
|
246
|
+
"Request timeout",
|
|
247
|
+
error
|
|
248
|
+
);
|
|
249
|
+
}
|
|
250
|
+
if (error.code && error.message) {
|
|
251
|
+
throw error;
|
|
252
|
+
}
|
|
253
|
+
throw parseApiError(error);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Check if user is authenticated
|
|
258
|
+
*/
|
|
259
|
+
isAuthenticated() {
|
|
260
|
+
return !!this.accessToken && !this.isTokenExpired();
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Logout (clear tokens)
|
|
264
|
+
*/
|
|
265
|
+
async logout() {
|
|
266
|
+
this.clearTokens();
|
|
267
|
+
}
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
export {
|
|
271
|
+
BaseApiClient
|
|
272
|
+
};
|