diff --git a/packages/feeds/package.json b/packages/feeds/package.json index 9ffed8e..5e3a23d 100644 --- a/packages/feeds/package.json +++ b/packages/feeds/package.json @@ -1,6 +1,6 @@ { "name": "@welshman/feeds", - "version": "0.0.11", + "version": "0.0.12", "author": "hodlbod", "license": "MIT", "description": "Utilities for building dynamic nostr feeds.", diff --git a/packages/feeds/src/compiler.ts b/packages/feeds/src/compiler.ts index d7e9db7..5e1450e 100644 --- a/packages/feeds/src/compiler.ts +++ b/packages/feeds/src/compiler.ts @@ -18,6 +18,7 @@ export class FeedCompiler { case FeedType.CreatedAt: case FeedType.DVM: case FeedType.ID: + case FeedType.Global: case FeedType.Kind: case FeedType.List: case FeedType.Label: @@ -48,6 +49,7 @@ export class FeedCompiler { case FeedType.Search: return this._compileSearches(getFeedArgs(feed)) case FeedType.WOT: return this._compileWot(getFeedArgs(feed)) case FeedType.Relay: return [{relays: getFeedArgs(feed)}] + case FeedType.Global: return [{filters: [{}]}] case FeedType.Tag: { const [key, ...value] = getFeedArgs(feed) diff --git a/packages/feeds/src/core.ts b/packages/feeds/src/core.ts index f48de88..c5ec273 100644 --- a/packages/feeds/src/core.ts +++ b/packages/feeds/src/core.ts @@ -8,6 +8,7 @@ export enum FeedType { Difference = "difference", ID = "id", Intersection = "intersection", + Global = "global", Kind = "kind", List = "list", Label = "label", @@ -73,6 +74,7 @@ export type DVMFeed = [type: FeedType.DVM, ...items: DVMItem[]] export type DifferenceFeed = [type: FeedType.Difference, ...feeds: Feed[]] export type IDFeed = [type: FeedType.ID, ...ids: string[]] export type IntersectionFeed = [type: FeedType.Intersection, ...feeds: Feed[]] +export type GlobalFeed = [type: FeedType.Global, ...feeds: Feed[]] export type KindFeed = [type: FeedType.Kind, ...kinds: number[]] export type ListFeed = [type: FeedType.List, ...items: ListItem[]] export type LabelFeed = [type: FeedType.Label, ...items: LabelItem[]] @@ -91,6 +93,7 @@ export type Feed = DifferenceFeed | IDFeed | IntersectionFeed | + GlobalFeed | KindFeed | ListFeed | LabelFeed | diff --git a/packages/feeds/src/utils.ts b/packages/feeds/src/utils.ts index 82e2d7f..2897296 100644 --- a/packages/feeds/src/utils.ts +++ b/packages/feeds/src/utils.ts @@ -11,6 +11,7 @@ import { DifferenceFeed, IDFeed, IntersectionFeed, + GlobalFeed, KindFeed, ListFeed, LabelFeed, @@ -36,6 +37,7 @@ export const makeDVMFeed = (...items: DVMItem[]): DVMFeed export const makeDifferenceFeed = (...feeds: Feed[]): DifferenceFeed => [FeedType.Difference, ...feeds] export const makeIDFeed = (...ids: string[]): IDFeed => [FeedType.ID, ...ids] export const makeIntersectionFeed = (...feeds: Feed[]): IntersectionFeed => [FeedType.Intersection, ...feeds] +export const makeGlobalFeed = (): GlobalFeed => [FeedType.Global] export const makeKindFeed = (...kinds: number[]): KindFeed => [FeedType.Kind, ...kinds] export const makeListFeed = (...items: ListItem[]): ListFeed => [FeedType.List, ...items] export const makeLabelFeed = (...items: LabelItem[]): LabelFeed => [FeedType.Label, ...items] @@ -53,6 +55,7 @@ export const isDVMFeed = (feed: Feed): feed is DVMFeed export const isDifferenceFeed = (feed: Feed): feed is DifferenceFeed => feed[0] === FeedType.Difference export const isIDFeed = (feed: Feed): feed is IDFeed => feed[0] === FeedType.ID export const isIntersectionFeed = (feed: Feed): feed is IntersectionFeed => feed[0] === FeedType.Intersection +export const isGlobalFeed = (feed: Feed): feed is GlobalFeed => feed[0] === FeedType.Global export const isKindFeed = (feed: Feed): feed is KindFeed => feed[0] === FeedType.Kind export const isListFeed = (feed: Feed): feed is ListFeed => feed[0] === FeedType.List export const isLabelFeed = (feed: Feed): feed is LabelFeed => feed[0] === FeedType.Label @@ -73,6 +76,7 @@ export function getFeedArgs(feed: WOTFeed): WOTItem[] export function getFeedArgs(feed: ScopeFeed): Scope[] export function getFeedArgs(feed: KindFeed): number[] export function getFeedArgs(feed: TagFeed): [string, ...string[]] +export function getFeedArgs(feed: GlobalFeed): [] export function getFeedArgs(feed: Feed) { switch (feed[0]) { case FeedType.Intersection: return feed.slice(1) as Feed[] @@ -91,6 +95,7 @@ export function getFeedArgs(feed: Feed) { case FeedType.WOT: return feed.slice(1) as WOTItem[] case FeedType.Scope: return feed.slice(1) as Scope[] case FeedType.Kind: return feed.slice(1) as number[] + case FeedType.Global: return feed.slice(1) as never[] } }