@solana/connector 0.1.4 → 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.
Files changed (42) hide show
  1. package/README.md +236 -0
  2. package/dist/{chunk-U64YZRJL.mjs → chunk-3STZXVXD.mjs} +254 -53
  3. package/dist/chunk-3STZXVXD.mjs.map +1 -0
  4. package/dist/{chunk-RIQH5W7D.js → chunk-I64FD2EH.js} +4 -3
  5. package/dist/chunk-I64FD2EH.js.map +1 -0
  6. package/dist/{chunk-CLXM6UEE.js → chunk-JUZVCBAI.js} +91 -85
  7. package/dist/chunk-JUZVCBAI.js.map +1 -0
  8. package/dist/{chunk-D6PZY5G6.js → chunk-NQXK7PGX.js} +30 -26
  9. package/dist/chunk-NQXK7PGX.js.map +1 -0
  10. package/dist/{chunk-N3Q2J2FG.mjs → chunk-QKVL45F6.mjs} +10 -6
  11. package/dist/chunk-QKVL45F6.mjs.map +1 -0
  12. package/dist/{chunk-P5MWBDFG.mjs → chunk-QL3IT3TS.mjs} +4 -3
  13. package/dist/chunk-QL3IT3TS.mjs.map +1 -0
  14. package/dist/{chunk-LUZWUZ5N.js → chunk-ULUYX23Q.js} +268 -67
  15. package/dist/chunk-ULUYX23Q.js.map +1 -0
  16. package/dist/{chunk-YTCSTE3Q.mjs → chunk-VMSZJPR5.mjs} +10 -4
  17. package/dist/chunk-VMSZJPR5.mjs.map +1 -0
  18. package/dist/compat.js +3 -3
  19. package/dist/compat.mjs +1 -1
  20. package/dist/headless.d.mts +2 -2
  21. package/dist/headless.d.ts +2 -2
  22. package/dist/headless.js +120 -120
  23. package/dist/headless.mjs +3 -3
  24. package/dist/index.d.mts +1 -1
  25. package/dist/index.d.ts +1 -1
  26. package/dist/index.js +147 -147
  27. package/dist/index.mjs +4 -4
  28. package/dist/react.d.mts +4 -4
  29. package/dist/react.d.ts +4 -4
  30. package/dist/react.js +28 -28
  31. package/dist/react.mjs +2 -2
  32. package/dist/{wallet-standard-shim-DC_Z7DS-.d.ts → wallet-standard-shim--YcrQNRt.d.ts} +83 -0
  33. package/dist/{wallet-standard-shim-Cp4vF4oo.d.mts → wallet-standard-shim-Dx7H8Ctf.d.mts} +83 -0
  34. package/package.json +1 -1
  35. package/dist/chunk-CLXM6UEE.js.map +0 -1
  36. package/dist/chunk-D6PZY5G6.js.map +0 -1
  37. package/dist/chunk-LUZWUZ5N.js.map +0 -1
  38. package/dist/chunk-N3Q2J2FG.mjs.map +0 -1
  39. package/dist/chunk-P5MWBDFG.mjs.map +0 -1
  40. package/dist/chunk-RIQH5W7D.js.map +0 -1
  41. package/dist/chunk-U64YZRJL.mjs.map +0 -1
  42. package/dist/chunk-YTCSTE3Q.mjs.map +0 -1
