@solana/connector 0.1.8 → 0.1.10

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.
Files changed (58) hide show
  1. package/README.md +97 -0
  2. package/dist/chunk-4JT24DIX.js +466 -0
  3. package/dist/chunk-4JT24DIX.js.map +1 -0
  4. package/dist/chunk-4KD6HQQG.js +69 -0
  5. package/dist/chunk-4KD6HQQG.js.map +1 -0
  6. package/dist/{chunk-DSUCH44G.js → chunk-64LV76OK.js} +2 -67
  7. package/dist/chunk-64LV76OK.js.map +1 -0
  8. package/dist/{chunk-FTXIXM43.js → chunk-6AJJJG5B.js} +614 -138
  9. package/dist/chunk-6AJJJG5B.js.map +1 -0
  10. package/dist/chunk-7XHVZW2L.mjs +460 -0
  11. package/dist/chunk-7XHVZW2L.mjs.map +1 -0
  12. package/dist/{chunk-K3BNIGPX.js → chunk-ATYK5OKR.js} +81 -33
  13. package/dist/chunk-ATYK5OKR.js.map +1 -0
  14. package/dist/{chunk-J7DHGLW6.mjs → chunk-DKCZA2QI.mjs} +3 -61
  15. package/dist/chunk-DKCZA2QI.mjs.map +1 -0
  16. package/dist/chunk-FVA4TUI4.mjs +178 -0
  17. package/dist/chunk-FVA4TUI4.mjs.map +1 -0
  18. package/dist/chunk-HO6QNKFM.mjs +61 -0
  19. package/dist/chunk-HO6QNKFM.mjs.map +1 -0
  20. package/dist/chunk-MN7XNCYI.js +230 -0
  21. package/dist/chunk-MN7XNCYI.js.map +1 -0
  22. package/dist/{chunk-6F6M6L7R.mjs → chunk-QOIQBWMP.mjs} +524 -56
  23. package/dist/chunk-QOIQBWMP.mjs.map +1 -0
  24. package/dist/{chunk-TTOKQAPX.mjs → chunk-WGZYKDXF.mjs} +57 -11
  25. package/dist/chunk-WGZYKDXF.mjs.map +1 -0
  26. package/dist/compat.js +10 -9
  27. package/dist/compat.js.map +1 -1
  28. package/dist/compat.mjs +2 -1
  29. package/dist/compat.mjs.map +1 -1
  30. package/dist/headless.d.mts +217 -100
  31. package/dist/headless.d.ts +217 -100
  32. package/dist/headless.js +190 -168
  33. package/dist/headless.mjs +5 -3
  34. package/dist/index.d.mts +3 -3
  35. package/dist/index.d.ts +3 -3
  36. package/dist/index.js +233 -203
  37. package/dist/index.mjs +6 -4
  38. package/dist/react.d.mts +72 -4
  39. package/dist/react.d.ts +72 -4
  40. package/dist/react.js +52 -36
  41. package/dist/react.mjs +2 -2
  42. package/dist/{standard-shim-CT49DM5l.d.mts → standard-shim-BTUm7cur.d.mts} +280 -1
  43. package/dist/{standard-shim-D9guL5fz.d.ts → standard-shim-LsQ97i9T.d.ts} +280 -1
  44. package/dist/walletconnect-D4JN6H2O.js +28 -0
  45. package/dist/walletconnect-D4JN6H2O.js.map +1 -0
  46. package/dist/walletconnect-I3PZUBTA.mjs +3 -0
  47. package/dist/walletconnect-I3PZUBTA.mjs.map +1 -0
  48. package/package.json +6 -2
  49. package/dist/chunk-6F6M6L7R.mjs.map +0 -1
  50. package/dist/chunk-AOIXHVRH.js +0 -535
  51. package/dist/chunk-AOIXHVRH.js.map +0 -1
  52. package/dist/chunk-DSUCH44G.js.map +0 -1
  53. package/dist/chunk-FTXIXM43.js.map +0 -1
  54. package/dist/chunk-G575OAT4.mjs +0 -476
  55. package/dist/chunk-G575OAT4.mjs.map +0 -1
  56. package/dist/chunk-J7DHGLW6.mjs.map +0 -1
  57. package/dist/chunk-K3BNIGPX.js.map +0 -1
  58. package/dist/chunk-TTOKQAPX.mjs.map +0 -1
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkFTXIXM43_js = require('./chunk-FTXIXM43.js');
4
- var chunkDSUCH44G_js = require('./chunk-DSUCH44G.js');
3
+ var chunk6AJJJG5B_js = require('./chunk-6AJJJG5B.js');
4
+ var chunk64LV76OK_js = require('./chunk-64LV76OK.js');
5
5
  var React = require('react');
6
6
  var jsxRuntime = require('react/jsx-runtime');
7
7
  var addresses = require('@solana/addresses');
@@ -11,8 +11,35 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
11
 
12
12
  var React__default = /*#__PURE__*/_interopDefault(React);
13
13
 
14
- var logger = chunkDSUCH44G_js.createLogger("ConnectorProvider");
15
- chunkFTXIXM43_js.installPolyfills();
14
+ var WalletConnectContext = React.createContext(null);
15
+ function WalletConnectProvider({ children }) {
16
+ let [uri, setUriState] = React.useState(null), isMountedRef = React.useRef(false), pendingUriRef = React.useRef(null);
17
+ React.useEffect(() => (isMountedRef.current = true, pendingUriRef.current !== null && (setUriState(pendingUriRef.current), pendingUriRef.current = null), () => {
18
+ isMountedRef.current = false;
19
+ }), []);
20
+ let setUri = React.useCallback((newUri) => {
21
+ if (!isMountedRef.current) {
22
+ pendingUriRef.current = newUri;
23
+ return;
24
+ }
25
+ setUriState(newUri);
26
+ }, []), clearUri = React.useCallback(() => {
27
+ pendingUriRef.current = null, isMountedRef.current && setUriState(null);
28
+ }, []);
29
+ return /* @__PURE__ */ jsxRuntime.jsx(WalletConnectContext.Provider, { value: { uri, setUri, clearUri }, children });
30
+ }
31
+ function useWalletConnectUri() {
32
+ let context = React.useContext(WalletConnectContext);
33
+ return context || {
34
+ uri: null,
35
+ setUri: () => {
36
+ },
37
+ clearUri: () => {
38
+ }
39
+ };
40
+ }
41
+ var logger = chunk64LV76OK_js.createLogger("ConnectorProvider");
42
+ chunk6AJJJG5B_js.installPolyfills();
16
43
  var ConnectorContext = React.createContext(null);
17
44
  ConnectorContext.displayName = "ConnectorContext";
