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,133 @@
1
+ /**
2
+ * @file Message type definitions
3
+ * @module types/messages
4
+ */
5
+ import { MessagePriority } from './priority';
6
+ /**
7
+ * Message types that can be sent through the WebSocket connection
8
+ * Following NIP-01 and other NIPs message types
9
+ */
10
+ export declare const MESSAGE_TYPES: {
11
+ readonly EVENT: "EVENT";
12
+ readonly REQ: "REQ";
13
+ readonly CLOSE: "CLOSE";
14
+ readonly NOTICE: "NOTICE";
15
+ readonly EOSE: "EOSE";
16
+ readonly OK: "OK";
17
+ readonly AUTH: "AUTH";
18
+ readonly COUNT: "COUNT";
19
+ readonly PING: "PING";
20
+ readonly PONG: "PONG";
21
+ readonly ERROR: "error";
22
+ };
23
+ export type MessageType = keyof typeof MESSAGE_TYPES;
24
+ /**
25
+ * Base Nostr WebSocket message interface
26
+ */
27
+ export interface NostrWSMessageBase {
28
+ type: MessageType;
29
+ data?: unknown;
30
+ priority?: MessagePriority;
31
+ queuedAt?: number;
32
+ retryCount?: number;
33
+ }
34
+ /**
35
+ * Nostr WebSocket message type
36
+ * Array format: [<message_type>, ...data]
37
+ */
38
+ export type NostrWSMessage = [MessageType, ...unknown[]];
39
+ /**
40
+ * Queue item interface for message queue
41
+ */
42
+ export interface QueueItem extends NostrWSMessageBase {
43
+ priority: MessagePriority;
44
+ queuedAt: number;
45
+ retryCount: number;
46
+ }
47
+ /**
48
+ * Nostr event message
49
+ */
50
+ export interface NostrEvent {
51
+ id: string;
52
+ kind: number;
53
+ content: string;
54
+ tags: string[][];
55
+ created_at?: number;
56
+ pubkey?: string;
57
+ sig?: string;
58
+ }
59
+ /**
60
+ * Server-side Nostr WebSocket message
61
+ * Extends the base NostrWSMessage tuple type with additional server-specific metadata
62
+ */
63
+ export type NostrWSServerMessage = NostrWSMessage & {
64
+ clientId?: string;
65
+ timestamp?: number;
66
+ };
67
+ /**
68
+ * Helper function to create server messages
69
+ */
70
+ export declare function createServerMessage(type: MessageType, data: unknown[], clientId?: string): NostrWSServerMessage;
71
+ /**
72
+ * Structure of a Nostr WebSocket filter
73
+ */
74
+ export interface NostrWSFilter {
75
+ /** Array of event IDs */
76
+ ids?: string[];
77
+ /** Array of pubkeys */
78
+ authors?: string[];
79
+ /** Array of event kinds */
80
+ kinds?: number[];
81
+ /** Event tags */
82
+ tags?: Record<string, string[]>;
83
+ /** Unix timestamp range */
84
+ since?: number;
85
+ until?: number;
86
+ /** Maximum number of events to return */
87
+ limit?: number;
88
+ }
89
+ /**
90
+ * Represents a subscription to a Nostr relay
91
+ */
92
+ export interface NostrWSSubscription {
93
+ /**
94
+ * Unique identifier for the subscription
95
+ */
96
+ subscription_id: string;
97
+ /**
98
+ * Filters for the subscription
99
+ */
100
+ filters: Array<Record<string, unknown>>;
101
+ /**
102
+ * Active state of the subscription
103
+ */
104
+ active?: boolean;
105
+ /**
106
+ * Timestamp when the subscription was created
107
+ */
108
+ createdAt?: number;
109
+ }
110
+ /**
111
+ * Result of validating a NostrWSMessage
112
+ */
113
+ export interface NostrWSValidationResult {
114
+ /**
115
+ * Whether the message is valid
116
+ */
117
+ isValid: boolean;
118
+ /**
119
+ * Error message if validation failed
120
+ */
121
+ error?: string;
122
+ }
123
+ /**
124
+ * Connection states for WebSocket client
125
+ */
126
+ export declare enum ConnectionState {
127
+ CONNECTING = "CONNECTING",
128
+ CONNECTED = "CONNECTED",
129
+ DISCONNECTED = "DISCONNECTED",
130
+ RECONNECTING = "RECONNECTING",
131
+ FAILED = "FAILED"
132
+ }
133
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/types/messages.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;CAYhB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,aAAa,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,kBAAkB;IACnD,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAK/G;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,yBAAyB;IACzB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,iBAAiB;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAChC,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAExC;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,oBAAY,eAAe;IACzB,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,YAAY,iBAAiB;IAC7B,YAAY,iBAAiB;IAC7B,MAAM,WAAW;CAClB"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ /**
3
+ * @file Message type definitions
4
+ * @module types/messages
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ConnectionState = exports.MESSAGE_TYPES = void 0;
8
+ exports.createServerMessage = createServerMessage;
9
+ /**
10
+ * Message types that can be sent through the WebSocket connection
11
+ * Following NIP-01 and other NIPs message types
12
+ */
13
+ exports.MESSAGE_TYPES = {
14
+ EVENT: 'EVENT', // NIP-01: Basic protocol flow events
15
+ REQ: 'REQ', // NIP-01: Request events
16
+ CLOSE: 'CLOSE', // NIP-01: Close subscription
17
+ NOTICE: 'NOTICE', // NIP-01: Human-readable messages
18
+ EOSE: 'EOSE', // NIP-15: End of stored events notice
19
+ OK: 'OK', // NIP-20: Command result
20
+ AUTH: 'AUTH', // NIP-42: Authentication
21
+ COUNT: 'COUNT', // NIP-45: Event counts
22
+ PING: 'PING', // Internal heartbeat ping
23
+ PONG: 'PONG', // Internal heartbeat pong
24
+ ERROR: 'error' // Internal error type (lowercase to differentiate)
25
+ };
26
+ /**
27
+ * Helper function to create server messages
28
+ */
29
+ function createServerMessage(type, data, clientId) {
30
+ const message = [type, ...data];
31
+ message.clientId = clientId;
32
+ message.timestamp = Date.now();
33
+ return message;
34
+ }
35
+ /**
36
+ * Connection states for WebSocket client
37
+ */
38
+ var ConnectionState;
39
+ (function (ConnectionState) {
40
+ ConnectionState["CONNECTING"] = "CONNECTING";
41
+ ConnectionState["CONNECTED"] = "CONNECTED";
42
+ ConnectionState["DISCONNECTED"] = "DISCONNECTED";
43
+ ConnectionState["RECONNECTING"] = "RECONNECTING";
44
+ ConnectionState["FAILED"] = "FAILED";
45
+ })(ConnectionState || (exports.ConnectionState = ConnectionState = {}));
46
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/types/messages.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA2EH,kDAKC;AA5ED;;;GAGG;AACU,QAAA,aAAa,GAAG;IAC3B,KAAK,EAAE,OAAO,EAAK,qCAAqC;IACxD,GAAG,EAAE,KAAK,EAAQ,yBAAyB;IAC3C,KAAK,EAAE,OAAO,EAAI,6BAA6B;IAC/C,MAAM,EAAE,QAAQ,EAAE,kCAAkC;IACpD,IAAI,EAAE,MAAM,EAAM,sCAAsC;IACxD,EAAE,EAAE,IAAI,EAAU,yBAAyB;IAC3C,IAAI,EAAE,MAAM,EAAM,yBAAyB;IAC3C,KAAK,EAAE,OAAO,EAAI,uBAAuB;IACzC,IAAI,EAAE,MAAM,EAAM,0BAA0B;IAC5C,IAAI,EAAE,MAAM,EAAM,0BAA0B;IAC5C,KAAK,EAAE,OAAO,CAAI,mDAAmD;CAC7D,CAAC;AAoDX;;GAEG;AACH,SAAgB,mBAAmB,CAAC,IAAiB,EAAE,IAAe,EAAE,QAAiB;IACvF,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,CAAyB,CAAC;IACxD,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC5B,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC/B,OAAO,OAAO,CAAC;AACjB,CAAC;AA6DD;;GAEG;AACH,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,4CAAyB,CAAA;IACzB,0CAAuB,CAAA;IACvB,gDAA6B,CAAA;IAC7B,gDAA6B,CAAA;IAC7B,oCAAiB,CAAA;AACnB,CAAC,EANW,eAAe,+BAAf,eAAe,QAM1B"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * @file Nostr protocol type definitions
3
+ * @module types/nostr
4
+ */
5
+ import type { WebSocket as WSClient } from 'ws';
6
+ import { Logger } from './logger';
7
+ import type { NostrWSMessage } from './messages';
8
+ import type { NostrEvent } from './events';
9
+ /**
10
+ * Signed Nostr event with id and signature
11
+ */
12
+ export interface SignedNostrEvent extends NostrEvent {
13
+ /**
14
+ * Event ID (32-bytes lowercase hex of the serialized event data)
15
+ */
16
+ id: string;
17
+ /**
18
+ * Signature of the event ID (64-bytes hex of the schnorr signature)
19
+ */
20
+ sig: string;
21
+ }
22
+ /**
23
+ * Extended WebSocket interface for Nostr
24
+ */
25
+ export interface NostrWSSocket extends WSClient {
26
+ /**
27
+ * Whether the socket is alive (for ping/pong)
28
+ */
29
+ isAlive?: boolean;
30
+ /**
31
+ * Set of active subscription IDs
32
+ */
33
+ subscriptions?: Set<string>;
34
+ /**
35
+ * Unique client identifier
36
+ */
37
+ clientId?: string;
38
+ }
39
+ /**
40
+ * Server configuration options
41
+ */
42
+ export interface NostrWSServerOptions {
43
+ /**
44
+ * Port to listen on
45
+ */
46
+ port: number;
47
+ /**
48
+ * Host to bind to
49
+ */
50
+ host?: string;
51
+ /**
52
+ * Path for the WebSocket endpoint
53
+ */
54
+ path?: string;
55
+ /**
56
+ * Maximum payload size in bytes
57
+ */
58
+ maxPayload?: number;
59
+ /**
60
+ * Ping interval in milliseconds
61
+ */
62
+ pingInterval?: number;
63
+ /**
64
+ * Client timeout in milliseconds
65
+ */
66
+ clientTimeout?: number;
67
+ /**
68
+ * Heartbeat interval in milliseconds
69
+ */
70
+ heartbeatInterval?: number;
71
+ /**
72
+ * Handlers for various events
73
+ */
74
+ handlers?: {
75
+ message?: (socket: NostrWSSocket, message: NostrWSServerMessage) => Promise<void>;
76
+ error?: (socket: NostrWSSocket, error: Error) => void;
77
+ close?: (socket: NostrWSSocket) => void;
78
+ };
79
+ /**
80
+ * Callback for when a new connection is established
81
+ */
82
+ onConnection?: (socket: NostrWSSocket) => void;
83
+ }
84
+ /**
85
+ * Server message structure
86
+ */
87
+ export interface NostrWSServerMessage {
88
+ /**
89
+ * Message type
90
+ */
91
+ type: string;
92
+ /**
93
+ * Message data
94
+ */
95
+ data?: unknown;
96
+ /**
97
+ * Error message if applicable
98
+ */
99
+ error?: string;
100
+ }
101
+ /**
102
+ * Extended WebSocket interface for Nostr server
103
+ */
104
+ export interface NostrWSServerSocket extends WSClient {
105
+ clientId: string;
106
+ subscriptions: Set<string>;
107
+ lastPing?: number;
108
+ isAlive: boolean;
109
+ }
110
+ /**
111
+ * Nostr WebSocket server options
112
+ */
113
+ export interface NostrWSServerServerOptions {
114
+ port: number;
115
+ host?: string;
116
+ path?: string;
117
+ logger: Logger;
118
+ maxClients?: number;
119
+ pingInterval?: number;
120
+ pingTimeout?: number;
121
+ handlers?: {
122
+ message?: (message: NostrWSServerMessage, ws: NostrWSServerSocket) => Promise<void>;
123
+ error?: (error: Error, ws: NostrWSServerSocket) => void;
124
+ close?: (ws: NostrWSServerSocket) => void;
125
+ };
126
+ }
127
+ /**
128
+ * Nostr WebSocket server message
129
+ */
130
+ export type NostrWSServerServerMessage = NostrWSMessage & {
131
+ clientId?: string;
132
+ timestamp?: number;
133
+ };
134
+ //# sourceMappingURL=nostr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nostr.d.ts","sourceRoot":"","sources":["../../../src/types/nostr.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * @file Nostr protocol type definitions
4
+ * @module types/nostr
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=nostr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nostr.js","sourceRoot":"","sources":["../../../src/types/nostr.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * @file WebSocket client configuration options
3
+ * @module types/options
4
+ */
5
+ import WebSocket from 'ws';
6
+ import { NostrWSMessage } from './messages';
7
+ /**
8
+ * Handler functions for WebSocket events
9
+ */
10
+ export interface NostrWSHandlers {
11
+ /**
12
+ * Handler for incoming messages
13
+ */
14
+ message: (message: NostrWSMessage) => Promise<void>;
15
+ /**
16
+ * Handler for WebSocket errors
17
+ */
18
+ error: (error: Error) => void;
19
+ /**
20
+ * Handler for connection close events
21
+ */
22
+ close: () => void;
23
+ /**
24
+ * Handler for connection state changes
25
+ */
26
+ stateChange?: (state: string) => void;
27
+ /**
28
+ * Handler for heartbeat events
29
+ */
30
+ heartbeat?: () => void;
31
+ /**
32
+ * Handler for connection events
33
+ */
34
+ connect?: () => void;
35
+ /**
36
+ * Handler for disconnection events
37
+ */
38
+ disconnect?: () => void;
39
+ /**
40
+ * Handler for reconnection events
41
+ */
42
+ reconnect?: () => void;
43
+ }
44
+ /**
45
+ * Connection retry configuration
46
+ */
47
+ export interface RetryConfig {
48
+ /**
49
+ * Maximum number of retry attempts
50
+ * @default 10
51
+ */
52
+ maxAttempts: number;
53
+ /**
54
+ * Initial delay between retries in milliseconds
55
+ * @default 1000
56
+ */
57
+ initialDelay: number;
58
+ /**
59
+ * Maximum delay between retries in milliseconds
60
+ * @default 30000
61
+ */
62
+ maxDelay: number;
63
+ /**
64
+ * Factor to multiply delay by after each attempt
65
+ * @default 1.5
66
+ */
67
+ backoffFactor: number;
68
+ }
69
+ /**
70
+ * Queue configuration
71
+ */
72
+ export interface QueueConfig {
73
+ /**
74
+ * Maximum size of the message queue
75
+ * @default 1000
76
+ */
77
+ maxSize: number;
78
+ /**
79
+ * Maximum number of retry attempts per message
80
+ * @default 3
81
+ */
82
+ maxRetries: number;
83
+ /**
84
+ * Base delay between retries in milliseconds
85
+ * @default 1000
86
+ */
87
+ retryDelay: number;
88
+ /**
89
+ * Time in milliseconds after which messages are considered stale
90
+ * @default 300000 (5 minutes)
91
+ */
92
+ staleTimeout: number;
93
+ }
94
+ /**
95
+ * Heartbeat configuration
96
+ */
97
+ export interface HeartbeatConfig {
98
+ /**
99
+ * Interval between heartbeat pings in milliseconds
100
+ * @default 30000
101
+ */
102
+ interval: number;
103
+ /**
104
+ * Timeout for heartbeat response in milliseconds
105
+ * @default 5000
106
+ */
107
+ timeout: number;
108
+ /**
109
+ * Maximum missed heartbeats before connection is considered dead
110
+ * @default 3
111
+ */
112
+ maxMissed: number;
113
+ }
114
+ /**
115
+ * WebSocket client configuration options
116
+ */
117
+ export interface NostrWSOptions {
118
+ /**
119
+ * WebSocket implementation to use
120
+ * @default ws
121
+ */
122
+ WebSocketImpl: typeof WebSocket;
123
+ /**
124
+ * Event handlers
125
+ */
126
+ handlers: NostrWSHandlers;
127
+ /**
128
+ * Retry configuration
129
+ */
130
+ retry?: Partial<RetryConfig>;
131
+ /**
132
+ * Queue configuration
133
+ */
134
+ queue?: Partial<QueueConfig>;
135
+ /**
136
+ * Heartbeat configuration
137
+ */
138
+ heartbeat?: Partial<HeartbeatConfig>;
139
+ /**
140
+ * Whether to automatically reconnect on disconnection
141
+ * @default true
142
+ */
143
+ autoReconnect?: boolean;
144
+ /**
145
+ * Whether to buffer messages when disconnected
146
+ * @default true
147
+ */
148
+ bufferMessages?: boolean;
149
+ /**
150
+ * Whether to automatically remove stale messages from the queue
151
+ * @default true
152
+ */
153
+ cleanStaleMessages?: boolean;
154
+ }
155
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/types/options.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,SAAS,MAAM,IAAI,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpD;;OAEG;IACH,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAE9B;;OAEG;IACH,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEtC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IAEvB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IAExB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,aAAa,EAAE,OAAO,SAAS,CAAC;IAEhC;;OAEG;IACH,QAAQ,EAAE,eAAe,CAAC;IAE1B;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAE7B;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAE7B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAErC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * @file WebSocket client configuration options
4
+ * @module types/options
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/types/options.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @file Message priority definitions
3
+ * @module types/priority
4
+ */
5
+ /**
6
+ * Message priority levels for queue management
7
+ */
8
+ export declare enum MessagePriority {
9
+ HIGH = "HIGH",
10
+ NORMAL = "NORMAL",
11
+ LOW = "LOW"
12
+ }
13
+ //# sourceMappingURL=priority.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priority.d.ts","sourceRoot":"","sources":["../../../src/types/priority.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,oBAAY,eAAe;IACzB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,GAAG,QAAQ;CACZ"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ /**
3
+ * @file Message priority definitions
4
+ * @module types/priority
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.MessagePriority = void 0;
8
+ /**
9
+ * Message priority levels for queue management
10
+ */
11
+ var MessagePriority;
12
+ (function (MessagePriority) {
13
+ MessagePriority["HIGH"] = "HIGH";
14
+ MessagePriority["NORMAL"] = "NORMAL";
15
+ MessagePriority["LOW"] = "LOW";
16
+ })(MessagePriority || (exports.MessagePriority = MessagePriority = {}));
17
+ //# sourceMappingURL=priority.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priority.js","sourceRoot":"","sources":["../../../src/types/priority.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH;;GAEG;AACH,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,oCAAiB,CAAA;IACjB,8BAAW,CAAA;AACb,CAAC,EAJW,eAAe,+BAAf,eAAe,QAI1B"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @file Relay type definitions
3
+ * @module types/relays
4
+ */
5
+ /**
6
+ * Relay information interface
7
+ */
8
+ export interface NostrRelayInfo {
9
+ name?: string;
10
+ description?: string;
11
+ pubkey?: string;
12
+ contact?: string;
13
+ supported_nips?: number[];
14
+ software?: string;
15
+ version?: string;
16
+ }
17
+ /**
18
+ * Relay metadata interface
19
+ */
20
+ export interface NostrRelayMetadata extends NostrRelayInfo {
21
+ url: string;
22
+ status: 'connected' | 'disconnected' | 'error';
23
+ error?: string;
24
+ lastConnected?: number;
25
+ lastDisconnected?: number;
26
+ }
27
+ //# sourceMappingURL=relays.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relays.d.ts","sourceRoot":"","sources":["../../../src/types/relays.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,WAAW,GAAG,cAAc,GAAG,OAAO,CAAC;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * @file Relay type definitions
4
+ * @module types/relays
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=relays.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relays.js","sourceRoot":"","sources":["../../../src/types/relays.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @file Scoring and metrics type definitions
3
+ * @module types/scoring
4
+ */
5
+ /**
6
+ * Metric value types
7
+ */
8
+ export type MetricValue = number | string | boolean | Date;
9
+ /**
10
+ * Transport data types
11
+ */
12
+ export type TransportData = string | Buffer | ArrayBuffer | SharedArrayBuffer;
13
+ /**
14
+ * Metrics update event
15
+ */
16
+ export interface MetricUpdateEvent {
17
+ endpoint: string;
18
+ metricType: string;
19
+ value: MetricValue;
20
+ timestamp: number;
21
+ }
22
+ export interface BaseMetrics {
23
+ totalConnections: number;
24
+ activeConnections: number;
25
+ connectionErrors: number;
26
+ messagesReceived: number;
27
+ messagesSent: number;
28
+ bytesReceived: number;
29
+ bytesSent: number;
30
+ averageLatency: number;
31
+ lastSeen: number;
32
+ }
33
+ export interface ScoringStrategy {
34
+ calculateScore(metrics: BaseMetrics): number;
35
+ }
36
+ export interface MetricsProvider<T extends BaseMetrics = BaseMetrics> {
37
+ getMetrics(endpoint: string): T;
38
+ getAllMetrics(): Map<string, T>;
39
+ trackMetric(endpoint: string, metricType: string, value: any): void;
40
+ }
41
+ export declare const DEFAULT_WEIGHTS: {
42
+ readonly latency: 0.2;
43
+ readonly reliability: 0.3;
44
+ readonly uptime: 0.2;
45
+ readonly errors: 0.2;
46
+ readonly activity: 0.1;
47
+ };
48
+ export declare class DefaultScoringStrategy implements ScoringStrategy {
49
+ private weights;
50
+ constructor(weights?: {
51
+ readonly latency: 0.2;
52
+ readonly reliability: 0.3;
53
+ readonly uptime: 0.2;
54
+ readonly errors: 0.2;
55
+ readonly activity: 0.1;
56
+ });
57
+ calculateScore(metrics: BaseMetrics): number;
58
+ }
59
+ //# sourceMappingURL=scoring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoring.d.ts","sourceRoot":"","sources":["../../../src/types/scoring.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,iBAAiB,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAE1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAAC;CAC9C;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW;IAClE,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC;IAChC,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAChC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;CACrE;AAGD,eAAO,MAAM,eAAe;;;;;;CAMlB,CAAC;AAGX,qBAAa,sBAAuB,YAAW,eAAe;IAChD,OAAO,CAAC,OAAO;gBAAP,OAAO;;;;;;KAAkB;IAE7C,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM;CAe7C"}