@geekmidas/events 1.1.6 → 10.0.0-alpha.0

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 (353) hide show
  1. package/dist/{PgBossConnection-B71ssr72.cjs → PgBossConnection-23soZ_aM.cjs} +2 -2
  2. package/dist/{PgBossConnection-B71ssr72.cjs.map → PgBossConnection-23soZ_aM.cjs.map} +1 -1
  3. package/dist/PgBossConnection-CCXhoNzb.cjs +4 -0
  4. package/dist/{PgBossConnection-Bj_Wo1lQ.mjs → PgBossConnection-DvNbd4Zk.mjs} +2 -2
  5. package/dist/{PgBossConnection-Bj_Wo1lQ.mjs.map → PgBossConnection-DvNbd4Zk.mjs.map} +1 -1
  6. package/dist/PgBossConnection-_gdM40JB.mjs +4 -0
  7. package/dist/{RabbitMQConnection-DddqvI3I.cjs → RabbitMQConnection-BKEdCUro.cjs} +2 -2
  8. package/dist/{RabbitMQConnection-DddqvI3I.cjs.map → RabbitMQConnection-BKEdCUro.cjs.map} +1 -1
  9. package/dist/RabbitMQConnection-CCOqDDnb.cjs +4 -0
  10. package/dist/RabbitMQConnection-DJEyM-Bu.mjs +4 -0
  11. package/dist/{RabbitMQConnection-Cg7mp8u-.mjs → RabbitMQConnection-DJgUPc19.mjs} +2 -2
  12. package/dist/{RabbitMQConnection-Cg7mp8u-.mjs.map → RabbitMQConnection-DJgUPc19.mjs.map} +1 -1
  13. package/dist/{SNSConnection-DFehUWG1.cjs → SNSConnection-B2K86hpz.cjs} +7 -8
  14. package/dist/SNSConnection-B2K86hpz.cjs.map +1 -0
  15. package/dist/SNSConnection-BVo84FeW.mjs +5 -0
  16. package/dist/SNSConnection-DIHRjrQF.cjs +5 -0
  17. package/dist/{SNSConnection-CpMKzgx2.mjs → SNSConnection-v9jjF99w.mjs} +7 -8
  18. package/dist/SNSConnection-v9jjF99w.mjs.map +1 -0
  19. package/dist/{SQSConnection-BqZZnAZI.mjs → SQSConnection-4tBMkVZE.mjs} +7 -8
  20. package/dist/SQSConnection-4tBMkVZE.mjs.map +1 -0
  21. package/dist/SQSConnection-BBLAvF-1.cjs +5 -0
  22. package/dist/{SQSConnection-yge9cB_f.cjs → SQSConnection-BaC7rGhI.cjs} +7 -8
  23. package/dist/SQSConnection-BaC7rGhI.cjs.map +1 -0
  24. package/dist/SQSConnection-DbavOq8_.mjs +5 -0
  25. package/dist/{SQSSubscriber-CVGhZ8Nr.mjs → SQSSubscriber-BMWZ3s5q.mjs} +1 -1
  26. package/dist/{SQSSubscriber-CVGhZ8Nr.mjs.map → SQSSubscriber-BMWZ3s5q.mjs.map} +1 -1
  27. package/dist/{SQSSubscriber-B4sRXVl6.cjs → SQSSubscriber-YXPlg2rm.cjs} +2 -2
  28. package/dist/{SQSSubscriber-B4sRXVl6.cjs.map → SQSSubscriber-YXPlg2rm.cjs.map} +1 -1
  29. package/dist/basic/index.cjs +71 -8
  30. package/dist/basic/index.cjs.map +1 -0
  31. package/dist/basic/index.d.cts +44 -5
  32. package/dist/basic/index.d.cts.map +1 -0
  33. package/dist/basic/index.d.mts +44 -5
  34. package/dist/basic/index.d.mts.map +1 -0
  35. package/dist/basic/index.mjs +67 -5
  36. package/dist/basic/index.mjs.map +1 -0
  37. package/dist/chunk-B9dir_RE.mjs +11 -0
  38. package/dist/{chunk-CUT6urMc.cjs → chunk-CsX-DzYB.cjs} +12 -0
  39. package/dist/index.cjs +189 -6
  40. package/dist/index.cjs.map +1 -0
  41. package/dist/index.d.cts +46 -5
  42. package/dist/index.d.cts.map +1 -0
  43. package/dist/index.d.mts +46 -5
  44. package/dist/index.d.mts.map +1 -0
  45. package/dist/index.mjs +188 -5
  46. package/dist/index.mjs.map +1 -0
  47. package/dist/pgboss/index.cjs +81 -5
  48. package/dist/pgboss/index.cjs.map +1 -0
  49. package/dist/pgboss/index.d.cts +65 -5
  50. package/dist/pgboss/index.d.cts.map +1 -0
  51. package/dist/pgboss/index.d.mts +65 -5
  52. package/dist/pgboss/index.d.mts.map +1 -0
  53. package/dist/pgboss/index.mjs +81 -5
  54. package/dist/pgboss/index.mjs.map +1 -0
  55. package/dist/rabbitmq/index.cjs +95 -5
  56. package/dist/rabbitmq/index.cjs.map +1 -0
  57. package/dist/rabbitmq/index.d.cts +83 -5
  58. package/dist/rabbitmq/index.d.cts.map +1 -0
  59. package/dist/rabbitmq/index.d.mts +83 -5
  60. package/dist/rabbitmq/index.d.mts.map +1 -0
  61. package/dist/rabbitmq/index.mjs +95 -5
  62. package/dist/rabbitmq/index.mjs.map +1 -0
  63. package/dist/sns/index.cjs +186 -7
  64. package/dist/sns/index.cjs.map +1 -0
  65. package/dist/sns/index.d.cts +109 -5
  66. package/dist/sns/index.d.cts.map +1 -0
  67. package/dist/sns/index.d.mts +109 -5
  68. package/dist/sns/index.d.mts.map +1 -0
  69. package/dist/sns/index.mjs +179 -7
  70. package/dist/sns/index.mjs.map +1 -0
  71. package/dist/sns/snsUrl.cjs +7 -0
  72. package/dist/sns/snsUrl.d.cts +2 -0
  73. package/dist/sns/snsUrl.d.mts +2 -0
  74. package/dist/sns/snsUrl.mjs +3 -0
  75. package/dist/snsUrl-ASdc0D1v.d.cts +61 -0
  76. package/dist/snsUrl-ASdc0D1v.d.cts.map +1 -0
  77. package/dist/snsUrl-CifYhPAa.mjs +79 -0
  78. package/dist/snsUrl-CifYhPAa.mjs.map +1 -0
  79. package/dist/snsUrl-FRbRcwF0.d.mts +61 -0
  80. package/dist/snsUrl-FRbRcwF0.d.mts.map +1 -0
  81. package/dist/snsUrl-f2gU3CzK.cjs +114 -0
  82. package/dist/snsUrl-f2gU3CzK.cjs.map +1 -0
  83. package/dist/sqs/index.cjs +67 -5
  84. package/dist/sqs/index.cjs.map +1 -0
  85. package/dist/sqs/index.d.cts +101 -5
  86. package/dist/sqs/index.d.cts.map +1 -0
  87. package/dist/sqs/index.d.mts +101 -5
  88. package/dist/sqs/index.d.mts.map +1 -0
  89. package/dist/sqs/index.mjs +60 -5
  90. package/dist/sqs/index.mjs.map +1 -0
  91. package/dist/sqs/sqsUrl.cjs +7 -0
  92. package/dist/sqs/sqsUrl.d.cts +2 -0
  93. package/dist/sqs/sqsUrl.d.mts +2 -0
  94. package/dist/sqs/sqsUrl.mjs +3 -0
  95. package/dist/sqsUrl-BV6zS-mi.d.mts +60 -0
  96. package/dist/sqsUrl-BV6zS-mi.d.mts.map +1 -0
  97. package/dist/sqsUrl-CbAsBFHI.mjs +80 -0
  98. package/dist/sqsUrl-CbAsBFHI.mjs.map +1 -0
  99. package/dist/sqsUrl-CdisN3GU.cjs +115 -0
  100. package/dist/sqsUrl-CdisN3GU.cjs.map +1 -0
  101. package/dist/sqsUrl-DZDPHxIk.d.cts +60 -0
  102. package/dist/sqsUrl-DZDPHxIk.d.cts.map +1 -0
  103. package/dist/{types-Dh9Jyinx.d.mts → types-BmixGrOD.d.cts} +1 -1
  104. package/dist/{types-Dh9Jyinx.d.mts.map → types-BmixGrOD.d.cts.map} +1 -1
  105. package/dist/{types-BrdcSEnd.mjs → types-CYDt-2RQ.mjs} +1 -1
  106. package/dist/{types-BrdcSEnd.mjs.map → types-CYDt-2RQ.mjs.map} +1 -1
  107. package/dist/{types-Dj23od3e.d.cts → types-DycjsYms.d.mts} +1 -1
  108. package/dist/{types-Dj23od3e.d.cts.map → types-DycjsYms.d.mts.map} +1 -1
  109. package/package.json +26 -3
  110. package/CHANGELOG.md +0 -88
  111. package/dist/BasicConnection-CQsJpx2J.d.cts +0 -27
  112. package/dist/BasicConnection-CQsJpx2J.d.cts.map +0 -1
  113. package/dist/BasicConnection-CxfNEvlb.cjs +0 -48
  114. package/dist/BasicConnection-CxfNEvlb.cjs.map +0 -1
  115. package/dist/BasicConnection-DcRelT64.d.mts +0 -27
  116. package/dist/BasicConnection-DcRelT64.d.mts.map +0 -1
  117. package/dist/BasicConnection-hl-Ogz3a.mjs +0 -42
  118. package/dist/BasicConnection-hl-Ogz3a.mjs.map +0 -1
  119. package/dist/BasicPublisher-C-hMX2Hy.d.mts +0 -14
  120. package/dist/BasicPublisher-C-hMX2Hy.d.mts.map +0 -1
  121. package/dist/BasicPublisher-CGMXg2I2.d.cts +0 -14
  122. package/dist/BasicPublisher-CGMXg2I2.d.cts.map +0 -1
  123. package/dist/BasicPublisher-CXAVKxgq.cjs +0 -20
  124. package/dist/BasicPublisher-CXAVKxgq.cjs.map +0 -1
  125. package/dist/BasicPublisher-DogbeHAH.mjs +0 -14
  126. package/dist/BasicPublisher-DogbeHAH.mjs.map +0 -1
  127. package/dist/BasicSubscriber-BJSZN22M.mjs +0 -16
  128. package/dist/BasicSubscriber-BJSZN22M.mjs.map +0 -1
  129. package/dist/BasicSubscriber-HzSJ_MbB.d.mts +0 -14
  130. package/dist/BasicSubscriber-HzSJ_MbB.d.mts.map +0 -1
  131. package/dist/BasicSubscriber-mVJRMXhZ.cjs +0 -22
  132. package/dist/BasicSubscriber-mVJRMXhZ.cjs.map +0 -1
  133. package/dist/BasicSubscriber-uW3IOyBj.d.cts +0 -14
  134. package/dist/BasicSubscriber-uW3IOyBj.d.cts.map +0 -1
  135. package/dist/EventConnection-4niMI6D8.d.mts +0 -13
  136. package/dist/EventConnection-4niMI6D8.d.mts.map +0 -1
  137. package/dist/EventConnection-BkA9FSVL.cjs +0 -45
  138. package/dist/EventConnection-BkA9FSVL.cjs.map +0 -1
  139. package/dist/EventConnection-Kr32GAzq.mjs +0 -40
  140. package/dist/EventConnection-Kr32GAzq.mjs.map +0 -1
  141. package/dist/EventConnection-dP42P87q.d.cts +0 -13
  142. package/dist/EventConnection-dP42P87q.d.cts.map +0 -1
  143. package/dist/EventConnection.cjs +0 -5
  144. package/dist/EventConnection.d.cts +0 -3
  145. package/dist/EventConnection.d.mts +0 -3
  146. package/dist/EventConnection.mjs +0 -4
  147. package/dist/PgBossConnection-DCfLGoHx.d.mts +0 -32
  148. package/dist/PgBossConnection-DCfLGoHx.d.mts.map +0 -1
  149. package/dist/PgBossConnection-oto_CAbP.d.cts +0 -32
  150. package/dist/PgBossConnection-oto_CAbP.d.cts.map +0 -1
  151. package/dist/PgBossPublisher-Bwo7qSoH.mjs +0 -35
  152. package/dist/PgBossPublisher-Bwo7qSoH.mjs.map +0 -1
  153. package/dist/PgBossPublisher-CqjigBVC.d.mts +0 -20
  154. package/dist/PgBossPublisher-CqjigBVC.d.mts.map +0 -1
  155. package/dist/PgBossPublisher-FTdYh58W.cjs +0 -41
  156. package/dist/PgBossPublisher-FTdYh58W.cjs.map +0 -1
  157. package/dist/PgBossPublisher-JIiB1zpA.d.cts +0 -20
  158. package/dist/PgBossPublisher-JIiB1zpA.d.cts.map +0 -1
  159. package/dist/PgBossSubscriber-BUiB1JKf.d.mts +0 -24
  160. package/dist/PgBossSubscriber-BUiB1JKf.d.mts.map +0 -1
  161. package/dist/PgBossSubscriber-BubVfuWm.cjs +0 -52
  162. package/dist/PgBossSubscriber-BubVfuWm.cjs.map +0 -1
  163. package/dist/PgBossSubscriber-Cozijfdj.d.cts +0 -24
  164. package/dist/PgBossSubscriber-Cozijfdj.d.cts.map +0 -1
  165. package/dist/PgBossSubscriber-DopATe80.mjs +0 -46
  166. package/dist/PgBossSubscriber-DopATe80.mjs.map +0 -1
  167. package/dist/Publisher-CKloIGh6.cjs +0 -79
  168. package/dist/Publisher-CKloIGh6.cjs.map +0 -1
  169. package/dist/Publisher-ChLTrUeP.mjs +0 -74
  170. package/dist/Publisher-ChLTrUeP.mjs.map +0 -1
  171. package/dist/Publisher-DDee6xau.d.cts +0 -21
  172. package/dist/Publisher-DDee6xau.d.cts.map +0 -1
  173. package/dist/Publisher-VHumMkrP.d.mts +0 -21
  174. package/dist/Publisher-VHumMkrP.d.mts.map +0 -1
  175. package/dist/Publisher.cjs +0 -4
  176. package/dist/Publisher.d.cts +0 -3
  177. package/dist/Publisher.d.mts +0 -3
  178. package/dist/Publisher.mjs +0 -4
  179. package/dist/RabbitMQConnection-DV9t3VYp.d.mts +0 -44
  180. package/dist/RabbitMQConnection-DV9t3VYp.d.mts.map +0 -1
  181. package/dist/RabbitMQConnection-jNME_eR7.d.cts +0 -44
  182. package/dist/RabbitMQConnection-jNME_eR7.d.cts.map +0 -1
  183. package/dist/RabbitMQPublisher-BfTRUnpy.cjs +0 -45
  184. package/dist/RabbitMQPublisher-BfTRUnpy.cjs.map +0 -1
  185. package/dist/RabbitMQPublisher-Cxm1zSkD.mjs +0 -39
  186. package/dist/RabbitMQPublisher-Cxm1zSkD.mjs.map +0 -1
  187. package/dist/RabbitMQPublisher-DKmgwqVj.d.mts +0 -25
  188. package/dist/RabbitMQPublisher-DKmgwqVj.d.mts.map +0 -1
  189. package/dist/RabbitMQPublisher-d257OHLa.d.cts +0 -25
  190. package/dist/RabbitMQPublisher-d257OHLa.d.cts.map +0 -1
  191. package/dist/RabbitMQSubscriber-BF7JGfYm.d.cts +0 -27
  192. package/dist/RabbitMQSubscriber-BF7JGfYm.d.cts.map +0 -1
  193. package/dist/RabbitMQSubscriber-CWDdmt1M.cjs +0 -62
  194. package/dist/RabbitMQSubscriber-CWDdmt1M.cjs.map +0 -1
  195. package/dist/RabbitMQSubscriber-CdbUy5mB.d.mts +0 -27
  196. package/dist/RabbitMQSubscriber-CdbUy5mB.d.mts.map +0 -1
  197. package/dist/RabbitMQSubscriber-fP8G9OlK.mjs +0 -56
  198. package/dist/RabbitMQSubscriber-fP8G9OlK.mjs.map +0 -1
  199. package/dist/SNSConnection-CG4iEwA8.d.mts +0 -41
  200. package/dist/SNSConnection-CG4iEwA8.d.mts.map +0 -1
  201. package/dist/SNSConnection-CpMKzgx2.mjs.map +0 -1
  202. package/dist/SNSConnection-DFehUWG1.cjs.map +0 -1
  203. package/dist/SNSConnection-Dol9FuxA.d.cts +0 -41
  204. package/dist/SNSConnection-Dol9FuxA.d.cts.map +0 -1
  205. package/dist/SNSPublisher-BoA8uLnw.cjs +0 -47
  206. package/dist/SNSPublisher-BoA8uLnw.cjs.map +0 -1
  207. package/dist/SNSPublisher-D50dPCEh.d.mts +0 -22
  208. package/dist/SNSPublisher-D50dPCEh.d.mts.map +0 -1
  209. package/dist/SNSPublisher-DQunY4NM.d.cts +0 -22
  210. package/dist/SNSPublisher-DQunY4NM.d.cts.map +0 -1
  211. package/dist/SNSPublisher-Drr4kHn6.mjs +0 -41
  212. package/dist/SNSPublisher-Drr4kHn6.mjs.map +0 -1
  213. package/dist/SNSSubscriber-CUgHK4W2.d.mts +0 -55
  214. package/dist/SNSSubscriber-CUgHK4W2.d.mts.map +0 -1
  215. package/dist/SNSSubscriber-DIXqA-VV.mjs +0 -139
  216. package/dist/SNSSubscriber-DIXqA-VV.mjs.map +0 -1
  217. package/dist/SNSSubscriber-ZGJjhXFQ.d.cts +0 -55
  218. package/dist/SNSSubscriber-ZGJjhXFQ.d.cts.map +0 -1
  219. package/dist/SNSSubscriber-ZIdCi6nQ.cjs +0 -145
  220. package/dist/SNSSubscriber-ZIdCi6nQ.cjs.map +0 -1
  221. package/dist/SQSConnection-BqZZnAZI.mjs.map +0 -1
  222. package/dist/SQSConnection-BtEkDha8.d.cts +0 -41
  223. package/dist/SQSConnection-BtEkDha8.d.cts.map +0 -1
  224. package/dist/SQSConnection-DVy43GCV.d.mts +0 -41
  225. package/dist/SQSConnection-DVy43GCV.d.mts.map +0 -1
  226. package/dist/SQSConnection-yge9cB_f.cjs.map +0 -1
  227. package/dist/SQSPublisher-DG9o4ME3.mjs +0 -57
  228. package/dist/SQSPublisher-DG9o4ME3.mjs.map +0 -1
  229. package/dist/SQSPublisher-Dq5353oZ.cjs +0 -63
  230. package/dist/SQSPublisher-Dq5353oZ.cjs.map +0 -1
  231. package/dist/SQSPublisher-kyl5HW3N.d.cts +0 -25
  232. package/dist/SQSPublisher-kyl5HW3N.d.cts.map +0 -1
  233. package/dist/SQSPublisher-qDE5Fp-N.d.mts +0 -25
  234. package/dist/SQSPublisher-qDE5Fp-N.d.mts.map +0 -1
  235. package/dist/SQSSubscriber-CDvaG4ij.d.cts +0 -44
  236. package/dist/SQSSubscriber-CDvaG4ij.d.cts.map +0 -1
  237. package/dist/SQSSubscriber-JfFuAAoP.d.mts +0 -44
  238. package/dist/SQSSubscriber-JfFuAAoP.d.mts.map +0 -1
  239. package/dist/Subscriber-CG_QUQZs.d.cts +0 -21
  240. package/dist/Subscriber-CG_QUQZs.d.cts.map +0 -1
  241. package/dist/Subscriber-CghW0A02.cjs +0 -88
  242. package/dist/Subscriber-CghW0A02.cjs.map +0 -1
  243. package/dist/Subscriber-DiYHmuF0.d.mts +0 -21
  244. package/dist/Subscriber-DiYHmuF0.d.mts.map +0 -1
  245. package/dist/Subscriber-bnkFtSvt.mjs +0 -83
  246. package/dist/Subscriber-bnkFtSvt.mjs.map +0 -1
  247. package/dist/Subscriber.cjs +0 -4
  248. package/dist/Subscriber.d.cts +0 -3
  249. package/dist/Subscriber.d.mts +0 -3
  250. package/dist/Subscriber.mjs +0 -4
  251. package/dist/basic/BasicConnection.cjs +0 -4
  252. package/dist/basic/BasicConnection.d.cts +0 -3
  253. package/dist/basic/BasicConnection.d.mts +0 -3
  254. package/dist/basic/BasicConnection.mjs +0 -4
  255. package/dist/basic/BasicPublisher.cjs +0 -3
  256. package/dist/basic/BasicPublisher.d.cts +0 -4
  257. package/dist/basic/BasicPublisher.d.mts +0 -4
  258. package/dist/basic/BasicPublisher.mjs +0 -3
  259. package/dist/basic/BasicSubscriber.cjs +0 -3
  260. package/dist/basic/BasicSubscriber.d.cts +0 -4
  261. package/dist/basic/BasicSubscriber.d.mts +0 -4
  262. package/dist/basic/BasicSubscriber.mjs +0 -3
  263. package/dist/pgboss/PgBossConnection.cjs +0 -4
  264. package/dist/pgboss/PgBossConnection.d.cts +0 -3
  265. package/dist/pgboss/PgBossConnection.d.mts +0 -3
  266. package/dist/pgboss/PgBossConnection.mjs +0 -4
  267. package/dist/pgboss/PgBossPublisher.cjs +0 -3
  268. package/dist/pgboss/PgBossPublisher.d.cts +0 -4
  269. package/dist/pgboss/PgBossPublisher.d.mts +0 -4
  270. package/dist/pgboss/PgBossPublisher.mjs +0 -3
  271. package/dist/pgboss/PgBossSubscriber.cjs +0 -3
  272. package/dist/pgboss/PgBossSubscriber.d.cts +0 -4
  273. package/dist/pgboss/PgBossSubscriber.d.mts +0 -4
  274. package/dist/pgboss/PgBossSubscriber.mjs +0 -3
  275. package/dist/rabbitmq/RabbitMQConnection.cjs +0 -4
  276. package/dist/rabbitmq/RabbitMQConnection.d.cts +0 -3
  277. package/dist/rabbitmq/RabbitMQConnection.d.mts +0 -3
  278. package/dist/rabbitmq/RabbitMQConnection.mjs +0 -4
  279. package/dist/rabbitmq/RabbitMQPublisher.cjs +0 -3
  280. package/dist/rabbitmq/RabbitMQPublisher.d.cts +0 -4
  281. package/dist/rabbitmq/RabbitMQPublisher.d.mts +0 -4
  282. package/dist/rabbitmq/RabbitMQPublisher.mjs +0 -3
  283. package/dist/rabbitmq/RabbitMQSubscriber.cjs +0 -3
  284. package/dist/rabbitmq/RabbitMQSubscriber.d.cts +0 -4
  285. package/dist/rabbitmq/RabbitMQSubscriber.d.mts +0 -4
  286. package/dist/rabbitmq/RabbitMQSubscriber.mjs +0 -3
  287. package/dist/sns/SNSConnection.cjs +0 -4
  288. package/dist/sns/SNSConnection.d.cts +0 -3
  289. package/dist/sns/SNSConnection.d.mts +0 -3
  290. package/dist/sns/SNSConnection.mjs +0 -4
  291. package/dist/sns/SNSPublisher.cjs +0 -3
  292. package/dist/sns/SNSPublisher.d.cts +0 -4
  293. package/dist/sns/SNSPublisher.d.mts +0 -4
  294. package/dist/sns/SNSPublisher.mjs +0 -3
  295. package/dist/sns/SNSSubscriber.cjs +0 -6
  296. package/dist/sns/SNSSubscriber.d.cts +0 -4
  297. package/dist/sns/SNSSubscriber.d.mts +0 -4
  298. package/dist/sns/SNSSubscriber.mjs +0 -6
  299. package/dist/sqs/SQSConnection.cjs +0 -4
  300. package/dist/sqs/SQSConnection.d.cts +0 -3
  301. package/dist/sqs/SQSConnection.d.mts +0 -3
  302. package/dist/sqs/SQSConnection.mjs +0 -4
  303. package/dist/sqs/SQSPublisher.cjs +0 -3
  304. package/dist/sqs/SQSPublisher.d.cts +0 -4
  305. package/dist/sqs/SQSPublisher.d.mts +0 -4
  306. package/dist/sqs/SQSPublisher.mjs +0 -3
  307. package/dist/sqs/SQSSubscriber.cjs +0 -3
  308. package/dist/sqs/SQSSubscriber.d.cts +0 -4
  309. package/dist/sqs/SQSSubscriber.d.mts +0 -4
  310. package/dist/sqs/SQSSubscriber.mjs +0 -3
  311. package/dist/types.cjs +0 -3
  312. package/dist/types.d.cts +0 -2
  313. package/dist/types.d.mts +0 -2
  314. package/dist/types.mjs +0 -3
  315. package/src/EventConnection.ts +0 -43
  316. package/src/Publisher.ts +0 -98
  317. package/src/Subscriber.ts +0 -113
  318. package/src/__tests__/EventConnection.spec.ts +0 -42
  319. package/src/__tests__/Publisher.spec.ts +0 -96
  320. package/src/__tests__/Subscriber.spec.ts +0 -109
  321. package/src/basic/BasicConnection.ts +0 -47
  322. package/src/basic/BasicPublisher.ts +0 -15
  323. package/src/basic/BasicSubscriber.ts +0 -21
  324. package/src/basic/__tests__/BasicSubscriber.spec.ts +0 -166
  325. package/src/basic/index.ts +0 -3
  326. package/src/index.ts +0 -25
  327. package/src/pgboss/PgBossConnection.ts +0 -91
  328. package/src/pgboss/PgBossPublisher.ts +0 -49
  329. package/src/pgboss/PgBossSubscriber.ts +0 -81
  330. package/src/pgboss/__tests__/pgboss.spec.ts +0 -196
  331. package/src/pgboss/__tests__/setup.ts +0 -21
  332. package/src/pgboss/index.ts +0 -5
  333. package/src/rabbitmq/RabbitMQConnection.ts +0 -148
  334. package/src/rabbitmq/RabbitMQPublisher.ts +0 -67
  335. package/src/rabbitmq/RabbitMQSubscriber.ts +0 -111
  336. package/src/rabbitmq/__tests__/RabbitMQPublisher.spec.ts +0 -378
  337. package/src/rabbitmq/__tests__/RabbitMQSubscriber.spec.ts +0 -292
  338. package/src/rabbitmq/index.ts +0 -6
  339. package/src/sns/SNSConnection.ts +0 -98
  340. package/src/sns/SNSPublisher.ts +0 -62
  341. package/src/sns/SNSSubscriber.ts +0 -218
  342. package/src/sns/__tests__/SNS-SQS-Integration.spec.ts +0 -389
  343. package/src/sns/__tests__/SNSPublisher.spec.ts +0 -449
  344. package/src/sns/__tests__/SNSSubscriber.spec.ts +0 -527
  345. package/src/sns/index.ts +0 -6
  346. package/src/sqs/SQSConnection.ts +0 -97
  347. package/src/sqs/SQSPublisher.ts +0 -105
  348. package/src/sqs/SQSSubscriber.ts +0 -181
  349. package/src/sqs/__tests__/SQSPublisher.spec.ts +0 -189
  350. package/src/sqs/index.ts +0 -6
  351. package/src/types.ts +0 -76
  352. package/tsconfig.json +0 -9
  353. package/tsdown.config.ts +0 -10
