@fluojs/microservices 1.0.0-beta.1

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 (55) hide show
  1. package/LICENSE +21 -0
  2. package/README.ko.md +182 -0
  3. package/README.md +179 -0
  4. package/dist/decorators.d.ts +51 -0
  5. package/dist/decorators.d.ts.map +1 -0
  6. package/dist/decorators.js +106 -0
  7. package/dist/index.d.ts +15 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +13 -0
  10. package/dist/metadata.d.ts +9 -0
  11. package/dist/metadata.d.ts.map +1 -0
  12. package/dist/metadata.js +48 -0
  13. package/dist/module.d.ts +23 -0
  14. package/dist/module.d.ts.map +1 -0
  15. package/dist/module.js +55 -0
  16. package/dist/service.d.ts +116 -0
  17. package/dist/service.d.ts.map +1 -0
  18. package/dist/service.js +550 -0
  19. package/dist/status.d.ts +30 -0
  20. package/dist/status.d.ts.map +1 -0
  21. package/dist/status.js +79 -0
  22. package/dist/tokens.d.ts +7 -0
  23. package/dist/tokens.d.ts.map +1 -0
  24. package/dist/tokens.js +4 -0
  25. package/dist/transports/event-handler-logger.d.ts +3 -0
  26. package/dist/transports/event-handler-logger.d.ts.map +1 -0
  27. package/dist/transports/event-handler-logger.js +3 -0
  28. package/dist/transports/grpc-transport.d.ts +193 -0
  29. package/dist/transports/grpc-transport.d.ts.map +1 -0
  30. package/dist/transports/grpc-transport.js +1035 -0
  31. package/dist/transports/kafka-transport.d.ts +77 -0
  32. package/dist/transports/kafka-transport.d.ts.map +1 -0
  33. package/dist/transports/kafka-transport.js +289 -0
  34. package/dist/transports/mqtt-transport.d.ts +124 -0
  35. package/dist/transports/mqtt-transport.d.ts.map +1 -0
  36. package/dist/transports/mqtt-transport.js +460 -0
  37. package/dist/transports/nats-transport.d.ts +92 -0
  38. package/dist/transports/nats-transport.d.ts.map +1 -0
  39. package/dist/transports/nats-transport.js +218 -0
  40. package/dist/transports/rabbitmq-transport.d.ts +77 -0
  41. package/dist/transports/rabbitmq-transport.d.ts.map +1 -0
  42. package/dist/transports/rabbitmq-transport.js +263 -0
  43. package/dist/transports/redis-streams-transport.d.ts +136 -0
  44. package/dist/transports/redis-streams-transport.d.ts.map +1 -0
  45. package/dist/transports/redis-streams-transport.js +482 -0
  46. package/dist/transports/redis-transport.d.ts +73 -0
  47. package/dist/transports/redis-transport.d.ts.map +1 -0
  48. package/dist/transports/redis-transport.js +152 -0
  49. package/dist/transports/tcp-transport.d.ts +66 -0
  50. package/dist/transports/tcp-transport.d.ts.map +1 -0
  51. package/dist/transports/tcp-transport.js +283 -0
  52. package/dist/types.d.ts +105 -0
  53. package/dist/types.d.ts.map +1 -0
  54. package/dist/types.js +1 -0
  55. package/package.json +105 -0
