@liberfi.io/wallet-connector-privy 0.1.0 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
package/dist/index.d.mts
CHANGED
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -11,9 +11,9 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
11
11
|
// src/version.ts
|
|
12
12
|
if (typeof window !== "undefined") {
|
|
13
13
|
window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};
|
|
14
|
-
window.__LIBERFI_VERSION__["@liberfi.io/wallet-connector-privy"] = "0.1.
|
|
14
|
+
window.__LIBERFI_VERSION__["@liberfi.io/wallet-connector-privy"] = "0.1.4";
|
|
15
15
|
}
|
|
16
|
-
var version_default = "0.1.
|
|
16
|
+
var version_default = "0.1.4";
|
|
17
17
|
var PrivyEvmWalletAdapter = class {
|
|
18
18
|
constructor(account, wallet, privySignMessage, privySignTransaction, privySendTransaction) {
|
|
19
19
|
this.account = account;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/version.ts","../src/PrivyEvmWalletAdapter.ts","../src/PrivySolanaWalletAdapter.ts","../src/WalletConnectorAdapter.tsx","../src/PrivyWalletConnectorProvider.tsx"],"names":["ChainNamespace","ethers","Chain","usePrivy","useWallets","useSolanaWallets","useSignMessage","useSignTransaction","useSendTransaction","useSolanaSignMessage","useSolanaSignTransaction","useSolanaSignAndSendTransaction","useState","useMemo","useCallback","jsx","WalletConnectorProvider","PrivyProvider","toSolanaWalletConnectors"],"mappings":"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","file":"index.js","sourcesContent":["declare global {\n interface Window {\n __LIBERFI_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif (typeof window !== \"undefined\") {\n window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};\n window.__LIBERFI_VERSION__[\"@liberfi.io/wallet-connector-privy\"] = \"0.1.0\";\n}\n\nexport default \"0.1.0\";\n","import {\n ConnectedWallet,\n useSendTransaction,\n useSignMessage,\n useSignTransaction,\n WalletWithMetadata,\n} from \"@privy-io/react-auth\";\nimport { ethers } from \"ethers\";\nimport { Eip1193Provider, EvmWalletAdapter } from \"@liberfi.io/core\";\nimport { ChainNamespace, Chain } from \"@liberfi.io/types\";\n\nexport class PrivyEvmWalletAdapter implements EvmWalletAdapter {\n constructor(\n private readonly account: WalletWithMetadata,\n private readonly wallet: ConnectedWallet | undefined,\n private readonly privySignMessage: ReturnType<\n typeof useSignMessage\n >[\"signMessage\"],\n private readonly privySignTransaction: ReturnType<\n typeof useSignTransaction\n >[\"signTransaction\"],\n private readonly privySendTransaction: ReturnType<\n typeof useSendTransaction\n >[\"sendTransaction\"],\n ) {}\n\n get chainNamespace(): ChainNamespace {\n return ChainNamespace.EVM;\n }\n\n get chain(): Chain | undefined {\n const privyChainId = this.wallet?.chainId;\n if (!privyChainId) return undefined;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_, chainId] = privyChainId.split(\":\");\n return chainId as Chain;\n }\n\n get address(): string {\n return this.account.address;\n }\n\n get isConnected(): boolean {\n return !!this.wallet;\n }\n\n get isCustodial(): boolean {\n return this.account.delegated;\n }\n\n get connector(): string {\n return this.account.walletClientType ?? \"privy\";\n }\n\n async signMessage(message: string): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signature } = await this.privySignMessage(\n { message },\n { address: this.address },\n );\n return signature;\n }\n\n async signTransaction(serializedTx: Uint8Array): Promise<Uint8Array> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const serializedTxHex = \"0x\" + Buffer.from(serializedTx).toString(\"hex\");\n const tx = ethers.Transaction.from(serializedTxHex);\n const { signature } = await this.privySignTransaction(\n {\n from: tx.from ?? undefined,\n to: tx.to ?? undefined,\n value: tx.value,\n gasLimit: tx.gasLimit,\n gasPrice: tx.gasPrice ?? undefined,\n nonce: tx.nonce,\n data: tx.data,\n type: tx.type ?? undefined,\n accessList: tx.accessList ?? undefined,\n chainId: Number(tx.chainId),\n maxPriorityFeePerGas: tx.maxPriorityFeePerGas ?? undefined,\n maxFeePerGas: tx.maxFeePerGas ?? undefined,\n },\n { address: this.address },\n );\n return new Uint8Array(Buffer.from(signature.slice(2), \"hex\"));\n }\n\n async sendTransaction(serializedTx: Uint8Array): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const serializedTxHex = \"0x\" + Buffer.from(serializedTx).toString(\"hex\");\n const tx = ethers.Transaction.from(serializedTxHex);\n const { hash } = await this.privySendTransaction(\n {\n from: tx.from ?? undefined,\n to: tx.to ?? undefined,\n value: tx.value,\n gasLimit: tx.gasLimit,\n gasPrice: tx.gasPrice ?? undefined,\n nonce: tx.nonce,\n data: tx.data,\n type: tx.type ?? undefined,\n accessList: tx.accessList ?? undefined,\n chainId: Number(tx.chainId),\n maxPriorityFeePerGas: tx.maxPriorityFeePerGas ?? undefined,\n maxFeePerGas: tx.maxFeePerGas ?? undefined,\n },\n { address: this.address },\n );\n return hash;\n }\n\n async getEip1193Provider(): Promise<Eip1193Provider | undefined> {\n return await this.wallet?.getEthereumProvider();\n }\n\n async switchChain(chain: Chain): Promise<void> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n await this.wallet.switchChain(Number(chain));\n }\n}\n","import { WalletWithMetadata } from \"@privy-io/react-auth\";\nimport {\n ConnectedStandardSolanaWallet,\n useSignMessage,\n useSignTransaction,\n useSignAndSendTransaction,\n} from \"@privy-io/react-auth/solana\";\nimport { WalletAdapter } from \"@liberfi.io/core\";\nimport { ChainNamespace, Chain } from \"@liberfi.io/types\";\n\nexport class PrivySolanaWalletAdapter implements WalletAdapter {\n constructor(\n private readonly account: WalletWithMetadata,\n private readonly wallet: ConnectedStandardSolanaWallet | undefined,\n private readonly privySignMessage: ReturnType<\n typeof useSignMessage\n >[\"signMessage\"],\n private readonly privySignTransaction: ReturnType<\n typeof useSignTransaction\n >[\"signTransaction\"],\n private readonly privySignAndSendTransaction: ReturnType<\n typeof useSignAndSendTransaction\n >[\"signAndSendTransaction\"],\n ) {}\n\n get chainNamespace(): ChainNamespace {\n return ChainNamespace.SOLANA;\n }\n\n get chain(): Chain | undefined {\n return Chain.SOLANA;\n }\n\n get address(): string {\n return this.account.address;\n }\n\n get isConnected(): boolean {\n return !!this.wallet;\n }\n\n get isCustodial(): boolean {\n return this.account.delegated;\n }\n\n get connector(): string {\n return this.account.walletClientType ?? \"privy\";\n }\n\n async signMessage(message: string): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signature } = await this.privySignMessage({\n message: new TextEncoder().encode(message),\n wallet: this.wallet,\n });\n return Buffer.from(signature).toString(\"base64\");\n }\n\n async signTransaction(serializedTx: Uint8Array): Promise<Uint8Array> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signedTransaction } = await this.privySignTransaction({\n transaction: serializedTx,\n wallet: this.wallet,\n });\n return signedTransaction;\n }\n\n async sendTransaction(serializedTx: Uint8Array): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signature } = await this.privySignAndSendTransaction({\n transaction: serializedTx,\n wallet: this.wallet,\n });\n return Buffer.from(signature).toString(\"base64\");\n }\n}\n","import { PropsWithChildren, useCallback, useMemo, useState } from \"react\";\nimport {\n usePrivy,\n useSendTransaction,\n useSignMessage,\n useSignTransaction,\n useWallets,\n WalletWithMetadata,\n} from \"@privy-io/react-auth\";\nimport {\n useWallets as useSolanaWallets,\n useSignMessage as useSolanaSignMessage,\n useSignTransaction as useSolanaSignTransaction,\n useSignAndSendTransaction as useSolanaSignAndSendTransaction,\n} from \"@privy-io/react-auth/solana\";\nimport { WalletConnectorProvider } from \"@liberfi.io/hooks\";\nimport { PrivyEvmWalletAdapter } from \"./PrivyEvmWalletAdapter\";\nimport { PrivySolanaWalletAdapter } from \"./PrivySolanaWalletAdapter\";\n\nexport function WalletConnectorAdapter({ children }: PropsWithChildren) {\n // privy authentication states\n const { ready: authReady, user, authenticated, login, logout } = usePrivy();\n\n // all connected evm wallets, may not be owned by the user\n const { ready: evmReady, wallets: evmWallets } = useWallets();\n\n // all connected solana wallets, may not be owned by the user\n const { ready: solanaReady, wallets: solanaWallets } = useSolanaWallets();\n\n // privy's evm sign message\n const { signMessage: signEvmMessage } = useSignMessage();\n\n // privy's evm sign transaction\n const { signTransaction: signEvmTransaction } = useSignTransaction();\n\n // privy's evm send transaction\n const { sendTransaction: sendEvmTransaction } = useSendTransaction();\n\n // privy's solana sign message\n const { signMessage: signSolanaMessage } = useSolanaSignMessage();\n\n // privy's solana sign transaction\n const { signTransaction: signSolanaTransaction } = useSolanaSignTransaction();\n\n // privy's solana send transaction\n const { signAndSendTransaction: signAndSendSolanaTransaction } =\n useSolanaSignAndSendTransaction();\n\n // is signing in to privy, this is the step of connecting to a wallet\n const [isSigningIn, setIsSigningIn] = useState(false);\n\n // is signing out from privy, this is the step of disconnecting from all wallets\n const [isSigningOut, setIsSigningOut] = useState(false);\n\n // all wallets that can be used to take onchain actions when connected\n const wallets = useMemo(() => {\n // unauthenticated , or user has no wallets\n if (!user?.linkedAccounts) return [];\n\n // owned evm wallets\n const evmWalletAdapters = user.linkedAccounts\n .filter(\n (it) =>\n it.type === \"wallet\" &&\n (it as WalletWithMetadata).chainType === \"ethereum\",\n )\n .map((it) => {\n const account = it as WalletWithMetadata;\n const wallet = evmWallets.find((w) => w.address === account.address);\n return new PrivyEvmWalletAdapter(\n account,\n wallet,\n signEvmMessage,\n signEvmTransaction,\n sendEvmTransaction,\n );\n });\n\n // owned solana wallets\n const solanaWalletAdapters = user.linkedAccounts\n .filter(\n (it) =>\n it.type === \"wallet\" &&\n (it as WalletWithMetadata).chainType === \"solana\",\n )\n .map((it) => {\n const account = it as WalletWithMetadata;\n const wallet = solanaWallets.find((w) => w.address === account.address);\n return new PrivySolanaWalletAdapter(\n account,\n wallet,\n signSolanaMessage,\n signSolanaTransaction,\n signAndSendSolanaTransaction,\n );\n });\n\n const walletAdapters = [...evmWalletAdapters, ...solanaWalletAdapters];\n return walletAdapters;\n }, [\n user?.linkedAccounts,\n evmWallets,\n solanaWallets,\n signEvmMessage,\n signEvmTransaction,\n sendEvmTransaction,\n signSolanaMessage,\n signSolanaTransaction,\n signAndSendSolanaTransaction,\n ]);\n\n // wallet connector status\n const status = useMemo(() => {\n // is detecting authentication status\n if (!authReady) return \"detecting\";\n // is detecting connected wallets\n if (!evmReady || !solanaReady) return \"detecting\";\n // is signing in to privy, this is the step of connecting to a wallet\n if (isSigningIn) return \"connecting\";\n // is signing out from privy, this is the step of disconnecting from all wallets\n if (isSigningOut) return \"disconnecting\";\n // is not authenticated, can't connect any wallets\n if (!authenticated || !user) return \"disconnected\";\n // is authenticated, but no wallets are connected\n return \"connected\";\n }, [authReady, evmReady, solanaReady, authenticated, user?.linkedAccounts]);\n\n const signIn = useCallback(async () => {\n setIsSigningIn(true);\n try {\n login();\n } catch (error) {\n // TODO make error human readable\n console.error(error);\n } finally {\n setIsSigningIn(false);\n }\n }, [login]);\n\n const signOut = useCallback(async () => {\n setIsSigningOut(true);\n try {\n // TODO fix: await logout is halting\n // await logout();\n logout();\n } catch (error) {\n // TODO make error human readable\n console.error(error);\n } finally {\n setIsSigningOut(false);\n }\n }, [logout]);\n\n return (\n <WalletConnectorProvider\n status={status}\n // all user's wallets, which can be used to take onchain actions when connected\n wallets={wallets}\n // connect to the first wallet by signing in to privy\n connect={signIn}\n // disconnect from all wallets by signing out from privy\n disconnect={signOut}\n >\n {children}\n </WalletConnectorProvider>\n );\n}\n","import { PropsWithChildren } from \"react\";\nimport { PrivyProvider, type PrivyClientConfig } from \"@privy-io/react-auth\";\nimport { toSolanaWalletConnectors } from \"@privy-io/react-auth/solana\";\nimport { WalletConnectorAdapter } from \"./WalletConnectorAdapter\";\n\nexport type PrivyWalletConnectorProviderProps = PropsWithChildren<{\n privyAppId: string;\n privyClientId?: string;\n privyClientConfig?: PrivyClientConfig;\n}>;\n\nexport function PrivyWalletConnectorProvider({\n privyAppId,\n privyClientId,\n privyClientConfig,\n children,\n}: PrivyWalletConnectorProviderProps) {\n return (\n <PrivyProvider\n appId={privyAppId}\n clientId={privyClientId}\n config={{\n externalWallets: {\n solana: {\n connectors: toSolanaWalletConnectors({\n shouldAutoConnect: true,\n }),\n },\n },\n ...privyClientConfig,\n }}\n >\n <WalletConnectorAdapter>{children}</WalletConnectorAdapter>\n </PrivyProvider>\n );\n}\n\nPrivyWalletConnectorProvider.displayName = \"PrivyWalletConnectorProvider\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/version.ts","../src/PrivyEvmWalletAdapter.ts","../src/PrivySolanaWalletAdapter.ts","../src/WalletConnectorAdapter.tsx","../src/PrivyWalletConnectorProvider.tsx"],"names":["ChainNamespace","ethers","Chain","usePrivy","useWallets","useSolanaWallets","useSignMessage","useSignTransaction","useSendTransaction","useSolanaSignMessage","useSolanaSignTransaction","useSolanaSignAndSendTransaction","useState","useMemo","useCallback","jsx","WalletConnectorProvider","PrivyProvider","toSolanaWalletConnectors"],"mappings":"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","file":"index.js","sourcesContent":["declare global {\n interface Window {\n __LIBERFI_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif (typeof window !== \"undefined\") {\n window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};\n window.__LIBERFI_VERSION__[\"@liberfi.io/wallet-connector-privy\"] = \"0.1.4\";\n}\n\nexport default \"0.1.4\";\n","import {\n ConnectedWallet,\n useSendTransaction,\n useSignMessage,\n useSignTransaction,\n WalletWithMetadata,\n} from \"@privy-io/react-auth\";\nimport { ethers } from \"ethers\";\nimport { Eip1193Provider, EvmWalletAdapter } from \"@liberfi.io/core\";\nimport { ChainNamespace, Chain } from \"@liberfi.io/types\";\n\nexport class PrivyEvmWalletAdapter implements EvmWalletAdapter {\n constructor(\n private readonly account: WalletWithMetadata,\n private readonly wallet: ConnectedWallet | undefined,\n private readonly privySignMessage: ReturnType<\n typeof useSignMessage\n >[\"signMessage\"],\n private readonly privySignTransaction: ReturnType<\n typeof useSignTransaction\n >[\"signTransaction\"],\n private readonly privySendTransaction: ReturnType<\n typeof useSendTransaction\n >[\"sendTransaction\"],\n ) {}\n\n get chainNamespace(): ChainNamespace {\n return ChainNamespace.EVM;\n }\n\n get chain(): Chain | undefined {\n const privyChainId = this.wallet?.chainId;\n if (!privyChainId) return undefined;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_, chainId] = privyChainId.split(\":\");\n return chainId as Chain;\n }\n\n get address(): string {\n return this.account.address;\n }\n\n get isConnected(): boolean {\n return !!this.wallet;\n }\n\n get isCustodial(): boolean {\n return this.account.delegated;\n }\n\n get connector(): string {\n return this.account.walletClientType ?? \"privy\";\n }\n\n async signMessage(message: string): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signature } = await this.privySignMessage(\n { message },\n { address: this.address },\n );\n return signature;\n }\n\n async signTransaction(serializedTx: Uint8Array): Promise<Uint8Array> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const serializedTxHex = \"0x\" + Buffer.from(serializedTx).toString(\"hex\");\n const tx = ethers.Transaction.from(serializedTxHex);\n const { signature } = await this.privySignTransaction(\n {\n from: tx.from ?? undefined,\n to: tx.to ?? undefined,\n value: tx.value,\n gasLimit: tx.gasLimit,\n gasPrice: tx.gasPrice ?? undefined,\n nonce: tx.nonce,\n data: tx.data,\n type: tx.type ?? undefined,\n accessList: tx.accessList ?? undefined,\n chainId: Number(tx.chainId),\n maxPriorityFeePerGas: tx.maxPriorityFeePerGas ?? undefined,\n maxFeePerGas: tx.maxFeePerGas ?? undefined,\n },\n { address: this.address },\n );\n return new Uint8Array(Buffer.from(signature.slice(2), \"hex\"));\n }\n\n async sendTransaction(serializedTx: Uint8Array): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const serializedTxHex = \"0x\" + Buffer.from(serializedTx).toString(\"hex\");\n const tx = ethers.Transaction.from(serializedTxHex);\n const { hash } = await this.privySendTransaction(\n {\n from: tx.from ?? undefined,\n to: tx.to ?? undefined,\n value: tx.value,\n gasLimit: tx.gasLimit,\n gasPrice: tx.gasPrice ?? undefined,\n nonce: tx.nonce,\n data: tx.data,\n type: tx.type ?? undefined,\n accessList: tx.accessList ?? undefined,\n chainId: Number(tx.chainId),\n maxPriorityFeePerGas: tx.maxPriorityFeePerGas ?? undefined,\n maxFeePerGas: tx.maxFeePerGas ?? undefined,\n },\n { address: this.address },\n );\n return hash;\n }\n\n async getEip1193Provider(): Promise<Eip1193Provider | undefined> {\n return await this.wallet?.getEthereumProvider();\n }\n\n async switchChain(chain: Chain): Promise<void> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n await this.wallet.switchChain(Number(chain));\n }\n}\n","import { WalletWithMetadata } from \"@privy-io/react-auth\";\nimport {\n ConnectedStandardSolanaWallet,\n useSignMessage,\n useSignTransaction,\n useSignAndSendTransaction,\n} from \"@privy-io/react-auth/solana\";\nimport { WalletAdapter } from \"@liberfi.io/core\";\nimport { ChainNamespace, Chain } from \"@liberfi.io/types\";\n\nexport class PrivySolanaWalletAdapter implements WalletAdapter {\n constructor(\n private readonly account: WalletWithMetadata,\n private readonly wallet: ConnectedStandardSolanaWallet | undefined,\n private readonly privySignMessage: ReturnType<\n typeof useSignMessage\n >[\"signMessage\"],\n private readonly privySignTransaction: ReturnType<\n typeof useSignTransaction\n >[\"signTransaction\"],\n private readonly privySignAndSendTransaction: ReturnType<\n typeof useSignAndSendTransaction\n >[\"signAndSendTransaction\"],\n ) {}\n\n get chainNamespace(): ChainNamespace {\n return ChainNamespace.SOLANA;\n }\n\n get chain(): Chain | undefined {\n return Chain.SOLANA;\n }\n\n get address(): string {\n return this.account.address;\n }\n\n get isConnected(): boolean {\n return !!this.wallet;\n }\n\n get isCustodial(): boolean {\n return this.account.delegated;\n }\n\n get connector(): string {\n return this.account.walletClientType ?? \"privy\";\n }\n\n async signMessage(message: string): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signature } = await this.privySignMessage({\n message: new TextEncoder().encode(message),\n wallet: this.wallet,\n });\n return Buffer.from(signature).toString(\"base64\");\n }\n\n async signTransaction(serializedTx: Uint8Array): Promise<Uint8Array> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signedTransaction } = await this.privySignTransaction({\n transaction: serializedTx,\n wallet: this.wallet,\n });\n return signedTransaction;\n }\n\n async sendTransaction(serializedTx: Uint8Array): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signature } = await this.privySignAndSendTransaction({\n transaction: serializedTx,\n wallet: this.wallet,\n });\n return Buffer.from(signature).toString(\"base64\");\n }\n}\n","import { PropsWithChildren, useCallback, useMemo, useState } from \"react\";\nimport {\n usePrivy,\n useSendTransaction,\n useSignMessage,\n useSignTransaction,\n useWallets,\n WalletWithMetadata,\n} from \"@privy-io/react-auth\";\nimport {\n useWallets as useSolanaWallets,\n useSignMessage as useSolanaSignMessage,\n useSignTransaction as useSolanaSignTransaction,\n useSignAndSendTransaction as useSolanaSignAndSendTransaction,\n} from \"@privy-io/react-auth/solana\";\nimport { WalletConnectorProvider } from \"@liberfi.io/hooks\";\nimport { PrivyEvmWalletAdapter } from \"./PrivyEvmWalletAdapter\";\nimport { PrivySolanaWalletAdapter } from \"./PrivySolanaWalletAdapter\";\n\nexport function WalletConnectorAdapter({ children }: PropsWithChildren) {\n // privy authentication states\n const { ready: authReady, user, authenticated, login, logout } = usePrivy();\n\n // all connected evm wallets, may not be owned by the user\n const { ready: evmReady, wallets: evmWallets } = useWallets();\n\n // all connected solana wallets, may not be owned by the user\n const { ready: solanaReady, wallets: solanaWallets } = useSolanaWallets();\n\n // privy's evm sign message\n const { signMessage: signEvmMessage } = useSignMessage();\n\n // privy's evm sign transaction\n const { signTransaction: signEvmTransaction } = useSignTransaction();\n\n // privy's evm send transaction\n const { sendTransaction: sendEvmTransaction } = useSendTransaction();\n\n // privy's solana sign message\n const { signMessage: signSolanaMessage } = useSolanaSignMessage();\n\n // privy's solana sign transaction\n const { signTransaction: signSolanaTransaction } = useSolanaSignTransaction();\n\n // privy's solana send transaction\n const { signAndSendTransaction: signAndSendSolanaTransaction } =\n useSolanaSignAndSendTransaction();\n\n // is signing in to privy, this is the step of connecting to a wallet\n const [isSigningIn, setIsSigningIn] = useState(false);\n\n // is signing out from privy, this is the step of disconnecting from all wallets\n const [isSigningOut, setIsSigningOut] = useState(false);\n\n // all wallets that can be used to take onchain actions when connected\n const wallets = useMemo(() => {\n // unauthenticated , or user has no wallets\n if (!user?.linkedAccounts) return [];\n\n // owned evm wallets\n const evmWalletAdapters = user.linkedAccounts\n .filter(\n (it) =>\n it.type === \"wallet\" &&\n (it as WalletWithMetadata).chainType === \"ethereum\",\n )\n .map((it) => {\n const account = it as WalletWithMetadata;\n const wallet = evmWallets.find((w) => w.address === account.address);\n return new PrivyEvmWalletAdapter(\n account,\n wallet,\n signEvmMessage,\n signEvmTransaction,\n sendEvmTransaction,\n );\n });\n\n // owned solana wallets\n const solanaWalletAdapters = user.linkedAccounts\n .filter(\n (it) =>\n it.type === \"wallet\" &&\n (it as WalletWithMetadata).chainType === \"solana\",\n )\n .map((it) => {\n const account = it as WalletWithMetadata;\n const wallet = solanaWallets.find((w) => w.address === account.address);\n return new PrivySolanaWalletAdapter(\n account,\n wallet,\n signSolanaMessage,\n signSolanaTransaction,\n signAndSendSolanaTransaction,\n );\n });\n\n const walletAdapters = [...evmWalletAdapters, ...solanaWalletAdapters];\n return walletAdapters;\n }, [\n user?.linkedAccounts,\n evmWallets,\n solanaWallets,\n signEvmMessage,\n signEvmTransaction,\n sendEvmTransaction,\n signSolanaMessage,\n signSolanaTransaction,\n signAndSendSolanaTransaction,\n ]);\n\n // wallet connector status\n const status = useMemo(() => {\n // is detecting authentication status\n if (!authReady) return \"detecting\";\n // is detecting connected wallets\n if (!evmReady || !solanaReady) return \"detecting\";\n // is signing in to privy, this is the step of connecting to a wallet\n if (isSigningIn) return \"connecting\";\n // is signing out from privy, this is the step of disconnecting from all wallets\n if (isSigningOut) return \"disconnecting\";\n // is not authenticated, can't connect any wallets\n if (!authenticated || !user) return \"disconnected\";\n // is authenticated, but no wallets are connected\n return \"connected\";\n }, [authReady, evmReady, solanaReady, authenticated, user?.linkedAccounts]);\n\n const signIn = useCallback(async () => {\n setIsSigningIn(true);\n try {\n login();\n } catch (error) {\n // TODO make error human readable\n console.error(error);\n } finally {\n setIsSigningIn(false);\n }\n }, [login]);\n\n const signOut = useCallback(async () => {\n setIsSigningOut(true);\n try {\n // TODO fix: await logout is halting\n // await logout();\n logout();\n } catch (error) {\n // TODO make error human readable\n console.error(error);\n } finally {\n setIsSigningOut(false);\n }\n }, [logout]);\n\n return (\n <WalletConnectorProvider\n status={status}\n // all user's wallets, which can be used to take onchain actions when connected\n wallets={wallets}\n // connect to the first wallet by signing in to privy\n connect={signIn}\n // disconnect from all wallets by signing out from privy\n disconnect={signOut}\n >\n {children}\n </WalletConnectorProvider>\n );\n}\n","import { PropsWithChildren } from \"react\";\nimport { PrivyProvider, type PrivyClientConfig } from \"@privy-io/react-auth\";\nimport { toSolanaWalletConnectors } from \"@privy-io/react-auth/solana\";\nimport { WalletConnectorAdapter } from \"./WalletConnectorAdapter\";\n\nexport type PrivyWalletConnectorProviderProps = PropsWithChildren<{\n privyAppId: string;\n privyClientId?: string;\n privyClientConfig?: PrivyClientConfig;\n}>;\n\nexport function PrivyWalletConnectorProvider({\n privyAppId,\n privyClientId,\n privyClientConfig,\n children,\n}: PrivyWalletConnectorProviderProps) {\n return (\n <PrivyProvider\n appId={privyAppId}\n clientId={privyClientId}\n config={{\n externalWallets: {\n solana: {\n connectors: toSolanaWalletConnectors({\n shouldAutoConnect: true,\n }),\n },\n },\n ...privyClientConfig,\n }}\n >\n <WalletConnectorAdapter>{children}</WalletConnectorAdapter>\n </PrivyProvider>\n );\n}\n\nPrivyWalletConnectorProvider.displayName = \"PrivyWalletConnectorProvider\";\n"]}
|
package/dist/index.mjs
CHANGED
|
@@ -9,9 +9,9 @@ import { jsx } from 'react/jsx-runtime';
|
|
|
9
9
|
// src/version.ts
|
|
10
10
|
if (typeof window !== "undefined") {
|
|
11
11
|
window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};
|
|
12
|
-
window.__LIBERFI_VERSION__["@liberfi.io/wallet-connector-privy"] = "0.1.
|
|
12
|
+
window.__LIBERFI_VERSION__["@liberfi.io/wallet-connector-privy"] = "0.1.4";
|
|
13
13
|
}
|
|
14
|
-
var version_default = "0.1.
|
|
14
|
+
var version_default = "0.1.4";
|
|
15
15
|
var PrivyEvmWalletAdapter = class {
|
|
16
16
|
constructor(account, wallet, privySignMessage, privySignTransaction, privySendTransaction) {
|
|
17
17
|
this.account = account;
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/version.ts","../src/PrivyEvmWalletAdapter.ts","../src/PrivySolanaWalletAdapter.ts","../src/WalletConnectorAdapter.tsx","../src/PrivyWalletConnectorProvider.tsx"],"names":["ChainNamespace","Chain","useSolanaWallets","useSolanaSignMessage","useSolanaSignTransaction","useSolanaSignAndSendTransaction","jsx"],"mappings":"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","file":"index.mjs","sourcesContent":["declare global {\n interface Window {\n __LIBERFI_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif (typeof window !== \"undefined\") {\n window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};\n window.__LIBERFI_VERSION__[\"@liberfi.io/wallet-connector-privy\"] = \"0.1.0\";\n}\n\nexport default \"0.1.0\";\n","import {\n ConnectedWallet,\n useSendTransaction,\n useSignMessage,\n useSignTransaction,\n WalletWithMetadata,\n} from \"@privy-io/react-auth\";\nimport { ethers } from \"ethers\";\nimport { Eip1193Provider, EvmWalletAdapter } from \"@liberfi.io/core\";\nimport { ChainNamespace, Chain } from \"@liberfi.io/types\";\n\nexport class PrivyEvmWalletAdapter implements EvmWalletAdapter {\n constructor(\n private readonly account: WalletWithMetadata,\n private readonly wallet: ConnectedWallet | undefined,\n private readonly privySignMessage: ReturnType<\n typeof useSignMessage\n >[\"signMessage\"],\n private readonly privySignTransaction: ReturnType<\n typeof useSignTransaction\n >[\"signTransaction\"],\n private readonly privySendTransaction: ReturnType<\n typeof useSendTransaction\n >[\"sendTransaction\"],\n ) {}\n\n get chainNamespace(): ChainNamespace {\n return ChainNamespace.EVM;\n }\n\n get chain(): Chain | undefined {\n const privyChainId = this.wallet?.chainId;\n if (!privyChainId) return undefined;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_, chainId] = privyChainId.split(\":\");\n return chainId as Chain;\n }\n\n get address(): string {\n return this.account.address;\n }\n\n get isConnected(): boolean {\n return !!this.wallet;\n }\n\n get isCustodial(): boolean {\n return this.account.delegated;\n }\n\n get connector(): string {\n return this.account.walletClientType ?? \"privy\";\n }\n\n async signMessage(message: string): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signature } = await this.privySignMessage(\n { message },\n { address: this.address },\n );\n return signature;\n }\n\n async signTransaction(serializedTx: Uint8Array): Promise<Uint8Array> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const serializedTxHex = \"0x\" + Buffer.from(serializedTx).toString(\"hex\");\n const tx = ethers.Transaction.from(serializedTxHex);\n const { signature } = await this.privySignTransaction(\n {\n from: tx.from ?? undefined,\n to: tx.to ?? undefined,\n value: tx.value,\n gasLimit: tx.gasLimit,\n gasPrice: tx.gasPrice ?? undefined,\n nonce: tx.nonce,\n data: tx.data,\n type: tx.type ?? undefined,\n accessList: tx.accessList ?? undefined,\n chainId: Number(tx.chainId),\n maxPriorityFeePerGas: tx.maxPriorityFeePerGas ?? undefined,\n maxFeePerGas: tx.maxFeePerGas ?? undefined,\n },\n { address: this.address },\n );\n return new Uint8Array(Buffer.from(signature.slice(2), \"hex\"));\n }\n\n async sendTransaction(serializedTx: Uint8Array): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const serializedTxHex = \"0x\" + Buffer.from(serializedTx).toString(\"hex\");\n const tx = ethers.Transaction.from(serializedTxHex);\n const { hash } = await this.privySendTransaction(\n {\n from: tx.from ?? undefined,\n to: tx.to ?? undefined,\n value: tx.value,\n gasLimit: tx.gasLimit,\n gasPrice: tx.gasPrice ?? undefined,\n nonce: tx.nonce,\n data: tx.data,\n type: tx.type ?? undefined,\n accessList: tx.accessList ?? undefined,\n chainId: Number(tx.chainId),\n maxPriorityFeePerGas: tx.maxPriorityFeePerGas ?? undefined,\n maxFeePerGas: tx.maxFeePerGas ?? undefined,\n },\n { address: this.address },\n );\n return hash;\n }\n\n async getEip1193Provider(): Promise<Eip1193Provider | undefined> {\n return await this.wallet?.getEthereumProvider();\n }\n\n async switchChain(chain: Chain): Promise<void> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n await this.wallet.switchChain(Number(chain));\n }\n}\n","import { WalletWithMetadata } from \"@privy-io/react-auth\";\nimport {\n ConnectedStandardSolanaWallet,\n useSignMessage,\n useSignTransaction,\n useSignAndSendTransaction,\n} from \"@privy-io/react-auth/solana\";\nimport { WalletAdapter } from \"@liberfi.io/core\";\nimport { ChainNamespace, Chain } from \"@liberfi.io/types\";\n\nexport class PrivySolanaWalletAdapter implements WalletAdapter {\n constructor(\n private readonly account: WalletWithMetadata,\n private readonly wallet: ConnectedStandardSolanaWallet | undefined,\n private readonly privySignMessage: ReturnType<\n typeof useSignMessage\n >[\"signMessage\"],\n private readonly privySignTransaction: ReturnType<\n typeof useSignTransaction\n >[\"signTransaction\"],\n private readonly privySignAndSendTransaction: ReturnType<\n typeof useSignAndSendTransaction\n >[\"signAndSendTransaction\"],\n ) {}\n\n get chainNamespace(): ChainNamespace {\n return ChainNamespace.SOLANA;\n }\n\n get chain(): Chain | undefined {\n return Chain.SOLANA;\n }\n\n get address(): string {\n return this.account.address;\n }\n\n get isConnected(): boolean {\n return !!this.wallet;\n }\n\n get isCustodial(): boolean {\n return this.account.delegated;\n }\n\n get connector(): string {\n return this.account.walletClientType ?? \"privy\";\n }\n\n async signMessage(message: string): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signature } = await this.privySignMessage({\n message: new TextEncoder().encode(message),\n wallet: this.wallet,\n });\n return Buffer.from(signature).toString(\"base64\");\n }\n\n async signTransaction(serializedTx: Uint8Array): Promise<Uint8Array> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signedTransaction } = await this.privySignTransaction({\n transaction: serializedTx,\n wallet: this.wallet,\n });\n return signedTransaction;\n }\n\n async sendTransaction(serializedTx: Uint8Array): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signature } = await this.privySignAndSendTransaction({\n transaction: serializedTx,\n wallet: this.wallet,\n });\n return Buffer.from(signature).toString(\"base64\");\n }\n}\n","import { PropsWithChildren, useCallback, useMemo, useState } from \"react\";\nimport {\n usePrivy,\n useSendTransaction,\n useSignMessage,\n useSignTransaction,\n useWallets,\n WalletWithMetadata,\n} from \"@privy-io/react-auth\";\nimport {\n useWallets as useSolanaWallets,\n useSignMessage as useSolanaSignMessage,\n useSignTransaction as useSolanaSignTransaction,\n useSignAndSendTransaction as useSolanaSignAndSendTransaction,\n} from \"@privy-io/react-auth/solana\";\nimport { WalletConnectorProvider } from \"@liberfi.io/hooks\";\nimport { PrivyEvmWalletAdapter } from \"./PrivyEvmWalletAdapter\";\nimport { PrivySolanaWalletAdapter } from \"./PrivySolanaWalletAdapter\";\n\nexport function WalletConnectorAdapter({ children }: PropsWithChildren) {\n // privy authentication states\n const { ready: authReady, user, authenticated, login, logout } = usePrivy();\n\n // all connected evm wallets, may not be owned by the user\n const { ready: evmReady, wallets: evmWallets } = useWallets();\n\n // all connected solana wallets, may not be owned by the user\n const { ready: solanaReady, wallets: solanaWallets } = useSolanaWallets();\n\n // privy's evm sign message\n const { signMessage: signEvmMessage } = useSignMessage();\n\n // privy's evm sign transaction\n const { signTransaction: signEvmTransaction } = useSignTransaction();\n\n // privy's evm send transaction\n const { sendTransaction: sendEvmTransaction } = useSendTransaction();\n\n // privy's solana sign message\n const { signMessage: signSolanaMessage } = useSolanaSignMessage();\n\n // privy's solana sign transaction\n const { signTransaction: signSolanaTransaction } = useSolanaSignTransaction();\n\n // privy's solana send transaction\n const { signAndSendTransaction: signAndSendSolanaTransaction } =\n useSolanaSignAndSendTransaction();\n\n // is signing in to privy, this is the step of connecting to a wallet\n const [isSigningIn, setIsSigningIn] = useState(false);\n\n // is signing out from privy, this is the step of disconnecting from all wallets\n const [isSigningOut, setIsSigningOut] = useState(false);\n\n // all wallets that can be used to take onchain actions when connected\n const wallets = useMemo(() => {\n // unauthenticated , or user has no wallets\n if (!user?.linkedAccounts) return [];\n\n // owned evm wallets\n const evmWalletAdapters = user.linkedAccounts\n .filter(\n (it) =>\n it.type === \"wallet\" &&\n (it as WalletWithMetadata).chainType === \"ethereum\",\n )\n .map((it) => {\n const account = it as WalletWithMetadata;\n const wallet = evmWallets.find((w) => w.address === account.address);\n return new PrivyEvmWalletAdapter(\n account,\n wallet,\n signEvmMessage,\n signEvmTransaction,\n sendEvmTransaction,\n );\n });\n\n // owned solana wallets\n const solanaWalletAdapters = user.linkedAccounts\n .filter(\n (it) =>\n it.type === \"wallet\" &&\n (it as WalletWithMetadata).chainType === \"solana\",\n )\n .map((it) => {\n const account = it as WalletWithMetadata;\n const wallet = solanaWallets.find((w) => w.address === account.address);\n return new PrivySolanaWalletAdapter(\n account,\n wallet,\n signSolanaMessage,\n signSolanaTransaction,\n signAndSendSolanaTransaction,\n );\n });\n\n const walletAdapters = [...evmWalletAdapters, ...solanaWalletAdapters];\n return walletAdapters;\n }, [\n user?.linkedAccounts,\n evmWallets,\n solanaWallets,\n signEvmMessage,\n signEvmTransaction,\n sendEvmTransaction,\n signSolanaMessage,\n signSolanaTransaction,\n signAndSendSolanaTransaction,\n ]);\n\n // wallet connector status\n const status = useMemo(() => {\n // is detecting authentication status\n if (!authReady) return \"detecting\";\n // is detecting connected wallets\n if (!evmReady || !solanaReady) return \"detecting\";\n // is signing in to privy, this is the step of connecting to a wallet\n if (isSigningIn) return \"connecting\";\n // is signing out from privy, this is the step of disconnecting from all wallets\n if (isSigningOut) return \"disconnecting\";\n // is not authenticated, can't connect any wallets\n if (!authenticated || !user) return \"disconnected\";\n // is authenticated, but no wallets are connected\n return \"connected\";\n }, [authReady, evmReady, solanaReady, authenticated, user?.linkedAccounts]);\n\n const signIn = useCallback(async () => {\n setIsSigningIn(true);\n try {\n login();\n } catch (error) {\n // TODO make error human readable\n console.error(error);\n } finally {\n setIsSigningIn(false);\n }\n }, [login]);\n\n const signOut = useCallback(async () => {\n setIsSigningOut(true);\n try {\n // TODO fix: await logout is halting\n // await logout();\n logout();\n } catch (error) {\n // TODO make error human readable\n console.error(error);\n } finally {\n setIsSigningOut(false);\n }\n }, [logout]);\n\n return (\n <WalletConnectorProvider\n status={status}\n // all user's wallets, which can be used to take onchain actions when connected\n wallets={wallets}\n // connect to the first wallet by signing in to privy\n connect={signIn}\n // disconnect from all wallets by signing out from privy\n disconnect={signOut}\n >\n {children}\n </WalletConnectorProvider>\n );\n}\n","import { PropsWithChildren } from \"react\";\nimport { PrivyProvider, type PrivyClientConfig } from \"@privy-io/react-auth\";\nimport { toSolanaWalletConnectors } from \"@privy-io/react-auth/solana\";\nimport { WalletConnectorAdapter } from \"./WalletConnectorAdapter\";\n\nexport type PrivyWalletConnectorProviderProps = PropsWithChildren<{\n privyAppId: string;\n privyClientId?: string;\n privyClientConfig?: PrivyClientConfig;\n}>;\n\nexport function PrivyWalletConnectorProvider({\n privyAppId,\n privyClientId,\n privyClientConfig,\n children,\n}: PrivyWalletConnectorProviderProps) {\n return (\n <PrivyProvider\n appId={privyAppId}\n clientId={privyClientId}\n config={{\n externalWallets: {\n solana: {\n connectors: toSolanaWalletConnectors({\n shouldAutoConnect: true,\n }),\n },\n },\n ...privyClientConfig,\n }}\n >\n <WalletConnectorAdapter>{children}</WalletConnectorAdapter>\n </PrivyProvider>\n );\n}\n\nPrivyWalletConnectorProvider.displayName = \"PrivyWalletConnectorProvider\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/version.ts","../src/PrivyEvmWalletAdapter.ts","../src/PrivySolanaWalletAdapter.ts","../src/WalletConnectorAdapter.tsx","../src/PrivyWalletConnectorProvider.tsx"],"names":["ChainNamespace","Chain","useSolanaWallets","useSolanaSignMessage","useSolanaSignTransaction","useSolanaSignAndSendTransaction","jsx"],"mappings":"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","file":"index.mjs","sourcesContent":["declare global {\n interface Window {\n __LIBERFI_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif (typeof window !== \"undefined\") {\n window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};\n window.__LIBERFI_VERSION__[\"@liberfi.io/wallet-connector-privy\"] = \"0.1.4\";\n}\n\nexport default \"0.1.4\";\n","import {\n ConnectedWallet,\n useSendTransaction,\n useSignMessage,\n useSignTransaction,\n WalletWithMetadata,\n} from \"@privy-io/react-auth\";\nimport { ethers } from \"ethers\";\nimport { Eip1193Provider, EvmWalletAdapter } from \"@liberfi.io/core\";\nimport { ChainNamespace, Chain } from \"@liberfi.io/types\";\n\nexport class PrivyEvmWalletAdapter implements EvmWalletAdapter {\n constructor(\n private readonly account: WalletWithMetadata,\n private readonly wallet: ConnectedWallet | undefined,\n private readonly privySignMessage: ReturnType<\n typeof useSignMessage\n >[\"signMessage\"],\n private readonly privySignTransaction: ReturnType<\n typeof useSignTransaction\n >[\"signTransaction\"],\n private readonly privySendTransaction: ReturnType<\n typeof useSendTransaction\n >[\"sendTransaction\"],\n ) {}\n\n get chainNamespace(): ChainNamespace {\n return ChainNamespace.EVM;\n }\n\n get chain(): Chain | undefined {\n const privyChainId = this.wallet?.chainId;\n if (!privyChainId) return undefined;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_, chainId] = privyChainId.split(\":\");\n return chainId as Chain;\n }\n\n get address(): string {\n return this.account.address;\n }\n\n get isConnected(): boolean {\n return !!this.wallet;\n }\n\n get isCustodial(): boolean {\n return this.account.delegated;\n }\n\n get connector(): string {\n return this.account.walletClientType ?? \"privy\";\n }\n\n async signMessage(message: string): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signature } = await this.privySignMessage(\n { message },\n { address: this.address },\n );\n return signature;\n }\n\n async signTransaction(serializedTx: Uint8Array): Promise<Uint8Array> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const serializedTxHex = \"0x\" + Buffer.from(serializedTx).toString(\"hex\");\n const tx = ethers.Transaction.from(serializedTxHex);\n const { signature } = await this.privySignTransaction(\n {\n from: tx.from ?? undefined,\n to: tx.to ?? undefined,\n value: tx.value,\n gasLimit: tx.gasLimit,\n gasPrice: tx.gasPrice ?? undefined,\n nonce: tx.nonce,\n data: tx.data,\n type: tx.type ?? undefined,\n accessList: tx.accessList ?? undefined,\n chainId: Number(tx.chainId),\n maxPriorityFeePerGas: tx.maxPriorityFeePerGas ?? undefined,\n maxFeePerGas: tx.maxFeePerGas ?? undefined,\n },\n { address: this.address },\n );\n return new Uint8Array(Buffer.from(signature.slice(2), \"hex\"));\n }\n\n async sendTransaction(serializedTx: Uint8Array): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const serializedTxHex = \"0x\" + Buffer.from(serializedTx).toString(\"hex\");\n const tx = ethers.Transaction.from(serializedTxHex);\n const { hash } = await this.privySendTransaction(\n {\n from: tx.from ?? undefined,\n to: tx.to ?? undefined,\n value: tx.value,\n gasLimit: tx.gasLimit,\n gasPrice: tx.gasPrice ?? undefined,\n nonce: tx.nonce,\n data: tx.data,\n type: tx.type ?? undefined,\n accessList: tx.accessList ?? undefined,\n chainId: Number(tx.chainId),\n maxPriorityFeePerGas: tx.maxPriorityFeePerGas ?? undefined,\n maxFeePerGas: tx.maxFeePerGas ?? undefined,\n },\n { address: this.address },\n );\n return hash;\n }\n\n async getEip1193Provider(): Promise<Eip1193Provider | undefined> {\n return await this.wallet?.getEthereumProvider();\n }\n\n async switchChain(chain: Chain): Promise<void> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n await this.wallet.switchChain(Number(chain));\n }\n}\n","import { WalletWithMetadata } from \"@privy-io/react-auth\";\nimport {\n ConnectedStandardSolanaWallet,\n useSignMessage,\n useSignTransaction,\n useSignAndSendTransaction,\n} from \"@privy-io/react-auth/solana\";\nimport { WalletAdapter } from \"@liberfi.io/core\";\nimport { ChainNamespace, Chain } from \"@liberfi.io/types\";\n\nexport class PrivySolanaWalletAdapter implements WalletAdapter {\n constructor(\n private readonly account: WalletWithMetadata,\n private readonly wallet: ConnectedStandardSolanaWallet | undefined,\n private readonly privySignMessage: ReturnType<\n typeof useSignMessage\n >[\"signMessage\"],\n private readonly privySignTransaction: ReturnType<\n typeof useSignTransaction\n >[\"signTransaction\"],\n private readonly privySignAndSendTransaction: ReturnType<\n typeof useSignAndSendTransaction\n >[\"signAndSendTransaction\"],\n ) {}\n\n get chainNamespace(): ChainNamespace {\n return ChainNamespace.SOLANA;\n }\n\n get chain(): Chain | undefined {\n return Chain.SOLANA;\n }\n\n get address(): string {\n return this.account.address;\n }\n\n get isConnected(): boolean {\n return !!this.wallet;\n }\n\n get isCustodial(): boolean {\n return this.account.delegated;\n }\n\n get connector(): string {\n return this.account.walletClientType ?? \"privy\";\n }\n\n async signMessage(message: string): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signature } = await this.privySignMessage({\n message: new TextEncoder().encode(message),\n wallet: this.wallet,\n });\n return Buffer.from(signature).toString(\"base64\");\n }\n\n async signTransaction(serializedTx: Uint8Array): Promise<Uint8Array> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signedTransaction } = await this.privySignTransaction({\n transaction: serializedTx,\n wallet: this.wallet,\n });\n return signedTransaction;\n }\n\n async sendTransaction(serializedTx: Uint8Array): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signature } = await this.privySignAndSendTransaction({\n transaction: serializedTx,\n wallet: this.wallet,\n });\n return Buffer.from(signature).toString(\"base64\");\n }\n}\n","import { PropsWithChildren, useCallback, useMemo, useState } from \"react\";\nimport {\n usePrivy,\n useSendTransaction,\n useSignMessage,\n useSignTransaction,\n useWallets,\n WalletWithMetadata,\n} from \"@privy-io/react-auth\";\nimport {\n useWallets as useSolanaWallets,\n useSignMessage as useSolanaSignMessage,\n useSignTransaction as useSolanaSignTransaction,\n useSignAndSendTransaction as useSolanaSignAndSendTransaction,\n} from \"@privy-io/react-auth/solana\";\nimport { WalletConnectorProvider } from \"@liberfi.io/hooks\";\nimport { PrivyEvmWalletAdapter } from \"./PrivyEvmWalletAdapter\";\nimport { PrivySolanaWalletAdapter } from \"./PrivySolanaWalletAdapter\";\n\nexport function WalletConnectorAdapter({ children }: PropsWithChildren) {\n // privy authentication states\n const { ready: authReady, user, authenticated, login, logout } = usePrivy();\n\n // all connected evm wallets, may not be owned by the user\n const { ready: evmReady, wallets: evmWallets } = useWallets();\n\n // all connected solana wallets, may not be owned by the user\n const { ready: solanaReady, wallets: solanaWallets } = useSolanaWallets();\n\n // privy's evm sign message\n const { signMessage: signEvmMessage } = useSignMessage();\n\n // privy's evm sign transaction\n const { signTransaction: signEvmTransaction } = useSignTransaction();\n\n // privy's evm send transaction\n const { sendTransaction: sendEvmTransaction } = useSendTransaction();\n\n // privy's solana sign message\n const { signMessage: signSolanaMessage } = useSolanaSignMessage();\n\n // privy's solana sign transaction\n const { signTransaction: signSolanaTransaction } = useSolanaSignTransaction();\n\n // privy's solana send transaction\n const { signAndSendTransaction: signAndSendSolanaTransaction } =\n useSolanaSignAndSendTransaction();\n\n // is signing in to privy, this is the step of connecting to a wallet\n const [isSigningIn, setIsSigningIn] = useState(false);\n\n // is signing out from privy, this is the step of disconnecting from all wallets\n const [isSigningOut, setIsSigningOut] = useState(false);\n\n // all wallets that can be used to take onchain actions when connected\n const wallets = useMemo(() => {\n // unauthenticated , or user has no wallets\n if (!user?.linkedAccounts) return [];\n\n // owned evm wallets\n const evmWalletAdapters = user.linkedAccounts\n .filter(\n (it) =>\n it.type === \"wallet\" &&\n (it as WalletWithMetadata).chainType === \"ethereum\",\n )\n .map((it) => {\n const account = it as WalletWithMetadata;\n const wallet = evmWallets.find((w) => w.address === account.address);\n return new PrivyEvmWalletAdapter(\n account,\n wallet,\n signEvmMessage,\n signEvmTransaction,\n sendEvmTransaction,\n );\n });\n\n // owned solana wallets\n const solanaWalletAdapters = user.linkedAccounts\n .filter(\n (it) =>\n it.type === \"wallet\" &&\n (it as WalletWithMetadata).chainType === \"solana\",\n )\n .map((it) => {\n const account = it as WalletWithMetadata;\n const wallet = solanaWallets.find((w) => w.address === account.address);\n return new PrivySolanaWalletAdapter(\n account,\n wallet,\n signSolanaMessage,\n signSolanaTransaction,\n signAndSendSolanaTransaction,\n );\n });\n\n const walletAdapters = [...evmWalletAdapters, ...solanaWalletAdapters];\n return walletAdapters;\n }, [\n user?.linkedAccounts,\n evmWallets,\n solanaWallets,\n signEvmMessage,\n signEvmTransaction,\n sendEvmTransaction,\n signSolanaMessage,\n signSolanaTransaction,\n signAndSendSolanaTransaction,\n ]);\n\n // wallet connector status\n const status = useMemo(() => {\n // is detecting authentication status\n if (!authReady) return \"detecting\";\n // is detecting connected wallets\n if (!evmReady || !solanaReady) return \"detecting\";\n // is signing in to privy, this is the step of connecting to a wallet\n if (isSigningIn) return \"connecting\";\n // is signing out from privy, this is the step of disconnecting from all wallets\n if (isSigningOut) return \"disconnecting\";\n // is not authenticated, can't connect any wallets\n if (!authenticated || !user) return \"disconnected\";\n // is authenticated, but no wallets are connected\n return \"connected\";\n }, [authReady, evmReady, solanaReady, authenticated, user?.linkedAccounts]);\n\n const signIn = useCallback(async () => {\n setIsSigningIn(true);\n try {\n login();\n } catch (error) {\n // TODO make error human readable\n console.error(error);\n } finally {\n setIsSigningIn(false);\n }\n }, [login]);\n\n const signOut = useCallback(async () => {\n setIsSigningOut(true);\n try {\n // TODO fix: await logout is halting\n // await logout();\n logout();\n } catch (error) {\n // TODO make error human readable\n console.error(error);\n } finally {\n setIsSigningOut(false);\n }\n }, [logout]);\n\n return (\n <WalletConnectorProvider\n status={status}\n // all user's wallets, which can be used to take onchain actions when connected\n wallets={wallets}\n // connect to the first wallet by signing in to privy\n connect={signIn}\n // disconnect from all wallets by signing out from privy\n disconnect={signOut}\n >\n {children}\n </WalletConnectorProvider>\n );\n}\n","import { PropsWithChildren } from \"react\";\nimport { PrivyProvider, type PrivyClientConfig } from \"@privy-io/react-auth\";\nimport { toSolanaWalletConnectors } from \"@privy-io/react-auth/solana\";\nimport { WalletConnectorAdapter } from \"./WalletConnectorAdapter\";\n\nexport type PrivyWalletConnectorProviderProps = PropsWithChildren<{\n privyAppId: string;\n privyClientId?: string;\n privyClientConfig?: PrivyClientConfig;\n}>;\n\nexport function PrivyWalletConnectorProvider({\n privyAppId,\n privyClientId,\n privyClientConfig,\n children,\n}: PrivyWalletConnectorProviderProps) {\n return (\n <PrivyProvider\n appId={privyAppId}\n clientId={privyClientId}\n config={{\n externalWallets: {\n solana: {\n connectors: toSolanaWalletConnectors({\n shouldAutoConnect: true,\n }),\n },\n },\n ...privyClientConfig,\n }}\n >\n <WalletConnectorAdapter>{children}</WalletConnectorAdapter>\n </PrivyProvider>\n );\n}\n\nPrivyWalletConnectorProvider.displayName = \"PrivyWalletConnectorProvider\";\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@liberfi.io/wallet-connector-privy",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "Privy wallet connector for Liberfi React SDK",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
"ethers": "^6.15.0",
|
|
25
25
|
"react": "^19.1.1",
|
|
26
26
|
"react-dom": "^19.1.1",
|
|
27
|
-
"@liberfi.io/core": "0.1.
|
|
28
|
-
"@liberfi.io/hooks": "0.1.
|
|
29
|
-
"@liberfi.io/types": "0.1.
|
|
27
|
+
"@liberfi.io/core": "0.1.5",
|
|
28
|
+
"@liberfi.io/hooks": "0.1.5",
|
|
29
|
+
"@liberfi.io/types": "0.1.5"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"@babel/core": "^7.22.9",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"rimraf": "^5.0.5",
|
|
39
39
|
"tsup": "^8.5.0",
|
|
40
40
|
"typescript": "^5.9.2",
|
|
41
|
-
"tsconfig": "0.1.
|
|
41
|
+
"tsconfig": "0.1.4"
|
|
42
42
|
},
|
|
43
43
|
"publishConfig": {
|
|
44
44
|
"access": "public"
|