@cargolift-cdi/util-rabbitmq 0.1.30 → 0.1.33
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 +0 -82
- package/dist/index.d.ts +0 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -7
- package/dist/index.js.map +1 -1
- package/package.json +1 -2
- package/dist/messaging/auto-publish.interceptor.d.ts +0 -12
- package/dist/messaging/auto-publish.interceptor.d.ts.map +0 -1
- package/dist/messaging/auto-publish.interceptor.js +0 -66
- package/dist/messaging/auto-publish.interceptor.js.map +0 -1
- package/dist/messaging/envelope-builder.service.d.ts +0 -14
- package/dist/messaging/envelope-builder.service.d.ts.map +0 -1
- package/dist/messaging/envelope-builder.service.js +0 -38
- package/dist/messaging/envelope-builder.service.js.map +0 -1
- package/dist/messaging/message-envelope.d.ts +0 -17
- package/dist/messaging/message-envelope.d.ts.map +0 -1
- package/dist/messaging/message-envelope.js +0 -2
- package/dist/messaging/message-envelope.js.map +0 -1
- package/dist/messaging/message-publisher.service.d.ts +0 -20
- package/dist/messaging/message-publisher.service.d.ts.map +0 -1
- package/dist/messaging/message-publisher.service.js +0 -42
- package/dist/messaging/message-publisher.service.js.map +0 -1
- package/dist/messaging/messaging.module.d.ts +0 -3
- package/dist/messaging/messaging.module.d.ts.map +0 -1
- package/dist/messaging/messaging.module.js +0 -33
- package/dist/messaging/messaging.module.js.map +0 -1
- package/dist/messaging/publish.decorator.d.ts +0 -9
- package/dist/messaging/publish.decorator.d.ts.map +0 -1
- package/dist/messaging/publish.decorator.js +0 -4
- package/dist/messaging/publish.decorator.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,84 +1,2 @@
|
|
|
1
1
|
# @cargolift-cdi/util-rabbitmq
|
|
2
2
|
|
|
3
|
-
Utilitários para publicação RabbitMQ com suporte a:
|
|
4
|
-
|
|
5
|
-
1. Publicação direta (emit) e confirmada (publish) com headers de rastreabilidade
|
|
6
|
-
2. Envelope padronizado de mensagens (meta + data)
|
|
7
|
-
3. Decorator `@PublishMessage` + Interceptor automático para reduzir repetição em controllers NestJS
|
|
8
|
-
|
|
9
|
-
## Envelope
|
|
10
|
-
Estrutura enviada:
|
|
11
|
-
```jsonc
|
|
12
|
-
{
|
|
13
|
-
"meta": {
|
|
14
|
-
"correlationId": "uuid",
|
|
15
|
-
"eventType": "dominio.recurso.acao",
|
|
16
|
-
"producer": "nome-do-servico",
|
|
17
|
-
"timestamp": "2025-09-26T12:34:56.789Z",
|
|
18
|
-
"http": { "method": "POST", "path": "/demo" },
|
|
19
|
-
"trace": []
|
|
20
|
-
},
|
|
21
|
-
"data": { /* payload original */ }
|
|
22
|
-
}
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## Uso rápido
|
|
26
|
-
|
|
27
|
-
1. Importe o `MessagingModule` no módulo da API:
|
|
28
|
-
```ts
|
|
29
|
-
import { Module } from '@nestjs/common';
|
|
30
|
-
import { MessagingModule } from '@cargolift-cdi/util-rabbitmq';
|
|
31
|
-
import { APP_INTERCEPTOR } from '@nestjs/core';
|
|
32
|
-
import { AutoPublishInterceptor } from '@cargolift-cdi/util-rabbitmq';
|
|
33
|
-
|
|
34
|
-
@Module({
|
|
35
|
-
imports: [MessagingModule],
|
|
36
|
-
providers: [
|
|
37
|
-
{ provide: APP_INTERCEPTOR, useClass: AutoPublishInterceptor }
|
|
38
|
-
]
|
|
39
|
-
})
|
|
40
|
-
export class AppModule {}
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
2. Em um controller:
|
|
44
|
-
```ts
|
|
45
|
-
import { Controller, Post, Body } from '@nestjs/common';
|
|
46
|
-
import { PublishMessage } from '@cargolift-cdi/util-rabbitmq';
|
|
47
|
-
|
|
48
|
-
@Controller('demo')
|
|
49
|
-
export class DemoController {
|
|
50
|
-
@Post()
|
|
51
|
-
@PublishMessage({ eventType: 'integration.erp.demo', routingKey: 'integration.erp.demo' })
|
|
52
|
-
create(@Body() body: any) {
|
|
53
|
-
return body; // Interceptor publicará e retornará { message, correlationId, eventType }
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
## Headers
|
|
59
|
-
|
|
60
|
-
Os headers adicionados automaticamente:
|
|
61
|
-
```
|
|
62
|
-
x-correlation-id
|
|
63
|
-
x-trace
|
|
64
|
-
x-event-type
|
|
65
|
-
pattern (routingKey ou pattern)
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
## Variáveis de ambiente relevantes
|
|
69
|
-
```
|
|
70
|
-
RABBITMQ_URL=amqp://user:pass@host:5672/vhost
|
|
71
|
-
RABBITMQ_EXCHANGE=integration.inbound (opcional se usar decorator sem especificar exchange)
|
|
72
|
-
RABBITMQ_EXCHANGE_TYPE=topic (default se não passado no decorator)
|
|
73
|
-
SERVICE_NAME=middleware-api (usado como producer)
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
## Extensões futuras sugeridas
|
|
77
|
-
- schemaVersion no envelope
|
|
78
|
-
- Retry com backoff exponencial
|
|
79
|
-
- Dead-letter metadata
|
|
80
|
-
- Enriquecimento com identidade do usuário
|
|
81
|
-
|
|
82
|
-
## Licença
|
|
83
|
-
MIT
|
|
84
|
-
|
package/dist/index.d.ts
CHANGED
|
@@ -4,10 +4,4 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export * from './rabbitmq-publisher.service.js';
|
|
6
6
|
export * from './rabbitmq-publisher-dlq.service.js';
|
|
7
|
-
export * from './messaging/message-envelope.js';
|
|
8
|
-
export * from './messaging/publish.decorator.js';
|
|
9
|
-
export * from './messaging/envelope-builder.service.js';
|
|
10
|
-
export * from './messaging/message-publisher.service.js';
|
|
11
|
-
export * from './messaging/auto-publish.interceptor.js';
|
|
12
|
-
export * from './messaging/messaging.module.js';
|
|
13
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,11 +4,4 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export * from './rabbitmq-publisher.service.js';
|
|
6
6
|
export * from './rabbitmq-publisher-dlq.service.js';
|
|
7
|
-
// messaging
|
|
8
|
-
export * from './messaging/message-envelope.js';
|
|
9
|
-
export * from './messaging/publish.decorator.js';
|
|
10
|
-
export * from './messaging/envelope-builder.service.js';
|
|
11
|
-
export * from './messaging/message-publisher.service.js';
|
|
12
|
-
export * from './messaging/auto-publish.interceptor.js';
|
|
13
|
-
export * from './messaging/messaging.module.js';
|
|
14
7
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cargolift-cdi/util-rabbitmq",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.33",
|
|
4
4
|
"description": "Funções utilitárias para trabalhar com RabbitMQ",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -41,7 +41,6 @@
|
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@types/amqplib": "^0.10.7",
|
|
44
|
-
"@types/express": "^5.0.3",
|
|
45
44
|
"@types/node": "^24.3.1",
|
|
46
45
|
"typescript": "^5.6.2"
|
|
47
46
|
},
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { CallHandler, ExecutionContext, NestInterceptor } from '@nestjs/common';
|
|
2
|
-
import { Reflector } from '@nestjs/core';
|
|
3
|
-
import { Observable } from 'rxjs';
|
|
4
|
-
import { MessagePublisherService } from './message-publisher.service.js';
|
|
5
|
-
export declare class AutoPublishInterceptor implements NestInterceptor {
|
|
6
|
-
private readonly reflector;
|
|
7
|
-
private readonly publisher;
|
|
8
|
-
private readonly logger;
|
|
9
|
-
constructor(reflector: Reflector, publisher: MessagePublisherService);
|
|
10
|
-
intercept(context: ExecutionContext, next: CallHandler): Observable<any>;
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=auto-publish.interceptor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auto-publish.interceptor.d.ts","sourceRoot":"","sources":["../../src/messaging/auto-publish.interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAc,eAAe,EAAU,MAAM,gBAAgB,CAAC;AACpG,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAQ,MAAM,MAAM,CAAC;AAGxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEzE,qBACa,sBAAuB,YAAW,eAAe;IAG1D,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAH5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;gBAE5C,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,uBAAuB;IAGrD,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC;CAyCzE"}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
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;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
import { Injectable, Logger } from '@nestjs/common';
|
|
11
|
-
import { Reflector } from '@nestjs/core';
|
|
12
|
-
import { from } from 'rxjs';
|
|
13
|
-
import { mergeMap, map } from 'rxjs/operators';
|
|
14
|
-
import { PUBLISH_METADATA_KEY } from './publish.decorator.js';
|
|
15
|
-
import { MessagePublisherService } from './message-publisher.service.js';
|
|
16
|
-
let AutoPublishInterceptor = class AutoPublishInterceptor {
|
|
17
|
-
constructor(reflector, publisher) {
|
|
18
|
-
this.reflector = reflector;
|
|
19
|
-
this.publisher = publisher;
|
|
20
|
-
this.logger = new Logger('AutoPublishInterceptor');
|
|
21
|
-
}
|
|
22
|
-
intercept(context, next) {
|
|
23
|
-
if (!this.reflector) {
|
|
24
|
-
this.logger.error('Reflector não injetado (undefined)');
|
|
25
|
-
}
|
|
26
|
-
if (!this.publisher) {
|
|
27
|
-
this.logger.error('MessagePublisherService não injetado (undefined)');
|
|
28
|
-
}
|
|
29
|
-
let publishOptions;
|
|
30
|
-
try {
|
|
31
|
-
publishOptions = this.reflector?.get(PUBLISH_METADATA_KEY, context.getHandler());
|
|
32
|
-
}
|
|
33
|
-
catch (e) {
|
|
34
|
-
this.logger.error('Falha ao acessar reflector.get', e);
|
|
35
|
-
publishOptions = undefined;
|
|
36
|
-
}
|
|
37
|
-
if (!publishOptions) {
|
|
38
|
-
return next.handle();
|
|
39
|
-
}
|
|
40
|
-
const http = context.switchToHttp();
|
|
41
|
-
const req = http.getRequest();
|
|
42
|
-
return next.handle().pipe(mergeMap((controllerResult) => {
|
|
43
|
-
const payload = controllerResult?.payload !== undefined ? controllerResult.payload : controllerResult;
|
|
44
|
-
const exchange = publishOptions.exchange || process.env.RABBITMQ_EXCHANGE || 'integration.inbound';
|
|
45
|
-
return from(this.publisher.publish({
|
|
46
|
-
req,
|
|
47
|
-
eventType: publishOptions.eventType,
|
|
48
|
-
exchange,
|
|
49
|
-
routingKey: publishOptions.routingKey,
|
|
50
|
-
payload,
|
|
51
|
-
exchangeType: publishOptions.exchangeType,
|
|
52
|
-
})).pipe(map((envelope) => ({
|
|
53
|
-
message: 'Mensagem publicada com sucesso',
|
|
54
|
-
correlationId: envelope.meta.correlationId,
|
|
55
|
-
eventType: envelope.meta.eventType,
|
|
56
|
-
})));
|
|
57
|
-
}));
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
AutoPublishInterceptor = __decorate([
|
|
61
|
-
Injectable(),
|
|
62
|
-
__metadata("design:paramtypes", [Reflector,
|
|
63
|
-
MessagePublisherService])
|
|
64
|
-
], AutoPublishInterceptor);
|
|
65
|
-
export { AutoPublishInterceptor };
|
|
66
|
-
//# sourceMappingURL=auto-publish.interceptor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auto-publish.interceptor.js","sourceRoot":"","sources":["../../src/messaging/auto-publish.interceptor.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAiC,UAAU,EAAmB,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACpG,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAc,IAAI,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAkB,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAGlE,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAEjC,YACmB,SAAoB,EACpB,SAAkC;QADlC,cAAS,GAAT,SAAS,CAAW;QACpB,cAAS,GAAT,SAAS,CAAyB;QAHpC,WAAM,GAAG,IAAI,MAAM,CAAC,wBAAwB,CAAC,CAAC;IAI5D,CAAC;IAEJ,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACpD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,cAA0C,CAAC;QAC/C,IAAI,CAAC;YACH,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,CAA6B,oBAAoB,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAC/G,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,CAAQ,CAAC,CAAC;YAC9D,cAAc,GAAG,SAAS,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAE9B,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CACvB,QAAQ,CAAC,CAAC,gBAAgB,EAAE,EAAE;YAC5B,MAAM,OAAO,GAAG,gBAAgB,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC;YACtG,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,qBAAqB,CAAC;YACnG,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;gBACjC,GAAG;gBACH,SAAS,EAAE,cAAc,CAAC,SAAS;gBACnC,QAAQ;gBACR,UAAU,EAAE,cAAc,CAAC,UAAU;gBACrC,OAAO;gBACP,YAAY,EAAE,cAAc,CAAC,YAAY;aAC1C,CAAC,CAAC,CAAC,IAAI,CACN,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBACjB,OAAO,EAAE,gCAAgC;gBACzC,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa;gBAC1C,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS;aACnC,CAAC,CAAC,CACJ,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;CACF,CAAA;AAhDY,sBAAsB;IADlC,UAAU,EAAE;qCAImB,SAAS;QACT,uBAAuB;GAJ1C,sBAAsB,CAgDlC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { Request } from 'express';
|
|
2
|
-
import { MessageEnvelope } from './message-envelope.js';
|
|
3
|
-
import { LoggerContextService } from '@cargolift-cdi/common';
|
|
4
|
-
export declare class EnvelopeBuilderService {
|
|
5
|
-
private readonly loggerCtx;
|
|
6
|
-
constructor(loggerCtx: LoggerContextService);
|
|
7
|
-
build<T>(params: {
|
|
8
|
-
req?: Request;
|
|
9
|
-
eventType: string;
|
|
10
|
-
payload: T;
|
|
11
|
-
producer?: string;
|
|
12
|
-
}): MessageEnvelope<T>;
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=envelope-builder.service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"envelope-builder.service.d.ts","sourceRoot":"","sources":["../../src/messaging/envelope-builder.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,qBACa,sBAAsB;IACrB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,oBAAoB;IAE5D,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,eAAe,CAAC,CAAC,CAAC;CAiB1G"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
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;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
import { Injectable } from '@nestjs/common';
|
|
11
|
-
import { LoggerContextService } from '@cargolift-cdi/common';
|
|
12
|
-
let EnvelopeBuilderService = class EnvelopeBuilderService {
|
|
13
|
-
constructor(loggerCtx) {
|
|
14
|
-
this.loggerCtx = loggerCtx;
|
|
15
|
-
}
|
|
16
|
-
build(params) {
|
|
17
|
-
const { req, eventType, payload } = params;
|
|
18
|
-
const producer = params.producer || process.env.SERVICE_NAME || process.env.npm_package_name || 'unknown-service';
|
|
19
|
-
const ctx = this.loggerCtx.getContext();
|
|
20
|
-
return {
|
|
21
|
-
meta: {
|
|
22
|
-
correlationId: ctx.correlation_id || crypto.randomUUID(),
|
|
23
|
-
trace: ctx.trace,
|
|
24
|
-
eventType,
|
|
25
|
-
producer,
|
|
26
|
-
timestamp: new Date().toISOString(),
|
|
27
|
-
http: req ? { method: req.method, path: (req.route?.path || req.path) } : undefined,
|
|
28
|
-
},
|
|
29
|
-
data: payload,
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
EnvelopeBuilderService = __decorate([
|
|
34
|
-
Injectable(),
|
|
35
|
-
__metadata("design:paramtypes", [LoggerContextService])
|
|
36
|
-
], EnvelopeBuilderService);
|
|
37
|
-
export { EnvelopeBuilderService };
|
|
38
|
-
//# sourceMappingURL=envelope-builder.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"envelope-builder.service.js","sourceRoot":"","sources":["../../src/messaging/envelope-builder.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAGtD,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACjC,YAA6B,SAA+B;QAA/B,cAAS,GAAT,SAAS,CAAsB;IAAG,CAAC;IAEhE,KAAK,CAAI,MAA2E;QAClF,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,iBAAiB,CAAC;QAClH,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QAExC,OAAO;YACL,IAAI,EAAE;gBACJ,aAAa,EAAG,GAAG,CAAC,cAAyB,IAAI,MAAM,CAAC,UAAU,EAAE;gBACpE,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,SAAS;gBACT,QAAQ;gBACR,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;aACpF;YACD,IAAI,EAAE,OAAO;SACd,CAAC;IACJ,CAAC;CACF,CAAA;AApBY,sBAAsB;IADlC,UAAU,EAAE;qCAE6B,oBAAoB;GADjD,sBAAsB,CAoBlC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export interface MessageMeta {
|
|
2
|
-
correlationId: string;
|
|
3
|
-
eventType: string;
|
|
4
|
-
producer: string;
|
|
5
|
-
timestamp: string;
|
|
6
|
-
http?: {
|
|
7
|
-
method: string;
|
|
8
|
-
path: string;
|
|
9
|
-
};
|
|
10
|
-
trace?: any;
|
|
11
|
-
[key: string]: any;
|
|
12
|
-
}
|
|
13
|
-
export interface MessageEnvelope<T = any> {
|
|
14
|
-
meta: MessageMeta;
|
|
15
|
-
data: T;
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=message-envelope.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"message-envelope.d.ts","sourceRoot":"","sources":["../../src/messaging/message-envelope.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,GAAG;IACtC,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,CAAC,CAAC;CACT"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"message-envelope.js","sourceRoot":"","sources":["../../src/messaging/message-envelope.ts"],"names":[],"mappings":""}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { Request } from 'express';
|
|
2
|
-
import { EnvelopeBuilderService } from './envelope-builder.service.js';
|
|
3
|
-
import { RabbitMQPublisherService } from '../rabbitmq-publisher.service.js';
|
|
4
|
-
import { MessageEnvelope } from './message-envelope.js';
|
|
5
|
-
export interface PublishMessageParams<T = any> {
|
|
6
|
-
req?: Request;
|
|
7
|
-
eventType: string;
|
|
8
|
-
exchange: string;
|
|
9
|
-
routingKey: string;
|
|
10
|
-
payload: T;
|
|
11
|
-
exchangeType?: 'topic' | 'direct' | 'fanout' | 'headers';
|
|
12
|
-
headers?: Record<string, any>;
|
|
13
|
-
}
|
|
14
|
-
export declare class MessagePublisherService {
|
|
15
|
-
private readonly envelopeBuilder;
|
|
16
|
-
private readonly publisher;
|
|
17
|
-
constructor(envelopeBuilder: EnvelopeBuilderService, publisher: RabbitMQPublisherService);
|
|
18
|
-
publish<T>(params: PublishMessageParams<T>): Promise<MessageEnvelope<T>>;
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=message-publisher.service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"message-publisher.service.d.ts","sourceRoot":"","sources":["../../src/messaging/message-publisher.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,WAAW,oBAAoB,CAAC,CAAC,GAAC,GAAG;IACzC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,CAAC,CAAC;IACX,YAAY,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,qBACa,uBAAuB;IAEhC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS;gBADT,eAAe,EAAE,sBAAsB,EACvC,SAAS,EAAE,wBAAwB;IAGhD,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;CAwB/E"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
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;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
import { Injectable } from '@nestjs/common';
|
|
11
|
-
import { EnvelopeBuilderService } from './envelope-builder.service.js';
|
|
12
|
-
import { RabbitMQPublisherService } from '../rabbitmq-publisher.service.js';
|
|
13
|
-
let MessagePublisherService = class MessagePublisherService {
|
|
14
|
-
constructor(envelopeBuilder, publisher) {
|
|
15
|
-
this.envelopeBuilder = envelopeBuilder;
|
|
16
|
-
this.publisher = publisher;
|
|
17
|
-
}
|
|
18
|
-
async publish(params) {
|
|
19
|
-
const envelope = this.envelopeBuilder.build({
|
|
20
|
-
req: params.req,
|
|
21
|
-
eventType: params.eventType,
|
|
22
|
-
payload: params.payload,
|
|
23
|
-
});
|
|
24
|
-
await this.publisher.publish(params.exchange, params.routingKey, envelope, {
|
|
25
|
-
exchangeType: params.exchangeType,
|
|
26
|
-
headers: {
|
|
27
|
-
'x-correlation-id': envelope.meta.correlationId,
|
|
28
|
-
'x-trace': JSON.stringify(envelope.meta.trace || []),
|
|
29
|
-
'x-event-type': envelope.meta.eventType,
|
|
30
|
-
...(params.headers || {}),
|
|
31
|
-
},
|
|
32
|
-
});
|
|
33
|
-
return envelope;
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
MessagePublisherService = __decorate([
|
|
37
|
-
Injectable(),
|
|
38
|
-
__metadata("design:paramtypes", [EnvelopeBuilderService,
|
|
39
|
-
RabbitMQPublisherService])
|
|
40
|
-
], MessagePublisherService);
|
|
41
|
-
export { MessagePublisherService };
|
|
42
|
-
//# sourceMappingURL=message-publisher.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"message-publisher.service.js","sourceRoot":"","sources":["../../src/messaging/message-publisher.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAcrE,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAClC,YACmB,eAAuC,EACvC,SAAmC;QADnC,oBAAe,GAAf,eAAe,CAAwB;QACvC,cAAS,GAAT,SAAS,CAA0B;IACnD,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAI,MAA+B;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YAC1C,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAC1B,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,UAAU,EACjB,QAAQ,EACR;YACE,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,OAAO,EAAE;gBACP,kBAAkB,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa;gBAC/C,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACpD,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS;gBACvC,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;aAC1B;SACF,CACF,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAA;AA9BY,uBAAuB;IADnC,UAAU,EAAE;qCAGyB,sBAAsB;QAC5B,wBAAwB;GAH3C,uBAAuB,CA8BnC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"messaging.module.d.ts","sourceRoot":"","sources":["../../src/messaging/messaging.module.ts"],"names":[],"mappings":"AAOA,qBAea,eAAe;CAAI"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
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;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
import { Module } from '@nestjs/common';
|
|
8
|
-
import { EnvelopeBuilderService } from './envelope-builder.service.js';
|
|
9
|
-
import { MessagePublisherService } from './message-publisher.service.js';
|
|
10
|
-
import { AutoPublishInterceptor } from './auto-publish.interceptor.js';
|
|
11
|
-
import { RabbitMQPublisherService } from '../rabbitmq-publisher.service.js';
|
|
12
|
-
import { LoggerContextService } from '@cargolift-cdi/common';
|
|
13
|
-
let MessagingModule = class MessagingModule {
|
|
14
|
-
};
|
|
15
|
-
MessagingModule = __decorate([
|
|
16
|
-
Module({
|
|
17
|
-
providers: [
|
|
18
|
-
LoggerContextService,
|
|
19
|
-
RabbitMQPublisherService,
|
|
20
|
-
EnvelopeBuilderService,
|
|
21
|
-
MessagePublisherService,
|
|
22
|
-
AutoPublishInterceptor,
|
|
23
|
-
],
|
|
24
|
-
exports: [
|
|
25
|
-
EnvelopeBuilderService,
|
|
26
|
-
MessagePublisherService,
|
|
27
|
-
AutoPublishInterceptor,
|
|
28
|
-
RabbitMQPublisherService,
|
|
29
|
-
],
|
|
30
|
-
})
|
|
31
|
-
], MessagingModule);
|
|
32
|
-
export { MessagingModule };
|
|
33
|
-
//# sourceMappingURL=messaging.module.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"messaging.module.js","sourceRoot":"","sources":["../../src/messaging/messaging.module.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAiBtD,IAAM,eAAe,GAArB,MAAM,eAAe;CAAI,CAAA;AAAnB,eAAe;IAf3B,MAAM,CAAC;QACJ,SAAS,EAAE;YACP,oBAAoB;YACpB,wBAAwB;YACxB,sBAAsB;YACtB,uBAAuB;YACvB,sBAAsB;SACzB;QACD,OAAO,EAAE;YACL,sBAAsB;YACtB,uBAAuB;YACvB,sBAAsB;YACtB,wBAAwB;SAC3B;KACJ,CAAC;GACW,eAAe,CAAI"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export interface PublishOptions {
|
|
2
|
-
eventType: string;
|
|
3
|
-
routingKey: string;
|
|
4
|
-
exchange?: string;
|
|
5
|
-
exchangeType?: 'topic' | 'direct' | 'fanout' | 'headers';
|
|
6
|
-
}
|
|
7
|
-
export declare const PUBLISH_METADATA_KEY = "publish:options";
|
|
8
|
-
export declare const PublishMessage: (options: PublishOptions) => MethodDecorator;
|
|
9
|
-
//# sourceMappingURL=publish.decorator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"publish.decorator.d.ts","sourceRoot":"","sources":["../../src/messaging/publish.decorator.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;CAC1D;AAED,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AACtD,eAAO,MAAM,cAAc,GAAI,SAAS,cAAc,KAAG,eAA6D,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"publish.decorator.js","sourceRoot":"","sources":["../../src/messaging/publish.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAS7C,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AACtD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAuB,EAAmB,EAAE,CAAC,WAAW,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC"}
|