@solana/connector 0.1.7 → 0.1.8
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 +83 -5
- package/dist/{chunk-APQGEW7S.mjs → chunk-6F6M6L7R.mjs} +73 -165
- package/dist/chunk-6F6M6L7R.mjs.map +1 -0
- package/dist/{chunk-VZ5Y6DIM.js → chunk-AOIXHVRH.js} +80 -235
- package/dist/chunk-AOIXHVRH.js.map +1 -0
- package/dist/chunk-DSUCH44G.js +678 -0
- package/dist/chunk-DSUCH44G.js.map +1 -0
- package/dist/{chunk-VA6LKXCQ.js → chunk-FTXIXM43.js} +157 -263
- package/dist/chunk-FTXIXM43.js.map +1 -0
- package/dist/{chunk-TQRJYZNK.mjs → chunk-G575OAT4.mjs} +71 -218
- package/dist/chunk-G575OAT4.mjs.map +1 -0
- package/dist/chunk-J7DHGLW6.mjs +638 -0
- package/dist/chunk-J7DHGLW6.mjs.map +1 -0
- package/dist/{chunk-Z22V3D4E.js → chunk-K3BNIGPX.js} +95 -37
- package/dist/chunk-K3BNIGPX.js.map +1 -0
- package/dist/{chunk-JK47EFJT.mjs → chunk-TTOKQAPX.mjs} +65 -14
- package/dist/chunk-TTOKQAPX.mjs.map +1 -0
- package/dist/compat.d.mts +1 -1
- package/dist/compat.d.ts +1 -1
- package/dist/compat.js +40 -39
- package/dist/compat.js.map +1 -1
- package/dist/compat.mjs +39 -38
- package/dist/compat.mjs.map +1 -1
- package/dist/headless.d.mts +447 -151
- package/dist/headless.d.ts +447 -151
- package/dist/headless.js +214 -194
- package/dist/headless.mjs +3 -3
- package/dist/index.d.mts +7 -6
- package/dist/index.d.ts +7 -6
- package/dist/index.js +268 -224
- package/dist/index.mjs +4 -4
- package/dist/react.d.mts +108 -7
- package/dist/react.d.ts +108 -7
- package/dist/react.js +54 -30
- package/dist/react.mjs +2 -2
- package/dist/{wallet-standard-shim-DiMvGjOk.d.ts → standard-shim-CT49DM5l.d.mts} +38 -247
- package/dist/{wallet-standard-shim-D4CYG5sU.d.mts → standard-shim-D9guL5fz.d.ts} +38 -247
- package/dist/{transaction-signer-CpGEvp7S.d.mts → transaction-signer-T-KVQFi8.d.mts} +1 -1
- package/dist/{transaction-signer-CpGEvp7S.d.ts → transaction-signer-T-KVQFi8.d.ts} +1 -1
- package/package.json +3 -3
- package/dist/chunk-APQGEW7S.mjs.map +0 -1
- package/dist/chunk-I64FD2EH.js +0 -312
- package/dist/chunk-I64FD2EH.js.map +0 -1
- package/dist/chunk-JK47EFJT.mjs.map +0 -1
- package/dist/chunk-QL3IT3TS.mjs +0 -299
- package/dist/chunk-QL3IT3TS.mjs.map +0 -1
- package/dist/chunk-TQRJYZNK.mjs.map +0 -1
- package/dist/chunk-VA6LKXCQ.js.map +0 -1
- package/dist/chunk-VZ5Y6DIM.js.map +0 -1
- package/dist/chunk-Z22V3D4E.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkDSUCH44G_js = require('./chunk-DSUCH44G.js');
|
|
4
4
|
var react = require('react');
|
|
5
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
var webcryptoEd25519Polyfill = require('@solana/webcrypto-ed25519-polyfill');
|
|
@@ -8,8 +8,25 @@ var addresses = require('@solana/addresses');
|
|
|
8
8
|
var transactions = require('@solana/transactions');
|
|
9
9
|
var codecs = require('@solana/codecs');
|
|
10
10
|
|
|
11
|
-
// src/lib/
|
|
12
|
-
var registry = null
|
|
11
|
+
// src/lib/wallet/standard-shim.ts
|
|
12
|
+
var registry = null, registryInitPromise = null, registryInitResolve = null, ready = new Promise((resolve, reject) => {
|
|
13
|
+
if (typeof window > "u") {
|
|
14
|
+
resolve();
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
registryInitResolve = resolve;
|
|
18
|
+
let nav = window.navigator;
|
|
19
|
+
if (nav.wallets && typeof nav.wallets.get == "function") {
|
|
20
|
+
registry = nav.wallets, resolve();
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
registryInitPromise = import('@wallet-standard/app').then((mod) => {
|
|
24
|
+
let walletStandardRegistry = mod.getWallets?.();
|
|
25
|
+
walletStandardRegistry && (registry = walletStandardRegistry), resolve();
|
|
26
|
+
}).catch((err) => {
|
|
27
|
+
console.warn("[standard-shim] Failed to load @wallet-standard/app:", err), resolve();
|
|
28
|
+
});
|
|
29
|
+
});
|
|
13
30
|
function getWalletsRegistry() {
|
|
14
31
|
if (typeof window > "u")
|
|
15
32
|
return {
|
|
@@ -17,12 +34,13 @@ function getWalletsRegistry() {
|
|
|
17
34
|
on: () => () => {
|
|
18
35
|
}
|
|
19
36
|
};
|
|
20
|
-
if (!registry) {
|
|
37
|
+
if (!registry && !registryInitPromise) {
|
|
21
38
|
let nav = window.navigator;
|
|
22
|
-
nav.wallets && typeof nav.wallets.get == "function" ? registry = nav.wallets : import('@wallet-standard/app').then((mod) => {
|
|
39
|
+
nav.wallets && typeof nav.wallets.get == "function" ? (registry = nav.wallets, registryInitResolve?.()) : registryInitPromise = import('@wallet-standard/app').then((mod) => {
|
|
23
40
|
let walletStandardRegistry = mod.getWallets?.();
|
|
24
|
-
walletStandardRegistry && (registry = walletStandardRegistry);
|
|
41
|
+
walletStandardRegistry && (registry = walletStandardRegistry), registryInitResolve?.();
|
|
25
42
|
}).catch(() => {
|
|
43
|
+
registryInitResolve?.();
|
|
26
44
|
});
|
|
27
45
|
}
|
|
28
46
|
return {
|
|
@@ -51,135 +69,6 @@ function getWalletsRegistry() {
|
|
|
51
69
|
};
|
|
52
70
|
}
|
|
53
71
|
|
|
54
|
-
// src/lib/errors/index.ts
|
|
55
|
-
var ConnectorError = class extends Error {
|
|
56
|
-
constructor(message, context, originalError) {
|
|
57
|
-
super(message);
|
|
58
|
-
chunkI64FD2EH_js.__publicField(this, "context");
|
|
59
|
-
chunkI64FD2EH_js.__publicField(this, "originalError");
|
|
60
|
-
chunkI64FD2EH_js.__publicField(this, "timestamp");
|
|
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);
|
|
62
|
-
}
|
|
63
|
-
toJSON() {
|
|
64
|
-
return {
|
|
65
|
-
name: this.name,
|
|
66
|
-
code: this.code,
|
|
67
|
-
message: this.message,
|
|
68
|
-
recoverable: this.recoverable,
|
|
69
|
-
context: this.context,
|
|
70
|
-
timestamp: this.timestamp,
|
|
71
|
-
originalError: this.originalError?.message
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
}, ConnectionError = class extends ConnectorError {
|
|
75
|
-
constructor(code, message, context, originalError) {
|
|
76
|
-
super(message, context, originalError);
|
|
77
|
-
chunkI64FD2EH_js.__publicField(this, "code");
|
|
78
|
-
chunkI64FD2EH_js.__publicField(this, "recoverable", true);
|
|
79
|
-
this.code = code;
|
|
80
|
-
}
|
|
81
|
-
}, ValidationError = class extends ConnectorError {
|
|
82
|
-
constructor(code, message, context, originalError) {
|
|
83
|
-
super(message, context, originalError);
|
|
84
|
-
chunkI64FD2EH_js.__publicField(this, "code");
|
|
85
|
-
chunkI64FD2EH_js.__publicField(this, "recoverable", false);
|
|
86
|
-
this.code = code;
|
|
87
|
-
}
|
|
88
|
-
}, ConfigurationError = class extends ConnectorError {
|
|
89
|
-
constructor(code, message, context, originalError) {
|
|
90
|
-
super(message, context, originalError);
|
|
91
|
-
chunkI64FD2EH_js.__publicField(this, "code");
|
|
92
|
-
chunkI64FD2EH_js.__publicField(this, "recoverable", false);
|
|
93
|
-
this.code = code;
|
|
94
|
-
}
|
|
95
|
-
}, NetworkError = class extends ConnectorError {
|
|
96
|
-
constructor(code, message, context, originalError) {
|
|
97
|
-
super(message, context, originalError);
|
|
98
|
-
chunkI64FD2EH_js.__publicField(this, "code");
|
|
99
|
-
chunkI64FD2EH_js.__publicField(this, "recoverable", true);
|
|
100
|
-
this.code = code;
|
|
101
|
-
}
|
|
102
|
-
}, TransactionError = class extends ConnectorError {
|
|
103
|
-
constructor(code, message, context, originalError) {
|
|
104
|
-
super(message, context, originalError);
|
|
105
|
-
chunkI64FD2EH_js.__publicField(this, "code");
|
|
106
|
-
chunkI64FD2EH_js.__publicField(this, "recoverable");
|
|
107
|
-
this.code = code, this.recoverable = ["USER_REJECTED", "SEND_FAILED", "SIMULATION_FAILED"].includes(code);
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
function isConnectorError(error) {
|
|
111
|
-
return error instanceof ConnectorError;
|
|
112
|
-
}
|
|
113
|
-
function isConnectionError(error) {
|
|
114
|
-
return error instanceof ConnectionError;
|
|
115
|
-
}
|
|
116
|
-
function isValidationError(error) {
|
|
117
|
-
return error instanceof ValidationError;
|
|
118
|
-
}
|
|
119
|
-
function isConfigurationError(error) {
|
|
120
|
-
return error instanceof ConfigurationError;
|
|
121
|
-
}
|
|
122
|
-
function isNetworkError(error) {
|
|
123
|
-
return error instanceof NetworkError;
|
|
124
|
-
}
|
|
125
|
-
function isTransactionError(error) {
|
|
126
|
-
return error instanceof TransactionError;
|
|
127
|
-
}
|
|
128
|
-
var Errors = {
|
|
129
|
-
walletNotConnected: (context) => new ConnectionError("WALLET_NOT_CONNECTED", "No wallet connected", context),
|
|
130
|
-
walletNotFound: (walletName) => new ConnectionError("WALLET_NOT_FOUND", `Wallet not found${walletName ? `: ${walletName}` : ""}`, {
|
|
131
|
-
walletName
|
|
132
|
-
}),
|
|
133
|
-
connectionFailed: (originalError) => new ConnectionError("CONNECTION_FAILED", "Failed to connect to wallet", void 0, originalError),
|
|
134
|
-
accountNotAvailable: (address) => new ConnectionError("ACCOUNT_NOT_AVAILABLE", "Requested account not available", { address }),
|
|
135
|
-
invalidTransaction: (reason, context) => new ValidationError("INVALID_TRANSACTION", `Invalid transaction: ${reason}`, context),
|
|
136
|
-
invalidFormat: (expectedFormat, actualFormat) => new ValidationError("INVALID_FORMAT", `Invalid format: expected ${expectedFormat}`, {
|
|
137
|
-
expectedFormat,
|
|
138
|
-
actualFormat
|
|
139
|
-
}),
|
|
140
|
-
unsupportedFormat: (format) => new ValidationError("UNSUPPORTED_FORMAT", `Unsupported format: ${format}`, { format }),
|
|
141
|
-
missingProvider: (hookName) => new ConfigurationError(
|
|
142
|
-
"MISSING_PROVIDER",
|
|
143
|
-
`${hookName} must be used within ConnectorProvider. Wrap your app with <ConnectorProvider> or <UnifiedProvider>.`,
|
|
144
|
-
{ hookName }
|
|
145
|
-
),
|
|
146
|
-
clusterNotFound: (clusterId, availableClusters) => new ConfigurationError(
|
|
147
|
-
"CLUSTER_NOT_FOUND",
|
|
148
|
-
`Cluster ${clusterId} not found. Available clusters: ${availableClusters.join(", ")}`,
|
|
149
|
-
{ clusterId, availableClusters }
|
|
150
|
-
),
|
|
151
|
-
rpcError: (message, originalError) => new NetworkError("RPC_ERROR", message, void 0, originalError),
|
|
152
|
-
networkTimeout: () => new NetworkError("NETWORK_TIMEOUT", "Network request timed out"),
|
|
153
|
-
signingFailed: (originalError) => new TransactionError("SIGNING_FAILED", "Failed to sign transaction", void 0, originalError),
|
|
154
|
-
featureNotSupported: (feature) => new TransactionError("FEATURE_NOT_SUPPORTED", `Wallet does not support ${feature}`, { feature }),
|
|
155
|
-
userRejected: (operation) => new TransactionError("USER_REJECTED", `User rejected ${operation}`, { operation })
|
|
156
|
-
};
|
|
157
|
-
function toConnectorError(error, defaultMessage = "An unexpected error occurred") {
|
|
158
|
-
if (isConnectorError(error))
|
|
159
|
-
return error;
|
|
160
|
-
if (error instanceof Error) {
|
|
161
|
-
let message = error.message.toLowerCase();
|
|
162
|
-
return message.includes("user rejected") || message.includes("user denied") ? Errors.userRejected("transaction") : message.includes("wallet not found") || message.includes("not installed") ? Errors.walletNotFound() : message.includes("not connected") ? Errors.walletNotConnected() : message.includes("network") || message.includes("fetch") ? Errors.rpcError(error.message, error) : message.includes("invalid") ? new ValidationError("VALIDATION_FAILED", error.message, void 0, error) : new TransactionError("SIGNING_FAILED", error.message, void 0, error);
|
|
163
|
-
}
|
|
164
|
-
return new TransactionError("SIGNING_FAILED", defaultMessage, { originalError: String(error) });
|
|
165
|
-
}
|
|
166
|
-
function getUserFriendlyMessage(error) {
|
|
167
|
-
return isConnectorError(error) ? {
|
|
168
|
-
WALLET_NOT_CONNECTED: "Please connect your wallet to continue.",
|
|
169
|
-
WALLET_NOT_FOUND: "Wallet not found. Please install a supported wallet.",
|
|
170
|
-
CONNECTION_FAILED: "Failed to connect to wallet. Please try again.",
|
|
171
|
-
USER_REJECTED: "Transaction was cancelled.",
|
|
172
|
-
FEATURE_NOT_SUPPORTED: "This wallet does not support this feature.",
|
|
173
|
-
SIGNING_FAILED: "Failed to sign transaction. Please try again.",
|
|
174
|
-
SEND_FAILED: "Failed to send transaction. Please try again.",
|
|
175
|
-
INVALID_CLUSTER: "Invalid network configuration.",
|
|
176
|
-
CLUSTER_NOT_FOUND: "Network not found.",
|
|
177
|
-
MISSING_PROVIDER: "Application not properly configured.",
|
|
178
|
-
RPC_ERROR: "Network error. Please check your connection.",
|
|
179
|
-
NETWORK_TIMEOUT: "Request timed out. Please try again."
|
|
180
|
-
}[error.code] || error.message || "An error occurred." : "An unexpected error occurred. Please try again.";
|
|
181
|
-
}
|
|
182
|
-
|
|
183
72
|
// src/utils/network.ts
|
|
184
73
|
var PUBLIC_RPC_ENDPOINTS = {
|
|
185
74
|
mainnet: "https://api.mainnet-beta.solana.com",
|
|
@@ -207,7 +96,7 @@ function toClusterId(network) {
|
|
|
207
96
|
function getDefaultRpcUrl(network) {
|
|
208
97
|
let normalized = normalizeNetwork(network);
|
|
209
98
|
try {
|
|
210
|
-
return
|
|
99
|
+
return chunkDSUCH44G_js.getPublicSolanaRpcUrl(normalized);
|
|
211
100
|
} catch {
|
|
212
101
|
return PUBLIC_RPC_ENDPOINTS[normalized] ?? PUBLIC_RPC_ENDPOINTS.localnet;
|
|
213
102
|
}
|
|
@@ -262,14 +151,14 @@ function getClusterExplorerUrl(cluster, path) {
|
|
|
262
151
|
}
|
|
263
152
|
function getTransactionUrl(signature, cluster) {
|
|
264
153
|
let clusterType = getClusterType(cluster), explorerCluster = clusterType === "custom" || clusterType === "localnet" ? "devnet" : clusterType;
|
|
265
|
-
return
|
|
154
|
+
return chunkDSUCH44G_js.getExplorerLink({
|
|
266
155
|
transaction: signature,
|
|
267
156
|
cluster: explorerCluster === "mainnet" ? "mainnet" : explorerCluster
|
|
268
157
|
});
|
|
269
158
|
}
|
|
270
159
|
function getAddressUrl(address, cluster) {
|
|
271
160
|
let clusterType = getClusterType(cluster), explorerCluster = clusterType === "custom" || clusterType === "localnet" ? "devnet" : clusterType;
|
|
272
|
-
return
|
|
161
|
+
return chunkDSUCH44G_js.getExplorerLink({
|
|
273
162
|
address,
|
|
274
163
|
cluster: explorerCluster === "mainnet" ? "mainnet" : explorerCluster
|
|
275
164
|
});
|
|
@@ -332,9 +221,9 @@ var POLL_INTERVALS_MS = [1e3, 2e3, 3e3, 5e3, 5e3], DEFAULT_MAX_RETRIES = 3, DEFA
|
|
|
332
221
|
// src/lib/core/state-manager.ts
|
|
333
222
|
var StateManager = class {
|
|
334
223
|
constructor(initialState) {
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
224
|
+
chunkDSUCH44G_js.__publicField(this, "state");
|
|
225
|
+
chunkDSUCH44G_js.__publicField(this, "listeners", /* @__PURE__ */ new Set());
|
|
226
|
+
chunkDSUCH44G_js.__publicField(this, "notifyTimeout");
|
|
338
227
|
this.state = initialState;
|
|
339
228
|
}
|
|
340
229
|
/**
|
|
@@ -393,10 +282,10 @@ var StateManager = class {
|
|
|
393
282
|
};
|
|
394
283
|
|
|
395
284
|
// src/lib/core/event-emitter.ts
|
|
396
|
-
var logger =
|
|
285
|
+
var logger = chunkDSUCH44G_js.createLogger("EventEmitter"), EventEmitter = class {
|
|
397
286
|
constructor(debug = false) {
|
|
398
|
-
|
|
399
|
-
|
|
287
|
+
chunkDSUCH44G_js.__publicField(this, "listeners", /* @__PURE__ */ new Set());
|
|
288
|
+
chunkDSUCH44G_js.__publicField(this, "debug");
|
|
400
289
|
this.debug = debug;
|
|
401
290
|
}
|
|
402
291
|
/**
|
|
@@ -452,12 +341,12 @@ var logger = chunkI64FD2EH_js.createLogger("EventEmitter"), EventEmitter = class
|
|
|
452
341
|
// src/lib/core/debug-metrics.ts
|
|
453
342
|
var DebugMetrics = class {
|
|
454
343
|
constructor() {
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
344
|
+
chunkDSUCH44G_js.__publicField(this, "stateUpdates", 0);
|
|
345
|
+
chunkDSUCH44G_js.__publicField(this, "noopUpdates", 0);
|
|
346
|
+
chunkDSUCH44G_js.__publicField(this, "updateTimes", []);
|
|
347
|
+
chunkDSUCH44G_js.__publicField(this, "lastUpdateTime", 0);
|
|
348
|
+
chunkDSUCH44G_js.__publicField(this, "eventListenerCount", 0);
|
|
349
|
+
chunkDSUCH44G_js.__publicField(this, "subscriptionCount", 0);
|
|
461
350
|
}
|
|
462
351
|
/**
|
|
463
352
|
* Record a state update attempt
|
|
@@ -497,11 +386,11 @@ var DebugMetrics = class {
|
|
|
497
386
|
// src/lib/core/base-collaborator.ts
|
|
498
387
|
var BaseCollaborator = class {
|
|
499
388
|
constructor(config, loggerPrefix) {
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
this.stateManager = config.stateManager, this.eventEmitter = config.eventEmitter, this.debug = config.debug ?? false, this.logger =
|
|
389
|
+
chunkDSUCH44G_js.__publicField(this, "stateManager");
|
|
390
|
+
chunkDSUCH44G_js.__publicField(this, "eventEmitter");
|
|
391
|
+
chunkDSUCH44G_js.__publicField(this, "debug");
|
|
392
|
+
chunkDSUCH44G_js.__publicField(this, "logger");
|
|
393
|
+
this.stateManager = config.stateManager, this.eventEmitter = config.eventEmitter, this.debug = config.debug ?? false, this.logger = chunkDSUCH44G_js.createLogger(loggerPrefix);
|
|
505
394
|
}
|
|
506
395
|
/**
|
|
507
396
|
* Log debug message if debug mode is enabled
|
|
@@ -523,8 +412,8 @@ var BaseCollaborator = class {
|
|
|
523
412
|
}
|
|
524
413
|
};
|
|
525
414
|
|
|
526
|
-
// src/lib/
|
|
527
|
-
var logger2 =
|
|
415
|
+
// src/lib/wallet/authenticity-verifier.ts
|
|
416
|
+
var logger2 = chunkDSUCH44G_js.createLogger("WalletAuthenticity"), WalletAuthenticityVerifier = class {
|
|
528
417
|
/**
|
|
529
418
|
* Verify a wallet's authenticity using dynamic heuristics
|
|
530
419
|
*
|
|
@@ -733,8 +622,8 @@ var logger2 = chunkI64FD2EH_js.createLogger("WalletAuthenticity"), WalletAuthent
|
|
|
733
622
|
}
|
|
734
623
|
};
|
|
735
624
|
|
|
736
|
-
// src/lib/
|
|
737
|
-
var logger3 =
|
|
625
|
+
// src/lib/wallet/detector.ts
|
|
626
|
+
var logger3 = chunkDSUCH44G_js.createLogger("WalletDetector");
|
|
738
627
|
function hasFeature(wallet, featureName) {
|
|
739
628
|
return wallet.features != null && wallet.features[featureName] !== void 0;
|
|
740
629
|
}
|
|
@@ -756,10 +645,17 @@ function verifyWalletName(wallet, requestedName) {
|
|
|
756
645
|
var WalletDetector = class extends BaseCollaborator {
|
|
757
646
|
constructor(stateManager, eventEmitter, debug = false) {
|
|
758
647
|
super({ stateManager, eventEmitter, debug }, "WalletDetector");
|
|
759
|
-
|
|
648
|
+
chunkDSUCH44G_js.__publicField(this, "unsubscribers", []);
|
|
760
649
|
}
|
|
761
650
|
/**
|
|
762
|
-
* Initialize wallet detection
|
|
651
|
+
* Initialize wallet detection (synchronous)
|
|
652
|
+
*
|
|
653
|
+
* Sets up registry listeners immediately. Due to the async nature of registry initialization,
|
|
654
|
+
* the initial call to `get()` may return an empty array if called before the registry is ready.
|
|
655
|
+
* Event listeners will fire as wallets register, providing eventual consistency.
|
|
656
|
+
*
|
|
657
|
+
* For deterministic detection where you need all wallets available immediately,
|
|
658
|
+
* use `initializeAsync()` instead.
|
|
763
659
|
*/
|
|
764
660
|
initialize() {
|
|
765
661
|
if (!(typeof window > "u"))
|
|
@@ -782,6 +678,24 @@ var WalletDetector = class extends BaseCollaborator {
|
|
|
782
678
|
} catch {
|
|
783
679
|
}
|
|
784
680
|
}
|
|
681
|
+
/**
|
|
682
|
+
* Initialize wallet detection with deterministic registry availability (async)
|
|
683
|
+
*
|
|
684
|
+
* Awaits the registry `ready` Promise before performing initial detection,
|
|
685
|
+
* ensuring all registered wallets are available on the first `get()` call.
|
|
686
|
+
*
|
|
687
|
+
* Use this when you need guaranteed wallet availability before proceeding
|
|
688
|
+
* (e.g., auto-reconnect logic, checking if a specific wallet is installed).
|
|
689
|
+
*
|
|
690
|
+
* @example
|
|
691
|
+
* ```ts
|
|
692
|
+
* await walletDetector.initializeAsync();
|
|
693
|
+
* const wallets = walletDetector.getDetectedWallets(); // Guaranteed populated
|
|
694
|
+
* ```
|
|
695
|
+
*/
|
|
696
|
+
async initializeAsync() {
|
|
697
|
+
typeof window > "u" || (await ready, this.initialize());
|
|
698
|
+
}
|
|
785
699
|
/**
|
|
786
700
|
* Check if a specific wallet is available immediately via direct window object detection
|
|
787
701
|
*/
|
|
@@ -868,7 +782,7 @@ var WalletDetector = class extends BaseCollaborator {
|
|
|
868
782
|
}
|
|
869
783
|
};
|
|
870
784
|
|
|
871
|
-
// src/lib/
|
|
785
|
+
// src/lib/wallet/connection-manager.ts
|
|
872
786
|
function getConnectFeature(wallet) {
|
|
873
787
|
return wallet.features["standard:connect"]?.connect ?? null;
|
|
874
788
|
}
|
|
@@ -881,10 +795,10 @@ function getEventsFeature(wallet) {
|
|
|
881
795
|
var ConnectionManager = class extends BaseCollaborator {
|
|
882
796
|
constructor(stateManager, eventEmitter, walletStorage, debug = false) {
|
|
883
797
|
super({ stateManager, eventEmitter, debug }, "ConnectionManager");
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
798
|
+
chunkDSUCH44G_js.__publicField(this, "walletStorage");
|
|
799
|
+
chunkDSUCH44G_js.__publicField(this, "walletChangeUnsub", null);
|
|
800
|
+
chunkDSUCH44G_js.__publicField(this, "pollTimer", null);
|
|
801
|
+
chunkDSUCH44G_js.__publicField(this, "pollAttempts", 0);
|
|
888
802
|
this.walletStorage = walletStorage;
|
|
889
803
|
}
|
|
890
804
|
/**
|
|
@@ -1078,14 +992,14 @@ var ConnectionManager = class extends BaseCollaborator {
|
|
|
1078
992
|
}
|
|
1079
993
|
};
|
|
1080
994
|
|
|
1081
|
-
// src/lib/
|
|
1082
|
-
var logger4 =
|
|
995
|
+
// src/lib/wallet/auto-connector.ts
|
|
996
|
+
var logger4 = chunkDSUCH44G_js.createLogger("AutoConnector"), MIN_ADDRESS_LENGTH = 30, AutoConnector = class {
|
|
1083
997
|
constructor(walletDetector, connectionManager, stateManager, walletStorage, debug = false) {
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
998
|
+
chunkDSUCH44G_js.__publicField(this, "walletDetector");
|
|
999
|
+
chunkDSUCH44G_js.__publicField(this, "connectionManager");
|
|
1000
|
+
chunkDSUCH44G_js.__publicField(this, "stateManager");
|
|
1001
|
+
chunkDSUCH44G_js.__publicField(this, "walletStorage");
|
|
1002
|
+
chunkDSUCH44G_js.__publicField(this, "debug");
|
|
1089
1003
|
this.walletDetector = walletDetector, this.connectionManager = connectionManager, this.stateManager = stateManager, this.walletStorage = walletStorage, this.debug = debug;
|
|
1090
1004
|
}
|
|
1091
1005
|
async attemptAutoConnect() {
|
|
@@ -1192,7 +1106,7 @@ var logger4 = chunkI64FD2EH_js.createLogger("AutoConnector"), MIN_ADDRESS_LENGTH
|
|
|
1192
1106
|
]
|
|
1193
1107
|
},
|
|
1194
1108
|
true
|
|
1195
|
-
);
|
|
1109
|
+
), await ready;
|
|
1196
1110
|
let walletsApi = getWalletsRegistry(), registryWallet = walletsApi.get().find((w) => w.name === storedWalletName), walletToUse = registryWallet || wallet;
|
|
1197
1111
|
return this.debug && logger4.info("Attempting to connect via instant auto-connect", {
|
|
1198
1112
|
walletName: storedWalletName,
|
|
@@ -1239,7 +1153,7 @@ var logger4 = chunkI64FD2EH_js.createLogger("AutoConnector"), MIN_ADDRESS_LENGTH
|
|
|
1239
1153
|
var ClusterManager = class extends BaseCollaborator {
|
|
1240
1154
|
constructor(stateManager, eventEmitter, clusterStorage, config, debug = false) {
|
|
1241
1155
|
super({ stateManager, eventEmitter, debug }, "ClusterManager");
|
|
1242
|
-
|
|
1156
|
+
chunkDSUCH44G_js.__publicField(this, "clusterStorage");
|
|
1243
1157
|
if (this.clusterStorage = clusterStorage, config) {
|
|
1244
1158
|
let clusters = config.clusters ?? [], initialClusterId = this.clusterStorage?.get() ?? config.initialCluster ?? "solana:mainnet", initialCluster = clusters.find((c) => c.id === initialClusterId) ?? clusters[0] ?? null;
|
|
1245
1159
|
this.stateManager.updateState({
|
|
@@ -1254,7 +1168,7 @@ var ClusterManager = class extends BaseCollaborator {
|
|
|
1254
1168
|
async setCluster(clusterId) {
|
|
1255
1169
|
let state = this.getState(), previousClusterId = state.cluster?.id || null, cluster = state.clusters.find((c) => c.id === clusterId);
|
|
1256
1170
|
if (!cluster)
|
|
1257
|
-
throw Errors.clusterNotFound(
|
|
1171
|
+
throw chunkDSUCH44G_js.Errors.clusterNotFound(
|
|
1258
1172
|
clusterId,
|
|
1259
1173
|
state.clusters.map((c) => c.id)
|
|
1260
1174
|
);
|
|
@@ -1283,9 +1197,9 @@ var ClusterManager = class extends BaseCollaborator {
|
|
|
1283
1197
|
var TransactionTracker = class extends BaseCollaborator {
|
|
1284
1198
|
constructor(stateManager, eventEmitter, maxTransactions = 20, debug = false) {
|
|
1285
1199
|
super({ stateManager, eventEmitter, debug }, "TransactionTracker");
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1200
|
+
chunkDSUCH44G_js.__publicField(this, "transactions", []);
|
|
1201
|
+
chunkDSUCH44G_js.__publicField(this, "totalTransactions", 0);
|
|
1202
|
+
chunkDSUCH44G_js.__publicField(this, "maxTransactions");
|
|
1289
1203
|
this.maxTransactions = maxTransactions;
|
|
1290
1204
|
}
|
|
1291
1205
|
/**
|
|
@@ -1339,10 +1253,10 @@ var TransactionTracker = class extends BaseCollaborator {
|
|
|
1339
1253
|
// src/lib/health/health-monitor.ts
|
|
1340
1254
|
var HealthMonitor = class {
|
|
1341
1255
|
constructor(stateManager, walletStorage, clusterStorage, isInitialized) {
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1256
|
+
chunkDSUCH44G_js.__publicField(this, "stateManager");
|
|
1257
|
+
chunkDSUCH44G_js.__publicField(this, "walletStorage");
|
|
1258
|
+
chunkDSUCH44G_js.__publicField(this, "clusterStorage");
|
|
1259
|
+
chunkDSUCH44G_js.__publicField(this, "isInitialized");
|
|
1346
1260
|
this.stateManager = stateManager, this.walletStorage = walletStorage, this.clusterStorage = clusterStorage, this.isInitialized = isInitialized ?? (() => true);
|
|
1347
1261
|
}
|
|
1348
1262
|
/**
|
|
@@ -1394,19 +1308,19 @@ var HealthMonitor = class {
|
|
|
1394
1308
|
};
|
|
1395
1309
|
|
|
1396
1310
|
// src/lib/core/connector-client.ts
|
|
1397
|
-
var logger5 =
|
|
1311
|
+
var logger5 = chunkDSUCH44G_js.createLogger("ConnectorClient"), ConnectorClient = class {
|
|
1398
1312
|
constructor(config = {}) {
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1313
|
+
chunkDSUCH44G_js.__publicField(this, "stateManager");
|
|
1314
|
+
chunkDSUCH44G_js.__publicField(this, "eventEmitter");
|
|
1315
|
+
chunkDSUCH44G_js.__publicField(this, "walletDetector");
|
|
1316
|
+
chunkDSUCH44G_js.__publicField(this, "connectionManager");
|
|
1317
|
+
chunkDSUCH44G_js.__publicField(this, "autoConnector");
|
|
1318
|
+
chunkDSUCH44G_js.__publicField(this, "clusterManager");
|
|
1319
|
+
chunkDSUCH44G_js.__publicField(this, "transactionTracker");
|
|
1320
|
+
chunkDSUCH44G_js.__publicField(this, "debugMetrics");
|
|
1321
|
+
chunkDSUCH44G_js.__publicField(this, "healthMonitor");
|
|
1322
|
+
chunkDSUCH44G_js.__publicField(this, "initialized", false);
|
|
1323
|
+
chunkDSUCH44G_js.__publicField(this, "config");
|
|
1410
1324
|
this.config = config;
|
|
1411
1325
|
let initialState = {
|
|
1412
1326
|
wallets: [],
|
|
@@ -1448,16 +1362,15 @@ var logger5 = chunkI64FD2EH_js.createLogger("ConnectorClient"), ConnectorClient
|
|
|
1448
1362
|
), this.initialize();
|
|
1449
1363
|
}
|
|
1450
1364
|
initialize() {
|
|
1451
|
-
if (
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
}
|
|
1365
|
+
if (typeof window > "u" || this.initialized) return;
|
|
1366
|
+
let { error } = chunkDSUCH44G_js.tryCatchSync(() => {
|
|
1367
|
+
this.walletDetector.initialize(), this.config.autoConnect && setTimeout(() => {
|
|
1368
|
+
this.autoConnector.attemptAutoConnect().catch((err) => {
|
|
1369
|
+
this.config.debug && logger5.error("Auto-connect error", { error: err });
|
|
1370
|
+
});
|
|
1371
|
+
}, 100), this.initialized = true;
|
|
1372
|
+
});
|
|
1373
|
+
error && this.config.debug && logger5.error("Connector initialization failed", { error });
|
|
1461
1374
|
}
|
|
1462
1375
|
async select(walletName) {
|
|
1463
1376
|
let wallet = this.stateManager.getSnapshot().wallets.find((w) => w.wallet.name === walletName)?.wallet;
|
|
@@ -1482,11 +1395,8 @@ var logger5 = chunkI64FD2EH_js.createLogger("ConnectorClient"), ConnectorClient
|
|
|
1482
1395
|
getRpcUrl() {
|
|
1483
1396
|
let cluster = this.clusterManager.getCluster();
|
|
1484
1397
|
if (!cluster) return null;
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
} catch (error) {
|
|
1488
|
-
return this.config.debug && logger5.error("Failed to get RPC URL", { error }), null;
|
|
1489
|
-
}
|
|
1398
|
+
let { data, error } = chunkDSUCH44G_js.tryCatchSync(() => getClusterRpcUrl(cluster));
|
|
1399
|
+
return error ? (this.config.debug && logger5.error("Failed to get RPC URL", { error }), null) : data;
|
|
1490
1400
|
}
|
|
1491
1401
|
subscribe(listener) {
|
|
1492
1402
|
return this.stateManager.subscribe(listener);
|
|
@@ -1499,12 +1409,10 @@ var logger5 = chunkI64FD2EH_js.createLogger("ConnectorClient"), ConnectorClient
|
|
|
1499
1409
|
let storageKeys = ["account", "wallet", "cluster"];
|
|
1500
1410
|
for (let key of storageKeys) {
|
|
1501
1411
|
let storage = this.config.storage?.[key];
|
|
1502
|
-
if (storage && "reset" in storage && typeof storage.reset == "function")
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
this.config.debug && logger5.error("Failed to reset storage", { key, error });
|
|
1507
|
-
}
|
|
1412
|
+
if (storage && "reset" in storage && typeof storage.reset == "function") {
|
|
1413
|
+
let resetFn = storage.reset, { error } = chunkDSUCH44G_js.tryCatchSync(() => resetFn());
|
|
1414
|
+
error ? this.config.debug && logger5.error("Failed to reset storage", { key, error }) : this.config.debug && logger5.debug("Reset storage", { key });
|
|
1415
|
+
}
|
|
1508
1416
|
}
|
|
1509
1417
|
this.eventEmitter.emit({
|
|
1510
1418
|
type: "storage:reset",
|
|
@@ -1560,7 +1468,7 @@ var logger5 = chunkI64FD2EH_js.createLogger("ConnectorClient"), ConnectorClient
|
|
|
1560
1468
|
}), this.walletDetector.destroy(), this.eventEmitter.offAll(), this.stateManager.clear();
|
|
1561
1469
|
}
|
|
1562
1470
|
};
|
|
1563
|
-
var logger6 =
|
|
1471
|
+
var logger6 = chunkDSUCH44G_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 {
|
|
1564
1472
|
static log(error, errorInfo, context) {
|
|
1565
1473
|
if (process.env.NODE_ENV === "development" && logger6.error(error.message, {
|
|
1566
1474
|
error,
|
|
@@ -1579,7 +1487,7 @@ var logger6 = chunkI64FD2EH_js.createLogger("ErrorBoundary"), WalletErrorType =
|
|
|
1579
1487
|
}
|
|
1580
1488
|
};
|
|
1581
1489
|
function classifyError(error) {
|
|
1582
|
-
if (isConnectorError(error))
|
|
1490
|
+
if (chunkDSUCH44G_js.isConnectorError(error))
|
|
1583
1491
|
return {
|
|
1584
1492
|
...error,
|
|
1585
1493
|
type: {
|
|
@@ -1608,8 +1516,8 @@ function classifyError(error) {
|
|
|
1608
1516
|
var ConnectorErrorBoundary = class extends react.Component {
|
|
1609
1517
|
constructor(props) {
|
|
1610
1518
|
super(props);
|
|
1611
|
-
|
|
1612
|
-
|
|
1519
|
+
chunkDSUCH44G_js.__publicField(this, "retryTimeouts", /* @__PURE__ */ new Set());
|
|
1520
|
+
chunkDSUCH44G_js.__publicField(this, "retry", () => {
|
|
1613
1521
|
let { maxRetries = 3 } = this.props;
|
|
1614
1522
|
this.state.retryCount >= maxRetries || this.setState((prevState) => ({
|
|
1615
1523
|
hasError: false,
|
|
@@ -1831,7 +1739,7 @@ function withErrorBoundary(Component2, errorBoundaryProps) {
|
|
|
1831
1739
|
let WrappedComponent = (props) => /* @__PURE__ */ jsxRuntime.jsx(ConnectorErrorBoundary, { ...errorBoundaryProps, children: /* @__PURE__ */ jsxRuntime.jsx(Component2, { ...props }) });
|
|
1832
1740
|
return WrappedComponent.displayName = `withErrorBoundary(${Component2.displayName || Component2.name})`, WrappedComponent;
|
|
1833
1741
|
}
|
|
1834
|
-
var logger7 =
|
|
1742
|
+
var logger7 = chunkDSUCH44G_js.createLogger("Polyfills"), installed = false;
|
|
1835
1743
|
function installPolyfills() {
|
|
1836
1744
|
if (!(installed || typeof window > "u"))
|
|
1837
1745
|
try {
|
|
@@ -2069,7 +1977,7 @@ async function copySignatureToClipboard(signature, options) {
|
|
|
2069
1977
|
}
|
|
2070
1978
|
|
|
2071
1979
|
// src/lib/transaction/transaction-validator.ts
|
|
2072
|
-
var logger8 =
|
|
1980
|
+
var logger8 = chunkDSUCH44G_js.createLogger("TransactionValidator"), MAX_TRANSACTION_SIZE = 1232, MIN_TRANSACTION_SIZE = 64, TransactionValidator = class {
|
|
2073
1981
|
/**
|
|
2074
1982
|
* Validate a transaction before signing
|
|
2075
1983
|
*
|
|
@@ -2174,7 +2082,7 @@ var logger8 = chunkI64FD2EH_js.createLogger("TransactionValidator"), MAX_TRANSAC
|
|
|
2174
2082
|
};
|
|
2175
2083
|
|
|
2176
2084
|
// src/lib/transaction/transaction-signer.ts
|
|
2177
|
-
var logger9 =
|
|
2085
|
+
var logger9 = chunkDSUCH44G_js.createLogger("TransactionSigner");
|
|
2178
2086
|
function createTransactionSigner(config) {
|
|
2179
2087
|
let { wallet, account, cluster, eventEmitter } = config;
|
|
2180
2088
|
if (!wallet || !account)
|
|
@@ -2188,13 +2096,13 @@ function createTransactionSigner(config) {
|
|
|
2188
2096
|
address,
|
|
2189
2097
|
async signTransaction(transaction) {
|
|
2190
2098
|
if (!capabilities.canSign)
|
|
2191
|
-
throw Errors.featureNotSupported("transaction signing");
|
|
2099
|
+
throw chunkDSUCH44G_js.Errors.featureNotSupported("transaction signing");
|
|
2192
2100
|
let validation = TransactionValidator.validate(transaction);
|
|
2193
2101
|
if (!validation.valid)
|
|
2194
|
-
throw logger9.error("Transaction validation failed", { errors: validation.errors }), Errors.invalidTransaction(validation.errors.join(", "));
|
|
2102
|
+
throw logger9.error("Transaction validation failed", { errors: validation.errors }), chunkDSUCH44G_js.Errors.invalidTransaction(validation.errors.join(", "));
|
|
2195
2103
|
validation.warnings.length > 0 && logger9.warn("Transaction validation warnings", { warnings: validation.warnings });
|
|
2196
2104
|
try {
|
|
2197
|
-
let signFeature = features["solana:signTransaction"], { serialized, wasWeb3js } =
|
|
2105
|
+
let signFeature = features["solana:signTransaction"], { serialized, wasWeb3js } = chunkDSUCH44G_js.prepareTransactionForWallet(transaction);
|
|
2198
2106
|
logger9.debug("Signing transaction", {
|
|
2199
2107
|
wasWeb3js,
|
|
2200
2108
|
serializedLength: serialized.length,
|
|
@@ -2247,19 +2155,19 @@ function createTransactionSigner(config) {
|
|
|
2247
2155
|
logger9.debug("Found signedTransaction property");
|
|
2248
2156
|
let bytes = signedTx.signedTransaction;
|
|
2249
2157
|
if (bytes instanceof Uint8Array)
|
|
2250
|
-
return await
|
|
2158
|
+
return await chunkDSUCH44G_js.convertSignedTransaction(bytes, wasWeb3js);
|
|
2251
2159
|
}
|
|
2252
2160
|
if (signedTx instanceof Uint8Array)
|
|
2253
|
-
return await
|
|
2161
|
+
return await chunkDSUCH44G_js.convertSignedTransaction(signedTx, wasWeb3js);
|
|
2254
2162
|
throw logger9.error("Unexpected wallet response format", {
|
|
2255
2163
|
type: typeof signedTx,
|
|
2256
2164
|
constructor: signedTx?.constructor?.name
|
|
2257
|
-
}), new ValidationError(
|
|
2165
|
+
}), new chunkDSUCH44G_js.ValidationError(
|
|
2258
2166
|
"INVALID_FORMAT",
|
|
2259
2167
|
"Wallet returned unexpected format - not a Transaction or Uint8Array"
|
|
2260
2168
|
);
|
|
2261
2169
|
} catch (error) {
|
|
2262
|
-
throw Errors.signingFailed(error);
|
|
2170
|
+
throw chunkDSUCH44G_js.Errors.signingFailed(error);
|
|
2263
2171
|
}
|
|
2264
2172
|
},
|
|
2265
2173
|
async signAllTransactions(transactions) {
|
|
@@ -2267,18 +2175,18 @@ function createTransactionSigner(config) {
|
|
|
2267
2175
|
return [];
|
|
2268
2176
|
if (capabilities.supportsBatchSigning)
|
|
2269
2177
|
try {
|
|
2270
|
-
let signFeature = features["solana:signAllTransactions"], prepared = transactions.map((tx) =>
|
|
2178
|
+
let signFeature = features["solana:signAllTransactions"], prepared = transactions.map((tx) => chunkDSUCH44G_js.prepareTransactionForWallet(tx)), serializedTxs = prepared.map((p) => p.serialized), wasWeb3js = prepared[0].wasWeb3js, result = await signFeature.signAllTransactions({
|
|
2271
2179
|
account,
|
|
2272
2180
|
transactions: serializedTxs,
|
|
2273
2181
|
...cluster ? { chain: cluster.id } : {}
|
|
2274
2182
|
});
|
|
2275
2183
|
return await Promise.all(
|
|
2276
2184
|
result.signedTransactions.map(
|
|
2277
|
-
(signedBytes) =>
|
|
2185
|
+
(signedBytes) => chunkDSUCH44G_js.convertSignedTransaction(signedBytes, wasWeb3js)
|
|
2278
2186
|
)
|
|
2279
2187
|
);
|
|
2280
2188
|
} catch (error) {
|
|
2281
|
-
throw new TransactionError(
|
|
2189
|
+
throw new chunkDSUCH44G_js.TransactionError(
|
|
2282
2190
|
"SIGNING_FAILED",
|
|
2283
2191
|
"Failed to sign transactions in batch",
|
|
2284
2192
|
{ count: transactions.length },
|
|
@@ -2286,14 +2194,14 @@ function createTransactionSigner(config) {
|
|
|
2286
2194
|
);
|
|
2287
2195
|
}
|
|
2288
2196
|
if (!capabilities.canSign)
|
|
2289
|
-
throw Errors.featureNotSupported("transaction signing");
|
|
2197
|
+
throw chunkDSUCH44G_js.Errors.featureNotSupported("transaction signing");
|
|
2290
2198
|
let signed = [];
|
|
2291
2199
|
for (let i = 0; i < transactions.length; i++)
|
|
2292
2200
|
try {
|
|
2293
2201
|
let signedTx = await signer.signTransaction(transactions[i]);
|
|
2294
2202
|
signed.push(signedTx);
|
|
2295
2203
|
} catch (error) {
|
|
2296
|
-
throw new TransactionError(
|
|
2204
|
+
throw new chunkDSUCH44G_js.TransactionError(
|
|
2297
2205
|
"SIGNING_FAILED",
|
|
2298
2206
|
`Failed to sign transaction ${i + 1} of ${transactions.length}`,
|
|
2299
2207
|
{ index: i, total: transactions.length },
|
|
@@ -2304,9 +2212,9 @@ function createTransactionSigner(config) {
|
|
|
2304
2212
|
},
|
|
2305
2213
|
async signAndSendTransaction(transaction, options) {
|
|
2306
2214
|
if (!capabilities.canSend)
|
|
2307
|
-
throw Errors.featureNotSupported("sending transactions");
|
|
2215
|
+
throw chunkDSUCH44G_js.Errors.featureNotSupported("sending transactions");
|
|
2308
2216
|
try {
|
|
2309
|
-
let sendFeature = features["solana:signAndSendTransaction"], { serialized } =
|
|
2217
|
+
let sendFeature = features["solana:signAndSendTransaction"], { serialized } = chunkDSUCH44G_js.prepareTransactionForWallet(transaction);
|
|
2310
2218
|
eventEmitter && eventEmitter.emit({
|
|
2311
2219
|
type: "transaction:preparing",
|
|
2312
2220
|
transaction: serialized,
|
|
@@ -2341,21 +2249,21 @@ function createTransactionSigner(config) {
|
|
|
2341
2249
|
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
2342
2250
|
}), signature;
|
|
2343
2251
|
} catch (error) {
|
|
2344
|
-
throw new TransactionError("SEND_FAILED", "Failed to send transaction", void 0, error);
|
|
2252
|
+
throw new chunkDSUCH44G_js.TransactionError("SEND_FAILED", "Failed to send transaction", void 0, error);
|
|
2345
2253
|
}
|
|
2346
2254
|
},
|
|
2347
2255
|
async signAndSendTransactions(transactions, options) {
|
|
2348
2256
|
if (transactions.length === 0)
|
|
2349
2257
|
return [];
|
|
2350
2258
|
if (!capabilities.canSend)
|
|
2351
|
-
throw Errors.featureNotSupported("sending transactions");
|
|
2259
|
+
throw chunkDSUCH44G_js.Errors.featureNotSupported("sending transactions");
|
|
2352
2260
|
let signatures = [];
|
|
2353
2261
|
for (let i = 0; i < transactions.length; i++)
|
|
2354
2262
|
try {
|
|
2355
2263
|
let sig = await signer.signAndSendTransaction(transactions[i], options);
|
|
2356
2264
|
signatures.push(sig);
|
|
2357
2265
|
} catch (error) {
|
|
2358
|
-
throw new TransactionError(
|
|
2266
|
+
throw new chunkDSUCH44G_js.TransactionError(
|
|
2359
2267
|
"SEND_FAILED",
|
|
2360
2268
|
`Failed to send transaction ${i + 1} of ${transactions.length}`,
|
|
2361
2269
|
{ index: i, total: transactions.length },
|
|
@@ -2373,7 +2281,7 @@ function createTransactionSigner(config) {
|
|
|
2373
2281
|
...cluster ? { chain: cluster.id } : {}
|
|
2374
2282
|
})).signature;
|
|
2375
2283
|
} catch (error) {
|
|
2376
|
-
throw new TransactionError("SIGNING_FAILED", "Failed to sign message", void 0, error);
|
|
2284
|
+
throw new chunkDSUCH44G_js.TransactionError("SIGNING_FAILED", "Failed to sign message", void 0, error);
|
|
2377
2285
|
}
|
|
2378
2286
|
}
|
|
2379
2287
|
},
|
|
@@ -2383,16 +2291,16 @@ function createTransactionSigner(config) {
|
|
|
2383
2291
|
};
|
|
2384
2292
|
return signer;
|
|
2385
2293
|
}
|
|
2386
|
-
var TransactionSignerError = class extends TransactionError {
|
|
2294
|
+
var TransactionSignerError = class extends chunkDSUCH44G_js.TransactionError {
|
|
2387
2295
|
constructor(message, code, originalError) {
|
|
2388
2296
|
let newCode = code === "WALLET_NOT_CONNECTED" ? "FEATURE_NOT_SUPPORTED" : code;
|
|
2389
2297
|
super(newCode, message, void 0, originalError), this.name = "TransactionSignerError";
|
|
2390
2298
|
}
|
|
2391
2299
|
};
|
|
2392
2300
|
function isTransactionSignerError(error) {
|
|
2393
|
-
return error instanceof TransactionSignerError || error instanceof TransactionError;
|
|
2301
|
+
return error instanceof TransactionSignerError || error instanceof chunkDSUCH44G_js.TransactionError;
|
|
2394
2302
|
}
|
|
2395
|
-
var logger10 =
|
|
2303
|
+
var logger10 = chunkDSUCH44G_js.createLogger("KitTransactionSigner");
|
|
2396
2304
|
function encodeShortVecLength(value) {
|
|
2397
2305
|
let bytes = [], remaining = value;
|
|
2398
2306
|
for (; remaining >= 128; )
|
|
@@ -2424,7 +2332,7 @@ function extractSignature(signedTx) {
|
|
|
2424
2332
|
let signatureStart = bytesConsumed;
|
|
2425
2333
|
return signedTx.slice(signatureStart, signatureStart + 64);
|
|
2426
2334
|
}
|
|
2427
|
-
if (
|
|
2335
|
+
if (chunkDSUCH44G_js.isWeb3jsTransaction(signedTx)) {
|
|
2428
2336
|
let signatures = signedTx.signatures;
|
|
2429
2337
|
if (!signatures || signatures.length === 0)
|
|
2430
2338
|
throw new Error("No signatures found in web3.js transaction");
|
|
@@ -2465,7 +2373,7 @@ function createKitTransactionSigner(connectorSigner) {
|
|
|
2465
2373
|
let signedTxBytes;
|
|
2466
2374
|
if (signedTx instanceof Uint8Array)
|
|
2467
2375
|
signedTxBytes = signedTx;
|
|
2468
|
-
else if (
|
|
2376
|
+
else if (chunkDSUCH44G_js.isWeb3jsTransaction(signedTx)) {
|
|
2469
2377
|
let txObj = signedTx;
|
|
2470
2378
|
if (typeof txObj.serialize == "function")
|
|
2471
2379
|
signedTxBytes = txObj.serialize();
|
|
@@ -2521,18 +2429,11 @@ function createKitTransactionSigner(connectorSigner) {
|
|
|
2521
2429
|
var createGillTransactionSigner = createKitTransactionSigner;
|
|
2522
2430
|
|
|
2523
2431
|
exports.ClipboardErrorType = ClipboardErrorType;
|
|
2524
|
-
exports.ConfigurationError = ConfigurationError;
|
|
2525
|
-
exports.ConnectionError = ConnectionError;
|
|
2526
2432
|
exports.ConnectorClient = ConnectorClient;
|
|
2527
|
-
exports.ConnectorError = ConnectorError;
|
|
2528
2433
|
exports.ConnectorErrorBoundary = ConnectorErrorBoundary;
|
|
2529
2434
|
exports.DEFAULT_MAX_RETRIES = DEFAULT_MAX_RETRIES;
|
|
2530
|
-
exports.Errors = Errors;
|
|
2531
|
-
exports.NetworkError = NetworkError;
|
|
2532
2435
|
exports.PUBLIC_RPC_ENDPOINTS = PUBLIC_RPC_ENDPOINTS;
|
|
2533
|
-
exports.TransactionError = TransactionError;
|
|
2534
2436
|
exports.TransactionSignerError = TransactionSignerError;
|
|
2535
|
-
exports.ValidationError = ValidationError;
|
|
2536
2437
|
exports.WalletErrorType = WalletErrorType;
|
|
2537
2438
|
exports.copyAddressToClipboard = copyAddressToClipboard;
|
|
2538
2439
|
exports.copySignatureToClipboard = copySignatureToClipboard;
|
|
@@ -2561,13 +2462,9 @@ exports.getNetworkDisplayName = getNetworkDisplayName;
|
|
|
2561
2462
|
exports.getPolyfillStatus = getPolyfillStatus;
|
|
2562
2463
|
exports.getTokenUrl = getTokenUrl;
|
|
2563
2464
|
exports.getTransactionUrl = getTransactionUrl;
|
|
2564
|
-
exports.getUserFriendlyMessage = getUserFriendlyMessage;
|
|
2565
2465
|
exports.getWalletsRegistry = getWalletsRegistry;
|
|
2566
2466
|
exports.installPolyfills = installPolyfills;
|
|
2567
2467
|
exports.isClipboardAvailable = isClipboardAvailable;
|
|
2568
|
-
exports.isConfigurationError = isConfigurationError;
|
|
2569
|
-
exports.isConnectionError = isConnectionError;
|
|
2570
|
-
exports.isConnectorError = isConnectorError;
|
|
2571
2468
|
exports.isCryptoAvailable = isCryptoAvailable;
|
|
2572
2469
|
exports.isDevnet = isDevnet;
|
|
2573
2470
|
exports.isDevnetCluster = isDevnetCluster;
|
|
@@ -2575,17 +2472,14 @@ exports.isLocalCluster = isLocalCluster;
|
|
|
2575
2472
|
exports.isLocalnet = isLocalnet;
|
|
2576
2473
|
exports.isMainnet = isMainnet;
|
|
2577
2474
|
exports.isMainnetCluster = isMainnetCluster;
|
|
2578
|
-
exports.isNetworkError = isNetworkError;
|
|
2579
2475
|
exports.isPolyfillInstalled = isPolyfillInstalled;
|
|
2580
2476
|
exports.isTestnet = isTestnet;
|
|
2581
2477
|
exports.isTestnetCluster = isTestnetCluster;
|
|
2582
|
-
exports.isTransactionError = isTransactionError;
|
|
2583
2478
|
exports.isTransactionSignerError = isTransactionSignerError;
|
|
2584
|
-
exports.isValidationError = isValidationError;
|
|
2585
2479
|
exports.normalizeNetwork = normalizeNetwork;
|
|
2480
|
+
exports.ready = ready;
|
|
2586
2481
|
exports.toClusterId = toClusterId;
|
|
2587
|
-
exports.toConnectorError = toConnectorError;
|
|
2588
2482
|
exports.truncate = truncate;
|
|
2589
2483
|
exports.withErrorBoundary = withErrorBoundary;
|
|
2590
|
-
//# sourceMappingURL=chunk-
|
|
2591
|
-
//# sourceMappingURL=chunk-
|
|
2484
|
+
//# sourceMappingURL=chunk-FTXIXM43.js.map
|
|
2485
|
+
//# sourceMappingURL=chunk-FTXIXM43.js.map
|