@welshman/domain 0.9.0-pre1 → 0.9.0-pre3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/domain/src/behaviors/Emoji.d.ts +18 -0
- package/dist/domain/src/behaviors/Emoji.d.ts.map +1 -0
- package/dist/domain/src/behaviors/Emoji.js +9 -0
- package/dist/domain/src/behaviors/Emoji.js.map +1 -0
- package/dist/domain/src/behaviors/ZapSplits.d.ts +36 -0
- package/dist/domain/src/behaviors/ZapSplits.d.ts.map +1 -0
- package/dist/domain/src/behaviors/ZapSplits.js +54 -0
- package/dist/domain/src/behaviors/ZapSplits.js.map +1 -0
- package/dist/domain/src/core/EventReader.d.ts +51 -0
- package/dist/domain/src/core/EventReader.d.ts.map +1 -0
- package/dist/domain/src/core/EventReader.js +76 -0
- package/dist/domain/src/core/EventReader.js.map +1 -0
- package/dist/domain/src/core/EventWriter.d.ts +99 -0
- package/dist/domain/src/core/EventWriter.d.ts.map +1 -0
- package/dist/domain/src/core/EventWriter.js +233 -0
- package/dist/domain/src/core/EventWriter.js.map +1 -0
- package/dist/domain/src/core/Kind.d.ts +39 -0
- package/dist/domain/src/core/Kind.d.ts.map +1 -0
- package/dist/domain/src/core/Kind.js +41 -0
- package/dist/domain/src/core/Kind.js.map +1 -0
- package/dist/domain/src/core/ListReader.d.ts +9 -0
- package/dist/domain/src/core/ListReader.d.ts.map +1 -0
- package/dist/domain/src/{ListReader.js → core/ListReader.js} +5 -3
- package/dist/domain/src/core/ListReader.js.map +1 -0
- package/dist/domain/src/{ListBuilder.d.ts → core/ListWriter.d.ts} +8 -9
- package/dist/domain/src/core/ListWriter.d.ts.map +1 -0
- package/dist/domain/src/{ListBuilder.js → core/ListWriter.js} +12 -13
- package/dist/domain/src/core/ListWriter.js.map +1 -0
- package/dist/domain/src/index.d.ts +17 -6
- package/dist/domain/src/index.d.ts.map +1 -1
- package/dist/domain/src/index.js +17 -6
- package/dist/domain/src/index.js.map +1 -1
- package/dist/domain/src/kinds/AppData.d.ts +22 -0
- package/dist/domain/src/kinds/AppData.d.ts.map +1 -0
- package/dist/domain/src/kinds/AppData.js +85 -0
- package/dist/domain/src/kinds/AppData.js.map +1 -0
- package/dist/domain/src/kinds/BlockedRelayList.d.ts +6 -7
- package/dist/domain/src/kinds/BlockedRelayList.d.ts.map +1 -1
- package/dist/domain/src/kinds/BlockedRelayList.js +12 -11
- package/dist/domain/src/kinds/BlockedRelayList.js.map +1 -1
- package/dist/domain/src/kinds/BlossomServerList.d.ts +6 -7
- package/dist/domain/src/kinds/BlossomServerList.d.ts.map +1 -1
- package/dist/domain/src/kinds/BlossomServerList.js +12 -11
- package/dist/domain/src/kinds/BlossomServerList.js.map +1 -1
- package/dist/domain/src/kinds/BookmarkList.d.ts +6 -7
- package/dist/domain/src/kinds/BookmarkList.d.ts.map +1 -1
- package/dist/domain/src/kinds/BookmarkList.js +15 -14
- package/dist/domain/src/kinds/BookmarkList.js.map +1 -1
- package/dist/domain/src/kinds/Classified.d.ts +6 -7
- package/dist/domain/src/kinds/Classified.d.ts.map +1 -1
- package/dist/domain/src/kinds/Classified.js +17 -16
- package/dist/domain/src/kinds/Classified.js.map +1 -1
- package/dist/domain/src/kinds/Comment.d.ts +14 -10
- package/dist/domain/src/kinds/Comment.d.ts.map +1 -1
- package/dist/domain/src/kinds/Comment.js +57 -34
- package/dist/domain/src/kinds/Comment.js.map +1 -1
- package/dist/domain/src/kinds/CommunityList.d.ts +12 -0
- package/dist/domain/src/kinds/CommunityList.d.ts.map +1 -0
- package/dist/domain/src/kinds/CommunityList.js +26 -0
- package/dist/domain/src/kinds/CommunityList.js.map +1 -0
- package/dist/domain/src/kinds/Delete.d.ts +18 -0
- package/dist/domain/src/kinds/Delete.d.ts.map +1 -0
- package/dist/domain/src/kinds/Delete.js +70 -0
- package/dist/domain/src/kinds/Delete.js.map +1 -0
- package/dist/domain/src/kinds/EmojiList.d.ts +6 -10
- package/dist/domain/src/kinds/EmojiList.d.ts.map +1 -1
- package/dist/domain/src/kinds/EmojiList.js +12 -20
- package/dist/domain/src/kinds/EmojiList.js.map +1 -1
- package/dist/domain/src/kinds/Feed.d.ts +6 -7
- package/dist/domain/src/kinds/Feed.d.ts.map +1 -1
- package/dist/domain/src/kinds/Feed.js +14 -13
- package/dist/domain/src/kinds/Feed.js.map +1 -1
- package/dist/domain/src/kinds/FeedList.d.ts +6 -7
- package/dist/domain/src/kinds/FeedList.d.ts.map +1 -1
- package/dist/domain/src/kinds/FeedList.js +12 -11
- package/dist/domain/src/kinds/FeedList.js.map +1 -1
- package/dist/domain/src/kinds/FollowList.d.ts +7 -7
- package/dist/domain/src/kinds/FollowList.d.ts.map +1 -1
- package/dist/domain/src/kinds/FollowList.js +15 -11
- package/dist/domain/src/kinds/FollowList.js.map +1 -1
- package/dist/domain/src/kinds/Handler.d.ts +11 -13
- package/dist/domain/src/kinds/Handler.d.ts.map +1 -1
- package/dist/domain/src/kinds/Handler.js +21 -19
- package/dist/domain/src/kinds/Handler.js.map +1 -1
- package/dist/domain/src/kinds/HandlerRecommendation.d.ts +6 -7
- package/dist/domain/src/kinds/HandlerRecommendation.d.ts.map +1 -1
- package/dist/domain/src/kinds/HandlerRecommendation.js +13 -12
- package/dist/domain/src/kinds/HandlerRecommendation.js.map +1 -1
- package/dist/domain/src/kinds/MessagingRelayList.d.ts +6 -7
- package/dist/domain/src/kinds/MessagingRelayList.d.ts.map +1 -1
- package/dist/domain/src/kinds/MessagingRelayList.js +12 -11
- package/dist/domain/src/kinds/MessagingRelayList.js.map +1 -1
- package/dist/domain/src/kinds/MuteList.d.ts +7 -7
- package/dist/domain/src/kinds/MuteList.d.ts.map +1 -1
- package/dist/domain/src/kinds/MuteList.js +15 -11
- package/dist/domain/src/kinds/MuteList.js.map +1 -1
- package/dist/domain/src/kinds/Note.d.ts +18 -0
- package/dist/domain/src/kinds/Note.d.ts.map +1 -0
- package/dist/domain/src/kinds/Note.js +106 -0
- package/dist/domain/src/kinds/Note.js.map +1 -0
- package/dist/domain/src/kinds/Pin.d.ts +7 -8
- package/dist/domain/src/kinds/Pin.d.ts.map +1 -1
- package/dist/domain/src/kinds/Pin.js +23 -21
- package/dist/domain/src/kinds/Pin.js.map +1 -1
- package/dist/domain/src/kinds/PinList.d.ts +6 -7
- package/dist/domain/src/kinds/PinList.d.ts.map +1 -1
- package/dist/domain/src/kinds/PinList.js +13 -12
- package/dist/domain/src/kinds/PinList.js.map +1 -1
- package/dist/domain/src/kinds/Pinboard.d.ts +7 -8
- package/dist/domain/src/kinds/Pinboard.d.ts.map +1 -1
- package/dist/domain/src/kinds/Pinboard.js +16 -15
- package/dist/domain/src/kinds/Pinboard.js.map +1 -1
- package/dist/domain/src/kinds/Poll.d.ts +7 -8
- package/dist/domain/src/kinds/Poll.d.ts.map +1 -1
- package/dist/domain/src/kinds/Poll.js +16 -15
- package/dist/domain/src/kinds/Poll.js.map +1 -1
- package/dist/domain/src/kinds/PollResponse.d.ts +7 -8
- package/dist/domain/src/kinds/PollResponse.d.ts.map +1 -1
- package/dist/domain/src/kinds/PollResponse.js +13 -12
- package/dist/domain/src/kinds/PollResponse.js.map +1 -1
- package/dist/domain/src/kinds/Profile.d.ts +10 -13
- package/dist/domain/src/kinds/Profile.d.ts.map +1 -1
- package/dist/domain/src/kinds/Profile.js +16 -19
- package/dist/domain/src/kinds/Profile.js.map +1 -1
- package/dist/domain/src/kinds/Reaction.d.ts +16 -0
- package/dist/domain/src/kinds/Reaction.d.ts.map +1 -0
- package/dist/domain/src/kinds/Reaction.js +55 -0
- package/dist/domain/src/kinds/Reaction.js.map +1 -0
- package/dist/domain/src/kinds/RelayAddMember.d.ts +7 -7
- package/dist/domain/src/kinds/RelayAddMember.d.ts.map +1 -1
- package/dist/domain/src/kinds/RelayAddMember.js +13 -11
- package/dist/domain/src/kinds/RelayAddMember.js.map +1 -1
- package/dist/domain/src/kinds/RelayInvite.d.ts +7 -7
- package/dist/domain/src/kinds/RelayInvite.d.ts.map +1 -1
- package/dist/domain/src/kinds/RelayInvite.js +13 -11
- package/dist/domain/src/kinds/RelayInvite.js.map +1 -1
- package/dist/domain/src/kinds/RelayJoin.d.ts +7 -7
- package/dist/domain/src/kinds/RelayJoin.d.ts.map +1 -1
- package/dist/domain/src/kinds/RelayJoin.js +13 -11
- package/dist/domain/src/kinds/RelayJoin.js.map +1 -1
- package/dist/domain/src/kinds/RelayLeave.d.ts +7 -7
- package/dist/domain/src/kinds/RelayLeave.d.ts.map +1 -1
- package/dist/domain/src/kinds/RelayLeave.js +11 -9
- package/dist/domain/src/kinds/RelayLeave.js.map +1 -1
- package/dist/domain/src/kinds/RelayList.d.ts +7 -7
- package/dist/domain/src/kinds/RelayList.d.ts.map +1 -1
- package/dist/domain/src/kinds/RelayList.js +20 -11
- package/dist/domain/src/kinds/RelayList.js.map +1 -1
- package/dist/domain/src/kinds/RelayMembers.d.ts +9 -9
- package/dist/domain/src/kinds/RelayMembers.d.ts.map +1 -1
- package/dist/domain/src/kinds/RelayMembers.js +15 -15
- package/dist/domain/src/kinds/RelayMembers.js.map +1 -1
- package/dist/domain/src/kinds/RelayRemoveMember.d.ts +7 -7
- package/dist/domain/src/kinds/RelayRemoveMember.d.ts.map +1 -1
- package/dist/domain/src/kinds/RelayRemoveMember.js +13 -11
- package/dist/domain/src/kinds/RelayRemoveMember.js.map +1 -1
- package/dist/domain/src/kinds/RelayRole.d.ts +18 -0
- package/dist/domain/src/kinds/RelayRole.d.ts.map +1 -0
- package/dist/domain/src/kinds/RelayRole.js +46 -0
- package/dist/domain/src/kinds/RelayRole.js.map +1 -0
- package/dist/domain/src/kinds/RelaySet.d.ts +6 -7
- package/dist/domain/src/kinds/RelaySet.d.ts.map +1 -1
- package/dist/domain/src/kinds/RelaySet.js +15 -14
- package/dist/domain/src/kinds/RelaySet.js.map +1 -1
- package/dist/domain/src/kinds/Report.d.ts +9 -8
- package/dist/domain/src/kinds/Report.d.ts.map +1 -1
- package/dist/domain/src/kinds/Report.js +20 -16
- package/dist/domain/src/kinds/Report.js.map +1 -1
- package/dist/domain/src/kinds/RoomAddMember.d.ts +7 -7
- package/dist/domain/src/kinds/RoomAddMember.d.ts.map +1 -1
- package/dist/domain/src/kinds/RoomAddMember.js +13 -11
- package/dist/domain/src/kinds/RoomAddMember.js.map +1 -1
- package/dist/domain/src/kinds/RoomAdmins.d.ts +7 -7
- package/dist/domain/src/kinds/RoomAdmins.d.ts.map +1 -1
- package/dist/domain/src/kinds/RoomAdmins.js +13 -11
- package/dist/domain/src/kinds/RoomAdmins.js.map +1 -1
- package/dist/domain/src/kinds/RoomCreate.d.ts +8 -8
- package/dist/domain/src/kinds/RoomCreate.d.ts.map +1 -1
- package/dist/domain/src/kinds/RoomCreate.js +13 -11
- package/dist/domain/src/kinds/RoomCreate.js.map +1 -1
- package/dist/domain/src/kinds/RoomCreatePermission.d.ts +7 -7
- package/dist/domain/src/kinds/RoomCreatePermission.d.ts.map +1 -1
- package/dist/domain/src/kinds/RoomCreatePermission.js +13 -11
- package/dist/domain/src/kinds/RoomCreatePermission.js.map +1 -1
- package/dist/domain/src/kinds/RoomDelete.d.ts +8 -8
- package/dist/domain/src/kinds/RoomDelete.d.ts.map +1 -1
- package/dist/domain/src/kinds/RoomDelete.js +14 -12
- package/dist/domain/src/kinds/RoomDelete.js.map +1 -1
- package/dist/domain/src/kinds/RoomEdit.d.ts +8 -8
- package/dist/domain/src/kinds/RoomEdit.d.ts.map +1 -1
- package/dist/domain/src/kinds/RoomEdit.js +24 -23
- package/dist/domain/src/kinds/RoomEdit.js.map +1 -1
- package/dist/domain/src/kinds/RoomJoin.d.ts +8 -10
- package/dist/domain/src/kinds/RoomJoin.d.ts.map +1 -1
- package/dist/domain/src/kinds/RoomJoin.js +15 -19
- package/dist/domain/src/kinds/RoomJoin.js.map +1 -1
- package/dist/domain/src/kinds/RoomLeave.d.ts +8 -8
- package/dist/domain/src/kinds/RoomLeave.d.ts.map +1 -1
- package/dist/domain/src/kinds/RoomLeave.js +14 -12
- package/dist/domain/src/kinds/RoomLeave.js.map +1 -1
- package/dist/domain/src/kinds/RoomList.d.ts +18 -11
- package/dist/domain/src/kinds/RoomList.d.ts.map +1 -1
- package/dist/domain/src/kinds/RoomList.js +94 -21
- package/dist/domain/src/kinds/RoomList.js.map +1 -1
- package/dist/domain/src/kinds/RoomMembers.d.ts +7 -7
- package/dist/domain/src/kinds/RoomMembers.d.ts.map +1 -1
- package/dist/domain/src/kinds/RoomMembers.js +13 -11
- package/dist/domain/src/kinds/RoomMembers.js.map +1 -1
- package/dist/domain/src/kinds/RoomMeta.d.ts +7 -7
- package/dist/domain/src/kinds/RoomMeta.d.ts.map +1 -1
- package/dist/domain/src/kinds/RoomMeta.js +16 -14
- package/dist/domain/src/kinds/RoomMeta.js.map +1 -1
- package/dist/domain/src/kinds/RoomPins.d.ts +15 -0
- package/dist/domain/src/kinds/RoomPins.d.ts.map +1 -0
- package/dist/domain/src/kinds/RoomPins.js +34 -0
- package/dist/domain/src/kinds/RoomPins.js.map +1 -0
- package/dist/domain/src/kinds/RoomRemoveMember.d.ts +7 -7
- package/dist/domain/src/kinds/RoomRemoveMember.d.ts.map +1 -1
- package/dist/domain/src/kinds/RoomRemoveMember.js +13 -11
- package/dist/domain/src/kinds/RoomRemoveMember.js.map +1 -1
- package/dist/domain/src/kinds/RoomUpdatePins.d.ts +15 -0
- package/dist/domain/src/kinds/RoomUpdatePins.d.ts.map +1 -0
- package/dist/domain/src/kinds/RoomUpdatePins.js +38 -0
- package/dist/domain/src/kinds/RoomUpdatePins.js.map +1 -0
- package/dist/domain/src/kinds/SearchRelayList.d.ts +6 -7
- package/dist/domain/src/kinds/SearchRelayList.d.ts.map +1 -1
- package/dist/domain/src/kinds/SearchRelayList.js +12 -11
- package/dist/domain/src/kinds/SearchRelayList.js.map +1 -1
- package/dist/domain/src/kinds/Thread.d.ts +6 -7
- package/dist/domain/src/kinds/Thread.d.ts.map +1 -1
- package/dist/domain/src/kinds/Thread.js +12 -11
- package/dist/domain/src/kinds/Thread.js.map +1 -1
- package/dist/domain/src/kinds/TimeEvent.d.ts +9 -10
- package/dist/domain/src/kinds/TimeEvent.d.ts.map +1 -1
- package/dist/domain/src/kinds/TimeEvent.js +23 -22
- package/dist/domain/src/kinds/TimeEvent.js.map +1 -1
- package/dist/domain/src/kinds/TopicList.d.ts +6 -7
- package/dist/domain/src/kinds/TopicList.d.ts.map +1 -1
- package/dist/domain/src/kinds/TopicList.js +13 -12
- package/dist/domain/src/kinds/TopicList.js.map +1 -1
- package/dist/domain/src/kinds/ZapGoal.d.ts +15 -9
- package/dist/domain/src/kinds/ZapGoal.d.ts.map +1 -1
- package/dist/domain/src/kinds/ZapGoal.js +46 -17
- package/dist/domain/src/kinds/ZapGoal.js.map +1 -1
- package/dist/domain/src/kinds/ZapReceipt.d.ts +8 -11
- package/dist/domain/src/kinds/ZapReceipt.d.ts.map +1 -1
- package/dist/domain/src/kinds/ZapReceipt.js +18 -42
- package/dist/domain/src/kinds/ZapReceipt.js.map +1 -1
- package/dist/domain/src/kinds/ZapRequest.d.ts +15 -7
- package/dist/domain/src/kinds/ZapRequest.d.ts.map +1 -1
- package/dist/domain/src/kinds/ZapRequest.js +40 -15
- package/dist/domain/src/kinds/ZapRequest.js.map +1 -1
- package/dist/domain/src/other/Relay.d.ts +49 -0
- package/dist/domain/src/other/Relay.d.ts.map +1 -0
- package/dist/domain/src/other/Relay.js +50 -0
- package/dist/domain/src/other/Relay.js.map +1 -0
- package/dist/domain/src/other/Zapper.d.ts +40 -0
- package/dist/domain/src/other/Zapper.d.ts.map +1 -0
- package/dist/domain/src/other/Zapper.js +67 -0
- package/dist/domain/src/other/Zapper.js.map +1 -0
- package/dist/feeds/src/compiler.d.ts +2 -2
- package/dist/feeds/src/compiler.d.ts.map +1 -1
- package/dist/feeds/src/index.d.ts +1 -0
- package/dist/feeds/src/index.d.ts.map +1 -1
- package/dist/feeds/src/index.js +1 -0
- package/dist/feeds/src/index.js.map +1 -1
- package/dist/feeds/src/request.d.ts +4 -4
- package/dist/feeds/src/request.d.ts.map +1 -1
- package/dist/feeds/src/request.js +15 -15
- package/dist/feeds/src/request.js.map +1 -1
- package/dist/feeds/src/router.d.ts +10 -0
- package/dist/feeds/src/router.d.ts.map +1 -0
- package/dist/feeds/src/router.js +45 -0
- package/dist/feeds/src/router.js.map +1 -0
- package/dist/feeds/src/utils.js +2 -2
- package/dist/feeds/src/utils.js.map +1 -1
- package/dist/lib/src/Tools.d.ts +9 -0
- package/dist/lib/src/Tools.d.ts.map +1 -1
- package/dist/lib/src/Tools.js +26 -1
- package/dist/lib/src/Tools.js.map +1 -1
- package/dist/net/src/auth.d.ts.map +1 -1
- package/dist/net/src/auth.js +2 -2
- package/dist/net/src/auth.js.map +1 -1
- package/dist/net/src/context.d.ts +1 -1
- package/dist/net/src/context.d.ts.map +1 -1
- package/dist/net/src/message.d.ts +1 -1
- package/dist/net/src/message.d.ts.map +1 -1
- package/dist/net/src/message.js +1 -1
- package/dist/net/src/message.js.map +1 -1
- package/dist/net/src/publish.d.ts.map +1 -1
- package/dist/net/src/publish.js +13 -0
- package/dist/net/src/publish.js.map +1 -1
- package/dist/net/src/repository.d.ts +3 -0
- package/dist/net/src/repository.d.ts.map +1 -1
- package/dist/net/src/repository.js +49 -12
- package/dist/net/src/repository.js.map +1 -1
- package/dist/net/src/request.d.ts +3 -3
- package/dist/net/src/request.d.ts.map +1 -1
- package/dist/net/src/request.js +16 -2
- package/dist/net/src/request.js.map +1 -1
- package/dist/signer/src/nip59.d.ts +1 -1
- package/dist/signer/src/nip59.d.ts.map +1 -1
- package/dist/signer/src/nip59.js +26 -30
- package/dist/signer/src/nip59.js.map +1 -1
- package/dist/signer/src/signers/nip07.d.ts.map +1 -1
- package/dist/signer/src/signers/nip07.js +19 -5
- package/dist/signer/src/signers/nip07.js.map +1 -1
- package/dist/signer/src/signers/nip46.d.ts +2 -2
- package/dist/signer/src/signers/nip46.d.ts.map +1 -1
- package/dist/signer/src/signers/nip46.js +10 -5
- package/dist/signer/src/signers/nip46.js.map +1 -1
- package/dist/signer/src/util.d.ts +2 -2
- package/dist/signer/src/util.d.ts.map +1 -1
- package/dist/signer/src/util.js +2 -6
- package/dist/signer/src/util.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/util/src/Events.d.ts +0 -12
- package/dist/util/src/Events.d.ts.map +1 -1
- package/dist/util/src/Events.js +3 -25
- package/dist/util/src/Events.js.map +1 -1
- package/dist/util/src/Kinds.d.ts +5 -1
- package/dist/util/src/Kinds.d.ts.map +1 -1
- package/dist/util/src/Kinds.js +7 -2
- package/dist/util/src/Kinds.js.map +1 -1
- package/dist/util/src/Lightning.d.ts +6 -0
- package/dist/util/src/Lightning.d.ts.map +1 -0
- package/dist/util/src/Lightning.js +59 -0
- package/dist/util/src/Lightning.js.map +1 -0
- package/dist/util/src/Nip86.d.ts +74 -30
- package/dist/util/src/Nip86.d.ts.map +1 -1
- package/dist/util/src/Nip86.js +169 -30
- package/dist/util/src/Nip86.js.map +1 -1
- package/dist/util/src/Pow.js +2 -2
- package/dist/util/src/Pow.js.map +1 -1
- package/dist/util/src/Pubkey.d.ts.map +1 -1
- package/dist/util/src/Pubkey.js +2 -1
- package/dist/util/src/Pubkey.js.map +1 -1
- package/dist/util/src/Relay.d.ts +0 -29
- package/dist/util/src/Relay.d.ts.map +1 -1
- package/dist/util/src/Relay.js +0 -10
- package/dist/util/src/Relay.js.map +1 -1
- package/dist/util/src/RelaySelection.d.ts +101 -0
- package/dist/util/src/RelaySelection.d.ts.map +1 -0
- package/dist/util/src/RelaySelection.js +98 -0
- package/dist/util/src/RelaySelection.js.map +1 -0
- package/dist/util/src/Tags.d.ts +16 -35
- package/dist/util/src/Tags.d.ts.map +1 -1
- package/dist/util/src/Tags.js +23 -74
- package/dist/util/src/Tags.js.map +1 -1
- package/dist/util/src/Topics.d.ts +2 -0
- package/dist/util/src/Topics.d.ts.map +1 -0
- package/dist/util/src/Topics.js +2 -0
- package/dist/util/src/Topics.js.map +1 -0
- package/dist/util/src/index.d.ts +2 -1
- package/dist/util/src/index.d.ts.map +1 -1
- package/dist/util/src/index.js +2 -1
- package/dist/util/src/index.js.map +1 -1
- package/package.json +11 -9
- package/dist/domain/src/EventBuilder.d.ts +0 -35
- package/dist/domain/src/EventBuilder.d.ts.map +0 -1
- package/dist/domain/src/EventBuilder.js +0 -111
- package/dist/domain/src/EventBuilder.js.map +0 -1
- package/dist/domain/src/EventReader.d.ts +0 -24
- package/dist/domain/src/EventReader.d.ts.map +0 -1
- package/dist/domain/src/EventReader.js +0 -57
- package/dist/domain/src/EventReader.js.map +0 -1
- package/dist/domain/src/ListBuilder.d.ts.map +0 -1
- package/dist/domain/src/ListBuilder.js.map +0 -1
- package/dist/domain/src/ListReader.d.ts +0 -12
- package/dist/domain/src/ListReader.d.ts.map +0 -1
- package/dist/domain/src/ListReader.js.map +0 -1
- package/dist/domain/src/kinds/GroupList.d.ts +0 -13
- package/dist/domain/src/kinds/GroupList.d.ts.map +0 -1
- package/dist/domain/src/kinds/GroupList.js +0 -24
- package/dist/domain/src/kinds/GroupList.js.map +0 -1
- package/dist/domain/src/kinds/SlashCommand.d.ts +0 -38
- package/dist/domain/src/kinds/SlashCommand.d.ts.map +0 -1
- package/dist/domain/src/kinds/SlashCommand.js +0 -91
- package/dist/domain/src/kinds/SlashCommand.js.map +0 -1
- package/dist/util/src/Zaps.d.ts +0 -86
- package/dist/util/src/Zaps.d.ts.map +0 -1
- package/dist/util/src/Zaps.js +0 -184
- package/dist/util/src/Zaps.js.map +0 -1
|
@@ -1,31 +1,40 @@
|
|
|
1
|
-
import { spec } from "@welshman/lib";
|
|
2
|
-
import { ZAP_GOAL,
|
|
3
|
-
import { EventReader } from "../EventReader.js";
|
|
4
|
-
import {
|
|
1
|
+
import { spec, uniq } from "@welshman/lib";
|
|
2
|
+
import { ZAP_GOAL, matchTags, tagSpec, tagValue } from "@welshman/util";
|
|
3
|
+
import { EventReader } from "../core/EventReader.js";
|
|
4
|
+
import { EventWriter } from "../core/EventWriter.js";
|
|
5
|
+
import { KindFactory } from "../core/Kind.js";
|
|
5
6
|
// NIP-75 kind-9041 zap goal.
|
|
6
|
-
export class
|
|
7
|
-
kind = ZAP_GOAL;
|
|
7
|
+
export class ZapGoalReader extends EventReader {
|
|
8
8
|
title() {
|
|
9
9
|
return this.event.content || "";
|
|
10
10
|
}
|
|
11
11
|
summary() {
|
|
12
|
-
return
|
|
12
|
+
return tagValue(tagSpec("summary"), this.event.tags);
|
|
13
13
|
}
|
|
14
|
+
image() {
|
|
15
|
+
return tagValue(tagSpec("image"), this.event.tags);
|
|
16
|
+
}
|
|
17
|
+
// Target amount, in millisats.
|
|
14
18
|
amount() {
|
|
15
|
-
return parseInt(
|
|
19
|
+
return parseInt(tagValue(tagSpec("amount"), this.event.tags) || "0") || 0;
|
|
16
20
|
}
|
|
21
|
+
// NIP-75 packs every relay into a single tag, but tolerate one-per-tag as well.
|
|
17
22
|
urls() {
|
|
18
|
-
return
|
|
23
|
+
return uniq(matchTags(tagSpec("relays"), this.event.tags).flatMap(tag => tag.slice(1)));
|
|
19
24
|
}
|
|
20
|
-
|
|
21
|
-
|
|
25
|
+
// Zap receipts published after this should not count toward the goal's progress.
|
|
26
|
+
closedAt() {
|
|
27
|
+
const closedAt = parseInt(tagValue(tagSpec("closed_at"), this.event.tags) ?? "");
|
|
28
|
+
return isNaN(closedAt) ? undefined : closedAt;
|
|
22
29
|
}
|
|
23
30
|
}
|
|
24
|
-
export class
|
|
25
|
-
kind
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
31
|
+
export class ZapGoalWriter extends EventWriter {
|
|
32
|
+
constructor(kind, context, reader) {
|
|
33
|
+
super(kind, context, reader);
|
|
34
|
+
this.ensureAmount();
|
|
35
|
+
}
|
|
36
|
+
// A zap goal always carries an amount tag, defaulting to zero.
|
|
37
|
+
ensureAmount() {
|
|
29
38
|
if (!this.extraTags.some(spec(["amount"]))) {
|
|
30
39
|
this.addTags(["amount", "0"]);
|
|
31
40
|
}
|
|
@@ -39,14 +48,34 @@ export class ZapGoalBuilder extends EventBuilder {
|
|
|
39
48
|
setAmount(amount) {
|
|
40
49
|
return this.dropTags(spec(["amount"])).addTags(["amount", String(amount)]);
|
|
41
50
|
}
|
|
51
|
+
setImage(image) {
|
|
52
|
+
return this.dropTags(spec(["image"])).addTags(["image", image]);
|
|
53
|
+
}
|
|
54
|
+
setClosedAt(closedAt) {
|
|
55
|
+
return this.dropTags(spec(["closed_at"])).addTags(["closed_at", String(closedAt)]);
|
|
56
|
+
}
|
|
57
|
+
clearClosedAt() {
|
|
58
|
+
return this.dropTags(spec(["closed_at"]));
|
|
59
|
+
}
|
|
60
|
+
// A single tag holding every relay, per NIP-75.
|
|
42
61
|
setUrls(urls) {
|
|
43
|
-
|
|
62
|
+
this.dropTags(spec(["relays"]));
|
|
63
|
+
return urls.length > 0 ? this.addTags(["relays", ...urls]) : this;
|
|
44
64
|
}
|
|
45
65
|
validate() {
|
|
46
66
|
super.validate();
|
|
47
67
|
if (!this.content) {
|
|
48
68
|
throw new Error("ZapGoal requires a title");
|
|
49
69
|
}
|
|
70
|
+
// NIP-75 requires relays so zaps can be tallied; the constructor guarantees an amount.
|
|
71
|
+
if (!this.extraTags.some(spec(["relays"]))) {
|
|
72
|
+
throw new Error("ZapGoal requires at least one relay");
|
|
73
|
+
}
|
|
50
74
|
}
|
|
51
75
|
}
|
|
76
|
+
export const ZapGoal = new KindFactory({
|
|
77
|
+
kind: ZAP_GOAL,
|
|
78
|
+
reader: ZapGoalReader,
|
|
79
|
+
writer: ZapGoalWriter,
|
|
80
|
+
});
|
|
52
81
|
//# sourceMappingURL=ZapGoal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZapGoal.js","sourceRoot":"","sources":["../../../../src/kinds/ZapGoal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"ZapGoal.js","sourceRoot":"","sources":["../../../../src/kinds/ZapGoal.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import type { TrustedEvent
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
export declare class
|
|
6
|
-
readonly kind = 9735;
|
|
1
|
+
import type { TrustedEvent } from "@welshman/util";
|
|
2
|
+
import { EventReader } from "../core/EventReader.js";
|
|
3
|
+
import { EventWriter } from "../core/EventWriter.js";
|
|
4
|
+
import { KindFactory } from "../core/Kind.js";
|
|
5
|
+
export declare class ZapReceiptReader extends EventReader {
|
|
7
6
|
plain?: TrustedEvent;
|
|
8
|
-
|
|
7
|
+
parse(): this;
|
|
9
8
|
bolt11(): string | undefined;
|
|
10
9
|
invoiceAmount(): number | undefined;
|
|
11
10
|
request(): TrustedEvent | undefined;
|
|
@@ -14,15 +13,13 @@ export declare class ZapReceipt extends EventReader {
|
|
|
14
13
|
eventId(): string | undefined;
|
|
15
14
|
comment(): string | undefined;
|
|
16
15
|
preimage(): string | undefined;
|
|
17
|
-
verify(zapper: Zapper): boolean;
|
|
18
|
-
builder(): ZapReceiptBuilder;
|
|
19
16
|
}
|
|
20
|
-
export declare class
|
|
21
|
-
readonly kind = 9735;
|
|
17
|
+
export declare class ZapReceiptWriter extends EventWriter<ZapReceiptReader> {
|
|
22
18
|
setBolt11(bolt11: string): this;
|
|
23
19
|
setDescription(description: string): this;
|
|
24
20
|
setRecipient(recipient: string): this;
|
|
25
21
|
setEventId(eventId: string): this;
|
|
26
22
|
setPreimage(preimage: string): this;
|
|
27
23
|
}
|
|
24
|
+
export declare const ZapReceipt: KindFactory<ZapReceiptReader, ZapReceiptWriter>;
|
|
28
25
|
//# sourceMappingURL=ZapReceipt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZapReceipt.d.ts","sourceRoot":"","sources":["../../../../src/kinds/ZapReceipt.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"ZapReceipt.d.ts","sourceRoot":"","sources":["../../../../src/kinds/ZapReceipt.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAA;AAG3C,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,KAAK,CAAC,EAAE,YAAY,CAAA;IAEpB,KAAK;IAQL,MAAM;IAIN,aAAa;IAYb,OAAO;IAIP,MAAM;IAIN,SAAS;IAIT,OAAO;IAIP,OAAO;IAIP,QAAQ;CAGT;AAED,qBAAa,gBAAiB,SAAQ,WAAW,CAAC,gBAAgB,CAAC;IACjE,SAAS,CAAC,MAAM,EAAE,MAAM;IAIxB,cAAc,CAAC,WAAW,EAAE,MAAM;IAIlC,YAAY,CAAC,SAAS,EAAE,MAAM;IAI9B,UAAU,CAAC,OAAO,EAAE,MAAM;IAI1B,WAAW,CAAC,QAAQ,EAAE,MAAM;CAG7B;AAED,eAAO,MAAM,UAAU,iDAIrB,CAAA"}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { parseJson, spec } from "@welshman/lib";
|
|
2
|
-
import { ZAP_RECEIPT,
|
|
3
|
-
import { EventReader } from "../EventReader.js";
|
|
4
|
-
import {
|
|
2
|
+
import { ZAP_RECEIPT, tagSpec, tagValue, getInvoiceAmount } from "@welshman/util";
|
|
3
|
+
import { EventReader } from "../core/EventReader.js";
|
|
4
|
+
import { EventWriter } from "../core/EventWriter.js";
|
|
5
|
+
import { KindFactory } from "../core/Kind.js";
|
|
5
6
|
// NIP-57 kind-9735 zap receipt (relay/LN-generated, read-only).
|
|
6
|
-
export class
|
|
7
|
-
kind = ZAP_RECEIPT;
|
|
7
|
+
export class ZapReceiptReader extends EventReader {
|
|
8
8
|
plain;
|
|
9
|
-
|
|
10
|
-
const description =
|
|
9
|
+
parse() {
|
|
10
|
+
const description = tagValue(tagSpec("description"), this.event.tags);
|
|
11
11
|
this.plain = description ? parseJson(description) || undefined : undefined;
|
|
12
|
+
return this;
|
|
12
13
|
}
|
|
13
14
|
bolt11() {
|
|
14
|
-
return
|
|
15
|
+
return tagValue(tagSpec("bolt11"), this.event.tags);
|
|
15
16
|
}
|
|
16
17
|
invoiceAmount() {
|
|
17
18
|
const bolt11 = this.bolt11();
|
|
@@ -31,49 +32,19 @@ export class ZapReceipt extends EventReader {
|
|
|
31
32
|
return this.plain?.pubkey;
|
|
32
33
|
}
|
|
33
34
|
recipient() {
|
|
34
|
-
return
|
|
35
|
+
return tagValue(tagSpec("p"), this.event.tags);
|
|
35
36
|
}
|
|
36
37
|
eventId() {
|
|
37
|
-
return
|
|
38
|
+
return tagValue(tagSpec("e"), this.event.tags);
|
|
38
39
|
}
|
|
39
40
|
comment() {
|
|
40
41
|
return this.plain?.content;
|
|
41
42
|
}
|
|
42
43
|
preimage() {
|
|
43
|
-
return
|
|
44
|
-
}
|
|
45
|
-
verify(zapper) {
|
|
46
|
-
const request = this.request();
|
|
47
|
-
const invoiceAmount = this.invoiceAmount();
|
|
48
|
-
const recipient = this.recipient();
|
|
49
|
-
if (!request || invoiceAmount === undefined) {
|
|
50
|
-
return false;
|
|
51
|
-
}
|
|
52
|
-
if (request.pubkey === zapper.pubkey) {
|
|
53
|
-
return false;
|
|
54
|
-
}
|
|
55
|
-
const amount = getTagValue("amount", request.tags);
|
|
56
|
-
const lnurl = getTagValue("lnurl", request.tags);
|
|
57
|
-
if (amount && parseInt(amount) !== invoiceAmount) {
|
|
58
|
-
return false;
|
|
59
|
-
}
|
|
60
|
-
if (recipient === this.event.pubkey) {
|
|
61
|
-
return true;
|
|
62
|
-
}
|
|
63
|
-
if (lnurl && lnurl !== zapper.lnurl) {
|
|
64
|
-
return false;
|
|
65
|
-
}
|
|
66
|
-
if (this.event.pubkey !== zapper.nostrPubkey) {
|
|
67
|
-
return false;
|
|
68
|
-
}
|
|
69
|
-
return true;
|
|
70
|
-
}
|
|
71
|
-
builder() {
|
|
72
|
-
return new ZapReceiptBuilder(this);
|
|
44
|
+
return tagValue(tagSpec("preimage"), this.event.tags);
|
|
73
45
|
}
|
|
74
46
|
}
|
|
75
|
-
export class
|
|
76
|
-
kind = ZAP_RECEIPT;
|
|
47
|
+
export class ZapReceiptWriter extends EventWriter {
|
|
77
48
|
setBolt11(bolt11) {
|
|
78
49
|
return this.dropTags(spec(["bolt11"])).addTags(["bolt11", bolt11]);
|
|
79
50
|
}
|
|
@@ -90,4 +61,9 @@ export class ZapReceiptBuilder extends EventBuilder {
|
|
|
90
61
|
return this.dropTags(spec(["preimage"])).addTags(["preimage", preimage]);
|
|
91
62
|
}
|
|
92
63
|
}
|
|
64
|
+
export const ZapReceipt = new KindFactory({
|
|
65
|
+
kind: ZAP_RECEIPT,
|
|
66
|
+
reader: ZapReceiptReader,
|
|
67
|
+
writer: ZapReceiptWriter,
|
|
68
|
+
});
|
|
93
69
|
//# sourceMappingURL=ZapReceipt.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZapReceipt.js","sourceRoot":"","sources":["../../../../src/kinds/ZapReceipt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,IAAI,EAAC,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAC,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"ZapReceipt.js","sourceRoot":"","sources":["../../../../src/kinds/ZapReceipt.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,28 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import type { SignedEvent } from "@welshman/util";
|
|
2
|
+
import { EventReader } from "../core/EventReader.js";
|
|
3
|
+
import { EventWriter } from "../core/EventWriter.js";
|
|
4
|
+
import { KindFactory } from "../core/Kind.js";
|
|
5
|
+
import type { Zapper } from "../other/Zapper.js";
|
|
6
|
+
export declare class ZapRequestReader extends EventReader {
|
|
5
7
|
amount(): number | undefined;
|
|
6
8
|
lnurl(): string | undefined;
|
|
7
9
|
recipient(): string | undefined;
|
|
8
10
|
eventId(): string | undefined;
|
|
9
11
|
urls(): string[];
|
|
10
|
-
|
|
12
|
+
anonymous(): boolean;
|
|
11
13
|
}
|
|
12
|
-
export declare class
|
|
13
|
-
readonly kind = 9734;
|
|
14
|
+
export declare class ZapRequestWriter extends EventWriter<ZapRequestReader> {
|
|
14
15
|
setAmount(amount: number): this;
|
|
15
16
|
setLnurl(lnurl: string): this;
|
|
16
17
|
setRecipient(recipient: string): this;
|
|
17
18
|
setEventId(eventId: string): this;
|
|
18
19
|
setUrls(urls: string[]): this;
|
|
20
|
+
setAnonymous(anonymous: boolean): this;
|
|
21
|
+
requestInvoice(zapper: Zapper): Promise<{
|
|
22
|
+
event: SignedEvent;
|
|
23
|
+
invoice?: string;
|
|
24
|
+
error?: string;
|
|
25
|
+
}>;
|
|
19
26
|
}
|
|
27
|
+
export declare const ZapRequest: KindFactory<ZapRequestReader, ZapRequestWriter>;
|
|
20
28
|
//# sourceMappingURL=ZapRequest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZapRequest.d.ts","sourceRoot":"","sources":["../../../../src/kinds/ZapRequest.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"ZapRequest.d.ts","sourceRoot":"","sources":["../../../../src/kinds/ZapRequest.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,oBAAoB,CAAA;AAG9C,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,MAAM;IAMN,KAAK;IAIL,SAAS;IAIT,OAAO;IAIP,IAAI;IAMJ,SAAS;CAGV;AAED,qBAAa,gBAAiB,SAAQ,WAAW,CAAC,gBAAgB,CAAC;IACjE,SAAS,CAAC,MAAM,EAAE,MAAM;IAIxB,QAAQ,CAAC,KAAK,EAAE,MAAM;IAItB,YAAY,CAAC,SAAS,EAAE,MAAM;IAI9B,UAAU,CAAC,OAAO,EAAE,MAAM;IAI1B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE;IAItB,YAAY,CAAC,SAAS,EAAE,OAAO;IAMzB,cAAc,CAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;QAAC,KAAK,EAAE,WAAW,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;CAmBnE;AAED,eAAO,MAAM,UAAU,iDAIrB,CAAA"}
|
|
@@ -1,33 +1,32 @@
|
|
|
1
|
-
import { spec } from "@welshman/lib";
|
|
2
|
-
import { ZAP_REQUEST,
|
|
3
|
-
import { EventReader } from "../EventReader.js";
|
|
4
|
-
import {
|
|
1
|
+
import { spec, tryCatch, fetchJson } from "@welshman/lib";
|
|
2
|
+
import { ZAP_REQUEST, matchTag, tagSpec, tagValue, stamp } from "@welshman/util";
|
|
3
|
+
import { EventReader } from "../core/EventReader.js";
|
|
4
|
+
import { EventWriter } from "../core/EventWriter.js";
|
|
5
|
+
import { KindFactory } from "../core/Kind.js";
|
|
5
6
|
// NIP-57 kind-9734 zap request.
|
|
6
|
-
export class
|
|
7
|
-
kind = ZAP_REQUEST;
|
|
7
|
+
export class ZapRequestReader extends EventReader {
|
|
8
8
|
amount() {
|
|
9
|
-
const amount =
|
|
9
|
+
const amount = tagValue(tagSpec("amount"), this.event.tags);
|
|
10
10
|
return amount ? parseInt(amount) : undefined;
|
|
11
11
|
}
|
|
12
12
|
lnurl() {
|
|
13
|
-
return
|
|
13
|
+
return tagValue(tagSpec("lnurl"), this.event.tags);
|
|
14
14
|
}
|
|
15
15
|
recipient() {
|
|
16
|
-
return
|
|
16
|
+
return tagValue(tagSpec("p"), this.event.tags);
|
|
17
17
|
}
|
|
18
18
|
eventId() {
|
|
19
|
-
return
|
|
19
|
+
return tagValue(tagSpec("e"), this.event.tags);
|
|
20
20
|
}
|
|
21
21
|
urls() {
|
|
22
|
-
const tag =
|
|
22
|
+
const tag = matchTag(tagSpec("relays"), this.event.tags);
|
|
23
23
|
return tag ? tag.slice(1) : [];
|
|
24
24
|
}
|
|
25
|
-
|
|
26
|
-
return
|
|
25
|
+
anonymous() {
|
|
26
|
+
return this.event.tags.some(spec(["anon"]));
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
export class
|
|
30
|
-
kind = ZAP_REQUEST;
|
|
29
|
+
export class ZapRequestWriter extends EventWriter {
|
|
31
30
|
setAmount(amount) {
|
|
32
31
|
return this.dropTags(spec(["amount"])).addTags(["amount", String(amount)]);
|
|
33
32
|
}
|
|
@@ -43,5 +42,31 @@ export class ZapRequestBuilder extends EventBuilder {
|
|
|
43
42
|
setUrls(urls) {
|
|
44
43
|
return this.dropTags(spec(["relays"])).addTags(["relays", ...urls]);
|
|
45
44
|
}
|
|
45
|
+
setAnonymous(anonymous) {
|
|
46
|
+
return anonymous
|
|
47
|
+
? this.dropTags(spec(["anon"])).addTags(["anon"])
|
|
48
|
+
: this.dropTags(spec(["anon"]));
|
|
49
|
+
}
|
|
50
|
+
async requestInvoice(zapper) {
|
|
51
|
+
const { signer } = this.context;
|
|
52
|
+
if (!signer) {
|
|
53
|
+
throw new Error("A signer is required to request a zap invoice");
|
|
54
|
+
}
|
|
55
|
+
const event = await signer.sign(stamp(await this.renderTemplate()));
|
|
56
|
+
const zapString = encodeURI(JSON.stringify(event));
|
|
57
|
+
const msats = parseInt(tagValue(tagSpec("amount"), event.tags));
|
|
58
|
+
const qs = `?amount=${msats}&nostr=${zapString}&lnurl=${zapper.lnurl}`;
|
|
59
|
+
const res = await tryCatch(() => fetchJson(zapper.callback + qs));
|
|
60
|
+
return {
|
|
61
|
+
event,
|
|
62
|
+
invoice: res?.pr,
|
|
63
|
+
error: res?.pr ? undefined : res.reason || "Failed to request invoice",
|
|
64
|
+
};
|
|
65
|
+
}
|
|
46
66
|
}
|
|
67
|
+
export const ZapRequest = new KindFactory({
|
|
68
|
+
kind: ZAP_REQUEST,
|
|
69
|
+
reader: ZapRequestReader,
|
|
70
|
+
writer: ZapRequestWriter,
|
|
71
|
+
});
|
|
47
72
|
//# sourceMappingURL=ZapRequest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZapRequest.js","sourceRoot":"","sources":["../../../../src/kinds/ZapRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"ZapRequest.js","sourceRoot":"","sources":["../../../../src/kinds/ZapRequest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export type RelayInfo = {
|
|
2
|
+
icon?: string;
|
|
3
|
+
banner?: string;
|
|
4
|
+
name?: string;
|
|
5
|
+
self?: string;
|
|
6
|
+
pubkey?: string;
|
|
7
|
+
contact?: string;
|
|
8
|
+
software?: string;
|
|
9
|
+
version?: string;
|
|
10
|
+
negentropy?: number;
|
|
11
|
+
description?: string;
|
|
12
|
+
supported_nips?: string[];
|
|
13
|
+
privacy_policy?: string;
|
|
14
|
+
terms_of_service?: string;
|
|
15
|
+
limitation?: {
|
|
16
|
+
min_pow_difficulty?: number;
|
|
17
|
+
payment_required?: boolean;
|
|
18
|
+
auth_required?: boolean;
|
|
19
|
+
};
|
|
20
|
+
redirect_to?: string;
|
|
21
|
+
};
|
|
22
|
+
export declare class Relay {
|
|
23
|
+
url: string;
|
|
24
|
+
icon?: string;
|
|
25
|
+
banner?: string;
|
|
26
|
+
name?: string;
|
|
27
|
+
self?: string;
|
|
28
|
+
pubkey?: string;
|
|
29
|
+
contact?: string;
|
|
30
|
+
software?: string;
|
|
31
|
+
version?: string;
|
|
32
|
+
negentropy?: number;
|
|
33
|
+
description?: string;
|
|
34
|
+
supported_nips?: string[];
|
|
35
|
+
privacy_policy?: string;
|
|
36
|
+
terms_of_service?: string;
|
|
37
|
+
limitation?: {
|
|
38
|
+
min_pow_difficulty?: number;
|
|
39
|
+
payment_required?: boolean;
|
|
40
|
+
auth_required?: boolean;
|
|
41
|
+
};
|
|
42
|
+
redirect_to?: string;
|
|
43
|
+
constructor(url: string, json?: RelayInfo);
|
|
44
|
+
displayUrl(): string;
|
|
45
|
+
display(fallback?: string): string;
|
|
46
|
+
hasNegentropy(): boolean;
|
|
47
|
+
hasNip(nip: number | string): boolean;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=Relay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Relay.d.ts","sourceRoot":"","sources":["../../../../src/other/Relay.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,UAAU,CAAC,EAAE;QACX,kBAAkB,CAAC,EAAE,MAAM,CAAA;QAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAA;QAC1B,aAAa,CAAC,EAAE,OAAO,CAAA;KACxB,CAAA;IAGD,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,qBAAa,KAAK;IAChB,GAAG,EAAG,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,UAAU,CAAC,EAAE;QACX,kBAAkB,CAAC,EAAE,MAAM,CAAA;QAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAA;QAC1B,aAAa,CAAC,EAAE,OAAO,CAAA;KACxB,CAAA;IACD,WAAW,CAAC,EAAE,MAAM,CAAA;gBAER,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,SAAc;IAU7C,UAAU;IAKV,OAAO,CAAC,QAAQ,SAAoB;IAKpC,aAAa;IASb,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAG5B"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { displayRelayUrl } from "@welshman/util";
|
|
2
|
+
export class Relay {
|
|
3
|
+
url;
|
|
4
|
+
icon;
|
|
5
|
+
banner;
|
|
6
|
+
name;
|
|
7
|
+
self;
|
|
8
|
+
pubkey;
|
|
9
|
+
contact;
|
|
10
|
+
software;
|
|
11
|
+
version;
|
|
12
|
+
negentropy;
|
|
13
|
+
description;
|
|
14
|
+
supported_nips;
|
|
15
|
+
privacy_policy;
|
|
16
|
+
terms_of_service;
|
|
17
|
+
limitation;
|
|
18
|
+
redirect_to;
|
|
19
|
+
constructor(url, json = {}) {
|
|
20
|
+
// Copy every field, including any non-standard NIP-11 ones, but force the url
|
|
21
|
+
// and coerce supported_nips (untrusted json) to a string array.
|
|
22
|
+
Object.assign(this, json, {
|
|
23
|
+
url,
|
|
24
|
+
supported_nips: Array.isArray(json.supported_nips) ? json.supported_nips.map(String) : [],
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
// This relay's url reduced to its host/path for display, e.g. "relay.example".
|
|
28
|
+
displayUrl() {
|
|
29
|
+
return displayRelayUrl(this.url);
|
|
30
|
+
}
|
|
31
|
+
// This relay's display name, falling back to its display url (or `fallback`).
|
|
32
|
+
display(fallback = this.displayUrl()) {
|
|
33
|
+
return this.name || fallback;
|
|
34
|
+
}
|
|
35
|
+
// Whether this relay supports negentropy sync (NIP-77).
|
|
36
|
+
hasNegentropy() {
|
|
37
|
+
if (this.negentropy)
|
|
38
|
+
return true;
|
|
39
|
+
if (this.supported_nips?.includes("77"))
|
|
40
|
+
return true;
|
|
41
|
+
if (this.software?.includes?.("strfry") && !this.version?.match(/^0\./))
|
|
42
|
+
return true;
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
// Whether this relay advertises support for the given NIP.
|
|
46
|
+
hasNip(nip) {
|
|
47
|
+
return this.supported_nips?.includes(String(nip)) ?? false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=Relay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Relay.js","sourceRoot":"","sources":["../../../../src/other/Relay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAA;AA8B9C,MAAM,OAAO,KAAK;IAChB,GAAG,CAAS;IACZ,IAAI,CAAS;IACb,MAAM,CAAS;IACf,IAAI,CAAS;IACb,IAAI,CAAS;IACb,MAAM,CAAS;IACf,OAAO,CAAS;IAChB,QAAQ,CAAS;IACjB,OAAO,CAAS;IAChB,UAAU,CAAS;IACnB,WAAW,CAAS;IACpB,cAAc,CAAW;IACzB,cAAc,CAAS;IACvB,gBAAgB,CAAS;IACzB,UAAU,CAIT;IACD,WAAW,CAAS;IAEpB,YAAY,GAAW,EAAE,OAAkB,EAAE;QAC3C,8EAA8E;QAC9E,gEAAgE;QAChE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE;YACxB,GAAG;YACH,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;SAC1F,CAAC,CAAA;IACJ,CAAC;IAED,+EAA+E;IAC/E,UAAU;QACR,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAClC,CAAC;IAED,8EAA8E;IAC9E,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE;QAClC,OAAO,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAA;IAC9B,CAAC;IAED,wDAAwD;IACxD,aAAa;QACX,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAA;QAChC,IAAI,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;QACpD,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAA;QAEpF,OAAO,KAAK,CAAA;IACd,CAAC;IAED,2DAA2D;IAC3D,MAAM,CAAC,GAAoB;QACzB,OAAO,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAA;IAC5D,CAAC;CACF"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { TrustedEvent, Filter } from "@welshman/util";
|
|
2
|
+
import type { ZapReceiptReader } from "../kinds/ZapReceipt.js";
|
|
3
|
+
export type Zap = {
|
|
4
|
+
request: TrustedEvent;
|
|
5
|
+
response: TrustedEvent;
|
|
6
|
+
invoiceAmount: number;
|
|
7
|
+
};
|
|
8
|
+
export type ZapperValues = {
|
|
9
|
+
lnurl: string;
|
|
10
|
+
pubkey: string;
|
|
11
|
+
nostrPubkey: string;
|
|
12
|
+
callback?: string;
|
|
13
|
+
minSendable?: number;
|
|
14
|
+
maxSendable?: number;
|
|
15
|
+
allowsNostr?: boolean;
|
|
16
|
+
};
|
|
17
|
+
export declare class Zapper {
|
|
18
|
+
lnurl: string;
|
|
19
|
+
pubkey: string;
|
|
20
|
+
nostrPubkey: string;
|
|
21
|
+
callback?: string;
|
|
22
|
+
minSendable?: number;
|
|
23
|
+
maxSendable?: number;
|
|
24
|
+
allowsNostr?: boolean;
|
|
25
|
+
constructor(values: ZapperValues);
|
|
26
|
+
/**
|
|
27
|
+
* Validate a parsed kind-9735 zap receipt against this zapper per NIP-57 and,
|
|
28
|
+
* if it checks out, return the reconstructed `Zap`. Returns undefined when the
|
|
29
|
+
* receipt is malformed or fails validation:
|
|
30
|
+
*
|
|
31
|
+
* - Missing/malformed zap request or bolt11 invoice
|
|
32
|
+
* - Invoice amount doesn't match the requested amount
|
|
33
|
+
* - Self-zap (request author is the zapper's own pubkey)
|
|
34
|
+
* - lnurl mismatch (if the request carried an lnurl tag)
|
|
35
|
+
* - Receipt not signed by the zapper's nostr pubkey
|
|
36
|
+
*/
|
|
37
|
+
validate(receipt: ZapReceiptReader): Zap | undefined;
|
|
38
|
+
getResponseFilter(pubkey: string, eventId?: string): Filter;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=Zapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Zapper.d.ts","sourceRoot":"","sources":["../../../../src/other/Zapper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,YAAY,EAAE,MAAM,EAAC,MAAM,gBAAgB,CAAA;AACxD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,wBAAwB,CAAA;AAK5D,MAAM,MAAM,GAAG,GAAG;IAChB,OAAO,EAAE,YAAY,CAAA;IACrB,QAAQ,EAAE,YAAY,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAOD,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,CAAA;AAED,qBAAa,MAAM;IACjB,KAAK,EAAG,MAAM,CAAA;IACd,MAAM,EAAG,MAAM,CAAA;IACf,WAAW,EAAG,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;gBAET,MAAM,EAAE,YAAY;IAMhC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,GAAG,GAAG,SAAS;IAmCpD,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;CAc5D"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { now, fromPairs } from "@welshman/lib";
|
|
2
|
+
import { ZAP_RECEIPT } from "@welshman/util";
|
|
3
|
+
export class Zapper {
|
|
4
|
+
lnurl;
|
|
5
|
+
pubkey;
|
|
6
|
+
nostrPubkey;
|
|
7
|
+
callback;
|
|
8
|
+
minSendable;
|
|
9
|
+
maxSendable;
|
|
10
|
+
allowsNostr;
|
|
11
|
+
constructor(values) {
|
|
12
|
+
// Copy every value, including any non-standard lnurl fields the endpoint
|
|
13
|
+
// returned, so nothing is silently dropped for downstream consumers.
|
|
14
|
+
Object.assign(this, values);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Validate a parsed kind-9735 zap receipt against this zapper per NIP-57 and,
|
|
18
|
+
* if it checks out, return the reconstructed `Zap`. Returns undefined when the
|
|
19
|
+
* receipt is malformed or fails validation:
|
|
20
|
+
*
|
|
21
|
+
* - Missing/malformed zap request or bolt11 invoice
|
|
22
|
+
* - Invoice amount doesn't match the requested amount
|
|
23
|
+
* - Self-zap (request author is the zapper's own pubkey)
|
|
24
|
+
* - lnurl mismatch (if the request carried an lnurl tag)
|
|
25
|
+
* - Receipt not signed by the zapper's nostr pubkey
|
|
26
|
+
*/
|
|
27
|
+
validate(receipt) {
|
|
28
|
+
const request = receipt.request();
|
|
29
|
+
const invoiceAmount = receipt.invoiceAmount();
|
|
30
|
+
if (!request || invoiceAmount === undefined) {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
// Don't count zaps that the user requested for himself
|
|
34
|
+
if (request.pubkey === this.pubkey) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
const { amount, lnurl } = fromPairs(request.tags);
|
|
38
|
+
// Verify that the zapper actually sent the requested amount (if it was supplied)
|
|
39
|
+
if (amount && parseInt(amount) !== invoiceAmount) {
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
// If the sending client provided an lnurl tag, verify that too
|
|
43
|
+
if (lnurl && lnurl !== this.lnurl) {
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
// Verify that the receipt actually came from the recipient's zapper
|
|
47
|
+
if (receipt.event.pubkey !== this.nostrPubkey) {
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
return { request, response: receipt.event, invoiceAmount };
|
|
51
|
+
}
|
|
52
|
+
// A filter matching zap receipts this zapper would publish for the given
|
|
53
|
+
// recipient (and optionally a specific event).
|
|
54
|
+
getResponseFilter(pubkey, eventId) {
|
|
55
|
+
const filter = {
|
|
56
|
+
kinds: [ZAP_RECEIPT],
|
|
57
|
+
authors: [this.nostrPubkey],
|
|
58
|
+
since: now() - 30,
|
|
59
|
+
"#p": [pubkey],
|
|
60
|
+
};
|
|
61
|
+
if (eventId) {
|
|
62
|
+
filter["#e"] = [eventId];
|
|
63
|
+
}
|
|
64
|
+
return filter;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=Zapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Zapper.js","sourceRoot":"","sources":["../../../../src/other/Zapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAE,SAAS,EAAC,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAA;AA4B1C,MAAM,OAAO,MAAM;IACjB,KAAK,CAAS;IACd,MAAM,CAAS;IACf,WAAW,CAAS;IACpB,QAAQ,CAAS;IACjB,WAAW,CAAS;IACpB,WAAW,CAAS;IACpB,WAAW,CAAU;IAErB,YAAY,MAAoB;QAC9B,yEAAyE;QACzE,qEAAqE;QACrE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC7B,CAAC;IAED;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,OAAyB;QAChC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA;QACjC,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,EAAE,CAAA;QAE7C,IAAI,CAAC,OAAO,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAC5C,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,uDAAuD;QACvD,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YACnC,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,MAAM,EAAC,MAAM,EAAE,KAAK,EAAC,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAE/C,iFAAiF;QACjF,IAAI,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,aAAa,EAAE,CAAC;YACjD,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,+DAA+D;QAC/D,IAAI,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YAClC,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,oEAAoE;QACpE,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;YAC9C,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,aAAa,EAAC,CAAA;IAC1D,CAAC;IAED,yEAAyE;IACzE,+CAA+C;IAC/C,iBAAiB,CAAC,MAAc,EAAE,OAAgB;QAChD,MAAM,MAAM,GAAW;YACrB,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;YAC3B,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;YACjB,IAAI,EAAE,CAAC,MAAM,CAAC;SACf,CAAA;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAC1B,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
|