1.0.8 โข Published 7 months ago
@hermis/solana-headless-adapter-base v1.0.8
@hermis/solana-headless-adapter-base
๐ Overview
@hermis/solana-headless-adapter-base
provides the foundation for wallet adapter implementations in the Solana Headless SDK ecosystem. This package is completely framework-agnostic, allowing you to integrate Solana wallets with any UI framework or vanilla JavaScript.
โจ Features
- Framework Agnostic: Use with any UI framework or vanilla JavaScript
- Standard Wallet Support: Compatible with Wallet Standard interface
- Extensible: Easily build custom adapters on top of the base implementation
- Event-based Architecture: Subscribe to wallet events for reactive UIs
- Full TypeScript Support: Strong typing for developer experience
๐ฆ Installation
# Using pnpm (recommended)
pnpm add @hermis/solana-headless-adapter-base
# Using npm
npm install @hermis/solana-headless-adapter-base
# Using yarn
yarn add @hermis/solana-headless-adapter-base
๐งช Live Demo
Experience our framework-agnostic implementation in action:
This demo showcases how to use the base adapter with vanilla JavaScript, allowing you to connect to Solana wallets, manage wallet state, and interact with the Solana blockchain without any framework dependencies.
๐ Quick Start
import {
WalletAdapterManager,
getStandardWalletAdapters,
sortWalletAdapters
} from '@hermis/solana-headless-adapter-base';
import {
WalletAdapterNetwork,
createConnection
} from '@hermis/solana-headless-core';
import { PhantomWalletAdapter } from '@solana/wallet-adapter-phantom';
import { SolflareWalletAdapter } from '@solana/wallet-adapter-solflare';
const wallets = [
new PhantomWalletAdapter(),
new SolflareWalletAdapter()
// ... other wallets adapters
];
const adapters = getStandardWalletAdapters(wallets);
const connection = createConnection(WalletAdapterNetwork.Devnet);
const walletManager = new WalletAdapterManager(adapters);
walletManager.on('connect', (publicKey) => {
console.log('Connected to wallet:', publicKey.toBase58());
});
const phantomAdapter = adapters.find(adapter => adapter.name === 'Phantom');
if (phantomAdapter) {
walletManager.selectAdapter(phantomAdapter.name);
}
async function connectWallet() {
try {
const adapter = await walletManager.connect();
if (adapter) {
console.log('Successfully connected to', adapter.name);
}
} catch (error) {
console.error('Connection error:', error);
}
}
document.getElementById('connect-button').addEventListener('click', connectWallet);
๐ API Reference
Core Functions
getStandardWalletAdapters()
: Get all available standard wallet adapters including ones passed as an arguementinitAdapters(adapters)
: Initialize adapters for useselectAdapter(walletName)
: Select a wallet adapter by namegetWalletAdapters(readyState)
: Get adapters filtered by ready statesortWalletAdapters(adapters)
: Sort adapters by priority
WalletAdapterManager
The WalletAdapterManager
class provides a complete wallet management solution:
const manager = new WalletAdapterManager(adapters);
// Event subscription
manager.on('connect', handleConnect);
manager.on('disconnect', handleDisconnect);
manager.on('error', handleError);
// Wallet selection and connection
manager.selectAdapter('Phantom');
await manager.connect();
await manager.disconnect();
๐ ๏ธ Development
This package is part of the Solana Headless SDK monorepo.
# Clone the repository
git clone https://github.com/yourusername/solana-headless-sdk.git
# Install dependencies
pnpm install
# Build the adapter-base package
pnpm --filter "@hermis/solana-headless-adapter-base" build
๐ Related Packages
- @hermis/solana-headless-core: Core wallet functionality
- @hermis/solana-headless-react: React adapter implementation
๐ License
This project is licensed under Apache 2.0.