@geekmidas/events 1.0.0 → 1.1.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 (257) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/{BasicConnection-BTRsXiuH.d.cts → BasicConnection-CQsJpx2J.d.cts} +2 -2
  3. package/dist/{BasicConnection-DIxtA7jK.d.mts.map → BasicConnection-CQsJpx2J.d.cts.map} +1 -1
  4. package/dist/{BasicConnection-Bz3F2rXA.cjs → BasicConnection-CxfNEvlb.cjs} +2 -2
  5. package/dist/{BasicConnection-Bz3F2rXA.cjs.map → BasicConnection-CxfNEvlb.cjs.map} +1 -1
  6. package/dist/{BasicConnection-DIxtA7jK.d.mts → BasicConnection-DcRelT64.d.mts} +2 -2
  7. package/dist/{BasicConnection-BTRsXiuH.d.cts.map → BasicConnection-DcRelT64.d.mts.map} +1 -1
  8. package/dist/{BasicConnection-DOSOFSsW.mjs → BasicConnection-hl-Ogz3a.mjs} +2 -2
  9. package/dist/{BasicConnection-DOSOFSsW.mjs.map → BasicConnection-hl-Ogz3a.mjs.map} +1 -1
  10. package/dist/{BasicPublisher-D1q0a2xp.d.cts → BasicPublisher-C-hMX2Hy.d.mts} +3 -3
  11. package/dist/{BasicPublisher-CpJFK2oS.d.mts.map → BasicPublisher-C-hMX2Hy.d.mts.map} +1 -1
  12. package/dist/{BasicPublisher-CpJFK2oS.d.mts → BasicPublisher-CGMXg2I2.d.cts} +3 -3
  13. package/dist/{BasicPublisher-D1q0a2xp.d.cts.map → BasicPublisher-CGMXg2I2.d.cts.map} +1 -1
  14. package/dist/{BasicPublisher-afwuA4Xp.cjs → BasicPublisher-CXAVKxgq.cjs} +1 -1
  15. package/dist/{BasicPublisher-afwuA4Xp.cjs.map → BasicPublisher-CXAVKxgq.cjs.map} +1 -1
  16. package/dist/{BasicPublisher-CaX8GCUi.mjs → BasicPublisher-DogbeHAH.mjs} +1 -1
  17. package/dist/{BasicPublisher-CaX8GCUi.mjs.map → BasicPublisher-DogbeHAH.mjs.map} +1 -1
  18. package/dist/{BasicSubscriber-BgsKYQmi.mjs → BasicSubscriber-BJSZN22M.mjs} +1 -1
  19. package/dist/{BasicSubscriber-BgsKYQmi.mjs.map → BasicSubscriber-BJSZN22M.mjs.map} +1 -1
  20. package/dist/{BasicSubscriber-DXxQewjc.d.cts → BasicSubscriber-HzSJ_MbB.d.mts} +3 -3
  21. package/dist/{BasicSubscriber-6w0Af4DD.d.mts.map → BasicSubscriber-HzSJ_MbB.d.mts.map} +1 -1
  22. package/dist/{BasicSubscriber-BN9fKRrU.cjs → BasicSubscriber-mVJRMXhZ.cjs} +1 -1
  23. package/dist/{BasicSubscriber-BN9fKRrU.cjs.map → BasicSubscriber-mVJRMXhZ.cjs.map} +1 -1
  24. package/dist/{BasicSubscriber-6w0Af4DD.d.mts → BasicSubscriber-uW3IOyBj.d.cts} +3 -3
  25. package/dist/{BasicSubscriber-DXxQewjc.d.cts.map → BasicSubscriber-uW3IOyBj.d.cts.map} +1 -1
  26. package/dist/{EventConnection-BaJRXdg7.d.cts → EventConnection-4niMI6D8.d.mts} +2 -2
  27. package/dist/{EventConnection-BaJRXdg7.d.cts.map → EventConnection-4niMI6D8.d.mts.map} +1 -1
  28. package/dist/{EventConnection-F_N81SXu.cjs → EventConnection-BkA9FSVL.cjs} +6 -2
  29. package/dist/{EventConnection-F_N81SXu.cjs.map → EventConnection-BkA9FSVL.cjs.map} +1 -1
  30. package/dist/{EventConnection-ClLMoIUU.mjs → EventConnection-Kr32GAzq.mjs} +6 -2
  31. package/dist/{EventConnection-ClLMoIUU.mjs.map → EventConnection-Kr32GAzq.mjs.map} +1 -1
  32. package/dist/{EventConnection-SOhtmxib.d.mts → EventConnection-dP42P87q.d.cts} +2 -2
  33. package/dist/{EventConnection-SOhtmxib.d.mts.map → EventConnection-dP42P87q.d.cts.map} +1 -1
  34. package/dist/EventConnection.cjs +2 -2
  35. package/dist/EventConnection.d.cts +2 -2
  36. package/dist/EventConnection.d.mts +2 -2
  37. package/dist/EventConnection.mjs +2 -2
  38. package/dist/PgBossConnection-BZUA7Is0.mjs +74 -0
  39. package/dist/PgBossConnection-BZUA7Is0.mjs.map +1 -0
  40. package/dist/PgBossConnection-Cd4x7NuY.d.mts +32 -0
  41. package/dist/PgBossConnection-Cd4x7NuY.d.mts.map +1 -0
  42. package/dist/PgBossConnection-YdhixTjL.d.cts +32 -0
  43. package/dist/PgBossConnection-YdhixTjL.d.cts.map +1 -0
  44. package/dist/PgBossConnection-wLwq2r13.cjs +80 -0
  45. package/dist/PgBossConnection-wLwq2r13.cjs.map +1 -0
  46. package/dist/PgBossPublisher-B6VE_5KT.mjs +31 -0
  47. package/dist/PgBossPublisher-B6VE_5KT.mjs.map +1 -0
  48. package/dist/PgBossPublisher-J6bY44Da.d.cts +20 -0
  49. package/dist/PgBossPublisher-J6bY44Da.d.cts.map +1 -0
  50. package/dist/PgBossPublisher-b0deuqhy.d.mts +20 -0
  51. package/dist/PgBossPublisher-b0deuqhy.d.mts.map +1 -0
  52. package/dist/PgBossPublisher-kFh3Mnbx.cjs +37 -0
  53. package/dist/PgBossPublisher-kFh3Mnbx.cjs.map +1 -0
  54. package/dist/PgBossSubscriber-2z82EaLF.d.mts +24 -0
  55. package/dist/PgBossSubscriber-2z82EaLF.d.mts.map +1 -0
  56. package/dist/PgBossSubscriber-BubVfuWm.cjs +52 -0
  57. package/dist/PgBossSubscriber-BubVfuWm.cjs.map +1 -0
  58. package/dist/PgBossSubscriber-CB6vm-LD.d.cts +24 -0
  59. package/dist/PgBossSubscriber-CB6vm-LD.d.cts.map +1 -0
  60. package/dist/PgBossSubscriber-DopATe80.mjs +46 -0
  61. package/dist/PgBossSubscriber-DopATe80.mjs.map +1 -0
  62. package/dist/{Publisher-ceu6OxCj.cjs → Publisher-CKloIGh6.cjs} +11 -2
  63. package/dist/{Publisher-ceu6OxCj.cjs.map → Publisher-CKloIGh6.cjs.map} +1 -1
  64. package/dist/{Publisher-DS0aOh8r.mjs → Publisher-ChLTrUeP.mjs} +11 -2
  65. package/dist/{Publisher-DS0aOh8r.mjs.map → Publisher-ChLTrUeP.mjs.map} +1 -1
  66. package/dist/{Publisher-1CfcYRnm.d.mts → Publisher-DDee6xau.d.cts} +2 -2
  67. package/dist/{Publisher-1CfcYRnm.d.mts.map → Publisher-DDee6xau.d.cts.map} +1 -1
  68. package/dist/{Publisher-BfNgvHwQ.d.cts → Publisher-VHumMkrP.d.mts} +2 -2
  69. package/dist/{Publisher-BfNgvHwQ.d.cts.map → Publisher-VHumMkrP.d.mts.map} +1 -1
  70. package/dist/Publisher.cjs +2 -2
  71. package/dist/Publisher.d.cts +2 -2
  72. package/dist/Publisher.d.mts +2 -2
  73. package/dist/Publisher.mjs +2 -2
  74. package/dist/{RabbitMQConnection-DFLkr2vq.mjs → RabbitMQConnection-BtKZjtZY.mjs} +2 -2
  75. package/dist/{RabbitMQConnection-DFLkr2vq.mjs.map → RabbitMQConnection-BtKZjtZY.mjs.map} +1 -1
  76. package/dist/{RabbitMQConnection-Bm8VCI2R.d.cts → RabbitMQConnection-DV9t3VYp.d.mts} +2 -2
  77. package/dist/{RabbitMQConnection-Bm8VCI2R.d.cts.map → RabbitMQConnection-DV9t3VYp.d.mts.map} +1 -1
  78. package/dist/{RabbitMQConnection-CjBoCd9n.cjs → RabbitMQConnection-DmMMosT4.cjs} +2 -2
  79. package/dist/{RabbitMQConnection-CjBoCd9n.cjs.map → RabbitMQConnection-DmMMosT4.cjs.map} +1 -1
  80. package/dist/{RabbitMQConnection-Ck-ktCp_.d.mts → RabbitMQConnection-jNME_eR7.d.cts} +2 -2
  81. package/dist/{RabbitMQConnection-Ck-ktCp_.d.mts.map → RabbitMQConnection-jNME_eR7.d.cts.map} +1 -1
  82. package/dist/{RabbitMQPublisher-COnxcWEZ.d.mts → RabbitMQPublisher-DKmgwqVj.d.mts} +3 -3
  83. package/dist/{RabbitMQPublisher-COnxcWEZ.d.mts.map → RabbitMQPublisher-DKmgwqVj.d.mts.map} +1 -1
  84. package/dist/{RabbitMQPublisher-qQT7-1-p.d.cts → RabbitMQPublisher-d257OHLa.d.cts} +3 -3
  85. package/dist/{RabbitMQPublisher-qQT7-1-p.d.cts.map → RabbitMQPublisher-d257OHLa.d.cts.map} +1 -1
  86. package/dist/{RabbitMQSubscriber-C_sZjDPU.d.mts → RabbitMQSubscriber-BF7JGfYm.d.cts} +3 -3
  87. package/dist/{RabbitMQSubscriber-C_sZjDPU.d.mts.map → RabbitMQSubscriber-BF7JGfYm.d.cts.map} +1 -1
  88. package/dist/{RabbitMQSubscriber-D12sssMb.d.cts → RabbitMQSubscriber-CdbUy5mB.d.mts} +3 -3
  89. package/dist/{RabbitMQSubscriber-D12sssMb.d.cts.map → RabbitMQSubscriber-CdbUy5mB.d.mts.map} +1 -1
  90. package/dist/{SNSConnection-DqLbiQ_X.cjs → SNSConnection-CAcbLQOy.cjs} +2 -2
  91. package/dist/{SNSConnection-DqLbiQ_X.cjs.map → SNSConnection-CAcbLQOy.cjs.map} +1 -1
  92. package/dist/{SNSConnection-BDfQrVBO.d.cts → SNSConnection-CG4iEwA8.d.mts} +2 -2
  93. package/dist/{SNSConnection-BDfQrVBO.d.cts.map → SNSConnection-CG4iEwA8.d.mts.map} +1 -1
  94. package/dist/{SNSConnection-D8a31sJK.mjs → SNSConnection-CVjH93lb.mjs} +2 -2
  95. package/dist/{SNSConnection-D8a31sJK.mjs.map → SNSConnection-CVjH93lb.mjs.map} +1 -1
  96. package/dist/{SNSConnection-mHb10nQ6.d.mts → SNSConnection-Dol9FuxA.d.cts} +2 -2
  97. package/dist/{SNSConnection-mHb10nQ6.d.mts.map → SNSConnection-Dol9FuxA.d.cts.map} +1 -1
  98. package/dist/{SNSPublisher-i4w_-RmP.mjs → SNSPublisher-CjlMS3Z2.mjs} +1 -1
  99. package/dist/{SNSPublisher-i4w_-RmP.mjs.map → SNSPublisher-CjlMS3Z2.mjs.map} +1 -1
  100. package/dist/{SNSPublisher-CM7UAWtf.d.mts → SNSPublisher-D50dPCEh.d.mts} +3 -3
  101. package/dist/{SNSPublisher-CM7UAWtf.d.mts.map → SNSPublisher-D50dPCEh.d.mts.map} +1 -1
  102. package/dist/{SNSPublisher-kpsSlGDn.d.cts → SNSPublisher-DQunY4NM.d.cts} +3 -3
  103. package/dist/{SNSPublisher-kpsSlGDn.d.cts.map → SNSPublisher-DQunY4NM.d.cts.map} +1 -1
  104. package/dist/{SNSPublisher-BRgwumLS.cjs → SNSPublisher-DV_8GGsi.cjs} +1 -1
  105. package/dist/{SNSPublisher-BRgwumLS.cjs.map → SNSPublisher-DV_8GGsi.cjs.map} +1 -1
  106. package/dist/{SNSSubscriber-BEf-H4p5.mjs → SNSSubscriber-BWaCQFl6.mjs} +3 -3
  107. package/dist/{SNSSubscriber-BEf-H4p5.mjs.map → SNSSubscriber-BWaCQFl6.mjs.map} +1 -1
  108. package/dist/{SNSSubscriber-DDB3--pm.d.cts → SNSSubscriber-CUgHK4W2.d.mts} +3 -3
  109. package/dist/{SNSSubscriber-DDB3--pm.d.cts.map → SNSSubscriber-CUgHK4W2.d.mts.map} +1 -1
  110. package/dist/{SNSSubscriber-FYqSi346.cjs → SNSSubscriber-ZE_-Hsps.cjs} +3 -3
  111. package/dist/{SNSSubscriber-FYqSi346.cjs.map → SNSSubscriber-ZE_-Hsps.cjs.map} +1 -1
  112. package/dist/{SNSSubscriber-Dwo8391f.d.mts → SNSSubscriber-ZGJjhXFQ.d.cts} +3 -3
  113. package/dist/{SNSSubscriber-Dwo8391f.d.mts.map → SNSSubscriber-ZGJjhXFQ.d.cts.map} +1 -1
  114. package/dist/{SQSConnection-B5Ep9Tma.d.cts → SQSConnection-BtEkDha8.d.cts} +2 -2
  115. package/dist/{SQSConnection-B5Ep9Tma.d.cts.map → SQSConnection-BtEkDha8.d.cts.map} +1 -1
  116. package/dist/{SQSConnection-BwHhXLIu.mjs → SQSConnection-CT3S7_zP.mjs} +2 -2
  117. package/dist/{SQSConnection-BwHhXLIu.mjs.map → SQSConnection-CT3S7_zP.mjs.map} +1 -1
  118. package/dist/{SQSConnection-BI_xOzyJ.d.mts → SQSConnection-DVy43GCV.d.mts} +2 -2
  119. package/dist/{SQSConnection-BI_xOzyJ.d.mts.map → SQSConnection-DVy43GCV.d.mts.map} +1 -1
  120. package/dist/{SQSConnection-Ctu3XY9E.cjs → SQSConnection-Y0mdVTcB.cjs} +2 -2
  121. package/dist/{SQSConnection-Ctu3XY9E.cjs.map → SQSConnection-Y0mdVTcB.cjs.map} +1 -1
  122. package/dist/{SQSPublisher-BDGMw1uf.mjs → SQSPublisher-B-32CC4G.mjs} +1 -1
  123. package/dist/{SQSPublisher-BDGMw1uf.mjs.map → SQSPublisher-B-32CC4G.mjs.map} +1 -1
  124. package/dist/{SQSPublisher-C3Y_gOjV.cjs → SQSPublisher-CgUduk6H.cjs} +1 -1
  125. package/dist/{SQSPublisher-C3Y_gOjV.cjs.map → SQSPublisher-CgUduk6H.cjs.map} +1 -1
  126. package/dist/{SQSPublisher-BN1ds6SN.d.mts → SQSPublisher-kyl5HW3N.d.cts} +3 -3
  127. package/dist/{SQSPublisher-BN1ds6SN.d.mts.map → SQSPublisher-kyl5HW3N.d.cts.map} +1 -1
  128. package/dist/{SQSPublisher-DFTqwzRW.d.cts → SQSPublisher-qDE5Fp-N.d.mts} +3 -3
  129. package/dist/{SQSPublisher-DFTqwzRW.d.cts.map → SQSPublisher-qDE5Fp-N.d.mts.map} +1 -1
  130. package/dist/{SQSSubscriber-BB9TWyLA.cjs → SQSSubscriber-C4UA2hKq.cjs} +1 -1
  131. package/dist/{SQSSubscriber-BB9TWyLA.cjs.map → SQSSubscriber-C4UA2hKq.cjs.map} +1 -1
  132. package/dist/{SQSSubscriber-BO2me_gs.d.cts → SQSSubscriber-CDvaG4ij.d.cts} +3 -3
  133. package/dist/{SQSSubscriber-BO2me_gs.d.cts.map → SQSSubscriber-CDvaG4ij.d.cts.map} +1 -1
  134. package/dist/{SQSSubscriber-ux7QEMdd.mjs → SQSSubscriber-CQdSFzpe.mjs} +1 -1
  135. package/dist/{SQSSubscriber-ux7QEMdd.mjs.map → SQSSubscriber-CQdSFzpe.mjs.map} +1 -1
  136. package/dist/{SQSSubscriber-FyZFfr2-.d.mts → SQSSubscriber-JfFuAAoP.d.mts} +3 -3
  137. package/dist/{SQSSubscriber-FyZFfr2-.d.mts.map → SQSSubscriber-JfFuAAoP.d.mts.map} +1 -1
  138. package/dist/{Subscriber-BxT-KzFJ.d.mts → Subscriber-CG_QUQZs.d.cts} +2 -2
  139. package/dist/{Subscriber-BxT-KzFJ.d.mts.map → Subscriber-CG_QUQZs.d.cts.map} +1 -1
  140. package/dist/{Subscriber-saVOWuMq.cjs → Subscriber-CghW0A02.cjs} +11 -2
  141. package/dist/Subscriber-CghW0A02.cjs.map +1 -0
  142. package/dist/{Subscriber-DDD_4Nlx.d.cts → Subscriber-DiYHmuF0.d.mts} +2 -2
  143. package/dist/{Subscriber-DDD_4Nlx.d.cts.map → Subscriber-DiYHmuF0.d.mts.map} +1 -1
  144. package/dist/{Subscriber-Bd9hb_jp.mjs → Subscriber-bnkFtSvt.mjs} +11 -2
  145. package/dist/Subscriber-bnkFtSvt.mjs.map +1 -0
  146. package/dist/Subscriber.cjs +2 -2
  147. package/dist/Subscriber.d.cts +2 -2
  148. package/dist/Subscriber.d.mts +2 -2
  149. package/dist/Subscriber.mjs +2 -2
  150. package/dist/basic/BasicConnection.cjs +2 -2
  151. package/dist/basic/BasicConnection.d.cts +2 -2
  152. package/dist/basic/BasicConnection.d.mts +2 -2
  153. package/dist/basic/BasicConnection.mjs +2 -2
  154. package/dist/basic/BasicPublisher.cjs +1 -1
  155. package/dist/basic/BasicPublisher.d.cts +3 -3
  156. package/dist/basic/BasicPublisher.d.mts +3 -3
  157. package/dist/basic/BasicPublisher.mjs +1 -1
  158. package/dist/basic/BasicSubscriber.cjs +1 -1
  159. package/dist/basic/BasicSubscriber.d.cts +3 -3
  160. package/dist/basic/BasicSubscriber.d.mts +3 -3
  161. package/dist/basic/BasicSubscriber.mjs +1 -1
  162. package/dist/basic/index.cjs +4 -4
  163. package/dist/basic/index.d.cts +4 -4
  164. package/dist/basic/index.d.mts +4 -4
  165. package/dist/basic/index.mjs +4 -4
  166. package/dist/index.cjs +4 -4
  167. package/dist/index.d.cts +4 -4
  168. package/dist/index.d.mts +4 -4
  169. package/dist/index.mjs +4 -4
  170. package/dist/pgboss/PgBossConnection.cjs +4 -0
  171. package/dist/pgboss/PgBossConnection.d.cts +3 -0
  172. package/dist/pgboss/PgBossConnection.d.mts +3 -0
  173. package/dist/pgboss/PgBossConnection.mjs +4 -0
  174. package/dist/pgboss/PgBossPublisher.cjs +3 -0
  175. package/dist/pgboss/PgBossPublisher.d.cts +4 -0
  176. package/dist/pgboss/PgBossPublisher.d.mts +4 -0
  177. package/dist/pgboss/PgBossPublisher.mjs +3 -0
  178. package/dist/pgboss/PgBossSubscriber.cjs +3 -0
  179. package/dist/pgboss/PgBossSubscriber.d.cts +4 -0
  180. package/dist/pgboss/PgBossSubscriber.d.mts +4 -0
  181. package/dist/pgboss/PgBossSubscriber.mjs +3 -0
  182. package/dist/pgboss/index.cjs +8 -0
  183. package/dist/pgboss/index.d.cts +5 -0
  184. package/dist/pgboss/index.d.mts +5 -0
  185. package/dist/pgboss/index.mjs +6 -0
  186. package/dist/rabbitmq/RabbitMQConnection.cjs +2 -2
  187. package/dist/rabbitmq/RabbitMQConnection.d.cts +2 -2
  188. package/dist/rabbitmq/RabbitMQConnection.d.mts +2 -2
  189. package/dist/rabbitmq/RabbitMQConnection.mjs +2 -2
  190. package/dist/rabbitmq/RabbitMQPublisher.d.cts +3 -3
  191. package/dist/rabbitmq/RabbitMQPublisher.d.mts +3 -3
  192. package/dist/rabbitmq/RabbitMQSubscriber.d.cts +3 -3
  193. package/dist/rabbitmq/RabbitMQSubscriber.d.mts +3 -3
  194. package/dist/rabbitmq/index.cjs +2 -2
  195. package/dist/rabbitmq/index.d.cts +4 -4
  196. package/dist/rabbitmq/index.d.mts +4 -4
  197. package/dist/rabbitmq/index.mjs +2 -2
  198. package/dist/sns/SNSConnection.cjs +2 -2
  199. package/dist/sns/SNSConnection.d.cts +2 -2
  200. package/dist/sns/SNSConnection.d.mts +2 -2
  201. package/dist/sns/SNSConnection.mjs +2 -2
  202. package/dist/sns/SNSPublisher.cjs +1 -1
  203. package/dist/sns/SNSPublisher.d.cts +3 -3
  204. package/dist/sns/SNSPublisher.d.mts +3 -3
  205. package/dist/sns/SNSPublisher.mjs +1 -1
  206. package/dist/sns/SNSSubscriber.cjs +4 -4
  207. package/dist/sns/SNSSubscriber.d.cts +3 -3
  208. package/dist/sns/SNSSubscriber.d.mts +3 -3
  209. package/dist/sns/SNSSubscriber.mjs +4 -4
  210. package/dist/sns/index.cjs +6 -6
  211. package/dist/sns/index.d.cts +4 -4
  212. package/dist/sns/index.d.mts +4 -4
  213. package/dist/sns/index.mjs +6 -6
  214. package/dist/sqs/SQSConnection.cjs +2 -2
  215. package/dist/sqs/SQSConnection.d.cts +2 -2
  216. package/dist/sqs/SQSConnection.d.mts +2 -2
  217. package/dist/sqs/SQSConnection.mjs +2 -2
  218. package/dist/sqs/SQSPublisher.cjs +1 -1
  219. package/dist/sqs/SQSPublisher.d.cts +3 -3
  220. package/dist/sqs/SQSPublisher.d.mts +3 -3
  221. package/dist/sqs/SQSPublisher.mjs +1 -1
  222. package/dist/sqs/SQSSubscriber.cjs +1 -1
  223. package/dist/sqs/SQSSubscriber.d.cts +3 -3
  224. package/dist/sqs/SQSSubscriber.d.mts +3 -3
  225. package/dist/sqs/SQSSubscriber.mjs +1 -1
  226. package/dist/sqs/index.cjs +4 -4
  227. package/dist/sqs/index.d.cts +4 -4
  228. package/dist/sqs/index.d.mts +4 -4
  229. package/dist/sqs/index.mjs +4 -4
  230. package/dist/{types-B63qHVOG.mjs → types-BrdcSEnd.mjs} +2 -1
  231. package/dist/types-BrdcSEnd.mjs.map +1 -0
  232. package/dist/{types-CvSMEO5z.cjs → types-Byv8N9ma.cjs} +2 -1
  233. package/dist/types-Byv8N9ma.cjs.map +1 -0
  234. package/dist/{types-DSVsPgKd.d.mts → types-Dh9Jyinx.d.mts} +2 -1
  235. package/dist/types-Dh9Jyinx.d.mts.map +1 -0
  236. package/dist/{types-Dmbp1U-6.d.cts → types-Dj23od3e.d.cts} +2 -1
  237. package/dist/types-Dj23od3e.d.cts.map +1 -0
  238. package/dist/types.cjs +1 -1
  239. package/dist/types.d.cts +1 -1
  240. package/dist/types.d.mts +1 -1
  241. package/dist/types.mjs +1 -1
  242. package/package.json +11 -1
  243. package/src/EventConnection.ts +4 -0
  244. package/src/Publisher.ts +11 -0
  245. package/src/Subscriber.ts +11 -0
  246. package/src/pgboss/PgBossConnection.ts +91 -0
  247. package/src/pgboss/PgBossPublisher.ts +45 -0
  248. package/src/pgboss/PgBossSubscriber.ts +81 -0
  249. package/src/pgboss/__tests__/pgboss.spec.ts +183 -0
  250. package/src/pgboss/index.ts +5 -0
  251. package/src/types.ts +1 -0
  252. package/dist/Subscriber-Bd9hb_jp.mjs.map +0 -1
  253. package/dist/Subscriber-saVOWuMq.cjs.map +0 -1
  254. package/dist/types-B63qHVOG.mjs.map +0 -1
  255. package/dist/types-CvSMEO5z.cjs.map +0 -1
  256. package/dist/types-DSVsPgKd.d.mts.map +0 -1
  257. package/dist/types-Dmbp1U-6.d.cts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"RabbitMQConnection-DFLkr2vq.mjs","names":["config: RabbitMQConnectionConfig","connectionString: string","_err: Error"],"sources":["../src/rabbitmq/RabbitMQConnection.ts"],"sourcesContent":["import amqplib from 'amqplib';\nimport type { EventConnection } from '../types';\nimport { EventPublisherType } from '../types';\n\nexport interface RabbitMQConnectionConfig {\n\turl: string;\n\texchange?: string;\n\texchangeType?: 'topic' | 'direct' | 'fanout' | 'headers';\n\texchangeOptions?: amqplib.Options.AssertExchange;\n\ttimeout?: number; // Connection timeout in milliseconds (default: 5000)\n}\n\nexport class RabbitMQConnection implements EventConnection {\n\treadonly type = EventPublisherType.RabbitMQ;\n\tprivate connection?: amqplib.ChannelModel;\n\tprivate channel?: amqplib.Channel;\n\tprivate connecting?: Promise<void>;\n\tprivate config: Required<\n\t\tPick<RabbitMQConnectionConfig, 'exchange' | 'exchangeType' | 'timeout'>\n\t> &\n\t\tRabbitMQConnectionConfig;\n\n\tconstructor(config: RabbitMQConnectionConfig) {\n\t\tthis.config = {\n\t\t\t...config,\n\t\t\texchange: config.exchange || 'geekmidas.events',\n\t\t\texchangeType: config.exchangeType || 'topic',\n\t\t\ttimeout: config.timeout ?? 5000,\n\t\t\texchangeOptions: {\n\t\t\t\tdurable: true,\n\t\t\t\t...config.exchangeOptions,\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * Create a RabbitMQConnection 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\tconnectionString: string,\n\t): Promise<RabbitMQConnection> {\n\t\tconst url = new URL(connectionString);\n\t\tconst params = url.searchParams;\n\n\t\t// Extract connection URL without query params\n\t\tconst baseUrl = `amqp://${url.username ? `${url.username}:${url.password}@` : ''}${url.host}${url.pathname}`;\n\n\t\tconst timeoutParam = params.get('timeout');\n\t\tconst config: RabbitMQConnectionConfig = {\n\t\t\turl: baseUrl,\n\t\t\texchange: params.get('exchange') || 'geekmidas.events',\n\t\t\texchangeType: (params.get('type') as any) || 'topic',\n\t\t\ttimeout: timeoutParam ? Number.parseInt(timeoutParam, 10) : undefined,\n\t\t};\n\n\t\tconst connection = new RabbitMQConnection(config);\n\t\tawait connection.connect();\n\t\treturn connection;\n\t}\n\n\tasync connect(): Promise<void> {\n\t\tif (this.channel) return;\n\n\t\t// Prevent multiple simultaneous connection attempts\n\t\tif (this.connecting) {\n\t\t\tawait this.connecting;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.connecting = (async () => {\n\t\t\ttry {\n\t\t\t\tconst connection = await amqplib.connect(this.config.url, {\n\t\t\t\t\ttimeout: this.config.timeout,\n\t\t\t\t});\n\t\t\t\tconst channel = await connection.createChannel();\n\n\t\t\t\t// Assert the exchange exists\n\t\t\t\tawait channel.assertExchange(\n\t\t\t\t\tthis.config.exchange!,\n\t\t\t\t\tthis.config.exchangeType!,\n\t\t\t\t\tthis.config.exchangeOptions,\n\t\t\t\t);\n\n\t\t\t\t// Handle connection errors\n\t\t\t\tconnection.on('error', (_err: Error) => {\n\t\t\t\t\tthis.cleanup();\n\t\t\t\t});\n\n\t\t\t\tconnection.on('close', () => {\n\t\t\t\t\tthis.cleanup();\n\t\t\t\t});\n\n\t\t\t\t// Only set after successful setup\n\t\t\t\tthis.connection = connection;\n\t\t\t\tthis.channel = channel;\n\t\t\t} catch (error) {\n\t\t\t\tthis.cleanup();\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t})();\n\n\t\tawait this.connecting;\n\t\tthis.connecting = undefined;\n\t}\n\n\tasync close(): Promise<void> {\n\t\ttry {\n\t\t\tawait this.channel?.close();\n\t\t\tawait this.connection?.close();\n\t\t} catch (_error) {\n\t\t\t// Ignore errors during close\n\t\t} finally {\n\t\t\tthis.cleanup();\n\t\t}\n\t}\n\n\tisConnected(): boolean {\n\t\treturn !!this.channel;\n\t}\n\n\tprivate cleanup(): void {\n\t\tthis.channel = undefined;\n\t\tthis.connection = undefined;\n\t\tthis.connecting = undefined;\n\t}\n\n\t/**\n\t * Get the underlying channel for publishing/subscribing\n\t */\n\tget amqpChannel(): amqplib.Channel | undefined {\n\t\treturn this.channel;\n\t}\n\n\t/**\n\t * Get the exchange name for this connection\n\t */\n\tget exchangeName(): string {\n\t\treturn this.config.exchange;\n\t}\n\n\t/**\n\t * Get the exchange type for this connection\n\t */\n\tget exchangeType(): string {\n\t\treturn this.config.exchangeType;\n\t}\n}\n"],"mappings":";;;;AAYA,IAAa,qBAAb,MAAa,mBAA8C;CAC1D,AAAS,OAAO,mBAAmB;CACnC,AAAQ;CACR,AAAQ;CACR,AAAQ;CACR,AAAQ;CAKR,YAAYA,QAAkC;AAC7C,OAAK,SAAS;GACb,GAAG;GACH,UAAU,OAAO,YAAY;GAC7B,cAAc,OAAO,gBAAgB;GACrC,SAAS,OAAO,WAAW;GAC3B,iBAAiB;IAChB,SAAS;IACT,GAAG,OAAO;GACV;EACD;CACD;;;;;CAMD,aAAa,qBACZC,kBAC8B;EAC9B,MAAM,MAAM,IAAI,IAAI;EACpB,MAAM,SAAS,IAAI;EAGnB,MAAM,WAAW,SAAS,IAAI,YAAY,EAAE,IAAI,SAAS,GAAG,IAAI,SAAS,KAAK,GAAG,EAAE,IAAI,KAAK,EAAE,IAAI,SAAS;EAE3G,MAAM,eAAe,OAAO,IAAI,UAAU;EAC1C,MAAMD,SAAmC;GACxC,KAAK;GACL,UAAU,OAAO,IAAI,WAAW,IAAI;GACpC,cAAe,OAAO,IAAI,OAAO,IAAY;GAC7C,SAAS,eAAe,OAAO,SAAS,cAAc,GAAG;EACzD;EAED,MAAM,aAAa,IAAI,mBAAmB;AAC1C,QAAM,WAAW,SAAS;AAC1B,SAAO;CACP;CAED,MAAM,UAAyB;AAC9B,MAAI,KAAK,QAAS;AAGlB,MAAI,KAAK,YAAY;AACpB,SAAM,KAAK;AACX;EACA;AAED,OAAK,aAAa,CAAC,YAAY;AAC9B,OAAI;IACH,MAAM,aAAa,MAAM,QAAQ,QAAQ,KAAK,OAAO,KAAK,EACzD,SAAS,KAAK,OAAO,QACrB,EAAC;IACF,MAAM,UAAU,MAAM,WAAW,eAAe;AAGhD,UAAM,QAAQ,eACb,KAAK,OAAO,UACZ,KAAK,OAAO,cACZ,KAAK,OAAO,gBACZ;AAGD,eAAW,GAAG,SAAS,CAACE,SAAgB;AACvC,UAAK,SAAS;IACd,EAAC;AAEF,eAAW,GAAG,SAAS,MAAM;AAC5B,UAAK,SAAS;IACd,EAAC;AAGF,SAAK,aAAa;AAClB,SAAK,UAAU;GACf,SAAQ,OAAO;AACf,SAAK,SAAS;AACd,UAAM;GACN;EACD,IAAG;AAEJ,QAAM,KAAK;AACX,OAAK;CACL;CAED,MAAM,QAAuB;AAC5B,MAAI;AACH,SAAM,KAAK,SAAS,OAAO;AAC3B,SAAM,KAAK,YAAY,OAAO;EAC9B,SAAQ,QAAQ,CAEhB,UAAS;AACT,QAAK,SAAS;EACd;CACD;CAED,cAAuB;AACtB,WAAS,KAAK;CACd;CAED,AAAQ,UAAgB;AACvB,OAAK;AACL,OAAK;AACL,OAAK;CACL;;;;CAKD,IAAI,cAA2C;AAC9C,SAAO,KAAK;CACZ;;;;CAKD,IAAI,eAAuB;AAC1B,SAAO,KAAK,OAAO;CACnB;;;;CAKD,IAAI,eAAuB;AAC1B,SAAO,KAAK,OAAO;CACnB;AACD"}
