@solana/connector 0.1.0 → 0.1.1

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 (41) hide show
  1. package/dist/chunk-6PBQ5CXV.mjs +635 -0
  2. package/dist/chunk-6PBQ5CXV.mjs.map +1 -0
  3. package/dist/{chunk-SGAIPK7Q.js → chunk-D4JGBIP7.js} +11 -11
  4. package/dist/chunk-D4JGBIP7.js.map +1 -0
  5. package/dist/{chunk-7TADXRFD.mjs → chunk-EGYXJT54.mjs} +3 -3
  6. package/dist/chunk-EGYXJT54.mjs.map +1 -0
  7. package/dist/chunk-P4ZLJI4L.js +706 -0
  8. package/dist/chunk-P4ZLJI4L.js.map +1 -0
  9. package/dist/{chunk-ZLPQUOFK.js → chunk-P5A3XNFF.js} +59 -171
  10. package/dist/chunk-P5A3XNFF.js.map +1 -0
  11. package/dist/{chunk-52WUWW5R.mjs → chunk-TAAXHAV2.mjs} +58 -172
  12. package/dist/chunk-TAAXHAV2.mjs.map +1 -0
  13. package/dist/compat.d.mts +1 -60
  14. package/dist/compat.d.ts +1 -60
  15. package/dist/compat.js.map +1 -1
  16. package/dist/compat.mjs.map +1 -1
  17. package/dist/headless.d.mts +222 -107
  18. package/dist/headless.d.ts +222 -107
  19. package/dist/headless.js +201 -81
  20. package/dist/headless.mjs +2 -2
  21. package/dist/index.d.mts +7 -3
  22. package/dist/index.d.ts +7 -3
  23. package/dist/index.js +216 -96
  24. package/dist/index.mjs +3 -3
  25. package/dist/react.d.mts +5 -154
  26. package/dist/react.d.ts +5 -154
  27. package/dist/react.js +16 -16
  28. package/dist/react.mjs +2 -2
  29. package/dist/{transaction-signer-BtJPGXIg.d.ts → transaction-signer-D3csM_Mf.d.mts} +1 -175
  30. package/dist/{transaction-signer-BtJPGXIg.d.mts → transaction-signer-D3csM_Mf.d.ts} +1 -175
  31. package/dist/{wallet-standard-shim-BGlvGRbB.d.ts → wallet-standard-shim-C1tisl9S.d.ts} +5 -169
  32. package/dist/{wallet-standard-shim-Af7ejSld.d.mts → wallet-standard-shim-Cg0GVGwu.d.mts} +5 -169
  33. package/package.json +7 -1
  34. package/dist/chunk-52WUWW5R.mjs.map +0 -1
  35. package/dist/chunk-5NSUFMCB.js +0 -393
  36. package/dist/chunk-5NSUFMCB.js.map +0 -1
  37. package/dist/chunk-7TADXRFD.mjs.map +0 -1
  38. package/dist/chunk-ACFSCMUI.mjs +0 -359
  39. package/dist/chunk-ACFSCMUI.mjs.map +0 -1
  40. package/dist/chunk-SGAIPK7Q.js.map +0 -1
  41. package/dist/chunk-ZLPQUOFK.js.map +0 -1
package/dist/compat.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { S as SolanaTransaction, j as TransactionSigner } from './transaction-signer-BtJPGXIg.mjs';
1
+ import { S as SolanaTransaction, j as TransactionSigner } from './transaction-signer-D3csM_Mf.mjs';
2
2
  import { Connection, SendOptions } from '@solana/web3.js';
3
3
  import '@wallet-standard/base';
4
4
  import '@wallet-ui/core';
@@ -6,10 +6,6 @@ import 'gill';
6
6
 
7
7
  /**
8
8
  * Wallet Adapter Compatibility Bridge
9
- *
10
- * Provides a compatibility layer that bridges connector-kit's TransactionSigner
11
- * with @solana/wallet-adapter interface for seamless integration with
12
- * libraries expecting wallet-adapter (Jupiter, Serum, Raydium, etc.)
13
9
  */
14
10
 
15
11
  /**
@@ -38,62 +34,7 @@ interface WalletAdapterCompatOptions {
38
34
  /** Optional error handler */
39
35
  onError?: (error: Error, operation: string) => void;
40
36
  }
41
- /**
42
- * Creates a wallet-adapter compatible interface from a TransactionSigner.
43
- * This allows using connector-kit with any library that expects @solana/wallet-adapter.
44
- *
45
- * @example
46
- * ```typescript
47
- * import { createWalletAdapterCompat } from '@solana/connector/compat';
48
- * import { useTransactionSigner, useConnector } from '@solana/connector';
49
- *
50
- * function JupiterIntegration() {
51
- * const { signer } = useTransactionSigner();
52
- * const { disconnect } = useConnector();
53
- *
54
- * const walletAdapter = createWalletAdapterCompat(signer, {
55
- * disconnect: async () => {
56
- * await disconnect();
57
- * }
58
- * });
59
- *
60
- * return <JupiterTerminal wallet={walletAdapter} />;
61
- * }
62
- * ```
63
- *
64
- * @param signer - TransactionSigner from connector-kit (can be null)
65
- * @param options - Configuration options including disconnect handler
66
- * @returns WalletAdapterCompatible interface
67
- */
68
37
  declare function createWalletAdapterCompat(signer: TransactionSigner | null, options: WalletAdapterCompatOptions): WalletAdapterCompatible;