@@ -0,0 +1,77 @@
1
+ import type { MicroserviceTransport, TransportHandler } from '../types.js';
2
+ interface KafkaConsumerLike {
3
+ subscribe(topic: string, handler: (message: string) => Promise<void> | void): Promise<void>;
4
+ unsubscribe(topic: string): Promise<void>;
5
+ }
6
+ interface KafkaProducerLike {
7
+ publish(topic: string, message: string): Promise<void>;
8
+ }
9
+ /** Options for configuring the Kafka microservice transport. */
10
+ export interface KafkaMicroserviceTransportOptions {
11
+ consumer: KafkaConsumerLike;
12
+ eventTopic?: string;
13
+ messageTopic?: string;
14
+ producer: KafkaProducerLike;
15
+ requestTimeoutMs?: number;
16
+ responseTopic?: string;
17
+ }
18
+ /**
19
+ * Kafka transport for durable request-response messages and event delivery.
20
+ *
21
+ * The adapter uses one response topic per client instance so concurrent callers can await
22
+ * replies without leaking cross-request state through the shared producer/consumer pair.
23
+ */
24
+ export declare class KafkaMicroserviceTransport implements MicroserviceTransport {
25
+ private readonly options;
26
+ private closing;
27
+ private handler;
28
+ private listening;
29
+ private listenPromise;
30
+ private readonly eventTopic;
31
+ private readonly messageTopic;
32
+ private readonly pending;
33
+ private readonly requestTimeoutMs;
34
+ private readonly responseTopic;
35
+ /**
36
+ * Creates a Kafka transport with explicit producer and consumer collaborators.
37
+ *
38
+ * @param options Topic names, producer/consumer handles, and request-timeout settings.
39
+ */
40
+ constructor(options: KafkaMicroserviceTransportOptions);
41
+ /**
42
+ * Subscribes to the configured Kafka event, message, and response topics.
43
+ *
44
+ * @param handler Runtime callback invoked for inbound event and message packets.
45
+ * @returns A promise that resolves once all subscriptions are active.
46
+ */
47
+ listen(handler: TransportHandler): Promise<void>;
48
+ /**
49
+ * Sends one request-response message through Kafka.
50
+ *
51
+ * @param pattern Pattern identifying the remote message handler.
52
+ * @param payload Serializable request payload.
53
+ * @param signal Optional abort signal used to cancel the request.
54
+ * @returns The remote handler response payload.
55
+ */
56
+ send(pattern: string, payload: unknown, signal?: AbortSignal): Promise<unknown>;
57
+ /**
58
+ * Emits one fire-and-forget event through Kafka.
59
+ *
60
+ * @param pattern Pattern identifying the remote event handler.
61
+ * @param payload Serializable event payload.
62
+ * @returns A promise that resolves once the event is published.
63
+ */
64
+ emit(pattern: string, payload: unknown): Promise<void>;
65
+ /**
66
+ * Unsubscribes from Kafka topics and rejects any in-flight requests.
67
+ *
68
+ * @returns A promise that resolves once shutdown cleanup completes.
69
+ */
70
+ close(): Promise<void>;
71
+ private handleInboundEvent;
72
+ private handleInboundRequest;
73
+ private handleInboundResponse;
74
+ private parseMessage;
75
+ }
76
+ export {};
77
+ //# sourceMappingURL=kafka-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kafka-transport.d.ts","sourceRoot":"","sources":["../../src/transports/kafka-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE3E,UAAU,iBAAiB;IACzB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5F,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAED,UAAU,iBAAiB;IACzB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD;AAgBD,gEAAgE;AAChE,MAAM,WAAW,iCAAiC;IAChD,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,qBAAa,0BAA2B,YAAW,qBAAqB;IAgB1D,OAAO,CAAC,QAAQ,CAAC,OAAO;IAfpC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC;;;;OAIG;gBAC0B,OAAO,EAAE,iCAAiC;IAOvE;;;;;OAKG;IACG,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiDtD;;;;;;;OAOG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IA6ErF;;;;;;OAMG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5D;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAgCd,kBAAkB;YAkBlB,oBAAoB;YAwCpB,qBAAqB;IAqBnC,OAAO,CAAC,YAAY;CAqCrB"}
@@ -0,0 +1,289 @@
1
+ /** Options for configuring the Kafka microservice transport. */
2
+
3
+ /**
4
+ * Kafka transport for durable request-response messages and event delivery.
5
+ *
6
+ * The adapter uses one response topic per client instance so concurrent callers can await
7
+ * replies without leaking cross-request state through the shared producer/consumer pair.
8
+ */
9
+ export class KafkaMicroserviceTransport {
10
+ closing = false;
11
+ handler;
12
+ listening = false;
13
+ listenPromise;
14
+ eventTopic;
15
+ messageTopic;
16
+ pending = new Map();
17
+ requestTimeoutMs;
18
+ responseTopic;
19
+
20
+ /**
21
+ * Creates a Kafka transport with explicit producer and consumer collaborators.
22
+ *
23
+ * @param options Topic names, producer/consumer handles, and request-timeout settings.
24
+ */
25
+ constructor(options) {
26
+ this.options = options;
27
+ this.eventTopic = options.eventTopic ?? 'fluo.microservices.events';
28
+ this.messageTopic = options.messageTopic ?? 'fluo.microservices.messages';
29
+ this.responseTopic = options.responseTopic ?? `fluo.microservices.responses.${crypto.randomUUID()}`;
30
+ this.requestTimeoutMs = options.requestTimeoutMs ?? 3_000;
31
+ }
32
+
33
+ /**
34
+ * Subscribes to the configured Kafka event, message, and response topics.
35
+ *
36
+ * @param handler Runtime callback invoked for inbound event and message packets.
37
+ * @returns A promise that resolves once all subscriptions are active.
38
+ */
39
+ async listen(handler) {
40
+ this.closing = false;
41
+ this.handler = handler;
42
+ if (this.listening) {
43
+ return;
44
+ }
45
+ if (this.listenPromise) {
46
+ await this.listenPromise;
47
+ return;
48
+ }
49
+ this.listenPromise = (async () => {
50
+ const subscribed = [];
51
+ try {
52
+ await this.options.consumer.subscribe(this.eventTopic, message => {
53
+ void this.handleInboundEvent(message).catch(() => undefined);
54
+ });
55
+ subscribed.push(this.eventTopic);
56
+ await this.options.consumer.subscribe(this.messageTopic, message => {
57
+ void this.handleInboundRequest(message).catch(() => undefined);
58
+ });
59
+ subscribed.push(this.messageTopic);
60
+ await this.options.consumer.subscribe(this.responseTopic, message => {
61
+ void this.handleInboundResponse(message).catch(() => undefined);
62
+ });
63
+ subscribed.push(this.responseTopic);
64
+ } catch (error) {
65
+ for (const topic of subscribed) {
66
+ await this.options.consumer.unsubscribe(topic).catch(() => undefined);
67
+ }
68
+ throw error;
69
+ }
70
+ this.listening = true;
71
+ })();
72
+ try {
73
+ await this.listenPromise;
74
+ } finally {
75
+ this.listenPromise = undefined;
76
+ }
77
+ }
78
+
79
+ /**
80
+ * Sends one request-response message through Kafka.
81
+ *
82
+ * @param pattern Pattern identifying the remote message handler.
83
+ * @param payload Serializable request payload.
84
+ * @param signal Optional abort signal used to cancel the request.
85
+ * @returns The remote handler response payload.
86
+ */
87
+ async send(pattern, payload, signal) {
88
+ if (this.closing) {
89
+ throw new Error('KafkaMicroserviceTransport is closing. Wait for close() to complete before send().');
90
+ }
91
+ if (!this.listening) {
92
+ throw new Error('KafkaMicroserviceTransport is not listening. Call listen() before send().');
93
+ }
94
+ const requestId = crypto.randomUUID();
95
+ const requestMessage = {
96
+ kind: 'message',
97
+ pattern,
98
+ payload,
99
+ replyTopic: this.responseTopic,
100
+ requestId
101
+ };
102
+ return await new Promise((resolve, reject) => {
103
+ let abortHandler;
104
+ let timeout;
105
+ const cleanup = () => {
106
+ if (timeout) {
107
+ clearTimeout(timeout);
108
+ }
109
+ if (signal && abortHandler) {
110
+ signal.removeEventListener('abort', abortHandler);
111
+ }
112
+ this.pending.delete(requestId);
113
+ };
114
+ const entry = {
115
+ resolve: value => {
116
+ cleanup();
117
+ resolve(value);
118
+ },
119
+ reject: error => {
120
+ cleanup();
121
+ reject(error);
122
+ }
123
+ };
124
+ this.pending.set(requestId, entry);
125
+ timeout = setTimeout(() => {
126
+ entry.reject(new Error(`Kafka request timed out after ${String(this.requestTimeoutMs)}ms waiting for pattern "${pattern}".`));
127
+ }, this.requestTimeoutMs);
128
+ if (signal) {
129
+ if (signal.aborted) {
130
+ entry.reject(new Error('Kafka request aborted before publish.'));
131
+ return;
132
+ }
133
+ abortHandler = () => {
134
+ entry.reject(new Error('Kafka request aborted.'));
135
+ };
136
+ signal.addEventListener('abort', abortHandler, {
137
+ once: true
138
+ });
139
+ }
140
+ void Promise.resolve().then(async () => {
141
+ if (this.closing) {
142
+ entry.reject(new Error('Kafka microservice transport closed before request dispatch.'));
143
+ return;
144
+ }
145
+ await this.options.producer.publish(this.messageTopic, JSON.stringify(requestMessage));
146
+ }).catch(error => {
147
+ entry.reject(error instanceof Error ? error : new Error('Failed to publish Kafka request.'));
148
+ });
149
+ });
150
+ }
151
+
152
+ /**
153
+ * Emits one fire-and-forget event through Kafka.
154
+ *
155
+ * @param pattern Pattern identifying the remote event handler.
156
+ * @param payload Serializable event payload.
157
+ * @returns A promise that resolves once the event is published.
158
+ */
159
+ async emit(pattern, payload) {
160
+ const message = {
161
+ kind: 'event',
162
+ pattern,
163
+ payload
164
+ };
165
+ await this.options.producer.publish(this.eventTopic, JSON.stringify(message));
166
+ }
167
+
168
+ /**
169
+ * Unsubscribes from Kafka topics and rejects any in-flight requests.
170
+ *
171
+ * @returns A promise that resolves once shutdown cleanup completes.
172
+ */
173
+ async close() {
174
+ this.closing = true;
175
+ let closeError;
176
+ if (this.listenPromise) {
177
+ await this.listenPromise;
178
+ }
179
+ try {
180
+ if (this.listening) {
181
+ for (const topic of new Set([this.eventTopic, this.messageTopic, this.responseTopic])) {
182
+ try {
183
+ await this.options.consumer.unsubscribe(topic);
184
+ } catch (error) {
185
+ closeError ??= error;
186
+ }
187
+ }
188
+ }
189
+ } finally {
190
+ this.handler = undefined;
191
+ this.listening = false;
192
+ for (const pending of [...this.pending.values()]) {
193
+ pending.reject(new Error('Kafka microservice transport closed before response.'));
194
+ }
195
+ }
196
+ if (closeError) {
197
+ throw closeError;
198
+ }
199
+ }
200
+ async handleInboundEvent(rawMessage) {
201
+ if (!this.handler) {
202
+ return;
203
+ }
204
+ const message = this.parseMessage(rawMessage);
205
+ if (!message || message.kind !== 'event') {
206
+ return;
207
+ }
208
+ await this.handler({
209
+ kind: 'event',
210
+ pattern: message.pattern,
211
+ payload: message.payload
212
+ });
213
+ }
214
+ async handleInboundRequest(rawMessage) {
215
+ if (!this.handler) {
216
+ return;
217
+ }
218
+ const message = this.parseMessage(rawMessage);
219
+ if (!message || message.kind !== 'message' || !message.requestId) {
220
+ return;
221
+ }
222
+ const replyTopic = message.replyTopic && message.replyTopic.length > 0 ? message.replyTopic : this.responseTopic;
223
+ try {
224
+ const payload = await this.handler({
225
+ kind: 'message',
226
+ pattern: message.pattern,
227
+ payload: message.payload,
228
+ requestId: message.requestId
229
+ });
230
+ await this.options.producer.publish(replyTopic, JSON.stringify({
231
+ kind: 'response',
232
+ pattern: message.pattern,
233
+ payload,
234
+ requestId: message.requestId
235
+ }));
236
+ } catch (error) {
237
+ const errorMessage = error instanceof Error ? error.message : 'Unhandled microservice error';
238
+ await this.options.producer.publish(replyTopic, JSON.stringify({
239
+ error: errorMessage,
240
+ kind: 'response',
241
+ pattern: message.pattern,
242
+ requestId: message.requestId
243
+ }));
244
+ }
245
+ }
246
+ async handleInboundResponse(rawMessage) {
247
+ const message = this.parseMessage(rawMessage);
248
+ if (!message || message.kind !== 'response' || !message.requestId) {
249
+ return;
250
+ }
251
+ const pending = this.pending.get(message.requestId);
252
+ if (!pending) {
253
+ return;
254
+ }
255
+ if (message.error) {
256
+ pending.reject(new Error(message.error));
257
+ return;
258
+ }
259
+ pending.resolve(message.payload);
260
+ }
261
+ parseMessage(rawMessage) {
262
+ let message;
263
+ try {
264
+ message = JSON.parse(rawMessage);
265
+ } catch {
266
+ return undefined;
267
+ }
268
+ if (!message || typeof message !== 'object') {
269
+ return undefined;
270
+ }
271
+ const candidate = message;
272
+ if (candidate.kind !== 'event' && candidate.kind !== 'message' && candidate.kind !== 'response') {
273
+ return undefined;
274
+ }
275
+ if (typeof candidate.pattern !== 'string') {
276
+ return undefined;
277
+ }
278
+ if (candidate.error !== undefined && typeof candidate.error !== 'string') {
279
+ return undefined;
280
+ }
281
+ if (candidate.replyTopic !== undefined && typeof candidate.replyTopic !== 'string') {
282
+ return undefined;
283
+ }
284
+ if (candidate.requestId !== undefined && typeof candidate.requestId !== 'string') {
285
+ return undefined;
286
+ }
287
+ return candidate;
288
+ }
289
+ }
@@ -0,0 +1,124 @@
1
+ import type { MicroserviceTransport, MicroserviceTransportLogger, TransportHandler } from '../types.js';
2
+ type DynamicImport = (specifier: string) => Promise<unknown>;
3
+ interface MqttPublishOptions {
4
+ qos?: number;
5
+ retain?: boolean;
6
+ }
7
+ interface MqttSubscribeOptions {
8
+ qos?: number;
9
+ }
10
+ interface MqttConnectOptions {
11
+ [key: string]: unknown;
12
+ }
13
+ interface MqttPacketLike {
14
+ retain?: boolean;
15
+ qos?: number;
16
+ }
17
+ interface MqttClientLike {
18
+ end(force?: boolean, callback?: (error?: Error) => void): void;
19
+ off?(event: 'message', listener: (topic: string, payload: Buffer, packet: MqttPacketLike) => void): void;
20
+ on(event: 'message', listener: (topic: string, payload: Buffer, packet: MqttPacketLike) => void): void;
21
+ publish(topic: string, payload: string, options: MqttPublishOptions, callback?: (error?: Error) => void): void;
22
+ subscribe(topic: string, options: MqttSubscribeOptions, callback?: (error?: Error) => void): void;
23
+ unsubscribe(topic: string, callback?: (error?: Error) => void): void;
24
+ }
25
+ interface MqttModuleLike {
26
+ connect(url: string, options?: MqttConnectOptions): MqttClientLike;
27
+ }
28
+ /** Options for configuring the MQTT microservice transport. */
29
+ export interface MqttMicroserviceTransportOptions {
30
+ client?: MqttClientLike;
31
+ url?: string;
32
+ connectOptions?: MqttConnectOptions;
33
+ namespace?: string;
34
+ eventTopic?: string;
35
+ messageTopic?: string;
36
+ replyTopic?: string;
37
+ requestTimeoutMs?: number;
38
+ eventQos?: 0 | 1 | 2;
39
+ messageQos?: 0 | 1 | 2;
40
+ responseQos?: 0 | 1 | 2;
41
+ eventRetain?: boolean;
42
+ messageRetain?: boolean;
43
+ responseRetain?: boolean;
44
+ mqtt?: MqttModuleLike;
45
+ moduleLoader?: DynamicImport;
46
+ }
47
+ /**
48
+ * MQTT transport for topic-based request-response messages and event delivery.
49
+ *
50
+ * The adapter can either own its MQTT client or reuse one supplied by the application while
51
+ * keeping Fluo's message, event, and response channels isolated by topic.
52
+ */
53
+ export declare class MqttMicroserviceTransport implements MicroserviceTransport {
54
+ private readonly options;
55
+ private client;
56
+ private closing;
57
+ private handler;
58
+ private readonly internallyOwnedClient;
59
+ private logger;
60
+ private listening;
61
+ private listenPromise;
62
+ private readonly messageListener;
63
+ private readonly eventQos;
64
+ private readonly eventRetain;
65
+ private readonly eventTopic;
66
+ private readonly messageQos;
67
+ private readonly messageRetain;
68
+ private readonly messageTopic;
69
+ private readonly pending;
70
+ private readonly replyTopic;
71
+ private readonly requestTimeoutMs;
72
+ private readonly responseQos;
73
+ private readonly responseRetain;
74
+ /**
75
+ * Creates an MQTT transport with topic, QoS, retain, and timeout settings.
76
+ *
77
+ * @param options MQTT client/module wiring and topic behavior for the transport.
78
+ */
79
+ constructor(options: MqttMicroserviceTransportOptions);
80
+ setLogger(logger: MicroserviceTransportLogger): void;
81
+ /**
82
+ * Subscribes to the configured MQTT event, message, and reply topics.
83
+ *
84
+ * @param handler Runtime callback invoked for inbound event and message packets.
85
+ * @returns A promise that resolves once all subscriptions are active.
86
+ */
87
+ listen(handler: TransportHandler): Promise<void>;
88
+ /**
89
+ * Sends one request-response message through MQTT.
90
+ *
91
+ * @param pattern Pattern identifying the remote message handler.
92
+ * @param payload Serializable request payload.
93
+ * @param signal Optional abort signal used to cancel the request.
94
+ * @returns The remote handler response payload.
95
+ */
96
+ send(pattern: string, payload: unknown, signal?: AbortSignal): Promise<unknown>;
97
+ /**
98
+ * Emits one fire-and-forget event through MQTT.
99
+ *
100
+ * @param pattern Pattern identifying the remote event handler.
101
+ * @param payload Serializable event payload.
102
+ * @returns A promise that resolves once the event is published.
103
+ */
104
+ emit(pattern: string, payload: unknown): Promise<void>;
105
+ /**
106
+ * Unsubscribes from MQTT topics and closes the owned client when applicable.
107
+ *
108
+ * @returns A promise that resolves once shutdown cleanup completes.
109
+ */
110
+ close(): Promise<void>;
111
+ private handleInbound;
112
+ private handleInboundEvent;
113
+ private handleInboundRequest;
114
+ private handleInboundResponse;
115
+ private resolveClient;
116
+ private resolveMqttModule;
117
+ private publish;
118
+ private subscribeTopic;
119
+ private unsubscribeTopic;
120
+ private endClient;
121
+ private logEventHandlerFailure;
122
+ }
123
+ export {};
124
+ //# sourceMappingURL=mqtt-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mqtt-transport.d.ts","sourceRoot":"","sources":["../../src/transports/mqtt-transport.ts"],"names":[],"mappings":"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"}