nostr-websocket-utils 0.3.1 → 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 (410) hide show
  1. package/dist/__mocks__/extendedWsMock.d.ts +6 -8
  2. package/dist/__mocks__/extendedWsMock.d.ts.map +1 -0
  3. package/dist/__mocks__/extendedWsMock.js +1 -0
  4. package/dist/__mocks__/extendedWsMock.js.map +1 -0
  5. package/dist/__mocks__/mockLogger.d.ts +8 -7
  6. package/dist/__mocks__/mockLogger.d.ts.map +1 -0
  7. package/dist/__mocks__/mockLogger.js +1 -0
  8. package/dist/__mocks__/mockLogger.js.map +1 -0
  9. package/dist/__mocks__/mockserver.d.ts +7 -11
  10. package/dist/__mocks__/mockserver.d.ts.map +1 -0
  11. package/dist/__mocks__/mockserver.js +1 -0
  12. package/dist/__mocks__/mockserver.js.map +1 -0
  13. package/dist/__mocks__/wsMock.d.ts +1 -2
  14. package/dist/__mocks__/wsMock.d.ts.map +1 -0
  15. package/dist/__mocks__/wsMock.js +1 -0
  16. package/dist/__mocks__/wsMock.js.map +1 -0
  17. package/dist/cjs/__mocks__/extendedWsMock.d.ts +52 -0
  18. package/dist/cjs/__mocks__/extendedWsMock.d.ts.map +1 -0
  19. package/dist/cjs/__mocks__/extendedWsMock.js +161 -0
  20. package/dist/cjs/__mocks__/extendedWsMock.js.map +1 -0
  21. package/dist/cjs/__mocks__/mockLogger.d.ts +42 -0
  22. package/dist/cjs/__mocks__/mockLogger.d.ts.map +1 -0
  23. package/dist/cjs/__mocks__/mockLogger.js +53 -0
  24. package/dist/cjs/__mocks__/mockLogger.js.map +1 -0
  25. package/dist/cjs/__mocks__/mockserver.d.ts +27 -0
  26. package/dist/cjs/__mocks__/mockserver.d.ts.map +1 -0
  27. package/dist/cjs/__mocks__/mockserver.js +44 -0
  28. package/dist/cjs/__mocks__/mockserver.js.map +1 -0
  29. package/dist/cjs/__mocks__/wsMock.d.ts +25 -0
  30. package/dist/cjs/__mocks__/wsMock.d.ts.map +1 -0
  31. package/dist/cjs/__mocks__/wsMock.js +123 -0
  32. package/dist/cjs/__mocks__/wsMock.js.map +1 -0
  33. package/dist/cjs/core/client.d.ts +35 -0
  34. package/dist/cjs/core/client.d.ts.map +1 -0
  35. package/dist/cjs/core/client.js +161 -0
  36. package/dist/cjs/core/client.js.map +1 -0
  37. package/dist/{nostr-server.d.ts → cjs/core/nostr-server.d.ts} +3 -6
  38. package/dist/cjs/core/nostr-server.d.ts.map +1 -0
  39. package/dist/cjs/core/nostr-server.js +101 -0
  40. package/dist/cjs/core/nostr-server.js.map +1 -0
  41. package/dist/cjs/core/queue.d.ts +38 -0
  42. package/dist/cjs/core/queue.d.ts.map +1 -0
  43. package/dist/cjs/core/queue.js +105 -0
  44. package/dist/cjs/core/queue.js.map +1 -0
  45. package/dist/cjs/core/server.d.ts +29 -0
  46. package/dist/cjs/core/server.d.ts.map +1 -0
  47. package/dist/cjs/core/server.js +134 -0
  48. package/dist/cjs/core/server.js.map +1 -0
  49. package/dist/cjs/crypto/bech32.d.ts +27 -0
  50. package/dist/cjs/crypto/bech32.d.ts.map +1 -0
  51. package/dist/cjs/crypto/bech32.js +170 -0
  52. package/dist/cjs/crypto/bech32.js.map +1 -0
  53. package/dist/cjs/crypto/handlers.d.ts +19 -0
  54. package/dist/cjs/crypto/handlers.d.ts.map +1 -0
  55. package/dist/cjs/crypto/handlers.js +65 -0
  56. package/dist/cjs/crypto/handlers.js.map +1 -0
  57. package/dist/cjs/crypto/index.d.ts +6 -0
  58. package/dist/cjs/crypto/index.d.ts.map +1 -0
  59. package/dist/cjs/crypto/index.js +22 -0
  60. package/dist/cjs/crypto/index.js.map +1 -0
  61. package/dist/cjs/endpoints/metrics.d.ts +30 -0
  62. package/dist/cjs/endpoints/metrics.d.ts.map +1 -0
  63. package/dist/cjs/endpoints/metrics.js +106 -0
  64. package/dist/cjs/endpoints/metrics.js.map +1 -0
  65. package/dist/cjs/index.d.ts +13 -0
  66. package/dist/cjs/index.d.ts.map +1 -0
  67. package/dist/cjs/index.js +40 -0
  68. package/dist/cjs/index.js.map +1 -0
  69. package/dist/cjs/nips/index.d.ts +20 -0
  70. package/dist/cjs/nips/index.d.ts.map +1 -0
  71. package/dist/cjs/nips/index.js +51 -0
  72. package/dist/cjs/nips/index.js.map +1 -0
  73. package/dist/cjs/nips/nip-01.d.ts +35 -0
  74. package/dist/cjs/nips/nip-01.d.ts.map +1 -0
  75. package/dist/cjs/nips/nip-01.js +142 -0
  76. package/dist/cjs/nips/nip-01.js.map +1 -0
  77. package/dist/cjs/nips/nip-02.d.ts +83 -0
  78. package/dist/cjs/nips/nip-02.d.ts.map +1 -0
  79. package/dist/cjs/nips/nip-02.js +119 -0
  80. package/dist/cjs/nips/nip-02.js.map +1 -0
  81. package/dist/cjs/nips/nip-04.d.ts +37 -0
  82. package/dist/cjs/nips/nip-04.d.ts.map +1 -0
  83. package/dist/cjs/nips/nip-04.js +104 -0
  84. package/dist/cjs/nips/nip-04.js.map +1 -0
  85. package/dist/cjs/nips/nip-05.d.ts +88 -0
  86. package/dist/cjs/nips/nip-05.d.ts.map +1 -0
  87. package/dist/cjs/nips/nip-05.js +158 -0
  88. package/dist/cjs/nips/nip-05.js.map +1 -0
  89. package/dist/cjs/nips/nip-09.d.ts +93 -0
  90. package/dist/cjs/nips/nip-09.d.ts.map +1 -0
  91. package/dist/cjs/nips/nip-09.js +180 -0
  92. package/dist/cjs/nips/nip-09.js.map +1 -0
  93. package/dist/cjs/nips/nip-11.d.ts +65 -0
  94. package/dist/cjs/nips/nip-11.d.ts.map +1 -0
  95. package/dist/cjs/nips/nip-11.js +161 -0
  96. package/dist/cjs/nips/nip-11.js.map +1 -0
  97. package/dist/cjs/nips/nip-13.d.ts +74 -0
  98. package/dist/cjs/nips/nip-13.d.ts.map +1 -0
  99. package/dist/cjs/nips/nip-13.js +136 -0
  100. package/dist/cjs/nips/nip-13.js.map +1 -0
  101. package/dist/cjs/nips/nip-15.d.ts +84 -0
  102. package/dist/cjs/nips/nip-15.d.ts.map +1 -0
  103. package/dist/cjs/nips/nip-15.js +102 -0
  104. package/dist/cjs/nips/nip-15.js.map +1 -0
  105. package/dist/cjs/nips/nip-16.d.ts +89 -0
  106. package/dist/cjs/nips/nip-16.d.ts.map +1 -0
  107. package/dist/cjs/nips/nip-16.js +157 -0
  108. package/dist/cjs/nips/nip-16.js.map +1 -0
  109. package/dist/cjs/nips/nip-19.d.ts +29 -0
  110. package/dist/cjs/nips/nip-19.d.ts.map +1 -0
  111. package/dist/cjs/nips/nip-19.js +112 -0
  112. package/dist/cjs/nips/nip-19.js.map +1 -0
  113. package/dist/cjs/nips/nip-20.d.ts +60 -0
  114. package/dist/cjs/nips/nip-20.d.ts.map +1 -0
  115. package/dist/cjs/nips/nip-20.js +102 -0
  116. package/dist/cjs/nips/nip-20.js.map +1 -0
  117. package/dist/cjs/nips/nip-22.d.ts +90 -0
  118. package/dist/cjs/nips/nip-22.d.ts.map +1 -0
  119. package/dist/cjs/nips/nip-22.js +149 -0
  120. package/dist/cjs/nips/nip-22.js.map +1 -0
  121. package/dist/cjs/nips/nip-26.d.ts +53 -0
  122. package/dist/cjs/nips/nip-26.d.ts.map +1 -0
  123. package/dist/cjs/nips/nip-26.js +147 -0
  124. package/dist/cjs/nips/nip-26.js.map +1 -0
  125. package/dist/cjs/nips/nip-28.d.ts +104 -0
  126. package/dist/cjs/nips/nip-28.d.ts.map +1 -0
  127. package/dist/cjs/nips/nip-28.js +164 -0
  128. package/dist/cjs/nips/nip-28.js.map +1 -0
  129. package/dist/cjs/nips/nip-33.d.ts +95 -0
  130. package/dist/cjs/nips/nip-33.d.ts.map +1 -0
  131. package/dist/cjs/nips/nip-33.js +135 -0
  132. package/dist/cjs/nips/nip-33.js.map +1 -0
  133. package/dist/cjs/transport/base.d.ts +54 -0
  134. package/dist/cjs/transport/base.d.ts.map +1 -0
  135. package/dist/cjs/transport/base.js +109 -0
  136. package/dist/cjs/transport/base.js.map +1 -0
  137. package/dist/cjs/transport/websocket.d.ts +24 -0
  138. package/dist/cjs/transport/websocket.d.ts.map +1 -0
  139. package/dist/cjs/transport/websocket.js +136 -0
  140. package/dist/cjs/transport/websocket.js.map +1 -0
  141. package/dist/cjs/types/events.d.ts +74 -0
  142. package/dist/cjs/types/events.d.ts.map +1 -0
  143. package/dist/cjs/types/events.js +7 -0
  144. package/dist/cjs/types/events.js.map +1 -0
  145. package/dist/cjs/types/filters.d.ts +20 -0
  146. package/dist/cjs/types/filters.d.ts.map +1 -0
  147. package/dist/cjs/types/filters.js +7 -0
  148. package/dist/cjs/types/filters.js.map +1 -0
  149. package/dist/cjs/types/handlers.d.ts +81 -0
  150. package/dist/cjs/types/handlers.d.ts.map +1 -0
  151. package/dist/cjs/types/handlers.js +7 -0
  152. package/dist/cjs/types/handlers.js.map +1 -0
  153. package/dist/cjs/types/index.d.ts +144 -0
  154. package/dist/cjs/types/index.d.ts.map +1 -0
  155. package/dist/cjs/types/index.js +37 -0
  156. package/dist/cjs/types/index.js.map +1 -0
  157. package/dist/cjs/types/logger.d.ts +41 -0
  158. package/dist/cjs/types/logger.d.ts.map +1 -0
  159. package/dist/cjs/types/logger.js +7 -0
  160. package/dist/cjs/types/logger.js.map +1 -0
  161. package/dist/cjs/types/messages.d.ts +133 -0
  162. package/dist/cjs/types/messages.d.ts.map +1 -0
  163. package/dist/cjs/types/messages.js +46 -0
  164. package/dist/cjs/types/messages.js.map +1 -0
  165. package/dist/cjs/types/nostr.d.ts +134 -0
  166. package/dist/cjs/types/nostr.d.ts.map +1 -0
  167. package/dist/cjs/types/nostr.js +7 -0
  168. package/dist/cjs/types/nostr.js.map +1 -0
  169. package/dist/cjs/types/options.d.ts +155 -0
  170. package/dist/cjs/types/options.d.ts.map +1 -0
  171. package/dist/cjs/types/options.js +7 -0
  172. package/dist/cjs/types/options.js.map +1 -0
  173. package/dist/cjs/types/priority.d.ts +13 -0
  174. package/dist/cjs/types/priority.d.ts.map +1 -0
  175. package/dist/cjs/types/priority.js +17 -0
  176. package/dist/cjs/types/priority.js.map +1 -0
  177. package/dist/cjs/types/relays.d.ts +27 -0
  178. package/dist/cjs/types/relays.d.ts.map +1 -0
  179. package/dist/cjs/types/relays.js +7 -0
  180. package/dist/cjs/types/relays.js.map +1 -0
  181. package/dist/cjs/types/scoring.d.ts +59 -0
  182. package/dist/cjs/types/scoring.d.ts.map +1 -0
  183. package/dist/cjs/types/scoring.js +34 -0
  184. package/dist/cjs/types/scoring.js.map +1 -0
  185. package/dist/cjs/types/socket.d.ts +98 -0
  186. package/dist/cjs/types/socket.d.ts.map +1 -0
  187. package/dist/cjs/types/socket.js +7 -0
  188. package/dist/cjs/types/socket.js.map +1 -0
  189. package/dist/cjs/types/transport.d.ts +98 -0
  190. package/dist/cjs/types/transport.d.ts.map +1 -0
  191. package/dist/cjs/types/transport.js +7 -0
  192. package/dist/cjs/types/transport.js.map +1 -0
  193. package/dist/cjs/types/validation.d.ts +51 -0
  194. package/dist/cjs/types/validation.d.ts.map +1 -0
  195. package/dist/cjs/types/validation.js +7 -0
  196. package/dist/cjs/types/validation.js.map +1 -0
  197. package/dist/cjs/types/websocket.d.ts +250 -0
  198. package/dist/cjs/types/websocket.d.ts.map +1 -0
  199. package/dist/cjs/types/websocket.js +7 -0
  200. package/dist/cjs/types/websocket.js.map +1 -0
  201. package/dist/cjs/utils/http.d.ts +11 -0
  202. package/dist/cjs/utils/http.d.ts.map +1 -0
  203. package/dist/cjs/utils/http.js +28 -0
  204. package/dist/cjs/utils/http.js.map +1 -0
  205. package/dist/cjs/utils/logger.d.ts +26 -0
  206. package/dist/cjs/utils/logger.d.ts.map +1 -0
  207. package/dist/cjs/utils/logger.js +43 -0
  208. package/dist/cjs/utils/logger.js.map +1 -0
  209. package/dist/cjs/utils/metrics.d.ts +81 -0
  210. package/dist/cjs/utils/metrics.d.ts.map +1 -0
  211. package/dist/cjs/utils/metrics.js +211 -0
  212. package/dist/cjs/utils/metrics.js.map +1 -0
  213. package/dist/cjs/utils/rate-limiter.d.ts +86 -0
  214. package/dist/cjs/utils/rate-limiter.d.ts.map +1 -0
  215. package/dist/cjs/utils/rate-limiter.js +183 -0
  216. package/dist/cjs/utils/rate-limiter.js.map +1 -0
  217. package/dist/core/client.d.ts +1 -0
  218. package/dist/core/client.d.ts.map +1 -0
  219. package/dist/core/client.js +1 -0
  220. package/dist/core/client.js.map +1 -0
  221. package/dist/core/nostr-server.d.ts +1 -0
  222. package/dist/core/nostr-server.d.ts.map +1 -0
  223. package/dist/core/nostr-server.js +1 -0
  224. package/dist/core/nostr-server.js.map +1 -0
  225. package/dist/core/queue.d.ts +1 -0
  226. package/dist/core/queue.d.ts.map +1 -0
  227. package/dist/core/queue.js +1 -0
  228. package/dist/core/queue.js.map +1 -0
  229. package/dist/core/server.d.ts +1 -0
  230. package/dist/core/server.d.ts.map +1 -0
  231. package/dist/core/server.js +1 -0
  232. package/dist/core/server.js.map +1 -0
  233. package/dist/crypto/bech32.d.ts +1 -0
  234. package/dist/crypto/bech32.d.ts.map +1 -0
  235. package/dist/crypto/bech32.js +1 -0
  236. package/dist/crypto/bech32.js.map +1 -0
  237. package/dist/crypto/handlers.d.ts +1 -0
  238. package/dist/crypto/handlers.d.ts.map +1 -0
  239. package/dist/crypto/handlers.js +1 -0
  240. package/dist/crypto/handlers.js.map +1 -0
  241. package/dist/crypto/index.d.ts +1 -0
  242. package/dist/crypto/index.d.ts.map +1 -0
  243. package/dist/crypto/index.js +1 -0
  244. package/dist/crypto/index.js.map +1 -0
  245. package/dist/endpoints/metrics.d.ts +1 -0
  246. package/dist/endpoints/metrics.d.ts.map +1 -0
  247. package/dist/endpoints/metrics.js +1 -0
  248. package/dist/endpoints/metrics.js.map +1 -0
  249. package/dist/index.d.ts +1 -0
  250. package/dist/index.d.ts.map +1 -0
  251. package/dist/index.js +1 -0
  252. package/dist/index.js.map +1 -0
  253. package/dist/nips/index.d.ts +1 -0
  254. package/dist/nips/index.d.ts.map +1 -0
  255. package/dist/nips/index.js +1 -0
  256. package/dist/nips/index.js.map +1 -0
  257. package/dist/nips/nip-01.d.ts +1 -0
  258. package/dist/nips/nip-01.d.ts.map +1 -0
  259. package/dist/nips/nip-01.js +1 -0
  260. package/dist/nips/nip-01.js.map +1 -0
  261. package/dist/nips/nip-02.d.ts +1 -0
  262. package/dist/nips/nip-02.d.ts.map +1 -0
  263. package/dist/nips/nip-02.js +1 -0
  264. package/dist/nips/nip-02.js.map +1 -0
  265. package/dist/nips/nip-04.d.ts +1 -0
  266. package/dist/nips/nip-04.d.ts.map +1 -0
  267. package/dist/nips/nip-04.js +1 -0
  268. package/dist/nips/nip-04.js.map +1 -0
  269. package/dist/nips/nip-05.d.ts +1 -0
  270. package/dist/nips/nip-05.d.ts.map +1 -0
  271. package/dist/nips/nip-05.js +1 -0
  272. package/dist/nips/nip-05.js.map +1 -0
  273. package/dist/nips/nip-09.d.ts +1 -0
  274. package/dist/nips/nip-09.d.ts.map +1 -0
  275. package/dist/nips/nip-09.js +1 -0
  276. package/dist/nips/nip-09.js.map +1 -0
  277. package/dist/nips/nip-11.d.ts +1 -0
  278. package/dist/nips/nip-11.d.ts.map +1 -0
  279. package/dist/nips/nip-11.js +1 -0
  280. package/dist/nips/nip-11.js.map +1 -0
  281. package/dist/nips/nip-13.d.ts +1 -0
  282. package/dist/nips/nip-13.d.ts.map +1 -0
  283. package/dist/nips/nip-13.js +1 -0
  284. package/dist/nips/nip-13.js.map +1 -0
  285. package/dist/nips/nip-15.d.ts +1 -0
  286. package/dist/nips/nip-15.d.ts.map +1 -0
  287. package/dist/nips/nip-15.js +1 -0
  288. package/dist/nips/nip-15.js.map +1 -0
  289. package/dist/nips/nip-16.d.ts +1 -0
  290. package/dist/nips/nip-16.d.ts.map +1 -0
  291. package/dist/nips/nip-16.js +1 -0
  292. package/dist/nips/nip-16.js.map +1 -0
  293. package/dist/nips/nip-19.d.ts +1 -0
  294. package/dist/nips/nip-19.d.ts.map +1 -0
  295. package/dist/nips/nip-19.js +1 -0
  296. package/dist/nips/nip-19.js.map +1 -0
  297. package/dist/nips/nip-20.d.ts +1 -0
  298. package/dist/nips/nip-20.d.ts.map +1 -0
  299. package/dist/nips/nip-20.js +1 -0
  300. package/dist/nips/nip-20.js.map +1 -0
  301. package/dist/nips/nip-22.d.ts +1 -0
  302. package/dist/nips/nip-22.d.ts.map +1 -0
  303. package/dist/nips/nip-22.js +1 -0
  304. package/dist/nips/nip-22.js.map +1 -0
  305. package/dist/nips/nip-26.d.ts +1 -0
  306. package/dist/nips/nip-26.d.ts.map +1 -0
  307. package/dist/nips/nip-26.js +1 -0
  308. package/dist/nips/nip-26.js.map +1 -0
  309. package/dist/nips/nip-28.d.ts +1 -0
  310. package/dist/nips/nip-28.d.ts.map +1 -0
  311. package/dist/nips/nip-28.js +1 -0
  312. package/dist/nips/nip-28.js.map +1 -0
  313. package/dist/nips/nip-33.d.ts +1 -0
  314. package/dist/nips/nip-33.d.ts.map +1 -0
  315. package/dist/nips/nip-33.js +1 -0
  316. package/dist/nips/nip-33.js.map +1 -0
  317. package/dist/transport/base.d.ts +1 -1
  318. package/dist/transport/base.d.ts.map +1 -0
  319. package/dist/transport/base.js +1 -0
  320. package/dist/transport/base.js.map +1 -0
  321. package/dist/transport/websocket.d.ts +1 -0
  322. package/dist/transport/websocket.d.ts.map +1 -0
  323. package/dist/transport/websocket.js +1 -0
  324. package/dist/transport/websocket.js.map +1 -0
  325. package/dist/types/events.d.ts +1 -0
  326. package/dist/types/events.d.ts.map +1 -0
  327. package/dist/types/events.js +1 -0
  328. package/dist/types/events.js.map +1 -0
  329. package/dist/types/filters.d.ts +1 -0
  330. package/dist/types/filters.d.ts.map +1 -0
  331. package/dist/types/filters.js +1 -0
  332. package/dist/types/filters.js.map +1 -0
  333. package/dist/types/handlers.d.ts +1 -0
  334. package/dist/types/handlers.d.ts.map +1 -0
  335. package/dist/types/handlers.js +1 -0
  336. package/dist/types/handlers.js.map +1 -0
  337. package/dist/types/index.d.ts +1 -0
  338. package/dist/types/index.d.ts.map +1 -0
  339. package/dist/types/index.js +1 -0
  340. package/dist/types/index.js.map +1 -0
  341. package/dist/types/logger.d.ts +1 -0
  342. package/dist/types/logger.d.ts.map +1 -0
  343. package/dist/types/logger.js +1 -0
  344. package/dist/types/logger.js.map +1 -0
  345. package/dist/types/messages.d.ts +1 -0
  346. package/dist/types/messages.d.ts.map +1 -0
  347. package/dist/types/messages.js +1 -0
  348. package/dist/types/messages.js.map +1 -0
  349. package/dist/types/nostr.d.ts +1 -0
  350. package/dist/types/nostr.d.ts.map +1 -0
  351. package/dist/types/nostr.js +1 -0
  352. package/dist/types/nostr.js.map +1 -0
  353. package/dist/types/options.d.ts +1 -0
  354. package/dist/types/options.d.ts.map +1 -0
  355. package/dist/types/options.js +1 -0
  356. package/dist/types/options.js.map +1 -0
  357. package/dist/types/priority.d.ts +1 -0
  358. package/dist/types/priority.d.ts.map +1 -0
  359. package/dist/types/priority.js +1 -0
  360. package/dist/types/priority.js.map +1 -0
  361. package/dist/types/relays.d.ts +1 -0
  362. package/dist/types/relays.d.ts.map +1 -0
  363. package/dist/types/relays.js +1 -0
  364. package/dist/types/relays.js.map +1 -0
  365. package/dist/types/scoring.d.ts +1 -2
  366. package/dist/types/scoring.d.ts.map +1 -0
  367. package/dist/types/scoring.js +1 -0
  368. package/dist/types/scoring.js.map +1 -0
  369. package/dist/types/socket.d.ts +1 -2
  370. package/dist/types/socket.d.ts.map +1 -0
  371. package/dist/types/socket.js +1 -0
  372. package/dist/types/socket.js.map +1 -0
  373. package/dist/types/transport.d.ts +1 -0
  374. package/dist/types/transport.d.ts.map +1 -0
  375. package/dist/types/transport.js +1 -0
  376. package/dist/types/transport.js.map +1 -0
  377. package/dist/types/validation.d.ts +1 -0
  378. package/dist/types/validation.d.ts.map +1 -0
  379. package/dist/types/validation.js +1 -0
  380. package/dist/types/validation.js.map +1 -0
  381. package/dist/types/websocket.d.ts +1 -0
  382. package/dist/types/websocket.d.ts.map +1 -0
  383. package/dist/types/websocket.js +1 -0
  384. package/dist/types/websocket.js.map +1 -0
  385. package/dist/utils/http.d.ts +1 -0
  386. package/dist/utils/http.d.ts.map +1 -0
  387. package/dist/utils/http.js +1 -0
  388. package/dist/utils/http.js.map +1 -0
  389. package/dist/utils/logger.d.ts +1 -0
  390. package/dist/utils/logger.d.ts.map +1 -0
  391. package/dist/utils/logger.js +1 -0
  392. package/dist/utils/logger.js.map +1 -0
  393. package/dist/utils/metrics.d.ts +1 -1
  394. package/dist/utils/metrics.d.ts.map +1 -0
  395. package/dist/utils/metrics.js +1 -0
  396. package/dist/utils/metrics.js.map +1 -0
  397. package/dist/utils/rate-limiter.d.ts +1 -0
  398. package/dist/utils/rate-limiter.d.ts.map +1 -0
  399. package/dist/utils/rate-limiter.js +1 -0
  400. package/dist/utils/rate-limiter.js.map +1 -0
  401. package/package.json +14 -2
  402. package/dist/__mocks__/logger.d.ts +0 -9
  403. package/dist/__mocks__/logger.js +0 -6
  404. package/dist/client.d.ts +0 -129
  405. package/dist/client.js +0 -259
  406. package/dist/crypto/schnorr.d.ts +0 -16
  407. package/dist/crypto/schnorr.js +0 -51
  408. package/dist/nostr-server.js +0 -107
  409. package/dist/server.d.ts +0 -27
  410. package/dist/server.js +0 -132
