@nestjstools/messaging 4.1.0 → 4.2.0-beta.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 (36) hide show
  1. package/README.md +3 -133
  2. package/lib/bus/in-memory-message-bus.factory.d.ts +3 -1
  3. package/lib/bus/in-memory-message-bus.factory.js +6 -3
  4. package/lib/bus/in-memory-message-bus.factory.js.map +1 -1
  5. package/lib/bus/in-memory-message.bus.d.ts +3 -1
  6. package/lib/bus/in-memory-message.bus.js +19 -10
  7. package/lib/bus/in-memory-message.bus.js.map +1 -1
  8. package/lib/config.js.map +1 -1
  9. package/lib/consumer/consumer-message.d.ts +2 -2
  10. package/lib/consumer/consumer-message.js.map +1 -1
  11. package/lib/consumer/distributed.consumer.js.map +1 -1
  12. package/lib/dependency-injection/decorator.d.ts +3 -0
  13. package/lib/dependency-injection/decorator.js +8 -1
  14. package/lib/dependency-injection/decorator.js.map +1 -1
  15. package/lib/dependency-injection/register.d.ts +1 -0
  16. package/lib/dependency-injection/register.js +13 -8
  17. package/lib/dependency-injection/register.js.map +1 -1
  18. package/lib/handler/message-handler.registry.js.map +1 -1
  19. package/lib/index.d.ts +1 -0
  20. package/lib/index.js +1 -0
  21. package/lib/index.js.map +1 -1
  22. package/lib/lifecycle-hook/messaging-lifecycle-hook-handler.d.ts +9 -0
  23. package/lib/lifecycle-hook/messaging-lifecycle-hook-handler.js +41 -0
  24. package/lib/lifecycle-hook/messaging-lifecycle-hook-handler.js.map +1 -0
  25. package/lib/lifecycle-hook/messaging-lifecycle-hook-listener.d.ts +10 -0
  26. package/lib/lifecycle-hook/messaging-lifecycle-hook-listener.js +10 -0
  27. package/lib/lifecycle-hook/messaging-lifecycle-hook-listener.js.map +1 -0
  28. package/lib/lifecycle-hook/messaging-lifecycle-hook.registry.d.ts +5 -0
  29. package/lib/lifecycle-hook/messaging-lifecycle-hook.registry.js +19 -0
  30. package/lib/lifecycle-hook/messaging-lifecycle-hook.registry.js.map +1 -0
  31. package/lib/messaging.module.js +8 -2
  32. package/lib/messaging.module.js.map +1 -1
  33. package/lib/shared/base-registry.d.ts +1 -1
  34. package/lib/shared/base-registry.js.map +1 -1
  35. package/lib/tsconfig.build.tsbuildinfo +1 -1
  36. package/package.json +1 -4
package/README.md CHANGED
@@ -39,14 +39,9 @@ message handling pipelines while ensuring flexibility and reliability.
39
39
 
40
40
  ## Documentation
41
41
 
42
- - Official NestJSTools Messaging documentation: https://docs.nestjstools.com/messaging
43
- - NestJSTools website: https://nestjstools.com
44
-
45
- ---
46
-
47
- ## Example project based on RaabitMQ example
48
-
49
- Repository: https://github.com/nestjstools/messaging-rabbitmq-example
42
+ - Documentation: https://docs.nestjstools.com/messaging
43
+ - Website: https://nestjstools.com
44
+ - Example repository: https://github.com/nestjstools/messaging-rabbitmq-example
50
45
 
51
46
  ---
52
47
 
