nostr-websocket-utils 0.3.0 → 0.3.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 (411) hide show
  1. package/README.md +8 -7
  2. package/dist/__mocks__/extendedWsMock.d.ts +31 -14
  3. package/dist/__mocks__/extendedWsMock.d.ts.map +1 -0
  4. package/dist/__mocks__/extendedWsMock.js +7 -6
  5. package/dist/__mocks__/extendedWsMock.js.map +1 -0
  6. package/dist/__mocks__/mockLogger.d.ts +8 -7
  7. package/dist/__mocks__/mockLogger.d.ts.map +1 -0
  8. package/dist/__mocks__/mockLogger.js +1 -0
  9. package/dist/__mocks__/mockLogger.js.map +1 -0
  10. package/dist/__mocks__/mockserver.d.ts +7 -11
  11. package/dist/__mocks__/mockserver.d.ts.map +1 -0
  12. package/dist/__mocks__/mockserver.js +1 -0
  13. package/dist/__mocks__/mockserver.js.map +1 -0
  14. package/dist/__mocks__/wsMock.d.ts +1 -2
  15. package/dist/__mocks__/wsMock.d.ts.map +1 -0
  16. package/dist/__mocks__/wsMock.js +1 -0
  17. package/dist/__mocks__/wsMock.js.map +1 -0
  18. package/dist/cjs/__mocks__/extendedWsMock.d.ts +52 -0
  19. package/dist/cjs/__mocks__/extendedWsMock.d.ts.map +1 -0
  20. package/dist/cjs/__mocks__/extendedWsMock.js +161 -0
  21. package/dist/cjs/__mocks__/extendedWsMock.js.map +1 -0
  22. package/dist/cjs/__mocks__/mockLogger.d.ts +42 -0
  23. package/dist/cjs/__mocks__/mockLogger.d.ts.map +1 -0
  24. package/dist/cjs/__mocks__/mockLogger.js +53 -0
  25. package/dist/cjs/__mocks__/mockLogger.js.map +1 -0
  26. package/dist/cjs/__mocks__/mockserver.d.ts +27 -0
  27. package/dist/cjs/__mocks__/mockserver.d.ts.map +1 -0
  28. package/dist/cjs/__mocks__/mockserver.js +44 -0
  29. package/dist/cjs/__mocks__/mockserver.js.map +1 -0
  30. package/dist/cjs/__mocks__/wsMock.d.ts +25 -0
  31. package/dist/cjs/__mocks__/wsMock.d.ts.map +1 -0
  32. package/dist/cjs/__mocks__/wsMock.js +123 -0
  33. package/dist/cjs/__mocks__/wsMock.js.map +1 -0
  34. package/dist/cjs/core/client.d.ts +35 -0
  35. package/dist/cjs/core/client.d.ts.map +1 -0
  36. package/dist/cjs/core/client.js +161 -0
  37. package/dist/cjs/core/client.js.map +1 -0
  38. package/dist/{nostr-server.d.ts → cjs/core/nostr-server.d.ts} +3 -6
  39. package/dist/cjs/core/nostr-server.d.ts.map +1 -0
  40. package/dist/cjs/core/nostr-server.js +101 -0
  41. package/dist/cjs/core/nostr-server.js.map +1 -0
  42. package/dist/cjs/core/queue.d.ts +38 -0
  43. package/dist/cjs/core/queue.d.ts.map +1 -0
  44. package/dist/cjs/core/queue.js +105 -0
  45. package/dist/cjs/core/queue.js.map +1 -0
  46. package/dist/cjs/core/server.d.ts +29 -0
  47. package/dist/cjs/core/server.d.ts.map +1 -0
  48. package/dist/cjs/core/server.js +134 -0
  49. package/dist/cjs/core/server.js.map +1 -0
  50. package/dist/cjs/crypto/bech32.d.ts +27 -0
  51. package/dist/cjs/crypto/bech32.d.ts.map +1 -0
  52. package/dist/cjs/crypto/bech32.js +170 -0
  53. package/dist/cjs/crypto/bech32.js.map +1 -0
  54. package/dist/cjs/crypto/handlers.d.ts +19 -0
  55. package/dist/cjs/crypto/handlers.d.ts.map +1 -0
  56. package/dist/cjs/crypto/handlers.js +65 -0
  57. package/dist/cjs/crypto/handlers.js.map +1 -0
  58. package/dist/cjs/crypto/index.d.ts +6 -0
  59. package/dist/cjs/crypto/index.d.ts.map +1 -0
  60. package/dist/cjs/crypto/index.js +22 -0
  61. package/dist/cjs/crypto/index.js.map +1 -0
  62. package/dist/cjs/endpoints/metrics.d.ts +30 -0
  63. package/dist/cjs/endpoints/metrics.d.ts.map +1 -0
  64. package/dist/cjs/endpoints/metrics.js +106 -0
  65. package/dist/cjs/endpoints/metrics.js.map +1 -0
  66. package/dist/cjs/index.d.ts +13 -0
  67. package/dist/cjs/index.d.ts.map +1 -0
  68. package/dist/cjs/index.js +40 -0
  69. package/dist/cjs/index.js.map +1 -0
  70. package/dist/cjs/nips/index.d.ts +20 -0
  71. package/dist/cjs/nips/index.d.ts.map +1 -0
  72. package/dist/cjs/nips/index.js +51 -0
  73. package/dist/cjs/nips/index.js.map +1 -0
  74. package/dist/cjs/nips/nip-01.d.ts +35 -0
  75. package/dist/cjs/nips/nip-01.d.ts.map +1 -0
  76. package/dist/cjs/nips/nip-01.js +142 -0
  77. package/dist/cjs/nips/nip-01.js.map +1 -0
  78. package/dist/cjs/nips/nip-02.d.ts +83 -0
  79. package/dist/cjs/nips/nip-02.d.ts.map +1 -0
  80. package/dist/cjs/nips/nip-02.js +119 -0
  81. package/dist/cjs/nips/nip-02.js.map +1 -0
  82. package/dist/cjs/nips/nip-04.d.ts +37 -0
  83. package/dist/cjs/nips/nip-04.d.ts.map +1 -0
  84. package/dist/cjs/nips/nip-04.js +104 -0
  85. package/dist/cjs/nips/nip-04.js.map +1 -0
  86. package/dist/cjs/nips/nip-05.d.ts +88 -0
  87. package/dist/cjs/nips/nip-05.d.ts.map +1 -0
  88. package/dist/cjs/nips/nip-05.js +158 -0
  89. package/dist/cjs/nips/nip-05.js.map +1 -0
  90. package/dist/cjs/nips/nip-09.d.ts +93 -0
  91. package/dist/cjs/nips/nip-09.d.ts.map +1 -0
  92. package/dist/cjs/nips/nip-09.js +180 -0
  93. package/dist/cjs/nips/nip-09.js.map +1 -0
  94. package/dist/cjs/nips/nip-11.d.ts +65 -0
  95. package/dist/cjs/nips/nip-11.d.ts.map +1 -0
  96. package/dist/cjs/nips/nip-11.js +161 -0
  97. package/dist/cjs/nips/nip-11.js.map +1 -0
  98. package/dist/cjs/nips/nip-13.d.ts +74 -0
  99. package/dist/cjs/nips/nip-13.d.ts.map +1 -0
  100. package/dist/cjs/nips/nip-13.js +136 -0
  101. package/dist/cjs/nips/nip-13.js.map +1 -0
  102. package/dist/cjs/nips/nip-15.d.ts +84 -0
  103. package/dist/cjs/nips/nip-15.d.ts.map +1 -0
  104. package/dist/cjs/nips/nip-15.js +102 -0
  105. package/dist/cjs/nips/nip-15.js.map +1 -0
  106. package/dist/cjs/nips/nip-16.d.ts +89 -0
  107. package/dist/cjs/nips/nip-16.d.ts.map +1 -0
  108. package/dist/cjs/nips/nip-16.js +157 -0
  109. package/dist/cjs/nips/nip-16.js.map +1 -0
  110. package/dist/cjs/nips/nip-19.d.ts +29 -0
  111. package/dist/cjs/nips/nip-19.d.ts.map +1 -0
  112. package/dist/cjs/nips/nip-19.js +112 -0
  113. package/dist/cjs/nips/nip-19.js.map +1 -0
  114. package/dist/cjs/nips/nip-20.d.ts +60 -0
  115. package/dist/cjs/nips/nip-20.d.ts.map +1 -0
  116. package/dist/cjs/nips/nip-20.js +102 -0
  117. package/dist/cjs/nips/nip-20.js.map +1 -0
  118. package/dist/cjs/nips/nip-22.d.ts +90 -0
  119. package/dist/cjs/nips/nip-22.d.ts.map +1 -0
  120. package/dist/cjs/nips/nip-22.js +149 -0
  121. package/dist/cjs/nips/nip-22.js.map +1 -0
  122. package/dist/cjs/nips/nip-26.d.ts +53 -0
  123. package/dist/cjs/nips/nip-26.d.ts.map +1 -0
  124. package/dist/cjs/nips/nip-26.js +147 -0
  125. package/dist/cjs/nips/nip-26.js.map +1 -0
  126. package/dist/cjs/nips/nip-28.d.ts +104 -0
  127. package/dist/cjs/nips/nip-28.d.ts.map +1 -0
  128. package/dist/cjs/nips/nip-28.js +164 -0
  129. package/dist/cjs/nips/nip-28.js.map +1 -0
  130. package/dist/cjs/nips/nip-33.d.ts +95 -0
  131. package/dist/cjs/nips/nip-33.d.ts.map +1 -0
  132. package/dist/cjs/nips/nip-33.js +135 -0
  133. package/dist/cjs/nips/nip-33.js.map +1 -0
  134. package/dist/cjs/transport/base.d.ts +54 -0
  135. package/dist/cjs/transport/base.d.ts.map +1 -0
  136. package/dist/cjs/transport/base.js +109 -0
  137. package/dist/cjs/transport/base.js.map +1 -0
  138. package/dist/cjs/transport/websocket.d.ts +24 -0
  139. package/dist/cjs/transport/websocket.d.ts.map +1 -0
  140. package/dist/cjs/transport/websocket.js +136 -0
  141. package/dist/cjs/transport/websocket.js.map +1 -0
  142. package/dist/cjs/types/events.d.ts +74 -0
  143. package/dist/cjs/types/events.d.ts.map +1 -0
  144. package/dist/cjs/types/events.js +7 -0
  145. package/dist/cjs/types/events.js.map +1 -0
  146. package/dist/cjs/types/filters.d.ts +20 -0
  147. package/dist/cjs/types/filters.d.ts.map +1 -0
  148. package/dist/cjs/types/filters.js +7 -0
  149. package/dist/cjs/types/filters.js.map +1 -0
  150. package/dist/cjs/types/handlers.d.ts +81 -0
  151. package/dist/cjs/types/handlers.d.ts.map +1 -0
  152. package/dist/cjs/types/handlers.js +7 -0
  153. package/dist/cjs/types/handlers.js.map +1 -0
  154. package/dist/cjs/types/index.d.ts +144 -0
  155. package/dist/cjs/types/index.d.ts.map +1 -0
  156. package/dist/cjs/types/index.js +37 -0
  157. package/dist/cjs/types/index.js.map +1 -0
  158. package/dist/cjs/types/logger.d.ts +41 -0
  159. package/dist/cjs/types/logger.d.ts.map +1 -0
  160. package/dist/cjs/types/logger.js +7 -0
  161. package/dist/cjs/types/logger.js.map +1 -0
  162. package/dist/cjs/types/messages.d.ts +133 -0
  163. package/dist/cjs/types/messages.d.ts.map +1 -0
  164. package/dist/cjs/types/messages.js +46 -0
  165. package/dist/cjs/types/messages.js.map +1 -0
  166. package/dist/cjs/types/nostr.d.ts +134 -0
  167. package/dist/cjs/types/nostr.d.ts.map +1 -0
  168. package/dist/cjs/types/nostr.js +7 -0
  169. package/dist/cjs/types/nostr.js.map +1 -0
  170. package/dist/cjs/types/options.d.ts +155 -0
  171. package/dist/cjs/types/options.d.ts.map +1 -0
  172. package/dist/cjs/types/options.js +7 -0
  173. package/dist/cjs/types/options.js.map +1 -0
  174. package/dist/cjs/types/priority.d.ts +13 -0
  175. package/dist/cjs/types/priority.d.ts.map +1 -0
  176. package/dist/cjs/types/priority.js +17 -0
  177. package/dist/cjs/types/priority.js.map +1 -0
  178. package/dist/cjs/types/relays.d.ts +27 -0
  179. package/dist/cjs/types/relays.d.ts.map +1 -0
  180. package/dist/cjs/types/relays.js +7 -0
  181. package/dist/cjs/types/relays.js.map +1 -0
  182. package/dist/cjs/types/scoring.d.ts +59 -0
  183. package/dist/cjs/types/scoring.d.ts.map +1 -0
  184. package/dist/cjs/types/scoring.js +34 -0
  185. package/dist/cjs/types/scoring.js.map +1 -0
  186. package/dist/cjs/types/socket.d.ts +98 -0
  187. package/dist/cjs/types/socket.d.ts.map +1 -0
  188. package/dist/cjs/types/socket.js +7 -0
  189. package/dist/cjs/types/socket.js.map +1 -0
  190. package/dist/cjs/types/transport.d.ts +98 -0
  191. package/dist/cjs/types/transport.d.ts.map +1 -0
  192. package/dist/cjs/types/transport.js +7 -0
  193. package/dist/cjs/types/transport.js.map +1 -0
  194. package/dist/cjs/types/validation.d.ts +51 -0
  195. package/dist/cjs/types/validation.d.ts.map +1 -0
  196. package/dist/cjs/types/validation.js +7 -0
  197. package/dist/cjs/types/validation.js.map +1 -0
  198. package/dist/cjs/types/websocket.d.ts +250 -0
  199. package/dist/cjs/types/websocket.d.ts.map +1 -0
  200. package/dist/cjs/types/websocket.js +7 -0
  201. package/dist/cjs/types/websocket.js.map +1 -0
  202. package/dist/cjs/utils/http.d.ts +11 -0
  203. package/dist/cjs/utils/http.d.ts.map +1 -0
  204. package/dist/cjs/utils/http.js +28 -0
  205. package/dist/cjs/utils/http.js.map +1 -0
  206. package/dist/cjs/utils/logger.d.ts +26 -0
  207. package/dist/cjs/utils/logger.d.ts.map +1 -0
  208. package/dist/cjs/utils/logger.js +43 -0
  209. package/dist/cjs/utils/logger.js.map +1 -0
  210. package/dist/cjs/utils/metrics.d.ts +81 -0
  211. package/dist/cjs/utils/metrics.d.ts.map +1 -0
  212. package/dist/cjs/utils/metrics.js +211 -0
  213. package/dist/cjs/utils/metrics.js.map +1 -0
  214. package/dist/cjs/utils/rate-limiter.d.ts +86 -0
  215. package/dist/cjs/utils/rate-limiter.d.ts.map +1 -0
  216. package/dist/cjs/utils/rate-limiter.js +183 -0
  217. package/dist/cjs/utils/rate-limiter.js.map +1 -0
  218. package/dist/core/client.d.ts +21 -80
  219. package/dist/core/client.d.ts.map +1 -0
  220. package/dist/core/client.js +110 -316
  221. package/dist/core/client.js.map +1 -0
  222. package/dist/core/nostr-server.d.ts +1 -0
  223. package/dist/core/nostr-server.d.ts.map +1 -0
  224. package/dist/core/nostr-server.js +1 -0
  225. package/dist/core/nostr-server.js.map +1 -0
  226. package/dist/core/queue.d.ts +22 -45
  227. package/dist/core/queue.d.ts.map +1 -0
  228. package/dist/core/queue.js +72 -79
  229. package/dist/core/queue.js.map +1 -0
  230. package/dist/core/server.d.ts +2 -0
  231. package/dist/core/server.d.ts.map +1 -0
  232. package/dist/core/server.js +29 -13
  233. package/dist/core/server.js.map +1 -0
  234. package/dist/crypto/bech32.d.ts +1 -0
  235. package/dist/crypto/bech32.d.ts.map +1 -0
  236. package/dist/crypto/bech32.js +1 -0
  237. package/dist/crypto/bech32.js.map +1 -0
  238. package/dist/crypto/handlers.d.ts +8 -0
  239. package/dist/crypto/handlers.d.ts.map +1 -0
  240. package/dist/crypto/handlers.js +27 -2
  241. package/dist/crypto/handlers.js.map +1 -0
  242. package/dist/crypto/index.d.ts +1 -0
  243. package/dist/crypto/index.d.ts.map +1 -0
  244. package/dist/crypto/index.js +1 -0
  245. package/dist/crypto/index.js.map +1 -0
  246. package/dist/endpoints/metrics.d.ts +1 -0
  247. package/dist/endpoints/metrics.d.ts.map +1 -0
  248. package/dist/endpoints/metrics.js +1 -0
  249. package/dist/endpoints/metrics.js.map +1 -0
  250. package/dist/index.d.ts +1 -0
  251. package/dist/index.d.ts.map +1 -0
  252. package/dist/index.js +1 -0
  253. package/dist/index.js.map +1 -0
  254. package/dist/nips/index.d.ts +1 -0
  255. package/dist/nips/index.d.ts.map +1 -0
  256. package/dist/nips/index.js +1 -0
  257. package/dist/nips/index.js.map +1 -0
  258. package/dist/nips/nip-01.d.ts +4 -3
  259. package/dist/nips/nip-01.d.ts.map +1 -0
  260. package/dist/nips/nip-01.js +18 -29
  261. package/dist/nips/nip-01.js.map +1 -0
  262. package/dist/nips/nip-02.d.ts +2 -2
  263. package/dist/nips/nip-02.d.ts.map +1 -0
  264. package/dist/nips/nip-02.js +14 -25
  265. package/dist/nips/nip-02.js.map +1 -0
  266. package/dist/nips/nip-04.d.ts +1 -0
  267. package/dist/nips/nip-04.d.ts.map +1 -0
  268. package/dist/nips/nip-04.js +16 -23
  269. package/dist/nips/nip-04.js.map +1 -0
  270. package/dist/nips/nip-05.d.ts +4 -2
  271. package/dist/nips/nip-05.d.ts.map +1 -0
  272. package/dist/nips/nip-05.js +1 -0
  273. package/dist/nips/nip-05.js.map +1 -0
  274. package/dist/nips/nip-09.d.ts +2 -1
  275. package/dist/nips/nip-09.d.ts.map +1 -0
  276. package/dist/nips/nip-09.js +7 -25
  277. package/dist/nips/nip-09.js.map +1 -0
  278. package/dist/nips/nip-11.d.ts +1 -0
  279. package/dist/nips/nip-11.d.ts.map +1 -0
  280. package/dist/nips/nip-11.js +1 -0
  281. package/dist/nips/nip-11.js.map +1 -0
  282. package/dist/nips/nip-13.d.ts +1 -0
  283. package/dist/nips/nip-13.d.ts.map +1 -0
  284. package/dist/nips/nip-13.js +3 -2
  285. package/dist/nips/nip-13.js.map +1 -0
  286. package/dist/nips/nip-15.d.ts +1 -0
  287. package/dist/nips/nip-15.d.ts.map +1 -0
  288. package/dist/nips/nip-15.js +2 -6
  289. package/dist/nips/nip-15.js.map +1 -0
  290. package/dist/nips/nip-16.d.ts +1 -0
  291. package/dist/nips/nip-16.d.ts.map +1 -0
  292. package/dist/nips/nip-16.js +3 -2
  293. package/dist/nips/nip-16.js.map +1 -0
  294. package/dist/nips/nip-19.d.ts +1 -0
  295. package/dist/nips/nip-19.d.ts.map +1 -0
  296. package/dist/nips/nip-19.js +1 -0
  297. package/dist/nips/nip-19.js.map +1 -0
  298. package/dist/nips/nip-20.d.ts +2 -1
  299. package/dist/nips/nip-20.d.ts.map +1 -0
  300. package/dist/nips/nip-20.js +20 -20
  301. package/dist/nips/nip-20.js.map +1 -0
  302. package/dist/nips/nip-22.d.ts +1 -0
  303. package/dist/nips/nip-22.d.ts.map +1 -0
  304. package/dist/nips/nip-22.js +4 -3
  305. package/dist/nips/nip-22.js.map +1 -0
  306. package/dist/nips/nip-26.d.ts +1 -0
  307. package/dist/nips/nip-26.d.ts.map +1 -0
  308. package/dist/nips/nip-26.js +1 -0
  309. package/dist/nips/nip-26.js.map +1 -0
  310. package/dist/nips/nip-28.d.ts +1 -0
  311. package/dist/nips/nip-28.d.ts.map +1 -0
  312. package/dist/nips/nip-28.js +17 -31
  313. package/dist/nips/nip-28.js.map +1 -0
  314. package/dist/nips/nip-33.d.ts +1 -0
  315. package/dist/nips/nip-33.d.ts.map +1 -0
  316. package/dist/nips/nip-33.js +7 -12
  317. package/dist/nips/nip-33.js.map +1 -0
  318. package/dist/transport/base.d.ts +4 -4
  319. package/dist/transport/base.d.ts.map +1 -0
  320. package/dist/transport/base.js +1 -0
  321. package/dist/transport/base.js.map +1 -0
  322. package/dist/transport/websocket.d.ts +2 -0
  323. package/dist/transport/websocket.d.ts.map +1 -0
  324. package/dist/transport/websocket.js +7 -0
  325. package/dist/transport/websocket.js.map +1 -0
  326. package/dist/types/events.d.ts +12 -1
  327. package/dist/types/events.d.ts.map +1 -0
  328. package/dist/types/events.js +2 -1
  329. package/dist/types/events.js.map +1 -0
  330. package/dist/types/filters.d.ts +1 -0
  331. package/dist/types/filters.d.ts.map +1 -0
  332. package/dist/types/filters.js +1 -0
  333. package/dist/types/filters.js.map +1 -0
  334. package/dist/types/handlers.d.ts +1 -0
  335. package/dist/types/handlers.d.ts.map +1 -0
  336. package/dist/types/handlers.js +1 -0
  337. package/dist/types/handlers.js.map +1 -0
  338. package/dist/types/index.d.ts +13 -6
  339. package/dist/types/index.d.ts.map +1 -0
  340. package/dist/types/index.js +2 -3
  341. package/dist/types/index.js.map +1 -0
  342. package/dist/types/logger.d.ts +1 -0
  343. package/dist/types/logger.d.ts.map +1 -0
  344. package/dist/types/logger.js +1 -0
  345. package/dist/types/logger.js.map +1 -0
  346. package/dist/types/messages.d.ts +68 -70
  347. package/dist/types/messages.d.ts.map +1 -0
  348. package/dist/types/messages.js +28 -26
  349. package/dist/types/messages.js.map +1 -0
  350. package/dist/types/nostr.d.ts +3 -2
  351. package/dist/types/nostr.d.ts.map +1 -0
  352. package/dist/types/nostr.js +1 -0
  353. package/dist/types/nostr.js.map +1 -0
  354. package/dist/types/options.d.ts +1 -0
  355. package/dist/types/options.d.ts.map +1 -0
  356. package/dist/types/options.js +1 -0
  357. package/dist/types/options.js.map +1 -0
  358. package/dist/types/priority.d.ts +13 -0
  359. package/dist/types/priority.d.ts.map +1 -0
  360. package/dist/types/priority.js +14 -0
  361. package/dist/types/priority.js.map +1 -0
  362. package/dist/types/relays.d.ts +1 -0
  363. package/dist/types/relays.d.ts.map +1 -0
  364. package/dist/types/relays.js +1 -0
  365. package/dist/types/relays.js.map +1 -0
  366. package/dist/types/scoring.d.ts +19 -7
  367. package/dist/types/scoring.d.ts.map +1 -0
  368. package/dist/types/scoring.js +2 -1
  369. package/dist/types/scoring.js.map +1 -0
  370. package/dist/types/socket.d.ts +1 -2
  371. package/dist/types/socket.d.ts.map +1 -0
  372. package/dist/types/socket.js +1 -0
  373. package/dist/types/socket.js.map +1 -0
  374. package/dist/types/transport.d.ts +1 -0
  375. package/dist/types/transport.d.ts.map +1 -0
  376. package/dist/types/transport.js +1 -0
  377. package/dist/types/transport.js.map +1 -0
  378. package/dist/types/validation.d.ts +1 -0
  379. package/dist/types/validation.d.ts.map +1 -0
  380. package/dist/types/validation.js +1 -0
  381. package/dist/types/validation.js.map +1 -0
  382. package/dist/types/websocket.d.ts +116 -38
  383. package/dist/types/websocket.d.ts.map +1 -0
  384. package/dist/types/websocket.js +2 -1
  385. package/dist/types/websocket.js.map +1 -0
  386. package/dist/utils/http.d.ts +1 -0
  387. package/dist/utils/http.d.ts.map +1 -0
  388. package/dist/utils/http.js +1 -0
  389. package/dist/utils/http.js.map +1 -0
  390. package/dist/utils/logger.d.ts +17 -2
  391. package/dist/utils/logger.d.ts.map +1 -0
  392. package/dist/utils/logger.js +24 -10
  393. package/dist/utils/logger.js.map +1 -0
  394. package/dist/utils/metrics.d.ts +1 -1
  395. package/dist/utils/metrics.d.ts.map +1 -0
  396. package/dist/utils/metrics.js +1 -0
  397. package/dist/utils/metrics.js.map +1 -0
  398. package/dist/utils/rate-limiter.d.ts +1 -0
  399. package/dist/utils/rate-limiter.d.ts.map +1 -0
  400. package/dist/utils/rate-limiter.js +6 -4
  401. package/dist/utils/rate-limiter.js.map +1 -0
  402. package/package.json +14 -2
  403. package/dist/__mocks__/logger.d.ts +0 -9
  404. package/dist/__mocks__/logger.js +0 -6
  405. package/dist/client.d.ts +0 -129
  406. package/dist/client.js +0 -259
  407. package/dist/crypto/schnorr.d.ts +0 -16
  408. package/dist/crypto/schnorr.js +0 -51
  409. package/dist/nostr-server.js +0 -107
  410. package/dist/server.d.ts +0 -27
  411. package/dist/server.js +0 -132
