@warlock.js/herald 4.0.100

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 (82) hide show
  1. package/README.md +364 -0
  2. package/cjs/communicators/communicator-registry.d.ts +155 -0
  3. package/cjs/communicators/communicator-registry.d.ts.map +1 -0
  4. package/cjs/communicators/communicator-registry.js +206 -0
  5. package/cjs/communicators/communicator-registry.js.map +1 -0
  6. package/cjs/communicators/communicator.d.ts +90 -0
  7. package/cjs/communicators/communicator.d.ts.map +1 -0
  8. package/cjs/communicators/communicator.js +93 -0
  9. package/cjs/communicators/communicator.js.map +1 -0
  10. package/cjs/communicators/index.d.ts +3 -0
  11. package/cjs/communicators/index.d.ts.map +1 -0
  12. package/cjs/contracts/channel.contract.d.ts +175 -0
  13. package/cjs/contracts/channel.contract.d.ts.map +1 -0
  14. package/cjs/contracts/communicator-driver.contract.d.ts +168 -0
  15. package/cjs/contracts/communicator-driver.contract.d.ts.map +1 -0
  16. package/cjs/contracts/index.d.ts +3 -0
  17. package/cjs/contracts/index.d.ts.map +1 -0
  18. package/cjs/drivers/index.d.ts +2 -0
  19. package/cjs/drivers/index.d.ts.map +1 -0
  20. package/cjs/drivers/rabbitmq/index.d.ts +3 -0
  21. package/cjs/drivers/rabbitmq/index.d.ts.map +1 -0
  22. package/cjs/drivers/rabbitmq/rabbitmq-channel.d.ts +70 -0
  23. package/cjs/drivers/rabbitmq/rabbitmq-channel.d.ts.map +1 -0
  24. package/cjs/drivers/rabbitmq/rabbitmq-channel.js +400 -0
  25. package/cjs/drivers/rabbitmq/rabbitmq-channel.js.map +1 -0
  26. package/cjs/drivers/rabbitmq/rabbitmq-driver.d.ts +100 -0
  27. package/cjs/drivers/rabbitmq/rabbitmq-driver.d.ts.map +1 -0
  28. package/cjs/drivers/rabbitmq/rabbitmq-driver.js +299 -0
  29. package/cjs/drivers/rabbitmq/rabbitmq-driver.js.map +1 -0
  30. package/cjs/index.d.ts +45 -0
  31. package/cjs/index.d.ts.map +1 -0
  32. package/cjs/index.js +1 -0
  33. package/cjs/index.js.map +1 -0
  34. package/cjs/types.d.ts +396 -0
  35. package/cjs/types.d.ts.map +1 -0
  36. package/cjs/utils/connect-to-communicator.d.ts +86 -0
  37. package/cjs/utils/connect-to-communicator.d.ts.map +1 -0
  38. package/cjs/utils/connect-to-communicator.js +122 -0
  39. package/cjs/utils/connect-to-communicator.js.map +1 -0
  40. package/cjs/utils/index.d.ts +2 -0
  41. package/cjs/utils/index.d.ts.map +1 -0
  42. package/esm/communicators/communicator-registry.d.ts +155 -0
  43. package/esm/communicators/communicator-registry.d.ts.map +1 -0
  44. package/esm/communicators/communicator-registry.js +206 -0
  45. package/esm/communicators/communicator-registry.js.map +1 -0
  46. package/esm/communicators/communicator.d.ts +90 -0
  47. package/esm/communicators/communicator.d.ts.map +1 -0
  48. package/esm/communicators/communicator.js +93 -0
  49. package/esm/communicators/communicator.js.map +1 -0
  50. package/esm/communicators/index.d.ts +3 -0
  51. package/esm/communicators/index.d.ts.map +1 -0
  52. package/esm/contracts/channel.contract.d.ts +175 -0
  53. package/esm/contracts/channel.contract.d.ts.map +1 -0
  54. package/esm/contracts/communicator-driver.contract.d.ts +168 -0
  55. package/esm/contracts/communicator-driver.contract.d.ts.map +1 -0
  56. package/esm/contracts/index.d.ts +3 -0
  57. package/esm/contracts/index.d.ts.map +1 -0
  58. package/esm/drivers/index.d.ts +2 -0
  59. package/esm/drivers/index.d.ts.map +1 -0
  60. package/esm/drivers/rabbitmq/index.d.ts +3 -0
  61. package/esm/drivers/rabbitmq/index.d.ts.map +1 -0
  62. package/esm/drivers/rabbitmq/rabbitmq-channel.d.ts +70 -0
  63. package/esm/drivers/rabbitmq/rabbitmq-channel.d.ts.map +1 -0
  64. package/esm/drivers/rabbitmq/rabbitmq-channel.js +400 -0
  65. package/esm/drivers/rabbitmq/rabbitmq-channel.js.map +1 -0
  66. package/esm/drivers/rabbitmq/rabbitmq-driver.d.ts +100 -0
  67. package/esm/drivers/rabbitmq/rabbitmq-driver.d.ts.map +1 -0
  68. package/esm/drivers/rabbitmq/rabbitmq-driver.js +299 -0
  69. package/esm/drivers/rabbitmq/rabbitmq-driver.js.map +1 -0
  70. package/esm/index.d.ts +45 -0
  71. package/esm/index.d.ts.map +1 -0
  72. package/esm/index.js +1 -0
  73. package/esm/index.js.map +1 -0
  74. package/esm/types.d.ts +396 -0
  75. package/esm/types.d.ts.map +1 -0
  76. package/esm/utils/connect-to-communicator.d.ts +86 -0
  77. package/esm/utils/connect-to-communicator.d.ts.map +1 -0
  78. package/esm/utils/connect-to-communicator.js +122 -0
  79. package/esm/utils/connect-to-communicator.js.map +1 -0
  80. package/esm/utils/index.d.ts +2 -0
  81. package/esm/utils/index.d.ts.map +1 -0
  82. package/package.json +47 -0