@@ -1,8 +1,98 @@
1
1
  require('../types-Byv8N9ma.cjs');
2
- const require_RabbitMQConnection = require('../RabbitMQConnection-DddqvI3I.cjs');
3
- const require_RabbitMQPublisher = require('../RabbitMQPublisher-BfTRUnpy.cjs');
4
- const require_RabbitMQSubscriber = require('../RabbitMQSubscriber-CWDdmt1M.cjs');
2
+ const require_RabbitMQConnection = require('../RabbitMQConnection-BKEdCUro.cjs');
5
3
 
4
+ //#region src/rabbitmq/RabbitMQPublisher.ts
5
+ var RabbitMQPublisher = class RabbitMQPublisher {
6
+ constructor(connection, options = {}) {
7
+ this.connection = connection;
8
+ this.options = options;
9
+ }
10
+ /**
11
+ * Create a RabbitMQPublisher from a connection string
12
+ * Format: rabbitmq://user:pass@host:port/vhost?exchange=name&type=topic&timeout=5000
13
+ */
14
+ static async fromConnectionString(connectionString) {
15
+ const { RabbitMQConnection: RabbitMQConnection$1 } = await Promise.resolve().then(() => require("../RabbitMQConnection-CCOqDDnb.cjs"));
16
+ const connection = await RabbitMQConnection$1.fromConnectionString(connectionString);
17
+ return new RabbitMQPublisher(connection);
18
+ }
19
+ async publish(messages) {
20
+ if (!this.connection.isConnected()) await this.connection.connect();
21
+ const channel = this.connection.amqpChannel;
22
+ if (!channel) throw new Error("Channel not initialized");
23
+ const exchange = this.connection.exchangeName;
24
+ for (const message of messages) {
25
+ const content = Buffer.from(JSON.stringify(message.payload));
26
+ const routingKey = message.type;
27
+ const published = channel.publish(exchange, routingKey, content, {
28
+ contentType: "application/json",
29
+ timestamp: Date.now(),
30
+ type: message.type,
31
+ persistent: true,
32
+ ...this.options.publishOptions
33
+ });
34
+ if (!published) await new Promise((resolve) => channel.once("drain", resolve));
35
+ }
36
+ }
37
+ async close() {}
38
+ };
39
+
40
+ //#endregion
41
+ //#region src/rabbitmq/RabbitMQSubscriber.ts
42
+ var RabbitMQSubscriber = class RabbitMQSubscriber {
43
+ constructor(connection, options = {}) {
44
+ this.connection = connection;
45
+ this.options = options;
46
+ }
47
+ /**
48
+ * Create a RabbitMQSubscriber from a connection string
49
+ * Format: rabbitmq://user:pass@host:port/vhost?exchange=name&type=topic&queueName=myqueue&prefetch=10
50
+ */
51
+ static async fromConnectionString(connectionString) {
52
+ const url = new URL(connectionString);
53
+ const params = url.searchParams;
54
+ const { RabbitMQConnection: RabbitMQConnection$1 } = await Promise.resolve().then(() => require("../RabbitMQConnection-CCOqDDnb.cjs"));
55
+ const connection = await RabbitMQConnection$1.fromConnectionString(connectionString);
56
+ const options = {
57
+ queueName: params.get("queueName") || void 0,
58
+ prefetch: params.get("prefetch") ? Number.parseInt(params.get("prefetch"), 10) : void 0
59
+ };
60
+ return new RabbitMQSubscriber(connection, options);
61
+ }
62
+ async subscribe(messages, listener) {
63
+ if (!this.connection.isConnected()) await this.connection.connect();
64
+ const channel = this.connection.amqpChannel;
65
+ if (!channel) throw new Error("Channel not initialized");
66
+ const exchange = this.connection.exchangeName;
67
+ if (this.options.prefetch) await channel.prefetch(this.options.prefetch);
68
+ const queueName = this.options.queueName || "";
69
+ const queueOptions = {
70
+ durable: true,
71
+ ...this.options.queueOptions
72
+ };
73
+ const { queue } = await channel.assertQueue(queueName, queueOptions);
74
+ for (const messageType of messages) await channel.bindQueue(queue, exchange, messageType);
75
+ await channel.consume(queue, async (msg) => {
76
+ if (!msg) return;
77
+ try {
78
+ const content = msg.content.toString();
79
+ const payload = JSON.parse(content);
80
+ const messageType = msg.properties.type;
81
+ const fullMessage = {
82
+ type: messageType,
83
+ payload
84
+ };
85
+ await listener(fullMessage);
86
+ channel.ack(msg);
87
+ } catch (_error) {
88
+ channel.nack(msg, false, true);
89
+ }
90
+ }, this.options.consumeOptions);
91
+ }
92
+ };
93
+
94
+ //#endregion
6
95
  exports.RabbitMQConnection = require_RabbitMQConnection.RabbitMQConnection;
