UNPKG

1.11 kBJavaScriptView Raw
1'use strict';
2
3const domain = require('domain');
4const { constructFromEncodedString } = require('@codefresh-io/authenticated-entity');
5const { registerCorrelation } = require('./correlation');
6const { REQUEST_ID_HEADER, AUTHENTICATED_ENTITY_HEADER } = require('./headers');
7
8module.exports = {
9 newDomainMiddleware() {
10 return (res, req, next) => {
11 const dom = domain.create();
12
13 const requestId = res.headers[REQUEST_ID_HEADER.toLowerCase()];
14 const rawAuthenticatedEntity = res.headers[AUTHENTICATED_ENTITY_HEADER.toLowerCase()];
15
16 let authenticatedEntity = null;
17 if (rawAuthenticatedEntity) {
18 authenticatedEntity = constructFromEncodedString(rawAuthenticatedEntity);
19 }
20
21 dom.add(req);
22 dom.add(res);
23
24 dom.run(() => {
25 try {
26 registerCorrelation(authenticatedEntity, requestId);
27 setImmediate(next);
28 } catch (err) {
29 setImmediate(next, err);
30 }
31 });
32 };
33 }
34};