@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,45 +3,45 @@ import type { EventConnection } from '../types';
3
3
  import { EventPublisherType } from '../types';
4
4
 
5
5
  export class BasicConnection implements EventConnection {
6
- readonly type = EventPublisherType.Basic;
7
- private emitter: EventEmitter;
8
- private connected = false;
6
+ readonly type = EventPublisherType.Basic;
7
+ private emitter: EventEmitter;
8
+ private connected = false;
9
9
 
10
- constructor() {
11
- this.emitter = new EventEmitter();
12
- }
10
+ constructor() {
11
+ this.emitter = new EventEmitter();
12
+ }
13
13
 
14
- /**
15
- * Create a BasicConnection from a connection string
16
- * Format: basic://
17
- */
18
- static async fromConnectionString(
19
- _connectionString: string,
20
- ): Promise<BasicConnection> {
21
- // Basic connection doesn't need any configuration
22
- const connection = new BasicConnection();
23
- await connection.connect();
24
- return connection;
25
- }
14
+ /**
15
+ * Create a BasicConnection from a connection string
16
+ * Format: basic://
17
+ */
18
+ static async fromConnectionString(
19
+ _connectionString: string,
20
+ ): Promise<BasicConnection> {
21
+ // Basic connection doesn't need any configuration
22
+ const connection = new BasicConnection();
23
+ await connection.connect();
24
+ return connection;
25
+ }
26
26
 
27
- async connect(): Promise<void> {
28
- this.connected = true;
29
- }
27
+ async connect(): Promise<void> {
28
+ this.connected = true;
29
+ }
30
30
 
31
- async close(): Promise<void> {
32
- this.emitter.removeAllListeners();
33
- this.connected = false;
34
- }
31
+ async close(): Promise<void> {
32
+ this.emitter.removeAllListeners();
33
+ this.connected = false;
34
+ }
35
35
 
36
- isConnected(): boolean {
37
- return this.connected;
38
- }
36
+ isConnected(): boolean {
37
+ return this.connected;
38
+ }
39
39
 
40
- /**
41
- * Get the underlying EventEmitter
42
- * Used by BasicPublisher and BasicSubscriber
43
- */
44
- get eventEmitter(): EventEmitter {
45
- return this.emitter;
46
- }
40
+ /**
41
+ * Get the underlying EventEmitter
42
+ * Used by BasicPublisher and BasicSubscriber
43
+ */
44
+ get eventEmitter(): EventEmitter {
45
+ return this.emitter;
46
+ }
47
47
  }
@@ -2,14 +2,14 @@ import type { EventPublisher, PublishableMessage } from '../types';
2
2
  import type { BasicConnection } from './BasicConnection';
3
3
 
4
4
  export class BasicPublisher<TMessage extends PublishableMessage<string, any>>
5
- implements EventPublisher<TMessage>
5
+ implements EventPublisher<TMessage>
6
6
  {
7
- constructor(private connection: BasicConnection) {}
7
+ constructor(private connection: BasicConnection) {}
8
8
 
9
- async publish(messages: TMessage[]) {
10
- const emitter = this.connection.eventEmitter;
11
- for (const message of messages) {
12
- emitter.emit(message.type, message);
13
- }
14
- }
9
+ async publish(messages: TMessage[]) {
10
+ const emitter = this.connection.eventEmitter;
11
+ for (const message of messages) {
12
+ emitter.emit(message.type, message);
13
+ }
14
+ }
15
15
  }
@@ -2,23 +2,20 @@ import type { EventSubscriber, PublishableMessage } from '../types';
2
2
  import type { BasicConnection } from './BasicConnection';
3
3
 
4
4
  export class BasicSubscriber<TMessage extends PublishableMessage<string, any>>
5
- implements EventSubscriber<TMessage>
5
+ implements EventSubscriber<TMessage>
6
6
  {
7
- constructor(private connection: BasicConnection) {}
7
+ constructor(private connection: BasicConnection) {}
8
8
 
9
- async subscribe(
10
- messages: TMessage['type'][],
11
- listener: (payload: TMessage) => Promise<void>,
12
- ): Promise<void> {
13
- const emitter = this.connection.eventEmitter;
9
+ async subscribe(
10
+ messages: TMessage['type'][],
11
+ listener: (payload: TMessage) => Promise<void>,
12
+ ): Promise<void> {
13
+ const emitter = this.connection.eventEmitter;
14
14
 
15
- for (const messageType of messages) {
16
- emitter.on(messageType, (message: TMessage) => {
17
- listener(message).catch((error) => {
18
- // Log error but don't throw to prevent unhandled promise rejections
19
- console.error(`Error processing message ${messageType}:`, error);
20
- });
21
- });
22
- }
23
- }
15
+ for (const messageType of messages) {
16
+ emitter.on(messageType, (message: TMessage) => {
17
+ listener(message).catch((_error) => {});
18
+ });
19
+ }
20
+ }
24
21
  }
