@welshman/domain 0.9.0-pre1

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 (443) hide show
  1. package/LICENSE +21 -0
  2. package/dist/domain/src/EventBuilder.d.ts +35 -0
  3. package/dist/domain/src/EventBuilder.d.ts.map +1 -0
  4. package/dist/domain/src/EventBuilder.js +111 -0
  5. package/dist/domain/src/EventBuilder.js.map +1 -0
  6. package/dist/domain/src/EventReader.d.ts +24 -0
  7. package/dist/domain/src/EventReader.d.ts.map +1 -0
  8. package/dist/domain/src/EventReader.js +57 -0
  9. package/dist/domain/src/EventReader.js.map +1 -0
  10. package/dist/domain/src/ListBuilder.d.ts +21 -0
  11. package/dist/domain/src/ListBuilder.d.ts.map +1 -0
  12. package/dist/domain/src/ListBuilder.js +73 -0
  13. package/dist/domain/src/ListBuilder.js.map +1 -0
  14. package/dist/domain/src/ListReader.d.ts +12 -0
  15. package/dist/domain/src/ListReader.d.ts.map +1 -0
  16. package/dist/domain/src/ListReader.js +31 -0
  17. package/dist/domain/src/ListReader.js.map +1 -0
  18. package/dist/domain/src/index.d.ts +54 -0
  19. package/dist/domain/src/index.d.ts.map +1 -0
  20. package/dist/domain/src/index.js +54 -0
  21. package/dist/domain/src/index.js.map +1 -0
  22. package/dist/domain/src/kinds/BlockedRelayList.d.ts +15 -0
  23. package/dist/domain/src/kinds/BlockedRelayList.d.ts.map +1 -0
  24. package/dist/domain/src/kinds/BlockedRelayList.js +30 -0
  25. package/dist/domain/src/kinds/BlockedRelayList.js.map +1 -0
  26. package/dist/domain/src/kinds/BlossomServerList.d.ts +15 -0
  27. package/dist/domain/src/kinds/BlossomServerList.d.ts.map +1 -0
  28. package/dist/domain/src/kinds/BlossomServerList.js +30 -0
  29. package/dist/domain/src/kinds/BlossomServerList.js.map +1 -0
  30. package/dist/domain/src/kinds/BookmarkList.d.ts +17 -0
  31. package/dist/domain/src/kinds/BookmarkList.d.ts.map +1 -0
  32. package/dist/domain/src/kinds/BookmarkList.js +36 -0
  33. package/dist/domain/src/kinds/BookmarkList.js.map +1 -0
  34. package/dist/domain/src/kinds/Classified.d.ts +27 -0
  35. package/dist/domain/src/kinds/Classified.d.ts.map +1 -0
  36. package/dist/domain/src/kinds/Classified.js +65 -0
  37. package/dist/domain/src/kinds/Classified.js.map +1 -0
  38. package/dist/domain/src/kinds/Comment.d.ts +29 -0
  39. package/dist/domain/src/kinds/Comment.d.ts.map +1 -0
  40. package/dist/domain/src/kinds/Comment.js +82 -0
  41. package/dist/domain/src/kinds/Comment.js.map +1 -0
  42. package/dist/domain/src/kinds/EmojiList.d.ts +16 -0
  43. package/dist/domain/src/kinds/EmojiList.d.ts.map +1 -0
  44. package/dist/domain/src/kinds/EmojiList.js +33 -0
  45. package/dist/domain/src/kinds/EmojiList.js.map +1 -0
  46. package/dist/domain/src/kinds/Feed.d.ts +17 -0
  47. package/dist/domain/src/kinds/Feed.d.ts.map +1 -0
  48. package/dist/domain/src/kinds/Feed.js +33 -0
  49. package/dist/domain/src/kinds/Feed.js.map +1 -0
  50. package/dist/domain/src/kinds/FeedList.d.ts +15 -0
  51. package/dist/domain/src/kinds/FeedList.d.ts.map +1 -0
  52. package/dist/domain/src/kinds/FeedList.js +30 -0
  53. package/dist/domain/src/kinds/FeedList.js.map +1 -0
  54. package/dist/domain/src/kinds/FollowList.d.ts +14 -0
  55. package/dist/domain/src/kinds/FollowList.d.ts.map +1 -0
  56. package/dist/domain/src/kinds/FollowList.js +27 -0
  57. package/dist/domain/src/kinds/FollowList.js.map +1 -0
  58. package/dist/domain/src/kinds/GroupList.d.ts +13 -0
  59. package/dist/domain/src/kinds/GroupList.d.ts.map +1 -0
  60. package/dist/domain/src/kinds/GroupList.js +24 -0
  61. package/dist/domain/src/kinds/GroupList.js.map +1 -0
  62. package/dist/domain/src/kinds/Handler.d.ts +41 -0
  63. package/dist/domain/src/kinds/Handler.d.ts.map +1 -0
  64. package/dist/domain/src/kinds/Handler.js +86 -0
  65. package/dist/domain/src/kinds/Handler.js.map +1 -0
  66. package/dist/domain/src/kinds/HandlerRecommendation.d.ts +15 -0
  67. package/dist/domain/src/kinds/HandlerRecommendation.d.ts.map +1 -0
  68. package/dist/domain/src/kinds/HandlerRecommendation.js +32 -0
  69. package/dist/domain/src/kinds/HandlerRecommendation.js.map +1 -0
  70. package/dist/domain/src/kinds/MessagingRelayList.d.ts +14 -0
  71. package/dist/domain/src/kinds/MessagingRelayList.d.ts.map +1 -0
  72. package/dist/domain/src/kinds/MessagingRelayList.js +27 -0
  73. package/dist/domain/src/kinds/MessagingRelayList.js.map +1 -0
  74. package/dist/domain/src/kinds/MuteList.d.ts +15 -0
  75. package/dist/domain/src/kinds/MuteList.d.ts.map +1 -0
  76. package/dist/domain/src/kinds/MuteList.js +30 -0
  77. package/dist/domain/src/kinds/MuteList.js.map +1 -0
  78. package/dist/domain/src/kinds/Pin.d.ts +37 -0
  79. package/dist/domain/src/kinds/Pin.d.ts.map +1 -0
  80. package/dist/domain/src/kinds/Pin.js +74 -0
  81. package/dist/domain/src/kinds/Pin.js.map +1 -0
  82. package/dist/domain/src/kinds/PinList.d.ts +15 -0
  83. package/dist/domain/src/kinds/PinList.d.ts.map +1 -0
  84. package/dist/domain/src/kinds/PinList.js +30 -0
  85. package/dist/domain/src/kinds/PinList.js.map +1 -0
  86. package/dist/domain/src/kinds/Pinboard.d.ts +21 -0
  87. package/dist/domain/src/kinds/Pinboard.d.ts.map +1 -0
  88. package/dist/domain/src/kinds/Pinboard.js +53 -0
  89. package/dist/domain/src/kinds/Pinboard.js.map +1 -0
  90. package/dist/domain/src/kinds/Poll.d.ts +37 -0
  91. package/dist/domain/src/kinds/Poll.d.ts.map +1 -0
  92. package/dist/domain/src/kinds/Poll.js +80 -0
  93. package/dist/domain/src/kinds/Poll.js.map +1 -0
  94. package/dist/domain/src/kinds/PollResponse.d.ts +15 -0
  95. package/dist/domain/src/kinds/PollResponse.d.ts.map +1 -0
  96. package/dist/domain/src/kinds/PollResponse.js +33 -0
  97. package/dist/domain/src/kinds/PollResponse.js.map +1 -0
  98. package/dist/domain/src/kinds/Profile.d.ts +36 -0
  99. package/dist/domain/src/kinds/Profile.d.ts.map +1 -0
  100. package/dist/domain/src/kinds/Profile.js +105 -0
  101. package/dist/domain/src/kinds/Profile.js.map +1 -0
  102. package/dist/domain/src/kinds/RelayAddMember.d.ts +12 -0
  103. package/dist/domain/src/kinds/RelayAddMember.d.ts.map +1 -0
  104. package/dist/domain/src/kinds/RelayAddMember.js +21 -0
  105. package/dist/domain/src/kinds/RelayAddMember.js.map +1 -0
  106. package/dist/domain/src/kinds/RelayInvite.d.ts +12 -0
  107. package/dist/domain/src/kinds/RelayInvite.d.ts.map +1 -0
  108. package/dist/domain/src/kinds/RelayInvite.js +21 -0
  109. package/dist/domain/src/kinds/RelayInvite.js.map +1 -0
  110. package/dist/domain/src/kinds/RelayJoin.d.ts +14 -0
  111. package/dist/domain/src/kinds/RelayJoin.d.ts.map +1 -0
  112. package/dist/domain/src/kinds/RelayJoin.js +27 -0
  113. package/dist/domain/src/kinds/RelayJoin.js.map +1 -0
  114. package/dist/domain/src/kinds/RelayLeave.d.ts +10 -0
  115. package/dist/domain/src/kinds/RelayLeave.d.ts.map +1 -0
  116. package/dist/domain/src/kinds/RelayLeave.js +14 -0
  117. package/dist/domain/src/kinds/RelayLeave.js.map +1 -0
  118. package/dist/domain/src/kinds/RelayList.d.ts +24 -0
  119. package/dist/domain/src/kinds/RelayList.d.ts.map +1 -0
  120. package/dist/domain/src/kinds/RelayList.js +89 -0
  121. package/dist/domain/src/kinds/RelayList.js.map +1 -0
  122. package/dist/domain/src/kinds/RelayMembers.d.ts +17 -0
  123. package/dist/domain/src/kinds/RelayMembers.d.ts.map +1 -0
  124. package/dist/domain/src/kinds/RelayMembers.js +38 -0
  125. package/dist/domain/src/kinds/RelayMembers.js.map +1 -0
  126. package/dist/domain/src/kinds/RelayRemoveMember.d.ts +12 -0
  127. package/dist/domain/src/kinds/RelayRemoveMember.d.ts.map +1 -0
  128. package/dist/domain/src/kinds/RelayRemoveMember.js +21 -0
  129. package/dist/domain/src/kinds/RelayRemoveMember.js.map +1 -0
  130. package/dist/domain/src/kinds/RelaySet.d.ts +20 -0
  131. package/dist/domain/src/kinds/RelaySet.d.ts.map +1 -0
  132. package/dist/domain/src/kinds/RelaySet.js +45 -0
  133. package/dist/domain/src/kinds/RelaySet.js.map +1 -0
  134. package/dist/domain/src/kinds/Report.d.ts +18 -0
  135. package/dist/domain/src/kinds/Report.d.ts.map +1 -0
  136. package/dist/domain/src/kinds/Report.js +59 -0
  137. package/dist/domain/src/kinds/Report.js.map +1 -0
  138. package/dist/domain/src/kinds/RoomAddMember.d.ts +12 -0
  139. package/dist/domain/src/kinds/RoomAddMember.d.ts.map +1 -0
  140. package/dist/domain/src/kinds/RoomAddMember.js +21 -0
  141. package/dist/domain/src/kinds/RoomAddMember.js.map +1 -0
  142. package/dist/domain/src/kinds/RoomAdmins.d.ts +14 -0
  143. package/dist/domain/src/kinds/RoomAdmins.d.ts.map +1 -0
  144. package/dist/domain/src/kinds/RoomAdmins.js +27 -0
  145. package/dist/domain/src/kinds/RoomAdmins.js.map +1 -0
  146. package/dist/domain/src/kinds/RoomCreate.d.ts +11 -0
  147. package/dist/domain/src/kinds/RoomCreate.d.ts.map +1 -0
  148. package/dist/domain/src/kinds/RoomCreate.js +20 -0
  149. package/dist/domain/src/kinds/RoomCreate.js.map +1 -0
  150. package/dist/domain/src/kinds/RoomCreatePermission.d.ts +15 -0
  151. package/dist/domain/src/kinds/RoomCreatePermission.d.ts.map +1 -0
  152. package/dist/domain/src/kinds/RoomCreatePermission.js +30 -0
  153. package/dist/domain/src/kinds/RoomCreatePermission.js.map +1 -0
  154. package/dist/domain/src/kinds/RoomDelete.d.ts +11 -0
  155. package/dist/domain/src/kinds/RoomDelete.d.ts.map +1 -0
  156. package/dist/domain/src/kinds/RoomDelete.js +20 -0
  157. package/dist/domain/src/kinds/RoomDelete.js.map +1 -0
  158. package/dist/domain/src/kinds/RoomEdit.d.ts +28 -0
  159. package/dist/domain/src/kinds/RoomEdit.d.ts.map +1 -0
  160. package/dist/domain/src/kinds/RoomEdit.js +80 -0
  161. package/dist/domain/src/kinds/RoomEdit.js.map +1 -0
  162. package/dist/domain/src/kinds/RoomJoin.d.ts +15 -0
  163. package/dist/domain/src/kinds/RoomJoin.d.ts.map +1 -0
  164. package/dist/domain/src/kinds/RoomJoin.js +33 -0
  165. package/dist/domain/src/kinds/RoomJoin.js.map +1 -0
  166. package/dist/domain/src/kinds/RoomLeave.d.ts +11 -0
  167. package/dist/domain/src/kinds/RoomLeave.d.ts.map +1 -0
  168. package/dist/domain/src/kinds/RoomLeave.js +20 -0
  169. package/dist/domain/src/kinds/RoomLeave.js.map +1 -0
  170. package/dist/domain/src/kinds/RoomList.d.ts +14 -0
  171. package/dist/domain/src/kinds/RoomList.d.ts.map +1 -0
  172. package/dist/domain/src/kinds/RoomList.js +27 -0
  173. package/dist/domain/src/kinds/RoomList.js.map +1 -0
  174. package/dist/domain/src/kinds/RoomMembers.d.ts +15 -0
  175. package/dist/domain/src/kinds/RoomMembers.d.ts.map +1 -0
  176. package/dist/domain/src/kinds/RoomMembers.js +30 -0
  177. package/dist/domain/src/kinds/RoomMembers.js.map +1 -0
  178. package/dist/domain/src/kinds/RoomMeta.d.ts +27 -0
  179. package/dist/domain/src/kinds/RoomMeta.d.ts.map +1 -0
  180. package/dist/domain/src/kinds/RoomMeta.js +72 -0
  181. package/dist/domain/src/kinds/RoomMeta.js.map +1 -0
  182. package/dist/domain/src/kinds/RoomRemoveMember.d.ts +14 -0
  183. package/dist/domain/src/kinds/RoomRemoveMember.d.ts.map +1 -0
  184. package/dist/domain/src/kinds/RoomRemoveMember.js +27 -0
  185. package/dist/domain/src/kinds/RoomRemoveMember.js.map +1 -0
  186. package/dist/domain/src/kinds/SearchRelayList.d.ts +15 -0
  187. package/dist/domain/src/kinds/SearchRelayList.d.ts.map +1 -0
  188. package/dist/domain/src/kinds/SearchRelayList.js +30 -0
  189. package/dist/domain/src/kinds/SearchRelayList.js.map +1 -0
  190. package/dist/domain/src/kinds/SlashCommand.d.ts +38 -0
  191. package/dist/domain/src/kinds/SlashCommand.d.ts.map +1 -0
  192. package/dist/domain/src/kinds/SlashCommand.js +91 -0
  193. package/dist/domain/src/kinds/SlashCommand.js.map +1 -0
  194. package/dist/domain/src/kinds/Thread.d.ts +12 -0
  195. package/dist/domain/src/kinds/Thread.d.ts.map +1 -0
  196. package/dist/domain/src/kinds/Thread.js +21 -0
  197. package/dist/domain/src/kinds/Thread.js.map +1 -0
  198. package/dist/domain/src/kinds/TimeEvent.d.ts +21 -0
  199. package/dist/domain/src/kinds/TimeEvent.d.ts.map +1 -0
  200. package/dist/domain/src/kinds/TimeEvent.js +58 -0
  201. package/dist/domain/src/kinds/TimeEvent.js.map +1 -0
  202. package/dist/domain/src/kinds/TopicList.d.ts +17 -0
  203. package/dist/domain/src/kinds/TopicList.d.ts.map +1 -0
  204. package/dist/domain/src/kinds/TopicList.js +36 -0
  205. package/dist/domain/src/kinds/TopicList.js.map +1 -0
  206. package/dist/domain/src/kinds/ZapGoal.d.ts +20 -0
  207. package/dist/domain/src/kinds/ZapGoal.d.ts.map +1 -0
  208. package/dist/domain/src/kinds/ZapGoal.js +52 -0
  209. package/dist/domain/src/kinds/ZapGoal.js.map +1 -0
  210. package/dist/domain/src/kinds/ZapReceipt.d.ts +28 -0
  211. package/dist/domain/src/kinds/ZapReceipt.d.ts.map +1 -0
  212. package/dist/domain/src/kinds/ZapReceipt.js +93 -0
  213. package/dist/domain/src/kinds/ZapReceipt.js.map +1 -0
  214. package/dist/domain/src/kinds/ZapRequest.d.ts +20 -0
  215. package/dist/domain/src/kinds/ZapRequest.d.ts.map +1 -0
  216. package/dist/domain/src/kinds/ZapRequest.js +47 -0
  217. package/dist/domain/src/kinds/ZapRequest.js.map +1 -0
  218. package/dist/feeds/src/compiler.d.ts +49 -0
  219. package/dist/feeds/src/compiler.d.ts.map +1 -0
  220. package/dist/feeds/src/compiler.js +253 -0
  221. package/dist/feeds/src/compiler.js.map +1 -0
  222. package/dist/feeds/src/controller.d.ts +32 -0
  223. package/dist/feeds/src/controller.d.ts.map +1 -0
  224. package/dist/feeds/src/controller.js +329 -0
  225. package/dist/feeds/src/controller.js.map +1 -0
  226. package/dist/feeds/src/core.d.ts +76 -0
  227. package/dist/feeds/src/core.d.ts.map +1 -0
  228. package/dist/feeds/src/core.js +28 -0
  229. package/dist/feeds/src/core.js.map +1 -0
  230. package/dist/feeds/src/display.d.ts +21 -0
  231. package/dist/feeds/src/display.d.ts.map +1 -0
  232. package/dist/feeds/src/display.js +144 -0
  233. package/dist/feeds/src/display.js.map +1 -0
  234. package/dist/feeds/src/index.d.ts +7 -0
  235. package/dist/feeds/src/index.d.ts.map +1 -0
  236. package/dist/feeds/src/index.js +7 -0
  237. package/dist/feeds/src/index.js.map +1 -0
  238. package/dist/feeds/src/request.d.ts +26 -0
  239. package/dist/feeds/src/request.d.ts.map +1 -0
  240. package/dist/feeds/src/request.js +83 -0
  241. package/dist/feeds/src/request.js.map +1 -0
  242. package/dist/feeds/src/utils.d.ts +58 -0
  243. package/dist/feeds/src/utils.d.ts.map +1 -0
  244. package/dist/feeds/src/utils.js +218 -0
  245. package/dist/feeds/src/utils.js.map +1 -0
  246. package/dist/feeds/src/validate.d.ts +24 -0
  247. package/dist/feeds/src/validate.d.ts.map +1 -0
  248. package/dist/feeds/src/validate.js +137 -0
  249. package/dist/feeds/src/validate.js.map +1 -0
  250. package/dist/lib/src/Deferred.d.ts +21 -0
  251. package/dist/lib/src/Deferred.d.ts.map +1 -0
  252. package/dist/lib/src/Deferred.js +21 -0
  253. package/dist/lib/src/Deferred.js.map +1 -0
  254. package/dist/lib/src/Emitter.d.ts +14 -0
  255. package/dist/lib/src/Emitter.d.ts.map +1 -0
  256. package/dist/lib/src/Emitter.js +18 -0
  257. package/dist/lib/src/Emitter.js.map +1 -0
  258. package/dist/lib/src/LRUCache.d.ts +45 -0
  259. package/dist/lib/src/LRUCache.d.ts.map +1 -0
  260. package/dist/lib/src/LRUCache.js +72 -0
  261. package/dist/lib/src/LRUCache.js.map +1 -0
  262. package/dist/lib/src/TaskQueue.d.ts +21 -0
  263. package/dist/lib/src/TaskQueue.d.ts.map +1 -0
  264. package/dist/lib/src/TaskQueue.js +63 -0
  265. package/dist/lib/src/TaskQueue.js.map +1 -0
  266. package/dist/lib/src/Tools.d.ts +828 -0
  267. package/dist/lib/src/Tools.d.ts.map +1 -0
  268. package/dist/lib/src/Tools.js +1402 -0
  269. package/dist/lib/src/Tools.js.map +1 -0
  270. package/dist/lib/src/index.d.ts +7 -0
  271. package/dist/lib/src/index.d.ts.map +1 -0
  272. package/dist/lib/src/index.js +7 -0
  273. package/dist/lib/src/index.js.map +1 -0
  274. package/dist/lib/src/normalize-url/index.d.ts +286 -0
  275. package/dist/lib/src/normalize-url/index.d.ts.map +1 -0
  276. package/dist/lib/src/normalize-url/index.js +252 -0
  277. package/dist/lib/src/normalize-url/index.js.map +1 -0
  278. package/dist/net/src/adapter.d.ts +47 -0
  279. package/dist/net/src/adapter.d.ts.map +1 -0
  280. package/dist/net/src/adapter.js +130 -0
  281. package/dist/net/src/adapter.js.map +1 -0
  282. package/dist/net/src/auth.d.ts +40 -0
  283. package/dist/net/src/auth.d.ts.map +1 -0
  284. package/dist/net/src/auth.js +124 -0
  285. package/dist/net/src/auth.js.map +1 -0
  286. package/dist/net/src/context.d.ts +10 -0
  287. package/dist/net/src/context.d.ts.map +1 -0
  288. package/dist/net/src/context.js +2 -0
  289. package/dist/net/src/context.js.map +1 -0
  290. package/dist/net/src/diff.d.ts +57 -0
  291. package/dist/net/src/diff.d.ts.map +1 -0
  292. package/dist/net/src/diff.js +162 -0
  293. package/dist/net/src/diff.js.map +1 -0
  294. package/dist/net/src/index.d.ts +15 -0
  295. package/dist/net/src/index.d.ts.map +1 -0
  296. package/dist/net/src/index.js +15 -0
  297. package/dist/net/src/index.js.map +1 -0
  298. package/dist/net/src/message.d.ts +64 -0
  299. package/dist/net/src/message.d.ts.map +1 -0
  300. package/dist/net/src/message.js +37 -0
  301. package/dist/net/src/message.js.map +1 -0
  302. package/dist/net/src/negentropy.d.ts +48 -0
  303. package/dist/net/src/negentropy.d.ts.map +1 -0
  304. package/dist/net/src/negentropy.js +535 -0
  305. package/dist/net/src/negentropy.js.map +1 -0
  306. package/dist/net/src/policy.d.ts +40 -0
  307. package/dist/net/src/policy.d.ts.map +1 -0
  308. package/dist/net/src/policy.js +210 -0
  309. package/dist/net/src/policy.js.map +1 -0
  310. package/dist/net/src/pool.d.ts +13 -0
  311. package/dist/net/src/pool.d.ts.map +1 -0
  312. package/dist/net/src/pool.js +44 -0
  313. package/dist/net/src/pool.js.map +1 -0
  314. package/dist/net/src/publish.d.ts +45 -0
  315. package/dist/net/src/publish.d.ts.map +1 -0
  316. package/dist/net/src/publish.js +98 -0
  317. package/dist/net/src/publish.js.map +1 -0
  318. package/dist/net/src/repository.d.ts +69 -0
  319. package/dist/net/src/repository.d.ts.map +1 -0
  320. package/dist/net/src/repository.js +304 -0
  321. package/dist/net/src/repository.js.map +1 -0
  322. package/dist/net/src/request.d.ts +58 -0
  323. package/dist/net/src/request.d.ts.map +1 -0
  324. package/dist/net/src/request.js +224 -0
  325. package/dist/net/src/request.js.map +1 -0
  326. package/dist/net/src/socket.d.ts +49 -0
  327. package/dist/net/src/socket.d.ts.map +1 -0
  328. package/dist/net/src/socket.js +126 -0
  329. package/dist/net/src/socket.js.map +1 -0
  330. package/dist/net/src/tracker.d.ts +16 -0
  331. package/dist/net/src/tracker.d.ts.map +1 -0
  332. package/dist/net/src/tracker.js +63 -0
  333. package/dist/net/src/tracker.js.map +1 -0
  334. package/dist/net/src/util.d.ts +2 -0
  335. package/dist/net/src/util.d.ts.map +1 -0
  336. package/dist/net/src/util.js +2 -0
  337. package/dist/net/src/util.js.map +1 -0
  338. package/dist/net/src/wrapManager.d.ts +37 -0
  339. package/dist/net/src/wrapManager.d.ts.map +1 -0
  340. package/dist/net/src/wrapManager.js +94 -0
  341. package/dist/net/src/wrapManager.js.map +1 -0
  342. package/dist/signer/src/index.d.ts +7 -0
  343. package/dist/signer/src/index.d.ts.map +1 -0
  344. package/dist/signer/src/index.js +7 -0
  345. package/dist/signer/src/index.js.map +1 -0
  346. package/dist/signer/src/nip59.d.ts +19 -0
  347. package/dist/signer/src/nip59.d.ts.map +1 -0
  348. package/dist/signer/src/nip59.js +70 -0
  349. package/dist/signer/src/nip59.js.map +1 -0
  350. package/dist/signer/src/signers/nip01.d.ts +20 -0
  351. package/dist/signer/src/signers/nip01.d.ts.map +1 -0
  352. package/dist/signer/src/signers/nip01.js +23 -0
  353. package/dist/signer/src/signers/nip01.js.map +1 -0
  354. package/dist/signer/src/signers/nip07.d.ts +23 -0
  355. package/dist/signer/src/signers/nip07.d.ts.map +1 -0
  356. package/dist/signer/src/signers/nip07.js +29 -0
  357. package/dist/signer/src/signers/nip07.js.map +1 -0
  358. package/dist/signer/src/signers/nip46.d.ts +127 -0
  359. package/dist/signer/src/signers/nip46.d.ts.map +1 -0
  360. package/dist/signer/src/signers/nip46.js +379 -0
  361. package/dist/signer/src/signers/nip46.js.map +1 -0
  362. package/dist/signer/src/signers/nip55.d.ts +20 -0
  363. package/dist/signer/src/signers/nip55.d.ts.map +1 -0
  364. package/dist/signer/src/signers/nip55.js +87 -0
  365. package/dist/signer/src/signers/nip55.js.map +1 -0
  366. package/dist/signer/src/util.d.ts +56 -0
  367. package/dist/signer/src/util.d.ts.map +1 -0
  368. package/dist/signer/src/util.js +65 -0
  369. package/dist/signer/src/util.js.map +1 -0
  370. package/dist/tsconfig.build.tsbuildinfo +1 -0
  371. package/dist/util/src/Address.d.ts +21 -0
  372. package/dist/util/src/Address.d.ts.map +1 -0
  373. package/dist/util/src/Address.js +43 -0
  374. package/dist/util/src/Address.js.map +1 -0
  375. package/dist/util/src/Blossom.d.ts +66 -0
  376. package/dist/util/src/Blossom.d.ts.map +1 -0
  377. package/dist/util/src/Blossom.js +124 -0
  378. package/dist/util/src/Blossom.js.map +1 -0
  379. package/dist/util/src/Events.d.ts +71 -0
  380. package/dist/util/src/Events.d.ts.map +1 -0
  381. package/dist/util/src/Events.js +91 -0
  382. package/dist/util/src/Events.js.map +1 -0
  383. package/dist/util/src/Filters.d.ts +48 -0
  384. package/dist/util/src/Filters.d.ts.map +1 -0
  385. package/dist/util/src/Filters.js +182 -0
  386. package/dist/util/src/Filters.js.map +1 -0
  387. package/dist/util/src/Handles.d.ts +15 -0
  388. package/dist/util/src/Handles.d.ts.map +1 -0
  389. package/dist/util/src/Handles.js +25 -0
  390. package/dist/util/src/Handles.js.map +1 -0
  391. package/dist/util/src/Keys.d.ts +37 -0
  392. package/dist/util/src/Keys.d.ts.map +1 -0
  393. package/dist/util/src/Keys.js +26 -0
  394. package/dist/util/src/Keys.js.map +1 -0
  395. package/dist/util/src/Kinds.d.ts +194 -0
  396. package/dist/util/src/Kinds.d.ts.map +1 -0
  397. package/dist/util/src/Kinds.js +203 -0
  398. package/dist/util/src/Kinds.js.map +1 -0
  399. package/dist/util/src/Links.d.ts +3 -0
  400. package/dist/util/src/Links.d.ts.map +1 -0
  401. package/dist/util/src/Links.js +3 -0
  402. package/dist/util/src/Links.js.map +1 -0
  403. package/dist/util/src/Nip42.d.ts +7 -0
  404. package/dist/util/src/Nip42.d.ts.map +1 -0
  405. package/dist/util/src/Nip42.js +9 -0
  406. package/dist/util/src/Nip42.js.map +1 -0
  407. package/dist/util/src/Nip86.d.ts +39 -0
  408. package/dist/util/src/Nip86.d.ts.map +1 -0
  409. package/dist/util/src/Nip86.js +49 -0
  410. package/dist/util/src/Nip86.js.map +1 -0
  411. package/dist/util/src/Nip98.d.ts +9 -0
  412. package/dist/util/src/Nip98.d.ts.map +1 -0
  413. package/dist/util/src/Nip98.js +16 -0
  414. package/dist/util/src/Nip98.js.map +1 -0
  415. package/dist/util/src/Pow.d.ts +11 -0
  416. package/dist/util/src/Pow.d.ts.map +1 -0
  417. package/dist/util/src/Pow.js +127 -0
  418. package/dist/util/src/Pow.js.map +1 -0
  419. package/dist/util/src/Pubkey.d.ts +10 -0
  420. package/dist/util/src/Pubkey.d.ts.map +1 -0
  421. package/dist/util/src/Pubkey.js +32 -0
  422. package/dist/util/src/Pubkey.js.map +1 -0
  423. package/dist/util/src/Relay.d.ts +38 -0
  424. package/dist/util/src/Relay.d.ts.map +1 -0
  425. package/dist/util/src/Relay.js +55 -0
  426. package/dist/util/src/Relay.js.map +1 -0
  427. package/dist/util/src/Tags.d.ts +37 -0
  428. package/dist/util/src/Tags.d.ts.map +1 -0
  429. package/dist/util/src/Tags.js +79 -0
  430. package/dist/util/src/Tags.js.map +1 -0
  431. package/dist/util/src/Wallet.d.ts +32 -0
  432. package/dist/util/src/Wallet.d.ts.map +1 -0
  433. package/dist/util/src/Wallet.js +9 -0
  434. package/dist/util/src/Wallet.js.map +1 -0
  435. package/dist/util/src/Zaps.d.ts +86 -0
  436. package/dist/util/src/Zaps.d.ts.map +1 -0
  437. package/dist/util/src/Zaps.js +184 -0
  438. package/dist/util/src/Zaps.js.map +1 -0
  439. package/dist/util/src/index.d.ts +18 -0
  440. package/dist/util/src/index.d.ts.map +1 -0
  441. package/dist/util/src/index.js +18 -0
  442. package/dist/util/src/index.js.map +1 -0
  443. package/package.json +37 -0