@@ -0,0 +1,95 @@
1
+ /**
2
+ * @file NIP-33: Parameterized Replaceable Events
3
+ * @module nips/nip-33
4
+ * @see https://github.com/nostr-protocol/nips/blob/master/33.md
5
+ */
6
+ import type { NostrWSMessage } from '../types/messages';
7
+ import type { Logger } from '../types/logger';
8
+ /**
9
+ * Parameterized replaceable event kinds (30000-39999)
10
+ */
11
+ export declare const PARAMETERIZED_REPLACEABLE_KINDS: {
12
+ CATEGORIZED_BOOKMARK: number;
13
+ CATEGORIZED_HIGHLIGHT: number;
14
+ CATEGORIZED_PEOPLE_LIST: number;
15
+ PROFILE_BADGES: number;
16
+ BADGE_DEFINITION: number;
17
+ CUSTOM_START: number;
18
+ CUSTOM_END: number;
19
+ };
20
+ /**
21
+ * Creates a parameterized replaceable event
22
+ * @param kind - Event kind
23
+ * @param content - Event content
24
+ * @param identifier - Unique identifier for the parameter
25
+ * @param additionalTags - Additional tags
26
+ * @returns {NostrWSMessage} Parameterized replaceable event
27
+ */
28
+ export declare function createParameterizedEvent(kind: number, content: string, identifier: string, additionalTags?: string[][]): NostrWSMessage;
29
+ /**
30
+ * Validates a parameterized replaceable event
31
+ * @param message - Message to validate
32
+ * @param _logger - Logger instance
33
+ * @returns {boolean} True if valid
34
+ */
35
+ export declare function validateParameterizedEvent(message: NostrWSMessage, _logger: Logger): boolean;
36
+ /**
37
+ * Parameterized event manager interface
38
+ */
39
+ export interface ParameterizedEventManager {
40
+ /**
41
+ * Creates a new parameterized event
42
+ * @param kind - Event kind
43
+ * @param content - Event content
44
+ * @param identifier - Parameter identifier
45
+ * @param tags - Additional tags
46
+ * @returns {NostrWSMessage} Created event
47
+ */
48
+ createEvent(kind: number, content: string, identifier: string, tags?: string[][]): NostrWSMessage;
49
+ /**
50
+ * Updates an existing parameterized event
51
+ * @param kind - Event kind
52
+ * @param identifier - Parameter identifier
53
+ * @param content - New content
54
+ * @returns {NostrWSMessage} Update event
55
+ */
56
+ updateEvent(kind: number, identifier: string, content: string): NostrWSMessage;
57
+ /**
58
+ * Subscribes to parameterized events
59
+ * @param kinds - Event kinds to subscribe to
60
+ * @param identifiers - Parameter identifiers
61
+ * @returns {NostrWSMessage} Subscription message
62
+ */
63
+ subscribe(kinds: number[], identifiers: string[]): NostrWSMessage;
64
+ }
65
+ /**
66
+ * Creates a parameterized event manager
67
+ * @param _logger - Logger instance
68
+ * @returns {ParameterizedEventManager} Event manager
69
+ */
70
+ export declare function createParameterizedEventManager(_logger: Logger): ParameterizedEventManager;
71
+ /**
72
+ * Event replacement handler interface
73
+ */
74
+ export interface EventReplacementHandler {
75
+ /**
76
+ * Checks if an event should replace another
77
+ * @param newEvent - New event
78
+ * @param existingEvent - Existing event
79
+ * @returns {boolean} True if should replace
80
+ */
81
+ shouldReplace(newEvent: Record<string, unknown>, existingEvent: Record<string, unknown>): boolean;
82
+ /**
83
+ * Gets replacement key for an event
84
+ * @param event - Event to get key for
85
+ * @returns {string} Replacement key
86
+ */
87
+ getReplacementKey(event: Record<string, unknown>): string;
88
+ }
89
+ /**
90
+ * Creates an event replacement handler
91
+ * @param _logger - Logger instance
92
+ * @returns {EventReplacementHandler} Replacement handler
93
+ */
94
+ export declare function createEventReplacementHandler(_logger: Logger): EventReplacementHandler;
95
+ //# sourceMappingURL=nip-33.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nip-33.d.ts","sourceRoot":"","sources":["../../../src/nips/nip-33.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,+BAA+B;;;;;;;;CAQ3C,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,cAAc,GAAE,MAAM,EAAE,EAAO,GAC9B,cAAc,CAShB;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,MAAM,GACd,OAAO,CAmCT;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;;;;;OAOG;IACH,WAAW,CACT,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,GAChB,cAAc,CAAC;IAElB;;;;;;OAMG;IACH,WAAW,CACT,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,cAAc,CAAC;IAElB;;;;;OAKG;IACH,SAAS,CACP,KAAK,EAAE,MAAM,EAAE,EACf,WAAW,EAAE,MAAM,EAAE,GACpB,cAAc,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,MAAM,GACd,yBAAyB,CA4B3B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;;OAKG;IACH,aAAa,CACX,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACrC,OAAO,CAAC;IAEX;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;CAC3D;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,GACd,uBAAuB,CAiCzB"}
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ /**
3
+ * @file NIP-33: Parameterized Replaceable Events
4
+ * @module nips/nip-33
5
+ * @see https://github.com/nostr-protocol/nips/blob/master/33.md
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.PARAMETERIZED_REPLACEABLE_KINDS = void 0;
9
+ exports.createParameterizedEvent = createParameterizedEvent;
10
+ exports.validateParameterizedEvent = validateParameterizedEvent;
11
+ exports.createParameterizedEventManager = createParameterizedEventManager;
12
+ exports.createEventReplacementHandler = createEventReplacementHandler;
13
+ /**
14
+ * Parameterized replaceable event kinds (30000-39999)
15
+ */
16
+ exports.PARAMETERIZED_REPLACEABLE_KINDS = {
17
+ CATEGORIZED_BOOKMARK: 30000,
18
+ CATEGORIZED_HIGHLIGHT: 30001,
19
+ CATEGORIZED_PEOPLE_LIST: 30002,
20
+ PROFILE_BADGES: 30008,
21
+ BADGE_DEFINITION: 30009,
22
+ CUSTOM_START: 31000,
23
+ CUSTOM_END: 39999
24
+ };
25
+ /**
26
+ * Creates a parameterized replaceable event
27
+ * @param kind - Event kind
28
+ * @param content - Event content
29
+ * @param identifier - Unique identifier for the parameter
30
+ * @param additionalTags - Additional tags
31
+ * @returns {NostrWSMessage} Parameterized replaceable event
32
+ */
33
+ function createParameterizedEvent(kind, content, identifier, additionalTags = []) {
34
+ return ['EVENT', {
35
+ kind,
36
+ content,
37
+ tags: [
38
+ ['d', identifier],
39
+ ...additionalTags
40
+ ]
41
+ }];
42
+ }
43
+ /**
44
+ * Validates a parameterized replaceable event
45
+ * @param message - Message to validate
46
+ * @param _logger - Logger instance
47
+ * @returns {boolean} True if valid
48
+ */
49
+ function validateParameterizedEvent(message, _logger) {
50
+ try {
51
+ if (!Array.isArray(message) || message[0] !== 'EVENT') {
52
+ return false;
53
+ }
54
+ const event = message[1];
55
+ const kind = event.kind;
56
+ // Check if kind is in valid range
57
+ if (kind < 30000 || kind > 39999) {
58
+ _logger.debug('Invalid kind for parameterized replaceable event');
59
+ return false;
60
+ }
61
+ // Must have exactly one 'd' tag
62
+ if (!Array.isArray(event.tags)) {
63
+ _logger.debug('Missing tags array');
64
+ return false;
65
+ }
66
+ const dTags = event.tags.filter(tag => Array.isArray(tag) && tag[0] === 'd' && tag[1]);
67
+ if (dTags.length !== 1) {
68
+ _logger.debug('Must have exactly one d tag');
69
+ return false;
70
+ }
71
+ return true;
72
+ }
73
+ catch (error) {
74
+ _logger.error('Error validating parameterized event:', error);
75
+ return false;
76
+ }
77
+ }
78
+ /**
79
+ * Creates a parameterized event manager
80
+ * @param _logger - Logger instance
81
+ * @returns {ParameterizedEventManager} Event manager
82
+ */
83
+ function createParameterizedEventManager(_logger) {
84
+ return {
85
+ createEvent(kind, content, identifier, tags = []) {
86
+ return createParameterizedEvent(kind, content, identifier, tags);
87
+ },
88
+ updateEvent(kind, identifier, content) {
89
+ return createParameterizedEvent(kind, content, identifier);
90
+ },
91
+ subscribe(kinds, identifiers) {
92
+ return ['REQ', {
93
+ filter: {
94
+ kinds,
95
+ '#d': identifiers
96
+ }
97
+ }];
98
+ }
99
+ };
100
+ }
101
+ /**
102
+ * Creates an event replacement handler
103
+ * @param _logger - Logger instance
104
+ * @returns {EventReplacementHandler} Replacement handler
105
+ */
106
+ function createEventReplacementHandler(_logger) {
107
+ return {
108
+ shouldReplace(newEvent, existingEvent) {
109
+ try {
110
+ // Must be same kind
111
+ if (newEvent.kind !== existingEvent.kind)
112
+ return false;
113
+ // Must have same 'd' tag value
114
+ const newTags = newEvent.tags;
115
+ const existingTags = existingEvent.tags;
116
+ const newDTag = newTags?.find(tag => tag[0] === 'd')?.[1];
117
+ const existingDTag = existingTags?.find(tag => tag[0] === 'd')?.[1];
118
+ if (newDTag !== existingDTag)
119
+ return false;
120
+ // Replace if newer
121
+ return newEvent.created_at > existingEvent.created_at;
122
+ }
123
+ catch (error) {
124
+ _logger.error('Error checking event replacement:', error);
125
+ return false;
126
+ }
127
+ },
128
+ getReplacementKey(event) {
129
+ const kind = event.kind;
130
+ const dTag = event.tags?.find(tag => tag[0] === 'd')?.[1];
131
+ return `${kind}:${dTag}`;
132
+ }
133
+ };
134
+ }
135
+ //# sourceMappingURL=nip-33.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nip-33.js","sourceRoot":"","sources":["../../../src/nips/nip-33.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * @file Base transport layer for Nostr connections
3
+ * @module transport/base
4
+ */
5
+ import { EventEmitter } from 'events';
6
+ import type { MetricsProvider, ScoringStrategy, MetricValue, TransportData } from '../types/scoring';
7
+ export interface TransportOptions {
8
+ metricsProvider?: MetricsProvider;
9
+ scoringStrategy?: ScoringStrategy;
10
+ metricsEnabled?: boolean;
11
+ }
12
+ export declare abstract class BaseTransport extends EventEmitter {
13
+ protected scoringStrategy: ScoringStrategy;
14
+ protected metricsProvider?: MetricsProvider;
15
+ protected metricsEnabled: boolean;
16
+ constructor(options?: TransportOptions);
17
+ /**
18
+ * Create a default metrics provider if none is supplied
19
+ */
20
+ protected createDefaultMetricsProvider(): MetricsProvider;
21
+ /**
22
+ * Track a metric update
23
+ */
24
+ protected trackMetric(endpoint: string, metricType: string, value: MetricValue): void;
25
+ /**
26
+ * Gets the score for an endpoint
27
+ * @param endpoint - Endpoint to get score for
28
+ * @returns {number} Score between 0 and 100
29
+ */
30
+ getScore(endpoint: string): number;
31
+ /**
32
+ * Gets scores for all endpoints
33
+ * @returns {Map<string, number>} Map of endpoint scores
34
+ */
35
+ getAllScores(): Map<string, number>;
36
+ /**
37
+ * Enable/disable metrics
38
+ */
39
+ setMetricsEnabled(enabled: boolean): void;
40
+ /**
41
+ * Updates the scoring strategy
42
+ * @param strategy - New scoring strategy
43
+ */
44
+ updateScoringStrategy(strategy: ScoringStrategy): void;
45
+ /**
46
+ * Updates the metrics provider
47
+ * @param provider - New metrics provider
48
+ */
49
+ updateMetricsProvider(provider?: MetricsProvider): void;
50
+ abstract connect(endpoint: string): Promise<void>;
51
+ abstract disconnect(endpoint: string): Promise<void>;
52
+ abstract send(endpoint: string, data: TransportData): Promise<void>;
53
+ }
54
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/transport/base.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EAEf,WAAW,EACX,aAAa,EACd,MAAM,kBAAkB,CAAC;AAI1B,MAAM,WAAW,gBAAgB;IAC/B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,8BAAsB,aAAc,SAAQ,YAAY;IACtD,SAAS,CAAC,eAAe,EAAE,eAAe,CAAC;IAC3C,SAAS,CAAC,eAAe,CAAC,EAAE,eAAe,CAAC;IAC5C,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC;gBAEtB,OAAO,GAAE,gBAAqB;IAO1C;;OAEG;IACH,SAAS,CAAC,4BAA4B,IAAI,eAAe;IAkBzD;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW;IAoB9E;;;;OAIG;IACI,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IASzC;;;OAGG;IACI,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAW1C;;OAEG;IACI,iBAAiB,CAAC,OAAO,EAAE,OAAO;IAIzC;;;OAGG;IACI,qBAAqB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAI7D;;;OAGG;IACI,qBAAqB,CAAC,QAAQ,CAAC,EAAE,eAAe,GAAG,IAAI;IAM9D,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACjD,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACpD,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CACpE"}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ /**
3
+ * @file Base transport layer for Nostr connections
4
+ * @module transport/base
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.BaseTransport = void 0;
8
+ const events_1 = require("events");
9
+ const logger_1 = require("../utils/logger");
10
+ const scoring_1 = require("../types/scoring");
11
+ const logger = (0, logger_1.getLogger)('BaseTransport');
12
+ class BaseTransport extends events_1.EventEmitter {
13
+ constructor(options = {}) {
14
+ super();
15
+ this.scoringStrategy = options.scoringStrategy ?? new scoring_1.DefaultScoringStrategy();
16
+ this.metricsProvider = options.metricsProvider;
17
+ this.metricsEnabled = !!this.metricsProvider;
18
+ }
19
+ /**
20
+ * Create a default metrics provider if none is supplied
21
+ */
22
+ createDefaultMetricsProvider() {
23
+ return {
24
+ getMetrics: () => ({
25
+ totalConnections: 0,
26
+ activeConnections: 0,
27
+ connectionErrors: 0,
28
+ messagesReceived: 0,
29
+ messagesSent: 0,
30
+ bytesReceived: 0,
31
+ bytesSent: 0,
32
+ averageLatency: 0,
33
+ lastSeen: Date.now()
34
+ }),
35
+ getAllMetrics: () => new Map(),
36
+ trackMetric: () => { }
37
+ };
38
+ }
39
+ /**
40
+ * Track a metric update
41
+ */
42
+ trackMetric(endpoint, metricType, value) {
43
+ if (!this.metricsEnabled)
44
+ return;
45
+ try {
46
+ this.metricsProvider?.trackMetric(endpoint, metricType, value);
47
+ const event = {
48
+ endpoint,
49
+ metricType,
50
+ value,
51
+ timestamp: Date.now()
52
+ };
53
+ this.emit('metric', event);
54
+ }
55
+ catch (error) {
56
+ logger.error({ error, endpoint, metricType }, 'Error tracking metric');
57
+ }
58
+ }
59
+ /**
60
+ * Gets the score for an endpoint
61
+ * @param endpoint - Endpoint to get score for
62
+ * @returns {number} Score between 0 and 100
63
+ */
64
+ getScore(endpoint) {
65
+ if (!this.metricsEnabled)
66
+ return 100;
67
+ const metrics = this.metricsProvider?.getMetrics(endpoint);
68
+ if (!metrics)
69
+ return 100;
70
+ return this.scoringStrategy.calculateScore(metrics);
71
+ }
72
+ /**
73
+ * Gets scores for all endpoints
74
+ * @returns {Map<string, number>} Map of endpoint scores
75
+ */
76
+ getAllScores() {
77
+ if (!this.metricsEnabled || !this.metricsProvider)
78
+ return new Map();
79
+ const scores = new Map();
80
+ const allMetrics = this.metricsProvider.getAllMetrics();
81
+ for (const [endpoint, metrics] of allMetrics) {
82
+ scores.set(endpoint, this.scoringStrategy.calculateScore(metrics));
83
+ }
84
+ return scores;
85
+ }
86
+ /**
87
+ * Enable/disable metrics
88
+ */
89
+ setMetricsEnabled(enabled) {
90
+ this.metricsEnabled = enabled;
91
+ }
92
+ /**
93
+ * Updates the scoring strategy
94
+ * @param strategy - New scoring strategy
95
+ */
96
+ updateScoringStrategy(strategy) {
97
+ this.scoringStrategy = strategy;
98
+ }
99
+ /**
100
+ * Updates the metrics provider
101
+ * @param provider - New metrics provider
102
+ */
103
+ updateMetricsProvider(provider) {
104
+ this.metricsProvider = provider;
105
+ this.metricsEnabled = !!provider;
106
+ }
107
+ }
108
+ exports.BaseTransport = BaseTransport;
109
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/transport/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @file WebSocket transport implementation
3
+ * @module transport/websocket
4
+ */
5
+ import { BaseTransport } from './base';
6
+ import type { TransportOptions } from './base';
7
+ export declare class WebSocketTransport extends BaseTransport {
8
+ private connections;
9
+ constructor(options?: TransportOptions);
10
+ connect(endpoint: string): Promise<void>;
11
+ disconnect(endpoint: string): Promise<void>;
12
+ send(endpoint: string, data: any): Promise<void>;
13
+ protected trackMetric(endpoint: string, metric: string, value: unknown): void;
14
+ private checkEndpointHealth;
15
+ /**
16
+ * Get all active WebSocket connections
17
+ */
18
+ getActiveConnections(): string[];
19
+ /**
20
+ * Check if connected to endpoint
21
+ */
22
+ isConnected(endpoint: string): boolean;
23
+ }
24
+ //# sourceMappingURL=websocket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../../src/transport/websocket.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAI/C,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,OAAO,CAAC,WAAW,CAAqC;gBAE5C,OAAO,GAAE,gBAAqB;IAIpC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuDxC,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc3C,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBtD,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;YAOxD,mBAAmB;IAsBjC;;OAEG;IACI,oBAAoB,IAAI,MAAM,EAAE;IAIvC;;OAEG;IACI,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAI9C"}
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ /**
3
+ * @file WebSocket transport implementation
4
+ * @module transport/websocket
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.WebSocketTransport = void 0;
11
+ const ws_1 = __importDefault(require("ws"));
12
+ const base_1 = require("./base");
13
+ const logger_1 = require("../utils/logger");
14
+ const logger = (0, logger_1.getLogger)('WebSocketTransport');
15
+ class WebSocketTransport extends base_1.BaseTransport {
16
+ constructor(options = {}) {
17
+ super(options);
18
+ this.connections = new Map();
19
+ }
20
+ async connect(endpoint) {
21
+ if (this.connections.has(endpoint)) {
22
+ logger.warn({ endpoint }, 'Already connected to endpoint');
23
+ return;
24
+ }
25
+ try {
26
+ const ws = new ws_1.default(endpoint);
27
+ ws.on('open', () => {
28
+ this.trackMetric(endpoint, 'connection', true);
29
+ this.trackMetric(endpoint, 'openHandshake', Date.now());
30
+ });
31
+ ws.on('close', () => {
32
+ this.trackMetric(endpoint, 'connection', false);
33
+ this.trackMetric(endpoint, 'closeHandshake', Date.now());
34
+ this.connections.delete(endpoint);
35
+ });
36
+ ws.on('message', (data) => {
37
+ const length = data instanceof Buffer ? data.length :
38
+ data instanceof ArrayBuffer ? data.byteLength :
39
+ data instanceof Array ? data.reduce((acc, buf) => acc + buf.length, 0) : 0;
40
+ this.trackMetric(endpoint, 'messageReceived', length);
41
+ });
42
+ ws.on('error', (error) => {
43
+ this.trackMetric(endpoint, 'error', error);
44
+ logger.error({ error, endpoint }, 'WebSocket error');
45
+ });
46
+ // Track ping/pong for latency
47
+ ws.on('ping', () => {
48
+ this.trackMetric(endpoint, 'ping', Date.now());
49
+ });
50
+ ws.on('pong', () => {
51
+ if (!this.metricsEnabled || !this.metricsProvider)
52
+ return;
53
+ const now = Date.now();
54
+ const metrics = this.metricsProvider.getMetrics(endpoint);
55
+ if (!metrics || !metrics.lastSeen)
56
+ return;
57
+ this.trackMetric(endpoint, 'latency', now - metrics.lastSeen);
58
+ });
59
+ this.connections.set(endpoint, ws);
60
+ }
61
+ catch (error) {
62
+ this.trackMetric(endpoint, 'connectionError', error);
63
+ throw error;
64
+ }
65
+ }
66
+ async disconnect(endpoint) {
67
+ const ws = this.connections.get(endpoint);
68
+ if (!ws)
69
+ return;
70
+ return new Promise((resolve, reject) => {
71
+ ws.close();
72
+ ws.on('close', () => {
73
+ this.connections.delete(endpoint);
74
+ resolve();
75
+ });
76
+ ws.on('error', reject);
77
+ });
78
+ }
79
+ async send(endpoint, data) {
80
+ const ws = this.connections.get(endpoint);
81
+ if (!ws)
82
+ throw new Error(`Not connected to ${endpoint}`);
83
+ return new Promise((resolve, reject) => {
84
+ ws.send(data, (error) => {
85
+ if (error) {
86
+ this.trackMetric(endpoint, 'sendError', error);
87
+ reject(error);
88
+ }
89
+ else {
90
+ this.trackMetric(endpoint, 'messageSent', data.length);
91
+ resolve();
92
+ }
93
+ });
94
+ });
95
+ }
96
+ trackMetric(endpoint, metric, value) {
97
+ if (this.metricsProvider && this.metricsEnabled) {
98
+ const metricValue = value instanceof Error ? value.message : String(value);
99
+ this.metricsProvider.trackMetric(endpoint, metric, metricValue);
100
+ }
101
+ }
102
+ async checkEndpointHealth(endpoint) {
103
+ try {
104
+ if (!this.metricsEnabled || !this.metricsProvider) {
105
+ return true;
106
+ }
107
+ const metrics = this.metricsProvider.getMetrics(endpoint);
108
+ if (!metrics || !metrics.lastSeen) {
109
+ return true;
110
+ }
111
+ const now = Date.now();
112
+ const elapsed = now - metrics.lastSeen;
113
+ // If we haven't seen a ping response in 30 seconds, consider unhealthy
114
+ return elapsed < 30000;
115
+ }
116
+ catch (error) {
117
+ logger.error('Error checking endpoint health:', error);
118
+ return false;
119
+ }
120
+ }
121
+ /**
122
+ * Get all active WebSocket connections
123
+ */
124
+ getActiveConnections() {
125
+ return Array.from(this.connections.keys());
126
+ }
127
+ /**
128
+ * Check if connected to endpoint
129
+ */
130
+ isConnected(endpoint) {
131
+ const ws = this.connections.get(endpoint);
132
+ return ws?.readyState === ws_1.default.OPEN;
133
+ }
134
+ }
135
+ exports.WebSocketTransport = WebSocketTransport;
136
+ //# sourceMappingURL=websocket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../src/transport/websocket.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * @file Nostr event type definitions
3
+ * @module types/events
4
+ */
5
+ /**
6
+ * Base Nostr event interface following NIP-01 specification
7
+ * @see https://github.com/nostr-protocol/nips/blob/master/01.md
8
+ */
9
+ export interface NostrEvent {
10
+ /** Event ID in hex format */
11
+ id: string;
12
+ /** Public key of the event creator in hex format */
13
+ pubkey: string;
14
+ /** Unix timestamp in seconds */
15
+ created_at: number;
16
+ /** Event kind number */
17
+ kind: number;
18
+ /** Array of tags */
19
+ tags: string[][];
20
+ /** Event content */
21
+ content: string;
22
+ /** Signature of the event data in hex format */
23
+ sig: string;
24
+ }
25
+ /**
26
+ * Signed Nostr event with id and signature
27
+ * @extends NostrEvent
28
+ */
29
+ export interface SignedNostrEvent extends NostrEvent {
30
+ /** Event ID in hex format */
31
+ id: string;
32
+ /** Signature of the event data in hex format */
33
+ sig: string;
34
+ }
35
+ /**
36
+ * Event validation result
37
+ */
38
+ export interface NostrEventValidationResult {
39
+ valid: boolean;
40
+ error?: string;
41
+ }
42
+ /**
43
+ * Event subscription filter
44
+ */
45
+ export interface NostrEventFilter {
46
+ ids?: string[];
47
+ authors?: string[];
48
+ kinds?: number[];
49
+ since?: number;
50
+ until?: number;
51
+ limit?: number;
52
+ [key: string]: unknown;
53
+ }
54
+ /**
55
+ * Nostr subscription event interface
56
+ * Used for creating subscription messages to relays
57
+ */
58
+ export interface NostrSubscriptionEvent {
59
+ /** Subscription ID */
60
+ subscriptionId: string;
61
+ /** Array of filters */
62
+ filters: NostrEventFilter[];
63
+ }
64
+ /**
65
+ * Event handler interface for WebSocket client
66
+ */
67
+ export interface NostrWSEventHandlers {
68
+ onMessage?: (message: string) => void;
69
+ onError?: (error: Error) => void;
70
+ onConnect?: () => void;
71
+ onDisconnect?: () => void;
72
+ onReconnect?: () => void;
73
+ }
74
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/types/events.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAC;IAEX,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;IAEf,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IAEnB,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IAEb,oBAAoB;IACpB,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;IAEjB,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;IAEhB,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,sBAAsB;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,uBAAuB;IACvB,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B"}