@welshman/domain 0.9.9 → 0.10.0

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.
Files changed (286) hide show
  1. package/dist/domain/src/behaviors/Client.d.ts +19 -0
  2. package/dist/domain/src/behaviors/Client.d.ts.map +1 -0
  3. package/dist/domain/src/behaviors/Client.js +18 -0
  4. package/dist/domain/src/behaviors/Client.js.map +1 -0
  5. package/dist/domain/src/behaviors/ContentWarning.d.ts +15 -0
  6. package/dist/domain/src/behaviors/ContentWarning.d.ts.map +1 -0
  7. package/dist/domain/src/behaviors/ContentWarning.js +13 -0
  8. package/dist/domain/src/behaviors/ContentWarning.js.map +1 -0
  9. package/dist/domain/src/behaviors/Expiration.d.ts +9 -0
  10. package/dist/domain/src/behaviors/Expiration.d.ts.map +1 -0
  11. package/dist/domain/src/behaviors/Expiration.js +10 -0
  12. package/dist/domain/src/behaviors/Expiration.js.map +1 -0
  13. package/dist/domain/src/behaviors/Protected.d.ts +8 -0
  14. package/dist/domain/src/behaviors/Protected.d.ts.map +1 -0
  15. package/dist/domain/src/behaviors/Protected.js +8 -0
  16. package/dist/domain/src/behaviors/Protected.js.map +1 -0
  17. package/dist/domain/src/core/EventQuery.d.ts +102 -0
  18. package/dist/domain/src/core/EventQuery.d.ts.map +1 -0
  19. package/dist/domain/src/core/EventQuery.js +227 -0
  20. package/dist/domain/src/core/EventQuery.js.map +1 -0
  21. package/dist/domain/src/core/EventReader.d.ts +4 -0
  22. package/dist/domain/src/core/EventReader.d.ts.map +1 -1
  23. package/dist/domain/src/core/EventReader.js +15 -3
  24. package/dist/domain/src/core/EventReader.js.map +1 -1
  25. package/dist/domain/src/core/EventWriter.d.ts +21 -5
  26. package/dist/domain/src/core/EventWriter.d.ts.map +1 -1
  27. package/dist/domain/src/core/EventWriter.js +59 -15
  28. package/dist/domain/src/core/EventWriter.js.map +1 -1
  29. package/dist/domain/src/core/Kind.d.ts +16 -13
  30. package/dist/domain/src/core/Kind.d.ts.map +1 -1
  31. package/dist/domain/src/core/Kind.js +8 -5
  32. package/dist/domain/src/core/Kind.js.map +1 -1
  33. package/dist/domain/src/index.d.ts +6 -0
  34. package/dist/domain/src/index.d.ts.map +1 -1
  35. package/dist/domain/src/index.js +6 -0
  36. package/dist/domain/src/index.js.map +1 -1
  37. package/dist/domain/src/kinds/AppData.d.ts +5 -1
  38. package/dist/domain/src/kinds/AppData.d.ts.map +1 -1
  39. package/dist/domain/src/kinds/AppData.js +7 -0
  40. package/dist/domain/src/kinds/AppData.js.map +1 -1
  41. package/dist/domain/src/kinds/Article.d.ts +5 -1
  42. package/dist/domain/src/kinds/Article.d.ts.map +1 -1
  43. package/dist/domain/src/kinds/Article.js +7 -0
  44. package/dist/domain/src/kinds/Article.js.map +1 -1
  45. package/dist/domain/src/kinds/BlockedRelayList.d.ts +5 -1
  46. package/dist/domain/src/kinds/BlockedRelayList.d.ts.map +1 -1
  47. package/dist/domain/src/kinds/BlockedRelayList.js +7 -0
  48. package/dist/domain/src/kinds/BlockedRelayList.js.map +1 -1
  49. package/dist/domain/src/kinds/BlossomServerList.d.ts +5 -1
  50. package/dist/domain/src/kinds/BlossomServerList.d.ts.map +1 -1
  51. package/dist/domain/src/kinds/BlossomServerList.js +7 -0
  52. package/dist/domain/src/kinds/BlossomServerList.js.map +1 -1
  53. package/dist/domain/src/kinds/BookmarkList.d.ts +5 -1
  54. package/dist/domain/src/kinds/BookmarkList.d.ts.map +1 -1
  55. package/dist/domain/src/kinds/BookmarkList.js +7 -0
  56. package/dist/domain/src/kinds/BookmarkList.js.map +1 -1
  57. package/dist/domain/src/kinds/Classified.d.ts +5 -1
  58. package/dist/domain/src/kinds/Classified.d.ts.map +1 -1
  59. package/dist/domain/src/kinds/Classified.js +7 -0
  60. package/dist/domain/src/kinds/Classified.js.map +1 -1
  61. package/dist/domain/src/kinds/Command.d.ts +28 -0
  62. package/dist/domain/src/kinds/Command.d.ts.map +1 -0
  63. package/dist/domain/src/kinds/Command.js +99 -0
  64. package/dist/domain/src/kinds/Command.js.map +1 -0
  65. package/dist/domain/src/kinds/Comment.d.ts +11 -2
  66. package/dist/domain/src/kinds/Comment.d.ts.map +1 -1
  67. package/dist/domain/src/kinds/Comment.js +47 -12
  68. package/dist/domain/src/kinds/Comment.js.map +1 -1
  69. package/dist/domain/src/kinds/CommunityList.d.ts +5 -1
  70. package/dist/domain/src/kinds/CommunityList.d.ts.map +1 -1
  71. package/dist/domain/src/kinds/CommunityList.js +7 -0
  72. package/dist/domain/src/kinds/CommunityList.js.map +1 -1
  73. package/dist/domain/src/kinds/Delete.d.ts +5 -1
  74. package/dist/domain/src/kinds/Delete.d.ts.map +1 -1
  75. package/dist/domain/src/kinds/Delete.js +7 -0
  76. package/dist/domain/src/kinds/Delete.js.map +1 -1
  77. package/dist/domain/src/kinds/DirectMessage.d.ts +5 -1
  78. package/dist/domain/src/kinds/DirectMessage.d.ts.map +1 -1
  79. package/dist/domain/src/kinds/DirectMessage.js +8 -1
  80. package/dist/domain/src/kinds/DirectMessage.js.map +1 -1
  81. package/dist/domain/src/kinds/EmojiList.d.ts +5 -1
  82. package/dist/domain/src/kinds/EmojiList.d.ts.map +1 -1
  83. package/dist/domain/src/kinds/EmojiList.js +7 -0
  84. package/dist/domain/src/kinds/EmojiList.js.map +1 -1
  85. package/dist/domain/src/kinds/Feed.d.ts +5 -1
  86. package/dist/domain/src/kinds/Feed.d.ts.map +1 -1
  87. package/dist/domain/src/kinds/Feed.js +7 -0
  88. package/dist/domain/src/kinds/Feed.js.map +1 -1
  89. package/dist/domain/src/kinds/FeedList.d.ts +5 -1
  90. package/dist/domain/src/kinds/FeedList.d.ts.map +1 -1
  91. package/dist/domain/src/kinds/FeedList.js +7 -0
  92. package/dist/domain/src/kinds/FeedList.js.map +1 -1
  93. package/dist/domain/src/kinds/FollowList.d.ts +5 -1
  94. package/dist/domain/src/kinds/FollowList.d.ts.map +1 -1
  95. package/dist/domain/src/kinds/FollowList.js +8 -1
  96. package/dist/domain/src/kinds/FollowList.js.map +1 -1
  97. package/dist/domain/src/kinds/Handler.d.ts +5 -1
  98. package/dist/domain/src/kinds/Handler.d.ts.map +1 -1
  99. package/dist/domain/src/kinds/Handler.js +7 -0
  100. package/dist/domain/src/kinds/Handler.js.map +1 -1
  101. package/dist/domain/src/kinds/HandlerRecommendation.d.ts +5 -1
  102. package/dist/domain/src/kinds/HandlerRecommendation.d.ts.map +1 -1
  103. package/dist/domain/src/kinds/HandlerRecommendation.js +7 -0
  104. package/dist/domain/src/kinds/HandlerRecommendation.js.map +1 -1
  105. package/dist/domain/src/kinds/Highlight.d.ts +5 -1
  106. package/dist/domain/src/kinds/Highlight.d.ts.map +1 -1
  107. package/dist/domain/src/kinds/Highlight.js +7 -0
  108. package/dist/domain/src/kinds/Highlight.js.map +1 -1
  109. package/dist/domain/src/kinds/MessagingRelayList.d.ts +5 -1
  110. package/dist/domain/src/kinds/MessagingRelayList.d.ts.map +1 -1
  111. package/dist/domain/src/kinds/MessagingRelayList.js +8 -1
  112. package/dist/domain/src/kinds/MessagingRelayList.js.map +1 -1
  113. package/dist/domain/src/kinds/MuteList.d.ts +5 -1
  114. package/dist/domain/src/kinds/MuteList.d.ts.map +1 -1
  115. package/dist/domain/src/kinds/MuteList.js +7 -0
  116. package/dist/domain/src/kinds/MuteList.js.map +1 -1
  117. package/dist/domain/src/kinds/Note.d.ts +6 -2
  118. package/dist/domain/src/kinds/Note.d.ts.map +1 -1
  119. package/dist/domain/src/kinds/Note.js +7 -0
  120. package/dist/domain/src/kinds/Note.js.map +1 -1
  121. package/dist/domain/src/kinds/Pin.d.ts +5 -1
  122. package/dist/domain/src/kinds/Pin.d.ts.map +1 -1
  123. package/dist/domain/src/kinds/Pin.js +7 -0
  124. package/dist/domain/src/kinds/Pin.js.map +1 -1
  125. package/dist/domain/src/kinds/PinList.d.ts +5 -1
  126. package/dist/domain/src/kinds/PinList.d.ts.map +1 -1
  127. package/dist/domain/src/kinds/PinList.js +7 -0
  128. package/dist/domain/src/kinds/PinList.js.map +1 -1
  129. package/dist/domain/src/kinds/Pinboard.d.ts +5 -1
  130. package/dist/domain/src/kinds/Pinboard.d.ts.map +1 -1
  131. package/dist/domain/src/kinds/Pinboard.js +7 -0
  132. package/dist/domain/src/kinds/Pinboard.js.map +1 -1
  133. package/dist/domain/src/kinds/Poll.d.ts +5 -1
  134. package/dist/domain/src/kinds/Poll.d.ts.map +1 -1
  135. package/dist/domain/src/kinds/Poll.js +7 -0
  136. package/dist/domain/src/kinds/Poll.js.map +1 -1
  137. package/dist/domain/src/kinds/PollResponse.d.ts +5 -1
  138. package/dist/domain/src/kinds/PollResponse.d.ts.map +1 -1
  139. package/dist/domain/src/kinds/PollResponse.js +7 -0
  140. package/dist/domain/src/kinds/PollResponse.js.map +1 -1
  141. package/dist/domain/src/kinds/Profile.d.ts +5 -1
  142. package/dist/domain/src/kinds/Profile.d.ts.map +1 -1
  143. package/dist/domain/src/kinds/Profile.js +8 -1
  144. package/dist/domain/src/kinds/Profile.js.map +1 -1
  145. package/dist/domain/src/kinds/Reaction.d.ts +5 -1
  146. package/dist/domain/src/kinds/Reaction.d.ts.map +1 -1
  147. package/dist/domain/src/kinds/Reaction.js +7 -0
  148. package/dist/domain/src/kinds/Reaction.js.map +1 -1
  149. package/dist/domain/src/kinds/RelayAddMember.d.ts +5 -1
  150. package/dist/domain/src/kinds/RelayAddMember.d.ts.map +1 -1
  151. package/dist/domain/src/kinds/RelayAddMember.js +7 -0
  152. package/dist/domain/src/kinds/RelayAddMember.js.map +1 -1
  153. package/dist/domain/src/kinds/RelayInvite.d.ts +5 -1
  154. package/dist/domain/src/kinds/RelayInvite.d.ts.map +1 -1
  155. package/dist/domain/src/kinds/RelayInvite.js +7 -0
  156. package/dist/domain/src/kinds/RelayInvite.js.map +1 -1
  157. package/dist/domain/src/kinds/RelayJoin.d.ts +5 -1
  158. package/dist/domain/src/kinds/RelayJoin.d.ts.map +1 -1
  159. package/dist/domain/src/kinds/RelayJoin.js +7 -0
  160. package/dist/domain/src/kinds/RelayJoin.js.map +1 -1
  161. package/dist/domain/src/kinds/RelayLeave.d.ts +5 -1
  162. package/dist/domain/src/kinds/RelayLeave.d.ts.map +1 -1
  163. package/dist/domain/src/kinds/RelayLeave.js +7 -0
  164. package/dist/domain/src/kinds/RelayLeave.js.map +1 -1
  165. package/dist/domain/src/kinds/RelayList.d.ts +5 -1
  166. package/dist/domain/src/kinds/RelayList.d.ts.map +1 -1
  167. package/dist/domain/src/kinds/RelayList.js +7 -0
  168. package/dist/domain/src/kinds/RelayList.js.map +1 -1
  169. package/dist/domain/src/kinds/RelayMembers.d.ts +5 -1
  170. package/dist/domain/src/kinds/RelayMembers.d.ts.map +1 -1
  171. package/dist/domain/src/kinds/RelayMembers.js +7 -0
  172. package/dist/domain/src/kinds/RelayMembers.js.map +1 -1
  173. package/dist/domain/src/kinds/RelayRemoveMember.d.ts +5 -1
  174. package/dist/domain/src/kinds/RelayRemoveMember.d.ts.map +1 -1
  175. package/dist/domain/src/kinds/RelayRemoveMember.js +7 -0
  176. package/dist/domain/src/kinds/RelayRemoveMember.js.map +1 -1
  177. package/dist/domain/src/kinds/RelayRole.d.ts +5 -1
  178. package/dist/domain/src/kinds/RelayRole.d.ts.map +1 -1
  179. package/dist/domain/src/kinds/RelayRole.js +7 -0
  180. package/dist/domain/src/kinds/RelayRole.js.map +1 -1
  181. package/dist/domain/src/kinds/RelaySet.d.ts +5 -1
  182. package/dist/domain/src/kinds/RelaySet.d.ts.map +1 -1
  183. package/dist/domain/src/kinds/RelaySet.js +7 -0
  184. package/dist/domain/src/kinds/RelaySet.js.map +1 -1
  185. package/dist/domain/src/kinds/Report.d.ts +5 -1
  186. package/dist/domain/src/kinds/Report.d.ts.map +1 -1
  187. package/dist/domain/src/kinds/Report.js +7 -0
  188. package/dist/domain/src/kinds/Report.js.map +1 -1
  189. package/dist/domain/src/kinds/RoomAddMember.d.ts +5 -1
  190. package/dist/domain/src/kinds/RoomAddMember.d.ts.map +1 -1
  191. package/dist/domain/src/kinds/RoomAddMember.js +7 -0
  192. package/dist/domain/src/kinds/RoomAddMember.js.map +1 -1
  193. package/dist/domain/src/kinds/RoomAdmins.d.ts +5 -1
  194. package/dist/domain/src/kinds/RoomAdmins.d.ts.map +1 -1
  195. package/dist/domain/src/kinds/RoomAdmins.js +7 -0
  196. package/dist/domain/src/kinds/RoomAdmins.js.map +1 -1
  197. package/dist/domain/src/kinds/RoomCreate.d.ts +5 -1
  198. package/dist/domain/src/kinds/RoomCreate.d.ts.map +1 -1
  199. package/dist/domain/src/kinds/RoomCreate.js +7 -0
  200. package/dist/domain/src/kinds/RoomCreate.js.map +1 -1
  201. package/dist/domain/src/kinds/RoomCreatePermission.d.ts +5 -1
  202. package/dist/domain/src/kinds/RoomCreatePermission.d.ts.map +1 -1
  203. package/dist/domain/src/kinds/RoomCreatePermission.js +7 -0
  204. package/dist/domain/src/kinds/RoomCreatePermission.js.map +1 -1
  205. package/dist/domain/src/kinds/RoomDelete.d.ts +5 -1
  206. package/dist/domain/src/kinds/RoomDelete.d.ts.map +1 -1
  207. package/dist/domain/src/kinds/RoomDelete.js +7 -0
  208. package/dist/domain/src/kinds/RoomDelete.js.map +1 -1
  209. package/dist/domain/src/kinds/RoomEdit.d.ts +5 -1
  210. package/dist/domain/src/kinds/RoomEdit.d.ts.map +1 -1
  211. package/dist/domain/src/kinds/RoomEdit.js +7 -0
  212. package/dist/domain/src/kinds/RoomEdit.js.map +1 -1
  213. package/dist/domain/src/kinds/RoomJoin.d.ts +5 -1
  214. package/dist/domain/src/kinds/RoomJoin.d.ts.map +1 -1
  215. package/dist/domain/src/kinds/RoomJoin.js +7 -0
  216. package/dist/domain/src/kinds/RoomJoin.js.map +1 -1
  217. package/dist/domain/src/kinds/RoomLeave.d.ts +5 -1
  218. package/dist/domain/src/kinds/RoomLeave.d.ts.map +1 -1
  219. package/dist/domain/src/kinds/RoomLeave.js +7 -0
  220. package/dist/domain/src/kinds/RoomLeave.js.map +1 -1
  221. package/dist/domain/src/kinds/RoomList.d.ts +5 -1
  222. package/dist/domain/src/kinds/RoomList.d.ts.map +1 -1
  223. package/dist/domain/src/kinds/RoomList.js +7 -0
  224. package/dist/domain/src/kinds/RoomList.js.map +1 -1
  225. package/dist/domain/src/kinds/RoomMembers.d.ts +5 -1
  226. package/dist/domain/src/kinds/RoomMembers.d.ts.map +1 -1
  227. package/dist/domain/src/kinds/RoomMembers.js +7 -0
  228. package/dist/domain/src/kinds/RoomMembers.js.map +1 -1
  229. package/dist/domain/src/kinds/RoomMeta.d.ts +5 -1
  230. package/dist/domain/src/kinds/RoomMeta.d.ts.map +1 -1
  231. package/dist/domain/src/kinds/RoomMeta.js +7 -0
  232. package/dist/domain/src/kinds/RoomMeta.js.map +1 -1
  233. package/dist/domain/src/kinds/RoomPins.d.ts +5 -1
  234. package/dist/domain/src/kinds/RoomPins.d.ts.map +1 -1
  235. package/dist/domain/src/kinds/RoomPins.js +7 -0
  236. package/dist/domain/src/kinds/RoomPins.js.map +1 -1
  237. package/dist/domain/src/kinds/RoomRemoveMember.d.ts +5 -1
  238. package/dist/domain/src/kinds/RoomRemoveMember.d.ts.map +1 -1
  239. package/dist/domain/src/kinds/RoomRemoveMember.js +7 -0
  240. package/dist/domain/src/kinds/RoomRemoveMember.js.map +1 -1
  241. package/dist/domain/src/kinds/RoomUpdatePins.d.ts +5 -1
  242. package/dist/domain/src/kinds/RoomUpdatePins.d.ts.map +1 -1
  243. package/dist/domain/src/kinds/RoomUpdatePins.js +7 -0
  244. package/dist/domain/src/kinds/RoomUpdatePins.js.map +1 -1
  245. package/dist/domain/src/kinds/SearchRelayList.d.ts +5 -1
  246. package/dist/domain/src/kinds/SearchRelayList.d.ts.map +1 -1
  247. package/dist/domain/src/kinds/SearchRelayList.js +7 -0
  248. package/dist/domain/src/kinds/SearchRelayList.js.map +1 -1
  249. package/dist/domain/src/kinds/Thread.d.ts +5 -1
  250. package/dist/domain/src/kinds/Thread.d.ts.map +1 -1
  251. package/dist/domain/src/kinds/Thread.js +7 -0
  252. package/dist/domain/src/kinds/Thread.js.map +1 -1
  253. package/dist/domain/src/kinds/TimeEvent.d.ts +5 -1
  254. package/dist/domain/src/kinds/TimeEvent.d.ts.map +1 -1
  255. package/dist/domain/src/kinds/TimeEvent.js +7 -0
  256. package/dist/domain/src/kinds/TimeEvent.js.map +1 -1
  257. package/dist/domain/src/kinds/TopicList.d.ts +5 -1
  258. package/dist/domain/src/kinds/TopicList.d.ts.map +1 -1
  259. package/dist/domain/src/kinds/TopicList.js +7 -0
  260. package/dist/domain/src/kinds/TopicList.js.map +1 -1
  261. package/dist/domain/src/kinds/ZapGoal.d.ts +5 -1
  262. package/dist/domain/src/kinds/ZapGoal.d.ts.map +1 -1
  263. package/dist/domain/src/kinds/ZapGoal.js +7 -0
  264. package/dist/domain/src/kinds/ZapGoal.js.map +1 -1
  265. package/dist/domain/src/kinds/ZapReceipt.d.ts +5 -1
  266. package/dist/domain/src/kinds/ZapReceipt.d.ts.map +1 -1
  267. package/dist/domain/src/kinds/ZapReceipt.js +7 -0
  268. package/dist/domain/src/kinds/ZapReceipt.js.map +1 -1
  269. package/dist/domain/src/kinds/ZapRequest.d.ts +5 -1
  270. package/dist/domain/src/kinds/ZapRequest.d.ts.map +1 -1
  271. package/dist/domain/src/kinds/ZapRequest.js +7 -0
  272. package/dist/domain/src/kinds/ZapRequest.js.map +1 -1
  273. package/dist/tsconfig.build.tsbuildinfo +1 -1
  274. package/dist/util/src/Command.d.ts +53 -0
  275. package/dist/util/src/Command.d.ts.map +1 -0
  276. package/dist/util/src/Command.js +226 -0
  277. package/dist/util/src/Command.js.map +1 -0
  278. package/dist/util/src/Kinds.d.ts +1 -0
  279. package/dist/util/src/Kinds.d.ts.map +1 -1
  280. package/dist/util/src/Kinds.js +1 -0
  281. package/dist/util/src/Kinds.js.map +1 -1
  282. package/dist/util/src/index.d.ts +1 -0
  283. package/dist/util/src/index.d.ts.map +1 -1
  284. package/dist/util/src/index.js +1 -0
  285. package/dist/util/src/index.js.map +1 -1
  286. package/package.json +11 -11
