@solana/connector 0.1.9 → 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.
- package/README.md +97 -0
- package/dist/chunk-4JT24DIX.js +466 -0
- package/dist/chunk-4JT24DIX.js.map +1 -0
- package/dist/chunk-4KD6HQQG.js +69 -0
- package/dist/chunk-4KD6HQQG.js.map +1 -0
- package/dist/{chunk-DSUCH44G.js → chunk-64LV76OK.js} +2 -67
- package/dist/chunk-64LV76OK.js.map +1 -0
- package/dist/{chunk-5HRJKCIL.js → chunk-6AJJJG5B.js} +567 -133
- package/dist/chunk-6AJJJG5B.js.map +1 -0
- package/dist/chunk-7XHVZW2L.mjs +460 -0
- package/dist/chunk-7XHVZW2L.mjs.map +1 -0
- package/dist/{chunk-WDXEP4AJ.js → chunk-ATYK5OKR.js} +81 -33
- package/dist/chunk-ATYK5OKR.js.map +1 -0
- package/dist/{chunk-J7DHGLW6.mjs → chunk-DKCZA2QI.mjs} +3 -61
- package/dist/chunk-DKCZA2QI.mjs.map +1 -0
- package/dist/chunk-FVA4TUI4.mjs +178 -0
- package/dist/chunk-FVA4TUI4.mjs.map +1 -0
- package/dist/chunk-HO6QNKFM.mjs +61 -0
- package/dist/chunk-HO6QNKFM.mjs.map +1 -0
- package/dist/chunk-MN7XNCYI.js +230 -0
- package/dist/chunk-MN7XNCYI.js.map +1 -0
- package/dist/{chunk-MAXA3HEP.mjs → chunk-QOIQBWMP.mjs} +477 -51
- package/dist/chunk-QOIQBWMP.mjs.map +1 -0
- package/dist/{chunk-P5LXUDP6.mjs → chunk-WGZYKDXF.mjs} +57 -11
- package/dist/chunk-WGZYKDXF.mjs.map +1 -0
- package/dist/compat.js +10 -9
- package/dist/compat.js.map +1 -1
- package/dist/compat.mjs +2 -1
- package/dist/compat.mjs.map +1 -1
- package/dist/headless.d.mts +217 -100
- package/dist/headless.d.ts +217 -100
- package/dist/headless.js +190 -168
- package/dist/headless.mjs +5 -3
- package/dist/index.d.mts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +233 -203
- package/dist/index.mjs +6 -4
- package/dist/react.d.mts +72 -4
- package/dist/react.d.ts +72 -4
- package/dist/react.js +52 -36
- package/dist/react.mjs +2 -2
- package/dist/{standard-shim-CT49DM5l.d.mts → standard-shim-BTUm7cur.d.mts} +280 -1
- package/dist/{standard-shim-D9guL5fz.d.ts → standard-shim-LsQ97i9T.d.ts} +280 -1
- package/dist/walletconnect-D4JN6H2O.js +28 -0
- package/dist/walletconnect-D4JN6H2O.js.map +1 -0
- package/dist/walletconnect-I3PZUBTA.mjs +3 -0
- package/dist/walletconnect-I3PZUBTA.mjs.map +1 -0
- package/package.json +6 -2
- package/dist/chunk-5HRJKCIL.js.map +0 -1
- package/dist/chunk-DSUCH44G.js.map +0 -1
- package/dist/chunk-I6TJLYNA.js +0 -535
- package/dist/chunk-I6TJLYNA.js.map +0 -1
- package/dist/chunk-J7DHGLW6.mjs.map +0 -1
- package/dist/chunk-JOBLG62A.mjs +0 -476
- package/dist/chunk-JOBLG62A.mjs.map +0 -1
- package/dist/chunk-MAXA3HEP.mjs.map +0 -1
- package/dist/chunk-P5LXUDP6.mjs.map +0 -1
- package/dist/chunk-WDXEP4AJ.js.map +0 -1
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk4KD6HQQG_js = require('./chunk-4KD6HQQG.js');
|
|
4
|
+
var chunk64LV76OK_js = require('./chunk-64LV76OK.js');
|
|
4
5
|
var react = require('react');
|
|
5
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
7
|
var webcryptoEd25519Polyfill = require('@solana/webcrypto-ed25519-polyfill');
|
|
8
|
+
var core = require('@wallet-ui/core');
|
|
7
9
|
var addresses = require('@solana/addresses');
|
|
10
|
+
var v4 = require('zod/v4');
|
|
8
11
|
var codecs = require('@solana/codecs');
|
|
9
12
|
var transactions = require('@solana/transactions');
|
|
10
13
|
|
|
@@ -96,7 +99,7 @@ function toClusterId(network) {
|
|
|
96
99
|
function getDefaultRpcUrl(network) {
|
|
97
100
|
let normalized = normalizeNetwork(network);
|
|
98
101
|
try {
|
|
99
|
-
return
|
|
102
|
+
return chunk64LV76OK_js.getPublicSolanaRpcUrl(normalized);
|
|
100
103
|
} catch {
|
|
101
104
|
return PUBLIC_RPC_ENDPOINTS[normalized] ?? PUBLIC_RPC_ENDPOINTS.localnet;
|
|
102
105
|
}
|
|
@@ -151,14 +154,14 @@ function getClusterExplorerUrl(cluster, path) {
|
|
|
151
154
|
}
|
|
152
155
|
function getTransactionUrl(signature, cluster) {
|
|
153
156
|
let clusterType = getClusterType(cluster), explorerCluster = clusterType === "custom" || clusterType === "localnet" ? "devnet" : clusterType;
|
|
154
|
-
return
|
|
157
|
+
return chunk64LV76OK_js.getExplorerLink({
|
|
155
158
|
transaction: signature,
|
|
156
159
|
cluster: explorerCluster === "mainnet" ? "mainnet" : explorerCluster
|
|
157
160
|
});
|
|
158
161
|
}
|
|
159
162
|
function getAddressUrl(address, cluster) {
|
|
160
163
|
let clusterType = getClusterType(cluster), explorerCluster = clusterType === "custom" || clusterType === "localnet" ? "devnet" : clusterType;
|
|
161
|
-
return
|
|
164
|
+
return chunk64LV76OK_js.getExplorerLink({
|
|
162
165
|
address,
|
|
163
166
|
cluster: explorerCluster === "mainnet" ? "mainnet" : explorerCluster
|
|
164
167
|
});
|
|
@@ -221,9 +224,9 @@ var POLL_INTERVALS_MS = [1e3, 2e3, 3e3, 5e3, 5e3], DEFAULT_MAX_RETRIES = 3, DEFA
|
|
|
221
224
|
// src/lib/core/state-manager.ts
|
|
222
225
|
var StateManager = class {
|
|
223
226
|
constructor(initialState) {
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
+
chunk64LV76OK_js.__publicField(this, "state");
|
|
228
|
+
chunk64LV76OK_js.__publicField(this, "listeners", /* @__PURE__ */ new Set());
|
|
229
|
+
chunk64LV76OK_js.__publicField(this, "notifyTimeout");
|
|
227
230
|
this.state = initialState;
|
|
228
231
|
}
|
|
229
232
|
/**
|
|
@@ -282,10 +285,10 @@ var StateManager = class {
|
|
|
282
285
|
};
|
|
283
286
|
|
|
284
287
|
// src/lib/core/event-emitter.ts
|
|
285
|
-
var logger =
|
|
288
|
+
var logger = chunk64LV76OK_js.createLogger("EventEmitter"), EventEmitter = class {
|
|
286
289
|
constructor(debug = false) {
|
|
287
|
-
|
|
288
|
-
|
|
290
|
+
chunk64LV76OK_js.__publicField(this, "listeners", /* @__PURE__ */ new Set());
|
|
291
|
+
chunk64LV76OK_js.__publicField(this, "debug");
|
|
289
292
|
this.debug = debug;
|
|
290
293
|
}
|
|
291
294
|
/**
|
|
@@ -341,12 +344,12 @@ var logger = chunkDSUCH44G_js.createLogger("EventEmitter"), EventEmitter = class
|
|
|
341
344
|
// src/lib/core/debug-metrics.ts
|
|
342
345
|
var DebugMetrics = class {
|
|
343
346
|
constructor() {
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
347
|
+
chunk64LV76OK_js.__publicField(this, "stateUpdates", 0);
|
|
348
|
+
chunk64LV76OK_js.__publicField(this, "noopUpdates", 0);
|
|
349
|
+
chunk64LV76OK_js.__publicField(this, "updateTimes", []);
|
|
350
|
+
chunk64LV76OK_js.__publicField(this, "lastUpdateTime", 0);
|
|
351
|
+
chunk64LV76OK_js.__publicField(this, "eventListenerCount", 0);
|
|
352
|
+
chunk64LV76OK_js.__publicField(this, "subscriptionCount", 0);
|
|
350
353
|
}
|
|
351
354
|
/**
|
|
352
355
|
* Record a state update attempt
|
|
@@ -386,11 +389,11 @@ var DebugMetrics = class {
|
|
|
386
389
|
// src/lib/core/base-collaborator.ts
|
|
387
390
|
var BaseCollaborator = class {
|
|
388
391
|
constructor(config, loggerPrefix) {
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
this.stateManager = config.stateManager, this.eventEmitter = config.eventEmitter, this.debug = config.debug ?? false, this.logger =
|
|
392
|
+
chunk64LV76OK_js.__publicField(this, "stateManager");
|
|
393
|
+
chunk64LV76OK_js.__publicField(this, "eventEmitter");
|
|
394
|
+
chunk64LV76OK_js.__publicField(this, "debug");
|
|
395
|
+
chunk64LV76OK_js.__publicField(this, "logger");
|
|
396
|
+
this.stateManager = config.stateManager, this.eventEmitter = config.eventEmitter, this.debug = config.debug ?? false, this.logger = chunk64LV76OK_js.createLogger(loggerPrefix);
|
|
394
397
|
}
|
|
395
398
|
/**
|
|
396
399
|
* Log debug message if debug mode is enabled
|
|
@@ -413,7 +416,7 @@ var BaseCollaborator = class {
|
|
|
413
416
|
};
|
|
414
417
|
|
|
415
418
|
// src/lib/wallet/authenticity-verifier.ts
|
|
416
|
-
var logger2 =
|
|
419
|
+
var logger2 = chunk64LV76OK_js.createLogger("WalletAuthenticity"), WalletAuthenticityVerifier = class {
|
|
417
420
|
/**
|
|
418
421
|
* Verify a wallet's authenticity using dynamic heuristics
|
|
419
422
|
*
|
|
@@ -622,8 +625,40 @@ var logger2 = chunkDSUCH44G_js.createLogger("WalletAuthenticity"), WalletAuthent
|
|
|
622
625
|
}
|
|
623
626
|
};
|
|
624
627
|
|
|
628
|
+
// src/lib/wallet/wallet-icon-overrides.ts
|
|
629
|
+
var PHANTOM_ICON = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHJ4PSIxMiIgZmlsbD0iIzk3ODZFNCIvPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF80NF82MTApIj48cGF0aCBkPSJNNS43NjU1IDE1Ljc5N0M1Ljc2NTUgMTcuMjIyIDYuNDk4NzkgMTcuNTUgNy4yNjE0MSAxNy41NUM4Ljg3NDYzIDE3LjU1IDEwLjA4NyAxNi4wODQxIDEwLjgxMDUgMTQuOTI1NkMxMC43MjI1IDE1LjE4MTkgMTAuNjczNiAxNS40MzgyIDEwLjY3MzYgMTUuNjg0MkMxMC42NzM2IDE2LjM2MDkgMTEuMDQ1MiAxNi44NDI3IDExLjc3ODUgMTYuODQyN0MxMi43ODU1IDE2Ljg0MjcgMTMuODYxIDE1LjkyIDE0LjQxODMgMTQuOTI1NkMxNC4zNzkyIDE1LjA2OTIgMTQuMzU5NiAxNS4yMDI0IDE0LjM1OTYgMTUuMzI1NEMxNC4zNTk2IDE1Ljc5NyAxNC42MTM4IDE2LjA5NDMgMTUuMTMyIDE2LjA5NDNDMTYuNzY0OCAxNi4wOTQzIDE4LjQwNzQgMTMuMDcwMSAxOC40MDc0IDEwLjQyNTJDMTguNDA3NCA4LjM2NDU5IDE3LjQxMDEgNi41NTAwNSAxNC45MDcxIDYuNTUwMDVDMTAuNTA3NCA2LjU1MDA1IDUuNzY1NSAxMi4xNjc5IDUuNzY1NSAxNS43OTdaTTEzLjM5MTcgMTAuMTk5NkMxMy4zOTE3IDkuNjg3MDUgMTMuNjY1NCA5LjMyODI1IDE0LjA2NjMgOS4zMjgyNUMxNC40NTc0IDkuMzI4MjUgMTQuNzMxMiA5LjY4NzA1IDE0LjczMTIgMTAuMTk5NkMxNC43MzEyIDEwLjcxMjIgMTQuNDU3NCAxMS4wODEzIDE0LjA2NjMgMTEuMDgxM0MxMy42NjU0IDExLjA4MTMgMTMuMzkxNyAxMC43MTIyIDEzLjM5MTcgMTAuMTk5NlpNMTUuNDg0IDEwLjE5OTZDMTUuNDg0IDkuNjg3MDUgMTUuNzU3OCA5LjMyODI1IDE2LjE1ODYgOS4zMjgyNUMxNi41NDk3IDkuMzI4MjUgMTYuODIzNSA5LjY4NzA1IDE2LjgyMzUgMTAuMTk5NkMxNi44MjM1IDEwLjcxMjIgMTYuNTQ5NyAxMS4wODEzIDE2LjE1ODYgMTEuMDgxM0MxNS43NTc4IDExLjA4MTMgMTUuNDg0IDEwLjcxMjIgMTUuNDg0IDEwLjE5OTZaIiBmaWxsPSIjRkVGREY4Ii8+PC9nPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDBfNDRfNjEwIj48cmVjdCB3aWR0aD0iMTIuNzYiIGhlaWdodD0iMTEiIGZpbGw9IndoaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1LjcwNjQyIDYuNTQ5OTMpIi8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+", SOLFLARE_ICON = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHJ4PSIxMiIgZmlsbD0iI0ZGRUY0NiIvPjxwYXRoIGQ9Ik0xMi4xMjg1IDEyLjUyNjZMMTIuOTU1NiAxMS43Mjc2TDE0LjQ5NzYgMTIuMjMyM0MxNS41MDcgMTIuNTY4NyAxNi4wMTE3IDEzLjE4NTUgMTYuMDExNyAxNC4wNTQ3QzE2LjAxMTcgMTQuNzEzNiAxNS43NTkzIDE1LjE0ODIgMTUuMjU0NyAxNS43MDg5TDE1LjEwMDUgMTUuODc3MUwxNS4xNTY1IDE1LjQ4NDZDMTUuMzgwOCAxNC4wNTQ3IDE0Ljk2MDMgMTMuNDM3OSAxMy41NzI0IDEyLjk4OTJMMTIuMTI4NSAxMi41MjY2Wk0xMC4wNTM3IDcuNjM0MTRMMTQuMjU5MyA5LjAzNkwxMy4zNDgxIDkuOTA1MTdMMTEuMTYxMiA5LjE3NjE5QzEwLjQwNDIgOC45MjM4NSAxMC4xNTE4IDguNTE3MzEgMTAuMDUzNyA3LjY2MjE3VjcuNjM0MTRaTTkuODAxMzUgMTQuNzU1NkwxMC43NTQ2IDEzLjg0NDRMMTIuNTQ5MSAxNC40MzMyQzEzLjQ4ODMgMTQuNzQxNiAxMy44MTA3IDE1LjE0ODIgMTMuNzEyNiAxNi4xNzE1TDkuODAxMzUgMTQuNzU1NlpNOC41OTU3NyAxMC42OTAyQzguNTk1NzcgMTAuNDIzOSA4LjczNTk1IDEwLjE3MTUgOC45NzQyNyA5Ljk2MTIyQzkuMjI2NjEgMTAuMzI1NyA5LjY2MTE4IDEwLjY0ODEgMTAuMzQ4MSAxMC44NzI1TDExLjgzNDEgMTEuMzYzMUwxMS4wMDcgMTIuMTYyMkw5LjU0OTAzIDExLjY4NTVDOC44NzYxNCAxMS40NjEyIDguNTk1NzcgMTEuMTI0OCA4LjU5NTc3IDEwLjY5MDJaTTEyLjk5NzYgMTguMDVDMTYuMDgxNyAxNi4wMDMzIDE3LjczNTkgMTQuNjE1NCAxNy43MzU5IDEyLjkwNTJDMTcuNzM1OSAxMS43Njk2IDE3LjA2MyAxMS4xMzg4IDE1LjU3NzEgMTAuNjQ4MUwxNC40NTU2IDEwLjI2OTZMMTcuNTI1NyA3LjMyNTcyTDE2LjkwODggNi42NjY4NEwxNS45OTc2IDcuNDY1OUwxMS42OTM5IDYuMDUwMDJDMTAuMzYyMSA2LjQ4NDYgOC42Nzk4OCA3Ljc2MDMgOC42Nzk4OCA5LjAzNkM4LjY3OTg4IDkuMTc2MTggOC42OTM5IDkuMzE2MzcgOC43MzU5NSA5LjQ3MDU5QzcuNjI4NDcgMTAuMTAxNCA3LjE3OTg4IDEwLjY5MDIgNy4xNzk4OCAxMS40MTkxQzcuMTc5ODggMTIuMTA2MSA3LjU0NDM2IDEyLjc5MyA4LjcwNzkyIDEzLjE3MTVMOS42MzMxNCAxMy40Nzk5TDYuNDM2ODkgMTYuNTVMNy4wNTM3MSAxNy4yMDg5TDguMDQ5MDQgMTYuMjk3N0wxMi45OTc2IDE4LjA1WiIgZmlsbD0iIzAyMDUwQSIvPjwvc3ZnPg==", BACKPACK_ICON = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHJ4PSIxMiIgZmlsbD0iI0UzM0UzRiIvPjxwYXRoIGQ9Ik0xNS41MTg2IDEzLjkyNzJDMTUuOTgxMSAxMy45MjcyIDE2LjIxMjcgMTMuOTI3MSAxNi4zNTY0IDE0LjA3MDhDMTYuNTAwMiAxNC4yMTQ1IDE2LjUgMTQuNDQ2MiAxNi41IDE0LjkwODdWMTUuNTY0QzE2LjUgMTYuNDg5MyAxNi41MDAyIDE2Ljk1MjIgMTYuMjEyOSAxNy4yMzk3QzE1LjkyNTMgMTcuNTI3MyAxNS40NjE4IDE3LjUyNzggMTQuNTM2MSAxNy41Mjc4SDkuNDYzODdDOC41Mzg0MiAxNy41Mjc4IDguMDc1NjcgMTcuNTI3MSA3Ljc4ODA5IDE3LjIzOTdDNy41MDA1NCAxNi45NTIyIDcuNSAxNi40ODk0IDcuNSAxNS41NjRWMTQuOTA4N0M3LjUgMTQuNDQ2MiA3LjQ5OTgyIDE0LjIxNDUgNy42NDM1NSAxNC4wNzA4QzcuNzg3MyAxMy45MjcxIDguMDE4OTEgMTMuOTI3MiA4LjQ4MTQ1IDEzLjkyNzJIMTUuNTE4NlpNMTIgNi4zNTg4OUMxNi41NjUzIDYuMzU4ODkgMTYuNSA5LjQwMjM4IDE2LjUgMTAuODU4OVYxMi40OTU2QzE2LjQ5OTkgMTIuNzY2NyAxNi4yNzk5IDEyLjk4NjggMTYuMDA4OCAxMi45ODY4SDcuOTkxMjFDNy43MjAxMiAxMi45ODY4IDcuNTAwMDYgMTIuNzY2NyA3LjUgMTIuNDk1NkM3LjUgMTIuNDk1NiA3LjUgMTIuMzE1MyA3LjUgMTAuODU4OUM3LjQ5OTk5IDkuNDAyMzkgNy40MzQ3OCA2LjM1ODkzIDEyIDYuMzU4ODlaTTEyIDcuNTE5MDRDMTEuMjMxOSA3LjUxOTEgMTAuNjA5NCA4LjE0MTU1IDEwLjYwOTQgOC45MDk2N0MxMC42MDk0IDkuNjc3NzggMTEuMjMxOSAxMC4zMDAyIDEyIDEwLjMwMDNDMTIuNzY4MiAxMC4zMDAzIDEzLjM5MDYgOS42Nzc4MiAxMy4zOTA2IDguOTA5NjdDMTMuMzkwNiA4LjE0MTUxIDEyLjc2ODIgNy41MTkwNCAxMiA3LjUxOTA0Wk0xMS45OTkgNC40NzIxN0MxMi45ODQxIDQuNDcyMjIgMTMuODQ2MiA0LjgxNjczIDE0LjA3NDIgNS4zNzc0NEMxNC4xMDg1IDUuNDczODcgMTQuMTI1OCA1LjUyMjIyIDE0LjA5NTcgNS41NTgxMUMxNC4wNjUyIDUuNTk0MDIgMTQuMDA1OCA1LjU4MzQyIDEzLjg4NzcgNS41NjIwMUMxMy41ODIyIDUuNTA2NjUgMTMuMTQ5MyA1LjQ2ODc3IDEyLjc2ODYgNS40NTc1MkMxMi41MjU4IDUuNDQ0NDggMTIuMjY5NSA1LjQzNzk5IDEyIDUuNDM3OTlDMTEuNzMwNSA1LjQzNzk5IDExLjQ3NDIgNS40NDQ0OCAxMS4yMzE0IDUuNDU3NTJDMTAuODQ5IDUuNDY4NzcgMTAuNDE0OSA1LjUwNjU4IDEwLjEwODQgNS41NjAwNkM5Ljk5MzM1IDUuNTgwMTMgOS45MzU2NSA1LjU5MDQ3IDkuOTA1MjcgNS41NTUxOEM5Ljg3NDk3IDUuNTE5MzUgOS44OTEyOCA1LjQ3MTQ0IDkuOTI0OCA1LjM3NjQ2QzEwLjE1MSA0LjgxNzQ4IDExLjAxNDIgNC40NzIxNyAxMS45OTkgNC40NzIxN1oiIGZpbGw9IndoaXRlIi8+PC9zdmc+", WALLET_ICON_OVERRIDES = {
|
|
630
|
+
Phantom: PHANTOM_ICON,
|
|
631
|
+
Solflare: SOLFLARE_ICON,
|
|
632
|
+
Backpack: BACKPACK_ICON
|
|
633
|
+
}, ICON_PROXY_CACHE = /* @__PURE__ */ new WeakMap();
|
|
634
|
+
function getWalletIconOverride(walletName) {
|
|
635
|
+
return WALLET_ICON_OVERRIDES[walletName];
|
|
636
|
+
}
|
|
637
|
+
function createIconProxy(wallet, icon) {
|
|
638
|
+
let cached = ICON_PROXY_CACHE.get(wallet);
|
|
639
|
+
if (cached) return cached;
|
|
640
|
+
let proxy = new Proxy(wallet, {
|
|
641
|
+
get(target, prop) {
|
|
642
|
+
if (prop === "icon") return icon;
|
|
643
|
+
let value = Reflect.get(target, prop, target);
|
|
644
|
+
return typeof value == "function" ? value.bind(target) : value;
|
|
645
|
+
}
|
|
646
|
+
});
|
|
647
|
+
return ICON_PROXY_CACHE.set(wallet, proxy), proxy;
|
|
648
|
+
}
|
|
649
|
+
function applyWalletIconOverride(wallet) {
|
|
650
|
+
let override = getWalletIconOverride(wallet.name);
|
|
651
|
+
if (!override || wallet.icon === override) return wallet;
|
|
652
|
+
if (Object.isExtensible(wallet))
|
|
653
|
+
try {
|
|
654
|
+
return wallet.icon = override, wallet;
|
|
655
|
+
} catch {
|
|
656
|
+
}
|
|
657
|
+
return createIconProxy(wallet, override);
|
|
658
|
+
}
|
|
659
|
+
|
|
625
660
|
// src/lib/wallet/detector.ts
|
|
626
|
-
var logger3 =
|
|
661
|
+
var logger3 = chunk64LV76OK_js.createLogger("WalletDetector");
|
|
627
662
|
function hasFeature(wallet, featureName) {
|
|
628
663
|
return wallet.features != null && wallet.features[featureName] !== void 0;
|
|
629
664
|
}
|
|
@@ -645,7 +680,7 @@ function verifyWalletName(wallet, requestedName) {
|
|
|
645
680
|
var WalletDetector = class extends BaseCollaborator {
|
|
646
681
|
constructor(stateManager, eventEmitter, debug = false) {
|
|
647
682
|
super({ stateManager, eventEmitter, debug }, "WalletDetector");
|
|
648
|
-
|
|
683
|
+
chunk64LV76OK_js.__publicField(this, "unsubscribers", []);
|
|
649
684
|
}
|
|
650
685
|
/**
|
|
651
686
|
* Initialize wallet detection (synchronous)
|
|
@@ -752,9 +787,9 @@ var WalletDetector = class extends BaseCollaborator {
|
|
|
752
787
|
* Convert a Wallet Standard wallet to WalletInfo with capability checks
|
|
753
788
|
*/
|
|
754
789
|
mapToWalletInfo(wallet) {
|
|
755
|
-
let hasConnect = hasFeature(
|
|
790
|
+
let walletWithIcon = applyWalletIconOverride(wallet), hasConnect = hasFeature(walletWithIcon, "standard:connect"), hasDisconnect = hasFeature(walletWithIcon, "standard:disconnect"), isSolana = Array.isArray(walletWithIcon.chains) && walletWithIcon.chains.some((c) => typeof c == "string" && c.includes("solana"));
|
|
756
791
|
return {
|
|
757
|
-
wallet,
|
|
792
|
+
wallet: walletWithIcon,
|
|
758
793
|
installed: true,
|
|
759
794
|
connectable: hasConnect && hasDisconnect && isSolana
|
|
760
795
|
};
|
|
@@ -795,10 +830,13 @@ function getEventsFeature(wallet) {
|
|
|
795
830
|
var ConnectionManager = class extends BaseCollaborator {
|
|
796
831
|
constructor(stateManager, eventEmitter, walletStorage, debug = false) {
|
|
797
832
|
super({ stateManager, eventEmitter, debug }, "ConnectionManager");
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
833
|
+
chunk64LV76OK_js.__publicField(this, "walletStorage");
|
|
834
|
+
chunk64LV76OK_js.__publicField(this, "walletChangeUnsub", null);
|
|
835
|
+
chunk64LV76OK_js.__publicField(this, "pollTimer", null);
|
|
836
|
+
chunk64LV76OK_js.__publicField(this, "pollAttempts", 0);
|
|
837
|
+
chunk64LV76OK_js.__publicField(this, "connectAttemptId", 0);
|
|
838
|
+
chunk64LV76OK_js.__publicField(this, "pendingWallet", null);
|
|
839
|
+
chunk64LV76OK_js.__publicField(this, "pendingWalletName", null);
|
|
802
840
|
this.walletStorage = walletStorage;
|
|
803
841
|
}
|
|
804
842
|
/**
|
|
@@ -806,8 +844,8 @@ var ConnectionManager = class extends BaseCollaborator {
|
|
|
806
844
|
*/
|
|
807
845
|
async connect(wallet, walletName) {
|
|
808
846
|
if (typeof window > "u") return;
|
|
809
|
-
let name = walletName || wallet.name;
|
|
810
|
-
this.eventEmitter.emit({
|
|
847
|
+
let name = walletName || wallet.name, attemptId = ++this.connectAttemptId;
|
|
848
|
+
this.pendingWallet = wallet, this.pendingWalletName = name, this.eventEmitter.emit({
|
|
811
849
|
type: "connecting",
|
|
812
850
|
wallet: name,
|
|
813
851
|
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
@@ -815,7 +853,10 @@ var ConnectionManager = class extends BaseCollaborator {
|
|
|
815
853
|
try {
|
|
816
854
|
let connect = getConnectFeature(wallet);
|
|
817
855
|
if (!connect) throw new Error(`Wallet ${name} does not support standard connect`);
|
|
818
|
-
let result = await connect({ silent: false })
|
|
856
|
+
let result = await connect({ silent: false });
|
|
857
|
+
if (attemptId !== this.connectAttemptId)
|
|
858
|
+
throw new Error("Connection cancelled");
|
|
859
|
+
let walletAccounts = wallet.accounts, accountMap = /* @__PURE__ */ new Map();
|
|
819
860
|
for (let a of [...walletAccounts, ...result.accounts]) accountMap.set(a.address, a);
|
|
820
861
|
let accounts = Array.from(accountMap.values()).map((a) => this.toAccountInfo(a)), state = this.getState(), previouslySelected = state.selectedAccount, previousAddresses = new Set(state.accounts.map((a) => a.address)), selected = accounts.find((a) => !previousAddresses.has(a.address))?.address ?? previouslySelected ?? accounts[0]?.address ?? null;
|
|
821
862
|
this.stateManager.updateState(
|
|
@@ -842,6 +883,8 @@ var ConnectionManager = class extends BaseCollaborator {
|
|
|
842
883
|
accountsCount: accounts.length
|
|
843
884
|
}), this.walletStorage && (!("isAvailable" in this.walletStorage) || typeof this.walletStorage.isAvailable != "function" || this.walletStorage.isAvailable() ? this.walletStorage.set(name) : this.log("Storage not available (private browsing?), skipping wallet persistence")), this.subscribeToWalletEvents();
|
|
844
885
|
} catch (e) {
|
|
886
|
+
if (attemptId !== this.connectAttemptId)
|
|
887
|
+
throw e;
|
|
845
888
|
let errorMessage = e instanceof Error ? e.message : String(e);
|
|
846
889
|
throw this.eventEmitter.emit({
|
|
847
890
|
type: "connection:failed",
|
|
@@ -863,22 +906,21 @@ var ConnectionManager = class extends BaseCollaborator {
|
|
|
863
906
|
},
|
|
864
907
|
true
|
|
865
908
|
), e;
|
|
909
|
+
} finally {
|
|
910
|
+
this.pendingWallet === wallet && this.pendingWalletName === name && (this.pendingWallet = null, this.pendingWalletName = null);
|
|
866
911
|
}
|
|
867
912
|
}
|
|
868
913
|
/**
|
|
869
914
|
* Disconnect from wallet
|
|
870
915
|
*/
|
|
871
916
|
async disconnect() {
|
|
872
|
-
this.walletChangeUnsub && (this.walletChangeUnsub(), this.walletChangeUnsub = null), this.stopPollingWalletAccounts();
|
|
873
|
-
let wallet = this.getState().selectedWallet;
|
|
874
|
-
if (
|
|
875
|
-
let disconnect = getDisconnectFeature(wallet);
|
|
876
|
-
disconnect && await disconnect();
|
|
877
|
-
}
|
|
878
|
-
this.stateManager.updateState(
|
|
917
|
+
this.connectAttemptId++, this.walletChangeUnsub && (this.walletChangeUnsub(), this.walletChangeUnsub = null), this.stopPollingWalletAccounts();
|
|
918
|
+
let wallet = this.getState().selectedWallet ?? this.pendingWallet;
|
|
919
|
+
if (this.pendingWallet = null, this.pendingWalletName = null, this.stateManager.updateState(
|
|
879
920
|
{
|
|
880
921
|
selectedWallet: null,
|
|
881
922
|
connected: false,
|
|
923
|
+
connecting: false,
|
|
882
924
|
accounts: [],
|
|
883
925
|
selectedAccount: null
|
|
884
926
|
},
|
|
@@ -886,7 +928,14 @@ var ConnectionManager = class extends BaseCollaborator {
|
|
|
886
928
|
), this.eventEmitter.emit({
|
|
887
929
|
type: "wallet:disconnected",
|
|
888
930
|
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
889
|
-
}), this.walletStorage && "clear" in this.walletStorage && typeof this.walletStorage.clear == "function" ? this.walletStorage.clear() : this.walletStorage?.set(void 0)
|
|
931
|
+
}), this.walletStorage && "clear" in this.walletStorage && typeof this.walletStorage.clear == "function" ? this.walletStorage.clear() : this.walletStorage?.set(void 0), wallet) {
|
|
932
|
+
let disconnect = getDisconnectFeature(wallet);
|
|
933
|
+
if (disconnect)
|
|
934
|
+
try {
|
|
935
|
+
await disconnect();
|
|
936
|
+
} catch {
|
|
937
|
+
}
|
|
938
|
+
}
|
|
890
939
|
}
|
|
891
940
|
/**
|
|
892
941
|
* Select a different account
|
|
@@ -993,13 +1042,13 @@ var ConnectionManager = class extends BaseCollaborator {
|
|
|
993
1042
|
};
|
|
994
1043
|
|
|
995
1044
|
// src/lib/wallet/auto-connector.ts
|
|
996
|
-
var logger4 =
|
|
1045
|
+
var logger4 = chunk64LV76OK_js.createLogger("AutoConnector"), MIN_ADDRESS_LENGTH = 30, AutoConnector = class {
|
|
997
1046
|
constructor(walletDetector, connectionManager, stateManager, walletStorage, debug = false) {
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1047
|
+
chunk64LV76OK_js.__publicField(this, "walletDetector");
|
|
1048
|
+
chunk64LV76OK_js.__publicField(this, "connectionManager");
|
|
1049
|
+
chunk64LV76OK_js.__publicField(this, "stateManager");
|
|
1050
|
+
chunk64LV76OK_js.__publicField(this, "walletStorage");
|
|
1051
|
+
chunk64LV76OK_js.__publicField(this, "debug");
|
|
1003
1052
|
this.walletDetector = walletDetector, this.connectionManager = connectionManager, this.stateManager = stateManager, this.walletStorage = walletStorage, this.debug = debug;
|
|
1004
1053
|
}
|
|
1005
1054
|
async attemptAutoConnect() {
|
|
@@ -1094,12 +1143,12 @@ var logger4 = chunkDSUCH44G_js.createLogger("AutoConnector"), MIN_ADDRESS_LENGTH
|
|
|
1094
1143
|
],
|
|
1095
1144
|
features,
|
|
1096
1145
|
accounts: []
|
|
1097
|
-
};
|
|
1146
|
+
}, walletWithIcon = applyWalletIconOverride(wallet);
|
|
1098
1147
|
this.stateManager.updateState(
|
|
1099
1148
|
{
|
|
1100
1149
|
wallets: [
|
|
1101
1150
|
{
|
|
1102
|
-
wallet,
|
|
1151
|
+
wallet: walletWithIcon,
|
|
1103
1152
|
installed: true,
|
|
1104
1153
|
connectable: true
|
|
1105
1154
|
}
|
|
@@ -1107,7 +1156,7 @@ var logger4 = chunkDSUCH44G_js.createLogger("AutoConnector"), MIN_ADDRESS_LENGTH
|
|
|
1107
1156
|
},
|
|
1108
1157
|
true
|
|
1109
1158
|
), await ready;
|
|
1110
|
-
let walletsApi = getWalletsRegistry(), registryWallet = walletsApi.get().find((w) => w.name === storedWalletName), walletToUse = registryWallet ||
|
|
1159
|
+
let walletsApi = getWalletsRegistry(), registryWallet = walletsApi.get().find((w) => w.name === storedWalletName), walletToUse = applyWalletIconOverride(registryWallet || walletWithIcon);
|
|
1111
1160
|
return this.debug && logger4.info("Attempting to connect via instant auto-connect", {
|
|
1112
1161
|
walletName: storedWalletName,
|
|
1113
1162
|
usingRegistry: !!registryWallet
|
|
@@ -1153,7 +1202,7 @@ var logger4 = chunkDSUCH44G_js.createLogger("AutoConnector"), MIN_ADDRESS_LENGTH
|
|
|
1153
1202
|
var ClusterManager = class extends BaseCollaborator {
|
|
1154
1203
|
constructor(stateManager, eventEmitter, clusterStorage, config, debug = false) {
|
|
1155
1204
|
super({ stateManager, eventEmitter, debug }, "ClusterManager");
|
|
1156
|
-
|
|
1205
|
+
chunk64LV76OK_js.__publicField(this, "clusterStorage");
|
|
1157
1206
|
if (this.clusterStorage = clusterStorage, config) {
|
|
1158
1207
|
let clusters = config.clusters ?? [], initialClusterId = this.clusterStorage?.get() ?? config.initialCluster ?? "solana:mainnet", initialCluster = clusters.find((c) => c.id === initialClusterId) ?? clusters[0] ?? null;
|
|
1159
1208
|
this.stateManager.updateState({
|
|
@@ -1168,7 +1217,7 @@ var ClusterManager = class extends BaseCollaborator {
|
|
|
1168
1217
|
async setCluster(clusterId) {
|
|
1169
1218
|
let state = this.getState(), previousClusterId = state.cluster?.id || null, cluster = state.clusters.find((c) => c.id === clusterId);
|
|
1170
1219
|
if (!cluster)
|
|
1171
|
-
throw
|
|
1220
|
+
throw chunk64LV76OK_js.Errors.clusterNotFound(
|
|
1172
1221
|
clusterId,
|
|
1173
1222
|
state.clusters.map((c) => c.id)
|
|
1174
1223
|
);
|
|
@@ -1197,9 +1246,9 @@ var ClusterManager = class extends BaseCollaborator {
|
|
|
1197
1246
|
var TransactionTracker = class extends BaseCollaborator {
|
|
1198
1247
|
constructor(stateManager, eventEmitter, maxTransactions = 20, debug = false) {
|
|
1199
1248
|
super({ stateManager, eventEmitter, debug }, "TransactionTracker");
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1249
|
+
chunk64LV76OK_js.__publicField(this, "transactions", []);
|
|
1250
|
+
chunk64LV76OK_js.__publicField(this, "totalTransactions", 0);
|
|
1251
|
+
chunk64LV76OK_js.__publicField(this, "maxTransactions");
|
|
1203
1252
|
this.maxTransactions = maxTransactions;
|
|
1204
1253
|
}
|
|
1205
1254
|
/**
|
|
@@ -1253,10 +1302,10 @@ var TransactionTracker = class extends BaseCollaborator {
|
|
|
1253
1302
|
// src/lib/health/health-monitor.ts
|
|
1254
1303
|
var HealthMonitor = class {
|
|
1255
1304
|
constructor(stateManager, walletStorage, clusterStorage, isInitialized) {
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1305
|
+
chunk64LV76OK_js.__publicField(this, "stateManager");
|
|
1306
|
+
chunk64LV76OK_js.__publicField(this, "walletStorage");
|
|
1307
|
+
chunk64LV76OK_js.__publicField(this, "clusterStorage");
|
|
1308
|
+
chunk64LV76OK_js.__publicField(this, "isInitialized");
|
|
1260
1309
|
this.stateManager = stateManager, this.walletStorage = walletStorage, this.clusterStorage = clusterStorage, this.isInitialized = isInitialized ?? (() => true);
|
|
1261
1310
|
}
|
|
1262
1311
|
/**
|
|
@@ -1308,19 +1357,20 @@ var HealthMonitor = class {
|
|
|
1308
1357
|
};
|
|
1309
1358
|
|
|
1310
1359
|
// src/lib/core/connector-client.ts
|
|
1311
|
-
var logger5 =
|
|
1360
|
+
var logger5 = chunk64LV76OK_js.createLogger("ConnectorClient"), ConnectorClient = class {
|
|
1312
1361
|
constructor(config = {}) {
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1362
|
+
chunk64LV76OK_js.__publicField(this, "stateManager");
|
|
1363
|
+
chunk64LV76OK_js.__publicField(this, "eventEmitter");
|
|
1364
|
+
chunk64LV76OK_js.__publicField(this, "walletDetector");
|
|
1365
|
+
chunk64LV76OK_js.__publicField(this, "connectionManager");
|
|
1366
|
+
chunk64LV76OK_js.__publicField(this, "autoConnector");
|
|
1367
|
+
chunk64LV76OK_js.__publicField(this, "clusterManager");
|
|
1368
|
+
chunk64LV76OK_js.__publicField(this, "transactionTracker");
|
|
1369
|
+
chunk64LV76OK_js.__publicField(this, "debugMetrics");
|
|
1370
|
+
chunk64LV76OK_js.__publicField(this, "healthMonitor");
|
|
1371
|
+
chunk64LV76OK_js.__publicField(this, "initialized", false);
|
|
1372
|
+
chunk64LV76OK_js.__publicField(this, "config");
|
|
1373
|
+
chunk64LV76OK_js.__publicField(this, "walletConnectRegistration", null);
|
|
1324
1374
|
this.config = config;
|
|
1325
1375
|
let initialState = {
|
|
1326
1376
|
wallets: [],
|
|
@@ -1363,8 +1413,10 @@ var logger5 = chunkDSUCH44G_js.createLogger("ConnectorClient"), ConnectorClient
|
|
|
1363
1413
|
}
|
|
1364
1414
|
initialize() {
|
|
1365
1415
|
if (typeof window > "u" || this.initialized) return;
|
|
1366
|
-
let { error } =
|
|
1367
|
-
this.walletDetector.initialize(), this.config.
|
|
1416
|
+
let { error } = chunk4KD6HQQG_js.tryCatchSync(() => {
|
|
1417
|
+
this.walletDetector.initialize(), this.config.walletConnect?.enabled && this.initializeWalletConnect().catch((err) => {
|
|
1418
|
+
this.config.debug && logger5.error("WalletConnect initialization failed", { error: err });
|
|
1419
|
+
}), this.config.autoConnect && setTimeout(() => {
|
|
1368
1420
|
this.autoConnector.attemptAutoConnect().catch((err) => {
|
|
1369
1421
|
this.config.debug && logger5.error("Auto-connect error", { error: err });
|
|
1370
1422
|
});
|
|
@@ -1372,6 +1424,19 @@ var logger5 = chunkDSUCH44G_js.createLogger("ConnectorClient"), ConnectorClient
|
|
|
1372
1424
|
});
|
|
1373
1425
|
error && this.config.debug && logger5.error("Connector initialization failed", { error });
|
|
1374
1426
|
}
|
|
1427
|
+
/**
|
|
1428
|
+
* Initialize WalletConnect integration
|
|
1429
|
+
* Dynamically imports and registers the WalletConnect wallet
|
|
1430
|
+
*/
|
|
1431
|
+
async initializeWalletConnect() {
|
|
1432
|
+
if (this.config.walletConnect?.enabled)
|
|
1433
|
+
try {
|
|
1434
|
+
let { registerWalletConnectWallet } = await import('./walletconnect-D4JN6H2O.js');
|
|
1435
|
+
this.walletConnectRegistration = await registerWalletConnectWallet(this.config.walletConnect), this.config.debug && logger5.info("WalletConnect wallet registered successfully");
|
|
1436
|
+
} catch (error) {
|
|
1437
|
+
this.config.debug && logger5.error("Failed to register WalletConnect wallet", { error });
|
|
1438
|
+
}
|
|
1439
|
+
}
|
|
1375
1440
|
async select(walletName) {
|
|
1376
1441
|
let wallet = this.stateManager.getSnapshot().wallets.find((w) => w.wallet.name === walletName)?.wallet;
|
|
1377
1442
|
if (!wallet) throw new Error(`Wallet ${walletName} not found`);
|
|
@@ -1395,7 +1460,7 @@ var logger5 = chunkDSUCH44G_js.createLogger("ConnectorClient"), ConnectorClient
|
|
|
1395
1460
|
getRpcUrl() {
|
|
1396
1461
|
let cluster = this.clusterManager.getCluster();
|
|
1397
1462
|
if (!cluster) return null;
|
|
1398
|
-
let { data, error } =
|
|
1463
|
+
let { data, error } = chunk4KD6HQQG_js.tryCatchSync(() => getClusterRpcUrl(cluster));
|
|
1399
1464
|
return error ? (this.config.debug && logger5.error("Failed to get RPC URL", { error }), null) : data;
|
|
1400
1465
|
}
|
|
1401
1466
|
subscribe(listener) {
|
|
@@ -1410,7 +1475,7 @@ var logger5 = chunkDSUCH44G_js.createLogger("ConnectorClient"), ConnectorClient
|
|
|
1410
1475
|
for (let key of storageKeys) {
|
|
1411
1476
|
let storage = this.config.storage?.[key];
|
|
1412
1477
|
if (storage && "reset" in storage && typeof storage.reset == "function") {
|
|
1413
|
-
let resetFn = storage.reset, { error } =
|
|
1478
|
+
let resetFn = storage.reset, { error } = chunk4KD6HQQG_js.tryCatchSync(() => resetFn());
|
|
1414
1479
|
error ? this.config.debug && logger5.error("Failed to reset storage", { key, error }) : this.config.debug && logger5.debug("Reset storage", { key });
|
|
1415
1480
|
}
|
|
1416
1481
|
}
|
|
@@ -1464,11 +1529,17 @@ var logger5 = chunkDSUCH44G_js.createLogger("ConnectorClient"), ConnectorClient
|
|
|
1464
1529
|
this.debugMetrics.resetMetrics();
|
|
1465
1530
|
}
|
|
1466
1531
|
destroy() {
|
|
1532
|
+
if (this.walletConnectRegistration)
|
|
1533
|
+
try {
|
|
1534
|
+
this.walletConnectRegistration.unregister(), this.walletConnectRegistration = null;
|
|
1535
|
+
} catch (error) {
|
|
1536
|
+
this.config.debug && logger5.warn("Error unregistering WalletConnect wallet", { error });
|
|
1537
|
+
}
|
|
1467
1538
|
this.connectionManager.disconnect().catch(() => {
|
|
1468
1539
|
}), this.walletDetector.destroy(), this.eventEmitter.offAll(), this.stateManager.clear();
|
|
1469
1540
|
}
|
|
1470
1541
|
};
|
|
1471
|
-
var logger6 =
|
|
1542
|
+
var logger6 = chunk64LV76OK_js.createLogger("ErrorBoundary"), WalletErrorType = /* @__PURE__ */ ((WalletErrorType2) => (WalletErrorType2.CONNECTION_FAILED = "CONNECTION_FAILED", WalletErrorType2.TRANSACTION_FAILED = "TRANSACTION_FAILED", WalletErrorType2.NETWORK_ERROR = "NETWORK_ERROR", WalletErrorType2.WALLET_NOT_FOUND = "WALLET_NOT_FOUND", WalletErrorType2.USER_REJECTED = "USER_REJECTED", WalletErrorType2.INSUFFICIENT_FUNDS = "INSUFFICIENT_FUNDS", WalletErrorType2.UNKNOWN_ERROR = "UNKNOWN_ERROR", WalletErrorType2))(WalletErrorType || {}), ErrorLogger = class {
|
|
1472
1543
|
static log(error, errorInfo, context) {
|
|
1473
1544
|
if (process.env.NODE_ENV === "development" && logger6.error(error.message, {
|
|
1474
1545
|
error,
|
|
@@ -1487,7 +1558,7 @@ var logger6 = chunkDSUCH44G_js.createLogger("ErrorBoundary"), WalletErrorType =
|
|
|
1487
1558
|
}
|
|
1488
1559
|
};
|
|
1489
1560
|
function classifyError(error) {
|
|
1490
|
-
if (
|
|
1561
|
+
if (chunk64LV76OK_js.isConnectorError(error))
|
|
1491
1562
|
return {
|
|
1492
1563
|
...error,
|
|
1493
1564
|
type: {
|
|
@@ -1516,8 +1587,8 @@ function classifyError(error) {
|
|
|
1516
1587
|
var ConnectorErrorBoundary = class extends react.Component {
|
|
1517
1588
|
constructor(props) {
|
|
1518
1589
|
super(props);
|
|
1519
|
-
|
|
1520
|
-
|
|
1590
|
+
chunk64LV76OK_js.__publicField(this, "retryTimeouts", /* @__PURE__ */ new Set());
|
|
1591
|
+
chunk64LV76OK_js.__publicField(this, "retry", () => {
|
|
1521
1592
|
let { maxRetries = 3 } = this.props;
|
|
1522
1593
|
this.state.retryCount >= maxRetries || this.setState((prevState) => ({
|
|
1523
1594
|
hasError: false,
|
|
@@ -1739,7 +1810,7 @@ function withErrorBoundary(Component2, errorBoundaryProps) {
|
|
|
1739
1810
|
let WrappedComponent = (props) => /* @__PURE__ */ jsxRuntime.jsx(ConnectorErrorBoundary, { ...errorBoundaryProps, children: /* @__PURE__ */ jsxRuntime.jsx(Component2, { ...props }) });
|
|
1740
1811
|
return WrappedComponent.displayName = `withErrorBoundary(${Component2.displayName || Component2.name})`, WrappedComponent;
|
|
1741
1812
|
}
|
|
1742
|
-
var logger7 =
|
|
1813
|
+
var logger7 = chunk64LV76OK_js.createLogger("Polyfills"), installed = false;
|
|
1743
1814
|
function installPolyfills() {
|
|
1744
1815
|
if (!(installed || typeof window > "u"))
|
|
1745
1816
|
try {
|
|
@@ -1766,6 +1837,355 @@ function getPolyfillStatus() {
|
|
|
1766
1837
|
environment: typeof window < "u" ? "browser" : "server"
|
|
1767
1838
|
};
|
|
1768
1839
|
}
|
|
1840
|
+
var logger8 = chunk64LV76OK_js.createLogger("EnhancedStorage"), STORAGE_VERSION = "v1", EnhancedStorage = class extends core.Storage {
|
|
1841
|
+
constructor(key, initial, options) {
|
|
1842
|
+
super(key, initial);
|
|
1843
|
+
this.options = options;
|
|
1844
|
+
chunk64LV76OK_js.__publicField(this, "errorHandlers", /* @__PURE__ */ new Set());
|
|
1845
|
+
chunk64LV76OK_js.__publicField(this, "validators", []);
|
|
1846
|
+
chunk64LV76OK_js.__publicField(this, "memoryFallback");
|
|
1847
|
+
this.memoryFallback = initial, options?.onError && this.errorHandlers.add(options.onError), options?.validator && this.validators.push(options.validator);
|
|
1848
|
+
}
|
|
1849
|
+
set(value) {
|
|
1850
|
+
try {
|
|
1851
|
+
return this.validate(value) ? (super.set(value), this.memoryFallback = value, true) : (logger8.warn("Validation failed", { key: this.key }), false);
|
|
1852
|
+
} catch (error) {
|
|
1853
|
+
return this.handleError(error), this.options?.useMemoryFallback ? (this.memoryFallback = value, true) : false;
|
|
1854
|
+
}
|
|
1855
|
+
}
|
|
1856
|
+
get() {
|
|
1857
|
+
try {
|
|
1858
|
+
return super.get();
|
|
1859
|
+
} catch (error) {
|
|
1860
|
+
return this.handleError(error), this.options?.useMemoryFallback ? this.memoryFallback : this.initial;
|
|
1861
|
+
}
|
|
1862
|
+
}
|
|
1863
|
+
validate(value) {
|
|
1864
|
+
return this.validators.every((validator) => validator(value));
|
|
1865
|
+
}
|
|
1866
|
+
addValidator(validator) {
|
|
1867
|
+
return this.validators.push(validator), this;
|
|
1868
|
+
}
|
|
1869
|
+
onError(handler) {
|
|
1870
|
+
return this.errorHandlers.add(handler), this;
|
|
1871
|
+
}
|
|
1872
|
+
transform(transformer) {
|
|
1873
|
+
return transformer(this.get());
|
|
1874
|
+
}
|
|
1875
|
+
reset() {
|
|
1876
|
+
this.set(this.initial);
|
|
1877
|
+
}
|
|
1878
|
+
clear() {
|
|
1879
|
+
try {
|
|
1880
|
+
typeof window < "u" && window.localStorage && window.localStorage.removeItem(this.key), this.reset();
|
|
1881
|
+
} catch (error) {
|
|
1882
|
+
this.handleError(error);
|
|
1883
|
+
}
|
|
1884
|
+
}
|
|
1885
|
+
isAvailable() {
|
|
1886
|
+
try {
|
|
1887
|
+
if (typeof window > "u") return false;
|
|
1888
|
+
let testKey = `__storage_test_${this.key}__`;
|
|
1889
|
+
return window.localStorage.setItem(testKey, "test"), window.localStorage.removeItem(testKey), true;
|
|
1890
|
+
} catch {
|
|
1891
|
+
return false;
|
|
1892
|
+
}
|
|
1893
|
+
}
|
|
1894
|
+
static migrate(oldKey, newStorage) {
|
|
1895
|
+
try {
|
|
1896
|
+
if (typeof window > "u") return false;
|
|
1897
|
+
let oldValue = window.localStorage.getItem(oldKey);
|
|
1898
|
+
if (oldValue) {
|
|
1899
|
+
let parsed = JSON.parse(oldValue);
|
|
1900
|
+
return newStorage.set(parsed), window.localStorage.removeItem(oldKey), true;
|
|
1901
|
+
}
|
|
1902
|
+
return false;
|
|
1903
|
+
} catch {
|
|
1904
|
+
return false;
|
|
1905
|
+
}
|
|
1906
|
+
}
|
|
1907
|
+
handleError(error) {
|
|
1908
|
+
logger8.error("Storage error", { key: this.key, error }), this.errorHandlers.forEach((handler) => {
|
|
1909
|
+
try {
|
|
1910
|
+
handler(error);
|
|
1911
|
+
} catch (err) {
|
|
1912
|
+
logger8.error("Error in error handler", { error: err });
|
|
1913
|
+
}
|
|
1914
|
+
});
|
|
1915
|
+
}
|
|
1916
|
+
};
|
|
1917
|
+
function createEnhancedStorageAccount(options) {
|
|
1918
|
+
let key = options?.key ?? `connector-kit:${STORAGE_VERSION}:account`;
|
|
1919
|
+
return new EnhancedStorage(key, options?.initial, {
|
|
1920
|
+
validator: options?.validator,
|
|
1921
|
+
onError: options?.onError,
|
|
1922
|
+
useMemoryFallback: true
|
|
1923
|
+
// Always fallback for SSR
|
|
1924
|
+
});
|
|
1925
|
+
}
|
|
1926
|
+
function createEnhancedStorageCluster(options) {
|
|
1927
|
+
let key = options?.key ?? `connector-kit:${STORAGE_VERSION}:cluster`, storage = new EnhancedStorage(key, options?.initial ?? "solana:mainnet", {
|
|
1928
|
+
onError: options?.onError,
|
|
1929
|
+
useMemoryFallback: true
|
|
1930
|
+
});
|
|
1931
|
+
return options?.validClusters && storage.addValidator((clusterId) => options.validClusters.includes(clusterId)), storage;
|
|
1932
|
+
}
|
|
1933
|
+
function createEnhancedStorageWallet(options) {
|
|
1934
|
+
let key = options?.key ?? `connector-kit:${STORAGE_VERSION}:wallet`;
|
|
1935
|
+
return new EnhancedStorage(key, options?.initial, {
|
|
1936
|
+
onError: options?.onError,
|
|
1937
|
+
useMemoryFallback: true
|
|
1938
|
+
});
|
|
1939
|
+
}
|
|
1940
|
+
var EnhancedStorageAdapter = class {
|
|
1941
|
+
constructor(storage) {
|
|
1942
|
+
this.storage = storage;
|
|
1943
|
+
}
|
|
1944
|
+
get() {
|
|
1945
|
+
return this.storage.get();
|
|
1946
|
+
}
|
|
1947
|
+
set(value) {
|
|
1948
|
+
this.storage.set(value);
|
|
1949
|
+
}
|
|
1950
|
+
subscribe(callback) {
|
|
1951
|
+
return this.storage.value.subscribe(callback);
|
|
1952
|
+
}
|
|
1953
|
+
validate(value) {
|
|
1954
|
+
return this.storage.validate(value);
|
|
1955
|
+
}
|
|
1956
|
+
reset() {
|
|
1957
|
+
this.storage.reset();
|
|
1958
|
+
}
|
|
1959
|
+
clear() {
|
|
1960
|
+
this.storage.clear();
|
|
1961
|
+
}
|
|
1962
|
+
isAvailable() {
|
|
1963
|
+
return this.storage.isAvailable();
|
|
1964
|
+
}
|
|
1965
|
+
transform(transformer) {
|
|
1966
|
+
return this.storage.transform(transformer);
|
|
1967
|
+
}
|
|
1968
|
+
addValidator(validator) {
|
|
1969
|
+
return this.storage.addValidator(validator), this;
|
|
1970
|
+
}
|
|
1971
|
+
onError(handler) {
|
|
1972
|
+
return this.storage.onError(handler), this;
|
|
1973
|
+
}
|
|
1974
|
+
};
|
|
1975
|
+
var logger9 = chunk64LV76OK_js.createLogger("DefaultConfig");
|
|
1976
|
+
function getDefaultConfig(options) {
|
|
1977
|
+
let {
|
|
1978
|
+
appName,
|
|
1979
|
+
appUrl,
|
|
1980
|
+
autoConnect = true,
|
|
1981
|
+
debug,
|
|
1982
|
+
network = "mainnet-beta",
|
|
1983
|
+
enableMobile = true,
|
|
1984
|
+
storage,
|
|
1985
|
+
clusters,
|
|
1986
|
+
customClusters = [],
|
|
1987
|
+
persistClusterSelection = true,
|
|
1988
|
+
clusterStorageKey,
|
|
1989
|
+
enableErrorBoundary = true,
|
|
1990
|
+
maxRetries = DEFAULT_MAX_RETRIES,
|
|
1991
|
+
onError,
|
|
1992
|
+
imageProxy,
|
|
1993
|
+
programLabels,
|
|
1994
|
+
coingecko,
|
|
1995
|
+
walletConnect
|
|
1996
|
+
} = options, defaultClusters = clusters ?? [
|
|
1997
|
+
core.createSolanaMainnet(),
|
|
1998
|
+
core.createSolanaDevnet(),
|
|
1999
|
+
core.createSolanaTestnet(),
|
|
2000
|
+
...network === "localnet" ? [core.createSolanaLocalnet()] : [],
|
|
2001
|
+
...customClusters || []
|
|
2002
|
+
], validClusterIds = defaultClusters.map((c) => c.id), accountStorage = createEnhancedStorageAccount({
|
|
2003
|
+
validator: (address) => address ? addresses.isAddress(address) : true,
|
|
2004
|
+
onError: (error) => {
|
|
2005
|
+
debug && logger9.error("Account Storage error", { error }), onError && onError(error, {
|
|
2006
|
+
componentStack: "account-storage"
|
|
2007
|
+
});
|
|
2008
|
+
}
|
|
2009
|
+
}), clusterStorage = createEnhancedStorageCluster({
|
|
2010
|
+
key: clusterStorageKey,
|
|
2011
|
+
initial: getInitialCluster(network),
|
|
2012
|
+
validClusters: persistClusterSelection ? validClusterIds : void 0,
|
|
2013
|
+
onError: (error) => {
|
|
2014
|
+
debug && logger9.error("Cluster Storage error", { error }), onError && onError(error, {
|
|
2015
|
+
componentStack: "cluster-storage"
|
|
2016
|
+
});
|
|
2017
|
+
}
|
|
2018
|
+
}), walletStorage = createEnhancedStorageWallet({
|
|
2019
|
+
onError: (error) => {
|
|
2020
|
+
debug && logger9.error("Wallet Storage error", { error }), onError && onError(error, {
|
|
2021
|
+
componentStack: "wallet-storage"
|
|
2022
|
+
});
|
|
2023
|
+
}
|
|
2024
|
+
});
|
|
2025
|
+
if (typeof window < "u") {
|
|
2026
|
+
let oldAccountKey = "connector-kit:account", oldWalletKey = "connector-kit:wallet", oldClusterKey = clusterStorageKey || "connector-kit:cluster";
|
|
2027
|
+
EnhancedStorage.migrate(oldAccountKey, accountStorage), EnhancedStorage.migrate(oldWalletKey, walletStorage), EnhancedStorage.migrate(oldClusterKey, clusterStorage);
|
|
2028
|
+
}
|
|
2029
|
+
let defaultStorage = storage ?? {
|
|
2030
|
+
account: new EnhancedStorageAdapter(accountStorage),
|
|
2031
|
+
cluster: new EnhancedStorageAdapter(clusterStorage),
|
|
2032
|
+
wallet: new EnhancedStorageAdapter(walletStorage)
|
|
2033
|
+
}, walletConnectConfig = buildWalletConnectConfig(walletConnect, appName, appUrl, clusterStorageKey ?? "connector-kit:v1:cluster");
|
|
2034
|
+
return {
|
|
2035
|
+
autoConnect,
|
|
2036
|
+
debug: debug ?? process.env.NODE_ENV === "development",
|
|
2037
|
+
storage: defaultStorage,
|
|
2038
|
+
appName,
|
|
2039
|
+
appUrl,
|
|
2040
|
+
enableMobile,
|
|
2041
|
+
network,
|
|
2042
|
+
cluster: {
|
|
2043
|
+
clusters: defaultClusters,
|
|
2044
|
+
persistSelection: persistClusterSelection,
|
|
2045
|
+
initialCluster: getInitialCluster(network)
|
|
2046
|
+
},
|
|
2047
|
+
errorBoundary: {
|
|
2048
|
+
enabled: enableErrorBoundary,
|
|
2049
|
+
maxRetries,
|
|
2050
|
+
onError
|
|
2051
|
+
},
|
|
2052
|
+
imageProxy,
|
|
2053
|
+
programLabels,
|
|
2054
|
+
coingecko,
|
|
2055
|
+
walletConnect: walletConnectConfig
|
|
2056
|
+
};
|
|
2057
|
+
}
|
|
2058
|
+
function buildWalletConnectConfig(walletConnect, appName, appUrl, clusterStorageKey) {
|
|
2059
|
+
if (!walletConnect) return;
|
|
2060
|
+
let configProjectId = typeof walletConnect == "object" ? walletConnect.projectId : void 0, envProjectId = typeof process < "u" ? process.env.NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID : void 0, projectId = configProjectId || envProjectId;
|
|
2061
|
+
if (!projectId) {
|
|
2062
|
+
(typeof walletConnect == "object" || walletConnect === true) && logger9.warn("WalletConnect enabled but no project ID found. Set NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID or provide projectId in config.");
|
|
2063
|
+
return;
|
|
2064
|
+
}
|
|
2065
|
+
let origin = appUrl || (typeof window < "u" ? window.location.origin : "http://localhost:3000"), customMetadata = typeof walletConnect == "object" ? walletConnect.metadata : void 0, customDefaultChain = typeof walletConnect == "object" ? walletConnect.defaultChain : void 0, customRelayUrl = typeof walletConnect == "object" ? walletConnect.relayUrl : void 0;
|
|
2066
|
+
return {
|
|
2067
|
+
enabled: true,
|
|
2068
|
+
projectId,
|
|
2069
|
+
metadata: {
|
|
2070
|
+
name: customMetadata?.name ?? appName,
|
|
2071
|
+
description: customMetadata?.description ?? `${appName} - Powered by ConnectorKit`,
|
|
2072
|
+
url: customMetadata?.url ?? origin,
|
|
2073
|
+
icons: customMetadata?.icons ?? [`${origin}/icon.svg`]
|
|
2074
|
+
},
|
|
2075
|
+
defaultChain: customDefaultChain ?? "solana:mainnet",
|
|
2076
|
+
relayUrl: customRelayUrl,
|
|
2077
|
+
// Auto-sync with cluster storage
|
|
2078
|
+
getCurrentChain: () => {
|
|
2079
|
+
if (typeof window > "u") return "solana:mainnet";
|
|
2080
|
+
let storageKey = clusterStorageKey || "connector-kit:v1:cluster";
|
|
2081
|
+
try {
|
|
2082
|
+
let stored = localStorage.getItem(storageKey);
|
|
2083
|
+
if (stored) {
|
|
2084
|
+
let id = JSON.parse(stored);
|
|
2085
|
+
if (id === "solana:mainnet" || id === "solana:devnet" || id === "solana:testnet")
|
|
2086
|
+
return id;
|
|
2087
|
+
}
|
|
2088
|
+
} catch {
|
|
2089
|
+
}
|
|
2090
|
+
return customDefaultChain ?? "solana:mainnet";
|
|
2091
|
+
}
|
|
2092
|
+
// Note: onDisplayUri, onSessionEstablished, onSessionDisconnected are auto-wired by AppProvider
|
|
2093
|
+
};
|
|
2094
|
+
}
|
|
2095
|
+
function getInitialCluster(network = "mainnet-beta") {
|
|
2096
|
+
return toClusterId(network);
|
|
2097
|
+
}
|
|
2098
|
+
function getDefaultMobileConfig(options) {
|
|
2099
|
+
let baseUrl = options.appUrl || (typeof window < "u" ? window.location.origin : "https://localhost:3000");
|
|
2100
|
+
return {
|
|
2101
|
+
appIdentity: {
|
|
2102
|
+
name: options.appName,
|
|
2103
|
+
uri: baseUrl,
|
|
2104
|
+
icon: `${baseUrl}/favicon.ico`
|
|
2105
|
+
},
|
|
2106
|
+
cluster: options.network || "mainnet-beta"
|
|
2107
|
+
};
|
|
2108
|
+
}
|
|
2109
|
+
var solanaNetworkSchema = v4.z.enum(["mainnet", "mainnet-beta", "devnet", "testnet", "localnet"]), solanaClusterIdSchema = v4.z.string().regex(/^solana:(mainnet|devnet|testnet|localnet|[a-zA-Z0-9-]+)$/, {
|
|
2110
|
+
message: 'Cluster ID must be in format "solana:<network>" (e.g., "solana:mainnet")'
|
|
2111
|
+
}), urlSchema = v4.z.string().url("Invalid URL format"), optionalUrlSchema = urlSchema.optional(), coinGeckoConfigSchema = v4.z.strictObject({
|
|
2112
|
+
apiKey: v4.z.string().optional(),
|
|
2113
|
+
isPro: v4.z.boolean().optional(),
|
|
2114
|
+
maxRetries: v4.z.number().int().positive().max(10).optional(),
|
|
2115
|
+
baseDelay: v4.z.number().int().positive().max(3e4).optional(),
|
|
2116
|
+
maxTimeout: v4.z.number().int().positive().max(12e4).optional()
|
|
2117
|
+
}).optional(), walletConnectMetadataSchema = v4.z.object({
|
|
2118
|
+
name: v4.z.string().min(1, "WalletConnect app name is required"),
|
|
2119
|
+
description: v4.z.string(),
|
|
2120
|
+
url: urlSchema,
|
|
2121
|
+
icons: v4.z.array(v4.z.string())
|
|
2122
|
+
}), walletConnectObjectConfigSchema = v4.z.object({
|
|
2123
|
+
enabled: v4.z.boolean().optional(),
|
|
2124
|
+
projectId: v4.z.string().min(1, "WalletConnect projectId is required"),
|
|
2125
|
+
metadata: walletConnectMetadataSchema,
|
|
2126
|
+
defaultChain: v4.z.enum(["solana:mainnet", "solana:devnet", "solana:testnet"]).optional(),
|
|
2127
|
+
onDisplayUri: v4.z.custom((val) => typeof val == "function").optional(),
|
|
2128
|
+
onSessionEstablished: v4.z.custom((val) => typeof val == "function").optional(),
|
|
2129
|
+
onSessionDisconnected: v4.z.custom((val) => typeof val == "function").optional(),
|
|
2130
|
+
relayUrl: urlSchema.optional()
|
|
2131
|
+
}), walletConnectConfigSchema = v4.z.union([v4.z.literal(true), walletConnectObjectConfigSchema]).optional(), storageAdapterSchema = v4.z.looseObject({
|
|
2132
|
+
get: v4.z.custom((val) => typeof val == "function"),
|
|
2133
|
+
set: v4.z.custom((val) => typeof val == "function")
|
|
2134
|
+
}), storageConfigSchema = v4.z.object({
|
|
2135
|
+
account: storageAdapterSchema,
|
|
2136
|
+
cluster: storageAdapterSchema,
|
|
2137
|
+
wallet: storageAdapterSchema
|
|
2138
|
+
}).optional(), solanaClusterSchema = v4.z.object({
|
|
2139
|
+
id: solanaClusterIdSchema,
|
|
2140
|
+
label: v4.z.string().min(1, "Cluster label cannot be empty"),
|
|
2141
|
+
url: urlSchema,
|
|
2142
|
+
urlWs: urlSchema.optional()
|
|
2143
|
+
}), clusterConfigSchema = v4.z.object({
|
|
2144
|
+
clusters: v4.z.array(solanaClusterSchema).optional(),
|
|
2145
|
+
persistSelection: v4.z.boolean().optional(),
|
|
2146
|
+
initialCluster: solanaClusterIdSchema.optional()
|
|
2147
|
+
}).optional(), defaultConfigOptionsSchema = v4.z.object({
|
|
2148
|
+
// Required
|
|
2149
|
+
appName: v4.z.string().min(1, "Application name is required"),
|
|
2150
|
+
// Optional strings
|
|
2151
|
+
appUrl: optionalUrlSchema,
|
|
2152
|
+
imageProxy: v4.z.string().optional(),
|
|
2153
|
+
clusterStorageKey: v4.z.string().optional(),
|
|
2154
|
+
// Optional booleans
|
|
2155
|
+
autoConnect: v4.z.boolean().optional(),
|
|
2156
|
+
debug: v4.z.boolean().optional(),
|
|
2157
|
+
enableMobile: v4.z.boolean().optional(),
|
|
2158
|
+
persistClusterSelection: v4.z.boolean().optional(),
|
|
2159
|
+
enableErrorBoundary: v4.z.boolean().optional(),
|
|
2160
|
+
// Network
|
|
2161
|
+
network: solanaNetworkSchema.optional(),
|
|
2162
|
+
// Numbers
|
|
2163
|
+
maxRetries: v4.z.number().int().positive().max(10).optional(),
|
|
2164
|
+
// Complex types
|
|
2165
|
+
storage: storageConfigSchema,
|
|
2166
|
+
clusters: v4.z.array(solanaClusterSchema).optional(),
|
|
2167
|
+
customClusters: v4.z.array(solanaClusterSchema).optional(),
|
|
2168
|
+
programLabels: v4.z.record(v4.z.string(), v4.z.string()).optional(),
|
|
2169
|
+
coingecko: coinGeckoConfigSchema,
|
|
2170
|
+
walletConnect: walletConnectConfigSchema,
|
|
2171
|
+
// Functions (can't validate implementation, just existence)
|
|
2172
|
+
onError: v4.z.custom((val) => typeof val == "function").optional()
|
|
2173
|
+
}); v4.z.strictObject({
|
|
2174
|
+
autoConnect: v4.z.boolean().optional(),
|
|
2175
|
+
debug: v4.z.boolean().optional(),
|
|
2176
|
+
storage: storageConfigSchema,
|
|
2177
|
+
cluster: clusterConfigSchema,
|
|
2178
|
+
imageProxy: v4.z.string().optional(),
|
|
2179
|
+
programLabels: v4.z.record(v4.z.string(), v4.z.string()).optional(),
|
|
2180
|
+
coingecko: coinGeckoConfigSchema,
|
|
2181
|
+
walletConnect: walletConnectConfigSchema
|
|
2182
|
+
}).optional();
|
|
2183
|
+
function validateConfigOptions(options) {
|
|
2184
|
+
return defaultConfigOptionsSchema.safeParse(options);
|
|
2185
|
+
}
|
|
2186
|
+
function parseConfigOptions(options) {
|
|
2187
|
+
return defaultConfigOptionsSchema.parse(options);
|
|
2188
|
+
}
|
|
1769
2189
|
|
|
1770
2190
|
// src/utils/formatting.ts
|
|
1771
2191
|
function formatAddress(address, options = {}) {
|
|
@@ -1977,7 +2397,7 @@ async function copySignatureToClipboard(signature, options) {
|
|
|
1977
2397
|
}
|
|
1978
2398
|
|
|
1979
2399
|
// src/lib/transaction/transaction-validator.ts
|
|
1980
|
-
var
|
|
2400
|
+
var logger10 = chunk64LV76OK_js.createLogger("TransactionValidator"), MAX_TRANSACTION_SIZE = 1232, MIN_TRANSACTION_SIZE = 64, TransactionValidator = class {
|
|
1981
2401
|
/**
|
|
1982
2402
|
* Validate a transaction before signing
|
|
1983
2403
|
*
|
|
@@ -2000,7 +2420,7 @@ var logger8 = chunkDSUCH44G_js.createLogger("TransactionValidator"), MAX_TRANSAC
|
|
|
2000
2420
|
try {
|
|
2001
2421
|
serialized = transaction.serialize();
|
|
2002
2422
|
} catch (serializeError) {
|
|
2003
|
-
|
|
2423
|
+
logger10.debug("Transaction not yet serializable (may need signing)", {
|
|
2004
2424
|
error: serializeError instanceof Error ? serializeError.message : String(serializeError)
|
|
2005
2425
|
});
|
|
2006
2426
|
}
|
|
@@ -2010,10 +2430,10 @@ var logger8 = chunkDSUCH44G_js.createLogger("TransactionValidator"), MAX_TRANSAC
|
|
|
2010
2430
|
return errors.push(
|
|
2011
2431
|
"Transaction type not recognized - must be a Transaction object with serialize() or Uint8Array"
|
|
2012
2432
|
), { valid: false, errors, warnings };
|
|
2013
|
-
serialized && (size = serialized.length, size > maxSize && (errors.push(`Transaction too large: ${size} bytes (max ${maxSize} bytes)`),
|
|
2433
|
+
serialized && (size = serialized.length, size > maxSize && (errors.push(`Transaction too large: ${size} bytes (max ${maxSize} bytes)`), logger10.warn("Transaction exceeds maximum size", { size, maxSize })), size < minSize && warnings.push(`Transaction is very small: ${size} bytes (min recommended ${minSize} bytes)`), size === 0 && errors.push("Transaction is empty (0 bytes)"), this.hasSuspiciousPattern(serialized) && warnings.push("Transaction contains unusual patterns - please review carefully"));
|
|
2014
2434
|
} catch (error) {
|
|
2015
2435
|
let errorMessage = error instanceof Error ? error.message : String(error);
|
|
2016
|
-
errors.push(`Transaction validation failed: ${errorMessage}`),
|
|
2436
|
+
errors.push(`Transaction validation failed: ${errorMessage}`), logger10.error("Validation error", { error: errorMessage });
|
|
2017
2437
|
}
|
|
2018
2438
|
if (checkDuplicateSignatures && typeof transaction == "object" && "signatures" in transaction) {
|
|
2019
2439
|
let signatures = transaction.signatures;
|
|
@@ -2026,7 +2446,7 @@ var logger8 = chunkDSUCH44G_js.createLogger("TransactionValidator"), MAX_TRANSAC
|
|
|
2026
2446
|
}
|
|
2027
2447
|
strict && warnings.length > 0 && (errors.push(...warnings.map((w) => `Strict mode: ${w}`)), warnings.length = 0);
|
|
2028
2448
|
let valid = errors.length === 0;
|
|
2029
|
-
return valid ? warnings.length > 0 ?
|
|
2449
|
+
return valid ? warnings.length > 0 ? logger10.debug("Transaction validation passed with warnings", { warnings, size }) : logger10.debug("Transaction validation passed", { size }) : logger10.warn("Transaction validation failed", { errors, size }), {
|
|
2030
2450
|
valid,
|
|
2031
2451
|
errors,
|
|
2032
2452
|
warnings,
|
|
@@ -2066,7 +2486,7 @@ var logger8 = chunkDSUCH44G_js.createLogger("TransactionValidator"), MAX_TRANSAC
|
|
|
2066
2486
|
let result = this.validate(transaction, options);
|
|
2067
2487
|
if (!result.valid)
|
|
2068
2488
|
throw new Error(`Transaction validation failed: ${result.errors.join(", ")}`);
|
|
2069
|
-
result.warnings.length > 0 &&
|
|
2489
|
+
result.warnings.length > 0 && logger10.warn("Transaction validation warnings", { warnings: result.warnings });
|
|
2070
2490
|
}
|
|
2071
2491
|
/**
|
|
2072
2492
|
* Batch validate multiple transactions
|
|
@@ -2077,10 +2497,10 @@ var logger8 = chunkDSUCH44G_js.createLogger("TransactionValidator"), MAX_TRANSAC
|
|
|
2077
2497
|
* @returns Array of validation results
|
|
2078
2498
|
*/
|
|
2079
2499
|
static validateBatch(transactions, options) {
|
|
2080
|
-
return transactions.map((tx, index) => (
|
|
2500
|
+
return transactions.map((tx, index) => (logger10.debug(`Validating transaction ${index + 1}/${transactions.length}`), this.validate(tx, options)));
|
|
2081
2501
|
}
|
|
2082
2502
|
};
|
|
2083
|
-
var
|
|
2503
|
+
var logger11 = chunk64LV76OK_js.createLogger("TransactionSigner");
|
|
2084
2504
|
function signatureBytesToBase58(bytes) {
|
|
2085
2505
|
if (bytes.length !== 64)
|
|
2086
2506
|
throw new Error(`Invalid signature length: expected 64 bytes, got ${bytes.length}`);
|
|
@@ -2115,14 +2535,14 @@ function createTransactionSigner(config) {
|
|
|
2115
2535
|
address,
|
|
2116
2536
|
async signTransaction(transaction) {
|
|
2117
2537
|
if (!capabilities.canSign)
|
|
2118
|
-
throw
|
|
2538
|
+
throw chunk64LV76OK_js.Errors.featureNotSupported("transaction signing");
|
|
2119
2539
|
let validation = TransactionValidator.validate(transaction);
|
|
2120
2540
|
if (!validation.valid)
|
|
2121
|
-
throw
|
|
2122
|
-
validation.warnings.length > 0 &&
|
|
2541
|
+
throw logger11.error("Transaction validation failed", { errors: validation.errors }), chunk64LV76OK_js.Errors.invalidTransaction(validation.errors.join(", "));
|
|
2542
|
+
validation.warnings.length > 0 && logger11.warn("Transaction validation warnings", { warnings: validation.warnings });
|
|
2123
2543
|
try {
|
|
2124
|
-
let signFeature = features["solana:signTransaction"], { serialized, wasWeb3js } =
|
|
2125
|
-
|
|
2544
|
+
let signFeature = features["solana:signTransaction"], { serialized, wasWeb3js } = chunk4KD6HQQG_js.prepareTransactionForWallet(transaction);
|
|
2545
|
+
logger11.debug("Signing transaction", {
|
|
2126
2546
|
wasWeb3js,
|
|
2127
2547
|
serializedLength: serialized.length,
|
|
2128
2548
|
serializedType: serialized.constructor.name,
|
|
@@ -2131,26 +2551,26 @@ function createTransactionSigner(config) {
|
|
|
2131
2551
|
});
|
|
2132
2552
|
let result, usedFormat = "";
|
|
2133
2553
|
try {
|
|
2134
|
-
|
|
2554
|
+
logger11.debug("Trying array format: transactions: [Uint8Array]"), result = await signFeature.signTransaction({
|
|
2135
2555
|
account,
|
|
2136
2556
|
transactions: [serialized],
|
|
2137
2557
|
...cluster ? { chain: cluster.id } : {}
|
|
2138
2558
|
}), usedFormat = "array";
|
|
2139
2559
|
} catch (err1) {
|
|
2140
2560
|
let error1 = err1 instanceof Error ? err1 : new Error(String(err1));
|
|
2141
|
-
|
|
2561
|
+
logger11.debug("Array format failed, trying singular format", { error: error1.message });
|
|
2142
2562
|
try {
|
|
2143
|
-
|
|
2563
|
+
logger11.debug("Trying singular format: transaction: Uint8Array"), result = await signFeature.signTransaction({
|
|
2144
2564
|
account,
|
|
2145
2565
|
transaction: serialized,
|
|
2146
2566
|
...cluster ? { chain: cluster.id } : {}
|
|
2147
2567
|
}), usedFormat = "singular";
|
|
2148
2568
|
} catch (err2) {
|
|
2149
2569
|
let error2 = err2 instanceof Error ? err2 : new Error(String(err2));
|
|
2150
|
-
throw
|
|
2570
|
+
throw logger11.error("Both array and singular formats failed", { error: error2.message }), error2;
|
|
2151
2571
|
}
|
|
2152
2572
|
}
|
|
2153
|
-
|
|
2573
|
+
logger11.debug("Wallet signed successfully", { format: usedFormat });
|
|
2154
2574
|
let signedTx;
|
|
2155
2575
|
if (Array.isArray(result.signedTransactions) && result.signedTransactions[0])
|
|
2156
2576
|
signedTx = result.signedTransactions[0];
|
|
@@ -2162,31 +2582,31 @@ function createTransactionSigner(config) {
|
|
|
2162
2582
|
signedTx = result;
|
|
2163
2583
|
else
|
|
2164
2584
|
throw new Error(`Unexpected wallet response format: ${JSON.stringify(Object.keys(result))}`);
|
|
2165
|
-
if (
|
|
2585
|
+
if (logger11.debug("Extracted signed transaction", {
|
|
2166
2586
|
hasSignedTx: !!signedTx,
|
|
2167
2587
|
signedTxType: signedTx?.constructor?.name,
|
|
2168
2588
|
signedTxLength: signedTx?.length,
|
|
2169
2589
|
isUint8Array: signedTx instanceof Uint8Array,
|
|
2170
2590
|
hasSerialize: typeof signedTx?.serialize == "function"
|
|
2171
2591
|
}), signedTx && typeof signedTx.serialize == "function")
|
|
2172
|
-
return
|
|
2592
|
+
return logger11.debug("Wallet returned web3.js object directly, no conversion needed"), signedTx;
|
|
2173
2593
|
if (signedTx && signedTx.signedTransaction) {
|
|
2174
|
-
|
|
2594
|
+
logger11.debug("Found signedTransaction property");
|
|
2175
2595
|
let bytes = signedTx.signedTransaction;
|
|
2176
2596
|
if (bytes instanceof Uint8Array)
|
|
2177
|
-
return await
|
|
2597
|
+
return await chunk4KD6HQQG_js.convertSignedTransaction(bytes, wasWeb3js);
|
|
2178
2598
|
}
|
|
2179
2599
|
if (signedTx instanceof Uint8Array)
|
|
2180
|
-
return await
|
|
2181
|
-
throw
|
|
2600
|
+
return await chunk4KD6HQQG_js.convertSignedTransaction(signedTx, wasWeb3js);
|
|
2601
|
+
throw logger11.error("Unexpected wallet response format", {
|
|
2182
2602
|
type: typeof signedTx,
|
|
2183
2603
|
constructor: signedTx?.constructor?.name
|
|
2184
|
-
}), new
|
|
2604
|
+
}), new chunk64LV76OK_js.ValidationError(
|
|
2185
2605
|
"INVALID_FORMAT",
|
|
2186
2606
|
"Wallet returned unexpected format - not a Transaction or Uint8Array"
|
|
2187
2607
|
);
|
|
2188
2608
|
} catch (error) {
|
|
2189
|
-
throw
|
|
2609
|
+
throw chunk64LV76OK_js.Errors.signingFailed(error);
|
|
2190
2610
|
}
|
|
2191
2611
|
},
|
|
2192
2612
|
async signAllTransactions(transactions) {
|
|
@@ -2194,18 +2614,24 @@ function createTransactionSigner(config) {
|
|
|
2194
2614
|
return [];
|
|
2195
2615
|
if (capabilities.supportsBatchSigning)
|
|
2196
2616
|
try {
|
|
2197
|
-
let signFeature = features["solana:signAllTransactions"], prepared = transactions.map((tx) =>
|
|
2617
|
+
let signFeature = features["solana:signAllTransactions"], prepared = transactions.map((tx) => chunk4KD6HQQG_js.prepareTransactionForWallet(tx)), serializedTxs = prepared.map((p) => p.serialized), wasWeb3js = prepared[0].wasWeb3js, result = await signFeature.signAllTransactions({
|
|
2198
2618
|
account,
|
|
2199
2619
|
transactions: serializedTxs,
|
|
2200
2620
|
...cluster ? { chain: cluster.id } : {}
|
|
2201
|
-
});
|
|
2621
|
+
}), signedBytesArray;
|
|
2622
|
+
if (Array.isArray(result))
|
|
2623
|
+
signedBytesArray = result.map((item) => item.signedTransaction);
|
|
2624
|
+
else if ("signedTransactions" in result)
|
|
2625
|
+
signedBytesArray = result.signedTransactions;
|
|
2626
|
+
else
|
|
2627
|
+
throw new Error("Unexpected signAllTransactions response format");
|
|
2202
2628
|
return await Promise.all(
|
|
2203
|
-
|
|
2204
|
-
(signedBytes) =>
|
|
2629
|
+
signedBytesArray.map(
|
|
2630
|
+
(signedBytes) => chunk4KD6HQQG_js.convertSignedTransaction(signedBytes, wasWeb3js)
|
|
2205
2631
|
)
|
|
2206
2632
|
);
|
|
2207
2633
|
} catch (error) {
|
|
2208
|
-
throw new
|
|
2634
|
+
throw new chunk64LV76OK_js.TransactionError(
|
|
2209
2635
|
"SIGNING_FAILED",
|
|
2210
2636
|
"Failed to sign transactions in batch",
|
|
2211
2637
|
{ count: transactions.length },
|
|
@@ -2213,14 +2639,14 @@ function createTransactionSigner(config) {
|
|
|
2213
2639
|
);
|
|
2214
2640
|
}
|
|
2215
2641
|
if (!capabilities.canSign)
|
|
2216
|
-
throw
|
|
2642
|
+
throw chunk64LV76OK_js.Errors.featureNotSupported("transaction signing");
|
|
2217
2643
|
let signed = [];
|
|
2218
2644
|
for (let i = 0; i < transactions.length; i++)
|
|
2219
2645
|
try {
|
|
2220
2646
|
let signedTx = await signer.signTransaction(transactions[i]);
|
|
2221
2647
|
signed.push(signedTx);
|
|
2222
2648
|
} catch (error) {
|
|
2223
|
-
throw new
|
|
2649
|
+
throw new chunk64LV76OK_js.TransactionError(
|
|
2224
2650
|
"SIGNING_FAILED",
|
|
2225
2651
|
`Failed to sign transaction ${i + 1} of ${transactions.length}`,
|
|
2226
2652
|
{ index: i, total: transactions.length },
|
|
@@ -2231,9 +2657,9 @@ function createTransactionSigner(config) {
|
|
|
2231
2657
|
},
|
|
2232
2658
|
async signAndSendTransaction(transaction, options) {
|
|
2233
2659
|
if (!capabilities.canSend)
|
|
2234
|
-
throw
|
|
2660
|
+
throw chunk64LV76OK_js.Errors.featureNotSupported("sending transactions");
|
|
2235
2661
|
try {
|
|
2236
|
-
let sendFeature = features["solana:signAndSendTransaction"], { serialized } =
|
|
2662
|
+
let sendFeature = features["solana:signAndSendTransaction"], { serialized } = chunk4KD6HQQG_js.prepareTransactionForWallet(transaction);
|
|
2237
2663
|
eventEmitter && eventEmitter.emit({
|
|
2238
2664
|
type: "transaction:preparing",
|
|
2239
2665
|
transaction: serialized,
|
|
@@ -2268,21 +2694,21 @@ function createTransactionSigner(config) {
|
|
|
2268
2694
|
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
2269
2695
|
}), signature;
|
|
2270
2696
|
} catch (error) {
|
|
2271
|
-
throw new
|
|
2697
|
+
throw new chunk64LV76OK_js.TransactionError("SEND_FAILED", "Failed to send transaction", void 0, error);
|
|
2272
2698
|
}
|
|
2273
2699
|
},
|
|
2274
2700
|
async signAndSendTransactions(transactions, options) {
|
|
2275
2701
|
if (transactions.length === 0)
|
|
2276
2702
|
return [];
|
|
2277
2703
|
if (!capabilities.canSend)
|
|
2278
|
-
throw
|
|
2704
|
+
throw chunk64LV76OK_js.Errors.featureNotSupported("sending transactions");
|
|
2279
2705
|
let signatures = [];
|
|
2280
2706
|
for (let i = 0; i < transactions.length; i++)
|
|
2281
2707
|
try {
|
|
2282
2708
|
let sig = await signer.signAndSendTransaction(transactions[i], options);
|
|
2283
2709
|
signatures.push(sig);
|
|
2284
2710
|
} catch (error) {
|
|
2285
|
-
throw new
|
|
2711
|
+
throw new chunk64LV76OK_js.TransactionError(
|
|
2286
2712
|
"SEND_FAILED",
|
|
2287
2713
|
`Failed to send transaction ${i + 1} of ${transactions.length}`,
|
|
2288
2714
|
{ index: i, total: transactions.length },
|
|
@@ -2300,7 +2726,7 @@ function createTransactionSigner(config) {
|
|
|
2300
2726
|
...cluster ? { chain: cluster.id } : {}
|
|
2301
2727
|
})).signature;
|
|
2302
2728
|
} catch (error) {
|
|
2303
|
-
throw new
|
|
2729
|
+
throw new chunk64LV76OK_js.TransactionError("SIGNING_FAILED", "Failed to sign message", void 0, error);
|
|
2304
2730
|
}
|
|
2305
2731
|
}
|
|
2306
2732
|
},
|
|
@@ -2310,16 +2736,16 @@ function createTransactionSigner(config) {
|
|
|
2310
2736
|
};
|
|
2311
2737
|
return signer;
|
|
2312
2738
|
}
|
|
2313
|
-
var TransactionSignerError = class extends
|
|
2739
|
+
var TransactionSignerError = class extends chunk64LV76OK_js.TransactionError {
|
|
2314
2740
|
constructor(message, code, originalError) {
|
|
2315
2741
|
let newCode = code === "WALLET_NOT_CONNECTED" ? "FEATURE_NOT_SUPPORTED" : code;
|
|
2316
2742
|
super(newCode, message, void 0, originalError), this.name = "TransactionSignerError";
|
|
2317
2743
|
}
|
|
2318
2744
|
};
|
|
2319
2745
|
function isTransactionSignerError(error) {
|
|
2320
|
-
return error instanceof TransactionSignerError || error instanceof
|
|
2746
|
+
return error instanceof TransactionSignerError || error instanceof chunk64LV76OK_js.TransactionError;
|
|
2321
2747
|
}
|
|
2322
|
-
var
|
|
2748
|
+
var logger12 = chunk64LV76OK_js.createLogger("KitTransactionSigner");
|
|
2323
2749
|
function encodeShortVecLength(value) {
|
|
2324
2750
|
let bytes = [], remaining = value;
|
|
2325
2751
|
for (; remaining >= 128; )
|
|
@@ -2374,7 +2800,7 @@ function extractSignature(signedTx) {
|
|
|
2374
2800
|
let signatureStart = bytesConsumed;
|
|
2375
2801
|
return signedTx.slice(signatureStart, signatureStart + 64);
|
|
2376
2802
|
}
|
|
2377
|
-
if (
|
|
2803
|
+
if (chunk4KD6HQQG_js.isWeb3jsTransaction(signedTx)) {
|
|
2378
2804
|
let signatures = signedTx.signatures;
|
|
2379
2805
|
if (!signatures || signatures.length === 0)
|
|
2380
2806
|
throw new Error("No signatures found in web3.js transaction");
|
|
@@ -2394,7 +2820,7 @@ function createKitTransactionSigner(connectorSigner) {
|
|
|
2394
2820
|
async modifyAndSignTransactions(transactions$1) {
|
|
2395
2821
|
let transactionData = transactions$1.map((tx) => {
|
|
2396
2822
|
let messageBytes = new Uint8Array(tx.messageBytes), { numSigners } = parseMessageSigners(messageBytes), wireFormat = createTransactionBytesForSigning(messageBytes, numSigners);
|
|
2397
|
-
return
|
|
2823
|
+
return logger12.debug("Preparing wire format for wallet", {
|
|
2398
2824
|
signerAddress,
|
|
2399
2825
|
messageBytesLength: messageBytes.length,
|
|
2400
2826
|
wireFormatLength: wireFormat.length,
|
|
@@ -2415,7 +2841,7 @@ function createKitTransactionSigner(connectorSigner) {
|
|
|
2415
2841
|
let signedTxBytes;
|
|
2416
2842
|
if (signedTx instanceof Uint8Array)
|
|
2417
2843
|
signedTxBytes = signedTx;
|
|
2418
|
-
else if (
|
|
2844
|
+
else if (chunk4KD6HQQG_js.isWeb3jsTransaction(signedTx)) {
|
|
2419
2845
|
let txObj = signedTx;
|
|
2420
2846
|
if (typeof txObj.serialize == "function")
|
|
2421
2847
|
signedTxBytes = txObj.serialize();
|
|
@@ -2423,14 +2849,14 @@ function createKitTransactionSigner(connectorSigner) {
|
|
|
2423
2849
|
throw new Error("Web3.js transaction without serialize method");
|
|
2424
2850
|
} else
|
|
2425
2851
|
throw new Error("Unknown signed transaction format");
|
|
2426
|
-
if (
|
|
2852
|
+
if (logger12.debug("Wallet returned signed transaction", {
|
|
2427
2853
|
returnedLength: signedTxBytes.length,
|
|
2428
2854
|
sentLength: wireFormat.length,
|
|
2429
2855
|
lengthsMatch: signedTxBytes.length === wireFormat.length,
|
|
2430
2856
|
signedFirstBytes: Array.from(signedTxBytes.slice(0, 20)),
|
|
2431
2857
|
sentFirstBytes: Array.from(wireFormat.slice(0, 20))
|
|
2432
2858
|
}), signedTxBytes.length !== wireFormat.length) {
|
|
2433
|
-
|
|
2859
|
+
logger12.warn("Wallet modified transaction! Using wallet version", {
|
|
2434
2860
|
originalLength: wireFormat.length,
|
|
2435
2861
|
modifiedLength: signedTxBytes.length,
|
|
2436
2862
|
difference: signedTxBytes.length - wireFormat.length
|
|
@@ -2441,13 +2867,13 @@ function createKitTransactionSigner(connectorSigner) {
|
|
|
2441
2867
|
lifetimeConstraint: originalWithLifetime.lifetimeConstraint
|
|
2442
2868
|
} : {}
|
|
2443
2869
|
};
|
|
2444
|
-
return
|
|
2870
|
+
return logger12.debug("Using modified transaction from wallet", {
|
|
2445
2871
|
modifiedMessageBytesLength: walletTransaction.messageBytes.length,
|
|
2446
2872
|
signatures: Object.keys(walletTransaction.signatures)
|
|
2447
2873
|
}), transactions.assertIsTransactionWithinSizeLimit(result), result;
|
|
2448
2874
|
}
|
|
2449
2875
|
let extractedSignatureBytes = extractSignature(signedTxBytes), signatureBase58 = codecs.getBase58Decoder().decode(extractedSignatureBytes);
|
|
2450
|
-
|
|
2876
|
+
logger12.debug("Extracted signature from wallet (unmodified)", {
|
|
2451
2877
|
signerAddress,
|
|
2452
2878
|
signatureLength: extractedSignatureBytes.length,
|
|
2453
2879
|
signatureBase58
|
|
@@ -2462,7 +2888,7 @@ function createKitTransactionSigner(connectorSigner) {
|
|
|
2462
2888
|
};
|
|
2463
2889
|
return transactions.assertIsTransactionWithinSizeLimit(signedTransaction), signedTransaction;
|
|
2464
2890
|
} catch (error) {
|
|
2465
|
-
return
|
|
2891
|
+
return logger12.error("Failed to decode signed transaction", { error }), transactions.assertIsTransactionWithinSizeLimit(originalTransaction), originalTransaction;
|
|
2466
2892
|
}
|
|
2467
2893
|
});
|
|
2468
2894
|
}
|
|
@@ -2473,13 +2899,17 @@ var createGillTransactionSigner = createKitTransactionSigner;
|
|
|
2473
2899
|
exports.ClipboardErrorType = ClipboardErrorType;
|
|
2474
2900
|
exports.ConnectorClient = ConnectorClient;
|
|
2475
2901
|
exports.ConnectorErrorBoundary = ConnectorErrorBoundary;
|
|
2476
|
-
exports.
|
|
2902
|
+
exports.EnhancedStorage = EnhancedStorage;
|
|
2903
|
+
exports.EnhancedStorageAdapter = EnhancedStorageAdapter;
|
|
2477
2904
|
exports.PUBLIC_RPC_ENDPOINTS = PUBLIC_RPC_ENDPOINTS;
|
|
2478
2905
|
exports.TransactionSignerError = TransactionSignerError;
|
|
2479
2906
|
exports.WalletErrorType = WalletErrorType;
|
|
2480
2907
|
exports.copyAddressToClipboard = copyAddressToClipboard;
|
|
2481
2908
|
exports.copySignatureToClipboard = copySignatureToClipboard;
|
|
2482
2909
|
exports.copyToClipboard = copyToClipboard;
|
|
2910
|
+
exports.createEnhancedStorageAccount = createEnhancedStorageAccount;
|
|
2911
|
+
exports.createEnhancedStorageCluster = createEnhancedStorageCluster;
|
|
2912
|
+
exports.createEnhancedStorageWallet = createEnhancedStorageWallet;
|
|
2483
2913
|
exports.createGillTransactionSigner = createGillTransactionSigner;
|
|
2484
2914
|
exports.createKitTransactionSigner = createKitTransactionSigner;
|
|
2485
2915
|
exports.createTransactionSigner = createTransactionSigner;
|
|
@@ -2499,6 +2929,8 @@ exports.getClusterExplorerUrl = getClusterExplorerUrl;
|
|
|
2499
2929
|
exports.getClusterName = getClusterName;
|
|
2500
2930
|
exports.getClusterRpcUrl = getClusterRpcUrl;
|
|
2501
2931
|
exports.getClusterType = getClusterType;
|
|
2932
|
+
exports.getDefaultConfig = getDefaultConfig;
|
|
2933
|
+
exports.getDefaultMobileConfig = getDefaultMobileConfig;
|
|
2502
2934
|
exports.getDefaultRpcUrl = getDefaultRpcUrl;
|
|
2503
2935
|
exports.getNetworkDisplayName = getNetworkDisplayName;
|
|
2504
2936
|
exports.getPolyfillStatus = getPolyfillStatus;
|
|
@@ -2519,9 +2951,11 @@ exports.isTestnet = isTestnet;
|
|
|
2519
2951
|
exports.isTestnetCluster = isTestnetCluster;
|
|
2520
2952
|
exports.isTransactionSignerError = isTransactionSignerError;
|
|
2521
2953
|
exports.normalizeNetwork = normalizeNetwork;
|
|
2954
|
+
exports.parseConfigOptions = parseConfigOptions;
|
|
2522
2955
|
exports.ready = ready;
|
|
2523
2956
|
exports.toClusterId = toClusterId;
|
|
2524
2957
|
exports.truncate = truncate;
|
|
2958
|
+
exports.validateConfigOptions = validateConfigOptions;
|
|
2525
2959
|
exports.withErrorBoundary = withErrorBoundary;
|
|
2526
|
-
//# sourceMappingURL=chunk-
|
|
2527
|
-
//# sourceMappingURL=chunk-
|
|
2960
|
+
//# sourceMappingURL=chunk-6AJJJG5B.js.map
|
|
2961
|
+
//# sourceMappingURL=chunk-6AJJJG5B.js.map
|