From aefe8a8210580a8040826ce6ccaa444de42790aa Mon Sep 17 00:00:00 2001 From: Martti Malmi Date: Mon, 5 Feb 2024 11:20:13 +0200 Subject: [PATCH] LRUCache ParsedZaps, import from system dir in worker --- packages/system/src/cache/events.ts | 2 +- packages/system/src/request-trim.ts | 2 +- packages/system/src/worker/system-worker.ts | 4 ++-- packages/system/src/zaps.ts | 3 ++- packages/worker-relay/src/forYouFeed.ts | 15 ++++++++++----- 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/packages/system/src/cache/events.ts b/packages/system/src/cache/events.ts index f41ddd5b..b7399f94 100644 --- a/packages/system/src/cache/events.ts +++ b/packages/system/src/cache/events.ts @@ -1,4 +1,4 @@ -import { NostrEvent } from "nostr"; +import { NostrEvent } from "../nostr"; import { DexieTableLike, FeedCache } from "@snort/shared"; export class EventsCache extends FeedCache { diff --git a/packages/system/src/request-trim.ts b/packages/system/src/request-trim.ts index a1de5f64..afbace7c 100644 --- a/packages/system/src/request-trim.ts +++ b/packages/system/src/request-trim.ts @@ -1,4 +1,4 @@ -import { ReqFilter } from "nostr"; +import { ReqFilter } from "./nostr"; /** * Remove empty filters, filters which would result in no results diff --git a/packages/system/src/worker/system-worker.ts b/packages/system/src/worker/system-worker.ts index 51370627..9a40e768 100644 --- a/packages/system/src/worker/system-worker.ts +++ b/packages/system/src/worker/system-worker.ts @@ -24,8 +24,8 @@ import { CachedTable } from "@snort/shared"; import { EventsCache } from "../cache/events"; import { RelayMetricHandler } from "../relay-metric-handler"; import debug from "debug"; -import { ConnectionPool } from "connection-pool"; -import { CacheRelay } from "cache-relay"; +import { ConnectionPool } from "../connection-pool"; +import { CacheRelay } from "../cache-relay"; export class SystemWorker extends EventEmitter implements SystemInterface { #log = debug("SystemWorker"); diff --git a/packages/system/src/zaps.ts b/packages/system/src/zaps.ts index f8df17f7..61d1f792 100644 --- a/packages/system/src/zaps.ts +++ b/packages/system/src/zaps.ts @@ -4,9 +4,10 @@ import { findTag } from "./utils"; import { EventExt } from "./event-ext"; import { NostrLink } from "./nostr-link"; import debug from "debug"; +import {LRUCache} from "lru-cache"; const Log = debug("zaps"); -const ParsedZapCache = new Map(); +const ParsedZapCache = new LRUCache({ max: 1000 }); function getInvoice(zap: NostrEvent): InvoiceDetails | undefined { const bolt11 = findTag(zap, "bolt11"); diff --git a/packages/worker-relay/src/forYouFeed.ts b/packages/worker-relay/src/forYouFeed.ts index ceba1f34..28d01fde 100644 --- a/packages/worker-relay/src/forYouFeed.ts +++ b/packages/worker-relay/src/forYouFeed.ts @@ -1,7 +1,12 @@ -import { NostrEvent, parseZap } from "@snort/system"; import debug from "debug"; -import { RelayHandler } from "./types"; +import { RelayHandler, NostrEvent } from "./types"; + +// import { parseZap } from "../../system/src/zaps"; +// placeholder: +const parseZap = (_zap: NostrEvent) => { + return { event: null } as { event: null | NostrEvent }; +} const log = debug("getForYouFeed"); @@ -58,7 +63,7 @@ async function getMyReactedEvents(relay: RelayHandler, pubkey: string) { kinds: [1, 6, 7, 9735], }) as NostrEvent[]; myEvents.forEach(ev => { - const targetEventId = ev.kind === 9735 ? parseZap(ev).event?.id : ev.tags.find(tag => tag[0] === "e")?.[1]; + const targetEventId = ev.kind === 9735 ? parseZap(ev).event?.id : ev.tags.find((tag: string[]) => tag[0] === "e")?.[1]; if (targetEventId) { myReactedEventIds.add(targetEventId); } @@ -101,7 +106,7 @@ async function getEventIdsReactedByOthers( // NIP-113 NOT filter could improve performance by not selecting these events in the first place return; } - event.tags.forEach(tag => { + event.tags.forEach((tag: string[]) => { if (tag[0] === "e") { const score = Math.ceil(Math.sqrt(othersWhoReacted.get(event.pubkey) || 0)); eventIdsReactedByOthers.set(tag[1], (eventIdsReactedByOthers.get(tag[1]) || 0) + score); @@ -150,7 +155,7 @@ async function getFeedEvents( }); // Filter out replies - const filteredEvents = events.filter(ev => !ev.tags.some(tag => tag[0] === "e")); + const filteredEvents = events.filter(ev => !ev.tags.some((tag: string[]) => tag[0] === "e")); // Define constants for normalization // const recentnessWeight = -1;