@@ -0,0 +1,19 @@
1
+ import type { TrustedEvent } from "@welshman/util";
2
+ /**
3
+ * The NIP-89 client an event was published with, parsed from a
4
+ * `["client", <name>, <address>, <relay hint>]` tag. `address` is an optional
5
+ * `31990:pubkey:d-tag` pointer to the client's handler information event, and
6
+ * `relay` an optional hint for where to find it.
7
+ */
8
+ export type Client = {
9
+ name: string;
10
+ address?: string;
11
+ relay?: string;
12
+ };
13
+ /**
14
+ * Parse an event's NIP-89 `client` tag, or undefined if it has none. An address
15
+ * or relay hint that doesn't parse is dropped. A plain function so it can read
16
+ * the client off any event, regardless of kind, without a kind-specific reader.
17
+ */
18
+ export declare const getClient: (event: TrustedEvent) => Client | undefined;
19
+ //# sourceMappingURL=Client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../../../src/behaviors/Client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAEhD;;;;;GAKG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,YAAY,KAAG,MAAM,GAAG,SAYxD,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { Address, isRelayUrl, matchTag, normalizeRelayUrl, tagSpec } from "@welshman/util";
2
+ /**
3
+ * Parse an event's NIP-89 `client` tag, or undefined if it has none. An address
4
+ * or relay hint that doesn't parse is dropped. A plain function so it can read
5
+ * the client off any event, regardless of kind, without a kind-specific reader.
6
+ */
7
+ export const getClient = (event) => {
8
+ const tag = matchTag(tagSpec("client"), event.tags);
9
+ if (!tag?.[1])
10
+ return undefined;
11
+ const [, name, address, relay] = tag;
12
+ return {
13
+ name,
14
+ address: address && Address.isAddress(address) ? address : undefined,
15
+ relay: relay && isRelayUrl(relay) ? normalizeRelayUrl(relay) : undefined,
16
+ };
17
+ };
18
+ //# sourceMappingURL=Client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Client.js","sourceRoot":"","sources":["../../../../src/behaviors/Client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAC,MAAM,gBAAgB,CAAA;AAexF;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAmB,EAAsB,EAAE;IACnE,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;IAEnD,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAA;IAE/B,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,GAAG,CAAA;IAEpC,OAAO;QACL,IAAI;QACJ,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QACpE,KAAK,EAAE,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;KACzE,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,15 @@
1
+ import type { TrustedEvent } from "@welshman/util";
2
+ /**
3
+ * A NIP-36 content warning, parsed from a `["content-warning", <reason>]` tag.
4
+ * The reason is optional: a bare tag flags the content without saying why.
5
+ */
6
+ export type ContentWarning = {
7
+ reason?: string;
8
+ };
9
+ /**
10
+ * Parse an event's NIP-36 `content-warning` tag, or undefined if it has none.
11
+ * A plain function so it can read the warning off any event, regardless of
12
+ * kind, without a kind-specific reader.
13
+ */
14
+ export declare const getContentWarning: (event: TrustedEvent) => ContentWarning | undefined;
15
+ //# sourceMappingURL=ContentWarning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentWarning.d.ts","sourceRoot":"","sources":["../../../../src/behaviors/ContentWarning.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAEhD;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,YAAY,KAAG,cAAc,GAAG,SAIxE,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { spec } from "@welshman/lib";
2
+ import { tagSpec, tagValue } from "@welshman/util";
3
+ /**
4
+ * Parse an event's NIP-36 `content-warning` tag, or undefined if it has none.
5
+ * A plain function so it can read the warning off any event, regardless of
6
+ * kind, without a kind-specific reader.
7
+ */
8
+ export const getContentWarning = (event) => {
9
+ if (!event.tags.some(spec(["content-warning"])))
10
+ return undefined;
11
+ return { reason: tagValue(tagSpec("content-warning"), event.tags) };
12
+ };
13
+ //# sourceMappingURL=ContentWarning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentWarning.js","sourceRoot":"","sources":["../../../../src/behaviors/ContentWarning.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,eAAe,CAAA;AAClC,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAC,MAAM,gBAAgB,CAAA;AAWhD;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAmB,EAA8B,EAAE;IACnF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAA;IAEjE,OAAO,EAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,EAAC,CAAA;AACnE,CAAC,CAAA"}
@@ -0,0 +1,9 @@
1
+ import type { TrustedEvent } from "@welshman/util";
2
+ /**
3
+ * Parse an event's NIP-40 `expiration` tag — the timestamp after which relays
4
+ * should stop serving it — or undefined if it has none or the value isn't a
5
+ * number. A plain function so it can read the expiration off any event,
6
+ * regardless of kind, without a kind-specific reader.
7
+ */
8
+ export declare const getExpiration: (event: TrustedEvent) => number | undefined;
9
+ //# sourceMappingURL=Expiration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Expiration.d.ts","sourceRoot":"","sources":["../../../../src/behaviors/Expiration.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAEhD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,YAAY,KAAG,MAAM,GAAG,SACH,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { toInt } from "@welshman/lib";
2
+ import { tagSpec, tagValue } from "@welshman/util";
3
+ /**
4
+ * Parse an event's NIP-40 `expiration` tag — the timestamp after which relays
5
+ * should stop serving it — or undefined if it has none or the value isn't a
6
+ * number. A plain function so it can read the expiration off any event,
7
+ * regardless of kind, without a kind-specific reader.
8
+ */
9
+ export const getExpiration = (event) => toInt(tagValue(tagSpec("expiration"), event.tags) ?? "");
10
+ //# sourceMappingURL=Expiration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Expiration.js","sourceRoot":"","sources":["../../../../src/behaviors/Expiration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,eAAe,CAAA;AACnC,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAC,MAAM,gBAAgB,CAAA;AAGhD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAmB,EAAsB,EAAE,CACvE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA"}
@@ -0,0 +1,8 @@
1
+ import type { TrustedEvent } from "@welshman/util";
2
+ /**
3
+ * Whether an event carries the NIP-70 `["-"]` marker, which asks relays to
4
+ * accept it only from its author. A plain function so it can read the marker
5
+ * off any event, regardless of kind, without a kind-specific reader.
6
+ */
7
+ export declare const isProtected: (event: TrustedEvent) => boolean;
8
+ //# sourceMappingURL=Protected.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Protected.d.ts","sourceRoot":"","sources":["../../../../src/behaviors/Protected.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAEhD;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,YAAY,KAAG,OAAuC,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { spec } from "@welshman/lib";
2
+ /**
3
+ * Whether an event carries the NIP-70 `["-"]` marker, which asks relays to
4
+ * accept it only from its author. A plain function so it can read the marker
5
+ * off any event, regardless of kind, without a kind-specific reader.
6
+ */
7
+ export const isProtected = (event) => event.tags.some(spec(["-"]));
8
+ //# sourceMappingURL=Protected.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Protected.js","sourceRoot":"","sources":["../../../../src/behaviors/Protected.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,eAAe,CAAA;AAGlC;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAmB,EAAW,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA"}
@@ -0,0 +1,102 @@
1
+ import type { MaybeAsync } from "@welshman/lib";
2
+ import type { Filter, RelaySelection, RelayScenario } from "@welshman/util";
3
+ import type { KindContext } from "./Kind.js";
4
+ /**
5
+ * The read-side counterpart to `EventWriter`: a chainable builder for the filters
6
+ * that fetch a kind's events, plus the relays to request them from. The kind comes
7
+ * from the factory; each subclass implements `renderRoutes` to say where its
8
+ * events live, and adds any domain-specific methods (e.g. `CommentQuery.forRoot`).
9
+ */
10
+ export declare abstract class EventQuery {
11
+ readonly kind: number;
12
+ readonly context: KindContext;
13
+ ids?: string[];
14
+ authors?: string[];
15
+ since?: number;
16
+ until?: number;
17
+ limit?: number;
18
+ search?: string;
19
+ tagValues: Map<string, string[]>;
20
+ forcedRoutes?: RelaySelection[];
21
+ extraRoutes: RelaySelection[];
22
+ constructor(kind: number, context: KindContext);
23
+ setIds(ids: string[]): this;
24
+ addIds(ids: string[]): this;
25
+ removeIds(ids: string[]): this;
26
+ clearIds(): this;
27
+ setAuthors(authors: string[]): this;
28
+ addAuthors(authors: string[]): this;
29
+ removeAuthors(authors: string[]): this;
30
+ clearAuthors(): this;
31
+ setTag(key: string, values: string[]): this;
32
+ addTag(key: string, values: string[]): this;
33
+ removeTag(key: string, values: string[]): this;
34
+ clearTag(key: string): this;
35
+ clearTags(): this;
36
+ setSince(since: number): this;
37
+ clearSince(): this;
38
+ setUntil(until: number): this;
39
+ clearUntil(): this;
40
+ setLimit(limit: number): this;
41
+ clearLimit(): this;
42
+ setSearch(search: string): this;
43
+ clearSearch(): this;
44
+ setRoom(url: string, room: string): this;
45
+ clearRoom(): this;
46
+ /**
47
+ * Replaces the rendered routes. These are routes rather than urls, so
48
+ * `setRoutes([userInbox()])` asks the user's read relays without resolving them
49
+ * first.
50
+ */
51
+ setRoutes(routes: RelaySelection[]): this;
52
+ /**
53
+ * Adds routes alongside the rendered ones.
54
+ */
55
+ addRoutes(routes: RelaySelection[]): this;
56
+ clearRoutes(): this;
57
+ /**
58
+ * Returns the filter fields that may be set on any kind.
59
+ */
60
+ protected renderBaseFilter(): MaybeAsync<Filter>;
61
+ /**
62
+ * Returns one filter per kind-specific variant. A relay ANDs a filter's fields
63
+ * together, so alternative references go in separate filters.
64
+ */
65
+ protected renderDomainFilters(): MaybeAsync<Filter[]>;
66
+ /**
67
+ * Returns the complete filter list for requesting.
68
+ */
69
+ renderFilters(): Promise<Filter[]>;
70
+ /**
71
+ * Returns the outboxes of the authors being queried.
72
+ */
73
+ protected authorRoutes(weight?: number): RelaySelection[];
74
+ /**
75
+ * Returns the inboxes of the pubkeys this query filters on by `p` tag — where
76
+ * events addressed to them are delivered.
77
+ */
78
+ protected mentionRoutes(weight?: number): RelaySelection[];
79
+ /**
80
+ * Returns the list of routes this query should be sent to. Every kind implements
81
+ * this itself; there is no default.
82
+ */
83
+ protected abstract renderRoutes(): MaybeAsync<RelaySelection[]>;
84
+ /**
85
+ * Returns a router scenario for this query. Requests the routes given to
86
+ * `setRoutes` when set, otherwise the rendered ones; either way `addRoutes`
87
+ * contributes on top.
88
+ */
89
+ scenario(): Promise<RelayScenario>;
90
+ /**
91
+ * Shortcut for getting relays from the router scenario.
92
+ */
93
+ relays(): Promise<string[]>;
94
+ /**
95
+ * Returns rendered filters along with the relays to request them from.
96
+ */
97
+ render(): Promise<{
98
+ filters: Filter[];
99
+ relays: string[];
100
+ }>;
101
+ }
102
+ //# sourceMappingURL=EventQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventQuery.d.ts","sourceRoot":"","sources":["../../../../src/core/EventQuery.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,eAAe,CAAA;AAE7C,OAAO,KAAK,EAAC,MAAM,EAAE,cAAc,EAAE,aAAa,EAAC,MAAM,gBAAgB,CAAA;AACzE,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,WAAW,CAAA;AAc1C;;;;;GAKG;AACH,8BAAsB,UAAU;IAY5B,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,OAAO,EAAE,WAAW;IAZ/B,GAAG,CAAC,EAAE,MAAM,EAAE,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,wBAA8B;IACvC,YAAY,CAAC,EAAE,cAAc,EAAE,CAAA;IAC/B,WAAW,EAAE,cAAc,EAAE,CAAK;gBAGvB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,WAAW;IAG/B,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE;IAMpB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE;IAMpB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE;IAMvB,QAAQ;IAMR,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE;IAM5B,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE;IAM5B,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE;IAM/B,YAAY;IAMZ,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;IAMpC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;IAWpC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;IAWvC,QAAQ,CAAC,GAAG,EAAE,MAAM;IAMpB,SAAS;IAMT,QAAQ,CAAC,KAAK,EAAE,MAAM;IAMtB,UAAU;IAMV,QAAQ,CAAC,KAAK,EAAE,MAAM;IAMtB,UAAU;IAMV,QAAQ,CAAC,KAAK,EAAE,MAAM;IAMtB,UAAU;IAMV,SAAS,CAAC,MAAM,EAAE,MAAM;IAMxB,WAAW;IAOX,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAMjC,SAAS;IAMT;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE;IAMlC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE;IAMlC,WAAW;IAOX;;OAEG;IACH,SAAS,CAAC,gBAAgB,IAAI,UAAU,CAAC,MAAM,CAAC;IAiBhD;;;OAGG;IACH,SAAS,CAAC,mBAAmB,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;IAIrD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAOxC;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,MAAM,SAAI,GAAG,cAAc,EAAE;IAIpD;;;OAGG;IACH,SAAS,CAAC,aAAa,CAAC,MAAM,SAAM,GAAG,cAAc,EAAE;IAIvD;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,UAAU,CAAC,cAAc,EAAE,CAAC;IAE/D;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC;IAMxC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIjC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAC,CAAC;CAK/D"}
@@ -0,0 +1,227 @@
1
+ import { uniq, without } from "@welshman/lib";
2
+ import { normalizeRelayUrl, inboxes, outbox, relay } from "@welshman/util";
3
+ // A filter field is either absent (unconstrained) or an array, an empty array
4
+ // included, which matches nothing. Adding no values leaves the field as it was.
5
+ const addValues = (current, values) => values.length > 0 ? uniq([...(current ?? []), ...values]) : current;
6
+ const removeValues = (current, values) => current && without(values, current);
7
+ // Tag filter keys are stored bare ("e") and rendered prefixed ("#e"), so callers
8
+ // may pass either.
9
+ const tagKey = (key) => (key.startsWith("#") ? key.slice(1) : key);
10
+ /**
11
+ * The read-side counterpart to `EventWriter`: a chainable builder for the filters
12
+ * that fetch a kind's events, plus the relays to request them from. The kind comes
13
+ * from the factory; each subclass implements `renderRoutes` to say where its
14
+ * events live, and adds any domain-specific methods (e.g. `CommentQuery.forRoot`).
15
+ */
16
+ export class EventQuery {
17
+ kind;
18
+ context;
19
+ ids;
20
+ authors;
21
+ since;
22
+ until;
23
+ limit;
24
+ search;
25
+ tagValues = new Map();
26
+ forcedRoutes;
27
+ extraRoutes = [];
28
+ constructor(kind, context) {
29
+ this.kind = kind;
30
+ this.context = context;
31
+ }
32
+ setIds(ids) {
33
+ this.ids = ids;
34
+ return this;
35
+ }
36
+ addIds(ids) {
37
+ this.ids = addValues(this.ids, ids);
38
+ return this;
39
+ }
40
+ removeIds(ids) {
41
+ this.ids = removeValues(this.ids, ids);
42
+ return this;
43
+ }
44
+ clearIds() {
45
+ this.ids = undefined;
46
+ return this;
47
+ }
48
+ setAuthors(authors) {
49
+ this.authors = authors;
50
+ return this;
51
+ }
52
+ addAuthors(authors) {
53
+ this.authors = addValues(this.authors, authors);
54
+ return this;
55
+ }
56
+ removeAuthors(authors) {
57
+ this.authors = removeValues(this.authors, authors);
58
+ return this;
59
+ }
60
+ clearAuthors() {
61
+ this.authors = undefined;
62
+ return this;
63
+ }
64
+ setTag(key, values) {
65
+ this.tagValues.set(tagKey(key), values);
66
+ return this;
67
+ }
68
+ addTag(key, values) {
69
+ const k = tagKey(key);
70
+ const next = addValues(this.tagValues.get(k), values);
71
+ if (next) {
72
+ this.tagValues.set(k, next);
73
+ }
74
+ return this;
75
+ }
76
+ removeTag(key, values) {
77
+ const k = tagKey(key);
78
+ const next = removeValues(this.tagValues.get(k), values);
79
+ if (next) {
80
+ this.tagValues.set(k, next);
81
+ }
82
+ return this;
83
+ }
84
+ clearTag(key) {
85
+ this.tagValues.delete(tagKey(key));
86
+ return this;
87
+ }
88
+ clearTags() {
89
+ this.tagValues.clear();
90
+ return this;
91
+ }
92
+ setSince(since) {
93
+ this.since = since;
94
+ return this;
95
+ }
96
+ clearSince() {
97
+ this.since = undefined;
98
+ return this;
99
+ }
100
+ setUntil(until) {
101
+ this.until = until;
102
+ return this;
103
+ }
104
+ clearUntil() {
105
+ this.until = undefined;
106
+ return this;
107
+ }
108
+ setLimit(limit) {
109
+ this.limit = limit;
110
+ return this;
111
+ }
112
+ clearLimit() {
113
+ this.limit = undefined;
114
+ return this;
115
+ }
116
+ setSearch(search) {
117
+ this.search = search;
118
+ return this;
119
+ }
120
+ clearSearch() {
121
+ this.search = undefined;
122
+ return this;
123
+ }
124
+ // NIP-29 room events live on one relay and are scoped by their `h` tag.
125
+ setRoom(url, room) {
126
+ this.forcedRoutes = [relay(normalizeRelayUrl(url))];
127
+ return this.setTag("h", [room]);
128
+ }
129
+ clearRoom() {
130
+ this.forcedRoutes = undefined;
131
+ return this.clearTag("h");
132
+ }
133
+ /**
134
+ * Replaces the rendered routes. These are routes rather than urls, so
135
+ * `setRoutes([userInbox()])` asks the user's read relays without resolving them
136
+ * first.
137
+ */
138
+ setRoutes(routes) {
139
+ this.forcedRoutes = routes;
140
+ return this;
141
+ }
142
+ /**
143
+ * Adds routes alongside the rendered ones.
144
+ */
145
+ addRoutes(routes) {
146
+ this.extraRoutes = [...this.extraRoutes, ...routes];
147
+ return this;
148
+ }
149
+ clearRoutes() {
150
+ this.forcedRoutes = undefined;
151
+ this.extraRoutes = [];
152
+ return this;
153
+ }
154
+ /**
155
+ * Returns the filter fields that may be set on any kind.
156
+ */
157
+ renderBaseFilter() {
158
+ const filter = { kinds: [this.kind] };
159
+ if (this.ids)
160
+ filter.ids = this.ids;
161
+ if (this.authors)
162
+ filter.authors = this.authors;
163
+ if (this.since !== undefined)
164
+ filter.since = this.since;
165
+ if (this.until !== undefined)
166
+ filter.until = this.until;
167
+ if (this.limit !== undefined)
168
+ filter.limit = this.limit;
169
+ if (this.search !== undefined)
170
+ filter.search = this.search;
171
+ for (const [key, values] of this.tagValues) {
172
+ filter[`#${key}`] = values;
173
+ }
174
+ return filter;
175
+ }
176
+ /**
177
+ * Returns one filter per kind-specific variant. A relay ANDs a filter's fields
178
+ * together, so alternative references go in separate filters.
179
+ */
180
+ renderDomainFilters() {
181
+ return [{}];
182
+ }
183
+ /**
184
+ * Returns the complete filter list for requesting.
185
+ */
186
+ async renderFilters() {
187
+ const baseFilter = await this.renderBaseFilter();
188
+ const domainFilters = await this.renderDomainFilters();
189
+ return domainFilters.map(filter => ({ ...baseFilter, ...filter }));
190
+ }
191
+ /**
192
+ * Returns the outboxes of the authors being queried.
193
+ */
194
+ authorRoutes(weight = 1) {
195
+ return (this.authors ?? []).map(pubkey => outbox(pubkey, weight));
196
+ }
197
+ /**
198
+ * Returns the inboxes of the pubkeys this query filters on by `p` tag — where
199
+ * events addressed to them are delivered.
200
+ */
201
+ mentionRoutes(weight = 0.5) {
202
+ return inboxes(this.tagValues.get("p") ?? [], weight);
203
+ }
204
+ /**
205
+ * Returns a router scenario for this query. Requests the routes given to
206
+ * `setRoutes` when set, otherwise the rendered ones; either way `addRoutes`
207
+ * contributes on top.
208
+ */
209
+ async scenario() {
210
+ const routes = this.forcedRoutes?.length ? this.forcedRoutes : await this.renderRoutes();
211
+ return this.context.resolver.scenario([...routes, ...this.extraRoutes]);
212
+ }
213
+ /**
214
+ * Shortcut for getting relays from the router scenario.
215
+ */
216
+ async relays() {
217
+ return (await this.scenario()).getUrls();
218
+ }
219
+ /**
220
+ * Returns rendered filters along with the relays to request them from.
221
+ */
222
+ async render() {
223
+ const [filters, relays] = await Promise.all([this.renderFilters(), this.relays()]);
224
+ return { filters, relays };
225
+ }
226
+ }
227
+ //# sourceMappingURL=EventQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventQuery.js","sourceRoot":"","sources":["../../../../src/core/EventQuery.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { MaybeAsync } from "@welshman/lib";
2
2
  import type { TrustedEvent } from "@welshman/util";
