@solana/connector 0.1.3 → 0.1.5
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 +685 -1071
- package/dist/chunk-3STZXVXD.mjs +2185 -0
- package/dist/chunk-3STZXVXD.mjs.map +1 -0
- package/dist/chunk-I64FD2EH.js +312 -0
- package/dist/chunk-I64FD2EH.js.map +1 -0
- package/dist/{chunk-TIW3EQPC.js → chunk-JUZVCBAI.js} +127 -104
- package/dist/chunk-JUZVCBAI.js.map +1 -0
- package/dist/{chunk-7CKCRY25.js → chunk-NQXK7PGX.js} +75 -79
- package/dist/chunk-NQXK7PGX.js.map +1 -0
- package/dist/{chunk-HPENTIPE.mjs → chunk-QKVL45F6.mjs} +57 -57
- package/dist/chunk-QKVL45F6.mjs.map +1 -0
- package/dist/chunk-QL3IT3TS.mjs +299 -0
- package/dist/chunk-QL3IT3TS.mjs.map +1 -0
- package/dist/chunk-ULUYX23Q.js +2213 -0
- package/dist/chunk-ULUYX23Q.js.map +1 -0
- package/dist/{chunk-TKJSKXSA.mjs → chunk-VMSZJPR5.mjs} +42 -20
- package/dist/chunk-VMSZJPR5.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-Cg0GVGwu.d.mts → wallet-standard-shim--YcrQNRt.d.ts} +216 -6
- package/dist/{wallet-standard-shim-C1tisl9S.d.ts → wallet-standard-shim-Dx7H8Ctf.d.mts} +216 -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 chunkI64FD2EH_js = require('./chunk-I64FD2EH.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
|
+
chunkI64FD2EH_js.__publicField(this, "context");
|
|
59
|
+
chunkI64FD2EH_js.__publicField(this, "originalError");
|
|
60
|
+
chunkI64FD2EH_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
|
+
chunkI64FD2EH_js.__publicField(this, "code");
|
|
78
|
+
chunkI64FD2EH_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
|
+
chunkI64FD2EH_js.__publicField(this, "code");
|
|
85
|
+
chunkI64FD2EH_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
|
+
chunkI64FD2EH_js.__publicField(this, "code");
|
|
92
|
+
chunkI64FD2EH_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
|
+
chunkI64FD2EH_js.__publicField(this, "code");
|
|
99
|
+
chunkI64FD2EH_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
|
+
chunkI64FD2EH_js.__publicField(this, "code");
|
|
106
|
+
chunkI64FD2EH_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 chunkI64FD2EH_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 chunkI64FD2EH_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 chunkI64FD2EH_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
|
+
chunkI64FD2EH_js.__publicField(this, "state");
|
|
330
|
+
chunkI64FD2EH_js.__publicField(this, "listeners", /* @__PURE__ */ new Set());
|
|
331
|
+
chunkI64FD2EH_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 = chunkI64FD2EH_js.createLogger("EventEmitter"), EventEmitter = class {
|
|
380
391
|
constructor(debug = false) {
|
|
381
|
-
|
|
382
|
-
|
|
392
|
+
chunkI64FD2EH_js.__publicField(this, "listeners", /* @__PURE__ */ new Set());
|
|
393
|
+
chunkI64FD2EH_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
|
+
chunkI64FD2EH_js.__publicField(this, "stateUpdates", 0);
|
|
450
|
+
chunkI64FD2EH_js.__publicField(this, "noopUpdates", 0);
|
|
451
|
+
chunkI64FD2EH_js.__publicField(this, "updateTimes", []);
|
|
452
|
+
chunkI64FD2EH_js.__publicField(this, "lastUpdateTime", 0);
|
|
453
|
+
chunkI64FD2EH_js.__publicField(this, "eventListenerCount", 0);
|
|
454
|
+
chunkI64FD2EH_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
|
+
chunkI64FD2EH_js.__publicField(this, "stateManager");
|
|
495
|
+
chunkI64FD2EH_js.__publicField(this, "eventEmitter");
|
|
496
|
+
chunkI64FD2EH_js.__publicField(this, "debug");
|
|
497
|
+
chunkI64FD2EH_js.__publicField(this, "logger");
|
|
498
|
+
this.stateManager = config.stateManager, this.eventEmitter = config.eventEmitter, this.debug = config.debug ?? false, this.logger = chunkI64FD2EH_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 = chunkI64FD2EH_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 = chunkI64FD2EH_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
|
+
chunkI64FD2EH_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
|
+
chunkI64FD2EH_js.__publicField(this, "walletStorage");
|
|
879
|
+
chunkI64FD2EH_js.__publicField(this, "walletChangeUnsub", null);
|
|
880
|
+
chunkI64FD2EH_js.__publicField(this, "pollTimer", null);
|
|
881
|
+
chunkI64FD2EH_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 = chunkI64FD2EH_js.createLogger("AutoConnector"), MIN_ADDRESS_LENGTH = 30, AutoConnector = class {
|
|
1066
1077
|
constructor(walletDetector, connectionManager, stateManager, walletStorage, debug = false) {
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1078
|
+
chunkI64FD2EH_js.__publicField(this, "walletDetector");
|
|
1079
|
+
chunkI64FD2EH_js.__publicField(this, "connectionManager");
|
|
1080
|
+
chunkI64FD2EH_js.__publicField(this, "stateManager");
|
|
1081
|
+
chunkI64FD2EH_js.__publicField(this, "walletStorage");
|
|
1082
|
+
chunkI64FD2EH_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
|
+
chunkI64FD2EH_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
|
+
chunkI64FD2EH_js.__publicField(this, "transactions", []);
|
|
1281
|
+
chunkI64FD2EH_js.__publicField(this, "totalTransactions", 0);
|
|
1282
|
+
chunkI64FD2EH_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
|
+
chunkI64FD2EH_js.__publicField(this, "stateManager");
|
|
1337
|
+
chunkI64FD2EH_js.__publicField(this, "walletStorage");
|
|
1338
|
+
chunkI64FD2EH_js.__publicField(this, "clusterStorage");
|
|
1339
|
+
chunkI64FD2EH_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 = chunkI64FD2EH_js.createLogger("ConnectorClient"), ConnectorClient = class {
|
|
1381
1392
|
constructor(config = {}) {
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
+
chunkI64FD2EH_js.__publicField(this, "stateManager");
|
|
1394
|
+
chunkI64FD2EH_js.__publicField(this, "eventEmitter");
|
|
1395
|
+
chunkI64FD2EH_js.__publicField(this, "walletDetector");
|
|
1396
|
+
chunkI64FD2EH_js.__publicField(this, "connectionManager");
|
|
1397
|
+
chunkI64FD2EH_js.__publicField(this, "autoConnector");
|
|
1398
|
+
chunkI64FD2EH_js.__publicField(this, "clusterManager");
|
|
1399
|
+
chunkI64FD2EH_js.__publicField(this, "transactionTracker");
|
|
1400
|
+
chunkI64FD2EH_js.__publicField(this, "debugMetrics");
|
|
1401
|
+
chunkI64FD2EH_js.__publicField(this, "healthMonitor");
|
|
1402
|
+
chunkI64FD2EH_js.__publicField(this, "initialized", false);
|
|
1403
|
+
chunkI64FD2EH_js.__publicField(this, "config");
|
|
1393
1404
|
this.config = config;
|
|
1394
1405
|
let initialState = {
|
|
1395
1406
|
wallets: [],
|
|
@@ -1529,6 +1540,12 @@ var logger5 = chunkSMUUAKC3_js.createLogger("ConnectorClient"), ConnectorClient
|
|
|
1529
1540
|
totalTransactions: this.transactionTracker.getTotalCount()
|
|
1530
1541
|
};
|
|
1531
1542
|
}
|
|
1543
|
+
/**
|
|
1544
|
+
* Get the current connector configuration
|
|
1545
|
+
*/
|
|
1546
|
+
getConfig() {
|
|
1547
|
+
return this.config;
|
|
1548
|
+
}
|
|
1532
1549
|
resetDebugMetrics() {
|
|
1533
1550
|
this.debugMetrics.resetMetrics();
|
|
1534
1551
|
}
|
|
@@ -1537,7 +1554,7 @@ var logger5 = chunkSMUUAKC3_js.createLogger("ConnectorClient"), ConnectorClient
|
|
|
1537
1554
|
}), this.walletDetector.destroy(), this.eventEmitter.offAll(), this.stateManager.clear();
|
|
1538
1555
|
}
|
|
1539
1556
|
};
|
|
1540
|
-
var logger6 =
|
|
1557
|
+
var logger6 = chunkI64FD2EH_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
1558
|
static log(error, errorInfo, context) {
|
|
1542
1559
|
if (process.env.NODE_ENV === "development" && logger6.error(error.message, {
|
|
1543
1560
|
error,
|
|
@@ -1585,8 +1602,8 @@ function classifyError(error) {
|
|
|
1585
1602
|
var ConnectorErrorBoundary = class extends react.Component {
|
|
1586
1603
|
constructor(props) {
|
|
1587
1604
|
super(props);
|
|
1588
|
-
|
|
1589
|
-
|
|
1605
|
+
chunkI64FD2EH_js.__publicField(this, "retryTimeouts", /* @__PURE__ */ new Set());
|
|
1606
|
+
chunkI64FD2EH_js.__publicField(this, "retry", () => {
|
|
1590
1607
|
let { maxRetries = 3 } = this.props;
|
|
1591
1608
|
this.state.retryCount >= maxRetries || this.setState((prevState) => ({
|
|
1592
1609
|
hasError: false,
|
|
@@ -1808,11 +1825,11 @@ function withErrorBoundary(Component2, errorBoundaryProps) {
|
|
|
1808
1825
|
let WrappedComponent = (props) => /* @__PURE__ */ jsxRuntime.jsx(ConnectorErrorBoundary, { ...errorBoundaryProps, children: /* @__PURE__ */ jsxRuntime.jsx(Component2, { ...props }) });
|
|
1809
1826
|
return WrappedComponent.displayName = `withErrorBoundary(${Component2.displayName || Component2.name})`, WrappedComponent;
|
|
1810
1827
|
}
|
|
1811
|
-
var logger7 =
|
|
1828
|
+
var logger7 = chunkI64FD2EH_js.createLogger("Polyfills"), installed = false;
|
|
1812
1829
|
function installPolyfills() {
|
|
1813
1830
|
if (!(installed || typeof window > "u"))
|
|
1814
1831
|
try {
|
|
1815
|
-
webcryptoEd25519Polyfill.install(), installed = true,
|
|
1832
|
+
webcryptoEd25519Polyfill.install(), installed = true, logger7.info("Browser compatibility polyfills installed");
|
|
1816
1833
|
} catch (error) {
|
|
1817
1834
|
logger7 && logger7.warn("Failed to install polyfills", { error }), installed = true;
|
|
1818
1835
|
}
|
|
@@ -1835,6 +1852,8 @@ function getPolyfillStatus() {
|
|
|
1835
1852
|
environment: typeof window < "u" ? "browser" : "server"
|
|
1836
1853
|
};
|
|
1837
1854
|
}
|
|
1855
|
+
|
|
1856
|
+
// src/utils/formatting.ts
|
|
1838
1857
|
function formatAddress(address, options = {}) {
|
|
1839
1858
|
let { length = 4, separator = "..." } = options;
|
|
1840
1859
|
return !address || address.length <= length * 2 + separator.length ? address : `${address.slice(0, length)}${separator}${address.slice(-length)}`;
|
|
@@ -1842,10 +1861,10 @@ function formatAddress(address, options = {}) {
|
|
|
1842
1861
|
function formatSOL(lamports, options = {}) {
|
|
1843
1862
|
let { decimals = 4, suffix = true, fast = false } = options;
|
|
1844
1863
|
if (fast && typeof lamports == "number") {
|
|
1845
|
-
let formatted2 = (lamports /
|
|
1864
|
+
let formatted2 = (lamports / 1e9).toFixed(decimals);
|
|
1846
1865
|
return suffix ? `${formatted2} SOL` : formatted2;
|
|
1847
1866
|
}
|
|
1848
|
-
let lamportsBigInt = typeof lamports == "bigint" ? lamports : BigInt(lamports), formatted = (Number(lamportsBigInt) /
|
|
1867
|
+
let lamportsBigInt = typeof lamports == "bigint" ? lamports : BigInt(lamports), formatted = (Number(lamportsBigInt) / 1e9).toFixed(decimals);
|
|
1849
1868
|
return suffix ? `${formatted} SOL` : formatted;
|
|
1850
1869
|
}
|
|
1851
1870
|
function formatNumber(value, options = {}) {
|
|
@@ -1882,7 +1901,7 @@ function isClipboardAvailable() {
|
|
|
1882
1901
|
}
|
|
1883
1902
|
function validateAddress(address) {
|
|
1884
1903
|
try {
|
|
1885
|
-
return
|
|
1904
|
+
return addresses.isAddress(address);
|
|
1886
1905
|
} catch {
|
|
1887
1906
|
return false;
|
|
1888
1907
|
}
|
|
@@ -1979,7 +1998,7 @@ async function copySignatureToClipboard(signature, options) {
|
|
|
1979
1998
|
}
|
|
1980
1999
|
|
|
1981
2000
|
// src/lib/transaction/transaction-validator.ts
|
|
1982
|
-
var logger8 =
|
|
2001
|
+
var logger8 = chunkI64FD2EH_js.createLogger("TransactionValidator"), MAX_TRANSACTION_SIZE = 1232, MIN_TRANSACTION_SIZE = 64, TransactionValidator = class {
|
|
1983
2002
|
/**
|
|
1984
2003
|
* Validate a transaction before signing
|
|
1985
2004
|
*
|
|
@@ -2084,7 +2103,7 @@ var logger8 = chunkSMUUAKC3_js.createLogger("TransactionValidator"), MAX_TRANSAC
|
|
|
2084
2103
|
};
|
|
2085
2104
|
|
|
2086
2105
|
// src/lib/transaction/transaction-signer.ts
|
|
2087
|
-
var logger9 =
|
|
2106
|
+
var logger9 = chunkI64FD2EH_js.createLogger("TransactionSigner");
|
|
2088
2107
|
function createTransactionSigner(config) {
|
|
2089
2108
|
let { wallet, account, cluster, eventEmitter } = config;
|
|
2090
2109
|
if (!wallet || !account)
|
|
@@ -2104,7 +2123,7 @@ function createTransactionSigner(config) {
|
|
|
2104
2123
|
throw logger9.error("Transaction validation failed", { errors: validation.errors }), Errors.invalidTransaction(validation.errors.join(", "));
|
|
2105
2124
|
validation.warnings.length > 0 && logger9.warn("Transaction validation warnings", { warnings: validation.warnings });
|
|
2106
2125
|
try {
|
|
2107
|
-
let signFeature = features["solana:signTransaction"], { serialized, wasWeb3js } =
|
|
2126
|
+
let signFeature = features["solana:signTransaction"], { serialized, wasWeb3js } = chunkI64FD2EH_js.prepareTransactionForWallet(transaction);
|
|
2108
2127
|
logger9.debug("Signing transaction", {
|
|
2109
2128
|
wasWeb3js,
|
|
2110
2129
|
serializedLength: serialized.length,
|
|
@@ -2157,10 +2176,10 @@ function createTransactionSigner(config) {
|
|
|
2157
2176
|
logger9.debug("Found signedTransaction property");
|
|
2158
2177
|
let bytes = signedTx.signedTransaction;
|
|
2159
2178
|
if (bytes instanceof Uint8Array)
|
|
2160
|
-
return await
|
|
2179
|
+
return await chunkI64FD2EH_js.convertSignedTransaction(bytes, wasWeb3js);
|
|
2161
2180
|
}
|
|
2162
2181
|
if (signedTx instanceof Uint8Array)
|
|
2163
|
-
return await
|
|
2182
|
+
return await chunkI64FD2EH_js.convertSignedTransaction(signedTx, wasWeb3js);
|
|
2164
2183
|
throw logger9.error("Unexpected wallet response format", {
|
|
2165
2184
|
type: typeof signedTx,
|
|
2166
2185
|
constructor: signedTx?.constructor?.name
|
|
@@ -2177,14 +2196,14 @@ function createTransactionSigner(config) {
|
|
|
2177
2196
|
return [];
|
|
2178
2197
|
if (capabilities.supportsBatchSigning)
|
|
2179
2198
|
try {
|
|
2180
|
-
let signFeature = features["solana:signAllTransactions"], prepared = transactions.map((tx) =>
|
|
2199
|
+
let signFeature = features["solana:signAllTransactions"], prepared = transactions.map((tx) => chunkI64FD2EH_js.prepareTransactionForWallet(tx)), serializedTxs = prepared.map((p) => p.serialized), wasWeb3js = prepared[0].wasWeb3js, result = await signFeature.signAllTransactions({
|
|
2181
2200
|
account,
|
|
2182
2201
|
transactions: serializedTxs,
|
|
2183
2202
|
...cluster ? { chain: cluster.id } : {}
|
|
2184
2203
|
});
|
|
2185
2204
|
return await Promise.all(
|
|
2186
2205
|
result.signedTransactions.map(
|
|
2187
|
-
(signedBytes) =>
|
|
2206
|
+
(signedBytes) => chunkI64FD2EH_js.convertSignedTransaction(signedBytes, wasWeb3js)
|
|
2188
2207
|
)
|
|
2189
2208
|
);
|
|
2190
2209
|
} catch (error) {
|
|
@@ -2216,7 +2235,7 @@ function createTransactionSigner(config) {
|
|
|
2216
2235
|
if (!capabilities.canSend)
|
|
2217
2236
|
throw Errors.featureNotSupported("sending transactions");
|
|
2218
2237
|
try {
|
|
2219
|
-
let sendFeature = features["solana:signAndSendTransaction"], { serialized } =
|
|
2238
|
+
let sendFeature = features["solana:signAndSendTransaction"], { serialized } = chunkI64FD2EH_js.prepareTransactionForWallet(transaction);
|
|
2220
2239
|
eventEmitter && eventEmitter.emit({
|
|
2221
2240
|
type: "transaction:preparing",
|
|
2222
2241
|
transaction: serialized,
|
|
@@ -2302,7 +2321,7 @@ var TransactionSignerError = class extends TransactionError {
|
|
|
2302
2321
|
function isTransactionSignerError(error) {
|
|
2303
2322
|
return error instanceof TransactionSignerError || error instanceof TransactionError;
|
|
2304
2323
|
}
|
|
2305
|
-
var logger10 =
|
|
2324
|
+
var logger10 = chunkI64FD2EH_js.createLogger("KitTransactionSigner");
|
|
2306
2325
|
function encodeShortVecLength(value) {
|
|
2307
2326
|
let bytes = [], remaining = value;
|
|
2308
2327
|
for (; remaining >= 128; )
|
|
@@ -2334,7 +2353,7 @@ function extractSignature(signedTx) {
|
|
|
2334
2353
|
let signatureStart = bytesConsumed;
|
|
2335
2354
|
return signedTx.slice(signatureStart, signatureStart + 64);
|
|
2336
2355
|
}
|
|
2337
|
-
if (
|
|
2356
|
+
if (chunkI64FD2EH_js.isWeb3jsTransaction(signedTx)) {
|
|
2338
2357
|
let signatures = signedTx.signatures;
|
|
2339
2358
|
if (!signatures || signatures.length === 0)
|
|
2340
2359
|
throw new Error("No signatures found in web3.js transaction");
|
|
@@ -2347,12 +2366,12 @@ function extractSignature(signedTx) {
|
|
|
2347
2366
|
}
|
|
2348
2367
|
throw new Error("Cannot extract signature from transaction format");
|
|
2349
2368
|
}
|
|
2350
|
-
function
|
|
2351
|
-
let signerAddress =
|
|
2369
|
+
function createKitTransactionSigner(connectorSigner) {
|
|
2370
|
+
let signerAddress = addresses.address(connectorSigner.address);
|
|
2352
2371
|
return {
|
|
2353
2372
|
address: signerAddress,
|
|
2354
|
-
async modifyAndSignTransactions(transactions) {
|
|
2355
|
-
let transactionData = transactions.map((tx) => {
|
|
2373
|
+
async modifyAndSignTransactions(transactions$1) {
|
|
2374
|
+
let transactionData = transactions$1.map((tx) => {
|
|
2356
2375
|
let messageBytes = new Uint8Array(tx.messageBytes), numSigners = Object.keys(tx.signatures).length, wireFormat = createTransactionBytesForSigning(messageBytes, numSigners);
|
|
2357
2376
|
return logger10.debug("Preparing wire format for wallet", {
|
|
2358
2377
|
signerAddress,
|
|
@@ -2375,7 +2394,7 @@ function createGillTransactionSigner(connectorSigner) {
|
|
|
2375
2394
|
let signedTxBytes;
|
|
2376
2395
|
if (signedTx instanceof Uint8Array)
|
|
2377
2396
|
signedTxBytes = signedTx;
|
|
2378
|
-
else if (
|
|
2397
|
+
else if (chunkI64FD2EH_js.isWeb3jsTransaction(signedTx)) {
|
|
2379
2398
|
let txObj = signedTx;
|
|
2380
2399
|
if (typeof txObj.serialize == "function")
|
|
2381
2400
|
signedTxBytes = txObj.serialize();
|
|
@@ -2395,7 +2414,7 @@ function createGillTransactionSigner(connectorSigner) {
|
|
|
2395
2414
|
modifiedLength: signedTxBytes.length,
|
|
2396
2415
|
difference: signedTxBytes.length - wireFormat.length
|
|
2397
2416
|
});
|
|
2398
|
-
let walletTransaction =
|
|
2417
|
+
let walletTransaction = transactions.getTransactionDecoder().decode(signedTxBytes), originalWithLifetime = originalTransaction, result = {
|
|
2399
2418
|
...walletTransaction,
|
|
2400
2419
|
...originalWithLifetime.lifetimeConstraint ? {
|
|
2401
2420
|
lifetimeConstraint: originalWithLifetime.lifetimeConstraint
|
|
@@ -2404,28 +2423,31 @@ function createGillTransactionSigner(connectorSigner) {
|
|
|
2404
2423
|
return logger10.debug("Using modified transaction from wallet", {
|
|
2405
2424
|
modifiedMessageBytesLength: walletTransaction.messageBytes.length,
|
|
2406
2425
|
signatures: Object.keys(walletTransaction.signatures)
|
|
2407
|
-
}), result;
|
|
2426
|
+
}), transactions.assertIsTransactionWithinSizeLimit(result), result;
|
|
2408
2427
|
}
|
|
2409
|
-
let
|
|
2410
|
-
|
|
2428
|
+
let extractedSignatureBytes = extractSignature(signedTxBytes), signatureBase58 = codecs.getBase58Decoder().decode(extractedSignatureBytes);
|
|
2429
|
+
logger10.debug("Extracted signature from wallet (unmodified)", {
|
|
2411
2430
|
signerAddress,
|
|
2412
|
-
signatureLength:
|
|
2431
|
+
signatureLength: extractedSignatureBytes.length,
|
|
2413
2432
|
signatureBase58
|
|
2414
2433
|
// Human-readable signature for debugging/logging
|
|
2415
|
-
})
|
|
2434
|
+
});
|
|
2435
|
+
let typedSignatureBytes = extractedSignatureBytes, signedTransaction = {
|
|
2416
2436
|
...originalTransaction,
|
|
2417
2437
|
signatures: Object.freeze({
|
|
2418
2438
|
...originalTransaction.signatures,
|
|
2419
|
-
[signerAddress]:
|
|
2439
|
+
[signerAddress]: typedSignatureBytes
|
|
2420
2440
|
})
|
|
2421
2441
|
};
|
|
2442
|
+
return transactions.assertIsTransactionWithinSizeLimit(signedTransaction), signedTransaction;
|
|
2422
2443
|
} catch (error) {
|
|
2423
|
-
return logger10.error("Failed to decode signed transaction", { error }), originalTransaction;
|
|
2444
|
+
return logger10.error("Failed to decode signed transaction", { error }), transactions.assertIsTransactionWithinSizeLimit(originalTransaction), originalTransaction;
|
|
2424
2445
|
}
|
|
2425
2446
|
});
|
|
2426
2447
|
}
|
|
2427
2448
|
};
|
|
2428
2449
|
}
|
|
2450
|
+
var createGillTransactionSigner = createKitTransactionSigner;
|
|
2429
2451
|
|
|
2430
2452
|
exports.ClipboardErrorType = ClipboardErrorType;
|
|
2431
2453
|
exports.ConfigurationError = ConfigurationError;
|
|
@@ -2445,6 +2467,7 @@ exports.copyAddressToClipboard = copyAddressToClipboard;
|
|
|
2445
2467
|
exports.copySignatureToClipboard = copySignatureToClipboard;
|
|
2446
2468
|
exports.copyToClipboard = copyToClipboard;
|
|
2447
2469
|
exports.createGillTransactionSigner = createGillTransactionSigner;
|
|
2470
|
+
exports.createKitTransactionSigner = createKitTransactionSigner;
|
|
2448
2471
|
exports.createTransactionSigner = createTransactionSigner;
|
|
2449
2472
|
exports.formatAddress = formatAddress;
|
|
2450
2473
|
exports.formatNumber = formatNumber;
|
|
@@ -2489,5 +2512,5 @@ exports.toClusterId = toClusterId;
|
|
|
2489
2512
|
exports.toConnectorError = toConnectorError;
|
|
2490
2513
|
exports.truncate = truncate;
|
|
2491
2514
|
exports.withErrorBoundary = withErrorBoundary;
|
|
2492
|
-
//# sourceMappingURL=chunk-
|
|
2493
|
-
//# sourceMappingURL=chunk-
|
|
2515
|
+
//# sourceMappingURL=chunk-JUZVCBAI.js.map
|
|
2516
|
+
//# sourceMappingURL=chunk-JUZVCBAI.js.map
|