@welshman/app 0.1.0 → 0.1.2

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 (364) hide show
  1. package/LICENSE +21 -0
  2. package/dist/app/src/adapters.d.ts +33 -0
  3. package/dist/app/src/adapters.d.ts.map +1 -0
  4. package/dist/app/src/adapters.js +84 -0
  5. package/dist/app/src/adapters.js.map +1 -0
  6. package/dist/app/src/collection.d.ts +13 -0
  7. package/dist/app/src/collection.d.ts.map +1 -0
  8. package/{build → dist/app}/src/collection.js +16 -6
  9. package/dist/app/src/collection.js.map +1 -0
  10. package/{build → dist/app}/src/commands.d.ts +1 -0
  11. package/dist/app/src/commands.d.ts.map +1 -0
  12. package/{build → dist/app}/src/commands.js +13 -7
  13. package/dist/app/src/commands.js.map +1 -0
  14. package/{build → dist/app}/src/context.d.ts +1 -0
  15. package/dist/app/src/context.d.ts.map +1 -0
  16. package/dist/app/src/context.js.map +1 -0
  17. package/{build → dist/app}/src/core.d.ts +3 -1
  18. package/dist/app/src/core.d.ts.map +1 -0
  19. package/{build → dist/app}/src/core.js +2 -1
  20. package/dist/app/src/core.js.map +1 -0
  21. package/{build → dist/app}/src/feeds.d.ts +1 -0
  22. package/dist/app/src/feeds.d.ts.map +1 -0
  23. package/{build → dist/app}/src/feeds.js +3 -4
  24. package/dist/app/src/feeds.js.map +1 -0
  25. package/dist/app/src/follows.d.ts +4 -0
  26. package/dist/app/src/follows.d.ts.map +1 -0
  27. package/{build → dist/app}/src/follows.js +2 -9
  28. package/dist/app/src/follows.js.map +1 -0
  29. package/{build → dist/app}/src/freshness.d.ts +1 -0
  30. package/dist/app/src/freshness.d.ts.map +1 -0
  31. package/dist/app/src/freshness.js.map +1 -0
  32. package/{build → dist/app}/src/handles.d.ts +3 -3
  33. package/dist/app/src/handles.d.ts.map +1 -0
  34. package/{build → dist/app}/src/handles.js +2 -2
  35. package/dist/app/src/handles.js.map +1 -0
  36. package/{build → dist/app}/src/index.d.ts +2 -0
  37. package/dist/app/src/index.d.ts.map +1 -0
  38. package/{build → dist/app}/src/index.js +1 -0
  39. package/dist/app/src/index.js.map +1 -0
  40. package/dist/app/src/mutes.d.ts +4 -0
  41. package/dist/app/src/mutes.d.ts.map +1 -0
  42. package/{build → dist/app}/src/mutes.js +2 -9
  43. package/dist/app/src/mutes.js.map +1 -0
  44. package/dist/app/src/pins.d.ts +4 -0
  45. package/dist/app/src/pins.d.ts.map +1 -0
  46. package/{build → dist/app}/src/pins.js +2 -9
  47. package/dist/app/src/pins.js.map +1 -0
  48. package/{build → dist/app}/src/plaintext.d.ts +1 -0
  49. package/dist/app/src/plaintext.d.ts.map +1 -0
  50. package/dist/app/src/plaintext.js.map +1 -0
  51. package/{build → dist/app}/src/profiles.d.ts +2 -2
  52. package/dist/app/src/profiles.d.ts.map +1 -0
  53. package/{build → dist/app}/src/profiles.js +2 -10
  54. package/dist/app/src/profiles.js.map +1 -0
  55. package/dist/app/src/relaySelections.d.ts +10 -0
  56. package/dist/app/src/relaySelections.d.ts.map +1 -0
  57. package/{build → dist/app}/src/relaySelections.js +23 -11
  58. package/dist/app/src/relaySelections.js.map +1 -0
  59. package/{build → dist/app}/src/relays.d.ts +2 -1
  60. package/dist/app/src/relays.d.ts.map +1 -0
  61. package/{build → dist/app}/src/relays.js +10 -10
  62. package/dist/app/src/relays.js.map +1 -0
  63. package/{build → dist/app}/src/router.d.ts +8 -6
  64. package/dist/app/src/router.d.ts.map +1 -0
  65. package/{build → dist/app}/src/router.js +19 -18
  66. package/dist/app/src/router.js.map +1 -0
  67. package/{build → dist/app}/src/search.d.ts +1 -0
  68. package/dist/app/src/search.d.ts.map +1 -0
  69. package/dist/app/src/search.js.map +1 -0
  70. package/{build → dist/app}/src/session.d.ts +1 -0
  71. package/dist/app/src/session.d.ts.map +1 -0
  72. package/dist/app/src/session.js.map +1 -0
  73. package/dist/app/src/storage.d.ts +21 -0
  74. package/dist/app/src/storage.d.ts.map +1 -0
  75. package/dist/app/src/storage.js +75 -0
  76. package/dist/app/src/storage.js.map +1 -0
  77. package/{build → dist/app}/src/sync.d.ts +1 -0
  78. package/dist/app/src/sync.d.ts.map +1 -0
  79. package/dist/app/src/sync.js.map +1 -0
  80. package/{build → dist/app}/src/tags.d.ts +1 -0
  81. package/dist/app/src/tags.d.ts.map +1 -0
  82. package/{build → dist/app}/src/tags.js +10 -10
  83. package/dist/app/src/tags.js.map +1 -0
  84. package/{build → dist/app}/src/thunk.d.ts +2 -0
  85. package/dist/app/src/thunk.d.ts.map +1 -0
  86. package/{build → dist/app}/src/thunk.js +7 -1
  87. package/dist/app/src/thunk.js.map +1 -0
  88. package/{build → dist/app}/src/topics.d.ts +1 -0
  89. package/dist/app/src/topics.d.ts.map +1 -0
  90. package/dist/app/src/topics.js.map +1 -0
  91. package/{build → dist/app}/src/user.d.ts +1 -0
  92. package/dist/app/src/user.d.ts.map +1 -0
  93. package/dist/app/src/user.js.map +1 -0
  94. package/{build → dist/app}/src/util.d.ts +1 -0
  95. package/dist/app/src/util.d.ts.map +1 -0
  96. package/dist/app/src/util.js.map +1 -0
  97. package/{build → dist/app}/src/wot.d.ts +1 -0
  98. package/dist/app/src/wot.d.ts.map +1 -0
  99. package/dist/app/src/wot.js.map +1 -0
  100. package/dist/app/src/zappers.d.ts +6 -0
  101. package/dist/app/src/zappers.d.ts.map +1 -0
  102. package/{build → dist/app}/src/zappers.js +2 -2
  103. package/dist/app/src/zappers.js.map +1 -0
  104. package/dist/dvm/src/handler.d.ts +30 -0
  105. package/dist/dvm/src/handler.d.ts.map +1 -0
  106. package/dist/dvm/src/handler.js +82 -0
  107. package/dist/dvm/src/handler.js.map +1 -0
  108. package/dist/dvm/src/index.d.ts +3 -0
  109. package/dist/dvm/src/index.d.ts.map +1 -0
  110. package/dist/dvm/src/index.js +3 -0
  111. package/dist/dvm/src/index.js.map +1 -0
  112. package/dist/dvm/src/request.d.ts +23 -0
  113. package/dist/dvm/src/request.d.ts.map +1 -0
  114. package/dist/dvm/src/request.js +29 -0
  115. package/dist/dvm/src/request.js.map +1 -0
  116. package/dist/feeds/src/compiler.d.ts +38 -0
  117. package/dist/feeds/src/compiler.d.ts.map +1 -0
  118. package/dist/feeds/src/compiler.js +241 -0
  119. package/dist/feeds/src/compiler.js.map +1 -0
  120. package/dist/feeds/src/controller.d.ts +16 -0
  121. package/dist/feeds/src/controller.d.ts.map +1 -0
  122. package/dist/feeds/src/controller.js +213 -0
  123. package/dist/feeds/src/controller.js.map +1 -0
  124. package/dist/feeds/src/core.d.ts +98 -0
  125. package/dist/feeds/src/core.d.ts.map +1 -0
  126. package/dist/feeds/src/core.js +28 -0
  127. package/dist/feeds/src/core.js.map +1 -0
  128. package/dist/feeds/src/index.d.ts +5 -0
  129. package/dist/feeds/src/index.d.ts.map +1 -0
  130. package/dist/feeds/src/index.js +5 -0
  131. package/dist/feeds/src/index.js.map +1 -0
  132. package/dist/feeds/src/utils.d.ts +56 -0
  133. package/dist/feeds/src/utils.d.ts.map +1 -0
  134. package/dist/feeds/src/utils.js +151 -0
  135. package/dist/feeds/src/utils.js.map +1 -0
  136. package/dist/lib/src/Deferred.d.ts +21 -0
  137. package/dist/lib/src/Deferred.d.ts.map +1 -0
  138. package/dist/lib/src/Deferred.js +21 -0
  139. package/dist/lib/src/Deferred.js.map +1 -0
  140. package/dist/lib/src/Emitter.d.ts +14 -0
  141. package/dist/lib/src/Emitter.d.ts.map +1 -0
  142. package/dist/lib/src/Emitter.js +18 -0
  143. package/dist/lib/src/Emitter.js.map +1 -0
  144. package/dist/lib/src/LRUCache.d.ts +42 -0
  145. package/dist/lib/src/LRUCache.d.ts.map +1 -0
  146. package/dist/lib/src/LRUCache.js +62 -0
  147. package/dist/lib/src/LRUCache.js.map +1 -0
  148. package/dist/lib/src/TaskQueue.d.ts +18 -0
  149. package/dist/lib/src/TaskQueue.d.ts.map +1 -0
  150. package/dist/lib/src/TaskQueue.js +47 -0
  151. package/dist/lib/src/TaskQueue.js.map +1 -0
  152. package/dist/lib/src/Tools.d.ts +630 -0
  153. package/dist/lib/src/Tools.d.ts.map +1 -0
  154. package/dist/lib/src/Tools.js +1061 -0
  155. package/dist/lib/src/Tools.js.map +1 -0
  156. package/dist/lib/src/index.d.ts +7 -0
  157. package/dist/lib/src/index.d.ts.map +1 -0
  158. package/dist/lib/src/index.js +7 -0
  159. package/dist/lib/src/index.js.map +1 -0
  160. package/dist/lib/src/normalize-url/index.d.ts +286 -0
  161. package/dist/lib/src/normalize-url/index.d.ts.map +1 -0
  162. package/dist/lib/src/normalize-url/index.js +252 -0
  163. package/dist/lib/src/normalize-url/index.js.map +1 -0
  164. package/dist/net/src/adapter.d.ts +44 -0
  165. package/dist/net/src/adapter.d.ts.map +1 -0
  166. package/dist/net/src/adapter.js +91 -0
  167. package/dist/net/src/adapter.js.map +1 -0
  168. package/dist/net/src/auth.d.ts +42 -0
  169. package/dist/net/src/auth.d.ts.map +1 -0
  170. package/dist/net/src/auth.js +100 -0
  171. package/dist/net/src/auth.js.map +1 -0
  172. package/dist/net/src/context.d.ts +13 -0
  173. package/dist/net/src/context.d.ts.map +1 -0
  174. package/dist/net/src/context.js +10 -0
  175. package/dist/net/src/context.js.map +1 -0
  176. package/dist/net/src/diff.d.ts +54 -0
  177. package/dist/net/src/diff.d.ts.map +1 -0
  178. package/dist/net/src/diff.js +147 -0
  179. package/dist/net/src/diff.js.map +1 -0
  180. package/dist/net/src/index.d.ts +13 -0
  181. package/dist/net/src/index.d.ts.map +1 -0
  182. package/dist/net/src/index.js +13 -0
  183. package/dist/net/src/index.js.map +1 -0
  184. package/dist/net/src/message.d.ts +60 -0
  185. package/dist/net/src/message.d.ts.map +1 -0
  186. package/dist/net/src/message.js +35 -0
  187. package/dist/net/src/message.js.map +1 -0
  188. package/dist/net/src/negentropy.d.ts +48 -0
  189. package/dist/net/src/negentropy.d.ts.map +1 -0
  190. package/dist/net/src/negentropy.js +536 -0
  191. package/dist/net/src/negentropy.js.map +1 -0
  192. package/dist/net/src/policy.d.ts +40 -0
  193. package/dist/net/src/policy.d.ts.map +1 -0
  194. package/dist/net/src/policy.js +180 -0
  195. package/dist/net/src/policy.js.map +1 -0
  196. package/dist/net/src/pool.d.ts +21 -0
  197. package/dist/net/src/pool.d.ts.map +1 -0
  198. package/dist/net/src/pool.js +67 -0
  199. package/dist/net/src/pool.js.map +1 -0
  200. package/dist/net/src/publish.d.ts +45 -0
  201. package/dist/net/src/publish.d.ts.map +1 -0
  202. package/dist/net/src/publish.js +125 -0
  203. package/dist/net/src/publish.js.map +1 -0
  204. package/dist/net/src/request.d.ts +89 -0
  205. package/dist/net/src/request.d.ts.map +1 -0
  206. package/dist/net/src/request.js +200 -0
  207. package/dist/net/src/request.js.map +1 -0
  208. package/dist/net/src/socket.d.ts +43 -0
  209. package/dist/net/src/socket.d.ts.map +1 -0
  210. package/dist/net/src/socket.js +115 -0
  211. package/dist/net/src/socket.js.map +1 -0
  212. package/dist/net/src/tracker.d.ts +16 -0
  213. package/dist/net/src/tracker.d.ts.map +1 -0
  214. package/dist/net/src/tracker.js +63 -0
  215. package/dist/net/src/tracker.js.map +1 -0
  216. package/dist/net/src/util.d.ts +2 -0
  217. package/dist/net/src/util.d.ts.map +1 -0
  218. package/dist/net/src/util.js +2 -0
  219. package/dist/net/src/util.js.map +1 -0
  220. package/dist/relay/src/index.d.ts +3 -0
  221. package/dist/relay/src/index.d.ts.map +1 -0
  222. package/dist/relay/src/index.js +3 -0
  223. package/dist/relay/src/index.js.map +1 -0
  224. package/dist/relay/src/relay.d.ts +13 -0
  225. package/dist/relay/src/relay.d.ts.map +1 -0
  226. package/dist/relay/src/relay.js +48 -0
  227. package/dist/relay/src/relay.js.map +1 -0
  228. package/dist/relay/src/repository.d.ts +63 -0
  229. package/dist/relay/src/repository.d.ts.map +1 -0
  230. package/dist/relay/src/repository.js +270 -0
  231. package/dist/relay/src/repository.js.map +1 -0
  232. package/dist/signer/src/index.d.ts +7 -0
  233. package/dist/signer/src/index.d.ts.map +1 -0
  234. package/dist/signer/src/index.js +7 -0
  235. package/dist/signer/src/index.js.map +1 -0
  236. package/dist/signer/src/nip59.d.ts +27 -0
  237. package/dist/signer/src/nip59.d.ts.map +1 -0
  238. package/dist/signer/src/nip59.js +68 -0
  239. package/dist/signer/src/nip59.js.map +1 -0
  240. package/dist/signer/src/signers/nip01.d.ts +28 -0
  241. package/dist/signer/src/signers/nip01.d.ts.map +1 -0
  242. package/dist/signer/src/signers/nip01.js +22 -0
  243. package/dist/signer/src/signers/nip01.js.map +1 -0
  244. package/dist/signer/src/signers/nip07.d.ts +23 -0
  245. package/dist/signer/src/signers/nip07.d.ts.map +1 -0
  246. package/dist/signer/src/signers/nip07.js +30 -0
  247. package/dist/signer/src/signers/nip07.js.map +1 -0
  248. package/dist/signer/src/signers/nip46.d.ts +108 -0
  249. package/dist/signer/src/signers/nip46.d.ts.map +1 -0
  250. package/dist/signer/src/signers/nip46.js +343 -0
  251. package/dist/signer/src/signers/nip46.js.map +1 -0
  252. package/dist/signer/src/signers/nip55.d.ts +19 -0
  253. package/dist/signer/src/signers/nip55.d.ts.map +1 -0
  254. package/dist/signer/src/signers/nip55.js +134 -0
  255. package/dist/signer/src/signers/nip55.js.map +1 -0
  256. package/dist/signer/src/util.d.ts +65 -0
  257. package/dist/signer/src/util.d.ts.map +1 -0
  258. package/dist/signer/src/util.js +32 -0
  259. package/dist/signer/src/util.js.map +1 -0
  260. package/dist/store/src/index.d.ts +35 -0
  261. package/dist/store/src/index.d.ts.map +1 -0
  262. package/dist/store/src/index.js +164 -0
  263. package/dist/store/src/index.js.map +1 -0
  264. package/dist/tsconfig.build.tsbuildinfo +1 -0
  265. package/dist/util/src/Address.d.ts +21 -0
  266. package/dist/util/src/Address.d.ts.map +1 -0
  267. package/dist/util/src/Address.js +43 -0
  268. package/dist/util/src/Address.js.map +1 -0
  269. package/dist/util/src/Encryptable.d.ts +34 -0
  270. package/dist/util/src/Encryptable.d.ts.map +1 -0
  271. package/dist/util/src/Encryptable.js +52 -0
  272. package/dist/util/src/Encryptable.js.map +1 -0
  273. package/dist/util/src/Events.d.ts +77 -0
  274. package/dist/util/src/Events.d.ts.map +1 -0
  275. package/dist/util/src/Events.js +62 -0
  276. package/dist/util/src/Events.js.map +1 -0
  277. package/dist/util/src/Filters.d.ts +48 -0
  278. package/dist/util/src/Filters.d.ts.map +1 -0
  279. package/dist/util/src/Filters.js +185 -0
  280. package/dist/util/src/Filters.js.map +1 -0
  281. package/dist/util/src/Handler.d.ts +17 -0
  282. package/dist/util/src/Handler.d.ts.map +1 -0
  283. package/dist/util/src/Handler.js +33 -0
  284. package/dist/util/src/Handler.js.map +1 -0
  285. package/dist/util/src/Kinds.d.ts +159 -0
  286. package/dist/util/src/Kinds.d.ts.map +1 -0
  287. package/dist/util/src/Kinds.js +160 -0
  288. package/dist/util/src/Kinds.js.map +1 -0
  289. package/dist/util/src/Links.d.ts +3 -0
  290. package/dist/util/src/Links.d.ts.map +1 -0
  291. package/dist/util/src/Links.js +3 -0
  292. package/dist/util/src/Links.js.map +1 -0
  293. package/dist/util/src/List.d.ts +32 -0
  294. package/dist/util/src/List.d.ts.map +1 -0
  295. package/dist/util/src/List.js +67 -0
  296. package/dist/util/src/List.js.map +1 -0
  297. package/dist/util/src/Profile.d.ts +33 -0
  298. package/dist/util/src/Profile.d.ts.map +1 -0
  299. package/dist/util/src/Profile.js +49 -0
  300. package/dist/util/src/Profile.js.map +1 -0
  301. package/dist/util/src/Relay.d.ts +26 -0
  302. package/dist/util/src/Relay.d.ts.map +1 -0
  303. package/dist/util/src/Relay.js +42 -0
  304. package/dist/util/src/Relay.js.map +1 -0
  305. package/dist/util/src/Tags.d.ts +32 -0
  306. package/dist/util/src/Tags.d.ts.map +1 -0
  307. package/dist/util/src/Tags.js +74 -0
  308. package/dist/util/src/Tags.js.map +1 -0
  309. package/dist/util/src/Zaps.d.ts +20 -0
  310. package/dist/util/src/Zaps.d.ts.map +1 -0
  311. package/dist/util/src/Zaps.js +93 -0
  312. package/dist/util/src/Zaps.js.map +1 -0
  313. package/dist/util/src/index.d.ts +13 -0
  314. package/dist/util/src/index.d.ts.map +1 -0
  315. package/dist/util/src/index.js +13 -0
  316. package/dist/util/src/index.js.map +1 -0
  317. package/package.json +23 -26
  318. package/README.md +0 -73
  319. package/build/src/collection.d.ts +0 -12
  320. package/build/src/collection.js.map +0 -1
  321. package/build/src/commands.js.map +0 -1
  322. package/build/src/context.js.map +0 -1
  323. package/build/src/core.js.map +0 -1
  324. package/build/src/feeds.js.map +0 -1
  325. package/build/src/follows.d.ts +0 -4
  326. package/build/src/follows.js.map +0 -1
  327. package/build/src/freshness.js.map +0 -1
  328. package/build/src/handles.js.map +0 -1
  329. package/build/src/index.js.map +0 -1
  330. package/build/src/mutes.d.ts +0 -4
  331. package/build/src/mutes.js.map +0 -1
  332. package/build/src/pins.d.ts +0 -4
  333. package/build/src/pins.js.map +0 -1
  334. package/build/src/plaintext.js.map +0 -1
  335. package/build/src/profiles.js.map +0 -1
  336. package/build/src/relaySelections.d.ts +0 -9
  337. package/build/src/relaySelections.js.map +0 -1
  338. package/build/src/relays.js.map +0 -1
  339. package/build/src/router.js.map +0 -1
  340. package/build/src/search.js.map +0 -1
  341. package/build/src/session.js.map +0 -1
  342. package/build/src/storage.d.ts +0 -70
  343. package/build/src/storage.js +0 -187
  344. package/build/src/storage.js.map +0 -1
  345. package/build/src/sync.js.map +0 -1
  346. package/build/src/tags.js.map +0 -1
  347. package/build/src/thunk.js.map +0 -1
  348. package/build/src/topics.js.map +0 -1
  349. package/build/src/user.js.map +0 -1
  350. package/build/src/util.js.map +0 -1
  351. package/build/src/wot.js.map +0 -1
  352. package/build/src/zappers.d.ts +0 -6
  353. package/build/src/zappers.js.map +0 -1
  354. package/build/tsconfig.tsbuildinfo +0 -1
  355. /package/{build → dist/app}/src/context.js +0 -0
  356. /package/{build → dist/app}/src/freshness.js +0 -0
  357. /package/{build → dist/app}/src/plaintext.js +0 -0
  358. /package/{build → dist/app}/src/search.js +0 -0
  359. /package/{build → dist/app}/src/session.js +0 -0
  360. /package/{build → dist/app}/src/sync.js +0 -0
  361. /package/{build → dist/app}/src/topics.js +0 -0
  362. /package/{build → dist/app}/src/user.js +0 -0
  363. /package/{build → dist/app}/src/util.js +0 -0
  364. /package/{build → dist/app}/src/wot.js +0 -0