@@ -455,128 +450,3 @@ export class AppModule {
455
450
  | **`avoidErrorsForNotExistedHandlers`** | Avoid errors if no handler is available for the message. | `false` |
456
451
  | **`normalizer`** | Set your custom normalizer for messages | |
457
452
 
458
- ## Creating Your Own Channel and Bus
459
-
460
- This process allows you to define and integrate a custom **Channel** and **MessageBus** for your application, giving you
461
- complete flexibility and control over how messages are processed, dispatched, and consumed. Each step provides the
462
- necessary building blocks to create your own transport layer with full integration into the `MessagingModule`.
463
-
464
- ### 1. Create a `ChannelConfig`
465
-
466
- A `ChannelConfig` class holds the configuration required to establish a stable connection to your service (e.g.,
467
- RabbitMQ, Redis, etc.). Your class should implement the `ChannelConfig` interface and define necessary data like the
468
- channel name and middlewares.
469
-
470
- ```typescript
471
- export class YourChannelConfig implements ChannelConfig {
472
- public readonly name: string;
473
- public readonly middlewares: object[];
474
-
475
- constructor({ name, middlewares }: AmqpChannelConfig) {
476
- this.name = name;
477
- this.middlewares = middlewares ?? []; // Default to empty array if no middlewares provided
478
- }
479
- }
480
- ```
481
-
482
- ### 2. Create a `Channel`
483
-
484
- Next, create a class that implements the `Channel` interface. This class will serve as your `DataSource` and utilize the
485
- configuration you defined in the `ChannelConfig` class.
486
-
487
- ```typescript
488
- export class YourChannel extends Channel {
489
- }
490
- ```
491
-
492
- ### 3. Create a `ChannelFactory`
493
-
494
- A `ChannelFactory` is responsible for creating instances of your custom `Channel` class. It implements the
495
- `IChannelFactory` interface and ensures proper injection into your app.
496
-
497
- ```typescript
498
-
499
- @Injectable()
500
- @ChannelFactory(YourChannel)
501
- export class YourChannelFactory implements IChannelFactory<YourChannelConfig> {
502
- create(channelConfig: YourChannelConfig): Channel {
503
- return new YourChannel(channelConfig);
504
- }
505
- }
506
- ```
507
-
508
- ### 4. Create a `MessageBus`
509
-
510
- The `MessageBus` handles the dispatching of messages in your system. Create a class implementing the `IMessageBus`
511
- interface to send messages to your custom service (e.g., RabbitMQ, Redis, etc.).
512
-
513
- ```typescript
514
- export class YourMessageBus implements IMessageBus {
515
- constructor(private readonly yourChannel: YourChannel) {
516
- }
517
-
518
- async dispatch(message: RoutingMessage): Promise<MessageResponse | void> {
519
- // Write your logic here to dispatch the message to your channel (e.g., RabbitMQ)
520
- }
521
- }
522
- ```
523
-
524
- ### 5. Create a `MessageBusFactory`
525
-
526
- The `MessageBusFactory` creates instances of your `MessageBus` and ensures it's properly integrated with your `Channel`.
527
- It implements the `IMessageBusFactory` interface.
528
-
529
- ```typescript
530
-
531
- @Injectable()
532
- @MessageBusFactory(YourChannel)
533
- export class YourMessageBusFactory implements IMessageBusFactory<YourChannel> {
534
- create(channel: YourChannel): IMessageBus {
535
- return new YourMessageBus(channel); // Return a new instance of your message bus
536
- }
537
- }
538
- ```
539
-
540
- ### 6. Create a Consumer `MessageConsumer`
541
-
542
- A consumer receives and processes messages. Create a class that implements the `IMessagingConsumer` interface and handle
543
- the message processing within the `consume` method.
544
-
545
- ```typescript
546
-
547
- @Injectable()
548
- @MessageConsumer(YourChannel)
549
- export class YourMessagingConsumer implements IMessagingConsumer<YourChannel> {
550
- async consume(dispatcher: ConsumerMessageDispatcher, channel: YourChannel): Promise<void> {
551
- // Logic to consume a message...
552
- //TODO dispatcher.dispatch(new ConsumerMessage(...));
553
-
554
- return Promise.resolve();
555
- }
556
-
557
- async onError(errored: ConsumerDispatchedMessageError, channel: YourChannel): Promise<void> {
558
- // Handle error if message processing fails
559
- return Promise.resolve();
560
- }
561
- }
562
- ```
563
-
564
- ### 7. Add Custom `MessageOptions` to Your Bus (Optional)
565
-
566
- You can create custom message options for your message.
567
-
568
- ```typescript
569
- export class YourMessageOptions implements MessageOptions {
570
- constructor(public readonly middlewares: Middleware[] = []) {
571
- }
572
- }
573
- ```
574
-
575
- Classes with `Injectable()` decorator must be defined as providers in somewhere in application.
576
-
577
- ---
578
-
579
- ## Keywords
580
-
581
- nestjs messaging library, nestjs message bus, nestjs service bus, <br>nestjs distributed systems,
582
- nestjs microservices messaging, broker independent messaging for nestjs
@@ -4,10 +4,12 @@ import { MiddlewareRegistry } from '../middleware/middleware.registry';
4
4
  import { InMemoryChannel } from '../channel/in-memory.channel';
5
5
  import { IMessageBusFactory } from './i-message-bus.factory';
6
6
  import { NormalizerRegistry } from '../normalizer/normalizer.registry';
7
+ import { MessagingLifecycleHookHandler } from '../lifecycle-hook/messaging-lifecycle-hook-handler';
7
8
  export declare class InMemoryMessageBusFactory implements IMessageBusFactory<InMemoryChannel> {
8
9
  private registry;
9
10
  private middlewareRegistry;
10
11
  private messageNormalizerRegistry;
11
- constructor(registry: MessageHandlerRegistry, middlewareRegistry: MiddlewareRegistry, messageNormalizerRegistry: NormalizerRegistry);
12
+ private messagingHookHandler;
13
+ constructor(registry: MessageHandlerRegistry, middlewareRegistry: MiddlewareRegistry, messageNormalizerRegistry: NormalizerRegistry, messagingHookHandler: MessagingLifecycleHookHandler);
12
14
  create(channel: InMemoryChannel): IMessageBus;
13
15
  }
@@ -21,14 +21,16 @@ const in_memory_channel_1 = require("../channel/in-memory.channel");
21
21
  const decorator_1 = require("../dependency-injection/decorator");
22
22
  const in_memory_message_bus_1 = require("./in-memory-message.bus");
23
23
  const normalizer_registry_1 = require("../normalizer/normalizer.registry");
24
+ const messaging_lifecycle_hook_handler_1 = require("../lifecycle-hook/messaging-lifecycle-hook-handler");
24
25
  let InMemoryMessageBusFactory = class InMemoryMessageBusFactory {
25
- constructor(registry, middlewareRegistry, messageNormalizerRegistry) {
26
+ constructor(registry, middlewareRegistry, messageNormalizerRegistry, messagingHookHandler) {
26
27
  this.registry = registry;
27
28
  this.middlewareRegistry = middlewareRegistry;
28
29
  this.messageNormalizerRegistry = messageNormalizerRegistry;
30
+ this.messagingHookHandler = messagingHookHandler;
29
31
  }
30
32
  create(channel) {
31
- return new in_memory_message_bus_1.InMemoryMessageBus(this.registry, this.middlewareRegistry, channel, this.messageNormalizerRegistry);
33
+ return new in_memory_message_bus_1.InMemoryMessageBus(this.registry, this.middlewareRegistry, channel, this.messageNormalizerRegistry, this.messagingHookHandler);
32
34
  }
33
35
  };
34
36
  exports.InMemoryMessageBusFactory = InMemoryMessageBusFactory;
@@ -40,6 +42,7 @@ exports.InMemoryMessageBusFactory = InMemoryMessageBusFactory = __decorate([
40
42
  __param(2, (0, common_1.Inject)(service_1.Service.MESSAGE_NORMALIZERS_REGISTRY)),
41
43
  __metadata("design:paramtypes", [message_handler_registry_1.MessageHandlerRegistry,
42
44
  middleware_registry_1.MiddlewareRegistry,
43
- normalizer_registry_1.NormalizerRegistry])
45
+ normalizer_registry_1.NormalizerRegistry,
46
+ messaging_lifecycle_hook_handler_1.MessagingLifecycleHookHandler])
44
47
  ], InMemoryMessageBusFactory);
45
48
  //# sourceMappingURL=in-memory-message-bus.factory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"in-memory-message-bus.factory.js","sourceRoot":"","sources":["../../src/bus/in-memory-message-bus.factory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AAEpD,kFAA6E;AAC7E,6DAA0D;AAC1D,2EAAuE;AACvE,oEAA+D;AAC/D,iEAAsE;AACtE,mEAA6D;AAE7D,2EAAuE;AAIhE,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IACpC,YAEU,QAAgC,EAEhC,kBAAsC,EAEtC,yBAA6C;QAJ7C,aAAQ,GAAR,QAAQ,CAAwB;QAEhC,uBAAkB,GAAlB,kBAAkB,CAAoB;QAEtC,8BAAyB,GAAzB,yBAAyB,CAAoB;IACpD,CAAC;IAEJ,MAAM,CAAC,OAAwB;QAC7B,OAAO,IAAI,0CAAkB,CAC3B,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,kBAAkB,EACvB,OAAO,EACP,IAAI,CAAC,yBAAyB,CAC/B,CAAC;IACJ,CAAC;CACF,CAAA;AAlBY,8DAAyB;oCAAzB,yBAAyB;IAFrC,IAAA,mBAAU,GAAE;IACZ,IAAA,6BAAiB,EAAC,mCAAe,CAAC;IAG9B,WAAA,IAAA,eAAM,EAAC,iBAAO,CAAC,yBAAyB,CAAC,CAAA;IAEzC,WAAA,IAAA,eAAM,EAAC,iBAAO,CAAC,mBAAmB,CAAC,CAAA;IAEnC,WAAA,IAAA,eAAM,EAAC,iBAAO,CAAC,4BAA4B,CAAC,CAAA;qCAH3B,iDAAsB;QAEZ,wCAAkB;QAEX,wCAAkB;GAP5C,yBAAyB,CAkBrC"}
