1.0.8 โ€ข Published 7 months ago

@hermis/solana-headless-adapter-base v1.0.8

Weekly downloads
-
License
Apache-2.0
Repository
-
Last release
7 months ago

@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:

Try the Base Adapter Demo โ†’

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 arguement
  • initAdapters(adapters): Initialize adapters for use
  • selectAdapter(walletName): Select a wallet adapter by name
  • getWalletAdapters(readyState): Get adapters filtered by ready state
  • sortWalletAdapters(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

๐Ÿ“œ License

This project is licensed under Apache 2.0.

1.0.8

7 months ago

1.0.7

7 months ago

1.0.6

7 months ago

1.0.5

7 months ago

1.0.4

7 months ago

1.0.3

7 months ago

1.0.2

7 months ago

1.0.1

7 months ago

1.0.0

7 months ago