@solana/react 2.0.0-rc.0 → 2.0.0-rc.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/README.md CHANGED
@@ -6,9 +6,9 @@
6
6
 
7
7
  [code-style-prettier-image]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square
8
8
  [code-style-prettier-url]: https://github.com/prettier/prettier
9
- [npm-downloads-image]: https://img.shields.io/npm/dm/@solana/react/experimental.svg?style=flat
10
- [npm-image]: https://img.shields.io/npm/v/@solana/react/experimental.svg?style=flat
11
- [npm-url]: https://www.npmjs.com/package/@solana/react/v/experimental
9
+ [npm-downloads-image]: https://img.shields.io/npm/dm/@solana/react/rc.svg?style=flat
10
+ [npm-image]: https://img.shields.io/npm/v/@solana/react/rc.svg?style=flat
11
+ [npm-url]: https://www.npmjs.com/package/@solana/react/v/rc
12
12
  [semantic-release-image]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
13
13
  [semantic-release-url]: https://github.com/semantic-release/semantic-release
14
14
 
@@ -7,6 +7,7 @@ var uiRegistry = require('@wallet-standard/ui-registry');
7
7
  var react = require('react');
8
8
  var addresses = require('@solana/addresses');
9
9
  var errors$1 = require('@solana/errors');
10
+ var promises = require('@solana/promises');
10
11
  var transactions = require('@solana/transactions');
11
12
 
12
13
  // src/useSignAndSendTransaction.ts
@@ -183,31 +184,6 @@ function useSignTransactions(uiWalletAccount, chain) {
183
184
  [signTransactionFeature, account, chain]
184
185
  );
185
186
  }