@@ -7,160 +7,160 @@ import { BasicSubscriber } from '../BasicSubscriber';
7
7
  type TestMessage = PublishableMessage<'user.created' | 'user.updated', any>;
8
8
 
9
9
  describe('BasicSubscriber', () => {
10
- it('should receive published messages', async () => {
11
- const connection = new BasicConnection();
12
- await connection.connect();
10
+ it('should receive published messages', async () => {
11
+ const connection = new BasicConnection();
12
+ await connection.connect();
13
13
 
14
- const publisher = new BasicPublisher<TestMessage>(connection);
15
- const subscriber = new BasicSubscriber<TestMessage>(connection);
14
+ const publisher = new BasicPublisher<TestMessage>(connection);
15
+ const subscriber = new BasicSubscriber<TestMessage>(connection);
16
16
 
17
- const receivedMessages: TestMessage[] = [];
17
+ const receivedMessages: TestMessage[] = [];
18
18
 
19
- await subscriber.subscribe(['user.created'], async (message) => {
20
- receivedMessages.push(message);
21
- });
19
+ await subscriber.subscribe(['user.created'], async (message) => {
20
+ receivedMessages.push(message);
21
+ });
22
22
 
23
- await publisher.publish([
24
- { type: 'user.created', payload: { userId: '123' } },
25
- ]);
23
+ await publisher.publish([
24
+ { type: 'user.created', payload: { userId: '123' } },
25
+ ]);
26
26
 
27
- // Give event emitter time to process
28
- await new Promise((resolve) => setTimeout(resolve, 10));
27
+ // Give event emitter time to process
28
+ await new Promise((resolve) => setTimeout(resolve, 10));
29
29
 
30
- expect(receivedMessages).toHaveLength(1);
31
- expect(receivedMessages[0]).toEqual({
32
- type: 'user.created',
33
- payload: { userId: '123' },
34
- });
30
+ expect(receivedMessages).toHaveLength(1);
31
+ expect(receivedMessages[0]).toEqual({
32
+ type: 'user.created',
33
+ payload: { userId: '123' },
34
+ });
35
35
 
36
- await connection.close();
37
- });
36
+ await connection.close();
37
+ });
38
38
 
39
- it('should receive multiple message types', async () => {
40
- const connection = new BasicConnection();
41
- await connection.connect();
39
+ it('should receive multiple message types', async () => {
40
+ const connection = new BasicConnection();
41
+ await connection.connect();
42
42
 
43
- const publisher = new BasicPublisher<TestMessage>(connection);
44
- const subscriber = new BasicSubscriber<TestMessage>(connection);
43
+ const publisher = new BasicPublisher<TestMessage>(connection);
44
+ const subscriber = new BasicSubscriber<TestMessage>(connection);
45
45
 
46
- const receivedMessages: TestMessage[] = [];
46
+ const receivedMessages: TestMessage[] = [];
47
47
 
48
- await subscriber.subscribe(
49
- ['user.created', 'user.updated'],
50
- async (message) => {
51
- receivedMessages.push(message);
52
- },
53
- );
48
+ await subscriber.subscribe(
49
+ ['user.created', 'user.updated'],
50
+ async (message) => {
51
+ receivedMessages.push(message);
52
+ },
53
+ );
54
54
 
55
- await publisher.publish([
56
- { type: 'user.created', payload: { userId: '1' } },
57
- { type: 'user.updated', payload: { userId: '2' } },
58
- { type: 'user.created', payload: { userId: '3' } },
59
- ]);
55
+ await publisher.publish([
56
+ { type: 'user.created', payload: { userId: '1' } },
57
+ { type: 'user.updated', payload: { userId: '2' } },
58
+ { type: 'user.created', payload: { userId: '3' } },
59
+ ]);
60
60
 
61
- // Give event emitter time to process
62
- await new Promise((resolve) => setTimeout(resolve, 10));
61
+ // Give event emitter time to process
62
+ await new Promise((resolve) => setTimeout(resolve, 10));
63
63
 
64
- expect(receivedMessages).toHaveLength(3);
65
- expect(receivedMessages[0].type).toBe('user.created');
66
- expect(receivedMessages[1].type).toBe('user.updated');
67
- expect(receivedMessages[2].type).toBe('user.created');
64
+ expect(receivedMessages).toHaveLength(3);
65
+ expect(receivedMessages[0].type).toBe('user.created');
66
+ expect(receivedMessages[1].type).toBe('user.updated');
67
+ expect(receivedMessages[2].type).toBe('user.created');
68
68
 
69
- await connection.close();
70
- });
69
+ await connection.close();
70
+ });
71
71
 
72
- it('should only receive subscribed message types', async () => {
73
- const connection = new BasicConnection();
74
- await connection.connect();
72
+ it('should only receive subscribed message types', async () => {
73
+ const connection = new BasicConnection();
74
+ await connection.connect();
75
75
 
76
- const publisher = new BasicPublisher<TestMessage>(connection);
77
- const subscriber = new BasicSubscriber<TestMessage>(connection);
76
+ const publisher = new BasicPublisher<TestMessage>(connection);
77
+ const subscriber = new BasicSubscriber<TestMessage>(connection);
78
78
 
79
- const receivedMessages: TestMessage[] = [];
79
+ const receivedMessages: TestMessage[] = [];
80
80
 
81
- // Only subscribe to user.created
82
- await subscriber.subscribe(['user.created'], async (message) => {
83
- receivedMessages.push(message);
84
- });
81
+ // Only subscribe to user.created
82
+ await subscriber.subscribe(['user.created'], async (message) => {
83
+ receivedMessages.push(message);
84
+ });
85
85
 
86
- await publisher.publish([
87
- { type: 'user.created', payload: { userId: '1' } },
88
- { type: 'user.updated', payload: { userId: '2' } },
89
- { type: 'user.created', payload: { userId: '3' } },
90
- ]);
86
+ await publisher.publish([
87
+ { type: 'user.created', payload: { userId: '1' } },
88
+ { type: 'user.updated', payload: { userId: '2' } },
89
+ { type: 'user.created', payload: { userId: '3' } },
90
+ ]);
91
91
 
92
- // Give event emitter time to process
93
- await new Promise((resolve) => setTimeout(resolve, 10));
92
+ // Give event emitter time to process
93
+ await new Promise((resolve) => setTimeout(resolve, 10));
94
94
 
95
- expect(receivedMessages).toHaveLength(2);
96
- expect(receivedMessages.every((m) => m.type === 'user.created')).toBe(true);
95
+ expect(receivedMessages).toHaveLength(2);
96
+ expect(receivedMessages.every((m) => m.type === 'user.created')).toBe(true);
97
97
 
98
- await connection.close();
99
- });
98
+ await connection.close();
99
+ });
100
100
 
101
- it('should handle multiple subscribers on same connection', async () => {
102
- const connection = new BasicConnection();
103
- await connection.connect();
101
+ it('should handle multiple subscribers on same connection', async () => {
102
+ const connection = new BasicConnection();
103
+ await connection.connect();
104
104
 
105
- const publisher = new BasicPublisher<TestMessage>(connection);
106
- const subscriber1 = new BasicSubscriber<TestMessage>(connection);
107
- const subscriber2 = new BasicSubscriber<TestMessage>(connection);
105
+ const publisher = new BasicPublisher<TestMessage>(connection);
106
+ const subscriber1 = new BasicSubscriber<TestMessage>(connection);
107
+ const subscriber2 = new BasicSubscriber<TestMessage>(connection);
108
108
 
109
- const messages1: TestMessage[] = [];
110
- const messages2: TestMessage[] = [];
109
+ const messages1: TestMessage[] = [];
110
+ const messages2: TestMessage[] = [];
111
111
 
112
- await subscriber1.subscribe(['user.created'], async (message) => {
113
- messages1.push(message);
114
- });
112
+ await subscriber1.subscribe(['user.created'], async (message) => {
113
+ messages1.push(message);
114
+ });
115
115
 
116
- await subscriber2.subscribe(['user.created'], async (message) => {
117
- messages2.push(message);
118
- });
116
+ await subscriber2.subscribe(['user.created'], async (message) => {
117
+ messages2.push(message);
118
+ });
119
119
 
120
- await publisher.publish([
121
- { type: 'user.created', payload: { userId: '123' } },
122
- ]);
120
+ await publisher.publish([
121
+ { type: 'user.created', payload: { userId: '123' } },
122
+ ]);
123
123
 
124
- // Give event emitter time to process
125
- await new Promise((resolve) => setTimeout(resolve, 10));
124
+ // Give event emitter time to process
125
+ await new Promise((resolve) => setTimeout(resolve, 10));
126
126
 
127
- // Both subscribers should receive the message
128
- expect(messages1).toHaveLength(1);
129
- expect(messages2).toHaveLength(1);
127
+ // Both subscribers should receive the message
128
+ expect(messages1).toHaveLength(1);
129
+ expect(messages2).toHaveLength(1);
130
130
 
131
- await connection.close();
132
- });
131
+ await connection.close();
132
+ });
133
133
 
134
- it('should handle async listener errors gracefully', async () => {
135
- const connection = new BasicConnection();
136
- await connection.connect();
134
+ it('should handle async listener errors gracefully', async () => {
135
+ const connection = new BasicConnection();
136
+ await connection.connect();
137
137
 
138
- const publisher = new BasicPublisher<TestMessage>(connection);
139
- const subscriber = new BasicSubscriber<TestMessage>(connection);
138
+ const publisher = new BasicPublisher<TestMessage>(connection);
139
+ const subscriber = new BasicSubscriber<TestMessage>(connection);
140
140
 
141
- const receivedMessages: TestMessage[] = [];
141
+ const receivedMessages: TestMessage[] = [];
142
142
 
143
- await subscriber.subscribe(['user.created'], async (message) => {
144
- if (message.payload.userId === '2') {
145
- throw new Error('Test error');
146
- }
147
- receivedMessages.push(message);
148
- });
143
+ await subscriber.subscribe(['user.created'], async (message) => {
144
+ if (message.payload.userId === '2') {
145
+ throw new Error('Test error');
146
+ }
147
+ receivedMessages.push(message);
148
+ });
149
149
 
150
- await publisher.publish([
151
- { type: 'user.created', payload: { userId: '1' } },
152
- { type: 'user.created', payload: { userId: '2' } },
153
- { type: 'user.created', payload: { userId: '3' } },
154
- ]);
150
+ await publisher.publish([
151
+ { type: 'user.created', payload: { userId: '1' } },
152
+ { type: 'user.created', payload: { userId: '2' } },
153
+ { type: 'user.created', payload: { userId: '3' } },
154
+ ]);
155
155
 
156
- // Give event emitter time to process
157
- await new Promise((resolve) => setTimeout(resolve, 10));
156
+ // Give event emitter time to process
157
+ await new Promise((resolve) => setTimeout(resolve, 10));
158
158
 
159
- // Should receive messages 1 and 3 (2 throws error)
160
- expect(receivedMessages).toHaveLength(2);
161
- expect(receivedMessages[0].payload.userId).toBe('1');
162
- expect(receivedMessages[1].payload.userId).toBe('3');
159
+ // Should receive messages 1 and 3 (2 throws error)
160
+ expect(receivedMessages).toHaveLength(2);
161
+ expect(receivedMessages[0].payload.userId).toBe('1');
162
+ expect(receivedMessages[1].payload.userId).toBe('3');
163
163
 
164
- await connection.close();
165
- });
164
+ await connection.close();
165
+ });
166
166
  });
