@talken/talkenkit 2.4.18 → 2.4.20

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/index.js CHANGED
@@ -46,7 +46,7 @@ import {
46
46
  networkNameToChainKey,
47
47
  networkToChainId,
48
48
  networks_exports
49
- } from "./chunk-6G2FPET7.js";
49
+ } from "./chunk-GTFQJSXY.js";
50
50
  import {
51
51
  en_US_default
52
52
  } from "./chunk-X4GSACNW.js";
@@ -132,7 +132,7 @@ function useBitcoinWallet() {
132
132
  });
133
133
  return;
134
134
  }
135
- const { AbcBitcoinProvider, createAbcWaasApiClient: createAbcWaasApiClient2 } = await import("./abcWallet-7XAGJUQT.js");
135
+ const { AbcBitcoinProvider, createAbcWaasApiClient: createAbcWaasApiClient2 } = await import("./abcWallet-JWLGBJVW.js");
136
136
  const client = createAbcWaasApiClient2({
137
137
  waasUrl: "",
138
138
  // All operations routed through TalkenApiClient
@@ -6983,7 +6983,7 @@ function setRainbowKitVersion({ version }) {
6983
6983
  }
6984
6984
  function useFingerprint() {
6985
6985
  const fingerprint = useCallback13(() => {
6986
- setRainbowKitVersion({ version: "2.4.18" });
6986
+ setRainbowKitVersion({ version: "2.4.20" });
6987
6987
  }, []);
6988
6988
  useEffect16(() => {
6989
6989
  fingerprint();
@@ -9856,7 +9856,9 @@ function useAbcWaasAuth(props) {
9856
9856
  }
9857
9857
  } catch (err) {
9858
9858
  console.error("[useAbcWaasAuth] Password submit error:", err);
9859
- if (err.code === 619 || err.message?.includes("619")) {
9859
+ const detailsCode = err.details?.code ?? err.details?.errCode;
9860
+ const is619 = Number(err.code) === 619 || String(err.code) === "619" || Number(detailsCode) === 619 || String(detailsCode) === "619";
9861
+ if (is619) {
9860
9862
  try {
9861
9863
  const api = getApi();
9862
9864
  await api.auth.sendOtp(email);
@@ -9869,7 +9871,11 @@ function useAbcWaasAuth(props) {
9869
9871
  setIsLoading(false);
9870
9872
  return;
9871
9873
  }
9872
- setError(err.message || "Login failed. Please try again.");
9874
+ if (err.statusCode === 401 || err.code === "UNAUTHORIZED") {
9875
+ setError("\uC774\uBA54\uC77C \uB610\uB294 \uBE44\uBC00\uBC88\uD638\uB97C \uD655\uC778\uD574 \uC8FC\uC138\uC694.");
9876
+ } else {
9877
+ setError(err.message || "Login failed. Please try again.");
9878
+ }
9873
9879
  } finally {
9874
9880
  setIsLoading(false);
9875
9881
  }
@@ -16722,7 +16728,7 @@ function useSolanaWallet() {
16722
16728
  });
16723
16729
  return;
16724
16730
  }
16725
- const { AbcSolanaProvider, createAbcWaasApiClient: createAbcWaasApiClient2 } = await import("./abcWallet-7XAGJUQT.js");
16731
+ const { AbcSolanaProvider, createAbcWaasApiClient: createAbcWaasApiClient2 } = await import("./abcWallet-JWLGBJVW.js");
16726
16732
  const client = createAbcWaasApiClient2({
16727
16733
  waasUrl: "",
16728
16734
  // All operations routed through TalkenApiClient
@@ -17061,7 +17067,7 @@ function useTronWallet() {
17061
17067
  });
17062
17068
  return;
17063
17069
  }
17064
- const { AbcTronProvider, createAbcWaasApiClient: createAbcWaasApiClient2 } = await import("./abcWallet-7XAGJUQT.js");
17070
+ const { AbcTronProvider, createAbcWaasApiClient: createAbcWaasApiClient2 } = await import("./abcWallet-JWLGBJVW.js");
17065
17071
  const client = createAbcWaasApiClient2({
17066
17072
  waasUrl: "",
17067
17073
  // All operations routed through TalkenApiClient
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  abcConnector
4
- } from "../chunk-C6G5FPD6.js";
4
+ } from "../chunk-MEAJDFYT.js";
5
5
  import "../chunk-F5C6OZYF.js";
6
6
  import "../chunk-BDM7TUVM.js";
7
7
  import "../chunk-O4AU63LK.js";
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
  import {
3
3
  abcWallet
4
- } from "../chunk-QA3NATYL.js";
4
+ } from "../chunk-ZAZVSLZK.js";
5
5
  import "../chunk-BBD77PEX.js";
6
- import "../chunk-C6G5FPD6.js";
6
+ import "../chunk-MEAJDFYT.js";
7
7
  import "../chunk-F5C6OZYF.js";
8
8
  import "../chunk-BDM7TUVM.js";
9
9
  import "../chunk-O4AU63LK.js";
@@ -2,19 +2,19 @@
2
2
  import {
3
3
  AbcWaasApiClient,
4
4
  createAbcWaasApiClient
5
- } from "../../chunk-6BVNBUEI.js";
6
- import {
7
- TransactionApi
8
- } from "../../chunk-NBEDPUHX.js";
5
+ } from "../../chunk-N7W4H2XZ.js";
9
6
  import {
10
7
  WalletApi
11
8
  } from "../../chunk-QHCLOJYA.js";
9
+ import {
10
+ WalletscanApi
11
+ } from "../../chunk-7MDXHYMB.js";
12
12
  import {
13
13
  TronApi
14
14
  } from "../../chunk-RS36ZX4P.js";
15
15
  import {
16
- WalletscanApi
17
- } from "../../chunk-7MDXHYMB.js";
16
+ TransactionApi
17
+ } from "../../chunk-NBEDPUHX.js";
18
18
  import {
19
19
  AuthApi
20
20
  } from "../../chunk-O47OQDRJ.js";
@@ -2,11 +2,18 @@
2
2
  import {
3
3
  AbcWaasApiClient,
4
4
  createAbcWaasApiClient
5
- } from "../chunk-6BVNBUEI.js";
6
- import "../chunk-NBEDPUHX.js";
5
+ } from "../chunk-N7W4H2XZ.js";
7
6
  import "../chunk-QHCLOJYA.js";
8
- import "../chunk-RS36ZX4P.js";
9
7
  import "../chunk-7MDXHYMB.js";
8
+ import "../chunk-RS36ZX4P.js";
9
+ import "../chunk-NBEDPUHX.js";
10
+ import {
11
+ SessionExpiredError,
12
+ dispatchSessionExpired,
13
+ fetchWithSessionCheck,
14
+ handleUnauthorizedResponse,
15
+ refreshAccessToken
16
+ } from "../chunk-YRDNIP2H.js";
10
17
  import {
11
18
  generateMpcWallets,
12
19
  recoverMpcWallets,
@@ -20,13 +27,6 @@ import {
20
27
  TRON_NETWORKS,
21
28
  TronProviderError
22
29
  } from "../chunk-H2RCMAOR.js";
23
- import {
24
- SessionExpiredError,
25
- dispatchSessionExpired,
26
- fetchWithSessionCheck,
27
- handleUnauthorizedResponse,
28
- refreshAccessToken
29
- } from "../chunk-YRDNIP2H.js";
30
30
  import {
31
31
  AbcBitcoinConnector,
32
32
  createAbcBitcoinConnector
@@ -44,11 +44,11 @@ import "../chunk-C4L5XI6N.js";
44
44
  import "../chunk-7ZCM4DCC.js";
45
45
  import {
46
46
  abcWallet
47
- } from "../chunk-QA3NATYL.js";
47
+ } from "../chunk-ZAZVSLZK.js";
48
48
  import "../chunk-BBD77PEX.js";
49
49
  import {
50
50
  abcConnector
51
- } from "../chunk-C6G5FPD6.js";
51
+ } from "../chunk-MEAJDFYT.js";
52
52
  import {
53
53
  AbcEvmProvider,
54
54
  createAbcEvmProvider,
@@ -0,0 +1,302 @@
1
+ "use client";
2
+ import {
3
+ createAbcWaasClient
4
+ } from "./chunk-BDM7TUVM.js";
5
+ import {
6
+ setGlobalDefaultBitcoinNetwork,
7
+ setGlobalDefaultChainId,
8
+ setGlobalDefaultSolanaNetwork
9
+ } from "./chunk-O4AU63LK.js";
10
+ import {
11
+ createAbcEvmProvider
12
+ } from "./chunk-F5C6OZYF.js";
13
+ import {
14
+ clearAuthState,
15
+ clearEncryptedTokens,
16
+ clearStorage,
17
+ loadAuthState,
18
+ loadFromStorage,
19
+ saveAuthState
20
+ } from "./chunk-6LH6ZME2.js";
21
+
22
+ // src/wallets/walletConnectors/abcWallet/abcConnector.ts
23
+ import { getTalkenApiClient } from "@talken/talkenkit";
24
+ import { createConnector } from "wagmi";
25
+ function abcConnector(options) {
26
+ const { config } = options;
27
+ if (config.defaultChainId) {
28
+ setGlobalDefaultChainId(config.defaultChainId);
29
+ }
30
+ if (config.defaultSolanaNetwork) {
31
+ setGlobalDefaultSolanaNetwork(config.defaultSolanaNetwork);
32
+ }
33
+ if (config.defaultBitcoinNetwork) {
34
+ setGlobalDefaultBitcoinNetwork(config.defaultBitcoinNetwork);
35
+ }
36
+ return createConnector((wagmiConfig) => {
37
+ const client = createAbcWaasClient(config);
38
+ const provider = createAbcEvmProvider(client);
39
+ let accountsChangedHandler;
40
+ let chainChangedHandler;
41
+ let disconnectHandler;
42
+ return {
43
+ id: "abc",
44
+ name: "ABC Wallet",
45
+ type: "abc",
46
+ /**
47
+ * Connect wallet
48
+ */
49
+ async connect() {
50
+ try {
51
+ const authState = loadAuthState();
52
+ if (!authState || !authState.isAuthenticated || !authState.wallet) {
53
+ throw new Error("ABC_LOGIN_REQUIRED");
54
+ }
55
+ provider.setWallet(authState.wallet);
56
+ if (authState.accessToken && authState.refreshToken && authState.expiresAt) {
57
+ client.setTokens(
58
+ authState.accessToken,
59
+ authState.refreshToken,
60
+ authState.expiresAt
61
+ );
62
+ }
63
+ const accounts = await provider.request({
64
+ method: "eth_requestAccounts"
65
+ });
66
+ let currentChainId = await provider.request({
67
+ method: "eth_chainId"
68
+ });
69
+ const currentChainIdNumber = Number(currentChainId);
70
+ const isChainSupported = wagmiConfig.chains.some(
71
+ (c) => c.id === currentChainIdNumber
72
+ );
73
+ if (!isChainSupported && wagmiConfig.chains.length > 0) {
74
+ const fallbackChainId = wagmiConfig.chains[0].id;
75
+ await provider.request({
76
+ method: "wallet_switchEthereumChain",
77
+ params: [{ chainId: `0x${fallbackChainId.toString(16)}` }]
78
+ });
79
+ currentChainId = `0x${fallbackChainId.toString(16)}`;
80
+ if (authState.wallet) {
81
+ authState.wallet.chainId = fallbackChainId;
82
+ saveAuthState(authState);
83
+ }
84
+ }
85
+ if (accountsChangedHandler) {
86
+ provider.removeListener("accountsChanged", accountsChangedHandler);
87
+ }
88
+ accountsChangedHandler = (accounts2) => {
89
+ wagmiConfig.emitter.emit("change", {
90
+ accounts: accounts2
91
+ });
92
+ };
93
+ provider.on("accountsChanged", accountsChangedHandler);
94
+ if (chainChangedHandler) {
95
+ provider.removeListener("chainChanged", chainChangedHandler);
96
+ }
97
+ chainChangedHandler = (chainId) => {
98
+ wagmiConfig.emitter.emit("change", {
99
+ chainId: Number(chainId)
100
+ });
101
+ };
102
+ provider.on("chainChanged", chainChangedHandler);
103
+ if (disconnectHandler) {
104
+ provider.removeListener("disconnect", disconnectHandler);
105
+ }
106
+ disconnectHandler = () => {
107
+ wagmiConfig.emitter.emit("disconnect");
108
+ this.onDisconnect();
109
+ };
110
+ provider.on("disconnect", disconnectHandler);
111
+ wagmiConfig.emitter.emit("connect", {
112
+ accounts,
113
+ chainId: Number(currentChainId)
114
+ });
115
+ return {
116
+ accounts,
117
+ chainId: Number(currentChainId)
118
+ };
119
+ } catch (error) {
120
+ console.error("\u274C ABC Connector connect() failed:", {
121
+ message: error.message,
122
+ code: error.code,
123
+ error
124
+ });
125
+ if (error.message === "ABC_LOGIN_REQUIRED") {
126
+ throw error;
127
+ }
128
+ throw error;
129
+ }
130
+ },
131
+ /**
132
+ * Disconnect wallet
133
+ */
134
+ async disconnect() {
135
+ if (accountsChangedHandler) {
136
+ provider.removeListener("accountsChanged", accountsChangedHandler);
137
+ accountsChangedHandler = void 0;
138
+ }
139
+ if (chainChangedHandler) {
140
+ provider.removeListener("chainChanged", chainChangedHandler);
141
+ chainChangedHandler = void 0;
142
+ }
143
+ if (disconnectHandler) {
144
+ provider.removeListener("disconnect", disconnectHandler);
145
+ disconnectHandler = void 0;
146
+ }
147
+ provider.clearWallet();
148
+ await client.logout();
149
+ let savedPinHash = null;
150
+ let savedEmail = null;
151
+ if (typeof window !== "undefined") {
152
+ savedPinHash = localStorage.getItem("talkenkit_abc_pin_hash");
153
+ savedEmail = localStorage.getItem("talkenkit_abc_saved_email");
154
+ }
155
+ clearAuthState();
156
+ clearEncryptedTokens();
157
+ if (typeof window !== "undefined") {
158
+ localStorage.removeItem("talkenkit_abc_enc_salt");
159
+ localStorage.removeItem("talkenkit_abc_enc_tokens");
160
+ if (savedPinHash) {
161
+ localStorage.setItem("talkenkit_abc_pin_hash", savedPinHash);
162
+ }
163
+ if (savedEmail) {
164
+ localStorage.setItem("talkenkit_abc_saved_email", savedEmail);
165
+ }
166
+ }
167
+ },
168
+ /**
169
+ * Get accounts
170
+ */
171
+ async getAccounts() {
172
+ const accounts = await provider.request({
173
+ method: "eth_accounts"
174
+ });
175
+ return accounts.map((account) => account);
176
+ },
177
+ /**
178
+ * Get chain ID
179
+ */
180
+ async getChainId() {
181
+ const chainId = await provider.request({
182
+ method: "eth_chainId"
183
+ });
184
+ return Number(chainId);
185
+ },
186
+ /**
187
+ * Get provider
188
+ */
189
+ async getProvider() {
190
+ return provider;
191
+ },
192
+ /**
193
+ * Check if authorized (has valid session)
194
+ * Auto-refreshes access token if expired but refresh token is valid
195
+ */
196
+ async isAuthorized() {
197
+ try {
198
+ const authState = loadAuthState();
199
+ if (!authState || !authState.isAuthenticated) {
200
+ return false;
201
+ }
202
+ if (!authState.wallet) {
203
+ return false;
204
+ }
205
+ if (client.isAuthenticated()) {
206
+ return true;
207
+ }
208
+ const refreshToken = loadFromStorage(
209
+ "refresh_token" /* REFRESH_TOKEN */
210
+ );
211
+ if (!refreshToken) {
212
+ clearStorage();
213
+ return false;
214
+ }
215
+ try {
216
+ const api = getTalkenApiClient();
217
+ if (!api) {
218
+ clearStorage();
219
+ return false;
220
+ }
221
+ const res = await api.auth.refresh();
222
+ client.setTokens(
223
+ res.accessToken,
224
+ res.refreshToken,
225
+ Date.now() + res.expiresIn * 1e3
226
+ );
227
+ const updatedState = loadAuthState();
228
+ return updatedState?.isAuthenticated ?? false;
229
+ } catch (error) {
230
+ console.error("[AbcConnector] Token refresh failed:", error);
231
+ clearStorage();
232
+ return false;
233
+ }
234
+ } catch (error) {
235
+ console.error(
236
+ "[AbcConnector] Unexpected error in isAuthorized:",
237
+ error
238
+ );
239
+ return false;
240
+ }
241
+ },
242
+ /**
243
+ * Switch chain
244
+ */
245
+ async switchChain({ chainId }) {
246
+ await provider.request({
247
+ method: "wallet_switchEthereumChain",
248
+ params: [{ chainId: `0x${chainId.toString(16)}` }]
249
+ });
250
+ const newChainId = await this.getChainId();
251
+ const authState = loadAuthState();
252
+ if (authState?.wallet) {
253
+ authState.wallet.chainId = newChainId;
254
+ saveAuthState(authState);
255
+ }
256
+ return wagmiConfig.chains.find((x) => x.id === chainId) ?? {
257
+ id: chainId,
258
+ name: `Chain ${chainId}`,
259
+ nativeCurrency: {
260
+ name: "Ether",
261
+ decimals: 18,
262
+ symbol: "ETH"
263
+ },
264
+ rpcUrls: {
265
+ default: { http: [""] }
266
+ }
267
+ };
268
+ },
269
+ /**
270
+ * Handle accounts changed
271
+ */
272
+ onAccountsChanged(accounts) {
273
+ if (accounts.length === 0) {
274
+ this.onDisconnect();
275
+ } else {
276
+ wagmiConfig.emitter.emit("change", {
277
+ accounts
278
+ });
279
+ }
280
+ },
281
+ /**
282
+ * Handle chain changed
283
+ */
284
+ onChainChanged(chain) {
285
+ const chainId = Number(chain);
286
+ wagmiConfig.emitter.emit("change", { chainId });
287
+ },
288
+ /**
289
+ * Handle disconnect
290
+ */
291
+ onDisconnect(_error) {
292
+ provider.clearWallet();
293
+ clearAuthState();
294
+ wagmiConfig.emitter.emit("disconnect");
295
+ }
296
+ };
297
+ });
298
+ }
299
+
300
+ export {
301
+ abcConnector
302
+ };
@@ -0,0 +1,52 @@
1
+ "use client";
2
+ import {
3
+ createTalkenApiClient
4
+ } from "./chunk-BBD77PEX.js";
5
+ import {
6
+ abcConnector
7
+ } from "./chunk-EXLVQ5ES.js";
8
+ import {
9
+ ABC_WALLET_METADATA
10
+ } from "./chunk-DHHVIM22.js";
11
+
12
+ // src/wallets/walletConnectors/abcWallet/abcWallet.ts
13
+ import { setTalkenApiClient } from "@talken/talkenkit";
14
+ var abcWallet = (specificOptions) => ({ projectId }) => {
15
+ const talkenApiUrl = specificOptions?.talkenApiUrl || process.env.NEXT_PUBLIC_API_URL || "http://localhost:3001/api/v1";
16
+ const talkenApi = createTalkenApiClient({
17
+ baseUrl: talkenApiUrl,
18
+ debug: specificOptions?.environment === "development"
19
+ });
20
+ setTalkenApiClient(talkenApi);
21
+ const waasUrl = specificOptions?.waasUrl || process.env.NEXT_PUBLIC_ABC_WAAS_URL || process.env.VITE_ABC_WAAS_URL || "";
22
+ const config = {
23
+ waasUrl,
24
+ apiKey: specificOptions?.apiKey,
25
+ plain: specificOptions?.plain || "",
26
+ // Deprecated - not used (secure.ts uses random generation)
27
+ environment: specificOptions?.environment || "development",
28
+ defaultChainId: specificOptions?.defaultChainId,
29
+ defaultSolanaNetwork: specificOptions?.defaultSolanaNetwork,
30
+ defaultBitcoinNetwork: specificOptions?.defaultBitcoinNetwork,
31
+ projectId
32
+ };
33
+ return {
34
+ id: ABC_WALLET_METADATA.id,
35
+ name: ABC_WALLET_METADATA.name,
36
+ rdns: ABC_WALLET_METADATA.rdns,
37
+ iconUrl: async () => (await import("./abcWallet-AYWSIGAG.js")).default,
38
+ iconBackground: ABC_WALLET_METADATA.iconBackground,
39
+ // Embedded wallet - no installation required
40
+ installed: void 0,
41
+ // No download URLs for embedded wallet
42
+ downloadUrls: void 0,
43
+ // Create connector - wrapper function required by Wallet type
44
+ createConnector: (_walletDetails) => abcConnector({ config }),
45
+ // Embedded wallet always available
46
+ hidden: () => false
47
+ };
48
+ };
49
+
50
+ export {
51
+ abcWallet
52
+ };