69
- /**
70
- * React hook version of createWalletAdapterCompat.
71
- * Automatically memoizes the adapter when signer changes.
72
- *
73
- * @example
74
- * ```typescript
75
- * import { useWalletAdapterCompat } from '@solana/connector/compat';
76
- * import { useTransactionSigner, useConnector } from '@solana/connector';
77
- *
78
- * function MyComponent() {
79
- * const { signer } = useTransactionSigner();
80
- * const { disconnect } = useConnector();
81
- *
82
- * const walletAdapter = useWalletAdapterCompat(signer, disconnect, {
83
- * onError: (error, operation) => {
84
- * console.error(`Error in ${operation}:`, error);
85
- * }
86
- * });
87
- *
88
- * return <JupiterTerminal wallet={walletAdapter} />;
89
- * }
90
- * ```
91
- *
92
- * @param signer - TransactionSigner from useTransactionSigner
93
- * @param disconnect - Disconnect function from useConnector
94
- * @param options - Additional options (excluding disconnect)
95
- * @returns Memoized WalletAdapterCompatible interface
96
- */
97
38
  declare function useWalletAdapterCompat(signer: TransactionSigner | null, disconnect: () => Promise<void>, options?: Omit<WalletAdapterCompatOptions, 'disconnect'>): WalletAdapterCompatible;
98
39
  /**
99
40
  * Type guard to check if an object implements WalletAdapterCompatible interface
package/dist/compat.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { S as SolanaTransaction, j as TransactionSigner } from './transaction-signer-BtJPGXIg.js';
1
+ import { S as SolanaTransaction, j as TransactionSigner } from './transaction-signer-D3csM_Mf.js';
2
2
  import { Connection, SendOptions } from '@solana/web3.js';
3
3
  import '@wallet-standard/base';
4
4
  import '@wallet-ui/core';
@@ -6,10 +6,6 @@ import 'gill';
6
6
 
7
7
  /**
8
8
  * Wallet Adapter Compatibility Bridge
9
- *
10
- * Provides a compatibility layer that bridges connector-kit's TransactionSigner
11
- * with @solana/wallet-adapter interface for seamless integration with
12
- * libraries expecting wallet-adapter (Jupiter, Serum, Raydium, etc.)
13
9
  */
14
10
 
15
11
  /**
@@ -38,62 +34,7 @@ interface WalletAdapterCompatOptions {
38
34
  /** Optional error handler */
39
35
  onError?: (error: Error, operation: string) => void;
40
36
  }
41
- /**
42
- * Creates a wallet-adapter compatible interface from a TransactionSigner.
43
- * This allows using connector-kit with any library that expects @solana/wallet-adapter.
44
- *
45
- * @example
46
- * ```typescript
47
- * import { createWalletAdapterCompat } from '@solana/connector/compat';
48
- * import { useTransactionSigner, useConnector } from '@solana/connector';
49
- *
50
- * function JupiterIntegration() {
51
- * const { signer } = useTransactionSigner();
52
- * const { disconnect } = useConnector();
53
- *
54
- * const walletAdapter = createWalletAdapterCompat(signer, {
55
- * disconnect: async () => {
56
- * await disconnect();
57
- * }
58
- * });
59
- *
60
- * return <JupiterTerminal wallet={walletAdapter} />;
61
- * }
62
- * ```
63
- *
64
- * @param signer - TransactionSigner from connector-kit (can be null)
65
- * @param options - Configuration options including disconnect handler
66
- * @returns WalletAdapterCompatible interface
67
- */
68
37
  declare function createWalletAdapterCompat(signer: TransactionSigner | null, options: WalletAdapterCompatOptions): WalletAdapterCompatible;
69
- /**
70
- * React hook version of createWalletAdapterCompat.
71
- * Automatically memoizes the adapter when signer changes.
72
- *
73
- * @example
74
- * ```typescript
75
- * import { useWalletAdapterCompat } from '@solana/connector/compat';
76
- * import { useTransactionSigner, useConnector } from '@solana/connector';
77
- *
78
- * function MyComponent() {
79
- * const { signer } = useTransactionSigner();
80
- * const { disconnect } = useConnector();
81
- *
82
- * const walletAdapter = useWalletAdapterCompat(signer, disconnect, {
83
- * onError: (error, operation) => {
84
- * console.error(`Error in ${operation}:`, error);
85
- * }
86
- * });
87
- *
88
- * return <JupiterTerminal wallet={walletAdapter} />;
89
- * }
90
- * ```
91
- *
92
- * @param signer - TransactionSigner from useTransactionSigner
93
- * @param disconnect - Disconnect function from useConnector
94
- * @param options - Additional options (excluding disconnect)
95
- * @returns Memoized WalletAdapterCompatible interface
96
- */
97
38
  declare function useWalletAdapterCompat(signer: TransactionSigner | null, disconnect: () => Promise<void>, options?: Omit<WalletAdapterCompatOptions, 'disconnect'>): WalletAdapterCompatible;