@@ -0,0 +1,299 @@
1
+ import {EventEmitter}from'node:events';import {RabbitMQChannel}from'./rabbitmq-channel.js';// ============================================================
2
+ // Lazy-loaded amqplib Module
3
+ // ============================================================
4
+ /**
5
+ * Cached amqplib module (loaded once, reused)
6
+ */
7
+ let amqplibModule;
8
+ /**
9
+ * Module availability flag
10
+ */
11
+ let isModuleExists = null;
12
+ /**
13
+ * Installation instructions for amqplib
14
+ */
15
+ const AMQPLIB_INSTALL_INSTRUCTIONS = `
16
+ RabbitMQ driver requires the amqplib package.
17
+ Install it with:
18
+
19
+ npx warlock add herald --driver=rabbitmq
20
+
21
+ Or manually:
22
+
23
+ npm install amqplib
24
+ pnpm add amqplib
25
+ yarn add amqplib
26
+ `.trim();
27
+ /**
28
+ * Load amqplib module
29
+ */
30
+ async function loadAmqplibModule() {
31
+ try {
32
+ amqplibModule = await import('amqplib');
33
+ isModuleExists = true;
34
+ }
35
+ catch {
36
+ isModuleExists = false;
37
+ }
38
+ }
39
+ // Kick off eager loading immediately
40
+ loadAmqplibModule();
41
+ // ============================================================
42
+ // RabbitMQ Driver
43
+ // ============================================================
44
+ /**
45
+ * RabbitMQ Driver
46
+ *
47
+ * Implementation of CommunicatorDriverContract for RabbitMQ/AMQP.
48
+ *
49
+ * **Important:** This driver requires the `amqplib` package to be installed.
50
+ * Install it with: `npx warlock add herald --driver=rabbitmq` or `npm install amqplib`
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * const driver = new RabbitMQDriver({
55
+ * driver: "rabbitmq",
56
+ * host: "localhost",
57
+ * port: 5672,
58
+ * username: "guest",
59
+ * password: "guest",
60
+ * });
61
+ *
62
+ * await driver.connect();
63
+ * const channel = driver.channel("user.created");
64
+ * ```
65
+ */
66
+ class RabbitMQDriver {
67
+ name = "rabbitmq";
68
+ options;
69
+ events = new EventEmitter();
70
+ channels = new Map();
71
+ connection = null;
72
+ amqpChannel = null;
73
+ _isConnected = false;
74
+ /**
75
+ * Create a new RabbitMQ driver
76
+ *
77
+ * @param options - RabbitMQ connection options
78
+ */
79
+ constructor(options) {
80
+ this.options = options;
81
+ }
82
+ /**
83
+ * Whether connected to RabbitMQ
84
+ */
85
+ get isConnected() {
86
+ return this._isConnected;
87
+ }
88
+ /**
89
+ * Connect to RabbitMQ
90
+ */
91
+ async connect() {
92
+ // Check if amqplib is installed
93
+ if (isModuleExists === false) {
94
+ throw new Error(`amqplib is not installed.\n\n${AMQPLIB_INSTALL_INSTRUCTIONS}`);
95
+ }
96
+ // Wait for module to load if still loading
97
+ if (isModuleExists === null) {
98
+ await loadAmqplibModule();
99
+ if (!isModuleExists) {
100
+ throw new Error(`amqplib is not installed.\n\n${AMQPLIB_INSTALL_INSTRUCTIONS}`);
101
+ }
102
+ }
103
+ try {
104
+ // Build connection URL
105
+ const url = this.buildConnectionUrl();
106
+ // Build connection options merging our options with native client options
107
+ const connectOptions = {
108
+ heartbeat: this.options.heartbeat ?? 60,
109
+ timeout: this.options.connectionTimeout,
110
+ // Merge native amqplib client options
111
+ ...this.options.clientOptions,
112
+ };
113
+ // Connect using cached module
114
+ this.connection = await amqplibModule.connect(url, connectOptions);
115
+ // Create channel
116
+ this.amqpChannel = await this.connection.createChannel();
117
+ // Set prefetch if specified
118
+ if (this.options.prefetch) {
119
+ await this.amqpChannel.prefetch(this.options.prefetch);
120
+ }
121
+ this._isConnected = true;
122
+ this.events.emit("connected");
123
+ // Handle connection close
124
+ this.connection.on("close", () => {
125
+ this._isConnected = false;
126
+ this.events.emit("disconnected");
127
+ if (this.options.reconnect !== false) {
128
+ this.handleReconnect();
129
+ }
130
+ });
131
+ // Handle errors
132
+ this.connection.on("error", (error) => {
133
+ this.events.emit("error", error);
134
+ });
135
+ }
136
+ catch (error) {
137
+ this._isConnected = false;
138
+ throw new Error(`Failed to connect to RabbitMQ: ${error instanceof Error ? error.message : String(error)}`);
139
+ }
140
+ }
141
+ /**
142
+ * Build connection URL from options
143
+ */
144
+ buildConnectionUrl() {
145
+ if (this.options.uri) {
146
+ return this.options.uri;
147
+ }
148
+ const protocol = "amqp";
149
+ const host = this.options.host ?? "localhost";
150
+ const port = this.options.port ?? 5672;
151
+ const vhost = this.options.vhost ?? "/";
152
+ const username = this.options.username ?? "guest";
153
+ const password = this.options.password ?? "guest";
154
+ const encodedVhost = encodeURIComponent(vhost);
155
+ return `${protocol}://${username}:${password}@${host}:${port}/${encodedVhost}`;
156
+ }
157
+ /**
158
+ * Handle reconnection
159
+ */
160
+ async handleReconnect() {
161
+ const delay = this.options.reconnectDelay ?? 5000;
162
+ let attempt = 0;
163
+ const tryReconnect = async () => {
164
+ attempt++;
165
+ this.events.emit("reconnecting", attempt);
166
+ try {
167
+ await this.connect();
168
+ }
169
+ catch {
170
+ setTimeout(tryReconnect, delay);
171
+ }
172
+ };
173
+ setTimeout(tryReconnect, delay);
174
+ }
175
+ /**
176
+ * Disconnect from RabbitMQ
177
+ */
178
+ async disconnect() {
179
+ if (this.amqpChannel) {
180
+ try {
181
+ await this.amqpChannel.close();
182
+ }
183
+ catch {
184
+ // Ignore close errors
185
+ }
186
+ this.amqpChannel = null;
187
+ }
188
+ if (this.connection) {
189
+ try {
190
+ await this.connection.close();
191
+ }
192
+ catch {
193
+ // Ignore close errors
194
+ }
195
+ this.connection = null;
196
+ }
197
+ this._isConnected = false;
198
+ this.events.emit("disconnected");
199
+ }
200
+ /**
201
+ * Register event listener
202
+ */
203
+ on(event, listener) {
204
+ this.events.on(event, listener);
205
+ }
206
+ /**
207
+ * Remove event listener
208
+ */
209
+ off(event, listener) {
210
+ this.events.off(event, listener);
211
+ }
212
+ /**
213
+ * Get or create a channel
214
+ */
215
+ channel(name, options) {
216
+ // Check cache
217
+ const existing = this.channels.get(name);
218
+ if (existing) {
219
+ return existing;
220
+ }
221
+ // Create new channel
222
+ const channel = new RabbitMQChannel(name, this.amqpChannel, options);
223
+ this.channels.set(name, channel);
224
+ return channel;
225
+ }
226
+ /**
227
+ * Start consuming messages
228
+ */
229
+ async startConsuming() {
230
+ // Channels start consuming when subscribe() is called
231
+ // This method is for batch start if needed
232
+ }
233
+ /**
234
+ * Stop consuming messages
235
+ */
236
+ async stopConsuming() {
237
+ // Cancel all consumers
238
+ for (const channel of this.channels.values()) {
239
+ // Channel implementations should handle this
240
+ }
241
+ }
242
+ /**
243
+ * Health check
244
+ */
245
+ async healthCheck() {
246
+ if (!this._isConnected || !this.connection) {
247
+ return {
248
+ healthy: false,
249
+ error: "Not connected to RabbitMQ",
250
+ };
251
+ }
252
+ const start = Date.now();
253
+ try {
254
+ // Simple check - verify channel is open
255
+ await this.amqpChannel.checkQueue("amq.rabbitmq.reply-to").catch(() => {
256
+ // Queue might not exist, but if we get here, connection is alive
257
+ });
258
+ return {
259
+ healthy: true,
260
+ latency: Date.now() - start,
261
+ };
262
+ }
263
+ catch (error) {
264
+ return {
265
+ healthy: false,
266
+ error: error instanceof Error ? error.message : String(error),
267
+ latency: Date.now() - start,
268
+ };
269
+ }
270
+ }
271
+ /**
272
+ * Get all channel names
273
+ */
274
+ getChannelNames() {
275
+ return Array.from(this.channels.keys());
276
+ }
277
+ /**
278
+ * Close a specific channel
279
+ */
280
+ async closeChannel(name) {
281
+ const channel = this.channels.get(name);
282
+ if (channel) {
283
+ await channel.delete();
284
+ this.channels.delete(name);
285
+ }
286
+ }
287
+ /**
288
+ * Get the raw AMQP channel (for advanced use)
289
+ */
290
+ getRawChannel() {
291
+ return this.amqpChannel;
292
+ }
293
+ /**
294
+ * Get the raw connection (for advanced use)
295
+ */
296
+ getRawConnection() {
297
+ return this.connection;
298
+ }
299
+ }export{RabbitMQDriver};//# sourceMappingURL=rabbitmq-driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rabbitmq-driver.js","sources":["../../../src/drivers/rabbitmq/rabbitmq-driver.ts"],"sourcesContent":[null],"names":[],"mappings":"2FAWA;AACA;AACA;AAEA;;AAEG;AACH,IAAI,aAAuC,CAAC;AAE5C;;AAEG;AACH,IAAI,cAAc,GAAmB,IAAI,CAAC;AAE1C;;AAEG;AACH,MAAM,4BAA4B,GAAG,CAAA;;;;;;;;;;;CAWpC,CAAC,IAAI,EAAE,CAAC;AAET;;AAEG;AACH,eAAe,iBAAiB,GAAA;IAC9B,IAAI;AACF,QAAA,aAAa,GAAG,MAAM,OAAO,SAAS,CAAC,CAAC;QACxC,cAAc,GAAG,IAAI,CAAC;AACvB,KAAA;IAAC,MAAM;QACN,cAAc,GAAG,KAAK,CAAC;AACxB,KAAA;AACH,CAAC;AAED;AACA,iBAAiB,EAAE,CAAC;AAEpB;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;AAqBG;MACU,cAAc,CAAA;IACT,IAAI,GAAG,UAAmB,CAAC;AAE1B,IAAA,OAAO,CAA4B;AACnC,IAAA,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;AAC5B,IAAA,QAAQ,GAAG,IAAI,GAAG,EAAgC,CAAC;IAE5D,UAAU,GAAQ,IAAI,CAAC;IACvB,WAAW,GAAQ,IAAI,CAAC;IACxB,YAAY,GAAG,KAAK,CAAC;AAE7B;;;;AAIG;AACH,IAAA,WAAA,CAAmB,OAAkC,EAAA;AACnD,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KACxB;AAED;;AAEG;AACH,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;AAED;;AAEG;AACI,IAAA,MAAM,OAAO,GAAA;;QAElB,IAAI,cAAc,KAAK,KAAK,EAAE;AAC5B,YAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,4BAA4B,CAAA,CAAE,CAAC,CAAC;AACjF,SAAA;;QAGD,IAAI,cAAc,KAAK,IAAI,EAAE;YAC3B,MAAM,iBAAiB,EAAE,CAAC;YAC1B,IAAI,CAAC,cAAc,EAAE;AACnB,gBAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,4BAA4B,CAAA,CAAE,CAAC,CAAC;AACjF,aAAA;AACF,SAAA;QAED,IAAI;;AAEF,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;;AAGtC,YAAA,MAAM,cAAc,GAAG;AACrB,gBAAA,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE;AACvC,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB;;AAEvC,gBAAA,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;aAC9B,CAAC;;AAGF,YAAA,IAAI,CAAC,UAAU,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;;YAGnE,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;;AAGzD,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACzB,gBAAA,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACxD,aAAA;AAED,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;YAG9B,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAK;AAC/B,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAEjC,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE;oBACpC,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,iBAAA;AACH,aAAC,CAAC,CAAC;;YAGH,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,KAAI;gBAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACnC,aAAC,CAAC,CAAC;AACJ,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,CAAA,+BAAA,EAAkC,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAE,CAAA,CAC3F,CAAC;AACH,SAAA;KACF;AAED;;AAEG;IACK,kBAAkB,GAAA;AACxB,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AACpB,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AACzB,SAAA;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC;AAElD,QAAA,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAE/C,QAAA,OAAO,CAAG,EAAA,QAAQ,CAAM,GAAA,EAAA,QAAQ,CAAI,CAAA,EAAA,QAAQ,CAAI,CAAA,EAAA,IAAI,CAAI,CAAA,EAAA,IAAI,CAAI,CAAA,EAAA,YAAY,EAAE,CAAC;KAChF;AAED;;AAEG;AACK,IAAA,MAAM,eAAe,GAAA;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC;QAClD,IAAI,OAAO,GAAG,CAAC,CAAC;AAEhB,QAAA,MAAM,YAAY,GAAG,YAAW;AAC9B,YAAA,OAAO,EAAE,CAAC;YACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;YAE1C,IAAI;AACF,gBAAA,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;AACtB,aAAA;YAAC,MAAM;AACN,gBAAA,UAAU,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACjC,aAAA;AACH,SAAC,CAAC;AAEF,QAAA,UAAU,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;KACjC;AAED;;AAEG;AACI,IAAA,MAAM,UAAU,GAAA;QACrB,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI;AACF,gBAAA,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;AAChC,aAAA;YAAC,MAAM;;AAEP,aAAA;AACD,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACzB,SAAA;QAED,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI;AACF,gBAAA,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AAC/B,aAAA;YAAC,MAAM;;AAEP,aAAA;AACD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACxB,SAAA;AAED,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KAClC;AAED;;AAEG;IACI,EAAE,CAAC,KAAwB,EAAE,QAAmC,EAAA;QACrE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAe,CAAC,CAAC;KACxC;AAED;;AAEG;IACI,GAAG,CAAC,KAAwB,EAAE,QAAmC,EAAA;QACtE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,QAAe,CAAC,CAAC;KACzC;AAED;;AAEG;IACI,OAAO,CACZ,IAAY,EACZ,OAAkC,EAAA;;QAGlC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzC,QAAA,IAAI,QAAQ,EAAE;AACZ,YAAA,OAAO,QAAqC,CAAC;AAC9C,SAAA;;AAGD,QAAA,MAAM,OAAO,GAAG,IAAI,eAAe,CAAW,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAE/E,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACjC,QAAA,OAAO,OAAO,CAAC;KAChB;AAED;;AAEG;AACI,IAAA,MAAM,cAAc,GAAA;;;KAG1B;AAED;;AAEG;AACI,IAAA,MAAM,aAAa,GAAA;;QAExB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE;;AAE7C,SAAA;KACF;AAED;;AAEG;AACI,IAAA,MAAM,WAAW,GAAA;QACtB,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAC1C,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,KAAK,EAAE,2BAA2B;aACnC,CAAC;AACH,SAAA;AAED,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEzB,IAAI;;AAEF,YAAA,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC,KAAK,CAAC,MAAK;;AAEtE,aAAC,CAAC,CAAC;YAEH,OAAO;AACL,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;aAC5B,CAAC;AACH,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;YACd,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,KAAK,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AAC7D,gBAAA,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;aAC5B,CAAC;AACH,SAAA;KACF;AAED;;AAEG;IACI,eAAe,GAAA;QACpB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;KACzC;AAED;;AAEG;IACI,MAAM,YAAY,CAAC,IAAY,EAAA;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5B,SAAA;KACF;AAED;;AAEG;IACI,aAAa,GAAA;QAClB,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;AAED;;AAEG;IACI,gBAAgB,GAAA;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;AACF"}
package/esm/index.d.ts ADDED
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Warlock Herald - Message Bus / Communicators
3
+ *
4
+ * A powerful, type-safe message bus library for RabbitMQ, Kafka, and more.
5
+ *
6
+ * Package: @warlock.js/herald
7
+ *
8
+ * Let heralds carry your messages across services!
9
+ *
10
+ * Structure:
11
+ * - contracts/ - Core interfaces
12
+ * - communicators/ - Communicator and registry
13
+ * - drivers/ - RabbitMQ, Kafka implementations
14
+ * - types/ - TypeScript type definitions
15
+ * - utils/ - Connection helpers
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * import { connectToCommunicator, communicators } from "@warlock.js/herald";
20
+ *
21
+ * // Connect to RabbitMQ
22
+ * await connectToCommunicator({
23
+ * driver: "rabbitmq",
24
+ * host: "localhost",
25
+ * port: 5672,
26
+ * });
27
+ *
28
+ * // Publish a message
29
+ * await communicators().channel("user.created").publish({ userId: 1 });
30
+ *
31
+ * // Subscribe to messages
32
+ * communicators()
33
+ * .channel<UserPayload>("user.created")
34
+ * .subscribe(async (message, ctx) => {
35
+ * console.log(message.payload);
36
+ * await ctx.ack();
37
+ * });
38
+ * ```
39
+ */
40
+ export * from "./types";
41
+ export * from "./contracts";
42
+ export * from "./communicators";
43
+ export * from "./drivers";
44
+ export * from "./utils";
45
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAGH,cAAc,SAAS,CAAC;AAGxB,cAAc,aAAa,CAAC;AAG5B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,WAAW,CAAC;AAG1B,cAAc,SAAS,CAAC"}
package/esm/index.js ADDED
@@ -0,0 +1 @@
1
+ export{Communicator}from'./communicators/communicator.js';export{MissingCommunicatorError,communicatorRegistry}from'./communicators/communicator-registry.js';export{RabbitMQDriver}from'./drivers/rabbitmq/rabbitmq-driver.js';export{RabbitMQChannel}from'./drivers/rabbitmq/rabbitmq-channel.js';export{communicators,connectToCommunicator}from'./utils/connect-to-communicator.js';//# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}