7
- exports.RabbitMQPublisher = require_RabbitMQPublisher.RabbitMQPublisher;
8
- exports.RabbitMQSubscriber = require_RabbitMQSubscriber.RabbitMQSubscriber;
96
+ exports.RabbitMQPublisher = RabbitMQPublisher;
97
+ exports.RabbitMQSubscriber = RabbitMQSubscriber;
98
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["connection: RabbitMQConnection","options: RabbitMQPublisherOptions","connectionString: string","messages: TMessage[]","connection: RabbitMQConnection","options: RabbitMQSubscriberOptions","connectionString: string","messages: TMessage['type'][]","listener: (payload: TMessage) => Promise<void>","queueOptions: amqplib.Options.AssertQueue","fullMessage: TMessage"],"sources":["../../src/rabbitmq/RabbitMQPublisher.ts","../../src/rabbitmq/RabbitMQSubscriber.ts"],"sourcesContent":["import type amqplib from 'amqplib';\nimport type { EventPublisher, PublishableMessage } from '../types';\nimport type { RabbitMQConnection } from './RabbitMQConnection';\n\nexport interface RabbitMQPublisherOptions {\n\tpublishOptions?: amqplib.Options.Publish;\n}\n\nexport class RabbitMQPublisher<TMessage extends PublishableMessage<string, any>>\n\timplements EventPublisher<TMessage>\n{\n\tconstructor(\n\t\tprivate connection: RabbitMQConnection,\n\t\tprivate options: RabbitMQPublisherOptions = {},\n\t) {}\n\n\t/**\n\t * Create a RabbitMQPublisher from a connection string\n\t * Format: rabbitmq://user:pass@host:port/vhost?exchange=name&type=topic&timeout=5000\n\t */\n\tstatic async fromConnectionString<\n\t\tTMessage extends PublishableMessage<string, any>,\n\t>(connectionString: string): Promise<RabbitMQPublisher<TMessage>> {\n\t\tconst { RabbitMQConnection } = await import('./RabbitMQConnection');\n\t\tconst connection =\n\t\t\tawait RabbitMQConnection.fromConnectionString(connectionString);\n\t\treturn new RabbitMQPublisher<TMessage>(connection);\n\t}\n\n\tasync publish(messages: TMessage[]): Promise<void> {\n\t\tif (!this.connection.isConnected()) {\n\t\t\tawait this.connection.connect();\n\t\t}\n\n\t\tconst channel = this.connection.amqpChannel;\n\t\tif (!channel) {\n\t\t\tthrow new Error('Channel not initialized');\n\t\t}\n\n\t\tconst exchange = this.connection.exchangeName;\n\n\t\tfor (const message of messages) {\n\t\t\tconst content = Buffer.from(JSON.stringify(message.payload));\n\n\t\t\t// Use message type as routing key for topic exchanges\n\t\t\tconst routingKey = message.type;\n\n\t\t\tconst published = channel.publish(exchange, routingKey, content, {\n\t\t\t\tcontentType: 'application/json',\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t\ttype: message.type,\n\t\t\t\tpersistent: true,\n\t\t\t\t...this.options.publishOptions,\n\t\t\t});\n\n\t\t\t// Handle backpressure\n\t\t\tif (!published) {\n\t\t\t\tawait new Promise((resolve) => channel.once('drain', resolve));\n\t\t\t}\n\t\t}\n\t}\n\n\tasync close(): Promise<void> {\n\t\t// Publisher doesn't own the connection\n\t\t// Connection should be closed by whoever created it\n\t}\n}\n","import type amqplib from 'amqplib';\nimport type { EventSubscriber, PublishableMessage } from '../types';\nimport type { RabbitMQConnection } from './RabbitMQConnection';\n\nexport interface RabbitMQSubscriberOptions {\n\tqueueName?: string; // If not provided, a unique queue will be generated\n\tqueueOptions?: amqplib.Options.AssertQueue;\n\tconsumeOptions?: amqplib.Options.Consume;\n\tprefetch?: number; // Number of messages to prefetch (default: 1)\n}\n\nexport class RabbitMQSubscriber<\n\tTMessage extends PublishableMessage<string, any>,\n> implements EventSubscriber<TMessage>\n{\n\tconstructor(\n\t\tprivate connection: RabbitMQConnection,\n\t\tprivate options: RabbitMQSubscriberOptions = {},\n\t) {}\n\n\t/**\n\t * Create a RabbitMQSubscriber from a connection string\n\t * Format: rabbitmq://user:pass@host:port/vhost?exchange=name&type=topic&queueName=myqueue&prefetch=10\n\t */\n\tstatic async fromConnectionString<\n\t\tTMessage extends PublishableMessage<string, any>,\n\t>(connectionString: string): Promise<RabbitMQSubscriber<TMessage>> {\n\t\tconst url = new URL(connectionString);\n\t\tconst params = url.searchParams;\n\n\t\tconst { RabbitMQConnection } = await import('./RabbitMQConnection');\n\t\tconst connection =\n\t\t\tawait RabbitMQConnection.fromConnectionString(connectionString);\n\n\t\tconst options: RabbitMQSubscriberOptions = {\n\t\t\tqueueName: params.get('queueName') || undefined,\n\t\t\tprefetch: params.get('prefetch')\n\t\t\t\t? Number.parseInt(params.get('prefetch')!, 10)\n\t\t\t\t: undefined,\n\t\t};\n\n\t\treturn new RabbitMQSubscriber<TMessage>(connection, options);\n\t}\n\n\tasync subscribe(\n\t\tmessages: TMessage['type'][],\n\t\tlistener: (payload: TMessage) => Promise<void>,\n\t): Promise<void> {\n\t\tif (!this.connection.isConnected()) {\n\t\t\tawait this.connection.connect();\n\t\t}\n\n\t\tconst channel = this.connection.amqpChannel;\n\t\tif (!channel) {\n\t\t\tthrow new Error('Channel not initialized');\n\t\t}\n\n\t\tconst exchange = this.connection.exchangeName;\n\n\t\t// Set prefetch if specified\n\t\tif (this.options.prefetch) {\n\t\t\tawait channel.prefetch(this.options.prefetch);\n\t\t}\n\n\t\t// Assert queue\n\t\tconst queueName = this.options.queueName || '';\n\t\tconst queueOptions: amqplib.Options.AssertQueue = {\n\t\t\tdurable: true,\n\t\t\t...this.options.queueOptions,\n\t\t};\n\n\t\tconst { queue } = await channel.assertQueue(queueName, queueOptions);\n\n\t\t// Bind queue to exchange for each message type\n\t\tfor (const messageType of messages) {\n\t\t\tawait channel.bindQueue(queue, exchange, messageType);\n\t\t}\n\n\t\t// Consume messages\n\t\tawait channel.consume(\n\t\t\tqueue,\n\t\t\tasync (msg) => {\n\t\t\t\tif (!msg) return;\n\n\t\t\t\ttry {\n\t\t\t\t\t// Parse message payload\n\t\t\t\t\tconst content = msg.content.toString();\n\t\t\t\t\tconst payload = JSON.parse(content);\n\n\t\t\t\t\t// Get message type from properties\n\t\t\t\t\tconst messageType = msg.properties.type;\n\n\t\t\t\t\t// Reconstruct full message\n\t\t\t\t\tconst fullMessage: TMessage = {\n\t\t\t\t\t\ttype: messageType,\n\t\t\t\t\t\tpayload,\n\t\t\t\t\t} as TMessage;\n\n\t\t\t\t\t// Call listener\n\t\t\t\t\tawait listener(fullMessage);\n\n\t\t\t\t\t// Ack message\n\t\t\t\t\tchannel.ack(msg);\n\t\t\t\t} catch (_error) {\n\t\t\t\t\tchannel.nack(msg, false, true);\n\t\t\t\t}\n\t\t\t},\n\t\t\tthis.options.consumeOptions,\n\t\t);\n\t}\n}\n"],"mappings":";;;;AAQA,IAAa,oBAAb,MAAa,kBAEb;CACC,YACSA,YACAC,UAAoC,CAAE,GAC7C;EAFO;EACA;CACL;;;;;CAMJ,aAAa,qBAEXC,kBAAgE;EACjE,MAAM,EAAE,0CAAoB,GAAG,2CAAM;EACrC,MAAM,aACL,MAAM,qBAAmB,qBAAqB,iBAAiB;AAChE,SAAO,IAAI,kBAA4B;CACvC;CAED,MAAM,QAAQC,UAAqC;AAClD,OAAK,KAAK,WAAW,aAAa,CACjC,OAAM,KAAK,WAAW,SAAS;EAGhC,MAAM,UAAU,KAAK,WAAW;AAChC,OAAK,QACJ,OAAM,IAAI,MAAM;EAGjB,MAAM,WAAW,KAAK,WAAW;AAEjC,OAAK,MAAM,WAAW,UAAU;GAC/B,MAAM,UAAU,OAAO,KAAK,KAAK,UAAU,QAAQ,QAAQ,CAAC;GAG5D,MAAM,aAAa,QAAQ;GAE3B,MAAM,YAAY,QAAQ,QAAQ,UAAU,YAAY,SAAS;IAChE,aAAa;IACb,WAAW,KAAK,KAAK;IACrB,MAAM,QAAQ;IACd,YAAY;IACZ,GAAG,KAAK,QAAQ;GAChB,EAAC;AAGF,QAAK,UACJ,OAAM,IAAI,QAAQ,CAAC,YAAY,QAAQ,KAAK,SAAS,QAAQ;EAE9D;CACD;CAED,MAAM,QAAuB,CAG5B;AACD;;;;ACvDD,IAAa,qBAAb,MAAa,mBAGb;CACC,YACSC,YACAC,UAAqC,CAAE,GAC9C;EAFO;EACA;CACL;;;;;CAMJ,aAAa,qBAEXC,kBAAiE;EAClE,MAAM,MAAM,IAAI,IAAI;EACpB,MAAM,SAAS,IAAI;EAEnB,MAAM,EAAE,0CAAoB,GAAG,2CAAM;EACrC,MAAM,aACL,MAAM,qBAAmB,qBAAqB,iBAAiB;EAEhE,MAAMD,UAAqC;GAC1C,WAAW,OAAO,IAAI,YAAY;GAClC,UAAU,OAAO,IAAI,WAAW,GAC7B,OAAO,SAAS,OAAO,IAAI,WAAW,EAAG,GAAG;EAE/C;AAED,SAAO,IAAI,mBAA6B,YAAY;CACpD;CAED,MAAM,UACLE,UACAC,UACgB;AAChB,OAAK,KAAK,WAAW,aAAa,CACjC,OAAM,KAAK,WAAW,SAAS;EAGhC,MAAM,UAAU,KAAK,WAAW;AAChC,OAAK,QACJ,OAAM,IAAI,MAAM;EAGjB,MAAM,WAAW,KAAK,WAAW;AAGjC,MAAI,KAAK,QAAQ,SAChB,OAAM,QAAQ,SAAS,KAAK,QAAQ,SAAS;EAI9C,MAAM,YAAY,KAAK,QAAQ,aAAa;EAC5C,MAAMC,eAA4C;GACjD,SAAS;GACT,GAAG,KAAK,QAAQ;EAChB;EAED,MAAM,EAAE,OAAO,GAAG,MAAM,QAAQ,YAAY,WAAW,aAAa;AAGpE,OAAK,MAAM,eAAe,SACzB,OAAM,QAAQ,UAAU,OAAO,UAAU,YAAY;AAItD,QAAM,QAAQ,QACb,OACA,OAAO,QAAQ;AACd,QAAK,IAAK;AAEV,OAAI;IAEH,MAAM,UAAU,IAAI,QAAQ,UAAU;IACtC,MAAM,UAAU,KAAK,MAAM,QAAQ;IAGnC,MAAM,cAAc,IAAI,WAAW;IAGnC,MAAMC,cAAwB;KAC7B,MAAM;KACN;IACA;AAGD,UAAM,SAAS,YAAY;AAG3B,YAAQ,IAAI,IAAI;GAChB,SAAQ,QAAQ;AAChB,YAAQ,KAAK,KAAK,OAAO,KAAK;GAC9B;EACD,GACD,KAAK,QAAQ,eACb;CACD;AACD"}
@@ -1,5 +1,83 @@
1
- import "../types-Dj23od3e.cjs";
2
- import { RabbitMQConnection, RabbitMQConnectionConfig } from "../RabbitMQConnection-jNME_eR7.cjs";
3
- import { RabbitMQPublisher, RabbitMQPublisherOptions } from "../RabbitMQPublisher-d257OHLa.cjs";
4
- import { RabbitMQSubscriber, RabbitMQSubscriberOptions } from "../RabbitMQSubscriber-BF7JGfYm.cjs";
5
- export { RabbitMQConnection, RabbitMQConnectionConfig, RabbitMQPublisher, RabbitMQPublisherOptions, RabbitMQSubscriber, RabbitMQSubscriberOptions };
1
+ import { EventConnection, EventPublisher, EventPublisherType, EventSubscriber, PublishableMessage } from "../types-BmixGrOD.cjs";
2
+ import amqplib from "amqplib";
3
+
4
+ //#region src/rabbitmq/RabbitMQConnection.d.ts
5
+ interface RabbitMQConnectionConfig {
6
+ url: string;
7
+ exchange?: string;
8
+ exchangeType?: 'topic' | 'direct' | 'fanout' | 'headers';
9
+ exchangeOptions?: amqplib.Options.AssertExchange;
10
+ timeout?: number;
11
+ }
12
+ declare class RabbitMQConnection implements EventConnection {
13
+ readonly type = EventPublisherType.RabbitMQ;
14
+ private connection?;
15
+ private channel?;
16
+ private connecting?;
17
+ private config;
18
+ constructor(config: RabbitMQConnectionConfig);
19
+ /**
20
+ * Create a RabbitMQConnection from a connection string
21
+ * Format: rabbitmq://user:pass@host:port/vhost?exchange=name&type=topic&timeout=5000
22
+ */
23
+ static fromConnectionString(connectionString: string): Promise<RabbitMQConnection>;
24
+ connect(): Promise<void>;
25
+ close(): Promise<void>;
26
+ isConnected(): boolean;
27
+ private cleanup;
28
+ /**
29
+ * Get the underlying channel for publishing/subscribing
30
+ */
31
+ get amqpChannel(): amqplib.Channel | undefined;
32
+ /**
33
+ * Get the exchange name for this connection
34
+ */
35
+ get exchangeName(): string;
36
+ /**
37
+ * Get the exchange type for this connection
38
+ */
39
+ get exchangeType(): string;
40
+ }
41
+ //# sourceMappingURL=RabbitMQConnection.d.ts.map
42
+ //#endregion
43
+ //#region src/rabbitmq/RabbitMQPublisher.d.ts
44
+ interface RabbitMQPublisherOptions {
45
+ publishOptions?: amqplib.Options.Publish;
46
+ }
47
+ declare class RabbitMQPublisher<TMessage extends PublishableMessage<string, any>> implements EventPublisher<TMessage> {
48
+ private connection;
49
+ private options;
50
+ constructor(connection: RabbitMQConnection, options?: RabbitMQPublisherOptions);
51
+ /**
52
+ * Create a RabbitMQPublisher from a connection string
53
+ * Format: rabbitmq://user:pass@host:port/vhost?exchange=name&type=topic&timeout=5000
54
+ */
55
+ static fromConnectionString<TMessage extends PublishableMessage<string, any>>(connectionString: string): Promise<RabbitMQPublisher<TMessage>>;
56
+ publish(messages: TMessage[]): Promise<void>;
57
+ close(): Promise<void>;
58
+ }
59
+ //# sourceMappingURL=RabbitMQPublisher.d.ts.map
60
+ //#endregion
61
+ //#region src/rabbitmq/RabbitMQSubscriber.d.ts
62
+ interface RabbitMQSubscriberOptions {
63
+ queueName?: string;
64
+ queueOptions?: amqplib.Options.AssertQueue;
65
+ consumeOptions?: amqplib.Options.Consume;
66
+ prefetch?: number;
67
+ }
68
+ declare class RabbitMQSubscriber<TMessage extends PublishableMessage<string, any>> implements EventSubscriber<TMessage> {
69
+ private connection;
70
+ private options;
71
+ constructor(connection: RabbitMQConnection, options?: RabbitMQSubscriberOptions);
72
+ /**
73
+ * Create a RabbitMQSubscriber from a connection string
74
+ * Format: rabbitmq://user:pass@host:port/vhost?exchange=name&type=topic&queueName=myqueue&prefetch=10
75
+ */
76
+ static fromConnectionString<TMessage extends PublishableMessage<string, any>>(connectionString: string): Promise<RabbitMQSubscriber<TMessage>>;
77
+ subscribe(messages: TMessage['type'][], listener: (payload: TMessage) => Promise<void>): Promise<void>;
78
+ }
79
+ //# sourceMappingURL=RabbitMQSubscriber.d.ts.map
80
+
81
+ //#endregion
82
+ export { RabbitMQConnection, RabbitMQConnectionConfig, RabbitMQPublisher, RabbitMQPublisherOptions, RabbitMQSubscriber, RabbitMQSubscriberOptions };
83
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/rabbitmq/RabbitMQConnection.ts","../../src/rabbitmq/RabbitMQPublisher.ts","../../src/rabbitmq/RabbitMQSubscriber.ts"],"sourcesContent":[],"mappings":";;;;UAIiB,wBAAA;EAAA,GAAA,EAAA,MAAA;EAQJ,QAAA,CAAA,EAAA,MAAA;EAAmB,YAAA,CAAA,EAAA,OAAA,GAAA,QAAA,GAAA,QAAA,GAAA,SAAA;EAAA,eAClB,CAAA,EALK,OAAA,CAAQ,OAAA,CAAQ,cAKrB;EAAA,OASO,CAAA,EAAA,MAAA;;AAmBjB,cA7BS,kBAAA,YAA8B,eA6BvC,CAAA;EAAO,SAoBO,IAAA,GAhDJ,kBAAA,CAAA,QAAA;EAgDW,QA6CT,UAAA;EAAO,QAwBH,OAAQ;EAAO,QAtHQ,UAAA;EAAe,QAAA,MAAA;sBAUrC;;;AClBrB;AAIA;EAA8B,OAAA,oBAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,EDiC1B,OCjC0B,CDiClB,kBCjCkB,CAAA;EAAA,OAAkB,CAAA,CAAA,EDqD9B,OCrD8B,CAAA,IAAA,CAAA;EAAkB,KACvC,CAAA,CAAA,EDiGX,OCjGW,CAAA,IAAA,CAAA;EAAQ,WAGb,CAAA,CAAA,EAAA,OAAA;EAAkB,QACrB,OAAA;EAA6B;;;EASO,IAAzB,WAAA,CAAA,CAAA,ED4GV,OAAA,CAAQ,OC5GE,GAAA,SAAA;EAAO;;;EAwCd,IArDX,YAAA,CAAA,CAAA,EAAA,MAAA;EAAc;;;;ACL1B;;;;UDAiB,wBAAA;EDAA,cAAA,CAAA,ECCC,OAAA,CAAQ,OAAA,CAAQ,ODGf;AAInB;AAAgC,cCJnB,iBDImB,CAAA,iBCJgB,kBDIhB,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,YCHpB,cDGoB,CCHL,QDGK,CAAA,CAAA;EAAA,QAClB,UAAA;EAAA,QASO,OAAA;EAAwB,WAmBjC,CAAA,UAAA,EC7BU,kBD6BV,EAAA,OAAA,CAAA,EC5BO,wBD4BP;EAAkB;;;;EAyFK,OAtHQ,oBAAA,CAAA,iBCSxB,kBDTwB,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,ECUb,ODVa,CCUL,iBDVK,CCUa,QDVb,CAAA,CAAA;EAAe,OAAA,CAAA,QAAA,ECiBjC,QDjBiC,EAAA,CAAA,ECiBpB,ODjBoB,CAAA,IAAA,CAAA;WCkD1C;;;;;UC1DC,yBAAA;EFAA,SAAA,CAAA,EAAA,MAAA;EAQJ,YAAA,CAAA,EENG,OAAA,CAAQ,OAAA,CAAQ,WFMA;EAAA,cAAA,CAAA,EELd,OAAA,CAAQ,OAAA,CAAQ,OFKF;EAAA,QAClB,CAAA,EAAA,MAAA;;AA4BF,cE9BC,kBF8BD,CAAA,iBE7BM,kBF6BN,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,YE5BC,eF4BD,CE5BiB,QF4BjB,CAAA,CAAA;EAAkB,QAA1B,UAAA;EAAO,QAoBO,OAAA;EAAO,WA6CT,CAAA,UAAA,EE1FM,kBF0FN,EAAA,OAAA,CAAA,EEzFG,yBFyFH;EAAO;;AA9FmC;;+CEavC,4DACW,QAAQ,mBAAmB;sBAmB7C,wCACU,aAAa,gBAC/B;AD3CJ;AAIA"}
@@ -1,5 +1,83 @@
1
- import "../types-Dh9Jyinx.mjs";
2
- import { RabbitMQConnection, RabbitMQConnectionConfig } from "../RabbitMQConnection-DV9t3VYp.mjs";
3
- import { RabbitMQPublisher, RabbitMQPublisherOptions } from "../RabbitMQPublisher-DKmgwqVj.mjs";
4
- import { RabbitMQSubscriber, RabbitMQSubscriberOptions } from "../RabbitMQSubscriber-CdbUy5mB.mjs";
5
- export { RabbitMQConnection, RabbitMQConnectionConfig, RabbitMQPublisher, RabbitMQPublisherOptions, RabbitMQSubscriber, RabbitMQSubscriberOptions };
1
+ import { EventConnection, EventPublisher, EventPublisherType, EventSubscriber, PublishableMessage } from "../types-DycjsYms.mjs";
2
+ import amqplib from "amqplib";
3
+
4
+ //#region src/rabbitmq/RabbitMQConnection.d.ts
5
+ interface RabbitMQConnectionConfig {
6
+ url: string;
7
+ exchange?: string;
8
+ exchangeType?: 'topic' | 'direct' | 'fanout' | 'headers';
9
+ exchangeOptions?: amqplib.Options.AssertExchange;
10
+ timeout?: number;
11
+ }
12
+ declare class RabbitMQConnection implements EventConnection {
13
+ readonly type = EventPublisherType.RabbitMQ;
14
+ private connection?;
15
+ private channel?;
16
+ private connecting?;
17
+ private config;
18
+ constructor(config: RabbitMQConnectionConfig);
19
+ /**
20
+ * Create a RabbitMQConnection from a connection string
21
+ * Format: rabbitmq://user:pass@host:port/vhost?exchange=name&type=topic&timeout=5000
22
+ */
23
+ static fromConnectionString(connectionString: string): Promise<RabbitMQConnection>;
24
+ connect(): Promise<void>;
25
+ close(): Promise<void>;
26
+ isConnected(): boolean;
27
+ private cleanup;
28
+ /**
29
+ * Get the underlying channel for publishing/subscribing
30
+ */
31
+ get amqpChannel(): amqplib.Channel | undefined;
32
+ /**
33
+ * Get the exchange name for this connection
34
+ */
35
+ get exchangeName(): string;
36
+ /**
37
+ * Get the exchange type for this connection
38
+ */
39
+ get exchangeType(): string;
40
+ }
41
+ //# sourceMappingURL=RabbitMQConnection.d.ts.map
42
+ //#endregion
43
+ //#region src/rabbitmq/RabbitMQPublisher.d.ts
44
+ interface RabbitMQPublisherOptions {
45
+ publishOptions?: amqplib.Options.Publish;
46
+ }
47
+ declare class RabbitMQPublisher<TMessage extends PublishableMessage<string, any>> implements EventPublisher<TMessage> {
48
+ private connection;
49
+ private options;
50
+ constructor(connection: RabbitMQConnection, options?: RabbitMQPublisherOptions);
51
+ /**
52
+ * Create a RabbitMQPublisher from a connection string
53
+ * Format: rabbitmq://user:pass@host:port/vhost?exchange=name&type=topic&timeout=5000
54
+ */
55
+ static fromConnectionString<TMessage extends PublishableMessage<string, any>>(connectionString: string): Promise<RabbitMQPublisher<TMessage>>;
56
+ publish(messages: TMessage[]): Promise<void>;
57
+ close(): Promise<void>;
58
+ }
59
+ //# sourceMappingURL=RabbitMQPublisher.d.ts.map
60
+ //#endregion
61
+ //#region src/rabbitmq/RabbitMQSubscriber.d.ts
62
+ interface RabbitMQSubscriberOptions {
63
+ queueName?: string;
64
+ queueOptions?: amqplib.Options.AssertQueue;
65
+ consumeOptions?: amqplib.Options.Consume;
66
+ prefetch?: number;
67
+ }
68
+ declare class RabbitMQSubscriber<TMessage extends PublishableMessage<string, any>> implements EventSubscriber<TMessage> {
69
+ private connection;
70
+ private options;
71
+ constructor(connection: RabbitMQConnection, options?: RabbitMQSubscriberOptions);
72
+ /**
73
+ * Create a RabbitMQSubscriber from a connection string
74
+ * Format: rabbitmq://user:pass@host:port/vhost?exchange=name&type=topic&queueName=myqueue&prefetch=10
75
+ */
76
+ static fromConnectionString<TMessage extends PublishableMessage<string, any>>(connectionString: string): Promise<RabbitMQSubscriber<TMessage>>;
77
+ subscribe(messages: TMessage['type'][], listener: (payload: TMessage) => Promise<void>): Promise<void>;
78
+ }
79
+ //# sourceMappingURL=RabbitMQSubscriber.d.ts.map
80
+
81
+ //#endregion
82
+ export { RabbitMQConnection, RabbitMQConnectionConfig, RabbitMQPublisher, RabbitMQPublisherOptions, RabbitMQSubscriber, RabbitMQSubscriberOptions };
83
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/rabbitmq/RabbitMQConnection.ts","../../src/rabbitmq/RabbitMQPublisher.ts","../../src/rabbitmq/RabbitMQSubscriber.ts"],"sourcesContent":[],"mappings":";;;;UAIiB,wBAAA;EAAA,GAAA,EAAA,MAAA;EAQJ,QAAA,CAAA,EAAA,MAAA;EAAmB,YAAA,CAAA,EAAA,OAAA,GAAA,QAAA,GAAA,QAAA,GAAA,SAAA;EAAA,eAClB,CAAA,EALK,OAAA,CAAQ,OAAA,CAAQ,cAKrB;EAAA,OASO,CAAA,EAAA,MAAA;;AAmBjB,cA7BS,kBAAA,YAA8B,eA6BvC,CAAA;EAAO,SAoBO,IAAA,GAhDJ,kBAAA,CAAA,QAAA;EAgDW,QA6CT,UAAA;EAAO,QAwBH,OAAQ;EAAO,QAtHQ,UAAA;EAAe,QAAA,MAAA;sBAUrC;;;AClBrB;AAIA;EAA8B,OAAA,oBAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,EDiC1B,OCjC0B,CDiClB,kBCjCkB,CAAA;EAAA,OAAkB,CAAA,CAAA,EDqD9B,OCrD8B,CAAA,IAAA,CAAA;EAAkB,KACvC,CAAA,CAAA,EDiGX,OCjGW,CAAA,IAAA,CAAA;EAAQ,WAGb,CAAA,CAAA,EAAA,OAAA;EAAkB,QACrB,OAAA;EAA6B;;;EASO,IAAzB,WAAA,CAAA,CAAA,ED4GV,OAAA,CAAQ,OC5GE,GAAA,SAAA;EAAO;;;EAwCd,IArDX,YAAA,CAAA,CAAA,EAAA,MAAA;EAAc;;;;ACL1B;;;;UDAiB,wBAAA;EDAA,cAAA,CAAA,ECCC,OAAA,CAAQ,OAAA,CAAQ,ODGf;AAInB;AAAgC,cCJnB,iBDImB,CAAA,iBCJgB,kBDIhB,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,YCHpB,cDGoB,CCHL,QDGK,CAAA,CAAA;EAAA,QAClB,UAAA;EAAA,QASO,OAAA;EAAwB,WAmBjC,CAAA,UAAA,EC7BU,kBD6BV,EAAA,OAAA,CAAA,EC5BO,wBD4BP;EAAkB;;;;EAyFK,OAtHQ,oBAAA,CAAA,iBCSxB,kBDTwB,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,ECUb,ODVa,CCUL,iBDVK,CCUa,QDVb,CAAA,CAAA;EAAe,OAAA,CAAA,QAAA,ECiBjC,QDjBiC,EAAA,CAAA,ECiBpB,ODjBoB,CAAA,IAAA,CAAA;WCkD1C;;;;;UC1DC,yBAAA;EFAA,SAAA,CAAA,EAAA,MAAA;EAQJ,YAAA,CAAA,EENG,OAAA,CAAQ,OAAA,CAAQ,WFMA;EAAA,cAAA,CAAA,EELd,OAAA,CAAQ,OAAA,CAAQ,OFKF;EAAA,QAClB,CAAA,EAAA,MAAA;;AA4BF,cE9BC,kBF8BD,CAAA,iBE7BM,kBF6BN,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,YE5BC,eF4BD,CE5BiB,QF4BjB,CAAA,CAAA;EAAkB,QAA1B,UAAA;EAAO,QAoBO,OAAA;EAAO,WA6CT,CAAA,UAAA,EE1FM,kBF0FN,EAAA,OAAA,CAAA,EEzFG,yBFyFH;EAAO;;AA9FmC;;+CEavC,4DACW,QAAQ,mBAAmB;sBAmB7C,wCACU,aAAa,gBAC/B;AD3CJ;AAIA"}
@@ -1,6 +1,96 @@
1
- import "../types-BrdcSEnd.mjs";
2
- import { RabbitMQConnection } from "../RabbitMQConnection-Cg7mp8u-.mjs";
3
- import { RabbitMQPublisher } from "../RabbitMQPublisher-Cxm1zSkD.mjs";
4
- import { RabbitMQSubscriber } from "../RabbitMQSubscriber-fP8G9OlK.mjs";
1
+ import "../types-CYDt-2RQ.mjs";
2
+ import { RabbitMQConnection } from "../RabbitMQConnection-DJgUPc19.mjs";
5
3
 
