Add vitepress docs

This commit is contained in:
Ticruz
2025-02-04 14:43:40 +01:00
committed by Jon Staab
parent 43255bcb74
commit 94375a56ec
84 changed files with 10821 additions and 139 deletions
+72
View File
@@ -0,0 +1,72 @@
# Tracker
The Tracker is a simple but crucial class that keeps track of which relays an event was seen on or published to. It's essential for relay selection and event source tracking.
## Overview
```typescript
import {Tracker} from '@welshman/net'
const tracker = new Tracker()
// Track event source
tracker.track(eventId, relayUrl)
// Get relays for event
const relays = tracker.getRelays(eventId) // Set<string>
// Get events from relay
const events = tracker.getIds(relayUrl) // Set<string>
// Check specific relay
const seen = tracker.hasRelay(eventId, relayUrl)
```
## Used By
1. **Repository & Sync**
```typescript
// In sync operations
pull({
events,
relays,
onEvent: (event) => {
tracker.track(event.id, relay)
}
})
```
2. **Subscribe**
```typescript
// In @welshman/app subscribe
sub.on('event', (url, event) => {
// Track where we got the event
tracker.track(event.id, url)
})
```
3. **Publish**
```typescript
// In publish operations
pub.emitter.on('success', (url) => {
// Track where we published
tracker.track(event.id, url)
})
```
4. **Router**
```typescript
// Used for relay selection
const relays = tracker
.getRelays(event.id)
.filter(url =>
isHealthyRelay(url)
)
```
The Tracker:
- Maps events to their source relays
- Maps relays to their known events
- Helps optimize relay selection
Think of it as a memory of where events came from, helping make better decisions about where to find or publish events.