98
39
  /**
99
40
  * Type guard to check if an object implements WalletAdapterCompatible interface
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/compat.ts"],"names":["createLogger","isWeb3jsTransaction","useMemo"],"mappings":"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","file":"compat.js","sourcesContent":["/**\n * Wallet Adapter Compatibility Bridge\n *\n * Provides a compatibility layer that bridges connector-kit's TransactionSigner\n * with @solana/wallet-adapter interface for seamless integration with\n * libraries expecting wallet-adapter (Jupiter, Serum, Raydium, etc.)\n */\n\nimport { useMemo } from 'react';\nimport type { TransactionSigner } from './lib/transaction/transaction-signer';\nimport type { SolanaTransaction } from './types/transactions';\nimport type { Connection, SendOptions } from '@solana/web3.js';\nimport { isWeb3jsTransaction } from './utils/transaction-format';\nimport { createLogger } from './lib/utils/secure-logger';\n\nconst logger = createLogger('WalletAdapterCompat');\n\n/**\n * Wallet adapter compatible interface that libraries expect\n */\nexport interface WalletAdapterCompatible {\n publicKey: string | null;\n connected: boolean;\n connecting: boolean;\n disconnecting: boolean;\n\n signTransaction: (transaction: SolanaTransaction) => Promise<SolanaTransaction>;\n signAllTransactions: (transactions: SolanaTransaction[]) => Promise<SolanaTransaction[]>;\n sendTransaction: (transaction: SolanaTransaction, connection: Connection, options?: SendOptions) => Promise<string>;\n\n connect: () => Promise<void>;\n disconnect: () => Promise<void>;\n\n signMessage?: (message: Uint8Array) => Promise<Uint8Array>;\n}\n\n/**\n * Options for creating wallet adapter compatibility\n */\nexport interface WalletAdapterCompatOptions {\n /** Function to handle disconnect */\n disconnect: () => Promise<void>;\n\n /** Optional function to transform transactions before signing */\n transformTransaction?: (tx: SolanaTransaction) => SolanaTransaction;\n\n /** Optional error handler */\n onError?: (error: Error, operation: string) => void;\n}\n\n/**\n * Creates a wallet-adapter compatible interface from a TransactionSigner.\n * This allows using connector-kit with any library that expects @solana/wallet-adapter.\n *\n * @example\n * ```typescript\n * import { createWalletAdapterCompat } from '@solana/connector/compat';\n * import { useTransactionSigner, useConnector } from '@solana/connector';\n *\n * function JupiterIntegration() {\n * const { signer } = useTransactionSigner();\n * const { disconnect } = useConnector();\n *\n * const walletAdapter = createWalletAdapterCompat(signer, {\n * disconnect: async () => {\n * await disconnect();\n * }\n * });\n *\n * return <JupiterTerminal wallet={walletAdapter} />;\n * }\n * ```\n *\n * @param signer - TransactionSigner from connector-kit (can be null)\n * @param options - Configuration options including disconnect handler\n * @returns WalletAdapterCompatible interface\n */\nexport function createWalletAdapterCompat(\n signer: TransactionSigner | null,\n options: WalletAdapterCompatOptions,\n): WalletAdapterCompatible {\n const { disconnect, transformTransaction, onError } = options;\n\n const handleError = (error: Error, operation: string) => {\n if (onError) {\n onError(error, operation);\n } else {\n logger.error('Wallet adapter compat error', { operation, error });\n }\n };\n\n return {\n publicKey: signer?.address || null,\n connected: !!signer,\n connecting: false,\n disconnecting: false,\n\n signTransaction: async (transaction: SolanaTransaction) => {\n if (!signer) {\n const error = new Error('Wallet not connected');\n handleError(error, 'signTransaction');\n throw error;\n }\n\n try {\n const tx = transformTransaction ? transformTransaction(transaction) : transaction;\n\n // Use the signer's sign method\n const signed = await signer.signTransaction(tx);\n return signed;\n } catch (error) {\n handleError(error as Error, 'signTransaction');\n throw error;\n }\n },\n\n signAllTransactions: async (transactions: SolanaTransaction[]) => {\n if (!signer) {\n const error = new Error('Wallet not connected');\n handleError(error, 'signAllTransactions');\n throw error;\n }\n\n try {\n const txs = transformTransaction ? transactions.map(tx => transformTransaction(tx)) : transactions;\n\n // Sign each transaction\n const signedTxs = await Promise.all(txs.map(tx => signer.signTransaction(tx)));\n\n return signedTxs;\n } catch (error) {\n handleError(error as Error, 'signAllTransactions');\n throw error;\n }\n },\n\n sendTransaction: async (transaction: SolanaTransaction, connection: Connection, sendOptions?: SendOptions) => {\n if (!signer) {\n const error = new Error('Wallet not connected');\n handleError(error, 'sendTransaction');\n throw error;\n }\n\n try {\n const tx = transformTransaction ? transformTransaction(transaction) : transaction;\n\n // Wallet adapter pattern: Sign the transaction, then send via connection\n // The signer.signTransaction now handles format conversion automatically:\n // web3.js → Wallet Standard (serialized) → web3.js\n const capabilities = signer.getCapabilities();\n\n if (!capabilities.canSign) {\n throw new Error('Wallet does not support transaction signing');\n }\n\n // Sign the transaction (format conversion happens inside signTransaction)\n const signedTx = await signer.signTransaction(tx);\n\n // Serialize the signed transaction\n let rawTransaction: Uint8Array;\n if (isWeb3jsTransaction(signedTx)) {\n rawTransaction = signedTx.serialize();\n } else if (signedTx instanceof Uint8Array) {\n rawTransaction = signedTx;\n } else {\n throw new Error('Unexpected signed transaction format');\n }\n\n const signature = await connection.sendRawTransaction(rawTransaction, sendOptions);\n\n return signature;\n } catch (error) {\n handleError(error as Error, 'sendTransaction');\n throw error;\n }\n },\n\n connect: async () => {\n // Connect is handled by connector-kit's ConnectorProvider\n // This is a no-op for compatibility\n return Promise.resolve();\n },\n\n disconnect: async () => {\n try {\n await disconnect();\n } catch (error) {\n handleError(error as Error, 'disconnect');\n throw error;\n }\n },\n\n signMessage: signer?.signMessage\n ? async (message: Uint8Array) => {\n if (!signer?.signMessage) {\n const error = new Error('Message signing not supported');\n handleError(error, 'signMessage');\n throw error;\n }\n\n try {\n return await signer.signMessage(message);\n } catch (error) {\n handleError(error as Error, 'signMessage');\n throw error;\n }\n }\n : undefined,\n };\n}\n\n/**\n * React hook version of createWalletAdapterCompat.\n * Automatically memoizes the adapter when signer changes.\n *\n * @example\n * ```typescript\n * import { useWalletAdapterCompat } from '@solana/connector/compat';\n * import { useTransactionSigner, useConnector } from '@solana/connector';\n *\n * function MyComponent() {\n * const { signer } = useTransactionSigner();\n * const { disconnect } = useConnector();\n *\n * const walletAdapter = useWalletAdapterCompat(signer, disconnect, {\n * onError: (error, operation) => {\n * console.error(`Error in ${operation}:`, error);\n * }\n * });\n *\n * return <JupiterTerminal wallet={walletAdapter} />;\n * }\n * ```\n *\n * @param signer - TransactionSigner from useTransactionSigner\n * @param disconnect - Disconnect function from useConnector\n * @param options - Additional options (excluding disconnect)\n * @returns Memoized WalletAdapterCompatible interface\n */\nexport function useWalletAdapterCompat(\n signer: TransactionSigner | null,\n disconnect: () => Promise<void>,\n options?: Omit<WalletAdapterCompatOptions, 'disconnect'>,\n): WalletAdapterCompatible {\n return useMemo(() => {\n return createWalletAdapterCompat(signer, {\n disconnect,\n ...options,\n });\n }, [signer, disconnect, options?.transformTransaction, options?.onError]);\n}\n\n/**\n * Type guard to check if an object implements WalletAdapterCompatible interface\n *\n * @param obj - Object to check\n * @returns True if object implements WalletAdapterCompatible\n */\nexport function isWalletAdapterCompatible(obj: unknown): obj is WalletAdapterCompatible {\n if (!obj || typeof obj !== 'object') return false;\n\n const wallet = obj as Record<string, unknown>;\n\n return (\n 'publicKey' in wallet &&\n 'connected' in wallet &&\n 'connecting' in wallet &&\n 'disconnecting' in wallet &&\n typeof wallet.signTransaction === 'function' &&\n typeof wallet.signAllTransactions === 'function' &&\n typeof wallet.sendTransaction === 'function' &&\n typeof wallet.connect === 'function' &&\n typeof wallet.disconnect === 'function'\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/compat.ts"],"names":["createLogger","isWeb3jsTransaction","useMemo"],"mappings":"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","file":"compat.js","sourcesContent":["/**\n * Wallet Adapter Compatibility Bridge\n */\n\nimport { useMemo } from 'react';\nimport type { TransactionSigner } from './lib/transaction/transaction-signer';\nimport type { SolanaTransaction } from './types/transactions';\nimport type { Connection, SendOptions } from '@solana/web3.js';\nimport { isWeb3jsTransaction } from './utils/transaction-format';\nimport { createLogger } from './lib/utils/secure-logger';\n\nconst logger = createLogger('WalletAdapterCompat');\n\n/**\n * Wallet adapter compatible interface that libraries expect\n */\nexport interface WalletAdapterCompatible {\n publicKey: string | null;\n connected: boolean;\n connecting: boolean;\n disconnecting: boolean;\n\n signTransaction: (transaction: SolanaTransaction) => Promise<SolanaTransaction>;\n signAllTransactions: (transactions: SolanaTransaction[]) => Promise<SolanaTransaction[]>;\n sendTransaction: (transaction: SolanaTransaction, connection: Connection, options?: SendOptions) => Promise<string>;\n\n connect: () => Promise<void>;\n disconnect: () => Promise<void>;\n\n signMessage?: (message: Uint8Array) => Promise<Uint8Array>;\n}\n\n/**\n * Options for creating wallet adapter compatibility\n */\nexport interface WalletAdapterCompatOptions {\n /** Function to handle disconnect */\n disconnect: () => Promise<void>;\n\n /** Optional function to transform transactions before signing */\n transformTransaction?: (tx: SolanaTransaction) => SolanaTransaction;\n\n /** Optional error handler */\n onError?: (error: Error, operation: string) => void;\n}\n\nexport function createWalletAdapterCompat(\n signer: TransactionSigner | null,\n options: WalletAdapterCompatOptions,\n): WalletAdapterCompatible {\n const { disconnect, transformTransaction, onError } = options;\n\n const handleError = (error: Error, operation: string) => {\n if (onError) {\n onError(error, operation);\n } else {\n logger.error('Wallet adapter compat error', { operation, error });\n }\n };\n\n return {\n publicKey: signer?.address || null,\n connected: !!signer,\n connecting: false,\n disconnecting: false,\n\n signTransaction: async (transaction: SolanaTransaction) => {\n if (!signer) {\n const error = new Error('Wallet not connected');\n handleError(error, 'signTransaction');\n throw error;\n }\n\n try {\n const tx = transformTransaction ? transformTransaction(transaction) : transaction;\n\n // Use the signer's sign method\n const signed = await signer.signTransaction(tx);\n return signed;\n } catch (error) {\n handleError(error as Error, 'signTransaction');\n throw error;\n }\n },\n\n signAllTransactions: async (transactions: SolanaTransaction[]) => {\n if (!signer) {\n const error = new Error('Wallet not connected');\n handleError(error, 'signAllTransactions');\n throw error;\n }\n\n try {\n const txs = transformTransaction ? transactions.map(tx => transformTransaction(tx)) : transactions;\n\n // Sign each transaction\n const signedTxs = await Promise.all(txs.map(tx => signer.signTransaction(tx)));\n\n return signedTxs;\n } catch (error) {\n handleError(error as Error, 'signAllTransactions');\n throw error;\n }\n },\n\n sendTransaction: async (transaction: SolanaTransaction, connection: Connection, sendOptions?: SendOptions) => {\n if (!signer) {\n const error = new Error('Wallet not connected');\n handleError(error, 'sendTransaction');\n throw error;\n }\n\n try {\n const tx = transformTransaction ? transformTransaction(transaction) : transaction;\n\n const capabilities = signer.getCapabilities();\n\n if (!capabilities.canSign) {\n throw new Error('Wallet does not support transaction signing');\n }\n\n const signedTx = await signer.signTransaction(tx);\n\n // Serialize the signed transaction\n let rawTransaction: Uint8Array;\n if (isWeb3jsTransaction(signedTx)) {\n rawTransaction = signedTx.serialize();\n } else if (signedTx instanceof Uint8Array) {\n rawTransaction = signedTx;\n } else {\n throw new Error('Unexpected signed transaction format');\n }\n\n const signature = await connection.sendRawTransaction(rawTransaction, sendOptions);\n\n return signature;\n } catch (error) {\n handleError(error as Error, 'sendTransaction');\n throw error;\n }\n },\n\n connect: async () => {\n return Promise.resolve();\n },\n\n disconnect: async () => {\n try {\n await disconnect();\n } catch (error) {\n handleError(error as Error, 'disconnect');\n throw error;\n }\n },\n\n signMessage: signer?.signMessage\n ? async (message: Uint8Array) => {\n if (!signer?.signMessage) {\n const error = new Error('Message signing not supported');\n handleError(error, 'signMessage');\n throw error;\n }\n\n try {\n return await signer.signMessage(message);\n } catch (error) {\n handleError(error as Error, 'signMessage');\n throw error;\n }\n }\n : undefined,\n };\n}\n\nexport function useWalletAdapterCompat(\n signer: TransactionSigner | null,\n disconnect: () => Promise<void>,\n options?: Omit<WalletAdapterCompatOptions, 'disconnect'>,\n): WalletAdapterCompatible {\n return useMemo(() => {\n return createWalletAdapterCompat(signer, {\n disconnect,\n ...options,\n });\n }, [signer, disconnect, options?.transformTransaction, options?.onError]);\n}\n\n/**\n * Type guard to check if an object implements WalletAdapterCompatible interface\n *\n * @param obj - Object to check\n * @returns True if object implements WalletAdapterCompatible\n */\nexport function isWalletAdapterCompatible(obj: unknown): obj is WalletAdapterCompatible {\n if (!obj || typeof obj !== 'object') return false;\n\n const wallet = obj as Record<string, unknown>;\n\n return (\n 'publicKey' in wallet &&\n 'connected' in wallet &&\n 'connecting' in wallet &&\n 'disconnecting' in wallet &&\n typeof wallet.signTransaction === 'function' &&\n typeof wallet.signAllTransactions === 'function' &&\n typeof wallet.sendTransaction === 'function' &&\n typeof wallet.connect === 'function' &&\n typeof wallet.disconnect === 'function'\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/compat.ts"],"names":[],"mappings":"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","file":"compat.mjs","sourcesContent":["/**\n * Wallet Adapter Compatibility Bridge\n *\n * Provides a compatibility layer that bridges connector-kit's TransactionSigner\n * with @solana/wallet-adapter interface for seamless integration with\n * libraries expecting wallet-adapter (Jupiter, Serum, Raydium, etc.)\n */\n\nimport { useMemo } from 'react';\nimport type { TransactionSigner } from './lib/transaction/transaction-signer';\nimport type { SolanaTransaction } from './types/transactions';\nimport type { Connection, SendOptions } from '@solana/web3.js';\nimport { isWeb3jsTransaction } from './utils/transaction-format';\nimport { createLogger } from './lib/utils/secure-logger';\n\nconst logger = createLogger('WalletAdapterCompat');\n\n/**\n * Wallet adapter compatible interface that libraries expect\n */\nexport interface WalletAdapterCompatible {\n publicKey: string | null;\n connected: boolean;\n connecting: boolean;\n disconnecting: boolean;\n\n signTransaction: (transaction: SolanaTransaction) => Promise<SolanaTransaction>;\n signAllTransactions: (transactions: SolanaTransaction[]) => Promise<SolanaTransaction[]>;\n sendTransaction: (transaction: SolanaTransaction, connection: Connection, options?: SendOptions) => Promise<string>;\n\n connect: () => Promise<void>;\n disconnect: () => Promise<void>;\n\n signMessage?: (message: Uint8Array) => Promise<Uint8Array>;\n}\n\n/**\n * Options for creating wallet adapter compatibility\n */\nexport interface WalletAdapterCompatOptions {\n /** Function to handle disconnect */\n disconnect: () => Promise<void>;\n\n /** Optional function to transform transactions before signing */\n transformTransaction?: (tx: SolanaTransaction) => SolanaTransaction;\n\n /** Optional error handler */\n onError?: (error: Error, operation: string) => void;\n}\n\n/**\n * Creates a wallet-adapter compatible interface from a TransactionSigner.\n * This allows using connector-kit with any library that expects @solana/wallet-adapter.\n *\n * @example\n * ```typescript\n * import { createWalletAdapterCompat } from '@solana/connector/compat';\n * import { useTransactionSigner, useConnector } from '@solana/connector';\n *\n * function JupiterIntegration() {\n * const { signer } = useTransactionSigner();\n * const { disconnect } = useConnector();\n *\n * const walletAdapter = createWalletAdapterCompat(signer, {\n * disconnect: async () => {\n * await disconnect();\n * }\n * });\n *\n * return <JupiterTerminal wallet={walletAdapter} />;\n * }\n * ```\n *\n * @param signer - TransactionSigner from connector-kit (can be null)\n * @param options - Configuration options including disconnect handler\n * @returns WalletAdapterCompatible interface\n */\nexport function createWalletAdapterCompat(\n signer: TransactionSigner | null,\n options: WalletAdapterCompatOptions,\n): WalletAdapterCompatible {\n const { disconnect, transformTransaction, onError } = options;\n\n const handleError = (error: Error, operation: string) => {\n if (onError) {\n onError(error, operation);\n } else {\n logger.error('Wallet adapter compat error', { operation, error });\n }\n };\n\n return {\n publicKey: signer?.address || null,\n connected: !!signer,\n connecting: false,\n disconnecting: false,\n\n signTransaction: async (transaction: SolanaTransaction) => {\n if (!signer) {\n const error = new Error('Wallet not connected');\n handleError(error, 'signTransaction');\n throw error;\n }\n\n try {\n const tx = transformTransaction ? transformTransaction(transaction) : transaction;\n\n // Use the signer's sign method\n const signed = await signer.signTransaction(tx);\n return signed;\n } catch (error) {\n handleError(error as Error, 'signTransaction');\n throw error;\n }\n },\n\n signAllTransactions: async (transactions: SolanaTransaction[]) => {\n if (!signer) {\n const error = new Error('Wallet not connected');\n handleError(error, 'signAllTransactions');\n throw error;\n }\n\n try {\n const txs = transformTransaction ? transactions.map(tx => transformTransaction(tx)) : transactions;\n\n // Sign each transaction\n const signedTxs = await Promise.all(txs.map(tx => signer.signTransaction(tx)));\n\n return signedTxs;\n } catch (error) {\n handleError(error as Error, 'signAllTransactions');\n throw error;\n }\n },\n\n sendTransaction: async (transaction: SolanaTransaction, connection: Connection, sendOptions?: SendOptions) => {\n if (!signer) {\n const error = new Error('Wallet not connected');\n handleError(error, 'sendTransaction');\n throw error;\n }\n\n try {\n const tx = transformTransaction ? transformTransaction(transaction) : transaction;\n\n // Wallet adapter pattern: Sign the transaction, then send via connection\n // The signer.signTransaction now handles format conversion automatically:\n // web3.js → Wallet Standard (serialized) → web3.js\n const capabilities = signer.getCapabilities();\n\n if (!capabilities.canSign) {\n throw new Error('Wallet does not support transaction signing');\n }\n\n // Sign the transaction (format conversion happens inside signTransaction)\n const signedTx = await signer.signTransaction(tx);\n\n // Serialize the signed transaction\n let rawTransaction: Uint8Array;\n if (isWeb3jsTransaction(signedTx)) {\n rawTransaction = signedTx.serialize();\n } else if (signedTx instanceof Uint8Array) {\n rawTransaction = signedTx;\n } else {\n throw new Error('Unexpected signed transaction format');\n }\n\n const signature = await connection.sendRawTransaction(rawTransaction, sendOptions);\n\n return signature;\n } catch (error) {\n handleError(error as Error, 'sendTransaction');\n throw error;\n }\n },\n\n connect: async () => {\n // Connect is handled by connector-kit's ConnectorProvider\n // This is a no-op for compatibility\n return Promise.resolve();\n },\n\n disconnect: async () => {\n try {\n await disconnect();\n } catch (error) {\n handleError(error as Error, 'disconnect');\n throw error;\n }\n },\n\n signMessage: signer?.signMessage\n ? async (message: Uint8Array) => {\n if (!signer?.signMessage) {\n const error = new Error('Message signing not supported');\n handleError(error, 'signMessage');\n throw error;\n }\n\n try {\n return await signer.signMessage(message);\n } catch (error) {\n handleError(error as Error, 'signMessage');\n throw error;\n }\n }\n : undefined,\n };\n}\n\n/**\n * React hook version of createWalletAdapterCompat.\n * Automatically memoizes the adapter when signer changes.\n *\n * @example\n * ```typescript\n * import { useWalletAdapterCompat } from '@solana/connector/compat';\n * import { useTransactionSigner, useConnector } from '@solana/connector';\n *\n * function MyComponent() {\n * const { signer } = useTransactionSigner();\n * const { disconnect } = useConnector();\n *\n * const walletAdapter = useWalletAdapterCompat(signer, disconnect, {\n * onError: (error, operation) => {\n * console.error(`Error in ${operation}:`, error);\n * }\n * });\n *\n * return <JupiterTerminal wallet={walletAdapter} />;\n * }\n * ```\n *\n * @param signer - TransactionSigner from useTransactionSigner\n * @param disconnect - Disconnect function from useConnector\n * @param options - Additional options (excluding disconnect)\n * @returns Memoized WalletAdapterCompatible interface\n */\nexport function useWalletAdapterCompat(\n signer: TransactionSigner | null,\n disconnect: () => Promise<void>,\n options?: Omit<WalletAdapterCompatOptions, 'disconnect'>,\n): WalletAdapterCompatible {\n return useMemo(() => {\n return createWalletAdapterCompat(signer, {\n disconnect,\n ...options,\n });\n }, [signer, disconnect, options?.transformTransaction, options?.onError]);\n}\n\n/**\n * Type guard to check if an object implements WalletAdapterCompatible interface\n *\n * @param obj - Object to check\n * @returns True if object implements WalletAdapterCompatible\n */\nexport function isWalletAdapterCompatible(obj: unknown): obj is WalletAdapterCompatible {\n if (!obj || typeof obj !== 'object') return false;\n\n const wallet = obj as Record<string, unknown>;\n\n return (\n 'publicKey' in wallet &&\n 'connected' in wallet &&\n 'connecting' in wallet &&\n 'disconnecting' in wallet &&\n typeof wallet.signTransaction === 'function' &&\n typeof wallet.signAllTransactions === 'function' &&\n typeof wallet.sendTransaction === 'function' &&\n typeof wallet.connect === 'function' &&\n typeof wallet.disconnect === 'function'\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/compat.ts"],"names":[],"mappings":"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","file":"compat.mjs","sourcesContent":["/**\n * Wallet Adapter Compatibility Bridge\n */\n\nimport { useMemo } from 'react';\nimport type { TransactionSigner } from './lib/transaction/transaction-signer';\nimport type { SolanaTransaction } from './types/transactions';\nimport type { Connection, SendOptions } from '@solana/web3.js';\nimport { isWeb3jsTransaction } from './utils/transaction-format';\nimport { createLogger } from './lib/utils/secure-logger';\n\nconst logger = createLogger('WalletAdapterCompat');\n\n/**\n * Wallet adapter compatible interface that libraries expect\n */\nexport interface WalletAdapterCompatible {\n publicKey: string | null;\n connected: boolean;\n connecting: boolean;\n disconnecting: boolean;\n\n signTransaction: (transaction: SolanaTransaction) => Promise<SolanaTransaction>;\n signAllTransactions: (transactions: SolanaTransaction[]) => Promise<SolanaTransaction[]>;\n sendTransaction: (transaction: SolanaTransaction, connection: Connection, options?: SendOptions) => Promise<string>;\n\n connect: () => Promise<void>;\n disconnect: () => Promise<void>;\n\n signMessage?: (message: Uint8Array) => Promise<Uint8Array>;\n}\n\n/**\n * Options for creating wallet adapter compatibility\n */\nexport interface WalletAdapterCompatOptions {\n /** Function to handle disconnect */\n disconnect: () => Promise<void>;\n\n /** Optional function to transform transactions before signing */\n transformTransaction?: (tx: SolanaTransaction) => SolanaTransaction;\n\n /** Optional error handler */\n onError?: (error: Error, operation: string) => void;\n}\n\nexport function createWalletAdapterCompat(\n signer: TransactionSigner | null,\n options: WalletAdapterCompatOptions,\n): WalletAdapterCompatible {\n const { disconnect, transformTransaction, onError } = options;\n\n const handleError = (error: Error, operation: string) => {\n if (onError) {\n onError(error, operation);\n } else {\n logger.error('Wallet adapter compat error', { operation, error });\n }\n };\n\n return {\n publicKey: signer?.address || null,\n connected: !!signer,\n connecting: false,\n disconnecting: false,\n\n signTransaction: async (transaction: SolanaTransaction) => {\n if (!signer) {\n const error = new Error('Wallet not connected');\n handleError(error, 'signTransaction');\n throw error;\n }\n\n try {\n const tx = transformTransaction ? transformTransaction(transaction) : transaction;\n\n // Use the signer's sign method\n const signed = await signer.signTransaction(tx);\n return signed;\n } catch (error) {\n handleError(error as Error, 'signTransaction');\n throw error;\n }\n },\n\n signAllTransactions: async (transactions: SolanaTransaction[]) => {\n if (!signer) {\n const error = new Error('Wallet not connected');\n handleError(error, 'signAllTransactions');\n throw error;\n }\n\n try {\n const txs = transformTransaction ? transactions.map(tx => transformTransaction(tx)) : transactions;\n\n // Sign each transaction\n const signedTxs = await Promise.all(txs.map(tx => signer.signTransaction(tx)));\n\n return signedTxs;\n } catch (error) {\n handleError(error as Error, 'signAllTransactions');\n throw error;\n }\n },\n\n sendTransaction: async (transaction: SolanaTransaction, connection: Connection, sendOptions?: SendOptions) => {\n if (!signer) {\n const error = new Error('Wallet not connected');\n handleError(error, 'sendTransaction');\n throw error;\n }\n\n try {\n const tx = transformTransaction ? transformTransaction(transaction) : transaction;\n\n const capabilities = signer.getCapabilities();\n\n if (!capabilities.canSign) {\n throw new Error('Wallet does not support transaction signing');\n }\n\n const signedTx = await signer.signTransaction(tx);\n\n // Serialize the signed transaction\n let rawTransaction: Uint8Array;\n if (isWeb3jsTransaction(signedTx)) {\n rawTransaction = signedTx.serialize();\n } else if (signedTx instanceof Uint8Array) {\n rawTransaction = signedTx;\n } else {\n throw new Error('Unexpected signed transaction format');\n }\n\n const signature = await connection.sendRawTransaction(rawTransaction, sendOptions);\n\n return signature;\n } catch (error) {\n handleError(error as Error, 'sendTransaction');\n throw error;\n }\n },\n\n connect: async () => {\n return Promise.resolve();\n },\n\n disconnect: async () => {\n try {\n await disconnect();\n } catch (error) {\n handleError(error as Error, 'disconnect');\n throw error;\n }\n },\n\n signMessage: signer?.signMessage\n ? async (message: Uint8Array) => {\n if (!signer?.signMessage) {\n const error = new Error('Message signing not supported');\n handleError(error, 'signMessage');\n throw error;\n }\n\n try {\n return await signer.signMessage(message);\n } catch (error) {\n handleError(error as Error, 'signMessage');\n throw error;\n }\n }\n : undefined,\n };\n}\n\nexport function useWalletAdapterCompat(\n signer: TransactionSigner | null,\n disconnect: () => Promise<void>,\n options?: Omit<WalletAdapterCompatOptions, 'disconnect'>,\n): WalletAdapterCompatible {\n return useMemo(() => {\n return createWalletAdapterCompat(signer, {\n disconnect,\n ...options,\n });\n }, [signer, disconnect, options?.transformTransaction, options?.onError]);\n}\n\n/**\n * Type guard to check if an object implements WalletAdapterCompatible interface\n *\n * @param obj - Object to check\n * @returns True if object implements WalletAdapterCompatible\n */\nexport function isWalletAdapterCompatible(obj: unknown): obj is WalletAdapterCompatible {\n if (!obj || typeof obj !== 'object') return false;\n\n const wallet = obj as Record<string, unknown>;\n\n return (\n 'publicKey' in wallet &&\n 'connected' in wallet &&\n 'connecting' in wallet &&\n 'disconnecting' in wallet &&\n typeof wallet.signTransaction === 'function' &&\n typeof wallet.signAllTransactions === 'function' &&\n typeof wallet.sendTransaction === 'function' &&\n typeof wallet.connect === 'function' &&\n typeof wallet.disconnect === 'function'\n );\n}\n"]}