Re-work address
This commit is contained in:
@@ -2,22 +2,12 @@ import {uniq, identity, flatten, pushToMapKey, intersection, tryCatch, now} from
|
||||
import type {TrustedEvent, Filter} from '@welshman/util'
|
||||
import {Tags, intersectFilters, getAddress, getIdFilters, unionFilters} from '@welshman/util'
|
||||
import type {CreatedAtItem, RequestItem, ListItem, WOTItem, DVMItem, Scope, Feed, FeedOptions} from './core'
|
||||
import {hasSubFeeds, getFeedArgs, feedsFromTags} from './utils'
|
||||
import {getFeedArgs, feedsFromTags} from './utils'
|
||||
import {FeedType} from './core'
|
||||
|
||||
export class FeedCompiler<E extends TrustedEvent> {
|
||||
constructor(readonly options: FeedOptions<E>) {}
|
||||
|
||||
walk(feed: Feed, visit: (feed: Feed) => void) {
|
||||
visit(feed)
|
||||
|
||||
if (hasSubFeeds(feed)) {
|
||||
for (const subFeed of getFeedArgs(feed)) {
|
||||
this.walk(subFeed, visit)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
canCompile(feed: Feed): boolean {
|
||||
switch(feed[0]) {
|
||||
case FeedType.Union:
|
||||
@@ -240,6 +230,7 @@ export class FeedCompiler<E extends TrustedEvent> {
|
||||
|
||||
if (event) {
|
||||
for (const feed of feedsFromTags(Tags.fromEvent(event), mappings)) {
|
||||
|
||||
feeds.push(feed)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -155,3 +155,14 @@ export const feedsFromFilter = ({since, until, ...filter}: Filter) => {
|
||||
|
||||
export const feedFromFilter = (filter: Filter) =>
|
||||
makeIntersectionFeed(...feedsFromFilter(filter))
|
||||
|
||||
|
||||
export const walkFeed = (feed: Feed, visit: (feed: Feed) => void) => {
|
||||
visit(feed)
|
||||
|
||||
if (hasSubFeeds(feed)) {
|
||||
for (const subFeed of getFeedArgs(feed)) {
|
||||
walkFeed(subFeed, visit)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user