http-tracer-component
Version:
Add tracing spans to each request handler.
32 lines • 1.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createHttpTracerComponent = void 0;
const logic_1 = require("./logic");
function createHttpTracerComponent(components) {
const { server, tracer } = components;
server.use((ctx, next) => {
const traceParentHeader = ctx.request.headers.get('traceparent');
const traceParent = traceParentHeader ? (0, logic_1.parseTraceParentHeader)(traceParentHeader) : null;
const traceStateHeader = ctx.request.headers.get('tracestate');
const traceState = traceStateHeader ? (0, logic_1.parseTraceState)(traceStateHeader) : undefined;
const traceContext = traceParent
? { ...traceParent, traceState: traceState !== null && traceState !== void 0 ? traceState : undefined }
: undefined;
return tracer.span(`${ctx.request.method} ${ctx.url.toString()}`, () => {
return next().then(response => {
let traceHeaders;
const traceparent = tracer.getTraceString();
if (traceparent) {
traceHeaders = { traceparent };
const tracestate = tracer.getTraceStateString();
if (tracestate) {
traceHeaders.tracestate = tracestate;
}
}
return { ...response, headers: { ...response.headers, ...traceHeaders } };
});
}, traceContext);
});
}
exports.createHttpTracerComponent = createHttpTracerComponent;
//# sourceMappingURL=component.js.map