3
3
  import type { KindContext } from "./Kind.js";
4
+ import type { Client } from "../behaviors/Client.js";
4
5
  import type { Emoji } from "../behaviors/Emoji.js";
5
6
  import type { ZapSplit } from "../behaviors/ZapSplits.js";
6
7
  /**
@@ -24,6 +25,9 @@ export declare abstract class BaseEventReader {
24
25
  room(): string | undefined;
25
26
  protect(): boolean;
26
27
  expiration(): number | undefined;
28
+ contentWarning(): boolean;
29
+ contentWarningReason(): string | undefined;
30
+ client(): Client | undefined;
27
31
  emojis(): Emoji[];
28
32
  zapSplits(): ZapSplit[];
29
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EventReader.d.ts","sourceRoot":"","sources":["../../../../src/core/EventReader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,eAAe,CAAA;AAE7C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,WAAW,CAAA;AAE1C,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,uBAAuB,CAAA;AAEhD,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,2BAA2B,CAAA;AAEvD;;;;GAIG;AACH,8BAAsB,eAAe;IAEjC,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,OAAO,EAAE,WAAW;IAC7B,QAAQ,CAAC,KAAK,EAAE,YAAY;gBAFnB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,YAAY;IAS9B,QAAQ,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI,CAAC;IAElC,EAAE;IAIF,MAAM;IAIN,OAAO;IAIP,IAAI;IAIJ,SAAS;IAIT,UAAU;IAIV,OAAO;IAIP,IAAI;IAIJ,OAAO;IAIP,UAAU;IAIV,MAAM,IAAI,KAAK,EAAE;IAIjB,SAAS,IAAI,QAAQ,EAAE;CAGxB;AAED;;;;GAIG;AACH,8BAAsB,WAAY,SAAQ,eAAe;IACvD,KAAK,IAAI,IAAI;CAGd;AAED;;;;GAIG;AACH,8BAAsB,gBAAiB,SAAQ,eAAe;IAC5D,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,eAAe,IAAI,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"EventReader.d.ts","sourceRoot":"","sources":["../../../../src/core/EventReader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,eAAe,CAAA;AAE7C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,WAAW,CAAA;AAE1C,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,wBAAwB,CAAA;AAGlD,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,uBAAuB,CAAA;AAIhD,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,2BAA2B,CAAA;AAEvD;;;;GAIG;AACH,8BAAsB,eAAe;IAEjC,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,OAAO,EAAE,WAAW;IAC7B,QAAQ,CAAC,KAAK,EAAE,YAAY;gBAFnB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,YAAY;IAS9B,QAAQ,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI,CAAC;IAElC,EAAE;IAIF,MAAM;IAIN,OAAO;IAIP,IAAI;IAIJ,SAAS;IAIT,UAAU;IAIV,OAAO;IAIP,IAAI;IAIJ,OAAO;IAIP,UAAU;IAIV,cAAc;IAId,oBAAoB;IAIpB,MAAM,IAAI,MAAM,GAAG,SAAS;IAI5B,MAAM,IAAI,KAAK,EAAE;IAIjB,SAAS,IAAI,QAAQ,EAAE;CAGxB;AAED;;;;GAIG;AACH,8BAAsB,WAAY,SAAQ,eAAe;IACvD,KAAK,IAAI,IAAI;CAGd;AAED;;;;GAIG;AACH,8BAAsB,gBAAiB,SAAQ,eAAe;IAC5D,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,eAAe,IAAI,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA"}
@@ -1,6 +1,9 @@
1
- import { spec, toInt } from "@welshman/lib";
2
1
  import { tagSpec, tagValue, getAddress } from "@welshman/util";
2
+ import { getClient } from "../behaviors/Client.js";
3
+ import { getContentWarning } from "../behaviors/ContentWarning.js";
3
4
  import { getEmojis } from "../behaviors/Emoji.js";
5
+ import { getExpiration } from "../behaviors/Expiration.js";
6
+ import { isProtected } from "../behaviors/Protected.js";
4
7
  import { getZapSplits } from "../behaviors/ZapSplits.js";
5
8
  /**
6
9
  * The accessors every reader shares. Readers don't extend this directly — they
@@ -44,10 +47,19 @@ export class BaseEventReader {
44
47
  return tagValue(tagSpec("h"), this.event.tags);
45
48
  }
46
49
  protect() {
47
- return this.event.tags.some(spec(["-"]));
50
+ return isProtected(this.event);
48
51
  }
49
52
  expiration() {
50
- return toInt(tagValue(tagSpec("expiration"), this.event.tags) ?? "");
53
+ return getExpiration(this.event);
54
+ }
55
+ contentWarning() {
56
+ return Boolean(getContentWarning(this.event));
57
+ }
58
+ contentWarningReason() {
59
+ return getContentWarning(this.event)?.reason;
60
+ }
61
+ client() {
62
+ return getClient(this.event);
51
63
  }
52
64
  emojis() {
53
65
  return getEmojis(this.event);
@@ -1 +1 @@
1
- {"version":3,"file":"EventReader.js","sourceRoot":"","sources":["../../../../src/core/EventReader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,eAAe,CAAA;AAEzC,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAC,MAAM,gBAAgB,CAAA;AAG5D,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAA;AAE/C,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAA;AAGtD;;;;GAIG;AACH,MAAM,OAAgB,eAAe;IAExB;IACA;IACA;IAHX,YACW,IAAY,EACZ,OAAoB,EACpB,KAAmB;QAFnB,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAAa;QACpB,UAAK,GAAL,KAAK,CAAc;QAE5B,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,oBAAoB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QAC1E,CAAC;IACH,CAAC;IAMD,EAAE;QACA,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAA;IACtB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;IAC1B,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAA;IAC3B,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA;IACxB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAA;IAC9B,CAAC;IAED,UAAU;QACR,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAChD,CAAC;IAED,OAAO;QACL,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC;IAED,IAAI;QACF,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAChD,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,UAAU;QACR,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IACtE,CAAC;IAED,MAAM;QACJ,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;IAED,SAAS;QACP,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACjC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAgB,WAAY,SAAQ,eAAe;IACvD,KAAK;QACH,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAgB,gBAAiB,SAAQ,eAAe;CAE7D"}
1
+ {"version":3,"file":"EventReader.js","sourceRoot":"","sources":["../../../../src/core/EventReader.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAC,MAAM,gBAAgB,CAAA;AAG5D,OAAO,EAAC,SAAS,EAAC,MAAM,wBAAwB,CAAA;AAEhD,OAAO,EAAC,iBAAiB,EAAC,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAA;AAE/C,OAAO,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAA;AACxD,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAA;AAGtD;;;;GAIG;AACH,MAAM,OAAgB,eAAe;IAExB;IACA;IACA;IAHX,YACW,IAAY,EACZ,OAAoB,EACpB,KAAmB;QAFnB,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAAa;QACpB,UAAK,GAAL,KAAK,CAAc;QAE5B,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,oBAAoB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QAC1E,CAAC;IACH,CAAC;IAMD,EAAE;QACA,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAA;IACtB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;IAC1B,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAA;IAC3B,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA;IACxB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAA;IAC9B,CAAC;IAED,UAAU;QACR,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAChD,CAAC;IAED,OAAO;QACL,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC;IAED,IAAI;QACF,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAChD,CAAC;IAED,OAAO;QACL,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAChC,CAAC;IAED,UAAU;QACR,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC;IAED,cAAc;QACZ,OAAO,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAC/C,CAAC;IAED,oBAAoB;QAClB,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IAC9C,CAAC;IAED,MAAM;QACJ,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;IAED,MAAM;QACJ,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;IAED,SAAS;QACP,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACjC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAgB,WAAY,SAAQ,eAAe;IACvD,KAAK;QACH,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAgB,gBAAiB,SAAQ,eAAe;CAE7D"}
@@ -15,20 +15,36 @@ export declare abstract class EventWriter<Reader extends BaseEventReader> {
15
15
  roomTag?: string[];
16
16
  protectTag?: string[];
17
17
  expirationTag?: string[];
18
+ contentWarningTag?: string[];
19
+ clientTag?: string[];
18
20
  identifierTag?: string[];
19
21
  extraTags: string[][];
20
- forcedRelays?: string[];
22
+ forcedRoutes?: RelaySelection[];
21
23
  pendingResolves: Promise<unknown>[];
22
24
  readonly requiresRelays: boolean;
23
25
  constructor(kind: number, context: KindContext, reader?: Reader | undefined);
24
26
  setContent(content: string): this;
25
27
  setRoom(url: string, room: string): this;
26
28
  clearRoom(): this;
27
- forceRelays(...urls: string[]): this;
28
- clearForcedRelays(): this;
29
+ /**
30
+ * Replaces the rendered routes. These are routes rather than urls, so
31
+ * `forceRoutes(userInbox())` pins an event to the user's read relays without
32
+ * resolving them first.
33
+ */
34
+ forceRoutes(...routes: RelaySelection[]): this;
35
+ clearForcedRoutes(): this;
29
36
  setProtected(protect: boolean): this;
