@particle-network/auth-connectors 3.0.0-alpha.1 → 3.0.0-alpha.3

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.js CHANGED
@@ -530,7 +530,7 @@ function authWalletConnectors(parameters = {}) {
530
530
  }
531
531
 
532
532
  // src/version.ts
533
- var version = "3.0.0-alpha.1";
533
+ var version = "3.0.0-alpha.3";
534
534
  export {
535
535
  auth,
536
536
  authWalletConnectors,
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/store.ts", "../src/getClient.ts", "../src/getConnection.ts", "../src/particleEvm.ts", "../src/particleSolana.ts", "../src/types.ts", "../src/version.ts"],
4
- "sourcesContent": ["import { AuthType } from '@particle-network/auth-core';\nimport { AuthCoreContextProvider, type AuthCoreModalOptions, type CustomStyle } from '@particle-network/authkit';\nimport {\n ChainNotConfiguredError,\n createEmitter,\n createWalletConnector,\n isEVMChain,\n isSolanaChain,\n type ChainType,\n type ClientType,\n type Connector,\n type ConnectorEventMap,\n type CreateConnectorFn,\n type EVMChain,\n type Prettify,\n type WalletConnectorsOption,\n} from '@particle-network/connector-core';\nimport { createStore } from 'zustand/vanilla';\nimport { getPublicClient } from './getClient';\nimport { getConnection } from './getConnection';\nimport { particleEvm } from './particleEvm';\nimport { particleSolana } from './particleSolana';\nimport { auth } from './types';\n\ntype AuthConnectorsOption = WalletConnectorsOption & {\n projectId: string;\n clientKey: string;\n appId: string;\n};\n\ntype AuthTypeValue = `${AuthType}`;\n\nexport type AuthWalletParameters = Prettify<\n Pick<AuthCoreModalOptions, 'language' | 'fiatCoin' | 'promptSettingConfig'> & {\n authTypes?: (AuthTypeValue | AuthType)[];\n overrides?: {\n customStyle?: CustomStyle;\n };\n }\n>;\n\nauthWalletConnectors.type = 'particleAuth' as const;\nexport function authWalletConnectors(parameters: AuthWalletParameters = {}) {\n const { authTypes, fiatCoin, promptSettingConfig, overrides, language } = parameters;\n if (authTypes && authTypes.length === 0) {\n throw new Error('authTypes cannot be empty.');\n }\n type Properties = {\n authOptions: AuthCoreModalOptions;\n supportAuthTypes: readonly [AuthType, ...AuthType[]];\n AuthCoreContextProvider: (props: {\n options: AuthCoreModalOptions;\n children: React.ReactNode;\n }) => React.ReactElement;\n } & { auth: typeof auth };\n\n const supportAuthTypes = (authTypes as AuthType[]) || Object.values(AuthType);\n\n return createWalletConnector<AuthConnectorsOption, Properties>((options) => {\n const { chains: _chains, storage, projectId, clientKey, appId } = options;\n const chains = createStore(() => _chains);\n\n function setup(connectorFn: CreateConnectorFn): Connector {\n // Set up emitter and add to connector so they are \"linked\" together.\n const emitter = createEmitter<ConnectorEventMap>();\n const result = connectorFn({ emitter, chains: _chains, storage });\n const connector = {\n ...result,\n emitter,\n uid: emitter.uid,\n chainType: result.id.toLowerCase().includes('evm') ? ('evm' as const) : ('solana' as const),\n walletConnectorType: authWalletConnectors.type,\n };\n connector.setup?.();\n return connector;\n }\n\n const storeData: CreateConnectorFn[] = [];\n if (_chains.some(isEVMChain)) {\n storeData.push(particleEvm());\n }\n if (_chains.some(isSolanaChain)) {\n storeData.push(particleSolana());\n }\n\n const connectors = createStore(() => storeData.map(setup));\n\n function getClient<chainType extends ChainType = EVMChain>(chainId: number): ClientType<chainType> {\n const chain = chains.getState().find((chain) => chain.id === chainId);\n if (!chain) {\n throw new ChainNotConfiguredError();\n }\n if (isEVMChain(chain)) {\n return getPublicClient(chain) as ClientType<chainType>;\n }\n\n return getConnection(chain) as ClientType<chainType>;\n }\n\n return {\n get type() {\n return authWalletConnectors.type;\n },\n get chains() {\n return chains.getState();\n },\n get connectors() {\n return connectors.getState();\n },\n store: connectors,\n getClient,\n supportAuthTypes: supportAuthTypes as unknown as readonly [AuthType, ...AuthType[]],\n authOptions: {\n projectId,\n clientKey,\n appId,\n authTypes: supportAuthTypes,\n fiatCoin,\n language,\n promptSettingConfig,\n supportEIP6963: false,\n customStyle: {\n zIndex: 2147500000,\n ...overrides?.customStyle,\n },\n wallet: false,\n chains: _chains,\n },\n AuthCoreContextProvider,\n _internal: {\n connectors: {\n setup,\n },\n },\n auth,\n };\n });\n}\n", "import { createPublicClient, http, type Chain, type PublicClient } from 'viem';\n\nconst clients = new Map<number, PublicClient>();\n\nexport function getPublicClient(chain: Chain): PublicClient {\n {\n const client = clients.get(chain.id);\n if (client) return client;\n }\n\n const client = createPublicClient({\n chain,\n transport: http(),\n });\n clients.set(chain.id, client);\n\n return client;\n}\n", "import { Connection, type Commitment, type ConnectionConfig } from '@solana/web3.js';\nimport type { Chain } from 'viem';\n\nconst clients = new Map<number, Connection>();\n\nexport function getConnection(chain: Chain, commitmentOrConfig?: Commitment | ConnectionConfig): Connection {\n {\n const client = clients.get(chain.id);\n if (client) return client;\n }\n\n const client = new Connection(chain.rpcUrls.default.http[0]!, commitmentOrConfig);\n\n clients.set(chain.id, client);\n\n return client;\n}\n", "import type {\n ConnectParam,\n ConnectWithEmailParam,\n ConnectWithPhoneParam,\n ConnectWithProvider,\n} from '@particle-network/auth-core';\nimport {\n ChainNotConfiguredError,\n ProviderNotFoundError,\n SwitchChainError,\n UserRejectedRequestError,\n createConnector,\n isEVMChain,\n numberToHex,\n type Connector,\n type RpcError,\n} from '@particle-network/connector-core';\nimport { type EVMProvider } from './types';\n\ntype ConnectOptions = Omit<ConnectParam, 'chain'> & { chainId?: number; isReconnecting?: boolean };\n\nparticleEvm.type = 'particleAuth' as const;\nexport function particleEvm() {\n type Provider = EVMProvider | undefined;\n\n type Properties = {\n connect(options?: ConnectOptions): Promise<{\n accounts: readonly string[];\n chainId: number;\n }>;\n };\n\n let accountsChanged: Connector['onAccountsChanged'] | undefined;\n let chainChanged: Connector['onChainChanged'] | undefined;\n let disconnect: Connector['onDisconnect'] | undefined;\n\n return createConnector<Provider, Properties>((config) => ({\n get icon() {\n return 'https://static.particle.network/logo-small.png';\n },\n get id() {\n return 'particleEVM';\n },\n get name() {\n return 'Particle Auth';\n },\n type: particleEvm.type,\n async connect(options: ConnectOptions) {\n const { chainId, isReconnecting } = options;\n const provider = await this.getProvider();\n if (!provider) throw new ProviderNotFoundError();\n\n if ((options as ConnectWithPhoneParam).phone && !(options as ConnectWithPhoneParam).code) {\n throw new Error('Paramers error, need code.');\n }\n\n if ((options as ConnectWithEmailParam).email && !(options as ConnectWithEmailParam).code) {\n throw new Error('Paramers error, need code.');\n }\n\n if ((options as ConnectWithProvider).provider && !(options as ConnectWithProvider).thirdpartyCode) {\n throw new Error('Paramers error, need thirdpartyCode.');\n }\n\n let accounts: readonly string[] = [];\n accounts = await this.getAccounts().catch(() => []);\n\n try {\n if (!accounts?.length && !isReconnecting) {\n accounts = await provider.connect({\n ...options,\n chain: chainId ? config.chains.filter(isEVMChain).find((chain) => chain.id === chainId) : undefined,\n });\n }\n\n // Manage EIP-1193 event listeners\n // https://eips.ethereum.org/EIPS/eip-1193#events\n if (!accountsChanged) {\n accountsChanged = this.onAccountsChanged!.bind(this);\n provider.on('accountsChanged', accountsChanged);\n }\n if (!chainChanged) {\n chainChanged = this.onChainChanged.bind(this);\n provider.on('chainChanged', chainChanged);\n }\n if (!disconnect) {\n disconnect = this.onDisconnect.bind(this);\n provider.on('disconnect', disconnect);\n }\n\n // Switch to chain if provided\n let currentChainId = await this.getChainId();\n if (chainId && currentChainId !== chainId) {\n const chain = await this.switchChain!({ chainId }).catch((error) => {\n if (error.code === UserRejectedRequestError.code) throw error;\n return { id: currentChainId };\n });\n currentChainId = chain?.id ?? currentChainId;\n }\n\n return { accounts, chainId: currentChainId };\n } catch (err) {\n const error = err as RpcError;\n if (error.code === UserRejectedRequestError.code) throw new UserRejectedRequestError(error);\n throw error;\n }\n },\n async disconnect() {\n const provider = await this.getProvider();\n if (!provider) throw new ProviderNotFoundError();\n\n // Manage EIP-1193 event listeners\n if (chainChanged) {\n provider.removeListener('chainChanged', chainChanged);\n chainChanged = undefined;\n }\n if (disconnect) {\n provider.removeListener('disconnect', disconnect);\n disconnect = undefined;\n }\n\n await provider.disconnect();\n },\n async getAccounts() {\n const provider = await this.getProvider();\n if (!provider) throw new ProviderNotFoundError();\n const accounts = await provider.request({ method: 'eth_accounts' });\n return accounts;\n },\n async getChainId() {\n const provider = await this.getProvider();\n if (!provider) throw new ProviderNotFoundError();\n const hexChainId = await provider.request({ method: 'eth_chainId' });\n return Number(hexChainId);\n },\n async getProvider() {\n if (typeof window === 'undefined') return undefined;\n const provider: Provider = window.particle?.ethereum;\n return provider;\n },\n async isAuthorized() {\n try {\n const provider = await this.getProvider();\n if (!provider) {\n throw new ProviderNotFoundError();\n }\n if (provider.isSocialConnecting) {\n const timeout = 3_0000; // social login timeout\n await Promise.race([\n ...(typeof window !== 'undefined'\n ? [\n new Promise<boolean>((resolve) =>\n window.addEventListener('particle:socialConnectCompleted', () => resolve(true), { once: true })\n ),\n ]\n : []),\n new Promise<boolean>((resolve) => setTimeout(() => resolve(true), timeout)),\n ]);\n }\n\n const accounts = await this.getAccounts();\n return !!accounts.length;\n } catch {\n return false;\n }\n },\n /**\n * particle does not support adding chains\n */\n async switchChain({ chainId }) {\n const provider = await this.getProvider();\n if (!provider) throw new ProviderNotFoundError();\n\n const chain = config.chains.filter(isEVMChain).find((x) => x.id === chainId);\n if (!chain) throw new SwitchChainError(new ChainNotConfiguredError());\n\n try {\n await Promise.all([\n provider\n .request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: numberToHex(chainId) }],\n })\n .then(async () => {\n const currentChainId = await this.getChainId();\n if (currentChainId === chainId) config.emitter.emit('change', { chainId });\n }),\n new Promise<void>((resolve) =>\n config.emitter.once('change', ({ chainId: currentChainId }) => {\n if (currentChainId === chainId) resolve();\n })\n ),\n ]);\n\n return chain;\n } catch (err) {\n const error = err as RpcError;\n if (error.code === UserRejectedRequestError.code) throw new UserRejectedRequestError(error);\n throw new SwitchChainError(error);\n }\n },\n async onAccountsChanged(accounts) {\n // Disconnect if there are no accounts\n if (accounts.length === 0) this.onDisconnect();\n // Regular change event\n else\n config.emitter.emit('change', {\n accounts,\n });\n },\n onChainChanged(chain) {\n const chainId = Number(chain);\n config.emitter.emit('change', { chainId });\n },\n async onDisconnect() {\n const provider = await this.getProvider();\n\n config.emitter.emit('disconnect');\n\n // Manage EIP-1193 event listeners\n if (provider) {\n if (chainChanged) {\n provider.removeListener('chainChanged', chainChanged);\n chainChanged = undefined;\n }\n if (disconnect) {\n provider.removeListener('disconnect', disconnect);\n disconnect = undefined;\n }\n }\n },\n isInstalled() {\n return true;\n },\n }));\n}\n", "import type {\n ConnectParam,\n ConnectWithEmailParam,\n ConnectWithPhoneParam,\n ConnectWithProvider,\n} from '@particle-network/auth-core';\nimport {\n ChainNotConfiguredError,\n ProviderNotFoundError,\n SwitchChainError,\n UserRejectedRequestError,\n createConnector,\n isSolanaChain,\n type Connector,\n type RpcError,\n} from '@particle-network/connector-core';\nimport { type SolanaWallet } from './types';\n\ntype ConnectOptions = Omit<ConnectParam, 'chain'> & { chainId?: number; isReconnecting?: boolean };\n\nparticleSolana.type = 'particleAuth' as const;\nexport function particleSolana() {\n type Provider = SolanaWallet | undefined;\n\n type Properties = {\n connect(options?: ConnectOptions): Promise<{\n accounts: readonly string[];\n chainId: number;\n }>;\n };\n\n let accountsChanged: Connector['onAccountsChanged'] | undefined;\n let chainChanged: Connector['onChainChanged'] | undefined;\n let disconnect: Connector['onDisconnect'] | undefined;\n\n return createConnector<Provider, Properties>((config) => ({\n get icon() {\n return 'https://static.particle.network/logo-small.png';\n },\n get id() {\n return 'particleSolana';\n },\n get name() {\n return 'Particle Auth';\n },\n type: particleSolana.type,\n async connect(options: ConnectOptions) {\n const { chainId, isReconnecting } = options;\n const provider = await this.getProvider();\n if (!provider) throw new ProviderNotFoundError();\n\n if ((options as ConnectWithPhoneParam).phone && !(options as ConnectWithPhoneParam).code) {\n throw new Error('Paramers error, need code.');\n }\n\n if ((options as ConnectWithEmailParam).email && !(options as ConnectWithEmailParam).code) {\n throw new Error('Paramers error, need code.');\n }\n\n if ((options as ConnectWithProvider).provider && !(options as ConnectWithProvider).thirdpartyCode) {\n throw new Error('Paramers error, need thirdpartyCode.');\n }\n\n let accounts: readonly string[] = [];\n accounts = await this.getAccounts().catch(() => []);\n\n try {\n if (!isReconnecting) {\n // \u5982\u679C\u5DF2\u7ECF\u767B\u5F55\u8FC7\uFF0C\u4E5F\u9700\u8981\u8C03\u7528\u8BE5\u65B9\u6CD5\n // 1. \u5F53\u6CA1\u6709\u521B\u5EFA\u94B1\u5305\u65F6\u4F1A\u81EA\u52A8\u521B\u5EFA\n // 2. \u5982\u679C\u5DF2\u7ECF\u767B\u5F55\u8FC7\u5207\u521B\u5EFA\u4E86\u94B1\u5305\uFF0C\u4F1A\u76F4\u63A5\u8FD4\u56DE\n // 3. \u6CA1\u767B\u5F55\u8FC7\u4F1A\u8C03\u7528\u767B\u5F55\u65B9\u6CD5\n await provider.connect({\n ...options,\n chain: chainId ? config.chains.filter(isSolanaChain).find((chain) => chain.id === chainId) : undefined,\n });\n accounts = [provider.selectedAddress!];\n } else {\n // \u91CD\u8FDE\u65F6\uFF0C\u5982\u679C\u94B1\u5305\u5DF2\u7ECF\u521B\u5EFA\u4E86\uFF0C\u9700\u8981\u8C03\u7528connect\u65B9\u6CD5\u521D\u59CB\u5316publicKey\n if (accounts.length && !provider.isConnected) {\n await provider.connect();\n }\n }\n\n if (!accountsChanged) {\n accountsChanged = this.onAccountsChanged!.bind(this);\n provider.on('accountsChanged', accountsChanged);\n }\n if (!chainChanged) {\n chainChanged = this.onChainChanged.bind(this);\n provider.on('chainChanged', chainChanged);\n }\n if (!disconnect) {\n disconnect = this.onDisconnect.bind(this);\n provider.on('disconnect', disconnect);\n }\n\n // Switch to chain if provided\n let currentChainId = await this.getChainId();\n if (chainId && currentChainId !== chainId) {\n const chain = await this.switchChain!({ chainId }).catch((error) => {\n if (error.code === UserRejectedRequestError.code) throw error;\n return { id: currentChainId };\n });\n currentChainId = chain?.id ?? currentChainId;\n }\n\n return { accounts, chainId: currentChainId };\n } catch (err) {\n const error = err as RpcError;\n if (error.code === UserRejectedRequestError.code) throw new UserRejectedRequestError(error);\n throw error;\n }\n },\n async disconnect() {\n const provider = await this.getProvider();\n if (!provider) throw new ProviderNotFoundError();\n\n // Manage EIP-1193 event listeners\n if (chainChanged) {\n provider.removeListener('chainChanged', chainChanged);\n chainChanged = undefined;\n }\n if (disconnect) {\n provider.removeListener('disconnect', disconnect);\n disconnect = undefined;\n }\n\n await provider.disconnect();\n },\n async getAccounts() {\n const provider = await this.getProvider();\n if (!provider) throw new ProviderNotFoundError();\n if (provider.selectedAddress) {\n return [provider.selectedAddress];\n }\n return [];\n },\n async getChainId() {\n const provider = await this.getProvider();\n if (!provider) throw new ProviderNotFoundError();\n if (config.chains.find((chain) => chain.id === provider.chainId)) {\n return provider.chainId;\n }\n const chainId = config.chains[0].id;\n await this.switchChain!({ chainId });\n return chainId;\n },\n async getProvider() {\n if (typeof window === 'undefined') return undefined;\n const provider: Provider = window.particle?.solana;\n return provider;\n },\n async isAuthorized() {\n try {\n const provider = await this.getProvider();\n if (!provider) {\n throw new ProviderNotFoundError();\n }\n if (provider.isSocialConnecting) {\n const timeout = 3_0000; // social login timeout\n await Promise.race([\n ...(typeof window !== 'undefined'\n ? [\n new Promise<boolean>((resolve) =>\n window.addEventListener('particle:socialConnectCompleted', () => resolve(true), { once: true })\n ),\n ]\n : []),\n new Promise<boolean>((resolve) => setTimeout(() => resolve(true), timeout)),\n ]);\n }\n\n const accounts = await this.getAccounts();\n return !!accounts.length;\n } catch {\n return false;\n }\n },\n async switchChain({ chainId }) {\n const provider = await this.getProvider();\n if (!provider) throw new ProviderNotFoundError();\n\n const chain = config.chains.filter(isSolanaChain).find((x) => x.id === chainId);\n if (!chain) throw new SwitchChainError(new ChainNotConfiguredError());\n\n try {\n await provider.switchChain(chainId);\n return chain;\n } catch (err) {\n const error = err as RpcError;\n if (error.code === UserRejectedRequestError.code) throw new UserRejectedRequestError(error);\n throw new SwitchChainError(error);\n }\n },\n async onAccountsChanged(accounts) {\n // Disconnect if there are no accounts\n if (accounts.length === 0) this.onDisconnect();\n // Regular change event\n else\n config.emitter.emit('change', {\n accounts,\n });\n },\n onChainChanged(chain) {\n const chainId = Number(chain);\n config.emitter.emit('change', { chainId });\n },\n async onDisconnect() {\n const provider = await this.getProvider();\n\n config.emitter.emit('disconnect');\n\n // Manage EIP-1193 event listeners\n if (provider) {\n if (chainChanged) {\n provider.removeListener('chainChanged', chainChanged);\n chainChanged = undefined;\n }\n if (disconnect) {\n provider.removeListener('disconnect', disconnect);\n disconnect = undefined;\n }\n }\n },\n isInstalled() {\n return true;\n },\n }));\n}\n", "import { getCloudflareTurnstileResponse, getConnectCaptcha, getLatestAuthType } from '@particle-network/auth-core';\nimport type { EVMProvider, SolanaWallet } from '@particle-network/authkit';\n\nconst auth = {\n getCloudflareTurnstileResponse,\n getConnectCaptcha,\n getLatestAuthType,\n};\n\ndeclare global {\n interface Window {\n particle?: {\n ethereum?: EVMProvider;\n solana?: SolanaWallet;\n };\n }\n}\n\nexport { auth, type EVMProvider, type SolanaWallet };\n", "export const version = '3.0.0-alpha.1';\n"],
4
+ "sourcesContent": ["import { AuthType } from '@particle-network/auth-core';\nimport { AuthCoreContextProvider, type AuthCoreModalOptions, type CustomStyle } from '@particle-network/authkit';\nimport {\n ChainNotConfiguredError,\n createEmitter,\n createWalletConnector,\n isEVMChain,\n isSolanaChain,\n type ChainType,\n type ClientType,\n type Connector,\n type ConnectorEventMap,\n type CreateConnectorFn,\n type EVMChain,\n type Prettify,\n type WalletConnectorsOption,\n} from '@particle-network/connector-core';\nimport { createStore } from 'zustand/vanilla';\nimport { getPublicClient } from './getClient';\nimport { getConnection } from './getConnection';\nimport { particleEvm } from './particleEvm';\nimport { particleSolana } from './particleSolana';\nimport { auth } from './types';\n\ntype AuthConnectorsOption = WalletConnectorsOption & {\n projectId: string;\n clientKey: string;\n appId: string;\n};\n\ntype AuthTypeValue = `${AuthType}`;\n\nexport type AuthWalletParameters = Prettify<\n Pick<AuthCoreModalOptions, 'language' | 'fiatCoin' | 'promptSettingConfig'> & {\n authTypes?: (AuthTypeValue | AuthType)[];\n overrides?: {\n customStyle?: CustomStyle;\n };\n }\n>;\n\nauthWalletConnectors.type = 'particleAuth' as const;\nexport function authWalletConnectors(parameters: AuthWalletParameters = {}) {\n const { authTypes, fiatCoin, promptSettingConfig, overrides, language } = parameters;\n if (authTypes && authTypes.length === 0) {\n throw new Error('authTypes cannot be empty.');\n }\n type Properties = {\n authOptions: AuthCoreModalOptions;\n supportAuthTypes: readonly [AuthType, ...AuthType[]];\n AuthCoreContextProvider: (props: {\n options: AuthCoreModalOptions;\n children: React.ReactNode;\n }) => React.ReactElement;\n } & { auth: typeof auth };\n\n const supportAuthTypes = (authTypes as AuthType[]) || Object.values(AuthType);\n\n return createWalletConnector<AuthConnectorsOption, Properties>((options) => {\n const { chains: _chains, storage, projectId, clientKey, appId } = options;\n const chains = createStore(() => _chains);\n\n function setup(connectorFn: CreateConnectorFn): Connector {\n // Set up emitter and add to connector so they are \"linked\" together.\n const emitter = createEmitter<ConnectorEventMap>();\n const result = connectorFn({ emitter, chains: _chains, storage });\n const connector = {\n ...result,\n emitter,\n uid: emitter.uid,\n chainType: result.id.toLowerCase().includes('evm') ? ('evm' as const) : ('solana' as const),\n walletConnectorType: authWalletConnectors.type,\n };\n connector.setup?.();\n return connector;\n }\n\n const storeData: CreateConnectorFn[] = [];\n if (_chains.some(isEVMChain)) {\n storeData.push(particleEvm());\n }\n if (_chains.some(isSolanaChain)) {\n storeData.push(particleSolana());\n }\n\n const connectors = createStore(() => storeData.map(setup));\n\n function getClient<chainType extends ChainType = EVMChain>(chainId: number): ClientType<chainType> {\n const chain = chains.getState().find((chain) => chain.id === chainId);\n if (!chain) {\n throw new ChainNotConfiguredError();\n }\n if (isEVMChain(chain)) {\n return getPublicClient(chain) as ClientType<chainType>;\n }\n\n return getConnection(chain) as ClientType<chainType>;\n }\n\n return {\n get type() {\n return authWalletConnectors.type;\n },\n get chains() {\n return chains.getState();\n },\n get connectors() {\n return connectors.getState();\n },\n store: connectors,\n getClient,\n supportAuthTypes: supportAuthTypes as unknown as readonly [AuthType, ...AuthType[]],\n authOptions: {\n projectId,\n clientKey,\n appId,\n authTypes: supportAuthTypes,\n fiatCoin,\n language,\n promptSettingConfig,\n supportEIP6963: false,\n customStyle: {\n zIndex: 2147500000,\n ...overrides?.customStyle,\n },\n wallet: false,\n chains: _chains,\n },\n AuthCoreContextProvider,\n _internal: {\n connectors: {\n setup,\n },\n },\n auth,\n };\n });\n}\n", "import { createPublicClient, http, type Chain, type PublicClient } from 'viem';\n\nconst clients = new Map<number, PublicClient>();\n\nexport function getPublicClient(chain: Chain): PublicClient {\n {\n const client = clients.get(chain.id);\n if (client) return client;\n }\n\n const client = createPublicClient({\n chain,\n transport: http(),\n });\n clients.set(chain.id, client);\n\n return client;\n}\n", "import { Connection, type Commitment, type ConnectionConfig } from '@solana/web3.js';\nimport type { Chain } from 'viem';\n\nconst clients = new Map<number, Connection>();\n\nexport function getConnection(chain: Chain, commitmentOrConfig?: Commitment | ConnectionConfig): Connection {\n {\n const client = clients.get(chain.id);\n if (client) return client;\n }\n\n const client = new Connection(chain.rpcUrls.default.http[0]!, commitmentOrConfig);\n\n clients.set(chain.id, client);\n\n return client;\n}\n", "import type {\n ConnectParam,\n ConnectWithEmailParam,\n ConnectWithPhoneParam,\n ConnectWithProvider,\n} from '@particle-network/auth-core';\nimport {\n ChainNotConfiguredError,\n ProviderNotFoundError,\n SwitchChainError,\n UserRejectedRequestError,\n createConnector,\n isEVMChain,\n numberToHex,\n type Connector,\n type RpcError,\n} from '@particle-network/connector-core';\nimport { type EVMProvider } from './types';\n\ntype ConnectOptions = Omit<ConnectParam, 'chain'> & { chainId?: number; isReconnecting?: boolean };\n\nparticleEvm.type = 'particleAuth' as const;\nexport function particleEvm() {\n type Provider = EVMProvider | undefined;\n\n type Properties = {\n connect(options?: ConnectOptions): Promise<{\n accounts: readonly string[];\n chainId: number;\n }>;\n };\n\n let accountsChanged: Connector['onAccountsChanged'] | undefined;\n let chainChanged: Connector['onChainChanged'] | undefined;\n let disconnect: Connector['onDisconnect'] | undefined;\n\n return createConnector<Provider, Properties>((config) => ({\n get icon() {\n return 'https://static.particle.network/logo-small.png';\n },\n get id() {\n return 'particleEVM';\n },\n get name() {\n return 'Particle Auth';\n },\n type: particleEvm.type,\n async connect(options: ConnectOptions) {\n const { chainId, isReconnecting } = options;\n const provider = await this.getProvider();\n if (!provider) throw new ProviderNotFoundError();\n\n if ((options as ConnectWithPhoneParam).phone && !(options as ConnectWithPhoneParam).code) {\n throw new Error('Paramers error, need code.');\n }\n\n if ((options as ConnectWithEmailParam).email && !(options as ConnectWithEmailParam).code) {\n throw new Error('Paramers error, need code.');\n }\n\n if ((options as ConnectWithProvider).provider && !(options as ConnectWithProvider).thirdpartyCode) {\n throw new Error('Paramers error, need thirdpartyCode.');\n }\n\n let accounts: readonly string[] = [];\n accounts = await this.getAccounts().catch(() => []);\n\n try {\n if (!accounts?.length && !isReconnecting) {\n accounts = await provider.connect({\n ...options,\n chain: chainId ? config.chains.filter(isEVMChain).find((chain) => chain.id === chainId) : undefined,\n });\n }\n\n // Manage EIP-1193 event listeners\n // https://eips.ethereum.org/EIPS/eip-1193#events\n if (!accountsChanged) {\n accountsChanged = this.onAccountsChanged!.bind(this);\n provider.on('accountsChanged', accountsChanged);\n }\n if (!chainChanged) {\n chainChanged = this.onChainChanged.bind(this);\n provider.on('chainChanged', chainChanged);\n }\n if (!disconnect) {\n disconnect = this.onDisconnect.bind(this);\n provider.on('disconnect', disconnect);\n }\n\n // Switch to chain if provided\n let currentChainId = await this.getChainId();\n if (chainId && currentChainId !== chainId) {\n const chain = await this.switchChain!({ chainId }).catch((error) => {\n if (error.code === UserRejectedRequestError.code) throw error;\n return { id: currentChainId };\n });\n currentChainId = chain?.id ?? currentChainId;\n }\n\n return { accounts, chainId: currentChainId };\n } catch (err) {\n const error = err as RpcError;\n if (error.code === UserRejectedRequestError.code) throw new UserRejectedRequestError(error);\n throw error;\n }\n },\n async disconnect() {\n const provider = await this.getProvider();\n if (!provider) throw new ProviderNotFoundError();\n\n // Manage EIP-1193 event listeners\n if (chainChanged) {\n provider.removeListener('chainChanged', chainChanged);\n chainChanged = undefined;\n }\n if (disconnect) {\n provider.removeListener('disconnect', disconnect);\n disconnect = undefined;\n }\n\n await provider.disconnect();\n },\n async getAccounts() {\n const provider = await this.getProvider();\n if (!provider) throw new ProviderNotFoundError();\n const accounts = await provider.request({ method: 'eth_accounts' });\n return accounts;\n },\n async getChainId() {\n const provider = await this.getProvider();\n if (!provider) throw new ProviderNotFoundError();\n const hexChainId = await provider.request({ method: 'eth_chainId' });\n return Number(hexChainId);\n },\n async getProvider() {\n if (typeof window === 'undefined') return undefined;\n const provider: Provider = window.particle?.ethereum;\n return provider;\n },\n async isAuthorized() {\n try {\n const provider = await this.getProvider();\n if (!provider) {\n throw new ProviderNotFoundError();\n }\n if (provider.isSocialConnecting) {\n const timeout = 3_0000; // social login timeout\n await Promise.race([\n ...(typeof window !== 'undefined'\n ? [\n new Promise<boolean>((resolve) =>\n window.addEventListener('particle:socialConnectCompleted', () => resolve(true), { once: true })\n ),\n ]\n : []),\n new Promise<boolean>((resolve) => setTimeout(() => resolve(true), timeout)),\n ]);\n }\n\n const accounts = await this.getAccounts();\n return !!accounts.length;\n } catch {\n return false;\n }\n },\n /**\n * particle does not support adding chains\n */\n async switchChain({ chainId }) {\n const provider = await this.getProvider();\n if (!provider) throw new ProviderNotFoundError();\n\n const chain = config.chains.filter(isEVMChain).find((x) => x.id === chainId);\n if (!chain) throw new SwitchChainError(new ChainNotConfiguredError());\n\n try {\n await Promise.all([\n provider\n .request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: numberToHex(chainId) }],\n })\n .then(async () => {\n const currentChainId = await this.getChainId();\n if (currentChainId === chainId) config.emitter.emit('change', { chainId });\n }),\n new Promise<void>((resolve) =>\n config.emitter.once('change', ({ chainId: currentChainId }) => {\n if (currentChainId === chainId) resolve();\n })\n ),\n ]);\n\n return chain;\n } catch (err) {\n const error = err as RpcError;\n if (error.code === UserRejectedRequestError.code) throw new UserRejectedRequestError(error);\n throw new SwitchChainError(error);\n }\n },\n async onAccountsChanged(accounts) {\n // Disconnect if there are no accounts\n if (accounts.length === 0) this.onDisconnect();\n // Regular change event\n else\n config.emitter.emit('change', {\n accounts,\n });\n },\n onChainChanged(chain) {\n const chainId = Number(chain);\n config.emitter.emit('change', { chainId });\n },\n async onDisconnect() {\n const provider = await this.getProvider();\n\n config.emitter.emit('disconnect');\n\n // Manage EIP-1193 event listeners\n if (provider) {\n if (chainChanged) {\n provider.removeListener('chainChanged', chainChanged);\n chainChanged = undefined;\n }\n if (disconnect) {\n provider.removeListener('disconnect', disconnect);\n disconnect = undefined;\n }\n }\n },\n isInstalled() {\n return true;\n },\n }));\n}\n", "import type {\n ConnectParam,\n ConnectWithEmailParam,\n ConnectWithPhoneParam,\n ConnectWithProvider,\n} from '@particle-network/auth-core';\nimport {\n ChainNotConfiguredError,\n ProviderNotFoundError,\n SwitchChainError,\n UserRejectedRequestError,\n createConnector,\n isSolanaChain,\n type Connector,\n type RpcError,\n} from '@particle-network/connector-core';\nimport { type SolanaWallet } from './types';\n\ntype ConnectOptions = Omit<ConnectParam, 'chain'> & { chainId?: number; isReconnecting?: boolean };\n\nparticleSolana.type = 'particleAuth' as const;\nexport function particleSolana() {\n type Provider = SolanaWallet | undefined;\n\n type Properties = {\n connect(options?: ConnectOptions): Promise<{\n accounts: readonly string[];\n chainId: number;\n }>;\n };\n\n let accountsChanged: Connector['onAccountsChanged'] | undefined;\n let chainChanged: Connector['onChainChanged'] | undefined;\n let disconnect: Connector['onDisconnect'] | undefined;\n\n return createConnector<Provider, Properties>((config) => ({\n get icon() {\n return 'https://static.particle.network/logo-small.png';\n },\n get id() {\n return 'particleSolana';\n },\n get name() {\n return 'Particle Auth';\n },\n type: particleSolana.type,\n async connect(options: ConnectOptions) {\n const { chainId, isReconnecting } = options;\n const provider = await this.getProvider();\n if (!provider) throw new ProviderNotFoundError();\n\n if ((options as ConnectWithPhoneParam).phone && !(options as ConnectWithPhoneParam).code) {\n throw new Error('Paramers error, need code.');\n }\n\n if ((options as ConnectWithEmailParam).email && !(options as ConnectWithEmailParam).code) {\n throw new Error('Paramers error, need code.');\n }\n\n if ((options as ConnectWithProvider).provider && !(options as ConnectWithProvider).thirdpartyCode) {\n throw new Error('Paramers error, need thirdpartyCode.');\n }\n\n let accounts: readonly string[] = [];\n accounts = await this.getAccounts().catch(() => []);\n\n try {\n if (!isReconnecting) {\n // \u5982\u679C\u5DF2\u7ECF\u767B\u5F55\u8FC7\uFF0C\u4E5F\u9700\u8981\u8C03\u7528\u8BE5\u65B9\u6CD5\n // 1. \u5F53\u6CA1\u6709\u521B\u5EFA\u94B1\u5305\u65F6\u4F1A\u81EA\u52A8\u521B\u5EFA\n // 2. \u5982\u679C\u5DF2\u7ECF\u767B\u5F55\u8FC7\u5207\u521B\u5EFA\u4E86\u94B1\u5305\uFF0C\u4F1A\u76F4\u63A5\u8FD4\u56DE\n // 3. \u6CA1\u767B\u5F55\u8FC7\u4F1A\u8C03\u7528\u767B\u5F55\u65B9\u6CD5\n await provider.connect({\n ...options,\n chain: chainId ? config.chains.filter(isSolanaChain).find((chain) => chain.id === chainId) : undefined,\n });\n accounts = [provider.selectedAddress!];\n } else {\n // \u91CD\u8FDE\u65F6\uFF0C\u5982\u679C\u94B1\u5305\u5DF2\u7ECF\u521B\u5EFA\u4E86\uFF0C\u9700\u8981\u8C03\u7528connect\u65B9\u6CD5\u521D\u59CB\u5316publicKey\n if (accounts.length && !provider.isConnected) {\n await provider.connect();\n }\n }\n\n if (!accountsChanged) {\n accountsChanged = this.onAccountsChanged!.bind(this);\n provider.on('accountsChanged', accountsChanged);\n }\n if (!chainChanged) {\n chainChanged = this.onChainChanged.bind(this);\n provider.on('chainChanged', chainChanged);\n }\n if (!disconnect) {\n disconnect = this.onDisconnect.bind(this);\n provider.on('disconnect', disconnect);\n }\n\n // Switch to chain if provided\n let currentChainId = await this.getChainId();\n if (chainId && currentChainId !== chainId) {\n const chain = await this.switchChain!({ chainId }).catch((error) => {\n if (error.code === UserRejectedRequestError.code) throw error;\n return { id: currentChainId };\n });\n currentChainId = chain?.id ?? currentChainId;\n }\n\n return { accounts, chainId: currentChainId };\n } catch (err) {\n const error = err as RpcError;\n if (error.code === UserRejectedRequestError.code) throw new UserRejectedRequestError(error);\n throw error;\n }\n },\n async disconnect() {\n const provider = await this.getProvider();\n if (!provider) throw new ProviderNotFoundError();\n\n // Manage EIP-1193 event listeners\n if (chainChanged) {\n provider.removeListener('chainChanged', chainChanged);\n chainChanged = undefined;\n }\n if (disconnect) {\n provider.removeListener('disconnect', disconnect);\n disconnect = undefined;\n }\n\n await provider.disconnect();\n },\n async getAccounts() {\n const provider = await this.getProvider();\n if (!provider) throw new ProviderNotFoundError();\n if (provider.selectedAddress) {\n return [provider.selectedAddress];\n }\n return [];\n },\n async getChainId() {\n const provider = await this.getProvider();\n if (!provider) throw new ProviderNotFoundError();\n if (config.chains.find((chain) => chain.id === provider.chainId)) {\n return provider.chainId;\n }\n const chainId = config.chains[0].id;\n await this.switchChain!({ chainId });\n return chainId;\n },\n async getProvider() {\n if (typeof window === 'undefined') return undefined;\n const provider: Provider = window.particle?.solana;\n return provider;\n },\n async isAuthorized() {\n try {\n const provider = await this.getProvider();\n if (!provider) {\n throw new ProviderNotFoundError();\n }\n if (provider.isSocialConnecting) {\n const timeout = 3_0000; // social login timeout\n await Promise.race([\n ...(typeof window !== 'undefined'\n ? [\n new Promise<boolean>((resolve) =>\n window.addEventListener('particle:socialConnectCompleted', () => resolve(true), { once: true })\n ),\n ]\n : []),\n new Promise<boolean>((resolve) => setTimeout(() => resolve(true), timeout)),\n ]);\n }\n\n const accounts = await this.getAccounts();\n return !!accounts.length;\n } catch {\n return false;\n }\n },\n async switchChain({ chainId }) {\n const provider = await this.getProvider();\n if (!provider) throw new ProviderNotFoundError();\n\n const chain = config.chains.filter(isSolanaChain).find((x) => x.id === chainId);\n if (!chain) throw new SwitchChainError(new ChainNotConfiguredError());\n\n try {\n await provider.switchChain(chainId);\n return chain;\n } catch (err) {\n const error = err as RpcError;\n if (error.code === UserRejectedRequestError.code) throw new UserRejectedRequestError(error);\n throw new SwitchChainError(error);\n }\n },\n async onAccountsChanged(accounts) {\n // Disconnect if there are no accounts\n if (accounts.length === 0) this.onDisconnect();\n // Regular change event\n else\n config.emitter.emit('change', {\n accounts,\n });\n },\n onChainChanged(chain) {\n const chainId = Number(chain);\n config.emitter.emit('change', { chainId });\n },\n async onDisconnect() {\n const provider = await this.getProvider();\n\n config.emitter.emit('disconnect');\n\n // Manage EIP-1193 event listeners\n if (provider) {\n if (chainChanged) {\n provider.removeListener('chainChanged', chainChanged);\n chainChanged = undefined;\n }\n if (disconnect) {\n provider.removeListener('disconnect', disconnect);\n disconnect = undefined;\n }\n }\n },\n isInstalled() {\n return true;\n },\n }));\n}\n", "import { getCloudflareTurnstileResponse, getConnectCaptcha, getLatestAuthType } from '@particle-network/auth-core';\nimport type { EVMProvider, SolanaWallet } from '@particle-network/authkit';\n\nconst auth = {\n getCloudflareTurnstileResponse,\n getConnectCaptcha,\n getLatestAuthType,\n};\n\ndeclare global {\n interface Window {\n particle?: {\n ethereum?: EVMProvider;\n solana?: SolanaWallet;\n };\n }\n}\n\nexport { auth, type EVMProvider, type SolanaWallet };\n", "export const version = '3.0.0-alpha.3';\n"],
5
5
  "mappings": "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",
6
6
  "names": ["ChainNotConfiguredError", "isEVMChain", "isSolanaChain", "client", "clients", "client", "ChainNotConfiguredError", "ProviderNotFoundError", "SwitchChainError", "UserRejectedRequestError", "createConnector", "isEVMChain", "isSolanaChain", "chain", "ChainNotConfiguredError"]
7
7
  }
