From fb93bacb28a13225b4a48c3a6fdfc98871ca3508 Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Thu, 7 Nov 2024 15:12:17 -0800 Subject: [PATCH] Bump versions --- package-lock.json | 6 +++--- packages/app/package.json | 4 ++-- packages/app/src/feeds.ts | 15 +++++++++++++-- packages/feeds/README.md | 4 ++-- packages/feeds/package.json | 2 +- packages/feeds/src/controller.ts | 24 ++++++++++++------------ packages/feeds/src/core.ts | 4 ++-- 7 files changed, 35 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index ede73c9..a32a0cf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3635,11 +3635,11 @@ }, "packages/app": { "name": "@welshman/app", - "version": "0.0.22", + "version": "0.0.23", "license": "MIT", "dependencies": { "@welshman/dvm": "~0.0.10", - "@welshman/feeds": "~0.0.22", + "@welshman/feeds": "~0.0.23", "@welshman/lib": "~0.0.24", "@welshman/net": "~0.0.33", "@welshman/signer": "~0.0.11", @@ -3688,7 +3688,7 @@ }, "packages/feeds": { "name": "@welshman/feeds", - "version": "0.0.22", + "version": "0.0.23", "license": "MIT", "dependencies": { "@welshman/lib": "~0.0.24", diff --git a/packages/app/package.json b/packages/app/package.json index 7b081dc..dcbd985 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "@welshman/app", - "version": "0.0.22", + "version": "0.0.23", "author": "hodlbod", "license": "MIT", "description": "A collection of svelte stores for use in building nostr client applications.", @@ -32,7 +32,7 @@ }, "dependencies": { "@welshman/lib": "~0.0.24", - "@welshman/feeds": "~0.0.22", + "@welshman/feeds": "~0.0.23", "@welshman/dvm": "~0.0.10", "@welshman/net": "~0.0.33", "@welshman/signer": "~0.0.11", diff --git a/packages/app/src/feeds.ts b/packages/app/src/feeds.ts index 8edc464..181a3d8 100644 --- a/packages/app/src/feeds.ts +++ b/packages/app/src/feeds.ts @@ -1,7 +1,7 @@ import {ctx, now} from '@welshman/lib' import {createEvent, getPubkeyTagValues} from '@welshman/util' -import {Scope} from '@welshman/feeds' -import type {RequestOpts, DVMOpts} from '@welshman/feeds' +import {Scope, FeedController} from '@welshman/feeds' +import type {RequestOpts, FeedOptions, DVMOpts, Feed} from '@welshman/feeds' import {makeDvmRequest} from '@welshman/dvm' import {makeSecret, Nip01Signer} from '@welshman/signer' import {pubkey, signer} from './session' @@ -68,3 +68,14 @@ export const getPubkeysForWOTRange = (min: number, max: number) => { return pubkeys } + +type _FeedOptions = Partial> & {feed: Feed} + +export const createFeedController = (options: _FeedOptions) => + new FeedController({ + request, + requestDVM, + getPubkeysForScope, + getPubkeysForWOTRange, + ...options, + }) diff --git a/packages/feeds/README.md b/packages/feeds/README.md index 272d313..ab507dc 100644 --- a/packages/feeds/README.md +++ b/packages/feeds/README.md @@ -22,9 +22,9 @@ const feed = intersectionFeed( const controller = new FeedController({ feed, request, - requestDvm, + requestDVM, getPubkeysForScope, - getPubkeysForWotRange, + getPubkeysForWOTRange, onEvent: event => console.log("Event", event), onExhausted: () => console.log("Exhausted"), }) diff --git a/packages/feeds/package.json b/packages/feeds/package.json index c65021b..804e537 100644 --- a/packages/feeds/package.json +++ b/packages/feeds/package.json @@ -1,6 +1,6 @@ { "name": "@welshman/feeds", - "version": "0.0.22", + "version": "0.0.23", "author": "hodlbod", "license": "MIT", "description": "Utilities for building dynamic nostr feeds.", diff --git a/packages/feeds/src/controller.ts b/packages/feeds/src/controller.ts index 76d35c1..5cb6b2a 100644 --- a/packages/feeds/src/controller.ts +++ b/packages/feeds/src/controller.ts @@ -50,7 +50,7 @@ export class FeedController { onExhausted: () => exhausted.add(request), onEvent: e => { if (!seen.has(e.id)) { - onEvent(e) + onEvent?.(e) seen.add(e.id) } }, @@ -62,7 +62,7 @@ export class FeedController { await Promise.all(loaders.map(loader => loader(limit))) if (exhausted.size === requests.length) { - onExhausted() + onExhausted?.() } } } @@ -98,7 +98,7 @@ export class FeedController { .map((filter: Filter) => ({...filter, until, limit, since})) if (requestFilters.length === 0) { - return onExhausted() + return onExhausted?.() } let count = 0 @@ -109,13 +109,13 @@ export class FeedController { onEvent: (event: TrustedEvent) => { count += 1 until = Math.min(until, event.created_at - 1) - onEvent(event) + onEvent?.(event) }, })) if (useWindowing) { if (since === minSince) { - onExhausted() + onExhausted?.() } // Relays can't be relied upon to return events in descending order, do exponential @@ -127,7 +127,7 @@ export class FeedController { since = Math.max(minSince, until - delta) } else if (count === 0) { - onExhausted() + onExhausted?.() } } } @@ -169,13 +169,13 @@ export class FeedController { for (const event of events.splice(0)) { if (!skip.has(event.id) && !seen.has(event.id)) { - onEvent(event) + onEvent?.(event) seen.add(event.id) } } if (exhausted.size === controllers.length) { - onExhausted() + onExhausted?.() } } } @@ -214,13 +214,13 @@ export class FeedController { for (const event of events.splice(0)) { if (counts.get(event.id) === controllers.length && !seen.has(event.id)) { - onEvent(event) + onEvent?.(event) seen.add(event.id) } } if (exhausted.size === controllers.length) { - onExhausted() + onExhausted?.() } } } @@ -238,7 +238,7 @@ export class FeedController { onExhausted: () => exhausted.add(i), onEvent: (event: TrustedEvent) => { if (!seen.has(event.id)) { - onEvent(event) + onEvent?.(event) seen.add(event.id) } }, @@ -258,7 +258,7 @@ export class FeedController { ) if (exhausted.size === controllers.length) { - onExhausted() + onExhausted?.() } } } diff --git a/packages/feeds/src/core.ts b/packages/feeds/src/core.ts index 3657c54..51d46fe 100644 --- a/packages/feeds/src/core.ts +++ b/packages/feeds/src/core.ts @@ -129,7 +129,7 @@ export type FeedOptions = { requestDVM: (opts: DVMOpts) => Promise getPubkeysForScope: (scope: Scope) => string[] getPubkeysForWOTRange: (minWOT: number, maxWOT: number) => string[] - onEvent: (event: TrustedEvent) => void - onExhausted: () => void + onEvent?: (event: TrustedEvent) => void + onExhausted?: () => void useWindowing?: boolean }