Nostr Address
The Address module provides utilities for working with Nostr Addresses (NIP-19 naddr format) and handles the conversion between different address formats.
Address Class
typescript
class Address {
constructor(
readonly kind: number, // Event kind
readonly pubkey: string, // Author's public key
readonly identifier: string, // Unique identifier (d-tag)
readonly relays?: string[], // Optional relay hints
)
}
Creating Addresses
From Components
typescript
const address = new Address(
30023, // kind (e.g., long-form article)
'ab82...123', // pubkey
'my-article-title', // identifier
['wss://relay.example.com'] // relays
)
From String Format
typescript
// Parse "kind:pubkey:identifier" format
const address = Address.from('30023:ab82...123:my-article-title')
// With optional relays
const address = Address.from(
'30023:ab82...123:my-article-title',
['wss://relay.example.com']
)
From Naddr
typescript
// Parse naddr format
const address = Address.fromNaddr('naddr1...')
From Event
typescript
const address = Address.fromEvent(event, relays)
Converting Addresses
To String
typescript
const address = new Address(kind, pubkey, identifier)
address.toString() // => "kind:pubkey:identifier"
To Naddr
typescript
const address = new Address(kind, pubkey, identifier, relays)
address.toNaddr() // => "naddr1..."
Utility Functions
Check Address Format
typescript
// Check if string is valid address format
Address.isAddress('30023:abc...123:title') // => true
Address.isAddress('not-an-address') // => false
Get Address from Event
typescript
import { getAddress } from '@welshman/util'
// Extract address from event
const address = getAddress(event)
Examples
Working with Long-form Content
typescript
// Create address for article
const articleAddress = new Address(
30023, // Long-form content kind
authorPubkey,
'my-article-slug',
['wss://relay.example.com']
)
// Convert to string format for storage
const addressString = articleAddress.toString()
// Convert to naddr for sharing
const shareableAddress = articleAddress.toNaddr()
Handling Replaceable Events
typescript
// Create address from replaceable event
const address = Address.fromEvent(event)
// Store latest version using address as key
storage.set(address.toString(), event)