@warlock.js/herald 4.0.174 → 4.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. package/README.md +36 -33
  2. package/cjs/index.cjs +1355 -0
  3. package/cjs/index.cjs.map +1 -0
  4. package/esm/communicators/broker-registry.d.mts +157 -0
  5. package/esm/communicators/broker-registry.d.mts.map +1 -0
  6. package/esm/communicators/broker-registry.mjs +204 -0
  7. package/esm/communicators/broker-registry.mjs.map +1 -0
  8. package/esm/communicators/broker.d.mts +104 -0
  9. package/esm/communicators/broker.d.mts.map +1 -0
  10. package/esm/communicators/broker.mjs +104 -0
  11. package/esm/communicators/broker.mjs.map +1 -0
  12. package/esm/communicators/index.d.mts +2 -0
  13. package/esm/communicators/index.mjs +4 -0
  14. package/esm/contracts/broker-driver.contract.d.mts +200 -0
  15. package/esm/contracts/broker-driver.contract.d.mts.map +1 -0
  16. package/esm/contracts/channel.contract.d.mts +197 -0
  17. package/esm/contracts/channel.contract.d.mts.map +1 -0
  18. package/esm/contracts/index.d.mts +2 -0
  19. package/esm/decorators/consumable.d.mts +17 -0
  20. package/esm/decorators/consumable.d.mts.map +1 -0
  21. package/esm/decorators/consumable.mjs +36 -0
  22. package/esm/decorators/consumable.mjs.map +1 -0
  23. package/esm/decorators/index.d.mts +1 -0
  24. package/esm/decorators/index.mjs +3 -0
  25. package/esm/drivers/index.d.mts +2 -0
  26. package/esm/drivers/index.mjs +5 -0
  27. package/esm/drivers/rabbitmq/index.d.mts +2 -0
  28. package/esm/drivers/rabbitmq/index.mjs +4 -0
  29. package/esm/drivers/rabbitmq/rabbitmq-channel.d.mts +85 -0
  30. package/esm/drivers/rabbitmq/rabbitmq-channel.d.mts.map +1 -0
  31. package/esm/drivers/rabbitmq/rabbitmq-channel.mjs +352 -0
  32. package/esm/drivers/rabbitmq/rabbitmq-channel.mjs.map +1 -0
  33. package/esm/drivers/rabbitmq/rabbitmq-driver.d.mts +130 -0
  34. package/esm/drivers/rabbitmq/rabbitmq-driver.d.mts.map +1 -0
  35. package/esm/drivers/rabbitmq/rabbitmq-driver.mjs +291 -0
  36. package/esm/drivers/rabbitmq/rabbitmq-driver.mjs.map +1 -0
  37. package/esm/index.d.mts +20 -0
  38. package/esm/index.mjs +16 -0
  39. package/esm/message-managers/event-consumer.d.mts +61 -0
  40. package/esm/message-managers/event-consumer.d.mts.map +1 -0
  41. package/esm/message-managers/event-consumer.mjs +63 -0
  42. package/esm/message-managers/event-consumer.mjs.map +1 -0
  43. package/esm/message-managers/event-message.d.mts +87 -0
  44. package/esm/message-managers/event-message.d.mts.map +1 -0
  45. package/esm/message-managers/event-message.mjs +68 -0
  46. package/esm/message-managers/event-message.mjs.map +1 -0
  47. package/esm/message-managers/index.d.mts +3 -0
  48. package/esm/message-managers/index.mjs +4 -0
  49. package/esm/message-managers/prepare-consumer-subscription.mjs +42 -0
  50. package/esm/message-managers/prepare-consumer-subscription.mjs.map +1 -0
  51. package/esm/message-managers/types.d.mts +23 -0
  52. package/esm/message-managers/types.d.mts.map +1 -0
  53. package/esm/types/channel.types.d.mts +23 -0
  54. package/esm/types/channel.types.d.mts.map +1 -0
  55. package/esm/types/connection.types.d.mts +67 -0
  56. package/esm/types/connection.types.d.mts.map +1 -0
  57. package/esm/types/driver.types.d.mts +13 -0
  58. package/esm/types/driver.types.d.mts.map +1 -0
  59. package/esm/types/index.d.mts +7 -0
  60. package/esm/types/message.types.d.mts +37 -0
  61. package/esm/types/message.types.d.mts.map +1 -0
  62. package/esm/types/publish.types.d.mts +16 -0
  63. package/esm/types/publish.types.d.mts.map +1 -0
  64. package/esm/types/registry.types.d.mts +8 -0
  65. package/esm/types/registry.types.d.mts.map +1 -0
  66. package/esm/types/subscribe.types.d.mts +21 -0
  67. package/esm/types/subscribe.types.d.mts.map +1 -0
  68. package/esm/use-case-broadcast.d.mts +41 -0
  69. package/esm/use-case-broadcast.d.mts.map +1 -0
  70. package/esm/use-case-broadcast.mjs +30 -0
  71. package/esm/use-case-broadcast.mjs.map +1 -0
  72. package/esm/utils/{connect-to-broker.d.ts → connect-to-broker.d.mts} +15 -10
  73. package/esm/utils/connect-to-broker.d.mts.map +1 -0
  74. package/esm/utils/connect-to-broker.mjs +168 -0
  75. package/esm/utils/connect-to-broker.mjs.map +1 -0
  76. package/esm/utils/index.d.mts +1 -0
  77. package/esm/utils/index.mjs +3 -0
  78. package/llms-full.txt +581 -0
  79. package/llms.txt +12 -0
  80. package/package.json +46 -46
  81. package/skills/README.md +21 -0
  82. package/skills/consume-message/SKILL.md +217 -0
  83. package/skills/herald-basics/SKILL.md +96 -0
  84. package/skills/publish-message/SKILL.md +172 -0
  85. package/skills/request-and-respond/SKILL.md +74 -0
  86. package/cjs/communicators/broker-registry.d.ts +0 -155
  87. package/cjs/communicators/broker-registry.d.ts.map +0 -1
  88. package/cjs/communicators/broker-registry.js +0 -206
  89. package/cjs/communicators/broker-registry.js.map +0 -1
  90. package/cjs/communicators/broker.d.ts +0 -100
  91. package/cjs/communicators/broker.d.ts.map +0 -1
  92. package/cjs/communicators/broker.js +0 -105
  93. package/cjs/communicators/broker.js.map +0 -1
  94. package/cjs/communicators/index.d.ts +0 -3
  95. package/cjs/communicators/index.d.ts.map +0 -1
  96. package/cjs/contracts/broker-driver.contract.d.ts +0 -196
  97. package/cjs/contracts/broker-driver.contract.d.ts.map +0 -1
  98. package/cjs/contracts/channel.contract.d.ts +0 -191
  99. package/cjs/contracts/channel.contract.d.ts.map +0 -1
  100. package/cjs/contracts/index.d.ts +0 -3
  101. package/cjs/contracts/index.d.ts.map +0 -1
  102. package/cjs/decorators/consumable.d.ts +0 -13
  103. package/cjs/decorators/consumable.d.ts.map +0 -1
  104. package/cjs/decorators/consumable.js +0 -33
  105. package/cjs/decorators/consumable.js.map +0 -1
  106. package/cjs/decorators/index.d.ts +0 -2
  107. package/cjs/decorators/index.d.ts.map +0 -1
  108. package/cjs/drivers/index.d.ts +0 -2
  109. package/cjs/drivers/index.d.ts.map +0 -1
  110. package/cjs/drivers/rabbitmq/index.d.ts +0 -3
  111. package/cjs/drivers/rabbitmq/index.d.ts.map +0 -1
  112. package/cjs/drivers/rabbitmq/rabbitmq-channel.d.ts +0 -79
  113. package/cjs/drivers/rabbitmq/rabbitmq-channel.d.ts.map +0 -1
  114. package/cjs/drivers/rabbitmq/rabbitmq-channel.js +0 -414
  115. package/cjs/drivers/rabbitmq/rabbitmq-channel.js.map +0 -1
  116. package/cjs/drivers/rabbitmq/rabbitmq-driver.d.ts +0 -124
  117. package/cjs/drivers/rabbitmq/rabbitmq-driver.d.ts.map +0 -1
  118. package/cjs/drivers/rabbitmq/rabbitmq-driver.js +0 -347
  119. package/cjs/drivers/rabbitmq/rabbitmq-driver.js.map +0 -1
  120. package/cjs/index.d.ts +0 -47
  121. package/cjs/index.d.ts.map +0 -1
  122. package/cjs/index.js +0 -1
  123. package/cjs/index.js.map +0 -1
  124. package/cjs/message-managers/event-consumer.d.ts +0 -64
  125. package/cjs/message-managers/event-consumer.d.ts.map +0 -1
  126. package/cjs/message-managers/event-consumer.js +0 -71
  127. package/cjs/message-managers/event-consumer.js.map +0 -1
  128. package/cjs/message-managers/event-message.d.ts +0 -90
  129. package/cjs/message-managers/event-message.d.ts.map +0 -1
  130. package/cjs/message-managers/event-message.js +0 -84
  131. package/cjs/message-managers/event-message.js.map +0 -1
  132. package/cjs/message-managers/index.d.ts +0 -4
  133. package/cjs/message-managers/index.d.ts.map +0 -1
  134. package/cjs/message-managers/prepare-consumer-subscription.d.ts +0 -4
  135. package/cjs/message-managers/prepare-consumer-subscription.d.ts.map +0 -1
  136. package/cjs/message-managers/prepare-consumer-subscription.js +0 -40
  137. package/cjs/message-managers/prepare-consumer-subscription.js.map +0 -1
  138. package/cjs/message-managers/types.d.ts +0 -20
  139. package/cjs/message-managers/types.d.ts.map +0 -1
  140. package/cjs/types/channel.types.d.ts +0 -19
  141. package/cjs/types/channel.types.d.ts.map +0 -1
  142. package/cjs/types/connection.types.d.ts +0 -65
  143. package/cjs/types/connection.types.d.ts.map +0 -1
  144. package/cjs/types/driver.types.d.ts +0 -10
  145. package/cjs/types/driver.types.d.ts.map +0 -1
  146. package/cjs/types/index.d.ts +0 -8
  147. package/cjs/types/index.d.ts.map +0 -1
  148. package/cjs/types/message.types.d.ts +0 -34
  149. package/cjs/types/message.types.d.ts.map +0 -1
  150. package/cjs/types/publish.types.d.ts +0 -13
  151. package/cjs/types/publish.types.d.ts.map +0 -1
  152. package/cjs/types/registry.types.d.ts +0 -4
  153. package/cjs/types/registry.types.d.ts.map +0 -1
  154. package/cjs/types/subscribe.types.d.ts +0 -18
  155. package/cjs/types/subscribe.types.d.ts.map +0 -1
  156. package/cjs/utils/connect-to-broker.d.ts +0 -131
  157. package/cjs/utils/connect-to-broker.d.ts.map +0 -1
  158. package/cjs/utils/connect-to-broker.js +0 -171
  159. package/cjs/utils/connect-to-broker.js.map +0 -1
  160. package/cjs/utils/index.d.ts +0 -2
  161. package/cjs/utils/index.d.ts.map +0 -1
  162. package/esm/communicators/broker-registry.d.ts +0 -155
  163. package/esm/communicators/broker-registry.d.ts.map +0 -1
  164. package/esm/communicators/broker-registry.js +0 -206
  165. package/esm/communicators/broker-registry.js.map +0 -1
  166. package/esm/communicators/broker.d.ts +0 -100
  167. package/esm/communicators/broker.d.ts.map +0 -1
  168. package/esm/communicators/broker.js +0 -105
  169. package/esm/communicators/broker.js.map +0 -1
  170. package/esm/communicators/index.d.ts +0 -3
  171. package/esm/communicators/index.d.ts.map +0 -1
  172. package/esm/contracts/broker-driver.contract.d.ts +0 -196
  173. package/esm/contracts/broker-driver.contract.d.ts.map +0 -1
  174. package/esm/contracts/channel.contract.d.ts +0 -191
  175. package/esm/contracts/channel.contract.d.ts.map +0 -1
  176. package/esm/contracts/index.d.ts +0 -3
  177. package/esm/contracts/index.d.ts.map +0 -1
  178. package/esm/decorators/consumable.d.ts +0 -13
  179. package/esm/decorators/consumable.d.ts.map +0 -1
  180. package/esm/decorators/consumable.js +0 -33
  181. package/esm/decorators/consumable.js.map +0 -1
  182. package/esm/decorators/index.d.ts +0 -2
  183. package/esm/decorators/index.d.ts.map +0 -1
  184. package/esm/drivers/index.d.ts +0 -2
  185. package/esm/drivers/index.d.ts.map +0 -1
  186. package/esm/drivers/rabbitmq/index.d.ts +0 -3
  187. package/esm/drivers/rabbitmq/index.d.ts.map +0 -1
  188. package/esm/drivers/rabbitmq/rabbitmq-channel.d.ts +0 -79
  189. package/esm/drivers/rabbitmq/rabbitmq-channel.d.ts.map +0 -1
  190. package/esm/drivers/rabbitmq/rabbitmq-channel.js +0 -414
  191. package/esm/drivers/rabbitmq/rabbitmq-channel.js.map +0 -1
  192. package/esm/drivers/rabbitmq/rabbitmq-driver.d.ts +0 -124
  193. package/esm/drivers/rabbitmq/rabbitmq-driver.d.ts.map +0 -1
  194. package/esm/drivers/rabbitmq/rabbitmq-driver.js +0 -347
  195. package/esm/drivers/rabbitmq/rabbitmq-driver.js.map +0 -1
  196. package/esm/index.d.ts +0 -47
  197. package/esm/index.d.ts.map +0 -1
  198. package/esm/index.js +0 -1
  199. package/esm/index.js.map +0 -1
  200. package/esm/message-managers/event-consumer.d.ts +0 -64
  201. package/esm/message-managers/event-consumer.d.ts.map +0 -1
  202. package/esm/message-managers/event-consumer.js +0 -71
  203. package/esm/message-managers/event-consumer.js.map +0 -1
  204. package/esm/message-managers/event-message.d.ts +0 -90
  205. package/esm/message-managers/event-message.d.ts.map +0 -1
  206. package/esm/message-managers/event-message.js +0 -84
  207. package/esm/message-managers/event-message.js.map +0 -1
  208. package/esm/message-managers/index.d.ts +0 -4
  209. package/esm/message-managers/index.d.ts.map +0 -1
  210. package/esm/message-managers/prepare-consumer-subscription.d.ts +0 -4
  211. package/esm/message-managers/prepare-consumer-subscription.d.ts.map +0 -1
  212. package/esm/message-managers/prepare-consumer-subscription.js +0 -40
  213. package/esm/message-managers/prepare-consumer-subscription.js.map +0 -1
  214. package/esm/message-managers/types.d.ts +0 -20
  215. package/esm/message-managers/types.d.ts.map +0 -1
  216. package/esm/types/channel.types.d.ts +0 -19
  217. package/esm/types/channel.types.d.ts.map +0 -1
  218. package/esm/types/connection.types.d.ts +0 -65
  219. package/esm/types/connection.types.d.ts.map +0 -1
  220. package/esm/types/driver.types.d.ts +0 -10
  221. package/esm/types/driver.types.d.ts.map +0 -1
  222. package/esm/types/index.d.ts +0 -8
  223. package/esm/types/index.d.ts.map +0 -1
  224. package/esm/types/message.types.d.ts +0 -34
  225. package/esm/types/message.types.d.ts.map +0 -1
  226. package/esm/types/publish.types.d.ts +0 -13
  227. package/esm/types/publish.types.d.ts.map +0 -1
  228. package/esm/types/registry.types.d.ts +0 -4
  229. package/esm/types/registry.types.d.ts.map +0 -1
  230. package/esm/types/subscribe.types.d.ts +0 -18
  231. package/esm/types/subscribe.types.d.ts.map +0 -1
  232. package/esm/utils/connect-to-broker.d.ts.map +0 -1
  233. package/esm/utils/connect-to-broker.js +0 -171
  234. package/esm/utils/connect-to-broker.js.map +0 -1
  235. package/esm/utils/index.d.ts +0 -2
  236. package/esm/utils/index.d.ts.map +0 -1
