parse.ts (873B)
1 import { KIND_FARM, type RadrootsFarm } from "@radroots/events-bindings"; 2 import type { NostrEvent } from "../../types/nostr.js"; 3 import { get_event_tag, parse_nostr_event_basis } from "../lib.js"; 4 import type { NostrEventBasis } from "../subscription.js"; 5 6 export type RadrootsFarmNostrEvent = NostrEventBasis<typeof KIND_FARM> & { farm: RadrootsFarm }; 7 8 export const parse_nostr_farm_event = ( 9 event: NostrEvent, 10 ): RadrootsFarmNostrEvent | undefined => { 11 const ev = parse_nostr_event_basis(event, KIND_FARM); 12 if (!ev) return undefined; 13 const d_tag = get_event_tag(event.tags, "d"); 14 if (!d_tag) return undefined; 15 try { 16 const parsed = JSON.parse(event.content); 17 const farm = parsed as RadrootsFarm; 18 if (farm.d_tag !== d_tag) return undefined; 19 return { ...ev, farm }; 20 } catch { 21 return undefined; 22 } 23 };