UNPKG

@synanetics/session-tracing-middleware

Version:

Middleware to use in Moleculer for tracing across GCP

51 lines 1.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ifNoneExistsHeaderTransform = exports.sessionTracking = void 0; exports.parseTraceContext = parseTraceContext; const constants_1 = require("@synanetics/constants"); function parseTraceContext(req) { const trace = {}; if (!req || !req.headers) { return trace; } if (req.headers.traceparent) { const traceparent = req.headers.traceparent.toLowerCase(); if (traceparent.match(/^([0-9a-f]{2})-([0-9a-f]{32})-([0-9a-f]{16})-([0-9a-f]{2})$/)) { [trace.version, trace.id, trace.parentSpan, trace.flags] = traceparent.split('-'); } } else { if (req.headers['x-b3-traceid']) { trace.id = req.headers['x-b3-traceid'].toLowerCase(); } if (req.headers['x-b3-spanid']) { trace.span = req.headers['x-b3-spanid'].toLowerCase(); } if (req.headers['x-b3-parentspanid']) { trace.parentSpan = req.headers['x-b3-parentspanid'].toLowerCase(); } } return trace; } const sessionTracking = () => (req, _res, next) => { const trace = parseTraceContext(req); if (trace.id) { req.$ctx.requestID = trace.id; } if (trace.span) { req.$ctx.id = trace.span; } if (trace.parentSpan) { req.$ctx.parentID = trace.parentSpan; } next(); }; exports.sessionTracking = sessionTracking; const ifNoneExistsHeaderTransform = () => (req, _res, next) => { if ('if-none-exists' in req.headers && !(constants_1.HL7HttpHeader.IF_NONE_EXIST in req.headers)) { req.headers[constants_1.HL7HttpHeader.IF_NONE_EXIST] = req.headers['if-none-exists']; } next(); }; exports.ifNoneExistsHeaderTransform = ifNoneExistsHeaderTransform; //# sourceMappingURL=middleware.js.map