@@ -0,0 +1,62 @@
1
+ import { verifiedSymbol, verifyEvent as verifyEventPure } from "nostr-tools/pure";
2
+ import { setNostrWasm, verifyEvent as verifyEventWasm } from "nostr-tools/wasm";
3
+ import { initNostrWasm } from "nostr-wasm";
4
+ import { mapVals, noop, first, pick, now } from "@welshman/lib";
5
+ import { getReplyTagValues, getCommentTagValues } from "./Tags.js";
6
+ import { getAddress, Address } from "./Address.js";
7
+ import { COMMENT, isEphemeralKind, isReplaceableKind, isPlainReplaceableKind, isParameterizedReplaceableKind, } from "./Kinds.js";
8
+ export const makeEvent = (kind, { content = "", tags = [], created_at = now() } = {}) => ({ kind, content, tags, created_at });
9
+ export const createEvent = makeEvent;
10
+ export const verifyEvent = (() => {
11
+ let verify = verifyEventPure;
12
+ if (typeof WebAssembly === "object") {
13
+ initNostrWasm()
14
+ .then(setNostrWasm, noop)
15
+ .then(() => {
16
+ verify = verifyEventWasm;
17
+ });
18
+ }
19
+ return (event) => event.sig && (event[verifiedSymbol] || verify(event));
20
+ })();
21
+ export const isEventTemplate = (e) => Boolean(typeof e.kind === "number" && Array.isArray(e.tags) && typeof e.content === "string");
22
+ export const isStampedEvent = (e) => Boolean(isEventTemplate(e) && e.created_at >= 0);
23
+ export const isOwnedEvent = (e) => Boolean(isStampedEvent(e) && e.pubkey);
24
+ export const isHashedEvent = (e) => Boolean(isOwnedEvent(e) && e.id);
25
+ export const isSignedEvent = (e) => Boolean(isHashedEvent(e) && e.sig);
26
+ export const isUnwrappedEvent = (e) => Boolean(isHashedEvent(e) && e.wrap);
27
+ export const isTrustedEvent = (e) => isSignedEvent(e) || isUnwrappedEvent(e);
28
+ export const asEventTemplate = (e) => pick(["kind", "tags", "content"], e);
29
+ export const asStampedEvent = (e) => pick(["kind", "tags", "content", "created_at"], e);
30
+ export const asOwnedEvent = (e) => pick(["kind", "tags", "content", "created_at", "pubkey"], e);
31
+ export const asHashedEvent = (e) => pick(["kind", "tags", "content", "created_at", "pubkey", "id"], e);
32
+ export const asSignedEvent = (e) => pick(["kind", "tags", "content", "created_at", "pubkey", "id", "sig"], e);
33
+ export const asUnwrappedEvent = (e) => pick(["kind", "tags", "content", "created_at", "pubkey", "id", "wrap"], e);
34
+ export const asTrustedEvent = (e) => pick(["kind", "tags", "content", "created_at", "pubkey", "id", "sig", "wrap"], e);
35
+ export const getIdentifier = (e) => e.tags.find(t => t[0] === "d")?.[1];
36
+ export const getIdOrAddress = (e) => (isReplaceable(e) ? getAddress(e) : e.id);
37
+ export const getIdAndAddress = (e) => isReplaceable(e) ? [e.id, getAddress(e)] : [e.id];
38
+ export const isEphemeral = (e) => isEphemeralKind(e.kind);
39
+ export const isReplaceable = (e) => isReplaceableKind(e.kind);
40
+ export const isPlainReplaceable = (e) => isPlainReplaceableKind(e.kind);
41
+ export const isParameterizedReplaceable = (e) => isParameterizedReplaceableKind(e.kind);
42
+ export const getAncestors = ({ kind, tags }) => kind === COMMENT ? getCommentTagValues(tags) : getReplyTagValues(tags);
43
+ export const getParentIdsAndAddrs = (event) => {
44
+ const { roots, replies } = getAncestors(event);
45
+ return replies.length > 0 ? replies : roots;
46
+ };
47
+ export const getParentIdOrAddr = (event) => first(getParentIdsAndAddrs(event));
48
+ export const getParentIds = (event) => {
49
+ const { roots, replies } = mapVals(ids => ids.filter(id => !Address.isAddress(id)), getAncestors(event));
50
+ return replies.length > 0 ? replies : roots;
51
+ };
52
+ export const getParentId = (event) => first(getParentIds(event));
53
+ export const getParentAddrs = (event) => {
54
+ const { roots, replies } = mapVals(ids => ids.filter(id => Address.isAddress(id)), getAncestors(event));
55
+ return replies.length > 0 ? replies : roots;
56
+ };
57
+ export const getParentAddr = (event) => first(getParentAddrs(event));
58
+ export const isChildOf = (child, parent) => {
59
+ const idsAndAddrs = getParentIdsAndAddrs(child);
60
+ return getIdAndAddress(parent).some(x => idsAndAddrs.includes(x));
61
+ };
62
+ //# sourceMappingURL=Events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Events.js","sourceRoot":"","sources":["../../../../util/src/Events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import type { HashedEvent, TrustedEvent } from "./Events.js";
2
+ export declare const EPOCH = 1609459200;
3
+ export declare const neverFilter: {
4
+ ids: never[];
5
+ };
6
+ export type Filter = {
7
+ ids?: string[];
8
+ kinds?: number[];
9
+ authors?: string[];
10
+ since?: number;
11
+ until?: number;
12
+ limit?: number;
13
+ search?: string;
14
+ [key: `#${string}`]: string[];
15
+ };
16
+ export declare const matchFilter: <E extends HashedEvent>(filter: Filter, event: E) => boolean;
17
+ export declare const matchFilters: <E extends HashedEvent>(filters: Filter[], event: E) => boolean;
18
+ export declare const getFilterId: (filter: Filter) => string;
19
+ export declare const calculateFilterGroup: ({ since, until, limit, search, ...filter }: Filter) => string;
20
+ export declare const unionFilters: (filters: Filter[]) => Filter[];
21
+ export declare const intersectFilters: (groups: Filter[][]) => Filter[];
22
+ export declare const getIdFilters: (idsOrAddresses: string[]) => Filter[];
23
+ export declare const getReplyFilters: (events: TrustedEvent[], filter?: Filter) => ({
24
+ "#a": string[];
25
+ ids?: string[];
26
+ kinds?: number[];
27
+ authors?: string[];
28
+ since?: number;
29
+ until?: number;
30
+ limit?: number;
31
+ search?: string;
32
+ } | {
33
+ "#e": string[];
34
+ ids?: string[];
35
+ kinds?: number[];
36
+ authors?: string[];
37
+ since?: number;
38
+ until?: number;
39
+ limit?: number;
40
+ search?: string;
41
+ })[];
42
+ export declare const addRepostFilters: (filters: Filter[]) => Filter[];
43
+ export declare const getFilterGenerality: (filter: Filter) => number;
44
+ export declare const guessFilterDelta: (filters: Filter[], max?: number) => number;
45
+ export declare const getFilterResultCardinality: (filter: Filter) => number | undefined;
46
+ export declare const trimFilter: (filter: Filter) => Filter;
47
+ export declare const trimFilters: (filters: Filter[]) => Filter[];
48
+ //# sourceMappingURL=Filters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Filters.d.ts","sourceRoot":"","sources":["../../../../util/src/Filters.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAC,WAAW,EAAE,YAAY,EAAc,MAAM,aAAa,CAAA;AAIvE,eAAO,MAAM,KAAK,aAAa,CAAA;AAE/B,eAAO,MAAM,WAAW;;CAAY,CAAA;AAEpC,MAAM,MAAM,MAAM,GAAG;IACnB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,CAAC,GAAG,EAAE,IAAI,MAAM,EAAE,GAAG,MAAM,EAAE,CAAA;CAC9B,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,WAAW,EAAE,QAAQ,MAAM,EAAE,OAAO,CAAC,YAmB1E,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,WAAW,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,CAAC,YAQ9E,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,WAczC,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,4CAA0C,MAAM,WASpF,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,EAAE,aAmB7C,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,EAAE,EAAE,aA8BlD,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,gBAAgB,MAAM,EAAE,aAyBpD,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,QAAQ,YAAY,EAAE,EAAE,SAAQ,MAAW;;UApJnE,MAAM,EAAE;YACN,MAAM,EAAE;cACN,MAAM,EAAE;YACV,MAAM;YACN,MAAM;YACN,MAAM;aACL,MAAM;;;UANT,MAAM,EAAE;YACN,MAAM,EAAE;cACN,MAAM,EAAE;YACV,MAAM;YACN,MAAM;YACN,MAAM;aACL,MAAM;IAyKhB,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,SAAS,MAAM,EAAE,aAmB9C,CAAA;AAEJ,eAAO,MAAM,mBAAmB,GAAI,QAAQ,MAAM,WAgBjD,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,SAAS,MAAM,EAAE,EAAE,YAAkB,WACO,CAAA;AAG7E,eAAO,MAAM,0BAA0B,GAAI,QAAQ,MAAM,uBAMxD,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,KAAG,MAI/B,CAAA;AAEb,eAAO,MAAM,WAAW,GAAI,SAAS,MAAM,EAAE,aAA4B,CAAA"}
@@ -0,0 +1,185 @@
1
+ import { matchFilter as nostrToolsMatchFilter } from "nostr-tools/filter";
2
+ import { without, uniqBy, prop, mapVals, shuffle, avg, hash, groupBy, randomId, uniq, } from "@welshman/lib";
3
+ import { isReplaceableKind } from "./Kinds.js";
4
+ import { Address, getAddress } from "./Address.js";
5
+ export const EPOCH = 1609459200;
6
+ export const neverFilter = { ids: [] };
7
+ export const matchFilter = (filter, event) => {
8
+ if (!nostrToolsMatchFilter(filter, event)) {
9
+ return false;
10
+ }
11
+ if (filter.search) {
12
+ const content = event.content.toLowerCase();
13
+ const terms = filter.search.toLowerCase().split(/\s+/g);
14
+ for (const term of terms) {
15
+ if (content.includes(term)) {
16
+ return true;
17
+ }
18
+ return false;
19
+ }
20
+ }
21
+ return true;
22
+ };
23
+ export const matchFilters = (filters, event) => {
24
+ for (const filter of filters) {
25
+ if (matchFilter(filter, event)) {
26
+ return true;
27
+ }
28
+ }
29
+ return false;
30
+ };
31
+ export const getFilterId = (filter) => {
32
+ const keys = Object.keys(filter);
33
+ keys.sort();
34
+ const parts = [];
35
+ for (const k of keys) {
36
+ const v = filter[k];
37
+ const s = Array.isArray(v) ? v.join(",") : v;
38
+ parts.push(`${k}:${s}`);
39
+ }
40
+ return hash(parts.join("|"));
41
+ };
42
+ export const calculateFilterGroup = ({ since, until, limit, search, ...filter }) => {
43
+ const group = Object.keys(filter);
44
+ if (since)
45
+ group.push(`since:${since}`);
46
+ if (until)
47
+ group.push(`until:${until}`);
48
+ if (limit)
49
+ group.push(`limit:${randomId()}`);
50
+ if (search)
51
+ group.push(`search:${search}`);
52
+ return group.sort().join("-");
53
+ };
54
+ export const unionFilters = (filters) => {
55
+ const result = [];
56
+ // Group, but also get unique filters by ids because duplicates can come through subscribe
57
+ for (const group of groupBy(calculateFilterGroup, uniqBy(getFilterId, filters)).values()) {
58
+ const newFilter = {};
59
+ for (const k of Object.keys(group[0])) {
60
+ if (["since", "until", "limit", "search"].includes(k)) {
61
+ newFilter[k] = group[0][k];
62
+ }
63
+ else {
64
+ newFilter[k] = uniq(group.flatMap(prop(k)));
65
+ }
66
+ }
67
+ result.push(newFilter);
68
+ }
69
+ return result;
70
+ };
71
+ export const intersectFilters = (groups) => {
72
+ let result = groups[0];
73
+ for (const filters of groups.slice(1)) {
74
+ result = result.flatMap(f1 => {
75
+ return filters.map(f2 => {
76
+ const f3 = {};
77
+ for (const k of uniq([...Object.keys(f1), ...Object.keys(f2)])) {
78
+ if (k === "since" || k === "limit") {
79
+ f3[k] = Math.max(f1[k] || 0, f2[k] || 0);
80
+ }
81
+ else if (k === "until") {
82
+ f3[k] = Math.min(f1[k] || f2[k] || 0, f2[k] || f1[k] || 0);
83
+ }
84
+ else if (k === "search") {
85
+ if (f1[k] && f2[k] && f1[k] !== f2[k]) {
86
+ f3[k] = [f1[k], f2[k]].join(" ");
87
+ }
88
+ else {
89
+ f3[k] = f1[k] || f2[k];
90
+ }
91
+ }
92
+ else {
93
+ f3[k] = uniq([...(f1[k] || []), ...(f2[k] || [])]);
94
+ }
95
+ }
96
+ return f3;
97
+ });
98
+ });
99
+ }
100
+ return unionFilters(result);
101
+ };
102
+ export const getIdFilters = (idsOrAddresses) => {
103
+ const ids = [];
104
+ const aFilters = [];
105
+ for (const idOrAddress of idsOrAddresses) {
106
+ if (Address.isAddress(idOrAddress)) {
107
+ const { kind, pubkey, identifier } = Address.from(idOrAddress);
108
+ if (identifier) {
109
+ aFilters.push({ kinds: [kind], authors: [pubkey], "#d": [identifier] });
110
+ }
111
+ else {
112
+ aFilters.push({ kinds: [kind], authors: [pubkey] });
113
+ }
114
+ }
115
+ else {
116
+ ids.push(idOrAddress);
117
+ }
118
+ }
119
+ const filters = unionFilters(aFilters);
120
+ if (ids.length > 0) {
121
+ filters.push({ ids });
122
+ }
123
+ return filters;
124
+ };
125
+ export const getReplyFilters = (events, filter = {}) => {
126
+ const a = [];
127
+ const e = [];
128
+ for (const event of events) {
129
+ e.push(event.id);
130
+ if (isReplaceableKind(event.kind)) {
131
+ a.push(getAddress(event));
132
+ }
133
+ if (event.wrap) {
134
+ e.push(event.wrap.id);
135
+ }
136
+ }
137
+ const filters = [];
138
+ if (a.length > 0) {
139
+ filters.push({ ...filter, "#a": a });
140
+ }
141
+ if (e.length > 0) {
142
+ filters.push({ ...filter, "#e": e });
143
+ }
144
+ return filters;
145
+ };
146
+ export const addRepostFilters = (filters) => filters.flatMap(original => {
147
+ const filterChunk = [original];
148
+ if (!original.kinds) {
149
+ filterChunk.push({ ...original, kinds: [6, 16] });
150
+ }
151
+ else {
152
+ if (original.kinds.includes(1)) {
153
+ filterChunk.push({ ...original, kinds: [6] });
154
+ }
155
+ const otherKinds = without([1], original.kinds);
156
+ if (otherKinds.length > 0) {
157
+ filterChunk.push({ ...original, kinds: [16], "#k": otherKinds.map(String) });
158
+ }
159
+ }
160
+ return filterChunk;
161
+ });
162
+ export const getFilterGenerality = (filter) => {
163
+ if (filter.ids || filter["#e"] || filter["#a"]) {
164
+ return 0;
165
+ }
166
+ const hasTags = Object.keys(filter).find((k) => k.startsWith("#"));
167
+ if (filter.authors && hasTags) {
168
+ return 0.2;
169
+ }
170
+ if (filter.authors) {
171
+ return Math.min(1, filter.authors.length / 300);
172
+ }
173
+ return 1;
174
+ };
175
+ export const guessFilterDelta = (filters, max = 60 * 60 * 24) => Math.round(max * Math.max(0.01, 1 - avg(filters.map(getFilterGenerality))));
176
+ // If a filter is specifying ids, we know how many results to expect
177
+ export const getFilterResultCardinality = (filter) => {
178
+ if (filter.ids) {
179
+ return filter.ids.length;
180
+ }
181
+ return undefined;
182
+ };
183
+ export const trimFilter = (filter) => mapVals(v => (Array.isArray(v) && v.length > 1000 ? shuffle(v).slice(0, 1000) : v), filter);
184
+ export const trimFilters = (filters) => filters.map(trimFilter);
185
+ //# sourceMappingURL=Filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Filters.js","sourceRoot":"","sources":["../../../../util/src/Filters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { TrustedEvent } from "./Events.js";
2
+ export type Handler = {
3
+ kind: number;
4
+ name: string;
5
+ about: string;
6
+ image: string;
7
+ identifier: string;
8
+ event: TrustedEvent;
9
+ website?: string;
10
+ lud16?: string;
11
+ nip05?: string;
12
+ };
13
+ export declare const readHandlers: (event: TrustedEvent) => Handler[];
14
+ export declare const getHandlerKey: (handler: Handler) => string;
15
+ export declare const displayHandler: (handler?: Handler, fallback?: string) => string;
16
+ export declare const getHandlerAddress: (event: TrustedEvent) => string | undefined;
17
+ //# sourceMappingURL=Handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Handler.d.ts","sourceRoot":"","sources":["../../../../util/src/Handler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,aAAa,CAAA;AAE7C,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,YAAY,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,OAAO,YAAY,cAuB/C,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,SAAS,OAAO,WAAmD,CAAA;AAEjG,eAAO,MAAM,cAAc,GAAI,UAAU,OAAO,EAAE,iBAAa,WAA8B,CAAA;AAE7F,eAAO,MAAM,iBAAiB,GAAI,OAAO,YAAY,uBAKpD,CAAA"}
@@ -0,0 +1,33 @@
1
+ import { fromPairs, last, first, parseJson } from "@welshman/lib";
2
+ import { getAddress } from "./Address.js";
3
+ import { getAddressTags, getKindTagValues } from "./Tags.js";
4
+ export const readHandlers = (event) => {
5
+ const { d: identifier } = fromPairs(event.tags);
6
+ const meta = parseJson(event.content);
7
+ const normalizedMeta = {
8
+ name: meta?.name || meta?.display_name || "",
9
+ image: meta?.image || meta?.picture || "",
10
+ about: meta?.about || "",
11
+ website: meta?.website || "",
12
+ lud16: meta?.lud16 || "",
13
+ nip05: meta?.nip05 || "",
14
+ };
15
+ // If our meta is missing important stuff, don't bother showing it
16
+ if (!normalizedMeta.name || !normalizedMeta.image) {
17
+ return [];
18
+ }
19
+ return getKindTagValues(event.tags).map(kind => ({
20
+ ...normalizedMeta,
21
+ kind,
22
+ identifier,
23
+ event,
24
+ }));
25
+ };
26
+ export const getHandlerKey = (handler) => `${handler.kind}:${getAddress(handler.event)}`;
27
+ export const displayHandler = (handler, fallback = "") => handler?.name || fallback;
28
+ export const getHandlerAddress = (event) => {
29
+ const tags = getAddressTags(event.tags);
30
+ const tag = tags.find(t => last(t) === "web") || first(tags);
31
+ return tag?.[1];
32
+ };
33
+ //# sourceMappingURL=Handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Handler.js","sourceRoot":"","sources":["../../../../util/src/Handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAC,MAAM,eAAe,CAAA;AAC/D,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AACvC,OAAO,EAAC,cAAc,EAAE,gBAAgB,EAAC,MAAM,WAAW,CAAA;AAe1D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAmB,EAAE,EAAE;IAClD,MAAM,EAAC,CAAC,EAAE,UAAU,EAAC,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC7C,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACrC,MAAM,cAAc,GAAG;QACrB,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,YAAY,IAAI,EAAE;QAC5C,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,OAAO,IAAI,EAAE;QACzC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE;QACxB,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE;QAC5B,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE;QACxB,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE;KACzB,CAAA;IAED,kEAAkE;IAClE,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAClD,OAAO,EAAE,CAAA;IACX,CAAC;IAED,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/C,GAAG,cAAc;QACjB,IAAI;QACJ,UAAU;QACV,KAAK;KACN,CAAC,CAAc,CAAA;AAClB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAgB,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAA;AAEjG,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAiB,EAAE,QAAQ,GAAG,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,IAAI,QAAQ,CAAA;AAE7F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAmB,EAAE,EAAE;IACvD,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAA;IAE5D,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAA"}
@@ -0,0 +1,159 @@
1
+ import { isRegularKind, isEphemeralKind, isReplaceableKind as isPlainReplaceableKind, isParameterizedReplaceableKind } from "nostr-tools/kinds";
2
+ export { isRegularKind, isEphemeralKind, isPlainReplaceableKind, isParameterizedReplaceableKind };
3
+ export declare const isReplaceableKind: (kind: number) => boolean;
4
+ export declare const isDVMKind: (kind: number) => boolean;
5
+ export declare const PROFILE = 0;
6
+ export declare const NOTE = 1;
7
+ export declare const FOLLOWS = 3;
8
+ export declare const DELETE = 5;
9
+ export declare const REPOST = 6;
10
+ export declare const REACTION = 7;
11
+ export declare const BADGE_AWARD = 8;
12
+ export declare const MESSAGE = 9;
13
+ export declare const THREAD = 11;
14
+ export declare const SEAL = 13;
15
+ export declare const DIRECT_MESSAGE = 14;
16
+ export declare const GENERIC_REPOST = 16;
17
+ export declare const PICTURE_NOTE = 20;
18
+ export declare const CHANNEL_CREATE = 40;
19
+ export declare const CHANNEL_UPDATE = 41;
20
+ export declare const CHANNEL_MESSAGE = 42;
21
+ export declare const CHANNEL_HIDE_MESSAGE = 43;
22
+ export declare const CHANNEL_MUTE_USER = 44;
23
+ export declare const VANISH = 62;
24
+ export declare const BID = 1021;
25
+ export declare const BID_CONFIRMATION = 1022;
26
+ export declare const OTS = 1040;
27
+ export declare const WRAP = 1059;
28
+ export declare const WRAP_NIP04 = 1060;
29
+ export declare const FILE_METADATA = 1063;
30
+ export declare const COMMENT = 1111;
31
+ export declare const LIVE_CHAT_MESSAGE = 1311;
32
+ export declare const GIT_PATCH = 1617;
33
+ export declare const GIT_ISSUE = 1621;
34
+ export declare const GIT_REPLY = 1622;
35
+ export declare const GIT_STATUS_OPEN = 1630;
36
+ export declare const GIT_STATUS_COMPLETE = 1631;
37
+ export declare const GIT_STATUS_CLOSED = 1632;
38
+ export declare const GIT_STATUS_DRAFT = 1633;
39
+ export declare const GIT_REPOSITORY = 30403;
40
+ export declare const REMIX = 1808;
41
+ export declare const NOSTROCKET_PROBLEM = 1971;
42
+ export declare const REPORT = 1984;
43
+ export declare const LABEL = 1985;
44
+ export declare const REVIEW = 1986;
45
+ export declare const APPROVAL = 4550;
46
+ export declare const DVM_REQUEST_TEXT_EXTRACTION = 5000;
47
+ export declare const DVM_REQUEST_TEXT_SUMMARY = 5001;
48
+ export declare const DVM_REQUEST_TEXT_TRANSLATION = 5002;
49
+ export declare const DVM_REQUEST_TEXT_GENERATION = 5050;
50
+ export declare const DVM_REQUEST_IMAGE_GENERATION = 5100;
51
+ export declare const DVM_REQUEST_VIDEO_CONVERSION = 5200;
52
+ export declare const DVM_REQUEST_VIDEO_TRANSLATION = 5201;
53
+ export declare const DVM_REQUEST_IMAGE_TO_VIDEO_CONVERSION = 5202;
54
+ export declare const DVM_REQUEST_TEXT_TO_SPEECH = 5250;
55
+ export declare const DVM_REQUEST_DISCOVER_CONTENT = 5300;
56
+ export declare const DVM_REQUEST_DISCOVER_PEOPLE = 5301;
57
+ export declare const DVM_REQUEST_SEARCH_CONTENT = 5302;
58
+ export declare const DVM_REQUEST_SEARCH_PEOPLE = 5303;
59
+ export declare const DVM_REQUEST_COUNT = 5400;
60
+ export declare const DVM_REQUEST_MALWARE_SCAN = 5500;
61
+ export declare const DVM_REQUEST_OTS = 5900;
62
+ export declare const DVM_REQUEST_OP_RETURN = 5901;
63
+ export declare const DVM_REQUEST_PUBLISH_SCHEDULE = 5905;
64
+ export declare const DVM_RESPONSE_TEXT_EXTRACTION = 6000;
65
+ export declare const DVM_RESPONSE_TEXT_SUMMARY = 6001;
66
+ export declare const DVM_RESPONSE_TEXT_TRANSLATION = 6002;
67
+ export declare const DVM_RESPONSE_TEXT_GENERATION = 6050;
68
+ export declare const DVM_RESPONSE_IMAGE_GENERATION = 6100;
69
+ export declare const DVM_RESPONSE_VIDEO_CONVERSION = 6200;
70
+ export declare const DVM_RESPONSE_VIDEO_TRANSLATION = 6201;
71
+ export declare const DVM_RESPONSE_IMAGE_TO_VIDEO_CONVERSION = 6202;
72
+ export declare const DVM_RESPONSE_TEXT_TO_SPEECH = 6250;
73
+ export declare const DVM_RESPONSE_DISCOVER_CONTENT = 6300;
74
+ export declare const DVM_RESPONSE_DISCOVER_PEOPLE = 6301;
75
+ export declare const DVM_RESPONSE_SEARCH_CONTENT = 6302;
76
+ export declare const DVM_RESPONSE_SEARCH_PEOPLE = 6303;
77
+ export declare const DVM_RESPONSE_COUNT = 6400;
78
+ export declare const DVM_RESPONSE_MALWARE_SCAN = 6500;
79
+ export declare const DVM_RESPONSE_OTS = 6900;
80
+ export declare const DVM_RESPONSE_OP_RETURN = 6901;
81
+ export declare const DVM_RESPONSE_PUBLISH_SCHEDULE = 6905;
82
+ export declare const DVM_FEEDBACK = 7000;
83
+ export declare const GROUP_ADD_USER = 9000;
84
+ export declare const GROUP_REMOVE_USER = 9001;
85
+ export declare const GROUP_EDIT_META = 9002;
86
+ export declare const GROUP_ADD_PERM = 9003;
87
+ export declare const GROUP_REMOVE_PERM = 9004;
88
+ export declare const GROUP_DELETE_EVENT = 9005;
89
+ export declare const GROUP_EDIT_STATUS = 9006;
90
+ export declare const GROUP_CREATE = 9007;
91
+ export declare const GROUP_JOIN = 9021;
92
+ export declare const GROUP_LEAVE = 9022;
93
+ export declare const ZAP_GOAL = 9041;
94
+ export declare const ZAP_REQUEST = 9734;
95
+ export declare const ZAP_RESPONSE = 9735;
96
+ export declare const HIGHLIGHT = 9802;
97
+ export declare const MUTES = 10000;
98
+ export declare const PINS = 10001;
99
+ export declare const RELAYS = 10002;
100
+ export declare const BOOKMARKS = 10003;
101
+ export declare const COMMUNITIES = 10004;
102
+ export declare const CHANNELS = 10005;
103
+ export declare const BLOCKED_RELAYS = 10006;
104
+ export declare const SEARCH_RELAYS = 10007;
105
+ export declare const GROUPS = 10009;
106
+ export declare const FEEDS = 10014;
107
+ export declare const TOPICS = 10015;
108
+ export declare const EMOJIS = 10030;
109
+ export declare const INBOX_RELAYS = 10050;
110
+ export declare const FILE_SERVERS = 10096;
111
+ export declare const LIGHTNING_PUB_RPC = 21000;
112
+ export declare const CLIENT_AUTH = 22242;
113
+ export declare const AUTH_JOIN = 28934;
114
+ export declare const AUTH_INVITE = 28935;
115
+ export declare const WALLET_INFO = 13194;
116
+ export declare const WALLET_REQUEST = 23194;
117
+ export declare const WALLET_RESPONSE = 23195;
118
+ export declare const NOSTR_CONNECT = 24133;
119
+ export declare const HTTP_AUTH = 27235;
120
+ export declare const NAMED_PEOPLE = 30000;
121
+ export declare const NAMED_RELAYS = 30002;
122
+ export declare const NAMED_BOOKMARKS = 30003;
123
+ export declare const NAMED_CURATIONS = 30004;
124
+ export declare const NAMED_WIKI_AUTHORS = 30101;
125
+ export declare const NAMED_WIKI_RELAYS = 30102;
126
+ export declare const NAMED_EMOJIS = 30030;
127
+ export declare const NAMED_TOPICS = 30015;
128
+ export declare const NAMED_ARTIFACTS = 30063;
129
+ export declare const NAMED_COMMUNITIES = 30064;
130
+ export declare const BADGES = 30008;
131
+ export declare const BADGE_DEFINITION = 30009;
132
+ export declare const STALL = 30017;
133
+ export declare const PRODUCT = 30018;
134
+ export declare const MARKET_UI = 30019;
135
+ export declare const PRODUCT_SOLD_AS_AUCTION = 30020;
136
+ export declare const WIKI = 30818;
137
+ export declare const LONG_FORM = 30023;
138
+ export declare const LONG_FORM_DRAFT = 30024;
139
+ export declare const APP_DATA = 30078;
140
+ export declare const LIVE_EVENT = 30311;
141
+ export declare const STATUS = 30315;
142
+ export declare const CLASSIFIED = 30402;
143
+ export declare const DRAFT_CLASSIFIED = 30403;
144
+ export declare const AUDIO = 31337;
145
+ export declare const FEED = 31890;
146
+ export declare const CALENDAR = 31924;
147
+ export declare const EVENT_DATE = 31922;
148
+ export declare const EVENT_TIME = 31923;
149
+ export declare const EVENT_RSVP = 31925;
150
+ export declare const HANDLER_RECOMMENDATION = 31989;
151
+ export declare const HANDLER_INFORMATION = 31990;
152
+ export declare const COMMUNITY = 34550;
153
+ export declare const GROUP = 35834;
154
+ export declare const GROUP_META = 39000;
155
+ export declare const GROUP_ADMINS = 39001;
156
+ export declare const DEPRECATED_RELAY_RECOMMENDATION = 2;
157
+ export declare const DEPRECATED_DIRECT_MESSAGE = 4;
158
+ export declare const DEPRECATED_NAMED_GENERIC = 30001;
159
+ //# sourceMappingURL=Kinds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Kinds.d.ts","sourceRoot":"","sources":["../../../../util/src/Kinds.ts"],"names":[],"mappings":"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"}