@@ -1,4 +1,16 @@
1
- export declare function particleEvm(): any;
1
+ import type { ConnectParam } from '@particle-network/auth-core';
2
+ import { type EVMProvider } from './types';
3
+ type ConnectOptions = Omit<ConnectParam, 'chain'> & {
4
+ chainId?: number;
5
+ isReconnecting?: boolean;
6
+ };
7
+ export declare function particleEvm(): import("@particle-network/connector-core").CreateConnectorFn<EVMProvider | undefined, {
8
+ connect(options?: ConnectOptions): Promise<{
9
+ accounts: readonly string[];
10
+ chainId: number;
11
+ }>;
12
+ }, Record<string, unknown>>;
2
13
  export declare namespace particleEvm {
3
14
  var type: "particleAuth";
4
15
  }
16
+ export {};
@@ -1,4 +1,16 @@
1
- export declare function particleSolana(): any;
1
+ import type { ConnectParam } from '@particle-network/auth-core';
2
+ import { type SolanaWallet } from './types';
3
+ type ConnectOptions = Omit<ConnectParam, 'chain'> & {
4
+ chainId?: number;
5
+ isReconnecting?: boolean;
6
+ };
7
+ export declare function particleSolana(): import("@particle-network/connector-core").CreateConnectorFn<SolanaWallet | undefined, {
8
+ connect(options?: ConnectOptions): Promise<{
9
+ accounts: readonly string[];
10
+ chainId: number;
11
+ }>;
12
+ }, Record<string, unknown>>;
2
13
  export declare namespace particleSolana {
3
14
  var type: "particleAuth";
4
15
  }
