@welshman/app 0.8.16 → 0.9.0-pre2

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 (651) hide show
  1. package/dist/app/src/app.d.ts +47 -0
  2. package/dist/app/src/app.d.ts.map +1 -0
  3. package/dist/app/src/app.js +56 -0
  4. package/dist/app/src/app.js.map +1 -0
  5. package/dist/app/src/command.d.ts +26 -0
  6. package/dist/app/src/command.d.ts.map +1 -0
  7. package/dist/app/src/command.js +38 -0
  8. package/dist/app/src/command.js.map +1 -0
  9. package/dist/app/src/createApp.d.ts +12 -0
  10. package/dist/app/src/createApp.d.ts.map +1 -0
  11. package/dist/app/src/createApp.js +12 -0
  12. package/dist/app/src/createApp.js.map +1 -0
  13. package/dist/app/src/index.d.ts +39 -27
  14. package/dist/app/src/index.d.ts.map +1 -1
  15. package/dist/app/src/index.js +39 -92
  16. package/dist/app/src/index.js.map +1 -1
  17. package/dist/app/src/plugins/base.d.ts +133 -0
  18. package/dist/app/src/plugins/base.d.ts.map +1 -0
  19. package/dist/app/src/plugins/base.js +186 -0
  20. package/dist/app/src/plugins/base.js.map +1 -0
  21. package/dist/app/src/plugins/blockedRelayLists.d.ts +19 -0
  22. package/dist/app/src/plugins/blockedRelayLists.d.ts.map +1 -0
  23. package/dist/app/src/plugins/blockedRelayLists.js +34 -0
  24. package/dist/app/src/plugins/blockedRelayLists.js.map +1 -0
  25. package/dist/app/src/plugins/blossomServerLists.d.ts +18 -0
  26. package/dist/app/src/plugins/blossomServerLists.d.ts.map +1 -0
  27. package/dist/app/src/plugins/blossomServerLists.js +33 -0
  28. package/dist/app/src/plugins/blossomServerLists.js.map +1 -0
  29. package/dist/app/src/plugins/deletes.d.ts +14 -0
  30. package/dist/app/src/plugins/deletes.d.ts.map +1 -0
  31. package/dist/app/src/plugins/deletes.js +25 -0
  32. package/dist/app/src/plugins/deletes.js.map +1 -0
  33. package/dist/app/src/plugins/domain.d.ts +16 -0
  34. package/dist/app/src/plugins/domain.d.ts.map +1 -0
  35. package/dist/app/src/plugins/domain.js +37 -0
  36. package/dist/app/src/plugins/domain.js.map +1 -0
  37. package/dist/app/src/plugins/feedLists.d.ts +18 -0
  38. package/dist/app/src/plugins/feedLists.d.ts.map +1 -0
  39. package/dist/app/src/plugins/feedLists.js +33 -0
  40. package/dist/app/src/plugins/feedLists.js.map +1 -0
  41. package/dist/app/src/plugins/feeds.d.ts +32 -0
  42. package/dist/app/src/plugins/feeds.d.ts.map +1 -0
  43. package/dist/app/src/plugins/feeds.js +88 -0
  44. package/dist/app/src/plugins/feeds.js.map +1 -0
  45. package/dist/app/src/plugins/followLists.d.ts +15 -0
  46. package/dist/app/src/plugins/followLists.d.ts.map +1 -0
  47. package/dist/app/src/plugins/followLists.js +31 -0
  48. package/dist/app/src/plugins/followLists.js.map +1 -0
  49. package/dist/app/src/plugins/handles.d.ts +18 -0
  50. package/dist/app/src/plugins/handles.d.ts.map +1 -0
  51. package/dist/app/src/plugins/handles.js +61 -0
  52. package/dist/app/src/plugins/handles.js.map +1 -0
  53. package/dist/app/src/plugins/logger.d.ts +26 -0
  54. package/dist/app/src/plugins/logger.d.ts.map +1 -0
  55. package/dist/app/src/plugins/logger.js +19 -0
  56. package/dist/app/src/plugins/logger.js.map +1 -0
  57. package/dist/app/src/plugins/messagingRelayLists.d.ts +19 -0
  58. package/dist/app/src/plugins/messagingRelayLists.d.ts.map +1 -0
  59. package/dist/app/src/plugins/messagingRelayLists.js +36 -0
  60. package/dist/app/src/plugins/messagingRelayLists.js.map +1 -0
  61. package/dist/app/src/plugins/muteLists.d.ts +19 -0
  62. package/dist/app/src/plugins/muteLists.d.ts.map +1 -0
  63. package/dist/app/src/plugins/muteLists.js +38 -0
  64. package/dist/app/src/plugins/muteLists.js.map +1 -0
  65. package/dist/app/src/plugins/network.d.ts +18 -0
  66. package/dist/app/src/plugins/network.d.ts.map +1 -0
  67. package/dist/app/src/plugins/network.js +35 -0
  68. package/dist/app/src/plugins/network.js.map +1 -0
  69. package/dist/app/src/plugins/pinboards.d.ts +39 -0
  70. package/dist/app/src/plugins/pinboards.d.ts.map +1 -0
  71. package/dist/app/src/plugins/pinboards.js +94 -0
  72. package/dist/app/src/plugins/pinboards.js.map +1 -0
  73. package/dist/app/src/plugins/pins.d.ts +15 -0
  74. package/dist/app/src/plugins/pins.d.ts.map +1 -0
  75. package/dist/app/src/plugins/pins.js +31 -0
  76. package/dist/app/src/plugins/pins.js.map +1 -0
  77. package/dist/app/src/plugins/plaintext.d.ts +11 -0
  78. package/dist/app/src/plugins/plaintext.d.ts.map +1 -0
  79. package/dist/app/src/plugins/plaintext.js +18 -0
  80. package/dist/app/src/plugins/plaintext.js.map +1 -0
  81. package/dist/app/src/plugins/profiles.d.ts +18 -0
  82. package/dist/app/src/plugins/profiles.d.ts.map +1 -0
  83. package/dist/app/src/plugins/profiles.js +78 -0
  84. package/dist/app/src/plugins/profiles.js.map +1 -0
  85. package/dist/app/src/plugins/reactions.d.ts +15 -0
  86. package/dist/app/src/plugins/reactions.d.ts.map +1 -0
  87. package/dist/app/src/plugins/reactions.js +26 -0
  88. package/dist/app/src/plugins/reactions.js.map +1 -0
  89. package/dist/app/src/plugins/relayLists.d.ts +23 -0
  90. package/dist/app/src/plugins/relayLists.d.ts.map +1 -0
  91. package/dist/app/src/plugins/relayLists.js +46 -0
  92. package/dist/app/src/plugins/relayLists.js.map +1 -0
  93. package/dist/app/src/plugins/relayManagement.d.ts +12 -0
  94. package/dist/app/src/plugins/relayManagement.d.ts.map +1 -0
  95. package/dist/app/src/plugins/relayManagement.js +15 -0
  96. package/dist/app/src/plugins/relayManagement.js.map +1 -0
  97. package/dist/app/src/plugins/relayMembers.d.ts +12 -0
  98. package/dist/app/src/plugins/relayMembers.d.ts.map +1 -0
  99. package/dist/app/src/plugins/relayMembers.js +22 -0
  100. package/dist/app/src/plugins/relayMembers.js.map +1 -0
  101. package/dist/app/src/plugins/relayRoles.d.ts +14 -0
  102. package/dist/app/src/plugins/relayRoles.d.ts.map +1 -0
  103. package/dist/app/src/plugins/relayRoles.js +33 -0
  104. package/dist/app/src/plugins/relayRoles.js.map +1 -0
  105. package/dist/app/src/plugins/relayStats.d.ts +39 -0
  106. package/dist/app/src/plugins/relayStats.d.ts.map +1 -0
  107. package/dist/app/src/plugins/relayStats.js +173 -0
  108. package/dist/app/src/plugins/relayStats.js.map +1 -0
  109. package/dist/app/src/plugins/relays.d.ts +34 -0
  110. package/dist/app/src/plugins/relays.d.ts.map +1 -0
  111. package/dist/app/src/plugins/relays.js +68 -0
  112. package/dist/app/src/plugins/relays.js.map +1 -0
  113. package/dist/app/src/plugins/roomLists.d.ts +22 -0
  114. package/dist/app/src/plugins/roomLists.d.ts.map +1 -0
  115. package/dist/app/src/plugins/roomLists.js +37 -0
  116. package/dist/app/src/plugins/roomLists.js.map +1 -0
  117. package/dist/app/src/plugins/rooms.d.ts +45 -0
  118. package/dist/app/src/plugins/rooms.d.ts.map +1 -0
  119. package/dist/app/src/plugins/rooms.js +82 -0
  120. package/dist/app/src/plugins/rooms.js.map +1 -0
  121. package/dist/app/src/plugins/router.d.ts +25 -0
  122. package/dist/app/src/plugins/router.d.ts.map +1 -0
  123. package/dist/app/src/plugins/router.js +95 -0
  124. package/dist/app/src/plugins/router.js.map +1 -0
  125. package/dist/app/src/plugins/searchRelayLists.d.ts +19 -0
  126. package/dist/app/src/plugins/searchRelayLists.d.ts.map +1 -0
  127. package/dist/app/src/plugins/searchRelayLists.js +34 -0
  128. package/dist/app/src/plugins/searchRelayLists.js.map +1 -0
  129. package/dist/app/src/plugins/sync.d.ts +20 -0
  130. package/dist/app/src/plugins/sync.d.ts.map +1 -0
  131. package/dist/app/src/plugins/sync.js +42 -0
  132. package/dist/app/src/plugins/sync.js.map +1 -0
  133. package/dist/app/src/plugins/thunk.d.ts +74 -0
  134. package/dist/app/src/plugins/thunk.d.ts.map +1 -0
  135. package/dist/app/src/{thunk.js → plugins/thunk.js} +155 -152
  136. package/dist/app/src/plugins/thunk.js.map +1 -0
  137. package/dist/app/src/plugins/topics.d.ts +19 -0
  138. package/dist/app/src/plugins/topics.d.ts.map +1 -0
  139. package/dist/app/src/plugins/topics.js +51 -0
  140. package/dist/app/src/plugins/topics.js.map +1 -0
  141. package/dist/app/src/plugins/wot.d.ts +28 -0
  142. package/dist/app/src/plugins/wot.d.ts.map +1 -0
  143. package/dist/app/src/plugins/wot.js +116 -0
  144. package/dist/app/src/plugins/wot.js.map +1 -0
  145. package/dist/app/src/plugins/wraps.d.ts +25 -0
  146. package/dist/app/src/plugins/wraps.d.ts.map +1 -0
  147. package/dist/app/src/plugins/wraps.js +59 -0
  148. package/dist/app/src/plugins/wraps.js.map +1 -0
  149. package/dist/app/src/plugins/zappers.d.ts +30 -0
  150. package/dist/app/src/plugins/zappers.d.ts.map +1 -0
  151. package/dist/app/src/plugins/zappers.js +119 -0
  152. package/dist/app/src/plugins/zappers.js.map +1 -0
  153. package/dist/app/src/policy.d.ts +51 -0
  154. package/dist/app/src/policy.d.ts.map +1 -0
  155. package/dist/app/src/policy.js +129 -0
  156. package/dist/app/src/policy.js.map +1 -0
  157. package/dist/app/src/session.d.ts +36 -103
  158. package/dist/app/src/session.d.ts.map +1 -1
  159. package/dist/app/src/session.js +42 -171
  160. package/dist/app/src/session.js.map +1 -1
  161. package/dist/app/src/user.d.ts +34 -33
  162. package/dist/app/src/user.d.ts.map +1 -1
  163. package/dist/app/src/user.js +51 -53
  164. package/dist/app/src/user.js.map +1 -1
  165. package/dist/domain/src/behaviors/Emoji.d.ts +18 -0
  166. package/dist/domain/src/behaviors/Emoji.d.ts.map +1 -0
  167. package/dist/domain/src/behaviors/Emoji.js +9 -0
  168. package/dist/domain/src/behaviors/Emoji.js.map +1 -0
  169. package/dist/domain/src/behaviors/ZapSplits.d.ts +36 -0
  170. package/dist/domain/src/behaviors/ZapSplits.d.ts.map +1 -0
  171. package/dist/domain/src/behaviors/ZapSplits.js +54 -0
  172. package/dist/domain/src/behaviors/ZapSplits.js.map +1 -0
  173. package/dist/domain/src/core/EventReader.d.ts +24 -0
  174. package/dist/domain/src/core/EventReader.d.ts.map +1 -0
  175. package/dist/domain/src/core/EventReader.js +55 -0
  176. package/dist/domain/src/core/EventReader.js.map +1 -0
  177. package/dist/domain/src/core/EventWriter.d.ts +99 -0
  178. package/dist/domain/src/core/EventWriter.d.ts.map +1 -0
  179. package/dist/domain/src/core/EventWriter.js +233 -0
  180. package/dist/domain/src/core/EventWriter.js.map +1 -0
  181. package/dist/domain/src/core/Kind.d.ts +39 -0
  182. package/dist/domain/src/core/Kind.d.ts.map +1 -0
  183. package/dist/domain/src/core/Kind.js +43 -0
  184. package/dist/domain/src/core/Kind.js.map +1 -0
  185. package/dist/domain/src/core/ListReader.d.ts +9 -0
  186. package/dist/domain/src/core/ListReader.d.ts.map +1 -0
  187. package/dist/domain/src/core/ListReader.js +32 -0
  188. package/dist/domain/src/core/ListReader.js.map +1 -0
  189. package/dist/domain/src/core/ListWriter.d.ts +20 -0
  190. package/dist/domain/src/core/ListWriter.d.ts.map +1 -0
  191. package/dist/domain/src/core/ListWriter.js +72 -0
  192. package/dist/domain/src/core/ListWriter.js.map +1 -0
  193. package/dist/domain/src/index.d.ts +63 -0
  194. package/dist/domain/src/index.d.ts.map +1 -0
  195. package/dist/domain/src/index.js +63 -0
  196. package/dist/domain/src/index.js.map +1 -0
  197. package/dist/domain/src/kinds/AppData.d.ts +22 -0
  198. package/dist/domain/src/kinds/AppData.d.ts.map +1 -0
  199. package/dist/domain/src/kinds/AppData.js +84 -0
  200. package/dist/domain/src/kinds/AppData.js.map +1 -0
  201. package/dist/domain/src/kinds/BlockedRelayList.d.ts +14 -0
  202. package/dist/domain/src/kinds/BlockedRelayList.d.ts.map +1 -0
  203. package/dist/domain/src/kinds/BlockedRelayList.js +31 -0
  204. package/dist/domain/src/kinds/BlockedRelayList.js.map +1 -0
  205. package/dist/domain/src/kinds/BlossomServerList.d.ts +14 -0
  206. package/dist/domain/src/kinds/BlossomServerList.d.ts.map +1 -0
  207. package/dist/domain/src/kinds/BlossomServerList.js +31 -0
  208. package/dist/domain/src/kinds/BlossomServerList.js.map +1 -0
  209. package/dist/domain/src/kinds/BookmarkList.d.ts +16 -0
  210. package/dist/domain/src/kinds/BookmarkList.d.ts.map +1 -0
  211. package/dist/domain/src/kinds/BookmarkList.js +37 -0
  212. package/dist/domain/src/kinds/BookmarkList.js.map +1 -0
  213. package/dist/domain/src/kinds/Classified.d.ts +26 -0
  214. package/dist/domain/src/kinds/Classified.d.ts.map +1 -0
  215. package/dist/domain/src/kinds/Classified.js +66 -0
  216. package/dist/domain/src/kinds/Classified.js.map +1 -0
  217. package/dist/domain/src/kinds/Comment.d.ts +33 -0
  218. package/dist/domain/src/kinds/Comment.d.ts.map +1 -0
  219. package/dist/domain/src/kinds/Comment.js +105 -0
  220. package/dist/domain/src/kinds/Comment.js.map +1 -0
  221. package/dist/domain/src/kinds/Delete.d.ts +18 -0
  222. package/dist/domain/src/kinds/Delete.d.ts.map +1 -0
  223. package/dist/domain/src/kinds/Delete.js +70 -0
  224. package/dist/domain/src/kinds/Delete.js.map +1 -0
  225. package/dist/domain/src/kinds/EmojiList.d.ts +12 -0
  226. package/dist/domain/src/kinds/EmojiList.d.ts.map +1 -0
  227. package/dist/domain/src/kinds/EmojiList.js +25 -0
  228. package/dist/domain/src/kinds/EmojiList.js.map +1 -0
  229. package/dist/domain/src/kinds/Feed.d.ts +16 -0
  230. package/dist/domain/src/kinds/Feed.d.ts.map +1 -0
  231. package/dist/domain/src/kinds/Feed.js +34 -0
  232. package/dist/domain/src/kinds/Feed.js.map +1 -0
  233. package/dist/domain/src/kinds/FeedList.d.ts +14 -0
  234. package/dist/domain/src/kinds/FeedList.d.ts.map +1 -0
  235. package/dist/domain/src/kinds/FeedList.js +31 -0
  236. package/dist/domain/src/kinds/FeedList.js.map +1 -0
  237. package/dist/domain/src/kinds/FollowList.d.ts +14 -0
  238. package/dist/domain/src/kinds/FollowList.d.ts.map +1 -0
  239. package/dist/domain/src/kinds/FollowList.js +31 -0
  240. package/dist/domain/src/kinds/FollowList.js.map +1 -0
  241. package/dist/domain/src/kinds/GroupList.d.ts +12 -0
  242. package/dist/domain/src/kinds/GroupList.d.ts.map +1 -0
  243. package/dist/domain/src/kinds/GroupList.js +25 -0
  244. package/dist/domain/src/kinds/GroupList.js.map +1 -0
  245. package/dist/domain/src/kinds/Handler.d.ts +39 -0
  246. package/dist/domain/src/kinds/Handler.d.ts.map +1 -0
  247. package/dist/domain/src/kinds/Handler.js +87 -0
  248. package/dist/domain/src/kinds/Handler.js.map +1 -0
  249. package/dist/domain/src/kinds/HandlerRecommendation.d.ts +14 -0
  250. package/dist/domain/src/kinds/HandlerRecommendation.d.ts.map +1 -0
  251. package/dist/domain/src/kinds/HandlerRecommendation.js +33 -0
  252. package/dist/domain/src/kinds/HandlerRecommendation.js.map +1 -0
  253. package/dist/domain/src/kinds/MessagingRelayList.d.ts +13 -0
  254. package/dist/domain/src/kinds/MessagingRelayList.d.ts.map +1 -0
  255. package/dist/domain/src/kinds/MessagingRelayList.js +28 -0
  256. package/dist/domain/src/kinds/MessagingRelayList.js.map +1 -0
  257. package/dist/domain/src/kinds/MuteList.d.ts +15 -0
  258. package/dist/domain/src/kinds/MuteList.d.ts.map +1 -0
  259. package/dist/domain/src/kinds/MuteList.js +34 -0
  260. package/dist/domain/src/kinds/MuteList.js.map +1 -0
  261. package/dist/domain/src/kinds/Note.d.ts +18 -0
  262. package/dist/domain/src/kinds/Note.d.ts.map +1 -0
  263. package/dist/domain/src/kinds/Note.js +106 -0
  264. package/dist/domain/src/kinds/Note.js.map +1 -0
  265. package/dist/domain/src/kinds/Pin.d.ts +36 -0
  266. package/dist/domain/src/kinds/Pin.d.ts.map +1 -0
  267. package/dist/domain/src/kinds/Pin.js +76 -0
  268. package/dist/domain/src/kinds/Pin.js.map +1 -0
  269. package/dist/domain/src/kinds/PinList.d.ts +14 -0
  270. package/dist/domain/src/kinds/PinList.d.ts.map +1 -0
  271. package/dist/domain/src/kinds/PinList.js +31 -0
  272. package/dist/domain/src/kinds/PinList.js.map +1 -0
  273. package/dist/domain/src/kinds/Pinboard.d.ts +20 -0
  274. package/dist/domain/src/kinds/Pinboard.d.ts.map +1 -0
  275. package/dist/domain/src/kinds/Pinboard.js +54 -0
  276. package/dist/domain/src/kinds/Pinboard.js.map +1 -0
  277. package/dist/domain/src/kinds/Poll.d.ts +36 -0
  278. package/dist/domain/src/kinds/Poll.d.ts.map +1 -0
  279. package/dist/domain/src/kinds/Poll.js +81 -0
  280. package/dist/domain/src/kinds/Poll.js.map +1 -0
  281. package/dist/domain/src/kinds/PollResponse.d.ts +14 -0
  282. package/dist/domain/src/kinds/PollResponse.d.ts.map +1 -0
  283. package/dist/domain/src/kinds/PollResponse.js +34 -0
  284. package/dist/domain/src/kinds/PollResponse.js.map +1 -0
  285. package/dist/domain/src/kinds/Profile.d.ts +33 -0
  286. package/dist/domain/src/kinds/Profile.d.ts.map +1 -0
  287. package/dist/domain/src/kinds/Profile.js +101 -0
  288. package/dist/domain/src/kinds/Profile.js.map +1 -0
  289. package/dist/domain/src/kinds/Reaction.d.ts +16 -0
  290. package/dist/domain/src/kinds/Reaction.d.ts.map +1 -0
  291. package/dist/domain/src/kinds/Reaction.js +55 -0
  292. package/dist/domain/src/kinds/Reaction.js.map +1 -0
  293. package/dist/domain/src/kinds/RelayAddMember.d.ts +12 -0
  294. package/dist/domain/src/kinds/RelayAddMember.d.ts.map +1 -0
  295. package/dist/domain/src/kinds/RelayAddMember.js +23 -0
  296. package/dist/domain/src/kinds/RelayAddMember.js.map +1 -0
  297. package/dist/domain/src/kinds/RelayInvite.d.ts +12 -0
  298. package/dist/domain/src/kinds/RelayInvite.d.ts.map +1 -0
  299. package/dist/domain/src/kinds/RelayInvite.js +23 -0
  300. package/dist/domain/src/kinds/RelayInvite.js.map +1 -0
  301. package/dist/domain/src/kinds/RelayJoin.d.ts +14 -0
  302. package/dist/domain/src/kinds/RelayJoin.d.ts.map +1 -0
  303. package/dist/domain/src/kinds/RelayJoin.js +29 -0
  304. package/dist/domain/src/kinds/RelayJoin.js.map +1 -0
  305. package/dist/domain/src/kinds/RelayLeave.d.ts +10 -0
  306. package/dist/domain/src/kinds/RelayLeave.d.ts.map +1 -0
  307. package/dist/domain/src/kinds/RelayLeave.js +16 -0
  308. package/dist/domain/src/kinds/RelayLeave.js.map +1 -0
  309. package/dist/domain/src/kinds/RelayList.d.ts +24 -0
  310. package/dist/domain/src/kinds/RelayList.d.ts.map +1 -0
  311. package/dist/domain/src/kinds/RelayList.js +98 -0
  312. package/dist/domain/src/kinds/RelayList.js.map +1 -0
  313. package/dist/domain/src/kinds/RelayMembers.d.ts +17 -0
  314. package/dist/domain/src/kinds/RelayMembers.d.ts.map +1 -0
  315. package/dist/domain/src/kinds/RelayMembers.js +38 -0
  316. package/dist/domain/src/kinds/RelayMembers.js.map +1 -0
  317. package/dist/domain/src/kinds/RelayRemoveMember.d.ts +12 -0
  318. package/dist/domain/src/kinds/RelayRemoveMember.d.ts.map +1 -0
  319. package/dist/domain/src/kinds/RelayRemoveMember.js +23 -0
  320. package/dist/domain/src/kinds/RelayRemoveMember.js.map +1 -0
  321. package/dist/domain/src/kinds/RelayRole.d.ts +18 -0
  322. package/dist/domain/src/kinds/RelayRole.d.ts.map +1 -0
  323. package/dist/domain/src/kinds/RelayRole.js +46 -0
  324. package/dist/domain/src/kinds/RelayRole.js.map +1 -0
  325. package/dist/domain/src/kinds/RelaySet.d.ts +19 -0
  326. package/dist/domain/src/kinds/RelaySet.d.ts.map +1 -0
  327. package/dist/domain/src/kinds/RelaySet.js +46 -0
  328. package/dist/domain/src/kinds/RelaySet.js.map +1 -0
  329. package/dist/domain/src/kinds/Report.d.ts +19 -0
  330. package/dist/domain/src/kinds/Report.d.ts.map +1 -0
  331. package/dist/domain/src/kinds/Report.js +63 -0
  332. package/dist/domain/src/kinds/Report.js.map +1 -0
  333. package/dist/domain/src/kinds/RoomAddMember.d.ts +12 -0
  334. package/dist/domain/src/kinds/RoomAddMember.d.ts.map +1 -0
  335. package/dist/domain/src/kinds/RoomAddMember.js +23 -0
  336. package/dist/domain/src/kinds/RoomAddMember.js.map +1 -0
  337. package/dist/domain/src/kinds/RoomAdmins.d.ts +14 -0
  338. package/dist/domain/src/kinds/RoomAdmins.d.ts.map +1 -0
  339. package/dist/domain/src/kinds/RoomAdmins.js +29 -0
  340. package/dist/domain/src/kinds/RoomAdmins.js.map +1 -0
  341. package/dist/domain/src/kinds/RoomCreate.d.ts +11 -0
  342. package/dist/domain/src/kinds/RoomCreate.d.ts.map +1 -0
  343. package/dist/domain/src/kinds/RoomCreate.js +22 -0
  344. package/dist/domain/src/kinds/RoomCreate.js.map +1 -0
  345. package/dist/domain/src/kinds/RoomCreatePermission.d.ts +15 -0
  346. package/dist/domain/src/kinds/RoomCreatePermission.d.ts.map +1 -0
  347. package/dist/domain/src/kinds/RoomCreatePermission.js +32 -0
  348. package/dist/domain/src/kinds/RoomCreatePermission.js.map +1 -0
  349. package/dist/domain/src/kinds/RoomDelete.d.ts +11 -0
  350. package/dist/domain/src/kinds/RoomDelete.d.ts.map +1 -0
  351. package/dist/domain/src/kinds/RoomDelete.js +22 -0
  352. package/dist/domain/src/kinds/RoomDelete.js.map +1 -0
  353. package/dist/domain/src/kinds/RoomEdit.d.ts +28 -0
  354. package/dist/domain/src/kinds/RoomEdit.d.ts.map +1 -0
  355. package/dist/domain/src/kinds/RoomEdit.js +81 -0
  356. package/dist/domain/src/kinds/RoomEdit.js.map +1 -0
  357. package/dist/domain/src/kinds/RoomJoin.d.ts +13 -0
  358. package/dist/domain/src/kinds/RoomJoin.d.ts.map +1 -0
  359. package/dist/domain/src/kinds/RoomJoin.js +29 -0
  360. package/dist/domain/src/kinds/RoomJoin.js.map +1 -0
  361. package/dist/domain/src/kinds/RoomLeave.d.ts +11 -0
  362. package/dist/domain/src/kinds/RoomLeave.d.ts.map +1 -0
  363. package/dist/domain/src/kinds/RoomLeave.js +22 -0
  364. package/dist/domain/src/kinds/RoomLeave.js.map +1 -0
  365. package/dist/domain/src/kinds/RoomList.d.ts +19 -0
  366. package/dist/domain/src/kinds/RoomList.d.ts.map +1 -0
  367. package/dist/domain/src/kinds/RoomList.js +72 -0
  368. package/dist/domain/src/kinds/RoomList.js.map +1 -0
  369. package/dist/domain/src/kinds/RoomMembers.d.ts +15 -0
  370. package/dist/domain/src/kinds/RoomMembers.d.ts.map +1 -0
  371. package/dist/domain/src/kinds/RoomMembers.js +32 -0
  372. package/dist/domain/src/kinds/RoomMembers.js.map +1 -0
  373. package/dist/domain/src/kinds/RoomMeta.d.ts +27 -0
  374. package/dist/domain/src/kinds/RoomMeta.d.ts.map +1 -0
  375. package/dist/domain/src/kinds/RoomMeta.js +74 -0
  376. package/dist/domain/src/kinds/RoomMeta.js.map +1 -0
  377. package/dist/domain/src/kinds/RoomRemoveMember.d.ts +14 -0
  378. package/dist/domain/src/kinds/RoomRemoveMember.d.ts.map +1 -0
  379. package/dist/domain/src/kinds/RoomRemoveMember.js +29 -0
  380. package/dist/domain/src/kinds/RoomRemoveMember.js.map +1 -0
  381. package/dist/domain/src/kinds/SearchRelayList.d.ts +14 -0
  382. package/dist/domain/src/kinds/SearchRelayList.d.ts.map +1 -0
  383. package/dist/domain/src/kinds/SearchRelayList.js +31 -0
  384. package/dist/domain/src/kinds/SearchRelayList.js.map +1 -0
  385. package/dist/domain/src/kinds/Thread.d.ts +11 -0
  386. package/dist/domain/src/kinds/Thread.d.ts.map +1 -0
  387. package/dist/domain/src/kinds/Thread.js +22 -0
  388. package/dist/domain/src/kinds/Thread.js.map +1 -0
  389. package/dist/domain/src/kinds/TimeEvent.d.ts +20 -0
  390. package/dist/domain/src/kinds/TimeEvent.d.ts.map +1 -0
  391. package/dist/domain/src/kinds/TimeEvent.js +59 -0
  392. package/dist/domain/src/kinds/TimeEvent.js.map +1 -0
  393. package/dist/domain/src/kinds/TopicList.d.ts +16 -0
  394. package/dist/domain/src/kinds/TopicList.d.ts.map +1 -0
  395. package/dist/domain/src/kinds/TopicList.js +37 -0
  396. package/dist/domain/src/kinds/TopicList.js.map +1 -0
  397. package/dist/domain/src/kinds/ZapGoal.d.ts +21 -0
  398. package/dist/domain/src/kinds/ZapGoal.d.ts.map +1 -0
  399. package/dist/domain/src/kinds/ZapGoal.js +56 -0
  400. package/dist/domain/src/kinds/ZapGoal.js.map +1 -0
  401. package/dist/domain/src/kinds/ZapReceipt.d.ts +25 -0
  402. package/dist/domain/src/kinds/ZapReceipt.d.ts.map +1 -0
  403. package/dist/domain/src/kinds/ZapReceipt.js +68 -0
  404. package/dist/domain/src/kinds/ZapReceipt.js.map +1 -0
  405. package/dist/domain/src/kinds/ZapRequest.d.ts +28 -0
  406. package/dist/domain/src/kinds/ZapRequest.d.ts.map +1 -0
  407. package/dist/domain/src/kinds/ZapRequest.js +72 -0
  408. package/dist/domain/src/kinds/ZapRequest.js.map +1 -0
  409. package/dist/domain/src/other/Relay.d.ts +49 -0
  410. package/dist/domain/src/other/Relay.d.ts.map +1 -0
  411. package/dist/domain/src/other/Relay.js +50 -0
  412. package/dist/domain/src/other/Relay.js.map +1 -0
  413. package/dist/domain/src/other/Zapper.d.ts +40 -0
  414. package/dist/domain/src/other/Zapper.d.ts.map +1 -0
  415. package/dist/domain/src/other/Zapper.js +67 -0
  416. package/dist/domain/src/other/Zapper.js.map +1 -0
  417. package/dist/feeds/src/compiler.d.ts +2 -0
  418. package/dist/feeds/src/compiler.d.ts.map +1 -1
  419. package/dist/feeds/src/compiler.js +3 -0
  420. package/dist/feeds/src/compiler.js.map +1 -1
  421. package/dist/feeds/src/controller.d.ts.map +1 -1
  422. package/dist/feeds/src/controller.js +2 -0
  423. package/dist/feeds/src/controller.js.map +1 -1
  424. package/dist/feeds/src/index.d.ts +1 -0
  425. package/dist/feeds/src/index.d.ts.map +1 -1
  426. package/dist/feeds/src/index.js +1 -0
  427. package/dist/feeds/src/index.js.map +1 -1
  428. package/dist/feeds/src/request.d.ts +5 -2
  429. package/dist/feeds/src/request.d.ts.map +1 -1
  430. package/dist/feeds/src/request.js +16 -16
  431. package/dist/feeds/src/request.js.map +1 -1
  432. package/dist/feeds/src/router.d.ts +10 -0
  433. package/dist/feeds/src/router.d.ts.map +1 -0
  434. package/dist/feeds/src/router.js +45 -0
  435. package/dist/feeds/src/router.js.map +1 -0
  436. package/dist/feeds/src/utils.js +2 -2
  437. package/dist/feeds/src/utils.js.map +1 -1
  438. package/dist/lib/src/Tools.d.ts +13 -0
  439. package/dist/lib/src/Tools.d.ts.map +1 -1
  440. package/dist/lib/src/Tools.js +30 -1
  441. package/dist/lib/src/Tools.js.map +1 -1
  442. package/dist/net/src/adapter.d.ts +2 -2
  443. package/dist/net/src/adapter.d.ts.map +1 -1
  444. package/dist/net/src/adapter.js +8 -4
  445. package/dist/net/src/adapter.js.map +1 -1
  446. package/dist/net/src/auth.d.ts +1 -1
  447. package/dist/net/src/auth.d.ts.map +1 -1
  448. package/dist/net/src/auth.js +3 -3
  449. package/dist/net/src/auth.js.map +1 -1
  450. package/dist/net/src/context.d.ts +4 -7
  451. package/dist/net/src/context.d.ts.map +1 -1
  452. package/dist/net/src/context.js +1 -9
  453. package/dist/net/src/context.js.map +1 -1
  454. package/dist/net/src/message.d.ts +1 -1
  455. package/dist/net/src/message.d.ts.map +1 -1
  456. package/dist/net/src/message.js +1 -1
  457. package/dist/net/src/message.js.map +1 -1
  458. package/dist/net/src/pool.d.ts +1 -8
  459. package/dist/net/src/pool.d.ts.map +1 -1
  460. package/dist/net/src/pool.js +2 -18
  461. package/dist/net/src/pool.js.map +1 -1
  462. package/dist/net/src/repository.d.ts +4 -2
  463. package/dist/net/src/repository.d.ts.map +1 -1
  464. package/dist/net/src/repository.js +55 -21
  465. package/dist/net/src/repository.js.map +1 -1
  466. package/dist/net/src/request.d.ts +2 -3
  467. package/dist/net/src/request.d.ts.map +1 -1
  468. package/dist/net/src/request.js +4 -7
  469. package/dist/net/src/request.js.map +1 -1
  470. package/dist/net/src/wrapManager.d.ts +1 -0
  471. package/dist/net/src/wrapManager.d.ts.map +1 -1
  472. package/dist/net/src/wrapManager.js +5 -1
  473. package/dist/net/src/wrapManager.js.map +1 -1
  474. package/dist/signer/src/signers/nip46.d.ts +2 -2
  475. package/dist/signer/src/signers/nip46.d.ts.map +1 -1
  476. package/dist/signer/src/signers/nip46.js +10 -5
  477. package/dist/signer/src/signers/nip46.js.map +1 -1
  478. package/dist/signer/src/util.d.ts +1 -1
  479. package/dist/signer/src/util.d.ts.map +1 -1
  480. package/dist/signer/src/util.js +18 -6
  481. package/dist/signer/src/util.js.map +1 -1
  482. package/dist/store/src/repository.d.ts +17 -0
  483. package/dist/store/src/repository.d.ts.map +1 -1
  484. package/dist/store/src/repository.js +144 -0
  485. package/dist/store/src/repository.js.map +1 -1
  486. package/dist/tsconfig.build.tsbuildinfo +1 -1
  487. package/dist/util/src/Events.d.ts +0 -12
  488. package/dist/util/src/Events.d.ts.map +1 -1
  489. package/dist/util/src/Events.js +3 -25
  490. package/dist/util/src/Events.js.map +1 -1
  491. package/dist/util/src/Handles.d.ts +15 -0
  492. package/dist/util/src/Handles.d.ts.map +1 -0
  493. package/dist/util/src/Handles.js +25 -0
  494. package/dist/util/src/Handles.js.map +1 -0
  495. package/dist/util/src/Kinds.d.ts +6 -1
  496. package/dist/util/src/Kinds.d.ts.map +1 -1
  497. package/dist/util/src/Kinds.js +8 -2
  498. package/dist/util/src/Kinds.js.map +1 -1
  499. package/dist/util/src/Lightning.d.ts +6 -0
  500. package/dist/util/src/Lightning.d.ts.map +1 -0
  501. package/dist/util/src/Lightning.js +59 -0
  502. package/dist/util/src/Lightning.js.map +1 -0
  503. package/dist/util/src/Nip86.d.ts +75 -25
  504. package/dist/util/src/Nip86.d.ts.map +1 -1
  505. package/dist/util/src/Nip86.js +169 -24
  506. package/dist/util/src/Nip86.js.map +1 -1
  507. package/dist/util/src/Pow.js +2 -2
  508. package/dist/util/src/Pow.js.map +1 -1
  509. package/dist/util/src/Pubkey.d.ts.map +1 -1
  510. package/dist/util/src/Pubkey.js +2 -1
  511. package/dist/util/src/Pubkey.js.map +1 -1
  512. package/dist/util/src/Relay.d.ts +0 -29
  513. package/dist/util/src/Relay.d.ts.map +1 -1
  514. package/dist/util/src/Relay.js +0 -10
  515. package/dist/util/src/Relay.js.map +1 -1
  516. package/dist/util/src/RelaySelection.d.ts +101 -0
  517. package/dist/util/src/RelaySelection.d.ts.map +1 -0
  518. package/dist/util/src/RelaySelection.js +98 -0
  519. package/dist/util/src/RelaySelection.js.map +1 -0
  520. package/dist/util/src/Tags.d.ts +16 -35
  521. package/dist/util/src/Tags.d.ts.map +1 -1
  522. package/dist/util/src/Tags.js +23 -74
  523. package/dist/util/src/Tags.js.map +1 -1
  524. package/dist/util/src/Topics.d.ts +2 -0
  525. package/dist/util/src/Topics.d.ts.map +1 -0
  526. package/dist/util/src/Topics.js +2 -0
  527. package/dist/util/src/Topics.js.map +1 -0
  528. package/dist/util/src/index.d.ts +3 -6
  529. package/dist/util/src/index.d.ts.map +1 -1
  530. package/dist/util/src/index.js +3 -6
  531. package/dist/util/src/index.js.map +1 -1
  532. package/package.json +16 -16
  533. package/dist/app/src/blockedRelayLists.d.ts +0 -9
  534. package/dist/app/src/blockedRelayLists.d.ts.map +0 -1
  535. package/dist/app/src/blockedRelayLists.js +0 -18
  536. package/dist/app/src/blockedRelayLists.js.map +0 -1
  537. package/dist/app/src/blossom.d.ts +0 -8
  538. package/dist/app/src/blossom.d.ts.map +0 -1
  539. package/dist/app/src/blossom.js +0 -17
  540. package/dist/app/src/blossom.js.map +0 -1
  541. package/dist/app/src/commands.d.ts +0 -43
  542. package/dist/app/src/commands.d.ts.map +0 -1
  543. package/dist/app/src/commands.js +0 -216
  544. package/dist/app/src/commands.js.map +0 -1
  545. package/dist/app/src/context.d.ts +0 -5
  546. package/dist/app/src/context.d.ts.map +0 -1
  547. package/dist/app/src/context.js +0 -2
  548. package/dist/app/src/context.js.map +0 -1
  549. package/dist/app/src/core.d.ts +0 -4
  550. package/dist/app/src/core.d.ts.map +0 -1
  551. package/dist/app/src/core.js +0 -4
  552. package/dist/app/src/core.js.map +0 -1
  553. package/dist/app/src/feeds.d.ts +0 -9
  554. package/dist/app/src/feeds.d.ts.map +0 -1
  555. package/dist/app/src/feeds.js +0 -35
  556. package/dist/app/src/feeds.js.map +0 -1
  557. package/dist/app/src/follows.d.ts +0 -9
  558. package/dist/app/src/follows.d.ts.map +0 -1
  559. package/dist/app/src/follows.js +0 -18
  560. package/dist/app/src/follows.js.map +0 -1
  561. package/dist/app/src/handles.d.ts +0 -30
  562. package/dist/app/src/handles.d.ts.map +0 -1
  563. package/dist/app/src/handles.js +0 -95
  564. package/dist/app/src/handles.js.map +0 -1
  565. package/dist/app/src/messagingRelayLists.d.ts +0 -9
  566. package/dist/app/src/messagingRelayLists.d.ts.map +0 -1
  567. package/dist/app/src/messagingRelayLists.js +0 -18
  568. package/dist/app/src/messagingRelayLists.js.map +0 -1
  569. package/dist/app/src/mutes.d.ts +0 -10
  570. package/dist/app/src/mutes.d.ts.map +0 -1
  571. package/dist/app/src/mutes.js +0 -32
  572. package/dist/app/src/mutes.js.map +0 -1
  573. package/dist/app/src/pins.d.ts +0 -9
  574. package/dist/app/src/pins.d.ts.map +0 -1
  575. package/dist/app/src/pins.js +0 -18
  576. package/dist/app/src/pins.js.map +0 -1
  577. package/dist/app/src/plaintext.d.ts +0 -6
  578. package/dist/app/src/plaintext.d.ts.map +0 -1
  579. package/dist/app/src/plaintext.js +0 -35
  580. package/dist/app/src/plaintext.js.map +0 -1
  581. package/dist/app/src/profiles.d.ts +0 -11
  582. package/dist/app/src/profiles.d.ts.map +0 -1
  583. package/dist/app/src/profiles.js +0 -23
  584. package/dist/app/src/profiles.js.map +0 -1
  585. package/dist/app/src/relayLists.d.ts +0 -13
  586. package/dist/app/src/relayLists.d.ts.map +0 -1
  587. package/dist/app/src/relayLists.js +0 -52
  588. package/dist/app/src/relayLists.js.map +0 -1
  589. package/dist/app/src/relayStats.d.ts +0 -34
  590. package/dist/app/src/relayStats.d.ts.map +0 -1
  591. package/dist/app/src/relayStats.js +0 -196
  592. package/dist/app/src/relayStats.js.map +0 -1
  593. package/dist/app/src/relays.d.ts +0 -18
  594. package/dist/app/src/relays.d.ts.map +0 -1
  595. package/dist/app/src/relays.js +0 -50
  596. package/dist/app/src/relays.js.map +0 -1
  597. package/dist/app/src/search.d.ts +0 -23
  598. package/dist/app/src/search.d.ts.map +0 -1
  599. package/dist/app/src/search.js +0 -76
  600. package/dist/app/src/search.js.map +0 -1
  601. package/dist/app/src/searchRelayLists.d.ts +0 -9
  602. package/dist/app/src/searchRelayLists.d.ts.map +0 -1
  603. package/dist/app/src/searchRelayLists.js +0 -18
  604. package/dist/app/src/searchRelayLists.js.map +0 -1
  605. package/dist/app/src/sync.d.ts +0 -9
  606. package/dist/app/src/sync.d.ts.map +0 -1
  607. package/dist/app/src/sync.js +0 -32
  608. package/dist/app/src/sync.js.map +0 -1
  609. package/dist/app/src/tags.d.ts +0 -10
  610. package/dist/app/src/tags.d.ts.map +0 -1
  611. package/dist/app/src/tags.js +0 -96
  612. package/dist/app/src/tags.js.map +0 -1
  613. package/dist/app/src/thunk.d.ts +0 -61
  614. package/dist/app/src/thunk.d.ts.map +0 -1
  615. package/dist/app/src/thunk.js.map +0 -1
  616. package/dist/app/src/topics.d.ts +0 -7
  617. package/dist/app/src/topics.d.ts.map +0 -1
  618. package/dist/app/src/topics.js +0 -38
  619. package/dist/app/src/topics.js.map +0 -1
  620. package/dist/app/src/wot.d.ts +0 -17
  621. package/dist/app/src/wot.d.ts.map +0 -1
  622. package/dist/app/src/wot.js +0 -72
  623. package/dist/app/src/wot.js.map +0 -1
  624. package/dist/app/src/zappers.d.ts +0 -21
  625. package/dist/app/src/zappers.d.ts.map +0 -1
  626. package/dist/app/src/zappers.js +0 -102
  627. package/dist/app/src/zappers.js.map +0 -1
  628. package/dist/util/src/Encryptable.d.ts +0 -34
  629. package/dist/util/src/Encryptable.d.ts.map +0 -1
  630. package/dist/util/src/Encryptable.js +0 -52
  631. package/dist/util/src/Encryptable.js.map +0 -1
  632. package/dist/util/src/Handler.d.ts +0 -17
  633. package/dist/util/src/Handler.d.ts.map +0 -1
  634. package/dist/util/src/Handler.js +0 -33
  635. package/dist/util/src/Handler.js.map +0 -1
  636. package/dist/util/src/List.d.ts +0 -42
  637. package/dist/util/src/List.d.ts.map +0 -1
  638. package/dist/util/src/List.js +0 -86
  639. package/dist/util/src/List.js.map +0 -1
  640. package/dist/util/src/Profile.d.ts +0 -26
  641. package/dist/util/src/Profile.d.ts.map +0 -1
  642. package/dist/util/src/Profile.js +0 -50
  643. package/dist/util/src/Profile.js.map +0 -1
  644. package/dist/util/src/Room.d.ts +0 -63
  645. package/dist/util/src/Room.d.ts.map +0 -1
  646. package/dist/util/src/Room.js +0 -94
  647. package/dist/util/src/Room.js.map +0 -1
  648. package/dist/util/src/Zaps.d.ts +0 -55
  649. package/dist/util/src/Zaps.d.ts.map +0 -1
  650. package/dist/util/src/Zaps.js +0 -135
  651. package/dist/util/src/Zaps.js.map +0 -1
