web_lib

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

lib.ts (1930B)


      1 import {
      2     KIND_LIST_SET_APP_CURATION,
      3     KIND_LIST_SET_BOOKMARK,
      4     KIND_LIST_SET_CALENDAR,
      5     KIND_LIST_SET_CURATION,
      6     KIND_LIST_SET_EMOJI,
      7     KIND_LIST_SET_FOLLOW,
      8     KIND_LIST_SET_GENERIC,
      9     KIND_LIST_SET_INTEREST,
     10     KIND_LIST_SET_KIND_MUTE,
     11     KIND_LIST_SET_MEDIA_STARTER_PACK,
     12     KIND_LIST_SET_PICTURE,
     13     KIND_LIST_SET_RELEASE_ARTIFACT,
     14     KIND_LIST_SET_RELAY,
     15     KIND_LIST_SET_STARTER_PACK,
     16     KIND_LIST_SET_VIDEO,
     17     type RadrootsListSet,
     18 } from "@radroots/events-bindings";
     19 import type { NostrEventFigure, NostrSignedEvent } from "../../types/nostr.js";
     20 import { nostr_event_create } from "../lib.js";
     21 import { tags_list_set } from "./tags.js";
     22 
     23 export const NIP51_LIST_SET_KINDS = [
     24     KIND_LIST_SET_FOLLOW,
     25     KIND_LIST_SET_GENERIC,
     26     KIND_LIST_SET_RELAY,
     27     KIND_LIST_SET_BOOKMARK,
     28     KIND_LIST_SET_CURATION,
     29     KIND_LIST_SET_VIDEO,
     30     KIND_LIST_SET_PICTURE,
     31     KIND_LIST_SET_KIND_MUTE,
     32     KIND_LIST_SET_INTEREST,
     33     KIND_LIST_SET_EMOJI,
     34     KIND_LIST_SET_RELEASE_ARTIFACT,
     35     KIND_LIST_SET_APP_CURATION,
     36     KIND_LIST_SET_CALENDAR,
     37     KIND_LIST_SET_STARTER_PACK,
     38     KIND_LIST_SET_MEDIA_STARTER_PACK,
     39 ] as const;
     40 
     41 export type KindRadrootsListSet = typeof NIP51_LIST_SET_KINDS[number];
     42 
     43 export const is_nip51_list_set_kind = (kind: number): kind is KindRadrootsListSet =>
     44     NIP51_LIST_SET_KINDS.some(value => value === kind);
     45 
     46 export const nostr_event_list_set = async (
     47     opts: NostrEventFigure<{ data: RadrootsListSet; kind: KindRadrootsListSet }>,
     48 ): Promise<NostrSignedEvent | undefined> => {
     49     const { data, kind } = opts;
     50     if (!is_nip51_list_set_kind(kind)) return undefined;
     51     const tags = await tags_list_set(data);
     52     return nostr_event_create({
     53         ...opts,
     54         basis: {
     55             kind,
     56             content: data.content,
     57             tags,
     58         },
     59     });
     60 };
     61 
     62 export { list_private_entries_json, list_private_entries_parse } from "../list/lib.js";