16
+ export {};
@@ -1,6 +1,6 @@
1
1
  import { AuthType } from '@particle-network/auth-core';
2
2
  import { type AuthCoreModalOptions, type CustomStyle } from '@particle-network/authkit';
3
- import { type Prettify } from '@particle-network/connector-core';
3
+ import { type Prettify, type WalletConnectorsOption } from '@particle-network/connector-core';
4
4
  type AuthTypeValue = `${AuthType}`;
5
5
  export type AuthWalletParameters = Prettify<Pick<AuthCoreModalOptions, 'language' | 'fiatCoin' | 'promptSettingConfig'> & {
6
6
  authTypes?: (AuthTypeValue | AuthType)[];
@@ -8,7 +8,7 @@ export type AuthWalletParameters = Prettify<Pick<AuthCoreModalOptions, 'language
8
8
  customStyle?: CustomStyle;
9
9
  };
10
10
  }>;
11
- export declare function authWalletConnectors(parameters?: AuthWalletParameters): any;
11
+ export declare function authWalletConnectors(parameters?: AuthWalletParameters): import("@particle-network/connector-core").CreateWalletConnectorFn<WalletConnectorsOption, Record<string, unknown>>;
12
12
  export declare namespace authWalletConnectors {
13
13
  var type: "particleAuth";
14
14
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@particle-network/auth-connectors",
3
- "version": "3.0.0-alpha.1",
3
+ "version": "3.0.0-alpha.3",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -46,12 +46,12 @@
46
46
  "typegen:watch": "tsc --emitDeclarationOnly --watch"
47
47
  },
48
48
  "dependencies": {
49
- "@particle-network/authkit": "^3.0.0-alpha.2",
49
+ "@particle-network/authkit": "^3.0.0-alpha.5",
50
50
  "@particle-network/connector-core": "^3.0.0-alpha.0"
51
51
  },
52
52
  "devDependencies": {
53
53
  "@types/react": "^19",
54
54
  "@types/react-dom": "^19"
55
55
  },
56
- "gitHead": "9796edf4a0ad1fab5a3da8415841e93444af1310"
56
+ "gitHead": "c6433ef2d8ac05d80bbfffb303689e4e547b2158"
57
57
  }