@welshman/feeds
A package for building and executing dynamic Nostr feeds which provides a declarative way to define complex feed compositions using set operations (union, intersection, difference) and various filtering mechanisms.
Read the spec on the NIPs repository.
What's Included
- Feed Core - Declarative feed definition with composable operations
- Feed Compiler - Transforms feed definitions into optimized relay requests
- Feed Controller - Manages feed execution and event loading
- Feed Utils - Helper functions for creating and manipulating feeds
- Feed Types - Supports authors, kinds, tags, DVMs, lists, WOT, and more
Quick Example
javascript
// Define a feed using set operations
const feed = intersectionFeed(
unionFeed(
dvmFeed({
kind: 5300,
pubkey: '19b78ccfa7c5e31e6bacbb3f2a1703f64b62017702e584440bf29a7e16263e8c',
}),
listFeed("10003:19ba654f26afd4930fd3d51baf4e26f1413b7aeec7190cd6c0cdf4d2f14cec6b:"),
)
wotFeed({min: 0.1}),
scopeFeed("global"),
)
// Create a controller, providing required context via FeedOptions
const controller = new FeedController({
feed,
request,
requestDVM,
getPubkeysForScope,
getPubkeysForWOTRange,
onEvent: event => console.log("Event", event),
onExhausted: () => console.log("Exhausted"),
})
// Load notes using the feed
const events = await controller.load(10)
Installation
bash
npm install @welshman/feeds