UNPKG

@vizydrop/correlation-id

Version:
27 lines (24 loc) 1.07 kB
/********************************************************************* * © Copyright IBM Corp. 2025 *********************************************************************/ const utils = require('./utils'); module.exports = function koaMiddleware(correlator, opts = {}) { return async function (ctx, next) { if (correlator.getId()) { await next(); } else { correlator.bindEmitter(ctx.req); correlator.bindEmitter(ctx.req.socket); correlator.bindEmitter(ctx.res); await new Promise((resolve, reject) => { correlator.withId(ctx.request.correlationId || ctx.request.get(utils.getHeaderName(opts)), () => { utils.rebindOnFinished(correlator, ctx.res); const correlationId = correlator.getId(); ctx.request.correlationId = correlationId; ctx.set(utils.getHeaderName(opts), correlationId); next().then(resolve).catch(reject); }); }); } }; };