Nostr. Event. Parser
(Nostr Lib v0.2.1)
View Source
Internal module for parsing raw event data into Nostr.Event structs.
This module handles two types of parsing:
parse/1- Converts raw JSON maps to genericNostr.Eventstructsparse_specific/1- ConvertsNostr.Eventto type-specific structs based on event kind
Event Kind Routing
Specific event kinds are routed to their dedicated modules:
- Kind 0:
Nostr.Event.Metadata(NIP-01) - Kind 1:
Nostr.Event.Note(NIP-01) - Kind 2:
Nostr.Event.RecommendRelay(NIP-01) - Kind 3:
Nostr.Event.Contacts(NIP-02) - Kind 4:
Nostr.Event.DirectMessage(NIP-04) - Kind 5:
Nostr.Event.Deletion(NIP-09) - Kind 6:
Nostr.Event.Repost(NIP-18) - Kind 7:
Nostr.Event.Reaction(NIP-25) - Kind 8:
Nostr.Event.BadgeAward(NIP-58) - Kind 13:
Nostr.Event.Seal(NIP-59) - Kind 14:
Nostr.Event.PrivateMessage(NIP-17) - Kind 15:
Nostr.Event.FileMessage(NIP-17) - Kind 17:
Nostr.Event.ExternalReaction(NIP-25) - Kinds 40-44: Channel operations (NIP-28)
- Kind 9734:
Nostr.Event.ZapRequest(NIP-57) - Kind 9735:
Nostr.Event.ZapReceipt(NIP-57) - Kind 1111:
Nostr.Event.Comment(NIP-22) - Kind 1040:
Nostr.Event.OpenTimestamps(NIP-03) - Kind 1059:
Nostr.Event.GiftWrap(NIP-59) - Kind 1063:
Nostr.Event.FileMetadata - Kind 1984:
Nostr.Event.Report - Kind 1985:
Nostr.Event.Label(NIP-32) - Kind 10000:
Nostr.Event.ListMute(NIP-51) - Kind 10001:
Nostr.Event.PinnedNotes(NIP-51) - Kind 10002:
Nostr.Event.RelayList(NIP-51/NIP-65) - Kind 10003:
Nostr.Event.Bookmarks(NIP-51) - Kind 10004:
Nostr.Event.Communities(NIP-51) - Kind 10005:
Nostr.Event.PublicChats(NIP-51) - Kind 10006:
Nostr.Event.BlockedRelays(NIP-51) - Kind 10007:
Nostr.Event.SearchRelays(NIP-51) - Kind 10009:
Nostr.Event.SimpleGroups(NIP-51) - Kind 10012:
Nostr.Event.RelayFeeds(NIP-51) - Kind 10013:
Nostr.Event.PrivateContentRelayList(NIP-37) - Kind 10015:
Nostr.Event.Interests(NIP-51) - Kind 10020:
Nostr.Event.MediaFollows(NIP-51) - Kind 10030:
Nostr.Event.EmojiList(NIP-51) - Kind 10050:
Nostr.Event.DMRelayList(NIP-17) - Kind 10101:
Nostr.Event.GoodWikiAuthors(NIP-51) - Kind 10102:
Nostr.Event.GoodWikiRelays(NIP-51) - Kind 22242:
Nostr.Event.ClientAuth(NIP-42) - Kind 27235:
Nostr.Event.HttpAuth(NIP-98) - Kind 30000:
Nostr.Event.FollowSets(NIP-51) - Kind 30002:
Nostr.Event.RelaySets(NIP-51) - Kind 30003:
Nostr.Event.BookmarkSets(NIP-51) - Kinds 30004-30006:
Nostr.Event.CurationSets(NIP-51) - Kind 30007:
Nostr.Event.KindMuteSets(NIP-51) - Kind 30015:
Nostr.Event.InterestSets(NIP-51) - Kind 30023:
Nostr.Event.Article(NIP-23) - Kind 30024:
Nostr.Event.Article(NIP-23 draft) - Kind 30030:
Nostr.Event.EmojiSets(NIP-51) - Kind 30063:
Nostr.Event.ReleaseArtifactSets(NIP-51) - Kind 30267:
Nostr.Event.AppCurationSets(NIP-51) - Kind 31234:
Nostr.Event.DraftWrap(NIP-37) - Kind 31924:
Nostr.Event.Calendar(NIP-51) - Kind 39089:
Nostr.Event.StarterPacks(NIP-51) - Kind 39092:
Nostr.Event.MediaStarterPacks(NIP-51)
Event kind ranges (NIP-16):
- 1000-9999:
Nostr.Event.Regular - 10000-19999:
Nostr.Event.Replaceable - 20000-29999:
Nostr.Event.Ephemeral - 30000-39999:
Nostr.Event.ParameterizedReplaceable
Unknown kinds fall back to Nostr.Event.Unknown.
Summary
Functions
Parses a JSON string or map into a Nostr.Event struct.
Converts a generic Nostr.Event to a type-specific struct based on event kind.
Functions
@spec parse(String.t() | map()) :: Nostr.Event.t() | {:error, String.t(), term()}
Parses a JSON string or map into a Nostr.Event struct.
Converts Unix timestamps to DateTime and parses tags into Nostr.Tag structs.
@spec parse_specific(Nostr.Event.t()) :: struct()
Converts a generic Nostr.Event to a type-specific struct based on event kind.
Returns a specialized struct (e.g., Nostr.Event.Note, Nostr.Event.Metadata)
that may contain parsed content and additional type-specific fields.