@d10r/wagmi-superfluid-wallet 0.1.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -0
- package/dist/index.cjs +543 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +28 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.js +537 -0
- package/dist/index.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/config.ts","../src/event-emitter.ts","../src/provider-store.ts","../src/enrichPopupRequest.ts","../src/prepareSignTransactionParams.ts","../src/resolvePopupParams.ts","../src/eip1193-provider.ts","../src/wagmi-get-client.ts","../src/connector.ts","../src/index.ts"],"names":["hexToBigInt","prepareTransactionRequest","numberToHex","createClient","createConnector","SwitchChainError","ChainNotConfiguredError","getAddress"],"mappings":"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","file":"index.cjs","sourcesContent":["export const DEFAULT_WALLET_URL = 'https://wallet.superfluid.org' as const\nexport const DEFAULT_CONNECTOR_ID = 'superfluidWallet' as const\nexport const DEFAULT_STORAGE_KEY = 'SF:EIP1193Provider:store' as const\nexport const DEFAULT_POPUP_TIMEOUT_MS = 300_000\n\nexport type SuperfluidWalletConfig = {\n /** Hosted wallet origin without trailing slash. Defaults to production wallet. */\n walletUrl?: string\n connectorId?: string\n storageKey?: string\n popupTimeoutMs?: number\n}\n\nexport type ResolvedSuperfluidWalletConfig = {\n walletUrl: string\n walletOrigin: string\n connectorId: string\n storageKey: string\n popupTimeoutMs: number\n}\n\nexport function resolveSuperfluidWalletConfig(\n config: SuperfluidWalletConfig = {}\n): ResolvedSuperfluidWalletConfig {\n const walletUrl = (config.walletUrl ?? DEFAULT_WALLET_URL).trim().replace(/\\/$/, '')\n let walletOrigin: string\n try {\n walletOrigin = new URL(walletUrl).origin\n } catch {\n throw new Error(`Invalid walletUrl: ${config.walletUrl ?? walletUrl}`)\n }\n\n return {\n walletUrl,\n walletOrigin,\n connectorId: config.connectorId ?? DEFAULT_CONNECTOR_ID,\n storageKey: config.storageKey ?? DEFAULT_STORAGE_KEY,\n popupTimeoutMs: config.popupTimeoutMs ?? DEFAULT_POPUP_TIMEOUT_MS,\n }\n}\n\nexport type SuperfluidWalletBridge = {\n connectorId: string\n connector: () => import('wagmi').CreateConnectorFn\n}\n","type Listener = (...args: unknown[]) => void\n\nexport class EventEmitter {\n private listeners = new Map<string, Set<Listener>>()\n\n on(event: string, listener: Listener): void {\n if (!this.listeners.has(event)) {\n this.listeners.set(event, new Set())\n }\n this.listeners.get(event)?.add(listener)\n }\n\n emit(event: string, ...args: unknown[]): void {\n for (const listener of this.listeners.get(event) ?? []) {\n listener(...args)\n }\n }\n\n removeListener(event: string, listener: Listener): void {\n this.listeners.get(event)?.delete(listener)\n }\n}\n","import { EventEmitter } from './event-emitter'\n\nexport interface ProviderStoreState {\n accounts: string[]\n organizationId?: string\n chainId?: number\n}\n\nexport type ProviderStore = {\n readonly storageKey: string\n getState: () => ProviderStoreState\n setChainId: (chainId: number) => void\n update: (updates: Partial<ProviderStoreState>) => void\n clear: () => void\n onAccountsChanged: (listener: (accounts: string[]) => void) => void\n onChainChanged: (listener: (chain: string) => void) => void\n}\n\nexport function createProviderStore(storageKey: string): ProviderStore {\n const eventEmitter = new EventEmitter()\n\n const getState = (): ProviderStoreState => {\n if (typeof localStorage === 'undefined') {\n return { accounts: [], organizationId: undefined, chainId: undefined }\n }\n const stored = localStorage.getItem(storageKey)\n return stored\n ? (JSON.parse(stored) as ProviderStoreState)\n : { accounts: [], organizationId: undefined, chainId: undefined }\n }\n\n const update = (updates: Partial<ProviderStoreState>) => {\n const current = getState()\n const next = { ...current, ...updates }\n if (typeof localStorage !== 'undefined') {\n localStorage.setItem(storageKey, JSON.stringify(next))\n }\n\n if (\n updates.accounts &&\n JSON.stringify(updates.accounts) !== JSON.stringify(current.accounts)\n ) {\n eventEmitter.emit('accountsChanged', updates.accounts)\n }\n if (updates.chainId !== undefined && updates.chainId !== current.chainId) {\n eventEmitter.emit('chainChanged', `0x${updates.chainId.toString(16)}`)\n }\n }\n\n return {\n storageKey,\n getState,\n setChainId: (chainId: number) => update({ chainId }),\n update,\n clear: () => {\n if (typeof localStorage !== 'undefined') {\n localStorage.removeItem(storageKey)\n }\n },\n onAccountsChanged: (listener) => {\n eventEmitter.on('accountsChanged', listener as (...args: unknown[]) => void)\n },\n onChainChanged: (listener) => {\n eventEmitter.on('chainChanged', listener as (...args: unknown[]) => void)\n },\n }\n}\n\nexport function getStoredChainIdHex(store: ProviderStore): `0x${string}` | undefined {\n const { chainId } = store.getState()\n if (chainId === undefined) return undefined\n return `0x${chainId.toString(16)}`\n}\n","/**\n * Pure helpers for popup wallet RPC requests (unit-testable).\n */\n\nexport function enrichSignTransactionParams(\n params: unknown,\n chainIdHex: `0x${string}` | undefined\n): unknown {\n const txParams = params as [Record<string, unknown>?] | undefined\n const transaction = txParams?.[0]\n if (!transaction) return params\n\n if (transaction.chainId !== undefined && transaction.chainId !== null) {\n return params\n }\n\n if (!chainIdHex) {\n throw new Error('No chain ID available. Select a network and retry.')\n }\n\n return [{ ...transaction, chainId: chainIdHex }]\n}\n\nexport function enrichPopupParams(\n method: string,\n params: unknown,\n chainIdHex: `0x${string}` | undefined\n): unknown {\n if (method === 'eth_signTransaction') {\n return enrichSignTransactionParams(params, chainIdHex)\n }\n return params\n}\n","import { type Address, type Client, type Hex, hexToBigInt } from 'viem'\nimport { prepareTransactionRequest } from 'viem/actions'\nimport { numberToHex } from 'viem/utils'\n\n/** Partial JSON-RPC tx from sdk-redux / wagmi before Superfluid Wallet signing. */\nexport type RpcTransactionLike = Record<string, unknown> & {\n from: Address\n to?: Address\n gas?: Hex\n gasLimit?: Hex\n maxFeePerGas?: Hex\n maxPriorityFeePerGas?: Hex\n nonce?: Hex | number\n value?: Hex\n chainId?: Hex | number\n data?: Hex\n}\n\nfunction toOptionalBigInt(value: unknown, field: string): bigint | undefined {\n if (value === undefined || value === null) return undefined\n if (typeof value === 'number') return BigInt(value)\n if (typeof value === 'string' && value.startsWith('0x')) {\n return hexToBigInt(value as Hex)\n }\n throw new Error(`Invalid ${field}: expected hex or number`)\n}\n\nexport function resolveChainIdFromTransaction(\n transaction: RpcTransactionLike,\n fallbackChainId?: number\n): number {\n const parsed = toOptionalBigInt(transaction.chainId, 'chainId')\n if (parsed !== undefined) return Number(parsed)\n if (fallbackChainId !== undefined) return fallbackChainId\n throw new Error('No chain ID available. Select a network and retry.')\n}\n\nexport type PreparedRpcTransaction = Record<string, string>\n\nexport type PrepareTransactionRequestFn = (\n client: Client,\n request: Parameters<typeof prepareTransactionRequest>[1]\n) => ReturnType<typeof prepareTransactionRequest>\n\n/**\n * Complete an EIP-1559 transaction before opening the Superfluid Wallet popup.\n */\nexport async function prepareSignTransactionParams(\n params: unknown,\n options: {\n fallbackChainId?: number\n client: Client\n prepareRequest?: PrepareTransactionRequestFn\n }\n): Promise<[PreparedRpcTransaction]> {\n const txParams = params as [RpcTransactionLike?] | undefined\n const transaction = txParams?.[0]\n if (!transaction) {\n throw new Error('Missing transaction for eth_signTransaction')\n }\n if (!transaction.from) {\n throw new Error('Transaction is missing from')\n }\n if (!transaction.to) {\n throw new Error('Transaction is missing to')\n }\n\n const chainId = resolveChainIdFromTransaction(transaction, options.fallbackChainId)\n const prepare = options.prepareRequest ?? prepareTransactionRequest\n\n const prepareRequest = {\n account: transaction.from,\n to: transaction.to,\n data: transaction.data,\n value: toOptionalBigInt(transaction.value, 'value'),\n gas: toOptionalBigInt(transaction.gas ?? transaction.gasLimit, 'gas'),\n maxFeePerGas: toOptionalBigInt(transaction.maxFeePerGas, 'maxFeePerGas'),\n maxPriorityFeePerGas: toOptionalBigInt(\n transaction.maxPriorityFeePerGas,\n 'maxPriorityFeePerGas'\n ),\n nonce:\n toOptionalBigInt(transaction.nonce, 'nonce') !== undefined\n ? Number(toOptionalBigInt(transaction.nonce, 'nonce'))\n : undefined,\n chainId,\n type: 'eip1559' as const,\n }\n\n const prepared = await prepare(\n options.client,\n // @ts-expect-error viem PrepareTransactionRequestParameters mismatch for dynamic RPC clients\n prepareRequest\n )\n\n if (\n prepared.gas === undefined ||\n prepared.maxFeePerGas === undefined ||\n prepared.maxPriorityFeePerGas === undefined ||\n prepared.nonce === undefined\n ) {\n throw new Error('Failed to prepare a complete EIP-1559 transaction')\n }\n\n const rpcTx: PreparedRpcTransaction = {\n from: transaction.from,\n to: prepared.to as string,\n gas: numberToHex(prepared.gas),\n maxFeePerGas: numberToHex(prepared.maxFeePerGas),\n maxPriorityFeePerGas: numberToHex(prepared.maxPriorityFeePerGas),\n nonce: numberToHex(BigInt(prepared.nonce)),\n value: prepared.value !== undefined ? numberToHex(prepared.value) : '0x0',\n chainId: numberToHex(BigInt(chainId)),\n }\n\n if (prepared.data) {\n rpcTx.data = prepared.data\n }\n\n return [rpcTx]\n}\n","import { enrichPopupParams } from './enrichPopupRequest'\nimport { prepareSignTransactionParams } from './prepareSignTransactionParams'\nimport type { WagmiGetClient } from './wagmi-get-client'\n\nexport async function resolvePopupParams(\n method: string,\n params: unknown,\n chainIdHex: `0x${string}` | undefined,\n getClient: WagmiGetClient\n): Promise<unknown> {\n if (method !== 'eth_signTransaction') {\n return enrichPopupParams(method, params, chainIdHex)\n }\n\n const fallbackChainId = chainIdHex ? Number.parseInt(chainIdHex, 16) : undefined\n if (fallbackChainId === undefined || Number.isNaN(fallbackChainId)) {\n throw new Error('No chain ID available. Select a network and retry.')\n }\n\n const client = getClient({ chainId: fallbackChainId })\n\n return prepareSignTransactionParams(params, {\n fallbackChainId,\n client,\n })\n}\n","import {\n EIP1193Provider,\n EIP1193RequestFn,\n EIP1474Methods,\n WalletRpcSchema,\n} from 'viem'\n\nimport type { ResolvedSuperfluidWalletConfig } from './config'\nimport { EventEmitter } from './event-emitter'\nimport { getStoredChainIdHex, type ProviderStore } from './provider-store'\nimport { resolvePopupParams } from './resolvePopupParams'\nimport './mock.types'\nimport { createWagmiGetClient, type WagmiGetClient } from './wagmi-get-client'\n\nconst POPUP_METHODS = new Set([\n 'eth_requestAccounts',\n 'eth_signTransaction',\n 'eth_sign',\n 'personal_sign',\n])\n\nconst PUBLIC_RPC_METHODS = new Set([\n 'eth_sendRawTransaction',\n 'eth_subscribe',\n 'eth_unsubscribe',\n 'eth_blobBaseFee',\n 'eth_blockNumber',\n 'eth_call',\n 'eth_coinbase',\n 'eth_estimateGas',\n 'eth_feeHistory',\n 'eth_gasPrice',\n 'eth_getBalance',\n 'eth_getBlockByHash',\n 'eth_getBlockByNumber',\n 'eth_getBlockReceipts',\n 'eth_getBlockTransactionCountByHash',\n 'eth_getBlockTransactionCountByNumber',\n 'eth_getCode',\n 'eth_getFilterChanges',\n 'eth_getFilterLogs',\n 'eth_getLogs',\n 'eth_getProof',\n 'eth_getStorageAt',\n 'eth_getTransactionByBlockHashAndIndex',\n 'eth_getTransactionByBlockNumberAndIndex',\n 'eth_getTransactionByHash',\n 'eth_getTransactionCount',\n 'eth_getTransactionReceipt',\n 'eth_getUncleCountByBlockHash',\n 'eth_getUncleCountByBlockNumber',\n 'eth_maxPriorityFeePerGas',\n 'eth_newBlockFilter',\n 'eth_newFilter',\n 'eth_newPendingTransactionFilter',\n 'eth_syncing',\n 'eth_uninstallFilter',\n])\n\nfunction requireStoredChainId(store: ProviderStore, context: string): number {\n const { chainId } = store.getState()\n if (chainId === undefined) {\n throw new Error(context)\n }\n return chainId\n}\n\nexport function createEIP1193Provider(\n config: ResolvedSuperfluidWalletConfig,\n store: ProviderStore,\n getClient: WagmiGetClient\n): EIP1193Provider {\n let popup: Window | null = null\n const eventEmitter = new EventEmitter()\n\n store.onAccountsChanged((accounts) => {\n eventEmitter.emit('accountsChanged', accounts)\n })\n store.onChainChanged((chain) => {\n eventEmitter.emit('chainChanged', chain)\n })\n\n const requestQueue: Record<\n string,\n {\n resolve: (value: unknown) => void\n reject: (reason?: unknown) => void\n }\n > = {}\n\n const handleMessage = (event: MessageEvent) => {\n if (event.origin !== config.walletOrigin || event.source !== popup) return\n const { method, result, error } = event.data\n\n if (method && requestQueue[method]) {\n if (error) {\n requestQueue[method].reject({\n code: error.code,\n message: error.message,\n data: error.data,\n })\n } else {\n if (method === 'eth_requestAccounts') {\n const { accounts, organizationId } = result[0]\n store.update({ accounts, organizationId })\n requestQueue[method].resolve(accounts)\n } else {\n requestQueue[method].resolve(result)\n }\n }\n delete requestQueue[method]\n }\n }\n\n if (typeof window !== 'undefined') {\n window.addEventListener('message', handleMessage)\n }\n\n const requestImpl = async (args: {\n method: string\n params?: unknown\n }): Promise<unknown> => {\n const { method, params } = args\n if (typeof window === 'undefined') {\n throw new Error('Window is not defined')\n }\n\n if (method === 'eth_sendTransaction') {\n const [transaction] = params as WalletRpcSchema[5]['Parameters']\n const signedTransaction = (await requestImpl({\n method: 'eth_signTransaction',\n params: [transaction],\n })) as `0x${string}`\n\n return requestImpl({\n method: 'eth_sendRawTransaction',\n params: [signedTransaction],\n })\n }\n\n if (method === 'eth_accounts') {\n return store.getState().accounts\n }\n\n if (method === 'eth_chainId') {\n const chainId = requireStoredChainId(\n store,\n 'No chain ID available. Connect a wallet and select a network first.'\n )\n return `0x${chainId.toString(16)}`\n }\n\n if (PUBLIC_RPC_METHODS.has(method)) {\n const chainId = requireStoredChainId(\n store,\n 'No chain ID available for RPC request. Select a network and retry.'\n )\n const client = getClient({ chainId })\n return (await client.request({\n method,\n params,\n } as Parameters<typeof client.request>[0])) as never\n }\n\n if (POPUP_METHODS.has(method)) {\n const mockHandler = window.__SUPERFLUID_WALLET_MOCK_HANDLER__\n if (mockHandler) {\n const popupParams = await resolvePopupParams(\n method,\n params,\n getStoredChainIdHex(store),\n getClient\n )\n const result = await Promise.resolve(mockHandler(method, popupParams))\n if (method === 'eth_requestAccounts') {\n const { accounts, organizationId } = (\n result as [{ accounts: string[]; organizationId: string }]\n )[0]\n store.update({ accounts, organizationId })\n return accounts\n }\n return result\n }\n\n if (popup && !popup.closed) {\n popup.close()\n popup = null\n }\n }\n\n if (!popup || popup.closed) {\n const width = 360\n const height = 600\n const left = window.screenX + (window.outerWidth - width) / 2\n const top = window.screenY + (window.outerHeight - height) / 2\n const { organizationId } = store.getState()\n const orgParam = organizationId ? `&organizationId=${organizationId}` : ''\n const chainIdHex = getStoredChainIdHex(store)\n const chainParam = chainIdHex ? `&chainId=${encodeURIComponent(chainIdHex)}` : ''\n const popupParams = await resolvePopupParams(method, params, chainIdHex, getClient)\n const dappOriginParam = `&dappOrigin=${encodeURIComponent(window.location.origin)}`\n\n popup = window.open(\n `${config.walletUrl}?request=${encodeURIComponent(JSON.stringify({ method, params: popupParams }))}${orgParam}${chainParam}${dappOriginParam}`,\n 'Superfluid Wallet',\n `width=${width},height=${height},left=${left},top=${top}`\n )\n\n if (!popup) {\n throw new Error('Popup blocked. Allow popups for this site and try again.')\n }\n }\n\n return new Promise<unknown>((resolve, reject) => {\n requestQueue[method] = { resolve, reject }\n\n setTimeout(() => {\n if (requestQueue[method]) {\n delete requestQueue[method]\n if (popup?.closed) {\n reject(new Error('Wallet popup was closed before the request completed.'))\n } else {\n reject(new Error('Wallet request timed out.'))\n }\n }\n }, config.popupTimeoutMs)\n })\n }\n\n return {\n request: requestImpl as EIP1193RequestFn<EIP1474Methods>,\n on: eventEmitter.on.bind(eventEmitter),\n removeListener: eventEmitter.removeListener.bind(eventEmitter),\n }\n}\n","import { createClient, type Chain, type Client, type Transport } from 'viem'\n\n/** Subset of wagmi connector `config` used for RPC. */\nexport type WagmiConnectorConfig = {\n chains: readonly Chain[]\n transports?: Record<number, Transport>\n}\n\nexport type WagmiGetClient = (parameters?: { chainId?: number }) => Client\n\nexport function createWagmiGetClient(wagmiConfig: WagmiConnectorConfig): WagmiGetClient {\n return (parameters) => {\n const chainId = parameters?.chainId\n if (chainId === undefined) {\n throw new Error('chainId is required to resolve a wagmi client')\n }\n return getClientForChain(wagmiConfig, chainId, 'wagmi client lookup failed')\n }\n}\n\nexport function getClientForChain(\n wagmiConfig: WagmiConnectorConfig,\n chainId: number,\n context: string\n): Client {\n const transport = wagmiConfig.transports?.[chainId]\n if (!transport) {\n throw new Error(\n `${context}: no wagmi transport for chain ${chainId}. Configure transports in createConfig.`\n )\n }\n\n const chain = wagmiConfig.chains.find((c) => c.id === chainId)\n if (!chain) {\n throw new Error(\n `${context}: chain ${chainId} is not configured in wagmi. Add it to createConfig({ chains }).`\n )\n }\n return createClient({ chain, transport })\n}\n","import { ChainNotConfiguredError } from '@wagmi/core'\nimport { SwitchChainError, type Address, type EIP1193Provider, getAddress } from 'viem'\nimport { type Connector, createConnector } from 'wagmi'\n\nimport type { ResolvedSuperfluidWalletConfig } from './config'\nimport { createEIP1193Provider } from './eip1193-provider'\nimport type { ProviderStore } from './provider-store'\nimport { createWagmiGetClient } from './wagmi-get-client'\n\nexport function createSuperfluidWalletConnector(\n config: ResolvedSuperfluidWalletConfig,\n store: ProviderStore\n) {\n return createConnector<EIP1193Provider>((wagmiConfig) => {\n let provider: EIP1193Provider | null = null\n let accountsChanged: Connector['onAccountsChanged'] | undefined\n let chainChanged: Connector['onChainChanged'] | undefined\n let disconnect: Connector['onDisconnect'] | undefined\n\n const getProvider = () => {\n if (!provider) {\n provider = createEIP1193Provider(config, store, createWagmiGetClient(wagmiConfig))\n }\n return provider\n }\n\n return {\n id: config.connectorId,\n name: 'Superfluid Wallet',\n type: 'superfluidWallet' as const,\n\n async connect(_params?: { chainId?: number; isReconnecting?: boolean }) {\n const initialChainId = _params?.chainId ?? wagmiConfig.chains[0]?.id\n if (initialChainId) {\n store.setChainId(initialChainId)\n }\n\n const p = (await this.getProvider()) as EIP1193Provider\n let accounts = _params?.isReconnecting\n ? ((await p.request({ method: 'eth_accounts' })) as Address[])\n : []\n if (!accounts.length) {\n accounts = (await p.request({ method: 'eth_requestAccounts' })) as Address[]\n }\n\n if (!accountsChanged) {\n accountsChanged = this.onAccountsChanged.bind(this)\n p.on('accountsChanged', accountsChanged)\n }\n if (!chainChanged) {\n chainChanged = this.onChainChanged.bind(this)\n p.on('chainChanged', chainChanged)\n }\n if (!disconnect) {\n disconnect = this.onDisconnect.bind(this)\n p.on('disconnect', disconnect)\n }\n\n const chainId = Number(await p.request({ method: 'eth_chainId' }))\n return { accounts, chainId } as never\n },\n\n async getProvider(): Promise<EIP1193Provider> {\n return getProvider()\n },\n\n async disconnect() {\n const p = (await this.getProvider()) as EIP1193Provider\n if (accountsChanged) {\n p.removeListener('accountsChanged', accountsChanged)\n accountsChanged = undefined\n }\n if (chainChanged) {\n p.removeListener('chainChanged', chainChanged)\n chainChanged = undefined\n }\n if (disconnect) {\n p.removeListener('disconnect', disconnect)\n disconnect = undefined\n }\n store.clear()\n },\n\n async getAccounts(): Promise<readonly Address[]> {\n const p = (await this.getProvider()) as EIP1193Provider\n return (await p.request({ method: 'eth_accounts' })) as Address[]\n },\n\n async getChainId() {\n const p = (await this.getProvider()) as EIP1193Provider\n return Number(await p.request({ method: 'eth_chainId' }))\n },\n\n async switchChain({ chainId }) {\n const chain = wagmiConfig.chains.find((x) => x.id === chainId)\n if (!chain) {\n throw new SwitchChainError(new ChainNotConfiguredError())\n }\n store.setChainId(chainId)\n return chain\n },\n\n async isAuthorized() {\n try {\n return (await this.getAccounts()).length > 0\n } catch {\n return false\n }\n },\n\n onAccountsChanged(accounts) {\n if (accounts.length === 0) this.onDisconnect()\n else {\n wagmiConfig.emitter.emit('change', {\n accounts: accounts.map((x) => getAddress(x)),\n })\n }\n },\n\n onChainChanged(chain) {\n const chainId = Number(chain)\n store.setChainId(chainId)\n wagmiConfig.emitter.emit('change', { chainId })\n },\n\n async onDisconnect() {\n wagmiConfig.emitter.emit('disconnect')\n store.clear()\n const p = (await this.getProvider()) as EIP1193Provider\n if (accountsChanged) {\n p.removeListener('accountsChanged', accountsChanged)\n accountsChanged = undefined\n }\n if (chainChanged) {\n p.removeListener('chainChanged', chainChanged)\n chainChanged = undefined\n }\n if (disconnect) {\n p.removeListener('disconnect', disconnect)\n disconnect = undefined\n }\n },\n }\n })\n}\n","import type { SuperfluidWalletBridge, SuperfluidWalletConfig } from './config'\nimport { resolveSuperfluidWalletConfig } from './config'\nimport { createSuperfluidWalletConnector } from './connector'\nimport { createProviderStore } from './provider-store'\n\nexport {\n DEFAULT_CONNECTOR_ID,\n DEFAULT_POPUP_TIMEOUT_MS,\n DEFAULT_STORAGE_KEY,\n DEFAULT_WALLET_URL,\n type ResolvedSuperfluidWalletConfig,\n type SuperfluidWalletBridge,\n type SuperfluidWalletConfig,\n} from './config'\n\nexport function superfluidWallet(config: SuperfluidWalletConfig = {}): SuperfluidWalletBridge {\n const resolved = resolveSuperfluidWalletConfig(config)\n const store = createProviderStore(resolved.storageKey)\n\n return {\n connectorId: resolved.connectorId,\n connector: () => createSuperfluidWalletConnector(resolved, store),\n }\n}\n"]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as wagmi from 'wagmi';
|
|
2
|
+
|
|
3
|
+
declare const DEFAULT_WALLET_URL: "https://wallet.superfluid.org";
|
|
4
|
+
declare const DEFAULT_CONNECTOR_ID: "superfluidWallet";
|
|
5
|
+
declare const DEFAULT_STORAGE_KEY: "SF:EIP1193Provider:store";
|
|
6
|
+
declare const DEFAULT_POPUP_TIMEOUT_MS = 300000;
|
|
7
|
+
type SuperfluidWalletConfig = {
|
|
8
|
+
/** Hosted wallet origin without trailing slash. Defaults to production wallet. */
|
|
9
|
+
walletUrl?: string;
|
|
10
|
+
connectorId?: string;
|
|
11
|
+
storageKey?: string;
|
|
12
|
+
popupTimeoutMs?: number;
|
|
13
|
+
};
|
|
14
|
+
type ResolvedSuperfluidWalletConfig = {
|
|
15
|
+
walletUrl: string;
|
|
16
|
+
walletOrigin: string;
|
|
17
|
+
connectorId: string;
|
|
18
|
+
storageKey: string;
|
|
19
|
+
popupTimeoutMs: number;
|
|
20
|
+
};
|
|
21
|
+
type SuperfluidWalletBridge = {
|
|
22
|
+
connectorId: string;
|
|
23
|
+
connector: () => wagmi.CreateConnectorFn;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
declare function superfluidWallet(config?: SuperfluidWalletConfig): SuperfluidWalletBridge;
|
|
27
|
+
|
|
28
|
+
export { DEFAULT_CONNECTOR_ID, DEFAULT_POPUP_TIMEOUT_MS, DEFAULT_STORAGE_KEY, DEFAULT_WALLET_URL, type ResolvedSuperfluidWalletConfig, type SuperfluidWalletBridge, type SuperfluidWalletConfig, superfluidWallet };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as wagmi from 'wagmi';
|
|
2
|
+
|
|
3
|
+
declare const DEFAULT_WALLET_URL: "https://wallet.superfluid.org";
|
|
4
|
+
declare const DEFAULT_CONNECTOR_ID: "superfluidWallet";
|
|
5
|
+
declare const DEFAULT_STORAGE_KEY: "SF:EIP1193Provider:store";
|
|
6
|
+
declare const DEFAULT_POPUP_TIMEOUT_MS = 300000;
|
|
7
|
+
type SuperfluidWalletConfig = {
|
|
8
|
+
/** Hosted wallet origin without trailing slash. Defaults to production wallet. */
|
|
9
|
+
walletUrl?: string;
|
|
10
|
+
connectorId?: string;
|
|
11
|
+
storageKey?: string;
|
|
12
|
+
popupTimeoutMs?: number;
|
|
13
|
+
};
|
|
14
|
+
type ResolvedSuperfluidWalletConfig = {
|
|
15
|
+
walletUrl: string;
|
|
16
|
+
walletOrigin: string;
|
|
17
|
+
connectorId: string;
|
|
18
|
+
storageKey: string;
|
|
19
|
+
popupTimeoutMs: number;
|
|
20
|
+
};
|
|
21
|
+
type SuperfluidWalletBridge = {
|
|
22
|
+
connectorId: string;
|
|
23
|
+
connector: () => wagmi.CreateConnectorFn;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
declare function superfluidWallet(config?: SuperfluidWalletConfig): SuperfluidWalletBridge;
|
|
27
|
+
|
|
28
|
+
export { DEFAULT_CONNECTOR_ID, DEFAULT_POPUP_TIMEOUT_MS, DEFAULT_STORAGE_KEY, DEFAULT_WALLET_URL, type ResolvedSuperfluidWalletConfig, type SuperfluidWalletBridge, type SuperfluidWalletConfig, superfluidWallet };
|