30
37
  setExpiration(expiration: number): this;
31
38
  clearExpiration(): this;
39
+ setContentWarning(reason?: string): this;
40
+ clearContentWarning(): this;
41
+ /**
42
+ * Attributes the event to the NIP-89 client that produced it. `address` is an
43
+ * optional `31990:pubkey:d-tag` pointer to the client's handler information
44
+ * event; when given, its author's outbox fills in the tag's relay hint slot.
45
+ */
46
+ setClient(name: string, address?: string): this;
47
+ clearClient(): this;
32
48
  setIdentifier(identifier?: string): this;
33
49
  clearIdentifier(): this;
34
50
  addTags(...tags: string[][]): this;
@@ -80,8 +96,8 @@ export declare abstract class EventWriter<Reader extends BaseEventReader> {
80
96
  */
81
97
  protected renderRoutes(): Promise<RelaySelection[]>;
82
98
  /**
83
- * Returns a router scenario for this event. Publishes to forced relays (e.g. a
84
- * NIP-29 room) when set, otherwise to the rendered routes.
99
+ * Returns a router scenario for this event. Publishes to the forced routes (e.g. a
100
+ * NIP-29 room's relay) when set, otherwise to the rendered routes.
85
101
  */
86
102
  scenario(): Promise<RelayScenario>;
87
103
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"EventWriter.d.ts","sourceRoot":"","sources":["../../../../src/core/EventWriter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EventWriter.d.ts","sourceRoot":"","sources":["../../../../src/core/EventWriter.ts"],"names":[],"mappings":"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"}