@geekmidas/events 0.1.0 → 0.2.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 (251) hide show
  1. package/dist/{BasicConnection-C4_Y0nIj.d.mts → BasicConnection-BTRsXiuH.d.cts} +3 -2
  2. package/dist/BasicConnection-BTRsXiuH.d.cts.map +1 -0
  3. package/dist/{BasicConnection-Bz3F2rXA.cjs → BasicConnection-C-Cg2FJT.cjs} +1 -1
  4. package/dist/BasicConnection-C-Cg2FJT.cjs.map +1 -0
  5. package/dist/{BasicConnection-DOSOFSsW.mjs → BasicConnection-CpwybcC9.mjs} +1 -1
  6. package/dist/BasicConnection-CpwybcC9.mjs.map +1 -0
  7. package/dist/{BasicConnection-CddnULuT.d.cts → BasicConnection-DIxtA7jK.d.mts} +3 -2
  8. package/dist/BasicConnection-DIxtA7jK.d.mts.map +1 -0
  9. package/dist/{BasicPublisher-afwuA4Xp.cjs → BasicPublisher-CXAVKxgq.cjs} +1 -1
  10. package/dist/BasicPublisher-CXAVKxgq.cjs.map +1 -0
  11. package/dist/{BasicPublisher-DCBxaTwC.d.mts → BasicPublisher-CpJFK2oS.d.mts} +5 -3
  12. package/dist/BasicPublisher-CpJFK2oS.d.mts.map +1 -0
  13. package/dist/{BasicPublisher-V5hELHG9.d.cts → BasicPublisher-D1q0a2xp.d.cts} +5 -3
  14. package/dist/BasicPublisher-D1q0a2xp.d.cts.map +1 -0
  15. package/dist/{BasicPublisher-CaX8GCUi.mjs → BasicPublisher-DogbeHAH.mjs} +1 -1
  16. package/dist/BasicPublisher-DogbeHAH.mjs.map +1 -0
  17. package/dist/{BasicSubscriber-BB3aKeph.d.mts → BasicSubscriber-6w0Af4DD.d.mts} +5 -3
  18. package/dist/BasicSubscriber-6w0Af4DD.d.mts.map +1 -0
  19. package/dist/{BasicSubscriber-DPpJNUUY.mjs → BasicSubscriber-BJSZN22M.mjs} +2 -4
  20. package/dist/BasicSubscriber-BJSZN22M.mjs.map +1 -0
  21. package/dist/{BasicSubscriber-DOwgFw5j.d.cts → BasicSubscriber-DXxQewjc.d.cts} +5 -3
  22. package/dist/BasicSubscriber-DXxQewjc.d.cts.map +1 -0
  23. package/dist/{BasicSubscriber-Ckf3BkxS.cjs → BasicSubscriber-mVJRMXhZ.cjs} +2 -4
  24. package/dist/BasicSubscriber-mVJRMXhZ.cjs.map +1 -0
  25. package/dist/{EventConnection-DZhn1Msl.d.cts → EventConnection-BaJRXdg7.d.cts} +2 -2
  26. package/dist/EventConnection-BaJRXdg7.d.cts.map +1 -0
  27. package/dist/EventConnection-ClLMoIUU.mjs.map +1 -1
  28. package/dist/EventConnection-F_N81SXu.cjs.map +1 -1
  29. package/dist/{EventConnection-DeXfLGom.d.mts → EventConnection-SOhtmxib.d.mts} +2 -2
  30. package/dist/EventConnection-SOhtmxib.d.mts.map +1 -0
  31. package/dist/EventConnection.d.cts +2 -2
  32. package/dist/EventConnection.d.mts +2 -2
  33. package/dist/{Publisher-C3m8JFXm.d.mts → Publisher-1CfcYRnm.d.mts} +4 -2
  34. package/dist/Publisher-1CfcYRnm.d.mts.map +1 -0
  35. package/dist/{Publisher-nXNVjL0e.d.cts → Publisher-BfNgvHwQ.d.cts} +4 -2
  36. package/dist/Publisher-BfNgvHwQ.d.cts.map +1 -0
  37. package/dist/Publisher-DS0aOh8r.mjs.map +1 -1
  38. package/dist/Publisher-ceu6OxCj.cjs.map +1 -1
  39. package/dist/Publisher.d.cts +2 -2
  40. package/dist/Publisher.d.mts +2 -2
  41. package/dist/{RabbitMQConnection-BN_GybOv.cjs → RabbitMQConnection-Blj9Lo05.cjs} +2 -2
  42. package/dist/RabbitMQConnection-Blj9Lo05.cjs.map +1 -0
  43. package/dist/{RabbitMQConnection-7cWp_-_Q.d.cts → RabbitMQConnection-Bm8VCI2R.d.cts} +3 -2
  44. package/dist/RabbitMQConnection-Bm8VCI2R.d.cts.map +1 -0
  45. package/dist/{RabbitMQConnection-C2HC7J7K.d.mts → RabbitMQConnection-Ck-ktCp_.d.mts} +3 -2
  46. package/dist/RabbitMQConnection-Ck-ktCp_.d.mts.map +1 -0
  47. package/dist/{RabbitMQConnection-eVOVS4Dl.mjs → RabbitMQConnection-Co7f5Xsx.mjs} +2 -2
  48. package/dist/RabbitMQConnection-Co7f5Xsx.mjs.map +1 -0
  49. package/dist/{RabbitMQPublisher-CSCn6gMA.cjs → RabbitMQPublisher--DL6GM6g.cjs} +1 -1
  50. package/dist/RabbitMQPublisher--DL6GM6g.cjs.map +1 -0
  51. package/dist/{RabbitMQPublisher-CpcbgrXj.d.cts → RabbitMQPublisher-COnxcWEZ.d.mts} +5 -3
  52. package/dist/RabbitMQPublisher-COnxcWEZ.d.mts.map +1 -0
  53. package/dist/{RabbitMQPublisher-BZX0edgL.mjs → RabbitMQPublisher-o_oVI3wr.mjs} +1 -1
  54. package/dist/RabbitMQPublisher-o_oVI3wr.mjs.map +1 -0
  55. package/dist/{RabbitMQPublisher-DDZi15Ro.d.mts → RabbitMQPublisher-qQT7-1-p.d.cts} +5 -3
  56. package/dist/RabbitMQPublisher-qQT7-1-p.d.cts.map +1 -0
  57. package/dist/{RabbitMQSubscriber-Cj7qLIi6.cjs → RabbitMQSubscriber-C8MYAihn.cjs} +2 -3
  58. package/dist/RabbitMQSubscriber-C8MYAihn.cjs.map +1 -0
  59. package/dist/{RabbitMQSubscriber-BJ9PTGny.d.cts → RabbitMQSubscriber-C_sZjDPU.d.mts} +5 -3
  60. package/dist/RabbitMQSubscriber-C_sZjDPU.d.mts.map +1 -0
  61. package/dist/{RabbitMQSubscriber-CIvIw8MG.d.mts → RabbitMQSubscriber-D12sssMb.d.cts} +5 -3
  62. package/dist/RabbitMQSubscriber-D12sssMb.d.cts.map +1 -0
  63. package/dist/{RabbitMQSubscriber-B5I-hBaT.mjs → RabbitMQSubscriber-DlGL0pC2.mjs} +2 -3
  64. package/dist/RabbitMQSubscriber-DlGL0pC2.mjs.map +1 -0
  65. package/dist/{SNSConnection-CAImaMM2.d.mts → SNSConnection-BDfQrVBO.d.cts} +3 -2
  66. package/dist/SNSConnection-BDfQrVBO.d.cts.map +1 -0
  67. package/dist/{SNSConnection-DVEE3XoC.mjs → SNSConnection-D7wCf9Si.mjs} +1 -1
  68. package/dist/SNSConnection-D7wCf9Si.mjs.map +1 -0
  69. package/dist/{SNSConnection-CZz_U56V.cjs → SNSConnection-DVsC_pbB.cjs} +1 -1
  70. package/dist/SNSConnection-DVsC_pbB.cjs.map +1 -0
  71. package/dist/{SNSConnection-Cqbr7-Ho.d.cts → SNSConnection-mHb10nQ6.d.mts} +3 -2
  72. package/dist/SNSConnection-mHb10nQ6.d.mts.map +1 -0
  73. package/dist/{SNSPublisher-DbWVH-g_.cjs → SNSPublisher-BoA8uLnw.cjs} +2 -3
  74. package/dist/SNSPublisher-BoA8uLnw.cjs.map +1 -0
  75. package/dist/{SNSPublisher-Dkhb4LU-.d.mts → SNSPublisher-CM7UAWtf.d.mts} +7 -6
  76. package/dist/SNSPublisher-CM7UAWtf.d.mts.map +1 -0
  77. package/dist/{SNSPublisher-Do-FMUyT.mjs → SNSPublisher-Drr4kHn6.mjs} +2 -3
  78. package/dist/SNSPublisher-Drr4kHn6.mjs.map +1 -0
  79. package/dist/{SNSPublisher-RVZFa7kL.d.cts → SNSPublisher-kpsSlGDn.d.cts} +7 -6
  80. package/dist/SNSPublisher-kpsSlGDn.d.cts.map +1 -0
  81. package/dist/{SNSSubscriber-e7eG48yJ.mjs → SNSSubscriber-CBIvQpqK.mjs} +5 -9
  82. package/dist/SNSSubscriber-CBIvQpqK.mjs.map +1 -0
  83. package/dist/{SNSSubscriber-DpEwQ8Tb.cjs → SNSSubscriber-CWiAJjpU.cjs} +5 -9
  84. package/dist/SNSSubscriber-CWiAJjpU.cjs.map +1 -0
  85. package/dist/{SNSSubscriber-B31JmkAE.d.mts → SNSSubscriber-DDB3--pm.d.cts} +4 -3
  86. package/dist/SNSSubscriber-DDB3--pm.d.cts.map +1 -0
  87. package/dist/{SNSSubscriber-k2UwKUxu.d.cts → SNSSubscriber-Dwo8391f.d.mts} +4 -3
  88. package/dist/SNSSubscriber-Dwo8391f.d.mts.map +1 -0
  89. package/dist/{SQSConnection-C5WFqZW7.d.mts → SQSConnection-B5Ep9Tma.d.cts} +3 -2
  90. package/dist/SQSConnection-B5Ep9Tma.d.cts.map +1 -0
  91. package/dist/{SQSConnection-geav2Rsn.d.cts → SQSConnection-BI_xOzyJ.d.mts} +3 -2
  92. package/dist/SQSConnection-BI_xOzyJ.d.mts.map +1 -0
  93. package/dist/{SQSConnection-DWYDtftQ.cjs → SQSConnection-BwNjUPr4.cjs} +1 -1
  94. package/dist/SQSConnection-BwNjUPr4.cjs.map +1 -0
  95. package/dist/{SQSConnection-BBlDWZLU.mjs → SQSConnection-Eleqqre3.mjs} +1 -1
  96. package/dist/SQSConnection-Eleqqre3.mjs.map +1 -0
  97. package/dist/{SQSPublisher-CdsayOLV.d.mts → SQSPublisher-BN1ds6SN.d.mts} +5 -3
  98. package/dist/SQSPublisher-BN1ds6SN.d.mts.map +1 -0
  99. package/dist/{SQSPublisher-Utb_FTe5.d.cts → SQSPublisher-DFTqwzRW.d.cts} +5 -3
  100. package/dist/SQSPublisher-DFTqwzRW.d.cts.map +1 -0
  101. package/dist/{SQSPublisher-B3lS2zbu.mjs → SQSPublisher-DG9o4ME3.mjs} +1 -1
  102. package/dist/SQSPublisher-DG9o4ME3.mjs.map +1 -0
  103. package/dist/{SQSPublisher-nzbSaXSH.cjs → SQSPublisher-Dq5353oZ.cjs} +1 -1
  104. package/dist/SQSPublisher-Dq5353oZ.cjs.map +1 -0
  105. package/dist/{SQSSubscriber-DcL9BbG1.cjs → SQSSubscriber-B4sRXVl6.cjs} +5 -12
  106. package/dist/SQSSubscriber-B4sRXVl6.cjs.map +1 -0
  107. package/dist/{SQSSubscriber-B6iL1EnX.d.cts → SQSSubscriber-BO2me_gs.d.cts} +4 -3
  108. package/dist/SQSSubscriber-BO2me_gs.d.cts.map +1 -0
  109. package/dist/{SQSSubscriber-84pFnW1z.mjs → SQSSubscriber-CVGhZ8Nr.mjs} +5 -12
  110. package/dist/SQSSubscriber-CVGhZ8Nr.mjs.map +1 -0
  111. package/dist/{SQSSubscriber-DBeE4XAR.d.mts → SQSSubscriber-FyZFfr2-.d.mts} +4 -3
  112. package/dist/SQSSubscriber-FyZFfr2-.d.mts.map +1 -0
  113. package/dist/Subscriber-Bd9hb_jp.mjs.map +1 -1
  114. package/dist/{Subscriber-Cff9EIpv.d.mts → Subscriber-BxT-KzFJ.d.mts} +4 -2
  115. package/dist/Subscriber-BxT-KzFJ.d.mts.map +1 -0
  116. package/dist/{Subscriber-CpAwcUzb.d.cts → Subscriber-DDD_4Nlx.d.cts} +4 -2
  117. package/dist/Subscriber-DDD_4Nlx.d.cts.map +1 -0
  118. package/dist/Subscriber-saVOWuMq.cjs.map +1 -1
  119. package/dist/Subscriber.d.cts +2 -2
  120. package/dist/Subscriber.d.mts +2 -2
  121. package/dist/basic/BasicConnection.cjs +1 -1
  122. package/dist/basic/BasicConnection.d.cts +2 -2
  123. package/dist/basic/BasicConnection.d.mts +2 -2
  124. package/dist/basic/BasicConnection.mjs +1 -1
  125. package/dist/basic/BasicPublisher.cjs +1 -1
  126. package/dist/basic/BasicPublisher.d.cts +3 -3
  127. package/dist/basic/BasicPublisher.d.mts +3 -3
  128. package/dist/basic/BasicPublisher.mjs +1 -1
  129. package/dist/basic/BasicSubscriber.cjs +1 -1
  130. package/dist/basic/BasicSubscriber.d.cts +3 -3
  131. package/dist/basic/BasicSubscriber.d.mts +3 -3
  132. package/dist/basic/BasicSubscriber.mjs +1 -1
  133. package/dist/basic/index.cjs +3 -3
  134. package/dist/basic/index.d.cts +4 -4
  135. package/dist/basic/index.d.mts +4 -4
  136. package/dist/basic/index.mjs +3 -3
  137. package/dist/index.d.cts +4 -4
  138. package/dist/index.d.mts +4 -4
  139. package/dist/rabbitmq/RabbitMQConnection.cjs +1 -1
  140. package/dist/rabbitmq/RabbitMQConnection.d.cts +2 -2
  141. package/dist/rabbitmq/RabbitMQConnection.d.mts +2 -2
  142. package/dist/rabbitmq/RabbitMQConnection.mjs +1 -1
  143. package/dist/rabbitmq/RabbitMQPublisher.cjs +1 -1
  144. package/dist/rabbitmq/RabbitMQPublisher.d.cts +3 -3
  145. package/dist/rabbitmq/RabbitMQPublisher.d.mts +3 -3
  146. package/dist/rabbitmq/RabbitMQPublisher.mjs +1 -1
  147. package/dist/rabbitmq/RabbitMQSubscriber.cjs +1 -1
  148. package/dist/rabbitmq/RabbitMQSubscriber.d.cts +3 -3
  149. package/dist/rabbitmq/RabbitMQSubscriber.d.mts +3 -3
  150. package/dist/rabbitmq/RabbitMQSubscriber.mjs +1 -1
  151. package/dist/rabbitmq/index.cjs +3 -3
  152. package/dist/rabbitmq/index.d.cts +4 -4
  153. package/dist/rabbitmq/index.d.mts +4 -4
  154. package/dist/rabbitmq/index.mjs +3 -3
  155. package/dist/sns/SNSConnection.cjs +1 -1
  156. package/dist/sns/SNSConnection.d.cts +2 -2
  157. package/dist/sns/SNSConnection.d.mts +2 -2
  158. package/dist/sns/SNSConnection.mjs +1 -1
  159. package/dist/sns/SNSPublisher.cjs +1 -1
  160. package/dist/sns/SNSPublisher.d.cts +3 -3
  161. package/dist/sns/SNSPublisher.d.mts +3 -3
  162. package/dist/sns/SNSPublisher.mjs +1 -1
  163. package/dist/sns/SNSSubscriber.cjs +3 -3
  164. package/dist/sns/SNSSubscriber.d.cts +3 -3
  165. package/dist/sns/SNSSubscriber.d.mts +3 -3
  166. package/dist/sns/SNSSubscriber.mjs +3 -3
  167. package/dist/sns/index.cjs +5 -5
  168. package/dist/sns/index.d.cts +4 -4
  169. package/dist/sns/index.d.mts +4 -4
  170. package/dist/sns/index.mjs +5 -5
  171. package/dist/sqs/SQSConnection.cjs +1 -1
  172. package/dist/sqs/SQSConnection.d.cts +2 -2
  173. package/dist/sqs/SQSConnection.d.mts +2 -2
  174. package/dist/sqs/SQSConnection.mjs +1 -1
  175. package/dist/sqs/SQSPublisher.cjs +1 -1
  176. package/dist/sqs/SQSPublisher.d.cts +3 -3
  177. package/dist/sqs/SQSPublisher.d.mts +3 -3
  178. package/dist/sqs/SQSPublisher.mjs +1 -1
  179. package/dist/sqs/SQSSubscriber.cjs +1 -1
  180. package/dist/sqs/SQSSubscriber.d.cts +3 -3
  181. package/dist/sqs/SQSSubscriber.d.mts +3 -3
  182. package/dist/sqs/SQSSubscriber.mjs +1 -1
  183. package/dist/sqs/index.cjs +3 -3
  184. package/dist/sqs/index.d.cts +4 -4
  185. package/dist/sqs/index.d.mts +4 -4
  186. package/dist/sqs/index.mjs +3 -3
  187. package/dist/types-B63qHVOG.mjs.map +1 -1
  188. package/dist/types-CvSMEO5z.cjs.map +1 -1
  189. package/dist/{types-D0g-o6wX.d.mts → types-DSVsPgKd.d.mts} +2 -1
  190. package/dist/types-DSVsPgKd.d.mts.map +1 -0
  191. package/dist/{types-DEGUg5BA.d.cts → types-Dmbp1U-6.d.cts} +2 -1
  192. package/dist/types-Dmbp1U-6.d.cts.map +1 -0
  193. package/dist/types.d.cts +1 -1
  194. package/dist/types.d.mts +1 -1
  195. package/package.json +1 -1
  196. package/src/EventConnection.ts +31 -31
  197. package/src/Publisher.ts +78 -78
  198. package/src/Subscriber.ts +91 -91
  199. package/src/__tests__/EventConnection.spec.ts +42 -0
  200. package/src/__tests__/Publisher.spec.ts +96 -0
  201. package/src/__tests__/Subscriber.spec.ts +91 -23
  202. package/src/basic/BasicConnection.ts +35 -35
  203. package/src/basic/BasicPublisher.ts +8 -8
  204. package/src/basic/BasicSubscriber.ts +13 -16
  205. package/src/basic/__tests__/BasicSubscriber.spec.ts +116 -116
  206. package/src/index.ts +13 -13
  207. package/src/rabbitmq/RabbitMQConnection.ts +139 -139
  208. package/src/rabbitmq/RabbitMQPublisher.ts +48 -48
  209. package/src/rabbitmq/RabbitMQSubscriber.ts +100 -102
  210. package/src/rabbitmq/__tests__/RabbitMQPublisher.spec.ts +364 -364
  211. package/src/rabbitmq/__tests__/RabbitMQSubscriber.spec.ts +204 -204
  212. package/src/rabbitmq/index.ts +3 -3
  213. package/src/sns/SNSConnection.ts +76 -76
  214. package/src/sns/SNSPublisher.ts +54 -56
  215. package/src/sns/SNSSubscriber.ts +187 -191
  216. package/src/sns/__tests__/SNS-SQS-Integration.spec.ts +321 -321
  217. package/src/sns/__tests__/SNSPublisher.spec.ts +449 -0
  218. package/src/sns/__tests__/SNSSubscriber.spec.ts +527 -0
  219. package/src/sns/index.ts +3 -3
  220. package/src/sqs/SQSConnection.ts +75 -75
  221. package/src/sqs/SQSPublisher.ts +93 -93
  222. package/src/sqs/SQSSubscriber.ts +157 -165
  223. package/src/sqs/__tests__/SQSPublisher.spec.ts +178 -178
  224. package/src/sqs/index.ts +3 -3
  225. package/src/types.ts +28 -29
  226. package/tsconfig.json +9 -0
  227. package/tsdown.config.ts +1 -1
  228. package/dist/BasicConnection-Bz3F2rXA.cjs.map +0 -1
  229. package/dist/BasicConnection-DOSOFSsW.mjs.map +0 -1
  230. package/dist/BasicPublisher-CaX8GCUi.mjs.map +0 -1
  231. package/dist/BasicPublisher-afwuA4Xp.cjs.map +0 -1
  232. package/dist/BasicSubscriber-Ckf3BkxS.cjs.map +0 -1
  233. package/dist/BasicSubscriber-DPpJNUUY.mjs.map +0 -1
  234. package/dist/RabbitMQConnection-BN_GybOv.cjs.map +0 -1
  235. package/dist/RabbitMQConnection-eVOVS4Dl.mjs.map +0 -1
  236. package/dist/RabbitMQPublisher-BZX0edgL.mjs.map +0 -1
  237. package/dist/RabbitMQPublisher-CSCn6gMA.cjs.map +0 -1
  238. package/dist/RabbitMQSubscriber-B5I-hBaT.mjs.map +0 -1
  239. package/dist/RabbitMQSubscriber-Cj7qLIi6.cjs.map +0 -1
  240. package/dist/SNSConnection-CZz_U56V.cjs.map +0 -1
  241. package/dist/SNSConnection-DVEE3XoC.mjs.map +0 -1
  242. package/dist/SNSPublisher-DbWVH-g_.cjs.map +0 -1
  243. package/dist/SNSPublisher-Do-FMUyT.mjs.map +0 -1
  244. package/dist/SNSSubscriber-DpEwQ8Tb.cjs.map +0 -1
  245. package/dist/SNSSubscriber-e7eG48yJ.mjs.map +0 -1
  246. package/dist/SQSConnection-BBlDWZLU.mjs.map +0 -1
  247. package/dist/SQSConnection-DWYDtftQ.cjs.map +0 -1
  248. package/dist/SQSPublisher-B3lS2zbu.mjs.map +0 -1
  249. package/dist/SQSPublisher-nzbSaXSH.cjs.map +0 -1
  250. package/dist/SQSSubscriber-84pFnW1z.mjs.map +0 -1
  251. package/dist/SQSSubscriber-DcL9BbG1.cjs.map +0 -1
