UNPKG

@evanion/nestjs-correlation-id

Version:

Transparently forward or add correlation id to all requests

40 lines (39 loc) 2.15 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 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; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.CorrelationIdMiddleware = void 0; const common_1 = require("@nestjs/common"); const constants_1 = require("./constants"); const correlation_service_1 = require("./correlation.service"); let CorrelationIdMiddleware = exports.CorrelationIdMiddleware = class CorrelationIdMiddleware { constructor(correlationService, correlationConfig) { this.correlationService = correlationService; this.correlationConfig = correlationConfig; } use(req, res, next) { const { header } = this.correlationConfig; const correlationId = req.get(header) || this.correlationService.getCorrelationId(); if (!req.headers[header]) req.headers[header] = correlationId; if (!res.get(header)) res.set(header, correlationId); this.correlationService.setCorrelationId(correlationId); next(); } }; exports.CorrelationIdMiddleware = CorrelationIdMiddleware = __decorate([ (0, common_1.Injectable)(), __param(1, (0, common_1.Inject)(constants_1.CORRELATION_CONFIG_TOKEN)), __metadata("design:paramtypes", [correlation_service_1.CorrelationService, Object]) ], CorrelationIdMiddleware);