@solana/connector 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +460 -1082
- package/dist/{chunk-TIW3EQPC.js → chunk-CLXM6UEE.js} +120 -103
- package/dist/chunk-CLXM6UEE.js.map +1 -0
- package/dist/{chunk-7CKCRY25.js → chunk-D6PZY5G6.js} +69 -77
- package/dist/chunk-D6PZY5G6.js.map +1 -0
- package/dist/chunk-LUZWUZ5N.js +2012 -0
- package/dist/chunk-LUZWUZ5N.js.map +1 -0
- package/dist/{chunk-HPENTIPE.mjs → chunk-N3Q2J2FG.mjs} +51 -55
- package/dist/chunk-N3Q2J2FG.mjs.map +1 -0
- package/dist/chunk-P5MWBDFG.mjs +298 -0
- package/dist/chunk-P5MWBDFG.mjs.map +1 -0
- package/dist/chunk-RIQH5W7D.js +311 -0
- package/dist/chunk-RIQH5W7D.js.map +1 -0
- package/dist/chunk-U64YZRJL.mjs +1984 -0
- package/dist/chunk-U64YZRJL.mjs.map +1 -0
- package/dist/{chunk-TKJSKXSA.mjs → chunk-YTCSTE3Q.mjs} +35 -19
- package/dist/chunk-YTCSTE3Q.mjs.map +1 -0
- package/dist/compat.d.mts +4 -2
- package/dist/compat.d.ts +4 -2
- package/dist/compat.js +3 -3
- package/dist/compat.mjs +1 -1
- package/dist/headless.d.mts +146 -18
- package/dist/headless.d.ts +146 -18
- package/dist/headless.js +144 -111
- package/dist/headless.mjs +3 -2
- package/dist/index.d.mts +6 -5
- package/dist/index.d.ts +6 -5
- package/dist/index.js +207 -126
- package/dist/index.mjs +4 -3
- package/dist/react.d.mts +707 -67
- package/dist/react.d.ts +707 -67
- package/dist/react.js +64 -16
- package/dist/react.mjs +2 -2
- package/dist/{transaction-signer-D3csM_Mf.d.mts → transaction-signer-D9d8nxwb.d.mts} +3 -1
- package/dist/{transaction-signer-D3csM_Mf.d.ts → transaction-signer-D9d8nxwb.d.ts} +3 -1
- package/dist/{wallet-standard-shim-C1tisl9S.d.ts → wallet-standard-shim-Cp4vF4oo.d.mts} +133 -6
- package/dist/{wallet-standard-shim-Cg0GVGwu.d.mts → wallet-standard-shim-DC_Z7DS-.d.ts} +133 -6
- package/package.json +16 -12
- package/dist/chunk-5ZUVZZWU.mjs +0 -180
- package/dist/chunk-5ZUVZZWU.mjs.map +0 -1
- package/dist/chunk-7CKCRY25.js.map +0 -1
- package/dist/chunk-FTD7F7CS.js +0 -314
- package/dist/chunk-FTD7F7CS.js.map +0 -1
- package/dist/chunk-HPENTIPE.mjs.map +0 -1
- package/dist/chunk-MPZFJEJK.mjs +0 -298
- package/dist/chunk-MPZFJEJK.mjs.map +0 -1
- package/dist/chunk-SMUUAKC3.js +0 -186
- package/dist/chunk-SMUUAKC3.js.map +0 -1
- package/dist/chunk-TIW3EQPC.js.map +0 -1
- package/dist/chunk-TKJSKXSA.mjs.map +0 -1
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var gill = require('gill');
|
|
3
|
+
var chunkRIQH5W7D_js = require('./chunk-RIQH5W7D.js');
|
|
5
4
|
var react = require('react');
|
|
6
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
7
6
|
var webcryptoEd25519Polyfill = require('@solana/webcrypto-ed25519-polyfill');
|
|
7
|
+
var addresses = require('@solana/addresses');
|
|
8
|
+
var transactions = require('@solana/transactions');
|
|
9
|
+
var codecs = require('@solana/codecs');
|
|
8
10
|
|
|
9
11
|
// src/lib/adapters/wallet-standard-shim.ts
|
|
10
12
|
var registry = null;
|
|
@@ -53,9 +55,9 @@ function getWalletsRegistry() {
|
|
|
53
55
|
var ConnectorError = class extends Error {
|
|
54
56
|
constructor(message, context, originalError) {
|
|
55
57
|
super(message);
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
58
|
+
chunkRIQH5W7D_js.__publicField(this, "context");
|
|
59
|
+
chunkRIQH5W7D_js.__publicField(this, "originalError");
|
|
60
|
+
chunkRIQH5W7D_js.__publicField(this, "timestamp");
|
|
59
61
|
this.name = this.constructor.name, this.context = context, this.originalError = originalError, this.timestamp = (/* @__PURE__ */ new Date()).toISOString(), Error.captureStackTrace && Error.captureStackTrace(this, this.constructor);
|
|
60
62
|
}
|
|
61
63
|
toJSON() {
|
|
@@ -72,36 +74,36 @@ var ConnectorError = class extends Error {
|
|
|
72
74
|
}, ConnectionError = class extends ConnectorError {
|
|
73
75
|
constructor(code, message, context, originalError) {
|
|
74
76
|
super(message, context, originalError);
|
|
75
|
-
|
|
76
|
-
|
|
77
|
+
chunkRIQH5W7D_js.__publicField(this, "code");
|
|
78
|
+
chunkRIQH5W7D_js.__publicField(this, "recoverable", true);
|
|
77
79
|
this.code = code;
|
|
78
80
|
}
|
|
79
81
|
}, ValidationError = class extends ConnectorError {
|
|
80
82
|
constructor(code, message, context, originalError) {
|
|
81
83
|
super(message, context, originalError);
|
|
82
|
-
|
|
83
|
-
|
|
84
|
+
chunkRIQH5W7D_js.__publicField(this, "code");
|
|
85
|
+
chunkRIQH5W7D_js.__publicField(this, "recoverable", false);
|
|
84
86
|
this.code = code;
|
|
85
87
|
}
|
|
86
88
|
}, ConfigurationError = class extends ConnectorError {
|
|
87
89
|
constructor(code, message, context, originalError) {
|
|
88
90
|
super(message, context, originalError);
|
|
89
|
-
|
|
90
|
-
|
|
91
|
+
chunkRIQH5W7D_js.__publicField(this, "code");
|
|
92
|
+
chunkRIQH5W7D_js.__publicField(this, "recoverable", false);
|
|
91
93
|
this.code = code;
|
|
92
94
|
}
|
|
93
95
|
}, NetworkError = class extends ConnectorError {
|
|
94
96
|
constructor(code, message, context, originalError) {
|
|
95
97
|
super(message, context, originalError);
|
|
96
|
-
|
|
97
|
-
|
|
98
|
+
chunkRIQH5W7D_js.__publicField(this, "code");
|
|
99
|
+
chunkRIQH5W7D_js.__publicField(this, "recoverable", true);
|
|
98
100
|
this.code = code;
|
|
99
101
|
}
|
|
100
102
|
}, TransactionError = class extends ConnectorError {
|
|
101
103
|
constructor(code, message, context, originalError) {
|
|
102
104
|
super(message, context, originalError);
|
|
103
|
-
|
|
104
|
-
|
|
105
|
+
chunkRIQH5W7D_js.__publicField(this, "code");
|
|
106
|
+
chunkRIQH5W7D_js.__publicField(this, "recoverable");
|
|
105
107
|
this.code = code, this.recoverable = ["USER_REJECTED", "SEND_FAILED", "SIMULATION_FAILED"].includes(code);
|
|
106
108
|
}
|
|
107
109
|
};
|
|
@@ -125,11 +127,16 @@ function isTransactionError(error) {
|
|
|
125
127
|
}
|
|
126
128
|
var Errors = {
|
|
127
129
|
walletNotConnected: (context) => new ConnectionError("WALLET_NOT_CONNECTED", "No wallet connected", context),
|
|
128
|
-
walletNotFound: (walletName) => new ConnectionError("WALLET_NOT_FOUND", `Wallet not found${walletName ? `: ${walletName}` : ""}`, {
|
|
130
|
+
walletNotFound: (walletName) => new ConnectionError("WALLET_NOT_FOUND", `Wallet not found${walletName ? `: ${walletName}` : ""}`, {
|
|
131
|
+
walletName
|
|
132
|
+
}),
|
|
129
133
|
connectionFailed: (originalError) => new ConnectionError("CONNECTION_FAILED", "Failed to connect to wallet", void 0, originalError),
|
|
130
134
|
accountNotAvailable: (address) => new ConnectionError("ACCOUNT_NOT_AVAILABLE", "Requested account not available", { address }),
|
|
131
135
|
invalidTransaction: (reason, context) => new ValidationError("INVALID_TRANSACTION", `Invalid transaction: ${reason}`, context),
|
|
132
|
-
invalidFormat: (expectedFormat, actualFormat) => new ValidationError("INVALID_FORMAT", `Invalid format: expected ${expectedFormat}`, {
|
|
136
|
+
invalidFormat: (expectedFormat, actualFormat) => new ValidationError("INVALID_FORMAT", `Invalid format: expected ${expectedFormat}`, {
|
|
137
|
+
expectedFormat,
|
|
138
|
+
actualFormat
|
|
139
|
+
}),
|
|
133
140
|
unsupportedFormat: (format) => new ValidationError("UNSUPPORTED_FORMAT", `Unsupported format: ${format}`, { format }),
|
|
134
141
|
missingProvider: (hookName) => new ConfigurationError(
|
|
135
142
|
"MISSING_PROVIDER",
|
|
@@ -172,6 +179,8 @@ function getUserFriendlyMessage(error) {
|
|
|
172
179
|
NETWORK_TIMEOUT: "Request timed out. Please try again."
|
|
173
180
|
}[error.code] || error.message || "An error occurred." : "An unexpected error occurred. Please try again.";
|
|
174
181
|
}
|
|
182
|
+
|
|
183
|
+
// src/utils/network.ts
|
|
175
184
|
var PUBLIC_RPC_ENDPOINTS = {
|
|
176
185
|
mainnet: "https://api.mainnet-beta.solana.com",
|
|
177
186
|
devnet: "https://api.devnet.solana.com",
|
|
@@ -198,7 +207,7 @@ function toClusterId(network) {
|
|
|
198
207
|
function getDefaultRpcUrl(network) {
|
|
199
208
|
let normalized = normalizeNetwork(network);
|
|
200
209
|
try {
|
|
201
|
-
return
|
|
210
|
+
return chunkRIQH5W7D_js.getPublicSolanaRpcUrl(normalized);
|
|
202
211
|
} catch {
|
|
203
212
|
return PUBLIC_RPC_ENDPOINTS[normalized] ?? PUBLIC_RPC_ENDPOINTS.localnet;
|
|
204
213
|
}
|
|
@@ -219,6 +228,8 @@ function getNetworkDisplayName(network) {
|
|
|
219
228
|
let normalized = normalizeNetwork(network);
|
|
220
229
|
return normalized.charAt(0).toUpperCase() + normalized.slice(1);
|
|
221
230
|
}
|
|
231
|
+
|
|
232
|
+
// src/utils/cluster.ts
|
|
222
233
|
function getClusterRpcUrl(cluster) {
|
|
223
234
|
if (typeof cluster == "string") {
|
|
224
235
|
let presets2 = {
|
|
@@ -246,14 +257,14 @@ function getClusterExplorerUrl(cluster, path) {
|
|
|
246
257
|
}
|
|
247
258
|
function getTransactionUrl(signature, cluster) {
|
|
248
259
|
let clusterType = getClusterType(cluster), explorerCluster = clusterType === "custom" || clusterType === "localnet" ? "devnet" : clusterType;
|
|
249
|
-
return
|
|
260
|
+
return chunkRIQH5W7D_js.getExplorerLink({
|
|
250
261
|
transaction: signature,
|
|
251
262
|
cluster: explorerCluster === "mainnet" ? "mainnet" : explorerCluster
|
|
252
263
|
});
|
|
253
264
|
}
|
|
254
265
|
function getAddressUrl(address, cluster) {
|
|
255
266
|
let clusterType = getClusterType(cluster), explorerCluster = clusterType === "custom" || clusterType === "localnet" ? "devnet" : clusterType;
|
|
256
|
-
return
|
|
267
|
+
return chunkRIQH5W7D_js.getExplorerLink({
|
|
257
268
|
address,
|
|
258
269
|
cluster: explorerCluster === "mainnet" ? "mainnet" : explorerCluster
|
|
259
270
|
});
|
|
@@ -315,9 +326,9 @@ var POLL_INTERVALS_MS = [1e3, 2e3, 3e3, 5e3, 5e3], DEFAULT_MAX_RETRIES = 3, DEFA
|
|
|
315
326
|
// src/lib/core/state-manager.ts
|
|
316
327
|
var StateManager = class {
|
|
317
328
|
constructor(initialState) {
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
329
|
+
chunkRIQH5W7D_js.__publicField(this, "state");
|
|
330
|
+
chunkRIQH5W7D_js.__publicField(this, "listeners", /* @__PURE__ */ new Set());
|
|
331
|
+
chunkRIQH5W7D_js.__publicField(this, "notifyTimeout");
|
|
321
332
|
this.state = initialState;
|
|
322
333
|
}
|
|
323
334
|
/**
|
|
@@ -336,7 +347,7 @@ var StateManager = class {
|
|
|
336
347
|
* Fast array equality check for wallet/account arrays
|
|
337
348
|
*/
|
|
338
349
|
arraysEqual(a, b) {
|
|
339
|
-
return a.length !== b.length ? false : a[0] && typeof a[0] == "object" && "name" in a[0] && b[0] && typeof b[0] == "object" && "name" in b[0] ? a.every((item, i) => {
|
|
350
|
+
return a.length !== b.length ? false : a.length === 0 ? true : a[0] && typeof a[0] == "object" && "name" in a[0] && b[0] && typeof b[0] == "object" && "name" in b[0] ? a.every((item, i) => {
|
|
340
351
|
let aItem = item, bItem = b[i];
|
|
341
352
|
if (!bItem || typeof bItem != "object") return false;
|
|
342
353
|
let keysA = Object.keys(aItem), keysB = Object.keys(bItem);
|
|
@@ -376,10 +387,10 @@ var StateManager = class {
|
|
|
376
387
|
};
|
|
377
388
|
|
|
378
389
|
// src/lib/core/event-emitter.ts
|
|
379
|
-
var logger =
|
|
390
|
+
var logger = chunkRIQH5W7D_js.createLogger("EventEmitter"), EventEmitter = class {
|
|
380
391
|
constructor(debug = false) {
|
|
381
|
-
|
|
382
|
-
|
|
392
|
+
chunkRIQH5W7D_js.__publicField(this, "listeners", /* @__PURE__ */ new Set());
|
|
393
|
+
chunkRIQH5W7D_js.__publicField(this, "debug");
|
|
383
394
|
this.debug = debug;
|
|
384
395
|
}
|
|
385
396
|
/**
|
|
@@ -435,12 +446,12 @@ var logger = chunkSMUUAKC3_js.createLogger("EventEmitter"), EventEmitter = class
|
|
|
435
446
|
// src/lib/core/debug-metrics.ts
|
|
436
447
|
var DebugMetrics = class {
|
|
437
448
|
constructor() {
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
449
|
+
chunkRIQH5W7D_js.__publicField(this, "stateUpdates", 0);
|
|
450
|
+
chunkRIQH5W7D_js.__publicField(this, "noopUpdates", 0);
|
|
451
|
+
chunkRIQH5W7D_js.__publicField(this, "updateTimes", []);
|
|
452
|
+
chunkRIQH5W7D_js.__publicField(this, "lastUpdateTime", 0);
|
|
453
|
+
chunkRIQH5W7D_js.__publicField(this, "eventListenerCount", 0);
|
|
454
|
+
chunkRIQH5W7D_js.__publicField(this, "subscriptionCount", 0);
|
|
444
455
|
}
|
|
445
456
|
/**
|
|
446
457
|
* Record a state update attempt
|
|
@@ -480,11 +491,11 @@ var DebugMetrics = class {
|
|
|
480
491
|
// src/lib/core/base-collaborator.ts
|
|
481
492
|
var BaseCollaborator = class {
|
|
482
493
|
constructor(config, loggerPrefix) {
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
this.stateManager = config.stateManager, this.eventEmitter = config.eventEmitter, this.debug = config.debug ?? false, this.logger =
|
|
494
|
+
chunkRIQH5W7D_js.__publicField(this, "stateManager");
|
|
495
|
+
chunkRIQH5W7D_js.__publicField(this, "eventEmitter");
|
|
496
|
+
chunkRIQH5W7D_js.__publicField(this, "debug");
|
|
497
|
+
chunkRIQH5W7D_js.__publicField(this, "logger");
|
|
498
|
+
this.stateManager = config.stateManager, this.eventEmitter = config.eventEmitter, this.debug = config.debug ?? false, this.logger = chunkRIQH5W7D_js.createLogger(loggerPrefix);
|
|
488
499
|
}
|
|
489
500
|
/**
|
|
490
501
|
* Log debug message if debug mode is enabled
|
|
@@ -507,7 +518,7 @@ var BaseCollaborator = class {
|
|
|
507
518
|
};
|
|
508
519
|
|
|
509
520
|
// src/lib/connection/wallet-authenticity-verifier.ts
|
|
510
|
-
var logger2 =
|
|
521
|
+
var logger2 = chunkRIQH5W7D_js.createLogger("WalletAuthenticity"), WalletAuthenticityVerifier = class {
|
|
511
522
|
/**
|
|
512
523
|
* Verify a wallet's authenticity using dynamic heuristics
|
|
513
524
|
*
|
|
@@ -717,7 +728,7 @@ var logger2 = chunkSMUUAKC3_js.createLogger("WalletAuthenticity"), WalletAuthent
|
|
|
717
728
|
};
|
|
718
729
|
|
|
719
730
|
// src/lib/connection/wallet-detector.ts
|
|
720
|
-
var logger3 =
|
|
731
|
+
var logger3 = chunkRIQH5W7D_js.createLogger("WalletDetector");
|
|
721
732
|
function hasFeature(wallet, featureName) {
|
|
722
733
|
return wallet.features != null && wallet.features[featureName] !== void 0;
|
|
723
734
|
}
|
|
@@ -739,7 +750,7 @@ function verifyWalletName(wallet, requestedName) {
|
|
|
739
750
|
var WalletDetector = class extends BaseCollaborator {
|
|
740
751
|
constructor(stateManager, eventEmitter, debug = false) {
|
|
741
752
|
super({ stateManager, eventEmitter, debug }, "WalletDetector");
|
|
742
|
-
|
|
753
|
+
chunkRIQH5W7D_js.__publicField(this, "unsubscribers", []);
|
|
743
754
|
}
|
|
744
755
|
/**
|
|
745
756
|
* Initialize wallet detection
|
|
@@ -864,10 +875,10 @@ function getEventsFeature(wallet) {
|
|
|
864
875
|
var ConnectionManager = class extends BaseCollaborator {
|
|
865
876
|
constructor(stateManager, eventEmitter, walletStorage, debug = false) {
|
|
866
877
|
super({ stateManager, eventEmitter, debug }, "ConnectionManager");
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
878
|
+
chunkRIQH5W7D_js.__publicField(this, "walletStorage");
|
|
879
|
+
chunkRIQH5W7D_js.__publicField(this, "walletChangeUnsub", null);
|
|
880
|
+
chunkRIQH5W7D_js.__publicField(this, "pollTimer", null);
|
|
881
|
+
chunkRIQH5W7D_js.__publicField(this, "pollAttempts", 0);
|
|
871
882
|
this.walletStorage = walletStorage;
|
|
872
883
|
}
|
|
873
884
|
/**
|
|
@@ -1062,13 +1073,13 @@ var ConnectionManager = class extends BaseCollaborator {
|
|
|
1062
1073
|
};
|
|
1063
1074
|
|
|
1064
1075
|
// src/lib/connection/auto-connector.ts
|
|
1065
|
-
var logger4 =
|
|
1076
|
+
var logger4 = chunkRIQH5W7D_js.createLogger("AutoConnector"), MIN_ADDRESS_LENGTH = 30, AutoConnector = class {
|
|
1066
1077
|
constructor(walletDetector, connectionManager, stateManager, walletStorage, debug = false) {
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1078
|
+
chunkRIQH5W7D_js.__publicField(this, "walletDetector");
|
|
1079
|
+
chunkRIQH5W7D_js.__publicField(this, "connectionManager");
|
|
1080
|
+
chunkRIQH5W7D_js.__publicField(this, "stateManager");
|
|
1081
|
+
chunkRIQH5W7D_js.__publicField(this, "walletStorage");
|
|
1082
|
+
chunkRIQH5W7D_js.__publicField(this, "debug");
|
|
1072
1083
|
this.walletDetector = walletDetector, this.connectionManager = connectionManager, this.stateManager = stateManager, this.walletStorage = walletStorage, this.debug = debug;
|
|
1073
1084
|
}
|
|
1074
1085
|
async attemptAutoConnect() {
|
|
@@ -1222,7 +1233,7 @@ var logger4 = chunkSMUUAKC3_js.createLogger("AutoConnector"), MIN_ADDRESS_LENGTH
|
|
|
1222
1233
|
var ClusterManager = class extends BaseCollaborator {
|
|
1223
1234
|
constructor(stateManager, eventEmitter, clusterStorage, config, debug = false) {
|
|
1224
1235
|
super({ stateManager, eventEmitter, debug }, "ClusterManager");
|
|
1225
|
-
|
|
1236
|
+
chunkRIQH5W7D_js.__publicField(this, "clusterStorage");
|
|
1226
1237
|
if (this.clusterStorage = clusterStorage, config) {
|
|
1227
1238
|
let clusters = config.clusters ?? [], initialClusterId = this.clusterStorage?.get() ?? config.initialCluster ?? "solana:mainnet", initialCluster = clusters.find((c) => c.id === initialClusterId) ?? clusters[0] ?? null;
|
|
1228
1239
|
this.stateManager.updateState({
|
|
@@ -1266,9 +1277,9 @@ var ClusterManager = class extends BaseCollaborator {
|
|
|
1266
1277
|
var TransactionTracker = class extends BaseCollaborator {
|
|
1267
1278
|
constructor(stateManager, eventEmitter, maxTransactions = 20, debug = false) {
|
|
1268
1279
|
super({ stateManager, eventEmitter, debug }, "TransactionTracker");
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1280
|
+
chunkRIQH5W7D_js.__publicField(this, "transactions", []);
|
|
1281
|
+
chunkRIQH5W7D_js.__publicField(this, "totalTransactions", 0);
|
|
1282
|
+
chunkRIQH5W7D_js.__publicField(this, "maxTransactions");
|
|
1272
1283
|
this.maxTransactions = maxTransactions;
|
|
1273
1284
|
}
|
|
1274
1285
|
/**
|
|
@@ -1322,10 +1333,10 @@ var TransactionTracker = class extends BaseCollaborator {
|
|
|
1322
1333
|
// src/lib/health/health-monitor.ts
|
|
1323
1334
|
var HealthMonitor = class {
|
|
1324
1335
|
constructor(stateManager, walletStorage, clusterStorage, isInitialized) {
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1336
|
+
chunkRIQH5W7D_js.__publicField(this, "stateManager");
|
|
1337
|
+
chunkRIQH5W7D_js.__publicField(this, "walletStorage");
|
|
1338
|
+
chunkRIQH5W7D_js.__publicField(this, "clusterStorage");
|
|
1339
|
+
chunkRIQH5W7D_js.__publicField(this, "isInitialized");
|
|
1329
1340
|
this.stateManager = stateManager, this.walletStorage = walletStorage, this.clusterStorage = clusterStorage, this.isInitialized = isInitialized ?? (() => true);
|
|
1330
1341
|
}
|
|
1331
1342
|
/**
|
|
@@ -1377,19 +1388,19 @@ var HealthMonitor = class {
|
|
|
1377
1388
|
};
|
|
1378
1389
|
|
|
1379
1390
|
// src/lib/core/connector-client.ts
|
|
1380
|
-
var logger5 =
|
|
1391
|
+
var logger5 = chunkRIQH5W7D_js.createLogger("ConnectorClient"), ConnectorClient = class {
|
|
1381
1392
|
constructor(config = {}) {
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
+
chunkRIQH5W7D_js.__publicField(this, "stateManager");
|
|
1394
|
+
chunkRIQH5W7D_js.__publicField(this, "eventEmitter");
|
|
1395
|
+
chunkRIQH5W7D_js.__publicField(this, "walletDetector");
|
|
1396
|
+
chunkRIQH5W7D_js.__publicField(this, "connectionManager");
|
|
1397
|
+
chunkRIQH5W7D_js.__publicField(this, "autoConnector");
|
|
1398
|
+
chunkRIQH5W7D_js.__publicField(this, "clusterManager");
|
|
1399
|
+
chunkRIQH5W7D_js.__publicField(this, "transactionTracker");
|
|
1400
|
+
chunkRIQH5W7D_js.__publicField(this, "debugMetrics");
|
|
1401
|
+
chunkRIQH5W7D_js.__publicField(this, "healthMonitor");
|
|
1402
|
+
chunkRIQH5W7D_js.__publicField(this, "initialized", false);
|
|
1403
|
+
chunkRIQH5W7D_js.__publicField(this, "config");
|
|
1393
1404
|
this.config = config;
|
|
1394
1405
|
let initialState = {
|
|
1395
1406
|
wallets: [],
|
|
@@ -1537,7 +1548,7 @@ var logger5 = chunkSMUUAKC3_js.createLogger("ConnectorClient"), ConnectorClient
|
|
|
1537
1548
|
}), this.walletDetector.destroy(), this.eventEmitter.offAll(), this.stateManager.clear();
|
|
1538
1549
|
}
|
|
1539
1550
|
};
|
|
1540
|
-
var logger6 =
|
|
1551
|
+
var logger6 = chunkRIQH5W7D_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 {
|
|
1541
1552
|
static log(error, errorInfo, context) {
|
|
1542
1553
|
if (process.env.NODE_ENV === "development" && logger6.error(error.message, {
|
|
1543
1554
|
error,
|
|
@@ -1585,8 +1596,8 @@ function classifyError(error) {
|
|
|
1585
1596
|
var ConnectorErrorBoundary = class extends react.Component {
|
|
1586
1597
|
constructor(props) {
|
|
1587
1598
|
super(props);
|
|
1588
|
-
|
|
1589
|
-
|
|
1599
|
+
chunkRIQH5W7D_js.__publicField(this, "retryTimeouts", /* @__PURE__ */ new Set());
|
|
1600
|
+
chunkRIQH5W7D_js.__publicField(this, "retry", () => {
|
|
1590
1601
|
let { maxRetries = 3 } = this.props;
|
|
1591
1602
|
this.state.retryCount >= maxRetries || this.setState((prevState) => ({
|
|
1592
1603
|
hasError: false,
|
|
@@ -1808,7 +1819,7 @@ function withErrorBoundary(Component2, errorBoundaryProps) {
|
|
|
1808
1819
|
let WrappedComponent = (props) => /* @__PURE__ */ jsxRuntime.jsx(ConnectorErrorBoundary, { ...errorBoundaryProps, children: /* @__PURE__ */ jsxRuntime.jsx(Component2, { ...props }) });
|
|
1809
1820
|
return WrappedComponent.displayName = `withErrorBoundary(${Component2.displayName || Component2.name})`, WrappedComponent;
|
|
1810
1821
|
}
|
|
1811
|
-
var logger7 =
|
|
1822
|
+
var logger7 = chunkRIQH5W7D_js.createLogger("Polyfills"), installed = false;
|
|
1812
1823
|
function installPolyfills() {
|
|
1813
1824
|
if (!(installed || typeof window > "u"))
|
|
1814
1825
|
try {
|
|
@@ -1835,6 +1846,8 @@ function getPolyfillStatus() {
|
|
|
1835
1846
|
environment: typeof window < "u" ? "browser" : "server"
|
|
1836
1847
|
};
|
|
1837
1848
|
}
|
|
1849
|
+
|
|
1850
|
+
// src/utils/formatting.ts
|
|
1838
1851
|
function formatAddress(address, options = {}) {
|
|
1839
1852
|
let { length = 4, separator = "..." } = options;
|
|
1840
1853
|
return !address || address.length <= length * 2 + separator.length ? address : `${address.slice(0, length)}${separator}${address.slice(-length)}`;
|
|
@@ -1842,10 +1855,10 @@ function formatAddress(address, options = {}) {
|
|
|
1842
1855
|
function formatSOL(lamports, options = {}) {
|
|
1843
1856
|
let { decimals = 4, suffix = true, fast = false } = options;
|
|
1844
1857
|
if (fast && typeof lamports == "number") {
|
|
1845
|
-
let formatted2 = (lamports /
|
|
1858
|
+
let formatted2 = (lamports / 1e9).toFixed(decimals);
|
|
1846
1859
|
return suffix ? `${formatted2} SOL` : formatted2;
|
|
1847
1860
|
}
|
|
1848
|
-
let lamportsBigInt = typeof lamports == "bigint" ? lamports : BigInt(lamports), formatted = (Number(lamportsBigInt) /
|
|
1861
|
+
let lamportsBigInt = typeof lamports == "bigint" ? lamports : BigInt(lamports), formatted = (Number(lamportsBigInt) / 1e9).toFixed(decimals);
|
|
1849
1862
|
return suffix ? `${formatted} SOL` : formatted;
|
|
1850
1863
|
}
|
|
1851
1864
|
function formatNumber(value, options = {}) {
|
|
@@ -1882,7 +1895,7 @@ function isClipboardAvailable() {
|
|
|
1882
1895
|
}
|
|
1883
1896
|
function validateAddress(address) {
|
|
1884
1897
|
try {
|
|
1885
|
-
return
|
|
1898
|
+
return addresses.isAddress(address);
|
|
1886
1899
|
} catch {
|
|
1887
1900
|
return false;
|
|
1888
1901
|
}
|
|
@@ -1979,7 +1992,7 @@ async function copySignatureToClipboard(signature, options) {
|
|
|
1979
1992
|
}
|
|
1980
1993
|
|
|
1981
1994
|
// src/lib/transaction/transaction-validator.ts
|
|
1982
|
-
var logger8 =
|
|
1995
|
+
var logger8 = chunkRIQH5W7D_js.createLogger("TransactionValidator"), MAX_TRANSACTION_SIZE = 1232, MIN_TRANSACTION_SIZE = 64, TransactionValidator = class {
|
|
1983
1996
|
/**
|
|
1984
1997
|
* Validate a transaction before signing
|
|
1985
1998
|
*
|
|
@@ -2084,7 +2097,7 @@ var logger8 = chunkSMUUAKC3_js.createLogger("TransactionValidator"), MAX_TRANSAC
|
|
|
2084
2097
|
};
|
|
2085
2098
|
|
|
2086
2099
|
// src/lib/transaction/transaction-signer.ts
|
|
2087
|
-
var logger9 =
|
|
2100
|
+
var logger9 = chunkRIQH5W7D_js.createLogger("TransactionSigner");
|
|
2088
2101
|
function createTransactionSigner(config) {
|
|
2089
2102
|
let { wallet, account, cluster, eventEmitter } = config;
|
|
2090
2103
|
if (!wallet || !account)
|
|
@@ -2104,7 +2117,7 @@ function createTransactionSigner(config) {
|
|
|
2104
2117
|
throw logger9.error("Transaction validation failed", { errors: validation.errors }), Errors.invalidTransaction(validation.errors.join(", "));
|
|
2105
2118
|
validation.warnings.length > 0 && logger9.warn("Transaction validation warnings", { warnings: validation.warnings });
|
|
2106
2119
|
try {
|
|
2107
|
-
let signFeature = features["solana:signTransaction"], { serialized, wasWeb3js } =
|
|
2120
|
+
let signFeature = features["solana:signTransaction"], { serialized, wasWeb3js } = chunkRIQH5W7D_js.prepareTransactionForWallet(transaction);
|
|
2108
2121
|
logger9.debug("Signing transaction", {
|
|
2109
2122
|
wasWeb3js,
|
|
2110
2123
|
serializedLength: serialized.length,
|
|
@@ -2157,10 +2170,10 @@ function createTransactionSigner(config) {
|
|
|
2157
2170
|
logger9.debug("Found signedTransaction property");
|
|
2158
2171
|
let bytes = signedTx.signedTransaction;
|
|
2159
2172
|
if (bytes instanceof Uint8Array)
|
|
2160
|
-
return await
|
|
2173
|
+
return await chunkRIQH5W7D_js.convertSignedTransaction(bytes, wasWeb3js);
|
|
2161
2174
|
}
|
|
2162
2175
|
if (signedTx instanceof Uint8Array)
|
|
2163
|
-
return await
|
|
2176
|
+
return await chunkRIQH5W7D_js.convertSignedTransaction(signedTx, wasWeb3js);
|
|
2164
2177
|
throw logger9.error("Unexpected wallet response format", {
|
|
2165
2178
|
type: typeof signedTx,
|
|
2166
2179
|
constructor: signedTx?.constructor?.name
|
|
@@ -2177,14 +2190,14 @@ function createTransactionSigner(config) {
|
|
|
2177
2190
|
return [];
|
|
2178
2191
|
if (capabilities.supportsBatchSigning)
|
|
2179
2192
|
try {
|
|
2180
|
-
let signFeature = features["solana:signAllTransactions"], prepared = transactions.map((tx) =>
|
|
2193
|
+
let signFeature = features["solana:signAllTransactions"], prepared = transactions.map((tx) => chunkRIQH5W7D_js.prepareTransactionForWallet(tx)), serializedTxs = prepared.map((p) => p.serialized), wasWeb3js = prepared[0].wasWeb3js, result = await signFeature.signAllTransactions({
|
|
2181
2194
|
account,
|
|
2182
2195
|
transactions: serializedTxs,
|
|
2183
2196
|
...cluster ? { chain: cluster.id } : {}
|
|
2184
2197
|
});
|
|
2185
2198
|
return await Promise.all(
|
|
2186
2199
|
result.signedTransactions.map(
|
|
2187
|
-
(signedBytes) =>
|
|
2200
|
+
(signedBytes) => chunkRIQH5W7D_js.convertSignedTransaction(signedBytes, wasWeb3js)
|
|
2188
2201
|
)
|
|
2189
2202
|
);
|
|
2190
2203
|
} catch (error) {
|
|
@@ -2216,7 +2229,7 @@ function createTransactionSigner(config) {
|
|
|
2216
2229
|
if (!capabilities.canSend)
|
|
2217
2230
|
throw Errors.featureNotSupported("sending transactions");
|
|
2218
2231
|
try {
|
|
2219
|
-
let sendFeature = features["solana:signAndSendTransaction"], { serialized } =
|
|
2232
|
+
let sendFeature = features["solana:signAndSendTransaction"], { serialized } = chunkRIQH5W7D_js.prepareTransactionForWallet(transaction);
|
|
2220
2233
|
eventEmitter && eventEmitter.emit({
|
|
2221
2234
|
type: "transaction:preparing",
|
|
2222
2235
|
transaction: serialized,
|
|
@@ -2302,7 +2315,7 @@ var TransactionSignerError = class extends TransactionError {
|
|
|
2302
2315
|
function isTransactionSignerError(error) {
|
|
2303
2316
|
return error instanceof TransactionSignerError || error instanceof TransactionError;
|
|
2304
2317
|
}
|
|
2305
|
-
var logger10 =
|
|
2318
|
+
var logger10 = chunkRIQH5W7D_js.createLogger("KitTransactionSigner");
|
|
2306
2319
|
function encodeShortVecLength(value) {
|
|
2307
2320
|
let bytes = [], remaining = value;
|
|
2308
2321
|
for (; remaining >= 128; )
|
|
@@ -2334,7 +2347,7 @@ function extractSignature(signedTx) {
|
|
|
2334
2347
|
let signatureStart = bytesConsumed;
|
|
2335
2348
|
return signedTx.slice(signatureStart, signatureStart + 64);
|
|
2336
2349
|
}
|
|
2337
|
-
if (
|
|
2350
|
+
if (chunkRIQH5W7D_js.isWeb3jsTransaction(signedTx)) {
|
|
2338
2351
|
let signatures = signedTx.signatures;
|
|
2339
2352
|
if (!signatures || signatures.length === 0)
|
|
2340
2353
|
throw new Error("No signatures found in web3.js transaction");
|
|
@@ -2347,12 +2360,12 @@ function extractSignature(signedTx) {
|
|
|
2347
2360
|
}
|
|
2348
2361
|
throw new Error("Cannot extract signature from transaction format");
|
|
2349
2362
|
}
|
|
2350
|
-
function
|
|
2351
|
-
let signerAddress =
|
|
2363
|
+
function createKitTransactionSigner(connectorSigner) {
|
|
2364
|
+
let signerAddress = addresses.address(connectorSigner.address);
|
|
2352
2365
|
return {
|
|
2353
2366
|
address: signerAddress,
|
|
2354
|
-
async modifyAndSignTransactions(transactions) {
|
|
2355
|
-
let transactionData = transactions.map((tx) => {
|
|
2367
|
+
async modifyAndSignTransactions(transactions$1) {
|
|
2368
|
+
let transactionData = transactions$1.map((tx) => {
|
|
2356
2369
|
let messageBytes = new Uint8Array(tx.messageBytes), numSigners = Object.keys(tx.signatures).length, wireFormat = createTransactionBytesForSigning(messageBytes, numSigners);
|
|
2357
2370
|
return logger10.debug("Preparing wire format for wallet", {
|
|
2358
2371
|
signerAddress,
|
|
@@ -2375,7 +2388,7 @@ function createGillTransactionSigner(connectorSigner) {
|
|
|
2375
2388
|
let signedTxBytes;
|
|
2376
2389
|
if (signedTx instanceof Uint8Array)
|
|
2377
2390
|
signedTxBytes = signedTx;
|
|
2378
|
-
else if (
|
|
2391
|
+
else if (chunkRIQH5W7D_js.isWeb3jsTransaction(signedTx)) {
|
|
2379
2392
|
let txObj = signedTx;
|
|
2380
2393
|
if (typeof txObj.serialize == "function")
|
|
2381
2394
|
signedTxBytes = txObj.serialize();
|
|
@@ -2395,7 +2408,7 @@ function createGillTransactionSigner(connectorSigner) {
|
|
|
2395
2408
|
modifiedLength: signedTxBytes.length,
|
|
2396
2409
|
difference: signedTxBytes.length - wireFormat.length
|
|
2397
2410
|
});
|
|
2398
|
-
let walletTransaction =
|
|
2411
|
+
let walletTransaction = transactions.getTransactionDecoder().decode(signedTxBytes), originalWithLifetime = originalTransaction, result = {
|
|
2399
2412
|
...walletTransaction,
|
|
2400
2413
|
...originalWithLifetime.lifetimeConstraint ? {
|
|
2401
2414
|
lifetimeConstraint: originalWithLifetime.lifetimeConstraint
|
|
@@ -2404,28 +2417,31 @@ function createGillTransactionSigner(connectorSigner) {
|
|
|
2404
2417
|
return logger10.debug("Using modified transaction from wallet", {
|
|
2405
2418
|
modifiedMessageBytesLength: walletTransaction.messageBytes.length,
|
|
2406
2419
|
signatures: Object.keys(walletTransaction.signatures)
|
|
2407
|
-
}), result;
|
|
2420
|
+
}), transactions.assertIsTransactionWithinSizeLimit(result), result;
|
|
2408
2421
|
}
|
|
2409
|
-
let
|
|
2410
|
-
|
|
2422
|
+
let extractedSignatureBytes = extractSignature(signedTxBytes), signatureBase58 = codecs.getBase58Decoder().decode(extractedSignatureBytes);
|
|
2423
|
+
logger10.debug("Extracted signature from wallet (unmodified)", {
|
|
2411
2424
|
signerAddress,
|
|
2412
|
-
signatureLength:
|
|
2425
|
+
signatureLength: extractedSignatureBytes.length,
|
|
2413
2426
|
signatureBase58
|
|
2414
2427
|
// Human-readable signature for debugging/logging
|
|
2415
|
-
})
|
|
2428
|
+
});
|
|
2429
|
+
let typedSignatureBytes = extractedSignatureBytes, signedTransaction = {
|
|
2416
2430
|
...originalTransaction,
|
|
2417
2431
|
signatures: Object.freeze({
|
|
2418
2432
|
...originalTransaction.signatures,
|
|
2419
|
-
[signerAddress]:
|
|
2433
|
+
[signerAddress]: typedSignatureBytes
|
|
2420
2434
|
})
|
|
2421
2435
|
};
|
|
2436
|
+
return transactions.assertIsTransactionWithinSizeLimit(signedTransaction), signedTransaction;
|
|
2422
2437
|
} catch (error) {
|
|
2423
|
-
return logger10.error("Failed to decode signed transaction", { error }), originalTransaction;
|
|
2438
|
+
return logger10.error("Failed to decode signed transaction", { error }), transactions.assertIsTransactionWithinSizeLimit(originalTransaction), originalTransaction;
|
|
2424
2439
|
}
|
|
2425
2440
|
});
|
|
2426
2441
|
}
|
|
2427
2442
|
};
|
|
2428
2443
|
}
|
|
2444
|
+
var createGillTransactionSigner = createKitTransactionSigner;
|
|
2429
2445
|
|
|
2430
2446
|
exports.ClipboardErrorType = ClipboardErrorType;
|
|
2431
2447
|
exports.ConfigurationError = ConfigurationError;
|
|
@@ -2445,6 +2461,7 @@ exports.copyAddressToClipboard = copyAddressToClipboard;
|
|
|
2445
2461
|
exports.copySignatureToClipboard = copySignatureToClipboard;
|
|
2446
2462
|
exports.copyToClipboard = copyToClipboard;
|
|
2447
2463
|
exports.createGillTransactionSigner = createGillTransactionSigner;
|
|
2464
|
+
exports.createKitTransactionSigner = createKitTransactionSigner;
|
|
2448
2465
|
exports.createTransactionSigner = createTransactionSigner;
|
|
2449
2466
|
exports.formatAddress = formatAddress;
|
|
2450
2467
|
exports.formatNumber = formatNumber;
|
|
@@ -2489,5 +2506,5 @@ exports.toClusterId = toClusterId;
|
|
|
2489
2506
|
exports.toConnectorError = toConnectorError;
|
|
2490
2507
|
exports.truncate = truncate;
|
|
2491
2508
|
exports.withErrorBoundary = withErrorBoundary;
|
|
2492
|
-
//# sourceMappingURL=chunk-
|
|
2493
|
-
//# sourceMappingURL=chunk-
|
|
2509
|
+
//# sourceMappingURL=chunk-CLXM6UEE.js.map
|
|
2510
|
+
//# sourceMappingURL=chunk-CLXM6UEE.js.map
|