import { type DittoFilter } from '@/filter.ts'; import { type DittoEvent, type EventStore } from '@/storages/types.ts'; interface HydrateEventOpts { events: DittoEvent[]; filters: DittoFilter[]; storage: EventStore; } /** Hydrate event relationships using the provided storage. */ async function hydrateEvents(opts: HydrateEventOpts): Promise[]> { const { events, filters, storage } = opts; if (filters.some((filter) => filter.relations?.includes('author'))) { const pubkeys = new Set([...events].map((event) => event.pubkey)); const authors = await storage.getEvents([{ kinds: [0], authors: [...pubkeys] }]); for (const event of events) { event.author = authors.find((author) => author.pubkey === event.pubkey); } } return events; } export { hydrateEvents };