6
- export { RabbitMQConnection, RabbitMQPublisher, RabbitMQSubscriber };
4
+ //#region src/rabbitmq/RabbitMQPublisher.ts
5
+ var RabbitMQPublisher = class RabbitMQPublisher {
6
+ constructor(connection, options = {}) {
7
+ this.connection = connection;
8
+ this.options = options;
9
+ }
10
+ /**
11
+ * Create a RabbitMQPublisher from a connection string
12
+ * Format: rabbitmq://user:pass@host:port/vhost?exchange=name&type=topic&timeout=5000
13
+ */
14
+ static async fromConnectionString(connectionString) {
15
+ const { RabbitMQConnection: RabbitMQConnection$1 } = await import("../RabbitMQConnection-DJEyM-Bu.mjs");
16
+ const connection = await RabbitMQConnection$1.fromConnectionString(connectionString);
17
+ return new RabbitMQPublisher(connection);
18
+ }
19
+ async publish(messages) {
20
+ if (!this.connection.isConnected()) await this.connection.connect();
21
+ const channel = this.connection.amqpChannel;
22
+ if (!channel) throw new Error("Channel not initialized");
23
+ const exchange = this.connection.exchangeName;
24
+ for (const message of messages) {
25
+ const content = Buffer.from(JSON.stringify(message.payload));
26
+ const routingKey = message.type;
27
+ const published = channel.publish(exchange, routingKey, content, {
28
+ contentType: "application/json",
29
+ timestamp: Date.now(),
30
+ type: message.type,
31
+ persistent: true,
32
+ ...this.options.publishOptions
33
+ });
34
+ if (!published) await new Promise((resolve) => channel.once("drain", resolve));
35
+ }
36
+ }
37
+ async close() {}
38
+ };
39
+
40
+ //#endregion
41
+ //#region src/rabbitmq/RabbitMQSubscriber.ts
42
+ var RabbitMQSubscriber = class RabbitMQSubscriber {
43
+ constructor(connection, options = {}) {
44
+ this.connection = connection;
45
+ this.options = options;
46
+ }
47
+ /**
48
+ * Create a RabbitMQSubscriber from a connection string
49
+ * Format: rabbitmq://user:pass@host:port/vhost?exchange=name&type=topic&queueName=myqueue&prefetch=10
50
+ */
51
+ static async fromConnectionString(connectionString) {
52
+ const url = new URL(connectionString);
53
+ const params = url.searchParams;
54
+ const { RabbitMQConnection: RabbitMQConnection$1 } = await import("../RabbitMQConnection-DJEyM-Bu.mjs");
55
+ const connection = await RabbitMQConnection$1.fromConnectionString(connectionString);
56
+ const options = {
57
+ queueName: params.get("queueName") || void 0,
58
+ prefetch: params.get("prefetch") ? Number.parseInt(params.get("prefetch"), 10) : void 0
59
+ };
60
+ return new RabbitMQSubscriber(connection, options);
61
+ }
62
+ async subscribe(messages, listener) {
63
+ if (!this.connection.isConnected()) await this.connection.connect();
64
+ const channel = this.connection.amqpChannel;
65
+ if (!channel) throw new Error("Channel not initialized");
66
+ const exchange = this.connection.exchangeName;
67
+ if (this.options.prefetch) await channel.prefetch(this.options.prefetch);
68
+ const queueName = this.options.queueName || "";
69
+ const queueOptions = {
70
+ durable: true,
71
+ ...this.options.queueOptions
72
+ };
73
+ const { queue } = await channel.assertQueue(queueName, queueOptions);
74
+ for (const messageType of messages) await channel.bindQueue(queue, exchange, messageType);
75
+ await channel.consume(queue, async (msg) => {
76
+ if (!msg) return;
77
+ try {
78
+ const content = msg.content.toString();
79
+ const payload = JSON.parse(content);
80
+ const messageType = msg.properties.type;
81
+ const fullMessage = {
82
+ type: messageType,
83
+ payload
84
+ };
85
+ await listener(fullMessage);
86
+ channel.ack(msg);
87
+ } catch (_error) {
88
+ channel.nack(msg, false, true);
89
+ }
90
+ }, this.options.consumeOptions);
91
+ }
92
+ };
93
+
94
+ //#endregion
95
+ export { RabbitMQConnection, RabbitMQPublisher, RabbitMQSubscriber };
96
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["connection: RabbitMQConnection","options: RabbitMQPublisherOptions","connectionString: string","messages: TMessage[]","connection: RabbitMQConnection","options: RabbitMQSubscriberOptions","connectionString: string","messages: TMessage['type'][]","listener: (payload: TMessage) => Promise<void>","queueOptions: amqplib.Options.AssertQueue","fullMessage: TMessage"],"sources":["../../src/rabbitmq/RabbitMQPublisher.ts","../../src/rabbitmq/RabbitMQSubscriber.ts"],"sourcesContent":["import type amqplib from 'amqplib';\nimport type { EventPublisher, PublishableMessage } from '../types';\nimport type { RabbitMQConnection } from './RabbitMQConnection';\n\nexport interface RabbitMQPublisherOptions {\n\tpublishOptions?: amqplib.Options.Publish;\n}\n\nexport class RabbitMQPublisher<TMessage extends PublishableMessage<string, any>>\n\timplements EventPublisher<TMessage>\n{\n\tconstructor(\n\t\tprivate connection: RabbitMQConnection,\n\t\tprivate options: RabbitMQPublisherOptions = {},\n\t) {}\n\n\t/**\n\t * Create a RabbitMQPublisher from a connection string\n\t * Format: rabbitmq://user:pass@host:port/vhost?exchange=name&type=topic&timeout=5000\n\t */\n\tstatic async fromConnectionString<\n\t\tTMessage extends PublishableMessage<string, any>,\n\t>(connectionString: string): Promise<RabbitMQPublisher<TMessage>> {\n\t\tconst { RabbitMQConnection } = await import('./RabbitMQConnection');\n\t\tconst connection =\n\t\t\tawait RabbitMQConnection.fromConnectionString(connectionString);\n\t\treturn new RabbitMQPublisher<TMessage>(connection);\n\t}\n\n\tasync publish(messages: TMessage[]): Promise<void> {\n\t\tif (!this.connection.isConnected()) {\n\t\t\tawait this.connection.connect();\n\t\t}\n\n\t\tconst channel = this.connection.amqpChannel;\n\t\tif (!channel) {\n\t\t\tthrow new Error('Channel not initialized');\n\t\t}\n\n\t\tconst exchange = this.connection.exchangeName;\n\n\t\tfor (const message of messages) {\n\t\t\tconst content = Buffer.from(JSON.stringify(message.payload));\n\n\t\t\t// Use message type as routing key for topic exchanges\n\t\t\tconst routingKey = message.type;\n\n\t\t\tconst published = channel.publish(exchange, routingKey, content, {\n\t\t\t\tcontentType: 'application/json',\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t\ttype: message.type,\n\t\t\t\tpersistent: true,\n\t\t\t\t...this.options.publishOptions,\n\t\t\t});\n\n\t\t\t// Handle backpressure\n\t\t\tif (!published) {\n\t\t\t\tawait new Promise((resolve) => channel.once('drain', resolve));\n\t\t\t}\n\t\t}\n\t}\n\n\tasync close(): Promise<void> {\n\t\t// Publisher doesn't own the connection\n\t\t// Connection should be closed by whoever created it\n\t}\n}\n","import type amqplib from 'amqplib';\nimport type { EventSubscriber, PublishableMessage } from '../types';\nimport type { RabbitMQConnection } from './RabbitMQConnection';\n\nexport interface RabbitMQSubscriberOptions {\n\tqueueName?: string; // If not provided, a unique queue will be generated\n\tqueueOptions?: amqplib.Options.AssertQueue;\n\tconsumeOptions?: amqplib.Options.Consume;\n\tprefetch?: number; // Number of messages to prefetch (default: 1)\n}\n\nexport class RabbitMQSubscriber<\n\tTMessage extends PublishableMessage<string, any>,\n> implements EventSubscriber<TMessage>\n{\n\tconstructor(\n\t\tprivate connection: RabbitMQConnection,\n\t\tprivate options: RabbitMQSubscriberOptions = {},\n\t) {}\n\n\t/**\n\t * Create a RabbitMQSubscriber from a connection string\n\t * Format: rabbitmq://user:pass@host:port/vhost?exchange=name&type=topic&queueName=myqueue&prefetch=10\n\t */\n\tstatic async fromConnectionString<\n\t\tTMessage extends PublishableMessage<string, any>,\n\t>(connectionString: string): Promise<RabbitMQSubscriber<TMessage>> {\n\t\tconst url = new URL(connectionString);\n\t\tconst params = url.searchParams;\n\n\t\tconst { RabbitMQConnection } = await import('./RabbitMQConnection');\n\t\tconst connection =\n\t\t\tawait RabbitMQConnection.fromConnectionString(connectionString);\n\n\t\tconst options: RabbitMQSubscriberOptions = {\n\t\t\tqueueName: params.get('queueName') || undefined,\n\t\t\tprefetch: params.get('prefetch')\n\t\t\t\t? Number.parseInt(params.get('prefetch')!, 10)\n\t\t\t\t: undefined,\n\t\t};\n\n\t\treturn new RabbitMQSubscriber<TMessage>(connection, options);\n\t}\n\n\tasync subscribe(\n\t\tmessages: TMessage['type'][],\n\t\tlistener: (payload: TMessage) => Promise<void>,\n\t): Promise<void> {\n\t\tif (!this.connection.isConnected()) {\n\t\t\tawait this.connection.connect();\n\t\t}\n\n\t\tconst channel = this.connection.amqpChannel;\n\t\tif (!channel) {\n\t\t\tthrow new Error('Channel not initialized');\n\t\t}\n\n\t\tconst exchange = this.connection.exchangeName;\n\n\t\t// Set prefetch if specified\n\t\tif (this.options.prefetch) {\n\t\t\tawait channel.prefetch(this.options.prefetch);\n\t\t}\n\n\t\t// Assert queue\n\t\tconst queueName = this.options.queueName || '';\n\t\tconst queueOptions: amqplib.Options.AssertQueue = {\n\t\t\tdurable: true,\n\t\t\t...this.options.queueOptions,\n\t\t};\n\n\t\tconst { queue } = await channel.assertQueue(queueName, queueOptions);\n\n\t\t// Bind queue to exchange for each message type\n\t\tfor (const messageType of messages) {\n\t\t\tawait channel.bindQueue(queue, exchange, messageType);\n\t\t}\n\n\t\t// Consume messages\n\t\tawait channel.consume(\n\t\t\tqueue,\n\t\t\tasync (msg) => {\n\t\t\t\tif (!msg) return;\n\n\t\t\t\ttry {\n\t\t\t\t\t// Parse message payload\n\t\t\t\t\tconst content = msg.content.toString();\n\t\t\t\t\tconst payload = JSON.parse(content);\n\n\t\t\t\t\t// Get message type from properties\n\t\t\t\t\tconst messageType = msg.properties.type;\n\n\t\t\t\t\t// Reconstruct full message\n\t\t\t\t\tconst fullMessage: TMessage = {\n\t\t\t\t\t\ttype: messageType,\n\t\t\t\t\t\tpayload,\n\t\t\t\t\t} as TMessage;\n\n\t\t\t\t\t// Call listener\n\t\t\t\t\tawait listener(fullMessage);\n\n\t\t\t\t\t// Ack message\n\t\t\t\t\tchannel.ack(msg);\n\t\t\t\t} catch (_error) {\n\t\t\t\t\tchannel.nack(msg, false, true);\n\t\t\t\t}\n\t\t\t},\n\t\t\tthis.options.consumeOptions,\n\t\t);\n\t}\n}\n"],"mappings":";;;;AAQA,IAAa,oBAAb,MAAa,kBAEb;CACC,YACSA,YACAC,UAAoC,CAAE,GAC7C;EAFO;EACA;CACL;;;;;CAMJ,aAAa,qBAEXC,kBAAgE;EACjE,MAAM,EAAE,0CAAoB,GAAG,MAAM,OAAO;EAC5C,MAAM,aACL,MAAM,qBAAmB,qBAAqB,iBAAiB;AAChE,SAAO,IAAI,kBAA4B;CACvC;CAED,MAAM,QAAQC,UAAqC;AAClD,OAAK,KAAK,WAAW,aAAa,CACjC,OAAM,KAAK,WAAW,SAAS;EAGhC,MAAM,UAAU,KAAK,WAAW;AAChC,OAAK,QACJ,OAAM,IAAI,MAAM;EAGjB,MAAM,WAAW,KAAK,WAAW;AAEjC,OAAK,MAAM,WAAW,UAAU;GAC/B,MAAM,UAAU,OAAO,KAAK,KAAK,UAAU,QAAQ,QAAQ,CAAC;GAG5D,MAAM,aAAa,QAAQ;GAE3B,MAAM,YAAY,QAAQ,QAAQ,UAAU,YAAY,SAAS;IAChE,aAAa;IACb,WAAW,KAAK,KAAK;IACrB,MAAM,QAAQ;IACd,YAAY;IACZ,GAAG,KAAK,QAAQ;GAChB,EAAC;AAGF,QAAK,UACJ,OAAM,IAAI,QAAQ,CAAC,YAAY,QAAQ,KAAK,SAAS,QAAQ;EAE9D;CACD;CAED,MAAM,QAAuB,CAG5B;AACD;;;;ACvDD,IAAa,qBAAb,MAAa,mBAGb;CACC,YACSC,YACAC,UAAqC,CAAE,GAC9C;EAFO;EACA;CACL;;;;;CAMJ,aAAa,qBAEXC,kBAAiE;EAClE,MAAM,MAAM,IAAI,IAAI;EACpB,MAAM,SAAS,IAAI;EAEnB,MAAM,EAAE,0CAAoB,GAAG,MAAM,OAAO;EAC5C,MAAM,aACL,MAAM,qBAAmB,qBAAqB,iBAAiB;EAEhE,MAAMD,UAAqC;GAC1C,WAAW,OAAO,IAAI,YAAY;GAClC,UAAU,OAAO,IAAI,WAAW,GAC7B,OAAO,SAAS,OAAO,IAAI,WAAW,EAAG,GAAG;EAE/C;AAED,SAAO,IAAI,mBAA6B,YAAY;CACpD;CAED,MAAM,UACLE,UACAC,UACgB;AAChB,OAAK,KAAK,WAAW,aAAa,CACjC,OAAM,KAAK,WAAW,SAAS;EAGhC,MAAM,UAAU,KAAK,WAAW;AAChC,OAAK,QACJ,OAAM,IAAI,MAAM;EAGjB,MAAM,WAAW,KAAK,WAAW;AAGjC,MAAI,KAAK,QAAQ,SAChB,OAAM,QAAQ,SAAS,KAAK,QAAQ,SAAS;EAI9C,MAAM,YAAY,KAAK,QAAQ,aAAa;EAC5C,MAAMC,eAA4C;GACjD,SAAS;GACT,GAAG,KAAK,QAAQ;EAChB;EAED,MAAM,EAAE,OAAO,GAAG,MAAM,QAAQ,YAAY,WAAW,aAAa;AAGpE,OAAK,MAAM,eAAe,SACzB,OAAM,QAAQ,UAAU,OAAO,UAAU,YAAY;AAItD,QAAM,QAAQ,QACb,OACA,OAAO,QAAQ;AACd,QAAK,IAAK;AAEV,OAAI;IAEH,MAAM,UAAU,IAAI,QAAQ,UAAU;IACtC,MAAM,UAAU,KAAK,MAAM,QAAQ;IAGnC,MAAM,cAAc,IAAI,WAAW;IAGnC,MAAMC,cAAwB;KAC7B,MAAM;KACN;IACA;AAGD,UAAM,SAAS,YAAY;AAG3B,YAAQ,IAAI,IAAI;GAChB,SAAQ,QAAQ;AAChB,YAAQ,KAAK,KAAK,OAAO,KAAK;GAC9B;EACD,GACD,KAAK,QAAQ,eACb;CACD;AACD"}
@@ -1,10 +1,189 @@
1
+ const require_chunk = require('../chunk-CsX-DzYB.cjs');
1
2
  require('../types-Byv8N9ma.cjs');
