subscription.ts (2420B)
1 import type { NostrEvent } from "../types/nostr.js"; 2 import { 3 KIND_COMMENT, 4 KIND_FARM, 5 KIND_FOLLOW, 6 KIND_LISTING, 7 KIND_PLOT, 8 KIND_PROFILE, 9 KIND_REACTION, 10 } from "@radroots/events-bindings"; 11 import { parse_nostr_comment_event, RadrootsCommentNostrEvent } from "./comment/parse.js"; 12 import { parse_nostr_farm_event, RadrootsFarmNostrEvent } from "./farm/parse.js"; 13 import { parse_nostr_follow_event, RadrootsFollowNostrEvent } from "./follow/parse.js"; 14 import { parse_nostr_listing_event, RadrootsListingNostrEvent } from "./listing/parse.js"; 15 import { parse_nostr_list_event, RadrootsListNostrEvent } from "./list/parse.js"; 16 import { parse_nostr_list_set_event, RadrootsListSetNostrEvent } from "./list_set/parse.js"; 17 import { is_nip51_list_kind } from "./list/lib.js"; 18 import { is_nip51_list_set_kind } from "./list_set/lib.js"; 19 import { parse_nostr_plot_event, RadrootsPlotNostrEvent } from "./plot/parse.js"; 20 import { parse_nostr_profile_event, RadrootsProfileNostrEvent } from "./profile/parse.js"; 21 import { parse_nostr_reaction_event, RadrootsReactionNostrEvent } from "./reaction/parse.js"; 22 23 export type NostrEventBasis<T extends number> = { 24 id: string; 25 published_at: number; 26 author: string; 27 kind: T; 28 }; 29 30 export type NostrEventPayload = 31 | RadrootsProfileNostrEvent 32 | RadrootsListingNostrEvent 33 | RadrootsCommentNostrEvent 34 | RadrootsReactionNostrEvent 35 | RadrootsFollowNostrEvent 36 | RadrootsFarmNostrEvent 37 | RadrootsPlotNostrEvent 38 | RadrootsListNostrEvent 39 | RadrootsListSetNostrEvent; 40 41 export const nostr_event_on = (event: NostrEvent): NostrEventPayload | undefined => { 42 if (!event || typeof event.kind !== "number") return undefined; 43 if (is_nip51_list_kind(event.kind)) return parse_nostr_list_event(event); 44 if (is_nip51_list_set_kind(event.kind)) return parse_nostr_list_set_event(event); 45 46 switch (event.kind) { 47 case KIND_PROFILE: return parse_nostr_profile_event(event); 48 case KIND_LISTING: return parse_nostr_listing_event(event); 49 case KIND_COMMENT: return parse_nostr_comment_event(event); 50 case KIND_REACTION: return parse_nostr_reaction_event(event); 51 case KIND_FOLLOW: return parse_nostr_follow_event(event); 52 case KIND_FARM: return parse_nostr_farm_event(event); 53 case KIND_PLOT: return parse_nostr_plot_event(event); 54 default: return undefined; 55 } 56 };