@tc-libs/request 5.17.0 → 5.18.1

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/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@tc-libs/request",
3
- "version": "5.17.0",
3
+ "version": "5.18.1",
4
4
  "dependencies": {
5
- "@tc-libs/constant": "5.17.0",
6
- "@tc-libs/errors": "5.17.0",
7
- "@tc-libs/helper": "5.17.0",
8
- "@tc-libs/pagination": "5.17.0",
9
- "@tc-libs/service": "5.17.0",
5
+ "@tc-libs/constant": "5.18.1",
6
+ "@tc-libs/errors": "5.18.1",
7
+ "@tc-libs/helper": "5.18.1",
8
+ "@tc-libs/logger": "5.18.1",
9
+ "@tc-libs/pagination": "5.18.1",
10
+ "@tc-libs/service": "5.18.1",
10
11
  "body-parser": "^2.4.0",
11
12
  "cors": "2.8.5",
12
13
  "express": "^5.2.1",
@@ -0,0 +1,7 @@
1
+ import { NestMiddleware } from '@nestjs/common';
2
+ import { NextFunction, Response } from 'express';
3
+ import { IRequestApp } from '../../interfaces';
4
+ export declare function requestLogFields(req: IRequestApp): Record<string, unknown>;
5
+ export declare class RequestLogContextMiddleware implements NestMiddleware {
6
+ use(req: IRequestApp, res: Response, next: NextFunction): Promise<void>;
7
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RequestLogContextMiddleware = void 0;
4
+ exports.requestLogFields = requestLogFields;
5
+ const tslib_1 = require("tslib");
6
+ const common_1 = require("@nestjs/common");
7
+ const logger_1 = require("@tc-libs/logger");
8
+ // TC-23: campi della richiesta letti al momento del log. La rotta esiste dopo il router e l'utente dopo
9
+ // l'autenticazione; il percorso concreto c'è solo per le richieste senza rotta (404), perché i parametri di una rotta
10
+ // possono contenere email o codici: la riga del log HTTP lo riporta con i parametri mascherati (BRG-459)
11
+ function requestLogFields(req) {
12
+ const route = req.route?.path
13
+ ? `${req.baseUrl ?? ''}${req.route.path}`
14
+ : undefined;
15
+ const user = req.user;
16
+ return {
17
+ http: { method: req.method, ...(route ? { route } : { path: req.path }) },
18
+ ...(user
19
+ ? {
20
+ user: {
21
+ id: user['_id'] !== undefined ? String(user['_id']) : undefined,
22
+ role: user['role'],
23
+ },
24
+ }
25
+ : {}),
26
+ };
27
+ }
28
+ // Dopo i body parser: proseguono da un evento dello stream della richiesta, fuori dal contesto aperto prima di loro
29
+ let RequestLogContextMiddleware = class RequestLogContextMiddleware {
30
+ async use(req, res, next) {
31
+ logger_1.LogContext.run({ reqId: req.__id, fields: () => requestLogFields(req) }, () => next());
32
+ }
33
+ };
34
+ exports.RequestLogContextMiddleware = RequestLogContextMiddleware;
35
+ exports.RequestLogContextMiddleware = RequestLogContextMiddleware = tslib_1.__decorate([
36
+ (0, common_1.Injectable)()
37
+ ], RequestLogContextMiddleware);
38
+ //# sourceMappingURL=request.log-context.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.log-context.middleware.js","sourceRoot":"","sources":["../../../../../../packages/request/src/middleware/log-context/request.log-context.middleware.ts"],"names":[],"mappings":";;;AAQA,4CAgBC;;AAxBD,2CAA4D;AAE5D,4CAA6C;AAG7C,wGAAwG;AACxG,sHAAsH;AACtH,yGAAyG;AACzG,SAAgB,gBAAgB,CAAC,GAAgB;IAC/C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI;QAC3B,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE;QACzC,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,OAAO;QACL,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE;QACzE,GAAG,CAAC,IAAI;YACN,CAAC,CAAC;gBACE,IAAI,EAAE;oBACJ,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;oBAC/D,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;iBACnB;aACF;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,oHAAoH;AAE7G,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IACtC,KAAK,CAAC,GAAG,CAAC,GAAgB,EAAE,GAAa,EAAE,IAAkB;QAC3D,mBAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAC5E,IAAI,EAAE,CACP,CAAC;IACJ,CAAC;CACF,CAAA;AANY,kEAA2B;sCAA3B,2BAA2B;IADvC,IAAA,mBAAU,GAAE;GACA,2BAA2B,CAMvC"}
@@ -25,6 +25,7 @@ const request_body_parser_middleware_1 = require("./middleware/body-parser/reque
25
25
  const request_cors_middleware_1 = require("./middleware/cors/request.cors.middleware");
26
26
  const request_helmet_middleware_1 = require("./middleware/helmet/request.helmet.middleware");
27
27
  const request_id_middleware_1 = require("./middleware/id/request.id.middleware");
28
+ const request_log_context_middleware_1 = require("./middleware/log-context/request.log-context.middleware");
28
29
  const request_timestamp_middleware_1 = require("./middleware/timestamp/request.timestamp.middleware");
29
30
  const request_timezone_middleware_1 = require("./middleware/timezone/request.timezone.middleware");
30
31
  const request_user_agent_middleware_1 = require("./middleware/user-agent/request.user-agent.middleware");
@@ -155,7 +156,9 @@ let RequestModule = RequestModule_1 = class RequestModule {
155
156
  // BRG-142: helmet e CORS prima dei parser, così anche i loro errori (413, 400) escono con gli header di
156
157
  // sicurezza e CORS. Valgono solo con NestFactory.create(…, { bodyParser: false }): altrimenti Nest registra i
157
158
  // suoi parser prima di questi middleware
158
- request_helmet_middleware_1.RequestHelmetMiddleware, request_id_middleware_1.RequestIdMiddleware, request_cors_middleware_1.RequestCorsMiddleware, request_body_parser_middleware_1.RequestJsonBodyParserMiddleware, request_body_parser_middleware_1.RequestTextBodyParserMiddleware, request_body_parser_middleware_1.RequestRawBodyParserMiddleware, request_body_parser_middleware_1.RequestUrlencodedBodyParserMiddleware, request_version_middleware_1.RequestVersionMiddleware, request_user_agent_middleware_1.RequestUserAgentMiddleware, request_timestamp_middleware_1.RequestTimestampMiddleware, request_timezone_middleware_1.RequestTimezoneMiddleware)
159
+ request_helmet_middleware_1.RequestHelmetMiddleware, request_id_middleware_1.RequestIdMiddleware, request_cors_middleware_1.RequestCorsMiddleware, request_body_parser_middleware_1.RequestJsonBodyParserMiddleware, request_body_parser_middleware_1.RequestTextBodyParserMiddleware, request_body_parser_middleware_1.RequestRawBodyParserMiddleware, request_body_parser_middleware_1.RequestUrlencodedBodyParserMiddleware, request_version_middleware_1.RequestVersionMiddleware, request_user_agent_middleware_1.RequestUserAgentMiddleware, request_timestamp_middleware_1.RequestTimestampMiddleware, request_timezone_middleware_1.RequestTimezoneMiddleware,
160
+ // TC-23: ultimo, dopo i body parser
161
+ request_log_context_middleware_1.RequestLogContextMiddleware)
159
162
  .exclude({ path: 'api/sse', method: common_1.RequestMethod.GET })
160
163
  .forRoutes('*');
161
164
  }
@@ -1 +1 @@
1
- {"version":3,"file":"request.module.js","sourceRoot":"","sources":["../../../../packages/request/src/request.module.ts"],"names":[],"mappings":";;;;;AAAA,4CAAwD;AACxD,2CAYwB;AACxB,uCAAoE;AACpE,iDAAoE;AACpE,iDAA2D;AAC3D,+CAIuB;AACvB,+GAAiG;AACjG,+GAAiG;AACjG,2GAA6F;AAC7F,qGAAuF;AACvF,uHAAwG;AACxG,2GAA6F;AAC7F,uHAAwG;AACxG,2GAA6F;AAC7F,iGAAsF;AACtF,iGAAoF;AACpF,mFAAuE;AACvE,qEAGkC;AAClC,4GAKiE;AACjE,uFAAkF;AAClF,6FAAwF;AACxF,iFAA4E;AAC5E,sGAAiG;AACjG,mGAA8F;AAC9F,yGAAmG;AACnG,gGAA2F;AAE3F,MAAM,SAAS,GAAG;IAChB,kEAA0B;IAC1B,kEAA0B;IAC1B,8DAAwB;IACxB,wDAAqB;IACrB,yEAA6B;IAC7B,8DAAwB;IACxB,yEAA6B;IAC7B,8DAAwB;IACxB,wCAAc;IACd,qDAAoB;IACpB,uDAAsB;IACtB,oCAAsB;IACtB,oCAAsB;IACtB,qCAAuB;CACxB,CAAC;AAEF,qHAAqH;AACrH,6FAA6F;AAC7F,MAAM,qBAAqB;IACzB,YACmB,KAAqB,EACrB,OAAuB;QADvB,UAAK,GAAL,KAAK,CAAgB;QACrB,YAAO,GAAP,OAAO,CAAgB;IACvC,CAAC;IAEJ,SAAS,CAAC,KAAc,EAAE,QAA0B;QAClD,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,CACrE,KAAK,EACL,QAAQ,CACT,CAAC;IACJ,CAAC;CACF;AAED,SAAS,oBAAoB,CAAC,EAAE,OAAO,EAAwB;IAC7D,MAAM,OAAO,GAA0B;QACrC,SAAS,EAAE,IAAI;QACf,kBAAkB,EAAE,KAAK;QACzB,uBAAuB,EAAE,KAAK;QAC9B,qBAAqB,EAAE,KAAK;QAC5B,mBAAmB,EAAE,KAAK;QAC1B,mBAAmB,EAAE,mBAAU,CAAC,oBAAoB;QACpD,gBAAgB,EAAE,KAAK,EAAE,MAAyB,EAAE,EAAE,CACpD,IAAI,8BAAqB,CAAC,MAAM,CAAC;KACpC,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,uBAAc,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS;QAAE,OAAO,MAAM,CAAC;IAClD,OAAO,IAAI,qBAAqB,CAC9B,IAAI,uBAAc,CAAC;QACjB,GAAG,OAAO;QACV,SAAS,EAAE,IAAI;QACf,oBAAoB,EAAE,OAAO,CAAC,UAAU,CAAC,oBAAoB,IAAI,KAAK;KACvE,CAAC,EACF,MAAM,CACP,CAAC;AACJ,CAAC;AAGM,IAAM,aAAa,qBAAnB,MAAM,aAAa;IACxB,MAAM,CAAC,QAAQ,CACb,OAA6B,EAC7B,QAAkB;QAElB,OAAO;YACL,MAAM,EAAE,eAAa;YACrB,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,+CAAsB,EAAE,QAAQ,EAAE,OAAO,EAAE;gBACtD;oBACE,OAAO,EAAE,sBAAe;oBACxB,QAAQ,EAAE,wCAAyB;iBACpC;gBACD;oBACE,OAAO,EAAE,eAAQ;oBACjB,UAAU,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC;iBAChD;gBACD;oBACE,OAAO,EAAE,gBAAS;oBAClB,QAAQ,EAAE,0BAAc;iBACzB;gBACD,GAAG,SAAS;aACb;YACD,OAAO,EAAE;gBACP,2BAAe,CAAC,OAAO,CAAC;oBACtB;wBACE,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG;wBACjC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK;qBACtC;iBACF,CAAC;aACH;YACD,MAAM,EAAE,QAAQ;SACjB,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,aAAa,CAClB,OAAkC,EAClC,QAAkB;QAElB,OAAO;YACL,MAAM,EAAE,eAAa;YACrB,OAAO,EAAE;gBACP,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;gBAC1B,2BAAe,CAAC,YAAY,CAAC;oBAC3B,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,UAAU,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE;wBAC5B,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;wBACzD,OAAO;4BACL;gCACE,GAAG,EAAE,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG;gCACxC,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK;6BAC7C;yBACF,CAAC;oBACJ,CAAC;oBACD,MAAM,EAAE,OAAO,CAAC,MAAM;iBACvB,CAAC;aACH;YACD,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,+CAAsB;oBAC/B,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;iBACvB;gBACD;oBACE,OAAO,EAAE,sBAAe;oBACxB,QAAQ,EAAE,wCAAyB;iBACpC;gBACD;oBACE,OAAO,EAAE,eAAQ;oBACjB,UAAU,EAAE,CAAC,cAAoC,EAAE,EAAE,CACnD,oBAAoB,CAAC,cAAc,CAAC;oBACtC,MAAM,EAAE,CAAC,+CAAsB,CAAC;iBACjC;gBACD;oBACE,OAAO,EAAE,gBAAS;oBAClB,QAAQ,EAAE,0BAAc;iBACzB;gBACD,GAAG,SAAS;aACb;YACD,MAAM,EAAE,QAAQ;SACjB,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,QAA4B;QACpC,QAAQ;aACL,KAAK;QACJ,wGAAwG;QACxG,8GAA8G;QAC9G,yCAAyC;QACzC,mDAAuB,EACvB,2CAAmB,EACnB,+CAAqB,EACrB,gEAA+B,EAC/B,gEAA+B,EAC/B,+DAA8B,EAC9B,sEAAqC,EACrC,qDAAwB,EACxB,0DAA0B,EAC1B,yDAA0B,EAC1B,uDAAyB,CAC1B;aACA,OAAO,CACN,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,sBAAa,CAAC,GAAG,EAAE,CAC/C;aACA,SAAS,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;CACF,CAAA;AAzGY,sCAAa;wBAAb,aAAa;IADzB,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,aAAa,CAyGzB"}
1
+ {"version":3,"file":"request.module.js","sourceRoot":"","sources":["../../../../packages/request/src/request.module.ts"],"names":[],"mappings":"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"}