web_lib

Common web application libraries
git clone https://radroots.dev/git/web_lib.git
Log | Files | Refs | LICENSE

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 };