@@ -3,96 +3,96 @@ import type { EventConnection } from '../types';
3
3
  import { EventPublisherType } from '../types';
4
4
 
5
5
  export interface SNSConnectionConfig {
6
- topicArn: string;
7
- region?: string;
8
- endpoint?: string; // Custom endpoint (e.g., for LocalStack)
9
- credentials?: {
10
- accessKeyId: string;
11
- secretAccessKey: string;
12
- sessionToken?: string;
13
- };
6
+ topicArn: string;
7
+ region?: string;
8
+ endpoint?: string; // Custom endpoint (e.g., for LocalStack)
9
+ credentials?: {
10
+ accessKeyId: string;
11
+ secretAccessKey: string;
12
+ sessionToken?: string;
13
+ };
14
14
  }
15
15
 
16
16
  export class SNSConnection implements EventConnection {
17
- readonly type = EventPublisherType.SNS;
18
- private client: SNSClient;
19
- private connected = false;
20
- private config: SNSConnectionConfig;
17
+ readonly type = EventPublisherType.SNS;
18
+ private client: SNSClient;
19
+ private connected = false;
20
+ private config: SNSConnectionConfig;
21
21
 
22
- constructor(config: SNSConnectionConfig) {
23
- this.config = config;
22
+ constructor(config: SNSConnectionConfig) {
23
+ this.config = config;
24
24
 
25
- const clientConfig: SNSClientConfig = {
26
- region: config.region,
27
- endpoint: config.endpoint,
28
- credentials: config.credentials,
29
- };
25
+ const clientConfig: SNSClientConfig = {
26
+ region: config.region,
27
+ endpoint: config.endpoint,
28
+ credentials: config.credentials,
29
+ };
30
30
 
31
- this.client = new SNSClient(clientConfig);
32
- }
31
+ this.client = new SNSClient(clientConfig);
32
+ }
33
33
 
34
- /**
35
- * Create an SNSConnection from a connection string
36
- * Format: sns://?topicArn=arn:aws:sns:region:account:topic&region=us-east-1&endpoint=http://localhost:4566
37
- */
38
- static async fromConnectionString(
39
- connectionString: string,
40
- ): Promise<SNSConnection> {
41
- const url = new URL(connectionString);
42
- const params = url.searchParams;
34
+ /**
35
+ * Create an SNSConnection from a connection string
36
+ * Format: sns://?topicArn=arn:aws:sns:region:account:topic&region=us-east-1&endpoint=http://localhost:4566
37
+ */
38
+ static async fromConnectionString(
39
+ connectionString: string,
40
+ ): Promise<SNSConnection> {
41
+ const url = new URL(connectionString);
42
+ const params = url.searchParams;
43
43
 
44
- const topicArn = params.get('topicArn');
45
- if (!topicArn) {
46
- throw new Error('topicArn parameter is required in connection string');
47
- }
44
+ const topicArn = params.get('topicArn');
45
+ if (!topicArn) {
46
+ throw new Error('topicArn parameter is required in connection string');
47
+ }
48
48
 
49
- const config: SNSConnectionConfig = {
50
- topicArn,
51
- region: params.get('region') || undefined,
52
- endpoint: params.get('endpoint') || undefined,
53
- };
49
+ const config: SNSConnectionConfig = {
50
+ topicArn,
51
+ region: params.get('region') || undefined,
52
+ endpoint: params.get('endpoint') || undefined,
53
+ };
54
54
 
55
- // Parse credentials if provided
56
- const accessKeyId = params.get('accessKeyId');
57
- const secretAccessKey = params.get('secretAccessKey');
58
- if (accessKeyId && secretAccessKey) {
59
- config.credentials = {
60
- accessKeyId,
61
- secretAccessKey,
62
- sessionToken: params.get('sessionToken') || undefined,
63
- };
64
- }
55
+ // Parse credentials if provided
56
+ const accessKeyId = params.get('accessKeyId');
57
+ const secretAccessKey = params.get('secretAccessKey');
58
+ if (accessKeyId && secretAccessKey) {
59
+ config.credentials = {
60
+ accessKeyId,
61
+ secretAccessKey,
62
+ sessionToken: params.get('sessionToken') || undefined,
63
+ };
64
+ }
65
65
 
66
- const connection = new SNSConnection(config);
67
- await connection.connect();
68
- return connection;
69
- }
66
+ const connection = new SNSConnection(config);
67
+ await connection.connect();
68
+ return connection;
69
+ }
70
70
 
71
- async connect(): Promise<void> {
72
- // SNS doesn't have a traditional connection, but we mark as connected
73
- this.connected = true;
74
- }
71
+ async connect(): Promise<void> {
72
+ // SNS doesn't have a traditional connection, but we mark as connected
73
+ this.connected = true;
74
+ }
75
75
 
76
- async close(): Promise<void> {
77
- this.client.destroy();
78
- this.connected = false;
79
- }
76
+ async close(): Promise<void> {
77
+ this.client.destroy();
78
+ this.connected = false;
79
+ }
80
80
 
81
- isConnected(): boolean {
82
- return this.connected;
83
- }
81
+ isConnected(): boolean {
82
+ return this.connected;
83
+ }
84
84
 
85
- /**
86
- * Get the underlying SNS client
87
- */
88
- get snsClient(): SNSClient {
89
- return this.client;
90
- }
85
+ /**
86
+ * Get the underlying SNS client
87
+ */
88
+ get snsClient(): SNSClient {
89
+ return this.client;
90
+ }
91
91
 
92
- /**
93
- * Get the topic ARN for this connection
94
- */
95
- get topicArn(): string {
96
- return this.config.topicArn;
97
- }
92
+ /**
93
+ * Get the topic ARN for this connection
94
+ */
95
+ get topicArn(): string {
96
+ return this.config.topicArn;
97
+ }
98
98
  }
