@particle-network/wallet-plugin
Version:
8 lines (7 loc) • 13.4 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../src/index.ts", "../../src/version.ts", "../../src/wallet.ts", "../../src/createSolanaWallet.ts"],
"sourcesContent": ["export * from '@particle-network/wallet';\nexport * from './version';\nexport * from './wallet';\n", "export const version = '2.1.1';\n", "import { isEVMChain, isSolanaChain, type Evaluate, type SolanaProvider } from '@particle-network/connector-core';\nimport { createPlugin, type Plugin } from '@particle-network/plugin-core';\nimport {\n walletEntryPlugin,\n type CustomMessageType,\n type EthereumProvider,\n type SolanaWallet,\n type WalletCore,\n type WalletEntryPlugin,\n type WalletOption,\n} from '@particle-network/wallet';\nimport { createSolanaWallet } from './createSolanaWallet';\n\nexport type WalletPlugin = Plugin<WalletEntryPlugin, void, WalletPluginProperties>;\n\nexport type OpenWalletParamers = Evaluate<Parameters<WalletEntryPlugin['openWallet']>[0]>;\nexport type GetWalletIFrameParamers = Evaluate<Parameters<WalletEntryPlugin['getWalletIFrame']>[0]>;\nexport type InitParamers = Evaluate<Omit<WalletOption, 'widgetIntegration' | 'entryPosition' | 'visible' | 'preload'>>;\n\nexport type WalletPluginProperties = {\n getWalletIFrame: (parameters?: GetWalletIFrameParamers) => ReturnType<WalletEntryPlugin['getWalletIFrame']>;\n openWallet: (parameters?: OpenWalletParamers) => void;\n destory: () => void;\n init: (parameters?: InitParamers) => void;\n overrideWalletOption: (parameters: Evaluate<Parameters<WalletEntryPlugin['overrideWalletOption']>[0]>) => void;\n};\n\nexport type WalletPluginParamers = Evaluate<\n Pick<WalletOption, 'widgetIntegration' | 'entryPosition' | 'visible' | 'preload' | 'themeType' | 'walletUrl'> & {\n customStyle?: Omit<WalletOption['customStyle'], 'supportChains'>;\n }\n>;\n\nenum MessageType {\n OpenAccountAndSecurity = 'open-account-and-security',\n GetUserInfo = 'get-user-info',\n GetPasskeyOption = 'get-passkey-option',\n}\n\nexport const wallet = (parameters: WalletPluginParamers = {}) => {\n const { widgetIntegration, entryPosition, visible, preload, themeType, customStyle, walletUrl } = parameters;\n\n return createPlugin<WalletEntryPlugin, void, WalletPluginProperties>((config) => ({\n get id() {\n return 'wallet';\n },\n get name() {\n return 'Particle Wallet';\n },\n getPlugin() {\n return walletEntryPlugin;\n },\n async onConnect(connection) {\n const connector = connection[0].connector;\n const provider: any = await connector.getProvider();\n const walletCore: WalletCore = {};\n if (connector.type === 'particleAuth') {\n if (connector.chainType === 'evm') {\n walletCore.ethereum = provider as EthereumProvider;\n } else {\n walletCore.solana = provider as SolanaWallet;\n }\n } else {\n if (connector.chainType === 'evm') {\n walletCore.ethereum = provider as unknown as EthereumProvider;\n } else {\n if ((this.getPlugin().walletCore?.solana as any)?.provider == provider) {\n walletCore.solana = this.getPlugin().walletCore?.solana;\n } else {\n const chainId = await connector.getChainId();\n walletCore.solana = createSolanaWallet(provider as SolanaProvider, chainId);\n }\n }\n }\n if (\n this.getPlugin().walletCore?.ethereum != walletCore.ethereum ||\n this.getPlugin().walletCore?.solana != walletCore.solana\n ) {\n // set custom event handler\n if (connector.type === 'particleAuth') {\n const customEventHandler = async (messageType: CustomMessageType) => {\n if (messageType === MessageType.OpenAccountAndSecurity) {\n (window as any).particle?._internal?.openAccountAndSecurity();\n } else if (messageType === MessageType.GetUserInfo) {\n return await (window as any).particle?._internal.getUserInfo();\n }\n };\n customEventHandler.type = 'auth' as const;\n walletCore.customEventHandler = customEventHandler;\n } else if (provider.isPasskey && provider.getPasskeyOption) {\n // passkey + aa\n const customEventHandler = async (messageType: string) => {\n if (messageType === MessageType.GetPasskeyOption) {\n const option = await await provider.getPasskeyOption();\n return option;\n }\n };\n customEventHandler.type = 'passkey' as const;\n walletCore.customEventHandler = customEventHandler;\n }\n\n const validChains = config.chains.filter((chain) =>\n connector.chainType === 'evm' ? isEVMChain(chain) : isSolanaChain(chain)\n );\n this.getPlugin().overrideWalletOption({\n entryPosition,\n visible,\n preload,\n customStyle: {\n ...this.getPlugin().walletOptions?.customStyle,\n supportChains: validChains.map((chain) => ({\n id: chain.id,\n chainType: connector.chainType,\n })),\n },\n });\n\n console.log('wallet plugin setWalletCore', walletCore);\n this.getPlugin().setWalletCore(walletCore);\n this.getPlugin().walletEntryCreate();\n } else {\n if (!this.getPlugin().walletCreated) {\n const validChains = config.chains.filter((chain) =>\n connector.chainType === 'evm' ? isEVMChain(chain) : isSolanaChain(chain)\n );\n this.getPlugin().overrideWalletOption({\n customStyle: {\n ...this.getPlugin()?.walletOptions?.customStyle,\n supportChains: validChains.map((chain) => ({\n id: chain.id,\n chainType: connector.chainType,\n })),\n },\n });\n this.getPlugin().walletEntryCreate();\n }\n }\n },\n async onDisconnect() {\n this.getPlugin().walletEntryDestroy();\n },\n getWalletIFrame(parameters) {\n return this.getPlugin().getWalletIFrame(parameters);\n },\n openWallet(parameters) {\n return this.getPlugin().openWallet(parameters);\n },\n destory() {\n this.getPlugin().destroy();\n },\n init(parameters) {\n this.getPlugin().init(config.projectConfig, {\n // \u53EF\u4EE5\u88AB\u8986\u76D6\n entryPosition,\n visible,\n preload,\n\n ...parameters,\n widgetIntegration,\n walletUrl,\n themeType: themeType ?? parameters?.themeType,\n customStyle: {\n ...parameters?.customStyle,\n ...customStyle,\n },\n });\n },\n overrideWalletOption(parameters) {\n const mergeOptions = {\n // \u53EF\u4EE5\u88AB\u8986\u76D6\n entryPosition,\n visible,\n preload,\n\n ...parameters,\n widgetIntegration,\n themeType: themeType ?? parameters?.themeType,\n customStyle: {\n ...parameters?.customStyle,\n ...customStyle,\n supportChains:\n parameters?.customStyle?.supportChains || this.getPlugin().walletOptions.customStyle?.supportChains,\n },\n };\n console.log('wallet plugin overrideWalletOption', mergeOptions);\n this.getPlugin().overrideWalletOption(mergeOptions);\n },\n }));\n};\n", "import { getChain, sendSolanaTransaction, type SolanaProvider } from '@particle-network/connector-core';\nimport type { SolanaWallet } from '@particle-network/wallet';\nimport type { Transaction, VersionedTransaction } from '@solana/web3.js';\n\nexport const createSolanaWallet = (\n provider: SolanaProvider,\n chainId: number\n): SolanaWallet & { provider: SolanaProvider } => {\n return {\n provider,\n publicKey: provider.publicKey,\n chainId: chainId || 101,\n on(event, listener) {\n provider.on(event, listener);\n return this;\n },\n removeListener(event, listener) {\n provider.removeListener(event, listener);\n return this;\n },\n async connect() {\n await provider.connect();\n },\n async signTransaction<T extends Transaction | VersionedTransaction>(transaction: T): Promise<T> {\n return await provider.signTransaction(transaction);\n },\n async signAllTransactions<T extends Transaction | VersionedTransaction>(transactions: T[]): Promise<T[]> {\n return await provider.signAllTransactions(transactions);\n },\n async signAndSendTransaction<T extends Transaction | VersionedTransaction>(\n transaction: T\n ): Promise<{\n signature: string;\n }> {\n const chain = getChain(chainId);\n const module = await import('@solana/web3.js');\n const { Connection } = module.default || module;\n const connection = new Connection(chain.rpcUrls.default.http[0]!);\n return await sendSolanaTransaction(provider, transaction, connection);\n },\n async signMessage(message: Uint8Array): Promise<{\n signature: Uint8Array;\n }> {\n return await provider.signMessage(message);\n },\n async switchChain(chainId: number) {\n throw new Error('Wallet not support switch chain.');\n },\n };\n};\n"],
"mappings": "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",
"names": ["chainId", "_a", "_b", "_c", "parameters"]
}