@@ -148,7 +148,8 @@ var SENSITIVE_KEYS = [
148
148
  __publicField(this, "config");
149
149
  let isDevelopment = typeof process < "u" && process.env?.NODE_ENV === "development";
150
150
  this.config = {
151
- enabled: config.enabled ?? isDevelopment,
151
+ // Default to disabled - logging is opt-in via __CONNECTOR_DEBUG__ or explicit config
152
+ enabled: config.enabled ?? false,
152
153
  level: config.level ?? "debug",
153
154
  redactSensitive: config.redactSensitive ?? !isDevelopment,
154
155
  prefix: config.prefix ?? "Connector",
@@ -307,5 +308,5 @@ exports.lamportsToSol = lamportsToSol;
307
308
  exports.prepareTransaction = prepareTransaction;
308
309
  exports.prepareTransactionForWallet = prepareTransactionForWallet;
309
310
  exports.solToLamports = solToLamports;
310
- //# sourceMappingURL=chunk-RIQH5W7D.js.map
311
- //# sourceMappingURL=chunk-RIQH5W7D.js.map
311
+ //# sourceMappingURL=chunk-I64FD2EH.js.map
312
+ //# sourceMappingURL=chunk-I64FD2EH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/kit-utils/constants.ts","../src/lib/kit-utils/rpc.ts","../src/lib/kit-utils/explorer.ts","../src/lib/kit-utils/client.ts","../src/lib/kit-utils/debug.ts","../src/lib/kit-utils/prepare-transaction.ts","../src/lib/utils/secure-logger.ts","../src/utils/transaction-format.ts"],"names":["createSolanaRpc","createSolanaRpcSubscriptions","setTransactionMessageLifetimeUsingBlockhash","assertIsTransactionMessageWithBlockhashLifetime","LOG_LEVELS"],"mappings":"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","file":"chunk-I64FD2EH.js","sourcesContent":["/**\n * @solana/connector - Kit Constants\n *\n * Core Solana constants used throughout the connector.\n * These match the values from @solana/kit ecosystem.\n */\n\n/** 1 billion lamports per SOL */\nexport const LAMPORTS_PER_SOL = 1_000_000_000;\n\n/**\n * Genesis hash for Solana network clusters\n */\nexport const GENESIS_HASH = {\n mainnet: '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d',\n devnet: 'EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG',\n testnet: '4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY',\n} as const;\n\n/**\n * Convert lamports to SOL\n * @param lamports - Amount in lamports\n * @returns Amount in SOL\n */\nexport function lamportsToSol(lamports: number | bigint): number {\n return Number(lamports) / LAMPORTS_PER_SOL;\n}\n\n/**\n * Convert SOL to lamports\n * @param sol - Amount in SOL\n * @returns Amount in lamports\n */\nexport function solToLamports(sol: number): bigint {\n return BigInt(Math.floor(sol * LAMPORTS_PER_SOL));\n}\n","/**\n * @solana/connector - Kit RPC Utilities\n *\n * RPC URL helpers for Solana clusters.\n */\n\nimport type { DevnetUrl, MainnetUrl, TestnetUrl } from '@solana/kit';\n\n/** Solana cluster moniker */\nexport type SolanaClusterMoniker = 'devnet' | 'localnet' | 'mainnet' | 'testnet';\n\n/** Localnet URL type */\nexport type LocalnetUrl = string & { '~cluster': 'localnet' };\n\n/** Generic URL type */\nexport type GenericUrl = string & {};\n\n/** Union of all cluster URL types */\nexport type ModifiedClusterUrl = DevnetUrl | GenericUrl | LocalnetUrl | MainnetUrl | TestnetUrl;\n\n/** URL or moniker that can be used to create a Solana client */\nexport type SolanaClientUrlOrMoniker = ModifiedClusterUrl | SolanaClusterMoniker | URL;\n\n/**\n * Helper to create a localnet URL type\n */\nexport function localnet(putativeString: string): LocalnetUrl {\n return putativeString as LocalnetUrl;\n}\n\n/**\n * Get a public Solana RPC endpoint for a cluster based on its moniker\n *\n * Note: These RPC URLs are rate limited and not suitable for production applications.\n * For production, use a dedicated RPC provider like Triton, Helius, QuickNode, or Alchemy.\n *\n * @param cluster - Cluster moniker\n * @returns Public RPC URL for the cluster\n */\nexport function getPublicSolanaRpcUrl(\n cluster: SolanaClusterMoniker | 'mainnet-beta' | 'localhost',\n): ModifiedClusterUrl {\n switch (cluster) {\n case 'devnet':\n return 'https://api.devnet.solana.com' as DevnetUrl;\n case 'testnet':\n return 'https://api.testnet.solana.com' as TestnetUrl;\n case 'mainnet-beta':\n case 'mainnet':\n return 'https://api.mainnet-beta.solana.com' as MainnetUrl;\n case 'localnet':\n case 'localhost':\n return 'http://127.0.0.1:8899' as LocalnetUrl;\n default:\n throw new Error('Invalid cluster moniker');\n }\n}\n\n/**\n * Get the WebSocket URL for a given RPC URL\n *\n * @param rpcUrl - HTTP/HTTPS RPC URL\n * @returns WebSocket URL\n */\nexport function getWebSocketUrl(rpcUrl: string): string {\n const url = new URL(rpcUrl);\n url.protocol = url.protocol.replace('http', 'ws');\n\n // Default WebSocket port for localnet\n if (url.hostname === 'localhost' || url.hostname.startsWith('127')) {\n url.port = '8900';\n }\n\n return url.toString();\n}\n","/**\n * @solana/connector - Kit Explorer Utilities\n *\n * Generate Solana Explorer links for addresses, transactions, and blocks.\n */\n\n/** Cluster type for explorer links */\nexport type ExplorerCluster = 'mainnet' | 'mainnet-beta' | 'devnet' | 'testnet' | 'localnet' | 'localhost';\n\n/** Arguments for generating an explorer link */\nexport type GetExplorerLinkArgs =\n | { address: string; cluster?: ExplorerCluster }\n | { transaction: string; cluster?: ExplorerCluster }\n | { block: string | number; cluster?: ExplorerCluster }\n | { cluster?: ExplorerCluster };\n\n/**\n * Craft a Solana Explorer link on any cluster\n *\n * @param props - Configuration for the explorer link\n * @returns Solana Explorer URL\n *\n * @example\n * ```ts\n * // Transaction link on mainnet\n * getExplorerLink({ transaction: 'abc123...', cluster: 'mainnet' });\n *\n * // Address link on devnet\n * getExplorerLink({ address: 'abc123...', cluster: 'devnet' });\n *\n * // Block link on testnet\n * getExplorerLink({ block: 12345, cluster: 'testnet' });\n * ```\n */\nexport function getExplorerLink(props: GetExplorerLinkArgs = {}): string {\n const url = new URL('https://explorer.solana.com');\n\n // Default to mainnet / mainnet-beta\n let cluster = props.cluster;\n if (!cluster || cluster === 'mainnet') {\n cluster = 'mainnet-beta';\n }\n\n if ('address' in props && props.address) {\n url.pathname = `/address/${props.address}`;\n } else if ('transaction' in props && props.transaction) {\n url.pathname = `/tx/${props.transaction}`;\n } else if ('block' in props && props.block !== undefined) {\n url.pathname = `/block/${props.block}`;\n }\n\n if (cluster !== 'mainnet-beta') {\n if (cluster === 'localnet' || cluster === 'localhost') {\n // localnet technically isn't a cluster, so requires special handling\n url.searchParams.set('cluster', 'custom');\n url.searchParams.set('customUrl', 'http://localhost:8899');\n } else {\n url.searchParams.set('cluster', cluster);\n }\n }\n\n return url.toString();\n}\n","/**\n * @solana/connector - Kit Client Factory\n *\n * Creates a Solana RPC and WebSocket subscriptions client.\n * Replaces gill's createSolanaClient with a kit-based implementation.\n */\n\nimport type {\n DevnetUrl,\n MainnetUrl,\n TestnetUrl,\n Rpc,\n RpcSubscriptions,\n SolanaRpcApi,\n SolanaRpcSubscriptionsApi,\n} from '@solana/kit';\nimport { createSolanaRpc, createSolanaRpcSubscriptions } from '@solana/kit';\n\nimport type { LocalnetUrl, ModifiedClusterUrl, SolanaClientUrlOrMoniker } from './rpc';\nimport { getPublicSolanaRpcUrl } from './rpc';\n\n/**\n * Configuration for creating a Solana RPC client\n */\nexport interface CreateSolanaClientRpcConfig {\n /** Custom port for the RPC endpoint */\n port?: number;\n}\n\n/**\n * Configuration for creating a Solana RPC subscriptions client\n */\nexport interface CreateSolanaClientRpcSubscriptionsConfig {\n /** Custom port for the WebSocket endpoint */\n port?: number;\n}\n\n/**\n * Arguments for creating a Solana client\n */\nexport interface CreateSolanaClientArgs<TClusterUrl extends SolanaClientUrlOrMoniker = string> {\n /** Full RPC URL (for a private RPC endpoint) or the Solana moniker (for a public RPC endpoint) */\n urlOrMoniker: SolanaClientUrlOrMoniker | TClusterUrl;\n /** Configuration used to create the `rpc` client */\n rpcConfig?: CreateSolanaClientRpcConfig;\n /** Configuration used to create the `rpcSubscriptions` client */\n rpcSubscriptionsConfig?: CreateSolanaClientRpcSubscriptionsConfig;\n}\n\n/**\n * A Solana client with RPC and WebSocket subscription capabilities\n */\nexport interface SolanaClient<TClusterUrl extends ModifiedClusterUrl | string = string> {\n /** Used to make RPC calls to your RPC provider */\n rpc: Rpc<SolanaRpcApi>;\n /** Used to make RPC websocket calls to your RPC provider */\n rpcSubscriptions: RpcSubscriptions<SolanaRpcSubscriptionsApi>;\n /** Full RPC URL that was used to create this client */\n urlOrMoniker: SolanaClientUrlOrMoniker | TClusterUrl;\n}\n\n/**\n * Create a Solana `rpc` and `rpcSubscriptions` client\n *\n * @param props - Configuration for the client\n * @returns Solana client with RPC and WebSocket subscription capabilities\n *\n * @example\n * ```ts\n * // Using a cluster moniker\n * const client = createSolanaClient({ urlOrMoniker: 'devnet' });\n *\n * // Using a custom RPC URL\n * const client = createSolanaClient({ urlOrMoniker: 'https://my-rpc.example.com' });\n *\n * // Making RPC calls\n * const balance = await client.rpc.getBalance(address).send();\n * ```\n */\nexport function createSolanaClient(\n props: Omit<CreateSolanaClientArgs<MainnetUrl | 'mainnet'>, 'urlOrMoniker'> & {\n urlOrMoniker: 'mainnet';\n },\n): SolanaClient<MainnetUrl>;\nexport function createSolanaClient(\n props: Omit<CreateSolanaClientArgs<DevnetUrl | 'devnet'>, 'urlOrMoniker'> & {\n urlOrMoniker: 'devnet';\n },\n): SolanaClient<DevnetUrl>;\nexport function createSolanaClient(\n props: Omit<CreateSolanaClientArgs<TestnetUrl | 'testnet'>, 'urlOrMoniker'> & {\n urlOrMoniker: 'testnet';\n },\n): SolanaClient<TestnetUrl>;\nexport function createSolanaClient(\n props: Omit<CreateSolanaClientArgs<LocalnetUrl | 'localnet'>, 'urlOrMoniker'> & {\n urlOrMoniker: 'localnet';\n },\n): SolanaClient<LocalnetUrl>;\nexport function createSolanaClient<TClusterUrl extends ModifiedClusterUrl>(\n props: CreateSolanaClientArgs<TClusterUrl>,\n): SolanaClient<TClusterUrl>;\nexport function createSolanaClient<TCluster extends ModifiedClusterUrl>({\n urlOrMoniker,\n rpcConfig,\n rpcSubscriptionsConfig,\n}: CreateSolanaClientArgs<TCluster>): SolanaClient<TCluster> {\n if (!urlOrMoniker) throw new Error('Cluster url or moniker is required');\n\n let parsedUrl: URL;\n\n // Try to parse as URL first\n if (urlOrMoniker instanceof URL) {\n parsedUrl = urlOrMoniker;\n } else {\n try {\n parsedUrl = new URL(urlOrMoniker.toString());\n } catch {\n // Not a valid URL, try as moniker\n try {\n parsedUrl = new URL(\n getPublicSolanaRpcUrl(urlOrMoniker.toString() as 'mainnet' | 'devnet' | 'testnet' | 'localnet'),\n );\n } catch {\n throw new Error('Invalid URL or cluster moniker');\n }\n }\n }\n\n if (!parsedUrl.protocol.match(/^https?:/i)) {\n throw new Error('Unsupported protocol. Only HTTP and HTTPS are supported');\n }\n\n // Apply custom port if specified\n if (rpcConfig?.port) {\n parsedUrl.port = rpcConfig.port.toString();\n }\n\n const rpcUrl = parsedUrl.toString();\n const rpc = createSolanaRpc(rpcUrl) as Rpc<SolanaRpcApi>;\n\n // Convert HTTP to WS for subscriptions\n parsedUrl.protocol = parsedUrl.protocol.replace('http', 'ws');\n\n // Apply WebSocket port if specified, or use default 8900 for localhost\n if (rpcSubscriptionsConfig?.port) {\n parsedUrl.port = rpcSubscriptionsConfig.port.toString();\n } else if (parsedUrl.hostname === 'localhost' || parsedUrl.hostname.startsWith('127')) {\n parsedUrl.port = '8900';\n }\n\n const rpcSubscriptions = createSolanaRpcSubscriptions(\n parsedUrl.toString(),\n ) as RpcSubscriptions<SolanaRpcSubscriptionsApi>;\n\n return {\n rpc,\n rpcSubscriptions,\n urlOrMoniker: rpcUrl as TCluster,\n };\n}\n","/**\n * @solana/connector - Kit Debug Utilities\n *\n * Simplified debug logging utilities for the connector.\n * Replaces gill's debug system with a connector-specific implementation.\n */\n\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error';\n\nconst LOG_LEVELS: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n};\n\ndeclare global {\n /**\n * Whether or not to enable debug mode. When enabled, default log level of `info`\n */\n // eslint-disable-next-line no-var\n var __CONNECTOR_DEBUG__: boolean | undefined;\n /**\n * Set the a desired level of logs to be output in the application\n *\n * - Default: `info`\n * - Options: `debug` | `info` | `warn` | `error`\n */\n // eslint-disable-next-line no-var\n var __CONNECTOR_DEBUG_LEVEL__: LogLevel | undefined;\n}\n\n/**\n * Get the minimum log level from environment or global settings\n */\nfunction getMinLogLevel(): LogLevel {\n if (typeof process !== 'undefined' && process.env?.CONNECTOR_DEBUG_LEVEL) {\n return process.env.CONNECTOR_DEBUG_LEVEL as LogLevel;\n }\n if (\n typeof globalThis !== 'undefined' &&\n (globalThis as typeof globalThis & { __CONNECTOR_DEBUG_LEVEL__?: LogLevel }).__CONNECTOR_DEBUG_LEVEL__\n ) {\n return (globalThis as typeof globalThis & { __CONNECTOR_DEBUG_LEVEL__?: LogLevel }).__CONNECTOR_DEBUG_LEVEL__!;\n }\n if (\n typeof window !== 'undefined' &&\n (window as Window & { __CONNECTOR_DEBUG_LEVEL__?: LogLevel }).__CONNECTOR_DEBUG_LEVEL__\n ) {\n return (window as Window & { __CONNECTOR_DEBUG_LEVEL__?: LogLevel }).__CONNECTOR_DEBUG_LEVEL__!;\n }\n return 'info';\n}\n\n/**\n * Check if the connector debug logger is enabled or not\n *\n * Enable debugging by setting any of the following to `true`:\n * - `process.env.CONNECTOR_DEBUG`\n * - `globalThis.__CONNECTOR_DEBUG__`\n * - `window.__CONNECTOR_DEBUG__`\n */\nexport function isDebugEnabled(): boolean {\n if (typeof process !== 'undefined') {\n if (process.env?.CONNECTOR_DEBUG_LEVEL) return true;\n if (process.env?.CONNECTOR_DEBUG === 'true' || process.env?.CONNECTOR_DEBUG === '1') return true;\n }\n if (typeof globalThis !== 'undefined') {\n if ((globalThis as typeof globalThis & { __CONNECTOR_DEBUG__?: boolean }).__CONNECTOR_DEBUG__ === true) {\n return true;\n }\n if ((globalThis as typeof globalThis & { __CONNECTOR_DEBUG_LEVEL__?: LogLevel }).__CONNECTOR_DEBUG_LEVEL__) {\n return true;\n }\n }\n if (typeof window !== 'undefined') {\n if ((window as Window & { __CONNECTOR_DEBUG__?: boolean }).__CONNECTOR_DEBUG__ === true) {\n return true;\n }\n if ((window as Window & { __CONNECTOR_DEBUG_LEVEL__?: LogLevel }).__CONNECTOR_DEBUG_LEVEL__) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Log debug messages based on the desired application's logging level.\n *\n * @param message - the message contents to be logged\n * @param level - default: `info` (see: {@link LOG_LEVELS})\n * @param prefix - default: `[Connector]`\n *\n * To enable connector's debug logger, set any of the following to `true`:\n * - `process.env.CONNECTOR_DEBUG`\n * - `globalThis.__CONNECTOR_DEBUG__`\n * - `window.__CONNECTOR_DEBUG__`\n *\n * To set a desired level of logs to be output in the application, set the value of one of the following:\n * - `process.env.CONNECTOR_DEBUG_LEVEL`\n * - `globalThis.__CONNECTOR_DEBUG_LEVEL__`\n * - `window.__CONNECTOR_DEBUG_LEVEL__`\n */\nexport function debug(message: unknown, level: LogLevel = 'info', prefix: string = '[Connector]'): void {\n if (!isDebugEnabled()) return;\n\n if (LOG_LEVELS[level] < LOG_LEVELS[getMinLogLevel()]) return;\n\n const formattedMessage = typeof message === 'string' ? message : JSON.stringify(message, null, 2);\n\n switch (level) {\n case 'debug':\n console.log(prefix, formattedMessage);\n break;\n case 'info':\n console.info(prefix, formattedMessage);\n break;\n case 'warn':\n console.warn(prefix, formattedMessage);\n break;\n case 'error':\n console.error(prefix, formattedMessage);\n break;\n }\n}\n","/**\n * @solana/connector - Kit Transaction Preparation\n *\n * Prepares transactions for sending by setting blockhash.\n * A simplified version that focuses on blockhash management.\n */\n\nimport type {\n GetLatestBlockhashApi,\n Rpc,\n TransactionMessage,\n TransactionMessageWithBlockhashLifetime,\n TransactionMessageWithFeePayer,\n} from '@solana/kit';\nimport {\n assertIsTransactionMessageWithBlockhashLifetime,\n setTransactionMessageLifetimeUsingBlockhash,\n} from '@solana/kit';\n\nimport { debug, isDebugEnabled } from './debug';\n\n/**\n * Transaction message types that can be prepared.\n * Requires both a fee payer and a transaction message.\n */\ntype PrepareCompilableTransactionMessage = TransactionMessage & TransactionMessageWithFeePayer;\n\n/**\n * Configuration for preparing a transaction\n */\nexport interface PrepareTransactionConfig<TMessage extends PrepareCompilableTransactionMessage> {\n /**\n * Transaction to prepare for sending to the blockchain\n */\n transaction: TMessage;\n /**\n * RPC client capable of getting the latest blockhash\n */\n rpc: Rpc<GetLatestBlockhashApi>;\n /**\n * Multiplier applied to the simulated compute unit value obtained from simulation\n * @default 1.1\n * @deprecated Compute unit estimation is not currently supported\n */\n computeUnitLimitMultiplier?: number;\n /**\n * Whether or not you wish to force reset the compute unit limit value (if one is already set)\n * @deprecated Compute unit estimation is not currently supported\n */\n computeUnitLimitReset?: boolean;\n /**\n * Whether or not you wish to force reset the latest blockhash (if one is already set)\n * @default true\n */\n blockhashReset?: boolean;\n}\n\n/**\n * Prepare a Transaction to be signed and sent to the network. Including:\n * - fetching the latest blockhash (if not already set)\n * - (optional) resetting latest blockhash to the most recent\n *\n * Note: Automatic compute unit estimation is not currently supported in this version.\n * You should set compute unit limits manually if needed.\n *\n * @param config - Configuration for transaction preparation\n * @returns Prepared transaction with blockhash lifetime set\n *\n * @example\n * ```ts\n * const prepared = await prepareTransaction({\n * transaction: myTransaction,\n * rpc: client.rpc,\n * });\n * ```\n */\nexport async function prepareTransaction<TMessage extends PrepareCompilableTransactionMessage>(\n config: PrepareTransactionConfig<TMessage>,\n): Promise<TMessage & TransactionMessageWithBlockhashLifetime> {\n // Set config defaults\n const blockhashReset = config.blockhashReset !== false;\n\n let transaction = config.transaction as TMessage & Partial<TransactionMessageWithBlockhashLifetime>;\n\n // Update the latest blockhash\n const hasLifetimeConstraint = 'lifetimeConstraint' in transaction;\n\n if (blockhashReset || !hasLifetimeConstraint) {\n const { value: latestBlockhash } = await config.rpc.getLatestBlockhash().send();\n\n if (!hasLifetimeConstraint) {\n if (isDebugEnabled()) {\n debug('Transaction missing latest blockhash, fetching one.', 'debug');\n }\n transaction = setTransactionMessageLifetimeUsingBlockhash(\n latestBlockhash,\n transaction as TMessage,\n ) as TMessage & TransactionMessageWithBlockhashLifetime;\n } else if (blockhashReset) {\n if (isDebugEnabled()) {\n debug('Auto resetting the latest blockhash.', 'debug');\n }\n transaction = {\n ...transaction,\n lifetimeConstraint: latestBlockhash,\n } as TMessage & TransactionMessageWithBlockhashLifetime;\n }\n }\n\n assertIsTransactionMessageWithBlockhashLifetime(transaction);\n\n return transaction as TMessage & TransactionMessageWithBlockhashLifetime;\n}\n","/**\n * @solana/connector - Secure Logger\n *\n * Production-safe logger that redacts sensitive information\n * Prevents accidental exposure of addresses, keys, and other PII in logs\n *\n * Integrates with the connector's debug system:\n * - Respects `__CONNECTOR_DEBUG__` flag (enable/disable logging globally)\n * - Respects `__CONNECTOR_DEBUG_LEVEL__` (set minimum log level)\n * - Provides sensitive data redaction\n * - Provides unified logging API across the connector\n *\n * Enable connector debug:\n * ```ts\n * window.__CONNECTOR_DEBUG__ = true\n * window.__CONNECTOR_DEBUG_LEVEL__ = 'debug' // or 'info', 'warn', 'error'\n * ```\n */\n\nimport { isDebugEnabled, debug as connectorDebug } from '../kit-utils';\n\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error';\n\nexport interface SecureLoggerConfig {\n /** Enable logging (defaults to false - use __CONNECTOR_DEBUG__ flag to enable) */\n enabled?: boolean;\n /** Minimum log level to output */\n level?: LogLevel;\n /** Redact sensitive information in logs (defaults to true in production) */\n redactSensitive?: boolean;\n /** Custom prefix for all log messages */\n prefix?: string;\n /** Use connector's debug system for logging (respects __CONNECTOR_DEBUG__ flags) */\n useConnectorDebug?: boolean;\n}\n\n/**\n * Keys that contain sensitive information that should be redacted\n */\nconst SENSITIVE_KEYS = [\n 'address',\n 'publickey',\n 'signature',\n 'account',\n 'rpcurl',\n 'url',\n 'apikey',\n 'api_key',\n 'token',\n 'secret',\n 'password',\n 'private',\n 'seed',\n 'mnemonic',\n];\n\n/**\n * Log levels in order of severity\n */\nconst LOG_LEVELS: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n};\n\n/**\n * SecureLogger - Production-safe logging with automatic redaction\n *\n * Features:\n * - Integrates with connector's debug system (respects __CONNECTOR_DEBUG__ flags)\n * - Automatic redaction of sensitive data (addresses, keys, URLs)\n * - Configurable log levels (respects __CONNECTOR_DEBUG_LEVEL__)\n * - Environment-aware defaults\n * - Deep object traversal for nested sensitive data\n *\n * @example\n * ```ts\n * // Enable connector debug\n * window.__CONNECTOR_DEBUG__ = true\n * window.__CONNECTOR_DEBUG_LEVEL__ = 'info' // Optional: filter by level\n *\n * const logger = new SecureLogger({ prefix: 'Connector' });\n *\n * logger.debug('User connected', {\n * address: '7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU', // Auto-redacted in prod\n * wallet: 'Phantom'\n * });\n * // Development: \"User connected { address: '7xKX...gAsU', wallet: 'Phantom' }\"\n * // Production: \"User connected { address: '***', wallet: 'Phantom' }\"\n * ```\n */\nexport class SecureLogger {\n private config: Required<SecureLoggerConfig>;\n\n constructor(config: SecureLoggerConfig = {}) {\n const isDevelopment = typeof process !== 'undefined' && process.env?.NODE_ENV === 'development';\n\n this.config = {\n // Default to disabled - logging is opt-in via __CONNECTOR_DEBUG__ or explicit config\n enabled: config.enabled ?? false,\n level: config.level ?? 'debug',\n redactSensitive: config.redactSensitive ?? !isDevelopment,\n prefix: config.prefix ?? 'Connector',\n useConnectorDebug: config.useConnectorDebug ?? true, // Default to using connector's debug system\n };\n }\n\n /**\n * Log debug information (lowest priority)\n */\n debug(message: string, data?: unknown): void {\n this.log('debug', message, data);\n }\n\n /**\n * Log general information\n */\n info(message: string, data?: unknown): void {\n this.log('info', message, data);\n }\n\n /**\n * Log warnings\n */\n warn(message: string, data?: unknown): void {\n this.log('warn', message, data);\n }\n\n /**\n * Log errors (highest priority)\n */\n error(message: string, data?: unknown): void {\n this.log('error', message, data);\n }\n\n /**\n * Internal log method that handles level filtering and redaction\n * Integrates with connector's debug system when enabled\n */\n private log(level: LogLevel, message: string, data?: unknown): void {\n // Check if logging is enabled (either via config or connector's debug system)\n const debugEnabled = this.config.useConnectorDebug ? isDebugEnabled() : false;\n if (!this.config.enabled && !debugEnabled) return;\n\n // Get effective log level (prefer connector's debug level if set)\n let effectiveLevel = this.config.level;\n if (this.config.useConnectorDebug && typeof globalThis !== 'undefined') {\n const connectorLevel = (globalThis as { __CONNECTOR_DEBUG_LEVEL__?: string }).__CONNECTOR_DEBUG_LEVEL__;\n if (connectorLevel && ['debug', 'info', 'warn', 'error'].includes(connectorLevel)) {\n effectiveLevel = connectorLevel as LogLevel;\n }\n }\n\n // Check if this log level should be output\n if (LOG_LEVELS[level] < LOG_LEVELS[effectiveLevel]) {\n return;\n }\n\n // Process data (redact if enabled)\n const processedData = this.config.redactSensitive ? this.redact(data) : data;\n\n // Format message with data\n const fullMessage =\n processedData !== undefined\n ? `${message} ${typeof processedData === 'object' ? JSON.stringify(processedData, null, 2) : processedData}`\n : message;\n\n // Use connector's debug system if enabled, otherwise fall back to console.*\n if (this.config.useConnectorDebug && debugEnabled) {\n connectorDebug(fullMessage, level, this.config.prefix);\n } else {\n const prefix = `[${this.config.prefix}]`;\n switch (level) {\n case 'debug':\n console.debug(prefix, message, processedData !== undefined ? processedData : '');\n break;\n case 'info':\n console.info(prefix, message, processedData !== undefined ? processedData : '');\n break;\n case 'warn':\n console.warn(prefix, message, processedData !== undefined ? processedData : '');\n break;\n case 'error':\n console.error(prefix, message, processedData !== undefined ? processedData : '');\n break;\n }\n }\n }\n\n /**\n * Recursively redact sensitive information from data\n */\n private redact(data: unknown): unknown {\n if (data === null || data === undefined) {\n return data;\n }\n\n // Handle primitives\n if (typeof data !== 'object') {\n return data;\n }\n\n // Handle arrays\n if (Array.isArray(data)) {\n return data.map(item => this.redact(item));\n }\n\n // Handle objects\n const redacted: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(data)) {\n const keyLower = key.toLowerCase();\n\n // Check if this key contains sensitive information\n const isSensitive = SENSITIVE_KEYS.some(sensitiveKey => keyLower.includes(sensitiveKey));\n\n if (isSensitive) {\n redacted[key] = this.maskValue(value);\n } else if (typeof value === 'object' && value !== null) {\n redacted[key] = this.redact(value);\n } else {\n redacted[key] = value;\n }\n }\n\n return redacted;\n }\n\n /**\n * Mask a sensitive value for logging\n * Shows first 4 and last 4 characters for strings longer than 8 chars\n */\n private maskValue(value: unknown): string {\n if (value === null || value === undefined) {\n return '***';\n }\n\n const str = String(value);\n\n // For very short strings, just mask completely\n if (str.length <= 8) {\n return '***';\n }\n\n // For longer strings, show first and last 4 characters\n return `${str.slice(0, 4)}...${str.slice(-4)}`;\n }\n\n /**\n * Update logger configuration at runtime\n */\n updateConfig(config: Partial<SecureLoggerConfig>): void {\n this.config = { ...this.config, ...config };\n }\n\n /**\n * Get current configuration\n */\n getConfig(): Required<SecureLoggerConfig> {\n return { ...this.config };\n }\n}\n\n/**\n * Default logger instance for the connector\n * Automatically configured based on NODE_ENV\n */\nexport const logger = new SecureLogger({\n prefix: 'Connector',\n});\n\n/**\n * Create a logger with a custom prefix\n *\n * @example\n * ```ts\n * const walletLogger = createLogger('WalletDetector');\n * walletLogger.debug('Scanning for wallets...');\n * // Output: [WalletDetector] Scanning for wallets...\n * ```\n */\nexport function createLogger(prefix: string, config?: Omit<SecureLoggerConfig, 'prefix'>): SecureLogger {\n return new SecureLogger({ ...config, prefix });\n}\n","/**\n * Transaction Format Utilities\n *\n * Utilities for detecting and converting between different transaction formats:\n * - web3.js Transaction/VersionedTransaction objects\n * - Serialized Uint8Array (Wallet Standard format)\n * - Other TypedArray formats\n *\n * Note: Uses dynamic imports for @solana/web3.js to avoid bundling it\n * since it's only needed for the compat layer.\n */\n\nimport type { Transaction, VersionedTransaction } from '@solana/web3.js';\nimport type { SolanaTransaction } from '../types/transactions';\n\n/**\n * Check if a value is a web3.js Transaction or VersionedTransaction object\n *\n * @param tx - Value to check\n * @returns True if it's a web3.js transaction object\n */\nexport function isWeb3jsTransaction(tx: unknown): tx is Transaction | VersionedTransaction {\n // Duck-typing: if it has a serialize method, it's likely a web3.js transaction\n return tx !== null && typeof tx === 'object' && 'serialize' in tx && typeof tx.serialize === 'function';\n}\n\n/**\n * Serialize a transaction to Uint8Array format (required for Wallet Standard)\n *\n * @param tx - Transaction to serialize (web3.js object, Uint8Array, or TypedArray)\n * @returns Serialized transaction bytes\n * @throws Error if transaction format is unsupported\n */\nexport function serializeTransaction(tx: SolanaTransaction): Uint8Array {\n // web3.js Transaction/VersionedTransaction object\n if (isWeb3jsTransaction(tx)) {\n return tx.serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n });\n }\n\n // Already serialized as Uint8Array\n if (tx instanceof Uint8Array) {\n return tx;\n }\n\n // Other TypedArray format\n if (ArrayBuffer.isView(tx)) {\n return new Uint8Array(tx.buffer, tx.byteOffset, tx.byteLength);\n }\n\n throw new Error('Unsupported transaction format - must be Transaction, VersionedTransaction, or Uint8Array');\n}\n\n/**\n * Check if transaction bytes represent a legacy transaction\n * Legacy transactions have high bit = 0, versioned have high bit = 1\n *\n * @param bytes - Serialized transaction bytes\n * @returns True if legacy transaction\n */\nfunction isLegacyTransaction(bytes: Uint8Array): boolean {\n if (bytes.length === 0) return false;\n // High bit of first byte: 0 = legacy, 1 = versioned\n return (bytes[0] & 0x80) === 0;\n}\n\n/**\n * Deserialize bytes to a web3.js Transaction or VersionedTransaction object\n * Uses dynamic import to avoid bundling @solana/web3.js\n * Automatically detects legacy vs versioned format\n *\n * @param bytes - Serialized transaction bytes\n * @returns Transaction or VersionedTransaction object\n */\nexport async function deserializeToWeb3jsTransaction(bytes: Uint8Array): Promise<Transaction | VersionedTransaction> {\n if (isLegacyTransaction(bytes)) {\n // Legacy transaction - use Transaction.deserialize to preserve legacy-only fields\n const { Transaction } = await import('@solana/web3.js');\n return Transaction.from(bytes);\n } else {\n // Versioned transaction\n const { VersionedTransaction } = await import('@solana/web3.js');\n return VersionedTransaction.deserialize(bytes);\n }\n}\n\n/**\n * Smart converter that preserves the original format\n * Converts to Wallet Standard format (Uint8Array) and tracks original type\n *\n * @param tx - Transaction in any supported format\n * @returns Object with serialized bytes and format flag\n */\nexport function prepareTransactionForWallet(tx: SolanaTransaction): { serialized: Uint8Array; wasWeb3js: boolean } {\n const wasWeb3js = isWeb3jsTransaction(tx);\n const serialized = serializeTransaction(tx);\n return { serialized, wasWeb3js };\n}\n\n/**\n * Convert signed transaction bytes back to original format if needed\n *\n * @param signedBytes - Signed transaction as Uint8Array\n * @param wasWeb3js - Whether the original was a web3.js object\n * @returns Transaction in appropriate format (async if conversion needed)\n * Returns Transaction for legacy, VersionedTransaction for versioned, or Uint8Array if not web3js\n */\nexport async function convertSignedTransaction(\n signedBytes: Uint8Array,\n wasWeb3js: boolean,\n): Promise<Transaction | VersionedTransaction | Uint8Array> {\n if (wasWeb3js) {\n return await deserializeToWeb3jsTransaction(signedBytes);\n }\n return signedBytes;\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkRIQH5W7D_js = require('./chunk-RIQH5W7D.js');
3
+ var chunkI64FD2EH_js = require('./chunk-I64FD2EH.js');
4
4
  var react = require('react');
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
  var webcryptoEd25519Polyfill = require('@solana/webcrypto-ed25519-polyfill');
@@ -55,9 +55,9 @@ function getWalletsRegistry() {
55
55
  var ConnectorError = class extends Error {
56
56
  constructor(message, context, originalError) {
57
57
  super(message);
58
- chunkRIQH5W7D_js.__publicField(this, "context");
59
- chunkRIQH5W7D_js.__publicField(this, "originalError");
60
- chunkRIQH5W7D_js.__publicField(this, "timestamp");
58
+ chunkI64FD2EH_js.__publicField(this, "context");
59
+ chunkI64FD2EH_js.__publicField(this, "originalError");
60
+ chunkI64FD2EH_js.__publicField(this, "timestamp");
61
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
62
  }
63
63
  toJSON() {
@@ -74,36 +74,36 @@ var ConnectorError = class extends Error {
74
74
  }, ConnectionError = class extends ConnectorError {
75
75
  constructor(code, message, context, originalError) {
76
76
  super(message, context, originalError);
77
- chunkRIQH5W7D_js.__publicField(this, "code");
78
- chunkRIQH5W7D_js.__publicField(this, "recoverable", true);
77
+ chunkI64FD2EH_js.__publicField(this, "code");
78
+ chunkI64FD2EH_js.__publicField(this, "recoverable", true);
79
79
  this.code = code;
80
80
  }
81
81
  }, ValidationError = class extends ConnectorError {
82
82
  constructor(code, message, context, originalError) {
83
83
  super(message, context, originalError);
84
- chunkRIQH5W7D_js.__publicField(this, "code");
85
- chunkRIQH5W7D_js.__publicField(this, "recoverable", false);
84
+ chunkI64FD2EH_js.__publicField(this, "code");
85
+ chunkI64FD2EH_js.__publicField(this, "recoverable", false);
86
86
  this.code = code;
87
87
  }
88
88
  }, ConfigurationError = class extends ConnectorError {
89
89
  constructor(code, message, context, originalError) {
90
90
  super(message, context, originalError);
91
- chunkRIQH5W7D_js.__publicField(this, "code");
92
- chunkRIQH5W7D_js.__publicField(this, "recoverable", false);
91
+ chunkI64FD2EH_js.__publicField(this, "code");
92
+ chunkI64FD2EH_js.__publicField(this, "recoverable", false);
93
93
  this.code = code;
94
94
  }
95
95
  }, NetworkError = class extends ConnectorError {
96
96
  constructor(code, message, context, originalError) {
97
97
  super(message, context, originalError);
98
- chunkRIQH5W7D_js.__publicField(this, "code");
99
- chunkRIQH5W7D_js.__publicField(this, "recoverable", true);
98
+ chunkI64FD2EH_js.__publicField(this, "code");
99
+ chunkI64FD2EH_js.__publicField(this, "recoverable", true);
100
100
  this.code = code;
101
101
  }
102
102
  }, TransactionError = class extends ConnectorError {
103
103
  constructor(code, message, context, originalError) {
104
104
  super(message, context, originalError);
105
- chunkRIQH5W7D_js.__publicField(this, "code");
106
- chunkRIQH5W7D_js.__publicField(this, "recoverable");
105
+ chunkI64FD2EH_js.__publicField(this, "code");
106
+ chunkI64FD2EH_js.__publicField(this, "recoverable");
107
107
  this.code = code, this.recoverable = ["USER_REJECTED", "SEND_FAILED", "SIMULATION_FAILED"].includes(code);
108
108
  }
109
109
  };
@@ -207,7 +207,7 @@ function toClusterId(network) {
207
207
  function getDefaultRpcUrl(network) {
208
208
  let normalized = normalizeNetwork(network);
209
209
  try {
210
- return chunkRIQH5W7D_js.getPublicSolanaRpcUrl(normalized);
210
+ return chunkI64FD2EH_js.getPublicSolanaRpcUrl(normalized);
211
211
  } catch {
212
212
  return PUBLIC_RPC_ENDPOINTS[normalized] ?? PUBLIC_RPC_ENDPOINTS.localnet;
213
213
  }
@@ -257,14 +257,14 @@ function getClusterExplorerUrl(cluster, path) {
257
257
  }
258
258
  function getTransactionUrl(signature, cluster) {
259
259
  let clusterType = getClusterType(cluster), explorerCluster = clusterType === "custom" || clusterType === "localnet" ? "devnet" : clusterType;
260
- return chunkRIQH5W7D_js.getExplorerLink({
260
+ return chunkI64FD2EH_js.getExplorerLink({
261
261
  transaction: signature,
262
262
  cluster: explorerCluster === "mainnet" ? "mainnet" : explorerCluster
263
263
  });
264
264
  }
265
265
  function getAddressUrl(address, cluster) {
266
266
  let clusterType = getClusterType(cluster), explorerCluster = clusterType === "custom" || clusterType === "localnet" ? "devnet" : clusterType;
267
- return chunkRIQH5W7D_js.getExplorerLink({
267
+ return chunkI64FD2EH_js.getExplorerLink({
268
268
  address,
269
269
  cluster: explorerCluster === "mainnet" ? "mainnet" : explorerCluster
270
270
  });
@@ -326,9 +326,9 @@ var POLL_INTERVALS_MS = [1e3, 2e3, 3e3, 5e3, 5e3], DEFAULT_MAX_RETRIES = 3, DEFA
326
326
  // src/lib/core/state-manager.ts
327
327
  var StateManager = class {
328
328
  constructor(initialState) {
329
- chunkRIQH5W7D_js.__publicField(this, "state");
330
- chunkRIQH5W7D_js.__publicField(this, "listeners", /* @__PURE__ */ new Set());
331
- chunkRIQH5W7D_js.__publicField(this, "notifyTimeout");
329
+ chunkI64FD2EH_js.__publicField(this, "state");
330
+ chunkI64FD2EH_js.__publicField(this, "listeners", /* @__PURE__ */ new Set());
331
+ chunkI64FD2EH_js.__publicField(this, "notifyTimeout");
332
332
  this.state = initialState;
333
333
  }
334
334
  /**
@@ -387,10 +387,10 @@ var StateManager = class {
387
387
  };
388
388
 
389
389
  // src/lib/core/event-emitter.ts
390
- var logger = chunkRIQH5W7D_js.createLogger("EventEmitter"), EventEmitter = class {
390
+ var logger = chunkI64FD2EH_js.createLogger("EventEmitter"), EventEmitter = class {
391
391
  constructor(debug = false) {
392
- chunkRIQH5W7D_js.__publicField(this, "listeners", /* @__PURE__ */ new Set());
393
- chunkRIQH5W7D_js.__publicField(this, "debug");
392
+ chunkI64FD2EH_js.__publicField(this, "listeners", /* @__PURE__ */ new Set());
393
+ chunkI64FD2EH_js.__publicField(this, "debug");
394
394
  this.debug = debug;
395
395
  }
396
396
  /**
@@ -446,12 +446,12 @@ var logger = chunkRIQH5W7D_js.createLogger("EventEmitter"), EventEmitter = class
446
446
  // src/lib/core/debug-metrics.ts
447
447
  var DebugMetrics = class {
448
448
  constructor() {
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);
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);
455
455
  }
456
456
  /**
457
457
  * Record a state update attempt
@@ -491,11 +491,11 @@ var DebugMetrics = class {
491
491
  // src/lib/core/base-collaborator.ts
492
492
  var BaseCollaborator = class {
493
493
  constructor(config, loggerPrefix) {
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);
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);
499
499
  }
500
500
  /**
501
501
  * Log debug message if debug mode is enabled
@@ -518,7 +518,7 @@ var BaseCollaborator = class {
518
518
  };
519
519
 
520
520
  // src/lib/connection/wallet-authenticity-verifier.ts
521
- var logger2 = chunkRIQH5W7D_js.createLogger("WalletAuthenticity"), WalletAuthenticityVerifier = class {
521
+ var logger2 = chunkI64FD2EH_js.createLogger("WalletAuthenticity"), WalletAuthenticityVerifier = class {
522
522
  /**
523
523
  * Verify a wallet's authenticity using dynamic heuristics
524
524
  *
@@ -728,7 +728,7 @@ var logger2 = chunkRIQH5W7D_js.createLogger("WalletAuthenticity"), WalletAuthent
728
728
  };
729
729
 
730
730
  // src/lib/connection/wallet-detector.ts
731
- var logger3 = chunkRIQH5W7D_js.createLogger("WalletDetector");
731
+ var logger3 = chunkI64FD2EH_js.createLogger("WalletDetector");
732
732
  function hasFeature(wallet, featureName) {
733
733
  return wallet.features != null && wallet.features[featureName] !== void 0;
734
734
  }
@@ -750,7 +750,7 @@ function verifyWalletName(wallet, requestedName) {
750
750
  var WalletDetector = class extends BaseCollaborator {
751
751
  constructor(stateManager, eventEmitter, debug = false) {
752
752
  super({ stateManager, eventEmitter, debug }, "WalletDetector");
753
- chunkRIQH5W7D_js.__publicField(this, "unsubscribers", []);
753
+ chunkI64FD2EH_js.__publicField(this, "unsubscribers", []);
754
754
  }
755
755
  /**
756
756
  * Initialize wallet detection
@@ -875,10 +875,10 @@ function getEventsFeature(wallet) {
875
875
  var ConnectionManager = class extends BaseCollaborator {
876
876
  constructor(stateManager, eventEmitter, walletStorage, debug = false) {
877
877
  super({ stateManager, eventEmitter, debug }, "ConnectionManager");
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);
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);
882
882
  this.walletStorage = walletStorage;
883
883
  }
884
884
  /**
@@ -1073,13 +1073,13 @@ var ConnectionManager = class extends BaseCollaborator {
1073
1073
  };
1074
1074
 
1075
1075
  // src/lib/connection/auto-connector.ts
1076
- var logger4 = chunkRIQH5W7D_js.createLogger("AutoConnector"), MIN_ADDRESS_LENGTH = 30, AutoConnector = class {
1076
+ var logger4 = chunkI64FD2EH_js.createLogger("AutoConnector"), MIN_ADDRESS_LENGTH = 30, AutoConnector = class {
1077
1077
  constructor(walletDetector, connectionManager, stateManager, walletStorage, debug = false) {
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");
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");
1083
1083
  this.walletDetector = walletDetector, this.connectionManager = connectionManager, this.stateManager = stateManager, this.walletStorage = walletStorage, this.debug = debug;
1084
1084
  }
1085
1085
  async attemptAutoConnect() {
@@ -1233,7 +1233,7 @@ var logger4 = chunkRIQH5W7D_js.createLogger("AutoConnector"), MIN_ADDRESS_LENGTH
1233
1233
  var ClusterManager = class extends BaseCollaborator {
1234
1234
  constructor(stateManager, eventEmitter, clusterStorage, config, debug = false) {
1235
1235
  super({ stateManager, eventEmitter, debug }, "ClusterManager");
1236
- chunkRIQH5W7D_js.__publicField(this, "clusterStorage");
1236
+ chunkI64FD2EH_js.__publicField(this, "clusterStorage");
1237
1237
  if (this.clusterStorage = clusterStorage, config) {
1238
1238
  let clusters = config.clusters ?? [], initialClusterId = this.clusterStorage?.get() ?? config.initialCluster ?? "solana:mainnet", initialCluster = clusters.find((c) => c.id === initialClusterId) ?? clusters[0] ?? null;
1239
1239
  this.stateManager.updateState({
@@ -1277,9 +1277,9 @@ var ClusterManager = class extends BaseCollaborator {
1277
1277
  var TransactionTracker = class extends BaseCollaborator {
1278
1278
  constructor(stateManager, eventEmitter, maxTransactions = 20, debug = false) {
1279
1279
  super({ stateManager, eventEmitter, debug }, "TransactionTracker");
1280
- chunkRIQH5W7D_js.__publicField(this, "transactions", []);
1281
- chunkRIQH5W7D_js.__publicField(this, "totalTransactions", 0);
1282
- chunkRIQH5W7D_js.__publicField(this, "maxTransactions");
1280
+ chunkI64FD2EH_js.__publicField(this, "transactions", []);
1281
+ chunkI64FD2EH_js.__publicField(this, "totalTransactions", 0);
1282
+ chunkI64FD2EH_js.__publicField(this, "maxTransactions");
1283
1283
  this.maxTransactions = maxTransactions;
1284
1284
  }
1285
1285
  /**
@@ -1333,10 +1333,10 @@ var TransactionTracker = class extends BaseCollaborator {
1333
1333
  // src/lib/health/health-monitor.ts
1334
1334
  var HealthMonitor = class {
1335
1335
  constructor(stateManager, walletStorage, clusterStorage, isInitialized) {
1336
- chunkRIQH5W7D_js.__publicField(this, "stateManager");
1337
- chunkRIQH5W7D_js.__publicField(this, "walletStorage");
1338
- chunkRIQH5W7D_js.__publicField(this, "clusterStorage");
1339
- chunkRIQH5W7D_js.__publicField(this, "isInitialized");
1336
+ chunkI64FD2EH_js.__publicField(this, "stateManager");
1337
+ chunkI64FD2EH_js.__publicField(this, "walletStorage");
1338
+ chunkI64FD2EH_js.__publicField(this, "clusterStorage");
1339
+ chunkI64FD2EH_js.__publicField(this, "isInitialized");
1340
1340
  this.stateManager = stateManager, this.walletStorage = walletStorage, this.clusterStorage = clusterStorage, this.isInitialized = isInitialized ?? (() => true);
1341
1341
  }
1342
1342
  /**
@@ -1388,19 +1388,19 @@ var HealthMonitor = class {
1388
1388
  };
1389
1389
 
1390
1390
  // src/lib/core/connector-client.ts
1391
- var logger5 = chunkRIQH5W7D_js.createLogger("ConnectorClient"), ConnectorClient = class {
1391
+ var logger5 = chunkI64FD2EH_js.createLogger("ConnectorClient"), ConnectorClient = class {
1392
1392
  constructor(config = {}) {
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
+ 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");
1404
1404
  this.config = config;
1405
1405
  let initialState = {
1406
1406
  wallets: [],
@@ -1540,6 +1540,12 @@ var logger5 = chunkRIQH5W7D_js.createLogger("ConnectorClient"), ConnectorClient
1540
1540
  totalTransactions: this.transactionTracker.getTotalCount()
1541
1541
  };
1542
1542
  }
1543
+ /**
1544
+ * Get the current connector configuration
1545
+ */
1546
+ getConfig() {
1547
+ return this.config;
1548
+ }
1543
1549
  resetDebugMetrics() {
1544
1550
  this.debugMetrics.resetMetrics();
1545
1551
  }
@@ -1548,7 +1554,7 @@ var logger5 = chunkRIQH5W7D_js.createLogger("ConnectorClient"), ConnectorClient
1548
1554
  }), this.walletDetector.destroy(), this.eventEmitter.offAll(), this.stateManager.clear();
1549
1555
  }
1550
1556
  };
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 {
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 {
1552
1558
  static log(error, errorInfo, context) {
1553
1559
  if (process.env.NODE_ENV === "development" && logger6.error(error.message, {
1554
1560
  error,
@@ -1596,8 +1602,8 @@ function classifyError(error) {
1596
1602
  var ConnectorErrorBoundary = class extends react.Component {
1597
1603
  constructor(props) {
1598
1604
  super(props);
1599
- chunkRIQH5W7D_js.__publicField(this, "retryTimeouts", /* @__PURE__ */ new Set());
1600
- chunkRIQH5W7D_js.__publicField(this, "retry", () => {
1605
+ chunkI64FD2EH_js.__publicField(this, "retryTimeouts", /* @__PURE__ */ new Set());
1606
+ chunkI64FD2EH_js.__publicField(this, "retry", () => {
1601
1607
  let { maxRetries = 3 } = this.props;
1602
1608
  this.state.retryCount >= maxRetries || this.setState((prevState) => ({
1603
1609
  hasError: false,
@@ -1819,11 +1825,11 @@ function withErrorBoundary(Component2, errorBoundaryProps) {
1819
1825
  let WrappedComponent = (props) => /* @__PURE__ */ jsxRuntime.jsx(ConnectorErrorBoundary, { ...errorBoundaryProps, children: /* @__PURE__ */ jsxRuntime.jsx(Component2, { ...props }) });
1820
1826
  return WrappedComponent.displayName = `withErrorBoundary(${Component2.displayName || Component2.name})`, WrappedComponent;
1821
1827
  }
1822
- var logger7 = chunkRIQH5W7D_js.createLogger("Polyfills"), installed = false;
1828
+ var logger7 = chunkI64FD2EH_js.createLogger("Polyfills"), installed = false;
1823
1829
  function installPolyfills() {
1824
1830
  if (!(installed || typeof window > "u"))
1825
1831
  try {
1826
- webcryptoEd25519Polyfill.install(), installed = true, process.env.NODE_ENV === "development" && logger7 && logger7.info("Browser compatibility polyfills installed");
1832
+ webcryptoEd25519Polyfill.install(), installed = true, logger7.info("Browser compatibility polyfills installed");
1827
1833
  } catch (error) {
1828
1834
  logger7 && logger7.warn("Failed to install polyfills", { error }), installed = true;
1829
1835
  }
@@ -1992,7 +1998,7 @@ async function copySignatureToClipboard(signature, options) {
1992
1998
  }
1993
1999
 
1994
2000
  // src/lib/transaction/transaction-validator.ts
1995
- var logger8 = chunkRIQH5W7D_js.createLogger("TransactionValidator"), MAX_TRANSACTION_SIZE = 1232, MIN_TRANSACTION_SIZE = 64, TransactionValidator = class {
2001
+ var logger8 = chunkI64FD2EH_js.createLogger("TransactionValidator"), MAX_TRANSACTION_SIZE = 1232, MIN_TRANSACTION_SIZE = 64, TransactionValidator = class {
1996
2002
  /**
1997
2003
  * Validate a transaction before signing
1998
2004
  *
@@ -2097,7 +2103,7 @@ var logger8 = chunkRIQH5W7D_js.createLogger("TransactionValidator"), MAX_TRANSAC
2097
2103
  };
2098
2104
 
2099
2105
  // src/lib/transaction/transaction-signer.ts
2100
- var logger9 = chunkRIQH5W7D_js.createLogger("TransactionSigner");
2106
+ var logger9 = chunkI64FD2EH_js.createLogger("TransactionSigner");
2101
2107
  function createTransactionSigner(config) {
2102
2108
  let { wallet, account, cluster, eventEmitter } = config;
2103
2109
  if (!wallet || !account)
@@ -2117,7 +2123,7 @@ function createTransactionSigner(config) {
2117
2123
  throw logger9.error("Transaction validation failed", { errors: validation.errors }), Errors.invalidTransaction(validation.errors.join(", "));
2118
2124
  validation.warnings.length > 0 && logger9.warn("Transaction validation warnings", { warnings: validation.warnings });
2119
2125
  try {
2120
- let signFeature = features["solana:signTransaction"], { serialized, wasWeb3js } = chunkRIQH5W7D_js.prepareTransactionForWallet(transaction);
2126
+ let signFeature = features["solana:signTransaction"], { serialized, wasWeb3js } = chunkI64FD2EH_js.prepareTransactionForWallet(transaction);
2121
2127
  logger9.debug("Signing transaction", {
2122
2128
  wasWeb3js,
2123
2129
  serializedLength: serialized.length,
@@ -2170,10 +2176,10 @@ function createTransactionSigner(config) {
2170
2176
  logger9.debug("Found signedTransaction property");
2171
2177
  let bytes = signedTx.signedTransaction;
2172
2178
  if (bytes instanceof Uint8Array)
2173
- return await chunkRIQH5W7D_js.convertSignedTransaction(bytes, wasWeb3js);
2179
+ return await chunkI64FD2EH_js.convertSignedTransaction(bytes, wasWeb3js);
2174
2180
  }
2175
2181
  if (signedTx instanceof Uint8Array)
2176
- return await chunkRIQH5W7D_js.convertSignedTransaction(signedTx, wasWeb3js);
2182
+ return await chunkI64FD2EH_js.convertSignedTransaction(signedTx, wasWeb3js);
2177
2183
  throw logger9.error("Unexpected wallet response format", {
2178
2184
  type: typeof signedTx,
2179
2185
  constructor: signedTx?.constructor?.name
@@ -2190,14 +2196,14 @@ function createTransactionSigner(config) {
2190
2196
  return [];
2191
2197
  if (capabilities.supportsBatchSigning)
2192
2198
  try {
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({
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({
2194
2200
  account,
2195
2201
  transactions: serializedTxs,
2196
2202
  ...cluster ? { chain: cluster.id } : {}
2197
2203
  });
2198
2204
  return await Promise.all(
2199
2205
  result.signedTransactions.map(
2200
- (signedBytes) => chunkRIQH5W7D_js.convertSignedTransaction(signedBytes, wasWeb3js)
2206
+ (signedBytes) => chunkI64FD2EH_js.convertSignedTransaction(signedBytes, wasWeb3js)
2201
2207
  )
2202
2208
  );
2203
2209
  } catch (error) {
@@ -2229,7 +2235,7 @@ function createTransactionSigner(config) {
2229
2235
  if (!capabilities.canSend)
2230
2236
  throw Errors.featureNotSupported("sending transactions");
2231
2237
  try {
2232
- let sendFeature = features["solana:signAndSendTransaction"], { serialized } = chunkRIQH5W7D_js.prepareTransactionForWallet(transaction);
2238
+ let sendFeature = features["solana:signAndSendTransaction"], { serialized } = chunkI64FD2EH_js.prepareTransactionForWallet(transaction);
2233
2239
  eventEmitter && eventEmitter.emit({
2234
2240
  type: "transaction:preparing",
2235
2241
  transaction: serialized,
@@ -2315,7 +2321,7 @@ var TransactionSignerError = class extends TransactionError {
2315
2321
  function isTransactionSignerError(error) {
2316
2322
  return error instanceof TransactionSignerError || error instanceof TransactionError;
2317
2323
  }
2318
- var logger10 = chunkRIQH5W7D_js.createLogger("KitTransactionSigner");
2324
+ var logger10 = chunkI64FD2EH_js.createLogger("KitTransactionSigner");
2319
2325
  function encodeShortVecLength(value) {
2320
2326
  let bytes = [], remaining = value;
2321
2327
  for (; remaining >= 128; )
@@ -2347,7 +2353,7 @@ function extractSignature(signedTx) {
2347
2353
  let signatureStart = bytesConsumed;
2348
2354
  return signedTx.slice(signatureStart, signatureStart + 64);
2349
2355
  }
2350
- if (chunkRIQH5W7D_js.isWeb3jsTransaction(signedTx)) {
2356
+ if (chunkI64FD2EH_js.isWeb3jsTransaction(signedTx)) {
2351
2357
  let signatures = signedTx.signatures;
2352
2358
  if (!signatures || signatures.length === 0)
2353
2359
  throw new Error("No signatures found in web3.js transaction");
@@ -2388,7 +2394,7 @@ function createKitTransactionSigner(connectorSigner) {
2388
2394
  let signedTxBytes;
2389
2395
  if (signedTx instanceof Uint8Array)
2390
2396
  signedTxBytes = signedTx;
2391
- else if (chunkRIQH5W7D_js.isWeb3jsTransaction(signedTx)) {
2397
+ else if (chunkI64FD2EH_js.isWeb3jsTransaction(signedTx)) {
2392
2398
  let txObj = signedTx;
2393
2399
  if (typeof txObj.serialize == "function")
2394
2400
  signedTxBytes = txObj.serialize();
@@ -2506,5 +2512,5 @@ exports.toClusterId = toClusterId;
2506
2512
  exports.toConnectorError = toConnectorError;
2507
2513
  exports.truncate = truncate;
2508
2514
  exports.withErrorBoundary = withErrorBoundary;
2509
- //# sourceMappingURL=chunk-CLXM6UEE.js.map
2510
- //# sourceMappingURL=chunk-CLXM6UEE.js.map
2515
+ //# sourceMappingURL=chunk-JUZVCBAI.js.map
2516
+ //# sourceMappingURL=chunk-JUZVCBAI.js.map