@@ -2,63 +2,61 @@ import { PublishCommand } from '@aws-sdk/client-sns';
2
2
  import type { EventPublisher, PublishableMessage } from '../types';
3
3
  import type { SNSConnection } from './SNSConnection';
4
4
 
5
- export interface SNSPublisherOptions {
6
- // Optional publisher-specific options
7
- }
5
+ export type SNSPublisherOptions = {};
8
6
 
9
7
  export class SNSPublisher<TMessage extends PublishableMessage<string, any>>
10
- implements EventPublisher<TMessage>
8
+ implements EventPublisher<TMessage>
11
9
  {
12
- constructor(
13
- private connection: SNSConnection,
14
- private options: SNSPublisherOptions = {},
15
- ) {}
16
-
17
- /**
18
- * Create an SNSPublisher from a connection string
19
- * Format: sns://?topicArn=arn:aws:sns:region:account:topic&region=us-east-1&endpoint=http://localhost:4566
20
- */
21
- static async fromConnectionString<
22
- TMessage extends PublishableMessage<string, any>,
23
- >(connectionString: string): Promise<SNSPublisher<TMessage>> {
24
- const { SNSConnection } = await import('./SNSConnection');
25
- const connection =
26
- await SNSConnection.fromConnectionString(connectionString);
27
-
28
- return new SNSPublisher<TMessage>(connection);
29
- }
30
-
31
- async publish(messages: TMessage[]): Promise<void> {
32
- if (messages.length === 0) return;
33
-
34
- if (!this.connection.isConnected()) {
35
- await this.connection.connect();
36
- }
37
-
38
- // Publish all messages
39
- await Promise.all(messages.map((message) => this.publishMessage(message)));
40
- }
41
-
42
- private async publishMessage(message: TMessage): Promise<void> {
43
- const command = new PublishCommand({
44
- TopicArn: this.connection.topicArn,
45
- Message: JSON.stringify({
46
- type: message.type,
47
- payload: message.payload,
48
- }),
49
- MessageAttributes: {
50
- type: {
51
- DataType: 'String',
52
- StringValue: message.type,
53
- },
54
- },
55
- });
56
-
57
- await this.connection.snsClient.send(command);
58
- }
59
-
60
- async close(): Promise<void> {
61
- // Publisher doesn't own the connection
62
- // Connection should be closed by whoever created it
63
- }
10
+ constructor(
11
+ private connection: SNSConnection,
12
+ _options: SNSPublisherOptions = {},
13
+ ) {}
14
+
15
+ /**
16
+ * Create an SNSPublisher from a connection string
17
+ * Format: sns://?topicArn=arn:aws:sns:region:account:topic&region=us-east-1&endpoint=http://localhost:4566
18
+ */
19
+ static async fromConnectionString<
20
+ TMessage extends PublishableMessage<string, any>,
21
+ >(connectionString: string): Promise<SNSPublisher<TMessage>> {
22
+ const { SNSConnection } = await import('./SNSConnection');
23
+ const connection =
24
+ await SNSConnection.fromConnectionString(connectionString);
25
+
26
+ return new SNSPublisher<TMessage>(connection);
27
+ }
28
+
29
+ async publish(messages: TMessage[]): Promise<void> {
30
+ if (messages.length === 0) return;
31
+
32
+ if (!this.connection.isConnected()) {
33
+ await this.connection.connect();
34
+ }
35
+
36
+ // Publish all messages
37
+ await Promise.all(messages.map((message) => this.publishMessage(message)));
38
+ }
39
+
40
+ private async publishMessage(message: TMessage): Promise<void> {
41
+ const command = new PublishCommand({
42
+ TopicArn: this.connection.topicArn,
43
+ Message: JSON.stringify({
44
+ type: message.type,
45
+ payload: message.payload,
46
+ }),
47
+ MessageAttributes: {
48
+ type: {
49
+ DataType: 'String',
50
+ StringValue: message.type,
51
+ },
52
+ },
53
+ });
54
+
55
+ await this.connection.snsClient.send(command);
56
+ }
57
+
58
+ async close(): Promise<void> {
59
+ // Publisher doesn't own the connection
60
+ // Connection should be closed by whoever created it
61
+ }
64
62
  }