diff --git a/packages/feeds/core.ts b/packages/feeds/core.ts index 64badbc..f48de88 100644 --- a/packages/feeds/core.ts +++ b/packages/feeds/core.ts @@ -15,7 +15,6 @@ export enum FeedType { Relay = "relay", Scope = "scope", Search = "search", - SymmetricDifference = "symmetric_difference", Tag = "tag", Union = "union", } @@ -81,7 +80,6 @@ export type WOTFeed = [type: FeedType.WOT, ...items: WOTItem[]] export type RelayFeed = [type: FeedType.Relay, ...urls: string[]] export type ScopeFeed = [type: FeedType.Scope, ...scopes: Scope[]] export type SearchFeed = [type: FeedType.Search, ...searches: string[]] -export type SymmetricDifferenceFeed = [type: FeedType.SymmetricDifference, ...feeds: Feed[]] export type TagFeed = [type: FeedType.Tag, key: string, ...values: string[]] export type UnionFeed = [type: FeedType.Union, ...feeds: Feed[]] @@ -100,7 +98,6 @@ export type Feed = RelayFeed | ScopeFeed | SearchFeed | - SymmetricDifferenceFeed | TagFeed | UnionFeed diff --git a/packages/feeds/loader.ts b/packages/feeds/loader.ts index 52cf343..ab24496 100644 --- a/packages/feeds/loader.ts +++ b/packages/feeds/loader.ts @@ -29,8 +29,6 @@ export class FeedLoader { return this._getDifferenceLoader(feed as Feed[], loadOpts) case FeedType.Intersection: return this._getIntersectionLoader(feed as Feed[], loadOpts) - case FeedType.SymmetricDifference: - return this._getSymmetricDifferenceLoader(feed as Feed[], loadOpts) case FeedType.Union: return this._getUnionLoader(feed as Feed[], loadOpts) default: @@ -210,48 +208,6 @@ export class FeedLoader { } } - async _getSymmetricDifferenceLoader(feeds: Feed[], {onEvent, onExhausted}: LoadOpts) { - const exhausted = new Set() - const counts = new Map() - const events: E[] = [] - const seen = new Set() - - const loaders = await Promise.all( - feeds.map((feed: Feed, i: number) => - this.getLoader(feed, { - onExhausted: () => exhausted.add(i), - onEvent: (event: E) => { - events.push(event) - counts.set(event.id, inc(counts.get(event.id))) - }, - }) - ) - ) - - return async (limit: number) => { - await Promise.all( - loaders.map(async (loader: Loader, i: number) => { - if (exhausted.has(i)) { - return - } - - await loader(limit) - }) - ) - - for (const event of events.values()) { - if (counts.get(event.id) === 1 && !seen.has(event.id)) { - onEvent?.(event) - seen.add(event.id) - } - } - - if (exhausted.size === loaders.length) { - onExhausted?.() - } - } - } - async _getUnionLoader(feeds: Feed[], {onEvent, onExhausted}: LoadOpts) { const exhausted = new Set() const seen = new Set() diff --git a/packages/feeds/utils.ts b/packages/feeds/utils.ts index 2d6d43b..82e2d7f 100644 --- a/packages/feeds/utils.ts +++ b/packages/feeds/utils.ts @@ -18,7 +18,6 @@ import { RelayFeed, ScopeFeed, SearchFeed, - SymmetricDifferenceFeed, TagFeed, UnionFeed, TagFeedMapping, @@ -44,7 +43,6 @@ export const makeWOTFeed = (...items: WOTItem[]): WOTFeed export const makeRelayFeed = (...urls: string[]): RelayFeed => [FeedType.Relay, ...urls] export const makeScopeFeed = (...scopes: Scope[]): ScopeFeed => [FeedType.Scope, ...scopes] export const makeSearchFeed = (...searches: string[]): SearchFeed => [FeedType.Search, ...searches] -export const makeSymmetricDifferenceFeed = (...feeds: Feed[]): SymmetricDifferenceFeed => [FeedType.SymmetricDifference, ...feeds] export const makeTagFeed = (key: string, ...values: string[]): TagFeed => [FeedType.Tag, key, ...values] export const makeUnionFeed = (...feeds: Feed[]): UnionFeed => [FeedType.Union, ...feeds] @@ -62,11 +60,10 @@ export const isWOTFeed = (feed: Feed): feed is WOTFeed export const isRelayFeed = (feed: Feed): feed is RelayFeed => feed[0] === FeedType.Relay export const isScopeFeed = (feed: Feed): feed is ScopeFeed => feed[0] === FeedType.Scope export const isSearchFeed = (feed: Feed): feed is SearchFeed => feed[0] === FeedType.Search -export const isSymmetricDifferenceFeed = (feed: Feed): feed is SymmetricDifferenceFeed => feed[0] === FeedType.SymmetricDifference export const isTagFeed = (feed: Feed): feed is TagFeed => feed[0] === FeedType.Tag export const isUnionFeed = (feed: Feed): feed is UnionFeed => feed[0] === FeedType.Union -export function getFeedArgs(feed: IntersectionFeed | UnionFeed | DifferenceFeed | SymmetricDifferenceFeed): Feed[] +export function getFeedArgs(feed: IntersectionFeed | UnionFeed | DifferenceFeed): Feed[] export function getFeedArgs(feed: AddressFeed | AuthorFeed | IDFeed | RelayFeed | SearchFeed): string[] export function getFeedArgs(feed: CreatedAtFeed): CreatedAtItem[] export function getFeedArgs(feed: ListFeed): ListItem[] @@ -81,7 +78,6 @@ export function getFeedArgs(feed: Feed) { case FeedType.Intersection: return feed.slice(1) as Feed[] case FeedType.Union: return feed.slice(1) as Feed[] case FeedType.Difference: return feed.slice(1) as Feed[] - case FeedType.SymmetricDifference: return feed.slice(1) as Feed[] case FeedType.Address: return feed.slice(1) as string[] case FeedType.Author: return feed.slice(1) as string[] case FeedType.ID: return feed.slice(1) as string[] @@ -98,13 +94,8 @@ export function getFeedArgs(feed: Feed) { } } -export const hasSubFeeds = (feed: Feed): feed is IntersectionFeed | UnionFeed | DifferenceFeed | SymmetricDifferenceFeed => - [ - FeedType.Union, - FeedType.Intersection, - FeedType.Difference, - FeedType.SymmetricDifference, - ].includes(feed[0]) +export const hasSubFeeds = (feed: Feed): feed is IntersectionFeed | UnionFeed | DifferenceFeed => + [FeedType.Union, FeedType.Intersection, FeedType.Difference].includes(feed[0]) export const defaultTagFeedMappings: TagFeedMapping[] = [ ['a', [FeedType.Address]],