import { NPool, NRelay1 } from "@nostrify/nostrify"; import config from "./config.ts"; export interface NEvent { content: string; created_at: number; id: string; kind: number; pubkey: string; sig: string; tags: Array<[string, string, string?]>; } const relayPool = new NPool({ open: (url) => new NRelay1(url), reqRouter: async (filters) => new Map( config.relay_urls.map(url => [ url, filters ]) ) }); export async function fetchReplaceableEvent( pubkey: string, identifier: string, ) { let events = await relayPool.query([{ authors: [pubkey], kinds: [30023], "#d": [identifier], limit: 1, }]); if (events.length > 0) { return events[0]; } else { events = await relayPool.query([{ authors: [pubkey], kinds: [30024], "#d": [identifier], limit: 1, }]); return events.length > 0 ? events[0] : null; } } export async function fetchArticlesByAuthor(pubkey: string) { const events = await relayPool.query([{ authors: [pubkey], kinds: [30023], limit: 10, }]); return events; } export async function fetchProfileEvent(pubkey: string) { const events = await relayPool.query([{ authors: [pubkey], kinds: [0], limit: 1, }]); return events.length > 0 ? events[0] : null; }