1
+ {"version":3,"file":"RabbitMQConnection-BtKZjtZY.mjs","names":["config: RabbitMQConnectionConfig","connectionString: string","_err: Error"],"sources":["../src/rabbitmq/RabbitMQConnection.ts"],"sourcesContent":["import amqplib from 'amqplib';\nimport type { EventConnection } from '../types';\nimport { EventPublisherType } from '../types';\n\nexport interface RabbitMQConnectionConfig {\n\turl: string;\n\texchange?: string;\n\texchangeType?: 'topic' | 'direct' | 'fanout' | 'headers';\n\texchangeOptions?: amqplib.Options.AssertExchange;\n\ttimeout?: number; // Connection timeout in milliseconds (default: 5000)\n}\n\nexport class RabbitMQConnection implements EventConnection {\n\treadonly type = EventPublisherType.RabbitMQ;\n\tprivate connection?: amqplib.ChannelModel;\n\tprivate channel?: amqplib.Channel;\n\tprivate connecting?: Promise<void>;\n\tprivate config: Required<\n\t\tPick<RabbitMQConnectionConfig, 'exchange' | 'exchangeType' | 'timeout'>\n\t> &\n\t\tRabbitMQConnectionConfig;\n\n\tconstructor(config: RabbitMQConnectionConfig) {\n\t\tthis.config = {\n\t\t\t...config,\n\t\t\texchange: config.exchange || 'geekmidas.events',\n\t\t\texchangeType: config.exchangeType || 'topic',\n\t\t\ttimeout: config.timeout ?? 5000,\n\t\t\texchangeOptions: {\n\t\t\t\tdurable: true,\n\t\t\t\t...config.exchangeOptions,\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * Create a RabbitMQConnection 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\tconnectionString: string,\n\t): Promise<RabbitMQConnection> {\n\t\tconst url = new URL(connectionString);\n\t\tconst params = url.searchParams;\n\n\t\t// Extract connection URL without query params\n\t\tconst baseUrl = `amqp://${url.username ? `${url.username}:${url.password}@` : ''}${url.host}${url.pathname}`;\n\n\t\tconst timeoutParam = params.get('timeout');\n\t\tconst config: RabbitMQConnectionConfig = {\n\t\t\turl: baseUrl,\n\t\t\texchange: params.get('exchange') || 'geekmidas.events',\n\t\t\texchangeType: (params.get('type') as any) || 'topic',\n\t\t\ttimeout: timeoutParam ? Number.parseInt(timeoutParam, 10) : undefined,\n\t\t};\n\n\t\tconst connection = new RabbitMQConnection(config);\n\t\tawait connection.connect();\n\t\treturn connection;\n\t}\n\n\tasync connect(): Promise<void> {\n\t\tif (this.channel) return;\n\n\t\t// Prevent multiple simultaneous connection attempts\n\t\tif (this.connecting) {\n\t\t\tawait this.connecting;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.connecting = (async () => {\n\t\t\ttry {\n\t\t\t\tconst connection = await amqplib.connect(this.config.url, {\n\t\t\t\t\ttimeout: this.config.timeout,\n\t\t\t\t});\n\t\t\t\tconst channel = await connection.createChannel();\n\n\t\t\t\t// Assert the exchange exists\n\t\t\t\tawait channel.assertExchange(\n\t\t\t\t\tthis.config.exchange!,\n\t\t\t\t\tthis.config.exchangeType!,\n\t\t\t\t\tthis.config.exchangeOptions,\n\t\t\t\t);\n\n\t\t\t\t// Handle connection errors\n\t\t\t\tconnection.on('error', (_err: Error) => {\n\t\t\t\t\tthis.cleanup();\n\t\t\t\t});\n\n\t\t\t\tconnection.on('close', () => {\n\t\t\t\t\tthis.cleanup();\n\t\t\t\t});\n\n\t\t\t\t// Only set after successful setup\n\t\t\t\tthis.connection = connection;\n\t\t\t\tthis.channel = channel;\n\t\t\t} catch (error) {\n\t\t\t\tthis.cleanup();\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t})();\n\n\t\tawait this.connecting;\n\t\tthis.connecting = undefined;\n\t}\n\n\tasync close(): Promise<void> {\n\t\ttry {\n\t\t\tawait this.channel?.close();\n\t\t\tawait this.connection?.close();\n\t\t} catch (_error) {\n\t\t\t// Ignore errors during close\n\t\t} finally {\n\t\t\tthis.cleanup();\n\t\t}\n\t}\n\n\tisConnected(): boolean {\n\t\treturn !!this.channel;\n\t}\n\n\tprivate cleanup(): void {\n\t\tthis.channel = undefined;\n\t\tthis.connection = undefined;\n\t\tthis.connecting = undefined;\n\t}\n\n\t/**\n\t * Get the underlying channel for publishing/subscribing\n\t */\n\tget amqpChannel(): amqplib.Channel | undefined {\n\t\treturn this.channel;\n\t}\n\n\t/**\n\t * Get the exchange name for this connection\n\t */\n\tget exchangeName(): string {\n\t\treturn this.config.exchange;\n\t}\n\n\t/**\n\t * Get the exchange type for this connection\n\t */\n\tget exchangeType(): string {\n\t\treturn this.config.exchangeType;\n\t}\n}\n"],"mappings":";;;;AAYA,IAAa,qBAAb,MAAa,mBAA8C;CAC1D,AAAS,OAAO,mBAAmB;CACnC,AAAQ;CACR,AAAQ;CACR,AAAQ;CACR,AAAQ;CAKR,YAAYA,QAAkC;AAC7C,OAAK,SAAS;GACb,GAAG;GACH,UAAU,OAAO,YAAY;GAC7B,cAAc,OAAO,gBAAgB;GACrC,SAAS,OAAO,WAAW;GAC3B,iBAAiB;IAChB,SAAS;IACT,GAAG,OAAO;GACV;EACD;CACD;;;;;CAMD,aAAa,qBACZC,kBAC8B;EAC9B,MAAM,MAAM,IAAI,IAAI;EACpB,MAAM,SAAS,IAAI;EAGnB,MAAM,WAAW,SAAS,IAAI,YAAY,EAAE,IAAI,SAAS,GAAG,IAAI,SAAS,KAAK,GAAG,EAAE,IAAI,KAAK,EAAE,IAAI,SAAS;EAE3G,MAAM,eAAe,OAAO,IAAI,UAAU;EAC1C,MAAMD,SAAmC;GACxC,KAAK;GACL,UAAU,OAAO,IAAI,WAAW,IAAI;GACpC,cAAe,OAAO,IAAI,OAAO,IAAY;GAC7C,SAAS,eAAe,OAAO,SAAS,cAAc,GAAG;EACzD;EAED,MAAM,aAAa,IAAI,mBAAmB;AAC1C,QAAM,WAAW,SAAS;AAC1B,SAAO;CACP;CAED,MAAM,UAAyB;AAC9B,MAAI,KAAK,QAAS;AAGlB,MAAI,KAAK,YAAY;AACpB,SAAM,KAAK;AACX;EACA;AAED,OAAK,aAAa,CAAC,YAAY;AAC9B,OAAI;IACH,MAAM,aAAa,MAAM,QAAQ,QAAQ,KAAK,OAAO,KAAK,EACzD,SAAS,KAAK,OAAO,QACrB,EAAC;IACF,MAAM,UAAU,MAAM,WAAW,eAAe;AAGhD,UAAM,QAAQ,eACb,KAAK,OAAO,UACZ,KAAK,OAAO,cACZ,KAAK,OAAO,gBACZ;AAGD,eAAW,GAAG,SAAS,CAACE,SAAgB;AACvC,UAAK,SAAS;IACd,EAAC;AAEF,eAAW,GAAG,SAAS,MAAM;AAC5B,UAAK,SAAS;IACd,EAAC;AAGF,SAAK,aAAa;AAClB,SAAK,UAAU;GACf,SAAQ,OAAO;AACf,SAAK,SAAS;AACd,UAAM;GACN;EACD,IAAG;AAEJ,QAAM,KAAK;AACX,OAAK;CACL;CAED,MAAM,QAAuB;AAC5B,MAAI;AACH,SAAM,KAAK,SAAS,OAAO;AAC3B,SAAM,KAAK,YAAY,OAAO;EAC9B,SAAQ,QAAQ,CAEhB,UAAS;AACT,QAAK,SAAS;EACd;CACD;CAED,cAAuB;AACtB,WAAS,KAAK;CACd;CAED,AAAQ,UAAgB;AACvB,OAAK;AACL,OAAK;AACL,OAAK;CACL;;;;CAKD,IAAI,cAA2C;AAC9C,SAAO,KAAK;CACZ;;;;CAKD,IAAI,eAAuB;AAC1B,SAAO,KAAK,OAAO;CACnB;;;;CAKD,IAAI,eAAuB;AAC1B,SAAO,KAAK,OAAO;CACnB;AACD"}
@@ -1,4 +1,4 @@
1
- import { EventConnection, EventPublisherType } from "./types-Dmbp1U-6.cjs";
1
+ import { EventConnection, EventPublisherType } from "./types-Dh9Jyinx.mjs";
2
2
  import amqplib from "amqplib";