@@ -1,105 +0,0 @@
1
- /**
2
- * Broker - wrapper around a driver with metadata
3
- *
4
- * Similar to DataSource in @warlock.js/cascade
5
- *
6
- * @example
7
- * ```typescript
8
- * const broker = new Broker({
9
- * name: "default",
10
- * driver: rabbitMQDriver,
11
- * isDefault: true,
12
- * });
13
- *
14
- * // Get a channel
15
- * const channel = broker.channel("user.created");
16
- * ```
17
- */
18
- class Broker {
19
- /** Unique name identifying this broker */
20
- name;
21
- /** The underlying driver */
22
- driver;
23
- /** Whether this is the default broker */
24
- isDefault;
25
- /**
26
- * Create a new Broker
27
- *
28
- * @param options - Broker configuration
29
- */
30
- constructor(options) {
31
- this.name = options.name;
32
- this.driver = options.driver;
33
- this.isDefault = Boolean(options.isDefault);
34
- }
35
- /**
36
- * Subscribe the given consumer
37
- */
38
- subscribe(consumer) {
39
- return this.driver.subscribe(consumer);
40
- }
41
- /**
42
- * Publish the given event message
43
- */
44
- publish(event) {
45
- this.driver.publish(event);
46
- }
47
- /**
48
- * Get or create a channel
49
- *
50
- * @param name - Channel name
51
- * @param options - Channel options
52
- * @returns Channel instance
53
- *
54
- * @example
55
- * ```typescript
56
- * // Simple channel
57
- * const channel = broker.channel("notifications");
58
- *
59
- * // Typed channel with schema
60
- * const orderChannel = broker.channel<OrderPayload>("orders", {
61
- * schema: OrderSchema,
62
- * durable: true,
63
- * });
64
- * ```
65
- */
66
- channel(name, options) {
67
- return this.driver.channel(name, options);
68
- }
69
- /**
70
- * Check if the broker is connected
71
- */
72
- get isConnected() {
73
- return this.driver.isConnected;
74
- }
75
- /**
76
- * Connect the underlying driver
77
- */
78
- async connect() {
79
- await this.driver.connect();
80
- }
81
- /**
82
- * Disconnect the underlying driver
83
- */
84
- async disconnect() {
85
- await this.driver.disconnect();
86
- }
87
- /**
88
- * Start consuming messages
89
- */
90
- async startConsuming() {
91
- await this.driver.startConsuming();
92
- }
93
- /**
94
- * Stop consuming messages
95
- */
96
- async stopConsuming() {
97
- await this.driver.stopConsuming();
98
- }
99
- /**
100
- * Health check
101
- */
102
- async healthCheck() {
103
- return this.driver.healthCheck();
104
- }
105
- }export{Broker};//# sourceMappingURL=broker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"broker.js","sources":["../../src/communicators/broker.ts"],"sourcesContent":[null],"names":[],"mappings":"AAkBA;;;;;;;;;;;;;;;;AAgBG;MACU,MAAM,CAAA;;AAED,IAAA,IAAI,CAAS;;AAGb,IAAA,MAAM,CAAuB;;AAG7B,IAAA,SAAS,CAAU;AAEnC;;;;AAIG;AACH,IAAA,WAAA,CAAmB,OAAsB,EAAA;AACvC,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;KAC7C;AAED;;AAEG;AACI,IAAA,SAAS,CAAC,QAAiC,EAAA;QAChD,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;KACxC;AAED;;AAEG;AACI,IAAA,OAAO,CAAiC,KAA6B,EAAA;AAC1E,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KAC5B;AAED;;;;;;;;;;;;;;;;;;AAkBG;IACI,OAAO,CACZ,IAAY,EACZ,OAAkC,EAAA;QAElC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAW,IAAI,EAAE,OAAO,CAAC,CAAC;KACrD;AAED;;AAEG;AACH,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;KAChC;AAED;;AAEG;AACI,IAAA,MAAM,OAAO,GAAA;AAClB,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;KAC7B;AAED;;AAEG;AACI,IAAA,MAAM,UAAU,GAAA;AACrB,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;KAChC;AAED;;AAEG;AACI,IAAA,MAAM,cAAc,GAAA;AACzB,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;KACpC;AAED;;AAEG;AACI,IAAA,MAAM,aAAa,GAAA;AACxB,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;KACnC;AAED;;AAEG;AACI,IAAA,MAAM,WAAW,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;KAClC;AACF"}
@@ -1,3 +0,0 @@
1
- export * from "./broker";
2
- export * from "./broker-registry";
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/communicators/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC"}
@@ -1,196 +0,0 @@
1
- import { type EventMessage } from "../message-managers/event-message";
2
- import { EventConsumerClass } from "../message-managers/types";
3
- import type { BrokerDriverType, BrokerEvent, BrokerEventListener, ChannelOptions, HealthCheckResult } from "../types";
4
- import type { ChannelContract } from "./channel.contract";
5
- /**
6
- * Broker Driver Contract
7
- *
8
- * Base contract for all message bus drivers (RabbitMQ, Kafka, etc.)
9
- * Similar to DriverContract in @warlock.js/cascade
10
- *
11
- * @example
12
- * ```typescript
13
- * // Driver implementation
14
- * class RabbitMQDriver implements BrokerDriverContract {
15
- * readonly name = "rabbitmq";
16
- * // ...
17
- * }
18
- * ```
19
- */
20
- export interface BrokerDriverContract {
21
- /**
22
- * Driver name identifier
23
- *
24
- * @example "rabbitmq", "kafka", "redis-streams"
25
- */
26
- readonly name: BrokerDriverType;
27
- /**
28
- * Whether currently connected to the message broker
29
- */
30
- readonly isConnected: boolean;
31
- /**
32
- * Establish connection to the message broker
33
- *
34
- * @throws Error if connection fails
35
- *
36
- * @example
37
- * ```typescript
38
- * await driver.connect();
39
- * console.log("Connected to RabbitMQ");
40
- * ```
41
- */
42
- connect(): Promise<void>;
43
- /**
44
- * Close connection gracefully
45
- *
46
- * Ensures all pending operations complete before disconnecting.
47
- *
48
- * @example
49
- * ```typescript
50
- * await driver.disconnect();
51
- * ```
52
- */
53
- disconnect(): Promise<void>;
54
- /**
55
- * Register event listeners for driver lifecycle events
56
- *
57
- * @param event - Event name to listen for
58
- * @param listener - Callback function
59
- *
60
- * @example
61
- * ```typescript
62
- * driver.on("connected", () => {
63
- * console.log("Connected to broker");
64
- * });
65
- *
66
- * driver.on("disconnected", () => {
67
- * console.log("Disconnected from broker");
68
- * });
69
- *
70
- * driver.on("error", (error) => {
71
- * console.error("Driver error:", error);
72
- * });
73
- *
74
- * driver.on("reconnecting", (attempt) => {
75
- * console.log(`Reconnection attempt ${attempt}`);
76
- * });
77
- * ```
78
- */
79
- on(event: BrokerEvent, listener: BrokerEventListener): void;
80
- /**
81
- * Remove an event listener
82
- *
83
- * @param event - Event name
84
- * @param listener - Callback to remove
85
- */
86
- off(event: BrokerEvent, listener: BrokerEventListener): void;
87
- /**
88
- * Subscribe the given consumer class to the driver
89
- *
90
- * @param consumer - Consumer class to subscribe
91
- * @returns Unsubscribe function
92
- * @example
93
- * ```typescript
94
- * driver.subscribe(UserUpdatedConsumer);
95
- * ```
96
- */
97
- subscribe(consumer: EventConsumerClass): () => void;
98
- /**
99
- * Unsubscribe the given consumer class from the driver
100
- *
101
- * @param consumer - Consumer class to unsubscribe
102
- *
103
- * @example
104
- * ```typescript
105
- * driver.unsubscribe(UserUpdatedConsumer);
106
- * ```
107
- */
108
- unsubscribe(consumer: EventConsumerClass): void;
109
- /**
110
- * Publish the given event message
111
- */
112
- publish<TPayload = Record<string, any>>(event: EventMessage<TPayload>): void;
113
- /**
114
- * Get or create a channel
115
- *
116
- * Channels are lazy-created and cached for reuse.
117
- *
118
- * @param name - Channel/queue/topic name
119
- * @param options - Channel configuration
120
- * @returns Channel instance
121
- *
122
- * @example
123
- * ```typescript
124
- * // Simple channel
125
- * const channel = driver.channel("user.created");
126
- *
127
- * // With options
128
- * const orderChannel = driver.channel("orders", {
129
- * durable: true,
130
- * deadLetter: { channel: "orders.failed" },
131
- * });
132
- *
133
- * // Typed channel
134
- * const typedChannel = driver.channel<OrderPayload>("orders", {
135
- * schema: OrderSchema,
136
- * });
137
- * ```
138
- */
139
- channel<TPayload = unknown>(name: string, options?: ChannelOptions<TPayload>): ChannelContract<TPayload>;
140
- /**
141
- * Start consuming messages from all subscribed channels
142
- *
143
- * Call this after setting up all subscriptions to begin processing.
144
- *
145
- * @example
146
- * ```typescript
147
- * // Set up subscriptions
148
- * channel1.subscribe(handler1);
149
- * channel2.subscribe(handler2);
150
- *
151
- * // Start consuming
152
- * await driver.startConsuming();
153
- * ```
154
- */
155
- startConsuming(): Promise<void>;
156
- /**
157
- * Stop consuming messages gracefully
158
- *
159
- * Waits for currently processing messages to complete.
160
- *
161
- * @example
162
- * ```typescript
163
- * await driver.stopConsuming();
164
- * ```
165
- */
166
- stopConsuming(): Promise<void>;
167
- /**
168
- * Perform a health check on the connection
169
- *
170
- * @returns Health check result with status and optional latency
171
- *
172
- * @example
173
- * ```typescript
174
- * const health = await driver.healthCheck();
175
- * if (health.healthy) {
176
- * console.log(`Healthy, latency: ${health.latency}ms`);
177
- * } else {
178
- * console.error(`Unhealthy: ${health.error}`);
179
- * }
180
- * ```
181
- */
182
- healthCheck(): Promise<HealthCheckResult>;
183
- /**
184
- * Get list of all channels managed by this driver
185
- *
186
- * @returns Array of channel names
187
- */
188
- getChannelNames(): string[];
189
- /**
190
- * Close and remove a specific channel
191
- *
192
- * @param name - Channel name to close
193
- */
194
- closeChannel(name: string): Promise<void>;
195
- }
196
- //# sourceMappingURL=broker-driver.contract.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"broker-driver.contract.d.ts","sourceRoot":"","sources":["../../src/contracts/broker-driver.contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAEhC;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAE9B;;;;;;;;;;OAUG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB;;;;;;;;;OASG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAE5D;;;;;OAKG;IACH,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAE7D;;;;;;;;;OASG;IACH,SAAS,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,IAAI,CAAC;IAEpD;;;;;;;;;OASG;IACH,WAAW,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAEhD;;OAEG;IACH,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IAE7E;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,OAAO,CAAC,QAAQ,GAAG,OAAO,EACxB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,GACjC,eAAe,CAAC,QAAQ,CAAC,CAAC;IAE7B;;;;;;;;;;;;;;OAcG;IACH,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhC;;;;;;;;;OASG;IACH,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/B;;;;;;;;;;;;;;OAcG;IACH,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE1C;;;;OAIG;IACH,eAAe,IAAI,MAAM,EAAE,CAAC;IAE5B;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C"}
@@ -1,191 +0,0 @@
1
- import type { ChannelOptions, ChannelStats, MessageHandler, PublishOptions, RequestOptions, ResponseHandler, SubscribeOptions, Subscription } from "../types";
2
- /**
3
- * Channel contract - represents a queue (RabbitMQ) or topic (Kafka)
4
- *
5
- * Provides a unified pub/sub interface across different message brokers.
6
- *
7
- * @template TPayload - The typed payload for messages on this channel
8
- *
9
- * @example
10
- * ```typescript
11
- * // Get a typed channel
12
- * const userChannel = herald().channel<UserPayload>("user.created");
13
- *
14
- * // Publish
15
- * await userChannel.publish({ userId: 1, email: "test@example.com" });
16
- *
17
- * // Subscribe
18
- * userChannel.subscribe(async (message, ctx) => {
19
- * console.log(message.payload.userId);
20
- * await ctx.ack();
21
- * });
22
- * ```
23
- */
24
- export interface ChannelContract<TPayload = unknown> {
25
- /**
26
- * Channel name/routing key
27
- */
28
- readonly name: string;
29
- /**
30
- * Channel options
31
- */
32
- readonly options: ChannelOptions<TPayload>;
33
- /**
34
- * Publish a message to this channel
35
- *
36
- * @param payload - The message payload
37
- * @param options - Optional publish options
38
- *
39
- * @example
40
- * ```typescript
41
- * await channel.publish({ orderId: 123 });
42
- *
43
- * // With options
44
- * await channel.publish({ orderId: 123 }, {
45
- * priority: 5,
46
- * persistent: true,
47
- * correlationId: "req-123",
48
- * });
49
- * ```
50
- */
51
- publish(payload: TPayload, options?: PublishOptions): Promise<void>;
52
- /**
53
- * Publish multiple messages in a batch
54
- *
55
- * More efficient than publishing one by one.
56
- *
57
- * @param messages - Array of payloads to publish
58
- * @param options - Optional publish options (applied to all messages)
59
- *
60
- * @example
61
- * ```typescript
62
- * await channel.publishBatch([
63
- * { event: "page_view", page: "/home" },
64
- * { event: "page_view", page: "/products" },
65
- * ]);
66
- * ```
67
- */
68
- publishBatch(messages: TPayload[], options?: PublishOptions): Promise<void>;
69
- /**
70
- * Subscribe to messages on this channel
71
- *
72
- * @param handler - Function to handle incoming messages
73
- * @param options - Optional subscribe options
74
- * @returns Subscription object for managing the subscription
75
- *
76
- * @example
77
- * ```typescript
78
- * const subscription = await channel.subscribe(
79
- * async (message, ctx) => {
80
- * await processOrder(message.payload);
81
- * await ctx.ack();
82
- * },
83
- * {
84
- * prefetch: 10,
85
- * retry: { maxRetries: 3, delay: 1000 },
86
- * }
87
- * );
88
- *
89
- * // Later: unsubscribe
90
- * await subscription.unsubscribe();
91
- * ```
92
- */
93
- subscribe(handler: MessageHandler<TPayload>, options?: SubscribeOptions): Promise<Subscription>;
94
- /**
95
- * Unsubscribe a consumer by its ID
96
- *
97
- * @param consumerId - The consumer ID to unsubscribe
98
- *
99
- * @example
100
- * ```typescript
101
- * await channel.unsubscribeById("consumer-uuid");
102
- * ```
103
- */
104
- unsubscribeById(consumerId: string): Promise<void>;
105
- /**
106
- * Request-Response pattern (RPC)
107
- *
108
- * Publishes a message and waits for a response.
109
- *
110
- * @param payload - The request payload
111
- * @param options - Request options including timeout
112
- * @returns Promise resolving to the response
113
- *
114
- * @example
115
- * ```typescript
116
- * const result = await channel.request<ProcessResult>(
117
- * { imageUrl: "https://..." },
118
- * { timeout: 30000 }
119
- * );
120
- * console.log(result.processedUrl);
121
- * ```
122
- */
123
- request<TResponse = unknown>(payload: TPayload, options?: RequestOptions): Promise<TResponse>;
124
- /**
125
- * Register a response handler for RPC pattern
126
- *
127
- * The return value of the handler becomes the response.
128
- *
129
- * @param handler - Function to handle requests and return responses
130
- * @returns Subscription for managing the responder
131
- *
132
- * @example
133
- * ```typescript
134
- * channel.respond(async (message, ctx) => {
135
- * const result = await processImage(message.payload);
136
- * return { processedUrl: result.url };
137
- * });
138
- * ```
139
- */
140
- respond<TResponse = unknown>(handler: ResponseHandler<TPayload, TResponse>): Promise<Subscription>;
141
- /**
142
- * Get channel statistics
143
- *
144
- * @returns Channel stats including message count and consumer count
145
- *
146
- * @example
147
- * ```typescript
148
- * const stats = await channel.stats();
149
- * console.log(`Messages: ${stats.messageCount}, Consumers: ${stats.consumerCount}`);
150
- * ```
151
- */
152
- stats(): Promise<ChannelStats>;
153
- /**
154
- * Purge all messages from the channel
155
- *
156
- * Use with caution - this deletes all pending messages.
157
- *
158
- * @returns Number of messages purged
159
- *
160
- * @example
161
- * ```typescript
162
- * const purgedCount = await channel.purge();
163
- * console.log(`Purged ${purgedCount} messages`);
164
- * ```
165
- */
166
- purge(): Promise<number>;
167
- /**
168
- * Check if the channel exists
169
- *
170
- * @returns True if the channel exists on the broker
171
- */
172
- exists(): Promise<boolean>;
173
- /**
174
- * Delete the channel
175
- *
176
- * Use with caution - this removes the queue/topic entirely.
177
- */
178
- delete(): Promise<void>;
179
- /**
180
- * Assert/create the channel with its options
181
- *
182
- * Creates the channel if it doesn't exist, or verifies options match.
183
- */
184
- assert(): Promise<void>;
185
- /**
186
- * Stop consuming messages on this channel.
187
- * Cancels all active subscriptions gracefully.
188
- */
189
- stopConsuming(): Promise<void>;
190
- }
191
- //# sourceMappingURL=channel.contract.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"channel.contract.d.ts","sourceRoot":"","sources":["../../src/contracts/channel.contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,cAAc,EACd,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,YAAY,EACb,MAAM,UAAU,CAAC;AAElB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,eAAe,CAAC,QAAQ,GAAG,OAAO;IACjD;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE3C;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpE;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5E;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAEhG;;;;;;;;;OASG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,SAAS,GAAG,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAE9F;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,SAAS,GAAG,OAAO,EACzB,OAAO,EAAE,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,GAC5C,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB;;;;;;;;;;OAUG;IACH,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;IAE/B;;;;;;;;;;;;OAYG;IACH,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEzB;;;;OAIG;IACH,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3B;;;;OAIG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAExB;;;;OAIG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAExB;;;OAGG;IACH,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC"}
@@ -1,3 +0,0 @@
1
- export * from "./channel.contract";
2
- export * from "./broker-driver.contract";
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC"}
@@ -1,13 +0,0 @@
1
- import { type EventConsumerClass } from "../message-managers/types";
2
- export type ConsumableOptions = {
3
- broker?: string;
4
- };
5
- export declare const pendingSubscribers: Set<{
6
- Consumer: EventConsumerClass;
7
- options?: ConsumableOptions;
8
- }>;
9
- /**
10
- * Register the consumer to the broker
11
- */
12
- export declare function Consumable(options?: ConsumableOptions): (target: EventConsumerClass) => void;
13
- //# sourceMappingURL=consumable.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"consumable.d.ts","sourceRoot":"","sources":["../../src/decorators/consumable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,kBAAkB;cACnB,kBAAkB;cAClB,iBAAiB;EACzB,CAAC;AAEL;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,YAC3B,kBAAkB,UAkB5C"}
@@ -1,33 +0,0 @@
1
- import {brokerRegistry}from'../communicators/broker-registry.js';const pendingSubscribers = new Set();
2
- /**
3
- * Register the consumer to the broker
4
- */
5
- function Consumable(options) {
6
- return function (target) {
7
- const brokerName = options?.broker;
8
- try {
9
- const currentBroker = brokerRegistry.get(brokerName);
10
- // if broker is connected, subscribe the consumer
11
- if (currentBroker?.isConnected) {
12
- currentBroker.subscribe(target);
13
- }
14
- else {
15
- pendingSubscribers.add({ Consumer: target, options });
16
- }
17
- }
18
- catch {
19
- // mostly it will be an error that broker is not registered yet
20
- // then add it to the pending subscribers
21
- pendingSubscribers.add({ Consumer: target, options });
22
- }
23
- };
24
- }
25
- // Register pending consumers on broker's connection is done
26
- brokerRegistry.on("connected", (broker) => {
27
- for (const { Consumer, options } of pendingSubscribers) {
28
- if (options?.broker && broker.name !== options.broker) {
29
- continue;
30
- }
31
- broker.subscribe(Consumer);
32
- }
33
- });export{Consumable,pendingSubscribers};//# sourceMappingURL=consumable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"consumable.js","sources":["../../src/decorators/consumable.ts"],"sourcesContent":[null],"names":[],"mappings":"iEAOa,MAAA,kBAAkB,GAAG,IAAI,GAAG,GAGpC;AAEL;;AAEG;AACG,SAAU,UAAU,CAAC,OAA2B,EAAA;AACpD,IAAA,OAAO,UAAU,MAA0B,EAAA;AACzC,QAAA,MAAM,UAAU,GAAG,OAAO,EAAE,MAAM,CAAC;QAEnC,IAAI;YACF,MAAM,aAAa,GAAG,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;;YAGrD,IAAI,aAAa,EAAE,WAAW,EAAE;AAC9B,gBAAA,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACjC,aAAA;AAAM,iBAAA;gBACL,kBAAkB,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AACvD,aAAA;AACF,SAAA;QAAC,MAAM;;;YAGN,kBAAkB,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AACvD,SAAA;AACH,KAAC,CAAC;AACJ,CAAC;AAED;AACA,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,MAAM,KAAI;IACxC,KAAK,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,kBAAkB,EAAE;QACtD,IAAI,OAAO,EAAE,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE;YACrD,SAAS;AACV,SAAA;AAED,QAAA,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC5B,KAAA;AACH,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from "./consumable";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from "./rabbitmq";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/drivers/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -1,3 +0,0 @@
1
- export * from "./rabbitmq-driver";
2
- export * from "./rabbitmq-channel";
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/drivers/rabbitmq/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC"}
@@ -1,79 +0,0 @@
1
- import type { ChannelContract } from "../../contracts";
2
- import type { ChannelOptions, ChannelStats, MessageHandler, PublishOptions, RequestOptions, ResponseHandler, SubscribeOptions, Subscription } from "../../types";
3
- /**
4
- * RabbitMQ Channel Implementation
5
- *
6
- * Wraps a RabbitMQ queue/exchange with a unified API.
7
- *
8
- * @template TPayload - The typed payload
9
- */
10
- export declare class RabbitMQChannel<TPayload = unknown> implements ChannelContract<TPayload> {
11
- readonly name: string;
12
- readonly options: ChannelOptions<TPayload>;
13
- private readonly amqpChannel;
14
- private readonly subscriptions;
15
- private asserted;
16
- /**
17
- * Create a new RabbitMQ channel
18
- */
19
- constructor(name: string, amqpChannel: any, options?: ChannelOptions<TPayload>);
20
- /**
21
- * Assert the queue exists
22
- */
23
- assert(): Promise<void>;
24
- /**
25
- * Publish a message
26
- */
27
- publish(payload: TPayload, options?: PublishOptions): Promise<void>;
28
- /**
29
- * Publish multiple messages
30
- */
31
- publishBatch(messages: TPayload[], options?: PublishOptions): Promise<void>;
32
- /**
33
- * Subscribe to messages
34
- *
35
- * Smart auto-ack behavior (when autoAck is not true):
36
- * - If handler completes successfully without explicit ack/nack/reject → auto-ack
37
- * - If handler throws an error → auto-nack (with retry if configured)
38
- * - If handler explicitly calls ack/nack/reject → respects that call
39
- */
40
- subscribe(handler: MessageHandler<TPayload>, options?: SubscribeOptions): Promise<Subscription>;
41
- /**
42
- * Unsubscribe by consumer ID
43
- */
44
- unsubscribeById(consumerId: string): Promise<void>;
45
- /**
46
- * Stop consuming messages on this channel.
47
- * Cancels all active subscriptions gracefully.
48
- */
49
- stopConsuming(): Promise<void>;
50
- /**
51
- * Send message to dead-letter queue
52
- */
53
- private sendToDeadLetter;
54
- /**
55
- * Request-response pattern
56
- */
57
- request<TResponse = unknown>(payload: TPayload, options?: RequestOptions): Promise<TResponse>;
58
- /**
59
- * Register response handler for RPC
60
- */
61
- respond<TResponse = unknown>(handler: ResponseHandler<TPayload, TResponse>): Promise<Subscription>;
62
- /**
63
- * Get queue statistics
64
- */
65
- stats(): Promise<ChannelStats>;
66
- /**
67
- * Purge all messages
68
- */
69
- purge(): Promise<number>;
70
- /**
71
- * Check if queue exists
72
- */
73
- exists(): Promise<boolean>;
74
- /**
75
- * Delete the queue
76
- */
77
- delete(): Promise<void>;
78
- }
79
- //# sourceMappingURL=rabbitmq-channel.d.ts.map