From efa5307df125cbef2f94cc44a354b70af095939d Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Mon, 15 Apr 2024 17:19:29 -0700 Subject: [PATCH] Add getSubFeeds to feeds --- install.sh | 2 -- package-lock.json | 12 ++---------- packages/feeds/compiler.ts | 19 ++++++------------- packages/feeds/core.ts | 21 ++++++++++++++++++--- packages/feeds/package.json | 2 +- packages/network/package.json | 2 +- 6 files changed, 28 insertions(+), 30 deletions(-) diff --git a/install.sh b/install.sh index e2a6606..eac0aaa 100755 --- a/install.sh +++ b/install.sh @@ -1,7 +1,5 @@ #!/bin/bash -npm i - for upstream in $(ls packages); do version=$(sed -nr 's/ +"version": "(.+)",/\1/p' packages/$upstream/package.json) diff --git a/package-lock.json b/package-lock.json index 7726128..0116266 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3061,7 +3061,7 @@ }, "packages/feeds": { "name": "@coracle.social/feeds", - "version": "0.0.1", + "version": "0.0.2", "license": "MIT", "dependencies": { "@coracle.social/util": "0.0.8" @@ -3098,7 +3098,7 @@ }, "packages/network": { "name": "@coracle.social/network", - "version": "0.0.7", + "version": "0.0.8", "license": "MIT", "dependencies": { "@coracle.social/lib": "0.0.6", @@ -3113,14 +3113,6 @@ "typescript": "~5.1.6" } }, - "packages/network/node_modules/@scure/base": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.6.tgz", - "integrity": "sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, "packages/util": { "name": "@coracle.social/util", "version": "0.0.8", diff --git a/packages/feeds/compiler.ts b/packages/feeds/compiler.ts index 3be2d9c..297e7ad 100644 --- a/packages/feeds/compiler.ts +++ b/packages/feeds/compiler.ts @@ -2,31 +2,24 @@ import {uniq, now, isNil} from '@coracle.social/lib' import type {Rumor, Filter} from '@coracle.social/util' import {Tags, getIdFilters, mergeFilters} from '@coracle.social/util' import type {RequestItem, DVMItem, Scope, Feed, DynamicFilter, FeedOptions} from './core' -import {FeedType} from './core' +import {FeedType, getSubFeeds} from './core' export class FeedCompiler { constructor(readonly options: FeedOptions) {} - walk([type, ...feed]: Feed, visit: (feed: Feed) => void) { - visit([type, ...feed] as Feed) + walk(feed: Feed, visit: (feed: Feed) => void) { + visit(feed) - switch(type) { - case FeedType.Difference: - case FeedType.Intersection: - case FeedType.SymmetricDifference: - case FeedType.Union: - for (const subFeed of feed) { - this.walk(subFeed as Feed, visit) - } + for (const subFeed of getSubFeeds(feed)) { + this.walk(subFeed, visit) } } canCompile([type, ...feed]: Feed): boolean { switch(type) { case FeedType.Relay: - return (feed.slice(1) as Feed[]).every(this.canCompile) case FeedType.Union: - return (feed as Feed[]).every(this.canCompile) + return getSubFeeds([type, ...feed] as Feed).every(this.canCompile) case FeedType.Filter: case FeedType.List: case FeedType.LOL: diff --git a/packages/feeds/core.ts b/packages/feeds/core.ts index 202b757..fa36d9f 100644 --- a/packages/feeds/core.ts +++ b/packages/feeds/core.ts @@ -13,10 +13,11 @@ export enum FeedType { } export enum Scope { - Self = "self", - Global = "global", - Follows = "follows", Followers = "followers", + Follows = "follows", + Global = "global", + Network = "network", + Self = "self", } export type DynamicFilter = Filter & { @@ -59,6 +60,20 @@ export const listFeed = (...addresses: string[]) => [FeedType.List, ...addresses export const lolFeed = (...addresses: string[]) => [FeedType.LOL, ...addresses] as Feed export const dvmFeed = (...requests: DVMItem[]) => [FeedType.DVM, ...requests] as Feed +export const getSubFeeds = ([type, ...feed]: Feed): Feed[] => { + switch (type) { + case FeedType.Relay: + return feed.slice(1) as Feed[] + case FeedType.Difference: + case FeedType.Intersection: + case FeedType.SymmetricDifference: + case FeedType.Union: + return feed as Feed[] + default: + return [] + } +} + export type RequestItem = { relays: string[] filters: Filter[] diff --git a/packages/feeds/package.json b/packages/feeds/package.json index 91c279c..a06c0c8 100644 --- a/packages/feeds/package.json +++ b/packages/feeds/package.json @@ -1,6 +1,6 @@ { "name": "@coracle.social/feeds", - "version": "0.0.1", + "version": "0.0.2", "author": "hodlbod", "license": "MIT", "description": "Utilities for building dynamic nostr feeds.", diff --git a/packages/network/package.json b/packages/network/package.json index 54d313c..b2bf0b6 100644 --- a/packages/network/package.json +++ b/packages/network/package.json @@ -1,6 +1,6 @@ { "name": "@coracle.social/network", - "version": "0.0.7", + "version": "0.0.8", "author": "hodlbod", "license": "MIT", "description": "Utilities for connecting with nostr relays.",