186
-
187
- // src/abortable-promise.ts
188
- function getAbortablePromise(promise, abortSignal) {
189
- if (!abortSignal) {
190
- return promise;
191
- } else {
192
- return Promise.race([
193
- // This promise only ever rejects if the signal is aborted. Otherwise it idles forever.
194
- // It's important that this come before the input promise; in the event of an abort, we
195
- // want to throw even if the input promise's result is ready
196
- new Promise((_, reject) => {
197
- if (abortSignal.aborted) {
198
- reject(abortSignal.reason);
199
- } else {
200
- abortSignal.addEventListener("abort", function() {
201
- reject(this.reason);
202
- });
203
- }
204
- }),
205
- promise
206
- ]);
207
- }
208
- }
209
-
210
- // src/useWalletAccountMessageSigner.ts
211
187
  function useWalletAccountMessageSigner(uiWalletAccount) {
212
188
  const signMessage = useSignMessage(uiWalletAccount);
213
189
  return react.useMemo(
@@ -225,7 +201,7 @@ function useWalletAccountMessageSigner(uiWalletAccount) {
225
201
  const input = {
226
202
  message: originalMessage
227
203
  };
228
- const { signedMessage, signature } = await getAbortablePromise(signMessage(input), config?.abortSignal);
204
+ const { signedMessage, signature } = await promises.getAbortablePromise(signMessage(input), config?.abortSignal);
229
205
  const messageWasModified = originalMessage.length !== signedMessage.length || originalMessage.some((originalByte, ii) => originalByte !== signedMessage[ii]);
230
206
  const originalSignature = originalSignatureMap[uiWalletAccount.address];
231
207
  const signatureIsNew = !originalSignature?.every((originalByte, ii) => originalByte === signature[ii]);
@@ -267,7 +243,7 @@ function useWalletAccountTransactionSigner(uiWalletAccount, chain) {
267
243
  ...options,
268
244
  transaction: wireTransactionBytes
269
245
  };
270
- const { signedTransaction } = await getAbortablePromise(signTransaction(inputWithOptions), abortSignal);
246
+ const { signedTransaction } = await promises.getAbortablePromise(signTransaction(inputWithOptions), abortSignal);
271
247
  const decodedSignedTransaction = transactionCodec.decode(
272
248
  signedTransaction
273
249
  );
@@ -299,7 +275,7 @@ function useWalletAccountTransactionSendingSigner(uiWalletAccount, chain) {
299
275
  ...options,
300
276
  transaction: wireTransactionBytes
301
277
  };
302
- const { signature } = await getAbortablePromise(signAndSendTransaction(inputWithOptions), abortSignal);
278
+ const { signature } = await promises.getAbortablePromise(signAndSendTransaction(inputWithOptions), abortSignal);
303
279
  return Object.freeze([signature]);
304
280
  }
305
281
  }),
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/useSignAndSendTransaction.ts","../src/useSignIn.ts","../src/useSignMessage.ts","../src/useSignTransaction.ts","../src/abortable-promise.ts","../src/useWalletAccountMessageSigner.ts","../src/useWalletAccountTransactionSigner.ts","../src/useWalletAccountTransactionSendingSigner.ts"],"names":["useCallback","WalletStandardError","WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED","SolanaSignAndSendTransaction","getWalletAccountFeature","getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","SolanaSignIn","getWalletFeature","getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","SolanaSignMessage","SolanaSignTransaction","useMemo","address","SolanaError","SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED","useRef","transactions","getTransactionCodec","getTransactionEncoder"],"mappings":"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","file":"index.browser.cjs","sourcesContent":["import {\n SolanaSignAndSendTransaction,\n SolanaSignAndSendTransactionFeature,\n SolanaSignAndSendTransactionInput,\n SolanaSignAndSendTransactionOutput,\n} from '@solana/wallet-standard-features';\nimport {\n WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED,\n WalletStandardError,\n} from '@wallet-standard/errors';\nimport { getWalletAccountFeature, type UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\nimport { OnlySolanaChains } from './chain';\n\ntype Input = Readonly<\n Omit<SolanaSignAndSendTransactionInput, 'account' | 'chain' | 'options'> & {\n options?: Readonly<{\n minContextSlot?: bigint;\n }>;\n }\n>;\ntype Output = SolanaSignAndSendTransactionOutput;\n\n/**\n * Returns a function you can call to sign and send a serialized transaction.\n */\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: Input) => Promise<Output>;\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output>;\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output> {\n const signAndSendTransactions = useSignAndSendTransactions(uiWalletAccount, chain);\n return useCallback(\n async input => {\n const [result] = await signAndSendTransactions(input);\n return result;\n },\n [signAndSendTransactions],\n );\n}\n\nfunction useSignAndSendTransactions<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n if (!uiWalletAccount.chains.includes(chain)) {\n throw new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n address: uiWalletAccount.address,\n chain,\n featureName: SolanaSignAndSendTransaction,\n supportedChains: [...uiWalletAccount.chains],\n supportedFeatures: [...uiWalletAccount.features],\n });\n }\n const signAndSendTransactionFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignAndSendTransaction,\n ) as SolanaSignAndSendTransactionFeature[typeof SolanaSignAndSendTransaction];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithChainAndAccount = inputs.map(({ options, ...rest }) => {\n const minContextSlot = options?.minContextSlot;\n return {\n ...rest,\n account,\n chain,\n ...(minContextSlot != null\n ? {\n options: {\n minContextSlot: Number(minContextSlot),\n },\n }\n : null),\n };\n });\n const results = await signAndSendTransactionFeature.signAndSendTransaction(...inputsWithChainAndAccount);\n return results;\n },\n [account, chain, signAndSendTransactionFeature],\n );\n}\n","import { Address } from '@solana/addresses';\nimport {\n SolanaSignIn,\n SolanaSignInFeature,\n SolanaSignInInput,\n SolanaSignInOutput,\n} from '@solana/wallet-standard-features';\nimport {\n getWalletAccountFeature,\n getWalletFeature,\n UiWallet,\n UiWalletAccount,\n UiWalletHandle,\n} from '@wallet-standard/ui';\nimport {\n getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n} from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\ntype Input = SolanaSignInInput;\ntype Output = Omit<SolanaSignInOutput, 'account' | 'signatureType'> &\n Readonly<{\n account: UiWalletAccount;\n }>;\n\n/**\n * Returns a function you can call to sign in to a domain\n */\nexport function useSignIn(uiWalletAccount: UiWalletAccount): (input?: Omit<Input, 'address'>) => Promise<Output>;\nexport function useSignIn(uiWallet: UiWallet): (input?: Input) => Promise<Output>;\nexport function useSignIn(uiWalletHandle: UiWalletHandle): (input?: Input) => Promise<Output> {\n const signIns = useSignIns(uiWalletHandle);\n return useCallback(\n async input => {\n const [result] = await signIns(input);\n return result;\n },\n [signIns],\n );\n}\n\nfunction useSignIns(\n uiWalletHandle: UiWalletHandle,\n): (...inputs: readonly (Input | undefined)[]) => Promise<readonly Output[]> {\n let signMessageFeature: SolanaSignInFeature[typeof SolanaSignIn];\n if ('address' in uiWalletHandle && typeof uiWalletHandle.address === 'string') {\n getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle as UiWalletAccount);\n signMessageFeature = getWalletAccountFeature(\n uiWalletHandle as UiWalletAccount,\n SolanaSignIn,\n ) as SolanaSignInFeature[typeof SolanaSignIn];\n } else {\n signMessageFeature = getWalletFeature(uiWalletHandle, SolanaSignIn) as SolanaSignInFeature[typeof SolanaSignIn];\n }\n const wallet = getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle);\n return useCallback(\n async (...inputs) => {\n const inputsWithAddressAndChainId = inputs.map(input => ({\n ...input,\n // Prioritize the `UiWalletAccount` address if it exists.\n ...('address' in uiWalletHandle ? { address: uiWalletHandle.address as Address } : null),\n }));\n const results = await signMessageFeature.signIn(...inputsWithAddressAndChainId);\n const resultsWithoutSignatureType = results.map(\n ({\n account,\n signatureType: _, // Solana signatures are always of type `ed25519` so drop this property.\n ...rest\n }) => ({\n ...rest,\n account: getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(\n wallet,\n account,\n ),\n }),\n );\n return resultsWithoutSignatureType;\n },\n [signMessageFeature, uiWalletHandle, wallet],\n );\n}\n","import {\n SolanaSignMessage,\n SolanaSignMessageFeature,\n SolanaSignMessageInput,\n SolanaSignMessageOutput,\n} from '@solana/wallet-standard-features';\nimport { getWalletAccountFeature, UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\ntype Input = Omit<SolanaSignMessageInput, 'account'>;\ntype Output = Omit<SolanaSignMessageOutput, 'signatureType'>;\n\n/**\n * Returns a function you can call to sign a serialized transaction.\n */\nexport function useSignMessage<TWalletAccount extends UiWalletAccount>(\n ...config: Parameters<typeof useSignMessages<TWalletAccount>>\n): (input: Input) => Promise<Output> {\n const signMessages = useSignMessages(...config);\n return useCallback(\n async input => {\n const [result] = await signMessages(input);\n return result;\n },\n [signMessages],\n );\n}\n\nfunction useSignMessages<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n const signMessageFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignMessage,\n ) as SolanaSignMessageFeature[typeof SolanaSignMessage];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithAccount = inputs.map(input => ({ ...input, account }));\n const results = await signMessageFeature.signMessage(...inputsWithAccount);\n const resultsWithoutSignatureType = results.map(\n ({\n signatureType: _, // Solana signatures are always of type `ed25519` so drop this property.\n ...rest\n }) => rest,\n );\n return resultsWithoutSignatureType;\n },\n [signMessageFeature, account],\n );\n}\n","import {\n SolanaSignAndSendTransaction,\n SolanaSignTransaction,\n SolanaSignTransactionFeature,\n SolanaSignTransactionInput,\n SolanaSignTransactionOutput,\n} from '@solana/wallet-standard-features';\nimport {\n WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED,\n WalletStandardError,\n} from '@wallet-standard/errors';\nimport { getWalletAccountFeature, UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\nimport { OnlySolanaChains } from './chain';\n\ntype Input = Readonly<\n Omit<SolanaSignTransactionInput, 'account' | 'chain' | 'options'> & {\n options?: Readonly<{\n minContextSlot?: bigint;\n }>;\n }\n>;\ntype Output = SolanaSignTransactionOutput;\n\n/**\n * Returns a function you can call to sign a serialized transaction.\n */\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: Input) => Promise<Output>;\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output>;\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output> {\n const signTransactions = useSignTransactions(uiWalletAccount, chain);\n return useCallback(\n async input => {\n const [result] = await signTransactions(input);\n return result;\n },\n [signTransactions],\n );\n}\n\nfunction useSignTransactions<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n if (!uiWalletAccount.chains.includes(chain)) {\n throw new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n address: uiWalletAccount.address,\n chain,\n featureName: SolanaSignAndSendTransaction,\n supportedChains: [...uiWalletAccount.chains],\n supportedFeatures: [...uiWalletAccount.features],\n });\n }\n const signTransactionFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignTransaction,\n ) as SolanaSignTransactionFeature[typeof SolanaSignTransaction];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithAccountAndChain = inputs.map(({ options, ...rest }) => {\n const minContextSlot = options?.minContextSlot;\n return {\n ...rest,\n account,\n chain,\n ...(minContextSlot != null\n ? {\n options: {\n minContextSlot: Number(minContextSlot),\n },\n }\n : null),\n };\n });\n const results = await signTransactionFeature.signTransaction(...inputsWithAccountAndChain);\n return results;\n },\n [signTransactionFeature, account, chain],\n );\n}\n","export function getAbortablePromise<T>(promise: Promise<T>, abortSignal?: AbortSignal): Promise<T> {\n if (!abortSignal) {\n return promise;\n } else {\n return Promise.race([\n // This promise only ever rejects if the signal is aborted. Otherwise it idles forever.\n // It's important that this come before the input promise; in the event of an abort, we\n // want to throw even if the input promise's result is ready\n new Promise<never>((_, reject) => {\n if (abortSignal.aborted) {\n reject(abortSignal.reason);\n } else {\n abortSignal.addEventListener('abort', function () {\n reject(this.reason);\n });\n }\n }),\n promise,\n ]);\n }\n}\n","import { Address, address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { MessageModifyingSigner, SignableMessage } from '@solana/signers';\nimport type { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo } from 'react';\n\nimport { getAbortablePromise } from './abortable-promise';\nimport { useSignMessage } from './useSignMessage';\n\n/**\n * Returns an object that conforms to the `MessageModifyingSigner` interface of `@solana/signers`.\n */\nexport function useWalletAccountMessageSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n): MessageModifyingSigner<TWalletAccount['address']> {\n const signMessage = useSignMessage(uiWalletAccount);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async modifyAndSignMessages(messages, config) {\n config?.abortSignal?.throwIfAborted();\n if (messages.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (messages.length === 0) {\n return messages;\n }\n const { content: originalMessage, signatures: originalSignatureMap } = messages[0];\n const input = {\n message: originalMessage,\n };\n const { signedMessage, signature } = await getAbortablePromise(signMessage(input), config?.abortSignal);\n const messageWasModified =\n originalMessage.length !== signedMessage.length ||\n originalMessage.some((originalByte, ii) => originalByte !== signedMessage[ii]);\n const originalSignature = originalSignatureMap[uiWalletAccount.address as Address<string>] as\n | SignatureBytes\n | undefined;\n const signatureIsNew = !originalSignature?.every((originalByte, ii) => originalByte === signature[ii]);\n if (!signatureIsNew && !messageWasModified) {\n // We already had this exact signature, and the message wasn't modified.\n // Don't replace the existing message object.\n return messages;\n }\n const nextSignatureMap = messageWasModified\n ? { [uiWalletAccount.address]: signature }\n : { ...originalSignatureMap, [uiWalletAccount.address]: signature };\n const outputMessages = Object.freeze([\n Object.freeze({\n content: signedMessage,\n signatures: Object.freeze(nextSignatureMap),\n }) as SignableMessage,\n ]);\n return outputMessages;\n },\n }),\n [uiWalletAccount, signMessage],\n );\n}\n","import { address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { TransactionModifyingSigner } from '@solana/signers';\nimport { getTransactionCodec } from '@solana/transactions';\nimport { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo, useRef } from 'react';\n\nimport { getAbortablePromise } from './abortable-promise';\nimport { OnlySolanaChains } from './chain';\nimport { useSignTransaction } from './useSignTransaction';\n\n/**\n * Returns an object that conforms to the `TransactionModifyingSigner` interface of\n * `@solana/signers`.\n */\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionModifyingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']> {\n const encoderRef = useRef<ReturnType<typeof getTransactionCodec>>();\n const signTransaction = useSignTransaction(uiWalletAccount, chain);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async modifyAndSignTransactions(transactions, config = {}) {\n const { abortSignal, ...options } = config;\n abortSignal?.throwIfAborted();\n const transactionCodec = (encoderRef.current ||= getTransactionCodec());\n if (transactions.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (transactions.length === 0) {\n return transactions;\n }\n const [transaction] = transactions;\n const wireTransactionBytes = transactionCodec.encode(transaction);\n const inputWithOptions = {\n ...options,\n transaction: wireTransactionBytes as Uint8Array,\n };\n const { signedTransaction } = await getAbortablePromise(signTransaction(inputWithOptions), abortSignal);\n const decodedSignedTransaction = transactionCodec.decode(\n signedTransaction,\n ) as (typeof transactions)[number];\n return Object.freeze([decodedSignedTransaction]);\n },\n }),\n [uiWalletAccount.address, signTransaction],\n );\n}\n","import { address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { TransactionSendingSigner } from '@solana/signers';\nimport { getTransactionEncoder } from '@solana/transactions';\nimport { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo, useRef } from 'react';\n\nimport { getAbortablePromise } from './abortable-promise';\nimport { OnlySolanaChains } from './chain';\nimport { useSignAndSendTransaction } from './useSignAndSendTransaction';\n\n/**\n * Returns an object that conforms to the `TransactionSendingSigner` interface of `@solana/signers`.\n */\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionSendingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']> {\n const encoderRef = useRef<ReturnType<typeof getTransactionEncoder>>();\n const signAndSendTransaction = useSignAndSendTransaction(uiWalletAccount, chain);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async signAndSendTransactions(transactions, config = {}) {\n const { abortSignal, ...options } = config;\n abortSignal?.throwIfAborted();\n const transactionEncoder = (encoderRef.current ||= getTransactionEncoder());\n if (transactions.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (transactions.length === 0) {\n return [];\n }\n const [transaction] = transactions;\n const wireTransactionBytes = transactionEncoder.encode(transaction);\n const inputWithOptions = {\n ...options,\n transaction: wireTransactionBytes as Uint8Array,\n };\n const { signature } = await getAbortablePromise(signAndSendTransaction(inputWithOptions), abortSignal);\n return Object.freeze([signature as SignatureBytes]);\n },\n }),\n [signAndSendTransaction, uiWalletAccount.address],\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/useSignAndSendTransaction.ts","../src/useSignIn.ts","../src/useSignMessage.ts","../src/useSignTransaction.ts","../src/useWalletAccountMessageSigner.ts","../src/useWalletAccountTransactionSigner.ts","../src/useWalletAccountTransactionSendingSigner.ts"],"names":["useCallback","WalletStandardError","WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED","SolanaSignAndSendTransaction","getWalletAccountFeature","getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","SolanaSignIn","getWalletFeature","getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","SolanaSignMessage","SolanaSignTransaction","useMemo","address","SolanaError","SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED","getAbortablePromise","useRef","transactions","getTransactionCodec","getTransactionEncoder"],"mappings":"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","file":"index.browser.cjs","sourcesContent":["import {\n SolanaSignAndSendTransaction,\n SolanaSignAndSendTransactionFeature,\n SolanaSignAndSendTransactionInput,\n SolanaSignAndSendTransactionOutput,\n} from '@solana/wallet-standard-features';\nimport {\n WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED,\n WalletStandardError,\n} from '@wallet-standard/errors';\nimport { getWalletAccountFeature, type UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\nimport { OnlySolanaChains } from './chain';\n\ntype Input = Readonly<\n Omit<SolanaSignAndSendTransactionInput, 'account' | 'chain' | 'options'> & {\n options?: Readonly<{\n minContextSlot?: bigint;\n }>;\n }\n>;\ntype Output = SolanaSignAndSendTransactionOutput;\n\n/**\n * Returns a function you can call to sign and send a serialized transaction.\n */\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: Input) => Promise<Output>;\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output>;\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output> {\n const signAndSendTransactions = useSignAndSendTransactions(uiWalletAccount, chain);\n return useCallback(\n async input => {\n const [result] = await signAndSendTransactions(input);\n return result;\n },\n [signAndSendTransactions],\n );\n}\n\nfunction useSignAndSendTransactions<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n if (!uiWalletAccount.chains.includes(chain)) {\n throw new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n address: uiWalletAccount.address,\n chain,\n featureName: SolanaSignAndSendTransaction,\n supportedChains: [...uiWalletAccount.chains],\n supportedFeatures: [...uiWalletAccount.features],\n });\n }\n const signAndSendTransactionFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignAndSendTransaction,\n ) as SolanaSignAndSendTransactionFeature[typeof SolanaSignAndSendTransaction];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithChainAndAccount = inputs.map(({ options, ...rest }) => {\n const minContextSlot = options?.minContextSlot;\n return {\n ...rest,\n account,\n chain,\n ...(minContextSlot != null\n ? {\n options: {\n minContextSlot: Number(minContextSlot),\n },\n }\n : null),\n };\n });\n const results = await signAndSendTransactionFeature.signAndSendTransaction(...inputsWithChainAndAccount);\n return results;\n },\n [account, chain, signAndSendTransactionFeature],\n );\n}\n","import { Address } from '@solana/addresses';\nimport {\n SolanaSignIn,\n SolanaSignInFeature,\n SolanaSignInInput,\n SolanaSignInOutput,\n} from '@solana/wallet-standard-features';\nimport {\n getWalletAccountFeature,\n getWalletFeature,\n UiWallet,\n UiWalletAccount,\n UiWalletHandle,\n} from '@wallet-standard/ui';\nimport {\n getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n} from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\ntype Input = SolanaSignInInput;\ntype Output = Omit<SolanaSignInOutput, 'account' | 'signatureType'> &\n Readonly<{\n account: UiWalletAccount;\n }>;\n\n/**\n * Returns a function you can call to sign in to a domain\n */\nexport function useSignIn(uiWalletAccount: UiWalletAccount): (input?: Omit<Input, 'address'>) => Promise<Output>;\nexport function useSignIn(uiWallet: UiWallet): (input?: Input) => Promise<Output>;\nexport function useSignIn(uiWalletHandle: UiWalletHandle): (input?: Input) => Promise<Output> {\n const signIns = useSignIns(uiWalletHandle);\n return useCallback(\n async input => {\n const [result] = await signIns(input);\n return result;\n },\n [signIns],\n );\n}\n\nfunction useSignIns(\n uiWalletHandle: UiWalletHandle,\n): (...inputs: readonly (Input | undefined)[]) => Promise<readonly Output[]> {\n let signMessageFeature: SolanaSignInFeature[typeof SolanaSignIn];\n if ('address' in uiWalletHandle && typeof uiWalletHandle.address === 'string') {\n getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle as UiWalletAccount);\n signMessageFeature = getWalletAccountFeature(\n uiWalletHandle as UiWalletAccount,\n SolanaSignIn,\n ) as SolanaSignInFeature[typeof SolanaSignIn];\n } else {\n signMessageFeature = getWalletFeature(uiWalletHandle, SolanaSignIn) as SolanaSignInFeature[typeof SolanaSignIn];\n }\n const wallet = getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle);\n return useCallback(\n async (...inputs) => {\n const inputsWithAddressAndChainId = inputs.map(input => ({\n ...input,\n // Prioritize the `UiWalletAccount` address if it exists.\n ...('address' in uiWalletHandle ? { address: uiWalletHandle.address as Address } : null),\n }));\n const results = await signMessageFeature.signIn(...inputsWithAddressAndChainId);\n const resultsWithoutSignatureType = results.map(\n ({\n account,\n signatureType: _, // Solana signatures are always of type `ed25519` so drop this property.\n ...rest\n }) => ({\n ...rest,\n account: getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(\n wallet,\n account,\n ),\n }),\n );\n return resultsWithoutSignatureType;\n },\n [signMessageFeature, uiWalletHandle, wallet],\n );\n}\n","import {\n SolanaSignMessage,\n SolanaSignMessageFeature,\n SolanaSignMessageInput,\n SolanaSignMessageOutput,\n} from '@solana/wallet-standard-features';\nimport { getWalletAccountFeature, UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\ntype Input = Omit<SolanaSignMessageInput, 'account'>;\ntype Output = Omit<SolanaSignMessageOutput, 'signatureType'>;\n\n/**\n * Returns a function you can call to sign a serialized transaction.\n */\nexport function useSignMessage<TWalletAccount extends UiWalletAccount>(\n ...config: Parameters<typeof useSignMessages<TWalletAccount>>\n): (input: Input) => Promise<Output> {\n const signMessages = useSignMessages(...config);\n return useCallback(\n async input => {\n const [result] = await signMessages(input);\n return result;\n },\n [signMessages],\n );\n}\n\nfunction useSignMessages<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n const signMessageFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignMessage,\n ) as SolanaSignMessageFeature[typeof SolanaSignMessage];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithAccount = inputs.map(input => ({ ...input, account }));\n const results = await signMessageFeature.signMessage(...inputsWithAccount);\n const resultsWithoutSignatureType = results.map(\n ({\n signatureType: _, // Solana signatures are always of type `ed25519` so drop this property.\n ...rest\n }) => rest,\n );\n return resultsWithoutSignatureType;\n },\n [signMessageFeature, account],\n );\n}\n","import {\n SolanaSignAndSendTransaction,\n SolanaSignTransaction,\n SolanaSignTransactionFeature,\n SolanaSignTransactionInput,\n SolanaSignTransactionOutput,\n} from '@solana/wallet-standard-features';\nimport {\n WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED,\n WalletStandardError,\n} from '@wallet-standard/errors';\nimport { getWalletAccountFeature, UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\nimport { OnlySolanaChains } from './chain';\n\ntype Input = Readonly<\n Omit<SolanaSignTransactionInput, 'account' | 'chain' | 'options'> & {\n options?: Readonly<{\n minContextSlot?: bigint;\n }>;\n }\n>;\ntype Output = SolanaSignTransactionOutput;\n\n/**\n * Returns a function you can call to sign a serialized transaction.\n */\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: Input) => Promise<Output>;\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output>;\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output> {\n const signTransactions = useSignTransactions(uiWalletAccount, chain);\n return useCallback(\n async input => {\n const [result] = await signTransactions(input);\n return result;\n },\n [signTransactions],\n );\n}\n\nfunction useSignTransactions<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n if (!uiWalletAccount.chains.includes(chain)) {\n throw new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n address: uiWalletAccount.address,\n chain,\n featureName: SolanaSignAndSendTransaction,\n supportedChains: [...uiWalletAccount.chains],\n supportedFeatures: [...uiWalletAccount.features],\n });\n }\n const signTransactionFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignTransaction,\n ) as SolanaSignTransactionFeature[typeof SolanaSignTransaction];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithAccountAndChain = inputs.map(({ options, ...rest }) => {\n const minContextSlot = options?.minContextSlot;\n return {\n ...rest,\n account,\n chain,\n ...(minContextSlot != null\n ? {\n options: {\n minContextSlot: Number(minContextSlot),\n },\n }\n : null),\n };\n });\n const results = await signTransactionFeature.signTransaction(...inputsWithAccountAndChain);\n return results;\n },\n [signTransactionFeature, account, chain],\n );\n}\n","import { Address, address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { getAbortablePromise } from '@solana/promises';\nimport { MessageModifyingSigner, SignableMessage } from '@solana/signers';\nimport type { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo } from 'react';\n\nimport { useSignMessage } from './useSignMessage';\n\n/**\n * Returns an object that conforms to the `MessageModifyingSigner` interface of `@solana/signers`.\n */\nexport function useWalletAccountMessageSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n): MessageModifyingSigner<TWalletAccount['address']> {\n const signMessage = useSignMessage(uiWalletAccount);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async modifyAndSignMessages(messages, config) {\n config?.abortSignal?.throwIfAborted();\n if (messages.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (messages.length === 0) {\n return messages;\n }\n const { content: originalMessage, signatures: originalSignatureMap } = messages[0];\n const input = {\n message: originalMessage,\n };\n const { signedMessage, signature } = await getAbortablePromise(signMessage(input), config?.abortSignal);\n const messageWasModified =\n originalMessage.length !== signedMessage.length ||\n originalMessage.some((originalByte, ii) => originalByte !== signedMessage[ii]);\n const originalSignature = originalSignatureMap[uiWalletAccount.address as Address<string>] as\n | SignatureBytes\n | undefined;\n const signatureIsNew = !originalSignature?.every((originalByte, ii) => originalByte === signature[ii]);\n if (!signatureIsNew && !messageWasModified) {\n // We already had this exact signature, and the message wasn't modified.\n // Don't replace the existing message object.\n return messages;\n }\n const nextSignatureMap = messageWasModified\n ? { [uiWalletAccount.address]: signature }\n : { ...originalSignatureMap, [uiWalletAccount.address]: signature };\n const outputMessages = Object.freeze([\n Object.freeze({\n content: signedMessage,\n signatures: Object.freeze(nextSignatureMap),\n }) as SignableMessage,\n ]);\n return outputMessages;\n },\n }),\n [uiWalletAccount, signMessage],\n );\n}\n","import { address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { getAbortablePromise } from '@solana/promises';\nimport { TransactionModifyingSigner } from '@solana/signers';\nimport { getTransactionCodec } from '@solana/transactions';\nimport { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo, useRef } from 'react';\n\nimport { OnlySolanaChains } from './chain';\nimport { useSignTransaction } from './useSignTransaction';\n\n/**\n * Returns an object that conforms to the `TransactionModifyingSigner` interface of\n * `@solana/signers`.\n */\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionModifyingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']> {\n const encoderRef = useRef<ReturnType<typeof getTransactionCodec>>();\n const signTransaction = useSignTransaction(uiWalletAccount, chain);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async modifyAndSignTransactions(transactions, config = {}) {\n const { abortSignal, ...options } = config;\n abortSignal?.throwIfAborted();\n const transactionCodec = (encoderRef.current ||= getTransactionCodec());\n if (transactions.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (transactions.length === 0) {\n return transactions;\n }\n const [transaction] = transactions;\n const wireTransactionBytes = transactionCodec.encode(transaction);\n const inputWithOptions = {\n ...options,\n transaction: wireTransactionBytes as Uint8Array,\n };\n const { signedTransaction } = await getAbortablePromise(signTransaction(inputWithOptions), abortSignal);\n const decodedSignedTransaction = transactionCodec.decode(\n signedTransaction,\n ) as (typeof transactions)[number];\n return Object.freeze([decodedSignedTransaction]);\n },\n }),\n [uiWalletAccount.address, signTransaction],\n );\n}\n","import { address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { getAbortablePromise } from '@solana/promises';\nimport { TransactionSendingSigner } from '@solana/signers';\nimport { getTransactionEncoder } from '@solana/transactions';\nimport { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo, useRef } from 'react';\n\nimport { OnlySolanaChains } from './chain';\nimport { useSignAndSendTransaction } from './useSignAndSendTransaction';\n\n/**\n * Returns an object that conforms to the `TransactionSendingSigner` interface of `@solana/signers`.\n */\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionSendingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']> {\n const encoderRef = useRef<ReturnType<typeof getTransactionEncoder>>();\n const signAndSendTransaction = useSignAndSendTransaction(uiWalletAccount, chain);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async signAndSendTransactions(transactions, config = {}) {\n const { abortSignal, ...options } = config;\n abortSignal?.throwIfAborted();\n const transactionEncoder = (encoderRef.current ||= getTransactionEncoder());\n if (transactions.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (transactions.length === 0) {\n return [];\n }\n const [transaction] = transactions;\n const wireTransactionBytes = transactionEncoder.encode(transaction);\n const inputWithOptions = {\n ...options,\n transaction: wireTransactionBytes as Uint8Array,\n };\n const { signature } = await getAbortablePromise(signAndSendTransaction(inputWithOptions), abortSignal);\n return Object.freeze([signature as SignatureBytes]);\n },\n }),\n [signAndSendTransaction, uiWalletAccount.address],\n );\n}\n"]}
@@ -5,6 +5,7 @@ import { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, get
5
5
  import { useCallback, useMemo, useRef } from 'react';
6
6
  import { address } from '@solana/addresses';
7
7
  import { SolanaError, SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED } from '@solana/errors';
8
+ import { getAbortablePromise } from '@solana/promises';
8
9
  import { getTransactionCodec, getTransactionEncoder } from '@solana/transactions';
9
10
 
10
11
  // src/useSignAndSendTransaction.ts
@@ -181,31 +182,6 @@ function useSignTransactions(uiWalletAccount, chain) {
181
182
  [signTransactionFeature, account, chain]
182
183
  );
183
184
  }
184
-
185
- // src/abortable-promise.ts
186
- function getAbortablePromise(promise, abortSignal) {
187
- if (!abortSignal) {
188
- return promise;
189
- } else {
190
- return Promise.race([
191
- // This promise only ever rejects if the signal is aborted. Otherwise it idles forever.
192
- // It's important that this come before the input promise; in the event of an abort, we
193
- // want to throw even if the input promise's result is ready
194
- new Promise((_, reject) => {
195
- if (abortSignal.aborted) {
196
- reject(abortSignal.reason);
197
- } else {
198
- abortSignal.addEventListener("abort", function() {
199
- reject(this.reason);
200
- });
201
- }
202
- }),
203
- promise
204
- ]);
205
- }
206
- }
207
-
208
- // src/useWalletAccountMessageSigner.ts
209
185
  function useWalletAccountMessageSigner(uiWalletAccount) {
210
186
  const signMessage = useSignMessage(uiWalletAccount);
211
187
  return useMemo(
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/useSignAndSendTransaction.ts","../src/useSignIn.ts","../src/useSignMessage.ts","../src/useSignTransaction.ts","../src/abortable-promise.ts","../src/useWalletAccountMessageSigner.ts","../src/useWalletAccountTransactionSigner.ts","../src/useWalletAccountTransactionSendingSigner.ts"],"names":["useCallback","getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","getWalletAccountFeature","WalletStandardError","WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED","SolanaSignAndSendTransaction","useMemo","address","SolanaError","SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED","useRef"],"mappings":"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","file":"index.browser.mjs","sourcesContent":["import {\n SolanaSignAndSendTransaction,\n SolanaSignAndSendTransactionFeature,\n SolanaSignAndSendTransactionInput,\n SolanaSignAndSendTransactionOutput,\n} from '@solana/wallet-standard-features';\nimport {\n WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED,\n WalletStandardError,\n} from '@wallet-standard/errors';\nimport { getWalletAccountFeature, type UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\nimport { OnlySolanaChains } from './chain';\n\ntype Input = Readonly<\n Omit<SolanaSignAndSendTransactionInput, 'account' | 'chain' | 'options'> & {\n options?: Readonly<{\n minContextSlot?: bigint;\n }>;\n }\n>;\ntype Output = SolanaSignAndSendTransactionOutput;\n\n/**\n * Returns a function you can call to sign and send a serialized transaction.\n */\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: Input) => Promise<Output>;\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output>;\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output> {\n const signAndSendTransactions = useSignAndSendTransactions(uiWalletAccount, chain);\n return useCallback(\n async input => {\n const [result] = await signAndSendTransactions(input);\n return result;\n },\n [signAndSendTransactions],\n );\n}\n\nfunction useSignAndSendTransactions<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n if (!uiWalletAccount.chains.includes(chain)) {\n throw new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n address: uiWalletAccount.address,\n chain,\n featureName: SolanaSignAndSendTransaction,\n supportedChains: [...uiWalletAccount.chains],\n supportedFeatures: [...uiWalletAccount.features],\n });\n }\n const signAndSendTransactionFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignAndSendTransaction,\n ) as SolanaSignAndSendTransactionFeature[typeof SolanaSignAndSendTransaction];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithChainAndAccount = inputs.map(({ options, ...rest }) => {\n const minContextSlot = options?.minContextSlot;\n return {\n ...rest,\n account,\n chain,\n ...(minContextSlot != null\n ? {\n options: {\n minContextSlot: Number(minContextSlot),\n },\n }\n : null),\n };\n });\n const results = await signAndSendTransactionFeature.signAndSendTransaction(...inputsWithChainAndAccount);\n return results;\n },\n [account, chain, signAndSendTransactionFeature],\n );\n}\n","import { Address } from '@solana/addresses';\nimport {\n SolanaSignIn,\n SolanaSignInFeature,\n SolanaSignInInput,\n SolanaSignInOutput,\n} from '@solana/wallet-standard-features';\nimport {\n getWalletAccountFeature,\n getWalletFeature,\n UiWallet,\n UiWalletAccount,\n UiWalletHandle,\n} from '@wallet-standard/ui';\nimport {\n getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n} from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\ntype Input = SolanaSignInInput;\ntype Output = Omit<SolanaSignInOutput, 'account' | 'signatureType'> &\n Readonly<{\n account: UiWalletAccount;\n }>;\n\n/**\n * Returns a function you can call to sign in to a domain\n */\nexport function useSignIn(uiWalletAccount: UiWalletAccount): (input?: Omit<Input, 'address'>) => Promise<Output>;\nexport function useSignIn(uiWallet: UiWallet): (input?: Input) => Promise<Output>;\nexport function useSignIn(uiWalletHandle: UiWalletHandle): (input?: Input) => Promise<Output> {\n const signIns = useSignIns(uiWalletHandle);\n return useCallback(\n async input => {\n const [result] = await signIns(input);\n return result;\n },\n [signIns],\n );\n}\n\nfunction useSignIns(\n uiWalletHandle: UiWalletHandle,\n): (...inputs: readonly (Input | undefined)[]) => Promise<readonly Output[]> {\n let signMessageFeature: SolanaSignInFeature[typeof SolanaSignIn];\n if ('address' in uiWalletHandle && typeof uiWalletHandle.address === 'string') {\n getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle as UiWalletAccount);\n signMessageFeature = getWalletAccountFeature(\n uiWalletHandle as UiWalletAccount,\n SolanaSignIn,\n ) as SolanaSignInFeature[typeof SolanaSignIn];\n } else {\n signMessageFeature = getWalletFeature(uiWalletHandle, SolanaSignIn) as SolanaSignInFeature[typeof SolanaSignIn];\n }\n const wallet = getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle);\n return useCallback(\n async (...inputs) => {\n const inputsWithAddressAndChainId = inputs.map(input => ({\n ...input,\n // Prioritize the `UiWalletAccount` address if it exists.\n ...('address' in uiWalletHandle ? { address: uiWalletHandle.address as Address } : null),\n }));\n const results = await signMessageFeature.signIn(...inputsWithAddressAndChainId);\n const resultsWithoutSignatureType = results.map(\n ({\n account,\n signatureType: _, // Solana signatures are always of type `ed25519` so drop this property.\n ...rest\n }) => ({\n ...rest,\n account: getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(\n wallet,\n account,\n ),\n }),\n );\n return resultsWithoutSignatureType;\n },\n [signMessageFeature, uiWalletHandle, wallet],\n );\n}\n","import {\n SolanaSignMessage,\n SolanaSignMessageFeature,\n SolanaSignMessageInput,\n SolanaSignMessageOutput,\n} from '@solana/wallet-standard-features';\nimport { getWalletAccountFeature, UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\ntype Input = Omit<SolanaSignMessageInput, 'account'>;\ntype Output = Omit<SolanaSignMessageOutput, 'signatureType'>;\n\n/**\n * Returns a function you can call to sign a serialized transaction.\n */\nexport function useSignMessage<TWalletAccount extends UiWalletAccount>(\n ...config: Parameters<typeof useSignMessages<TWalletAccount>>\n): (input: Input) => Promise<Output> {\n const signMessages = useSignMessages(...config);\n return useCallback(\n async input => {\n const [result] = await signMessages(input);\n return result;\n },\n [signMessages],\n );\n}\n\nfunction useSignMessages<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n const signMessageFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignMessage,\n ) as SolanaSignMessageFeature[typeof SolanaSignMessage];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithAccount = inputs.map(input => ({ ...input, account }));\n const results = await signMessageFeature.signMessage(...inputsWithAccount);\n const resultsWithoutSignatureType = results.map(\n ({\n signatureType: _, // Solana signatures are always of type `ed25519` so drop this property.\n ...rest\n }) => rest,\n );\n return resultsWithoutSignatureType;\n },\n [signMessageFeature, account],\n );\n}\n","import {\n SolanaSignAndSendTransaction,\n SolanaSignTransaction,\n SolanaSignTransactionFeature,\n SolanaSignTransactionInput,\n SolanaSignTransactionOutput,\n} from '@solana/wallet-standard-features';\nimport {\n WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED,\n WalletStandardError,\n} from '@wallet-standard/errors';\nimport { getWalletAccountFeature, UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\nimport { OnlySolanaChains } from './chain';\n\ntype Input = Readonly<\n Omit<SolanaSignTransactionInput, 'account' | 'chain' | 'options'> & {\n options?: Readonly<{\n minContextSlot?: bigint;\n }>;\n }\n>;\ntype Output = SolanaSignTransactionOutput;\n\n/**\n * Returns a function you can call to sign a serialized transaction.\n */\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: Input) => Promise<Output>;\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output>;\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output> {\n const signTransactions = useSignTransactions(uiWalletAccount, chain);\n return useCallback(\n async input => {\n const [result] = await signTransactions(input);\n return result;\n },\n [signTransactions],\n );\n}\n\nfunction useSignTransactions<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n if (!uiWalletAccount.chains.includes(chain)) {\n throw new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n address: uiWalletAccount.address,\n chain,\n featureName: SolanaSignAndSendTransaction,\n supportedChains: [...uiWalletAccount.chains],\n supportedFeatures: [...uiWalletAccount.features],\n });\n }\n const signTransactionFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignTransaction,\n ) as SolanaSignTransactionFeature[typeof SolanaSignTransaction];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithAccountAndChain = inputs.map(({ options, ...rest }) => {\n const minContextSlot = options?.minContextSlot;\n return {\n ...rest,\n account,\n chain,\n ...(minContextSlot != null\n ? {\n options: {\n minContextSlot: Number(minContextSlot),\n },\n }\n : null),\n };\n });\n const results = await signTransactionFeature.signTransaction(...inputsWithAccountAndChain);\n return results;\n },\n [signTransactionFeature, account, chain],\n );\n}\n","export function getAbortablePromise<T>(promise: Promise<T>, abortSignal?: AbortSignal): Promise<T> {\n if (!abortSignal) {\n return promise;\n } else {\n return Promise.race([\n // This promise only ever rejects if the signal is aborted. Otherwise it idles forever.\n // It's important that this come before the input promise; in the event of an abort, we\n // want to throw even if the input promise's result is ready\n new Promise<never>((_, reject) => {\n if (abortSignal.aborted) {\n reject(abortSignal.reason);\n } else {\n abortSignal.addEventListener('abort', function () {\n reject(this.reason);\n });\n }\n }),\n promise,\n ]);\n }\n}\n","import { Address, address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { MessageModifyingSigner, SignableMessage } from '@solana/signers';\nimport type { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo } from 'react';\n\nimport { getAbortablePromise } from './abortable-promise';\nimport { useSignMessage } from './useSignMessage';\n\n/**\n * Returns an object that conforms to the `MessageModifyingSigner` interface of `@solana/signers`.\n */\nexport function useWalletAccountMessageSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n): MessageModifyingSigner<TWalletAccount['address']> {\n const signMessage = useSignMessage(uiWalletAccount);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async modifyAndSignMessages(messages, config) {\n config?.abortSignal?.throwIfAborted();\n if (messages.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (messages.length === 0) {\n return messages;\n }\n const { content: originalMessage, signatures: originalSignatureMap } = messages[0];\n const input = {\n message: originalMessage,\n };\n const { signedMessage, signature } = await getAbortablePromise(signMessage(input), config?.abortSignal);\n const messageWasModified =\n originalMessage.length !== signedMessage.length ||\n originalMessage.some((originalByte, ii) => originalByte !== signedMessage[ii]);\n const originalSignature = originalSignatureMap[uiWalletAccount.address as Address<string>] as\n | SignatureBytes\n | undefined;\n const signatureIsNew = !originalSignature?.every((originalByte, ii) => originalByte === signature[ii]);\n if (!signatureIsNew && !messageWasModified) {\n // We already had this exact signature, and the message wasn't modified.\n // Don't replace the existing message object.\n return messages;\n }\n const nextSignatureMap = messageWasModified\n ? { [uiWalletAccount.address]: signature }\n : { ...originalSignatureMap, [uiWalletAccount.address]: signature };\n const outputMessages = Object.freeze([\n Object.freeze({\n content: signedMessage,\n signatures: Object.freeze(nextSignatureMap),\n }) as SignableMessage,\n ]);\n return outputMessages;\n },\n }),\n [uiWalletAccount, signMessage],\n );\n}\n","import { address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { TransactionModifyingSigner } from '@solana/signers';\nimport { getTransactionCodec } from '@solana/transactions';\nimport { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo, useRef } from 'react';\n\nimport { getAbortablePromise } from './abortable-promise';\nimport { OnlySolanaChains } from './chain';\nimport { useSignTransaction } from './useSignTransaction';\n\n/**\n * Returns an object that conforms to the `TransactionModifyingSigner` interface of\n * `@solana/signers`.\n */\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionModifyingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']> {\n const encoderRef = useRef<ReturnType<typeof getTransactionCodec>>();\n const signTransaction = useSignTransaction(uiWalletAccount, chain);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async modifyAndSignTransactions(transactions, config = {}) {\n const { abortSignal, ...options } = config;\n abortSignal?.throwIfAborted();\n const transactionCodec = (encoderRef.current ||= getTransactionCodec());\n if (transactions.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (transactions.length === 0) {\n return transactions;\n }\n const [transaction] = transactions;\n const wireTransactionBytes = transactionCodec.encode(transaction);\n const inputWithOptions = {\n ...options,\n transaction: wireTransactionBytes as Uint8Array,\n };\n const { signedTransaction } = await getAbortablePromise(signTransaction(inputWithOptions), abortSignal);\n const decodedSignedTransaction = transactionCodec.decode(\n signedTransaction,\n ) as (typeof transactions)[number];\n return Object.freeze([decodedSignedTransaction]);\n },\n }),\n [uiWalletAccount.address, signTransaction],\n );\n}\n","import { address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { TransactionSendingSigner } from '@solana/signers';\nimport { getTransactionEncoder } from '@solana/transactions';\nimport { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo, useRef } from 'react';\n\nimport { getAbortablePromise } from './abortable-promise';\nimport { OnlySolanaChains } from './chain';\nimport { useSignAndSendTransaction } from './useSignAndSendTransaction';\n\n/**\n * Returns an object that conforms to the `TransactionSendingSigner` interface of `@solana/signers`.\n */\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionSendingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']> {\n const encoderRef = useRef<ReturnType<typeof getTransactionEncoder>>();\n const signAndSendTransaction = useSignAndSendTransaction(uiWalletAccount, chain);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async signAndSendTransactions(transactions, config = {}) {\n const { abortSignal, ...options } = config;\n abortSignal?.throwIfAborted();\n const transactionEncoder = (encoderRef.current ||= getTransactionEncoder());\n if (transactions.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (transactions.length === 0) {\n return [];\n }\n const [transaction] = transactions;\n const wireTransactionBytes = transactionEncoder.encode(transaction);\n const inputWithOptions = {\n ...options,\n transaction: wireTransactionBytes as Uint8Array,\n };\n const { signature } = await getAbortablePromise(signAndSendTransaction(inputWithOptions), abortSignal);\n return Object.freeze([signature as SignatureBytes]);\n },\n }),\n [signAndSendTransaction, uiWalletAccount.address],\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/useSignAndSendTransaction.ts","../src/useSignIn.ts","../src/useSignMessage.ts","../src/useSignTransaction.ts","../src/useWalletAccountMessageSigner.ts","../src/useWalletAccountTransactionSigner.ts","../src/useWalletAccountTransactionSendingSigner.ts"],"names":["useCallback","getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","getWalletAccountFeature","WalletStandardError","WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED","SolanaSignAndSendTransaction","useMemo","address","SolanaError","SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED","getAbortablePromise","useRef"],"mappings":"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","file":"index.browser.mjs","sourcesContent":["import {\n SolanaSignAndSendTransaction,\n SolanaSignAndSendTransactionFeature,\n SolanaSignAndSendTransactionInput,\n SolanaSignAndSendTransactionOutput,\n} from '@solana/wallet-standard-features';\nimport {\n WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED,\n WalletStandardError,\n} from '@wallet-standard/errors';\nimport { getWalletAccountFeature, type UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\nimport { OnlySolanaChains } from './chain';\n\ntype Input = Readonly<\n Omit<SolanaSignAndSendTransactionInput, 'account' | 'chain' | 'options'> & {\n options?: Readonly<{\n minContextSlot?: bigint;\n }>;\n }\n>;\ntype Output = SolanaSignAndSendTransactionOutput;\n\n/**\n * Returns a function you can call to sign and send a serialized transaction.\n */\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: Input) => Promise<Output>;\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output>;\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output> {\n const signAndSendTransactions = useSignAndSendTransactions(uiWalletAccount, chain);\n return useCallback(\n async input => {\n const [result] = await signAndSendTransactions(input);\n return result;\n },\n [signAndSendTransactions],\n );\n}\n\nfunction useSignAndSendTransactions<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n if (!uiWalletAccount.chains.includes(chain)) {\n throw new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n address: uiWalletAccount.address,\n chain,\n featureName: SolanaSignAndSendTransaction,\n supportedChains: [...uiWalletAccount.chains],\n supportedFeatures: [...uiWalletAccount.features],\n });\n }\n const signAndSendTransactionFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignAndSendTransaction,\n ) as SolanaSignAndSendTransactionFeature[typeof SolanaSignAndSendTransaction];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithChainAndAccount = inputs.map(({ options, ...rest }) => {\n const minContextSlot = options?.minContextSlot;\n return {\n ...rest,\n account,\n chain,\n ...(minContextSlot != null\n ? {\n options: {\n minContextSlot: Number(minContextSlot),\n },\n }\n : null),\n };\n });\n const results = await signAndSendTransactionFeature.signAndSendTransaction(...inputsWithChainAndAccount);\n return results;\n },\n [account, chain, signAndSendTransactionFeature],\n );\n}\n","import { Address } from '@solana/addresses';\nimport {\n SolanaSignIn,\n SolanaSignInFeature,\n SolanaSignInInput,\n SolanaSignInOutput,\n} from '@solana/wallet-standard-features';\nimport {\n getWalletAccountFeature,\n getWalletFeature,\n UiWallet,\n UiWalletAccount,\n UiWalletHandle,\n} from '@wallet-standard/ui';\nimport {\n getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n} from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\ntype Input = SolanaSignInInput;\ntype Output = Omit<SolanaSignInOutput, 'account' | 'signatureType'> &\n Readonly<{\n account: UiWalletAccount;\n }>;\n\n/**\n * Returns a function you can call to sign in to a domain\n */\nexport function useSignIn(uiWalletAccount: UiWalletAccount): (input?: Omit<Input, 'address'>) => Promise<Output>;\nexport function useSignIn(uiWallet: UiWallet): (input?: Input) => Promise<Output>;\nexport function useSignIn(uiWalletHandle: UiWalletHandle): (input?: Input) => Promise<Output> {\n const signIns = useSignIns(uiWalletHandle);\n return useCallback(\n async input => {\n const [result] = await signIns(input);\n return result;\n },\n [signIns],\n );\n}\n\nfunction useSignIns(\n uiWalletHandle: UiWalletHandle,\n): (...inputs: readonly (Input | undefined)[]) => Promise<readonly Output[]> {\n let signMessageFeature: SolanaSignInFeature[typeof SolanaSignIn];\n if ('address' in uiWalletHandle && typeof uiWalletHandle.address === 'string') {\n getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle as UiWalletAccount);\n signMessageFeature = getWalletAccountFeature(\n uiWalletHandle as UiWalletAccount,\n SolanaSignIn,\n ) as SolanaSignInFeature[typeof SolanaSignIn];\n } else {\n signMessageFeature = getWalletFeature(uiWalletHandle, SolanaSignIn) as SolanaSignInFeature[typeof SolanaSignIn];\n }\n const wallet = getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle);\n return useCallback(\n async (...inputs) => {\n const inputsWithAddressAndChainId = inputs.map(input => ({\n ...input,\n // Prioritize the `UiWalletAccount` address if it exists.\n ...('address' in uiWalletHandle ? { address: uiWalletHandle.address as Address } : null),\n }));\n const results = await signMessageFeature.signIn(...inputsWithAddressAndChainId);\n const resultsWithoutSignatureType = results.map(\n ({\n account,\n signatureType: _, // Solana signatures are always of type `ed25519` so drop this property.\n ...rest\n }) => ({\n ...rest,\n account: getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(\n wallet,\n account,\n ),\n }),\n );\n return resultsWithoutSignatureType;\n },\n [signMessageFeature, uiWalletHandle, wallet],\n );\n}\n","import {\n SolanaSignMessage,\n SolanaSignMessageFeature,\n SolanaSignMessageInput,\n SolanaSignMessageOutput,\n} from '@solana/wallet-standard-features';\nimport { getWalletAccountFeature, UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\ntype Input = Omit<SolanaSignMessageInput, 'account'>;\ntype Output = Omit<SolanaSignMessageOutput, 'signatureType'>;\n\n/**\n * Returns a function you can call to sign a serialized transaction.\n */\nexport function useSignMessage<TWalletAccount extends UiWalletAccount>(\n ...config: Parameters<typeof useSignMessages<TWalletAccount>>\n): (input: Input) => Promise<Output> {\n const signMessages = useSignMessages(...config);\n return useCallback(\n async input => {\n const [result] = await signMessages(input);\n return result;\n },\n [signMessages],\n );\n}\n\nfunction useSignMessages<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n const signMessageFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignMessage,\n ) as SolanaSignMessageFeature[typeof SolanaSignMessage];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithAccount = inputs.map(input => ({ ...input, account }));\n const results = await signMessageFeature.signMessage(...inputsWithAccount);\n const resultsWithoutSignatureType = results.map(\n ({\n signatureType: _, // Solana signatures are always of type `ed25519` so drop this property.\n ...rest\n }) => rest,\n );\n return resultsWithoutSignatureType;\n },\n [signMessageFeature, account],\n );\n}\n","import {\n SolanaSignAndSendTransaction,\n SolanaSignTransaction,\n SolanaSignTransactionFeature,\n SolanaSignTransactionInput,\n SolanaSignTransactionOutput,\n} from '@solana/wallet-standard-features';\nimport {\n WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED,\n WalletStandardError,\n} from '@wallet-standard/errors';\nimport { getWalletAccountFeature, UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\nimport { OnlySolanaChains } from './chain';\n\ntype Input = Readonly<\n Omit<SolanaSignTransactionInput, 'account' | 'chain' | 'options'> & {\n options?: Readonly<{\n minContextSlot?: bigint;\n }>;\n }\n>;\ntype Output = SolanaSignTransactionOutput;\n\n/**\n * Returns a function you can call to sign a serialized transaction.\n */\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: Input) => Promise<Output>;\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output>;\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output> {\n const signTransactions = useSignTransactions(uiWalletAccount, chain);\n return useCallback(\n async input => {\n const [result] = await signTransactions(input);\n return result;\n },\n [signTransactions],\n );\n}\n\nfunction useSignTransactions<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n if (!uiWalletAccount.chains.includes(chain)) {\n throw new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n address: uiWalletAccount.address,\n chain,\n featureName: SolanaSignAndSendTransaction,\n supportedChains: [...uiWalletAccount.chains],\n supportedFeatures: [...uiWalletAccount.features],\n });\n }\n const signTransactionFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignTransaction,\n ) as SolanaSignTransactionFeature[typeof SolanaSignTransaction];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithAccountAndChain = inputs.map(({ options, ...rest }) => {\n const minContextSlot = options?.minContextSlot;\n return {\n ...rest,\n account,\n chain,\n ...(minContextSlot != null\n ? {\n options: {\n minContextSlot: Number(minContextSlot),\n },\n }\n : null),\n };\n });\n const results = await signTransactionFeature.signTransaction(...inputsWithAccountAndChain);\n return results;\n },\n [signTransactionFeature, account, chain],\n );\n}\n","import { Address, address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { getAbortablePromise } from '@solana/promises';\nimport { MessageModifyingSigner, SignableMessage } from '@solana/signers';\nimport type { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo } from 'react';\n\nimport { useSignMessage } from './useSignMessage';\n\n/**\n * Returns an object that conforms to the `MessageModifyingSigner` interface of `@solana/signers`.\n */\nexport function useWalletAccountMessageSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n): MessageModifyingSigner<TWalletAccount['address']> {\n const signMessage = useSignMessage(uiWalletAccount);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async modifyAndSignMessages(messages, config) {\n config?.abortSignal?.throwIfAborted();\n if (messages.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (messages.length === 0) {\n return messages;\n }\n const { content: originalMessage, signatures: originalSignatureMap } = messages[0];\n const input = {\n message: originalMessage,\n };\n const { signedMessage, signature } = await getAbortablePromise(signMessage(input), config?.abortSignal);\n const messageWasModified =\n originalMessage.length !== signedMessage.length ||\n originalMessage.some((originalByte, ii) => originalByte !== signedMessage[ii]);\n const originalSignature = originalSignatureMap[uiWalletAccount.address as Address<string>] as\n | SignatureBytes\n | undefined;\n const signatureIsNew = !originalSignature?.every((originalByte, ii) => originalByte === signature[ii]);\n if (!signatureIsNew && !messageWasModified) {\n // We already had this exact signature, and the message wasn't modified.\n // Don't replace the existing message object.\n return messages;\n }\n const nextSignatureMap = messageWasModified\n ? { [uiWalletAccount.address]: signature }\n : { ...originalSignatureMap, [uiWalletAccount.address]: signature };\n const outputMessages = Object.freeze([\n Object.freeze({\n content: signedMessage,\n signatures: Object.freeze(nextSignatureMap),\n }) as SignableMessage,\n ]);\n return outputMessages;\n },\n }),\n [uiWalletAccount, signMessage],\n );\n}\n","import { address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { getAbortablePromise } from '@solana/promises';\nimport { TransactionModifyingSigner } from '@solana/signers';\nimport { getTransactionCodec } from '@solana/transactions';\nimport { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo, useRef } from 'react';\n\nimport { OnlySolanaChains } from './chain';\nimport { useSignTransaction } from './useSignTransaction';\n\n/**\n * Returns an object that conforms to the `TransactionModifyingSigner` interface of\n * `@solana/signers`.\n */\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionModifyingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']> {\n const encoderRef = useRef<ReturnType<typeof getTransactionCodec>>();\n const signTransaction = useSignTransaction(uiWalletAccount, chain);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async modifyAndSignTransactions(transactions, config = {}) {\n const { abortSignal, ...options } = config;\n abortSignal?.throwIfAborted();\n const transactionCodec = (encoderRef.current ||= getTransactionCodec());\n if (transactions.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (transactions.length === 0) {\n return transactions;\n }\n const [transaction] = transactions;\n const wireTransactionBytes = transactionCodec.encode(transaction);\n const inputWithOptions = {\n ...options,\n transaction: wireTransactionBytes as Uint8Array,\n };\n const { signedTransaction } = await getAbortablePromise(signTransaction(inputWithOptions), abortSignal);\n const decodedSignedTransaction = transactionCodec.decode(\n signedTransaction,\n ) as (typeof transactions)[number];\n return Object.freeze([decodedSignedTransaction]);\n },\n }),\n [uiWalletAccount.address, signTransaction],\n );\n}\n","import { address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { getAbortablePromise } from '@solana/promises';\nimport { TransactionSendingSigner } from '@solana/signers';\nimport { getTransactionEncoder } from '@solana/transactions';\nimport { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo, useRef } from 'react';\n\nimport { OnlySolanaChains } from './chain';\nimport { useSignAndSendTransaction } from './useSignAndSendTransaction';\n\n/**\n * Returns an object that conforms to the `TransactionSendingSigner` interface of `@solana/signers`.\n */\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionSendingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']> {\n const encoderRef = useRef<ReturnType<typeof getTransactionEncoder>>();\n const signAndSendTransaction = useSignAndSendTransaction(uiWalletAccount, chain);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async signAndSendTransactions(transactions, config = {}) {\n const { abortSignal, ...options } = config;\n abortSignal?.throwIfAborted();\n const transactionEncoder = (encoderRef.current ||= getTransactionEncoder());\n if (transactions.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (transactions.length === 0) {\n return [];\n }\n const [transaction] = transactions;\n const wireTransactionBytes = transactionEncoder.encode(transaction);\n const inputWithOptions = {\n ...options,\n transaction: wireTransactionBytes as Uint8Array,\n };\n const { signature } = await getAbortablePromise(signAndSendTransaction(inputWithOptions), abortSignal);\n return Object.freeze([signature as SignatureBytes]);\n },\n }),\n [signAndSendTransaction, uiWalletAccount.address],\n );\n}\n"]}
@@ -5,6 +5,7 @@ import { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, get
5
5
  import { useCallback, useMemo, useRef } from 'react';
6
6
  import { address } from '@solana/addresses';
7
7
  import { SolanaError, SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED } from '@solana/errors';
8
+ import { getAbortablePromise } from '@solana/promises';
8
9
  import { getTransactionCodec, getTransactionEncoder } from '@solana/transactions';
9
10
 
10
11
  // src/useSignAndSendTransaction.ts
@@ -181,31 +182,6 @@ function useSignTransactions(uiWalletAccount, chain) {
181
182
  [signTransactionFeature, account, chain]
182
183
  );
183
184
  }
184
-
185
- // src/abortable-promise.ts
186
- function getAbortablePromise(promise, abortSignal) {
187
- if (!abortSignal) {
188
- return promise;
189
- } else {
190
- return Promise.race([
191
- // This promise only ever rejects if the signal is aborted. Otherwise it idles forever.
192
- // It's important that this come before the input promise; in the event of an abort, we
193
- // want to throw even if the input promise's result is ready
194
- new Promise((_, reject) => {
195
- if (abortSignal.aborted) {
196
- reject(abortSignal.reason);
197
- } else {
198
- abortSignal.addEventListener("abort", function() {
199
- reject(this.reason);
200
- });
201
- }
202
- }),
203
- promise
204
- ]);
205
- }
206
- }
207
-
208
- // src/useWalletAccountMessageSigner.ts
209
185
  function useWalletAccountMessageSigner(uiWalletAccount) {
210
186
  const signMessage = useSignMessage(uiWalletAccount);
211
187
  return useMemo(
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/useSignAndSendTransaction.ts","../src/useSignIn.ts","../src/useSignMessage.ts","../src/useSignTransaction.ts","../src/abortable-promise.ts","../src/useWalletAccountMessageSigner.ts","../src/useWalletAccountTransactionSigner.ts","../src/useWalletAccountTransactionSendingSigner.ts"],"names":["useCallback","getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","getWalletAccountFeature","WalletStandardError","WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED","SolanaSignAndSendTransaction","useMemo","address","SolanaError","SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED","useRef"],"mappings":"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","file":"index.native.mjs","sourcesContent":["import {\n SolanaSignAndSendTransaction,\n SolanaSignAndSendTransactionFeature,\n SolanaSignAndSendTransactionInput,\n SolanaSignAndSendTransactionOutput,\n} from '@solana/wallet-standard-features';\nimport {\n WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED,\n WalletStandardError,\n} from '@wallet-standard/errors';\nimport { getWalletAccountFeature, type UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\nimport { OnlySolanaChains } from './chain';\n\ntype Input = Readonly<\n Omit<SolanaSignAndSendTransactionInput, 'account' | 'chain' | 'options'> & {\n options?: Readonly<{\n minContextSlot?: bigint;\n }>;\n }\n>;\ntype Output = SolanaSignAndSendTransactionOutput;\n\n/**\n * Returns a function you can call to sign and send a serialized transaction.\n */\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: Input) => Promise<Output>;\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output>;\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output> {\n const signAndSendTransactions = useSignAndSendTransactions(uiWalletAccount, chain);\n return useCallback(\n async input => {\n const [result] = await signAndSendTransactions(input);\n return result;\n },\n [signAndSendTransactions],\n );\n}\n\nfunction useSignAndSendTransactions<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n if (!uiWalletAccount.chains.includes(chain)) {\n throw new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n address: uiWalletAccount.address,\n chain,\n featureName: SolanaSignAndSendTransaction,\n supportedChains: [...uiWalletAccount.chains],\n supportedFeatures: [...uiWalletAccount.features],\n });\n }\n const signAndSendTransactionFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignAndSendTransaction,\n ) as SolanaSignAndSendTransactionFeature[typeof SolanaSignAndSendTransaction];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithChainAndAccount = inputs.map(({ options, ...rest }) => {\n const minContextSlot = options?.minContextSlot;\n return {\n ...rest,\n account,\n chain,\n ...(minContextSlot != null\n ? {\n options: {\n minContextSlot: Number(minContextSlot),\n },\n }\n : null),\n };\n });\n const results = await signAndSendTransactionFeature.signAndSendTransaction(...inputsWithChainAndAccount);\n return results;\n },\n [account, chain, signAndSendTransactionFeature],\n );\n}\n","import { Address } from '@solana/addresses';\nimport {\n SolanaSignIn,\n SolanaSignInFeature,\n SolanaSignInInput,\n SolanaSignInOutput,\n} from '@solana/wallet-standard-features';\nimport {\n getWalletAccountFeature,\n getWalletFeature,\n UiWallet,\n UiWalletAccount,\n UiWalletHandle,\n} from '@wallet-standard/ui';\nimport {\n getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n} from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\ntype Input = SolanaSignInInput;\ntype Output = Omit<SolanaSignInOutput, 'account' | 'signatureType'> &\n Readonly<{\n account: UiWalletAccount;\n }>;\n\n/**\n * Returns a function you can call to sign in to a domain\n */\nexport function useSignIn(uiWalletAccount: UiWalletAccount): (input?: Omit<Input, 'address'>) => Promise<Output>;\nexport function useSignIn(uiWallet: UiWallet): (input?: Input) => Promise<Output>;\nexport function useSignIn(uiWalletHandle: UiWalletHandle): (input?: Input) => Promise<Output> {\n const signIns = useSignIns(uiWalletHandle);\n return useCallback(\n async input => {\n const [result] = await signIns(input);\n return result;\n },\n [signIns],\n );\n}\n\nfunction useSignIns(\n uiWalletHandle: UiWalletHandle,\n): (...inputs: readonly (Input | undefined)[]) => Promise<readonly Output[]> {\n let signMessageFeature: SolanaSignInFeature[typeof SolanaSignIn];\n if ('address' in uiWalletHandle && typeof uiWalletHandle.address === 'string') {\n getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle as UiWalletAccount);\n signMessageFeature = getWalletAccountFeature(\n uiWalletHandle as UiWalletAccount,\n SolanaSignIn,\n ) as SolanaSignInFeature[typeof SolanaSignIn];\n } else {\n signMessageFeature = getWalletFeature(uiWalletHandle, SolanaSignIn) as SolanaSignInFeature[typeof SolanaSignIn];\n }\n const wallet = getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle);\n return useCallback(\n async (...inputs) => {\n const inputsWithAddressAndChainId = inputs.map(input => ({\n ...input,\n // Prioritize the `UiWalletAccount` address if it exists.\n ...('address' in uiWalletHandle ? { address: uiWalletHandle.address as Address } : null),\n }));\n const results = await signMessageFeature.signIn(...inputsWithAddressAndChainId);\n const resultsWithoutSignatureType = results.map(\n ({\n account,\n signatureType: _, // Solana signatures are always of type `ed25519` so drop this property.\n ...rest\n }) => ({\n ...rest,\n account: getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(\n wallet,\n account,\n ),\n }),\n );\n return resultsWithoutSignatureType;\n },\n [signMessageFeature, uiWalletHandle, wallet],\n );\n}\n","import {\n SolanaSignMessage,\n SolanaSignMessageFeature,\n SolanaSignMessageInput,\n SolanaSignMessageOutput,\n} from '@solana/wallet-standard-features';\nimport { getWalletAccountFeature, UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\ntype Input = Omit<SolanaSignMessageInput, 'account'>;\ntype Output = Omit<SolanaSignMessageOutput, 'signatureType'>;\n\n/**\n * Returns a function you can call to sign a serialized transaction.\n */\nexport function useSignMessage<TWalletAccount extends UiWalletAccount>(\n ...config: Parameters<typeof useSignMessages<TWalletAccount>>\n): (input: Input) => Promise<Output> {\n const signMessages = useSignMessages(...config);\n return useCallback(\n async input => {\n const [result] = await signMessages(input);\n return result;\n },\n [signMessages],\n );\n}\n\nfunction useSignMessages<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n const signMessageFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignMessage,\n ) as SolanaSignMessageFeature[typeof SolanaSignMessage];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithAccount = inputs.map(input => ({ ...input, account }));\n const results = await signMessageFeature.signMessage(...inputsWithAccount);\n const resultsWithoutSignatureType = results.map(\n ({\n signatureType: _, // Solana signatures are always of type `ed25519` so drop this property.\n ...rest\n }) => rest,\n );\n return resultsWithoutSignatureType;\n },\n [signMessageFeature, account],\n );\n}\n","import {\n SolanaSignAndSendTransaction,\n SolanaSignTransaction,\n SolanaSignTransactionFeature,\n SolanaSignTransactionInput,\n SolanaSignTransactionOutput,\n} from '@solana/wallet-standard-features';\nimport {\n WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED,\n WalletStandardError,\n} from '@wallet-standard/errors';\nimport { getWalletAccountFeature, UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\nimport { OnlySolanaChains } from './chain';\n\ntype Input = Readonly<\n Omit<SolanaSignTransactionInput, 'account' | 'chain' | 'options'> & {\n options?: Readonly<{\n minContextSlot?: bigint;\n }>;\n }\n>;\ntype Output = SolanaSignTransactionOutput;\n\n/**\n * Returns a function you can call to sign a serialized transaction.\n */\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: Input) => Promise<Output>;\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output>;\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output> {\n const signTransactions = useSignTransactions(uiWalletAccount, chain);\n return useCallback(\n async input => {\n const [result] = await signTransactions(input);\n return result;\n },\n [signTransactions],\n );\n}\n\nfunction useSignTransactions<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n if (!uiWalletAccount.chains.includes(chain)) {\n throw new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n address: uiWalletAccount.address,\n chain,\n featureName: SolanaSignAndSendTransaction,\n supportedChains: [...uiWalletAccount.chains],\n supportedFeatures: [...uiWalletAccount.features],\n });\n }\n const signTransactionFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignTransaction,\n ) as SolanaSignTransactionFeature[typeof SolanaSignTransaction];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithAccountAndChain = inputs.map(({ options, ...rest }) => {\n const minContextSlot = options?.minContextSlot;\n return {\n ...rest,\n account,\n chain,\n ...(minContextSlot != null\n ? {\n options: {\n minContextSlot: Number(minContextSlot),\n },\n }\n : null),\n };\n });\n const results = await signTransactionFeature.signTransaction(...inputsWithAccountAndChain);\n return results;\n },\n [signTransactionFeature, account, chain],\n );\n}\n","export function getAbortablePromise<T>(promise: Promise<T>, abortSignal?: AbortSignal): Promise<T> {\n if (!abortSignal) {\n return promise;\n } else {\n return Promise.race([\n // This promise only ever rejects if the signal is aborted. Otherwise it idles forever.\n // It's important that this come before the input promise; in the event of an abort, we\n // want to throw even if the input promise's result is ready\n new Promise<never>((_, reject) => {\n if (abortSignal.aborted) {\n reject(abortSignal.reason);\n } else {\n abortSignal.addEventListener('abort', function () {\n reject(this.reason);\n });\n }\n }),\n promise,\n ]);\n }\n}\n","import { Address, address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { MessageModifyingSigner, SignableMessage } from '@solana/signers';\nimport type { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo } from 'react';\n\nimport { getAbortablePromise } from './abortable-promise';\nimport { useSignMessage } from './useSignMessage';\n\n/**\n * Returns an object that conforms to the `MessageModifyingSigner` interface of `@solana/signers`.\n */\nexport function useWalletAccountMessageSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n): MessageModifyingSigner<TWalletAccount['address']> {\n const signMessage = useSignMessage(uiWalletAccount);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async modifyAndSignMessages(messages, config) {\n config?.abortSignal?.throwIfAborted();\n if (messages.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (messages.length === 0) {\n return messages;\n }\n const { content: originalMessage, signatures: originalSignatureMap } = messages[0];\n const input = {\n message: originalMessage,\n };\n const { signedMessage, signature } = await getAbortablePromise(signMessage(input), config?.abortSignal);\n const messageWasModified =\n originalMessage.length !== signedMessage.length ||\n originalMessage.some((originalByte, ii) => originalByte !== signedMessage[ii]);\n const originalSignature = originalSignatureMap[uiWalletAccount.address as Address<string>] as\n | SignatureBytes\n | undefined;\n const signatureIsNew = !originalSignature?.every((originalByte, ii) => originalByte === signature[ii]);\n if (!signatureIsNew && !messageWasModified) {\n // We already had this exact signature, and the message wasn't modified.\n // Don't replace the existing message object.\n return messages;\n }\n const nextSignatureMap = messageWasModified\n ? { [uiWalletAccount.address]: signature }\n : { ...originalSignatureMap, [uiWalletAccount.address]: signature };\n const outputMessages = Object.freeze([\n Object.freeze({\n content: signedMessage,\n signatures: Object.freeze(nextSignatureMap),\n }) as SignableMessage,\n ]);\n return outputMessages;\n },\n }),\n [uiWalletAccount, signMessage],\n );\n}\n","import { address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { TransactionModifyingSigner } from '@solana/signers';\nimport { getTransactionCodec } from '@solana/transactions';\nimport { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo, useRef } from 'react';\n\nimport { getAbortablePromise } from './abortable-promise';\nimport { OnlySolanaChains } from './chain';\nimport { useSignTransaction } from './useSignTransaction';\n\n/**\n * Returns an object that conforms to the `TransactionModifyingSigner` interface of\n * `@solana/signers`.\n */\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionModifyingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']> {\n const encoderRef = useRef<ReturnType<typeof getTransactionCodec>>();\n const signTransaction = useSignTransaction(uiWalletAccount, chain);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async modifyAndSignTransactions(transactions, config = {}) {\n const { abortSignal, ...options } = config;\n abortSignal?.throwIfAborted();\n const transactionCodec = (encoderRef.current ||= getTransactionCodec());\n if (transactions.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (transactions.length === 0) {\n return transactions;\n }\n const [transaction] = transactions;\n const wireTransactionBytes = transactionCodec.encode(transaction);\n const inputWithOptions = {\n ...options,\n transaction: wireTransactionBytes as Uint8Array,\n };\n const { signedTransaction } = await getAbortablePromise(signTransaction(inputWithOptions), abortSignal);\n const decodedSignedTransaction = transactionCodec.decode(\n signedTransaction,\n ) as (typeof transactions)[number];\n return Object.freeze([decodedSignedTransaction]);\n },\n }),\n [uiWalletAccount.address, signTransaction],\n );\n}\n","import { address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { TransactionSendingSigner } from '@solana/signers';\nimport { getTransactionEncoder } from '@solana/transactions';\nimport { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo, useRef } from 'react';\n\nimport { getAbortablePromise } from './abortable-promise';\nimport { OnlySolanaChains } from './chain';\nimport { useSignAndSendTransaction } from './useSignAndSendTransaction';\n\n/**\n * Returns an object that conforms to the `TransactionSendingSigner` interface of `@solana/signers`.\n */\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionSendingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']> {\n const encoderRef = useRef<ReturnType<typeof getTransactionEncoder>>();\n const signAndSendTransaction = useSignAndSendTransaction(uiWalletAccount, chain);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async signAndSendTransactions(transactions, config = {}) {\n const { abortSignal, ...options } = config;\n abortSignal?.throwIfAborted();\n const transactionEncoder = (encoderRef.current ||= getTransactionEncoder());\n if (transactions.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (transactions.length === 0) {\n return [];\n }\n const [transaction] = transactions;\n const wireTransactionBytes = transactionEncoder.encode(transaction);\n const inputWithOptions = {\n ...options,\n transaction: wireTransactionBytes as Uint8Array,\n };\n const { signature } = await getAbortablePromise(signAndSendTransaction(inputWithOptions), abortSignal);\n return Object.freeze([signature as SignatureBytes]);\n },\n }),\n [signAndSendTransaction, uiWalletAccount.address],\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/useSignAndSendTransaction.ts","../src/useSignIn.ts","../src/useSignMessage.ts","../src/useSignTransaction.ts","../src/useWalletAccountMessageSigner.ts","../src/useWalletAccountTransactionSigner.ts","../src/useWalletAccountTransactionSendingSigner.ts"],"names":["useCallback","getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","getWalletAccountFeature","WalletStandardError","WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED","SolanaSignAndSendTransaction","useMemo","address","SolanaError","SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED","getAbortablePromise","useRef"],"mappings":"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","file":"index.native.mjs","sourcesContent":["import {\n SolanaSignAndSendTransaction,\n SolanaSignAndSendTransactionFeature,\n SolanaSignAndSendTransactionInput,\n SolanaSignAndSendTransactionOutput,\n} from '@solana/wallet-standard-features';\nimport {\n WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED,\n WalletStandardError,\n} from '@wallet-standard/errors';\nimport { getWalletAccountFeature, type UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\nimport { OnlySolanaChains } from './chain';\n\ntype Input = Readonly<\n Omit<SolanaSignAndSendTransactionInput, 'account' | 'chain' | 'options'> & {\n options?: Readonly<{\n minContextSlot?: bigint;\n }>;\n }\n>;\ntype Output = SolanaSignAndSendTransactionOutput;\n\n/**\n * Returns a function you can call to sign and send a serialized transaction.\n */\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: Input) => Promise<Output>;\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output>;\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output> {\n const signAndSendTransactions = useSignAndSendTransactions(uiWalletAccount, chain);\n return useCallback(\n async input => {\n const [result] = await signAndSendTransactions(input);\n return result;\n },\n [signAndSendTransactions],\n );\n}\n\nfunction useSignAndSendTransactions<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n if (!uiWalletAccount.chains.includes(chain)) {\n throw new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n address: uiWalletAccount.address,\n chain,\n featureName: SolanaSignAndSendTransaction,\n supportedChains: [...uiWalletAccount.chains],\n supportedFeatures: [...uiWalletAccount.features],\n });\n }\n const signAndSendTransactionFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignAndSendTransaction,\n ) as SolanaSignAndSendTransactionFeature[typeof SolanaSignAndSendTransaction];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithChainAndAccount = inputs.map(({ options, ...rest }) => {\n const minContextSlot = options?.minContextSlot;\n return {\n ...rest,\n account,\n chain,\n ...(minContextSlot != null\n ? {\n options: {\n minContextSlot: Number(minContextSlot),\n },\n }\n : null),\n };\n });\n const results = await signAndSendTransactionFeature.signAndSendTransaction(...inputsWithChainAndAccount);\n return results;\n },\n [account, chain, signAndSendTransactionFeature],\n );\n}\n","import { Address } from '@solana/addresses';\nimport {\n SolanaSignIn,\n SolanaSignInFeature,\n SolanaSignInInput,\n SolanaSignInOutput,\n} from '@solana/wallet-standard-features';\nimport {\n getWalletAccountFeature,\n getWalletFeature,\n UiWallet,\n UiWalletAccount,\n UiWalletHandle,\n} from '@wallet-standard/ui';\nimport {\n getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n} from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\ntype Input = SolanaSignInInput;\ntype Output = Omit<SolanaSignInOutput, 'account' | 'signatureType'> &\n Readonly<{\n account: UiWalletAccount;\n }>;\n\n/**\n * Returns a function you can call to sign in to a domain\n */\nexport function useSignIn(uiWalletAccount: UiWalletAccount): (input?: Omit<Input, 'address'>) => Promise<Output>;\nexport function useSignIn(uiWallet: UiWallet): (input?: Input) => Promise<Output>;\nexport function useSignIn(uiWalletHandle: UiWalletHandle): (input?: Input) => Promise<Output> {\n const signIns = useSignIns(uiWalletHandle);\n return useCallback(\n async input => {\n const [result] = await signIns(input);\n return result;\n },\n [signIns],\n );\n}\n\nfunction useSignIns(\n uiWalletHandle: UiWalletHandle,\n): (...inputs: readonly (Input | undefined)[]) => Promise<readonly Output[]> {\n let signMessageFeature: SolanaSignInFeature[typeof SolanaSignIn];\n if ('address' in uiWalletHandle && typeof uiWalletHandle.address === 'string') {\n getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle as UiWalletAccount);\n signMessageFeature = getWalletAccountFeature(\n uiWalletHandle as UiWalletAccount,\n SolanaSignIn,\n ) as SolanaSignInFeature[typeof SolanaSignIn];\n } else {\n signMessageFeature = getWalletFeature(uiWalletHandle, SolanaSignIn) as SolanaSignInFeature[typeof SolanaSignIn];\n }\n const wallet = getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle);\n return useCallback(\n async (...inputs) => {\n const inputsWithAddressAndChainId = inputs.map(input => ({\n ...input,\n // Prioritize the `UiWalletAccount` address if it exists.\n ...('address' in uiWalletHandle ? { address: uiWalletHandle.address as Address } : null),\n }));\n const results = await signMessageFeature.signIn(...inputsWithAddressAndChainId);\n const resultsWithoutSignatureType = results.map(\n ({\n account,\n signatureType: _, // Solana signatures are always of type `ed25519` so drop this property.\n ...rest\n }) => ({\n ...rest,\n account: getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(\n wallet,\n account,\n ),\n }),\n );\n return resultsWithoutSignatureType;\n },\n [signMessageFeature, uiWalletHandle, wallet],\n );\n}\n","import {\n SolanaSignMessage,\n SolanaSignMessageFeature,\n SolanaSignMessageInput,\n SolanaSignMessageOutput,\n} from '@solana/wallet-standard-features';\nimport { getWalletAccountFeature, UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\ntype Input = Omit<SolanaSignMessageInput, 'account'>;\ntype Output = Omit<SolanaSignMessageOutput, 'signatureType'>;\n\n/**\n * Returns a function you can call to sign a serialized transaction.\n */\nexport function useSignMessage<TWalletAccount extends UiWalletAccount>(\n ...config: Parameters<typeof useSignMessages<TWalletAccount>>\n): (input: Input) => Promise<Output> {\n const signMessages = useSignMessages(...config);\n return useCallback(\n async input => {\n const [result] = await signMessages(input);\n return result;\n },\n [signMessages],\n );\n}\n\nfunction useSignMessages<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n const signMessageFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignMessage,\n ) as SolanaSignMessageFeature[typeof SolanaSignMessage];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithAccount = inputs.map(input => ({ ...input, account }));\n const results = await signMessageFeature.signMessage(...inputsWithAccount);\n const resultsWithoutSignatureType = results.map(\n ({\n signatureType: _, // Solana signatures are always of type `ed25519` so drop this property.\n ...rest\n }) => rest,\n );\n return resultsWithoutSignatureType;\n },\n [signMessageFeature, account],\n );\n}\n","import {\n SolanaSignAndSendTransaction,\n SolanaSignTransaction,\n SolanaSignTransactionFeature,\n SolanaSignTransactionInput,\n SolanaSignTransactionOutput,\n} from '@solana/wallet-standard-features';\nimport {\n WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED,\n WalletStandardError,\n} from '@wallet-standard/errors';\nimport { getWalletAccountFeature, UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\nimport { OnlySolanaChains } from './chain';\n\ntype Input = Readonly<\n Omit<SolanaSignTransactionInput, 'account' | 'chain' | 'options'> & {\n options?: Readonly<{\n minContextSlot?: bigint;\n }>;\n }\n>;\ntype Output = SolanaSignTransactionOutput;\n\n/**\n * Returns a function you can call to sign a serialized transaction.\n */\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: Input) => Promise<Output>;\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output>;\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output> {\n const signTransactions = useSignTransactions(uiWalletAccount, chain);\n return useCallback(\n async input => {\n const [result] = await signTransactions(input);\n return result;\n },\n [signTransactions],\n );\n}\n\nfunction useSignTransactions<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n if (!uiWalletAccount.chains.includes(chain)) {\n throw new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n address: uiWalletAccount.address,\n chain,\n featureName: SolanaSignAndSendTransaction,\n supportedChains: [...uiWalletAccount.chains],\n supportedFeatures: [...uiWalletAccount.features],\n });\n }\n const signTransactionFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignTransaction,\n ) as SolanaSignTransactionFeature[typeof SolanaSignTransaction];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithAccountAndChain = inputs.map(({ options, ...rest }) => {\n const minContextSlot = options?.minContextSlot;\n return {\n ...rest,\n account,\n chain,\n ...(minContextSlot != null\n ? {\n options: {\n minContextSlot: Number(minContextSlot),\n },\n }\n : null),\n };\n });\n const results = await signTransactionFeature.signTransaction(...inputsWithAccountAndChain);\n return results;\n },\n [signTransactionFeature, account, chain],\n );\n}\n","import { Address, address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { getAbortablePromise } from '@solana/promises';\nimport { MessageModifyingSigner, SignableMessage } from '@solana/signers';\nimport type { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo } from 'react';\n\nimport { useSignMessage } from './useSignMessage';\n\n/**\n * Returns an object that conforms to the `MessageModifyingSigner` interface of `@solana/signers`.\n */\nexport function useWalletAccountMessageSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n): MessageModifyingSigner<TWalletAccount['address']> {\n const signMessage = useSignMessage(uiWalletAccount);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async modifyAndSignMessages(messages, config) {\n config?.abortSignal?.throwIfAborted();\n if (messages.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (messages.length === 0) {\n return messages;\n }\n const { content: originalMessage, signatures: originalSignatureMap } = messages[0];\n const input = {\n message: originalMessage,\n };\n const { signedMessage, signature } = await getAbortablePromise(signMessage(input), config?.abortSignal);\n const messageWasModified =\n originalMessage.length !== signedMessage.length ||\n originalMessage.some((originalByte, ii) => originalByte !== signedMessage[ii]);\n const originalSignature = originalSignatureMap[uiWalletAccount.address as Address<string>] as\n | SignatureBytes\n | undefined;\n const signatureIsNew = !originalSignature?.every((originalByte, ii) => originalByte === signature[ii]);\n if (!signatureIsNew && !messageWasModified) {\n // We already had this exact signature, and the message wasn't modified.\n // Don't replace the existing message object.\n return messages;\n }\n const nextSignatureMap = messageWasModified\n ? { [uiWalletAccount.address]: signature }\n : { ...originalSignatureMap, [uiWalletAccount.address]: signature };\n const outputMessages = Object.freeze([\n Object.freeze({\n content: signedMessage,\n signatures: Object.freeze(nextSignatureMap),\n }) as SignableMessage,\n ]);\n return outputMessages;\n },\n }),\n [uiWalletAccount, signMessage],\n );\n}\n","import { address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { getAbortablePromise } from '@solana/promises';\nimport { TransactionModifyingSigner } from '@solana/signers';\nimport { getTransactionCodec } from '@solana/transactions';\nimport { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo, useRef } from 'react';\n\nimport { OnlySolanaChains } from './chain';\nimport { useSignTransaction } from './useSignTransaction';\n\n/**\n * Returns an object that conforms to the `TransactionModifyingSigner` interface of\n * `@solana/signers`.\n */\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionModifyingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']> {\n const encoderRef = useRef<ReturnType<typeof getTransactionCodec>>();\n const signTransaction = useSignTransaction(uiWalletAccount, chain);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async modifyAndSignTransactions(transactions, config = {}) {\n const { abortSignal, ...options } = config;\n abortSignal?.throwIfAborted();\n const transactionCodec = (encoderRef.current ||= getTransactionCodec());\n if (transactions.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (transactions.length === 0) {\n return transactions;\n }\n const [transaction] = transactions;\n const wireTransactionBytes = transactionCodec.encode(transaction);\n const inputWithOptions = {\n ...options,\n transaction: wireTransactionBytes as Uint8Array,\n };\n const { signedTransaction } = await getAbortablePromise(signTransaction(inputWithOptions), abortSignal);\n const decodedSignedTransaction = transactionCodec.decode(\n signedTransaction,\n ) as (typeof transactions)[number];\n return Object.freeze([decodedSignedTransaction]);\n },\n }),\n [uiWalletAccount.address, signTransaction],\n );\n}\n","import { address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { getAbortablePromise } from '@solana/promises';\nimport { TransactionSendingSigner } from '@solana/signers';\nimport { getTransactionEncoder } from '@solana/transactions';\nimport { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo, useRef } from 'react';\n\nimport { OnlySolanaChains } from './chain';\nimport { useSignAndSendTransaction } from './useSignAndSendTransaction';\n\n/**\n * Returns an object that conforms to the `TransactionSendingSigner` interface of `@solana/signers`.\n */\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionSendingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']> {\n const encoderRef = useRef<ReturnType<typeof getTransactionEncoder>>();\n const signAndSendTransaction = useSignAndSendTransaction(uiWalletAccount, chain);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async signAndSendTransactions(transactions, config = {}) {\n const { abortSignal, ...options } = config;\n abortSignal?.throwIfAborted();\n const transactionEncoder = (encoderRef.current ||= getTransactionEncoder());\n if (transactions.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (transactions.length === 0) {\n return [];\n }\n const [transaction] = transactions;\n const wireTransactionBytes = transactionEncoder.encode(transaction);\n const inputWithOptions = {\n ...options,\n transaction: wireTransactionBytes as Uint8Array,\n };\n const { signature } = await getAbortablePromise(signAndSendTransaction(inputWithOptions), abortSignal);\n return Object.freeze([signature as SignatureBytes]);\n },\n }),\n [signAndSendTransaction, uiWalletAccount.address],\n );\n}\n"]}
@@ -7,6 +7,7 @@ var uiRegistry = require('@wallet-standard/ui-registry');
7
7
  var react = require('react');
8
8
  var addresses = require('@solana/addresses');
9
9
  var errors$1 = require('@solana/errors');
10
+ var promises = require('@solana/promises');
10
11
  var transactions = require('@solana/transactions');
11
12
 
12
13
  // src/useSignAndSendTransaction.ts
@@ -183,31 +184,6 @@ function useSignTransactions(uiWalletAccount, chain) {
183
184
  [signTransactionFeature, account, chain]
184
185
  );
185
186
  }
186
-
187
- // src/abortable-promise.ts
188
- function getAbortablePromise(promise, abortSignal) {
189
- if (!abortSignal) {
190
- return promise;
191
- } else {
192
- return Promise.race([
193
- // This promise only ever rejects if the signal is aborted. Otherwise it idles forever.
194
- // It's important that this come before the input promise; in the event of an abort, we
195
- // want to throw even if the input promise's result is ready
196
- new Promise((_, reject) => {
197
- if (abortSignal.aborted) {
198
- reject(abortSignal.reason);
199
- } else {
200
- abortSignal.addEventListener("abort", function() {
201
- reject(this.reason);
202
- });
203
- }
204
- }),
205
- promise
206
- ]);
207
- }
208
- }
209
-
210
- // src/useWalletAccountMessageSigner.ts
211
187
  function useWalletAccountMessageSigner(uiWalletAccount) {
212
188
  const signMessage = useSignMessage(uiWalletAccount);
213
189
  return react.useMemo(
@@ -225,7 +201,7 @@ function useWalletAccountMessageSigner(uiWalletAccount) {
225
201
  const input = {
226
202
  message: originalMessage
227
203
  };
228
- const { signedMessage, signature } = await getAbortablePromise(signMessage(input), config?.abortSignal);
204
+ const { signedMessage, signature } = await promises.getAbortablePromise(signMessage(input), config?.abortSignal);
229
205
  const messageWasModified = originalMessage.length !== signedMessage.length || originalMessage.some((originalByte, ii) => originalByte !== signedMessage[ii]);
230
206
  const originalSignature = originalSignatureMap[uiWalletAccount.address];
231
207
  const signatureIsNew = !originalSignature?.every((originalByte, ii) => originalByte === signature[ii]);
@@ -267,7 +243,7 @@ function useWalletAccountTransactionSigner(uiWalletAccount, chain) {
267
243
  ...options,
268
244
  transaction: wireTransactionBytes
269
245
  };
270
- const { signedTransaction } = await getAbortablePromise(signTransaction(inputWithOptions), abortSignal);
246
+ const { signedTransaction } = await promises.getAbortablePromise(signTransaction(inputWithOptions), abortSignal);
271
247
  const decodedSignedTransaction = transactionCodec.decode(
272
248
  signedTransaction
273
249
  );
@@ -299,7 +275,7 @@ function useWalletAccountTransactionSendingSigner(uiWalletAccount, chain) {
299
275
  ...options,
300
276
  transaction: wireTransactionBytes
301
277
  };
302
- const { signature } = await getAbortablePromise(signAndSendTransaction(inputWithOptions), abortSignal);
278
+ const { signature } = await promises.getAbortablePromise(signAndSendTransaction(inputWithOptions), abortSignal);
303
279
  return Object.freeze([signature]);
304
280
  }
305
281
  }),
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/useSignAndSendTransaction.ts","../src/useSignIn.ts","../src/useSignMessage.ts","../src/useSignTransaction.ts","../src/abortable-promise.ts","../src/useWalletAccountMessageSigner.ts","../src/useWalletAccountTransactionSigner.ts","../src/useWalletAccountTransactionSendingSigner.ts"],"names":["useCallback","WalletStandardError","WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED","SolanaSignAndSendTransaction","getWalletAccountFeature","getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","SolanaSignIn","getWalletFeature","getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","SolanaSignMessage","SolanaSignTransaction","useMemo","address","SolanaError","SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED","useRef","transactions","getTransactionCodec","getTransactionEncoder"],"mappings":";;;;;;;;;;;;AAoCO,SAAS,yBAAA,CACZ,iBACA,KACiC,EAAA;AACjC,EAAM,MAAA,uBAAA,GAA0B,0BAA2B,CAAA,eAAA,EAAiB,KAAK,CAAA,CAAA;AACjF,EAAO,OAAAA,iBAAA;AAAA,IACH,OAAM,KAAS,KAAA;AACX,MAAA,MAAM,CAAC,MAAM,CAAI,GAAA,MAAM,wBAAwB,KAAK,CAAA,CAAA;AACpD,MAAO,OAAA,MAAA,CAAA;AAAA,KACX;AAAA,IACA,CAAC,uBAAuB,CAAA;AAAA,GAC5B,CAAA;AACJ,CAAA;AAEA,SAAS,0BAAA,CACL,iBACA,KAC2D,EAAA;AAC3D,EAAA,IAAI,CAAC,eAAA,CAAgB,MAAO,CAAA,QAAA,CAAS,KAAK,CAAG,EAAA;AACzC,IAAM,MAAA,IAAIC,2BAAoBC,wEAAmE,EAAA;AAAA,MAC7F,SAAS,eAAgB,CAAA,OAAA;AAAA,MACzB,KAAA;AAAA,MACA,WAAa,EAAAC,mDAAA;AAAA,MACb,eAAiB,EAAA,CAAC,GAAG,eAAA,CAAgB,MAAM,CAAA;AAAA,MAC3C,iBAAmB,EAAA,CAAC,GAAG,eAAA,CAAgB,QAAQ,CAAA;AAAA,KAClD,CAAA,CAAA;AAAA,GACL;AACA,EAAA,MAAM,6BAAgC,GAAAC,0BAAA;AAAA,IAClC,eAAA;AAAA,IACAD,mDAAA;AAAA,GACJ,CAAA;AACA,EAAM,MAAA,OAAA,GAAUE,8EAAmE,eAAe,CAAA,CAAA;AAClG,EAAO,OAAAL,iBAAA;AAAA,IACH,UAAU,MAAW,KAAA;AACjB,MAAM,MAAA,yBAAA,GAA4B,OAAO,GAAI,CAAA,CAAC,EAAE,OAAS,EAAA,GAAG,MAAW,KAAA;AACnE,QAAA,MAAM,iBAAiB,OAAS,EAAA,cAAA,CAAA;AAChC,QAAO,OAAA;AAAA,UACH,GAAG,IAAA;AAAA,UACH,OAAA;AAAA,UACA,KAAA;AAAA,UACA,GAAI,kBAAkB,IAChB,GAAA;AAAA,YACI,OAAS,EAAA;AAAA,cACL,cAAA,EAAgB,OAAO,cAAc,CAAA;AAAA,aACzC;AAAA,WAEJ,GAAA,IAAA;AAAA,SACV,CAAA;AAAA,OACH,CAAA,CAAA;AACD,MAAA,MAAM,OAAU,GAAA,MAAM,6BAA8B,CAAA,sBAAA,CAAuB,GAAG,yBAAyB,CAAA,CAAA;AACvG,MAAO,OAAA,OAAA,CAAA;AAAA,KACX;AAAA,IACA,CAAC,OAAS,EAAA,KAAA,EAAO,6BAA6B,CAAA;AAAA,GAClD,CAAA;AACJ,CAAA;AC1DO,SAAS,UAAU,cAAoE,EAAA;AAC1F,EAAM,MAAA,OAAA,GAAU,WAAW,cAAc,CAAA,CAAA;AACzC,EAAOA,OAAAA,iBAAAA;AAAA,IACH,OAAM,KAAS,KAAA;AACX,MAAA,MAAM,CAAC,MAAM,CAAI,GAAA,MAAM,QAAQ,KAAK,CAAA,CAAA;AACpC,MAAO,OAAA,MAAA,CAAA;AAAA,KACX;AAAA,IACA,CAAC,OAAO,CAAA;AAAA,GACZ,CAAA;AACJ,CAAA;AAEA,SAAS,WACL,cACyE,EAAA;AACzE,EAAI,IAAA,kBAAA,CAAA;AACJ,EAAA,IAAI,SAAa,IAAA,cAAA,IAAkB,OAAO,cAAA,CAAe,YAAY,QAAU,EAAA;AAC3E,IAAAK,8EAAmE,cAAiC,CAAA,CAAA;AACpG,IAAqBD,kBAAAA,GAAAA,0BAAAA;AAAA,MACjB,cAAA;AAAA,MACAE,mCAAA;AAAA,KACJ,CAAA;AAAA,GACG,MAAA;AACH,IAAqB,kBAAA,GAAAC,mBAAA,CAAiB,gBAAgBD,mCAAY,CAAA,CAAA;AAAA,GACtE;AACA,EAAM,MAAA,MAAA,GAASE,8DAAmD,cAAc,CAAA,CAAA;AAChF,EAAOR,OAAAA,iBAAAA;AAAA,IACH,UAAU,MAAW,KAAA;AACjB,MAAM,MAAA,2BAAA,GAA8B,MAAO,CAAA,GAAA,CAAI,CAAU,KAAA,MAAA;AAAA,QACrD,GAAG,KAAA;AAAA;AAAA,QAEH,GAAI,SAAa,IAAA,cAAA,GAAiB,EAAE,OAAS,EAAA,cAAA,CAAe,SAAuB,GAAA,IAAA;AAAA,OACrF,CAAA,CAAA,CAAA;AACF,MAAA,MAAM,OAAU,GAAA,MAAM,kBAAmB,CAAA,MAAA,CAAO,GAAG,2BAA2B,CAAA,CAAA;AAC9E,MAAA,MAAM,8BAA8B,OAAQ,CAAA,GAAA;AAAA,QACxC,CAAC;AAAA,UACG,OAAA;AAAA,UACA,aAAe,EAAA,CAAA;AAAA;AAAA,UACf,GAAG,IAAA;AAAA,SACA,MAAA;AAAA,UACH,GAAG,IAAA;AAAA,UACH,OAAS,EAAAS,6FAAA;AAAA,YACL,MAAA;AAAA,YACA,OAAA;AAAA,WACJ;AAAA,SACJ,CAAA;AAAA,OACJ,CAAA;AACA,MAAO,OAAA,2BAAA,CAAA;AAAA,KACX;AAAA,IACA,CAAC,kBAAoB,EAAA,cAAA,EAAgB,MAAM,CAAA;AAAA,GAC/C,CAAA;AACJ,CAAA;AClEO,SAAS,kBACT,MAC8B,EAAA;AACjC,EAAM,MAAA,YAAA,GAAe,eAAgB,CAAA,GAAG,MAAM,CAAA,CAAA;AAC9C,EAAOT,OAAAA,iBAAAA;AAAA,IACH,OAAM,KAAS,KAAA;AACX,MAAA,MAAM,CAAC,MAAM,CAAI,GAAA,MAAM,aAAa,KAAK,CAAA,CAAA;AACzC,MAAO,OAAA,MAAA,CAAA;AAAA,KACX;AAAA,IACA,CAAC,YAAY,CAAA;AAAA,GACjB,CAAA;AACJ,CAAA;AAEA,SAAS,gBACL,eAC2D,EAAA;AAC3D,EAAA,MAAM,kBAAqBI,GAAAA,0BAAAA;AAAA,IACvB,eAAA;AAAA,IACAM,wCAAA;AAAA,GACJ,CAAA;AACA,EAAM,MAAA,OAAA,GAAUL,8EAAmE,eAAe,CAAA,CAAA;AAClG,EAAOL,OAAAA,iBAAAA;AAAA,IACH,UAAU,MAAW,KAAA;AACjB,MAAM,MAAA,iBAAA,GAAoB,OAAO,GAAI,CAAA,CAAA,KAAA,MAAU,EAAE,GAAG,KAAA,EAAO,SAAU,CAAA,CAAA,CAAA;AACrE,MAAA,MAAM,OAAU,GAAA,MAAM,kBAAmB,CAAA,WAAA,CAAY,GAAG,iBAAiB,CAAA,CAAA;AACzE,MAAA,MAAM,8BAA8B,OAAQ,CAAA,GAAA;AAAA,QACxC,CAAC;AAAA,UACG,aAAe,EAAA,CAAA;AAAA;AAAA,UACf,GAAG,IAAA;AAAA,SACD,KAAA,IAAA;AAAA,OACV,CAAA;AACA,MAAO,OAAA,2BAAA,CAAA;AAAA,KACX;AAAA,IACA,CAAC,oBAAoB,OAAO,CAAA;AAAA,GAChC,CAAA;AACJ,CAAA;ACdO,SAAS,kBAAA,CACZ,iBACA,KACiC,EAAA;AACjC,EAAM,MAAA,gBAAA,GAAmB,mBAAoB,CAAA,eAAA,EAAiB,KAAK,CAAA,CAAA;AACnE,EAAOA,OAAAA,iBAAAA;AAAA,IACH,OAAM,KAAS,KAAA;AACX,MAAA,MAAM,CAAC,MAAM,CAAI,GAAA,MAAM,iBAAiB,KAAK,CAAA,CAAA;AAC7C,MAAO,OAAA,MAAA,CAAA;AAAA,KACX;AAAA,IACA,CAAC,gBAAgB,CAAA;AAAA,GACrB,CAAA;AACJ,CAAA;AAEA,SAAS,mBAAA,CACL,iBACA,KAC2D,EAAA;AAC3D,EAAA,IAAI,CAAC,eAAA,CAAgB,MAAO,CAAA,QAAA,CAAS,KAAK,CAAG,EAAA;AACzC,IAAM,MAAA,IAAIC,2BAAoBC,wEAAmE,EAAA;AAAA,MAC7F,SAAS,eAAgB,CAAA,OAAA;AAAA,MACzB,KAAA;AAAA,MACA,WAAaC,EAAAA,mDAAAA;AAAA,MACb,eAAiB,EAAA,CAAC,GAAG,eAAA,CAAgB,MAAM,CAAA;AAAA,MAC3C,iBAAmB,EAAA,CAAC,GAAG,eAAA,CAAgB,QAAQ,CAAA;AAAA,KAClD,CAAA,CAAA;AAAA,GACL;AACA,EAAA,MAAM,sBAAyBC,GAAAA,0BAAAA;AAAA,IAC3B,eAAA;AAAA,IACAO,4CAAA;AAAA,GACJ,CAAA;AACA,EAAM,MAAA,OAAA,GAAUN,8EAAmE,eAAe,CAAA,CAAA;AAClG,EAAOL,OAAAA,iBAAAA;AAAA,IACH,UAAU,MAAW,KAAA;AACjB,MAAM,MAAA,yBAAA,GAA4B,OAAO,GAAI,CAAA,CAAC,EAAE,OAAS,EAAA,GAAG,MAAW,KAAA;AACnE,QAAA,MAAM,iBAAiB,OAAS,EAAA,cAAA,CAAA;AAChC,QAAO,OAAA;AAAA,UACH,GAAG,IAAA;AAAA,UACH,OAAA;AAAA,UACA,KAAA;AAAA,UACA,GAAI,kBAAkB,IAChB,GAAA;AAAA,YACI,OAAS,EAAA;AAAA,cACL,cAAA,EAAgB,OAAO,cAAc,CAAA;AAAA,aACzC;AAAA,WAEJ,GAAA,IAAA;AAAA,SACV,CAAA;AAAA,OACH,CAAA,CAAA;AACD,MAAA,MAAM,OAAU,GAAA,MAAM,sBAAuB,CAAA,eAAA,CAAgB,GAAG,yBAAyB,CAAA,CAAA;AACzF,MAAO,OAAA,OAAA,CAAA;AAAA,KACX;AAAA,IACA,CAAC,sBAAwB,EAAA,OAAA,EAAS,KAAK,CAAA;AAAA,GAC3C,CAAA;AACJ,CAAA;;;AC3FO,SAAS,mBAAA,CAAuB,SAAqB,WAAuC,EAAA;AAC/F,EAAA,IAAI,CAAC,WAAa,EAAA;AACd,IAAO,OAAA,OAAA,CAAA;AAAA,GACJ,MAAA;AACH,IAAA,OAAO,QAAQ,IAAK,CAAA;AAAA;AAAA;AAAA;AAAA,MAIhB,IAAI,OAAA,CAAe,CAAC,CAAA,EAAG,MAAW,KAAA;AAC9B,QAAA,IAAI,YAAY,OAAS,EAAA;AACrB,UAAA,MAAA,CAAO,YAAY,MAAM,CAAA,CAAA;AAAA,SACtB,MAAA;AACH,UAAY,WAAA,CAAA,gBAAA,CAAiB,SAAS,WAAY;AAC9C,YAAA,MAAA,CAAO,KAAK,MAAM,CAAA,CAAA;AAAA,WACrB,CAAA,CAAA;AAAA,SACL;AAAA,OACH,CAAA;AAAA,MACD,OAAA;AAAA,KACH,CAAA,CAAA;AAAA,GACL;AACJ,CAAA;;;ACPO,SAAS,8BACZ,eACiD,EAAA;AACjD,EAAM,MAAA,WAAA,GAAc,eAAe,eAAe,CAAA,CAAA;AAClD,EAAO,OAAAY,aAAA;AAAA,IACH,OAAO;AAAA,MACH,OAAA,EAASC,iBAAQ,CAAA,eAAA,CAAgB,OAAO,CAAA;AAAA,MACxC,MAAM,qBAAsB,CAAA,QAAA,EAAU,MAAQ,EAAA;AAC1C,QAAA,MAAA,EAAQ,aAAa,cAAe,EAAA,CAAA;AACpC,QAAI,IAAA,QAAA,CAAS,SAAS,CAAG,EAAA;AACrB,UAAM,MAAA,IAAIC,qBAAYC,6DAAoD,CAAA,CAAA;AAAA,SAC9E;AACA,QAAI,IAAA,QAAA,CAAS,WAAW,CAAG,EAAA;AACvB,UAAO,OAAA,QAAA,CAAA;AAAA,SACX;AACA,QAAA,MAAM,EAAE,OAAS,EAAA,eAAA,EAAiB,YAAY,oBAAqB,EAAA,GAAI,SAAS,CAAC,CAAA,CAAA;AACjF,QAAA,MAAM,KAAQ,GAAA;AAAA,UACV,OAAS,EAAA,eAAA;AAAA,SACb,CAAA;AACA,QAAM,MAAA,EAAE,aAAe,EAAA,SAAA,EAAc,GAAA,MAAM,oBAAoB,WAAY,CAAA,KAAK,CAAG,EAAA,MAAA,EAAQ,WAAW,CAAA,CAAA;AACtG,QAAA,MAAM,kBACF,GAAA,eAAA,CAAgB,MAAW,KAAA,aAAA,CAAc,MACzC,IAAA,eAAA,CAAgB,IAAK,CAAA,CAAC,YAAc,EAAA,EAAA,KAAO,YAAiB,KAAA,aAAA,CAAc,EAAE,CAAC,CAAA,CAAA;AACjF,QAAM,MAAA,iBAAA,GAAoB,oBAAqB,CAAA,eAAA,CAAgB,OAA0B,CAAA,CAAA;AAGzF,QAAM,MAAA,cAAA,GAAiB,CAAC,iBAAA,EAAmB,KAAM,CAAA,CAAC,cAAc,EAAO,KAAA,YAAA,KAAiB,SAAU,CAAA,EAAE,CAAC,CAAA,CAAA;AACrG,QAAI,IAAA,CAAC,cAAkB,IAAA,CAAC,kBAAoB,EAAA;AAGxC,UAAO,OAAA,QAAA,CAAA;AAAA,SACX;AACA,QAAA,MAAM,mBAAmB,kBACnB,GAAA,EAAE,CAAC,eAAA,CAAgB,OAAO,GAAG,SAAA,EAC7B,GAAA,EAAE,GAAG,oBAAsB,EAAA,CAAC,eAAgB,CAAA,OAAO,GAAG,SAAU,EAAA,CAAA;AACtE,QAAM,MAAA,cAAA,GAAiB,OAAO,MAAO,CAAA;AAAA,UACjC,OAAO,MAAO,CAAA;AAAA,YACV,OAAS,EAAA,aAAA;AAAA,YACT,UAAA,EAAY,MAAO,CAAA,MAAA,CAAO,gBAAgB,CAAA;AAAA,WAC7C,CAAA;AAAA,SACJ,CAAA,CAAA;AACD,QAAO,OAAA,cAAA,CAAA;AAAA,OACX;AAAA,KACJ,CAAA;AAAA,IACA,CAAC,iBAAiB,WAAW,CAAA;AAAA,GACjC,CAAA;AACJ,CAAA;ACpCO,SAAS,iCAAA,CACZ,iBACA,KACqD,EAAA;AACrD,EAAA,MAAM,aAAaC,YAA+C,EAAA,CAAA;AAClE,EAAM,MAAA,eAAA,GAAkB,kBAAmB,CAAA,eAAA,EAAiB,KAAK,CAAA,CAAA;AACjE,EAAOJ,OAAAA,aAAAA;AAAA,IACH,OAAO;AAAA,MACH,OAAA,EAASC,iBAAQ,CAAA,eAAA,CAAgB,OAAO,CAAA;AAAA,MACxC,MAAM,yBAAA,CAA0BI,cAAc,EAAA,MAAA,GAAS,EAAI,EAAA;AACvD,QAAA,MAAM,EAAE,WAAA,EAAa,GAAG,OAAA,EAAY,GAAA,MAAA,CAAA;AACpC,QAAA,WAAA,EAAa,cAAe,EAAA,CAAA;AAC5B,QAAM,MAAA,gBAAA,GAAoB,UAAW,CAAA,OAAA,KAAYC,gCAAoB,EAAA,CAAA;AACrE,QAAI,IAAAD,cAAA,CAAa,SAAS,CAAG,EAAA;AACzB,UAAM,MAAA,IAAIH,qBAAYC,6DAAoD,CAAA,CAAA;AAAA,SAC9E;AACA,QAAI,IAAAE,cAAA,CAAa,WAAW,CAAG,EAAA;AAC3B,UAAO,OAAAA,cAAA,CAAA;AAAA,SACX;AACA,QAAM,MAAA,CAAC,WAAW,CAAI,GAAAA,cAAA,CAAA;AACtB,QAAM,MAAA,oBAAA,GAAuB,gBAAiB,CAAA,MAAA,CAAO,WAAW,CAAA,CAAA;AAChE,QAAA,MAAM,gBAAmB,GAAA;AAAA,UACrB,GAAG,OAAA;AAAA,UACH,WAAa,EAAA,oBAAA;AAAA,SACjB,CAAA;AACA,QAAM,MAAA,EAAE,mBAAsB,GAAA,MAAM,oBAAoB,eAAgB,CAAA,gBAAgB,GAAG,WAAW,CAAA,CAAA;AACtG,QAAA,MAAM,2BAA2B,gBAAiB,CAAA,MAAA;AAAA,UAC9C,iBAAA;AAAA,SACJ,CAAA;AACA,QAAA,OAAO,MAAO,CAAA,MAAA,CAAO,CAAC,wBAAwB,CAAC,CAAA,CAAA;AAAA,OACnD;AAAA,KACJ,CAAA;AAAA,IACA,CAAC,eAAgB,CAAA,OAAA,EAAS,eAAe,CAAA;AAAA,GAC7C,CAAA;AACJ,CAAA;AClCO,SAAS,wCAAA,CACZ,iBACA,KACmD,EAAA;AACnD,EAAA,MAAM,aAAaD,YAAiD,EAAA,CAAA;AACpE,EAAM,MAAA,sBAAA,GAAyB,yBAA0B,CAAA,eAAA,EAAiB,KAAK,CAAA,CAAA;AAC/E,EAAOJ,OAAAA,aAAAA;AAAA,IACH,OAAO;AAAA,MACH,OAAA,EAASC,iBAAQ,CAAA,eAAA,CAAgB,OAAO,CAAA;AAAA,MACxC,MAAM,uBAAA,CAAwBI,cAAc,EAAA,MAAA,GAAS,EAAI,EAAA;AACrD,QAAA,MAAM,EAAE,WAAA,EAAa,GAAG,OAAA,EAAY,GAAA,MAAA,CAAA;AACpC,QAAA,WAAA,EAAa,cAAe,EAAA,CAAA;AAC5B,QAAM,MAAA,kBAAA,GAAsB,UAAW,CAAA,OAAA,KAAYE,kCAAsB,EAAA,CAAA;AACzE,QAAI,IAAAF,cAAA,CAAa,SAAS,CAAG,EAAA;AACzB,UAAM,MAAA,IAAIH,qBAAYC,6DAAoD,CAAA,CAAA;AAAA,SAC9E;AACA,QAAI,IAAAE,cAAA,CAAa,WAAW,CAAG,EAAA;AAC3B,UAAA,OAAO,EAAC,CAAA;AAAA,SACZ;AACA,QAAM,MAAA,CAAC,WAAW,CAAI,GAAAA,cAAA,CAAA;AACtB,QAAM,MAAA,oBAAA,GAAuB,kBAAmB,CAAA,MAAA,CAAO,WAAW,CAAA,CAAA;AAClE,QAAA,MAAM,gBAAmB,GAAA;AAAA,UACrB,GAAG,OAAA;AAAA,UACH,WAAa,EAAA,oBAAA;AAAA,SACjB,CAAA;AACA,QAAM,MAAA,EAAE,WAAc,GAAA,MAAM,oBAAoB,sBAAuB,CAAA,gBAAgB,GAAG,WAAW,CAAA,CAAA;AACrG,QAAA,OAAO,MAAO,CAAA,MAAA,CAAO,CAAC,SAA2B,CAAC,CAAA,CAAA;AAAA,OACtD;AAAA,KACJ,CAAA;AAAA,IACA,CAAC,sBAAwB,EAAA,eAAA,CAAgB,OAAO,CAAA;AAAA,GACpD,CAAA;AACJ","file":"index.node.cjs","sourcesContent":["import {\n SolanaSignAndSendTransaction,\n SolanaSignAndSendTransactionFeature,\n SolanaSignAndSendTransactionInput,\n SolanaSignAndSendTransactionOutput,\n} from '@solana/wallet-standard-features';\nimport {\n WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED,\n WalletStandardError,\n} from '@wallet-standard/errors';\nimport { getWalletAccountFeature, type UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\nimport { OnlySolanaChains } from './chain';\n\ntype Input = Readonly<\n Omit<SolanaSignAndSendTransactionInput, 'account' | 'chain' | 'options'> & {\n options?: Readonly<{\n minContextSlot?: bigint;\n }>;\n }\n>;\ntype Output = SolanaSignAndSendTransactionOutput;\n\n/**\n * Returns a function you can call to sign and send a serialized transaction.\n */\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: Input) => Promise<Output>;\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output>;\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output> {\n const signAndSendTransactions = useSignAndSendTransactions(uiWalletAccount, chain);\n return useCallback(\n async input => {\n const [result] = await signAndSendTransactions(input);\n return result;\n },\n [signAndSendTransactions],\n );\n}\n\nfunction useSignAndSendTransactions<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n if (!uiWalletAccount.chains.includes(chain)) {\n throw new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n address: uiWalletAccount.address,\n chain,\n featureName: SolanaSignAndSendTransaction,\n supportedChains: [...uiWalletAccount.chains],\n supportedFeatures: [...uiWalletAccount.features],\n });\n }\n const signAndSendTransactionFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignAndSendTransaction,\n ) as SolanaSignAndSendTransactionFeature[typeof SolanaSignAndSendTransaction];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithChainAndAccount = inputs.map(({ options, ...rest }) => {\n const minContextSlot = options?.minContextSlot;\n return {\n ...rest,\n account,\n chain,\n ...(minContextSlot != null\n ? {\n options: {\n minContextSlot: Number(minContextSlot),\n },\n }\n : null),\n };\n });\n const results = await signAndSendTransactionFeature.signAndSendTransaction(...inputsWithChainAndAccount);\n return results;\n },\n [account, chain, signAndSendTransactionFeature],\n );\n}\n","import { Address } from '@solana/addresses';\nimport {\n SolanaSignIn,\n SolanaSignInFeature,\n SolanaSignInInput,\n SolanaSignInOutput,\n} from '@solana/wallet-standard-features';\nimport {\n getWalletAccountFeature,\n getWalletFeature,\n UiWallet,\n UiWalletAccount,\n UiWalletHandle,\n} from '@wallet-standard/ui';\nimport {\n getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n} from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\ntype Input = SolanaSignInInput;\ntype Output = Omit<SolanaSignInOutput, 'account' | 'signatureType'> &\n Readonly<{\n account: UiWalletAccount;\n }>;\n\n/**\n * Returns a function you can call to sign in to a domain\n */\nexport function useSignIn(uiWalletAccount: UiWalletAccount): (input?: Omit<Input, 'address'>) => Promise<Output>;\nexport function useSignIn(uiWallet: UiWallet): (input?: Input) => Promise<Output>;\nexport function useSignIn(uiWalletHandle: UiWalletHandle): (input?: Input) => Promise<Output> {\n const signIns = useSignIns(uiWalletHandle);\n return useCallback(\n async input => {\n const [result] = await signIns(input);\n return result;\n },\n [signIns],\n );\n}\n\nfunction useSignIns(\n uiWalletHandle: UiWalletHandle,\n): (...inputs: readonly (Input | undefined)[]) => Promise<readonly Output[]> {\n let signMessageFeature: SolanaSignInFeature[typeof SolanaSignIn];\n if ('address' in uiWalletHandle && typeof uiWalletHandle.address === 'string') {\n getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle as UiWalletAccount);\n signMessageFeature = getWalletAccountFeature(\n uiWalletHandle as UiWalletAccount,\n SolanaSignIn,\n ) as SolanaSignInFeature[typeof SolanaSignIn];\n } else {\n signMessageFeature = getWalletFeature(uiWalletHandle, SolanaSignIn) as SolanaSignInFeature[typeof SolanaSignIn];\n }\n const wallet = getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle);\n return useCallback(\n async (...inputs) => {\n const inputsWithAddressAndChainId = inputs.map(input => ({\n ...input,\n // Prioritize the `UiWalletAccount` address if it exists.\n ...('address' in uiWalletHandle ? { address: uiWalletHandle.address as Address } : null),\n }));\n const results = await signMessageFeature.signIn(...inputsWithAddressAndChainId);\n const resultsWithoutSignatureType = results.map(\n ({\n account,\n signatureType: _, // Solana signatures are always of type `ed25519` so drop this property.\n ...rest\n }) => ({\n ...rest,\n account: getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(\n wallet,\n account,\n ),\n }),\n );\n return resultsWithoutSignatureType;\n },\n [signMessageFeature, uiWalletHandle, wallet],\n );\n}\n","import {\n SolanaSignMessage,\n SolanaSignMessageFeature,\n SolanaSignMessageInput,\n SolanaSignMessageOutput,\n} from '@solana/wallet-standard-features';\nimport { getWalletAccountFeature, UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\ntype Input = Omit<SolanaSignMessageInput, 'account'>;\ntype Output = Omit<SolanaSignMessageOutput, 'signatureType'>;\n\n/**\n * Returns a function you can call to sign a serialized transaction.\n */\nexport function useSignMessage<TWalletAccount extends UiWalletAccount>(\n ...config: Parameters<typeof useSignMessages<TWalletAccount>>\n): (input: Input) => Promise<Output> {\n const signMessages = useSignMessages(...config);\n return useCallback(\n async input => {\n const [result] = await signMessages(input);\n return result;\n },\n [signMessages],\n );\n}\n\nfunction useSignMessages<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n const signMessageFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignMessage,\n ) as SolanaSignMessageFeature[typeof SolanaSignMessage];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithAccount = inputs.map(input => ({ ...input, account }));\n const results = await signMessageFeature.signMessage(...inputsWithAccount);\n const resultsWithoutSignatureType = results.map(\n ({\n signatureType: _, // Solana signatures are always of type `ed25519` so drop this property.\n ...rest\n }) => rest,\n );\n return resultsWithoutSignatureType;\n },\n [signMessageFeature, account],\n );\n}\n","import {\n SolanaSignAndSendTransaction,\n SolanaSignTransaction,\n SolanaSignTransactionFeature,\n SolanaSignTransactionInput,\n SolanaSignTransactionOutput,\n} from '@solana/wallet-standard-features';\nimport {\n WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED,\n WalletStandardError,\n} from '@wallet-standard/errors';\nimport { getWalletAccountFeature, UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\nimport { OnlySolanaChains } from './chain';\n\ntype Input = Readonly<\n Omit<SolanaSignTransactionInput, 'account' | 'chain' | 'options'> & {\n options?: Readonly<{\n minContextSlot?: bigint;\n }>;\n }\n>;\ntype Output = SolanaSignTransactionOutput;\n\n/**\n * Returns a function you can call to sign a serialized transaction.\n */\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: Input) => Promise<Output>;\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output>;\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output> {\n const signTransactions = useSignTransactions(uiWalletAccount, chain);\n return useCallback(\n async input => {\n const [result] = await signTransactions(input);\n return result;\n },\n [signTransactions],\n );\n}\n\nfunction useSignTransactions<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n if (!uiWalletAccount.chains.includes(chain)) {\n throw new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n address: uiWalletAccount.address,\n chain,\n featureName: SolanaSignAndSendTransaction,\n supportedChains: [...uiWalletAccount.chains],\n supportedFeatures: [...uiWalletAccount.features],\n });\n }\n const signTransactionFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignTransaction,\n ) as SolanaSignTransactionFeature[typeof SolanaSignTransaction];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithAccountAndChain = inputs.map(({ options, ...rest }) => {\n const minContextSlot = options?.minContextSlot;\n return {\n ...rest,\n account,\n chain,\n ...(minContextSlot != null\n ? {\n options: {\n minContextSlot: Number(minContextSlot),\n },\n }\n : null),\n };\n });\n const results = await signTransactionFeature.signTransaction(...inputsWithAccountAndChain);\n return results;\n },\n [signTransactionFeature, account, chain],\n );\n}\n","export function getAbortablePromise<T>(promise: Promise<T>, abortSignal?: AbortSignal): Promise<T> {\n if (!abortSignal) {\n return promise;\n } else {\n return Promise.race([\n // This promise only ever rejects if the signal is aborted. Otherwise it idles forever.\n // It's important that this come before the input promise; in the event of an abort, we\n // want to throw even if the input promise's result is ready\n new Promise<never>((_, reject) => {\n if (abortSignal.aborted) {\n reject(abortSignal.reason);\n } else {\n abortSignal.addEventListener('abort', function () {\n reject(this.reason);\n });\n }\n }),\n promise,\n ]);\n }\n}\n","import { Address, address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { MessageModifyingSigner, SignableMessage } from '@solana/signers';\nimport type { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo } from 'react';\n\nimport { getAbortablePromise } from './abortable-promise';\nimport { useSignMessage } from './useSignMessage';\n\n/**\n * Returns an object that conforms to the `MessageModifyingSigner` interface of `@solana/signers`.\n */\nexport function useWalletAccountMessageSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n): MessageModifyingSigner<TWalletAccount['address']> {\n const signMessage = useSignMessage(uiWalletAccount);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async modifyAndSignMessages(messages, config) {\n config?.abortSignal?.throwIfAborted();\n if (messages.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (messages.length === 0) {\n return messages;\n }\n const { content: originalMessage, signatures: originalSignatureMap } = messages[0];\n const input = {\n message: originalMessage,\n };\n const { signedMessage, signature } = await getAbortablePromise(signMessage(input), config?.abortSignal);\n const messageWasModified =\n originalMessage.length !== signedMessage.length ||\n originalMessage.some((originalByte, ii) => originalByte !== signedMessage[ii]);\n const originalSignature = originalSignatureMap[uiWalletAccount.address as Address<string>] as\n | SignatureBytes\n | undefined;\n const signatureIsNew = !originalSignature?.every((originalByte, ii) => originalByte === signature[ii]);\n if (!signatureIsNew && !messageWasModified) {\n // We already had this exact signature, and the message wasn't modified.\n // Don't replace the existing message object.\n return messages;\n }\n const nextSignatureMap = messageWasModified\n ? { [uiWalletAccount.address]: signature }\n : { ...originalSignatureMap, [uiWalletAccount.address]: signature };\n const outputMessages = Object.freeze([\n Object.freeze({\n content: signedMessage,\n signatures: Object.freeze(nextSignatureMap),\n }) as SignableMessage,\n ]);\n return outputMessages;\n },\n }),\n [uiWalletAccount, signMessage],\n );\n}\n","import { address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { TransactionModifyingSigner } from '@solana/signers';\nimport { getTransactionCodec } from '@solana/transactions';\nimport { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo, useRef } from 'react';\n\nimport { getAbortablePromise } from './abortable-promise';\nimport { OnlySolanaChains } from './chain';\nimport { useSignTransaction } from './useSignTransaction';\n\n/**\n * Returns an object that conforms to the `TransactionModifyingSigner` interface of\n * `@solana/signers`.\n */\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionModifyingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']> {\n const encoderRef = useRef<ReturnType<typeof getTransactionCodec>>();\n const signTransaction = useSignTransaction(uiWalletAccount, chain);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async modifyAndSignTransactions(transactions, config = {}) {\n const { abortSignal, ...options } = config;\n abortSignal?.throwIfAborted();\n const transactionCodec = (encoderRef.current ||= getTransactionCodec());\n if (transactions.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (transactions.length === 0) {\n return transactions;\n }\n const [transaction] = transactions;\n const wireTransactionBytes = transactionCodec.encode(transaction);\n const inputWithOptions = {\n ...options,\n transaction: wireTransactionBytes as Uint8Array,\n };\n const { signedTransaction } = await getAbortablePromise(signTransaction(inputWithOptions), abortSignal);\n const decodedSignedTransaction = transactionCodec.decode(\n signedTransaction,\n ) as (typeof transactions)[number];\n return Object.freeze([decodedSignedTransaction]);\n },\n }),\n [uiWalletAccount.address, signTransaction],\n );\n}\n","import { address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { TransactionSendingSigner } from '@solana/signers';\nimport { getTransactionEncoder } from '@solana/transactions';\nimport { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo, useRef } from 'react';\n\nimport { getAbortablePromise } from './abortable-promise';\nimport { OnlySolanaChains } from './chain';\nimport { useSignAndSendTransaction } from './useSignAndSendTransaction';\n\n/**\n * Returns an object that conforms to the `TransactionSendingSigner` interface of `@solana/signers`.\n */\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionSendingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']> {\n const encoderRef = useRef<ReturnType<typeof getTransactionEncoder>>();\n const signAndSendTransaction = useSignAndSendTransaction(uiWalletAccount, chain);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async signAndSendTransactions(transactions, config = {}) {\n const { abortSignal, ...options } = config;\n abortSignal?.throwIfAborted();\n const transactionEncoder = (encoderRef.current ||= getTransactionEncoder());\n if (transactions.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (transactions.length === 0) {\n return [];\n }\n const [transaction] = transactions;\n const wireTransactionBytes = transactionEncoder.encode(transaction);\n const inputWithOptions = {\n ...options,\n transaction: wireTransactionBytes as Uint8Array,\n };\n const { signature } = await getAbortablePromise(signAndSendTransaction(inputWithOptions), abortSignal);\n return Object.freeze([signature as SignatureBytes]);\n },\n }),\n [signAndSendTransaction, uiWalletAccount.address],\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/useSignAndSendTransaction.ts","../src/useSignIn.ts","../src/useSignMessage.ts","../src/useSignTransaction.ts","../src/useWalletAccountMessageSigner.ts","../src/useWalletAccountTransactionSigner.ts","../src/useWalletAccountTransactionSendingSigner.ts"],"names":["useCallback","WalletStandardError","WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED","SolanaSignAndSendTransaction","getWalletAccountFeature","getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","SolanaSignIn","getWalletFeature","getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","SolanaSignMessage","SolanaSignTransaction","useMemo","address","SolanaError","SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED","getAbortablePromise","useRef","transactions","getTransactionCodec","getTransactionEncoder"],"mappings":"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","file":"index.node.cjs","sourcesContent":["import {\n SolanaSignAndSendTransaction,\n SolanaSignAndSendTransactionFeature,\n SolanaSignAndSendTransactionInput,\n SolanaSignAndSendTransactionOutput,\n} from '@solana/wallet-standard-features';\nimport {\n WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED,\n WalletStandardError,\n} from '@wallet-standard/errors';\nimport { getWalletAccountFeature, type UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\nimport { OnlySolanaChains } from './chain';\n\ntype Input = Readonly<\n Omit<SolanaSignAndSendTransactionInput, 'account' | 'chain' | 'options'> & {\n options?: Readonly<{\n minContextSlot?: bigint;\n }>;\n }\n>;\ntype Output = SolanaSignAndSendTransactionOutput;\n\n/**\n * Returns a function you can call to sign and send a serialized transaction.\n */\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: Input) => Promise<Output>;\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output>;\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output> {\n const signAndSendTransactions = useSignAndSendTransactions(uiWalletAccount, chain);\n return useCallback(\n async input => {\n const [result] = await signAndSendTransactions(input);\n return result;\n },\n [signAndSendTransactions],\n );\n}\n\nfunction useSignAndSendTransactions<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n if (!uiWalletAccount.chains.includes(chain)) {\n throw new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n address: uiWalletAccount.address,\n chain,\n featureName: SolanaSignAndSendTransaction,\n supportedChains: [...uiWalletAccount.chains],\n supportedFeatures: [...uiWalletAccount.features],\n });\n }\n const signAndSendTransactionFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignAndSendTransaction,\n ) as SolanaSignAndSendTransactionFeature[typeof SolanaSignAndSendTransaction];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithChainAndAccount = inputs.map(({ options, ...rest }) => {\n const minContextSlot = options?.minContextSlot;\n return {\n ...rest,\n account,\n chain,\n ...(minContextSlot != null\n ? {\n options: {\n minContextSlot: Number(minContextSlot),\n },\n }\n : null),\n };\n });\n const results = await signAndSendTransactionFeature.signAndSendTransaction(...inputsWithChainAndAccount);\n return results;\n },\n [account, chain, signAndSendTransactionFeature],\n );\n}\n","import { Address } from '@solana/addresses';\nimport {\n SolanaSignIn,\n SolanaSignInFeature,\n SolanaSignInInput,\n SolanaSignInOutput,\n} from '@solana/wallet-standard-features';\nimport {\n getWalletAccountFeature,\n getWalletFeature,\n UiWallet,\n UiWalletAccount,\n UiWalletHandle,\n} from '@wallet-standard/ui';\nimport {\n getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n} from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\ntype Input = SolanaSignInInput;\ntype Output = Omit<SolanaSignInOutput, 'account' | 'signatureType'> &\n Readonly<{\n account: UiWalletAccount;\n }>;\n\n/**\n * Returns a function you can call to sign in to a domain\n */\nexport function useSignIn(uiWalletAccount: UiWalletAccount): (input?: Omit<Input, 'address'>) => Promise<Output>;\nexport function useSignIn(uiWallet: UiWallet): (input?: Input) => Promise<Output>;\nexport function useSignIn(uiWalletHandle: UiWalletHandle): (input?: Input) => Promise<Output> {\n const signIns = useSignIns(uiWalletHandle);\n return useCallback(\n async input => {\n const [result] = await signIns(input);\n return result;\n },\n [signIns],\n );\n}\n\nfunction useSignIns(\n uiWalletHandle: UiWalletHandle,\n): (...inputs: readonly (Input | undefined)[]) => Promise<readonly Output[]> {\n let signMessageFeature: SolanaSignInFeature[typeof SolanaSignIn];\n if ('address' in uiWalletHandle && typeof uiWalletHandle.address === 'string') {\n getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle as UiWalletAccount);\n signMessageFeature = getWalletAccountFeature(\n uiWalletHandle as UiWalletAccount,\n SolanaSignIn,\n ) as SolanaSignInFeature[typeof SolanaSignIn];\n } else {\n signMessageFeature = getWalletFeature(uiWalletHandle, SolanaSignIn) as SolanaSignInFeature[typeof SolanaSignIn];\n }\n const wallet = getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle);\n return useCallback(\n async (...inputs) => {\n const inputsWithAddressAndChainId = inputs.map(input => ({\n ...input,\n // Prioritize the `UiWalletAccount` address if it exists.\n ...('address' in uiWalletHandle ? { address: uiWalletHandle.address as Address } : null),\n }));\n const results = await signMessageFeature.signIn(...inputsWithAddressAndChainId);\n const resultsWithoutSignatureType = results.map(\n ({\n account,\n signatureType: _, // Solana signatures are always of type `ed25519` so drop this property.\n ...rest\n }) => ({\n ...rest,\n account: getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(\n wallet,\n account,\n ),\n }),\n );\n return resultsWithoutSignatureType;\n },\n [signMessageFeature, uiWalletHandle, wallet],\n );\n}\n","import {\n SolanaSignMessage,\n SolanaSignMessageFeature,\n SolanaSignMessageInput,\n SolanaSignMessageOutput,\n} from '@solana/wallet-standard-features';\nimport { getWalletAccountFeature, UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\ntype Input = Omit<SolanaSignMessageInput, 'account'>;\ntype Output = Omit<SolanaSignMessageOutput, 'signatureType'>;\n\n/**\n * Returns a function you can call to sign a serialized transaction.\n */\nexport function useSignMessage<TWalletAccount extends UiWalletAccount>(\n ...config: Parameters<typeof useSignMessages<TWalletAccount>>\n): (input: Input) => Promise<Output> {\n const signMessages = useSignMessages(...config);\n return useCallback(\n async input => {\n const [result] = await signMessages(input);\n return result;\n },\n [signMessages],\n );\n}\n\nfunction useSignMessages<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n const signMessageFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignMessage,\n ) as SolanaSignMessageFeature[typeof SolanaSignMessage];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithAccount = inputs.map(input => ({ ...input, account }));\n const results = await signMessageFeature.signMessage(...inputsWithAccount);\n const resultsWithoutSignatureType = results.map(\n ({\n signatureType: _, // Solana signatures are always of type `ed25519` so drop this property.\n ...rest\n }) => rest,\n );\n return resultsWithoutSignatureType;\n },\n [signMessageFeature, account],\n );\n}\n","import {\n SolanaSignAndSendTransaction,\n SolanaSignTransaction,\n SolanaSignTransactionFeature,\n SolanaSignTransactionInput,\n SolanaSignTransactionOutput,\n} from '@solana/wallet-standard-features';\nimport {\n WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED,\n WalletStandardError,\n} from '@wallet-standard/errors';\nimport { getWalletAccountFeature, UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\nimport { OnlySolanaChains } from './chain';\n\ntype Input = Readonly<\n Omit<SolanaSignTransactionInput, 'account' | 'chain' | 'options'> & {\n options?: Readonly<{\n minContextSlot?: bigint;\n }>;\n }\n>;\ntype Output = SolanaSignTransactionOutput;\n\n/**\n * Returns a function you can call to sign a serialized transaction.\n */\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: Input) => Promise<Output>;\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output>;\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output> {\n const signTransactions = useSignTransactions(uiWalletAccount, chain);\n return useCallback(\n async input => {\n const [result] = await signTransactions(input);\n return result;\n },\n [signTransactions],\n );\n}\n\nfunction useSignTransactions<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n if (!uiWalletAccount.chains.includes(chain)) {\n throw new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n address: uiWalletAccount.address,\n chain,\n featureName: SolanaSignAndSendTransaction,\n supportedChains: [...uiWalletAccount.chains],\n supportedFeatures: [...uiWalletAccount.features],\n });\n }\n const signTransactionFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignTransaction,\n ) as SolanaSignTransactionFeature[typeof SolanaSignTransaction];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithAccountAndChain = inputs.map(({ options, ...rest }) => {\n const minContextSlot = options?.minContextSlot;\n return {\n ...rest,\n account,\n chain,\n ...(minContextSlot != null\n ? {\n options: {\n minContextSlot: Number(minContextSlot),\n },\n }\n : null),\n };\n });\n const results = await signTransactionFeature.signTransaction(...inputsWithAccountAndChain);\n return results;\n },\n [signTransactionFeature, account, chain],\n );\n}\n","import { Address, address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { getAbortablePromise } from '@solana/promises';\nimport { MessageModifyingSigner, SignableMessage } from '@solana/signers';\nimport type { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo } from 'react';\n\nimport { useSignMessage } from './useSignMessage';\n\n/**\n * Returns an object that conforms to the `MessageModifyingSigner` interface of `@solana/signers`.\n */\nexport function useWalletAccountMessageSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n): MessageModifyingSigner<TWalletAccount['address']> {\n const signMessage = useSignMessage(uiWalletAccount);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async modifyAndSignMessages(messages, config) {\n config?.abortSignal?.throwIfAborted();\n if (messages.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (messages.length === 0) {\n return messages;\n }\n const { content: originalMessage, signatures: originalSignatureMap } = messages[0];\n const input = {\n message: originalMessage,\n };\n const { signedMessage, signature } = await getAbortablePromise(signMessage(input), config?.abortSignal);\n const messageWasModified =\n originalMessage.length !== signedMessage.length ||\n originalMessage.some((originalByte, ii) => originalByte !== signedMessage[ii]);\n const originalSignature = originalSignatureMap[uiWalletAccount.address as Address<string>] as\n | SignatureBytes\n | undefined;\n const signatureIsNew = !originalSignature?.every((originalByte, ii) => originalByte === signature[ii]);\n if (!signatureIsNew && !messageWasModified) {\n // We already had this exact signature, and the message wasn't modified.\n // Don't replace the existing message object.\n return messages;\n }\n const nextSignatureMap = messageWasModified\n ? { [uiWalletAccount.address]: signature }\n : { ...originalSignatureMap, [uiWalletAccount.address]: signature };\n const outputMessages = Object.freeze([\n Object.freeze({\n content: signedMessage,\n signatures: Object.freeze(nextSignatureMap),\n }) as SignableMessage,\n ]);\n return outputMessages;\n },\n }),\n [uiWalletAccount, signMessage],\n );\n}\n","import { address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { getAbortablePromise } from '@solana/promises';\nimport { TransactionModifyingSigner } from '@solana/signers';\nimport { getTransactionCodec } from '@solana/transactions';\nimport { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo, useRef } from 'react';\n\nimport { OnlySolanaChains } from './chain';\nimport { useSignTransaction } from './useSignTransaction';\n\n/**\n * Returns an object that conforms to the `TransactionModifyingSigner` interface of\n * `@solana/signers`.\n */\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionModifyingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']> {\n const encoderRef = useRef<ReturnType<typeof getTransactionCodec>>();\n const signTransaction = useSignTransaction(uiWalletAccount, chain);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async modifyAndSignTransactions(transactions, config = {}) {\n const { abortSignal, ...options } = config;\n abortSignal?.throwIfAborted();\n const transactionCodec = (encoderRef.current ||= getTransactionCodec());\n if (transactions.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (transactions.length === 0) {\n return transactions;\n }\n const [transaction] = transactions;\n const wireTransactionBytes = transactionCodec.encode(transaction);\n const inputWithOptions = {\n ...options,\n transaction: wireTransactionBytes as Uint8Array,\n };\n const { signedTransaction } = await getAbortablePromise(signTransaction(inputWithOptions), abortSignal);\n const decodedSignedTransaction = transactionCodec.decode(\n signedTransaction,\n ) as (typeof transactions)[number];\n return Object.freeze([decodedSignedTransaction]);\n },\n }),\n [uiWalletAccount.address, signTransaction],\n );\n}\n","import { address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { getAbortablePromise } from '@solana/promises';\nimport { TransactionSendingSigner } from '@solana/signers';\nimport { getTransactionEncoder } from '@solana/transactions';\nimport { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo, useRef } from 'react';\n\nimport { OnlySolanaChains } from './chain';\nimport { useSignAndSendTransaction } from './useSignAndSendTransaction';\n\n/**\n * Returns an object that conforms to the `TransactionSendingSigner` interface of `@solana/signers`.\n */\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionSendingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']> {\n const encoderRef = useRef<ReturnType<typeof getTransactionEncoder>>();\n const signAndSendTransaction = useSignAndSendTransaction(uiWalletAccount, chain);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async signAndSendTransactions(transactions, config = {}) {\n const { abortSignal, ...options } = config;\n abortSignal?.throwIfAborted();\n const transactionEncoder = (encoderRef.current ||= getTransactionEncoder());\n if (transactions.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (transactions.length === 0) {\n return [];\n }\n const [transaction] = transactions;\n const wireTransactionBytes = transactionEncoder.encode(transaction);\n const inputWithOptions = {\n ...options,\n transaction: wireTransactionBytes as Uint8Array,\n };\n const { signature } = await getAbortablePromise(signAndSendTransaction(inputWithOptions), abortSignal);\n return Object.freeze([signature as SignatureBytes]);\n },\n }),\n [signAndSendTransaction, uiWalletAccount.address],\n );\n}\n"]}
@@ -5,6 +5,7 @@ import { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, get
5
5
  import { useCallback, useMemo, useRef } from 'react';
6
6
  import { address } from '@solana/addresses';
7
7
  import { SolanaError, SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED } from '@solana/errors';
8
+ import { getAbortablePromise } from '@solana/promises';
8
9
  import { getTransactionCodec, getTransactionEncoder } from '@solana/transactions';
9
10
 
10
11
  // src/useSignAndSendTransaction.ts
@@ -181,31 +182,6 @@ function useSignTransactions(uiWalletAccount, chain) {
181
182
  [signTransactionFeature, account, chain]
182
183
  );
183
184
  }
184
-
185
- // src/abortable-promise.ts
186
- function getAbortablePromise(promise, abortSignal) {
187
- if (!abortSignal) {
188
- return promise;
189
- } else {
190
- return Promise.race([
191
- // This promise only ever rejects if the signal is aborted. Otherwise it idles forever.
192
- // It's important that this come before the input promise; in the event of an abort, we
193
- // want to throw even if the input promise's result is ready
194
- new Promise((_, reject) => {
195
- if (abortSignal.aborted) {
196
- reject(abortSignal.reason);
197
- } else {
198
- abortSignal.addEventListener("abort", function() {
199
- reject(this.reason);
200
- });
201
- }
202
- }),
203
- promise
204
- ]);
205
- }
206
- }
207
-
208
- // src/useWalletAccountMessageSigner.ts
209
185
  function useWalletAccountMessageSigner(uiWalletAccount) {
210
186
  const signMessage = useSignMessage(uiWalletAccount);
211
187
  return useMemo(
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/useSignAndSendTransaction.ts","../src/useSignIn.ts","../src/useSignMessage.ts","../src/useSignTransaction.ts","../src/abortable-promise.ts","../src/useWalletAccountMessageSigner.ts","../src/useWalletAccountTransactionSigner.ts","../src/useWalletAccountTransactionSendingSigner.ts"],"names":["useCallback","getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","getWalletAccountFeature","WalletStandardError","WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED","SolanaSignAndSendTransaction","useMemo","address","SolanaError","SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED","useRef"],"mappings":"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","file":"index.node.mjs","sourcesContent":["import {\n SolanaSignAndSendTransaction,\n SolanaSignAndSendTransactionFeature,\n SolanaSignAndSendTransactionInput,\n SolanaSignAndSendTransactionOutput,\n} from '@solana/wallet-standard-features';\nimport {\n WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED,\n WalletStandardError,\n} from '@wallet-standard/errors';\nimport { getWalletAccountFeature, type UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\nimport { OnlySolanaChains } from './chain';\n\ntype Input = Readonly<\n Omit<SolanaSignAndSendTransactionInput, 'account' | 'chain' | 'options'> & {\n options?: Readonly<{\n minContextSlot?: bigint;\n }>;\n }\n>;\ntype Output = SolanaSignAndSendTransactionOutput;\n\n/**\n * Returns a function you can call to sign and send a serialized transaction.\n */\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: Input) => Promise<Output>;\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output>;\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output> {\n const signAndSendTransactions = useSignAndSendTransactions(uiWalletAccount, chain);\n return useCallback(\n async input => {\n const [result] = await signAndSendTransactions(input);\n return result;\n },\n [signAndSendTransactions],\n );\n}\n\nfunction useSignAndSendTransactions<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n if (!uiWalletAccount.chains.includes(chain)) {\n throw new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n address: uiWalletAccount.address,\n chain,\n featureName: SolanaSignAndSendTransaction,\n supportedChains: [...uiWalletAccount.chains],\n supportedFeatures: [...uiWalletAccount.features],\n });\n }\n const signAndSendTransactionFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignAndSendTransaction,\n ) as SolanaSignAndSendTransactionFeature[typeof SolanaSignAndSendTransaction];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithChainAndAccount = inputs.map(({ options, ...rest }) => {\n const minContextSlot = options?.minContextSlot;\n return {\n ...rest,\n account,\n chain,\n ...(minContextSlot != null\n ? {\n options: {\n minContextSlot: Number(minContextSlot),\n },\n }\n : null),\n };\n });\n const results = await signAndSendTransactionFeature.signAndSendTransaction(...inputsWithChainAndAccount);\n return results;\n },\n [account, chain, signAndSendTransactionFeature],\n );\n}\n","import { Address } from '@solana/addresses';\nimport {\n SolanaSignIn,\n SolanaSignInFeature,\n SolanaSignInInput,\n SolanaSignInOutput,\n} from '@solana/wallet-standard-features';\nimport {\n getWalletAccountFeature,\n getWalletFeature,\n UiWallet,\n UiWalletAccount,\n UiWalletHandle,\n} from '@wallet-standard/ui';\nimport {\n getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n} from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\ntype Input = SolanaSignInInput;\ntype Output = Omit<SolanaSignInOutput, 'account' | 'signatureType'> &\n Readonly<{\n account: UiWalletAccount;\n }>;\n\n/**\n * Returns a function you can call to sign in to a domain\n */\nexport function useSignIn(uiWalletAccount: UiWalletAccount): (input?: Omit<Input, 'address'>) => Promise<Output>;\nexport function useSignIn(uiWallet: UiWallet): (input?: Input) => Promise<Output>;\nexport function useSignIn(uiWalletHandle: UiWalletHandle): (input?: Input) => Promise<Output> {\n const signIns = useSignIns(uiWalletHandle);\n return useCallback(\n async input => {\n const [result] = await signIns(input);\n return result;\n },\n [signIns],\n );\n}\n\nfunction useSignIns(\n uiWalletHandle: UiWalletHandle,\n): (...inputs: readonly (Input | undefined)[]) => Promise<readonly Output[]> {\n let signMessageFeature: SolanaSignInFeature[typeof SolanaSignIn];\n if ('address' in uiWalletHandle && typeof uiWalletHandle.address === 'string') {\n getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle as UiWalletAccount);\n signMessageFeature = getWalletAccountFeature(\n uiWalletHandle as UiWalletAccount,\n SolanaSignIn,\n ) as SolanaSignInFeature[typeof SolanaSignIn];\n } else {\n signMessageFeature = getWalletFeature(uiWalletHandle, SolanaSignIn) as SolanaSignInFeature[typeof SolanaSignIn];\n }\n const wallet = getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle);\n return useCallback(\n async (...inputs) => {\n const inputsWithAddressAndChainId = inputs.map(input => ({\n ...input,\n // Prioritize the `UiWalletAccount` address if it exists.\n ...('address' in uiWalletHandle ? { address: uiWalletHandle.address as Address } : null),\n }));\n const results = await signMessageFeature.signIn(...inputsWithAddressAndChainId);\n const resultsWithoutSignatureType = results.map(\n ({\n account,\n signatureType: _, // Solana signatures are always of type `ed25519` so drop this property.\n ...rest\n }) => ({\n ...rest,\n account: getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(\n wallet,\n account,\n ),\n }),\n );\n return resultsWithoutSignatureType;\n },\n [signMessageFeature, uiWalletHandle, wallet],\n );\n}\n","import {\n SolanaSignMessage,\n SolanaSignMessageFeature,\n SolanaSignMessageInput,\n SolanaSignMessageOutput,\n} from '@solana/wallet-standard-features';\nimport { getWalletAccountFeature, UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\ntype Input = Omit<SolanaSignMessageInput, 'account'>;\ntype Output = Omit<SolanaSignMessageOutput, 'signatureType'>;\n\n/**\n * Returns a function you can call to sign a serialized transaction.\n */\nexport function useSignMessage<TWalletAccount extends UiWalletAccount>(\n ...config: Parameters<typeof useSignMessages<TWalletAccount>>\n): (input: Input) => Promise<Output> {\n const signMessages = useSignMessages(...config);\n return useCallback(\n async input => {\n const [result] = await signMessages(input);\n return result;\n },\n [signMessages],\n );\n}\n\nfunction useSignMessages<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n const signMessageFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignMessage,\n ) as SolanaSignMessageFeature[typeof SolanaSignMessage];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithAccount = inputs.map(input => ({ ...input, account }));\n const results = await signMessageFeature.signMessage(...inputsWithAccount);\n const resultsWithoutSignatureType = results.map(\n ({\n signatureType: _, // Solana signatures are always of type `ed25519` so drop this property.\n ...rest\n }) => rest,\n );\n return resultsWithoutSignatureType;\n },\n [signMessageFeature, account],\n );\n}\n","import {\n SolanaSignAndSendTransaction,\n SolanaSignTransaction,\n SolanaSignTransactionFeature,\n SolanaSignTransactionInput,\n SolanaSignTransactionOutput,\n} from '@solana/wallet-standard-features';\nimport {\n WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED,\n WalletStandardError,\n} from '@wallet-standard/errors';\nimport { getWalletAccountFeature, UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\nimport { OnlySolanaChains } from './chain';\n\ntype Input = Readonly<\n Omit<SolanaSignTransactionInput, 'account' | 'chain' | 'options'> & {\n options?: Readonly<{\n minContextSlot?: bigint;\n }>;\n }\n>;\ntype Output = SolanaSignTransactionOutput;\n\n/**\n * Returns a function you can call to sign a serialized transaction.\n */\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: Input) => Promise<Output>;\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output>;\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output> {\n const signTransactions = useSignTransactions(uiWalletAccount, chain);\n return useCallback(\n async input => {\n const [result] = await signTransactions(input);\n return result;\n },\n [signTransactions],\n );\n}\n\nfunction useSignTransactions<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n if (!uiWalletAccount.chains.includes(chain)) {\n throw new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n address: uiWalletAccount.address,\n chain,\n featureName: SolanaSignAndSendTransaction,\n supportedChains: [...uiWalletAccount.chains],\n supportedFeatures: [...uiWalletAccount.features],\n });\n }\n const signTransactionFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignTransaction,\n ) as SolanaSignTransactionFeature[typeof SolanaSignTransaction];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithAccountAndChain = inputs.map(({ options, ...rest }) => {\n const minContextSlot = options?.minContextSlot;\n return {\n ...rest,\n account,\n chain,\n ...(minContextSlot != null\n ? {\n options: {\n minContextSlot: Number(minContextSlot),\n },\n }\n : null),\n };\n });\n const results = await signTransactionFeature.signTransaction(...inputsWithAccountAndChain);\n return results;\n },\n [signTransactionFeature, account, chain],\n );\n}\n","export function getAbortablePromise<T>(promise: Promise<T>, abortSignal?: AbortSignal): Promise<T> {\n if (!abortSignal) {\n return promise;\n } else {\n return Promise.race([\n // This promise only ever rejects if the signal is aborted. Otherwise it idles forever.\n // It's important that this come before the input promise; in the event of an abort, we\n // want to throw even if the input promise's result is ready\n new Promise<never>((_, reject) => {\n if (abortSignal.aborted) {\n reject(abortSignal.reason);\n } else {\n abortSignal.addEventListener('abort', function () {\n reject(this.reason);\n });\n }\n }),\n promise,\n ]);\n }\n}\n","import { Address, address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { MessageModifyingSigner, SignableMessage } from '@solana/signers';\nimport type { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo } from 'react';\n\nimport { getAbortablePromise } from './abortable-promise';\nimport { useSignMessage } from './useSignMessage';\n\n/**\n * Returns an object that conforms to the `MessageModifyingSigner` interface of `@solana/signers`.\n */\nexport function useWalletAccountMessageSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n): MessageModifyingSigner<TWalletAccount['address']> {\n const signMessage = useSignMessage(uiWalletAccount);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async modifyAndSignMessages(messages, config) {\n config?.abortSignal?.throwIfAborted();\n if (messages.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (messages.length === 0) {\n return messages;\n }\n const { content: originalMessage, signatures: originalSignatureMap } = messages[0];\n const input = {\n message: originalMessage,\n };\n const { signedMessage, signature } = await getAbortablePromise(signMessage(input), config?.abortSignal);\n const messageWasModified =\n originalMessage.length !== signedMessage.length ||\n originalMessage.some((originalByte, ii) => originalByte !== signedMessage[ii]);\n const originalSignature = originalSignatureMap[uiWalletAccount.address as Address<string>] as\n | SignatureBytes\n | undefined;\n const signatureIsNew = !originalSignature?.every((originalByte, ii) => originalByte === signature[ii]);\n if (!signatureIsNew && !messageWasModified) {\n // We already had this exact signature, and the message wasn't modified.\n // Don't replace the existing message object.\n return messages;\n }\n const nextSignatureMap = messageWasModified\n ? { [uiWalletAccount.address]: signature }\n : { ...originalSignatureMap, [uiWalletAccount.address]: signature };\n const outputMessages = Object.freeze([\n Object.freeze({\n content: signedMessage,\n signatures: Object.freeze(nextSignatureMap),\n }) as SignableMessage,\n ]);\n return outputMessages;\n },\n }),\n [uiWalletAccount, signMessage],\n );\n}\n","import { address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { TransactionModifyingSigner } from '@solana/signers';\nimport { getTransactionCodec } from '@solana/transactions';\nimport { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo, useRef } from 'react';\n\nimport { getAbortablePromise } from './abortable-promise';\nimport { OnlySolanaChains } from './chain';\nimport { useSignTransaction } from './useSignTransaction';\n\n/**\n * Returns an object that conforms to the `TransactionModifyingSigner` interface of\n * `@solana/signers`.\n */\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionModifyingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']> {\n const encoderRef = useRef<ReturnType<typeof getTransactionCodec>>();\n const signTransaction = useSignTransaction(uiWalletAccount, chain);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async modifyAndSignTransactions(transactions, config = {}) {\n const { abortSignal, ...options } = config;\n abortSignal?.throwIfAborted();\n const transactionCodec = (encoderRef.current ||= getTransactionCodec());\n if (transactions.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (transactions.length === 0) {\n return transactions;\n }\n const [transaction] = transactions;\n const wireTransactionBytes = transactionCodec.encode(transaction);\n const inputWithOptions = {\n ...options,\n transaction: wireTransactionBytes as Uint8Array,\n };\n const { signedTransaction } = await getAbortablePromise(signTransaction(inputWithOptions), abortSignal);\n const decodedSignedTransaction = transactionCodec.decode(\n signedTransaction,\n ) as (typeof transactions)[number];\n return Object.freeze([decodedSignedTransaction]);\n },\n }),\n [uiWalletAccount.address, signTransaction],\n );\n}\n","import { address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { TransactionSendingSigner } from '@solana/signers';\nimport { getTransactionEncoder } from '@solana/transactions';\nimport { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo, useRef } from 'react';\n\nimport { getAbortablePromise } from './abortable-promise';\nimport { OnlySolanaChains } from './chain';\nimport { useSignAndSendTransaction } from './useSignAndSendTransaction';\n\n/**\n * Returns an object that conforms to the `TransactionSendingSigner` interface of `@solana/signers`.\n */\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionSendingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']> {\n const encoderRef = useRef<ReturnType<typeof getTransactionEncoder>>();\n const signAndSendTransaction = useSignAndSendTransaction(uiWalletAccount, chain);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async signAndSendTransactions(transactions, config = {}) {\n const { abortSignal, ...options } = config;\n abortSignal?.throwIfAborted();\n const transactionEncoder = (encoderRef.current ||= getTransactionEncoder());\n if (transactions.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (transactions.length === 0) {\n return [];\n }\n const [transaction] = transactions;\n const wireTransactionBytes = transactionEncoder.encode(transaction);\n const inputWithOptions = {\n ...options,\n transaction: wireTransactionBytes as Uint8Array,\n };\n const { signature } = await getAbortablePromise(signAndSendTransaction(inputWithOptions), abortSignal);\n return Object.freeze([signature as SignatureBytes]);\n },\n }),\n [signAndSendTransaction, uiWalletAccount.address],\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/useSignAndSendTransaction.ts","../src/useSignIn.ts","../src/useSignMessage.ts","../src/useSignTransaction.ts","../src/useWalletAccountMessageSigner.ts","../src/useWalletAccountTransactionSigner.ts","../src/useWalletAccountTransactionSendingSigner.ts"],"names":["useCallback","getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","getWalletAccountFeature","WalletStandardError","WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED","SolanaSignAndSendTransaction","useMemo","address","SolanaError","SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED","getAbortablePromise","useRef"],"mappings":"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","file":"index.node.mjs","sourcesContent":["import {\n SolanaSignAndSendTransaction,\n SolanaSignAndSendTransactionFeature,\n SolanaSignAndSendTransactionInput,\n SolanaSignAndSendTransactionOutput,\n} from '@solana/wallet-standard-features';\nimport {\n WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED,\n WalletStandardError,\n} from '@wallet-standard/errors';\nimport { getWalletAccountFeature, type UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\nimport { OnlySolanaChains } from './chain';\n\ntype Input = Readonly<\n Omit<SolanaSignAndSendTransactionInput, 'account' | 'chain' | 'options'> & {\n options?: Readonly<{\n minContextSlot?: bigint;\n }>;\n }\n>;\ntype Output = SolanaSignAndSendTransactionOutput;\n\n/**\n * Returns a function you can call to sign and send a serialized transaction.\n */\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: Input) => Promise<Output>;\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output>;\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output> {\n const signAndSendTransactions = useSignAndSendTransactions(uiWalletAccount, chain);\n return useCallback(\n async input => {\n const [result] = await signAndSendTransactions(input);\n return result;\n },\n [signAndSendTransactions],\n );\n}\n\nfunction useSignAndSendTransactions<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n if (!uiWalletAccount.chains.includes(chain)) {\n throw new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n address: uiWalletAccount.address,\n chain,\n featureName: SolanaSignAndSendTransaction,\n supportedChains: [...uiWalletAccount.chains],\n supportedFeatures: [...uiWalletAccount.features],\n });\n }\n const signAndSendTransactionFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignAndSendTransaction,\n ) as SolanaSignAndSendTransactionFeature[typeof SolanaSignAndSendTransaction];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithChainAndAccount = inputs.map(({ options, ...rest }) => {\n const minContextSlot = options?.minContextSlot;\n return {\n ...rest,\n account,\n chain,\n ...(minContextSlot != null\n ? {\n options: {\n minContextSlot: Number(minContextSlot),\n },\n }\n : null),\n };\n });\n const results = await signAndSendTransactionFeature.signAndSendTransaction(...inputsWithChainAndAccount);\n return results;\n },\n [account, chain, signAndSendTransactionFeature],\n );\n}\n","import { Address } from '@solana/addresses';\nimport {\n SolanaSignIn,\n SolanaSignInFeature,\n SolanaSignInInput,\n SolanaSignInOutput,\n} from '@solana/wallet-standard-features';\nimport {\n getWalletAccountFeature,\n getWalletFeature,\n UiWallet,\n UiWalletAccount,\n UiWalletHandle,\n} from '@wallet-standard/ui';\nimport {\n getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n} from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\ntype Input = SolanaSignInInput;\ntype Output = Omit<SolanaSignInOutput, 'account' | 'signatureType'> &\n Readonly<{\n account: UiWalletAccount;\n }>;\n\n/**\n * Returns a function you can call to sign in to a domain\n */\nexport function useSignIn(uiWalletAccount: UiWalletAccount): (input?: Omit<Input, 'address'>) => Promise<Output>;\nexport function useSignIn(uiWallet: UiWallet): (input?: Input) => Promise<Output>;\nexport function useSignIn(uiWalletHandle: UiWalletHandle): (input?: Input) => Promise<Output> {\n const signIns = useSignIns(uiWalletHandle);\n return useCallback(\n async input => {\n const [result] = await signIns(input);\n return result;\n },\n [signIns],\n );\n}\n\nfunction useSignIns(\n uiWalletHandle: UiWalletHandle,\n): (...inputs: readonly (Input | undefined)[]) => Promise<readonly Output[]> {\n let signMessageFeature: SolanaSignInFeature[typeof SolanaSignIn];\n if ('address' in uiWalletHandle && typeof uiWalletHandle.address === 'string') {\n getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle as UiWalletAccount);\n signMessageFeature = getWalletAccountFeature(\n uiWalletHandle as UiWalletAccount,\n SolanaSignIn,\n ) as SolanaSignInFeature[typeof SolanaSignIn];\n } else {\n signMessageFeature = getWalletFeature(uiWalletHandle, SolanaSignIn) as SolanaSignInFeature[typeof SolanaSignIn];\n }\n const wallet = getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle);\n return useCallback(\n async (...inputs) => {\n const inputsWithAddressAndChainId = inputs.map(input => ({\n ...input,\n // Prioritize the `UiWalletAccount` address if it exists.\n ...('address' in uiWalletHandle ? { address: uiWalletHandle.address as Address } : null),\n }));\n const results = await signMessageFeature.signIn(...inputsWithAddressAndChainId);\n const resultsWithoutSignatureType = results.map(\n ({\n account,\n signatureType: _, // Solana signatures are always of type `ed25519` so drop this property.\n ...rest\n }) => ({\n ...rest,\n account: getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(\n wallet,\n account,\n ),\n }),\n );\n return resultsWithoutSignatureType;\n },\n [signMessageFeature, uiWalletHandle, wallet],\n );\n}\n","import {\n SolanaSignMessage,\n SolanaSignMessageFeature,\n SolanaSignMessageInput,\n SolanaSignMessageOutput,\n} from '@solana/wallet-standard-features';\nimport { getWalletAccountFeature, UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\ntype Input = Omit<SolanaSignMessageInput, 'account'>;\ntype Output = Omit<SolanaSignMessageOutput, 'signatureType'>;\n\n/**\n * Returns a function you can call to sign a serialized transaction.\n */\nexport function useSignMessage<TWalletAccount extends UiWalletAccount>(\n ...config: Parameters<typeof useSignMessages<TWalletAccount>>\n): (input: Input) => Promise<Output> {\n const signMessages = useSignMessages(...config);\n return useCallback(\n async input => {\n const [result] = await signMessages(input);\n return result;\n },\n [signMessages],\n );\n}\n\nfunction useSignMessages<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n const signMessageFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignMessage,\n ) as SolanaSignMessageFeature[typeof SolanaSignMessage];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithAccount = inputs.map(input => ({ ...input, account }));\n const results = await signMessageFeature.signMessage(...inputsWithAccount);\n const resultsWithoutSignatureType = results.map(\n ({\n signatureType: _, // Solana signatures are always of type `ed25519` so drop this property.\n ...rest\n }) => rest,\n );\n return resultsWithoutSignatureType;\n },\n [signMessageFeature, account],\n );\n}\n","import {\n SolanaSignAndSendTransaction,\n SolanaSignTransaction,\n SolanaSignTransactionFeature,\n SolanaSignTransactionInput,\n SolanaSignTransactionOutput,\n} from '@solana/wallet-standard-features';\nimport {\n WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED,\n WalletStandardError,\n} from '@wallet-standard/errors';\nimport { getWalletAccountFeature, UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\nimport { OnlySolanaChains } from './chain';\n\ntype Input = Readonly<\n Omit<SolanaSignTransactionInput, 'account' | 'chain' | 'options'> & {\n options?: Readonly<{\n minContextSlot?: bigint;\n }>;\n }\n>;\ntype Output = SolanaSignTransactionOutput;\n\n/**\n * Returns a function you can call to sign a serialized transaction.\n */\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: Input) => Promise<Output>;\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output>;\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output> {\n const signTransactions = useSignTransactions(uiWalletAccount, chain);\n return useCallback(\n async input => {\n const [result] = await signTransactions(input);\n return result;\n },\n [signTransactions],\n );\n}\n\nfunction useSignTransactions<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n if (!uiWalletAccount.chains.includes(chain)) {\n throw new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n address: uiWalletAccount.address,\n chain,\n featureName: SolanaSignAndSendTransaction,\n supportedChains: [...uiWalletAccount.chains],\n supportedFeatures: [...uiWalletAccount.features],\n });\n }\n const signTransactionFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignTransaction,\n ) as SolanaSignTransactionFeature[typeof SolanaSignTransaction];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithAccountAndChain = inputs.map(({ options, ...rest }) => {\n const minContextSlot = options?.minContextSlot;\n return {\n ...rest,\n account,\n chain,\n ...(minContextSlot != null\n ? {\n options: {\n minContextSlot: Number(minContextSlot),\n },\n }\n : null),\n };\n });\n const results = await signTransactionFeature.signTransaction(...inputsWithAccountAndChain);\n return results;\n },\n [signTransactionFeature, account, chain],\n );\n}\n","import { Address, address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { getAbortablePromise } from '@solana/promises';\nimport { MessageModifyingSigner, SignableMessage } from '@solana/signers';\nimport type { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo } from 'react';\n\nimport { useSignMessage } from './useSignMessage';\n\n/**\n * Returns an object that conforms to the `MessageModifyingSigner` interface of `@solana/signers`.\n */\nexport function useWalletAccountMessageSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n): MessageModifyingSigner<TWalletAccount['address']> {\n const signMessage = useSignMessage(uiWalletAccount);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async modifyAndSignMessages(messages, config) {\n config?.abortSignal?.throwIfAborted();\n if (messages.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (messages.length === 0) {\n return messages;\n }\n const { content: originalMessage, signatures: originalSignatureMap } = messages[0];\n const input = {\n message: originalMessage,\n };\n const { signedMessage, signature } = await getAbortablePromise(signMessage(input), config?.abortSignal);\n const messageWasModified =\n originalMessage.length !== signedMessage.length ||\n originalMessage.some((originalByte, ii) => originalByte !== signedMessage[ii]);\n const originalSignature = originalSignatureMap[uiWalletAccount.address as Address<string>] as\n | SignatureBytes\n | undefined;\n const signatureIsNew = !originalSignature?.every((originalByte, ii) => originalByte === signature[ii]);\n if (!signatureIsNew && !messageWasModified) {\n // We already had this exact signature, and the message wasn't modified.\n // Don't replace the existing message object.\n return messages;\n }\n const nextSignatureMap = messageWasModified\n ? { [uiWalletAccount.address]: signature }\n : { ...originalSignatureMap, [uiWalletAccount.address]: signature };\n const outputMessages = Object.freeze([\n Object.freeze({\n content: signedMessage,\n signatures: Object.freeze(nextSignatureMap),\n }) as SignableMessage,\n ]);\n return outputMessages;\n },\n }),\n [uiWalletAccount, signMessage],\n );\n}\n","import { address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { getAbortablePromise } from '@solana/promises';\nimport { TransactionModifyingSigner } from '@solana/signers';\nimport { getTransactionCodec } from '@solana/transactions';\nimport { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo, useRef } from 'react';\n\nimport { OnlySolanaChains } from './chain';\nimport { useSignTransaction } from './useSignTransaction';\n\n/**\n * Returns an object that conforms to the `TransactionModifyingSigner` interface of\n * `@solana/signers`.\n */\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionModifyingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']> {\n const encoderRef = useRef<ReturnType<typeof getTransactionCodec>>();\n const signTransaction = useSignTransaction(uiWalletAccount, chain);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async modifyAndSignTransactions(transactions, config = {}) {\n const { abortSignal, ...options } = config;\n abortSignal?.throwIfAborted();\n const transactionCodec = (encoderRef.current ||= getTransactionCodec());\n if (transactions.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (transactions.length === 0) {\n return transactions;\n }\n const [transaction] = transactions;\n const wireTransactionBytes = transactionCodec.encode(transaction);\n const inputWithOptions = {\n ...options,\n transaction: wireTransactionBytes as Uint8Array,\n };\n const { signedTransaction } = await getAbortablePromise(signTransaction(inputWithOptions), abortSignal);\n const decodedSignedTransaction = transactionCodec.decode(\n signedTransaction,\n ) as (typeof transactions)[number];\n return Object.freeze([decodedSignedTransaction]);\n },\n }),\n [uiWalletAccount.address, signTransaction],\n );\n}\n","import { address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { getAbortablePromise } from '@solana/promises';\nimport { TransactionSendingSigner } from '@solana/signers';\nimport { getTransactionEncoder } from '@solana/transactions';\nimport { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo, useRef } from 'react';\n\nimport { OnlySolanaChains } from './chain';\nimport { useSignAndSendTransaction } from './useSignAndSendTransaction';\n\n/**\n * Returns an object that conforms to the `TransactionSendingSigner` interface of `@solana/signers`.\n */\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionSendingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']> {\n const encoderRef = useRef<ReturnType<typeof getTransactionEncoder>>();\n const signAndSendTransaction = useSignAndSendTransaction(uiWalletAccount, chain);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async signAndSendTransactions(transactions, config = {}) {\n const { abortSignal, ...options } = config;\n abortSignal?.throwIfAborted();\n const transactionEncoder = (encoderRef.current ||= getTransactionEncoder());\n if (transactions.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (transactions.length === 0) {\n return [];\n }\n const [transaction] = transactions;\n const wireTransactionBytes = transactionEncoder.encode(transaction);\n const inputWithOptions = {\n ...options,\n transaction: wireTransactionBytes as Uint8Array,\n };\n const { signature } = await getAbortablePromise(signAndSendTransaction(inputWithOptions), abortSignal);\n return Object.freeze([signature as SignatureBytes]);\n },\n }),\n [signAndSendTransaction, uiWalletAccount.address],\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"useWalletAccountMessageSigner.d.ts","sourceRoot":"","sources":["../../src/useWalletAccountMessageSigner.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAmB,MAAM,iBAAiB,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAM3D;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,cAAc,SAAS,eAAe,EAChF,eAAe,EAAE,cAAc,GAChC,sBAAsB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CA4CnD"}
1
+ {"version":3,"file":"useWalletAccountMessageSigner.d.ts","sourceRoot":"","sources":["../../src/useWalletAccountMessageSigner.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,sBAAsB,EAAmB,MAAM,iBAAiB,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAK3D;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,cAAc,SAAS,eAAe,EAChF,eAAe,EAAE,cAAc,GAChC,sBAAsB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CA4CnD"}
@@ -1 +1 @@
1
- {"version":3,"file":"useWalletAccountTransactionSendingSigner.d.ts","sourceRoot":"","sources":["../../src/useWalletAccountTransactionSendingSigner.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAItD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG3C;;GAEG;AACH,wBAAgB,wCAAwC,CAAC,cAAc,SAAS,eAAe,EAC3F,eAAe,EAAE,cAAc,EAC/B,KAAK,EAAE,gBAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,GAClD,wBAAwB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;AACvD,wBAAgB,wCAAwC,CAAC,cAAc,SAAS,eAAe,EAC3F,eAAe,EAAE,cAAc,EAC/B,KAAK,EAAE,UAAU,MAAM,EAAE,GAC1B,wBAAwB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"useWalletAccountTransactionSendingSigner.d.ts","sourceRoot":"","sources":["../../src/useWalletAccountTransactionSendingSigner.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG3C;;GAEG;AACH,wBAAgB,wCAAwC,CAAC,cAAc,SAAS,eAAe,EAC3F,eAAe,EAAE,cAAc,EAC/B,KAAK,EAAE,gBAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,GAClD,wBAAwB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;AACvD,wBAAgB,wCAAwC,CAAC,cAAc,SAAS,eAAe,EAC3F,eAAe,EAAE,cAAc,EAC/B,KAAK,EAAE,UAAU,MAAM,EAAE,GAC1B,wBAAwB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useWalletAccountTransactionSigner.d.ts","sourceRoot":"","sources":["../../src/useWalletAccountTransactionSigner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAItD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG3C;;;GAGG;AACH,wBAAgB,iCAAiC,CAAC,cAAc,SAAS,eAAe,EACpF,eAAe,EAAE,cAAc,EAC/B,KAAK,EAAE,gBAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,GAClD,0BAA0B,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;AACzD,wBAAgB,iCAAiC,CAAC,cAAc,SAAS,eAAe,EACpF,eAAe,EAAE,cAAc,EAC/B,KAAK,EAAE,UAAU,MAAM,EAAE,GAC1B,0BAA0B,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"useWalletAccountTransactionSigner.d.ts","sourceRoot":"","sources":["../../src/useWalletAccountTransactionSigner.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG3C;;;GAGG;AACH,wBAAgB,iCAAiC,CAAC,cAAc,SAAS,eAAe,EACpF,eAAe,EAAE,cAAc,EAC/B,KAAK,EAAE,gBAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,GAClD,0BAA0B,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;AACzD,wBAAgB,iCAAiC,CAAC,cAAc,SAAS,eAAe,EACpF,eAAe,EAAE,cAAc,EAC/B,KAAK,EAAE,UAAU,MAAM,EAAE,GAC1B,0BAA0B,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solana/react",
3
- "version": "2.0.0-rc.0",
3
+ "version": "2.0.0-rc.1",
4
4
  "description": "React hooks for building Solana apps",
5
5
  "exports": {
6
6
  "browser": {
@@ -50,15 +50,16 @@
50
50
  },
51
51
  "dependencies": {
52
52
  "@solana/wallet-standard-features": "^1.2.0",
53
- "@wallet-standard/base": "pre",
54
- "@wallet-standard/errors": "pre",
55
- "@wallet-standard/ui": "pre",
56
- "@wallet-standard/ui-registry": "pre",
57
- "@solana/addresses": "2.0.0-rc.0",
58
- "@solana/signers": "2.0.0-rc.0",
59
- "@solana/transactions": "2.0.0-rc.0",
60
- "@solana/errors": "2.0.0-rc.0",
61
- "@solana/keys": "2.0.0-rc.0"
53
+ "@wallet-standard/base": "1.0.1",
54
+ "@wallet-standard/errors": "0.0.0",
55
+ "@wallet-standard/ui": "0.0.0",
56
+ "@wallet-standard/ui-registry": "0.0.0",
57
+ "@solana/errors": "2.0.0-rc.1",
58
+ "@solana/keys": "2.0.0-rc.1",
59
+ "@solana/promises": "2.0.0-rc.1",
60
+ "@solana/signers": "2.0.0-rc.1",
61
+ "@solana/transactions": "2.0.0-rc.1",
62
+ "@solana/addresses": "2.0.0-rc.1"
62
63
  },
63
64
  "peerDependencies": {
64
65
  "react": ">=18"
@@ -1,2 +0,0 @@
1
- export declare function getAbortablePromise<T>(promise: Promise<T>, abortSignal?: AbortSignal): Promise<T>;
2
- //# sourceMappingURL=abortable-promise.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"abortable-promise.d.ts","sourceRoot":"","sources":["../../src/abortable-promise.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAoBjG"}