18
45
  function ConnectorProviderInternal({
@@ -23,7 +50,7 @@ function ConnectorProviderInternal({
23
50
  let clientRef = React.useRef(null), client = React__default.default.useCallback(() => {
24
51
  if (!clientRef.current)
25
52
  try {
26
- clientRef.current = new chunkFTXIXM43_js.ConnectorClient(config), typeof window < "u" && (window.__connectorClient = clientRef.current), config?.debug && logger.info("Client initialized successfully");
53
+ clientRef.current = new chunk6AJJJG5B_js.ConnectorClient(config), typeof window < "u" && (window.__connectorClient = clientRef.current), config?.debug && logger.info("Client initialized successfully");
27
54
  } catch (error) {
28
55
  let err = error;
29
56
  logger.error("Failed to initialize client", { error: err });
@@ -83,7 +110,7 @@ function ConnectorProvider({
83
110
  }) {
84
111
  let errorBoundaryConfig = config?.errorBoundary;
85
112
  return errorBoundaryConfig?.enabled ? /* @__PURE__ */ jsxRuntime.jsx(
86
- chunkFTXIXM43_js.ConnectorErrorBoundary,
113
+ chunk6AJJJG5B_js.ConnectorErrorBoundary,
87
114
  {
88
115
  maxRetries: errorBoundaryConfig.maxRetries ?? 3,
89
116
  onError: errorBoundaryConfig.onError,
@@ -98,7 +125,7 @@ function useConnector() {
98
125
  throw new Error(
99
126
  "useConnector must be used within ConnectorProvider. Wrap your app with <ConnectorProvider> or <UnifiedProvider> to use connector hooks."
100
127
  );
101
- let state = React.useSyncExternalStore(
128
+ let { uri: walletConnectUri, clearUri: clearWalletConnectUri } = useWalletConnectUri(), state = React.useSyncExternalStore(
102
129
  React__default.default.useCallback((cb) => client.subscribe(cb), [client]),
103
130
  React__default.default.useCallback(() => client.getSnapshot(), [client]),
104
131
  React__default.default.useCallback(() => client.getSnapshot(), [client])
@@ -113,22 +140,41 @@ function useConnector() {
113
140
  return React.useMemo(
114
141
  () => ({
115
142
  ...state,
116
- ...methods
143
+ ...methods,
144
+ walletConnectUri,
145
+ clearWalletConnectUri
117
146
  }),
118
- [state, methods]
147
+ [state, methods, walletConnectUri, clearWalletConnectUri]
119
148
  );
120
149
  }
121
150
  function useConnectorClient() {
122
151
  return React.useContext(ConnectorContext);
123
152
  }
124
- function AppProvider({ children, connectorConfig, mobile, providers = [] }) {
125
- let content = /* @__PURE__ */ jsxRuntime.jsx(ConnectorProvider, { config: connectorConfig, mobile, children });
153
+ function AppProviderInner({ children, connectorConfig, mobile, providers = [] }) {
154
+ let { setUri, clearUri } = useWalletConnectUri(), enhancedConfig = React.useMemo(() => {
155
+ if (!connectorConfig?.walletConnect?.enabled)
156
+ return connectorConfig;
157
+ let wcConfig = connectorConfig.walletConnect;
158
+ return {
159
+ ...connectorConfig,
160
+ walletConnect: {
161
+ ...wcConfig,
162
+ // Auto-wire callbacks - use provided ones or fall back to context-based ones
163
+ onDisplayUri: wcConfig.onDisplayUri ?? setUri,
164
+ onSessionEstablished: wcConfig.onSessionEstablished ?? clearUri,
165
+ onSessionDisconnected: wcConfig.onSessionDisconnected ?? clearUri
166
+ }
167
+ };
168
+ }, [connectorConfig, setUri, clearUri]), content = /* @__PURE__ */ jsxRuntime.jsx(ConnectorProvider, { config: enhancedConfig, mobile, children });
126
169
  for (let i = providers.length - 1; i >= 0; i--) {
127
170
  let { component: Provider, props = {} } = providers[i];
128
171
  content = /* @__PURE__ */ jsxRuntime.jsx(Provider, { ...props, children: content });
129
172
  }
130
173
  return content;
131
174
  }
175
+ function AppProvider(props) {
176
+ return props.connectorConfig?.walletConnect?.enabled ? /* @__PURE__ */ jsxRuntime.jsx(WalletConnectProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(AppProviderInner, { ...props }) }) : /* @__PURE__ */ jsxRuntime.jsx(AppProviderInner, { ...props });
177
+ }
132
178
  var UnifiedProvider = AppProvider;
133
179
  function useCluster() {
134
180
  let { cluster, clusters } = useConnector(), client = useConnectorClient();
@@ -141,7 +187,7 @@ function useCluster() {
141
187
  [client]
142
188
  );
143
189
  return React.useMemo(() => {
144
- let isMainnet = cluster ? chunkFTXIXM43_js.isMainnetCluster(cluster) : false, isDevnet = cluster ? chunkFTXIXM43_js.isDevnetCluster(cluster) : false, isTestnet = cluster ? chunkFTXIXM43_js.isTestnetCluster(cluster) : false, isLocal = cluster ? chunkFTXIXM43_js.isLocalCluster(cluster) : false, explorerUrl = cluster ? chunkFTXIXM43_js.getClusterExplorerUrl(cluster) : "", type = cluster ? chunkFTXIXM43_js.getClusterType(cluster) : null;
190
+ let isMainnet = cluster ? chunk6AJJJG5B_js.isMainnetCluster(cluster) : false, isDevnet = cluster ? chunk6AJJJG5B_js.isDevnetCluster(cluster) : false, isTestnet = cluster ? chunk6AJJJG5B_js.isTestnetCluster(cluster) : false, isLocal = cluster ? chunk6AJJJG5B_js.isLocalCluster(cluster) : false, explorerUrl = cluster ? chunk6AJJJG5B_js.getClusterExplorerUrl(cluster) : "", type = cluster ? chunk6AJJJG5B_js.getClusterType(cluster) : null;
145
191
  return {
146
192
  cluster,
147
193
  clusters,
@@ -159,7 +205,7 @@ function useAccount() {
159
205
  let { selectedAccount, accounts, connected, selectAccount } = useConnector(), [copied, setCopied] = React.useState(false), copyTimeoutRef = React__default.default.useRef(void 0), account = React.useMemo(
160
206
  () => accounts.find((a) => a.address === selectedAccount) ?? null,
161
207
  [accounts, selectedAccount]
162
- ), formatted = React.useMemo(() => selectedAccount ? chunkFTXIXM43_js.formatAddress(selectedAccount) : "", [selectedAccount]), copy = React.useCallback(async () => selectedAccount ? (copyTimeoutRef.current && clearTimeout(copyTimeoutRef.current), await chunkFTXIXM43_js.copyAddressToClipboard(selectedAccount, {
208
+ ), formatted = React.useMemo(() => selectedAccount ? chunk6AJJJG5B_js.formatAddress(selectedAccount) : "", [selectedAccount]), copy = React.useCallback(async () => selectedAccount ? (copyTimeoutRef.current && clearTimeout(copyTimeoutRef.current), await chunk6AJJJG5B_js.copyAddressToClipboard(selectedAccount, {
163
209
  onSuccess: () => {
164
210
  setCopied(true), copyTimeoutRef.current = setTimeout(() => setCopied(false), 2e3);
165
211
  }
@@ -225,7 +271,7 @@ function useTransactionSigner() {
225
271
  let { selectedWallet, selectedAccount, accounts, cluster, connected } = useConnector(), client = useConnectorClient(), account = React.useMemo(
226
272
  () => accounts.find((a) => a.address === selectedAccount)?.raw ?? null,
227
273
  [accounts, selectedAccount]
228
- ), signer = React.useMemo(() => !connected || !selectedWallet || !account ? null : chunkFTXIXM43_js.createTransactionSigner({
274
+ ), signer = React.useMemo(() => !connected || !selectedWallet || !account ? null : chunk6AJJJG5B_js.createTransactionSigner({
229
275
  wallet: selectedWallet,
230
276
  account,
231
277
  cluster: cluster ?? void 0,
@@ -253,20 +299,20 @@ function useTransactionSigner() {
253
299
  function useKitTransactionSigner() {
254
300
  let { signer: connectorSigner, ready } = useTransactionSigner();
255
301
  return {
256
- signer: React.useMemo(() => connectorSigner ? chunkFTXIXM43_js.createKitTransactionSigner(connectorSigner) : null, [connectorSigner]),
302
+ signer: React.useMemo(() => connectorSigner ? chunk6AJJJG5B_js.createKitTransactionSigner(connectorSigner) : null, [connectorSigner]),
257
303
  ready
258
304
  };
259
305
  }
260
306
  var useGillTransactionSigner = useKitTransactionSigner;
261
- var logger2 = chunkDSUCH44G_js.createLogger("useSolanaClient");
307
+ var logger2 = chunk64LV76OK_js.createLogger("useSolanaClient");
262
308
  function useSolanaClient() {
263
309
  let { type } = useCluster(), connectorClient = useConnectorClient(), client = React.useMemo(() => {
264
310
  if (!type || !connectorClient) return null;
265
311
  try {
266
312
  let rpcUrl = connectorClient.getRpcUrl();
267
- return rpcUrl ? chunkDSUCH44G_js.createSolanaClient({
313
+ return rpcUrl ? chunk64LV76OK_js.createSolanaClient({
268
314
  urlOrMoniker: rpcUrl
269
- }) : type !== "custom" ? chunkDSUCH44G_js.createSolanaClient({
315
+ }) : type !== "custom" ? chunk64LV76OK_js.createSolanaClient({
270
316
  urlOrMoniker: type
271
317
  }) : null;
272
318
  } catch (error) {
@@ -287,8 +333,8 @@ function useTransactionPreparer() {
287
333
  let { client, ready } = useSolanaClient(), prepare = React.useCallback(
288
334
  async (transaction, options = {}) => {
289
335
  if (!client)
290
- throw new chunkDSUCH44G_js.NetworkError("RPC_ERROR", "Solana client not available. Cannot prepare transaction.");
291
- return chunkDSUCH44G_js.prepareTransaction({
336
+ throw new chunk64LV76OK_js.NetworkError("RPC_ERROR", "Solana client not available. Cannot prepare transaction.");
337
+ return chunk64LV76OK_js.prepareTransaction({
292
338
  transaction,
293
339
  rpc: client.rpc,
294
340
  computeUnitLimitMultiplier: options.computeUnitLimitMultiplier,
@@ -638,7 +684,7 @@ function getBalanceQueryKey(rpcUrl, address) {
638
684
  }
639
685
  var LAMPORTS_PER_SOL2 = 1000000000n;
640
686
  function formatTokenAccount(account) {
641
- let formatted = chunkFTXIXM43_js.formatBigIntBalance(account.amount, account.decimals, {
687
+ let formatted = chunk6AJJJG5B_js.formatBigIntBalance(account.amount, account.decimals, {
642
688
  maxDecimals: Math.min(account.decimals, 6)
643
689
  });
644
690
  return {
@@ -682,7 +728,7 @@ function useBalance(options = {}) {
682
728
  refetchIntervalMs: autoRefresh ? refreshInterval : false,
683
729
  client: clientOverride,
684
730
  select: selectBalance
685
- }), lamports = data?.lamports ?? 0n, tokens = data?.tokens ?? [], solBalance = React.useMemo(() => Number(lamports) / Number(LAMPORTS_PER_SOL2), [lamports]), formattedSol = React.useMemo(() => chunkFTXIXM43_js.formatLamportsToSolSafe(lamports, { maxDecimals: 4, suffix: true }), [lamports]), visibleError = updatedAt ? null : error, refetch = React.useCallback(
731
+ }), lamports = data?.lamports ?? 0n, tokens = data?.tokens ?? [], solBalance = React.useMemo(() => Number(lamports) / Number(LAMPORTS_PER_SOL2), [lamports]), formattedSol = React.useMemo(() => chunk6AJJJG5B_js.formatLamportsToSolSafe(lamports, { maxDecimals: 4, suffix: true }), [lamports]), visibleError = updatedAt ? null : error, refetch = React.useCallback(
686
732
  async (opts) => {
687
733
  await sharedRefetch(opts);
688
734
  },
@@ -1151,7 +1197,7 @@ function useTransactions(options = {}) {
1151
1197
  blockTimeNum,
1152
1198
  Number(sig.slot),
1153
1199
  sig.err,
1154
- chunkFTXIXM43_js.getTransactionUrl(String(sig.signature), currentCluster)
1200
+ chunk6AJJJG5B_js.getTransactionUrl(String(sig.signature), currentCluster)
1155
1201
  );
1156
1202
  });
1157
1203
  } else
@@ -1166,7 +1212,7 @@ function useTransactions(options = {}) {
1166
1212
  type: "unknown",
1167
1213
  formattedDate: date,
1168
1214
  formattedTime: time,
1169
- explorerUrl: chunkFTXIXM43_js.getTransactionUrl(String(sig.signature), currentCluster)
1215
+ explorerUrl: chunk6AJJJG5B_js.getTransactionUrl(String(sig.signature), currentCluster)
1170
1216
  };
1171
1217
  });
1172
1218
  let mintsToFetch = [
@@ -1180,7 +1226,7 @@ function useTransactions(options = {}) {
1180
1226
  throwIfAborted(signal);
1181
1227
  let tokenMetadata = await fetchTransactionTokenMetadata(mintsToFetch, {
1182
1228
  signal,
1183
- cluster: chunkFTXIXM43_js.getClusterType(currentCluster)
1229
+ cluster: chunk6AJJJG5B_js.getClusterType(currentCluster)
1184
1230
  });
1185
1231
  tokenMetadata.size > 0 && (newTransactions = newTransactions.map((tx) => {
1186
1232
  let enrichedTx = { ...tx };
@@ -1287,10 +1333,10 @@ function getTokensQueryKey(rpcUrl, address) {
1287
1333
  }
1288
1334
  var CACHE_MAX_SIZE = 500, PRICE_CACHE_TTL = 6e4, STALE_CLEANUP_INTERVAL = 12e4, COINGECKO_DEFAULT_MAX_RETRIES = 3, COINGECKO_DEFAULT_BASE_DELAY = 1e3, COINGECKO_DEFAULT_MAX_TIMEOUT = 3e4, COINGECKO_API_BASE_URL = "https://api.coingecko.com/api/v3", LRUCache = class {
1289
1335
  constructor(maxSize, options) {
1290
- chunkDSUCH44G_js.__publicField(this, "cache", /* @__PURE__ */ new Map());
1291
- chunkDSUCH44G_js.__publicField(this, "maxSize");
1292
- chunkDSUCH44G_js.__publicField(this, "getTtl");
1293
- chunkDSUCH44G_js.__publicField(this, "getTimestamp");
1336
+ chunk64LV76OK_js.__publicField(this, "cache", /* @__PURE__ */ new Map());
1337
+ chunk64LV76OK_js.__publicField(this, "maxSize");
1338
+ chunk64LV76OK_js.__publicField(this, "getTtl");
1339
+ chunk64LV76OK_js.__publicField(this, "getTimestamp");
1294
1340
  this.maxSize = maxSize, this.getTtl = options?.getTtl, this.getTimestamp = options?.getTimestamp;
1295
1341
  }
1296
1342
  get(key) {
@@ -1460,12 +1506,12 @@ async function fetchTokenMetadataHybrid(mints, coingeckoConfig, options) {
1460
1506
  return didUpdatePrices && options?.onUpdate?.(), didUpdate;
1461
1507
  }
1462
1508
  function formatBalance(amount, decimals) {
1463
- return chunkFTXIXM43_js.formatBigIntBalance(amount, decimals, {
1509
+ return chunk6AJJJG5B_js.formatBigIntBalance(amount, decimals, {
1464
1510
  maxDecimals: Math.min(decimals, 6)
1465
1511
  });
1466
1512
  }
1467
1513
  function formatUsd(amount, decimals, usdPrice) {
1468
- return chunkFTXIXM43_js.formatBigIntUsd(amount, decimals, usdPrice);
1514
+ return chunk6AJJJG5B_js.formatBigIntUsd(amount, decimals, usdPrice);
1469
1515
  }
1470
1516
  function selectTokens(assets, address) {
1471
1517
  return {
@@ -2806,6 +2852,7 @@ exports.SkeletonShine = SkeletonShine;
2806
2852
  exports.TokenListElement = TokenListElement;
2807
2853
  exports.TransactionHistoryElement = TransactionHistoryElement;
2808
2854
  exports.UnifiedProvider = UnifiedProvider;
2855
+ exports.WalletConnectProvider = WalletConnectProvider;
2809
2856
  exports.WalletListElement = WalletListElement;
2810
2857
  exports.clearSharedQueryCache = clearSharedQueryCache;
2811
2858
  exports.clearTokenCaches = clearTokenCaches;
@@ -2827,6 +2874,7 @@ exports.useTokens = useTokens;
2827
2874
  exports.useTransactionPreparer = useTransactionPreparer;
2828
2875
  exports.useTransactionSigner = useTransactionSigner;
2829
2876
  exports.useTransactions = useTransactions;
2877
+ exports.useWalletConnectUri = useWalletConnectUri;
2830
2878
  exports.useWalletInfo = useWalletInfo;
2831
- //# sourceMappingURL=chunk-K3BNIGPX.js.map
2832
- //# sourceMappingURL=chunk-K3BNIGPX.js.map
2879
+ //# sourceMappingURL=chunk-ATYK5OKR.js.map
2880
+ //# sourceMappingURL=chunk-ATYK5OKR.js.map