3
3
 
4
4
  //#region src/rabbitmq/RabbitMQConnection.d.ts
@@ -41,4 +41,4 @@ declare class RabbitMQConnection implements EventConnection {
41
41
  //# sourceMappingURL=RabbitMQConnection.d.ts.map
42
42
  //#endregion
43
43
  export { RabbitMQConnection, RabbitMQConnectionConfig };
44
- //# sourceMappingURL=RabbitMQConnection-Bm8VCI2R.d.cts.map
44
+ //# sourceMappingURL=RabbitMQConnection-DV9t3VYp.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RabbitMQConnection-Bm8VCI2R.d.cts","names":[],"sources":["../src/rabbitmq/RabbitMQConnection.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;;;;;yDAmBjB,QAAQ;aAoBM;WA6CF;;;;;;qBAwBI,OAAA,CAAQ"}
1
+ {"version":3,"file":"RabbitMQConnection-DV9t3VYp.d.mts","names":[],"sources":["../src/rabbitmq/RabbitMQConnection.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;;;;;yDAmBjB,QAAQ;aAoBM;WA6CF;;;;;;qBAwBI,OAAA,CAAQ"}
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require('./chunk-CUT6urMc.cjs');
2
- const require_types = require('./types-CvSMEO5z.cjs');
2
+ const require_types = require('./types-Byv8N9ma.cjs');
3
3
  const amqplib = require_chunk.__toESM(require("amqplib"));
4
4
 
5
5
  //#region src/rabbitmq/RabbitMQConnection.ts
@@ -110,4 +110,4 @@ Object.defineProperty(exports, 'RabbitMQConnection', {
110
110
  return RabbitMQConnection;
111
111
  }
112
112
  });
113
- //# sourceMappingURL=RabbitMQConnection-CjBoCd9n.cjs.map
113
+ //# sourceMappingURL=RabbitMQConnection-DmMMosT4.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"RabbitMQConnection-CjBoCd9n.cjs","names":["EventPublisherType","config: RabbitMQConnectionConfig","connectionString: string","_err: Error"],"sources":["../src/rabbitmq/RabbitMQConnection.ts"],"sourcesContent":["import amqplib from 'amqplib';\nimport type { EventConnection } from '../types';\nimport { EventPublisherType } from '../types';\n\nexport interface RabbitMQConnectionConfig {\n\turl: string;\n\texchange?: string;\n\texchangeType?: 'topic' | 'direct' | 'fanout' | 'headers';\n\texchangeOptions?: amqplib.Options.AssertExchange;\n\ttimeout?: number; // Connection timeout in milliseconds (default: 5000)\n}\n\nexport class RabbitMQConnection implements EventConnection {\n\treadonly type = EventPublisherType.RabbitMQ;\n\tprivate connection?: amqplib.ChannelModel;\n\tprivate channel?: amqplib.Channel;\n\tprivate connecting?: Promise<void>;\n\tprivate config: Required<\n\t\tPick<RabbitMQConnectionConfig, 'exchange' | 'exchangeType' | 'timeout'>\n\t> &\n\t\tRabbitMQConnectionConfig;\n\n\tconstructor(config: RabbitMQConnectionConfig) {\n\t\tthis.config = {\n\t\t\t...config,\n\t\t\texchange: config.exchange || 'geekmidas.events',\n\t\t\texchangeType: config.exchangeType || 'topic',\n\t\t\ttimeout: config.timeout ?? 5000,\n\t\t\texchangeOptions: {\n\t\t\t\tdurable: true,\n\t\t\t\t...config.exchangeOptions,\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * Create a RabbitMQConnection 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\tconnectionString: string,\n\t): Promise<RabbitMQConnection> {\n\t\tconst url = new URL(connectionString);\n\t\tconst params = url.searchParams;\n\n\t\t// Extract connection URL without query params\n\t\tconst baseUrl = `amqp://${url.username ? `${url.username}:${url.password}@` : ''}${url.host}${url.pathname}`;\n\n\t\tconst timeoutParam = params.get('timeout');\n\t\tconst config: RabbitMQConnectionConfig = {\n\t\t\turl: baseUrl,\n\t\t\texchange: params.get('exchange') || 'geekmidas.events',\n\t\t\texchangeType: (params.get('type') as any) || 'topic',\n\t\t\ttimeout: timeoutParam ? Number.parseInt(timeoutParam, 10) : undefined,\n\t\t};\n\n\t\tconst connection = new RabbitMQConnection(config);\n\t\tawait connection.connect();\n\t\treturn connection;\n\t}\n\n\tasync connect(): Promise<void> {\n\t\tif (this.channel) return;\n\n\t\t// Prevent multiple simultaneous connection attempts\n\t\tif (this.connecting) {\n\t\t\tawait this.connecting;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.connecting = (async () => {\n\t\t\ttry {\n\t\t\t\tconst connection = await amqplib.connect(this.config.url, {\n\t\t\t\t\ttimeout: this.config.timeout,\n\t\t\t\t});\n\t\t\t\tconst channel = await connection.createChannel();\n\n\t\t\t\t// Assert the exchange exists\n\t\t\t\tawait channel.assertExchange(\n\t\t\t\t\tthis.config.exchange!,\n\t\t\t\t\tthis.config.exchangeType!,\n\t\t\t\t\tthis.config.exchangeOptions,\n\t\t\t\t);\n\n\t\t\t\t// Handle connection errors\n\t\t\t\tconnection.on('error', (_err: Error) => {\n\t\t\t\t\tthis.cleanup();\n\t\t\t\t});\n\n\t\t\t\tconnection.on('close', () => {\n\t\t\t\t\tthis.cleanup();\n\t\t\t\t});\n\n\t\t\t\t// Only set after successful setup\n\t\t\t\tthis.connection = connection;\n\t\t\t\tthis.channel = channel;\n\t\t\t} catch (error) {\n\t\t\t\tthis.cleanup();\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t})();\n\n\t\tawait this.connecting;\n\t\tthis.connecting = undefined;\n\t}\n\n\tasync close(): Promise<void> {\n\t\ttry {\n\t\t\tawait this.channel?.close();\n\t\t\tawait this.connection?.close();\n\t\t} catch (_error) {\n\t\t\t// Ignore errors during close\n\t\t} finally {\n\t\t\tthis.cleanup();\n\t\t}\n\t}\n\n\tisConnected(): boolean {\n\t\treturn !!this.channel;\n\t}\n\n\tprivate cleanup(): void {\n\t\tthis.channel = undefined;\n\t\tthis.connection = undefined;\n\t\tthis.connecting = undefined;\n\t}\n\n\t/**\n\t * Get the underlying channel for publishing/subscribing\n\t */\n\tget amqpChannel(): amqplib.Channel | undefined {\n\t\treturn this.channel;\n\t}\n\n\t/**\n\t * Get the exchange name for this connection\n\t */\n\tget exchangeName(): string {\n\t\treturn this.config.exchange;\n\t}\n\n\t/**\n\t * Get the exchange type for this connection\n\t */\n\tget exchangeType(): string {\n\t\treturn this.config.exchangeType;\n\t}\n}\n"],"mappings":";;;;;AAYA,IAAa,qBAAb,MAAa,mBAA8C;CAC1D,AAAS,OAAOA,iCAAmB;CACnC,AAAQ;CACR,AAAQ;CACR,AAAQ;CACR,AAAQ;CAKR,YAAYC,QAAkC;AAC7C,OAAK,SAAS;GACb,GAAG;GACH,UAAU,OAAO,YAAY;GAC7B,cAAc,OAAO,gBAAgB;GACrC,SAAS,OAAO,WAAW;GAC3B,iBAAiB;IAChB,SAAS;IACT,GAAG,OAAO;GACV;EACD;CACD;;;;;CAMD,aAAa,qBACZC,kBAC8B;EAC9B,MAAM,MAAM,IAAI,IAAI;EACpB,MAAM,SAAS,IAAI;EAGnB,MAAM,WAAW,SAAS,IAAI,YAAY,EAAE,IAAI,SAAS,GAAG,IAAI,SAAS,KAAK,GAAG,EAAE,IAAI,KAAK,EAAE,IAAI,SAAS;EAE3G,MAAM,eAAe,OAAO,IAAI,UAAU;EAC1C,MAAMD,SAAmC;GACxC,KAAK;GACL,UAAU,OAAO,IAAI,WAAW,IAAI;GACpC,cAAe,OAAO,IAAI,OAAO,IAAY;GAC7C,SAAS,eAAe,OAAO,SAAS,cAAc,GAAG;EACzD;EAED,MAAM,aAAa,IAAI,mBAAmB;AAC1C,QAAM,WAAW,SAAS;AAC1B,SAAO;CACP;CAED,MAAM,UAAyB;AAC9B,MAAI,KAAK,QAAS;AAGlB,MAAI,KAAK,YAAY;AACpB,SAAM,KAAK;AACX;EACA;AAED,OAAK,aAAa,CAAC,YAAY;AAC9B,OAAI;IACH,MAAM,aAAa,MAAM,gBAAQ,QAAQ,KAAK,OAAO,KAAK,EACzD,SAAS,KAAK,OAAO,QACrB,EAAC;IACF,MAAM,UAAU,MAAM,WAAW,eAAe;AAGhD,UAAM,QAAQ,eACb,KAAK,OAAO,UACZ,KAAK,OAAO,cACZ,KAAK,OAAO,gBACZ;AAGD,eAAW,GAAG,SAAS,CAACE,SAAgB;AACvC,UAAK,SAAS;IACd,EAAC;AAEF,eAAW,GAAG,SAAS,MAAM;AAC5B,UAAK,SAAS;IACd,EAAC;AAGF,SAAK,aAAa;AAClB,SAAK,UAAU;GACf,SAAQ,OAAO;AACf,SAAK,SAAS;AACd,UAAM;GACN;EACD,IAAG;AAEJ,QAAM,KAAK;AACX,OAAK;CACL;CAED,MAAM,QAAuB;AAC5B,MAAI;AACH,SAAM,KAAK,SAAS,OAAO;AAC3B,SAAM,KAAK,YAAY,OAAO;EAC9B,SAAQ,QAAQ,CAEhB,UAAS;AACT,QAAK,SAAS;EACd;CACD;CAED,cAAuB;AACtB,WAAS,KAAK;CACd;CAED,AAAQ,UAAgB;AACvB,OAAK;AACL,OAAK;AACL,OAAK;CACL;;;;CAKD,IAAI,cAA2C;AAC9C,SAAO,KAAK;CACZ;;;;CAKD,IAAI,eAAuB;AAC1B,SAAO,KAAK,OAAO;CACnB;;;;CAKD,IAAI,eAAuB;AAC1B,SAAO,KAAK,OAAO;CACnB;AACD"}
1
+ {"version":3,"file":"RabbitMQConnection-DmMMosT4.cjs","names":["EventPublisherType","config: RabbitMQConnectionConfig","connectionString: string","_err: Error"],"sources":["../src/rabbitmq/RabbitMQConnection.ts"],"sourcesContent":["import amqplib from 'amqplib';\nimport type { EventConnection } from '../types';\nimport { EventPublisherType } from '../types';\n\nexport interface RabbitMQConnectionConfig {\n\turl: string;\n\texchange?: string;\n\texchangeType?: 'topic' | 'direct' | 'fanout' | 'headers';\n\texchangeOptions?: amqplib.Options.AssertExchange;\n\ttimeout?: number; // Connection timeout in milliseconds (default: 5000)\n}\n\nexport class RabbitMQConnection implements EventConnection {\n\treadonly type = EventPublisherType.RabbitMQ;\n\tprivate connection?: amqplib.ChannelModel;\n\tprivate channel?: amqplib.Channel;\n\tprivate connecting?: Promise<void>;\n\tprivate config: Required<\n\t\tPick<RabbitMQConnectionConfig, 'exchange' | 'exchangeType' | 'timeout'>\n\t> &\n\t\tRabbitMQConnectionConfig;\n\n\tconstructor(config: RabbitMQConnectionConfig) {\n\t\tthis.config = {\n\t\t\t...config,\n\t\t\texchange: config.exchange || 'geekmidas.events',\n\t\t\texchangeType: config.exchangeType || 'topic',\n\t\t\ttimeout: config.timeout ?? 5000,\n\t\t\texchangeOptions: {\n\t\t\t\tdurable: true,\n\t\t\t\t...config.exchangeOptions,\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * Create a RabbitMQConnection 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\tconnectionString: string,\n\t): Promise<RabbitMQConnection> {\n\t\tconst url = new URL(connectionString);\n\t\tconst params = url.searchParams;\n\n\t\t// Extract connection URL without query params\n\t\tconst baseUrl = `amqp://${url.username ? `${url.username}:${url.password}@` : ''}${url.host}${url.pathname}`;\n\n\t\tconst timeoutParam = params.get('timeout');\n\t\tconst config: RabbitMQConnectionConfig = {\n\t\t\turl: baseUrl,\n\t\t\texchange: params.get('exchange') || 'geekmidas.events',\n\t\t\texchangeType: (params.get('type') as any) || 'topic',\n\t\t\ttimeout: timeoutParam ? Number.parseInt(timeoutParam, 10) : undefined,\n\t\t};\n\n\t\tconst connection = new RabbitMQConnection(config);\n\t\tawait connection.connect();\n\t\treturn connection;\n\t}\n\n\tasync connect(): Promise<void> {\n\t\tif (this.channel) return;\n\n\t\t// Prevent multiple simultaneous connection attempts\n\t\tif (this.connecting) {\n\t\t\tawait this.connecting;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.connecting = (async () => {\n\t\t\ttry {\n\t\t\t\tconst connection = await amqplib.connect(this.config.url, {\n\t\t\t\t\ttimeout: this.config.timeout,\n\t\t\t\t});\n\t\t\t\tconst channel = await connection.createChannel();\n\n\t\t\t\t// Assert the exchange exists\n\t\t\t\tawait channel.assertExchange(\n\t\t\t\t\tthis.config.exchange!,\n\t\t\t\t\tthis.config.exchangeType!,\n\t\t\t\t\tthis.config.exchangeOptions,\n\t\t\t\t);\n\n\t\t\t\t// Handle connection errors\n\t\t\t\tconnection.on('error', (_err: Error) => {\n\t\t\t\t\tthis.cleanup();\n\t\t\t\t});\n\n\t\t\t\tconnection.on('close', () => {\n\t\t\t\t\tthis.cleanup();\n\t\t\t\t});\n\n\t\t\t\t// Only set after successful setup\n\t\t\t\tthis.connection = connection;\n\t\t\t\tthis.channel = channel;\n\t\t\t} catch (error) {\n\t\t\t\tthis.cleanup();\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t})();\n\n\t\tawait this.connecting;\n\t\tthis.connecting = undefined;\n\t}\n\n\tasync close(): Promise<void> {\n\t\ttry {\n\t\t\tawait this.channel?.close();\n\t\t\tawait this.connection?.close();\n\t\t} catch (_error) {\n\t\t\t// Ignore errors during close\n\t\t} finally {\n\t\t\tthis.cleanup();\n\t\t}\n\t}\n\n\tisConnected(): boolean {\n\t\treturn !!this.channel;\n\t}\n\n\tprivate cleanup(): void {\n\t\tthis.channel = undefined;\n\t\tthis.connection = undefined;\n\t\tthis.connecting = undefined;\n\t}\n\n\t/**\n\t * Get the underlying channel for publishing/subscribing\n\t */\n\tget amqpChannel(): amqplib.Channel | undefined {\n\t\treturn this.channel;\n\t}\n\n\t/**\n\t * Get the exchange name for this connection\n\t */\n\tget exchangeName(): string {\n\t\treturn this.config.exchange;\n\t}\n\n\t/**\n\t * Get the exchange type for this connection\n\t */\n\tget exchangeType(): string {\n\t\treturn this.config.exchangeType;\n\t}\n}\n"],"mappings":";;;;;AAYA,IAAa,qBAAb,MAAa,mBAA8C;CAC1D,AAAS,OAAOA,iCAAmB;CACnC,AAAQ;CACR,AAAQ;CACR,AAAQ;CACR,AAAQ;CAKR,YAAYC,QAAkC;AAC7C,OAAK,SAAS;GACb,GAAG;GACH,UAAU,OAAO,YAAY;GAC7B,cAAc,OAAO,gBAAgB;GACrC,SAAS,OAAO,WAAW;GAC3B,iBAAiB;IAChB,SAAS;IACT,GAAG,OAAO;GACV;EACD;CACD;;;;;CAMD,aAAa,qBACZC,kBAC8B;EAC9B,MAAM,MAAM,IAAI,IAAI;EACpB,MAAM,SAAS,IAAI;EAGnB,MAAM,WAAW,SAAS,IAAI,YAAY,EAAE,IAAI,SAAS,GAAG,IAAI,SAAS,KAAK,GAAG,EAAE,IAAI,KAAK,EAAE,IAAI,SAAS;EAE3G,MAAM,eAAe,OAAO,IAAI,UAAU;EAC1C,MAAMD,SAAmC;GACxC,KAAK;GACL,UAAU,OAAO,IAAI,WAAW,IAAI;GACpC,cAAe,OAAO,IAAI,OAAO,IAAY;GAC7C,SAAS,eAAe,OAAO,SAAS,cAAc,GAAG;EACzD;EAED,MAAM,aAAa,IAAI,mBAAmB;AAC1C,QAAM,WAAW,SAAS;AAC1B,SAAO;CACP;CAED,MAAM,UAAyB;AAC9B,MAAI,KAAK,QAAS;AAGlB,MAAI,KAAK,YAAY;AACpB,SAAM,KAAK;AACX;EACA;AAED,OAAK,aAAa,CAAC,YAAY;AAC9B,OAAI;IACH,MAAM,aAAa,MAAM,gBAAQ,QAAQ,KAAK,OAAO,KAAK,EACzD,SAAS,KAAK,OAAO,QACrB,EAAC;IACF,MAAM,UAAU,MAAM,WAAW,eAAe;AAGhD,UAAM,QAAQ,eACb,KAAK,OAAO,UACZ,KAAK,OAAO,cACZ,KAAK,OAAO,gBACZ;AAGD,eAAW,GAAG,SAAS,CAACE,SAAgB;AACvC,UAAK,SAAS;IACd,EAAC;AAEF,eAAW,GAAG,SAAS,MAAM;AAC5B,UAAK,SAAS;IACd,EAAC;AAGF,SAAK,aAAa;AAClB,SAAK,UAAU;GACf,SAAQ,OAAO;AACf,SAAK,SAAS;AACd,UAAM;GACN;EACD,IAAG;AAEJ,QAAM,KAAK;AACX,OAAK;CACL;CAED,MAAM,QAAuB;AAC5B,MAAI;AACH,SAAM,KAAK,SAAS,OAAO;AAC3B,SAAM,KAAK,YAAY,OAAO;EAC9B,SAAQ,QAAQ,CAEhB,UAAS;AACT,QAAK,SAAS;EACd;CACD;CAED,cAAuB;AACtB,WAAS,KAAK;CACd;CAED,AAAQ,UAAgB;AACvB,OAAK;AACL,OAAK;AACL,OAAK;CACL;;;;CAKD,IAAI,cAA2C;AAC9C,SAAO,KAAK;CACZ;;;;CAKD,IAAI,eAAuB;AAC1B,SAAO,KAAK,OAAO;CACnB;;;;CAKD,IAAI,eAAuB;AAC1B,SAAO,KAAK,OAAO;CACnB;AACD"}
@@ -1,4 +1,4 @@
1
- import { EventConnection, EventPublisherType } from "./types-DSVsPgKd.mjs";
1
+ import { EventConnection, EventPublisherType } from "./types-Dj23od3e.cjs";
2
2
  import amqplib from "amqplib";
3
3
 
4
4
  //#region src/rabbitmq/RabbitMQConnection.d.ts
@@ -41,4 +41,4 @@ declare class RabbitMQConnection implements EventConnection {
41
41
  //# sourceMappingURL=RabbitMQConnection.d.ts.map
42
42
  //#endregion
43
43
  export { RabbitMQConnection, RabbitMQConnectionConfig };
44
- //# sourceMappingURL=RabbitMQConnection-Ck-ktCp_.d.mts.map
44
+ //# sourceMappingURL=RabbitMQConnection-jNME_eR7.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RabbitMQConnection-Ck-ktCp_.d.mts","names":[],"sources":["../src/rabbitmq/RabbitMQConnection.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;;;;;yDAmBjB,QAAQ;aAoBM;WA6CF;;;;;;qBAwBI,OAAA,CAAQ"}
1
+ {"version":3,"file":"RabbitMQConnection-jNME_eR7.d.cts","names":[],"sources":["../src/rabbitmq/RabbitMQConnection.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;;;;;yDAmBjB,QAAQ;aAoBM;WA6CF;;;;;;qBAwBI,OAAA,CAAQ"}
@@ -1,5 +1,5 @@
1
- import { EventPublisher, PublishableMessage } from "./types-DSVsPgKd.mjs";
2
- import { RabbitMQConnection } from "./RabbitMQConnection-Ck-ktCp_.mjs";
1
+ import { EventPublisher, PublishableMessage } from "./types-Dh9Jyinx.mjs";
2
+ import { RabbitMQConnection } from "./RabbitMQConnection-DV9t3VYp.mjs";
3
3
  import amqplib from "amqplib";
4
4
 
5
5
  //#region src/rabbitmq/RabbitMQPublisher.d.ts
@@ -22,4 +22,4 @@ declare class RabbitMQPublisher<TMessage extends PublishableMessage<string, any>
22
22
 
23
23
  //#endregion
24
24
  export { RabbitMQPublisher, RabbitMQPublisherOptions };
25
- //# sourceMappingURL=RabbitMQPublisher-COnxcWEZ.d.mts.map
25
+ //# sourceMappingURL=RabbitMQPublisher-DKmgwqVj.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RabbitMQPublisher-COnxcWEZ.d.mts","names":[],"sources":["../src/rabbitmq/RabbitMQPublisher.ts"],"sourcesContent":[],"mappings":";;;;;UAIiB,wBAAA;mBACC,OAAA,CAAQ,OAAA,CAAQ;AADlC;AAIa,cAAA,iBAAiB,CAAA,iBAAkB,kBAAlB,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,YAClB,cADkB,CACH,QADG,CAAA,CAAA;EAAA,QAAA,UAAA;EAAA,QAAkB,OAAA;EAAkB,WACvC,CAAA,UAAA,EAGL,kBAHK,EAAA,OAAA,CAAA,EAIR,wBAJQ;EAAQ;;;;EAa6B,OAA1B,oBAAA,CAAA,iBADnB,kBACmB,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,EAAR,OAAQ,CAAA,iBAAA,CAAkB,QAAlB,CAAA,CAAA;EAAiB,OAAzB,CAAA,QAAA,EAOL,QAPK,EAAA,CAAA,EAOQ,OAPR,CAAA,IAAA,CAAA;EAAO,KAOZ,CAAA,CAAA,EAiCT,OAjCS,CAAA,IAAA,CAAA"}
1
+ {"version":3,"file":"RabbitMQPublisher-DKmgwqVj.d.mts","names":[],"sources":["../src/rabbitmq/RabbitMQPublisher.ts"],"sourcesContent":[],"mappings":";;;;;UAIiB,wBAAA;mBACC,OAAA,CAAQ,OAAA,CAAQ;AADlC;AAIa,cAAA,iBAAiB,CAAA,iBAAkB,kBAAlB,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,YAClB,cADkB,CACH,QADG,CAAA,CAAA;EAAA,QAAA,UAAA;EAAA,QAAkB,OAAA;EAAkB,WACvC,CAAA,UAAA,EAGL,kBAHK,EAAA,OAAA,CAAA,EAIR,wBAJQ;EAAQ;;;;EAa6B,OAA1B,oBAAA,CAAA,iBADnB,kBACmB,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,EAAR,OAAQ,CAAA,iBAAA,CAAkB,QAAlB,CAAA,CAAA;EAAiB,OAAzB,CAAA,QAAA,EAOL,QAPK,EAAA,CAAA,EAOQ,OAPR,CAAA,IAAA,CAAA;EAAO,KAOZ,CAAA,CAAA,EAiCT,OAjCS,CAAA,IAAA,CAAA"}
@@ -1,5 +1,5 @@
1
- import { EventPublisher, PublishableMessage } from "./types-Dmbp1U-6.cjs";
2
- import { RabbitMQConnection } from "./RabbitMQConnection-Bm8VCI2R.cjs";
1
+ import { EventPublisher, PublishableMessage } from "./types-Dj23od3e.cjs";
2
+ import { RabbitMQConnection } from "./RabbitMQConnection-jNME_eR7.cjs";
3
3
  import amqplib from "amqplib";
4
4
 
5
5
  //#region src/rabbitmq/RabbitMQPublisher.d.ts
@@ -22,4 +22,4 @@ declare class RabbitMQPublisher<TMessage extends PublishableMessage<string, any>
22
22
 
23
23
  //#endregion
24
24
  export { RabbitMQPublisher, RabbitMQPublisherOptions };
25
- //# sourceMappingURL=RabbitMQPublisher-qQT7-1-p.d.cts.map
25
+ //# sourceMappingURL=RabbitMQPublisher-d257OHLa.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RabbitMQPublisher-qQT7-1-p.d.cts","names":[],"sources":["../src/rabbitmq/RabbitMQPublisher.ts"],"sourcesContent":[],"mappings":";;;;;UAIiB,wBAAA;mBACC,OAAA,CAAQ,OAAA,CAAQ;AADlC;AAIa,cAAA,iBAAiB,CAAA,iBAAkB,kBAAlB,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,YAClB,cADkB,CACH,QADG,CAAA,CAAA;EAAA,QAAA,UAAA;EAAA,QAAkB,OAAA;EAAkB,WACvC,CAAA,UAAA,EAGL,kBAHK,EAAA,OAAA,CAAA,EAIR,wBAJQ;EAAQ;;;;EAa6B,OAA1B,oBAAA,CAAA,iBADnB,kBACmB,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,EAAR,OAAQ,CAAA,iBAAA,CAAkB,QAAlB,CAAA,CAAA;EAAiB,OAAzB,CAAA,QAAA,EAOL,QAPK,EAAA,CAAA,EAOQ,OAPR,CAAA,IAAA,CAAA;EAAO,KAOZ,CAAA,CAAA,EAiCT,OAjCS,CAAA,IAAA,CAAA"}
1
+ {"version":3,"file":"RabbitMQPublisher-d257OHLa.d.cts","names":[],"sources":["../src/rabbitmq/RabbitMQPublisher.ts"],"sourcesContent":[],"mappings":";;;;;UAIiB,wBAAA;mBACC,OAAA,CAAQ,OAAA,CAAQ;AADlC;AAIa,cAAA,iBAAiB,CAAA,iBAAkB,kBAAlB,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,YAClB,cADkB,CACH,QADG,CAAA,CAAA;EAAA,QAAA,UAAA;EAAA,QAAkB,OAAA;EAAkB,WACvC,CAAA,UAAA,EAGL,kBAHK,EAAA,OAAA,CAAA,EAIR,wBAJQ;EAAQ;;;;EAa6B,OAA1B,oBAAA,CAAA,iBADnB,kBACmB,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,EAAR,OAAQ,CAAA,iBAAA,CAAkB,QAAlB,CAAA,CAAA;EAAiB,OAAzB,CAAA,QAAA,EAOL,QAPK,EAAA,CAAA,EAOQ,OAPR,CAAA,IAAA,CAAA;EAAO,KAOZ,CAAA,CAAA,EAiCT,OAjCS,CAAA,IAAA,CAAA"}
@@ -1,5 +1,5 @@
1
- import { EventSubscriber, PublishableMessage } from "./types-DSVsPgKd.mjs";
2
- import { RabbitMQConnection } from "./RabbitMQConnection-Ck-ktCp_.mjs";
1
+ import { EventSubscriber, PublishableMessage } from "./types-Dj23od3e.cjs";
2
+ import { RabbitMQConnection } from "./RabbitMQConnection-jNME_eR7.cjs";
3
3
  import amqplib from "amqplib";
4
4
 
5
5
  //#region src/rabbitmq/RabbitMQSubscriber.d.ts
@@ -24,4 +24,4 @@ declare class RabbitMQSubscriber<TMessage extends PublishableMessage<string, any
24
24
 
25
25
  //#endregion
26
26
  export { RabbitMQSubscriber, RabbitMQSubscriberOptions };
27
- //# sourceMappingURL=RabbitMQSubscriber-C_sZjDPU.d.mts.map
27
+ //# sourceMappingURL=RabbitMQSubscriber-BF7JGfYm.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RabbitMQSubscriber-C_sZjDPU.d.mts","names":[],"sources":["../src/rabbitmq/RabbitMQSubscriber.ts"],"sourcesContent":[],"mappings":";;;;;UAIiB,yBAAA;;EAAA,YAAA,CAAA,EAED,OAAA,CAAQ,OAAA,CAAQ,WAFU;EAAA,cAAA,CAAA,EAGxB,OAAA,CAAQ,OAAA,CAAQ,OAHQ;EAAA,QAE1B,CAAA,EAAQ,MAAA;;AACiB,cAI5B,kBAJ4B,CAAA,iBAKvB,kBALuB,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,YAM5B,eAN4B,CAMZ,QANY,CAAA,CAAA;EAI5B,QAAA,UAAA;EAAkB,QAAA,OAAA;EAAA,WACb,CAAA,UAAA,EAII,kBAJJ,EAAA,OAAA,CAAA,EAKC,yBALD;EAAkB;;;;EAaC,OACoB,oBAAA,CAAA,iBADtC,kBACsC,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,EAA3B,OAA2B,CAAnB,kBAAmB,CAAA,QAAA,CAAA,CAAA;EAAQ,SAA3B,CAAA,QAAA,EAmB1B,QAnB0B,CAAA,MAAA,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,OAAA,EAoBhB,QApBgB,EAAA,GAoBH,OApBG,CAAA,IAAA,CAAA,CAAA,EAqBlC,OArBkC,CAAA,IAAA,CAAA"}
1
+ {"version":3,"file":"RabbitMQSubscriber-BF7JGfYm.d.cts","names":[],"sources":["../src/rabbitmq/RabbitMQSubscriber.ts"],"sourcesContent":[],"mappings":";;;;;UAIiB,yBAAA;;EAAA,YAAA,CAAA,EAED,OAAA,CAAQ,OAAA,CAAQ,WAFU;EAAA,cAAA,CAAA,EAGxB,OAAA,CAAQ,OAAA,CAAQ,OAHQ;EAAA,QAE1B,CAAA,EAAQ,MAAA;;AACiB,cAI5B,kBAJ4B,CAAA,iBAKvB,kBALuB,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,YAM5B,eAN4B,CAMZ,QANY,CAAA,CAAA;EAI5B,QAAA,UAAA;EAAkB,QAAA,OAAA;EAAA,WACb,CAAA,UAAA,EAII,kBAJJ,EAAA,OAAA,CAAA,EAKC,yBALD;EAAkB;;;;EAaC,OACoB,oBAAA,CAAA,iBADtC,kBACsC,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,EAA3B,OAA2B,CAAnB,kBAAmB,CAAA,QAAA,CAAA,CAAA;EAAQ,SAA3B,CAAA,QAAA,EAmB1B,QAnB0B,CAAA,MAAA,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,OAAA,EAoBhB,QApBgB,EAAA,GAoBH,OApBG,CAAA,IAAA,CAAA,CAAA,EAqBlC,OArBkC,CAAA,IAAA,CAAA"}
@@ -1,5 +1,5 @@
1
- import { EventSubscriber, PublishableMessage } from "./types-Dmbp1U-6.cjs";
2
- import { RabbitMQConnection } from "./RabbitMQConnection-Bm8VCI2R.cjs";
1
+ import { EventSubscriber, PublishableMessage } from "./types-Dh9Jyinx.mjs";
2
+ import { RabbitMQConnection } from "./RabbitMQConnection-DV9t3VYp.mjs";
3
3
  import amqplib from "amqplib";
4
4
 
5
5
  //#region src/rabbitmq/RabbitMQSubscriber.d.ts
@@ -24,4 +24,4 @@ declare class RabbitMQSubscriber<TMessage extends PublishableMessage<string, any
24
24
 
25
25
  //#endregion
26
26
  export { RabbitMQSubscriber, RabbitMQSubscriberOptions };
27
- //# sourceMappingURL=RabbitMQSubscriber-D12sssMb.d.cts.map
27
+ //# sourceMappingURL=RabbitMQSubscriber-CdbUy5mB.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RabbitMQSubscriber-D12sssMb.d.cts","names":[],"sources":["../src/rabbitmq/RabbitMQSubscriber.ts"],"sourcesContent":[],"mappings":";;;;;UAIiB,yBAAA;;EAAA,YAAA,CAAA,EAED,OAAA,CAAQ,OAAA,CAAQ,WAFU;EAAA,cAAA,CAAA,EAGxB,OAAA,CAAQ,OAAA,CAAQ,OAHQ;EAAA,QAE1B,CAAA,EAAQ,MAAA;;AACiB,cAI5B,kBAJ4B,CAAA,iBAKvB,kBALuB,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,YAM5B,eAN4B,CAMZ,QANY,CAAA,CAAA;EAI5B,QAAA,UAAA;EAAkB,QAAA,OAAA;EAAA,WACb,CAAA,UAAA,EAII,kBAJJ,EAAA,OAAA,CAAA,EAKC,yBALD;EAAkB;;;;EAaC,OACoB,oBAAA,CAAA,iBADtC,kBACsC,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,EAA3B,OAA2B,CAAnB,kBAAmB,CAAA,QAAA,CAAA,CAAA;EAAQ,SAA3B,CAAA,QAAA,EAmB1B,QAnB0B,CAAA,MAAA,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,OAAA,EAoBhB,QApBgB,EAAA,GAoBH,OApBG,CAAA,IAAA,CAAA,CAAA,EAqBlC,OArBkC,CAAA,IAAA,CAAA"}
1
+ {"version":3,"file":"RabbitMQSubscriber-CdbUy5mB.d.mts","names":[],"sources":["../src/rabbitmq/RabbitMQSubscriber.ts"],"sourcesContent":[],"mappings":";;;;;UAIiB,yBAAA;;EAAA,YAAA,CAAA,EAED,OAAA,CAAQ,OAAA,CAAQ,WAFU;EAAA,cAAA,CAAA,EAGxB,OAAA,CAAQ,OAAA,CAAQ,OAHQ;EAAA,QAE1B,CAAA,EAAQ,MAAA;;AACiB,cAI5B,kBAJ4B,CAAA,iBAKvB,kBALuB,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,YAM5B,eAN4B,CAMZ,QANY,CAAA,CAAA;EAI5B,QAAA,UAAA;EAAkB,QAAA,OAAA;EAAA,WACb,CAAA,UAAA,EAII,kBAJJ,EAAA,OAAA,CAAA,EAKC,yBALD;EAAkB;;;;EAaC,OACoB,oBAAA,CAAA,iBADtC,kBACsC,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,EAA3B,OAA2B,CAAnB,kBAAmB,CAAA,QAAA,CAAA,CAAA;EAAQ,SAA3B,CAAA,QAAA,EAmB1B,QAnB0B,CAAA,MAAA,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,OAAA,EAoBhB,QApBgB,EAAA,GAoBH,OApBG,CAAA,IAAA,CAAA,CAAA,EAqBlC,OArBkC,CAAA,IAAA,CAAA"}
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require('./chunk-CUT6urMc.cjs');
2
- const require_types = require('./types-CvSMEO5z.cjs');
2
+ const require_types = require('./types-Byv8N9ma.cjs');
3
3
  const __aws_sdk_client_sns = require_chunk.__toESM(require("@aws-sdk/client-sns"));
4
4
 
5
5
  //#region src/sns/SNSConnection.ts
@@ -73,4 +73,4 @@ Object.defineProperty(exports, 'SNSConnection', {
73
73
  return SNSConnection;
74
74
  }
75
75
  });
76
- //# sourceMappingURL=SNSConnection-DqLbiQ_X.cjs.map
76
+ //# sourceMappingURL=SNSConnection-CAcbLQOy.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"SNSConnection-DqLbiQ_X.cjs","names":["EventPublisherType","config: SNSConnectionConfig","clientConfig: SNSClientConfig","SNSClient","connectionString: string"],"sources":["../src/sns/SNSConnection.ts"],"sourcesContent":["import { SNSClient, type SNSClientConfig } from '@aws-sdk/client-sns';\nimport type { EventConnection } from '../types';\nimport { EventPublisherType } from '../types';\n\nexport interface SNSConnectionConfig {\n\ttopicArn: string;\n\tregion?: string;\n\tendpoint?: string; // Custom endpoint (e.g., for LocalStack)\n\tcredentials?: {\n\t\taccessKeyId: string;\n\t\tsecretAccessKey: string;\n\t\tsessionToken?: string;\n\t};\n}\n\nexport class SNSConnection implements EventConnection {\n\treadonly type = EventPublisherType.SNS;\n\tprivate client: SNSClient;\n\tprivate connected = false;\n\tprivate config: SNSConnectionConfig;\n\n\tconstructor(config: SNSConnectionConfig) {\n\t\tthis.config = config;\n\n\t\tconst clientConfig: SNSClientConfig = {\n\t\t\tregion: config.region,\n\t\t\tendpoint: config.endpoint,\n\t\t\tcredentials: config.credentials,\n\t\t};\n\n\t\tthis.client = new SNSClient(clientConfig);\n\t}\n\n\t/**\n\t * Create an SNSConnection from a connection string\n\t * Format: sns://?topicArn=arn:aws:sns:region:account:topic&region=us-east-1&endpoint=http://localhost:4566\n\t */\n\tstatic async fromConnectionString(\n\t\tconnectionString: string,\n\t): Promise<SNSConnection> {\n\t\tconst url = new URL(connectionString);\n\t\tconst params = url.searchParams;\n\n\t\tconst topicArn = params.get('topicArn');\n\t\tif (!topicArn) {\n\t\t\tthrow new Error('topicArn parameter is required in connection string');\n\t\t}\n\n\t\tconst config: SNSConnectionConfig = {\n\t\t\ttopicArn,\n\t\t\tregion: params.get('region') || undefined,\n\t\t\tendpoint: params.get('endpoint') || undefined,\n\t\t};\n\n\t\t// Parse credentials if provided\n\t\tconst accessKeyId = params.get('accessKeyId');\n\t\tconst secretAccessKey = params.get('secretAccessKey');\n\t\tif (accessKeyId && secretAccessKey) {\n\t\t\tconfig.credentials = {\n\t\t\t\taccessKeyId,\n\t\t\t\tsecretAccessKey,\n\t\t\t\tsessionToken: params.get('sessionToken') || undefined,\n\t\t\t};\n\t\t}\n\n\t\tconst connection = new SNSConnection(config);\n\t\tawait connection.connect();\n\t\treturn connection;\n\t}\n\n\tasync connect(): Promise<void> {\n\t\t// SNS doesn't have a traditional connection, but we mark as connected\n\t\tthis.connected = true;\n\t}\n\n\tasync close(): Promise<void> {\n\t\tthis.client.destroy();\n\t\tthis.connected = false;\n\t}\n\n\tisConnected(): boolean {\n\t\treturn this.connected;\n\t}\n\n\t/**\n\t * Get the underlying SNS client\n\t */\n\tget snsClient(): SNSClient {\n\t\treturn this.client;\n\t}\n\n\t/**\n\t * Get the topic ARN for this connection\n\t */\n\tget topicArn(): string {\n\t\treturn this.config.topicArn;\n\t}\n}\n"],"mappings":";;;;;AAeA,IAAa,gBAAb,MAAa,cAAyC;CACrD,AAAS,OAAOA,iCAAmB;CACnC,AAAQ;CACR,AAAQ,YAAY;CACpB,AAAQ;CAER,YAAYC,QAA6B;AACxC,OAAK,SAAS;EAEd,MAAMC,eAAgC;GACrC,QAAQ,OAAO;GACf,UAAU,OAAO;GACjB,aAAa,OAAO;EACpB;AAED,OAAK,SAAS,IAAIC,+BAAU;CAC5B;;;;;CAMD,aAAa,qBACZC,kBACyB;EACzB,MAAM,MAAM,IAAI,IAAI;EACpB,MAAM,SAAS,IAAI;EAEnB,MAAM,WAAW,OAAO,IAAI,WAAW;AACvC,OAAK,SACJ,OAAM,IAAI,MAAM;EAGjB,MAAMH,SAA8B;GACnC;GACA,QAAQ,OAAO,IAAI,SAAS;GAC5B,UAAU,OAAO,IAAI,WAAW;EAChC;EAGD,MAAM,cAAc,OAAO,IAAI,cAAc;EAC7C,MAAM,kBAAkB,OAAO,IAAI,kBAAkB;AACrD,MAAI,eAAe,gBAClB,QAAO,cAAc;GACpB;GACA;GACA,cAAc,OAAO,IAAI,eAAe;EACxC;EAGF,MAAM,aAAa,IAAI,cAAc;AACrC,QAAM,WAAW,SAAS;AAC1B,SAAO;CACP;CAED,MAAM,UAAyB;AAE9B,OAAK,YAAY;CACjB;CAED,MAAM,QAAuB;AAC5B,OAAK,OAAO,SAAS;AACrB,OAAK,YAAY;CACjB;CAED,cAAuB;AACtB,SAAO,KAAK;CACZ;;;;CAKD,IAAI,YAAuB;AAC1B,SAAO,KAAK;CACZ;;;;CAKD,IAAI,WAAmB;AACtB,SAAO,KAAK,OAAO;CACnB;AACD"}
1
+ {"version":3,"file":"SNSConnection-CAcbLQOy.cjs","names":["EventPublisherType","config: SNSConnectionConfig","clientConfig: SNSClientConfig","SNSClient","connectionString: string"],"sources":["../src/sns/SNSConnection.ts"],"sourcesContent":["import { SNSClient, type SNSClientConfig } from '@aws-sdk/client-sns';\nimport type { EventConnection } from '../types';\nimport { EventPublisherType } from '../types';\n\nexport interface SNSConnectionConfig {\n\ttopicArn: string;\n\tregion?: string;\n\tendpoint?: string; // Custom endpoint (e.g., for LocalStack)\n\tcredentials?: {\n\t\taccessKeyId: string;\n\t\tsecretAccessKey: string;\n\t\tsessionToken?: string;\n\t};\n}\n\nexport class SNSConnection implements EventConnection {\n\treadonly type = EventPublisherType.SNS;\n\tprivate client: SNSClient;\n\tprivate connected = false;\n\tprivate config: SNSConnectionConfig;\n\n\tconstructor(config: SNSConnectionConfig) {\n\t\tthis.config = config;\n\n\t\tconst clientConfig: SNSClientConfig = {\n\t\t\tregion: config.region,\n\t\t\tendpoint: config.endpoint,\n\t\t\tcredentials: config.credentials,\n\t\t};\n\n\t\tthis.client = new SNSClient(clientConfig);\n\t}\n\n\t/**\n\t * Create an SNSConnection from a connection string\n\t * Format: sns://?topicArn=arn:aws:sns:region:account:topic&region=us-east-1&endpoint=http://localhost:4566\n\t */\n\tstatic async fromConnectionString(\n\t\tconnectionString: string,\n\t): Promise<SNSConnection> {\n\t\tconst url = new URL(connectionString);\n\t\tconst params = url.searchParams;\n\n\t\tconst topicArn = params.get('topicArn');\n\t\tif (!topicArn) {\n\t\t\tthrow new Error('topicArn parameter is required in connection string');\n\t\t}\n\n\t\tconst config: SNSConnectionConfig = {\n\t\t\ttopicArn,\n\t\t\tregion: params.get('region') || undefined,\n\t\t\tendpoint: params.get('endpoint') || undefined,\n\t\t};\n\n\t\t// Parse credentials if provided\n\t\tconst accessKeyId = params.get('accessKeyId');\n\t\tconst secretAccessKey = params.get('secretAccessKey');\n\t\tif (accessKeyId && secretAccessKey) {\n\t\t\tconfig.credentials = {\n\t\t\t\taccessKeyId,\n\t\t\t\tsecretAccessKey,\n\t\t\t\tsessionToken: params.get('sessionToken') || undefined,\n\t\t\t};\n\t\t}\n\n\t\tconst connection = new SNSConnection(config);\n\t\tawait connection.connect();\n\t\treturn connection;\n\t}\n\n\tasync connect(): Promise<void> {\n\t\t// SNS doesn't have a traditional connection, but we mark as connected\n\t\tthis.connected = true;\n\t}\n\n\tasync close(): Promise<void> {\n\t\tthis.client.destroy();\n\t\tthis.connected = false;\n\t}\n\n\tisConnected(): boolean {\n\t\treturn this.connected;\n\t}\n\n\t/**\n\t * Get the underlying SNS client\n\t */\n\tget snsClient(): SNSClient {\n\t\treturn this.client;\n\t}\n\n\t/**\n\t * Get the topic ARN for this connection\n\t */\n\tget topicArn(): string {\n\t\treturn this.config.topicArn;\n\t}\n}\n"],"mappings":";;;;;AAeA,IAAa,gBAAb,MAAa,cAAyC;CACrD,AAAS,OAAOA,iCAAmB;CACnC,AAAQ;CACR,AAAQ,YAAY;CACpB,AAAQ;CAER,YAAYC,QAA6B;AACxC,OAAK,SAAS;EAEd,MAAMC,eAAgC;GACrC,QAAQ,OAAO;GACf,UAAU,OAAO;GACjB,aAAa,OAAO;EACpB;AAED,OAAK,SAAS,IAAIC,+BAAU;CAC5B;;;;;CAMD,aAAa,qBACZC,kBACyB;EACzB,MAAM,MAAM,IAAI,IAAI;EACpB,MAAM,SAAS,IAAI;EAEnB,MAAM,WAAW,OAAO,IAAI,WAAW;AACvC,OAAK,SACJ,OAAM,IAAI,MAAM;EAGjB,MAAMH,SAA8B;GACnC;GACA,QAAQ,OAAO,IAAI,SAAS;GAC5B,UAAU,OAAO,IAAI,WAAW;EAChC;EAGD,MAAM,cAAc,OAAO,IAAI,cAAc;EAC7C,MAAM,kBAAkB,OAAO,IAAI,kBAAkB;AACrD,MAAI,eAAe,gBAClB,QAAO,cAAc;GACpB;GACA;GACA,cAAc,OAAO,IAAI,eAAe;EACxC;EAGF,MAAM,aAAa,IAAI,cAAc;AACrC,QAAM,WAAW,SAAS;AAC1B,SAAO;CACP;CAED,MAAM,UAAyB;AAE9B,OAAK,YAAY;CACjB;CAED,MAAM,QAAuB;AAC5B,OAAK,OAAO,SAAS;AACrB,OAAK,YAAY;CACjB;CAED,cAAuB;AACtB,SAAO,KAAK;CACZ;;;;CAKD,IAAI,YAAuB;AAC1B,SAAO,KAAK;CACZ;;;;CAKD,IAAI,WAAmB;AACtB,SAAO,KAAK,OAAO;CACnB;AACD"}
@@ -1,4 +1,4 @@
1
- import { EventConnection, EventPublisherType } from "./types-Dmbp1U-6.cjs";
1
+ import { EventConnection, EventPublisherType } from "./types-Dh9Jyinx.mjs";
2
2
  import { SNSClient } from "@aws-sdk/client-sns";
3
3
 
4
4
  //#region src/sns/SNSConnection.d.ts
@@ -38,4 +38,4 @@ declare class SNSConnection implements EventConnection {
38
38
  //# sourceMappingURL=SNSConnection.d.ts.map
39
39
  //#endregion
40
40
  export { SNSConnection, SNSConnectionConfig };
41
- //# sourceMappingURL=SNSConnection-BDfQrVBO.d.cts.map
41
+ //# sourceMappingURL=SNSConnection-CG4iEwA8.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SNSConnection-BDfQrVBO.d.cts","names":[],"sources":["../src/sns/SNSConnection.ts"],"sourcesContent":[],"mappings":";;;;UAIiB,mBAAA;EAAA,QAAA,EAAA,MAAA;EAWJ,MAAA,CAAA,EAAA,MAAA;EAAc,QAAA,CAAA,EAAA,MAAA;EAAA,WACb,CAAA,EAAA;IAKO,WAAA,EAAA,MAAA;IAkBT,eAAA,EAAA,MAAA;IAAR,YAAA,CAAA,EAAA,MAAA;EAAO,CAAA;;AAgDO,cAxEL,aAAA,YAAyB,eAwEpB,CAAA;EAAS,SAxEW,IAAA,GACxB,kBAAA,CAAA,GAAA;EADuC,QAAA,MAAA;;;sBAMhC;;;;;yDAkBjB,QAAQ;aA+BM;WAKF;;;;;mBAYE"}
1
+ {"version":3,"file":"SNSConnection-CG4iEwA8.d.mts","names":[],"sources":["../src/sns/SNSConnection.ts"],"sourcesContent":[],"mappings":";;;;UAIiB,mBAAA;EAAA,QAAA,EAAA,MAAA;EAWJ,MAAA,CAAA,EAAA,MAAA;EAAc,QAAA,CAAA,EAAA,MAAA;EAAA,WACb,CAAA,EAAA;IAKO,WAAA,EAAA,MAAA;IAkBT,eAAA,EAAA,MAAA;IAAR,YAAA,CAAA,EAAA,MAAA;EAAO,CAAA;;AAgDO,cAxEL,aAAA,YAAyB,eAwEpB,CAAA;EAAS,SAxEW,IAAA,GACxB,kBAAA,CAAA,GAAA;EADuC,QAAA,MAAA;;;sBAMhC;;;;;yDAkBjB,QAAQ;aA+BM;WAKF;;;;;mBAYE"}
@@ -1,4 +1,4 @@
1
- import { EventPublisherType } from "./types-B63qHVOG.mjs";
1
+ import { EventPublisherType } from "./types-BrdcSEnd.mjs";
2
2
  import { SNSClient } from "@aws-sdk/client-sns";
3
3
 
4
4
  //#region src/sns/SNSConnection.ts
@@ -67,4 +67,4 @@ var SNSConnection = class SNSConnection {
67
67
 
68
68
  //#endregion
69
69
  export { SNSConnection };
70
- //# sourceMappingURL=SNSConnection-D8a31sJK.mjs.map
70
+ //# sourceMappingURL=SNSConnection-CVjH93lb.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"SNSConnection-D8a31sJK.mjs","names":["config: SNSConnectionConfig","clientConfig: SNSClientConfig","connectionString: string"],"sources":["../src/sns/SNSConnection.ts"],"sourcesContent":["import { SNSClient, type SNSClientConfig } from '@aws-sdk/client-sns';\nimport type { EventConnection } from '../types';\nimport { EventPublisherType } from '../types';\n\nexport interface SNSConnectionConfig {\n\ttopicArn: string;\n\tregion?: string;\n\tendpoint?: string; // Custom endpoint (e.g., for LocalStack)\n\tcredentials?: {\n\t\taccessKeyId: string;\n\t\tsecretAccessKey: string;\n\t\tsessionToken?: string;\n\t};\n}\n\nexport class SNSConnection implements EventConnection {\n\treadonly type = EventPublisherType.SNS;\n\tprivate client: SNSClient;\n\tprivate connected = false;\n\tprivate config: SNSConnectionConfig;\n\n\tconstructor(config: SNSConnectionConfig) {\n\t\tthis.config = config;\n\n\t\tconst clientConfig: SNSClientConfig = {\n\t\t\tregion: config.region,\n\t\t\tendpoint: config.endpoint,\n\t\t\tcredentials: config.credentials,\n\t\t};\n\n\t\tthis.client = new SNSClient(clientConfig);\n\t}\n\n\t/**\n\t * Create an SNSConnection from a connection string\n\t * Format: sns://?topicArn=arn:aws:sns:region:account:topic&region=us-east-1&endpoint=http://localhost:4566\n\t */\n\tstatic async fromConnectionString(\n\t\tconnectionString: string,\n\t): Promise<SNSConnection> {\n\t\tconst url = new URL(connectionString);\n\t\tconst params = url.searchParams;\n\n\t\tconst topicArn = params.get('topicArn');\n\t\tif (!topicArn) {\n\t\t\tthrow new Error('topicArn parameter is required in connection string');\n\t\t}\n\n\t\tconst config: SNSConnectionConfig = {\n\t\t\ttopicArn,\n\t\t\tregion: params.get('region') || undefined,\n\t\t\tendpoint: params.get('endpoint') || undefined,\n\t\t};\n\n\t\t// Parse credentials if provided\n\t\tconst accessKeyId = params.get('accessKeyId');\n\t\tconst secretAccessKey = params.get('secretAccessKey');\n\t\tif (accessKeyId && secretAccessKey) {\n\t\t\tconfig.credentials = {\n\t\t\t\taccessKeyId,\n\t\t\t\tsecretAccessKey,\n\t\t\t\tsessionToken: params.get('sessionToken') || undefined,\n\t\t\t};\n\t\t}\n\n\t\tconst connection = new SNSConnection(config);\n\t\tawait connection.connect();\n\t\treturn connection;\n\t}\n\n\tasync connect(): Promise<void> {\n\t\t// SNS doesn't have a traditional connection, but we mark as connected\n\t\tthis.connected = true;\n\t}\n\n\tasync close(): Promise<void> {\n\t\tthis.client.destroy();\n\t\tthis.connected = false;\n\t}\n\n\tisConnected(): boolean {\n\t\treturn this.connected;\n\t}\n\n\t/**\n\t * Get the underlying SNS client\n\t */\n\tget snsClient(): SNSClient {\n\t\treturn this.client;\n\t}\n\n\t/**\n\t * Get the topic ARN for this connection\n\t */\n\tget topicArn(): string {\n\t\treturn this.config.topicArn;\n\t}\n}\n"],"mappings":";;;;AAeA,IAAa,gBAAb,MAAa,cAAyC;CACrD,AAAS,OAAO,mBAAmB;CACnC,AAAQ;CACR,AAAQ,YAAY;CACpB,AAAQ;CAER,YAAYA,QAA6B;AACxC,OAAK,SAAS;EAEd,MAAMC,eAAgC;GACrC,QAAQ,OAAO;GACf,UAAU,OAAO;GACjB,aAAa,OAAO;EACpB;AAED,OAAK,SAAS,IAAI,UAAU;CAC5B;;;;;CAMD,aAAa,qBACZC,kBACyB;EACzB,MAAM,MAAM,IAAI,IAAI;EACpB,MAAM,SAAS,IAAI;EAEnB,MAAM,WAAW,OAAO,IAAI,WAAW;AACvC,OAAK,SACJ,OAAM,IAAI,MAAM;EAGjB,MAAMF,SAA8B;GACnC;GACA,QAAQ,OAAO,IAAI,SAAS;GAC5B,UAAU,OAAO,IAAI,WAAW;EAChC;EAGD,MAAM,cAAc,OAAO,IAAI,cAAc;EAC7C,MAAM,kBAAkB,OAAO,IAAI,kBAAkB;AACrD,MAAI,eAAe,gBAClB,QAAO,cAAc;GACpB;GACA;GACA,cAAc,OAAO,IAAI,eAAe;EACxC;EAGF,MAAM,aAAa,IAAI,cAAc;AACrC,QAAM,WAAW,SAAS;AAC1B,SAAO;CACP;CAED,MAAM,UAAyB;AAE9B,OAAK,YAAY;CACjB;CAED,MAAM,QAAuB;AAC5B,OAAK,OAAO,SAAS;AACrB,OAAK,YAAY;CACjB;CAED,cAAuB;AACtB,SAAO,KAAK;CACZ;;;;CAKD,IAAI,YAAuB;AAC1B,SAAO,KAAK;CACZ;;;;CAKD,IAAI,WAAmB;AACtB,SAAO,KAAK,OAAO;CACnB;AACD"}
1
+ {"version":3,"file":"SNSConnection-CVjH93lb.mjs","names":["config: SNSConnectionConfig","clientConfig: SNSClientConfig","connectionString: string"],"sources":["../src/sns/SNSConnection.ts"],"sourcesContent":["import { SNSClient, type SNSClientConfig } from '@aws-sdk/client-sns';\nimport type { EventConnection } from '../types';\nimport { EventPublisherType } from '../types';\n\nexport interface SNSConnectionConfig {\n\ttopicArn: string;\n\tregion?: string;\n\tendpoint?: string; // Custom endpoint (e.g., for LocalStack)\n\tcredentials?: {\n\t\taccessKeyId: string;\n\t\tsecretAccessKey: string;\n\t\tsessionToken?: string;\n\t};\n}\n\nexport class SNSConnection implements EventConnection {\n\treadonly type = EventPublisherType.SNS;\n\tprivate client: SNSClient;\n\tprivate connected = false;\n\tprivate config: SNSConnectionConfig;\n\n\tconstructor(config: SNSConnectionConfig) {\n\t\tthis.config = config;\n\n\t\tconst clientConfig: SNSClientConfig = {\n\t\t\tregion: config.region,\n\t\t\tendpoint: config.endpoint,\n\t\t\tcredentials: config.credentials,\n\t\t};\n\n\t\tthis.client = new SNSClient(clientConfig);\n\t}\n\n\t/**\n\t * Create an SNSConnection from a connection string\n\t * Format: sns://?topicArn=arn:aws:sns:region:account:topic&region=us-east-1&endpoint=http://localhost:4566\n\t */\n\tstatic async fromConnectionString(\n\t\tconnectionString: string,\n\t): Promise<SNSConnection> {\n\t\tconst url = new URL(connectionString);\n\t\tconst params = url.searchParams;\n\n\t\tconst topicArn = params.get('topicArn');\n\t\tif (!topicArn) {\n\t\t\tthrow new Error('topicArn parameter is required in connection string');\n\t\t}\n\n\t\tconst config: SNSConnectionConfig = {\n\t\t\ttopicArn,\n\t\t\tregion: params.get('region') || undefined,\n\t\t\tendpoint: params.get('endpoint') || undefined,\n\t\t};\n\n\t\t// Parse credentials if provided\n\t\tconst accessKeyId = params.get('accessKeyId');\n\t\tconst secretAccessKey = params.get('secretAccessKey');\n\t\tif (accessKeyId && secretAccessKey) {\n\t\t\tconfig.credentials = {\n\t\t\t\taccessKeyId,\n\t\t\t\tsecretAccessKey,\n\t\t\t\tsessionToken: params.get('sessionToken') || undefined,\n\t\t\t};\n\t\t}\n\n\t\tconst connection = new SNSConnection(config);\n\t\tawait connection.connect();\n\t\treturn connection;\n\t}\n\n\tasync connect(): Promise<void> {\n\t\t// SNS doesn't have a traditional connection, but we mark as connected\n\t\tthis.connected = true;\n\t}\n\n\tasync close(): Promise<void> {\n\t\tthis.client.destroy();\n\t\tthis.connected = false;\n\t}\n\n\tisConnected(): boolean {\n\t\treturn this.connected;\n\t}\n\n\t/**\n\t * Get the underlying SNS client\n\t */\n\tget snsClient(): SNSClient {\n\t\treturn this.client;\n\t}\n\n\t/**\n\t * Get the topic ARN for this connection\n\t */\n\tget topicArn(): string {\n\t\treturn this.config.topicArn;\n\t}\n}\n"],"mappings":";;;;AAeA,IAAa,gBAAb,MAAa,cAAyC;CACrD,AAAS,OAAO,mBAAmB;CACnC,AAAQ;CACR,AAAQ,YAAY;CACpB,AAAQ;CAER,YAAYA,QAA6B;AACxC,OAAK,SAAS;EAEd,MAAMC,eAAgC;GACrC,QAAQ,OAAO;GACf,UAAU,OAAO;GACjB,aAAa,OAAO;EACpB;AAED,OAAK,SAAS,IAAI,UAAU;CAC5B;;;;;CAMD,aAAa,qBACZC,kBACyB;EACzB,MAAM,MAAM,IAAI,IAAI;EACpB,MAAM,SAAS,IAAI;EAEnB,MAAM,WAAW,OAAO,IAAI,WAAW;AACvC,OAAK,SACJ,OAAM,IAAI,MAAM;EAGjB,MAAMF,SAA8B;GACnC;GACA,QAAQ,OAAO,IAAI,SAAS;GAC5B,UAAU,OAAO,IAAI,WAAW;EAChC;EAGD,MAAM,cAAc,OAAO,IAAI,cAAc;EAC7C,MAAM,kBAAkB,OAAO,IAAI,kBAAkB;AACrD,MAAI,eAAe,gBAClB,QAAO,cAAc;GACpB;GACA;GACA,cAAc,OAAO,IAAI,eAAe;EACxC;EAGF,MAAM,aAAa,IAAI,cAAc;AACrC,QAAM,WAAW,SAAS;AAC1B,SAAO;CACP;CAED,MAAM,UAAyB;AAE9B,OAAK,YAAY;CACjB;CAED,MAAM,QAAuB;AAC5B,OAAK,OAAO,SAAS;AACrB,OAAK,YAAY;CACjB;CAED,cAAuB;AACtB,SAAO,KAAK;CACZ;;;;CAKD,IAAI,YAAuB;AAC1B,SAAO,KAAK;CACZ;;;;CAKD,IAAI,WAAmB;AACtB,SAAO,KAAK,OAAO;CACnB;AACD"}
@@ -1,4 +1,4 @@
1
- import { EventConnection, EventPublisherType } from "./types-DSVsPgKd.mjs";
1
+ import { EventConnection, EventPublisherType } from "./types-Dj23od3e.cjs";
2
2
  import { SNSClient } from "@aws-sdk/client-sns";
3
3
 
4
4
  //#region src/sns/SNSConnection.d.ts
@@ -38,4 +38,4 @@ declare class SNSConnection implements EventConnection {
38
38
  //# sourceMappingURL=SNSConnection.d.ts.map
39
39
  //#endregion
40
40
  export { SNSConnection, SNSConnectionConfig };
41
- //# sourceMappingURL=SNSConnection-mHb10nQ6.d.mts.map
41
+ //# sourceMappingURL=SNSConnection-Dol9FuxA.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SNSConnection-mHb10nQ6.d.mts","names":[],"sources":["../src/sns/SNSConnection.ts"],"sourcesContent":[],"mappings":";;;;UAIiB,mBAAA;EAAA,QAAA,EAAA,MAAA;EAWJ,MAAA,CAAA,EAAA,MAAA;EAAc,QAAA,CAAA,EAAA,MAAA;EAAA,WACb,CAAA,EAAA;IAKO,WAAA,EAAA,MAAA;IAkBT,eAAA,EAAA,MAAA;IAAR,YAAA,CAAA,EAAA,MAAA;EAAO,CAAA;;AAgDO,cAxEL,aAAA,YAAyB,eAwEpB,CAAA;EAAS,SAxEW,IAAA,GACxB,kBAAA,CAAA,GAAA;EADuC,QAAA,MAAA;;;sBAMhC;;;;;yDAkBjB,QAAQ;aA+BM;WAKF;;;;;mBAYE"}
1
+ {"version":3,"file":"SNSConnection-Dol9FuxA.d.cts","names":[],"sources":["../src/sns/SNSConnection.ts"],"sourcesContent":[],"mappings":";;;;UAIiB,mBAAA;EAAA,QAAA,EAAA,MAAA;EAWJ,MAAA,CAAA,EAAA,MAAA;EAAc,QAAA,CAAA,EAAA,MAAA;EAAA,WACb,CAAA,EAAA;IAKO,WAAA,EAAA,MAAA;IAkBT,eAAA,EAAA,MAAA;IAAR,YAAA,CAAA,EAAA,MAAA;EAAO,CAAA;;AAgDO,cAxEL,aAAA,YAAyB,eAwEpB,CAAA;EAAS,SAxEW,IAAA,GACxB,kBAAA,CAAA,GAAA;EADuC,QAAA,MAAA;;;sBAMhC;;;;;yDAkBjB,QAAQ;aA+BM;WAKF;;;;;mBAYE"}
@@ -38,4 +38,4 @@ var SNSPublisher = class SNSPublisher {
38
38
 
39
39
  //#endregion
40
40
  export { SNSPublisher };
41
- //# sourceMappingURL=SNSPublisher-i4w_-RmP.mjs.map
41
+ //# sourceMappingURL=SNSPublisher-CjlMS3Z2.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"SNSPublisher-i4w_-RmP.mjs","names":["connection: SNSConnection","_options: SNSPublisherOptions","connectionString: string","messages: TMessage[]","message: TMessage"],"sources":["../src/sns/SNSPublisher.ts"],"sourcesContent":["import { PublishCommand } from '@aws-sdk/client-sns';\nimport type { EventPublisher, PublishableMessage } from '../types';\nimport type { SNSConnection } from './SNSConnection';\n\nexport type SNSPublisherOptions = {};\n\nexport class SNSPublisher<TMessage extends PublishableMessage<string, any>>\n\timplements EventPublisher<TMessage>\n{\n\tconstructor(\n\t\tprivate connection: SNSConnection,\n\t\t_options: SNSPublisherOptions = {},\n\t) {}\n\n\t/**\n\t * Create an SNSPublisher from a connection string\n\t * Format: sns://?topicArn=arn:aws:sns:region:account:topic&region=us-east-1&endpoint=http://localhost:4566\n\t */\n\tstatic async fromConnectionString<\n\t\tTMessage extends PublishableMessage<string, any>,\n\t>(connectionString: string): Promise<SNSPublisher<TMessage>> {\n\t\tconst { SNSConnection } = await import('./SNSConnection');\n\t\tconst connection =\n\t\t\tawait SNSConnection.fromConnectionString(connectionString);\n\n\t\treturn new SNSPublisher<TMessage>(connection);\n\t}\n\n\tasync publish(messages: TMessage[]): Promise<void> {\n\t\tif (messages.length === 0) return;\n\n\t\tif (!this.connection.isConnected()) {\n\t\t\tawait this.connection.connect();\n\t\t}\n\n\t\t// Publish all messages\n\t\tawait Promise.all(messages.map((message) => this.publishMessage(message)));\n\t}\n\n\tprivate async publishMessage(message: TMessage): Promise<void> {\n\t\tconst command = new PublishCommand({\n\t\t\tTopicArn: this.connection.topicArn,\n\t\t\tMessage: JSON.stringify({\n\t\t\t\ttype: message.type,\n\t\t\t\tpayload: message.payload,\n\t\t\t}),\n\t\t\tMessageAttributes: {\n\t\t\t\ttype: {\n\t\t\t\t\tDataType: 'String',\n\t\t\t\t\tStringValue: message.type,\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\n\t\tawait this.connection.snsClient.send(command);\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"],"mappings":";;;AAMA,IAAa,eAAb,MAAa,aAEb;CACC,YACSA,YACRC,WAAgC,CAAE,GACjC;EAFO;CAEL;;;;;CAMJ,aAAa,qBAEXC,kBAA2D;EAC5D,MAAM,EAAE,eAAe,GAAG,MAAM,OAAO;EACvC,MAAM,aACL,MAAM,cAAc,qBAAqB,iBAAiB;AAE3D,SAAO,IAAI,aAAuB;CAClC;CAED,MAAM,QAAQC,UAAqC;AAClD,MAAI,SAAS,WAAW,EAAG;AAE3B,OAAK,KAAK,WAAW,aAAa,CACjC,OAAM,KAAK,WAAW,SAAS;AAIhC,QAAM,QAAQ,IAAI,SAAS,IAAI,CAAC,YAAY,KAAK,eAAe,QAAQ,CAAC,CAAC;CAC1E;CAED,MAAc,eAAeC,SAAkC;EAC9D,MAAM,UAAU,IAAI,eAAe;GAClC,UAAU,KAAK,WAAW;GAC1B,SAAS,KAAK,UAAU;IACvB,MAAM,QAAQ;IACd,SAAS,QAAQ;GACjB,EAAC;GACF,mBAAmB,EAClB,MAAM;IACL,UAAU;IACV,aAAa,QAAQ;GACrB,EACD;EACD;AAED,QAAM,KAAK,WAAW,UAAU,KAAK,QAAQ;CAC7C;CAED,MAAM,QAAuB,CAG5B;AACD"}
1
+ {"version":3,"file":"SNSPublisher-CjlMS3Z2.mjs","names":["connection: SNSConnection","_options: SNSPublisherOptions","connectionString: string","messages: TMessage[]","message: TMessage"],"sources":["../src/sns/SNSPublisher.ts"],"sourcesContent":["import { PublishCommand } from '@aws-sdk/client-sns';\nimport type { EventPublisher, PublishableMessage } from '../types';\nimport type { SNSConnection } from './SNSConnection';\n\nexport type SNSPublisherOptions = {};\n\nexport class SNSPublisher<TMessage extends PublishableMessage<string, any>>\n\timplements EventPublisher<TMessage>\n{\n\tconstructor(\n\t\tprivate connection: SNSConnection,\n\t\t_options: SNSPublisherOptions = {},\n\t) {}\n\n\t/**\n\t * Create an SNSPublisher from a connection string\n\t * Format: sns://?topicArn=arn:aws:sns:region:account:topic&region=us-east-1&endpoint=http://localhost:4566\n\t */\n\tstatic async fromConnectionString<\n\t\tTMessage extends PublishableMessage<string, any>,\n\t>(connectionString: string): Promise<SNSPublisher<TMessage>> {\n\t\tconst { SNSConnection } = await import('./SNSConnection');\n\t\tconst connection =\n\t\t\tawait SNSConnection.fromConnectionString(connectionString);\n\n\t\treturn new SNSPublisher<TMessage>(connection);\n\t}\n\n\tasync publish(messages: TMessage[]): Promise<void> {\n\t\tif (messages.length === 0) return;\n\n\t\tif (!this.connection.isConnected()) {\n\t\t\tawait this.connection.connect();\n\t\t}\n\n\t\t// Publish all messages\n\t\tawait Promise.all(messages.map((message) => this.publishMessage(message)));\n\t}\n\n\tprivate async publishMessage(message: TMessage): Promise<void> {\n\t\tconst command = new PublishCommand({\n\t\t\tTopicArn: this.connection.topicArn,\n\t\t\tMessage: JSON.stringify({\n\t\t\t\ttype: message.type,\n\t\t\t\tpayload: message.payload,\n\t\t\t}),\n\t\t\tMessageAttributes: {\n\t\t\t\ttype: {\n\t\t\t\t\tDataType: 'String',\n\t\t\t\t\tStringValue: message.type,\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\n\t\tawait this.connection.snsClient.send(command);\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"],"mappings":";;;AAMA,IAAa,eAAb,MAAa,aAEb;CACC,YACSA,YACRC,WAAgC,CAAE,GACjC;EAFO;CAEL;;;;;CAMJ,aAAa,qBAEXC,kBAA2D;EAC5D,MAAM,EAAE,eAAe,GAAG,MAAM,OAAO;EACvC,MAAM,aACL,MAAM,cAAc,qBAAqB,iBAAiB;AAE3D,SAAO,IAAI,aAAuB;CAClC;CAED,MAAM,QAAQC,UAAqC;AAClD,MAAI,SAAS,WAAW,EAAG;AAE3B,OAAK,KAAK,WAAW,aAAa,CACjC,OAAM,KAAK,WAAW,SAAS;AAIhC,QAAM,QAAQ,IAAI,SAAS,IAAI,CAAC,YAAY,KAAK,eAAe,QAAQ,CAAC,CAAC;CAC1E;CAED,MAAc,eAAeC,SAAkC;EAC9D,MAAM,UAAU,IAAI,eAAe;GAClC,UAAU,KAAK,WAAW;GAC1B,SAAS,KAAK,UAAU;IACvB,MAAM,QAAQ;IACd,SAAS,QAAQ;GACjB,EAAC;GACF,mBAAmB,EAClB,MAAM;IACL,UAAU;IACV,aAAa,QAAQ;GACrB,EACD;EACD;AAED,QAAM,KAAK,WAAW,UAAU,KAAK,QAAQ;CAC7C;CAED,MAAM,QAAuB,CAG5B;AACD"}
@@ -1,5 +1,5 @@
1
- import { EventPublisher, PublishableMessage } from "./types-DSVsPgKd.mjs";
2
- import { SNSConnection } from "./SNSConnection-mHb10nQ6.mjs";
1
+ import { EventPublisher, PublishableMessage } from "./types-Dh9Jyinx.mjs";
2
+ import { SNSConnection } from "./SNSConnection-CG4iEwA8.mjs";
3
3
 
4
4
  //#region src/sns/SNSPublisher.d.ts
5
5
  type SNSPublisherOptions = {};
@@ -19,4 +19,4 @@ declare class SNSPublisher<TMessage extends PublishableMessage<string, any>> imp
19
19
 
20
20
  //#endregion
21
21
  export { SNSPublisher, SNSPublisherOptions };
22
- //# sourceMappingURL=SNSPublisher-CM7UAWtf.d.mts.map
22
+ //# sourceMappingURL=SNSPublisher-D50dPCEh.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SNSPublisher-CM7UAWtf.d.mts","names":[],"sources":["../src/sns/SNSPublisher.ts"],"sourcesContent":[],"mappings":";;;;KAIY,mBAAA;cAEC,8BAA8B,4CAC/B,eAAe;EAHf,QAAA,UAAA;EAEC,WAAA,CAAA,UAAY,EAIH,aAJG,EAAA,QAAA,CAAA,EAKb,mBALa;EAAA;;;;EAIU,OACvB,oBAAA,CAAA,iBAQO,kBARP,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,EASkB,OATlB,CAS0B,YAT1B,CASuC,QATvC,CAAA,CAAA;EAAwB,OAQjB,CAAA,QAAA,EASM,QATN,EAAA,CAAA,EASmB,OATnB,CAAA,IAAA,CAAA;EAAkB,QACc,cAAA;EAAQ,KAArB,CAAA,CAAA,EAqCtB,OArCsB,CAAA,IAAA,CAAA"}
1
+ {"version":3,"file":"SNSPublisher-D50dPCEh.d.mts","names":[],"sources":["../src/sns/SNSPublisher.ts"],"sourcesContent":[],"mappings":";;;;KAIY,mBAAA;cAEC,8BAA8B,4CAC/B,eAAe;EAHf,QAAA,UAAA;EAEC,WAAA,CAAA,UAAY,EAIH,aAJG,EAAA,QAAA,CAAA,EAKb,mBALa;EAAA;;;;EAIU,OACvB,oBAAA,CAAA,iBAQO,kBARP,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,EASkB,OATlB,CAS0B,YAT1B,CASuC,QATvC,CAAA,CAAA;EAAwB,OAQjB,CAAA,QAAA,EASM,QATN,EAAA,CAAA,EASmB,OATnB,CAAA,IAAA,CAAA;EAAkB,QACc,cAAA;EAAQ,KAArB,CAAA,CAAA,EAqCtB,OArCsB,CAAA,IAAA,CAAA"}
@@ -1,5 +1,5 @@
1
- import { EventPublisher, PublishableMessage } from "./types-Dmbp1U-6.cjs";
2
- import { SNSConnection } from "./SNSConnection-BDfQrVBO.cjs";
1
+ import { EventPublisher, PublishableMessage } from "./types-Dj23od3e.cjs";
2
+ import { SNSConnection } from "./SNSConnection-Dol9FuxA.cjs";
3
3
 
4
4
  //#region src/sns/SNSPublisher.d.ts
5
5
  type SNSPublisherOptions = {};
@@ -19,4 +19,4 @@ declare class SNSPublisher<TMessage extends PublishableMessage<string, any>> imp
19
19
 
20
20
  //#endregion
21
21
  export { SNSPublisher, SNSPublisherOptions };
22
- //# sourceMappingURL=SNSPublisher-kpsSlGDn.d.cts.map
22
+ //# sourceMappingURL=SNSPublisher-DQunY4NM.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SNSPublisher-kpsSlGDn.d.cts","names":[],"sources":["../src/sns/SNSPublisher.ts"],"sourcesContent":[],"mappings":";;;;KAIY,mBAAA;cAEC,8BAA8B,4CAC/B,eAAe;EAHf,QAAA,UAAA;EAEC,WAAA,CAAA,UAAY,EAIH,aAJG,EAAA,QAAA,CAAA,EAKb,mBALa;EAAA;;;;EAIU,OACvB,oBAAA,CAAA,iBAQO,kBARP,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,EASkB,OATlB,CAS0B,YAT1B,CASuC,QATvC,CAAA,CAAA;EAAwB,OAQjB,CAAA,QAAA,EASM,QATN,EAAA,CAAA,EASmB,OATnB,CAAA,IAAA,CAAA;EAAkB,QACc,cAAA;EAAQ,KAArB,CAAA,CAAA,EAqCtB,OArCsB,CAAA,IAAA,CAAA"}
1
+ {"version":3,"file":"SNSPublisher-DQunY4NM.d.cts","names":[],"sources":["../src/sns/SNSPublisher.ts"],"sourcesContent":[],"mappings":";;;;KAIY,mBAAA;cAEC,8BAA8B,4CAC/B,eAAe;EAHf,QAAA,UAAA;EAEC,WAAA,CAAA,UAAY,EAIH,aAJG,EAAA,QAAA,CAAA,EAKb,mBALa;EAAA;;;;EAIU,OACvB,oBAAA,CAAA,iBAQO,kBARP,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,EASkB,OATlB,CAS0B,YAT1B,CASuC,QATvC,CAAA,CAAA;EAAwB,OAQjB,CAAA,QAAA,EASM,QATN,EAAA,CAAA,EASmB,OATnB,CAAA,IAAA,CAAA;EAAkB,QACc,cAAA;EAAQ,KAArB,CAAA,CAAA,EAqCtB,OArCsB,CAAA,IAAA,CAAA"}
@@ -44,4 +44,4 @@ Object.defineProperty(exports, 'SNSPublisher', {
44
44
  return SNSPublisher;
45
45
  }
46
46
  });
47
- //# sourceMappingURL=SNSPublisher-BRgwumLS.cjs.map
47
+ //# sourceMappingURL=SNSPublisher-DV_8GGsi.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"SNSPublisher-BRgwumLS.cjs","names":["connection: SNSConnection","_options: SNSPublisherOptions","connectionString: string","messages: TMessage[]","message: TMessage","PublishCommand"],"sources":["../src/sns/SNSPublisher.ts"],"sourcesContent":["import { PublishCommand } from '@aws-sdk/client-sns';\nimport type { EventPublisher, PublishableMessage } from '../types';\nimport type { SNSConnection } from './SNSConnection';\n\nexport type SNSPublisherOptions = {};\n\nexport class SNSPublisher<TMessage extends PublishableMessage<string, any>>\n\timplements EventPublisher<TMessage>\n{\n\tconstructor(\n\t\tprivate connection: SNSConnection,\n\t\t_options: SNSPublisherOptions = {},\n\t) {}\n\n\t/**\n\t * Create an SNSPublisher from a connection string\n\t * Format: sns://?topicArn=arn:aws:sns:region:account:topic&region=us-east-1&endpoint=http://localhost:4566\n\t */\n\tstatic async fromConnectionString<\n\t\tTMessage extends PublishableMessage<string, any>,\n\t>(connectionString: string): Promise<SNSPublisher<TMessage>> {\n\t\tconst { SNSConnection } = await import('./SNSConnection');\n\t\tconst connection =\n\t\t\tawait SNSConnection.fromConnectionString(connectionString);\n\n\t\treturn new SNSPublisher<TMessage>(connection);\n\t}\n\n\tasync publish(messages: TMessage[]): Promise<void> {\n\t\tif (messages.length === 0) return;\n\n\t\tif (!this.connection.isConnected()) {\n\t\t\tawait this.connection.connect();\n\t\t}\n\n\t\t// Publish all messages\n\t\tawait Promise.all(messages.map((message) => this.publishMessage(message)));\n\t}\n\n\tprivate async publishMessage(message: TMessage): Promise<void> {\n\t\tconst command = new PublishCommand({\n\t\t\tTopicArn: this.connection.topicArn,\n\t\t\tMessage: JSON.stringify({\n\t\t\t\ttype: message.type,\n\t\t\t\tpayload: message.payload,\n\t\t\t}),\n\t\t\tMessageAttributes: {\n\t\t\t\ttype: {\n\t\t\t\t\tDataType: 'String',\n\t\t\t\t\tStringValue: message.type,\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\n\t\tawait this.connection.snsClient.send(command);\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"],"mappings":";;;;AAMA,IAAa,eAAb,MAAa,aAEb;CACC,YACSA,YACRC,WAAgC,CAAE,GACjC;EAFO;CAEL;;;;;CAMJ,aAAa,qBAEXC,kBAA2D;EAC5D,MAAM,EAAE,eAAe,GAAG,2CAAM;EAChC,MAAM,aACL,MAAM,cAAc,qBAAqB,iBAAiB;AAE3D,SAAO,IAAI,aAAuB;CAClC;CAED,MAAM,QAAQC,UAAqC;AAClD,MAAI,SAAS,WAAW,EAAG;AAE3B,OAAK,KAAK,WAAW,aAAa,CACjC,OAAM,KAAK,WAAW,SAAS;AAIhC,QAAM,QAAQ,IAAI,SAAS,IAAI,CAAC,YAAY,KAAK,eAAe,QAAQ,CAAC,CAAC;CAC1E;CAED,MAAc,eAAeC,SAAkC;EAC9D,MAAM,UAAU,IAAIC,oCAAe;GAClC,UAAU,KAAK,WAAW;GAC1B,SAAS,KAAK,UAAU;IACvB,MAAM,QAAQ;IACd,SAAS,QAAQ;GACjB,EAAC;GACF,mBAAmB,EAClB,MAAM;IACL,UAAU;IACV,aAAa,QAAQ;GACrB,EACD;EACD;AAED,QAAM,KAAK,WAAW,UAAU,KAAK,QAAQ;CAC7C;CAED,MAAM,QAAuB,CAG5B;AACD"}
1
+ {"version":3,"file":"SNSPublisher-DV_8GGsi.cjs","names":["connection: SNSConnection","_options: SNSPublisherOptions","connectionString: string","messages: TMessage[]","message: TMessage","PublishCommand"],"sources":["../src/sns/SNSPublisher.ts"],"sourcesContent":["import { PublishCommand } from '@aws-sdk/client-sns';\nimport type { EventPublisher, PublishableMessage } from '../types';\nimport type { SNSConnection } from './SNSConnection';\n\nexport type SNSPublisherOptions = {};\n\nexport class SNSPublisher<TMessage extends PublishableMessage<string, any>>\n\timplements EventPublisher<TMessage>\n{\n\tconstructor(\n\t\tprivate connection: SNSConnection,\n\t\t_options: SNSPublisherOptions = {},\n\t) {}\n\n\t/**\n\t * Create an SNSPublisher from a connection string\n\t * Format: sns://?topicArn=arn:aws:sns:region:account:topic&region=us-east-1&endpoint=http://localhost:4566\n\t */\n\tstatic async fromConnectionString<\n\t\tTMessage extends PublishableMessage<string, any>,\n\t>(connectionString: string): Promise<SNSPublisher<TMessage>> {\n\t\tconst { SNSConnection } = await import('./SNSConnection');\n\t\tconst connection =\n\t\t\tawait SNSConnection.fromConnectionString(connectionString);\n\n\t\treturn new SNSPublisher<TMessage>(connection);\n\t}\n\n\tasync publish(messages: TMessage[]): Promise<void> {\n\t\tif (messages.length === 0) return;\n\n\t\tif (!this.connection.isConnected()) {\n\t\t\tawait this.connection.connect();\n\t\t}\n\n\t\t// Publish all messages\n\t\tawait Promise.all(messages.map((message) => this.publishMessage(message)));\n\t}\n\n\tprivate async publishMessage(message: TMessage): Promise<void> {\n\t\tconst command = new PublishCommand({\n\t\t\tTopicArn: this.connection.topicArn,\n\t\t\tMessage: JSON.stringify({\n\t\t\t\ttype: message.type,\n\t\t\t\tpayload: message.payload,\n\t\t\t}),\n\t\t\tMessageAttributes: {\n\t\t\t\ttype: {\n\t\t\t\t\tDataType: 'String',\n\t\t\t\t\tStringValue: message.type,\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\n\t\tawait this.connection.snsClient.send(command);\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"],"mappings":";;;;AAMA,IAAa,eAAb,MAAa,aAEb;CACC,YACSA,YACRC,WAAgC,CAAE,GACjC;EAFO;CAEL;;;;;CAMJ,aAAa,qBAEXC,kBAA2D;EAC5D,MAAM,EAAE,eAAe,GAAG,2CAAM;EAChC,MAAM,aACL,MAAM,cAAc,qBAAqB,iBAAiB;AAE3D,SAAO,IAAI,aAAuB;CAClC;CAED,MAAM,QAAQC,UAAqC;AAClD,MAAI,SAAS,WAAW,EAAG;AAE3B,OAAK,KAAK,WAAW,aAAa,CACjC,OAAM,KAAK,WAAW,SAAS;AAIhC,QAAM,QAAQ,IAAI,SAAS,IAAI,CAAC,YAAY,KAAK,eAAe,QAAQ,CAAC,CAAC;CAC1E;CAED,MAAc,eAAeC,SAAkC;EAC9D,MAAM,UAAU,IAAIC,oCAAe;GAClC,UAAU,KAAK,WAAW;GAC1B,SAAS,KAAK,UAAU;IACvB,MAAM,QAAQ;IACd,SAAS,QAAQ;GACjB,EAAC;GACF,mBAAmB,EAClB,MAAM;IACL,UAAU;IACV,aAAa,QAAQ;GACrB,EACD;EACD;AAED,QAAM,KAAK,WAAW,UAAU,KAAK,QAAQ;CAC7C;CAED,MAAM,QAAuB,CAG5B;AACD"}
@@ -1,5 +1,5 @@
1
- import { SQSConnection } from "./SQSConnection-BwHhXLIu.mjs";
2
- import { SQSSubscriber } from "./SQSSubscriber-ux7QEMdd.mjs";
1
+ import { SQSConnection } from "./SQSConnection-CT3S7_zP.mjs";
2
+ import { SQSSubscriber } from "./SQSSubscriber-CQdSFzpe.mjs";
3
3
  import { SubscribeCommand, UnsubscribeCommand } from "@aws-sdk/client-sns";
4
4
  import { CreateQueueCommand, DeleteQueueCommand, GetQueueAttributesCommand, SQSClient, SetQueueAttributesCommand } from "@aws-sdk/client-sqs";
5
5
 
@@ -136,4 +136,4 @@ var SNSSubscriber = class SNSSubscriber {
136
136
 
137
137
  //#endregion
138
138
  export { SNSSubscriber };
139
- //# sourceMappingURL=SNSSubscriber-BEf-H4p5.mjs.map
139
+ //# sourceMappingURL=SNSSubscriber-BWaCQFl6.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"SNSSubscriber-BEf-H4p5.mjs","names":["connection: SNSConnection","options: SNSSubscriberOptions","connectionString: string","messages: TMessage['type'][]","listener: (payload: TMessage) => Promise<void>"],"sources":["../src/sns/SNSSubscriber.ts"],"sourcesContent":["import { SubscribeCommand, UnsubscribeCommand } from '@aws-sdk/client-sns';\nimport {\n\tCreateQueueCommand,\n\tDeleteQueueCommand,\n\tGetQueueAttributesCommand,\n\tSetQueueAttributesCommand,\n\tSQSClient,\n} from '@aws-sdk/client-sqs';\nimport { SQSConnection } from '../sqs/SQSConnection';\nimport { SQSSubscriber } from '../sqs/SQSSubscriber';\nimport type { EventSubscriber, PublishableMessage } from '../types';\nimport type { SNSConnection } from './SNSConnection';\n\nexport interface SNSSubscriberOptions {\n\tqueueName?: string; // Optional queue name (defaults to auto-generated)\n\tcreateQueue?: boolean; // Auto-create SQS queue (default: true)\n\tdeleteQueueOnClose?: boolean; // Delete queue when subscriber closes (default: false for named queues, true for auto-generated)\n\twaitTimeSeconds?: number; // SQS long polling (default: 20)\n\tmaxMessages?: number; // Max messages per poll (default: 10)\n}\n\n/**\n * SNS Subscriber - receives push-based messages from SNS via SQS queue\n *\n * Architecture:\n * SNS Topic → (push) → SQS Queue → Subscriber\n *\n * This subscriber automatically:\n * 1. Creates an SQS queue (or uses existing one)\n * 2. Subscribes the queue to the SNS topic\n * 3. Receives messages pushed from SNS to the queue\n * 4. Filters messages by topic ARN and message type\n * 5. Processes and acknowledges messages\n *\n * Note: While SQS long-polling is used internally to receive messages,\n * this is an implementation detail of the SNS push delivery mechanism.\n * Messages are pushed from SNS to SQS, and we receive those pushed messages.\n */\nexport class SNSSubscriber<TMessage extends PublishableMessage<string, any>>\n\timplements EventSubscriber<TMessage>\n{\n\tprivate sqsClient: SQSClient;\n\tprivate queueUrl?: string;\n\tprivate queueArn?: string;\n\tprivate subscriptionArn?: string;\n\tprivate sqsSubscriber?: SQSSubscriber<TMessage>;\n\tprivate options: Required<SNSSubscriberOptions>;\n\n\tconstructor(\n\t\tprivate connection: SNSConnection,\n\t\toptions: SNSSubscriberOptions = {},\n\t) {\n\t\tthis.options = {\n\t\t\tqueueName:\n\t\t\t\toptions.queueName ||\n\t\t\t\t`sns-sub-${Date.now()}-${Math.random().toString(36).substring(7)}`,\n\t\t\tcreateQueue: options.createQueue ?? true,\n\t\t\tdeleteQueueOnClose: options.deleteQueueOnClose ?? !options.queueName, // Delete auto-generated queues\n\t\t\twaitTimeSeconds: options.waitTimeSeconds ?? 20,\n\t\t\tmaxMessages: options.maxMessages ?? 10,\n\t\t};\n\n\t\t// Create SQS client with same config as SNS\n\t\tthis.sqsClient = new SQSClient({\n\t\t\tregion: (this.connection as any).config.region,\n\t\t\tendpoint: (this.connection as any).config.endpoint,\n\t\t\tcredentials: (this.connection as any).config.credentials,\n\t\t});\n\t}\n\n\t/**\n\t * Create an SNSSubscriber from a connection string\n\t * Format: sns://?topicArn=...&queueName=myqueue&region=us-east-1\n\t */\n\tstatic async fromConnectionString<\n\t\tTMessage extends PublishableMessage<string, any>,\n\t>(connectionString: string): Promise<SNSSubscriber<TMessage>> {\n\t\tconst url = new URL(connectionString);\n\t\tconst params = url.searchParams;\n\n\t\tconst { SNSConnection } = await import('./SNSConnection');\n\t\tconst connection =\n\t\t\tawait SNSConnection.fromConnectionString(connectionString);\n\n\t\tconst options: SNSSubscriberOptions = {\n\t\t\tqueueName: params.get('queueName') || undefined,\n\t\t\tcreateQueue: params.get('createQueue') !== 'false',\n\t\t\tdeleteQueueOnClose: params.get('deleteQueueOnClose') === 'true',\n\t\t\twaitTimeSeconds: params.get('waitTimeSeconds')\n\t\t\t\t? Number.parseInt(params.get('waitTimeSeconds')!, 10)\n\t\t\t\t: undefined,\n\t\t};\n\n\t\treturn new SNSSubscriber<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\t// Setup SQS queue and SNS subscription\n\t\tawait this.setupQueue();\n\t\tawait this.subscribeToTopic();\n\n\t\t// Create SQS connection for the subscriber\n\t\tconst sqsConnection = new SQSConnection({\n\t\t\tqueueUrl: this.queueUrl!,\n\t\t\tregion: (this.connection as any).config.region,\n\t\t\tendpoint: (this.connection as any).config.endpoint,\n\t\t\tcredentials: (this.connection as any).config.credentials,\n\t\t});\n\t\tawait sqsConnection.connect();\n\n\t\t// Use SQSSubscriber to receive messages, with topic filtering\n\t\tthis.sqsSubscriber = new SQSSubscriber<TMessage>(sqsConnection, {\n\t\t\twaitTimeSeconds: this.options.waitTimeSeconds,\n\t\t\tmaxMessages: this.options.maxMessages,\n\t\t\texpectedTopicArn: this.connection.topicArn,\n\t\t});\n\n\t\tawait this.sqsSubscriber.subscribe(messages, listener);\n\t}\n\n\t/**\n\t * Stop receiving messages and clean up resources\n\t */\n\tasync stop(): Promise<void> {\n\t\t// Stop SQS subscriber\n\t\tif (this.sqsSubscriber) {\n\t\t\tthis.sqsSubscriber.stop();\n\t\t}\n\n\t\t// Unsubscribe from topic\n\t\tif (this.subscriptionArn) {\n\t\t\ttry {\n\t\t\t\tconst command = new UnsubscribeCommand({\n\t\t\t\t\tSubscriptionArn: this.subscriptionArn,\n\t\t\t\t});\n\t\t\t\tawait this.connection.snsClient.send(command);\n\t\t\t} catch (_error) {}\n\t\t}\n\n\t\t// Delete queue if configured\n\t\tif (this.queueUrl && this.options.deleteQueueOnClose) {\n\t\t\ttry {\n\t\t\t\tconst command = new DeleteQueueCommand({\n\t\t\t\t\tQueueUrl: this.queueUrl,\n\t\t\t\t});\n\t\t\t\tawait this.sqsClient.send(command);\n\t\t\t} catch (_error) {}\n\t\t}\n\n\t\tthis.sqsClient.destroy();\n\t}\n\n\tprivate async setupQueue(): Promise<void> {\n\t\tif (this.options.createQueue) {\n\t\t\t// Create queue\n\t\t\tconst createCommand = new CreateQueueCommand({\n\t\t\t\tQueueName: this.options.queueName,\n\t\t\t});\n\t\t\tconst response = await this.sqsClient.send(createCommand);\n\t\t\tthis.queueUrl = response.QueueUrl!;\n\t\t} else {\n\t\t\tthrow new Error('Queue must exist or createQueue option must be true');\n\t\t}\n\n\t\t// Get queue ARN\n\t\tconst attrsCommand = new GetQueueAttributesCommand({\n\t\t\tQueueUrl: this.queueUrl,\n\t\t\tAttributeNames: ['QueueArn'],\n\t\t});\n\t\tconst attrsResponse = await this.sqsClient.send(attrsCommand);\n\t\tthis.queueArn = attrsResponse.Attributes?.QueueArn!;\n\n\t\t// Set queue policy to allow SNS\n\t\tawait this.setQueuePolicy();\n\t}\n\n\tprivate async setQueuePolicy(): Promise<void> {\n\t\tconst policy = {\n\t\t\tVersion: '2012-10-17',\n\t\t\tStatement: [\n\t\t\t\t{\n\t\t\t\t\tEffect: 'Allow',\n\t\t\t\t\tPrincipal: '*',\n\t\t\t\t\tAction: 'SQS:SendMessage',\n\t\t\t\t\tResource: this.queueArn,\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tArnEquals: {\n\t\t\t\t\t\t\t'aws:SourceArn': this.connection.topicArn,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\n\t\tconst command = new SetQueueAttributesCommand({\n\t\t\tQueueUrl: this.queueUrl,\n\t\t\tAttributes: {\n\t\t\t\tPolicy: JSON.stringify(policy),\n\t\t\t},\n\t\t});\n\n\t\tawait this.sqsClient.send(command);\n\t}\n\n\tprivate async subscribeToTopic(): Promise<void> {\n\t\tconst command = new SubscribeCommand({\n\t\t\tTopicArn: this.connection.topicArn,\n\t\t\tProtocol: 'sqs',\n\t\t\tEndpoint: this.queueArn,\n\t\t});\n\n\t\tconst response = await this.connection.snsClient.send(command);\n\t\tthis.subscriptionArn = response.SubscriptionArn!;\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SNSSubscriber-BWaCQFl6.mjs","names":["connection: SNSConnection","options: SNSSubscriberOptions","connectionString: string","messages: TMessage['type'][]","listener: (payload: TMessage) => Promise<void>"],"sources":["../src/sns/SNSSubscriber.ts"],"sourcesContent":["import { SubscribeCommand, UnsubscribeCommand } from '@aws-sdk/client-sns';\nimport {\n\tCreateQueueCommand,\n\tDeleteQueueCommand,\n\tGetQueueAttributesCommand,\n\tSetQueueAttributesCommand,\n\tSQSClient,\n} from '@aws-sdk/client-sqs';\nimport { SQSConnection } from '../sqs/SQSConnection';\nimport { SQSSubscriber } from '../sqs/SQSSubscriber';\nimport type { EventSubscriber, PublishableMessage } from '../types';\nimport type { SNSConnection } from './SNSConnection';\n\nexport interface SNSSubscriberOptions {\n\tqueueName?: string; // Optional queue name (defaults to auto-generated)\n\tcreateQueue?: boolean; // Auto-create SQS queue (default: true)\n\tdeleteQueueOnClose?: boolean; // Delete queue when subscriber closes (default: false for named queues, true for auto-generated)\n\twaitTimeSeconds?: number; // SQS long polling (default: 20)\n\tmaxMessages?: number; // Max messages per poll (default: 10)\n}\n\n/**\n * SNS Subscriber - receives push-based messages from SNS via SQS queue\n *\n * Architecture:\n * SNS Topic → (push) → SQS Queue → Subscriber\n *\n * This subscriber automatically:\n * 1. Creates an SQS queue (or uses existing one)\n * 2. Subscribes the queue to the SNS topic\n * 3. Receives messages pushed from SNS to the queue\n * 4. Filters messages by topic ARN and message type\n * 5. Processes and acknowledges messages\n *\n * Note: While SQS long-polling is used internally to receive messages,\n * this is an implementation detail of the SNS push delivery mechanism.\n * Messages are pushed from SNS to SQS, and we receive those pushed messages.\n */\nexport class SNSSubscriber<TMessage extends PublishableMessage<string, any>>\n\timplements EventSubscriber<TMessage>\n{\n\tprivate sqsClient: SQSClient;\n\tprivate queueUrl?: string;\n\tprivate queueArn?: string;\n\tprivate subscriptionArn?: string;\n\tprivate sqsSubscriber?: SQSSubscriber<TMessage>;\n\tprivate options: Required<SNSSubscriberOptions>;\n\n\tconstructor(\n\t\tprivate connection: SNSConnection,\n\t\toptions: SNSSubscriberOptions = {},\n\t) {\n\t\tthis.options = {\n\t\t\tqueueName:\n\t\t\t\toptions.queueName ||\n\t\t\t\t`sns-sub-${Date.now()}-${Math.random().toString(36).substring(7)}`,\n\t\t\tcreateQueue: options.createQueue ?? true,\n\t\t\tdeleteQueueOnClose: options.deleteQueueOnClose ?? !options.queueName, // Delete auto-generated queues\n\t\t\twaitTimeSeconds: options.waitTimeSeconds ?? 20,\n\t\t\tmaxMessages: options.maxMessages ?? 10,\n\t\t};\n\n\t\t// Create SQS client with same config as SNS\n\t\tthis.sqsClient = new SQSClient({\n\t\t\tregion: (this.connection as any).config.region,\n\t\t\tendpoint: (this.connection as any).config.endpoint,\n\t\t\tcredentials: (this.connection as any).config.credentials,\n\t\t});\n\t}\n\n\t/**\n\t * Create an SNSSubscriber from a connection string\n\t * Format: sns://?topicArn=...&queueName=myqueue&region=us-east-1\n\t */\n\tstatic async fromConnectionString<\n\t\tTMessage extends PublishableMessage<string, any>,\n\t>(connectionString: string): Promise<SNSSubscriber<TMessage>> {\n\t\tconst url = new URL(connectionString);\n\t\tconst params = url.searchParams;\n\n\t\tconst { SNSConnection } = await import('./SNSConnection');\n\t\tconst connection =\n\t\t\tawait SNSConnection.fromConnectionString(connectionString);\n\n\t\tconst options: SNSSubscriberOptions = {\n\t\t\tqueueName: params.get('queueName') || undefined,\n\t\t\tcreateQueue: params.get('createQueue') !== 'false',\n\t\t\tdeleteQueueOnClose: params.get('deleteQueueOnClose') === 'true',\n\t\t\twaitTimeSeconds: params.get('waitTimeSeconds')\n\t\t\t\t? Number.parseInt(params.get('waitTimeSeconds')!, 10)\n\t\t\t\t: undefined,\n\t\t};\n\n\t\treturn new SNSSubscriber<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\t// Setup SQS queue and SNS subscription\n\t\tawait this.setupQueue();\n\t\tawait this.subscribeToTopic();\n\n\t\t// Create SQS connection for the subscriber\n\t\tconst sqsConnection = new SQSConnection({\n\t\t\tqueueUrl: this.queueUrl!,\n\t\t\tregion: (this.connection as any).config.region,\n\t\t\tendpoint: (this.connection as any).config.endpoint,\n\t\t\tcredentials: (this.connection as any).config.credentials,\n\t\t});\n\t\tawait sqsConnection.connect();\n\n\t\t// Use SQSSubscriber to receive messages, with topic filtering\n\t\tthis.sqsSubscriber = new SQSSubscriber<TMessage>(sqsConnection, {\n\t\t\twaitTimeSeconds: this.options.waitTimeSeconds,\n\t\t\tmaxMessages: this.options.maxMessages,\n\t\t\texpectedTopicArn: this.connection.topicArn,\n\t\t});\n\n\t\tawait this.sqsSubscriber.subscribe(messages, listener);\n\t}\n\n\t/**\n\t * Stop receiving messages and clean up resources\n\t */\n\tasync stop(): Promise<void> {\n\t\t// Stop SQS subscriber\n\t\tif (this.sqsSubscriber) {\n\t\t\tthis.sqsSubscriber.stop();\n\t\t}\n\n\t\t// Unsubscribe from topic\n\t\tif (this.subscriptionArn) {\n\t\t\ttry {\n\t\t\t\tconst command = new UnsubscribeCommand({\n\t\t\t\t\tSubscriptionArn: this.subscriptionArn,\n\t\t\t\t});\n\t\t\t\tawait this.connection.snsClient.send(command);\n\t\t\t} catch (_error) {}\n\t\t}\n\n\t\t// Delete queue if configured\n\t\tif (this.queueUrl && this.options.deleteQueueOnClose) {\n\t\t\ttry {\n\t\t\t\tconst command = new DeleteQueueCommand({\n\t\t\t\t\tQueueUrl: this.queueUrl,\n\t\t\t\t});\n\t\t\t\tawait this.sqsClient.send(command);\n\t\t\t} catch (_error) {}\n\t\t}\n\n\t\tthis.sqsClient.destroy();\n\t}\n\n\tprivate async setupQueue(): Promise<void> {\n\t\tif (this.options.createQueue) {\n\t\t\t// Create queue\n\t\t\tconst createCommand = new CreateQueueCommand({\n\t\t\t\tQueueName: this.options.queueName,\n\t\t\t});\n\t\t\tconst response = await this.sqsClient.send(createCommand);\n\t\t\tthis.queueUrl = response.QueueUrl!;\n\t\t} else {\n\t\t\tthrow new Error('Queue must exist or createQueue option must be true');\n\t\t}\n\n\t\t// Get queue ARN\n\t\tconst attrsCommand = new GetQueueAttributesCommand({\n\t\t\tQueueUrl: this.queueUrl,\n\t\t\tAttributeNames: ['QueueArn'],\n\t\t});\n\t\tconst attrsResponse = await this.sqsClient.send(attrsCommand);\n\t\tthis.queueArn = attrsResponse.Attributes?.QueueArn!;\n\n\t\t// Set queue policy to allow SNS\n\t\tawait this.setQueuePolicy();\n\t}\n\n\tprivate async setQueuePolicy(): Promise<void> {\n\t\tconst policy = {\n\t\t\tVersion: '2012-10-17',\n\t\t\tStatement: [\n\t\t\t\t{\n\t\t\t\t\tEffect: 'Allow',\n\t\t\t\t\tPrincipal: '*',\n\t\t\t\t\tAction: 'SQS:SendMessage',\n\t\t\t\t\tResource: this.queueArn,\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tArnEquals: {\n\t\t\t\t\t\t\t'aws:SourceArn': this.connection.topicArn,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\n\t\tconst command = new SetQueueAttributesCommand({\n\t\t\tQueueUrl: this.queueUrl,\n\t\t\tAttributes: {\n\t\t\t\tPolicy: JSON.stringify(policy),\n\t\t\t},\n\t\t});\n\n\t\tawait this.sqsClient.send(command);\n\t}\n\n\tprivate async subscribeToTopic(): Promise<void> {\n\t\tconst command = new SubscribeCommand({\n\t\t\tTopicArn: this.connection.topicArn,\n\t\t\tProtocol: 'sqs',\n\t\t\tEndpoint: this.queueArn,\n\t\t});\n\n\t\tconst response = await this.connection.snsClient.send(command);\n\t\tthis.subscriptionArn = response.SubscriptionArn!;\n\t}\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { EventSubscriber, PublishableMessage } from "./types-Dmbp1U-6.cjs";
2
- import { SNSConnection } from "./SNSConnection-BDfQrVBO.cjs";
1
+ import { EventSubscriber, PublishableMessage } from "./types-Dh9Jyinx.mjs";
2
+ import { SNSConnection } from "./SNSConnection-CG4iEwA8.mjs";
3
3
 
4
4
  //#region src/sns/SNSSubscriber.d.ts
5
5
  interface SNSSubscriberOptions {
@@ -52,4 +52,4 @@ declare class SNSSubscriber<TMessage extends PublishableMessage<string, any>> im
52
52
  //# sourceMappingURL=SNSSubscriber.d.ts.map
53
53
  //#endregion
54
54
  export { SNSSubscriber, SNSSubscriberOptions };
55
- //# sourceMappingURL=SNSSubscriber-DDB3--pm.d.cts.map
55
+ //# sourceMappingURL=SNSSubscriber-CUgHK4W2.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SNSSubscriber-DDB3--pm.d.cts","names":[],"sources":["../src/sns/SNSSubscriber.ts"],"sourcesContent":[],"mappings":";;;;UAaiB,oBAAA;;EAAA,WAAA,CAAA,EAAA,OAAA;EAyBJ,kBAAa,CAAA,EAAA,OAAA;EAAA,eAAA,CAAA,EAAA,MAAA;EAAA,WAAkB,CAAA,EAAA,MAAA;;;;;;;;;;;;;;AACjB;;;;;cADd,+BAA+B,4CAChC,gBAAgB;;;;;;;;0BAUN,yBACX;;;;;+CAyBQ,4DACW,QAAQ,cAAc;sBAqBxC,wCACU,aAAa,gBAC/B;;;;UA2BW"}
1
+ {"version":3,"file":"SNSSubscriber-CUgHK4W2.d.mts","names":[],"sources":["../src/sns/SNSSubscriber.ts"],"sourcesContent":[],"mappings":";;;;UAaiB,oBAAA;;EAAA,WAAA,CAAA,EAAA,OAAA;EAyBJ,kBAAa,CAAA,EAAA,OAAA;EAAA,eAAA,CAAA,EAAA,MAAA;EAAA,WAAkB,CAAA,EAAA,MAAA;;;;;;;;;;;;;;AACjB;;;;;cADd,+BAA+B,4CAChC,gBAAgB;;;;;;;;0BAUN,yBACX;;;;;+CAyBQ,4DACW,QAAQ,cAAc;sBAqBxC,wCACU,aAAa,gBAC/B;;;;UA2BW"}
@@ -1,6 +1,6 @@
1
1
  const require_chunk = require('./chunk-CUT6urMc.cjs');
2
- const require_SQSConnection = require('./SQSConnection-Ctu3XY9E.cjs');
3
- const require_SQSSubscriber = require('./SQSSubscriber-BB9TWyLA.cjs');
2
+ const require_SQSConnection = require('./SQSConnection-Y0mdVTcB.cjs');
3
+ const require_SQSSubscriber = require('./SQSSubscriber-C4UA2hKq.cjs');
4
4
  const __aws_sdk_client_sns = require_chunk.__toESM(require("@aws-sdk/client-sns"));
5
5
  const __aws_sdk_client_sqs = require_chunk.__toESM(require("@aws-sdk/client-sqs"));
6
6
 
@@ -142,4 +142,4 @@ Object.defineProperty(exports, 'SNSSubscriber', {
142
142
  return SNSSubscriber;
143
143
  }
144
144
  });
145
- //# sourceMappingURL=SNSSubscriber-FYqSi346.cjs.map
145
+ //# sourceMappingURL=SNSSubscriber-ZE_-Hsps.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"SNSSubscriber-FYqSi346.cjs","names":["connection: SNSConnection","options: SNSSubscriberOptions","SQSClient","connectionString: string","messages: TMessage['type'][]","listener: (payload: TMessage) => Promise<void>","SQSConnection","SQSSubscriber","UnsubscribeCommand","DeleteQueueCommand","CreateQueueCommand","GetQueueAttributesCommand","SetQueueAttributesCommand","SubscribeCommand"],"sources":["../src/sns/SNSSubscriber.ts"],"sourcesContent":["import { SubscribeCommand, UnsubscribeCommand } from '@aws-sdk/client-sns';\nimport {\n\tCreateQueueCommand,\n\tDeleteQueueCommand,\n\tGetQueueAttributesCommand,\n\tSetQueueAttributesCommand,\n\tSQSClient,\n} from '@aws-sdk/client-sqs';\nimport { SQSConnection } from '../sqs/SQSConnection';\nimport { SQSSubscriber } from '../sqs/SQSSubscriber';\nimport type { EventSubscriber, PublishableMessage } from '../types';\nimport type { SNSConnection } from './SNSConnection';\n\nexport interface SNSSubscriberOptions {\n\tqueueName?: string; // Optional queue name (defaults to auto-generated)\n\tcreateQueue?: boolean; // Auto-create SQS queue (default: true)\n\tdeleteQueueOnClose?: boolean; // Delete queue when subscriber closes (default: false for named queues, true for auto-generated)\n\twaitTimeSeconds?: number; // SQS long polling (default: 20)\n\tmaxMessages?: number; // Max messages per poll (default: 10)\n}\n\n/**\n * SNS Subscriber - receives push-based messages from SNS via SQS queue\n *\n * Architecture:\n * SNS Topic → (push) → SQS Queue → Subscriber\n *\n * This subscriber automatically:\n * 1. Creates an SQS queue (or uses existing one)\n * 2. Subscribes the queue to the SNS topic\n * 3. Receives messages pushed from SNS to the queue\n * 4. Filters messages by topic ARN and message type\n * 5. Processes and acknowledges messages\n *\n * Note: While SQS long-polling is used internally to receive messages,\n * this is an implementation detail of the SNS push delivery mechanism.\n * Messages are pushed from SNS to SQS, and we receive those pushed messages.\n */\nexport class SNSSubscriber<TMessage extends PublishableMessage<string, any>>\n\timplements EventSubscriber<TMessage>\n{\n\tprivate sqsClient: SQSClient;\n\tprivate queueUrl?: string;\n\tprivate queueArn?: string;\n\tprivate subscriptionArn?: string;\n\tprivate sqsSubscriber?: SQSSubscriber<TMessage>;\n\tprivate options: Required<SNSSubscriberOptions>;\n\n\tconstructor(\n\t\tprivate connection: SNSConnection,\n\t\toptions: SNSSubscriberOptions = {},\n\t) {\n\t\tthis.options = {\n\t\t\tqueueName:\n\t\t\t\toptions.queueName ||\n\t\t\t\t`sns-sub-${Date.now()}-${Math.random().toString(36).substring(7)}`,\n\t\t\tcreateQueue: options.createQueue ?? true,\n\t\t\tdeleteQueueOnClose: options.deleteQueueOnClose ?? !options.queueName, // Delete auto-generated queues\n\t\t\twaitTimeSeconds: options.waitTimeSeconds ?? 20,\n\t\t\tmaxMessages: options.maxMessages ?? 10,\n\t\t};\n\n\t\t// Create SQS client with same config as SNS\n\t\tthis.sqsClient = new SQSClient({\n\t\t\tregion: (this.connection as any).config.region,\n\t\t\tendpoint: (this.connection as any).config.endpoint,\n\t\t\tcredentials: (this.connection as any).config.credentials,\n\t\t});\n\t}\n\n\t/**\n\t * Create an SNSSubscriber from a connection string\n\t * Format: sns://?topicArn=...&queueName=myqueue&region=us-east-1\n\t */\n\tstatic async fromConnectionString<\n\t\tTMessage extends PublishableMessage<string, any>,\n\t>(connectionString: string): Promise<SNSSubscriber<TMessage>> {\n\t\tconst url = new URL(connectionString);\n\t\tconst params = url.searchParams;\n\n\t\tconst { SNSConnection } = await import('./SNSConnection');\n\t\tconst connection =\n\t\t\tawait SNSConnection.fromConnectionString(connectionString);\n\n\t\tconst options: SNSSubscriberOptions = {\n\t\t\tqueueName: params.get('queueName') || undefined,\n\t\t\tcreateQueue: params.get('createQueue') !== 'false',\n\t\t\tdeleteQueueOnClose: params.get('deleteQueueOnClose') === 'true',\n\t\t\twaitTimeSeconds: params.get('waitTimeSeconds')\n\t\t\t\t? Number.parseInt(params.get('waitTimeSeconds')!, 10)\n\t\t\t\t: undefined,\n\t\t};\n\n\t\treturn new SNSSubscriber<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\t// Setup SQS queue and SNS subscription\n\t\tawait this.setupQueue();\n\t\tawait this.subscribeToTopic();\n\n\t\t// Create SQS connection for the subscriber\n\t\tconst sqsConnection = new SQSConnection({\n\t\t\tqueueUrl: this.queueUrl!,\n\t\t\tregion: (this.connection as any).config.region,\n\t\t\tendpoint: (this.connection as any).config.endpoint,\n\t\t\tcredentials: (this.connection as any).config.credentials,\n\t\t});\n\t\tawait sqsConnection.connect();\n\n\t\t// Use SQSSubscriber to receive messages, with topic filtering\n\t\tthis.sqsSubscriber = new SQSSubscriber<TMessage>(sqsConnection, {\n\t\t\twaitTimeSeconds: this.options.waitTimeSeconds,\n\t\t\tmaxMessages: this.options.maxMessages,\n\t\t\texpectedTopicArn: this.connection.topicArn,\n\t\t});\n\n\t\tawait this.sqsSubscriber.subscribe(messages, listener);\n\t}\n\n\t/**\n\t * Stop receiving messages and clean up resources\n\t */\n\tasync stop(): Promise<void> {\n\t\t// Stop SQS subscriber\n\t\tif (this.sqsSubscriber) {\n\t\t\tthis.sqsSubscriber.stop();\n\t\t}\n\n\t\t// Unsubscribe from topic\n\t\tif (this.subscriptionArn) {\n\t\t\ttry {\n\t\t\t\tconst command = new UnsubscribeCommand({\n\t\t\t\t\tSubscriptionArn: this.subscriptionArn,\n\t\t\t\t});\n\t\t\t\tawait this.connection.snsClient.send(command);\n\t\t\t} catch (_error) {}\n\t\t}\n\n\t\t// Delete queue if configured\n\t\tif (this.queueUrl && this.options.deleteQueueOnClose) {\n\t\t\ttry {\n\t\t\t\tconst command = new DeleteQueueCommand({\n\t\t\t\t\tQueueUrl: this.queueUrl,\n\t\t\t\t});\n\t\t\t\tawait this.sqsClient.send(command);\n\t\t\t} catch (_error) {}\n\t\t}\n\n\t\tthis.sqsClient.destroy();\n\t}\n\n\tprivate async setupQueue(): Promise<void> {\n\t\tif (this.options.createQueue) {\n\t\t\t// Create queue\n\t\t\tconst createCommand = new CreateQueueCommand({\n\t\t\t\tQueueName: this.options.queueName,\n\t\t\t});\n\t\t\tconst response = await this.sqsClient.send(createCommand);\n\t\t\tthis.queueUrl = response.QueueUrl!;\n\t\t} else {\n\t\t\tthrow new Error('Queue must exist or createQueue option must be true');\n\t\t}\n\n\t\t// Get queue ARN\n\t\tconst attrsCommand = new GetQueueAttributesCommand({\n\t\t\tQueueUrl: this.queueUrl,\n\t\t\tAttributeNames: ['QueueArn'],\n\t\t});\n\t\tconst attrsResponse = await this.sqsClient.send(attrsCommand);\n\t\tthis.queueArn = attrsResponse.Attributes?.QueueArn!;\n\n\t\t// Set queue policy to allow SNS\n\t\tawait this.setQueuePolicy();\n\t}\n\n\tprivate async setQueuePolicy(): Promise<void> {\n\t\tconst policy = {\n\t\t\tVersion: '2012-10-17',\n\t\t\tStatement: [\n\t\t\t\t{\n\t\t\t\t\tEffect: 'Allow',\n\t\t\t\t\tPrincipal: '*',\n\t\t\t\t\tAction: 'SQS:SendMessage',\n\t\t\t\t\tResource: this.queueArn,\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tArnEquals: {\n\t\t\t\t\t\t\t'aws:SourceArn': this.connection.topicArn,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\n\t\tconst command = new SetQueueAttributesCommand({\n\t\t\tQueueUrl: this.queueUrl,\n\t\t\tAttributes: {\n\t\t\t\tPolicy: JSON.stringify(policy),\n\t\t\t},\n\t\t});\n\n\t\tawait this.sqsClient.send(command);\n\t}\n\n\tprivate async subscribeToTopic(): Promise<void> {\n\t\tconst command = new SubscribeCommand({\n\t\t\tTopicArn: this.connection.topicArn,\n\t\t\tProtocol: 'sqs',\n\t\t\tEndpoint: this.queueArn,\n\t\t});\n\n\t\tconst response = await this.connection.snsClient.send(command);\n\t\tthis.subscriptionArn = response.SubscriptionArn!;\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SNSSubscriber-ZE_-Hsps.cjs","names":["connection: SNSConnection","options: SNSSubscriberOptions","SQSClient","connectionString: string","messages: TMessage['type'][]","listener: (payload: TMessage) => Promise<void>","SQSConnection","SQSSubscriber","UnsubscribeCommand","DeleteQueueCommand","CreateQueueCommand","GetQueueAttributesCommand","SetQueueAttributesCommand","SubscribeCommand"],"sources":["../src/sns/SNSSubscriber.ts"],"sourcesContent":["import { SubscribeCommand, UnsubscribeCommand } from '@aws-sdk/client-sns';\nimport {\n\tCreateQueueCommand,\n\tDeleteQueueCommand,\n\tGetQueueAttributesCommand,\n\tSetQueueAttributesCommand,\n\tSQSClient,\n} from '@aws-sdk/client-sqs';\nimport { SQSConnection } from '../sqs/SQSConnection';\nimport { SQSSubscriber } from '../sqs/SQSSubscriber';\nimport type { EventSubscriber, PublishableMessage } from '../types';\nimport type { SNSConnection } from './SNSConnection';\n\nexport interface SNSSubscriberOptions {\n\tqueueName?: string; // Optional queue name (defaults to auto-generated)\n\tcreateQueue?: boolean; // Auto-create SQS queue (default: true)\n\tdeleteQueueOnClose?: boolean; // Delete queue when subscriber closes (default: false for named queues, true for auto-generated)\n\twaitTimeSeconds?: number; // SQS long polling (default: 20)\n\tmaxMessages?: number; // Max messages per poll (default: 10)\n}\n\n/**\n * SNS Subscriber - receives push-based messages from SNS via SQS queue\n *\n * Architecture:\n * SNS Topic → (push) → SQS Queue → Subscriber\n *\n * This subscriber automatically:\n * 1. Creates an SQS queue (or uses existing one)\n * 2. Subscribes the queue to the SNS topic\n * 3. Receives messages pushed from SNS to the queue\n * 4. Filters messages by topic ARN and message type\n * 5. Processes and acknowledges messages\n *\n * Note: While SQS long-polling is used internally to receive messages,\n * this is an implementation detail of the SNS push delivery mechanism.\n * Messages are pushed from SNS to SQS, and we receive those pushed messages.\n */\nexport class SNSSubscriber<TMessage extends PublishableMessage<string, any>>\n\timplements EventSubscriber<TMessage>\n{\n\tprivate sqsClient: SQSClient;\n\tprivate queueUrl?: string;\n\tprivate queueArn?: string;\n\tprivate subscriptionArn?: string;\n\tprivate sqsSubscriber?: SQSSubscriber<TMessage>;\n\tprivate options: Required<SNSSubscriberOptions>;\n\n\tconstructor(\n\t\tprivate connection: SNSConnection,\n\t\toptions: SNSSubscriberOptions = {},\n\t) {\n\t\tthis.options = {\n\t\t\tqueueName:\n\t\t\t\toptions.queueName ||\n\t\t\t\t`sns-sub-${Date.now()}-${Math.random().toString(36).substring(7)}`,\n\t\t\tcreateQueue: options.createQueue ?? true,\n\t\t\tdeleteQueueOnClose: options.deleteQueueOnClose ?? !options.queueName, // Delete auto-generated queues\n\t\t\twaitTimeSeconds: options.waitTimeSeconds ?? 20,\n\t\t\tmaxMessages: options.maxMessages ?? 10,\n\t\t};\n\n\t\t// Create SQS client with same config as SNS\n\t\tthis.sqsClient = new SQSClient({\n\t\t\tregion: (this.connection as any).config.region,\n\t\t\tendpoint: (this.connection as any).config.endpoint,\n\t\t\tcredentials: (this.connection as any).config.credentials,\n\t\t});\n\t}\n\n\t/**\n\t * Create an SNSSubscriber from a connection string\n\t * Format: sns://?topicArn=...&queueName=myqueue&region=us-east-1\n\t */\n\tstatic async fromConnectionString<\n\t\tTMessage extends PublishableMessage<string, any>,\n\t>(connectionString: string): Promise<SNSSubscriber<TMessage>> {\n\t\tconst url = new URL(connectionString);\n\t\tconst params = url.searchParams;\n\n\t\tconst { SNSConnection } = await import('./SNSConnection');\n\t\tconst connection =\n\t\t\tawait SNSConnection.fromConnectionString(connectionString);\n\n\t\tconst options: SNSSubscriberOptions = {\n\t\t\tqueueName: params.get('queueName') || undefined,\n\t\t\tcreateQueue: params.get('createQueue') !== 'false',\n\t\t\tdeleteQueueOnClose: params.get('deleteQueueOnClose') === 'true',\n\t\t\twaitTimeSeconds: params.get('waitTimeSeconds')\n\t\t\t\t? Number.parseInt(params.get('waitTimeSeconds')!, 10)\n\t\t\t\t: undefined,\n\t\t};\n\n\t\treturn new SNSSubscriber<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\t// Setup SQS queue and SNS subscription\n\t\tawait this.setupQueue();\n\t\tawait this.subscribeToTopic();\n\n\t\t// Create SQS connection for the subscriber\n\t\tconst sqsConnection = new SQSConnection({\n\t\t\tqueueUrl: this.queueUrl!,\n\t\t\tregion: (this.connection as any).config.region,\n\t\t\tendpoint: (this.connection as any).config.endpoint,\n\t\t\tcredentials: (this.connection as any).config.credentials,\n\t\t});\n\t\tawait sqsConnection.connect();\n\n\t\t// Use SQSSubscriber to receive messages, with topic filtering\n\t\tthis.sqsSubscriber = new SQSSubscriber<TMessage>(sqsConnection, {\n\t\t\twaitTimeSeconds: this.options.waitTimeSeconds,\n\t\t\tmaxMessages: this.options.maxMessages,\n\t\t\texpectedTopicArn: this.connection.topicArn,\n\t\t});\n\n\t\tawait this.sqsSubscriber.subscribe(messages, listener);\n\t}\n\n\t/**\n\t * Stop receiving messages and clean up resources\n\t */\n\tasync stop(): Promise<void> {\n\t\t// Stop SQS subscriber\n\t\tif (this.sqsSubscriber) {\n\t\t\tthis.sqsSubscriber.stop();\n\t\t}\n\n\t\t// Unsubscribe from topic\n\t\tif (this.subscriptionArn) {\n\t\t\ttry {\n\t\t\t\tconst command = new UnsubscribeCommand({\n\t\t\t\t\tSubscriptionArn: this.subscriptionArn,\n\t\t\t\t});\n\t\t\t\tawait this.connection.snsClient.send(command);\n\t\t\t} catch (_error) {}\n\t\t}\n\n\t\t// Delete queue if configured\n\t\tif (this.queueUrl && this.options.deleteQueueOnClose) {\n\t\t\ttry {\n\t\t\t\tconst command = new DeleteQueueCommand({\n\t\t\t\t\tQueueUrl: this.queueUrl,\n\t\t\t\t});\n\t\t\t\tawait this.sqsClient.send(command);\n\t\t\t} catch (_error) {}\n\t\t}\n\n\t\tthis.sqsClient.destroy();\n\t}\n\n\tprivate async setupQueue(): Promise<void> {\n\t\tif (this.options.createQueue) {\n\t\t\t// Create queue\n\t\t\tconst createCommand = new CreateQueueCommand({\n\t\t\t\tQueueName: this.options.queueName,\n\t\t\t});\n\t\t\tconst response = await this.sqsClient.send(createCommand);\n\t\t\tthis.queueUrl = response.QueueUrl!;\n\t\t} else {\n\t\t\tthrow new Error('Queue must exist or createQueue option must be true');\n\t\t}\n\n\t\t// Get queue ARN\n\t\tconst attrsCommand = new GetQueueAttributesCommand({\n\t\t\tQueueUrl: this.queueUrl,\n\t\t\tAttributeNames: ['QueueArn'],\n\t\t});\n\t\tconst attrsResponse = await this.sqsClient.send(attrsCommand);\n\t\tthis.queueArn = attrsResponse.Attributes?.QueueArn!;\n\n\t\t// Set queue policy to allow SNS\n\t\tawait this.setQueuePolicy();\n\t}\n\n\tprivate async setQueuePolicy(): Promise<void> {\n\t\tconst policy = {\n\t\t\tVersion: '2012-10-17',\n\t\t\tStatement: [\n\t\t\t\t{\n\t\t\t\t\tEffect: 'Allow',\n\t\t\t\t\tPrincipal: '*',\n\t\t\t\t\tAction: 'SQS:SendMessage',\n\t\t\t\t\tResource: this.queueArn,\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tArnEquals: {\n\t\t\t\t\t\t\t'aws:SourceArn': this.connection.topicArn,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\n\t\tconst command = new SetQueueAttributesCommand({\n\t\t\tQueueUrl: this.queueUrl,\n\t\t\tAttributes: {\n\t\t\t\tPolicy: JSON.stringify(policy),\n\t\t\t},\n\t\t});\n\n\t\tawait this.sqsClient.send(command);\n\t}\n\n\tprivate async subscribeToTopic(): Promise<void> {\n\t\tconst command = new SubscribeCommand({\n\t\t\tTopicArn: this.connection.topicArn,\n\t\t\tProtocol: 'sqs',\n\t\t\tEndpoint: this.queueArn,\n\t\t});\n\n\t\tconst response = await this.connection.snsClient.send(command);\n\t\tthis.subscriptionArn = response.SubscriptionArn!;\n\t}\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { EventSubscriber, PublishableMessage } from "./types-DSVsPgKd.mjs";
2
- import { SNSConnection } from "./SNSConnection-mHb10nQ6.mjs";
1
+ import { EventSubscriber, PublishableMessage } from "./types-Dj23od3e.cjs";
2
+ import { SNSConnection } from "./SNSConnection-Dol9FuxA.cjs";
3
3
 
4
4
  //#region src/sns/SNSSubscriber.d.ts
5
5
  interface SNSSubscriberOptions {
@@ -52,4 +52,4 @@ declare class SNSSubscriber<TMessage extends PublishableMessage<string, any>> im
52
52
  //# sourceMappingURL=SNSSubscriber.d.ts.map
53
53
  //#endregion
54
54
  export { SNSSubscriber, SNSSubscriberOptions };
55
- //# sourceMappingURL=SNSSubscriber-Dwo8391f.d.mts.map
55
+ //# sourceMappingURL=SNSSubscriber-ZGJjhXFQ.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SNSSubscriber-Dwo8391f.d.mts","names":[],"sources":["../src/sns/SNSSubscriber.ts"],"sourcesContent":[],"mappings":";;;;UAaiB,oBAAA;;EAAA,WAAA,CAAA,EAAA,OAAA;EAyBJ,kBAAa,CAAA,EAAA,OAAA;EAAA,eAAA,CAAA,EAAA,MAAA;EAAA,WAAkB,CAAA,EAAA,MAAA;;;;;;;;;;;;;;AACjB;;;;;cADd,+BAA+B,4CAChC,gBAAgB;;;;;;;;0BAUN,yBACX;;;;;+CAyBQ,4DACW,QAAQ,cAAc;sBAqBxC,wCACU,aAAa,gBAC/B;;;;UA2BW"}
1
+ {"version":3,"file":"SNSSubscriber-ZGJjhXFQ.d.cts","names":[],"sources":["../src/sns/SNSSubscriber.ts"],"sourcesContent":[],"mappings":";;;;UAaiB,oBAAA;;EAAA,WAAA,CAAA,EAAA,OAAA;EAyBJ,kBAAa,CAAA,EAAA,OAAA;EAAA,eAAA,CAAA,EAAA,MAAA;EAAA,WAAkB,CAAA,EAAA,MAAA;;;;;;;;;;;;;;AACjB;;;;;cADd,+BAA+B,4CAChC,gBAAgB;;;;;;;;0BAUN,yBACX;;;;;+CAyBQ,4DACW,QAAQ,cAAc;sBAqBxC,wCACU,aAAa,gBAC/B;;;;UA2BW"}