429 lines
13 KiB
Go
429 lines
13 KiB
Go
package nostr
|
|
|
|
import "strconv"
|
|
|
|
type Kind uint16
|
|
|
|
func (kind Kind) Num() uint16 { return uint16(kind) }
|
|
func (kind Kind) String() string { return "kind::" + kind.Name() + "<" + strconv.Itoa(int(kind)) + ">" }
|
|
func (kind Kind) Name() string {
|
|
switch kind {
|
|
case KindProfileMetadata:
|
|
return "ProfileMetadata"
|
|
case KindTextNote:
|
|
return "TextNote"
|
|
case KindRecommendServer:
|
|
return "RecommendServer"
|
|
case KindFollowList:
|
|
return "FollowList"
|
|
case KindEncryptedDirectMessage:
|
|
return "EncryptedDirectMessage"
|
|
case KindDeletion:
|
|
return "Deletion"
|
|
case KindRepost:
|
|
return "Repost"
|
|
case KindReaction:
|
|
return "Reaction"
|
|
case KindBadgeAward:
|
|
return "BadgeAward"
|
|
case KindSimpleGroupChatMessage:
|
|
return "SimpleGroupChatMessage"
|
|
case KindSimpleGroupThreadedReply:
|
|
return "SimpleGroupThreadedReply"
|
|
case KindSimpleGroupThread:
|
|
return "SimpleGroupThread"
|
|
case KindSimpleGroupReply:
|
|
return "SimpleGroupReply"
|
|
case KindSeal:
|
|
return "Seal"
|
|
case KindDirectMessage:
|
|
return "DirectMessage"
|
|
case KindGenericRepost:
|
|
return "GenericRepost"
|
|
case KindReactionToWebsite:
|
|
return "ReactionToWebsite"
|
|
case KindChannelCreation:
|
|
return "ChannelCreation"
|
|
case KindChannelMetadata:
|
|
return "ChannelMetadata"
|
|
case KindChannelMessage:
|
|
return "ChannelMessage"
|
|
case KindChannelHideMessage:
|
|
return "ChannelHideMessage"
|
|
case KindChannelMuteUser:
|
|
return "ChannelMuteUser"
|
|
case KindChess:
|
|
return "Chess"
|
|
case KindMergeRequests:
|
|
return "MergeRequests"
|
|
case KindComment:
|
|
return "Comment"
|
|
case KindBid:
|
|
return "Bid"
|
|
case KindBidConfirmation:
|
|
return "BidConfirmation"
|
|
case KindOpenTimestamps:
|
|
return "OpenTimestamps"
|
|
case KindGiftWrap:
|
|
return "GiftWrap"
|
|
case KindFileMetadata:
|
|
return "FileMetadata"
|
|
case KindLiveChatMessage:
|
|
return "LiveChatMessage"
|
|
case KindPatch:
|
|
return "Patch"
|
|
case KindIssue:
|
|
return "Issue"
|
|
case KindReply:
|
|
return "Reply"
|
|
case KindStatusOpen:
|
|
return "StatusOpen"
|
|
case KindStatusApplied:
|
|
return "StatusApplied"
|
|
case KindStatusClosed:
|
|
return "StatusClosed"
|
|
case KindStatusDraft:
|
|
return "StatusDraft"
|
|
case KindProblemTracker:
|
|
return "ProblemTracker"
|
|
case KindReporting:
|
|
return "Reporting"
|
|
case KindLabel:
|
|
return "Label"
|
|
case KindRelayReviews:
|
|
return "RelayReviews"
|
|
case KindAIEmbeddings:
|
|
return "AIEmbeddings"
|
|
case KindTorrent:
|
|
return "Torrent"
|
|
case KindTorrentComment:
|
|
return "TorrentComment"
|
|
case KindCoinjoinPool:
|
|
return "CoinjoinPool"
|
|
case KindCommunityPostApproval:
|
|
return "CommunityPostApproval"
|
|
case KindJobFeedback:
|
|
return "JobFeedback"
|
|
case KindSimpleGroupPutUser:
|
|
return "SimpleGroupPutUser"
|
|
case KindSimpleGroupRemoveUser:
|
|
return "SimpleGroupRemoveUser"
|
|
case KindSimpleGroupEditMetadata:
|
|
return "SimpleGroupEditMetadata"
|
|
case KindSimpleGroupDeleteEvent:
|
|
return "SimpleGroupDeleteEvent"
|
|
case KindSimpleGroupCreateGroup:
|
|
return "SimpleGroupCreateGroup"
|
|
case KindSimpleGroupDeleteGroup:
|
|
return "SimpleGroupDeleteGroup"
|
|
case KindSimpleGroupCreateInvite:
|
|
return "SimpleGroupCreateInvite"
|
|
case KindSimpleGroupJoinRequest:
|
|
return "SimpleGroupJoinRequest"
|
|
case KindSimpleGroupLeaveRequest:
|
|
return "SimpleGroupLeaveRequest"
|
|
case KindZapGoal:
|
|
return "ZapGoal"
|
|
case KindNutZap:
|
|
return "NutZap"
|
|
case KindTidalLogin:
|
|
return "TidalLogin"
|
|
case KindZapRequest:
|
|
return "ZapRequest"
|
|
case KindZap:
|
|
return "Zap"
|
|
case KindHighlights:
|
|
return "Highlights"
|
|
case KindMuteList:
|
|
return "MuteList"
|
|
case KindPinList:
|
|
return "PinList"
|
|
case KindRelayListMetadata:
|
|
return "RelayListMetadata"
|
|
case KindBookmarkList:
|
|
return "BookmarkList"
|
|
case KindCommunityList:
|
|
return "CommunityList"
|
|
case KindPublicChatList:
|
|
return "PublicChatList"
|
|
case KindBlockedRelayList:
|
|
return "BlockedRelayList"
|
|
case KindSearchRelayList:
|
|
return "SearchRelayList"
|
|
case KindSimpleGroupList:
|
|
return "SimpleGroupList"
|
|
case KindInterestList:
|
|
return "InterestList"
|
|
case KindNutZapInfo:
|
|
return "NutZapInfo"
|
|
case KindEmojiList:
|
|
return "EmojiList"
|
|
case KindDMRelayList:
|
|
return "DMRelayList"
|
|
case KindUserServerList:
|
|
return "UserServerList"
|
|
case KindFileStorageServerList:
|
|
return "FileStorageServerList"
|
|
case KindGoodWikiAuthorList:
|
|
return "GoodWikiAuthorList"
|
|
case KindGoodWikiRelayList:
|
|
return "GoodWikiRelayList"
|
|
case KindNWCWalletInfo:
|
|
return "NWCWalletInfo"
|
|
case KindLightningPubRPC:
|
|
return "LightningPubRPC"
|
|
case KindClientAuthentication:
|
|
return "ClientAuthentication"
|
|
case KindNWCWalletRequest:
|
|
return "NWCWalletRequest"
|
|
case KindNWCWalletResponse:
|
|
return "NWCWalletResponse"
|
|
case KindNostrConnect:
|
|
return "NostrConnect"
|
|
case KindBlobs:
|
|
return "Blobs"
|
|
case KindHTTPAuth:
|
|
return "HTTPAuth"
|
|
case KindCategorizedPeopleList:
|
|
return "CategorizedPeopleList"
|
|
case KindCategorizedBookmarksList:
|
|
return "CategorizedBookmarksList"
|
|
case KindRelaySets:
|
|
return "RelaySets"
|
|
case KindBookmarkSets:
|
|
return "BookmarkSets"
|
|
case KindCuratedSets:
|
|
return "CuratedSets"
|
|
case KindCuratedVideoSets:
|
|
return "CuratedVideoSets"
|
|
case KindMuteSets:
|
|
return "MuteSets"
|
|
case KindProfileBadges:
|
|
return "ProfileBadges"
|
|
case KindBadgeDefinition:
|
|
return "BadgeDefinition"
|
|
case KindInterestSets:
|
|
return "InterestSets"
|
|
case KindStallDefinition:
|
|
return "StallDefinition"
|
|
case KindProductDefinition:
|
|
return "ProductDefinition"
|
|
case KindMarketplaceUI:
|
|
return "MarketplaceUI"
|
|
case KindProductSoldAsAuction:
|
|
return "ProductSoldAsAuction"
|
|
case KindArticle:
|
|
return "Article"
|
|
case KindDraftArticle:
|
|
return "DraftArticle"
|
|
case KindEmojiSets:
|
|
return "EmojiSets"
|
|
case KindModularArticleHeader:
|
|
return "ModularArticleHeader"
|
|
case KindModularArticleContent:
|
|
return "ModularArticleContent"
|
|
case KindReleaseArtifactSets:
|
|
return "ReleaseArtifactSets"
|
|
case KindApplicationSpecificData:
|
|
return "ApplicationSpecificData"
|
|
case KindLiveEvent:
|
|
return "LiveEvent"
|
|
case KindUserStatuses:
|
|
return "UserStatuses"
|
|
case KindClassifiedListing:
|
|
return "ClassifiedListing"
|
|
case KindDraftClassifiedListing:
|
|
return "DraftClassifiedListing"
|
|
case KindRepositoryAnnouncement:
|
|
return "RepositoryAnnouncement"
|
|
case KindRepositoryState:
|
|
return "RepositoryState"
|
|
case KindSimpleGroupMetadata:
|
|
return "SimpleGroupMetadata"
|
|
case KindSimpleGroupAdmins:
|
|
return "SimpleGroupAdmins"
|
|
case KindSimpleGroupMembers:
|
|
return "SimpleGroupMembers"
|
|
case KindSimpleGroupRoles:
|
|
return "SimpleGroupRoles"
|
|
case KindWikiArticle:
|
|
return "WikiArticle"
|
|
case KindRedirects:
|
|
return "Redirects"
|
|
case KindFeed:
|
|
return "Feed"
|
|
case KindDateCalendarEvent:
|
|
return "DateCalendarEvent"
|
|
case KindTimeCalendarEvent:
|
|
return "TimeCalendarEvent"
|
|
case KindCalendar:
|
|
return "Calendar"
|
|
case KindCalendarEventRSVP:
|
|
return "CalendarEventRSVP"
|
|
case KindHandlerRecommendation:
|
|
return "HandlerRecommendation"
|
|
case KindHandlerInformation:
|
|
return "HandlerInformation"
|
|
case KindVideoEvent:
|
|
return "VideoEvent"
|
|
case KindShortVideoEvent:
|
|
return "ShortVideoEvent"
|
|
case KindVideoViewEvent:
|
|
return "VideoViewEvent"
|
|
case KindCommunityDefinition:
|
|
return "CommunityDefinition"
|
|
}
|
|
return "unknown"
|
|
}
|
|
|
|
const (
|
|
KindProfileMetadata Kind = 0
|
|
KindTextNote Kind = 1
|
|
KindRecommendServer Kind = 2
|
|
KindFollowList Kind = 3
|
|
KindEncryptedDirectMessage Kind = 4
|
|
KindDeletion Kind = 5
|
|
KindRepost Kind = 6
|
|
KindReaction Kind = 7
|
|
KindBadgeAward Kind = 8
|
|
KindSimpleGroupChatMessage Kind = 9
|
|
KindSimpleGroupThreadedReply Kind = 10
|
|
KindSimpleGroupThread Kind = 11
|
|
KindSimpleGroupReply Kind = 12
|
|
KindSeal Kind = 13
|
|
KindDirectMessage Kind = 14
|
|
KindGenericRepost Kind = 16
|
|
KindReactionToWebsite Kind = 17
|
|
KindChannelCreation Kind = 40
|
|
KindChannelMetadata Kind = 41
|
|
KindChannelMessage Kind = 42
|
|
KindChannelHideMessage Kind = 43
|
|
KindChannelMuteUser Kind = 44
|
|
KindChess Kind = 64
|
|
KindMergeRequests Kind = 818
|
|
KindComment Kind = 1111
|
|
KindBid Kind = 1021
|
|
KindBidConfirmation Kind = 1022
|
|
KindOpenTimestamps Kind = 1040
|
|
KindGiftWrap Kind = 1059
|
|
KindFileMetadata Kind = 1063
|
|
KindLiveChatMessage Kind = 1311
|
|
KindPatch Kind = 1617
|
|
KindIssue Kind = 1621
|
|
KindReply Kind = 1622
|
|
KindStatusOpen Kind = 1630
|
|
KindStatusApplied Kind = 1631
|
|
KindStatusClosed Kind = 1632
|
|
KindStatusDraft Kind = 1633
|
|
KindProblemTracker Kind = 1971
|
|
KindReporting Kind = 1984
|
|
KindLabel Kind = 1985
|
|
KindRelayReviews Kind = 1986
|
|
KindAIEmbeddings Kind = 1987
|
|
KindTorrent Kind = 2003
|
|
KindTorrentComment Kind = 2004
|
|
KindCoinjoinPool Kind = 2022
|
|
KindCommunityPostApproval Kind = 4550
|
|
KindJobFeedback Kind = 7000
|
|
KindSimpleGroupPutUser Kind = 9000
|
|
KindSimpleGroupRemoveUser Kind = 9001
|
|
KindSimpleGroupEditMetadata Kind = 9002
|
|
KindSimpleGroupDeleteEvent Kind = 9005
|
|
KindSimpleGroupCreateGroup Kind = 9007
|
|
KindSimpleGroupDeleteGroup Kind = 9008
|
|
KindSimpleGroupCreateInvite Kind = 9009
|
|
KindSimpleGroupJoinRequest Kind = 9021
|
|
KindSimpleGroupLeaveRequest Kind = 9022
|
|
KindZapGoal Kind = 9041
|
|
KindNutZap Kind = 9321
|
|
KindTidalLogin Kind = 9467
|
|
KindZapRequest Kind = 9734
|
|
KindZap Kind = 9735
|
|
KindHighlights Kind = 9802
|
|
KindMuteList Kind = 10000
|
|
KindPinList Kind = 10001
|
|
KindRelayListMetadata Kind = 10002
|
|
KindBookmarkList Kind = 10003
|
|
KindCommunityList Kind = 10004
|
|
KindPublicChatList Kind = 10005
|
|
KindBlockedRelayList Kind = 10006
|
|
KindSearchRelayList Kind = 10007
|
|
KindSimpleGroupList Kind = 10009
|
|
KindInterestList Kind = 10015
|
|
KindNutZapInfo Kind = 10019
|
|
KindEmojiList Kind = 10030
|
|
KindDMRelayList Kind = 10050
|
|
KindUserServerList Kind = 10063
|
|
KindFileStorageServerList Kind = 10096
|
|
KindGoodWikiAuthorList Kind = 10101
|
|
KindGoodWikiRelayList Kind = 10102
|
|
KindNWCWalletInfo Kind = 13194
|
|
KindLightningPubRPC Kind = 21000
|
|
KindClientAuthentication Kind = 22242
|
|
KindNWCWalletRequest Kind = 23194
|
|
KindNWCWalletResponse Kind = 23195
|
|
KindNostrConnect Kind = 24133
|
|
KindBlobs Kind = 24242
|
|
KindHTTPAuth Kind = 27235
|
|
KindCategorizedPeopleList Kind = 30000
|
|
KindCategorizedBookmarksList Kind = 30001
|
|
KindRelaySets Kind = 30002
|
|
KindBookmarkSets Kind = 30003
|
|
KindCuratedSets Kind = 30004
|
|
KindCuratedVideoSets Kind = 30005
|
|
KindMuteSets Kind = 30007
|
|
KindProfileBadges Kind = 30008
|
|
KindBadgeDefinition Kind = 30009
|
|
KindInterestSets Kind = 30015
|
|
KindStallDefinition Kind = 30017
|
|
KindProductDefinition Kind = 30018
|
|
KindMarketplaceUI Kind = 30019
|
|
KindProductSoldAsAuction Kind = 30020
|
|
KindArticle Kind = 30023
|
|
KindDraftArticle Kind = 30024
|
|
KindEmojiSets Kind = 30030
|
|
KindModularArticleHeader Kind = 30040
|
|
KindModularArticleContent Kind = 30041
|
|
KindReleaseArtifactSets Kind = 30063
|
|
KindApplicationSpecificData Kind = 30078
|
|
KindLiveEvent Kind = 30311
|
|
KindUserStatuses Kind = 30315
|
|
KindClassifiedListing Kind = 30402
|
|
KindDraftClassifiedListing Kind = 30403
|
|
KindRepositoryAnnouncement Kind = 30617
|
|
KindRepositoryState Kind = 30618
|
|
KindSimpleGroupMetadata Kind = 39000
|
|
KindSimpleGroupAdmins Kind = 39001
|
|
KindSimpleGroupMembers Kind = 39002
|
|
KindSimpleGroupRoles Kind = 39003
|
|
KindWikiArticle Kind = 30818
|
|
KindRedirects Kind = 30819
|
|
KindFeed Kind = 31890
|
|
KindDateCalendarEvent Kind = 31922
|
|
KindTimeCalendarEvent Kind = 31923
|
|
KindCalendar Kind = 31924
|
|
KindCalendarEventRSVP Kind = 31925
|
|
KindHandlerRecommendation Kind = 31989
|
|
KindHandlerInformation Kind = 31990
|
|
KindVideoEvent Kind = 34235
|
|
KindShortVideoEvent Kind = 34236
|
|
KindVideoViewEvent Kind = 34237
|
|
KindCommunityDefinition Kind = 34550
|
|
)
|
|
|
|
func (kind Kind) IsRegular() bool {
|
|
return kind < 10000 && kind != 0 && kind != 3
|
|
}
|
|
|
|
func (kind Kind) IsReplaceable() bool {
|
|
return kind == 0 || kind == 3 || (10000 <= kind && kind < 20000)
|
|
}
|
|
|
|
func (kind Kind) IsEphemeral() bool {
|
|
return 20000 <= kind && kind < 30000
|
|
}
|
|
|
|
func (kind Kind) IsAddressable() bool {
|
|
return 30000 <= kind && kind < 40000
|
|
}
|