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,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"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ /**
3
+ * @file NIP-20 Command Results implementation
4
+ * @module nips/nip-20
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.CommandStatus = void 0;
8
+ exports.validateCommandMessage = validateCommandMessage;
9
+ exports.createCommandResult = createCommandResult;
10
+ exports.createOkMessage = createOkMessage;
11
+ exports.createCommandNoticeMessage = createCommandNoticeMessage;
12
+ const logger_1 = require("../utils/logger");
13
+ const logger = (0, logger_1.getLogger)('NIP-20');
14
+ /**
15
+ * Command status types
16
+ */
17
+ var CommandStatus;
18
+ (function (CommandStatus) {
19
+ CommandStatus["SUCCESS"] = "success";
20
+ CommandStatus["error"] = "error";
21
+ CommandStatus["PENDING"] = "pending";
22
+ CommandStatus["RATE_LIMITED"] = "rate_limited";
23
+ CommandStatus["AUTH_REQUIRED"] = "auth_required";
24
+ CommandStatus["RESTRICTED"] = "restricted";
25
+ })(CommandStatus || (exports.CommandStatus = CommandStatus = {}));
26
+ /**
27
+ * Validates a command message according to NIP-20
28
+ */
29
+ function validateCommandMessage(message) {
30
+ if (!Array.isArray(message) || message.length < 2) {
31
+ logger.debug('Invalid command message format');
32
+ return false;
33
+ }
34
+ const [type, data] = message;
35
+ if (typeof data !== 'object' || !data) {
36
+ logger.debug('Invalid command message data');
37
+ return false;
38
+ }
39
+ const commandData = data;
40
+ // For OK/NOTICE messages
41
+ if (type === 'OK') {
42
+ if (!commandData.event_id || typeof commandData.event_id !== 'string') {
43
+ logger.debug('Invalid event_id in OK message');
44
+ return false;
45
+ }
46
+ if (typeof commandData.status !== 'boolean') {
47
+ logger.debug('Invalid status in OK message');
48
+ return false;
49
+ }
50
+ }
51
+ // For NOTICE messages
52
+ if (type === 'NOTICE' && commandData.code) {
53
+ if (!Object.values(CommandStatus).includes(commandData.code)) {
54
+ logger.debug('Invalid command status code');
55
+ return false;
56
+ }
57
+ }
58
+ // Optional fields validation
59
+ if (commandData.message && typeof commandData.message !== 'string') {
60
+ logger.debug('Invalid message field');
61
+ return false;
62
+ }
63
+ if (commandData.details && typeof commandData.details !== 'object') {
64
+ logger.debug('Invalid details field');
65
+ return false;
66
+ }
67
+ return true;
68
+ }
69
+ /**
70
+ * Creates a command result message
71
+ */
72
+ function createCommandResult(data) {
73
+ const status = data.status ?? false;
74
+ const code = status ? CommandStatus.SUCCESS : data.code;
75
+ return {
76
+ status,
77
+ code,
78
+ message: data.message,
79
+ details: data.details
80
+ };
81
+ }
82
+ /**
83
+ * Creates an OK message
84
+ */
85
+ function createOkMessage(eventId, success = true, details) {
86
+ return ['OK', {
87
+ event_id: eventId,
88
+ status: success,
89
+ ...details && { details }
90
+ }];
91
+ }
92
+ /**
93
+ * Creates a NOTICE message
94
+ */
95
+ function createCommandNoticeMessage(code, message, details) {
96
+ return ['NOTICE', {
97
+ code,
98
+ message,
99
+ ...details && { details }
100
+ }];
101
+ }
102
+ //# sourceMappingURL=nip-20.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nip-20.js","sourceRoot":"","sources":["../../../src/nips/nip-20.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * @file NIP-22: Event Created At Limits
3
+ * @module nips/nip-22
4
+ * @see https://github.com/nostr-protocol/nips/blob/master/22.md
5
+ */
6
+ import type { NostrWSMessage } from '../types/messages';
7
+ import type { Logger } from '../types/logger';
8
+ /**
9
+ * Default time limits in seconds
10
+ */
11
+ export declare const DEFAULT_TIME_LIMITS: {
12
+ FUTURE_LIMIT: number;
13
+ PAST_LIMIT: number;
14
+ };
15
+ /**
16
+ * Time validation result
17
+ */
18
+ export interface TimeValidationResult {
19
+ valid: boolean;
20
+ reason?: string;
21
+ }
22
+ /**
23
+ * Time validator interface
24
+ */
25
+ export interface TimeValidator {
26
+ /**
27
+ * Validates event timestamp
28
+ * @param timestamp - Event timestamp
29
+ * @returns {TimeValidationResult} Validation result
30
+ */
31
+ validateTime(timestamp: number): TimeValidationResult;
32
+ /**
33
+ * Updates server time offset
34
+ * @param serverTime - Server timestamp
35
+ */
36
+ updateTimeOffset(serverTime: number): void;
37
+ /**
38
+ * Gets current adjusted timestamp
39
+ * @returns {number} Adjusted timestamp
40
+ */
41
+ getCurrentTime(): number;
42
+ }
43
+ /**
44
+ * Creates a time validator
45
+ * @param logger - Logger instance
46
+ * @param futureLimitSeconds - Future time limit in seconds
47
+ * @param pastLimitSeconds - Past time limit in seconds
48
+ * @returns {TimeValidator} Time validator
49
+ */
50
+ export declare function createTimeValidator(logger: Logger, futureLimitSeconds?: number, pastLimitSeconds?: number): TimeValidator;
51
+ /**
52
+ * Validates event timestamp
53
+ * @param message - Message to validate
54
+ * @param validator - Time validator
55
+ * @param logger - Logger instance
56
+ * @returns {TimeValidationResult} Validation result
57
+ */
58
+ export declare function validateEventTime(message: NostrWSMessage, validator: TimeValidator, logger: Logger): TimeValidationResult;
59
+ /**
60
+ * Time synchronization manager interface
61
+ */
62
+ export interface TimeSyncManager {
63
+ /**
64
+ * Starts time synchronization
65
+ * @param wsUrl - WebSocket URL for time sync
66
+ */
67
+ startSync(wsUrl: string): void;
68
+ /**
69
+ * Stops time synchronization
70
+ */
71
+ stopSync(): void;
72
+ /**
73
+ * Gets current synchronized time
74
+ * @returns {number} Current timestamp
75
+ */
76
+ getCurrentTime(): number;
77
+ /**
78
+ * Validates event timing
79
+ * @param event - Event to validate
80
+ * @returns {TimeValidationResult} Validation result
81
+ */
82
+ validateEvent(event: NostrWSMessage): TimeValidationResult;
83
+ }
84
+ /**
85
+ * Creates a time synchronization manager
86
+ * @param logger - Logger instance
87
+ * @returns {TimeSyncManager} Time sync manager
88
+ */
89
+ export declare function createTimeSyncManager(logger: Logger): TimeSyncManager;
90
+ //# sourceMappingURL=nip-22.d.ts.map