@merkaly/nest 0.2.1 → 0.2.3
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 +11 -10
- package/dist/http/request-logger.d.ts +1 -0
- package/dist/http/request-logger.d.ts.map +1 -1
- package/dist/http/request-logger.js +16 -5
- package/dist/http/request-logger.js.map +1 -1
- package/dist/logger/logger.service.d.ts.map +1 -1
- package/dist/logger/logger.service.js +2 -2
- package/dist/logger/logger.service.js.map +1 -1
- package/dist/logger/request-context.d.ts +7 -0
- package/dist/logger/request-context.d.ts.map +1 -1
- package/dist/logger/request-context.js +8 -0
- package/dist/logger/request-context.js.map +1 -1
- package/dist/rabbit/events.publisher.d.ts.map +1 -1
- package/dist/rabbit/events.publisher.js +2 -1
- package/dist/rabbit/events.publisher.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -39,7 +39,7 @@ strict-peer-dependencies=false
|
|
|
39
39
|
import {
|
|
40
40
|
env, loadEnv, // config
|
|
41
41
|
LoggerModule, LoggerService, // logger
|
|
42
|
-
requestLogger, requestOrigin, requestContext, bodyParsers, bodyParserReason, // uma linha por request
|
|
42
|
+
requestLogger, requestOrigin, requestContext, noteRequest, bodyParsers, bodyParserReason, // uma linha por request
|
|
43
43
|
AbstractExceptionFilter, ExceptionsFilter, rememberError, // filtros (motivo do erro para o log)
|
|
44
44
|
RabbitModule, EventsPublisher, EventsConsumer, EventRejectedException, // eventos
|
|
45
45
|
rabbitConsumerOptions, assertConsumerTopology, OnMerkalyEvent,
|
|
@@ -74,31 +74,32 @@ export class AppModule {}
|
|
|
74
74
|
|
|
75
75
|
### Logger e requests
|
|
76
76
|
|
|
77
|
-
|
|
77
|
+
LEVEL, ORIGIN e SCOPE têm largura fixa (`-` quando falta o valor, `…` quando passa da largura), então a descrição (`KIND:: MESSAGE`) começa sempre na mesma posição:
|
|
78
78
|
|
|
79
79
|
```
|
|
80
|
-
LEVEL ORIGIN SCOPE KIND
|
|
81
|
-
08:02:05 657 DEBUG api.merkaly.io - MongoService
|
|
82
|
-
08:02:08 410 LOG admin.merkaly.io org_6sflVH0jykwUzj8z
|
|
83
|
-
08:02:08 410 LOG admin.merkaly.io org_6sflVH0jykwUzj8z POST
|
|
84
|
-
08:02:08 423 WARN 203.0.113.7 - GET
|
|
85
|
-
08:02:08 439 ERROR admin.merkaly.io org_6sflVH0jykwUzj8z GET
|
|
80
|
+
LEVEL ORIGIN SCOPE KIND:: MESSAGE
|
|
81
|
+
08:02:05 657 DEBUG api.merkaly.io - MongoService:: connected
|
|
82
|
+
08:02:08 410 LOG admin.merkaly.io org_6sflVH0jykwUzj8z OrderSaleRepository:: order created
|
|
83
|
+
08:02:08 410 LOG admin.merkaly.io org_6sflVH0jykwUzj8z POST:: /admin/orders 201 15ms
|
|
84
|
+
08:02:08 423 WARN 203.0.113.7 - GET:: /wp-login.php 404 2ms "Cannot GET /wp-login.php"
|
|
85
|
+
08:02:08 439 ERROR admin.merkaly.io org_6sflVH0jykwUzj8z GET:: /admin/boom 500 0ms "boom"
|
|
86
86
|
Error: boom
|
|
87
87
|
at ...
|
|
88
88
|
```
|
|
89
89
|
|
|
90
90
|
- **ORIGIN** (24): quem fez o request, nas linhas de request e nos logs internos emitidos durante ele: `x-merkaly-host`, senão o host do `Origin`, `cf-connecting-ip`, o primeiro `x-forwarded-for` ou o socket (`requestOrigin`). Fora de um request, o `service`.
|
|
91
91
|
- **SCOPE** (22): contexto de negócio definido pelo app (`requestLogger({ scope })` ou `LoggerModule({ scope })`, ex.: id da organização). Nas linhas de request é resolvido ao terminar a resposta, então pega o que os guards definiram.
|
|
92
|
-
- **KIND
|
|
92
|
+
- **KIND::** abre a descrição, sem largura fixa (nunca é cortado): método HTTP nas linhas de request; nos logs internos, o `group` de quem loga. Com `requestLogger({ kind })` a linha de request usa esse valor (ex.: o evento do webhook) e o método passa para a descrição: `PAYMENT_RECEIVED:: POST /asaas 200 44ms`.
|
|
93
93
|
- **MESSAGE**: `/path STATUS Nms "motivo"` (motivo cortado em 200, sem query, body nem headers) ou o texto. Nível: `ERROR` em 5xx com o stack embaixo, `WARN` em 4xx, `LOG` no resto.
|
|
94
94
|
|
|
95
95
|
```ts
|
|
96
96
|
// main.ts
|
|
97
|
-
app.use(requestLogger(app)); // antes do Swagger; opcional { scope: (req) => 'stripe' }
|
|
97
|
+
app.use(requestLogger(app)); // antes do Swagger; opcional { scope: (req) => 'stripe', kind: (req) => req.body?.event }
|
|
98
98
|
bodyParsers(app, { raw: ['/webhook/stripe'] }); // json + urlencoded com motivo seguro ("Invalid JSON body")
|
|
99
99
|
SwaggerModule.setup('/', app, document);
|
|
100
100
|
```
|
|
101
101
|
|
|
102
|
+
- `noteRequest(texto, nível?)` soma um resultado ao fim da linha do request (`-> payment.received`, `"discarded"`) em vez de uma linha separada; o nível só sobe (`warn`/`error`). Fora de um request devolve `false`. O `EventsPublisher` usa isso: dentro de um request o `emit` vira `-> <tipo>` na linha do request, fora dele continua com linha própria.
|
|
102
103
|
- O ORIGIN do request fica num `AsyncLocalStorage` do pacote (`requestContext`). O `requestLogger` cria o contexto e o `LoggerModule` registra um middleware que volta a entrar nele depois dos body parsers (que podem perder o contexto assíncrono), igual ao `nestjs-cls`.
|
|
103
104
|
- `bodyParsers(app, { raw?, rawBody? })`: `raw` mantém o body como Buffer nesses paths; `rawBody: true` preenche `req.rawBody` (igual ao `NestFactory.create(..., { rawBody: true })`, que deixa de registrar os próprios parsers).
|
|
104
105
|
- SCOPE com CLS, sem o pacote depender de `nestjs-cls`:
|
|
@@ -6,6 +6,7 @@ export interface RequestLogLocals {
|
|
|
6
6
|
}
|
|
7
7
|
export interface RequestLoggerOptions {
|
|
8
8
|
scope?: (request: Request) => string | undefined;
|
|
9
|
+
kind?: (request: Request) => string | undefined;
|
|
9
10
|
}
|
|
10
11
|
export declare function requestLogger(app: INestApplicationContext, options?: RequestLoggerOptions): RequestHandler;
|
|
11
12
|
//# sourceMappingURL=request-logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-logger.d.ts","sourceRoot":"","sources":["../../src/http/request-logger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,KAAK,EAAgB,OAAO,EAAE,cAAc,EAAY,MAAM,SAAS,CAAC;AAE/E,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"request-logger.d.ts","sourceRoot":"","sources":["../../src/http/request-logger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,KAAK,EAAgB,OAAO,EAAE,cAAc,EAAY,MAAM,SAAS,CAAC;AAE/E,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAAC;IACjD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAAC;CACjD;AAaD,wBAAgB,aAAa,CAC3B,GAAG,EAAE,uBAAuB,EAC5B,OAAO,GAAE,oBAAyB,GACjC,cAAc,CAuChB"}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.requestLogger = requestLogger;
|
|
4
4
|
const logger_1 = require("../logger");
|
|
5
|
+
const LEVELS = ['log', 'warn', 'error'];
|
|
6
|
+
const higher = (a, b) => LEVELS.indexOf(a) >= LEVELS.indexOf(b) ? a : b;
|
|
5
7
|
const MAX_REASON = 200;
|
|
6
8
|
const capped = (reason) => reason.length > MAX_REASON ? `${reason.slice(0, MAX_REASON)}…` : reason;
|
|
7
9
|
function requestLogger(app, options = {}) {
|
|
@@ -15,12 +17,21 @@ function requestLogger(app, options = {}) {
|
|
|
15
17
|
const ms = Number(process.hrtime.bigint() - started) / 1e6;
|
|
16
18
|
const path = request.originalUrl.split('?')[0];
|
|
17
19
|
const { error, trace } = response.locals;
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
20
|
+
const kind = options.kind?.(request);
|
|
21
|
+
const target = kind ? `${request.method} ${path}` : path;
|
|
22
|
+
const notes = context.notes ?? [];
|
|
23
|
+
const line = [
|
|
24
|
+
`${target} ${response.statusCode} ${ms.toFixed(0)}ms`,
|
|
25
|
+
error ? JSON.stringify(capped(error)) : '',
|
|
26
|
+
...notes.map((note) => note.text),
|
|
27
|
+
]
|
|
28
|
+
.filter(Boolean)
|
|
29
|
+
.join(' ');
|
|
30
|
+
const status = response.statusCode >= 500 ? 'error' : response.statusCode >= 400 ? 'warn' : 'log';
|
|
31
|
+
const tier = notes.reduce((level, note) => higher(level, note.level), status);
|
|
21
32
|
logger_1.requestContext.run(context, () => logger.request(tier, {
|
|
22
|
-
method: request.method,
|
|
23
|
-
message,
|
|
33
|
+
method: kind || request.method,
|
|
34
|
+
message: line,
|
|
24
35
|
trace: tier === 'error' ? trace : undefined,
|
|
25
36
|
}));
|
|
26
37
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-logger.js","sourceRoot":"","sources":["../../src/http/request-logger.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"request-logger.js","sourceRoot":"","sources":["../../src/http/request-logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../src/logger/logger.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,QAAQ,EAAY,MAAM,gBAAgB,CAAC;AAExE,OAAO,EAAkB,mBAAmB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAsBpG,qBACa,aAAa;IACwB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAR,OAAO,CAAC,EAAE,mBAAmB,YAAA;IAEvF,GAAG,CAAC,OAAO,EAAE,cAAc;IAI3B,KAAK,CAAC,OAAO,EAAE,cAAc,GAAG;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;IAKnD,IAAI,CAAC,OAAO,EAAE,cAAc;IAI5B,KAAK,CAAC,OAAO,EAAE,cAAc;IAI7B,OAAO,CAAC,OAAO,EAAE,cAAc;IAK/B,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,WAAW;IAKtE,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,KAAK;
|
|
1
|
+
{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../src/logger/logger.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,QAAQ,EAAY,MAAM,gBAAgB,CAAC;AAExE,OAAO,EAAkB,mBAAmB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAsBpG,qBACa,aAAa;IACwB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAR,OAAO,CAAC,EAAE,mBAAmB,YAAA;IAEvF,GAAG,CAAC,OAAO,EAAE,cAAc;IAI3B,KAAK,CAAC,OAAO,EAAE,cAAc,GAAG;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;IAKnD,IAAI,CAAC,OAAO,EAAE,cAAc;IAI5B,KAAK,CAAC,OAAO,EAAE,cAAc;IAI7B,OAAO,CAAC,OAAO,EAAE,cAAc;IAK/B,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,WAAW;IAKtE,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,KAAK;IAoBb,OAAO,CAAC,WAAW;CAMpB"}
|
|
@@ -28,7 +28,7 @@ const levelColors = {
|
|
|
28
28
|
debug: chalk.magentaBright,
|
|
29
29
|
verbose: chalk.cyanBright,
|
|
30
30
|
};
|
|
31
|
-
const WIDTH = { level: 7, origin: 24, scope: 22
|
|
31
|
+
const WIDTH = { level: 7, origin: 24, scope: 22 };
|
|
32
32
|
const fit = (value, width) => {
|
|
33
33
|
const text = value || '-';
|
|
34
34
|
return text.length > width ? `${text.slice(0, width - 1)}…` : text.padEnd(width);
|
|
@@ -71,7 +71,7 @@ let LoggerService = class LoggerService {
|
|
|
71
71
|
const output = [];
|
|
72
72
|
if (timestamps)
|
|
73
73
|
output.push(this.currentTime());
|
|
74
|
-
output.push(color(fit(tier.toUpperCase(), WIDTH.level)), chalk.hex('#00FF77')(fit(origin, WIDTH.origin)), chalk.cyan(fit(scope, WIDTH.scope)), chalk.hex('#FFA500')(
|
|
74
|
+
output.push(color(fit(tier.toUpperCase(), WIDTH.level)), chalk.hex('#00FF77')(fit(origin, WIDTH.origin)), chalk.cyan(fit(scope, WIDTH.scope)), kind ? `${chalk.hex('#FFA500')(`${kind}::`)} ${message}` : message);
|
|
75
75
|
return console.log(output.join(' '));
|
|
76
76
|
}
|
|
77
77
|
currentTime() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.service.js","sourceRoot":"","sources":["../../src/logger/logger.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,2CAAwE;AACxE,kDAA0B;AAC1B,qDAAoG;AACpG,uDAAmD;AAEnD,MAAM,KAAK,GAAG,IAAI,eAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AAE/C,MAAM,WAAW,GAA2C;IAC1D,GAAG,EAAE,KAAK,CAAC,UAAU;IACrB,KAAK,EAAE,KAAK,CAAC,SAAS;IACtB,IAAI,EAAE,KAAK,CAAC,YAAY;IACxB,KAAK,EAAE,KAAK,CAAC,aAAa;IAC1B,OAAO,EAAE,KAAK,CAAC,UAAU;CAC1B,CAAC;AAEF,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"logger.service.js","sourceRoot":"","sources":["../../src/logger/logger.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from 'async_hooks';
|
|
2
2
|
import { NestMiddleware } from '@nestjs/common';
|
|
3
3
|
import type { NextFunction, Request, Response } from 'express';
|
|
4
|
+
export type RequestNoteLevel = 'log' | 'warn' | 'error';
|
|
5
|
+
export interface RequestNote {
|
|
6
|
+
text: string;
|
|
7
|
+
level: RequestNoteLevel;
|
|
8
|
+
}
|
|
4
9
|
export interface RequestContext {
|
|
5
10
|
origin: string;
|
|
6
11
|
scope?: () => string | undefined;
|
|
12
|
+
notes?: RequestNote[];
|
|
7
13
|
}
|
|
8
14
|
export declare const requestContext: AsyncLocalStorage<RequestContext>;
|
|
15
|
+
export declare function noteRequest(text: string, level?: RequestNoteLevel): boolean;
|
|
9
16
|
export declare function requestOrigin(request: Request): string;
|
|
10
17
|
export declare function contextOf(request: Request): RequestContext;
|
|
11
18
|
export declare class RequestContextMiddleware implements NestMiddleware {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-context.d.ts","sourceRoot":"","sources":["../../src/logger/request-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAc,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/D,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"request-context.d.ts","sourceRoot":"","sources":["../../src/logger/request-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAc,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/D,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAExD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,gBAAgB,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACjC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,eAAO,MAAM,cAAc,mCAA0C,CAAC;AAGtE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,gBAAwB,WAQxE;AASD,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,UAS7C;AAGD,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,CAI1D;AAGD,qBACa,wBAAyB,YAAW,cAAc;IAC7D,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY;CAGtD"}
|
|
@@ -7,11 +7,19 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
};
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.RequestContextMiddleware = exports.requestContext = void 0;
|
|
10
|
+
exports.noteRequest = noteRequest;
|
|
10
11
|
exports.requestOrigin = requestOrigin;
|
|
11
12
|
exports.contextOf = contextOf;
|
|
12
13
|
const async_hooks_1 = require("async_hooks");
|
|
13
14
|
const common_1 = require("@nestjs/common");
|
|
14
15
|
exports.requestContext = new async_hooks_1.AsyncLocalStorage();
|
|
16
|
+
function noteRequest(text, level = 'log') {
|
|
17
|
+
const context = exports.requestContext.getStore();
|
|
18
|
+
if (!context)
|
|
19
|
+
return false;
|
|
20
|
+
(context.notes ??= []).push({ level, text });
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
15
23
|
const CONTEXT = Symbol('merkaly.request.context');
|
|
16
24
|
const hostOf = (origin) => origin?.split('/').pop() || undefined;
|
|
17
25
|
function requestOrigin(request) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-context.js","sourceRoot":"","sources":["../../src/logger/request-context.ts"],"names":[],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"request-context.js","sourceRoot":"","sources":["../../src/logger/request-context.ts"],"names":[],"mappings":";;;;;;;;;AAoBA,kCAQC;AASD,sCASC;AAGD,8BAIC;AArDD,6CAAgD;AAChD,2CAA4D;AAgB/C,QAAA,cAAc,GAAG,IAAI,+BAAiB,EAAkB,CAAC;AAGtE,SAAgB,WAAW,CAAC,IAAY,EAAE,QAA0B,KAAK;IACvE,MAAM,OAAO,GAAG,sBAAc,CAAC,QAAQ,EAAE,CAAC;IAE1C,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAE3B,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,OAAO,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAIlD,MAAM,MAAM,GAAG,CAAC,MAAe,EAAE,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC;AAG1E,SAAgB,aAAa,CAAC,OAAgB;IAC5C,OAAO,CACL,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;QAClC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;QACvD,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;QACtD,SAAS,CACV,CAAC;AACJ,CAAC;AAGD,SAAgB,SAAS,CAAC,OAAgB;IACxC,MAAM,GAAG,GAAG,OAAyB,CAAC;IAEtC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC;AAIM,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IACnC,GAAG,CAAC,OAAgB,EAAE,CAAW,EAAE,IAAkB;QACnD,sBAAc,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;CACF,CAAA;AAJY,4DAAwB;mCAAxB,wBAAwB;IADpC,IAAA,mBAAU,GAAE;GACA,wBAAwB,CAIpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.publisher.d.ts","sourceRoot":"","sources":["../../src/rabbit/events.publisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,sBAAsB,EACtB,qBAAqB,EAGtB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAEjB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"events.publisher.d.ts","sourceRoot":"","sources":["../../src/rabbit/events.publisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,sBAAsB,EACtB,qBAAqB,EAGtB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAEjB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,aAAa,EAAe,MAAM,WAAW,CAAC;AACvD,OAAO,EACL,YAAY,EAKZ,YAAY,EACZ,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAE1B,eAAO,MAAM,aAAa,GAAI,OAAO,GAAG,KAAG,MAGkB,CAAC;AAI9D,qBACa,eAAgB,YAAW,sBAAsB,EAAE,qBAAqB;IAKzD,OAAO,CAAC,QAAQ,CAAC,OAAO;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALhD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,YAAY,CAAe;gBAGQ,OAAO,EAAE,mBAAmB,EAC7B,MAAM,EAAE,YAAY,GAAG,IAAI,EACvD,MAAM,CAAC,EAAE,aAAa;IAMpC,IAAW,MAAM,iBAEhB;IAED,OAAO,KAAK,QAAQ,GAEnB;IAEM,sBAAsB;IAkBtB,qBAAqB;IAKrB,IAAI,CAAC,CAAC,SAAS,gBAAgB,EACpC,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EACrB,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;CAuB5B"}
|
|
@@ -69,7 +69,8 @@ let EventsPublisher = class EventsPublisher {
|
|
|
69
69
|
defaultValue: undefined,
|
|
70
70
|
})
|
|
71
71
|
.then(() => {
|
|
72
|
-
|
|
72
|
+
if (!(0, logger_1.noteRequest)(`-> ${type}`))
|
|
73
|
+
this.logger.log({ group: GROUP, message: line });
|
|
73
74
|
return event;
|
|
74
75
|
})
|
|
75
76
|
.catch((error) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.publisher.js","sourceRoot":"","sources":["../../src/rabbit/events.publisher.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAOwB;AACxB,+BAA8C;AAC9C,sCAMmB;AACnB,
|
|
1
|
+
{"version":3,"file":"events.publisher.js","sourceRoot":"","sources":["../../src/rabbit/events.publisher.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED