54 lines
1.2 KiB
Markdown
54 lines
1.2 KiB
Markdown
# Diff
|
|
|
|
Efficient event synchronization using NIP-77 Negentropy protocol.
|
|
|
|
## Core Classes
|
|
|
|
### `Difference`
|
|
|
|
Handles negentropy synchronization with a single relay for a single filter.
|
|
|
|
**Events:**
|
|
- `DifferenceEvent.Message` - Emitted with `{have, need}` arrays and relay URL
|
|
- `DifferenceEvent.Error` - Emitted when sync fails
|
|
- `DifferenceEvent.Close` - Emitted when sync completes
|
|
|
|
**Methods:**
|
|
- `close()` - Stop synchronization and cleanup
|
|
|
|
## Functions
|
|
|
|
### `diff(options)`
|
|
|
|
Check what events each relay has or needs compared to local events.
|
|
|
|
**Returns:** Array of `{relay, have, need}` objects - `have` are events the relay has that you don't, `need` are events you have that the relay doesn't.
|
|
|
|
### `pull(options)`
|
|
|
|
Fetch missing events after comparing with relays.
|
|
|
|
**Returns:** Array of retrieved events.
|
|
|
|
### `push(options)`
|
|
|
|
Publish local events that relays are missing.
|
|
|
|
## Example
|
|
|
|
```typescript
|
|
// Check what events each relay has/needs
|
|
const results = await diff({
|
|
relays: ['wss://relay1.com', 'wss://relay2.com'],
|
|
filters: [{kinds: [1], authors: ['pubkey...']}],
|
|
events: localEvents
|
|
})
|
|
|
|
// Pull events that relays have but we don't
|
|
const newEvents = await pull({
|
|
relays: ['wss://relay1.com'],
|
|
filters: [{kinds: [1]}],
|
|
events: localEvents
|
|
})
|
|
```
|