1
+ {"version":3,"file":"in-memory-message-bus.factory.js","sourceRoot":"","sources":["../../src/bus/in-memory-message-bus.factory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AAEpD,kFAA6E;AAC7E,6DAA0D;AAC1D,2EAAuE;AACvE,oEAA+D;AAC/D,iEAAsE;AACtE,mEAA6D;AAE7D,2EAAuE;AACvE,yGAAmG;AAI5F,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IACpC,YAEU,QAAgC,EAEhC,kBAAsC,EAEtC,yBAA6C,EAC7C,oBAAmD;QALnD,aAAQ,GAAR,QAAQ,CAAwB;QAEhC,uBAAkB,GAAlB,kBAAkB,CAAoB;QAEtC,8BAAyB,GAAzB,yBAAyB,CAAoB;QAC7C,yBAAoB,GAApB,oBAAoB,CAA+B;IAE7D,CAAC;IAED,MAAM,CAAC,OAAwB;QAC7B,OAAO,IAAI,0CAAkB,CAC3B,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,kBAAkB,EACvB,OAAO,EACP,IAAI,CAAC,yBAAyB,EAC9B,IAAI,CAAC,oBAAoB,CAC1B,CAAC;IACJ,CAAC;CACF,CAAA;AArBY,8DAAyB;oCAAzB,yBAAyB;IAFrC,IAAA,mBAAU,GAAE;IACZ,IAAA,6BAAiB,EAAC,mCAAe,CAAC;IAG9B,WAAA,IAAA,eAAM,EAAC,iBAAO,CAAC,yBAAyB,CAAC,CAAA;IAEzC,WAAA,IAAA,eAAM,EAAC,iBAAO,CAAC,mBAAmB,CAAC,CAAA;IAEnC,WAAA,IAAA,eAAM,EAAC,iBAAO,CAAC,4BAA4B,CAAC,CAAA;qCAH3B,iDAAsB;QAEZ,wCAAkB;QAEX,wCAAkB;QACvB,gEAA6B;GARlD,yBAAyB,CAqBrC"}
@@ -4,11 +4,13 @@ import { MiddlewareRegistry } from '../middleware/middleware.registry';
4
4
  import { InMemoryChannel } from '../channel/in-memory.channel';
5
5
  import { Message } from '../message/message';
6
6
  import { NormalizerRegistry } from '../normalizer/normalizer.registry';
7
+ import { MessagingLifecycleHookHandler } from '../lifecycle-hook/messaging-lifecycle-hook-handler';
7
8
  export declare class InMemoryMessageBus implements IMessageBus {
8
9
  private registry;
9
10
  private middlewareRegistry;
10
11
  private channel;
11
12
  private normalizerRegistry;
12
- constructor(registry: MessageHandlerRegistry, middlewareRegistry: MiddlewareRegistry, channel: InMemoryChannel, normalizerRegistry: NormalizerRegistry);
13
+ private messagingHookHandler;
14
+ constructor(registry: MessageHandlerRegistry, middlewareRegistry: MiddlewareRegistry, channel: InMemoryChannel, normalizerRegistry: NormalizerRegistry, messagingHookHandler: MessagingLifecycleHookHandler);
13
15
  dispatch(message: Message): Promise<object | void>;
14
16
  }
@@ -11,15 +11,29 @@ const message_factory_1 = require("../message/message.factory");
11
11
  const routing_message_1 = require("../message/routing-message");
12
12
  const default_message_options_1 = require("../message/default-message-options");
13
13
  class InMemoryMessageBus {
14
- constructor(registry, middlewareRegistry, channel, normalizerRegistry) {
14
+ constructor(registry, middlewareRegistry, channel, normalizerRegistry, messagingHookHandler) {
15
15
  this.registry = registry;
16
16
  this.middlewareRegistry = middlewareRegistry;
17
17
  this.channel = channel;
18
18
  this.normalizerRegistry = normalizerRegistry;
19
+ this.messagingHookHandler = messagingHookHandler;
19
20
  }
20
21
  async dispatch(message) {
21
22
  const middlewares = [];
23
+ // Execution order: channel middlewares -> message middlewares -> handler middleware.
22
24
  middlewares.push(...(this.channel.config?.middlewares ?? []), ...(message.messageOptions?.middlewares ?? []), handler_middleware_1.HandlerMiddleware);
25
+ let messageToDispatch = message instanceof routing_message_1.RoutingMessage ? message.message : {};
26
+ if (message instanceof sealed_routing_message_1.SealedRoutingMessage) {
27
+ // Sealed messages carry raw payload and must be denormalized before dispatch.
28
+ const normalizerDefinition = message.messageOptions instanceof default_message_options_1.DefaultMessageOptions
29
+ ? message.messageOptions.normalizer
30
+ : object_forward_message_normalizer_1.ObjectForwardMessageNormalizer;
31
+ messageToDispatch = await this.normalizerRegistry
32
+ .getByName(normalizerDefinition['name'])
33
+ .denormalize(message.message, message.messageRoutingKey);
34
+ }
35
+ // Hook fired once the payload shape is ready for handler pipeline.
36
+ await this.messagingHookHandler.handleAfterMessageDenormalized(message_factory_1.MessageFactory.creteRoutingFromMessage(messageToDispatch, message));
23
37
  try {
24
38
  this.registry.getByRoutingKey(message.messageRoutingKey);
25
39
  }
@@ -36,6 +50,7 @@ class InMemoryMessageBus {
36
50
  message.messageOptions?.avoidErrorsWhenNotExistedHandler ??
37
51
  avoidErrorsForNonExistedHandlers;
38
52
  }
53
+ // Missing handler can be configured as no-op for fire-and-forget scenarios.
39
54
  if (avoidErrorsForNonExistedHandlers) {
40
55
  return Promise.resolve();
41
56
  }
@@ -43,16 +58,10 @@ class InMemoryMessageBus {
43
58
  }
44
59
  const middlewareInstances = middlewares.map((middleware) => this.middlewareRegistry.getByName(decorator_extractor_1.DecoratorExtractor.extractMessageMiddleware(middleware)));
45
60
  const context = middleware_context_1.MiddlewareContext.createFresh(middlewareInstances);
46
- let messageToDispatch = message instanceof routing_message_1.RoutingMessage ? message.message : {};
47
- if (message instanceof sealed_routing_message_1.SealedRoutingMessage) {
48
- let normalizerDefinition = (message.messageOptions instanceof default_message_options_1.DefaultMessageOptions
49
- ? message.messageOptions.normalizer
50
- : object_forward_message_normalizer_1.ObjectForwardMessageNormalizer);
51
- messageToDispatch = await this.normalizerRegistry
52
- .getByName(normalizerDefinition['name'])
53
- .denormalize(message.message, message.messageRoutingKey);
54
- }
61
+ // Hook around handler execution.
62
+ await this.messagingHookHandler.handleBeforeMessageHandler(message_factory_1.MessageFactory.creteRoutingFromMessage(messageToDispatch, message));
55
63
  const response = await middlewareInstances[0].process(message_factory_1.MessageFactory.creteRoutingFromMessage(messageToDispatch, message), context);
64
+ await this.messagingHookHandler.handleAfterMessageHandlerExecuted(message_factory_1.MessageFactory.creteRoutingFromMessage(messageToDispatch, message));
56
65
  return Promise.resolve(response);
57
66
  }
58
67
  }
@@ -1 +1 @@
1
- {"version":3,"file":"in-memory-message.bus.js","sourceRoot":"","sources":["../../src/bus/in-memory-message.bus.ts"],"names":[],"mappings":";;;AAGA,oEAA+D;AAC/D,yEAAqE;AACrE,yEAAqE;AACrE,uEAAmE;AAEnE,8EAAyE;AACzE,uGAAiG;AACjG,gEAA4D;AAE5D,gEAA4D;AAE5D,gFAA2E;AAE3E,MAAa,kBAAkB;IAC7B,YACU,QAAgC,EAChC,kBAAsC,EACtC,OAAwB,EACxB,kBAAsC;QAHtC,aAAQ,GAAR,QAAQ,CAAwB;QAChC,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,YAAO,GAAP,OAAO,CAAiB;QACxB,uBAAkB,GAAlB,kBAAkB,CAAoB;IAC7C,CAAC;IAEJ,KAAK,CAAC,QAAQ,CAAC,OAAgB;QAC7B,MAAM,WAAW,GAAG,EAAE,CAAC;QACvB,WAAW,CAAC,IAAI,CACd,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,IAAI,EAAE,CAAC,EAC3C,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,WAAW,IAAI,EAAE,CAAC,EAC9C,sCAAiB,CAClB,CAAC;QAEF,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,gCAAgC,GAAG,IAAI,CAAC;YAE5C,IACE,IAAI,CAAC,OAAO,YAAY,mCAAe;gBACvC,aAAa,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAC1C,CAAC;gBACD,gCAAgC;oBAC9B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,gCAAgC;wBACpD,gCAAgC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,gCAAgC;oBAC9B,OAAO,CAAC,cAAc,EAAE,gCAAgC;wBACxD,gCAAgC,CAAC;YACrC,CAAC;YAED,IAAI,gCAAgC,EAAE,CAAC;gBACrC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;YAC3B,CAAC;YAED,MAAM,CAAC,CAAC;QACV,CAAC;QAED,MAAM,mBAAmB,GAAiB,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CACvE,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAC/B,wCAAkB,CAAC,wBAAwB,CAAC,UAAU,CAAC,CACxD,CACF,CAAC;QACF,MAAM,OAAO,GAAG,sCAAiB,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;QAEnE,IAAI,iBAAiB,GACnB,OAAO,YAAY,gCAAc,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAE3D,IAAI,OAAO,YAAY,6CAAoB,EAAE,CAAC;YAC5C,IAAI,oBAAoB,GAAW,CACjC,OAAO,CAAC,cAAc,YAAY,+CAAqB;gBACrD,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,UAAU;gBACnC,CAAC,CAAC,kEAA8B,CACzB,CAAC;YAEZ,iBAAiB,GAAG,MAAM,IAAI,CAAC,kBAAkB;iBAC9C,SAAS,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;iBACvC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,CAAC,CAAC,CAAC,OAAO,CACnD,gCAAc,CAAC,uBAAuB,CAAC,iBAAiB,EAAE,OAAO,CAAC,EAClE,OAAO,CACR,CAAC;QAEF,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;CACF;AAtED,gDAsEC"}
1
+ {"version":3,"file":"in-memory-message.bus.js","sourceRoot":"","sources":["../../src/bus/in-memory-message.bus.ts"],"names":[],"mappings":"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"}
package/lib/config.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;AAAA,sGAAgG;AAoChG,MAAa,aAAa;IA0BxB,YACkB,IAAY,EAC5B,gCAA0C,EAC1C,WAAsB,EACtB,cAAwB,EACxB,UAAmB;QAJH,SAAI,GAAJ,IAAI,CAAQ;QAM5B,IAAI,CAAC,gCAAgC;YACnC,gCAAgC,IAAI,KAAK,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,cAAc,IAAI,IAAI,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,kEAA8B,CAAC;IACjE,CAAC;CACF;AAvCD,sCAuCC;AAED,MAAa,qBAAsB,SAAQ,aAAa;IACtD,YAAY,EACE,IAAI,EACJ,gCAAgC,EAChC,WAAW,EACX,cAAc,EACd,UAAU,GACY;QAClC,KAAK,CACH,IAAI,EACJ,gCAAgC,EAChC,WAAW,EACX,cAAc,EACd,UAAU,CACX,CAAC;IACJ,CAAC;CACF;AAhBD,sDAgBC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;AAAA,sGAAgG;AAoChG,MAAa,aAAa;IA0BxB,YACkB,IAAY,EAC5B,gCAA0C,EAC1C,WAAsB,EACtB,cAAwB,EACxB,UAAmB;QAJH,SAAI,GAAJ,IAAI,CAAQ;QAM5B,IAAI,CAAC,gCAAgC;YACnC,gCAAgC,IAAI,KAAK,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,cAAc,IAAI,IAAI,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,kEAA8B,CAAC;IACjE,CAAC;CACF;AAvCD,sCAuCC;AAED,MAAa,qBAAsB,SAAQ,aAAa;IACtD,YAAY,EACV,IAAI,EACJ,gCAAgC,EAChC,WAAW,EACX,cAAc,EACd,UAAU,GACY;QACtB,KAAK,CACH,IAAI,EACJ,gCAAgC,EAChC,WAAW,EACX,cAAc,EACd,UAAU,CACX,CAAC;IACJ,CAAC;CACF;AAhBD,sDAgBC"}
@@ -1,6 +1,6 @@
1
1
  export declare class ConsumerMessage {
2
2
  readonly message: object | string;
3
3
  readonly routingKey: string;
4
- readonly metadata: {};
5
- constructor(message: object | string, routingKey: string, metadata?: {});
4
+ readonly metadata: Record<string, any>;
5
+ constructor(message: object | string, routingKey: string, metadata?: Record<string, any>);
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"consumer-message.js","sourceRoot":"","sources":["../../src/consumer/consumer-message.ts"],"names":[],"mappings":";;;AAAA,MAAa,eAAe;IAC1B,YACkB,OAAwB,EACxB,UAAkB,EAClB,WAAe,EAAE;QAFjB,YAAO,GAAP,OAAO,CAAiB;QACxB,eAAU,GAAV,UAAU,CAAQ;QAClB,aAAQ,GAAR,QAAQ,CAAS;QAEjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AATD,0CASC"}
1
+ {"version":3,"file":"consumer-message.js","sourceRoot":"","sources":["../../src/consumer/consumer-message.ts"],"names":[],"mappings":";;;AAAA,MAAa,eAAe;IAC1B,YACkB,OAAwB,EACxB,UAAkB,EAClB,WAAgC,EAAE;QAFlC,YAAO,GAAP,OAAO,CAAiB;QACxB,eAAU,GAAV,UAAU,CAAQ;QAClB,aAAQ,GAAR,QAAQ,CAA0B;QAElD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AATD,0CASC"}
@@ -1 +1 @@
1
- {"version":3,"file":"distributed.consumer.js","sourceRoot":"","sources":["../../src/consumer/distributed.consumer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAwC;AACxC,uCAAgD;AAChD,6DAA0D;AAE1D,kEAA8D;AAE9D,oEAA+D;AAC/D,iEAA8E;AAE9E,iGAA4F;AAC5F,sEAAiE;AAEjE,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAC9B,YAEmB,UAAuB,EAEvB,eAAgC,EAEhC,wBAAkD,EAC1B,MAAuB,EAC/C,gBAAkC;QANlC,eAAU,GAAV,UAAU,CAAa;QAEvB,oBAAe,GAAf,eAAe,CAAiB;QAEhC,6BAAwB,GAAxB,wBAAwB,CAA0B;QAC1B,WAAM,GAAN,MAAM,CAAiB;QAC/C,qBAAgB,GAAhB,gBAAgB,CAAkB;IAClD,CAAC;IAEJ,KAAK,CAAC,GAAG;QACP,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;YACpD,IACE,OAAO,YAAY,mCAAe;gBAClC,KAAK,KAAK,OAAO,CAAC,MAAM,CAAC,cAAc,EACvC,CAAC;gBACD,SAAS;YACX,CAAC;YAED,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB;iBAC1C,YAAY,EAAE;iBACd,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACnB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBACvB,OAAO,KAAK,CAAC;gBACf,CAAC;gBAED,OAAO,OAAO,CAAC,WAAW,CACxB,qCAAyB,EACzB,QAAQ,CAAC,QAAQ,CAClB,CAAC;YACJ,CAAC,CAAC;iBACD,MAAM,CACL,CAAC,QAAQ,EAAE,EAAE,CACX,OAAO,CAAC,WAAW,CAAC,qCAAyB,EAAE,QAAQ,CAAC,QAAQ,CAAC;iBAC9D,IAAI,KAAK,OAAO,CAAC,WAAW,CAAC,IAAI,CACvC,CAAC;YAEJ,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CACb,wBAAwB,OAAO,CAAC,WAAW,CAAC,IAAI,iBAAiB,CAClE,CAAC;YACJ,CAAC;YAED,MAAM,QAAQ,GAA4B,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAEtE,MAAM,UAAU,GAAG,IAAI,yCAAkB,CACvC,IAAI,CAAC,UAAU,EACf,OAAO,EACP,IAAI,CAAC,MAAM,EACX,QAAQ,EACR,IAAI,CAAC,wBAAwB,CAC9B,CAAC;YAEF,MAAM,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAE5C,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,yBAAyB,OAAO,CAAC,MAAM,CAAC,IAAI,+BAA+B,CAC5E,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AA9DY,kDAAmB;8BAAnB,mBAAmB;IAE3B,WAAA,IAAA,eAAM,EAAC,iBAAO,CAAC,mBAAmB,CAAC,CAAA;IAEnC,WAAA,IAAA,eAAM,EAAC,iBAAO,CAAC,gBAAgB,CAAC,CAAA;IAEhC,WAAA,IAAA,eAAM,EAAC,iBAAO,CAAC,0BAA0B,CAAC,CAAA;IAE1C,WAAA,IAAA,eAAM,EAAC,iBAAO,CAAC,MAAM,CAAC,CAAA;6CAHW,kCAAe;QAEN,qDAAwB,UAEhC,uBAAgB;GAT1C,mBAAmB,CA8D/B"}
1
+ {"version":3,"file":"distributed.consumer.js","sourceRoot":"","sources":["../../src/consumer/distributed.consumer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAwC;AACxC,uCAAgD;AAChD,6DAA0D;AAE1D,kEAA8D;AAE9D,oEAA+D;AAC/D,iEAA8E;AAE9E,iGAA4F;AAC5F,sEAAiE;AAEjE,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAC9B,YAEmB,UAAuB,EAEvB,eAAgC,EAEhC,wBAAkD,EAC1B,MAAuB,EAC/C,gBAAkC;QANlC,eAAU,GAAV,UAAU,CAAa;QAEvB,oBAAe,GAAf,eAAe,CAAiB;QAEhC,6BAAwB,GAAxB,wBAAwB,CAA0B;QAC1B,WAAM,GAAN,MAAM,CAAiB;QAC/C,qBAAgB,GAAhB,gBAAgB,CAAkB;IAErD,CAAC;IAED,KAAK,CAAC,GAAG;QACP,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;YACpD,IACE,OAAO,YAAY,mCAAe;gBAClC,KAAK,KAAK,OAAO,CAAC,MAAM,CAAC,cAAc,EACvC,CAAC;gBACD,SAAS;YACX,CAAC;YAED,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB;iBAC1C,YAAY,EAAE;iBACd,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACnB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBACvB,OAAO,KAAK,CAAC;gBACf,CAAC;gBAED,OAAO,OAAO,CAAC,WAAW,CACxB,qCAAyB,EACzB,QAAQ,CAAC,QAAQ,CAClB,CAAC;YACJ,CAAC,CAAC;iBACD,MAAM,CACL,CAAC,QAAQ,EAAE,EAAE,CACX,OAAO,CAAC,WAAW,CAAC,qCAAyB,EAAE,QAAQ,CAAC,QAAQ,CAAC;iBAC9D,IAAI,KAAK,OAAO,CAAC,WAAW,CAAC,IAAI,CACvC,CAAC;YAEJ,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CACb,wBAAwB,OAAO,CAAC,WAAW,CAAC,IAAI,iBAAiB,CAClE,CAAC;YACJ,CAAC;YAED,MAAM,QAAQ,GAA4B,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAEtE,MAAM,UAAU,GAAG,IAAI,yCAAkB,CACvC,IAAI,CAAC,UAAU,EACf,OAAO,EACP,IAAI,CAAC,MAAM,EACX,QAAQ,EACR,IAAI,CAAC,wBAAwB,CAC9B,CAAC;YAEF,MAAM,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAE5C,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,yBAAyB,OAAO,CAAC,MAAM,CAAC,IAAI,+BAA+B,CAC5E,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AA/DY,kDAAmB;8BAAnB,mBAAmB;IAE3B,WAAA,IAAA,eAAM,EAAC,iBAAO,CAAC,mBAAmB,CAAC,CAAA;IAEnC,WAAA,IAAA,eAAM,EAAC,iBAAO,CAAC,gBAAgB,CAAC,CAAA;IAEhC,WAAA,IAAA,eAAM,EAAC,iBAAO,CAAC,0BAA0B,CAAC,CAAA;IAE1C,WAAA,IAAA,eAAM,EAAC,iBAAO,CAAC,MAAM,CAAC,CAAA;6CAHW,kCAAe;QAEN,qDAAwB,UAEhC,uBAAgB;GAT1C,mBAAmB,CA+D/B"}
@@ -1,4 +1,5 @@
1
1
  import { ChannelConfig } from '../config';
2
+ import { LifecycleHook } from '../lifecycle-hook/messaging-lifecycle-hook-listener';
2
3
  export declare const MESSAGE_HANDLER_METADATA = "MESSAGE_HANDLER_METADATA";
3
4
  export declare const CHANNEL_FACTORY_METADATA = "CHANNEL_FACTORY_METADATA";
4
5
  export declare const MESSAGE_BUS_FACTORY_METADATA = "MESSAGE_BUS_FACTORY_METADATA";
@@ -7,6 +8,7 @@ export declare const MESSAGING_MIDDLEWARE_METADATA = "MESSAGING_MIDDLEWARE_METAD
7
8
  export declare const MESSAGING_NORMALIZER_METADATA = "MESSAGING_NORMALIZER_METADATA";
8
9
  export declare const MESSAGING_EXCEPTION_LISTENER_METADATA = "MESSAGING_EXCEPTION_LISTENER_METADATA";
9
10
  export declare const MESSAGING_MESSAGE_METADATA = "MESSAGING_MESSAGE_METADATA";
11
+ export declare const MESSAGING_LIFECYCLE_HOOK_METADATA = "MESSAGING_LIFECYCLE_HOOK_METADATA";
10
12
  export declare const MessageHandler: (...routingKey: string[]) => ClassDecorator;
11
13
  export declare const ChannelFactory: (channelConfig: ChannelConfig) => ClassDecorator;
12
14
  export declare const MessageBusFactory: (channel: any) => ClassDecorator;
@@ -14,4 +16,5 @@ export declare const MessageConsumer: (channel: any) => ClassDecorator;
14
16
  export declare const MessagingMiddleware: (name?: string) => ClassDecorator;
15
17
  export declare const MessagingNormalizer: (name?: string) => ClassDecorator;
16
18
  export declare const MessagingExceptionListener: () => ClassDecorator;
19
+ export declare const MessagingLifecycleHook: (lifecycleHook: LifecycleHook) => ClassDecorator;
17
20
  export declare function DenormalizeMessage(): ParameterDecorator;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MessagingExceptionListener = exports.MessagingNormalizer = exports.MessagingMiddleware = exports.MessageConsumer = exports.MessageBusFactory = exports.ChannelFactory = exports.MessageHandler = exports.MESSAGING_MESSAGE_METADATA = exports.MESSAGING_EXCEPTION_LISTENER_METADATA = exports.MESSAGING_NORMALIZER_METADATA = exports.MESSAGING_MIDDLEWARE_METADATA = exports.MESSAGE_CONSUMER_METADATA = exports.MESSAGE_BUS_FACTORY_METADATA = exports.CHANNEL_FACTORY_METADATA = exports.MESSAGE_HANDLER_METADATA = void 0;
3
+ exports.MessagingLifecycleHook = exports.MessagingExceptionListener = exports.MessagingNormalizer = exports.MessagingMiddleware = exports.MessageConsumer = exports.MessageBusFactory = exports.ChannelFactory = exports.MessageHandler = exports.MESSAGING_LIFECYCLE_HOOK_METADATA = exports.MESSAGING_MESSAGE_METADATA = exports.MESSAGING_EXCEPTION_LISTENER_METADATA = exports.MESSAGING_NORMALIZER_METADATA = exports.MESSAGING_MIDDLEWARE_METADATA = exports.MESSAGE_CONSUMER_METADATA = exports.MESSAGE_BUS_FACTORY_METADATA = exports.CHANNEL_FACTORY_METADATA = exports.MESSAGE_HANDLER_METADATA = void 0;
4
4
  exports.DenormalizeMessage = DenormalizeMessage;
5
5
  exports.MESSAGE_HANDLER_METADATA = 'MESSAGE_HANDLER_METADATA';
6
6
  exports.CHANNEL_FACTORY_METADATA = 'CHANNEL_FACTORY_METADATA';
@@ -10,6 +10,7 @@ exports.MESSAGING_MIDDLEWARE_METADATA = 'MESSAGING_MIDDLEWARE_METADATA';
10
10
  exports.MESSAGING_NORMALIZER_METADATA = 'MESSAGING_NORMALIZER_METADATA';
11
11
  exports.MESSAGING_EXCEPTION_LISTENER_METADATA = 'MESSAGING_EXCEPTION_LISTENER_METADATA';
12
12
  exports.MESSAGING_MESSAGE_METADATA = 'MESSAGING_MESSAGE_METADATA';
13
+ exports.MESSAGING_LIFECYCLE_HOOK_METADATA = 'MESSAGING_LIFECYCLE_HOOK_METADATA';
13
14
  const MessageHandler = (...routingKey) => {
14
15
  return (target) => {
15
16
  Reflect.defineMetadata(exports.MESSAGE_HANDLER_METADATA, routingKey, target);
@@ -54,6 +55,12 @@ const MessagingExceptionListener = () => {
54
55
  };
55
56
  };
56
57
  exports.MessagingExceptionListener = MessagingExceptionListener;
58
+ const MessagingLifecycleHook = (lifecycleHook) => {
59
+ return (target) => {
60
+ Reflect.defineMetadata(exports.MESSAGING_LIFECYCLE_HOOK_METADATA, `${lifecycleHook}:${target.name}`, target);
61
+ };
62
+ };
63
+ exports.MessagingLifecycleHook = MessagingLifecycleHook;
57
64
  function DenormalizeMessage() {
58
65
  return (target, propertyKey, parameterIndex) => {
59
66
  const paramTypes = Reflect.getMetadata('design:paramtypes', target, propertyKey);
@@ -1 +1 @@
1
- {"version":3,"file":"decorator.js","sourceRoot":"","sources":["../../src/dependency-injection/decorator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decorator.js","sourceRoot":"","sources":["../../src/dependency-injection/decorator.ts"],"names":[],"mappings":"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"}
@@ -3,3 +3,4 @@ export declare const registerHandlers: (moduleRef: ModuleRef, discoveryService:
3
3
  export declare const registerMiddlewares: (moduleRef: ModuleRef, discoveryService: DiscoveryService) => void;
4
4
  export declare const registerMessageNormalizers: (moduleRef: ModuleRef, discoveryService: DiscoveryService) => void;
5
5
  export declare const registerExceptionListener: (moduleRef: ModuleRef, discoveryService: DiscoveryService) => void;
6
+ export declare const registerMessagingHooks: (moduleRef: ModuleRef, discoveryService: DiscoveryService) => void;
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.registerExceptionListener = exports.registerMessageNormalizers = exports.registerMiddlewares = exports.registerHandlers = void 0;
3
+ exports.registerMessagingHooks = exports.registerExceptionListener = exports.registerMessageNormalizers = exports.registerMiddlewares = exports.registerHandlers = void 0;
4
4
  const service_1 = require("./service");
5
5
  const decorator_1 = require("./decorator");
6
6
  const const_1 = require("../const");
7
+ const messaging_lifecycle_hook_registry_1 = require("../lifecycle-hook/messaging-lifecycle-hook.registry");
7
8
  const registerHandlers = (moduleRef, discoveryService) => {
8
9
  const registry = moduleRef.get(service_1.Service.MESSAGE_HANDLERS_REGISTRY);
9
10
  const logger = moduleRef.get(service_1.Service.LOGGER);
@@ -31,22 +32,26 @@ const registerExceptionListener = (moduleRef, discoveryService) => {
31
32
  register(moduleRef, discoveryService, service_1.Service.EXCEPTION_LISTENER_REGISTRY, decorator_1.MESSAGING_EXCEPTION_LISTENER_METADATA, 'ExceptionListener');
32
33
  };
33
34
  exports.registerExceptionListener = registerExceptionListener;
35
+ const registerMessagingHooks = (moduleRef, discoveryService) => {
36
+ register(moduleRef, discoveryService, messaging_lifecycle_hook_registry_1.MessagingLifecycleHookRegistry, decorator_1.MESSAGING_LIFECYCLE_HOOK_METADATA, 'MessagingLifecycleHook');
37
+ };
38
+ exports.registerMessagingHooks = registerMessagingHooks;
34
39
  const register = (moduleRef, discoveryService, registryProvider, decoratorMetadata, name) => {
35
40
  const exceptions = [const_1.DEFAULT_NORMALIZER, const_1.DEFAULT_MIDDLEWARE];
36
41
  const registry = moduleRef.get(registryProvider);
37
42
  const logger = moduleRef.get(service_1.Service.LOGGER);
38
43
  const instances = discoveryService
39
44
  .getProviders()
40
- .filter((messageExceptionListener) => {
41
- if (!messageExceptionListener.metatype) {
45
+ .filter((provider) => {
46
+ if (!provider.metatype) {
42
47
  return false;
43
48
  }
44
- return Reflect.hasMetadata(decoratorMetadata, messageExceptionListener.metatype);
49
+ return Reflect.hasMetadata(decoratorMetadata, provider.metatype);
45
50
  });
46
- instances.forEach((messageExceptionListener) => {
47
- registry.register(Reflect.getMetadata(decoratorMetadata, messageExceptionListener.metatype), messageExceptionListener.instance);
48
- if (!exceptions.includes(messageExceptionListener.name)) {
49
- logger.log(`${name} [${messageExceptionListener.name}] was registered`);
51
+ instances.forEach((provider) => {
52
+ registry.register(Reflect.getMetadata(decoratorMetadata, provider.metatype), provider.instance);
53
+ if (!exceptions.includes(provider.name)) {
54
+ logger.log(`${name} [${provider.name}] was registered`);
50
55
  }
51
56
  });
52
57
  };
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/dependency-injection/register.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/dependency-injection/register.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"message-handler.registry.js","sourceRoot":"","sources":["../../src/handler/message-handler.registry.ts"],"names":[],"mappings":";;;AACA,kHAA0G;AAE1G,MAAa,sBAAsB;IAAnC;QACU,aAAQ,GAAwC,IAAI,GAAG,EAAE,CAAC;IA+BpE,CAAC;IA7BC,QAAQ,CAAC,KAAe,EAAE,OAA6B;QACrD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACrB,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,cAAc,CAAC,IAAY,EAAE,OAA6B;QAChE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAgC,CAAC;YAEtE,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEtC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,eAAe,CAAC,UAAkB;QAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,4EAAkC,CAAC,UAAU,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;CACF;AAhCD,wDAgCC"}
1
+ {"version":3,"file":"message-handler.registry.js","sourceRoot":"","sources":["../../src/handler/message-handler.registry.ts"],"names":[],"mappings":";;;AACA,kHAA0G;AAE1G,MAAa,sBAAsB;IAAnC;QACU,aAAQ,GAAwC,IAAI,GAAG,EAAE,CAAC;IA+BpE,CAAC;IA7BC,QAAQ,CAAC,KAAe,EAAE,OAA6B;QACrD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACrB,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,cAAc,CAAC,IAAY,EAAE,OAA6B;QAChE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEvC,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEtC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,eAAe,CAAC,UAAkB;QAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,4EAAkC,CAAC,UAAU,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;CACF;AAhCD,wDAgCC"}
package/lib/index.d.ts CHANGED
@@ -31,3 +31,4 @@ export * from './exception/handlers.exception';
31
31
  export * from './logger/log';
32
32
  export * from './logger/messaging-logger';
33
33
  export * from './logger/nest-logger';
34
+ export * from './lifecycle-hook/messaging-lifecycle-hook-listener';
package/lib/index.js CHANGED
@@ -47,4 +47,5 @@ __exportStar(require("./exception/handlers.exception"), exports);
47
47
  __exportStar(require("./logger/log"), exports);
48
48
  __exportStar(require("./logger/messaging-logger"), exports);
49
49
  __exportStar(require("./logger/nest-logger"), exports);
50
+ __exportStar(require("./lifecycle-hook/messaging-lifecycle-hook-listener"), exports);
50
51
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,2CAAyB;AACzB,kEAAgD;AAChD,8DAA4C;AAC5C,+EAA6D;AAC7D,mEAAiD;AACjD,oEAAkD;AAClD,8DAA4C;AAC5C,8DAA4C;AAC5C,6DAA2C;AAC3C,sDAAoC;AACpC,8DAA4C;AAC5C,oEAAkD;AAClD,4DAA0C;AAC1C,4DAA0C;AAC1C,oDAAkC;AAClC,6DAA2C;AAC3C,8EAA4D;AAC5D,8EAA4D;AAC5D,8DAA4C;AAC5C,oDAAkC;AAClC,0DAAwC;AACxC,wEAAsD;AACtD,+EAA6D;AAC7D,kEAAgD;AAChD,kEAAgD;AAChD,kEAAgD;AAChD,0EAAwD;AACxD,yEAAuD;AACvD,iEAA+C;AAC/C,+CAA6B;AAC7B,4DAA0C;AAC1C,uDAAqC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,2CAAyB;AACzB,kEAAgD;AAChD,8DAA4C;AAC5C,+EAA6D;AAC7D,mEAAiD;AACjD,oEAAkD;AAClD,8DAA4C;AAC5C,8DAA4C;AAC5C,6DAA2C;AAC3C,sDAAoC;AACpC,8DAA4C;AAC5C,oEAAkD;AAClD,4DAA0C;AAC1C,4DAA0C;AAC1C,oDAAkC;AAClC,6DAA2C;AAC3C,8EAA4D;AAC5D,8EAA4D;AAC5D,8DAA4C;AAC5C,oDAAkC;AAClC,0DAAwC;AACxC,wEAAsD;AACtD,+EAA6D;AAC7D,kEAAgD;AAChD,kEAAgD;AAChD,kEAAgD;AAChD,0EAAwD;AACxD,yEAAuD;AACvD,iEAA+C;AAC/C,+CAA6B;AAC7B,4DAA0C;AAC1C,uDAAqC;AACrC,qFAAkE"}
@@ -0,0 +1,9 @@
1
+ import { MessagingLifecycleHookRegistry } from './messaging-lifecycle-hook.registry';
2
+ import { RoutingMessage } from '../message/routing-message';
3
+ export declare class MessagingLifecycleHookHandler {
4
+ private readonly messagingHookRegistry;
5
+ constructor(messagingHookRegistry: MessagingLifecycleHookRegistry);
6
+ handleAfterMessageDenormalized(message: RoutingMessage): Promise<void>;
7
+ handleBeforeMessageHandler(message: RoutingMessage): Promise<void>;
8
+ handleAfterMessageHandlerExecuted(message: RoutingMessage): Promise<void>;
9
+ }
@@ -0,0 +1,41 @@
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.MessagingLifecycleHookHandler = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const messaging_lifecycle_hook_registry_1 = require("./messaging-lifecycle-hook.registry");
15
+ const messaging_lifecycle_hook_listener_1 = require("./messaging-lifecycle-hook-listener");
16
+ let MessagingLifecycleHookHandler = class MessagingLifecycleHookHandler {
17
+ constructor(messagingHookRegistry) {
18
+ this.messagingHookRegistry = messagingHookRegistry;
19
+ }
20
+ async handleAfterMessageDenormalized(message) {
21
+ await this.messagingHookRegistry
22
+ .getAllByHook(messaging_lifecycle_hook_listener_1.LifecycleHook.AFTER_MESSAGE_DENORMALIZED)
23
+ .forEach((listener) => listener.on(message));
24
+ }
25
+ async handleBeforeMessageHandler(message) {
26
+ await this.messagingHookRegistry
27
+ .getAllByHook(messaging_lifecycle_hook_listener_1.LifecycleHook.BEFORE_MESSAGE_HANDLER)
28
+ .forEach((listener) => listener.on(message));
29
+ }
30
+ async handleAfterMessageHandlerExecuted(message) {
31
+ await this.messagingHookRegistry
32
+ .getAllByHook(messaging_lifecycle_hook_listener_1.LifecycleHook.AFTER_MESSAGE_HANDLER_EXECUTED)
33
+ .forEach((listener) => listener.on(message));
34
+ }
35
+ };
36
+ exports.MessagingLifecycleHookHandler = MessagingLifecycleHookHandler;
37
+ exports.MessagingLifecycleHookHandler = MessagingLifecycleHookHandler = __decorate([
38
+ (0, common_1.Injectable)(),
39
+ __metadata("design:paramtypes", [messaging_lifecycle_hook_registry_1.MessagingLifecycleHookRegistry])
40
+ ], MessagingLifecycleHookHandler);
41
+ //# sourceMappingURL=messaging-lifecycle-hook-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messaging-lifecycle-hook-handler.js","sourceRoot":"","sources":["../../src/lifecycle-hook/messaging-lifecycle-hook-handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,2FAAqF;AACrF,2FAAoE;AAI7D,IAAM,6BAA6B,GAAnC,MAAM,6BAA6B;IACxC,YACmB,qBAAqD;QAArD,0BAAqB,GAArB,qBAAqB,CAAgC;IAExE,CAAC;IAED,KAAK,CAAC,8BAA8B,CAAC,OAAuB;QAC1D,MAAM,IAAI,CAAC,qBAAqB;aAC7B,YAAY,CAAC,iDAAa,CAAC,0BAA0B,CAAC;aACtD,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,0BAA0B,CAAC,OAAuB;QACtD,MAAM,IAAI,CAAC,qBAAqB;aAC7B,YAAY,CAAC,iDAAa,CAAC,sBAAsB,CAAC;aAClD,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,iCAAiC,CAAC,OAAuB;QAC7D,MAAM,IAAI,CAAC,qBAAqB;aAC7B,YAAY,CAAC,iDAAa,CAAC,8BAA8B,CAAC;aAC1D,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,CAAC;CACF,CAAA;AAvBY,sEAA6B;wCAA7B,6BAA6B;IADzC,IAAA,mBAAU,GAAE;qCAG+B,kEAA8B;GAF7D,6BAA6B,CAuBzC"}
@@ -0,0 +1,10 @@
1
+ import { RoutingMessage } from '../message/routing-message';
2
+ export type MessagingData = RoutingMessage;
3
+ export declare enum LifecycleHook {
4
+ AFTER_MESSAGE_DENORMALIZED = "AFTER_MESSAGE_DENORMALIZED",
5
+ BEFORE_MESSAGE_HANDLER = "BEFORE_MESSAGE_HANDLER",
6
+ AFTER_MESSAGE_HANDLER_EXECUTED = "AFTER_MESSAGE_HANDLER_EXECUTED"
7
+ }
8
+ export interface MessagingLifecycleHookListener {
9
+ on(data: MessagingData): Promise<void>;
10
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LifecycleHook = void 0;
4
+ var LifecycleHook;
5
+ (function (LifecycleHook) {
6
+ LifecycleHook["AFTER_MESSAGE_DENORMALIZED"] = "AFTER_MESSAGE_DENORMALIZED";
7
+ LifecycleHook["BEFORE_MESSAGE_HANDLER"] = "BEFORE_MESSAGE_HANDLER";
8
+ LifecycleHook["AFTER_MESSAGE_HANDLER_EXECUTED"] = "AFTER_MESSAGE_HANDLER_EXECUTED";
9
+ })(LifecycleHook || (exports.LifecycleHook = LifecycleHook = {}));
10
+ //# sourceMappingURL=messaging-lifecycle-hook-listener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messaging-lifecycle-hook-listener.js","sourceRoot":"","sources":["../../src/lifecycle-hook/messaging-lifecycle-hook-listener.ts"],"names":[],"mappings":";;;AAIA,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,0EAAyD,CAAA;IACzD,kEAAiD,CAAA;IACjD,kFAAiE,CAAA;AACnE,CAAC,EAJW,aAAa,6BAAb,aAAa,QAIxB"}
@@ -0,0 +1,5 @@
1
+ import { BaseRegistry } from '../shared/base-registry';
2
+ import { MessagingLifecycleHookListener, LifecycleHook } from './messaging-lifecycle-hook-listener';
3
+ export declare class MessagingLifecycleHookRegistry extends BaseRegistry<MessagingLifecycleHookListener> {
4
+ getAllByHook(hook: LifecycleHook): MessagingLifecycleHookListener[];
5
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MessagingLifecycleHookRegistry = void 0;
4
+ const base_registry_1 = require("../shared/base-registry");
5
+ class MessagingLifecycleHookRegistry extends base_registry_1.BaseRegistry {
6
+ getAllByHook(hook) {
7
+ const result = [];
8
+ for (const [key, listener] of this.registry.entries()) {
9
+ //Because pattern is `${hook}:${target.name}`,
10
+ const name = key.split(':')[0];
11
+ if (name.includes(hook)) {
12
+ result.push(listener);
13
+ }
14
+ }
15
+ return result;
16
+ }
17
+ }
18
+ exports.MessagingLifecycleHookRegistry = MessagingLifecycleHookRegistry;
19
+ //# sourceMappingURL=messaging-lifecycle-hook.registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messaging-lifecycle-hook.registry.js","sourceRoot":"","sources":["../../src/lifecycle-hook/messaging-lifecycle-hook.registry.ts"],"names":[],"mappings":";;;AAAA,2DAAuD;AAGvD,MAAa,8BAA+B,SAAQ,4BAA4C;IAC9F,YAAY,CAAC,IAAmB;QAC9B,MAAM,MAAM,GAAqC,EAAE,CAAC;QAEpD,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YACtD,8CAA8C;YAC9C,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAdD,wEAcC"}