@@ -0,0 +1,253 @@
1
+ import { uniq, identity, flatten, pushToMapKey, intersection, tryCatch, now } from "@welshman/lib";
2
+ import { intersectFilters, matchFilter, getAddress, getIdFilters, unionFilters, } from "@welshman/util";
3
+ import { FeedType, } from "./core.js";
4
+ import { getFeedArgs, feedsFromTags } from "./utils.js";
5
+ import { requestPage, requestDVM } from "./request.js";
6
+ export class FeedCompiler {
7
+ options;
8
+ constructor(options) {
9
+ this.options = options;
10
+ }
11
+ canCompile(feed) {
12
+ switch (feed[0]) {
13
+ case FeedType.Union:
14
+ case FeedType.Intersection:
15
+ return getFeedArgs(feed).every(f => this.canCompile(f));
16
+ case FeedType.Address:
17
+ case FeedType.Author:
18
+ case FeedType.CreatedAt:
19
+ case FeedType.DVM:
20
+ case FeedType.ID:
21
+ case FeedType.Global:
22
+ case FeedType.Kind:
23
+ case FeedType.List:
24
+ case FeedType.Label:
25
+ case FeedType.Relay:
26
+ case FeedType.Scope:
27
+ case FeedType.Search:
28
+ case FeedType.Tag:
29
+ case FeedType.WOT:
30
+ return true;
31
+ default:
32
+ return false;
33
+ }
34
+ }
35
+ async compile(feed) {
36
+ switch (feed[0]) {
37
+ case FeedType.ID:
38
+ return this._compileFilter("ids", getFeedArgs(feed));
39
+ case FeedType.Kind:
40
+ return this._compileFilter("kinds", getFeedArgs(feed));
41
+ case FeedType.Author:
42
+ return this._compileFilter("authors", getFeedArgs(feed));
43
+ case FeedType.DVM:
44
+ return await this._compileDvms(getFeedArgs(feed));
45
+ case FeedType.Intersection:
46
+ return await this._compileIntersection(getFeedArgs(feed));
47
+ case FeedType.List:
48
+ return await this._compileLists(getFeedArgs(feed));
49
+ case FeedType.Label:
50
+ return await this._compileLabels(getFeedArgs(feed));
51
+ case FeedType.Union:
52
+ return await this._compileUnion(getFeedArgs(feed));
53
+ case FeedType.Address:
54
+ return this._compileAddresses(getFeedArgs(feed));
55
+ case FeedType.CreatedAt:
56
+ return this._compileCreatedAt(getFeedArgs(feed));
57
+ case FeedType.Scope:
58
+ return this._compileScopes(getFeedArgs(feed));
59
+ case FeedType.Search:
60
+ return this._compileSearches(getFeedArgs(feed));
61
+ case FeedType.WOT:
62
+ return this._compileWot(getFeedArgs(feed));
63
+ case FeedType.Relay:
64
+ return [{ relays: getFeedArgs(feed) }];
65
+ case FeedType.Global:
66
+ return [{ filters: [{}] }];
67
+ case FeedType.Tag: {
68
+ const [key, ...value] = getFeedArgs(feed);
69
+ return this._compileFilter(key, value);
70
+ }
71
+ default:
72
+ throw new Error(`Unable to convert feed of type ${feed[0]} to filters`);
73
+ }
74
+ }
75
+ _compileAddresses(addresses) {
76
+ return [{ filters: getIdFilters(addresses) }];
77
+ }
78
+ _compileFilter(key, value) {
79
+ return [{ filters: [{ [key]: value }] }];
80
+ }
81
+ _compileCreatedAt(items) {
82
+ const filters = items
83
+ .map(({ since, until, relative = [] }) => {
84
+ if (since && relative.includes("since")) {
85
+ since = now() - since;
86
+ }
87
+ if (until && relative.includes("until")) {
88
+ until = now() - until;
89
+ }
90
+ if (since && until)
91
+ return { since, until };
92
+ if (since)
93
+ return { since };
94
+ if (until)
95
+ return { until };
96
+ return null;
97
+ })
98
+ .filter(identity);
99
+ return [{ filters: filters }];
100
+ }
101
+ _compileScopes(scopes) {
102
+ return [{ filters: [{ authors: uniq(scopes.flatMap(this.options.getPubkeysForScope)) }] }];
103
+ }
104
+ _compileSearches(searches) {
105
+ return [{ filters: searches.map(search => ({ search })) }];
106
+ }
107
+ _compileWot(wotItems) {
108
+ return [
109
+ {
110
+ filters: wotItems.map(({ min = 0, max = 1 }) => ({
111
+ authors: this.options.getPubkeysForWOTRange(min, max),
112
+ })),
113
+ },
114
+ ];
115
+ }
116
+ async _compileDvms(items) {
117
+ const feeds = [];
118
+ await Promise.all(items.map(({ mappings, ...request }) => requestDVM({
119
+ ...request,
120
+ router: this.options.router,
121
+ signer: this.options.signer,
122
+ context: this.options.context,
123
+ onResult: async (e) => {
124
+ const tags = (await tryCatch(() => JSON.parse(e.content))) || [];
125
+ for (const feed of feedsFromTags(tags, mappings)) {
126
+ feeds.push(feed);
127
+ }
128
+ },
129
+ })));
130
+ return await this._compileUnion(feeds);
131
+ }
132
+ async _compileIntersection(feeds) {
133
+ const [head, ...tail] = await Promise.all(feeds.map(f => this.compile(f)));
134
+ const result = [];
135
+ for (let { filters, relays } of head || []) {
136
+ const matchingGroups = tail
137
+ .map(items => items.filter(it => (!relays || !it.relays || intersection(relays, it.relays).length > 0) &&
138
+ (!filters || !it.filters || intersectFilters([filters, it.filters]).length > 0)))
139
+ .filter(items => items.length > 0);
140
+ if (matchingGroups.length < tail.length) {
141
+ continue;
142
+ }
143
+ for (const items of matchingGroups) {
144
+ for (const item of items) {
145
+ if (relays && item.relays) {
146
+ relays = relays.filter(r => item.relays.includes(r));
147
+ }
148
+ else if (item.relays) {
149
+ relays = item.relays;
150
+ }
151
+ if (filters && item.filters) {
152
+ filters = intersectFilters([filters, item.filters]);
153
+ }
154
+ else if (item.filters) {
155
+ filters = item.filters;
156
+ }
157
+ }
158
+ }
159
+ result.push({ relays, filters });
160
+ }
161
+ return result;
162
+ }
163
+ async _compileUnion(feeds) {
164
+ const filtersByRelay = new Map();
165
+ const filtersWithoutRelay = [];
166
+ const relaysWithoutFilter = [];
167
+ await Promise.all(feeds.map(async (feed) => {
168
+ for (const item of await this.compile(feed)) {
169
+ if (item.relays) {
170
+ for (const relay of item.relays) {
171
+ if (item.filters) {
172
+ for (const filter of item.filters) {
173
+ pushToMapKey(filtersByRelay, relay, filter);
174
+ }
175
+ }
176
+ else {
177
+ relaysWithoutFilter.push(relay);
178
+ }
179
+ }
180
+ }
181
+ else if (item.filters) {
182
+ for (const filter of item.filters) {
183
+ filtersWithoutRelay.push(filter);
184
+ }
185
+ }
186
+ }
187
+ }));
188
+ const items = [];
189
+ for (const [relay, filters] of filtersByRelay.entries()) {
190
+ items.push({
191
+ relays: [relay],
192
+ filters: unionFilters(filters),
193
+ });
194
+ }
195
+ if (filtersWithoutRelay.length > 0) {
196
+ items.push({ filters: unionFilters(filtersWithoutRelay) });
197
+ }
198
+ if (relaysWithoutFilter.length > 0) {
199
+ items.push({ relays: uniq(relaysWithoutFilter) });
200
+ }
201
+ return items;
202
+ }
203
+ async _compileLists(listItems) {
204
+ const addresses = uniq(listItems.flatMap(({ addresses }) => addresses));
205
+ const eventsByAddress = new Map();
206
+ await requestPage({
207
+ router: this.options.router,
208
+ autoClose: true,
209
+ signal: this.options.signal,
210
+ context: this.options.context,
211
+ filters: getIdFilters(addresses),
212
+ onEvent: (e) => eventsByAddress.set(getAddress(e), e),
213
+ });
214
+ const feeds = flatten(await Promise.all(listItems.map(({ addresses, mappings }) => {
215
+ const feeds = [];
216
+ for (const address of addresses) {
217
+ const event = eventsByAddress.get(address);
218
+ if (event) {
219
+ for (const feed of feedsFromTags(event.tags, mappings)) {
220
+ feeds.push(feed);
221
+ }
222
+ }
223
+ }
224
+ return feeds;
225
+ })));
226
+ return this._compileUnion(feeds);
227
+ }
228
+ async _compileLabels(labelItems) {
229
+ const events = [];
230
+ await Promise.all(labelItems.map(({ mappings, relays, ...filter }) => requestPage({
231
+ relays,
232
+ router: this.options.router,
233
+ autoClose: true,
234
+ signal: this.options.signal,
235
+ context: this.options.context,
236
+ filters: [{ kinds: [1985], ...filter }],
237
+ onEvent: (e) => events.push(e),
238
+ })));
239
+ const feeds = flatten(await Promise.all(labelItems.map(({ mappings, relays, ...filter }) => {
240
+ const tags = [];
241
+ for (const event of events) {
242
+ if (matchFilter(filter, event)) {
243
+ for (const tag of event.tags) {
244
+ tags.push(tag);
245
+ }
246
+ }
247
+ }
248
+ return feedsFromTags(tags, mappings);
249
+ })));
250
+ return this._compileUnion(feeds);
251
+ }
252
+ }
253
+ //# sourceMappingURL=compiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../../../feeds/src/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,EAAC,MAAM,eAAe,CAAA;AAChG,OAAO,EAGL,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,YAAY,EACZ,YAAY,GACb,MAAM,gBAAgB,CAAA;AAIvB,OAAO,EASL,QAAQ,GACT,MAAM,WAAW,CAAA;AAClB,OAAO,EAAC,WAAW,EAAE,aAAa,EAAC,MAAM,YAAY,CAAA;AACrD,OAAO,EAAC,WAAW,EAAE,UAAU,EAAC,MAAM,cAAc,CAAA;AAWpD,MAAM,OAAO,YAAY;IACF;IAArB,YAAqB,OAA4B;QAA5B,YAAO,GAAP,OAAO,CAAqB;IAAG,CAAC;IAErD,UAAU,CAAC,IAAU;QACnB,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,KAAK,QAAQ,CAAC,KAAK,CAAC;YACpB,KAAK,QAAQ,CAAC,YAAY;gBACxB,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;YACzD,KAAK,QAAQ,CAAC,OAAO,CAAC;YACtB,KAAK,QAAQ,CAAC,MAAM,CAAC;YACrB,KAAK,QAAQ,CAAC,SAAS,CAAC;YACxB,KAAK,QAAQ,CAAC,GAAG,CAAC;YAClB,KAAK,QAAQ,CAAC,EAAE,CAAC;YACjB,KAAK,QAAQ,CAAC,MAAM,CAAC;YACrB,KAAK,QAAQ,CAAC,IAAI,CAAC;YACnB,KAAK,QAAQ,CAAC,IAAI,CAAC;YACnB,KAAK,QAAQ,CAAC,KAAK,CAAC;YACpB,KAAK,QAAQ,CAAC,KAAK,CAAC;YACpB,KAAK,QAAQ,CAAC,KAAK,CAAC;YACpB,KAAK,QAAQ,CAAC,MAAM,CAAC;YACrB,KAAK,QAAQ,CAAC,GAAG,CAAC;YAClB,KAAK,QAAQ,CAAC,GAAG;gBACf,OAAO,IAAI,CAAA;YACb;gBACE,OAAO,KAAK,CAAA;QAChB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAU;QACtB,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,KAAK,QAAQ,CAAC,EAAE;gBACd,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;YACtD,KAAK,QAAQ,CAAC,IAAI;gBAChB,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;YACxD,KAAK,QAAQ,CAAC,MAAM;gBAClB,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;YAC1D,KAAK,QAAQ,CAAC,GAAG;gBACf,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;YACnD,KAAK,QAAQ,CAAC,YAAY;gBACxB,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;YAC3D,KAAK,QAAQ,CAAC,IAAI;gBAChB,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;YACpD,KAAK,QAAQ,CAAC,KAAK;gBACjB,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;YACrD,KAAK,QAAQ,CAAC,KAAK;gBACjB,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;YACpD,KAAK,QAAQ,CAAC,OAAO;gBACnB,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;YAClD,KAAK,QAAQ,CAAC,SAAS;gBACrB,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;YAClD,KAAK,QAAQ,CAAC,KAAK;gBACjB,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;YAC/C,KAAK,QAAQ,CAAC,MAAM;gBAClB,OAAO,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;YACjD,KAAK,QAAQ,CAAC,GAAG;gBACf,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;YAC5C,KAAK,QAAQ,CAAC,KAAK;gBACjB,OAAO,CAAC,EAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,EAAC,CAAC,CAAA;YACtC,KAAK,QAAQ,CAAC,MAAM;gBAClB,OAAO,CAAC,EAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAA;YAC1B,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBAClB,MAAM,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;gBAEzC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YACxC,CAAC;YACD;gBACE,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAA;QAC3E,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,SAAmB;QACnC,OAAO,CAAC,EAAC,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,EAAC,CAAC,CAAA;IAC7C,CAAC;IAED,cAAc,CAAC,GAAW,EAAE,KAAU;QACpC,OAAO,CAAC,EAAC,OAAO,EAAE,CAAC,EAAC,CAAC,GAAG,CAAC,EAAE,KAAK,EAAW,CAAC,EAAC,CAAC,CAAA;IAChD,CAAC;IAED,iBAAiB,CAAC,KAAsB;QACtC,MAAM,OAAO,GAAG,KAAK;aAClB,GAAG,CAAC,CAAC,EAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,GAAG,EAAE,EAAC,EAAE,EAAE;YACrC,IAAI,KAAK,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,KAAK,GAAG,GAAG,EAAE,GAAG,KAAK,CAAA;YACvB,CAAC;YAED,IAAI,KAAK,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,KAAK,GAAG,GAAG,EAAE,GAAG,KAAK,CAAA;YACvB,CAAC;YAED,IAAI,KAAK,IAAI,KAAK;gBAAE,OAAO,EAAC,KAAK,EAAE,KAAK,EAAC,CAAA;YACzC,IAAI,KAAK;gBAAE,OAAO,EAAC,KAAK,EAAC,CAAA;YACzB,IAAI,KAAK;gBAAE,OAAO,EAAC,KAAK,EAAC,CAAA;YAEzB,OAAO,IAAI,CAAA;QACb,CAAC,CAAC;aACD,MAAM,CAAC,QAAQ,CAAC,CAAA;QAEnB,OAAO,CAAC,EAAC,OAAO,EAAE,OAAmB,EAAC,CAAC,CAAA;IACzC,CAAC;IAED,cAAc,CAAC,MAAe;QAC5B,OAAO,CAAC,EAAC,OAAO,EAAE,CAAC,EAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAA;IACxF,CAAC;IAED,gBAAgB,CAAC,QAAkB;QACjC,OAAO,CAAC,EAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC,EAAC,CAAC,CAAA;IACxD,CAAC;IAED,WAAW,CAAC,QAAmB;QAC7B,OAAO;YACL;gBACE,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAC,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAC,EAAE,EAAE,CAAC,CAAC;oBAC7C,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC;iBACtD,CAAC,CAAC;aACJ;SACF,CAAA;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAgB;QACjC,MAAM,KAAK,GAAW,EAAE,CAAA;QAExB,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,GAAG,CAAC,CAAC,EAAC,QAAQ,EAAE,GAAG,OAAO,EAAC,EAAE,EAAE,CACnC,UAAU,CAAC;YACT,GAAG,OAAO;YACV,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;YAC3B,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,QAAQ,EAAE,KAAK,EAAE,CAAe,EAAE,EAAE;gBAClC,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;gBAEhE,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;oBACjD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAClB,CAAC;YACH,CAAC;SACF,CAAC,CACH,CACF,CAAA;QAED,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IACxC,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,KAAa;QACtC,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAE1E,MAAM,MAAM,GAAG,EAAE,CAAA;QAEjB,KAAK,IAAI,EAAC,OAAO,EAAE,MAAM,EAAC,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;YACzC,MAAM,cAAc,GAAG,IAAI;iBACxB,GAAG,CAAC,KAAK,CAAC,EAAE,CACX,KAAK,CAAC,MAAM,CACV,EAAE,CAAC,EAAE,CACH,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;gBACrE,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAClF,CACF;iBACA,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YAEpC,IAAI,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBACxC,SAAQ;YACV,CAAC;YAED,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;gBACnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;wBAC1B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;oBACvD,CAAC;yBAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;wBACvB,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;oBACtB,CAAC;oBAED,IAAI,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;wBAC5B,OAAO,GAAG,gBAAgB,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;oBACrD,CAAC;yBAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;wBACxB,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;oBACxB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,OAAO,EAAC,CAAC,CAAA;QAChC,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAa;QAC/B,MAAM,cAAc,GAAG,IAAI,GAAG,EAAoB,CAAA;QAClD,MAAM,mBAAmB,GAAa,EAAE,CAAA;QACxC,MAAM,mBAAmB,GAAa,EAAE,CAAA;QAExC,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,GAAG,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE;YACrB,KAAK,MAAM,IAAI,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;wBAChC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;4BACjB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gCAClC,YAAY,CAAC,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;4BAC7C,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACN,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;wBACjC,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACxB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;wBAClC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;oBAClC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CACH,CAAA;QAED,MAAM,KAAK,GAAkB,EAAE,CAAA;QAE/B,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC;gBACT,MAAM,EAAE,CAAC,KAAK,CAAC;gBACf,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC;aAC/B,CAAC,CAAA;QACJ,CAAC;QAED,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAC,CAAC,CAAA;QAC1D,CAAC;QAED,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,EAAC,CAAC,CAAA;QACjD,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAqB;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAC,SAAS,EAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;QACrE,MAAM,eAAe,GAAG,IAAI,GAAG,EAAwB,CAAA;QAEvD,MAAM,WAAW,CAAC;YAChB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;YAC3B,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC;YAChC,OAAO,EAAE,CAAC,CAAe,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACpE,CAAC,CAAA;QAEF,MAAM,KAAK,GAAG,OAAO,CACnB,MAAM,OAAO,CAAC,GAAG,CACf,SAAS,CAAC,GAAG,CAAC,CAAC,EAAC,SAAS,EAAE,QAAQ,EAAC,EAAE,EAAE;YACtC,MAAM,KAAK,GAAW,EAAE,CAAA;YAExB,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;gBAChC,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;gBAE1C,IAAI,KAAK,EAAE,CAAC;oBACV,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;wBACvD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBAClB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,KAAK,CAAA;QACd,CAAC,CAAC,CACH,CACF,CAAA;QAED,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,UAAuB;QAC1C,MAAM,MAAM,GAAmB,EAAE,CAAA;QAEjC,MAAM,OAAO,CAAC,GAAG,CACf,UAAU,CAAC,GAAG,CAAC,CAAC,EAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAC,EAAE,EAAE,CAC/C,WAAW,CAAC;YACV,MAAM;YACN,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;YAC3B,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,OAAO,EAAE,CAAC,EAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAC,CAAC;YACrC,OAAO,EAAE,CAAC,CAAe,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;SAC7C,CAAC,CACH,CACF,CAAA;QAED,MAAM,KAAK,GAAG,OAAO,CACnB,MAAM,OAAO,CAAC,GAAG,CACf,UAAU,CAAC,GAAG,CAAC,CAAC,EAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAC,EAAE,EAAE;YAC/C,MAAM,IAAI,GAAe,EAAE,CAAA;YAE3B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;oBAC/B,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;wBAC7B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;oBAChB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QACtC,CAAC,CAAC,CACH,CACF,CAAA;QAED,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC;CACF"}
@@ -0,0 +1,32 @@
1
+ import { TrustedEvent } from "@welshman/util";
2
+ import { Tracker } from "@welshman/net";
3
+ import { Feed, RequestItem } from "./core.js";
4
+ import { FeedCompiler, FeedCompilerOptions } from "./compiler.js";
5
+ export type FeedControllerOptions = FeedCompilerOptions & {
6
+ feed: Feed;
7
+ tracker?: Tracker;
8
+ onEvent?: (event: TrustedEvent) => void;
9
+ onExhausted?: () => void;
10
+ useWindowing?: boolean;
11
+ };
12
+ export declare class FeedController {
13
+ readonly options: FeedControllerOptions;
14
+ compiler: FeedCompiler;
15
+ constructor(options: FeedControllerOptions);
16
+ getRequestItems: () => Promise<RequestItem[] | undefined>;
17
+ getLoader: () => Promise<(limit: number) => Promise<void>>;
18
+ load: (limit: number) => Promise<void>;
19
+ getListener: () => Promise<() => () => void>;
20
+ listen: () => () => Promise<void>;
21
+ _getRequestsLoader(requests: RequestItem[]): Promise<(limit: number) => Promise<void>>;
22
+ _getRequestLoader({ relays, filters }: RequestItem, { onEvent, onExhausted }: Pick<FeedControllerOptions, "onEvent" | "onExhausted">): Promise<(limit: number) => Promise<void>>;
23
+ _getDifferenceLoader(feeds: Feed[]): (limit: number) => Promise<void>;
24
+ _getIntersectionLoader(feeds: Feed[]): (limit: number) => Promise<void>;
25
+ _getUnionLoader(feeds: Feed[]): (limit: number) => Promise<void>;
26
+ _getRequestsListener(requests: RequestItem[]): Promise<() => () => void>;
27
+ _getRequestListener({ relays, filters }: RequestItem, { onEvent }: Pick<FeedControllerOptions, "onEvent">): Promise<() => () => void>;
28
+ _getDifferenceListener(feeds: Feed[]): () => () => void;
29
+ _getIntersectionListener(feeds: Feed[]): () => () => void;
30
+ _getUnionListener(feeds: Feed[]): () => () => void;
31
+ }
32
+ //# sourceMappingURL=controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../feeds/src/controller.ts"],"names":[],"mappings":"AAYA,OAAO,EAAuC,YAAY,EAAS,MAAM,gBAAgB,CAAA;AACzF,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAA;AACrC,OAAO,EAAC,IAAI,EAAY,WAAW,EAAC,MAAM,WAAW,CAAA;AACrD,OAAO,EAAC,YAAY,EAAE,mBAAmB,EAAC,MAAM,eAAe,CAAA;AAG/D,MAAM,MAAM,qBAAqB,GAAG,mBAAmB,GAAG;IACxD,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAA;IACvC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAED,qBAAa,cAAc;IAGb,QAAQ,CAAC,OAAO,EAAE,qBAAqB;IAFnD,QAAQ,EAAE,YAAY,CAAA;gBAED,OAAO,EAAE,qBAAqB;IAInD,eAAe,2CAIb;IAEF,SAAS,wBAiEc,MAAM,oBA/C3B;IAEF,IAAI,GAAU,OAAO,MAAM,mBAAoC;IAE/D,WAAW,kCAkBT;IAEF,MAAM,4BAIL;IAEK,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,mBAiBzB,MAAM;IASvB,iBAAiB,CACrB,EAAC,MAAM,EAAE,OAAO,EAAC,EAAE,WAAW,EAC9B,EAAC,OAAO,EAAE,WAAW,EAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,SAAS,GAAG,aAAa,CAAC,mBAmBzD,MAAM;IAiE7B,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,IAsBlB,OAAO,MAAM;IAwB7B,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,IAmBpB,OAAO,MAAM;IAwB7B,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,IAmBb,OAAO,MAAM;IAiBvB,oBAAoB,CAAC,QAAQ,EAAE,WAAW,EAAE;IAsB5C,mBAAmB,CACvB,EAAC,MAAM,EAAE,OAAO,EAAC,EAAE,WAAW,EAC9B,EAAC,OAAO,EAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,SAAS,CAAC;IA4BnD,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE;IAyBpC,wBAAwB,CAAC,KAAK,EAAE,IAAI,EAAE;IA2BtC,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE;CAuBhC"}
@@ -0,0 +1,329 @@
1
+ import { inc, removeUndefined, call, defer, memoize, omitVals, max, min, now, } from "@welshman/lib";
2
+ import { EPOCH, trimFilters, guessFilterDelta } from "@welshman/util";
3
+ import { FeedType } from "./core.js";
4
+ import { FeedCompiler } from "./compiler.js";
5
+ import { requestPage } from "./request.js";
6
+ export class FeedController {
7
+ options;
8
+ compiler;
9
+ constructor(options) {
10
+ this.options = options;
11
+ this.compiler = new FeedCompiler(options);
12
+ }
13
+ getRequestItems = memoize(async () => {
14
+ return this.compiler.canCompile(this.options.feed)
15
+ ? this.compiler.compile(this.options.feed)
16
+ : undefined;
17
+ });
18
+ getLoader = memoize(async () => {
19
+ const [type, ...feed] = this.options.feed;
20
+ const requestItems = await this.getRequestItems();
21
+ if (requestItems) {
22
+ return this._getRequestsLoader(requestItems);
23
+ }
24
+ switch (type) {
25
+ case FeedType.Difference:
26
+ return this._getDifferenceLoader(feed);
27
+ case FeedType.Intersection:
28
+ return this._getIntersectionLoader(feed);
29
+ case FeedType.Union:
30
+ return this._getUnionLoader(feed);
31
+ default:
32
+ throw new Error(`Unable to convert feed of type ${type} to loader`);
33
+ }
34
+ });
35
+ load = async (limit) => (await this.getLoader())(limit);
36
+ getListener = memoize(async () => {
37
+ const [type, ...feed] = this.options.feed;
38
+ const requestItems = await this.getRequestItems();
39
+ if (requestItems) {
40
+ return this._getRequestsListener(requestItems);
41
+ }
42
+ switch (type) {
43
+ case FeedType.Difference:
44
+ return this._getDifferenceListener(feed);
45
+ case FeedType.Intersection:
46
+ return this._getIntersectionListener(feed);
47
+ case FeedType.Union:
48
+ return this._getUnionListener(feed);
49
+ default:
50
+ throw new Error(`Unable to convert feed of type ${type} to listener`);
51
+ }
52
+ });
53
+ listen = () => {
54
+ const promise = this.getListener().then(call);
55
+ return () => promise.then(call);
56
+ };
57
+ async _getRequestsLoader(requests) {
58
+ const seen = new Set();
59
+ const exhausted = new Set();
60
+ const loaders = await Promise.all(requests.map(request => this._getRequestLoader(request, {
61
+ onExhausted: () => exhausted.add(request),
62
+ onEvent: e => {
63
+ if (!seen.has(e.id)) {
64
+ this.options.onEvent?.(e);
65
+ seen.add(e.id);
66
+ }
67
+ },
68
+ })));
69
+ return async (limit) => {
70
+ await Promise.all(loaders.map(loader => loader(limit)));
71
+ if (exhausted.size === requests.length) {
72
+ this.options?.onExhausted?.();
73
+ }
74
+ };
75
+ }
76
+ async _getRequestLoader({ relays, filters }, { onEvent, onExhausted }) {
77
+ // Make sure we have some kind of filter to send if we've been given an empty one, as happens with relay feeds
78
+ if (!filters || filters.length === 0) {
79
+ filters = [{}];
80
+ }
81
+ const untils = filters.flatMap((filter) => (filter.until ? [filter.until] : []));
82
+ const sinces = filters.flatMap((filter) => (filter.since ? [filter.since] : []));
83
+ const maxUntil = untils.length === filters.length ? max(untils) : now();
84
+ const minSince = sinces.length === filters.length ? min(sinces) : EPOCH;
85
+ const initialDelta = guessFilterDelta(filters);
86
+ let promise;
87
+ let delta = initialDelta;
88
+ let since = this.options.useWindowing ? maxUntil - delta : 0;
89
+ let until = maxUntil;
90
+ let exhausted = false;
91
+ return async (limit) => {
92
+ if (promise || exhausted) {
93
+ return promise;
94
+ }
95
+ promise = defer();
96
+ const requestFilters = filters
97
+ // Remove filters that don't fit our window
98
+ .filter((filter) => {
99
+ const filterSince = filter.since || minSince;
100
+ const filterUntil = filter.until || maxUntil;
101
+ return filterSince < until && filterUntil > since;
102
+ })
103
+ // Modify the filters to define our window
104
+ .map((filter) => ({ since, until, limit, ...filter }));
105
+ if (requestFilters.length === 0) {
106
+ return onExhausted?.();
107
+ }
108
+ let count = 0;
109
+ await requestPage(omitVals([undefined], {
110
+ relays,
111
+ router: this.options.router,
112
+ autoClose: true,
113
+ filters: trimFilters(requestFilters),
114
+ signal: this.options.signal,
115
+ tracker: this.options.tracker,
116
+ context: this.options.context,
117
+ onEvent: (event) => {
118
+ count += 1;
119
+ until = Math.min(until, event.created_at - 1);
120
+ onEvent?.(event);
121
+ },
122
+ }));
123
+ if (this.options.useWindowing) {
124
+ if (since === minSince) {
125
+ exhausted = true;
126
+ onExhausted?.();
127
+ }
128
+ // Relays can't be relied upon to return events in descending order, do exponential
129
+ // windowing to ensure we get the most recent stuff on first load, but eventually find it all
130
+ if (count < limit) {
131
+ delta = delta * Math.round(100 * (2 - inc(count) / inc(limit)));
132
+ until = since;
133
+ }
134
+ since = Math.max(minSince, until - delta);
135
+ }
136
+ else if (count === 0) {
137
+ exhausted = true;
138
+ onExhausted?.();
139
+ }
140
+ promise.resolve();
141
+ promise = undefined;
142
+ };
143
+ }
144
+ _getDifferenceLoader(feeds) {
145
+ const exhausted = new Set();
146
+ const skip = new Set();
147
+ const events = [];
148
+ const seen = new Set();
149
+ const controllers = feeds.map((thisFeed, i) => new FeedController({
150
+ ...this.options,
151
+ feed: thisFeed,
152
+ onExhausted: () => exhausted.add(i),
153
+ onEvent: (event) => {
154
+ if (i === 0) {
155
+ events.push(event);
156
+ }
157
+ else {
158
+ skip.add(event.id);
159
+ }
160
+ },
161
+ }));
162
+ return async (limit) => {
163
+ await Promise.all(controllers.map(async (controller, i) => {
164
+ if (exhausted.has(i)) {
165
+ return;
166
+ }
167
+ await controller.load(limit);
168
+ }));
169
+ for (const event of events.splice(0)) {
170
+ if (!skip.has(event.id) && !seen.has(event.id)) {
171
+ this.options.onEvent?.(event);
172
+ seen.add(event.id);
173
+ }
174
+ }
175
+ if (exhausted.size === controllers.length) {
176
+ this.options.onExhausted?.();
177
+ }
178
+ };
179
+ }
180
+ _getIntersectionLoader(feeds) {
181
+ const exhausted = new Set();
182
+ const counts = new Map();
183
+ const events = [];
184
+ const seen = new Set();
185
+ const controllers = feeds.map((thisFeed, i) => new FeedController({
186
+ ...this.options,
187
+ feed: thisFeed,
188
+ onExhausted: () => exhausted.add(i),
189
+ onEvent: (event) => {
190
+ events.push(event);
191
+ counts.set(event.id, inc(counts.get(event.id)));
192
+ },
193
+ }));
194
+ return async (limit) => {
195
+ await Promise.all(controllers.map(async (controller, i) => {
196
+ if (exhausted.has(i)) {
197
+ return;
198
+ }
199
+ await controller.load(limit);
200
+ }));
201
+ for (const event of events.splice(0)) {
202
+ if (counts.get(event.id) === controllers.length && !seen.has(event.id)) {
203
+ this.options.onEvent?.(event);
204
+ seen.add(event.id);
205
+ }
206
+ }
207
+ if (exhausted.size === controllers.length) {
208
+ this.options.onExhausted?.();
209
+ }
210
+ };
211
+ }
212
+ _getUnionLoader(feeds) {
213
+ const exhausted = new Set();
214
+ const seen = new Set();
215
+ const controllers = feeds.map((thisFeed, i) => new FeedController({
216
+ ...this.options,
217
+ feed: thisFeed,
218
+ onExhausted: () => exhausted.add(i),
219
+ onEvent: (event) => {
220
+ if (!seen.has(event.id)) {
221
+ this.options.onEvent?.(event);
222
+ seen.add(event.id);
223
+ }
224
+ },
225
+ }));
226
+ return async (limit) => {
227
+ await Promise.all(controllers.map(async (controller, i) => {
228
+ if (exhausted.has(i)) {
229
+ return;
230
+ }
231
+ await controller.load(limit);
232
+ }));
233
+ if (exhausted.size === controllers.length) {
234
+ this.options.onExhausted?.();
235
+ }
236
+ };
237
+ }
238
+ async _getRequestsListener(requests) {
239
+ const seen = new Set();
240
+ const listeners = await Promise.all(requests.map(request => this._getRequestListener(request, {
241
+ onEvent: e => {
242
+ if (!seen.has(e.id)) {
243
+ this.options.onEvent?.(e);
244
+ seen.add(e.id);
245
+ }
246
+ },
247
+ })));
248
+ return () => {
249
+ const unsubscribers = listeners.map(call);
250
+ return () => unsubscribers.forEach(call);
251
+ };
252
+ }
253
+ async _getRequestListener({ relays, filters }, { onEvent }) {
254
+ // Make sure we have some kind of filter to send if we've been given an empty one, as happens with relay feeds
255
+ if (!filters || filters.length === 0) {
256
+ filters = [{}];
257
+ }
258
+ return () => {
259
+ const controller = new AbortController();
260
+ const signal = AbortSignal.any(removeUndefined([controller.signal, this.options.signal]));
261
+ const requestFilters = filters.map((filter) => ({ ...filter, limit: 0 }));
262
+ requestPage(omitVals([undefined], {
263
+ relays,
264
+ router: this.options.router,
265
+ signal,
266
+ onEvent: (event) => onEvent?.(event),
267
+ filters: trimFilters(requestFilters),
268
+ tracker: this.options.tracker,
269
+ context: this.options.context,
270
+ }));
271
+ return () => controller.abort();
272
+ };
273
+ }
274
+ _getDifferenceListener(feeds) {
275
+ const skip = new Set();
276
+ const controllers = feeds.map((thisFeed, i) => new FeedController({
277
+ ...this.options,
278
+ feed: thisFeed,
279
+ onEvent: (event) => {
280
+ if (i === 0 && !skip.has(event.id)) {
281
+ this.options.onEvent?.(event);
282
+ }
283
+ else {
284
+ skip.add(event.id);
285
+ }
286
+ },
287
+ }));
288
+ return () => {
289
+ const unsubscribers = controllers.map(controller => controller.listen());
290
+ return () => unsubscribers.forEach(call);
291
+ };
292
+ }
293
+ _getIntersectionListener(feeds) {
294
+ const counts = new Map();
295
+ const controllers = feeds.map((thisFeed, i) => new FeedController({
296
+ ...this.options,
297
+ feed: thisFeed,
298
+ onEvent: (event) => {
299
+ const count = inc(counts.get(event.id));
300
+ if (count === feeds.length) {
301
+ this.options.onEvent?.(event);
302
+ }
303
+ counts.set(event.id, count);
304
+ },
305
+ }));
306
+ return () => {
307
+ const unsubscribers = controllers.map(controller => controller.listen());
308
+ return () => unsubscribers.forEach(call);
309
+ };
310
+ }
311
+ _getUnionListener(feeds) {
312
+ const seen = new Set();
313
+ const controllers = feeds.map((thisFeed, i) => new FeedController({
314
+ ...this.options,
315
+ feed: thisFeed,
316
+ onEvent: (event) => {
317
+ if (!seen.has(event.id)) {
318
+ this.options.onEvent?.(event);
319
+ seen.add(event.id);
320
+ }
321
+ },
322
+ }));
323
+ return () => {
324
+ const unsubscribers = controllers.map(controller => controller.listen());
325
+ return () => unsubscribers.forEach(call);
326
+ };
327
+ }
328
+ }
329
+ //# sourceMappingURL=controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../../feeds/src/controller.ts"],"names":[],"mappings":"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"}