@@ -0,0 +1,129 @@
1
+ import { on, noop, always } from "@welshman/lib";
2
+ import { WRAP, isDVMKind, isEphemeralKind, verifyEvent } from "@welshman/util";
3
+ import { SocketEvent, isRelayEvent, makeSocketPolicyAuth } from "@welshman/net";
4
+ import { RelayStats } from "./plugins/relayStats.js";
5
+ import { Wraps } from "./plugins/wraps.js";
6
+ import { BlockedRelayLists } from "./plugins/blockedRelayLists.js";
7
+ import { Plaintext } from "./plugins/plaintext.js";
8
+ import { Logger } from "./plugins/logger.js";
9
+ /**
10
+ * Builds an app policy that authenticates the app's sockets (NIP-42) with
11
+ * the user's signer. It appends an auth socket policy to the pool's
12
+ * `socketPolicies`, so every socket the pool creates answers AUTH challenges
13
+ * according to `shouldAuth`; the policy is spliced back out on cleanup. No-op
14
+ * when the app has no user.
15
+ *
16
+ * Use the `appPolicyAuthAlways` / `appPolicyAuthNever` presets below, or
17
+ * call this with a custom predicate.
18
+ */
19
+ export const makeAppPolicyAuth = (shouldAuth) => app => {
20
+ if (!app.user) {
21
+ return noop;
22
+ }
23
+ const policy = makeSocketPolicyAuth({
24
+ sign: app.user.signer.sign,
25
+ shouldAuth: socket => shouldAuth(socket, app),
26
+ });
27
+ app.pool.socketPolicies.push(policy);
28
+ return () => {
29
+ const index = app.pool.socketPolicies.indexOf(policy);
30
+ if (index !== -1) {
31
+ app.pool.socketPolicies.splice(index, 1);
32
+ }
33
+ };
34
+ };
35
+ export const appPolicyAuthNever = makeAppPolicyAuth(always(false));
36
+ export const appPolicyAuthAlways = makeAppPolicyAuth(always(true));
37
+ export const appPolicyAuthUnlessBlocked = makeAppPolicyAuth((socket, app) => {
38
+ if (!app.user) {
39
+ return false;
40
+ }
41
+ return !app.use(BlockedRelayLists).urls(app.user.pubkey).get().includes(socket.url);
42
+ });
43
+ /**
44
+ * Ingests every event received on any socket into the app's repository. The
45
+ * net layer doesn't do this for us, and it's how all the repository-backed
46
+ * collections (and gift-wrap unwrapping) get populated.
47
+ */
48
+ export const appPolicyIngest = app => app.pool.subscribe(socket => {
49
+ const onReceive = (message) => {
50
+ if (!isRelayEvent(message))
51
+ return;
52
+ const event = message[2];
53
+ if (isDVMKind(event.kind) || isEphemeralKind(event.kind))
54
+ return;
55
+ if (!verifyEvent(event))
56
+ return;
57
+ app.tracker.track(event.id, socket.url);
58
+ app.repository.publish(event);
59
+ };
60
+ socket.on(SocketEvent.Receive, onReceive);
61
+ return () => socket.off(SocketEvent.Receive, onReceive);
62
+ });
63
+ /**
64
+ * Listens to socket activity on the app's pool into the RelayStats store.
65
+ */
66
+ export const appPolicyRelayStats = app => {
67
+ return app.pool.subscribe(app.use(RelayStats).monitorSocket);
68
+ };
69
+ /**
70
+ * Watches the app's repository for gift wraps (existing and incoming) and
71
+ * feeds them to the unwrap queue.
72
+ */
73
+ export const appPolicyWraps = app => {
74
+ const wraps = app.use(Wraps);
75
+ for (const wrap of app.repository.query([{ kinds: [WRAP] }])) {
76
+ wraps.enqueue(wrap);
77
+ }
78
+ return on(app.repository, "update", ({ added }) => {
79
+ for (const event of added) {
80
+ if (event.kind === WRAP) {
81
+ wraps.enqueue(event);
82
+ }
83
+ }
84
+ });
85
+ };
86
+ /**
87
+ * Wraps user.signer in a WrappedSigner which checks the plaintext cache before
88
+ * attempting to decrypt something.
89
+ */
90
+ export const appPolicyCacheDecrypt = app => {
91
+ if (!app.user)
92
+ return noop;
93
+ return app.user.wrapSigner((method, thunk, args) => {
94
+ if (method === "nip04.decrypt" || method === "nip44.decrypt") {
95
+ const ciphertext = args[1];
96
+ return app.use(Plaintext).ensure(ciphertext, thunk);
97
+ }
98
+ return thunk();
99
+ });
100
+ };
101
+ /**
102
+ * Wraps user.signer in a WrappedSigner which logs sign requests to the app logger.
103
+ */
104
+ export const appPolicyLogSignerMethods = app => {
105
+ if (!app.user)
106
+ return noop;
107
+ const logger = app.use(Logger);
108
+ return app.user.wrapSigner(async (method, thunk) => {
109
+ logger.log("signer", { method, status: "pending" });
110
+ try {
111
+ const result = await thunk();
112
+ logger.log("signer", { method, status: "success" });
113
+ return result;
114
+ }
115
+ catch (error) {
116
+ logger.log("signer", { method, status: "failure", error });
117
+ throw error;
118
+ }
119
+ });
120
+ };
121
+ export const defaultAppPolicies = [
122
+ appPolicyIngest,
123
+ appPolicyRelayStats,
124
+ appPolicyWraps,
125
+ appPolicyCacheDecrypt,
126
+ appPolicyLogSignerMethods,
127
+ appPolicyAuthUnlessBlocked,
128
+ ];
129
+ //# sourceMappingURL=policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../../src/policy.ts"],"names":[],"mappings":"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"}
@@ -1,108 +1,41 @@
1
- import { ClientOptions } from "@pomade/core";
2
- import { TaskQueue } from "@welshman/lib";
3
- import { Wallet, StampedEvent, SignedEvent } from "@welshman/util";
4
- import { WrappedSigner, ISigner } from "@welshman/signer";
5
- import { WrapManager } from "@welshman/net";
6
- export declare enum SessionMethod {
7
- Nip01 = "nip01",
8
- Nip07 = "nip07",
9
- Nip46 = "nip46",
10
- Nip55 = "nip55",
11
- Pomade = "pomade",
12
- Pubkey = "pubkey",
13
- Anonymous = "anonymous"
14
- }
15
- export type SessionNip01 = {
16
- method: SessionMethod.Nip01;
17
- pubkey: string;
18
- secret: string;
19
- };
20
- export type SessionNip07 = {
21
- method: SessionMethod.Nip07;
22
- pubkey: string;
23
- };
24
- export type SessionNip46 = {
25
- method: SessionMethod.Nip46;
26
- pubkey: string;
1
+ import type { ClientOptions as PomadeClientOptions } from "@pomade/core";
2
+ import type { MaybeAsync } from "@welshman/lib";
3
+ import type { ISigner } from "@welshman/signer";
4
+ export type Session<M extends string = string, D = unknown> = {
5
+ method: M;
6
+ data: D;
7
+ };
8
+ export type SessionHandler<M extends string, D> = {
9
+ method: M;
10
+ getSigner: (data: D) => MaybeAsync<ISigner>;
11
+ };
12
+ /**
13
+ * Define a session handler. `M` and `D` are inferred from the arguments, so
14
+ * `getSigner` is type-checked against the data shape — and the same handler is
15
+ * used to build typed sessions (`toSession`) and to reconstruct signers.
16
+ */
17
+ export declare const defineSessionHandler: <M extends string, D>(handler: SessionHandler<M, D>) => SessionHandler<M, D>;
18
+ /** Build a typed, serializable session from a handler and its data. */
19
+ export declare const toSession: <M extends string, D>(handler: SessionHandler<M, D>, data: D) => Session<M, D>;
20
+ export declare const nip01: SessionHandler<"nip01", {
27
21
  secret: string;
28
- handler: {
29
- pubkey: string;
30
- relays: string[];
31
- };
32
- };
33
- export type SessionNip55 = {
34
- method: SessionMethod.Nip55;
22
+ }>;
23
+ export declare const nip07: SessionHandler<"nip07", Record<string, never>>;
24
+ export declare const nip46: SessionHandler<"nip46", {
25
+ clientSecret: string;
26
+ signerPubkey: string;
27
+ relays: string[];
28
+ }>;
29
+ export declare const nip55: SessionHandler<"nip55", {
35
30
  pubkey: string;
36
31
  signer: string;
37
- };
38
- export type SessionPomade = {
39
- method: SessionMethod.Pomade;
40
- pubkey: string;
41
- clientOptions: ClientOptions;
32
+ }>;
33
+ export declare const pomade: SessionHandler<"pomade", {
34
+ clientOptions: PomadeClientOptions;
42
35
  email: string;
43
- };
44
- export type SessionPubkey = {
45
- method: SessionMethod.Pubkey;
46
- pubkey: string;
47
- };
48
- export type SessionAnonymous = {
49
- method: SessionMethod.Anonymous;
50
- };
51
- export type SessionAnyMethod = SessionNip01 | SessionNip07 | SessionNip46 | SessionNip55 | SessionPomade | SessionPubkey | SessionAnonymous;
52
- export type Session = SessionAnyMethod & {
53
- wallet?: Wallet;
54
- } & Record<string, any>;
55
- export declare const pubkey: import("@welshman/store").WritableWithGetter<string | undefined>;
56
- export declare const sessions: import("@welshman/store").WritableWithGetter<Record<string, Session>>;
57
- export declare const session: import("@welshman/store").ReadableWithGetter<Session | undefined>;
58
- export declare const getSession: (pubkey: string) => Session;
59
- export declare const addSession: (session: Session) => void;
60
- export declare const putSession: (session: Session) => void;
61
- export declare const updateSession: (pubkey: string, f: (session: Session) => Session) => void;
62
- export declare const dropSession: (_pubkey: string) => void;
63
- export declare const clearSessions: () => void;
64
- export declare const makeNip01Session: (secret: string) => SessionNip01;
65
- export declare const makeNip07Session: (pubkey: string) => SessionNip07;
66
- export declare const makeNip46Session: (pubkey: string, clientSecret: string, signerPubkey: string, relays: string[]) => SessionNip46;
67
- export declare const makeNip55Session: (pubkey: string, signer: string) => SessionNip55;
68
- export declare const makePomadeSession: (pubkey: string, email: string, clientOptions: ClientOptions) => SessionPomade;
69
- export declare const makePubkeySession: (pubkey: string) => SessionPubkey;
70
- export declare const isNip01Session: (session?: Session) => session is SessionNip01;
71
- export declare const isNip07Session: (session?: Session) => session is SessionNip07;
72
- export declare const isNip46Session: (session?: Session) => session is SessionNip46;
73
- export declare const isNip55Session: (session?: Session) => session is SessionNip55;
74
- export declare const isPomadeSession: (session?: Session) => session is SessionPomade;
75
- export declare const isPubkeySession: (session?: Session) => session is SessionPubkey;
76
- export declare const loginWithNip01: (secret: string) => void;
77
- export declare const loginWithNip07: (pubkey: string) => void;
78
- export declare const loginWithNip46: (pubkey: string, clientSecret: string, signerPubkey: string, relays: string[]) => void;
79
- export declare const loginWithNip55: (pubkey: string, signer: string) => void;
80
- export declare const loginWithPomade: (pubkey: string, email: string, clientOptions: ClientOptions) => void;
81
- export declare const loginWithPubkey: (pubkey: string) => void;
82
- export declare const nip46Perms = "sign_event:22242,nip04_encrypt,nip04_decrypt,nip44_encrypt,nip44_decrypt";
83
- export type SignerLogEntry = {
84
- id: string;
85
- method: string;
86
- started_at: number;
87
- finished_at?: number;
88
- ok?: boolean;
89
- };
90
- export declare const signerLog: import("@welshman/store").WritableWithGetter<SignerLogEntry[]>;
91
- export declare const wrapSigner: (signer: ISigner) => WrappedSigner;
92
- export declare const getSigner: {
93
- (args_0: Session | undefined): WrappedSigner;
94
- cache: import("@welshman/lib").LRUCache<string, WrappedSigner | undefined>;
95
- getKey: (args: [Session | undefined]) => string;
96
- getValue: (args: [Session | undefined]) => WrappedSigner | undefined;
97
- pop: (args_0: Session | undefined) => WrappedSigner | undefined;
98
- };
99
- export declare const getSignerFromPubkey: (pubkey: string) => WrappedSigner | undefined;
100
- export declare const signer: import("@welshman/store").ReadableWithGetter<WrappedSigner>;
101
- export declare const sign: (event: StampedEvent) => Promise<SignedEvent>;
102
- export declare const nip44EncryptToSelf: (payload: string) => Promise<string>;
103
- export declare const wrapManager: WrapManager;
104
- export declare const shouldUnwrap: import("@welshman/store").WritableWithGetter<boolean>;
105
- export declare const failedUnwraps: Set<string>;
106
- export declare const wrapQueue: TaskQueue<SignedEvent>;
107
- export declare const unwrapAndStore: (wrap: SignedEvent) => Promise<void>;
36
+ }>;
37
+ export declare const sessionHandlers: Map<string, SessionHandler<string, any>>;
38
+ export declare const registerSessionHandler: (handler: SessionHandler<string, any>) => void;
39
+ export declare const unregisterSessionHandler: (handler: SessionHandler<string, any>) => void;
40
+ export declare const getSignerFromSession: (session: Session) => MaybeAsync<ISigner> | undefined;
108
41
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,aAAa,IAAI,mBAAmB,EAAC,MAAM,cAAc,CAAA;AACtE,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,eAAe,CAAA;AAE7C,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAA;AAI7C,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,OAAO,IAAI;IAC5D,MAAM,EAAE,CAAC,CAAA;IACT,IAAI,EAAE,CAAC,CAAA;CACR,CAAA;AAID,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,IAAI;IAChD,MAAM,EAAE,CAAC,CAAA;IACT,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,UAAU,CAAC,OAAO,CAAC,CAAA;CAC5C,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,SAAS,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,yBAAY,CAAA;AAEnG,uEAAuE;AACvE,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,EAC3C,SAAS,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,EAC7B,MAAM,CAAC,KACN,OAAO,CAAC,CAAC,EAAE,CAAC,CAAqC,CAAA;AAIpD,eAAO,MAAM,KAAK;YAEW,MAAM;EACjC,CAAA;AAEF,eAAO,MAAM,KAAK,gDAGhB,CAAA;AAEF,eAAO,MAAM,KAAK;kBAEiB,MAAM;kBAAgB,MAAM;YAAU,MAAM,EAAE;EAE/E,CAAA;AAEF,eAAO,MAAM,KAAK;YAEW,MAAM;YAAU,MAAM;EACjD,CAAA;AAEF,eAAO,MAAM,MAAM;mBAEiB,mBAAmB;WAAS,MAAM;EAEpE,CAAA;AAIF,eAAO,MAAM,eAAe,0CAAiD,CAAA;AAE7E,eAAO,MAAM,sBAAsB,GAAI,SAAS,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,SAE1E,CAAA;AAED,eAAO,MAAM,wBAAwB,GAAI,SAAS,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,SAE5E,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,SAAS,OAAO,KAAG,UAAU,CAAC,OAAO,CAAC,GAAG,SAChB,CAAA"}
@@ -1,174 +1,45 @@
1
- import { Client, PomadeSigner } from "@pomade/core";
2
- import { derived, writable } from "svelte/store";
3
- import { cached, randomId, append, omit, equals, assoc, TaskQueue } from "@welshman/lib";
4
- import { withGetter } from "@welshman/store";
5
- import { WRAP, getPubkeyTagValues, getPubkey, } from "@welshman/util";
6
- import { Nip59, WrappedSigner, Nip46Broker, Nip46Signer, Nip07Signer, Nip01Signer, Nip55Signer, } from "@welshman/signer";
7
- import { WrapManager } from "@welshman/net";
8
- import { tracker, repository } from "./core.js";
9
- export var SessionMethod;
10
- (function (SessionMethod) {
11
- SessionMethod["Nip01"] = "nip01";
12
- SessionMethod["Nip07"] = "nip07";
13
- SessionMethod["Nip46"] = "nip46";
14
- SessionMethod["Nip55"] = "nip55";
15
- SessionMethod["Pomade"] = "pomade";
16
- SessionMethod["Pubkey"] = "pubkey";
17
- SessionMethod["Anonymous"] = "anonymous";
18
- })(SessionMethod || (SessionMethod = {}));
19
- export const pubkey = withGetter(writable(undefined));
20
- export const sessions = withGetter(writable({}));
21
- export const session = withGetter(derived([pubkey, sessions], ([$pubkey, $sessions]) => ($pubkey ? $sessions[$pubkey] : undefined)));
22
- export const getSession = (pubkey) => sessions.get()[pubkey];
23
- export const addSession = (session) => {
24
- sessions.update(assoc(session.pubkey, session));
25
- pubkey.set(session.pubkey);
1
+ import { Client as PomadeClient, PomadeSigner } from "@pomade/core";
2
+ import { Nip46Broker, Nip46Signer, Nip07Signer, Nip01Signer, Nip55Signer } from "@welshman/signer";
3
+ /**
4
+ * Define a session handler. `M` and `D` are inferred from the arguments, so
5
+ * `getSigner` is type-checked against the data shape — and the same handler is
6
+ * used to build typed sessions (`toSession`) and to reconstruct signers.
7
+ */
8
+ export const defineSessionHandler = (handler) => handler;
9
+ /** Build a typed, serializable session from a handler and its data. */
10
+ export const toSession = (handler, data) => ({ method: handler.method, data });
11
+ // ── Built-in handlers ──
12
+ export const nip01 = defineSessionHandler({
13
+ method: "nip01",
14
+ getSigner: (data) => new Nip01Signer(data.secret),
15
+ });
16
+ export const nip07 = defineSessionHandler({
17
+ method: "nip07",
18
+ getSigner: (_data) => new Nip07Signer(),
19
+ });
20
+ export const nip46 = defineSessionHandler({
21
+ method: "nip46",
22
+ getSigner: (data) => new Nip46Signer(new Nip46Broker(data)),
23
+ });
24
+ export const nip55 = defineSessionHandler({
25
+ method: "nip55",
26
+ getSigner: (data) => new Nip55Signer(data.signer, data.pubkey),
27
+ });
28
+ export const pomade = defineSessionHandler({
29
+ method: "pomade",
30
+ getSigner: (data) => new PomadeSigner(new PomadeClient(data.clientOptions)),
31
+ });
32
+ // ── Registry: deserialize a stored session back into a signer ──
33
+ export const sessionHandlers = new Map();
34
+ export const registerSessionHandler = (handler) => {
35
+ sessionHandlers.set(handler.method, handler);
26
36
  };
27
- export const putSession = (session) => {
28
- if (!equals(getSession(session.pubkey), session)) {
29
- sessions.update(assoc(session.pubkey, session));
30
- }
31
- };
32
- export const updateSession = (pubkey, f) => putSession(f(getSession(pubkey)));
33
- export const dropSession = (_pubkey) => {
34
- getSigner.pop(getSession(_pubkey))?.cleanup?.();
35
- pubkey.update($pubkey => ($pubkey === _pubkey ? undefined : $pubkey));
36
- sessions.update($sessions => omit([_pubkey], $sessions));
37
- };
38
- export const clearSessions = () => {
39
- for (const pubkey of Object.keys(sessions.get())) {
40
- dropSession(pubkey);
41
- }
42
- };
43
- // Session factories
44
- export const makeNip01Session = (secret) => ({
45
- method: SessionMethod.Nip01,
46
- secret,
47
- pubkey: getPubkey(secret),
48
- });
49
- export const makeNip07Session = (pubkey) => ({
50
- method: SessionMethod.Nip07,
51
- pubkey,
52
- });
53
- export const makeNip46Session = (pubkey, clientSecret, signerPubkey, relays) => ({
54
- method: SessionMethod.Nip46,
55
- pubkey,
56
- secret: clientSecret,
57
- handler: { pubkey: signerPubkey, relays },
58
- });
59
- export const makeNip55Session = (pubkey, signer) => ({
60
- method: SessionMethod.Nip55,
61
- pubkey,
62
- signer,
63
- });
64
- export const makePomadeSession = (pubkey, email, clientOptions) => ({
65
- method: SessionMethod.Pomade,
66
- pubkey,
67
- clientOptions,
68
- email,
69
- });
70
- export const makePubkeySession = (pubkey) => ({
71
- method: SessionMethod.Pubkey,
72
- pubkey,
73
- });
74
- // Type guards
75
- export const isNip01Session = (session) => session?.method === SessionMethod.Nip01;
76
- export const isNip07Session = (session) => session?.method === SessionMethod.Nip07;
77
- export const isNip46Session = (session) => session?.method === SessionMethod.Nip46;
78
- export const isNip55Session = (session) => session?.method === SessionMethod.Nip55;
79
- export const isPomadeSession = (session) => session?.method === SessionMethod.Pomade;
80
- export const isPubkeySession = (session) => session?.method === SessionMethod.Pubkey;
81
- // Login utilities
82
- export const loginWithNip01 = (secret) => addSession(makeNip01Session(secret));
83
- export const loginWithNip07 = (pubkey) => addSession(makeNip07Session(pubkey));
84
- export const loginWithNip46 = (pubkey, clientSecret, signerPubkey, relays) => addSession(makeNip46Session(pubkey, clientSecret, signerPubkey, relays));
85
- export const loginWithNip55 = (pubkey, signer) => addSession(makeNip55Session(pubkey, signer));
86
- export const loginWithPomade = (pubkey, email, clientOptions) => addSession(makePomadeSession(pubkey, email, clientOptions));
87
- export const loginWithPubkey = (pubkey) => addSession(makePubkeySession(pubkey));
88
- // Other stuff
89
- export const nip46Perms = "sign_event:22242,nip04_encrypt,nip04_decrypt,nip44_encrypt,nip44_decrypt";
90
- export const signerLog = withGetter(writable([]));
91
- export const wrapSigner = (signer) => new WrappedSigner(signer, async (method, thunk) => {
92
- const id = randomId();
93
- signerLog.update(log => append({ id, method, started_at: Date.now() }, log));
94
- try {
95
- const result = await thunk();
96
- signerLog.update(log => log.map(x => (x.id === id ? { ...x, finished_at: Date.now(), ok: true } : x)));
97
- return result;
98
- }
99
- catch (error) {
100
- signerLog.update(log => log.map(x => (x.id === id ? { ...x, finished_at: Date.now(), ok: false } : x)));
101
- throw error;
102
- }
103
- });
104
- export const getSigner = cached({
105
- maxSize: 100,
106
- getKey: ([session]) => `${session?.method}:${session?.pubkey}`,
107
- getValue: ([session]) => {
108
- if (isNip07Session(session))
109
- return wrapSigner(new Nip07Signer());
110
- if (isNip01Session(session))
111
- return wrapSigner(new Nip01Signer(session.secret));
112
- if (isNip55Session(session))
113
- return wrapSigner(new Nip55Signer(session.signer, session.pubkey));
114
- if (isPomadeSession(session))
115
- return wrapSigner(new PomadeSigner(new Client(session.clientOptions)));
116
- if (isNip46Session(session)) {
117
- const { secret: clientSecret, handler: { relays, pubkey: signerPubkey }, } = session;
118
- const broker = new Nip46Broker({ clientSecret, signerPubkey, relays });
119
- const signer = new Nip46Signer(broker);
120
- return wrapSigner(signer);
121
- }
122
- },
123
- });
124
- export const getSignerFromPubkey = (pubkey) => {
125
- const session = getSession(pubkey);
126
- if (session) {
127
- return getSigner(session);
128
- }
129
- };
130
- export const signer = withGetter(derived(session, getSigner));
131
- export const sign = (event) => signer.get()?.sign(event);
132
- export const nip44EncryptToSelf = (payload) => {
133
- const $pubkey = pubkey.get();
134
- const $signer = signer.get();
135
- if (!$signer) {
136
- throw new Error("Unable to encrypt to self without valid signer");
137
- }
138
- return $signer.nip44.encrypt($pubkey, payload);
139
- };
140
- // Gift wrap utilities
141
- export const wrapManager = new WrapManager({ repository, tracker });
142
- export const shouldUnwrap = withGetter(writable(false));
143
- export const failedUnwraps = new Set();
144
- export const wrapQueue = new TaskQueue({
145
- batchSize: 5,
146
- batchDelay: 30,
147
- processItem: async (wrap) => {
148
- for (const recipient of getPubkeyTagValues(wrap.tags)) {
149
- const signer = getSignerFromPubkey(recipient);
150
- if (signer) {
151
- try {
152
- const rumor = await Nip59.fromSigner(signer).unwrap(wrap);
153
- wrapManager.add({ wrap, rumor, recipient });
154
- return rumor;
155
- }
156
- catch (e) {
157
- failedUnwraps.add(wrap.id);
158
- }
159
- }
160
- }
161
- },
162
- });
163
- export const unwrapAndStore = async (wrap) => {
164
- if (wrap.kind !== WRAP) {
165
- throw new Error("Tried to unwrap an invalid event");
166
- }
167
- if (!shouldUnwrap.get()) {
168
- throw new Error("Discarding wrapped event because `shouldUnwrap` is not enabled");
169
- }
170
- if (!failedUnwraps.has(wrap.id) && !wrapManager.getRumor(wrap.id)) {
171
- wrapQueue.push(wrap);
172
- }
37
+ export const unregisterSessionHandler = (handler) => {
38
+ sessionHandlers.delete(handler.method);
173
39
  };
40
+ export const getSignerFromSession = (session) => sessionHandlers.get(session.method)?.getSigner(session.data);
41
+ // ── Initialize default session handlers ──
42
+ for (const sessionHandler of [nip01, nip07, nip46, nip55, pomade]) {
43
+ registerSessionHandler(sessionHandler);
44
+ }
174
45
  //# sourceMappingURL=session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAiB,YAAY,EAAC,MAAM,cAAc,CAAA;AAChE,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAC,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAC,MAAM,eAAe,CAAA;AACtF,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAEL,IAAI,EACJ,kBAAkB,EAGlB,SAAS,GACV,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,KAAK,EACL,aAAa,EACb,WAAW,EACX,WAAW,EACX,WAAW,EACX,WAAW,EACX,WAAW,GAEZ,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAA;AACzC,OAAO,EAAC,OAAO,EAAE,UAAU,EAAC,MAAM,WAAW,CAAA;AAE7C,MAAM,CAAN,IAAY,aAQX;AARD,WAAY,aAAa;IACvB,gCAAe,CAAA;IACf,gCAAe,CAAA;IACf,gCAAe,CAAA;IACf,gCAAe,CAAA;IACf,kCAAiB,CAAA;IACjB,kCAAiB,CAAA;IACjB,wCAAuB,CAAA;AACzB,CAAC,EARW,aAAa,KAAb,aAAa,QAQxB;AAwDD,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAqB,SAAS,CAAC,CAAC,CAAA;AAEzE,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAA0B,EAAE,CAAC,CAAC,CAAA;AAEzE,MAAM,CAAC,MAAM,OAAO,GAAG,UAAU,CAC/B,OAAO,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAClG,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;AAEpE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAgB,EAAE,EAAE;IAC7C,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAC/C,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;AAC5B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAgB,EAAE,EAAE;IAC7C,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;QACjD,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACjD,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAc,EAAE,CAAgC,EAAE,EAAE,CAChF,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAEnC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAe,EAAE,EAAE;IAC7C,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAA;IAC/C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;IACrE,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,CAAA;AAC1D,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,EAAE;IAChC,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QACjD,WAAW,CAAC,MAAM,CAAC,CAAA;IACrB,CAAC;AACH,CAAC,CAAA;AAED,oBAAoB;AAEpB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAgB,EAAE,CAAC,CAAC;IACjE,MAAM,EAAE,aAAa,CAAC,KAAK;IAC3B,MAAM;IACN,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC;CAC1B,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAgB,EAAE,CAAC,CAAC;IACjE,MAAM,EAAE,aAAa,CAAC,KAAK;IAC3B,MAAM;CACP,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,MAAc,EACd,YAAoB,EACpB,YAAoB,EACpB,MAAgB,EACF,EAAE,CAAC,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC,KAAK;IAC3B,MAAM;IACN,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,EAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAC;CACxC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAE,MAAc,EAAgB,EAAE,CAAC,CAAC;IACjF,MAAM,EAAE,aAAa,CAAC,KAAK;IAC3B,MAAM;IACN,MAAM;CACP,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,MAAc,EACd,KAAa,EACb,aAA4B,EACb,EAAE,CAAC,CAAC;IACnB,MAAM,EAAE,aAAa,CAAC,MAAM;IAC5B,MAAM;IACN,aAAa;IACb,KAAK;CACN,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAc,EAAiB,EAAE,CAAC,CAAC;IACnE,MAAM,EAAE,aAAa,CAAC,MAAM;IAC5B,MAAM;CACP,CAAC,CAAA;AAEF,cAAc;AAEd,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAiB,EAA2B,EAAE,CAC3E,OAAO,EAAE,MAAM,KAAK,aAAa,CAAC,KAAK,CAAA;AAEzC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAiB,EAA2B,EAAE,CAC3E,OAAO,EAAE,MAAM,KAAK,aAAa,CAAC,KAAK,CAAA;AAEzC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAiB,EAA2B,EAAE,CAC3E,OAAO,EAAE,MAAM,KAAK,aAAa,CAAC,KAAK,CAAA;AAEzC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAiB,EAA2B,EAAE,CAC3E,OAAO,EAAE,MAAM,KAAK,aAAa,CAAC,KAAK,CAAA;AAEzC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAiB,EAA4B,EAAE,CAC7E,OAAO,EAAE,MAAM,KAAK,aAAa,CAAC,MAAM,CAAA;AAE1C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAiB,EAA4B,EAAE,CAC7E,OAAO,EAAE,MAAM,KAAK,aAAa,CAAC,MAAM,CAAA;AAE1C,kBAAkB;AAElB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAA;AAEtF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAA;AAEtF,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,MAAc,EACd,YAAoB,EACpB,YAAoB,EACpB,MAAgB,EAChB,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAA;AAE7E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAc,EAAE,MAAc,EAAE,EAAE,CAC/D,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AAE9C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAc,EAAE,KAAa,EAAE,aAA4B,EAAE,EAAE,CAC7F,UAAU,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAA;AAE7D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAA;AAExF,cAAc;AAEd,MAAM,CAAC,MAAM,UAAU,GAAG,0EAA0E,CAAA;AAUpG,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAmB,EAAE,CAAC,CAAC,CAAA;AAEnE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAe,EAAE,EAAE,CAC5C,IAAI,aAAa,CAAC,MAAM,EAAE,KAAK,EAAK,MAAc,EAAE,KAAuB,EAAE,EAAE;IAC7E,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAA;IAErB,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,EAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,EAAC,EAAE,GAAG,CAAC,CAAC,CAAA;IAE1E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,KAAK,EAAE,CAAA;QAE5B,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACrB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC5E,CAAA;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACrB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC7E,CAAA;QAED,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC;IAC9B,OAAO,EAAE,GAAG;IACZ,MAAM,EAAE,CAAC,CAAC,OAAO,CAAwB,EAAE,EAAE,CAAC,GAAG,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,EAAE;IACrF,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAwB,EAAE,EAAE;QAC7C,IAAI,cAAc,CAAC,OAAO,CAAC;YAAE,OAAO,UAAU,CAAC,IAAI,WAAW,EAAE,CAAC,CAAA;QACjE,IAAI,cAAc,CAAC,OAAO,CAAC;YAAE,OAAO,UAAU,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;QAC/E,IAAI,cAAc,CAAC,OAAO,CAAC;YAAE,OAAO,UAAU,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;QAC/F,IAAI,eAAe,CAAC,OAAO,CAAC;YAC1B,OAAO,UAAU,CAAC,IAAI,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;QACxE,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,MAAM,EACJ,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,EAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAC,GACxC,GAAG,OAAO,CAAA;YACX,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,EAAC,YAAY,EAAE,YAAY,EAAE,MAAM,EAAC,CAAC,CAAA;YACpE,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAA;YAEtC,OAAO,UAAU,CAAC,MAAM,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAAc,EAAE,EAAE;IACpD,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IAElC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC,OAAO,CAAC,CAAA;IAC3B,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAA;AAE7D,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAmB,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;AAEtE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAe,EAAE,EAAE;IACpD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,EAAE,CAAA;IAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,EAAE,CAAA;IAE5B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;IACnE,CAAC;IAED,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAQ,EAAE,OAAO,CAAC,CAAA;AACjD,CAAC,CAAA;AAED,sBAAsB;AAEtB,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,EAAC,UAAU,EAAE,OAAO,EAAC,CAAC,CAAA;AAEjE,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;AAEvD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAA;AAE9C,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC;IACrC,SAAS,EAAE,CAAC;IACZ,UAAU,EAAE,EAAE;IACd,WAAW,EAAE,KAAK,EAAE,IAAiB,EAAE,EAAE;QACvC,KAAK,MAAM,SAAS,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACtD,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAA;YAE7C,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;oBAEzD,WAAW,CAAC,GAAG,CAAC,EAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAC,CAAC,CAAA;oBAEzC,OAAO,KAAK,CAAA;gBACd,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,IAAiB,EAAE,EAAE;IACxD,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;IACrD,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAA;IACnF,CAAC;IAED,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAClE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,IAAI,YAAY,EAAE,YAAY,EAAC,MAAM,cAAc,CAAA;AAGjE,OAAO,EAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAA;AAiBhG;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAsB,OAA6B,EAAE,EAAE,CAAC,OAAO,CAAA;AAEnG,uEAAuE;AACvE,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,OAA6B,EAC7B,IAAO,EACQ,EAAE,CAAC,CAAC,EAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAA;AAEpD,0BAA0B;AAE1B,MAAM,CAAC,MAAM,KAAK,GAAG,oBAAoB,CAAC;IACxC,MAAM,EAAE,OAAO;IACf,SAAS,EAAE,CAAC,IAAsB,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;CACpE,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,oBAAoB,CAAC;IACxC,MAAM,EAAE,OAAO;IACf,SAAS,EAAE,CAAC,KAA4B,EAAE,EAAE,CAAC,IAAI,WAAW,EAAE;CAC/D,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,oBAAoB,CAAC;IACxC,MAAM,EAAE,OAAO;IACf,SAAS,EAAE,CAAC,IAAoE,EAAE,EAAE,CAClF,IAAI,WAAW,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;CACzC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,oBAAoB,CAAC;IACxC,MAAM,EAAE,OAAO;IACf,SAAS,EAAE,CAAC,IAAsC,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;CACjG,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,oBAAoB,CAAC;IACzC,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,CAAC,IAAyD,EAAE,EAAE,CACvE,IAAI,YAAY,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;CACzD,CAAC,CAAA;AAEF,kEAAkE;AAElE,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAuC,CAAA;AAE7E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,OAAoC,EAAE,EAAE;IAC7E,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAC9C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,OAAoC,EAAE,EAAE;IAC/E,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;AACxC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAAgB,EAAmC,EAAE,CACxF,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAE9D,4CAA4C;AAE5C,KAAK,MAAM,cAAc,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;IAClE,sBAAsB,CAAC,cAAc,CAAC,CAAA;AACxC,CAAC"}
@@ -1,34 +1,35 @@
1
- import { Readable } from "svelte/store";
2
- import { ItemsByKey } from "@welshman/store";
3
- export declare const makeUserData: <T>(itemsByKey: Readable<ItemsByKey<T>>, onDerive?: (key: string, ...args: any[]) => void) => Readable<T | undefined>;
4
- export declare const makeUserLoader: (loadItem: (key: string, ...args: any[]) => void) => (...args: any[]) => Promise<void>;
5
- export declare const userProfile: Readable<import("@welshman/util").PublishedProfile | undefined>;
6
- export declare const forceLoadUserProfile: (...args: any[]) => Promise<void>;
7
- export declare const loadUserProfile: (...args: any[]) => Promise<void>;
8
- export declare const userFollowList: Readable<import("@welshman/util").PublishedList | undefined>;
9
- export declare const forceLoadUserFollowList: (...args: any[]) => Promise<void>;
10
- export declare const loadUserFollowList: (...args: any[]) => Promise<void>;
11
- export declare const userMuteList: Readable<import("@welshman/util").PublishedList | undefined>;
12
- export declare const forceLoadUserMuteList: (...args: any[]) => Promise<void>;
13
- export declare const loadUserMuteList: (...args: any[]) => Promise<void>;
14
- export declare const userPinList: Readable<import("@welshman/util").PublishedList | undefined>;
15
- export declare const forceLoadUserPinList: (...args: any[]) => Promise<void>;
16
- export declare const loadUserPinList: (...args: any[]) => Promise<void>;
17
- export declare const userRelayList: Readable<import("@welshman/util").PublishedList | undefined>;
18
- export declare const forceLoadUserRelayList: (...args: any[]) => Promise<void>;
19
- export declare const loadUserRelayList: (...args: any[]) => Promise<void>;
20
- export declare const userMessagingRelayList: Readable<import("@welshman/util").PublishedList | undefined>;
21
- export declare const forceLoadUserMessagingRelayList: (...args: any[]) => Promise<void>;
22
- export declare const loadUserMessagingRelayList: (...args: any[]) => Promise<void>;
23
- export declare const userSearchRelayList: Readable<import("@welshman/util").PublishedList | undefined>;
24
- export declare const forceLoadUserSearchRelayList: (...args: any[]) => Promise<void>;
25
- export declare const loadUserSearchRelayList: (...args: any[]) => Promise<void>;
26
- export declare const userBlockedRelayList: Readable<import("@welshman/util").PublishedList | undefined>;
27
- export declare const forceLoadUserBlockedRelayList: (...args: any[]) => Promise<void>;
28
- export declare const loadUserBlockedRelayList: (...args: any[]) => Promise<void>;
29
- export declare const userBlossomServerList: Readable<import("@welshman/util").PublishedList | undefined>;
30
- export declare const forceLoadUserBlossomServerList: (...args: any[]) => Promise<void>;
31
- export declare const loadUserBlossomServerList: (...args: any[]) => Promise<void>;
32
- export declare const getUserWotScore: (tpk: string) => number;
33
- export declare const deriveUserWotScore: (tpk: string) => Readable<number>;
1
+ import type { StampedEvent } from "@welshman/util";
2
+ import type { ISigner, SignerMethodWrapper } from "@welshman/signer";
3
+ import type { Session } from "./session.js";
4
+ import type { IApp } from "./app.js";
5
+ /**
6
+ * A single identity: a pubkey plus the signer that proves it. An `App` is
7
+ * centered on (at most) one `User`, since the data a user can access depends
8
+ * entirely on who they are.
9
+ *
10
+ * `signer` is mutable so app policies can layer behavior onto it after
11
+ * construction via `wrapSigner` — e.g. `appPolicyCacheDecrypt` and
12
+ * `appPolicyLogSignerMethods`.
13
+ */
14
+ export declare class User {
15
+ readonly pubkey: string;
16
+ signer: ISigner;
17
+ constructor(pubkey: string, signer: ISigner);
18
+ static fromSigner(signer: ISigner): Promise<User>;
19
+ /**
20
+ * Reconstruct a signing user from a persisted session, using the registered
21
+ * session handlers to find the one for the session's method. The pubkey is
22
+ * derived from the signer. Returns undefined when no handler is registered
23
+ * for the session's method.
24
+ */
25
+ static fromSession(session: Session): Promise<User | undefined>;
26
+ /**
27
+ * Return the app's signed-in user, throwing if there isn't one — the entry
28
+ * point for actions that can only run as a user (publishing, signing).
29
+ */
30
+ static require(app: IApp): User;
31
+ sign: (event: StampedEvent) => Promise<import("@welshman/util").SignedEvent>;
32
+ nip44EncryptToSelf: (payload: string) => Promise<string>;
33
+ wrapSigner: (wrap: SignerMethodWrapper) => () => void;
34
+ }
34
35
  //# sourceMappingURL=user.d.ts.map