@ogcio/nextjs-o11y
Version:
Custom middleware for OGCIO Observability
24 lines • 896 B
JavaScript
import { trace } from "@opentelemetry/api";
export const ACCESS_CONTROL_EXPOSE_HEADERS = "access-control-expose-headers";
export const X_TRACE_ID = "x-trace-id";
export default function o11y(_req, res) {
try {
const traceId = trace.getActiveSpan()?.spanContext()?.traceId;
if (traceId) {
res.headers.set(X_TRACE_ID, traceId);
}
const exposedHeaders = res.headers.get(ACCESS_CONTROL_EXPOSE_HEADERS);
if (!exposedHeaders) {
res.headers.set(ACCESS_CONTROL_EXPOSE_HEADERS, X_TRACE_ID);
return;
}
if (exposedHeaders.toString().includes(X_TRACE_ID)) {
return;
}
res.headers.set(ACCESS_CONTROL_EXPOSE_HEADERS, `${X_TRACE_ID}, ${exposedHeaders}`);
}
catch (error) {
console.error("Observability Middleware Error:", error);
}
}
//# sourceMappingURL=index.js.map