@@ -0,0 +1,84 @@
1
+ /**
2
+ * @file NIP-15: End of Stored Events Notice
3
+ * @module nips/nip-15
4
+ * @see https://github.com/nostr-protocol/nips/blob/master/15.md
5
+ */
6
+ import type { NostrWSMessage } from '../types/messages';
7
+ import type { Logger } from '../types/logger';
8
+ /**
9
+ * Creates an EOSE (End of Stored Events) message
10
+ * @param subscriptionId - Subscription ID
11
+ * @returns {NostrWSMessage} EOSE message
12
+ */
13
+ export declare function createEOSEMessage(subscriptionId: string): NostrWSMessage;
14
+ /**
15
+ * Subscription state manager interface
16
+ */
17
+ export interface SubscriptionStateManager {
18
+ /**
19
+ * Registers a new subscription
20
+ * @param subscriptionId - Subscription ID
21
+ * @param filter - Subscription filter
22
+ */
23
+ registerSubscription(subscriptionId: string, filter: Record<string, unknown>): void;
24
+ /**
25
+ * Marks a subscription as complete (EOSE sent)
26
+ * @param subscriptionId - Subscription ID
27
+ */
28
+ markComplete(subscriptionId: string): void;
29
+ /**
30
+ * Checks if a subscription is complete
31
+ * @param subscriptionId - Subscription ID
32
+ * @returns {boolean} True if EOSE has been sent
33
+ */
34
+ isComplete(subscriptionId: string): boolean;
35
+ /**
36
+ * Gets subscription filter
37
+ * @param subscriptionId - Subscription ID
38
+ * @returns {Record<string, unknown> | undefined} Subscription filter
39
+ */
40
+ getFilter(subscriptionId: string): Record<string, unknown> | undefined;
41
+ /**
42
+ * Removes a subscription
43
+ * @param subscriptionId - Subscription ID
44
+ */
45
+ removeSubscription(subscriptionId: string): void;
46
+ }
47
+ /**
48
+ * Creates a subscription state manager
49
+ * @param logger - Logger instance
50
+ * @returns {SubscriptionStateManager} Subscription state manager
51
+ */
52
+ export declare function createSubscriptionStateManager(logger: Logger): SubscriptionStateManager;
53
+ /**
54
+ * Pagination handler interface
55
+ */
56
+ export interface PaginationHandler {
57
+ /**
58
+ * Gets next page of events
59
+ * @param subscriptionId - Subscription ID
60
+ * @param pageSize - Number of events per page
61
+ * @returns {Promise<NostrWSMessage[]>} Next page of events
62
+ */
63
+ getNextPage(subscriptionId: string, pageSize: number): Promise<NostrWSMessage[]>;
64
+ /**
65
+ * Checks if more events are available
66
+ * @param subscriptionId - Subscription ID
67
+ * @returns {boolean} True if more events exist
68
+ */
69
+ hasMoreEvents(subscriptionId: string): boolean;
70
+ /**
71
+ * Updates pagination state with new events
72
+ * @param subscriptionId - Subscription ID
73
+ * @param events - New events
74
+ */
75
+ updateState(subscriptionId: string, events: NostrWSMessage[]): void;
76
+ }
77
+ /**
78
+ * Creates a pagination handler
79
+ * @param stateManager - Subscription state manager
80
+ * @param logger - Logger instance
81
+ * @returns {PaginationHandler} Pagination handler
82
+ */
83
+ export declare function createPaginationHandler(stateManager: SubscriptionStateManager, logger: Logger): PaginationHandler;
84
+ //# sourceMappingURL=nip-15.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nip-15.d.ts","sourceRoot":"","sources":["../../../src/nips/nip-15.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,cAAc,CAExE;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;;OAIG;IACH,oBAAoB,CAClB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,IAAI,CAAC;IAER;;;OAGG;IACH,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3C;;;;OAIG;IACH,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC;IAE5C;;;;OAIG;IACH,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAEvE;;;OAGG;IACH,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAClD;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,MAAM,GACb,wBAAwB,CA0C1B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,WAAW,CACT,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAE7B;;;;OAIG;IACH,aAAa,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC;IAE/C;;;;OAIG;IACH,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;CACrE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,wBAAwB,EACtC,MAAM,EAAE,MAAM,GACb,iBAAiB,CAuDnB"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ /**
3
+ * @file NIP-15: End of Stored Events Notice
4
+ * @module nips/nip-15
5
+ * @see https://github.com/nostr-protocol/nips/blob/master/15.md
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.createEOSEMessage = createEOSEMessage;
9
+ exports.createSubscriptionStateManager = createSubscriptionStateManager;
10
+ exports.createPaginationHandler = createPaginationHandler;
11
+ /**
12
+ * Creates an EOSE (End of Stored Events) message
13
+ * @param subscriptionId - Subscription ID
14
+ * @returns {NostrWSMessage} EOSE message
15
+ */
16
+ function createEOSEMessage(subscriptionId) {
17
+ return ['EOSE', subscriptionId];
18
+ }
19
+ /**
20
+ * Creates a subscription state manager
21
+ * @param logger - Logger instance
22
+ * @returns {SubscriptionStateManager} Subscription state manager
23
+ */
24
+ function createSubscriptionStateManager(logger) {
25
+ const subscriptions = new Map();
26
+ return {
27
+ registerSubscription(subscriptionId, filter) {
28
+ subscriptions.set(subscriptionId, {
29
+ filter,
30
+ complete: false,
31
+ timestamp: Date.now()
32
+ });
33
+ },
34
+ markComplete(subscriptionId) {
35
+ const state = subscriptions.get(subscriptionId);
36
+ if (state) {
37
+ state.complete = true;
38
+ }
39
+ else {
40
+ logger.debug(`Attempting to mark unknown subscription ${subscriptionId} as complete`);
41
+ }
42
+ },
43
+ isComplete(subscriptionId) {
44
+ return subscriptions.get(subscriptionId)?.complete || false;
45
+ },
46
+ getFilter(subscriptionId) {
47
+ return subscriptions.get(subscriptionId)?.filter;
48
+ },
49
+ removeSubscription(subscriptionId) {
50
+ subscriptions.delete(subscriptionId);
51
+ }
52
+ };
53
+ }
54
+ /**
55
+ * Creates a pagination handler
56
+ * @param stateManager - Subscription state manager
57
+ * @param logger - Logger instance
58
+ * @returns {PaginationHandler} Pagination handler
59
+ */
60
+ function createPaginationHandler(stateManager, logger) {
61
+ const paginationStates = new Map();
62
+ return {
63
+ async getNextPage(subscriptionId, pageSize) {
64
+ const state = paginationStates.get(subscriptionId);
65
+ if (!state) {
66
+ logger.debug(`No pagination state for subscription ${subscriptionId}`);
67
+ return [];
68
+ }
69
+ const start = state.currentIndex;
70
+ const end = Math.min(start + pageSize, state.events.length);
71
+ state.currentIndex = end;
72
+ state.hasMore = end < state.events.length;
73
+ // If this is the last page, send EOSE
74
+ if (!state.hasMore && !stateManager.isComplete(subscriptionId)) {
75
+ stateManager.markComplete(subscriptionId);
76
+ return [
77
+ ...state.events.slice(start, end),
78
+ createEOSEMessage(subscriptionId)
79
+ ];
80
+ }
81
+ return state.events.slice(start, end);
82
+ },
83
+ hasMoreEvents(subscriptionId) {
84
+ return paginationStates.get(subscriptionId)?.hasMore || false;
85
+ },
86
+ updateState(subscriptionId, events) {
87
+ const existing = paginationStates.get(subscriptionId);
88
+ if (existing) {
89
+ existing.events.push(...events);
90
+ existing.hasMore = true;
91
+ }
92
+ else {
93
+ paginationStates.set(subscriptionId, {
94
+ events,
95
+ currentIndex: 0,
96
+ hasMore: true
97
+ });
98
+ }
99
+ }
100
+ };
101
+ }
102
+ //# sourceMappingURL=nip-15.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nip-15.js","sourceRoot":"","sources":["../../../src/nips/nip-15.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAUH,8CAEC;AAgDD,wEA4CC;AAsCD,0DA0DC;AAnMD;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,cAAsB;IACtD,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAClC,CAAC;AA2CD;;;;GAIG;AACH,SAAgB,8BAA8B,CAC5C,MAAc;IAQd,MAAM,aAAa,GAAG,IAAI,GAAG,EAA6B,CAAC;IAE3D,OAAO;QACL,oBAAoB,CAClB,cAAsB,EACtB,MAA+B;YAE/B,aAAa,CAAC,GAAG,CAAC,cAAc,EAAE;gBAChC,MAAM;gBACN,QAAQ,EAAE,KAAK;gBACf,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC,CAAC;QACL,CAAC;QAED,YAAY,CAAC,cAAsB;YACjC,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAChD,IAAI,KAAK,EAAE,CAAC;gBACV,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC,2CAA2C,cAAc,cAAc,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;QAED,UAAU,CAAC,cAAsB;YAC/B,OAAO,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,QAAQ,IAAI,KAAK,CAAC;QAC9D,CAAC;QAED,SAAS,CAAC,cAAsB;YAC9B,OAAO,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;QACnD,CAAC;QAED,kBAAkB,CAAC,cAAsB;YACvC,aAAa,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACvC,CAAC;KACF,CAAC;AACJ,CAAC;AAgCD;;;;;GAKG;AACH,SAAgB,uBAAuB,CACrC,YAAsC,EACtC,MAAc;IAQd,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA2B,CAAC;IAE5D,OAAO;QACL,KAAK,CAAC,WAAW,CACf,cAAsB,EACtB,QAAgB;YAEhB,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACnD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,CAAC,KAAK,CAAC,wCAAwC,cAAc,EAAE,CAAC,CAAC;gBACvE,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC;YACjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5D,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;YACzB,KAAK,CAAC,OAAO,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;YAE1C,sCAAsC;YACtC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC/D,YAAY,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;gBAC1C,OAAO;oBACL,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;oBACjC,iBAAiB,CAAC,cAAc,CAAC;iBAClC,CAAC;YACJ,CAAC;YAED,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;QAED,aAAa,CAAC,cAAsB;YAClC,OAAO,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,OAAO,IAAI,KAAK,CAAC;QAChE,CAAC;QAED,WAAW,CAAC,cAAsB,EAAE,MAAwB;YAC1D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACtD,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;gBAChC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,gBAAgB,CAAC,GAAG,CAAC,cAAc,EAAE;oBACnC,MAAM;oBACN,YAAY,EAAE,CAAC;oBACf,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;YACL,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * @file NIP-16: Event Treatment
3
+ * @module nips/nip-16
4
+ * @see https://github.com/nostr-protocol/nips/blob/master/16.md
5
+ */
6
+ import type { NostrWSMessage } from '../types/messages';
7
+ import type { Logger } from '../types/logger';
8
+ /**
9
+ * Event treatment types
10
+ */
11
+ export declare const EventTreatment: {
12
+ readonly EPHEMERAL: "ephemeral";
13
+ readonly REPLACEABLE: "replaceable";
14
+ readonly PERSISTENT: "persistent";
15
+ };
16
+ export type EventTreatmentType = typeof EventTreatment[keyof typeof EventTreatment];
17
+ /**
18
+ * Replaceable event kinds (10000-19999)
19
+ */
20
+ export declare const REPLACEABLE_EVENT_KINDS: {
21
+ METADATA: number;
22
+ CONTACT_LIST: number;
23
+ CHANNEL_METADATA: number;
24
+ CHANNEL_MESSAGE: number;
25
+ USER_STATUS: number;
26
+ USER_PROFILE: number;
27
+ RELAY_LIST: number;
28
+ BOOKMARKS: number;
29
+ MUTE_LIST: number;
30
+ PIN_LIST: number;
31
+ RELAY_METADATA: number;
32
+ CLIENT_PREFERENCES: number;
33
+ CUSTOM_START: number;
34
+ CUSTOM_END: number;
35
+ };
36
+ /**
37
+ * Ephemeral event kinds (20000-29999)
38
+ */
39
+ export declare const EPHEMERAL_EVENT_KINDS: {
40
+ TYPING_INDICATOR: number;
41
+ ONLINE_STATUS: number;
42
+ USER_PRESENCE: number;
43
+ CUSTOM_START: number;
44
+ CUSTOM_END: number;
45
+ };
46
+ /**
47
+ * Determines event treatment type
48
+ * @param eventKind - Event kind number
49
+ * @returns {EventTreatmentType} Event treatment type
50
+ */
51
+ export declare function getEventTreatment(eventKind: number): EventTreatmentType;
52
+ /**
53
+ * Validates event treatment rules
54
+ * @param message - Message to validate
55
+ * @param logger - Logger instance
56
+ * @returns {boolean} True if event follows treatment rules
57
+ */
58
+ export declare function validateEventTreatment(message: NostrWSMessage, logger: Logger): boolean;
59
+ /**
60
+ * Storage management interface for different event types
61
+ */
62
+ export interface EventStorageManager {
63
+ /**
64
+ * Determines if an event should be stored
65
+ * @param event - Event to check
66
+ * @returns {boolean} True if event should be stored
67
+ */
68
+ shouldStore(event: Record<string, unknown>): boolean;
69
+ /**
70
+ * Gets storage duration for an event
71
+ * @param event - Event to check
72
+ * @returns {number} Storage duration in seconds (0 for permanent)
73
+ */
74
+ getStorageDuration(event: Record<string, unknown>): number;
75
+ /**
76
+ * Checks if an event should replace another
77
+ * @param newEvent - New event
78
+ * @param existingEvent - Existing event
79
+ * @returns {boolean} True if new event should replace existing
80
+ */
81
+ shouldReplace(newEvent: Record<string, unknown>, existingEvent: Record<string, unknown>): boolean;
82
+ }
83
+ /**
84
+ * Creates default event storage manager
85
+ * @param logger - Logger instance
86
+ * @returns {EventStorageManager} Storage manager
87
+ */
88
+ export declare function createEventStorageManager(logger: Logger): EventStorageManager;
89
+ //# sourceMappingURL=nip-16.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nip-16.d.ts","sourceRoot":"","sources":["../../../src/nips/nip-16.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,cAAc;;;;CAIjB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,OAAO,cAAc,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAEpF;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;CAenC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;CAMjC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,CAQvE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,MAAM,GACb,OAAO,CAuCT;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;IAErD;;;;OAIG;IACH,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;IAE3D;;;;;OAKG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;CACnG;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAwD7E"}
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ /**
3
+ * @file NIP-16: Event Treatment
4
+ * @module nips/nip-16
5
+ * @see https://github.com/nostr-protocol/nips/blob/master/16.md
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.EPHEMERAL_EVENT_KINDS = exports.REPLACEABLE_EVENT_KINDS = exports.EventTreatment = void 0;
9
+ exports.getEventTreatment = getEventTreatment;
10
+ exports.validateEventTreatment = validateEventTreatment;
11
+ exports.createEventStorageManager = createEventStorageManager;
12
+ /**
13
+ * Event treatment types
14
+ */
15
+ exports.EventTreatment = {
16
+ EPHEMERAL: 'ephemeral',
17
+ REPLACEABLE: 'replaceable',
18
+ PERSISTENT: 'persistent'
19
+ };
20
+ /**
21
+ * Replaceable event kinds (10000-19999)
22
+ */
23
+ exports.REPLACEABLE_EVENT_KINDS = {
24
+ METADATA: 0,
25
+ CONTACT_LIST: 3,
26
+ CHANNEL_METADATA: 41,
27
+ CHANNEL_MESSAGE: 42,
28
+ USER_STATUS: 10000,
29
+ USER_PROFILE: 10001,
30
+ RELAY_LIST: 10002,
31
+ BOOKMARKS: 10003,
32
+ MUTE_LIST: 10004,
33
+ PIN_LIST: 10005,
34
+ RELAY_METADATA: 10010,
35
+ CLIENT_PREFERENCES: 10015,
36
+ CUSTOM_START: 11000,
37
+ CUSTOM_END: 19999
38
+ };
39
+ /**
40
+ * Ephemeral event kinds (20000-29999)
41
+ */
42
+ exports.EPHEMERAL_EVENT_KINDS = {
43
+ TYPING_INDICATOR: 20001,
44
+ ONLINE_STATUS: 20002,
45
+ USER_PRESENCE: 20003,
46
+ CUSTOM_START: 21000,
47
+ CUSTOM_END: 29999
48
+ };
49
+ /**
50
+ * Determines event treatment type
51
+ * @param eventKind - Event kind number
52
+ * @returns {EventTreatmentType} Event treatment type
53
+ */
54
+ function getEventTreatment(eventKind) {
55
+ if (eventKind >= 20000 && eventKind < 30000) {
56
+ return exports.EventTreatment.EPHEMERAL;
57
+ }
58
+ if (eventKind >= 10000 && eventKind < 20000 || [0, 3, 41, 42].includes(eventKind)) {
59
+ return exports.EventTreatment.REPLACEABLE;
60
+ }
61
+ return exports.EventTreatment.PERSISTENT;
62
+ }
63
+ /**
64
+ * Validates event treatment rules
65
+ * @param message - Message to validate
66
+ * @param logger - Logger instance
67
+ * @returns {boolean} True if event follows treatment rules
68
+ */
69
+ function validateEventTreatment(message, logger) {
70
+ try {
71
+ if (!Array.isArray(message) || message[0] !== 'EVENT') {
72
+ return true; // Not an event message
73
+ }
74
+ const event = message[1];
75
+ const kind = event.kind;
76
+ const treatment = getEventTreatment(kind);
77
+ // Validate based on treatment type
78
+ switch (treatment) {
79
+ case exports.EventTreatment.EPHEMERAL:
80
+ // Ephemeral events shouldn't have large content
81
+ if (typeof event.content === 'string' && event.content.length > 1000) {
82
+ logger.debug('Ephemeral event content too large');
83
+ return false;
84
+ }
85
+ break;
86
+ case exports.EventTreatment.REPLACEABLE:
87
+ // Replaceable events must have proper 'd' tag for uniqueness
88
+ if (Array.isArray(event.tags)) {
89
+ const dTags = event.tags.filter(tag => Array.isArray(tag) && tag[0] === 'd');
90
+ if (dTags.length > 1) {
91
+ logger.debug('Multiple d tags in replaceable event');
92
+ return false;
93
+ }
94
+ }
95
+ break;
96
+ }
97
+ return true;
98
+ }
99
+ catch (error) {
100
+ logger.error('Error validating event treatment:', error);
101
+ return false;
102
+ }
103
+ }
104
+ /**
105
+ * Creates default event storage manager
106
+ * @param logger - Logger instance
107
+ * @returns {EventStorageManager} Storage manager
108
+ */
109
+ function createEventStorageManager(logger) {
110
+ return {
111
+ shouldStore(event) {
112
+ const kind = event.kind;
113
+ const treatment = getEventTreatment(kind);
114
+ // Don't store ephemeral events by default
115
+ if (treatment === exports.EventTreatment.EPHEMERAL) {
116
+ return false;
117
+ }
118
+ return true;
119
+ },
120
+ getStorageDuration(event) {
121
+ const kind = event.kind;
122
+ const treatment = getEventTreatment(kind);
123
+ switch (treatment) {
124
+ case exports.EventTreatment.EPHEMERAL:
125
+ return 300; // 5 minutes
126
+ case exports.EventTreatment.REPLACEABLE:
127
+ return 0; // Permanent until replaced
128
+ default:
129
+ return 0; // Permanent
130
+ }
131
+ },
132
+ shouldReplace(newEvent, existingEvent) {
133
+ try {
134
+ const kind = newEvent.kind;
135
+ if (kind !== existingEvent.kind)
136
+ return false;
137
+ const treatment = getEventTreatment(kind);
138
+ if (treatment !== exports.EventTreatment.REPLACEABLE)
139
+ return false;
140
+ // Check 'd' tag for parameterized replaceable events
141
+ if (Array.isArray(newEvent.tags) && Array.isArray(existingEvent.tags)) {
142
+ const newDTag = newEvent.tags.find(tag => Array.isArray(tag) && tag[0] === 'd')?.[1];
143
+ const existingDTag = existingEvent.tags.find(tag => Array.isArray(tag) && tag[0] === 'd')?.[1];
144
+ if (newDTag !== existingDTag)
145
+ return false;
146
+ }
147
+ // Replace if new event is newer
148
+ return newEvent.created_at > existingEvent.created_at;
149
+ }
150
+ catch (error) {
151
+ logger.error('Error checking event replacement:', error);
152
+ return false;
153
+ }
154
+ }
155
+ };
156
+ }
157
+ //# sourceMappingURL=nip-16.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nip-16.js","sourceRoot":"","sources":["../../../src/nips/nip-16.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @file NIP-19: bech32-encoded entities
3
+ * @module nips/nip-19
4
+ */
5
+ /**
6
+ * Encode a public key to bech32 npub format
7
+ */
8
+ export declare function encodePubkey(pubkey: string): string;
9
+ /**
10
+ * Encode a private key to bech32 nsec format
11
+ */
12
+ export declare function encodePrivkey(privkey: string): string;
13
+ /**
14
+ * Decode a bech32 npub to hex pubkey
15
+ */
16
+ export declare function decodePubkey(npub: string): string;
17
+ /**
18
+ * Decode a bech32 nsec to hex privkey
19
+ */
20
+ export declare function decodePrivkey(nsec: string): string;
21
+ /**
22
+ * Process tags containing bech32-encoded entities
23
+ */
24
+ export declare function processBech32Tags(tags: string[][]): string[][];
25
+ /**
26
+ * Encode tags containing hex pubkeys to bech32
27
+ */
28
+ export declare function encodeBech32Tags(tags: string[][]): string[][];
29
+ //# sourceMappingURL=nip-19.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nip-19.d.ts","sourceRoot":"","sources":["../../../src/nips/nip-19.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQnD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQrD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYjD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYlD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CAa9D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CAa7D"}
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ /**
3
+ * @file NIP-19: bech32-encoded entities
4
+ * @module nips/nip-19
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.encodePubkey = encodePubkey;
8
+ exports.encodePrivkey = encodePrivkey;
9
+ exports.decodePubkey = decodePubkey;
10
+ exports.decodePrivkey = decodePrivkey;
11
+ exports.processBech32Tags = processBech32Tags;
12
+ exports.encodeBech32Tags = encodeBech32Tags;
13
+ const logger_1 = require("../utils/logger");
14
+ const bech32_1 = require("../crypto/bech32");
15
+ const logger = (0, logger_1.getLogger)('NIP-19');
16
+ /**
17
+ * Encode a public key to bech32 npub format
18
+ */
19
+ function encodePubkey(pubkey) {
20
+ try {
21
+ return (0, bech32_1.encodeToBech32)('npub', pubkey);
22
+ }
23
+ catch (error) {
24
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
25
+ logger.error(`Failed to encode pubkey: ${errorMessage}`);
26
+ throw new Error(`Failed to encode pubkey: ${errorMessage}`);
27
+ }
28
+ }
29
+ /**
30
+ * Encode a private key to bech32 nsec format
31
+ */
32
+ function encodePrivkey(privkey) {
33
+ try {
34
+ return (0, bech32_1.encodeToBech32)('nsec', privkey);
35
+ }
36
+ catch (error) {
37
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
38
+ logger.error(`Failed to encode private key: ${errorMessage}`);
39
+ throw new Error(`Failed to encode private key: ${errorMessage}`);
40
+ }
41
+ }
42
+ /**
43
+ * Decode a bech32 npub to hex pubkey
44
+ */
45
+ function decodePubkey(npub) {
46
+ try {
47
+ const { prefix, hex } = (0, bech32_1.decodeFromBech32)(npub);
48
+ if (prefix !== 'npub') {
49
+ throw new Error('Invalid prefix for public key');
50
+ }
51
+ return hex;
52
+ }
53
+ catch (error) {
54
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
55
+ logger.error(`Failed to decode pubkey: ${errorMessage}`);
56
+ throw new Error(`Failed to decode pubkey: ${errorMessage}`);
57
+ }
58
+ }
59
+ /**
60
+ * Decode a bech32 nsec to hex privkey
61
+ */
62
+ function decodePrivkey(nsec) {
63
+ try {
64
+ const { prefix, hex } = (0, bech32_1.decodeFromBech32)(nsec);
65
+ if (prefix !== 'nsec') {
66
+ throw new Error('Invalid prefix for private key');
67
+ }
68
+ return hex;
69
+ }
70
+ catch (error) {
71
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
72
+ logger.error(`Failed to decode private key: ${errorMessage}`);
73
+ throw new Error(`Failed to decode private key: ${errorMessage}`);
74
+ }
75
+ }
76
+ /**
77
+ * Process tags containing bech32-encoded entities
78
+ */
79
+ function processBech32Tags(tags) {
80
+ return tags.map(tag => {
81
+ try {
82
+ if (tag[0] === 'p' && tag[1].startsWith('npub')) {
83
+ return [tag[0], decodePubkey(tag[1])];
84
+ }
85
+ return tag;
86
+ }
87
+ catch (error) {
88
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
89
+ logger.debug(`Failed to decode pubkey ${tag[1]}: ${errorMessage}`);
90
+ return tag;
91
+ }
92
+ });
93
+ }
94
+ /**
95
+ * Encode tags containing hex pubkeys to bech32
96
+ */
97
+ function encodeBech32Tags(tags) {
98
+ return tags.map(tag => {
99
+ try {
100
+ if (tag[0] === 'p' && !tag[1].startsWith('npub')) {
101
+ return [tag[0], encodePubkey(tag[1])];
102
+ }
103
+ return tag;
104
+ }
105
+ catch (error) {
106
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
107
+ logger.debug(`Failed to encode pubkey ${tag[1]}: ${errorMessage}`);
108
+ return tag;
109
+ }
110
+ });
111
+ }
112
+ //# sourceMappingURL=nip-19.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nip-19.js","sourceRoot":"","sources":["../../../src/nips/nip-19.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * @file NIP-20 Command Results implementation
3
+ * @module nips/nip-20
4
+ */
5
+ import { NostrWSMessage } from '../types';
6
+ /**
7
+ * Command status types
8
+ */
9
+ export declare enum CommandStatus {
10
+ SUCCESS = "success",
11
+ error = "error",
12
+ PENDING = "pending",
13
+ RATE_LIMITED = "rate_limited",
14
+ AUTH_REQUIRED = "auth_required",
15
+ RESTRICTED = "restricted"
16
+ }
17
+ export type CommandStatusType = CommandStatus;
18
+ /**
19
+ * Command result interface
20
+ */
21
+ export interface CommandResult {
22
+ status: boolean;
23
+ message?: string;
24
+ code?: CommandStatusType;
25
+ details?: Record<string, unknown>;
26
+ }
27
+ /**
28
+ * Represents the data structure for command messages
29
+ * @interface CommandMessageData
30
+ * @property {string} [event_id] - ID of the event this command relates to
31
+ * @property {boolean} [status] - Status of the command execution
32
+ * @property {string} [message] - Human-readable message about the command result
33
+ * @property {CommandStatusType} [code] - Status code of the command result
34
+ * @property {Record<string, unknown>} [details] - Additional details about the command result
35
+ */
36
+ interface CommandMessageData {
37
+ event_id?: string;
38
+ status?: boolean;
39
+ message?: string;
40
+ code?: CommandStatusType;
41
+ details?: Record<string, unknown>;
42
+ }
43
+ /**
44
+ * Validates a command message according to NIP-20
45
+ */
46
+ export declare function validateCommandMessage(message: NostrWSMessage): boolean;
47
+ /**
48
+ * Creates a command result message
49
+ */
50
+ export declare function createCommandResult(data: CommandMessageData): CommandResult;
51
+ /**
52
+ * Creates an OK message
53
+ */
54
+ export declare function createOkMessage(eventId: string, success?: boolean, details?: Record<string, unknown>): NostrWSMessage;
55
+ /**
56
+ * Creates a NOTICE message
57
+ */
58
+ export declare function createCommandNoticeMessage(code: CommandStatusType, message: string, details?: Record<string, unknown>): NostrWSMessage;
59
+ export {};
60
+ //# sourceMappingURL=nip-20.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nip-20.d.ts","sourceRoot":"","sources":["../../../src/nips/nip-20.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAK1C;;GAEG;AACH,oBAAY,aAAa;IACvB,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,UAAU,eAAe;CAC1B;AAED,MAAM,MAAM,iBAAiB,GAAG,aAAa,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;;;;;;;GAQG;AACH,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CA+CvE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,aAAa,CAU3E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,UAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc,CAMlH;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc,CAMtI"}