@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.
- package/README.md +364 -0
- package/cjs/communicators/communicator-registry.d.ts +155 -0
- package/cjs/communicators/communicator-registry.d.ts.map +1 -0
- package/cjs/communicators/communicator-registry.js +206 -0
- package/cjs/communicators/communicator-registry.js.map +1 -0
- package/cjs/communicators/communicator.d.ts +90 -0
- package/cjs/communicators/communicator.d.ts.map +1 -0
- package/cjs/communicators/communicator.js +93 -0
- package/cjs/communicators/communicator.js.map +1 -0
- package/cjs/communicators/index.d.ts +3 -0
- package/cjs/communicators/index.d.ts.map +1 -0
- package/cjs/contracts/channel.contract.d.ts +175 -0
- package/cjs/contracts/channel.contract.d.ts.map +1 -0
- package/cjs/contracts/communicator-driver.contract.d.ts +168 -0
- package/cjs/contracts/communicator-driver.contract.d.ts.map +1 -0
- package/cjs/contracts/index.d.ts +3 -0
- package/cjs/contracts/index.d.ts.map +1 -0
- package/cjs/drivers/index.d.ts +2 -0
- package/cjs/drivers/index.d.ts.map +1 -0
- package/cjs/drivers/rabbitmq/index.d.ts +3 -0
- package/cjs/drivers/rabbitmq/index.d.ts.map +1 -0
- package/cjs/drivers/rabbitmq/rabbitmq-channel.d.ts +70 -0
- package/cjs/drivers/rabbitmq/rabbitmq-channel.d.ts.map +1 -0
- package/cjs/drivers/rabbitmq/rabbitmq-channel.js +400 -0
- package/cjs/drivers/rabbitmq/rabbitmq-channel.js.map +1 -0
- package/cjs/drivers/rabbitmq/rabbitmq-driver.d.ts +100 -0
- package/cjs/drivers/rabbitmq/rabbitmq-driver.d.ts.map +1 -0
- package/cjs/drivers/rabbitmq/rabbitmq-driver.js +299 -0
- package/cjs/drivers/rabbitmq/rabbitmq-driver.js.map +1 -0
- package/cjs/index.d.ts +45 -0
- package/cjs/index.d.ts.map +1 -0
- package/cjs/index.js +1 -0
- package/cjs/index.js.map +1 -0
- package/cjs/types.d.ts +396 -0
- package/cjs/types.d.ts.map +1 -0
- package/cjs/utils/connect-to-communicator.d.ts +86 -0
- package/cjs/utils/connect-to-communicator.d.ts.map +1 -0
- package/cjs/utils/connect-to-communicator.js +122 -0
- package/cjs/utils/connect-to-communicator.js.map +1 -0
- package/cjs/utils/index.d.ts +2 -0
- package/cjs/utils/index.d.ts.map +1 -0
- package/esm/communicators/communicator-registry.d.ts +155 -0
- package/esm/communicators/communicator-registry.d.ts.map +1 -0
- package/esm/communicators/communicator-registry.js +206 -0
- package/esm/communicators/communicator-registry.js.map +1 -0
- package/esm/communicators/communicator.d.ts +90 -0
- package/esm/communicators/communicator.d.ts.map +1 -0
- package/esm/communicators/communicator.js +93 -0
- package/esm/communicators/communicator.js.map +1 -0
- package/esm/communicators/index.d.ts +3 -0
- package/esm/communicators/index.d.ts.map +1 -0
- package/esm/contracts/channel.contract.d.ts +175 -0
- package/esm/contracts/channel.contract.d.ts.map +1 -0
- package/esm/contracts/communicator-driver.contract.d.ts +168 -0
- package/esm/contracts/communicator-driver.contract.d.ts.map +1 -0
- package/esm/contracts/index.d.ts +3 -0
- package/esm/contracts/index.d.ts.map +1 -0
- package/esm/drivers/index.d.ts +2 -0
- package/esm/drivers/index.d.ts.map +1 -0
- package/esm/drivers/rabbitmq/index.d.ts +3 -0
- package/esm/drivers/rabbitmq/index.d.ts.map +1 -0
- package/esm/drivers/rabbitmq/rabbitmq-channel.d.ts +70 -0
- package/esm/drivers/rabbitmq/rabbitmq-channel.d.ts.map +1 -0
- package/esm/drivers/rabbitmq/rabbitmq-channel.js +400 -0
- package/esm/drivers/rabbitmq/rabbitmq-channel.js.map +1 -0
- package/esm/drivers/rabbitmq/rabbitmq-driver.d.ts +100 -0
- package/esm/drivers/rabbitmq/rabbitmq-driver.d.ts.map +1 -0
- package/esm/drivers/rabbitmq/rabbitmq-driver.js +299 -0
- package/esm/drivers/rabbitmq/rabbitmq-driver.js.map +1 -0
- package/esm/index.d.ts +45 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -0
- package/esm/types.d.ts +396 -0
- package/esm/types.d.ts.map +1 -0
- package/esm/utils/connect-to-communicator.d.ts +86 -0
- package/esm/utils/connect-to-communicator.d.ts.map +1 -0
- package/esm/utils/connect-to-communicator.js +122 -0
- package/esm/utils/connect-to-communicator.js.map +1 -0
- package/esm/utils/index.d.ts +2 -0
- package/esm/utils/index.d.ts.map +1 -0
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/communicators/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC"}
|