@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,155 @@
1
+ import type { CommunicatorRegistryEvent, CommunicatorRegistryListener } from "../types";
2
+ import { Communicator, type CommunicatorOptions } from "./communicator";
3
+ /**
4
+ * Error thrown when a communicator is not found
5
+ */
6
+ export declare class MissingCommunicatorError extends Error {
7
+ readonly communicatorName?: string;
8
+ constructor(message: string, communicatorName?: string);
9
+ }
10
+ /**
11
+ * Communicator Registry
12
+ *
13
+ * Maintains registry of named communicators.
14
+ * Similar to DataSourceRegistry in @warlock.js/cascade
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * // Register a communicator
19
+ * communicatorRegistry.register({
20
+ * name: "default",
21
+ * driver: rabbitMQDriver,
22
+ * isDefault: true,
23
+ * });
24
+ *
25
+ * // Get the default communicator
26
+ * const comm = communicatorRegistry.get();
27
+ *
28
+ * // Get a specific communicator by name
29
+ * const analytics = communicatorRegistry.get("analytics");
30
+ *
31
+ * // Listen for events
32
+ * communicatorRegistry.on("connected", (comm) => {
33
+ * console.log(`${comm.name} connected`);
34
+ * });
35
+ * ```
36
+ */
37
+ declare class CommunicatorRegistry {
38
+ private readonly sources;
39
+ private defaultSource?;
40
+ private readonly events;
41
+ /**
42
+ * Register a new communicator
43
+ *
44
+ * Sets up event forwarding from the driver to the registry.
45
+ *
46
+ * @param options - Communicator configuration
47
+ * @returns The registered communicator instance
48
+ *
49
+ * @example
50
+ * ```typescript
51
+ * const communicator = communicatorRegistry.register({
52
+ * name: "primary",
53
+ * driver: myDriver,
54
+ * isDefault: true,
55
+ * });
56
+ * ```
57
+ */
58
+ register(options: CommunicatorOptions): Communicator;
59
+ /**
60
+ * Clear all registered communicators
61
+ */
62
+ clear(): void;
63
+ /**
64
+ * Listen for registry events
65
+ *
66
+ * @param event - Event to listen for
67
+ * @param listener - Callback function
68
+ *
69
+ * @example
70
+ * ```typescript
71
+ * communicatorRegistry.on("registered", (comm) => {
72
+ * console.log(`Communicator "${comm.name}" registered`);
73
+ * });
74
+ *
75
+ * communicatorRegistry.on("connected", (comm) => {
76
+ * console.log(`Communicator "${comm.name}" connected`);
77
+ * });
78
+ * ```
79
+ */
80
+ on(event: CommunicatorRegistryEvent, listener: CommunicatorRegistryListener): void;
81
+ /**
82
+ * Listen for a registry event once
83
+ *
84
+ * @param event - Event to listen for
85
+ * @param listener - Callback function
86
+ */
87
+ once(event: CommunicatorRegistryEvent, listener: CommunicatorRegistryListener): void;
88
+ /**
89
+ * Remove an event listener
90
+ *
91
+ * @param event - Event to stop listening for
92
+ * @param listener - Callback to remove
93
+ */
94
+ off(event: CommunicatorRegistryEvent, listener: CommunicatorRegistryListener): void;
95
+ /**
96
+ * Get a communicator by name or the default one
97
+ *
98
+ * @param name - Optional communicator name
99
+ * @returns Communicator instance
100
+ * @throws MissingCommunicatorError if not found
101
+ *
102
+ * @example
103
+ * ```typescript
104
+ * // Get default communicator
105
+ * const comm = communicatorRegistry.get();
106
+ *
107
+ * // Get specific communicator
108
+ * const analytics = communicatorRegistry.get("analytics");
109
+ * ```
110
+ */
111
+ get(name?: string): Communicator;
112
+ /**
113
+ * Check if a communicator exists
114
+ *
115
+ * @param name - Communicator name to check
116
+ * @returns True if exists
117
+ */
118
+ has(name: string): boolean;
119
+ /**
120
+ * Check if any communicators are registered
121
+ */
122
+ hasAny(): boolean;
123
+ /**
124
+ * Get all registered communicators
125
+ *
126
+ * @returns Array of all communicators
127
+ *
128
+ * @example
129
+ * ```typescript
130
+ * // Disconnect all communicators
131
+ * for (const comm of communicatorRegistry.getAll()) {
132
+ * await comm.disconnect();
133
+ * }
134
+ * ```
135
+ */
136
+ getAll(): Communicator[];
137
+ /**
138
+ * Get all communicator names
139
+ *
140
+ * @returns Array of communicator names
141
+ */
142
+ getNames(): string[];
143
+ /**
144
+ * Get the default communicator (if any)
145
+ *
146
+ * @returns Default communicator or undefined
147
+ */
148
+ getDefault(): Communicator | undefined;
149
+ }
150
+ /**
151
+ * Global communicator registry instance
152
+ */
153
+ export declare const communicatorRegistry: CommunicatorRegistry;
154
+ export {};
155
+ //# sourceMappingURL=communicator-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"communicator-registry.d.ts","sourceRoot":"","sources":["../../src/communicators/communicator-registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAExE;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,SAAgB,gBAAgB,CAAC,EAAE,MAAM,CAAC;gBAEvB,OAAO,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM;CAK9D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,cAAM,oBAAoB;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAC3D,OAAO,CAAC,aAAa,CAAC,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAE7C;;;;;;;;;;;;;;;;OAgBG;IACI,QAAQ,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY;IA6B3D;;OAEG;IACI,KAAK,IAAI,IAAI;IAKpB;;;;;;;;;;;;;;;;OAgBG;IACI,EAAE,CAAC,KAAK,EAAE,yBAAyB,EAAE,QAAQ,EAAE,4BAA4B,GAAG,IAAI;IAIzF;;;;;OAKG;IACI,IAAI,CAAC,KAAK,EAAE,yBAAyB,EAAE,QAAQ,EAAE,4BAA4B,GAAG,IAAI;IAI3F;;;;;OAKG;IACI,GAAG,CAAC,KAAK,EAAE,yBAAyB,EAAE,QAAQ,EAAE,4BAA4B,GAAG,IAAI;IAI1F;;;;;;;;;;;;;;;OAeG;IACI,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,YAAY;IAgBvC;;;;;OAKG;IACI,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC;;OAEG;IACI,MAAM,IAAI,OAAO;IAIxB;;;;;;;;;;;;OAYG;IACI,MAAM,IAAI,YAAY,EAAE;IAI/B;;;;OAIG;IACI,QAAQ,IAAI,MAAM,EAAE;IAI3B;;;;OAIG;IACI,UAAU,IAAI,YAAY,GAAG,SAAS;CAG9C;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,sBAA6B,CAAC"}
@@ -0,0 +1,206 @@
1
+ import {EventEmitter}from'node:events';import {Communicator}from'./communicator.js';/**
2
+ * Error thrown when a communicator is not found
3
+ */
4
+ class MissingCommunicatorError extends Error {
5
+ communicatorName;
6
+ constructor(message, communicatorName) {
7
+ super(message);
8
+ this.name = "MissingCommunicatorError";
9
+ this.communicatorName = communicatorName;
10
+ }
11
+ }
12
+ /**
13
+ * Communicator Registry
14
+ *
15
+ * Maintains registry of named communicators.
16
+ * Similar to DataSourceRegistry in @warlock.js/cascade
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * // Register a communicator
21
+ * communicatorRegistry.register({
22
+ * name: "default",
23
+ * driver: rabbitMQDriver,
24
+ * isDefault: true,
25
+ * });
26
+ *
27
+ * // Get the default communicator
28
+ * const comm = communicatorRegistry.get();
29
+ *
30
+ * // Get a specific communicator by name
31
+ * const analytics = communicatorRegistry.get("analytics");
32
+ *
33
+ * // Listen for events
34
+ * communicatorRegistry.on("connected", (comm) => {
35
+ * console.log(`${comm.name} connected`);
36
+ * });
37
+ * ```
38
+ */
39
+ class CommunicatorRegistry {
40
+ sources = new Map();
41
+ defaultSource;
42
+ events = new EventEmitter();
43
+ /**
44
+ * Register a new communicator
45
+ *
46
+ * Sets up event forwarding from the driver to the registry.
47
+ *
48
+ * @param options - Communicator configuration
49
+ * @returns The registered communicator instance
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * const communicator = communicatorRegistry.register({
54
+ * name: "primary",
55
+ * driver: myDriver,
56
+ * isDefault: true,
57
+ * });
58
+ * ```
59
+ */
60
+ register(options) {
61
+ const communicator = new Communicator(options);
62
+ this.sources.set(communicator.name, communicator);
63
+ const isNewDefault = communicator.isDefault || !this.defaultSource;
64
+ if (isNewDefault) {
65
+ this.defaultSource = communicator;
66
+ }
67
+ // Emit registration events
68
+ this.events.emit("registered", communicator);
69
+ if (isNewDefault) {
70
+ this.events.emit("default-registered", communicator);
71
+ }
72
+ // Forward driver events to registry
73
+ communicator.driver.on("connected", () => {
74
+ this.events.emit("connected", communicator);
75
+ });
76
+ communicator.driver.on("disconnected", () => {
77
+ this.events.emit("disconnected", communicator);
78
+ });
79
+ return communicator;
80
+ }
81
+ /**
82
+ * Clear all registered communicators
83
+ */
84
+ clear() {
85
+ this.defaultSource = undefined;
86
+ this.sources.clear();
87
+ }
88
+ /**
89
+ * Listen for registry events
90
+ *
91
+ * @param event - Event to listen for
92
+ * @param listener - Callback function
93
+ *
94
+ * @example
95
+ * ```typescript
96
+ * communicatorRegistry.on("registered", (comm) => {
97
+ * console.log(`Communicator "${comm.name}" registered`);
98
+ * });
99
+ *
100
+ * communicatorRegistry.on("connected", (comm) => {
101
+ * console.log(`Communicator "${comm.name}" connected`);
102
+ * });
103
+ * ```
104
+ */
105
+ on(event, listener) {
106
+ this.events.on(event, listener);
107
+ }
108
+ /**
109
+ * Listen for a registry event once
110
+ *
111
+ * @param event - Event to listen for
112
+ * @param listener - Callback function
113
+ */
114
+ once(event, listener) {
115
+ this.events.once(event, listener);
116
+ }
117
+ /**
118
+ * Remove an event listener
119
+ *
120
+ * @param event - Event to stop listening for
121
+ * @param listener - Callback to remove
122
+ */
123
+ off(event, listener) {
124
+ this.events.off(event, listener);
125
+ }
126
+ /**
127
+ * Get a communicator by name or the default one
128
+ *
129
+ * @param name - Optional communicator name
130
+ * @returns Communicator instance
131
+ * @throws MissingCommunicatorError if not found
132
+ *
133
+ * @example
134
+ * ```typescript
135
+ * // Get default communicator
136
+ * const comm = communicatorRegistry.get();
137
+ *
138
+ * // Get specific communicator
139
+ * const analytics = communicatorRegistry.get("analytics");
140
+ * ```
141
+ */
142
+ get(name) {
143
+ if (name !== undefined) {
144
+ const source = this.sources.get(name);
145
+ if (!source) {
146
+ throw new MissingCommunicatorError(`Communicator "${name}" is not registered.`, name);
147
+ }
148
+ return source;
149
+ }
150
+ if (!this.defaultSource) {
151
+ throw new MissingCommunicatorError("No default communicator registered.");
152
+ }
153
+ return this.defaultSource;
154
+ }
155
+ /**
156
+ * Check if a communicator exists
157
+ *
158
+ * @param name - Communicator name to check
159
+ * @returns True if exists
160
+ */
161
+ has(name) {
162
+ return this.sources.has(name);
163
+ }
164
+ /**
165
+ * Check if any communicators are registered
166
+ */
167
+ hasAny() {
168
+ return this.sources.size > 0;
169
+ }
170
+ /**
171
+ * Get all registered communicators
172
+ *
173
+ * @returns Array of all communicators
174
+ *
175
+ * @example
176
+ * ```typescript
177
+ * // Disconnect all communicators
178
+ * for (const comm of communicatorRegistry.getAll()) {
179
+ * await comm.disconnect();
180
+ * }
181
+ * ```
182
+ */
183
+ getAll() {
184
+ return Array.from(this.sources.values());
185
+ }
186
+ /**
187
+ * Get all communicator names
188
+ *
189
+ * @returns Array of communicator names
190
+ */
191
+ getNames() {
192
+ return Array.from(this.sources.keys());
193
+ }
194
+ /**
195
+ * Get the default communicator (if any)
196
+ *
197
+ * @returns Default communicator or undefined
198
+ */
199
+ getDefault() {
200
+ return this.defaultSource;
201
+ }
202
+ }
203
+ /**
204
+ * Global communicator registry instance
205
+ */
206
+ const communicatorRegistry = new CommunicatorRegistry();export{MissingCommunicatorError,communicatorRegistry};//# sourceMappingURL=communicator-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"communicator-registry.js","sources":["../../src/communicators/communicator-registry.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ import type { CommunicatorDriverContract } from "../contracts";
2
+ import type { ChannelOptions } from "../types";
3
+ import type { ChannelContract } from "../contracts/channel.contract";
4
+ /**
5
+ * Options for creating a Communicator
6
+ */
7
+ export interface CommunicatorOptions {
8
+ /** Unique name for this communicator */
9
+ name: string;
10
+ /** The underlying driver */
11
+ driver: CommunicatorDriverContract;
12
+ /** Whether this is the default communicator */
13
+ isDefault?: boolean;
14
+ }
15
+ /**
16
+ * Communicator - wrapper around a driver with metadata
17
+ *
18
+ * Similar to DataSource in @warlock.js/cascade
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * const communicator = new Communicator({
23
+ * name: "default",
24
+ * driver: rabbitMQDriver,
25
+ * isDefault: true,
26
+ * });
27
+ *
28
+ * // Get a channel
29
+ * const channel = communicator.channel("user.created");
30
+ * ```
31
+ */
32
+ export declare class Communicator {
33
+ /** Unique name identifying this communicator */
34
+ readonly name: string;
35
+ /** The underlying driver */
36
+ readonly driver: CommunicatorDriverContract;
37
+ /** Whether this is the default communicator */
38
+ readonly isDefault: boolean;
39
+ /**
40
+ * Create a new Communicator
41
+ *
42
+ * @param options - Communicator configuration
43
+ */
44
+ constructor(options: CommunicatorOptions);
45
+ /**
46
+ * Get or create a channel
47
+ *
48
+ * @param name - Channel name
49
+ * @param options - Channel options
50
+ * @returns Channel instance
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * // Simple channel
55
+ * const channel = communicator.channel("notifications");
56
+ *
57
+ * // Typed channel with schema
58
+ * const orderChannel = communicator.channel<OrderPayload>("orders", {
59
+ * schema: OrderSchema,
60
+ * durable: true,
61
+ * });
62
+ * ```
63
+ */
64
+ channel<TPayload = unknown>(name: string, options?: ChannelOptions<TPayload>): ChannelContract<TPayload>;
65
+ /**
66
+ * Check if the communicator is connected
67
+ */
68
+ get isConnected(): boolean;
69
+ /**
70
+ * Connect the underlying driver
71
+ */
72
+ connect(): Promise<void>;
73
+ /**
74
+ * Disconnect the underlying driver
75
+ */
76
+ disconnect(): Promise<void>;
77
+ /**
78
+ * Start consuming messages
79
+ */
80
+ startConsuming(): Promise<void>;
81
+ /**
82
+ * Stop consuming messages
83
+ */
84
+ stopConsuming(): Promise<void>;
85
+ /**
86
+ * Health check
87
+ */
88
+ healthCheck(): Promise<import("../types").HealthCheckResult>;
89
+ }
90
+ //# sourceMappingURL=communicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"communicator.d.ts","sourceRoot":"","sources":["../../src/communicators/communicator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,MAAM,EAAE,0BAA0B,CAAC;IACnC,+CAA+C;IAC/C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,YAAY;IACvB,gDAAgD;IAChD,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,4BAA4B;IAC5B,SAAgB,MAAM,EAAE,0BAA0B,CAAC;IAEnD,+CAA+C;IAC/C,SAAgB,SAAS,EAAE,OAAO,CAAC;IAEnC;;;;OAIG;gBACgB,OAAO,EAAE,mBAAmB;IAM/C;;;;;;;;;;;;;;;;;;OAkBG;IACI,OAAO,CAAC,QAAQ,GAAG,OAAO,EAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,GACjC,eAAe,CAAC,QAAQ,CAAC;IAI5B;;OAEG;IACH,IAAW,WAAW,IAAI,OAAO,CAEhC;IAED;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrC;;OAEG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxC;;OAEG;IACU,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5C;;OAEG;IACU,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3C;;OAEG;IACU,WAAW;CAGzB"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Communicator - wrapper around a driver with metadata
3
+ *
4
+ * Similar to DataSource in @warlock.js/cascade
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * const communicator = new Communicator({
9
+ * name: "default",
10
+ * driver: rabbitMQDriver,
11
+ * isDefault: true,
12
+ * });
13
+ *
14
+ * // Get a channel
15
+ * const channel = communicator.channel("user.created");
16
+ * ```
17
+ */
18
+ class Communicator {
19
+ /** Unique name identifying this communicator */
20
+ name;
21
+ /** The underlying driver */
22
+ driver;
23
+ /** Whether this is the default communicator */
24
+ isDefault;
25
+ /**
26
+ * Create a new Communicator
27
+ *
28
+ * @param options - Communicator configuration
29
+ */
30
+ constructor(options) {
31
+ this.name = options.name;
32
+ this.driver = options.driver;
33
+ this.isDefault = Boolean(options.isDefault);
34
+ }
35
+ /**
36
+ * Get or create a channel
37
+ *
38
+ * @param name - Channel name
39
+ * @param options - Channel options
40
+ * @returns Channel instance
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * // Simple channel
45
+ * const channel = communicator.channel("notifications");
46
+ *
47
+ * // Typed channel with schema
48
+ * const orderChannel = communicator.channel<OrderPayload>("orders", {
49
+ * schema: OrderSchema,
50
+ * durable: true,
51
+ * });
52
+ * ```
53
+ */
54
+ channel(name, options) {
55
+ return this.driver.channel(name, options);
56
+ }
57
+ /**
58
+ * Check if the communicator is connected
59
+ */
60
+ get isConnected() {
61
+ return this.driver.isConnected;
62
+ }
63
+ /**
64
+ * Connect the underlying driver
65
+ */
66
+ async connect() {
67
+ await this.driver.connect();
68
+ }
69
+ /**
70
+ * Disconnect the underlying driver
71
+ */
72
+ async disconnect() {
73
+ await this.driver.disconnect();
74
+ }
75
+ /**
76
+ * Start consuming messages
77
+ */
78
+ async startConsuming() {
79
+ await this.driver.startConsuming();
80
+ }
81
+ /**
82
+ * Stop consuming messages
83
+ */
84
+ async stopConsuming() {
85
+ await this.driver.stopConsuming();
86
+ }
87
+ /**
88
+ * Health check
89
+ */
90
+ async healthCheck() {
91
+ return this.driver.healthCheck();
92
+ }
93
+ }export{Communicator};//# sourceMappingURL=communicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"communicator.js","sources":["../../src/communicators/communicator.ts"],"sourcesContent":[null],"names":[],"mappings":"AAgBA;;;;;;;;;;;;;;;;AAgBG;MACU,YAAY,CAAA;;AAEP,IAAA,IAAI,CAAS;;AAGb,IAAA,MAAM,CAA6B;;AAGnC,IAAA,SAAS,CAAU;AAEnC;;;;AAIG;AACH,IAAA,WAAA,CAAmB,OAA4B,EAAA;AAC7C,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;;;;;;;;;;;;;;;;;;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"}
@@ -0,0 +1,3 @@
1
+ export * from "./communicator";
2
+ export * from "./communicator-registry";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/communicators/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC"}