@nestjstools/messaging-nats-extension 1.0.0 → 1.1.0

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 (38) hide show
  1. package/README.md +81 -13
  2. package/lib/channel/nats-channel-factory.js.map +1 -1
  3. package/lib/channel/nats-channel.config.js +2 -1
  4. package/lib/channel/nats-channel.config.js.map +1 -1
  5. package/lib/channel/nats-jet-stream-channel-factory.d.ts +6 -0
  6. package/lib/channel/nats-jet-stream-channel-factory.js +24 -0
  7. package/lib/channel/nats-jet-stream-channel-factory.js.map +1 -0
  8. package/lib/channel/nats-jet-stream-channel.config.d.ts +24 -0
  9. package/lib/channel/nats-jet-stream-channel.config.js +34 -0
  10. package/lib/channel/nats-jet-stream-channel.config.js.map +1 -0
  11. package/lib/channel/nats-jet-stream.channel.d.ts +10 -0
  12. package/lib/channel/nats-jet-stream.channel.js +28 -0
  13. package/lib/channel/nats-jet-stream.channel.js.map +1 -0
  14. package/lib/channel/nats.channel.d.ts +1 -0
  15. package/lib/channel/nats.channel.js +6 -0
  16. package/lib/channel/nats.channel.js.map +1 -1
  17. package/lib/consumer/nats-jet-stream-messaging-consumer.d.ts +7 -0
  18. package/lib/consumer/nats-jet-stream-messaging-consumer.js +85 -0
  19. package/lib/consumer/nats-jet-stream-messaging-consumer.js.map +1 -0
  20. package/lib/consumer/nats-messaging-consumer.js +1 -1
  21. package/lib/consumer/nats-messaging-consumer.js.map +1 -1
  22. package/lib/index.d.ts +5 -0
  23. package/lib/index.js +22 -0
  24. package/lib/index.js.map +1 -0
  25. package/lib/message-bus/nats-jet-stream-message-bus-factory.d.ts +6 -0
  26. package/lib/message-bus/nats-jet-stream-message-bus-factory.js +24 -0
  27. package/lib/message-bus/nats-jet-stream-message-bus-factory.js.map +1 -0
  28. package/lib/message-bus/nats-jet-stream-message-bus.d.ts +8 -0
  29. package/lib/message-bus/nats-jet-stream-message-bus.js +40 -0
  30. package/lib/message-bus/nats-jet-stream-message-bus.js.map +1 -0
  31. package/lib/message-bus/nats-message-bus-factory.d.ts +2 -2
  32. package/lib/message-bus/nats-message-bus-factory.js.map +1 -1
  33. package/lib/message-bus/nats-message-bus.js +2 -1
  34. package/lib/message-bus/nats-message-bus.js.map +1 -1
  35. package/lib/messaging-nats-extension.module.js +6 -0
  36. package/lib/messaging-nats-extension.module.js.map +1 -1
  37. package/lib/tsconfig.build.tsbuildinfo +1 -1
  38. package/package.json +5 -3
package/README.md CHANGED
@@ -6,7 +6,6 @@
6
6
 
7
7
  A NestJS library for managing asynchronous and synchronous messages with support for buses, handlers, channels, and consumers. This library simplifies building scalable and decoupled applications by facilitating robust message handling pipelines while ensuring flexibility and reliability.
8
8
 
9
- ---
10
9
  ## Documentation
11
10
 
12
11
  https://nestjstools.gitbook.io/nestjstools-messaging-docs
@@ -24,10 +23,12 @@ or
24
23
  ```bash
25
24
  yarn add @nestjstools/messaging @nestjstools/messaging-nats-extension
26
25
  ```
27
- ## AmazonSQS Integration: Messaging Configuration Example
26
+ ## Nats Integration: Messaging Configuration Example
28
27
 
29
28
  ---
30
29
 
