@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.
- package/dist/chunk-6PBQ5CXV.mjs +635 -0
- package/dist/chunk-6PBQ5CXV.mjs.map +1 -0
- package/dist/{chunk-SGAIPK7Q.js → chunk-D4JGBIP7.js} +11 -11
- package/dist/chunk-D4JGBIP7.js.map +1 -0
- package/dist/{chunk-7TADXRFD.mjs → chunk-EGYXJT54.mjs} +3 -3
- package/dist/chunk-EGYXJT54.mjs.map +1 -0
- package/dist/chunk-P4ZLJI4L.js +706 -0
- package/dist/chunk-P4ZLJI4L.js.map +1 -0
- package/dist/{chunk-ZLPQUOFK.js → chunk-P5A3XNFF.js} +59 -171
- package/dist/chunk-P5A3XNFF.js.map +1 -0
- package/dist/{chunk-52WUWW5R.mjs → chunk-TAAXHAV2.mjs} +58 -172
- package/dist/chunk-TAAXHAV2.mjs.map +1 -0
- package/dist/compat.d.mts +1 -60
- package/dist/compat.d.ts +1 -60
- package/dist/compat.js.map +1 -1
- package/dist/compat.mjs.map +1 -1
- package/dist/headless.d.mts +222 -107
- package/dist/headless.d.ts +222 -107
- package/dist/headless.js +201 -81
- package/dist/headless.mjs +2 -2
- package/dist/index.d.mts +7 -3
- package/dist/index.d.ts +7 -3
- package/dist/index.js +216 -96
- package/dist/index.mjs +3 -3
- package/dist/react.d.mts +5 -154
- package/dist/react.d.ts +5 -154
- package/dist/react.js +16 -16
- package/dist/react.mjs +2 -2
- package/dist/{transaction-signer-BtJPGXIg.d.ts → transaction-signer-D3csM_Mf.d.mts} +1 -175
- package/dist/{transaction-signer-BtJPGXIg.d.mts → transaction-signer-D3csM_Mf.d.ts} +1 -175
- package/dist/{wallet-standard-shim-BGlvGRbB.d.ts → wallet-standard-shim-C1tisl9S.d.ts} +5 -169
- package/dist/{wallet-standard-shim-Af7ejSld.d.mts → wallet-standard-shim-Cg0GVGwu.d.mts} +5 -169
- package/package.json +7 -1
- package/dist/chunk-52WUWW5R.mjs.map +0 -1
- package/dist/chunk-5NSUFMCB.js +0 -393
- package/dist/chunk-5NSUFMCB.js.map +0 -1
- package/dist/chunk-7TADXRFD.mjs.map +0 -1
- package/dist/chunk-ACFSCMUI.mjs +0 -359
- package/dist/chunk-ACFSCMUI.mjs.map +0 -1
- package/dist/chunk-SGAIPK7Q.js.map +0 -1
- 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-
|
|
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-
|
|
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
|
package/dist/compat.js.map
CHANGED
|
@@ -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"]}
|
package/dist/compat.mjs.map
CHANGED
|
@@ -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"]}
|