2
- const require_SNSConnection = require('../SNSConnection-DFehUWG1.cjs');
3
- const require_SNSPublisher = require('../SNSPublisher-BoA8uLnw.cjs');
4
- require('../SQSConnection-yge9cB_f.cjs');
5
- require('../SQSSubscriber-B4sRXVl6.cjs');
6
- const require_SNSSubscriber = require('../SNSSubscriber-ZIdCi6nQ.cjs');
3
+ const require_snsUrl = require('../snsUrl-f2gU3CzK.cjs');
4
+ const require_SNSConnection = require('../SNSConnection-B2K86hpz.cjs');
5
+ require('../sqsUrl-CdisN3GU.cjs');
6
+ const require_SQSConnection = require('../SQSConnection-BaC7rGhI.cjs');
7
+ const require_SQSSubscriber = require('../SQSSubscriber-YXPlg2rm.cjs');
8
+ const __aws_sdk_client_sns = require_chunk.__toESM(require("@aws-sdk/client-sns"));
9
+ const __aws_sdk_client_sqs = require_chunk.__toESM(require("@aws-sdk/client-sqs"));
7
10
 
11
+ //#region src/sns/SNSPublisher.ts
12
+ var SNSPublisher = class SNSPublisher {
13
+ constructor(connection, _options = {}) {
14
+ this.connection = connection;
15
+ }
16
+ /**
17
+ * Create an SNSPublisher from a connection string
18
+ * Format: sns://?topicArn=arn:aws:sns:region:account:topic&region=us-east-1&endpoint=http://localhost:4566
19
+ */
20
+ static async fromConnectionString(connectionString) {
21
+ const { SNSConnection: SNSConnection$1 } = await Promise.resolve().then(() => require("../SNSConnection-DIHRjrQF.cjs"));
22
+ const connection = await SNSConnection$1.fromConnectionString(connectionString);
23
+ return new SNSPublisher(connection);
24
+ }
25
+ async publish(messages) {
26
+ if (messages.length === 0) return;
27
+ if (!this.connection.isConnected()) await this.connection.connect();
28
+ await Promise.all(messages.map((message) => this.publishMessage(message)));
29
+ }
30
+ async publishMessage(message) {
31
+ const command = new __aws_sdk_client_sns.PublishCommand({
32
+ TopicArn: this.connection.topicArn,
33
+ Message: JSON.stringify({
34
+ type: message.type,
35
+ payload: message.payload
36
+ }),
37
+ MessageAttributes: { type: {
38
+ DataType: "String",
39
+ StringValue: message.type
40
+ } }
41
+ });
42
+ await this.connection.snsClient.send(command);
43
+ }
44
+ async close() {}
45
+ };
46
+
47
+ //#endregion
48
+ //#region src/sns/SNSSubscriber.ts
49
+ /**
50
+ * SNS Subscriber - receives push-based messages from SNS via SQS queue
51
+ *
52
+ * Architecture:
53
+ * SNS Topic → (push) → SQS Queue → Subscriber
54
+ *
55
+ * This subscriber automatically:
56
+ * 1. Creates an SQS queue (or uses existing one)
57
+ * 2. Subscribes the queue to the SNS topic
58
+ * 3. Receives messages pushed from SNS to the queue
59
+ * 4. Filters messages by topic ARN and message type
60
+ * 5. Processes and acknowledges messages
61
+ *
62
+ * Note: While SQS long-polling is used internally to receive messages,
63
+ * this is an implementation detail of the SNS push delivery mechanism.
64
+ * Messages are pushed from SNS to SQS, and we receive those pushed messages.
65
+ */
66
+ var SNSSubscriber = class SNSSubscriber {
67
+ sqsClient;
68
+ queueUrl;
69
+ queueArn;
70
+ subscriptionArn;
71
+ sqsSubscriber;
72
+ options;
73
+ constructor(connection, options = {}) {
74
+ this.connection = connection;
75
+ this.options = {
76
+ queueName: options.queueName || `sns-sub-${Date.now()}-${Math.random().toString(36).substring(7)}`,
77
+ createQueue: options.createQueue ?? true,
78
+ deleteQueueOnClose: options.deleteQueueOnClose ?? !options.queueName,
79
+ waitTimeSeconds: options.waitTimeSeconds ?? 20,
80
+ maxMessages: options.maxMessages ?? 10
81
+ };
82
+ this.sqsClient = new __aws_sdk_client_sqs.SQSClient({
83
+ region: this.connection.config.region,
84
+ endpoint: this.connection.config.endpoint,
85
+ credentials: this.connection.config.credentials
86
+ });
87
+ }
88
+ /**
89
+ * Create an SNSSubscriber from a connection string
90
+ * Format: sns://?topicArn=...&queueName=myqueue&region=us-east-1
91
+ */
92
+ static async fromConnectionString(connectionString) {
93
+ const url = new URL(connectionString);
94
+ const params = url.searchParams;
95
+ const { SNSConnection: SNSConnection$1 } = await Promise.resolve().then(() => require("../SNSConnection-DIHRjrQF.cjs"));
96
+ const connection = await SNSConnection$1.fromConnectionString(connectionString);
97
+ const options = {
98
+ queueName: params.get("queueName") || void 0,
99
+ createQueue: params.get("createQueue") !== "false",
100
+ deleteQueueOnClose: params.get("deleteQueueOnClose") === "true",
101
+ waitTimeSeconds: params.get("waitTimeSeconds") ? Number.parseInt(params.get("waitTimeSeconds"), 10) : void 0
102
+ };
103
+ return new SNSSubscriber(connection, options);
104
+ }
105
+ async subscribe(messages, listener) {
106
+ await this.setupQueue();
107
+ await this.subscribeToTopic();
108
+ const sqsConnection = new require_SQSConnection.SQSConnection({
109
+ queueUrl: this.queueUrl,
110
+ region: this.connection.config.region,
111
+ endpoint: this.connection.config.endpoint,
112
+ credentials: this.connection.config.credentials
113
+ });
114
+ await sqsConnection.connect();
115
+ this.sqsSubscriber = new require_SQSSubscriber.SQSSubscriber(sqsConnection, {
116
+ waitTimeSeconds: this.options.waitTimeSeconds,
117
+ maxMessages: this.options.maxMessages,
118
+ expectedTopicArn: this.connection.topicArn
119
+ });
120
+ await this.sqsSubscriber.subscribe(messages, listener);
121
+ }
122
+ /**
123
+ * Stop receiving messages and clean up resources
124
+ */
125
+ async stop() {
126
+ if (this.sqsSubscriber) this.sqsSubscriber.stop();
127
+ if (this.subscriptionArn) try {
128
+ const command = new __aws_sdk_client_sns.UnsubscribeCommand({ SubscriptionArn: this.subscriptionArn });
129
+ await this.connection.snsClient.send(command);
130
+ } catch (_error) {}
131
+ if (this.queueUrl && this.options.deleteQueueOnClose) try {
132
+ const command = new __aws_sdk_client_sqs.DeleteQueueCommand({ QueueUrl: this.queueUrl });
133
+ await this.sqsClient.send(command);
134
+ } catch (_error) {}
135
+ this.sqsClient.destroy();
136
+ }
137
+ async setupQueue() {
138
+ if (this.options.createQueue) {
139
+ const createCommand = new __aws_sdk_client_sqs.CreateQueueCommand({ QueueName: this.options.queueName });
140
+ const response = await this.sqsClient.send(createCommand);
141
+ this.queueUrl = response.QueueUrl;
142
+ } else throw new Error("Queue must exist or createQueue option must be true");
143
+ const attrsCommand = new __aws_sdk_client_sqs.GetQueueAttributesCommand({
144
+ QueueUrl: this.queueUrl,
145
+ AttributeNames: ["QueueArn"]
146
+ });
147
+ const attrsResponse = await this.sqsClient.send(attrsCommand);
148
+ this.queueArn = attrsResponse.Attributes?.QueueArn;
149
+ await this.setQueuePolicy();
150
+ }
151
+ async setQueuePolicy() {
152
+ const policy = {
153
+ Version: "2012-10-17",
154
+ Statement: [{
155
+ Effect: "Allow",
156
+ Principal: "*",
157
+ Action: "SQS:SendMessage",
158
+ Resource: this.queueArn,
159
+ Condition: { ArnEquals: { "aws:SourceArn": this.connection.topicArn } }
160
+ }]
161
+ };
162
+ const command = new __aws_sdk_client_sqs.SetQueueAttributesCommand({
163
+ QueueUrl: this.queueUrl,
164
+ Attributes: { Policy: JSON.stringify(policy) }
165
+ });
166
+ await this.sqsClient.send(command);
167
+ }
168
+ async subscribeToTopic() {
169
+ const command = new __aws_sdk_client_sns.SubscribeCommand({
170
+ TopicArn: this.connection.topicArn,
171
+ Protocol: "sqs",
172
+ Endpoint: this.queueArn
173
+ });
174
+ const response = await this.connection.snsClient.send(command);
175
+ this.subscriptionArn = response.SubscriptionArn;
176
+ }
177
+ };
178
+
179
+ //#endregion
8
180
  exports.SNSConnection = require_SNSConnection.SNSConnection;
9
- exports.SNSPublisher = require_SNSPublisher.SNSPublisher;
10
- exports.SNSSubscriber = require_SNSSubscriber.SNSSubscriber;
181
+ exports.SNSPublisher = SNSPublisher;
182
+ exports.SNSSubscriber = SNSSubscriber;
183
+ Object.defineProperty(exports, 'snsUrl', {
184
+ enumerable: true,
185
+ get: function () {
186
+ return require_snsUrl.snsUrl_exports;
187
+ }
188
+ });
189
+ //# sourceMappingURL=index.cjs.map