@nestjstools/messaging 2.9.2 → 2.10.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.
- package/README.md +23 -1
- package/lib/consumer/distributed.consumer.d.ts +3 -1
- package/lib/consumer/distributed.consumer.js +10 -4
- package/lib/consumer/distributed.consumer.js.map +1 -1
- package/lib/dependency-injection/decorator.d.ts +2 -0
- package/lib/dependency-injection/decorator.js +8 -1
- package/lib/dependency-injection/decorator.js.map +1 -1
- package/lib/dependency-injection/register.d.ts +1 -0
- package/lib/dependency-injection/register.js +20 -1
- package/lib/dependency-injection/register.js.map +1 -1
- package/lib/dependency-injection/service.d.ts +2 -0
- package/lib/dependency-injection/service.js +2 -0
- package/lib/dependency-injection/service.js.map +1 -1
- package/lib/exception-listener/exception-context.d.ts +7 -0
- package/lib/exception-listener/exception-context.js +13 -0
- package/lib/exception-listener/exception-context.js.map +1 -0
- package/lib/exception-listener/exception-listener-handler.d.ts +7 -0
- package/lib/exception-listener/exception-listener-handler.js +33 -0
- package/lib/exception-listener/exception-listener-handler.js.map +1 -0
- package/lib/exception-listener/exception-listener.d.ts +4 -0
- package/lib/exception-listener/exception-listener.js +3 -0
- package/lib/exception-listener/exception-listener.js.map +1 -0
- package/lib/exception-listener/exception-listener.registry.d.ts +6 -0
- package/lib/exception-listener/exception-listener.registry.js +19 -0
- package/lib/exception-listener/exception-listener.registry.js.map +1 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.js +3 -0
- package/lib/index.js.map +1 -1
- package/lib/messaging.module.js +11 -0
- package/lib/messaging.module.js.map +1 -1
- package/lib/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -313,7 +313,7 @@ export class Base64Normalizer implements MessageNormalizer {
|
|
|
313
313
|
You can define a **Normalizer** per Channel
|
|
314
314
|
___
|
|
315
315
|
|
|
316
|
-
##
|
|
316
|
+
## ⤵️ Middlewares
|
|
317
317
|
|
|
318
318
|
A **middleware** in the context of the `MessagingModule` is a function that processes messages as they pass through the message pipeline. The middleware can intercept, modify, or log messages before they are handled by the respective **message handler**. This is particularly useful for logging, authentication, validation, or any other pre-processing step before the actual business logic is applied.
|
|
319
319
|
|
|
@@ -407,6 +407,28 @@ export class AppModule {}
|
|
|
407
407
|
|
|
408
408
|
---
|
|
409
409
|
|
|
410
|
+
## 🔰 ExceptionListener
|
|
411
|
+
|
|
412
|
+
The **ExceptionListener** provides a centralized way to handle exceptions thrown during asynchronous message processing from any **channel** in your **messaging system**.
|
|
413
|
+
|
|
414
|
+
By decorating a class with `@MessagingExceptionListener()` and implementing the `ExceptionListener` interface, you can intercept and respond to any unhandled exception occurring during message handling — whether it's logging, reporting, retries, or custom recovery logic.
|
|
415
|
+
|
|
416
|
+
Example Use Case:
|
|
417
|
+
You can log the error, send a notification, or trigger fallback logic whenever a message handler throws an exception.
|
|
418
|
+
|
|
419
|
+
### Example ExceptionListener Code:
|
|
420
|
+
```typescript
|
|
421
|
+
import { Injectable } from '@nestjs/common';
|
|
422
|
+
import { ExceptionListener, MessagingExceptionListener, ExceptionContext } from '@nestjstools/messaging';
|
|
423
|
+
|
|
424
|
+
@MessagingExceptionListener()
|
|
425
|
+
export class CustomExceptionListener implements ExceptionListener {
|
|
426
|
+
onException(context: ExceptionContext): Promise<void> {
|
|
427
|
+
console.log(`Here I can handle exception If I want and do some action`);
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
```
|
|
431
|
+
|
|
410
432
|
## Configuration options
|
|
411
433
|
Here’s a table with the documentation for the `MessagingModule.forRoot` configuration you requested, breaking it into **buses**, **channels** (with descriptions of both channels), and their respective properties, descriptions, and default values:
|
|
412
434
|
|
|
@@ -2,11 +2,13 @@ import { DiscoveryService } from '@nestjs/core';
|
|
|
2
2
|
import { IMessageBus } from '../bus/i-message-bus';
|
|
3
3
|
import { ChannelRegistry } from '../channel/channel.registry';
|
|
4
4
|
import { MessagingLogger } from '../logger/messaging-logger';
|
|
5
|
+
import { ExceptionListenerHandler } from '../exception-listener/exception-listener-handler';
|
|
5
6
|
export declare class DistributedConsumer {
|
|
6
7
|
private readonly messageBus;
|
|
7
8
|
private readonly channelRegistry;
|
|
9
|
+
private readonly exceptionListenerHandler;
|
|
8
10
|
private readonly logger;
|
|
9
11
|
private readonly discoveryService;
|
|
10
|
-
constructor(messageBus: IMessageBus, channelRegistry: ChannelRegistry, logger: MessagingLogger, discoveryService: DiscoveryService);
|
|
12
|
+
constructor(messageBus: IMessageBus, channelRegistry: ChannelRegistry, exceptionListenerHandler: ExceptionListenerHandler, logger: MessagingLogger, discoveryService: DiscoveryService);
|
|
11
13
|
run(): Promise<void>;
|
|
12
14
|
}
|
|
@@ -25,10 +25,13 @@ const consumer_dispatched_message_error_1 = require("./consumer-dispatched-messa
|
|
|
25
25
|
const sealed_routing_message_1 = require("../message/sealed-routing-message");
|
|
26
26
|
const log_1 = require("../logger/log");
|
|
27
27
|
const handlers_exception_1 = require("../exception/handlers.exception");
|
|
28
|
+
const exception_listener_handler_1 = require("../exception-listener/exception-listener-handler");
|
|
29
|
+
const exception_context_1 = require("../exception-listener/exception-context");
|
|
28
30
|
let DistributedConsumer = class DistributedConsumer {
|
|
29
|
-
constructor(messageBus, channelRegistry, logger, discoveryService) {
|
|
31
|
+
constructor(messageBus, channelRegistry, exceptionListenerHandler, logger, discoveryService) {
|
|
30
32
|
this.messageBus = messageBus;
|
|
31
33
|
this.channelRegistry = channelRegistry;
|
|
34
|
+
this.exceptionListenerHandler = exceptionListenerHandler;
|
|
32
35
|
this.logger = logger;
|
|
33
36
|
this.discoveryService = discoveryService;
|
|
34
37
|
}
|
|
@@ -70,9 +73,10 @@ let DistributedConsumer = class DistributedConsumer {
|
|
|
70
73
|
this.logger.error(log_1.Log.create(`Some error occurred in channel [${channel.config.name}]`, {
|
|
71
74
|
error: e,
|
|
72
75
|
message: JSON.stringify(consumerMessage.message),
|
|
73
|
-
routingKey: consumerMessage.routingKey
|
|
76
|
+
routingKey: consumerMessage.routingKey,
|
|
74
77
|
}));
|
|
75
78
|
}
|
|
79
|
+
await this.exceptionListenerHandler.handleError(new exception_context_1.ExceptionContext(e, channel.config.name, consumerMessage.message, consumerMessage.routingKey));
|
|
76
80
|
}
|
|
77
81
|
});
|
|
78
82
|
this.logger.log(`Consumer for channel [${channel.config.name}] is ready to handle messages`);
|
|
@@ -83,7 +87,9 @@ exports.DistributedConsumer = DistributedConsumer;
|
|
|
83
87
|
exports.DistributedConsumer = DistributedConsumer = __decorate([
|
|
84
88
|
__param(0, (0, common_1.Inject)(service_1.Service.DEFAULT_MESSAGE_BUS)),
|
|
85
89
|
__param(1, (0, common_1.Inject)(service_1.Service.CHANNEL_REGISTRY)),
|
|
86
|
-
__param(2, (0, common_1.Inject)(service_1.Service.
|
|
87
|
-
|
|
90
|
+
__param(2, (0, common_1.Inject)(service_1.Service.EXCEPTION_LISTENER_HANDLER)),
|
|
91
|
+
__param(3, (0, common_1.Inject)(service_1.Service.LOGGER)),
|
|
92
|
+
__metadata("design:paramtypes", [Object, channel_registry_1.ChannelRegistry,
|
|
93
|
+
exception_listener_handler_1.ExceptionListenerHandler, Object, core_1.DiscoveryService])
|
|
88
94
|
], DistributedConsumer);
|
|
89
95
|
//# sourceMappingURL=distributed.consumer.js.map
|
|
@@ -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;AAC9E,2EAAsE;AAGtE,gFAA2E;AAC3E,2FAAqF;AACrF,8EAAyE;AACzE,uCAAoC;AACpC,wEAAoE;
|
|
1
|
+
{"version":3,"file":"distributed.consumer.js","sourceRoot":"","sources":["../../src/consumer/distributed.consumer.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,9 +5,11 @@ export declare const MESSAGE_BUS_FACTORY_METADATA = "MESSAGE_BUS_FACTORY_METADAT
|
|
|
5
5
|
export declare const MESSAGE_CONSUMER_METADATA = "MESSAGE_CONSUMER_METADATA";
|
|
6
6
|
export declare const MESSAGING_MIDDLEWARE_METADATA = "MESSAGING_MIDDLEWARE_METADATA";
|
|
7
7
|
export declare const MESSAGING_NORMALIZER_METADATA = "MESSAGING_NORMALIZER_METADATA";
|
|
8
|
+
export declare const MESSAGING_EXCEPTION_LISTENER_METADATA = "MESSAGING_EXCEPTION_LISTENER_METADATA";
|
|
8
9
|
export declare const MessageHandler: (routingKey: string) => ClassDecorator;
|
|
9
10
|
export declare const ChannelFactory: (channelConfig: ChannelConfig) => ClassDecorator;
|
|
10
11
|
export declare const MessageBusFactory: (channel: any) => ClassDecorator;
|
|
11
12
|
export declare const MessageConsumer: (channel: any) => ClassDecorator;
|
|
12
13
|
export declare const MessagingMiddleware: (name?: string) => ClassDecorator;
|
|
13
14
|
export declare const MessagingNormalizer: (name?: string) => ClassDecorator;
|
|
15
|
+
export declare const MessagingExceptionListener: () => ClassDecorator;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MessagingNormalizer = exports.MessagingMiddleware = exports.MessageConsumer = exports.MessageBusFactory = exports.ChannelFactory = exports.MessageHandler = 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.MessagingExceptionListener = exports.MessagingNormalizer = exports.MessagingMiddleware = exports.MessageConsumer = exports.MessageBusFactory = exports.ChannelFactory = exports.MessageHandler = 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.MESSAGE_HANDLER_METADATA = 'MESSAGE_HANDLER_METADATA';
|
|
5
5
|
exports.CHANNEL_FACTORY_METADATA = 'CHANNEL_FACTORY_METADATA';
|
|
6
6
|
exports.MESSAGE_BUS_FACTORY_METADATA = 'MESSAGE_BUS_FACTORY_METADATA';
|
|
7
7
|
exports.MESSAGE_CONSUMER_METADATA = 'MESSAGE_CONSUMER_METADATA';
|
|
8
8
|
exports.MESSAGING_MIDDLEWARE_METADATA = 'MESSAGING_MIDDLEWARE_METADATA';
|
|
9
9
|
exports.MESSAGING_NORMALIZER_METADATA = 'MESSAGING_NORMALIZER_METADATA';
|
|
10
|
+
exports.MESSAGING_EXCEPTION_LISTENER_METADATA = 'MESSAGING_EXCEPTION_LISTENER_METADATA';
|
|
10
11
|
const MessageHandler = (routingKey) => {
|
|
11
12
|
return (target) => {
|
|
12
13
|
Reflect.defineMetadata(exports.MESSAGE_HANDLER_METADATA, routingKey, target);
|
|
@@ -45,6 +46,12 @@ const MessagingNormalizer = (name) => {
|
|
|
45
46
|
};
|
|
46
47
|
};
|
|
47
48
|
exports.MessagingNormalizer = MessagingNormalizer;
|
|
49
|
+
const MessagingExceptionListener = () => {
|
|
50
|
+
return (target) => {
|
|
51
|
+
Reflect.defineMetadata(exports.MESSAGING_EXCEPTION_LISTENER_METADATA, target.name, target);
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
exports.MessagingExceptionListener = MessagingExceptionListener;
|
|
48
55
|
const classValidator = (value, type) => {
|
|
49
56
|
if (Object.getPrototypeOf(value).name !== type) {
|
|
50
57
|
throw new Error(`Given value must be instance of [${type}]`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorator.js","sourceRoot":"","sources":["../../src/dependency-injection/decorator.ts"],"names":[],"mappings":";;;AAEa,QAAA,wBAAwB,GAAG,0BAA0B,CAAC;AACtD,QAAA,wBAAwB,GAAG,0BAA0B,CAAC;AACtD,QAAA,4BAA4B,GAAG,8BAA8B,CAAC;AAC9D,QAAA,yBAAyB,GAAG,2BAA2B,CAAC;AACxD,QAAA,6BAA6B,GAAG,+BAA+B,CAAC;AAChE,QAAA,6BAA6B,GAAG,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"decorator.js","sourceRoot":"","sources":["../../src/dependency-injection/decorator.ts"],"names":[],"mappings":";;;AAEa,QAAA,wBAAwB,GAAG,0BAA0B,CAAC;AACtD,QAAA,wBAAwB,GAAG,0BAA0B,CAAC;AACtD,QAAA,4BAA4B,GAAG,8BAA8B,CAAC;AAC9D,QAAA,yBAAyB,GAAG,2BAA2B,CAAC;AACxD,QAAA,6BAA6B,GAAG,+BAA+B,CAAC;AAChE,QAAA,6BAA6B,GAAG,+BAA+B,CAAC;AAChE,QAAA,qCAAqC,GAAG,uCAAuC,CAAC;AAEtF,MAAM,cAAc,GAAG,CAAC,UAAkB,EAAkB,EAAE;IACnE,OAAO,CAAC,MAAgB,EAAE,EAAE;QAC1B,OAAO,CAAC,cAAc,CAAC,gCAAwB,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC,CAAC;AACJ,CAAC,CAAC;AAJW,QAAA,cAAc,kBAIzB;AAEK,MAAM,cAAc,GAAG,CAC5B,aAA4B,EACZ,EAAE;IAClB,OAAO,CAAC,MAAgB,EAAE,EAAE;QAC1B,OAAO,CAAC,cAAc,CAAC,gCAAwB,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IAC1E,CAAC,CAAC;AACJ,CAAC,CAAC;AANW,QAAA,cAAc,kBAMzB;AAEK,MAAM,iBAAiB,GAAG,CAAC,OAAY,EAAkB,EAAE;IAChE,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAEnC,OAAO,CAAC,MAAgB,EAAE,EAAE;QAC1B,OAAO,CAAC,cAAc,CAAC,oCAA4B,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACxE,CAAC,CAAC;AACJ,CAAC,CAAC;AANW,QAAA,iBAAiB,qBAM5B;AAEK,MAAM,eAAe,GAAG,CAAC,OAAY,EAAkB,EAAE;IAC9D,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAEnC,OAAO,CAAC,MAAgB,EAAE,EAAE;QAC1B,OAAO,CAAC,cAAc,CAAC,iCAAyB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACrE,CAAC,CAAC;AACJ,CAAC,CAAC;AANW,QAAA,eAAe,mBAM1B;AAEK,MAAM,mBAAmB,GAAG,CAAC,IAAa,EAAkB,EAAE;IACnE,OAAO,CAAC,MAAgB,EAAE,EAAE;QAC1B,OAAO,CAAC,cAAc,CAAC,qCAA6B,EAAE,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrF,CAAC,CAAC;AACJ,CAAC,CAAC;AAJW,QAAA,mBAAmB,uBAI9B;AAEK,MAAM,mBAAmB,GAAG,CAAC,IAAa,EAAkB,EAAE;IACnE,OAAO,CAAC,MAAgB,EAAE,EAAE;QAC1B,OAAO,CAAC,cAAc,CAAC,qCAA6B,EAAE,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrF,CAAC,CAAC;AACJ,CAAC,CAAC;AAJW,QAAA,mBAAmB,uBAI9B;AAEK,MAAM,0BAA0B,GAAG,GAAmB,EAAE;IAC7D,OAAO,CAAC,MAAgB,EAAE,EAAE;QAC1B,OAAO,CAAC,cAAc,CAAC,6CAAqC,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrF,CAAC,CAAC;AACJ,CAAC,CAAC;AAJW,QAAA,0BAA0B,8BAIrC;AAEF,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,IAAY,EAAQ,EAAE;IAC3D,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,GAAG,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -2,3 +2,4 @@ import { DiscoveryService, ModuleRef } from '@nestjs/core';
|
|
|
2
2
|
export declare const registerHandlers: (moduleRef: ModuleRef, discoveryService: DiscoveryService) => void;
|
|
3
3
|
export declare const registerMiddlewares: (moduleRef: ModuleRef, discoveryService: DiscoveryService) => void;
|
|
4
4
|
export declare const registerMessageNormalizers: (moduleRef: ModuleRef, discoveryService: DiscoveryService) => void;
|
|
5
|
+
export declare const registerExceptionListener: (moduleRef: ModuleRef, discoveryService: DiscoveryService) => void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.registerMessageNormalizers = exports.registerMiddlewares = exports.registerHandlers = void 0;
|
|
3
|
+
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");
|
|
@@ -57,4 +57,23 @@ const registerMessageNormalizers = (moduleRef, discoveryService) => {
|
|
|
57
57
|
});
|
|
58
58
|
};
|
|
59
59
|
exports.registerMessageNormalizers = registerMessageNormalizers;
|
|
60
|
+
const registerExceptionListener = (moduleRef, discoveryService) => {
|
|
61
|
+
const registry = moduleRef.get(service_1.Service.EXCEPTION_LISTENER_REGISTRY);
|
|
62
|
+
const logger = moduleRef.get(service_1.Service.LOGGER);
|
|
63
|
+
const messageExceptionListenerInstances = discoveryService
|
|
64
|
+
.getProviders()
|
|
65
|
+
.filter((messageExceptionListener) => {
|
|
66
|
+
if (!messageExceptionListener.metatype) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
return Reflect.hasMetadata(decorator_1.MESSAGING_EXCEPTION_LISTENER_METADATA, messageExceptionListener.metatype);
|
|
70
|
+
});
|
|
71
|
+
messageExceptionListenerInstances.forEach((messageExceptionListener) => {
|
|
72
|
+
registry.register(Reflect.getMetadata(decorator_1.MESSAGING_EXCEPTION_LISTENER_METADATA, messageExceptionListener.metatype), messageExceptionListener.instance);
|
|
73
|
+
if (messageExceptionListener.name !== const_1.DEFAULT_NORMALIZER) {
|
|
74
|
+
logger.log(`ExceptionListener [${messageExceptionListener.name}] was registered`);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
exports.registerExceptionListener = registerExceptionListener;
|
|
60
79
|
//# sourceMappingURL=register.js.map
|
|
@@ -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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"}
|
|
@@ -5,6 +5,8 @@ export declare enum Service {
|
|
|
5
5
|
MESSAGE_HANDLERS_REGISTRY = "messenger_MESSAGE_HANDLERS_REGISTRY",
|
|
6
6
|
MESSAGE_NORMALIZERS_REGISTRY = "messenger_MESSAGE_NORMALIZERS_REGISTRY",
|
|
7
7
|
CHANNEL_REGISTRY = "messenger_CHANNEL_REGISTRY",
|
|
8
|
+
EXCEPTION_LISTENER_REGISTRY = "messenger_EXCEPTION_LISTENER_REGISTRY",
|
|
9
|
+
EXCEPTION_LISTENER_HANDLER = "messenger_EXCEPTION_LISTENER_HANDLER",
|
|
8
10
|
CHANNELS = "messenger_CHANNELS",
|
|
9
11
|
LOGGER = "messenger_LOGGER"
|
|
10
12
|
}
|
|
@@ -9,6 +9,8 @@ var Service;
|
|
|
9
9
|
Service["MESSAGE_HANDLERS_REGISTRY"] = "messenger_MESSAGE_HANDLERS_REGISTRY";
|
|
10
10
|
Service["MESSAGE_NORMALIZERS_REGISTRY"] = "messenger_MESSAGE_NORMALIZERS_REGISTRY";
|
|
11
11
|
Service["CHANNEL_REGISTRY"] = "messenger_CHANNEL_REGISTRY";
|
|
12
|
+
Service["EXCEPTION_LISTENER_REGISTRY"] = "messenger_EXCEPTION_LISTENER_REGISTRY";
|
|
13
|
+
Service["EXCEPTION_LISTENER_HANDLER"] = "messenger_EXCEPTION_LISTENER_HANDLER";
|
|
12
14
|
Service["CHANNELS"] = "messenger_CHANNELS";
|
|
13
15
|
Service["LOGGER"] = "messenger_LOGGER";
|
|
14
16
|
})(Service || (exports.Service = Service = {}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/dependency-injection/service.ts"],"names":[],"mappings":";;;AAAA,IAAY,
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/dependency-injection/service.ts"],"names":[],"mappings":";;;AAAA,IAAY,OAWX;AAXD,WAAY,OAAO;IACjB,gEAAqD,CAAA;IACrD,gEAAqD,CAAA;IACrD,0DAA+C,CAAA;IAC/C,4EAAiE,CAAA;IACjE,kFAAuE,CAAA;IACvE,0DAA+C,CAAA;IAC/C,gFAAqE,CAAA;IACrE,8EAAmE,CAAA;IACnE,0CAA+B,CAAA;IAC/B,sCAA2B,CAAA;AAC7B,CAAC,EAXW,OAAO,uBAAP,OAAO,QAWlB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare class ExceptionContext {
|
|
2
|
+
readonly exception: Error;
|
|
3
|
+
readonly channelName: string;
|
|
4
|
+
readonly rawMessage: object | string;
|
|
5
|
+
readonly routingKey: string;
|
|
6
|
+
constructor(exception: Error, channelName: string, rawMessage: object | string, routingKey: string);
|
|
7
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExceptionContext = void 0;
|
|
4
|
+
class ExceptionContext {
|
|
5
|
+
constructor(exception, channelName, rawMessage, routingKey) {
|
|
6
|
+
this.exception = exception;
|
|
7
|
+
this.channelName = channelName;
|
|
8
|
+
this.rawMessage = rawMessage;
|
|
9
|
+
this.routingKey = routingKey;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.ExceptionContext = ExceptionContext;
|
|
13
|
+
//# sourceMappingURL=exception-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exception-context.js","sourceRoot":"","sources":["../../src/exception-listener/exception-context.ts"],"names":[],"mappings":";;;AAAA,MAAa,gBAAgB;IAC3B,YACkB,SAAgB,EAChB,WAAmB,EACnB,UAAyB,EACzB,UAAkB;QAHlB,cAAS,GAAT,SAAS,CAAO;QAChB,gBAAW,GAAX,WAAW,CAAQ;QACnB,eAAU,GAAV,UAAU,CAAe;QACzB,eAAU,GAAV,UAAU,CAAQ;IAEpC,CAAC;CACF;AARD,4CAQC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ExceptionListenerRegistry } from './exception-listener.registry';
|
|
2
|
+
import { ExceptionContext } from './exception-context';
|
|
3
|
+
export declare class ExceptionListenerHandler {
|
|
4
|
+
private readonly exceptionListenerRegistry;
|
|
5
|
+
constructor(exceptionListenerRegistry: ExceptionListenerRegistry);
|
|
6
|
+
handleError(context: ExceptionContext): Promise<void>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
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
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ExceptionListenerHandler = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const exception_listener_registry_1 = require("./exception-listener.registry");
|
|
18
|
+
const service_1 = require("../dependency-injection/service");
|
|
19
|
+
let ExceptionListenerHandler = class ExceptionListenerHandler {
|
|
20
|
+
constructor(exceptionListenerRegistry) {
|
|
21
|
+
this.exceptionListenerRegistry = exceptionListenerRegistry;
|
|
22
|
+
}
|
|
23
|
+
async handleError(context) {
|
|
24
|
+
await this.exceptionListenerRegistry.getAll().forEach(exceptionListener => exceptionListener.onException(context));
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
exports.ExceptionListenerHandler = ExceptionListenerHandler;
|
|
28
|
+
exports.ExceptionListenerHandler = ExceptionListenerHandler = __decorate([
|
|
29
|
+
(0, common_1.Injectable)(),
|
|
30
|
+
__param(0, (0, common_1.Inject)(service_1.Service.EXCEPTION_LISTENER_REGISTRY)),
|
|
31
|
+
__metadata("design:paramtypes", [exception_listener_registry_1.ExceptionListenerRegistry])
|
|
32
|
+
], ExceptionListenerHandler);
|
|
33
|
+
//# sourceMappingURL=exception-listener-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exception-listener-handler.js","sourceRoot":"","sources":["../../src/exception-listener/exception-listener-handler.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,+EAA0E;AAC1E,6DAA0D;AAInD,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IACnC,YAEmB,yBAAoD;QAApD,8BAAyB,GAAzB,yBAAyB,CAA2B;IAEvE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAyB;QACzC,MAAM,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,iBAAiB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IACrH,CAAC;CACF,CAAA;AAVY,4DAAwB;mCAAxB,wBAAwB;IADpC,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,eAAM,EAAC,iBAAO,CAAC,2BAA2B,CAAC,CAAA;qCACA,uDAAyB;GAH5D,wBAAwB,CAUpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exception-listener.js","sourceRoot":"","sources":["../../src/exception-listener/exception-listener.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExceptionListenerRegistry = void 0;
|
|
4
|
+
class ExceptionListenerRegistry {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.registry = new Map();
|
|
7
|
+
}
|
|
8
|
+
register(name, middleware) {
|
|
9
|
+
if (this.registry.has(name)) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
this.registry.set(name, middleware);
|
|
13
|
+
}
|
|
14
|
+
getAll() {
|
|
15
|
+
return Array.from(this.registry.values());
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.ExceptionListenerRegistry = ExceptionListenerRegistry;
|
|
19
|
+
//# sourceMappingURL=exception-listener.registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exception-listener.registry.js","sourceRoot":"","sources":["../../src/exception-listener/exception-listener.registry.ts"],"names":[],"mappings":";;;AAEA,MAAa,yBAAyB;IAAtC;QACU,aAAQ,GAAmC,IAAI,GAAG,EAAE,CAAC;IAa/D,CAAC;IAXC,QAAQ,CAAC,IAAY,EAAE,UAA6B;QAClD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACtC,CAAC;IAED,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;CACF;AAdD,8DAcC"}
|
package/lib/index.d.ts
CHANGED
|
@@ -25,3 +25,6 @@ export * from './exception/invalid-channel.exception';
|
|
|
25
25
|
export * from './exception/invalid-channel-config.exception';
|
|
26
26
|
export * from './middleware/middleware.context';
|
|
27
27
|
export * from './normalizer/message-normalizer';
|
|
28
|
+
export * from './exception-listener/exception-listener';
|
|
29
|
+
export * from './exception-listener/exception-context';
|
|
30
|
+
export * from './exception/handlers.exception';
|
package/lib/index.js
CHANGED
|
@@ -41,4 +41,7 @@ __exportStar(require("./exception/invalid-channel.exception"), exports);
|
|
|
41
41
|
__exportStar(require("./exception/invalid-channel-config.exception"), exports);
|
|
42
42
|
__exportStar(require("./middleware/middleware.context"), exports);
|
|
43
43
|
__exportStar(require("./normalizer/message-normalizer"), exports);
|
|
44
|
+
__exportStar(require("./exception-listener/exception-listener"), exports);
|
|
45
|
+
__exportStar(require("./exception-listener/exception-context"), exports);
|
|
46
|
+
__exportStar(require("./exception/handlers.exception"), exports);
|
|
44
47
|
//# 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,yEAAuD;AACvD,+EAA6D;AAC7D,uEAAqD;AACrD,mEAAiD;AACjD,oEAAkD;AAClD,8DAA4C;AAC5C,8DAA4C;AAC5C,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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,2CAAyB;AACzB,kEAAgD;AAChD,8DAA4C;AAC5C,yEAAuD;AACvD,+EAA6D;AAC7D,uEAAqD;AACrD,mEAAiD;AACjD,oEAAkD;AAClD,8DAA4C;AAC5C,8DAA4C;AAC5C,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,0EAAwD;AACxD,yEAAuD;AACvD,iEAA+C"}
|
package/lib/messaging.module.js
CHANGED
|
@@ -32,6 +32,8 @@ const handler_middleware_1 = require("./middleware/handler-middleware");
|
|
|
32
32
|
const message_bus_collection_1 = require("./bus/message-bus.collection");
|
|
33
33
|
const normalizer_registry_1 = require("./normalizer/normalizer.registry");
|
|
34
34
|
const object_forward_message_normalizer_1 = require("./normalizer/object-forward-message.normalizer");
|
|
35
|
+
const exception_listener_registry_1 = require("./exception-listener/exception-listener.registry");
|
|
36
|
+
const exception_listener_handler_1 = require("./exception-listener/exception-listener-handler");
|
|
35
37
|
let MessagingModule = MessagingModule_1 = class MessagingModule {
|
|
36
38
|
static forRoot(options) {
|
|
37
39
|
const registerChannels = () => {
|
|
@@ -90,6 +92,10 @@ let MessagingModule = MessagingModule_1 = class MessagingModule {
|
|
|
90
92
|
provide: service_1.Service.MESSAGE_HANDLERS_REGISTRY,
|
|
91
93
|
useClass: message_handler_registry_1.MessageHandlerRegistry,
|
|
92
94
|
},
|
|
95
|
+
{
|
|
96
|
+
provide: service_1.Service.EXCEPTION_LISTENER_REGISTRY,
|
|
97
|
+
useClass: exception_listener_registry_1.ExceptionListenerRegistry,
|
|
98
|
+
},
|
|
93
99
|
{
|
|
94
100
|
provide: service_1.Service.MESSAGE_NORMALIZERS_REGISTRY,
|
|
95
101
|
useClass: normalizer_registry_1.NormalizerRegistry,
|
|
@@ -98,6 +104,10 @@ let MessagingModule = MessagingModule_1 = class MessagingModule {
|
|
|
98
104
|
provide: service_1.Service.MIDDLEWARE_REGISTRY,
|
|
99
105
|
useClass: middleware_registry_1.MiddlewareRegistry,
|
|
100
106
|
},
|
|
107
|
+
{
|
|
108
|
+
provide: service_1.Service.EXCEPTION_LISTENER_HANDLER,
|
|
109
|
+
useClass: exception_listener_handler_1.ExceptionListenerHandler,
|
|
110
|
+
},
|
|
101
111
|
{
|
|
102
112
|
provide: service_1.Service.CHANNEL_REGISTRY,
|
|
103
113
|
useFactory: (channels, logger) => {
|
|
@@ -133,6 +143,7 @@ let MessagingModule = MessagingModule_1 = class MessagingModule {
|
|
|
133
143
|
(0, register_1.registerHandlers)(this.moduleRef, this.discoveryService);
|
|
134
144
|
(0, register_1.registerMiddlewares)(this.moduleRef, this.discoveryService);
|
|
135
145
|
(0, register_1.registerMessageNormalizers)(this.moduleRef, this.discoveryService);
|
|
146
|
+
(0, register_1.registerExceptionListener)(this.moduleRef, this.discoveryService);
|
|
136
147
|
const consumer = this.moduleRef.get(distributed_consumer_1.DistributedConsumer);
|
|
137
148
|
consumer.run();
|
|
138
149
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messaging.module.js","sourceRoot":"","sources":["../src/messaging.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAA2G;AAC3G,qCAAwF;AACxF,4DAAyD;AACzD,2FAAsF;AACtF,iEAA6D;AAC7D,uFAAiF;AAEjF,2EAAsE;AACtE,uCAA4E;AAC5E,uEAAiE;AACjE,iFAA4E;AAE5E,sDAAkD;AAClD,2FAAqF;AACrF,0EAAsE;AACtE,
|
|
1
|
+
{"version":3,"file":"messaging.module.js","sourceRoot":"","sources":["../src/messaging.module.ts"],"names":[],"mappings":"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"}
|