30
+ ### Simple Config for nats messaging
31
+
31
32
  ```typescript
32
33
  import { Module } from '@nestjs/common';
33
34
  import { MessagingModule } from '@nestjstools/messaging';
@@ -40,14 +41,58 @@ import { MessagingNatsExtensionModule, NatsChannelConfig } from "@nestjstools/me
40
41
  MessagingModule.forRoot({
41
42
  buses: [
42
43
  {
43
- name: 'nats-event.bus',
44
- channels: ['nats-event'],
44
+ name: 'nats-message.bus',
45
+ channels: ['nats-message'],
45
46
  },
46
47
  ],
47
48
  channels: [
48
49
  new NatsChannelConfig({
49
- name: 'nats-event',
50
+ name: 'nats-message',
50
51
  enableConsumer: true, // Enable if you want to consume messages
52
+ connectionUris: ['nats://localhost:4222'],
53
+ subscriberName: 'nats-core',
54
+ }),
55
+ ],
56
+ debug: true, // Optional: Enable debugging for Messaging operations
57
+ }),
58
+ ],
59
+ })
60
+ export class AppModule {}
61
+ ```
62
+
63
+ ### Config for Nats with JetStream
64
+
65
+ ```typescript
66
+ import { Module } from '@nestjs/common';
67
+ import { MessagingModule } from '@nestjstools/messaging';
68
+ import { SendMessageHandler } from './handlers/send-message.handler';
69
+ import { MessagingNatsExtensionModule, NatsJetStreamChannelConfig } from "@nestjstools/messaging-nats-extension";
70
+
71
+ @Module({
72
+ imports: [
73
+ MessagingNatsExtensionModule, // Importing the Nats extension module
74
+ MessagingModule.forRoot({
75
+ buses: [
76
+ {
77
+ name: 'nats-message.bus',
78
+ channels: ['nats-channel-jetstream'],
79
+ },
80
+ ],
81
+ channels: [
82
+ new NatsJetStreamChannelConfig({
83
+ name: 'nats-channel-jetstream', // Unique channel name in your app
84
+ connectionUris: ['nats://localhost:4222'], // URI of your NATS server
85
+ enableConsumer: true, // Enables message consumer
86
+ streamConfig: {
87
+ streamName: 'event-steam', // Name of the JetStream stream
88
+ deliverSubjects: ['my_app_command.*'], // Subjects for stream
89
+ autoUpdate: true, // Allow stream config update at app startup
90
+ },
91
+ consumerConfig: {
92
+ durableName: 'nats-durable_name', // Persistent consumer name (track offset)
93
+ subject: 'my_app_command.*', // Specific subject this consumer listens to
94
+ autoUpdate: true, // Allow consumer config update
95
+ },
51
96
  }),
52
97
  ],
53
98
  debug: true, // Optional: Enable debugging for Messaging operations
@@ -67,7 +112,7 @@ import { IMessageBus, MessageBus, RoutingMessage } from '@nestjstools/messaging'
67
112
  @Controller()
68
113
  export class AppController {
69
114
  constructor(
70
- @MessageBus('nats-event.bus') private natsMessageBus: IMessageBus,
115
+ @MessageBus('nats-message.bus') private natsMessageBus: IMessageBus,
71
116
  ) {}
72
117
 
73
118
  @Get('/nats')
@@ -112,12 +157,35 @@ export class CreateUserHandler implements IMessageHandler<CreateUser>{
112
157
  Once the message is published with the correct routing key, it will be automatically routed to the appropriate handler within the NestJS application.
113
158
  ---
114
159
 
115
- ## Configuration options
160
+ ## Routing Strategy
116
161
 
117
- ### NatsChannel
162
+ Message routing behavior depends on the value of `subscriberName`:
163
+
164
+ * **Static Routing:**
165
+ If `subscriberName` is a specific subject (e.g., `'order.created'`), all messages will be published directly to that subject.
166
+
167
+ * **Wildcard Routing:**
168
+ If `subscriberName` contains a wildcard (e.g., `'order.*'` or `'order.>'`), the system uses `message.messageRoutingKey` as the publish subject instead. This enables dynamic routing based on the actual message type or topic.
169
+
170
+ ### Example
171
+
172
+ ```ts
173
+ // If subscriberName is 'order.*'
174
+ subscriberName = 'order.*';
175
+ message.messageRoutingKey = 'order.created';
176
+
177
+ // The message will be published to 'order.created'
178
+ ```
179
+ or JetStream
180
+ ```ts
181
+ // If JetStream deliverSubjects is ['order.*']
182
+ subject = 'order.*'; // from consumer
183
+ message.messageRoutingKey = 'order.created';
184
+
185
+ // The message will be published to 'order.created'
186
+ ```
118
187
 
119
- #### **NatsChannelConfig**
120
- Here's a revised and expanded version of your README section. I corrected grammar, clarified the description, and added the missing properties.
188
+ This strategy allows you to use a single subscriber to handle a range of message types dynamically.
121
189
 
122
190
  ---
123
191
 
@@ -126,13 +194,13 @@ Here's a revised and expanded version of your README section. I corrected gramma
126
194
  ### NatsChannel
127
195
 
128
196
  | **Property** | **Description** | **Default Value** |
129
- | -------------------- | ------------------------------------------------------------------------------- | ----------------- |
130
- | **`name`** | The name of the NATS channel (e.g., `'nats-event'`). | |
197
+ | -------------------- |---------------------------------------------------------------------------------| ----------------- |
198
+ | **`name`** | The name of the NATS channel (e.g., `'nats-message'`). | |
131
199
  | **`enableConsumer`** | Whether to enable message consumption (i.e., process incoming messages). | `true` |
132
200
  | **`connectionUris`** | An array of NATS server URIs to connect to (e.g., `['nats://localhost:4222']`). | |
133
201
  | **`subscriberName`** | A unique identifier for the subscriber (used in queue group subscriptions). | |
134
202
 
135
203
  ---
136
204
 
137
- ## Real world working example with RabbitMQ & Redis - but might be helpful to understand how it works
205
+ ### Real world working example with RabbitMQ & Redis - but might be helpful to understand how it works
138
206
  https://github.com/nestjstools/messaging-rabbitmq-example
@@ -1 +1 @@
1
- {"version":3,"file":"nats-channel-factory.js","sourceRoot":"","sources":["../../src/channel/nats-channel-factory.ts"],"names":[],"mappings":";;;;;;;;;AAAA,iDAA6C;AAC7C,2CAA0C;AAC1C,sDAAyE;AACzE,+DAA0D;AAInD,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC7B,MAAM,CAAC,aAAgC;QACrC,OAAO,IAAI,0BAAW,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;CACF,CAAA;AAJY,gDAAkB;6BAAlB,kBAAkB;IAF9B,IAAA,mBAAU,GAAE;IACZ,IAAA,0BAAc,EAAC,uCAAiB,CAAC;GACrB,kBAAkB,CAI9B"}
1
+ {"version":3,"file":"nats-channel-factory.js","sourceRoot":"","sources":["../../src/channel/nats-channel-factory.ts"],"names":[],"mappings":";;;;;;;;;AAAA,iDAA6C;AAC7C,2CAA4C;AAC5C,sDAAyE;AACzE,+DAA0D;AAInD,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC7B,MAAM,CAAC,aAAgC;QACrC,OAAO,IAAI,0BAAW,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;CACF,CAAA;AAJY,gDAAkB;6BAAlB,kBAAkB;IAF9B,IAAA,mBAAU,GAAE;IACZ,IAAA,0BAAc,EAAC,uCAAiB,CAAC;GACrB,kBAAkB,CAI9B"}
@@ -7,7 +7,8 @@ class NatsChannelConfig extends messaging_1.ChannelConfig {
7
7
  subscriberName;
8
8
  constructor({ connectionUris, subscriberName, name, enableConsumer, avoidErrorsForNotExistedHandlers, middlewares, normalizer, }) {
9
9
  super(name, avoidErrorsForNotExistedHandlers, middlewares, enableConsumer, normalizer);
10
- this.connectionUris = typeof connectionUris === 'string' ? [connectionUris] : connectionUris;
10
+ this.connectionUris =
11
+ typeof connectionUris === 'string' ? [connectionUris] : connectionUris;
11
12
  this.subscriberName = subscriberName;
12
13
  }
13
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nats-channel.config.js","sourceRoot":"","sources":["../../src/channel/nats-channel.config.ts"],"names":[],"mappings":";;;AAAA,sDAAuD;AAEvD,MAAa,iBAAkB,SAAQ,yBAAa;IAClC,cAAc,CAAW;IACzB,cAAc,CAAS;IAEvC,YAAY,EACE,cAAc,EACd,cAAc,EACd,IAAI,EACJ,cAAc,EACd,gCAAgC,EAChC,WAAW,EACX,UAAU,GACQ;QAC9B,KAAK,CAAC,IAAI,EAAE,gCAAgC,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;QACvF,IAAI,CAAC,cAAc,GAAG,OAAO,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;QAC7F,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;CACF;AAjBD,8CAiBC"}
1
+ {"version":3,"file":"nats-channel.config.js","sourceRoot":"","sources":["../../src/channel/nats-channel.config.ts"],"names":[],"mappings":";;;AAAA,sDAAuD;AAEvD,MAAa,iBAAkB,SAAQ,yBAAa;IAClC,cAAc,CAAW;IACzB,cAAc,CAAS;IAEvC,YAAY,EACV,cAAc,EACd,cAAc,EACd,IAAI,EACJ,cAAc,EACd,gCAAgC,EAChC,WAAW,EACX,UAAU,GACQ;QAClB,KAAK,CACH,IAAI,EACJ,gCAAgC,EAChC,WAAW,EACX,cAAc,EACd,UAAU,CACX,CAAC;QACF,IAAI,CAAC,cAAc;YACjB,OAAO,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;QACzE,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;CACF;AAxBD,8CAwBC"}
@@ -0,0 +1,6 @@
1
+ import { IChannelFactory } from '@nestjstools/messaging';
2
+ import { NatsJetStreamChannelConfig } from './nats-jet-stream-channel.config';
3
+ import { NatsJetStreamChannel } from './nats-jet-stream.channel';
4
+ export declare class NatsJetStreamChannelFactory implements IChannelFactory<NatsJetStreamChannelConfig> {
5
+ create(channelConfig: NatsJetStreamChannelConfig): NatsJetStreamChannel;
6
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.NatsJetStreamChannelFactory = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const messaging_1 = require("@nestjstools/messaging");
12
+ const nats_jet_stream_channel_config_1 = require("./nats-jet-stream-channel.config");
13
+ const nats_jet_stream_channel_1 = require("./nats-jet-stream.channel");
14
+ let NatsJetStreamChannelFactory = class NatsJetStreamChannelFactory {
15
+ create(channelConfig) {
16
+ return new nats_jet_stream_channel_1.NatsJetStreamChannel(channelConfig);
17
+ }
18
+ };
19
+ exports.NatsJetStreamChannelFactory = NatsJetStreamChannelFactory;
20
+ exports.NatsJetStreamChannelFactory = NatsJetStreamChannelFactory = __decorate([
21
+ (0, common_1.Injectable)(),
22
+ (0, messaging_1.ChannelFactory)(nats_jet_stream_channel_config_1.NatsJetStreamChannelConfig)
23
+ ], NatsJetStreamChannelFactory);
24
+ //# sourceMappingURL=nats-jet-stream-channel-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nats-jet-stream-channel-factory.js","sourceRoot":"","sources":["../../src/channel/nats-jet-stream-channel-factory.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAC5C,sDAAyE;AACzE,qFAA8E;AAC9E,uEAAiE;AAI1D,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IAGtC,MAAM,CAAC,aAAyC;QAC9C,OAAO,IAAI,8CAAoB,CAAC,aAAa,CAAC,CAAC;IACjD,CAAC;CACF,CAAA;AANY,kEAA2B;sCAA3B,2BAA2B;IAFvC,IAAA,mBAAU,GAAE;IACZ,IAAA,0BAAc,EAAC,2DAA0B,CAAC;GAC9B,2BAA2B,CAMvC"}
@@ -0,0 +1,24 @@
1
+ import { ChannelConfig } from '@nestjstools/messaging';
2
+ export declare class NatsJetStreamChannelConfig extends ChannelConfig {
3
+ readonly connectionUris: string[] | string;
4
+ readonly streamConfig: StreamConfig;
5
+ readonly consumerConfig: ConsumerConfig;
6
+ constructor({ connectionUris, name, enableConsumer, avoidErrorsForNotExistedHandlers, middlewares, normalizer, streamConfig, consumerConfig, }: NatsJetStreamChannelConfig);
7
+ }
8
+ export declare enum StorageType {
9
+ File = "file",
10
+ Memory = "memory"
11
+ }
12
+ export interface StreamConfig {
13
+ autoUpdate?: boolean;
14
+ streamName: string;
15
+ deliverSubjects: string[];
16
+ maxMsgs?: number;
17
+ maxBytes?: number;
18
+ storageType?: StorageType;
19
+ }
20
+ export interface ConsumerConfig {
21
+ autoUpdate?: boolean;
22
+ durableName?: string;
23
+ subject: string;
24
+ }
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StorageType = exports.NatsJetStreamChannelConfig = void 0;
4
+ const messaging_1 = require("@nestjstools/messaging");
5
+ class NatsJetStreamChannelConfig extends messaging_1.ChannelConfig {
6
+ connectionUris;
7
+ streamConfig;
8
+ consumerConfig;
9
+ constructor({ connectionUris, name, enableConsumer, avoidErrorsForNotExistedHandlers, middlewares, normalizer, streamConfig, consumerConfig, }) {
10
+ super(name, avoidErrorsForNotExistedHandlers, middlewares, enableConsumer, normalizer);
11
+ this.connectionUris =
12
+ typeof connectionUris === 'string' ? [connectionUris] : connectionUris;
13
+ this.streamConfig = {
14
+ autoUpdate: streamConfig.autoUpdate ?? false,
15
+ maxBytes: streamConfig.maxBytes ?? 1000,
16
+ maxMsgs: streamConfig.maxMsgs ?? 10_000_000,
17
+ streamName: streamConfig.streamName,
18
+ deliverSubjects: streamConfig.deliverSubjects,
19
+ storageType: streamConfig.storageType ?? StorageType.Memory,
20
+ };
21
+ this.consumerConfig = {
22
+ autoUpdate: streamConfig.autoUpdate ?? false,
23
+ durableName: consumerConfig.durableName,
24
+ subject: consumerConfig.subject,
25
+ };
26
+ }
27
+ }
28
+ exports.NatsJetStreamChannelConfig = NatsJetStreamChannelConfig;
29
+ var StorageType;
30
+ (function (StorageType) {
31
+ StorageType["File"] = "file";
32
+ StorageType["Memory"] = "memory";
33
+ })(StorageType || (exports.StorageType = StorageType = {}));
34
+ //# sourceMappingURL=nats-jet-stream-channel.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nats-jet-stream-channel.config.js","sourceRoot":"","sources":["../../src/channel/nats-jet-stream-channel.config.ts"],"names":[],"mappings":";;;AAAA,sDAAuD;AAEvD,MAAa,0BAA2B,SAAQ,yBAAa;IAC3C,cAAc,CAAoB;IAClC,YAAY,CAAe;IAC3B,cAAc,CAAiB;IAE/C,YAAY,EACV,cAAc,EACd,IAAI,EACJ,cAAc,EACd,gCAAgC,EAChC,WAAW,EACX,UAAU,EACV,YAAY,EACZ,cAAc,GACa;QAC3B,KAAK,CACH,IAAI,EACJ,gCAAgC,EAChC,WAAW,EACX,cAAc,EACd,UAAU,CACX,CAAC;QACF,IAAI,CAAC,cAAc;YACjB,OAAO,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;QACzE,IAAI,CAAC,YAAY,GAAG;YAClB,UAAU,EAAE,YAAY,CAAC,UAAU,IAAI,KAAK;YAC5C,QAAQ,EAAE,YAAY,CAAC,QAAQ,IAAI,IAAI;YACvC,OAAO,EAAE,YAAY,CAAC,OAAO,IAAI,UAAU;YAC3C,UAAU,EAAE,YAAY,CAAC,UAAU;YACnC,eAAe,EAAE,YAAY,CAAC,eAAe;YAC7C,WAAW,EAAE,YAAY,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM;SAC5D,CAAC;QACF,IAAI,CAAC,cAAc,GAAG;YACpB,UAAU,EAAE,YAAY,CAAC,UAAU,IAAI,KAAK;YAC5C,WAAW,EAAE,cAAc,CAAC,WAAW;YACvC,OAAO,EAAE,cAAc,CAAC,OAAO;SAChC,CAAC;IACJ,CAAC;CACF;AAtCD,gEAsCC;AAED,IAAY,WASX;AATD,WAAY,WAAW;IAIrB,4BAAa,CAAA;IAIb,gCAAiB,CAAA;AACnB,CAAC,EATW,WAAW,2BAAX,WAAW,QAStB"}
@@ -0,0 +1,10 @@
1
+ import { Channel } from '@nestjstools/messaging';
2
+ import { JetStreamClient, JetStreamManager, NatsConnection } from 'nats';
3
+ import { NatsJetStreamChannelConfig } from './nats-jet-stream-channel.config';
4
+ export declare class NatsJetStreamChannel extends Channel<NatsJetStreamChannelConfig> {
5
+ readonly client: Promise<NatsConnection>;
6
+ constructor(config: NatsJetStreamChannelConfig);
7
+ jetStreamClient(): Promise<JetStreamClient>;
8
+ jetStreamManager(): Promise<JetStreamManager>;
9
+ onChannelDestroy(): Promise<void>;
10
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NatsJetStreamChannel = void 0;
4
+ const messaging_1 = require("@nestjstools/messaging");
5
+ const nats_1 = require("nats");
6
+ class NatsJetStreamChannel extends messaging_1.Channel {
7
+ client;
8
+ constructor(config) {
9
+ super(config);
10
+ this.client = (0, nats_1.connect)({ servers: config.connectionUris });
11
+ }
12
+ async jetStreamClient() {
13
+ const client = await this.client;
14
+ return client.jetstream();
15
+ }
16
+ async jetStreamManager() {
17
+ const client = await this.client;
18
+ return client.jetstreamManager();
19
+ }
20
+ async onChannelDestroy() {
21
+ const client = await this.client;
22
+ await client.drain();
23
+ await client.close();
24
+ return super.onChannelDestroy();
25
+ }
26
+ }
27
+ exports.NatsJetStreamChannel = NatsJetStreamChannel;
28
+ //# sourceMappingURL=nats-jet-stream.channel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nats-jet-stream.channel.js","sourceRoot":"","sources":["../../src/channel/nats-jet-stream.channel.ts"],"names":[],"mappings":";;;AAAA,sDAAiD;AACjD,+BAKc;AAGd,MAAa,oBAAqB,SAAQ,mBAAmC;IAC3D,MAAM,CAA0B;IAEhD,YAAY,MAAkC;QAC5C,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,MAAM,GAAG,IAAA,cAAO,EAAC,EAAE,OAAO,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC;QACjC,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC;QACjC,OAAO,MAAM,CAAC,gBAAgB,EAAE,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC;QACjC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC,gBAAgB,EAAE,CAAC;IAClC,CAAC;CACF;AAxBD,oDAwBC"}
@@ -4,4 +4,5 @@ import { NatsConnection } from 'nats';
4
4
  export declare class NatsChannel extends Channel<NatsChannelConfig> {
5
5
  readonly client: Promise<NatsConnection>;
6
6
  constructor(config: NatsChannelConfig);
7
+ onChannelDestroy(): Promise<void>;
7
8
  }
@@ -9,6 +9,12 @@ class NatsChannel extends messaging_1.Channel {
9
9
  super(config);
10
10
  this.client = (0, nats_1.connect)({ servers: config.connectionUris });
11
11
  }
12
+ async onChannelDestroy() {
13
+ const client = await this.client;
14
+ await client.drain();
15
+ await client.close();
16
+ return super.onChannelDestroy();
17
+ }
12
18
  }
13
19
  exports.NatsChannel = NatsChannel;
14
20
  //# sourceMappingURL=nats.channel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nats.channel.js","sourceRoot":"","sources":["../../src/channel/nats.channel.ts"],"names":[],"mappings":";;;AAAA,sDAAiD;AAEjD,+BAA+C;AAE/C,MAAa,WAAY,SAAQ,mBAA0B;IACzC,MAAM,CAA0B;IAEhD,YAAY,MAAyB;QACnC,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,MAAM,GAAG,IAAA,cAAO,EAAC,EAAE,OAAO,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;IAC5D,CAAC;CACF;AAPD,kCAOC"}
1
+ {"version":3,"file":"nats.channel.js","sourceRoot":"","sources":["../../src/channel/nats.channel.ts"],"names":[],"mappings":";;;AAAA,sDAAiD;AAEjD,+BAA+C;AAE/C,MAAa,WAAY,SAAQ,mBAA0B;IACzC,MAAM,CAA0B;IAEhD,YAAY,MAAyB;QACnC,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,MAAM,GAAG,IAAA,cAAO,EAAC,EAAE,OAAO,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC;QACjC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC,gBAAgB,EAAE,CAAC;IAClC,CAAC;CACF;AAdD,kCAcC"}
@@ -0,0 +1,7 @@
1
+ import { ConsumerDispatchedMessageError, ConsumerMessageDispatcher, IMessagingConsumer } from '@nestjstools/messaging';
2
+ import { NatsJetStreamChannel } from '../channel/nats-jet-stream.channel';
3
+ export declare class NatsJetStreamMessagingConsumer implements IMessagingConsumer<NatsJetStreamChannel> {
4
+ private channel?;
5
+ consume(dispatcher: ConsumerMessageDispatcher, channel: NatsJetStreamChannel): Promise<void>;
6
+ onError(errored: ConsumerDispatchedMessageError, channel: NatsJetStreamChannel): Promise<void>;
7
+ }
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.NatsJetStreamMessagingConsumer = void 0;
10
+ const messaging_1 = require("@nestjstools/messaging");
11
+ const common_1 = require("@nestjs/common");
12
+ const nats_jet_stream_channel_1 = require("../channel/nats-jet-stream.channel");
13
+ const jsapi_types_1 = require("nats/lib/jetstream/jsapi_types");
14
+ const nats_jet_stream_channel_config_1 = require("../channel/nats-jet-stream-channel.config");
15
+ let NatsJetStreamMessagingConsumer = class NatsJetStreamMessagingConsumer {
16
+ channel = undefined;
17
+ async consume(dispatcher, channel) {
18
+ this.channel = channel;
19
+ const jsm = await channel.jetStreamManager();
20
+ const js = await channel.jetStreamClient();
21
+ try {
22
+ await jsm.streams.info(channel.config.streamConfig.streamName);
23
+ if (channel.config.streamConfig.autoUpdate) {
24
+ await jsm.streams.update(channel.config.streamConfig.streamName, {
25
+ subjects: channel.config.streamConfig.deliverSubjects,
26
+ max_msgs: channel.config.streamConfig.maxMsgs,
27
+ max_bytes: channel.config.streamConfig.maxBytes,
28
+ });
29
+ }
30
+ }
31
+ catch (err) {
32
+ if (err.code === '404') {
33
+ await jsm.streams.add({
34
+ name: channel.config.streamConfig.streamName,
35
+ subjects: channel.config.streamConfig.deliverSubjects,
36
+ max_msgs: channel.config.streamConfig.maxMsgs,
37
+ max_bytes: channel.config.streamConfig.maxBytes,
38
+ retention: jsapi_types_1.RetentionPolicy.Interest,
39
+ storage: channel.config.streamConfig.storageType === nats_jet_stream_channel_config_1.StorageType.Memory
40
+ ? jsapi_types_1.StorageType.Memory
41
+ : jsapi_types_1.StorageType.File,
42
+ });
43
+ }
44
+ else {
45
+ throw err;
46
+ }
47
+ }
48
+ try {
49
+ await jsm.consumers.add(channel.config.streamConfig.streamName, {
50
+ durable_name: channel.config.consumerConfig.durableName,
51
+ filter_subject: channel.config.consumerConfig.subject,
52
+ ack_policy: jsapi_types_1.AckPolicy.None,
53
+ deliver_policy: jsapi_types_1.DeliverPolicy.New,
54
+ });
55
+ }
56
+ catch (e) {
57
+ if (channel.config.consumerConfig.autoUpdate &&
58
+ channel.config.consumerConfig.durableName) {
59
+ await jsm.consumers.update(channel.config.streamConfig.streamName, channel.config.consumerConfig.durableName, {
60
+ filter_subject: channel.config.consumerConfig.subject,
61
+ });
62
+ }
63
+ }
64
+ const consumer = await js.consumers.get(channel.config.streamConfig.streamName, channel.config.consumerConfig.durableName);
65
+ const messages = await consumer.consume();
66
+ async function consumeMessages() {
67
+ for await (const msg of messages) {
68
+ const headers = msg.headers ?? undefined;
69
+ const deserialized = msg.json();
70
+ await dispatcher.dispatch(new messaging_1.ConsumerMessage(deserialized, headers?.get('messaging-routing-key') ?? msg.subject));
71
+ }
72
+ }
73
+ consumeMessages();
74
+ return Promise.resolve();
75
+ }
76
+ async onError(errored, channel) {
77
+ return Promise.resolve();
78
+ }
79
+ };
80
+ exports.NatsJetStreamMessagingConsumer = NatsJetStreamMessagingConsumer;
81
+ exports.NatsJetStreamMessagingConsumer = NatsJetStreamMessagingConsumer = __decorate([
82
+ (0, common_1.Injectable)(),
83
+ (0, messaging_1.MessageConsumer)(nats_jet_stream_channel_1.NatsJetStreamChannel)
84
+ ], NatsJetStreamMessagingConsumer);
85
+ //# sourceMappingURL=nats-jet-stream-messaging-consumer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nats-jet-stream-messaging-consumer.js","sourceRoot":"","sources":["../../src/consumer/nats-jet-stream-messaging-consumer.ts"],"names":[],"mappings":";;;;;;;;;AAAA,sDAMgC;AAChC,2CAA4C;AAC5C,gFAA0E;AAC1E,gEAKwC;AACxC,8FAAwE;AAIjE,IAAM,8BAA8B,GAApC,MAAM,8BAA8B;IAGjC,OAAO,GAA0B,SAAS,CAAC;IAEnD,KAAK,CAAC,OAAO,CACX,UAAqC,EACrC,OAA6B;QAE7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC7C,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC;QAG3C,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YAE/D,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;gBAC3C,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE;oBAC/D,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,eAAe;oBACrD,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO;oBAC7C,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ;iBAChD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAEvB,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;oBACpB,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU;oBAC5C,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,eAAe;oBACrD,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO;oBAC7C,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ;oBAC/C,SAAS,EAAE,6BAAe,CAAC,QAAQ;oBACnC,OAAO,EACL,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,KAAK,4CAAW,CAAC,MAAM;wBAC5D,CAAC,CAAC,yBAAe,CAAC,MAAM;wBACxB,CAAC,CAAC,yBAAe,CAAC,IAAI;iBAC3B,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QAGD,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE;gBAC9D,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW;gBACvD,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO;gBACrD,UAAU,EAAE,uBAAS,CAAC,IAAI;gBAC1B,cAAc,EAAE,2BAAa,CAAC,GAAG;aAClC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IACE,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU;gBACxC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,EACzC,CAAC;gBACD,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,CACxB,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,EACtC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,EACzC;oBACE,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO;iBACtD,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAGD,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,CACrC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,EACtC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAC1C,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;QAE1C,KAAK,UAAU,eAAe;YAC5B,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBACjC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC;gBACzC,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,EAAY,CAAC;gBAC1C,MAAM,UAAU,CAAC,QAAQ,CACvB,IAAI,2BAAe,CACjB,YAAY,EACZ,OAAO,EAAE,GAAG,CAAC,uBAAuB,CAAC,IAAI,GAAG,CAAC,OAAO,CACrD,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,eAAe,EAAE,CAAC;QAElB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,OAAO,CACX,OAAuC,EACvC,OAA6B;QAE7B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF,CAAA;AAjGY,wEAA8B;yCAA9B,8BAA8B;IAF1C,IAAA,mBAAU,GAAE;IACZ,IAAA,2BAAe,EAAC,8CAAoB,CAAC;GACzB,8BAA8B,CAiG1C"}
@@ -25,7 +25,7 @@ let NatsMessagingConsumer = class NatsMessagingConsumer {
25
25
  const headers = msg.headers ?? undefined;
26
26
  const deserialized = JSON.parse(msg.string());
27
27
  dispatcher.dispatch(new messaging_1.ConsumerMessage(deserialized, headers?.get('messaging-routing-key') ?? msg.subject));
28
- }
28
+ },
29
29
  });
30
30
  return Promise.resolve();
31
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nats-messaging-consumer.js","sourceRoot":"","sources":["../../src/consumer/nats-messaging-consumer.ts"],"names":[],"mappings":";;;;;;;;;AAAA,0DAAsD;AACtD,sDAA6E;AAE7E,2CAAmE;AACnE,sDAAyD;AAMlD,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IACxB,OAAO,GAAiB,SAAS,CAAC;IAClC,MAAM,GAAoB,SAAS,CAAC;IAE5C,KAAK,CAAC,OAAO,CAAC,UAAqC,EAAE,OAAoB;QACvE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAExC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE;YACnD,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBACrB,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC/C,CAAC;gBAED,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC;gBAEzC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC9C,UAAU,CAAC,QAAQ,CAAC,IAAI,2BAAe,CAAC,YAAY,EAAE,OAAO,EAAE,GAAG,CAAC,uBAAuB,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YAC/G,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAuC,EAAE,OAAoB;QACzE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,MAAe;QACzC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;CACF,CAAA;AAlCY,sDAAqB;gCAArB,qBAAqB;IAFjC,IAAA,mBAAU,GAAE;IACZ,IAAA,2BAAe,EAAC,0BAAW,CAAC;GAChB,qBAAqB,CAkCjC"}
1
+ {"version":3,"file":"nats-messaging-consumer.js","sourceRoot":"","sources":["../../src/consumer/nats-messaging-consumer.ts"],"names":[],"mappings":";;;;;;;;;AAAA,0DAAsD;AACtD,sDAA6E;AAE7E,2CAAmE;AACnE,sDAAyD;AAMlD,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAGxB,OAAO,GAAiB,SAAS,CAAC;IAClC,MAAM,GAAoB,SAAS,CAAC;IAE5C,KAAK,CAAC,OAAO,CACX,UAAqC,EACrC,OAAoB;QAEpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAExC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE;YACnD,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBACrB,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC/C,CAAC;gBAED,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC;gBAEzC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC9C,UAAU,CAAC,QAAQ,CACjB,IAAI,2BAAe,CACjB,YAAY,EACZ,OAAO,EAAE,GAAG,CAAC,uBAAuB,CAAC,IAAI,GAAG,CAAC,OAAO,CACrD,CACF,CAAC;YACJ,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,OAAO,CACX,OAAuC,EACvC,OAAoB;QAEpB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,MAAe;QACzC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;CACF,CAAA;AA/CY,sDAAqB;gCAArB,qBAAqB;IAFjC,IAAA,mBAAU,GAAE;IACZ,IAAA,2BAAe,EAAC,0BAAW,CAAC;GAChB,qBAAqB,CA+CjC"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ export * from './messaging-nats-extension.module';
2
+ export * from './channel/nats-channel.config';
3
+ export * from './channel/nats-jet-stream-channel.config';
4
+ export * from './message-bus/nats-message-bus';
5
+ export * from './message-bus/nats-jet-stream-message-bus';
package/lib/index.js ADDED
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./messaging-nats-extension.module"), exports);
18
+ __exportStar(require("./channel/nats-channel.config"), exports);
19
+ __exportStar(require("./channel/nats-jet-stream-channel.config"), exports);
20
+ __exportStar(require("./message-bus/nats-message-bus"), exports);
21
+ __exportStar(require("./message-bus/nats-jet-stream-message-bus"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oEAAkD;AAClD,gEAA8C;AAC9C,2EAAyD;AACzD,iEAA+C;AAC/C,4EAA0D"}
@@ -0,0 +1,6 @@
1
+ import { IMessageBusFactory } from '@nestjstools/messaging';
2
+ import { IMessageBus } from '@nestjstools/messaging';
3
+ import { NatsJetStreamChannel } from '../channel/nats-jet-stream.channel';
4
+ export declare class NatsJetStreamMessageBusFactory implements IMessageBusFactory<NatsJetStreamChannel> {
5
+ create(channel: NatsJetStreamChannel): IMessageBus;
6
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.NatsJetStreamMessageBusFactory = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const messaging_1 = require("@nestjstools/messaging");
12
+ const nats_jet_stream_channel_1 = require("../channel/nats-jet-stream.channel");
13
+ const nats_jet_stream_message_bus_1 = require("./nats-jet-stream-message-bus");
14
+ let NatsJetStreamMessageBusFactory = class NatsJetStreamMessageBusFactory {
15
+ create(channel) {
16
+ return new nats_jet_stream_message_bus_1.NatsJetStreamMessageBus(channel);
17
+ }
18
+ };
19
+ exports.NatsJetStreamMessageBusFactory = NatsJetStreamMessageBusFactory;
20
+ exports.NatsJetStreamMessageBusFactory = NatsJetStreamMessageBusFactory = __decorate([
21
+ (0, common_1.Injectable)(),
22
+ (0, messaging_1.MessageBusFactory)(nats_jet_stream_channel_1.NatsJetStreamChannel)
23
+ ], NatsJetStreamMessageBusFactory);
24
+ //# sourceMappingURL=nats-jet-stream-message-bus-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nats-jet-stream-message-bus-factory.js","sourceRoot":"","sources":["../../src/message-bus/nats-jet-stream-message-bus-factory.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAE5C,sDAA2D;AAE3D,gFAA0E;AAC1E,+EAAwE;AAIjE,IAAM,8BAA8B,GAApC,MAAM,8BAA8B;IAGzC,MAAM,CAAC,OAA6B;QAClC,OAAO,IAAI,qDAAuB,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;CACF,CAAA;AANY,wEAA8B;yCAA9B,8BAA8B;IAF1C,IAAA,mBAAU,GAAE;IACZ,IAAA,6BAAiB,EAAC,8CAAoB,CAAC;GAC3B,8BAA8B,CAM1C"}
@@ -0,0 +1,8 @@
1
+ import { RoutingMessage } from '@nestjstools/messaging';
2
+ import { IMessageBus } from '@nestjstools/messaging';
3
+ import { NatsJetStreamChannel } from '../channel/nats-jet-stream.channel';
4
+ export declare class NatsJetStreamMessageBus implements IMessageBus {
5
+ private readonly channel;
6
+ constructor(channel: NatsJetStreamChannel);
7
+ dispatch(message: RoutingMessage): Promise<object | void>;
8
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.NatsJetStreamMessageBus = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const nats_1 = require("nats");
15
+ const nats_jet_stream_channel_1 = require("../channel/nats-jet-stream.channel");
16
+ let NatsJetStreamMessageBus = class NatsJetStreamMessageBus {
17
+ channel;
18
+ constructor(channel) {
19
+ this.channel = channel;
20
+ }
21
+ async dispatch(message) {
22
+ const js = await this.channel.jetStreamClient();
23
+ let routingKey = this.channel.config.consumerConfig.subject;
24
+ const h = (0, nats_1.headers)();
25
+ if (this.channel.config.consumerConfig.subject.includes('>') ||
26
+ this.channel.config.consumerConfig.subject.includes('*')) {
27
+ routingKey = message.messageRoutingKey;
28
+ }
29
+ h.set('messaging-routing-key', message.messageRoutingKey);
30
+ js.publish(routingKey, JSON.stringify(message.message), {
31
+ headers: h,
32
+ }).catch((err) => { });
33
+ }
34
+ };
35
+ exports.NatsJetStreamMessageBus = NatsJetStreamMessageBus;
36
+ exports.NatsJetStreamMessageBus = NatsJetStreamMessageBus = __decorate([
37
+ (0, common_1.Injectable)(),
38
+ __metadata("design:paramtypes", [nats_jet_stream_channel_1.NatsJetStreamChannel])
39
+ ], NatsJetStreamMessageBus);
40
+ //# sourceMappingURL=nats-jet-stream-message-bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nats-jet-stream-message-bus.js","sourceRoot":"","sources":["../../src/message-bus/nats-jet-stream-message-bus.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,2CAA4C;AAC5C,+BAA+B;AAC/B,gFAA0E;AAGnE,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IACL;IAA7B,YAA6B,OAA6B;QAA7B,YAAO,GAAP,OAAO,CAAsB;IAAG,CAAC;IAE9D,KAAK,CAAC,QAAQ,CAAC,OAAuB;QACpC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;QAEhD,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC;QAC5D,MAAM,CAAC,GAAG,IAAA,cAAO,GAAE,CAAC;QAEpB,IACE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;YACxD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EACxD,CAAC;YACD,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC;QACzC,CAAC;QAED,CAAC,CAAC,GAAG,CAAC,uBAAuB,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAE1D,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACtD,OAAO,EAAE,CAAC;SACX,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,GAAE,CAAC,CAAC,CAAC;IACxB,CAAC;CACF,CAAA;AAtBY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAU,GAAE;qCAE2B,8CAAoB;GAD/C,uBAAuB,CAsBnC"}
@@ -1,5 +1,5 @@
1
- import { IMessageBusFactory } from "@nestjstools/messaging";
2
- import { IMessageBus } from "@nestjstools/messaging";
1
+ import { IMessageBusFactory } from '@nestjstools/messaging';
2
+ import { IMessageBus } from '@nestjstools/messaging';
3
3
  import { NatsChannel } from '../channel/nats.channel';
4
4
  export declare class NatsMessageBusFactory implements IMessageBusFactory<NatsChannel> {
5
5
  create(channel: NatsChannel): IMessageBus;
@@ -1 +1 @@
1
- {"version":3,"file":"nats-message-bus-factory.js","sourceRoot":"","sources":["../../src/message-bus/nats-message-bus-factory.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAC5C,yDAAoD;AAEpD,sDAAyD;AAEzD,0DAAsD;AAI/C,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAEhC,MAAM,CAAC,OAAoB;QACzB,OAAO,IAAI,iCAAc,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;CACF,CAAA;AALY,sDAAqB;gCAArB,qBAAqB;IAFjC,IAAA,mBAAU,GAAE;IACZ,IAAA,6BAAiB,EAAC,0BAAW,CAAC;GAClB,qBAAqB,CAKjC"}
1
+ {"version":3,"file":"nats-message-bus-factory.js","sourceRoot":"","sources":["../../src/message-bus/nats-message-bus-factory.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAC5C,yDAAoD;AAEpD,sDAA2D;AAE3D,0DAAsD;AAI/C,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAChC,MAAM,CAAC,OAAoB;QACzB,OAAO,IAAI,iCAAc,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;CACF,CAAA;AAJY,sDAAqB;gCAArB,qBAAqB;IAFjC,IAAA,mBAAU,GAAE;IACZ,IAAA,6BAAiB,EAAC,0BAAW,CAAC;GAClB,qBAAqB,CAIjC"}
@@ -22,7 +22,8 @@ let NatsMessageBus = class NatsMessageBus {
22
22
  const client = await this.channel.client;
23
23
  let routingKey = this.channel.config.subscriberName;
24
24
  const h = (0, nats_1.headers)();
25
- if (this.channel.config.subscriberName.includes('>') || this.channel.config.subscriberName.includes('*')) {
25
+ if (this.channel.config.subscriberName.includes('>') ||
26
+ this.channel.config.subscriberName.includes('*')) {
26
27
  routingKey = message.messageRoutingKey;
27
28
  }
28
29
  h.set('messaging-routing-key', message.messageRoutingKey);