@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
package/esm/types.d.ts ADDED
@@ -0,0 +1,396 @@
1
+ /// <reference types="node" />
2
+ import type { BaseValidator } from "@warlock.js/seal";
3
+ /**
4
+ * Message metadata that accompanies every message
5
+ */
6
+ export type MessageMetadata = {
7
+ /** Unique message ID (auto-generated) */
8
+ messageId: string;
9
+ /** Correlation ID for request-response patterns */
10
+ correlationId?: string;
11
+ /** Reply-to channel for RPC patterns */
12
+ replyTo?: string;
13
+ /** Message priority (0-9, where 9 is highest) */
14
+ priority?: number;
15
+ /** Timestamp when message was published */
16
+ timestamp: Date;
17
+ /** Custom headers */
18
+ headers?: Record<string, string>;
19
+ /** Retry count (incremented on each retry) */
20
+ retryCount?: number;
21
+ /** Original queue/channel name */
22
+ originalChannel?: string;
23
+ };
24
+ /**
25
+ * A message received from a channel
26
+ *
27
+ * @template TPayload - The typed payload
28
+ */
29
+ export type Message<TPayload = unknown> = {
30
+ /** Message metadata */
31
+ readonly metadata: MessageMetadata;
32
+ /** Typed payload data */
33
+ readonly payload: TPayload;
34
+ /** Raw message data from the driver */
35
+ readonly raw?: unknown;
36
+ };
37
+ /**
38
+ * Options when publishing a message
39
+ */
40
+ export type PublishOptions = {
41
+ /** Message priority (0-9, where 9 is highest) */
42
+ priority?: number;
43
+ /** Time-to-live in milliseconds */
44
+ ttl?: number;
45
+ /** Delay before message is available (delayed messaging) */
46
+ delay?: number;
47
+ /** Custom headers */
48
+ headers?: Record<string, string>;
49
+ /** Enable message persistence (survives broker restart) */
50
+ persistent?: boolean;
51
+ /** Correlation ID for tracking related messages */
52
+ correlationId?: string;
53
+ /** Expiration time in milliseconds */
54
+ expiration?: number;
55
+ };
56
+ /**
57
+ * Retry configuration for failed message processing
58
+ */
59
+ export type RetryOptions = {
60
+ /** Maximum number of retry attempts */
61
+ maxRetries: number;
62
+ /** Delay between retries in ms, or function for custom backoff */
63
+ delay: number | ((attempt: number) => number);
64
+ };
65
+ /**
66
+ * Dead-letter configuration for messages that exceed retry attempts
67
+ */
68
+ export type DeadLetterOptions = {
69
+ /** Dead-letter queue/channel name */
70
+ channel: string;
71
+ /** Whether to preserve original message metadata */
72
+ preserveOriginal?: boolean;
73
+ };
74
+ /**
75
+ * Options when subscribing to a channel
76
+ */
77
+ export type SubscribeOptions = {
78
+ /** Consumer group/tag name */
79
+ group?: string;
80
+ /** Number of messages to prefetch (concurrency) */
81
+ prefetch?: number;
82
+ /** Auto-acknowledge messages (default: false for manual ack) */
83
+ autoAck?: boolean;
84
+ /** Retry configuration for failed messages */
85
+ retry?: RetryOptions;
86
+ /** Dead-letter configuration */
87
+ deadLetter?: DeadLetterOptions;
88
+ /** Exclusive consumer (only one consumer on this queue) */
89
+ exclusive?: boolean;
90
+ };
91
+ /**
92
+ * Options for request-response (RPC) pattern
93
+ */
94
+ export type RequestOptions = PublishOptions & {
95
+ /** Timeout in milliseconds to wait for response */
96
+ timeout?: number;
97
+ };
98
+ /**
99
+ * Context provided to message handlers for controlling message flow
100
+ */
101
+ export type MessageContext = {
102
+ /** Acknowledge the message (mark as successfully processed) */
103
+ ack(): Promise<void>;
104
+ /** Negative acknowledge (requeue or send to dead-letter) */
105
+ nack(requeue?: boolean): Promise<void>;
106
+ /** Reject the message (don't requeue) */
107
+ reject(): Promise<void>;
108
+ /** Reply to a message (for RPC patterns) */
109
+ reply<T>(payload: T): Promise<void>;
110
+ /** Manually retry the message with optional delay */
111
+ retry(delay?: number): Promise<void>;
112
+ };
113
+ /**
114
+ * Represents an active subscription to a channel
115
+ */
116
+ export type Subscription = {
117
+ /** Unique subscription ID */
118
+ readonly id: string;
119
+ /** Channel name this subscription is for */
120
+ readonly channel: string;
121
+ /** Consumer tag (driver-specific identifier) */
122
+ readonly consumerTag?: string;
123
+ /** Unsubscribe from the channel */
124
+ unsubscribe(): Promise<void>;
125
+ /** Pause message consumption */
126
+ pause(): Promise<void>;
127
+ /** Resume message consumption */
128
+ resume(): Promise<void>;
129
+ /** Check if subscription is active */
130
+ isActive(): boolean;
131
+ };
132
+ /**
133
+ * Handler function for processing messages
134
+ *
135
+ * @template TPayload - The typed payload
136
+ */
137
+ export type MessageHandler<TPayload = unknown> = (message: Message<TPayload>, ctx: MessageContext) => Promise<void> | void;
138
+ /**
139
+ * Handler function for request-response (RPC) pattern
140
+ *
141
+ * @template TPayload - The request payload type
142
+ * @template TResponse - The response payload type
143
+ */
144
+ export type ResponseHandler<TPayload = unknown, TResponse = unknown> = (message: Message<TPayload>, ctx: MessageContext) => Promise<TResponse> | TResponse;
145
+ /**
146
+ * Channel/queue configuration options
147
+ */
148
+ export type ChannelOptions<TPayload = unknown> = {
149
+ /** Channel type (queue for point-to-point, topic for pub/sub, fanout for broadcast) */
150
+ type?: "queue" | "topic" | "fanout";
151
+ /** Durable channel (survives broker restart) */
152
+ durable?: boolean;
153
+ /** Auto-delete when last consumer disconnects */
154
+ autoDelete?: boolean;
155
+ /** Exclusive channel (single connection only) */
156
+ exclusive?: boolean;
157
+ /** Dead-letter configuration */
158
+ deadLetter?: DeadLetterOptions;
159
+ /** Maximum message size in bytes */
160
+ maxMessageSize?: number;
161
+ /** Default message TTL in milliseconds */
162
+ messageTtl?: number;
163
+ /** Maximum number of messages in queue */
164
+ maxLength?: number;
165
+ /** Seal schema for validation */
166
+ schema?: BaseValidator;
167
+ };
168
+ /**
169
+ * Statistics for a channel
170
+ */
171
+ export type ChannelStats = {
172
+ /** Number of messages in the queue */
173
+ messageCount: number;
174
+ /** Number of active consumers */
175
+ consumerCount: number;
176
+ /** Channel name */
177
+ name: string;
178
+ };
179
+ /**
180
+ * Supported communicator driver types
181
+ */
182
+ export type CommunicatorDriverType = "rabbitmq" | "kafka" | "redis-streams" | "sqs";
183
+ /**
184
+ * Events emitted by communicator drivers
185
+ */
186
+ export type CommunicatorEvent = "connected" | "disconnected" | "error" | "reconnecting";
187
+ /**
188
+ * Listener function for communicator events
189
+ */
190
+ export type CommunicatorEventListener = (...args: unknown[]) => void;
191
+ /**
192
+ * Result of a health check
193
+ */
194
+ export type HealthCheckResult = {
195
+ /** Whether the communicator is healthy */
196
+ healthy: boolean;
197
+ /** Latency in milliseconds */
198
+ latency?: number;
199
+ /** Error message if unhealthy */
200
+ error?: string;
201
+ /** Additional details */
202
+ details?: Record<string, unknown>;
203
+ };
204
+ /**
205
+ * Base connection options shared across all drivers
206
+ */
207
+ export type BaseConnectionOptions = {
208
+ /** Unique name for this communicator */
209
+ name?: string;
210
+ /** Whether this should be the default communicator */
211
+ isDefault?: boolean;
212
+ };
213
+ /**
214
+ * Native amqplib socket options
215
+ * These are passed directly to the underlying socket connection
216
+ */
217
+ export type RabbitMQSocketOptions = {
218
+ /** Keep-alive delay in milliseconds */
219
+ keepAlive?: boolean | number;
220
+ /** Disable Nagle's algorithm */
221
+ noDelay?: boolean;
222
+ /** Socket timeout in milliseconds */
223
+ timeout?: number;
224
+ /** Custom certificate authority (for TLS) */
225
+ ca?: string | Buffer | Array<string | Buffer>;
226
+ /** Client certificate (for TLS) */
227
+ cert?: string | Buffer;
228
+ /** Client private key (for TLS) */
229
+ key?: string | Buffer;
230
+ /** Passphrase for the private key */
231
+ passphrase?: string;
232
+ /** Server name for SNI (TLS) */
233
+ servername?: string;
234
+ /** Reject unauthorized certificates (default: true) */
235
+ rejectUnauthorized?: boolean;
236
+ };
237
+ /**
238
+ * RabbitMQ client options (native amqplib options)
239
+ * These are passed directly to amqplib.connect()
240
+ */
241
+ export type RabbitMQClientOptions = {
242
+ /** Frame max size in bytes */
243
+ frameMax?: number;
244
+ /** Channel max (0 = unlimited) */
245
+ channelMax?: number;
246
+ /** Locale (default: 'en_US') */
247
+ locale?: string;
248
+ /** Socket options for the underlying connection */
249
+ socket?: RabbitMQSocketOptions;
250
+ };
251
+ /**
252
+ * RabbitMQ-specific connection options
253
+ *
254
+ * @template TClientOptions - Native amqplib client options
255
+ *
256
+ * @example
257
+ * ```typescript
258
+ * const config: RabbitMQConnectionOptions = {
259
+ * driver: "rabbitmq",
260
+ * host: "localhost",
261
+ * port: 5672,
262
+ * username: "guest",
263
+ * password: "guest",
264
+ *
265
+ * // Native amqplib options
266
+ * clientOptions: {
267
+ * frameMax: 0,
268
+ * channelMax: 0,
269
+ * socket: {
270
+ * keepAlive: true,
271
+ * noDelay: true,
272
+ * },
273
+ * },
274
+ * };
275
+ * ```
276
+ */
277
+ export type RabbitMQConnectionOptions<TClientOptions extends RabbitMQClientOptions = RabbitMQClientOptions> = BaseConnectionOptions & {
278
+ driver: "rabbitmq";
279
+ /** Host address */
280
+ host?: string;
281
+ /** Port number */
282
+ port?: number;
283
+ /** Username for authentication */
284
+ username?: string;
285
+ /** Password for authentication */
286
+ password?: string;
287
+ /** Virtual host */
288
+ vhost?: string;
289
+ /** Connection URI (alternative to host/port) */
290
+ uri?: string;
291
+ /** Heartbeat interval in seconds */
292
+ heartbeat?: number;
293
+ /** Connection timeout in milliseconds */
294
+ connectionTimeout?: number;
295
+ /** Enable automatic reconnection */
296
+ reconnect?: boolean;
297
+ /** Delay between reconnection attempts in milliseconds */
298
+ reconnectDelay?: number;
299
+ /** Default prefetch count for consumers */
300
+ prefetch?: number;
301
+ /**
302
+ * Native amqplib client options
303
+ *
304
+ * These options are passed directly to amqplib.connect()
305
+ * for low-level configuration like frame size, TLS, etc.
306
+ */
307
+ clientOptions?: TClientOptions;
308
+ };
309
+ /**
310
+ * Kafka client options (native kafkajs options)
311
+ */
312
+ export type KafkaClientOptions = {
313
+ /** Retry configuration */
314
+ retry?: {
315
+ initialRetryTime?: number;
316
+ retries?: number;
317
+ maxRetryTime?: number;
318
+ factor?: number;
319
+ multiplier?: number;
320
+ };
321
+ /** Log level */
322
+ logLevel?: number;
323
+ /** Custom logger */
324
+ logCreator?: any;
325
+ };
326
+ /**
327
+ * Kafka-specific connection options
328
+ *
329
+ * @template TClientOptions - Native kafkajs client options
330
+ */
331
+ export type KafkaConnectionOptions<TClientOptions extends KafkaClientOptions = KafkaClientOptions> = BaseConnectionOptions & {
332
+ driver: "kafka";
333
+ /** Broker addresses */
334
+ brokers: string[];
335
+ /** Client ID */
336
+ clientId?: string;
337
+ /** Connection timeout in milliseconds */
338
+ connectionTimeout?: number;
339
+ /** Request timeout in milliseconds */
340
+ requestTimeout?: number;
341
+ /** SSL configuration */
342
+ ssl?: boolean | object;
343
+ /** SASL authentication */
344
+ sasl?: {
345
+ mechanism: "plain" | "scram-sha-256" | "scram-sha-512";
346
+ username: string;
347
+ password: string;
348
+ };
349
+ /**
350
+ * Native kafkajs client options
351
+ */
352
+ clientOptions?: TClientOptions;
353
+ };
354
+ /**
355
+ * Union type for all connection options
356
+ */
357
+ export type ConnectionOptions = RabbitMQConnectionOptions | KafkaConnectionOptions;
358
+ /**
359
+ * Communicator configuration options
360
+ *
361
+ * This is the main type for configuring communicators in your application.
362
+ * Similar to ConnectionOptions in @warlock.js/cascade.
363
+ *
364
+ * @template TClientOptions - Native client options (amqplib, kafkajs, etc.)
365
+ *
366
+ * @example
367
+ * ```typescript
368
+ * // RabbitMQ with client options
369
+ * const config: CommunicatorConfigurations<RabbitMQClientOptions> = {
370
+ * driver: "rabbitmq",
371
+ * host: "localhost",
372
+ * clientOptions: {
373
+ * socket: { keepAlive: true },
374
+ * },
375
+ * };
376
+ *
377
+ * // Kafka
378
+ * const kafkaConfig: CommunicatorConfigurations<KafkaClientOptions> = {
379
+ * driver: "kafka",
380
+ * brokers: ["localhost:9092"],
381
+ * clientOptions: {
382
+ * retry: { retries: 5 },
383
+ * },
384
+ * };
385
+ * ```
386
+ */
387
+ export type CommunicatorConfigurations<TClientOptions = any> = RabbitMQConnectionOptions<TClientOptions extends RabbitMQClientOptions ? TClientOptions : RabbitMQClientOptions> | KafkaConnectionOptions<TClientOptions extends KafkaClientOptions ? TClientOptions : KafkaClientOptions>;
388
+ /**
389
+ * Events emitted by the communicator registry
390
+ */
391
+ export type CommunicatorRegistryEvent = "registered" | "default-registered" | "connected" | "disconnected";
392
+ /**
393
+ * Listener for registry events
394
+ */
395
+ export type CommunicatorRegistryListener = (communicator: unknown) => void;
396
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import { Communicator } from "../communicators";
2
+ import type { ConnectionOptions } from "../types";
3
+ /**
4
+ * Connect to a message broker and register the communicator.
5
+ *
6
+ * This is a high-level utility function that simplifies connection setup
7
+ * for most projects. It handles driver instantiation, connection,
8
+ * communicator creation, and automatic registration.
9
+ *
10
+ * **Supported Drivers:**
11
+ * - `rabbitmq` (default) - RabbitMQ/AMQP driver
12
+ * - `kafka` - Apache Kafka driver (coming soon)
13
+ *
14
+ * @param options - Connection configuration options
15
+ * @returns A connected and registered Communicator instance
16
+ * @throws {Error} If connection fails or driver is not implemented
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * // RabbitMQ connection
21
+ * const communicator = await connectToCommunicator({
22
+ * driver: "rabbitmq",
23
+ * host: "localhost",
24
+ * port: 5672,
25
+ * username: "guest",
26
+ * password: "guest",
27
+ * });
28
+ *
29
+ * // Use the communicator
30
+ * await communicator.channel("user.created").publish({ userId: 1 });
31
+ * ```
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * // Multiple communicators
36
+ * await connectToCommunicator({
37
+ * driver: "rabbitmq",
38
+ * name: "notifications",
39
+ * isDefault: true,
40
+ * host: process.env.RABBITMQ_HOST,
41
+ * });
42
+ *
43
+ * await connectToCommunicator({
44
+ * driver: "rabbitmq",
45
+ * name: "analytics",
46
+ * host: process.env.ANALYTICS_RABBITMQ_HOST,
47
+ * });
48
+ *
49
+ * // Use default communicator
50
+ * communicators().channel("notifications").publish({ ... });
51
+ *
52
+ * // Use specific communicator
53
+ * communicators("analytics").channel("events").publish({ ... });
54
+ * ```
55
+ */
56
+ export declare function connectToCommunicator(options: ConnectionOptions): Promise<Communicator>;
57
+ /**
58
+ * Get a communicator by name or the default one.
59
+ *
60
+ * This is the main entry point for using communicators in your application.
61
+ *
62
+ * @param name - Optional communicator name (uses default if not provided)
63
+ * @returns Communicator instance
64
+ * @throws MissingCommunicatorError if communicator not found
65
+ *
66
+ * @example
67
+ * ```typescript
68
+ * // Get default communicator
69
+ * const channel = communicators().channel("user.created");
70
+ * await channel.publish({ userId: 1 });
71
+ *
72
+ * // Get specific communicator
73
+ * const analyticsChannel = communicators("analytics").channel("events");
74
+ * await analyticsChannel.publish({ event: "page_view" });
75
+ *
76
+ * // Subscribe to messages
77
+ * communicators()
78
+ * .channel<UserPayload>("user.created")
79
+ * .subscribe(async (message, ctx) => {
80
+ * console.log("User created:", message.payload);
81
+ * await ctx.ack();
82
+ * });
83
+ * ```
84
+ */
85
+ export declare function communicators(name?: string): Communicator;
86
+ //# sourceMappingURL=connect-to-communicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect-to-communicator.d.ts","sourceRoot":"","sources":["../../src/utils/connect-to-communicator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAwB,MAAM,kBAAkB,CAAC;AAEtE,OAAO,KAAK,EAAE,iBAAiB,EAA6B,MAAM,UAAU,CAAC;AAE7E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CA+C7F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,YAAY,CAEzD"}
@@ -0,0 +1,122 @@
1
+ import {communicatorRegistry}from'../communicators/communicator-registry.js';/**
2
+ * Connect to a message broker and register the communicator.
3
+ *
4
+ * This is a high-level utility function that simplifies connection setup
5
+ * for most projects. It handles driver instantiation, connection,
6
+ * communicator creation, and automatic registration.
7
+ *
8
+ * **Supported Drivers:**
9
+ * - `rabbitmq` (default) - RabbitMQ/AMQP driver
10
+ * - `kafka` - Apache Kafka driver (coming soon)
11
+ *
12
+ * @param options - Connection configuration options
13
+ * @returns A connected and registered Communicator instance
14
+ * @throws {Error} If connection fails or driver is not implemented
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * // RabbitMQ connection
19
+ * const communicator = await connectToCommunicator({
20
+ * driver: "rabbitmq",
21
+ * host: "localhost",
22
+ * port: 5672,
23
+ * username: "guest",
24
+ * password: "guest",
25
+ * });
26
+ *
27
+ * // Use the communicator
28
+ * await communicator.channel("user.created").publish({ userId: 1 });
29
+ * ```
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * // Multiple communicators
34
+ * await connectToCommunicator({
35
+ * driver: "rabbitmq",
36
+ * name: "notifications",
37
+ * isDefault: true,
38
+ * host: process.env.RABBITMQ_HOST,
39
+ * });
40
+ *
41
+ * await connectToCommunicator({
42
+ * driver: "rabbitmq",
43
+ * name: "analytics",
44
+ * host: process.env.ANALYTICS_RABBITMQ_HOST,
45
+ * });
46
+ *
47
+ * // Use default communicator
48
+ * communicators().channel("notifications").publish({ ... });
49
+ *
50
+ * // Use specific communicator
51
+ * communicators("analytics").channel("events").publish({ ... });
52
+ * ```
53
+ */
54
+ async function connectToCommunicator(options) {
55
+ // Default values
56
+ const driverType = options.driver ?? "rabbitmq";
57
+ const communicatorName = options.name ?? "default";
58
+ const isDefault = options.isDefault ?? true;
59
+ // Create driver based on type
60
+ let driver;
61
+ switch (driverType) {
62
+ case "rabbitmq": {
63
+ const rabbitOptions = options;
64
+ // Dynamic import to avoid requiring amqplib if not used
65
+ const { RabbitMQDriver } = await import('../drivers/rabbitmq/rabbitmq-driver.js');
66
+ driver = new RabbitMQDriver(rabbitOptions);
67
+ break;
68
+ }
69
+ case "kafka": {
70
+ // const kafkaOptions = options as KafkaConnectionOptions;
71
+ // Dynamic import to avoid requiring kafkajs if not used
72
+ throw new Error("Kafka driver is not yet implemented. Coming soon! For now, please use RabbitMQ.");
73
+ }
74
+ default:
75
+ throw new Error(`Unknown driver: "${driverType}". Supported drivers: rabbitmq, kafka`);
76
+ }
77
+ // Create communicator
78
+ const communicator = communicatorRegistry.register({
79
+ name: communicatorName,
80
+ driver,
81
+ isDefault,
82
+ });
83
+ // Connect to the message broker
84
+ try {
85
+ await driver.connect();
86
+ }
87
+ catch (error) {
88
+ throw new Error(`Failed to connect to ${driverType}: ${error instanceof Error ? error.message : String(error)}`);
89
+ }
90
+ return communicator;
91
+ }
92
+ /**
93
+ * Get a communicator by name or the default one.
94
+ *
95
+ * This is the main entry point for using communicators in your application.
96
+ *
97
+ * @param name - Optional communicator name (uses default if not provided)
98
+ * @returns Communicator instance
99
+ * @throws MissingCommunicatorError if communicator not found
100
+ *
101
+ * @example
102
+ * ```typescript
103
+ * // Get default communicator
104
+ * const channel = communicators().channel("user.created");
105
+ * await channel.publish({ userId: 1 });
106
+ *
107
+ * // Get specific communicator
108
+ * const analyticsChannel = communicators("analytics").channel("events");
109
+ * await analyticsChannel.publish({ event: "page_view" });
110
+ *
111
+ * // Subscribe to messages
112
+ * communicators()
113
+ * .channel<UserPayload>("user.created")
114
+ * .subscribe(async (message, ctx) => {
115
+ * console.log("User created:", message.payload);
116
+ * await ctx.ack();
117
+ * });
118
+ * ```
119
+ */
120
+ function communicators(name) {
121
+ return communicatorRegistry.get(name);
122
+ }export{communicators,connectToCommunicator};//# sourceMappingURL=connect-to-communicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect-to-communicator.js","sources":["../../src/utils/connect-to-communicator.ts"],"sourcesContent":[null],"names":[],"mappings":"6EAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDG;AACI,eAAe,qBAAqB,CAAC,OAA0B,EAAA;;AAEpE,IAAA,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC;AAChD,IAAA,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC;AACnD,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;;AAG5C,IAAA,IAAI,MAAkC,CAAC;AAEvC,IAAA,QAAQ,UAAU;QAChB,KAAK,UAAU,EAAE;YACf,MAAM,aAAa,GAAG,OAAoC,CAAC;;YAE3D,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,OAAO,wCAAqC,CAAC,CAAC;AAC/E,YAAA,MAAM,GAAG,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;YAC3C,MAAM;AACP,SAAA;QAED,KAAK,OAAO,EAAE;;;AAGZ,YAAA,MAAM,IAAI,KAAK,CACb,iFAAiF,CAClF,CAAC;AACH,SAAA;AAED,QAAA;AACE,YAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,UAAU,CAAA,qCAAA,CAAuC,CAAC,CAAC;AAC1F,KAAA;;AAGD,IAAA,MAAM,YAAY,GAAG,oBAAoB,CAAC,QAAQ,CAAC;AACjD,QAAA,IAAI,EAAE,gBAAgB;QACtB,MAAM;QACN,SAAS;AACV,KAAA,CAAC,CAAC;;IAGH,IAAI;AACF,QAAA,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;AACxB,KAAA;AAAC,IAAA,OAAO,KAAK,EAAE;QACd,MAAM,IAAI,KAAK,CACb,CAAwB,qBAAA,EAAA,UAAU,KAAK,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAE,CAAA,CAChG,CAAC;AACH,KAAA;AAED,IAAA,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BG;AACG,SAAU,aAAa,CAAC,IAAa,EAAA;AACzC,IAAA,OAAO,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC"}
@@ -0,0 +1,2 @@
1
+ export * from "./connect-to-communicator";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@warlock.js/herald",
3
+ "version": "4.0.100",
4
+ "description": "Message bus/communicators for RabbitMQ, Kafka, and more",
5
+ "main": "./cjs/index.js",
6
+ "dependencies": {
7
+ "@mongez/copper": "^1.0.1",
8
+ "@mongez/events": "^2.1.0",
9
+ "@mongez/reinforcements": "^2.3.17",
10
+ "@warlock.js/logger": "4.0.100",
11
+ "@warlock.js/seal": "4.0.100"
12
+ },
13
+ "scripts": {
14
+ "update": "npx ncu -u",
15
+ "fix": "eslint --fix -c ./.eslintrc.json ./src",
16
+ "format": "prettier --write ./src/**/*.{js,jsx,ts,tsx,css,md,json} --config ./.prettierrc.json",
17
+ "test": "vitest",
18
+ "test:coverage": "vitest --coverage",
19
+ "test:watch": "vitest --watch"
20
+ },
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "https://github.com/warlockjs/herald"
24
+ },
25
+ "peerDependencies": {
26
+ "amqplib": "^0.10.0"
27
+ },
28
+ "peerDependenciesMeta": {
29
+ "amqplib": {
30
+ "optional": true
31
+ }
32
+ },
33
+ "keywords": [
34
+ "message-bus",
35
+ "rabbitmq",
36
+ "kafka",
37
+ "queue",
38
+ "pub-sub",
39
+ "communicator",
40
+ "amqp",
41
+ "message-broker"
42
+ ],
43
+ "author": "hassanzohdy",
44
+ "license": "MIT",
45
+ "module": "./esm/index.js",
46
+ "typings": "./cjs/index.d.ts"
47
+ }