@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,414 +0,0 @@
1
- 'use strict';var seal=require('@warlock.js/seal'),node_crypto=require('node:crypto');/**
2
- * RabbitMQ Channel Implementation
3
- *
4
- * Wraps a RabbitMQ queue/exchange with a unified API.
5
- *
6
- * @template TPayload - The typed payload
7
- */
8
- class RabbitMQChannel {
9
- name;
10
- options;
11
- amqpChannel;
12
- subscriptions = new Map();
13
- asserted = false;
14
- /**
15
- * Create a new RabbitMQ channel
16
- */
17
- constructor(name, amqpChannel, options) {
18
- this.name = name;
19
- this.amqpChannel = amqpChannel;
20
- this.options = options ?? {};
21
- }
22
- /**
23
- * Assert the queue exists
24
- */
25
- async assert() {
26
- if (this.asserted)
27
- return;
28
- const queueOptions = {
29
- durable: this.options.durable ?? true,
30
- autoDelete: this.options.autoDelete ?? false,
31
- exclusive: this.options.exclusive ?? false,
32
- messageTtl: this.options.messageTtl,
33
- maxLength: this.options.maxLength,
34
- deadLetterExchange: this.options.deadLetter?.channel ? "" : undefined,
35
- deadLetterRoutingKey: this.options.deadLetter?.channel,
36
- };
37
- await this.amqpChannel.assertQueue(this.name, queueOptions);
38
- this.asserted = true;
39
- }
40
- /**
41
- * Publish a message
42
- */
43
- async publish(payload, options) {
44
- await this.assert();
45
- // Validate with schema if provided
46
- if (this.options.schema) {
47
- const context = {
48
- allValues: payload,
49
- value: payload,
50
- };
51
- const result = await seal.v.validate(this.options.schema, payload, { context });
52
- if (!result.isValid) {
53
- throw new Error(`Message validation failed: ${JSON.stringify(result.errors)}`);
54
- }
55
- payload = result.data;
56
- }
57
- const messageId = node_crypto.randomUUID();
58
- const timestamp = new Date();
59
- const messageContent = JSON.stringify({
60
- payload,
61
- metadata: {
62
- messageId,
63
- timestamp: timestamp.toISOString(),
64
- correlationId: options?.correlationId,
65
- headers: options?.headers,
66
- },
67
- });
68
- const publishOptions = {
69
- persistent: options?.persistent ?? true,
70
- messageId,
71
- timestamp: timestamp.getTime(),
72
- correlationId: options?.correlationId,
73
- expiration: options?.expiration?.toString(),
74
- priority: options?.priority,
75
- headers: options?.headers,
76
- };
77
- // Handle delayed messages (requires rabbitmq-delayed-message-exchange plugin)
78
- if (options?.delay) {
79
- publishOptions.headers = {
80
- ...publishOptions.headers,
81
- "x-delay": options.delay,
82
- };
83
- }
84
- this.amqpChannel.sendToQueue(this.name, Buffer.from(messageContent), publishOptions);
85
- }
86
- /**
87
- * Publish multiple messages
88
- */
89
- async publishBatch(messages, options) {
90
- for (const payload of messages) {
91
- await this.publish(payload, options);
92
- }
93
- }
94
- /**
95
- * Subscribe to messages
96
- *
97
- * Smart auto-ack behavior (when autoAck is not true):
98
- * - If handler completes successfully without explicit ack/nack/reject → auto-ack
99
- * - If handler throws an error → auto-nack (with retry if configured)
100
- * - If handler explicitly calls ack/nack/reject → respects that call
101
- */
102
- async subscribe(handler, options) {
103
- await this.assert();
104
- // Use consumerId from options if provided, otherwise generate a random one
105
- const subscriptionId = options?.consumerId ?? node_crypto.randomUUID();
106
- // Set prefetch if specified
107
- if (options?.prefetch) {
108
- await this.amqpChannel.prefetch(options.prefetch);
109
- }
110
- // If autoAck is true, RabbitMQ handles ack immediately (fire-and-forget)
111
- const isFireAndForget = options?.autoAck === true;
112
- const consumerOptions = {
113
- noAck: isFireAndForget,
114
- exclusive: options?.exclusive ?? false,
115
- consumerTag: options?.group ?? subscriptionId,
116
- };
117
- const { consumerTag } = await this.amqpChannel.consume(this.name, async (msg) => {
118
- if (!msg)
119
- return;
120
- // Track if acknowledgment was handled explicitly
121
- let ackHandled = isFireAndForget;
122
- try {
123
- const content = JSON.parse(msg.content.toString());
124
- let payload = content.payload;
125
- // Validate with schema if provided
126
- if (this.options.schema) {
127
- const context = {
128
- allValues: payload,
129
- value: payload,
130
- };
131
- const result = await seal.v.validate(this.options.schema, payload, { context });
132
- if (!result.isValid) {
133
- // Reject invalid messages
134
- this.amqpChannel.nack(msg, false, false);
135
- return;
136
- }
137
- payload = result.data;
138
- }
139
- const metadata = {
140
- messageId: msg.properties.messageId || content.metadata?.messageId || node_crypto.randomUUID(),
141
- timestamp: new Date(msg.properties.timestamp || content.metadata?.timestamp),
142
- correlationId: msg.properties.correlationId || content.metadata?.correlationId,
143
- replyTo: msg.properties.replyTo,
144
- priority: msg.properties.priority,
145
- headers: msg.properties.headers,
146
- retryCount: msg.properties.headers?.["x-retry-count"] || 0,
147
- originalChannel: this.name,
148
- };
149
- const message = {
150
- metadata,
151
- payload,
152
- raw: msg,
153
- };
154
- const context = {
155
- ack: async () => {
156
- if (!ackHandled) {
157
- ackHandled = true;
158
- this.amqpChannel.ack(msg);
159
- }
160
- },
161
- nack: async (requeue = true) => {
162
- if (!ackHandled) {
163
- ackHandled = true;
164
- this.amqpChannel.nack(msg, false, requeue);
165
- }
166
- },
167
- reject: async () => {
168
- if (!ackHandled) {
169
- ackHandled = true;
170
- this.amqpChannel.reject(msg, false);
171
- }
172
- },
173
- reply: async (replyPayload) => {
174
- if (msg.properties.replyTo) {
175
- const replyContent = JSON.stringify({
176
- payload: replyPayload,
177
- metadata: {
178
- messageId: node_crypto.randomUUID(),
179
- timestamp: new Date().toISOString(),
180
- correlationId: msg.properties.correlationId,
181
- },
182
- });
183
- this.amqpChannel.sendToQueue(msg.properties.replyTo, Buffer.from(replyContent), {
184
- correlationId: msg.properties.correlationId,
185
- });
186
- }
187
- },
188
- retry: async (delay) => {
189
- if (ackHandled)
190
- return;
191
- ackHandled = true;
192
- const retryCount = (metadata.retryCount || 0) + 1;
193
- const maxRetries = options?.retry?.maxRetries ?? 3;
194
- if (retryCount > maxRetries) {
195
- // Send to dead-letter if configured
196
- if (options?.deadLetter) {
197
- await this.sendToDeadLetter(message, options.deadLetter.channel);
198
- }
199
- this.amqpChannel.ack(msg);
200
- return;
201
- }
202
- // Republish with retry count
203
- const headers = {
204
- ...msg.properties.headers,
205
- "x-retry-count": retryCount,
206
- };
207
- if (delay) {
208
- headers["x-delay"] = delay;
209
- }
210
- this.amqpChannel.sendToQueue(this.name, msg.content, { ...msg.properties, headers });
211
- this.amqpChannel.ack(msg);
212
- },
213
- };
214
- // Execute handler
215
- await handler(message, context);
216
- // Smart auto-ack: if handler succeeded and didn't explicitly handle ack
217
- if (!ackHandled) {
218
- this.amqpChannel.ack(msg);
219
- }
220
- }
221
- catch (error) {
222
- // Smart auto-nack: if handler threw and didn't explicitly handle ack
223
- if (ackHandled)
224
- return;
225
- // Handle errors - nack and potentially retry
226
- if (options?.retry) {
227
- const retryCount = msg.properties.headers?.["x-retry-count"] || 0;
228
- if (retryCount < options.retry.maxRetries) {
229
- // Requeue for retry
230
- this.amqpChannel.nack(msg, false, true);
231
- }
232
- else if (options.deadLetter) {
233
- // Send to dead-letter
234
- this.amqpChannel.nack(msg, false, false);
235
- }
236
- else {
237
- this.amqpChannel.reject(msg, false);
238
- }
239
- }
240
- else {
241
- // No retry configured - reject without requeue
242
- this.amqpChannel.nack(msg, false, false);
243
- }
244
- }
245
- }, consumerOptions);
246
- const subscription = new RabbitMQSubscription(subscriptionId, this.name, consumerTag, this.amqpChannel);
247
- this.subscriptions.set(subscriptionId, subscription);
248
- return subscription;
249
- }
250
- /**
251
- * Unsubscribe by consumer ID
252
- */
253
- async unsubscribeById(consumerId) {
254
- const subscription = this.subscriptions.get(consumerId);
255
- if (subscription) {
256
- await subscription.unsubscribe();
257
- this.subscriptions.delete(consumerId);
258
- }
259
- }
260
- /**
261
- * Stop consuming messages on this channel.
262
- * Cancels all active subscriptions gracefully.
263
- */
264
- async stopConsuming() {
265
- const cancellations = Array.from(this.subscriptions.values()).map(sub => sub.unsubscribe());
266
- await Promise.all(cancellations);
267
- }
268
- /**
269
- * Send message to dead-letter queue
270
- */
271
- async sendToDeadLetter(message, deadLetterChannel) {
272
- const content = JSON.stringify({
273
- payload: message.payload,
274
- metadata: {
275
- ...message.metadata,
276
- originalChannel: this.name,
277
- },
278
- });
279
- this.amqpChannel.sendToQueue(deadLetterChannel, Buffer.from(content), { persistent: true });
280
- }
281
- /**
282
- * Request-response pattern
283
- */
284
- async request(payload, options) {
285
- await this.assert();
286
- const correlationId = node_crypto.randomUUID();
287
- const timeout = options?.timeout ?? 30000;
288
- // Create exclusive reply queue
289
- const { queue: replyQueue } = await this.amqpChannel.assertQueue("", {
290
- exclusive: true,
291
- autoDelete: true,
292
- });
293
- return new Promise((resolve, reject) => {
294
- const timeoutId = setTimeout(() => {
295
- reject(new Error(`Request timeout after ${timeout}ms`));
296
- }, timeout);
297
- // Consume reply
298
- this.amqpChannel.consume(replyQueue, (msg) => {
299
- if (msg?.properties.correlationId === correlationId) {
300
- clearTimeout(timeoutId);
301
- const content = JSON.parse(msg.content.toString());
302
- resolve(content.payload);
303
- }
304
- }, { noAck: true });
305
- // Send request
306
- const messageContent = JSON.stringify({
307
- payload,
308
- metadata: {
309
- messageId: node_crypto.randomUUID(),
310
- timestamp: new Date().toISOString(),
311
- correlationId,
312
- },
313
- });
314
- this.amqpChannel.sendToQueue(this.name, Buffer.from(messageContent), {
315
- correlationId,
316
- replyTo: replyQueue,
317
- expiration: timeout.toString(),
318
- ...options,
319
- });
320
- });
321
- }
322
- /**
323
- * Register response handler for RPC
324
- */
325
- async respond(handler) {
326
- return this.subscribe(async (message, ctx) => {
327
- const response = await handler(message, ctx);
328
- await ctx.reply(response);
329
- await ctx.ack();
330
- });
331
- }
332
- /**
333
- * Get queue statistics
334
- */
335
- async stats() {
336
- await this.assert();
337
- const queueInfo = await this.amqpChannel.checkQueue(this.name);
338
- return {
339
- name: this.name,
340
- messageCount: queueInfo.messageCount,
341
- consumerCount: queueInfo.consumerCount,
342
- };
343
- }
344
- /**
345
- * Purge all messages
346
- */
347
- async purge() {
348
- await this.assert();
349
- const result = await this.amqpChannel.purgeQueue(this.name);
350
- return result.messageCount;
351
- }
352
- /**
353
- * Check if queue exists
354
- */
355
- async exists() {
356
- try {
357
- await this.amqpChannel.checkQueue(this.name);
358
- return true;
359
- }
360
- catch {
361
- return false;
362
- }
363
- }
364
- /**
365
- * Delete the queue
366
- */
367
- async delete() {
368
- // Cancel all subscriptions
369
- for (const subscription of this.subscriptions.values()) {
370
- await subscription.unsubscribe();
371
- }
372
- this.subscriptions.clear();
373
- try {
374
- await this.amqpChannel.deleteQueue(this.name);
375
- }
376
- catch {
377
- // Ignore if queue doesn't exist
378
- }
379
- this.asserted = false;
380
- }
381
- }
382
- /**
383
- * RabbitMQ Subscription Implementation
384
- */
385
- class RabbitMQSubscription {
386
- id;
387
- channel;
388
- consumerTag;
389
- amqpChannel;
390
- _isActive = true;
391
- constructor(id, channel, consumerTag, amqpChannel) {
392
- this.id = id;
393
- this.channel = channel;
394
- this.consumerTag = consumerTag;
395
- this.amqpChannel = amqpChannel;
396
- }
397
- async unsubscribe() {
398
- if (!this._isActive)
399
- return;
400
- await this.amqpChannel.cancel(this.consumerTag);
401
- this._isActive = false;
402
- }
403
- async pause() {
404
- // RabbitMQ doesn't have native pause, cancel consumer
405
- await this.amqpChannel.cancel(this.consumerTag);
406
- }
407
- async resume() {
408
- // Would need to re-subscribe - not directly supported
409
- throw new Error("Resume is not supported for RabbitMQ. Please create a new subscription.");
410
- }
411
- isActive() {
412
- return this._isActive;
413
- }
414
- }exports.RabbitMQChannel=RabbitMQChannel;//# sourceMappingURL=rabbitmq-channel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rabbitmq-channel.js","sources":["../../../src/drivers/rabbitmq/rabbitmq-channel.ts"],"sourcesContent":[null],"names":["v","randomUUID"],"mappings":"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"}
@@ -1,124 +0,0 @@
1
- import type { BrokerDriverContract, ChannelContract } from "../../contracts";
2
- import { EventMessage } from "../../message-managers/event-message";
3
- import { EventConsumerClass } from "../../message-managers/types";
4
- import type { BrokerEvent, BrokerEventListener, ChannelOptions, HealthCheckResult, RabbitMQConnectionOptions } from "../../types";
5
- /**
6
- * RabbitMQ Driver
7
- *
8
- * Implementation of BrokerDriverContract for RabbitMQ/AMQP.
9
- *
10
- * **Important:** This driver requires the `amqplib` package to be installed.
11
- * Install it with: `npx warlock add herald --driver=rabbitmq` or `npm install amqplib`
12
- *
13
- * @example
14
- * ```typescript
15
- * const driver = new RabbitMQDriver({
16
- * driver: "rabbitmq",
17
- * host: "localhost",
18
- * port: 5672,
19
- * username: "guest",
20
- * password: "guest",
21
- * });
22
- *
23
- * await driver.connect();
24
- * const channel = driver.channel("user.created");
25
- * ```
26
- */
27
- export declare class RabbitMQDriver implements BrokerDriverContract {
28
- readonly name: "rabbitmq";
29
- readonly consumers: EventConsumerClass[];
30
- private readonly options;
31
- private readonly events;
32
- private readonly channels;
33
- private connection;
34
- private amqpChannel;
35
- private _isConnected;
36
- /**
37
- * Create a new RabbitMQ driver
38
- *
39
- * @param options - RabbitMQ connection options
40
- */
41
- constructor(options: RabbitMQConnectionOptions);
42
- /**
43
- * Whether connected to RabbitMQ
44
- */
45
- get isConnected(): boolean;
46
- /**
47
- * Subscribe the given consumer class to the driver
48
- *
49
- * @param consumer - Consumer class to subscribe
50
- *
51
- * @example
52
- * ```typescript
53
- * driver.subscribe(UserUpdatedConsumer);
54
- * ```
55
- */
56
- subscribe(Consumer: EventConsumerClass): () => void;
57
- /**
58
- * Unsubscribe the given consumer
59
- */
60
- unsubscribe(Consumer: EventConsumerClass): void;
61
- /**
62
- * Publish the given event message.
63
- * Auto-creates the channel if it hasn't been accessed before.
64
- */
65
- publish<TPayload = Record<string, any>>(event: EventMessage<TPayload>): void;
66
- /**
67
- * Connect to RabbitMQ
68
- */
69
- connect(): Promise<void>;
70
- /**
71
- * Build connection URL from options
72
- */
73
- private buildConnectionUrl;
74
- /**
75
- * Handle reconnection
76
- */
77
- private handleReconnect;
78
- /**
79
- * Disconnect from RabbitMQ
80
- */
81
- disconnect(): Promise<void>;
82
- /**
83
- * Register event listener
84
- */
85
- on(event: BrokerEvent, listener: BrokerEventListener): void;
86
- /**
87
- * Remove event listener
88
- */
89
- off(event: BrokerEvent, listener: BrokerEventListener): void;
90
- /**
91
- * Get or create a channel
92
- */
93
- channel<TPayload = unknown>(name: string, options?: ChannelOptions<TPayload>): ChannelContract<TPayload>;
94
- /**
95
- * Start consuming messages
96
- */
97
- startConsuming(): Promise<void>;
98
- /**
99
- * Stop consuming messages from all subscribed channels.
100
- * Gracefully cancels all active consumers.
101
- */
102
- stopConsuming(): Promise<void>;
103
- /**
104
- * Health check
105
- */
106
- healthCheck(): Promise<HealthCheckResult>;
107
- /**
108
- * Get all channel names
109
- */
110
- getChannelNames(): string[];
111
- /**
112
- * Close a specific channel
113
- */
114
- closeChannel(name: string): Promise<void>;
115
- /**
116
- * Get the raw AMQP channel (for advanced use)
117
- */
118
- getRawChannel(): any;
119
- /**
120
- * Get the raw connection (for advanced use)
121
- */
122
- getRawConnection(): any;
123
- }
124
- //# sourceMappingURL=rabbitmq-driver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rabbitmq-driver.d.ts","sourceRoot":"","sources":["../../../src/drivers/rabbitmq/rabbitmq-driver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAEV,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,aAAa,CAAC;AAqDrB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,cAAe,YAAW,oBAAoB;IACzD,SAAgB,IAAI,aAAuB;IAE3C,SAAgB,SAAS,EAAE,kBAAkB,EAAE,CAAM;IAErD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2C;IAEpE,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,YAAY,CAAS;IAE7B;;;;OAIG;gBACgB,OAAO,EAAE,yBAAyB;IAIrD;;OAEG;IACH,IAAW,WAAW,IAAI,OAAO,CAEhC;IAED;;;;;;;;;OASG;IACI,SAAS,CAAC,QAAQ,EAAE,kBAAkB;IAmB7C;;OAEG;IACI,WAAW,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAUtD;;;OAGG;IACI,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,IAAI;IAInF;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAoErC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;OAEG;YACW,eAAe;IAkB7B;;OAEG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBxC;;OAEG;IACI,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAIlE;;OAEG;IACI,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAInE;;OAEG;IACI,OAAO,CAAC,QAAQ,GAAG,OAAO,EAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,GACjC,eAAe,CAAC,QAAQ,CAAC;IAc5B;;OAEG;IACU,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5C;;;OAGG;IACU,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3C;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IA6BtD;;OAEG;IACI,eAAe,IAAI,MAAM,EAAE;IAIlC;;OAEG;IACU,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtD;;OAEG;IACI,aAAa,IAAI,GAAG;IAI3B;;OAEG;IACI,gBAAgB,IAAI,GAAG;CAG/B"}