package/src/index.ts CHANGED
@@ -1,22 +1,22 @@
1
1
  // Generic types and interfaces
2
- export type {
3
- EventConnection,
4
- EventPublisher,
5
- EventSubscriber,
6
- ExtractPublisherMessage,
7
- MappedEvent,
8
- PublishableMessage,
9
- } from './types';
10
- export { EventPublisherType } from './types';
11
2
 
12
- // Generic factories
13
- export { Publisher } from './Publisher';
3
+ export { EventConnectionFactory } from './EventConnection';
14
4
  export type { EventPublisherConnectionString } from './Publisher';
15
5
 
16
- export { Subscriber } from './Subscriber';
6
+ // Generic factories
7
+ export { Publisher } from './Publisher';
17
8
  export type { EventSubscriberConnectionString } from './Subscriber';
18
9
 
19
- export { EventConnectionFactory } from './EventConnection';
10
+ export { Subscriber } from './Subscriber';
11
+ export type {
12
+ EventConnection,
13
+ EventPublisher,
14
+ EventSubscriber,
15
+ ExtractPublisherMessage,
16
+ MappedEvent,
17
+ PublishableMessage,
18
+ } from './types';
19
+ export { EventPublisherType } from './types';
20
20
 
21
21
  // Specific integrations should be imported via subpaths:
22
22
  // - @geekmidas/events/basic