@autofleet/outbreak 0.2.0-beta-1 → 0.2.0-beta-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/{http-wrapper/config.d.ts → config.d.ts} +0 -0
- package/dist/src/{http-wrapper/config.js → config.js} +0 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/example.d.ts +1 -0
- package/dist/src/example.js +46 -0
- package/dist/src/example.js.map +1 -0
- package/dist/src/{http-wrapper/wrapper.d.ts → http_wrapper.d.ts} +0 -0
- package/dist/src/{http-wrapper/wrapper.js → http_wrapper.js} +16 -9
- package/dist/src/http_wrapper.js.map +1 -0
- package/dist/src/index.d.ts +17 -4
- package/dist/src/index.js +36 -11
- package/dist/src/index.js.map +1 -1
- package/dist/src/tracer.d.ts +10 -0
- package/dist/src/tracer.js +55 -0
- package/dist/src/tracer.js.map +1 -0
- package/dist/tests/http-wrapper.test.js +7 -9
- package/dist/tests/http-wrapper.test.js.map +1 -1
- package/package.json +1 -1
- package/dist/src/http-wrapper/config.js.map +0 -1
- package/dist/src/http-wrapper/index.d.ts +0 -14
- package/dist/src/http-wrapper/index.js +0 -39
- package/dist/src/http-wrapper/index.js.map +0 -1
- package/dist/src/http-wrapper/wrapper.js.map +0 -1
- package/dist/src/identity/ApiUser.d.ts +0 -25
- package/dist/src/identity/ApiUser.js +0 -73
- package/dist/src/identity/ApiUser.js.map +0 -1
- package/dist/src/identity/index.d.ts +0 -3
- package/dist/src/identity/index.js +0 -13
- package/dist/src/identity/index.js.map +0 -1
- package/dist/src/identity/middlewares.d.ts +0 -12
- package/dist/src/identity/middlewares.js +0 -69
- package/dist/src/identity/middlewares.js.map +0 -1
- package/dist/src/identity/utils.d.ts +0 -5
- package/dist/src/identity/utils.js +0 -79
- package/dist/src/identity/utils.js.map +0 -1
- package/dist/src/network/index.d.ts +0 -1
- package/dist/src/network/index.js +0 -17
- package/dist/src/network/index.js.map +0 -1
- package/dist/src/tracer/index.d.ts +0 -16
- package/dist/src/tracer/index.js +0 -48
- package/dist/src/tracer/index.js.map +0 -1
File without changes
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":";;AAAA,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAEzC,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAQ,EAAE;IAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;KAChD;IAED,iEAAiE;IACjE,MAAM,eAAe,GAAG,iBAAiB,CAAC;IAE1C,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhG,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;QAC7B,MAAM,IAAI,KAAK,CAAC,yCAAyC,cAAc,EAAE,CAAC,CAAC;KAC5E;AACH,CAAC,CAAC;AASF,MAAM,IAAI,GAAG,CAAC,YAAuB,EAAE,EAAE,EAAE;IACzC,MAAM,EACJ,4BAA4B,GAAG,IAAI,EACnC,oBAAoB,GAAG,KAAK,EAC5B,kBAAkB,GAAG;QACnB,cAAc;QACd,cAAc;KACf,EACD,aAAa,GAAG,OAAO,GACxB,GAAG,SAAS,CAAC;IAEd,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;IAEvC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;IAE5C,IAAI,eAAe,GAAG,gBAAgB,CAAC;IACvC,IAAI,4BAA4B,KAAK,IAAI,EAAE;QACzC,eAAe,GAAG,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;KAClE;IAED,OAAO;QACL,4BAA4B;QAC5B,oBAAoB;QACpB,mBAAmB;QACnB,gBAAgB;QAChB,eAAe;QACf,aAAa;KACd,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe;IACb,IAAI;IACJ,mBAAmB;CACpB,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,46 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
|
+
};
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
15
|
+
const express_1 = __importDefault(require("express"));
|
16
|
+
const axios_1 = __importDefault(require("axios"));
|
17
|
+
const winston_1 = __importDefault(require("winston"));
|
18
|
+
const index_1 = __importDefault(require("./index"));
|
19
|
+
axios_1.default.defaults.adapter = require('axios/lib/adapters/http');
|
20
|
+
const logger = winston_1.default.createLogger({
|
21
|
+
transports: [
|
22
|
+
new winston_1.default.transports.Console(),
|
23
|
+
],
|
24
|
+
});
|
25
|
+
index_1.default({
|
26
|
+
setAndPropagateCorrelationId: true,
|
27
|
+
headersToPropagate: [
|
28
|
+
'x-text',
|
29
|
+
],
|
30
|
+
headersPrefix: 'x-af-',
|
31
|
+
winstonLogger: logger,
|
32
|
+
});
|
33
|
+
const app = express_1.default();
|
34
|
+
app.all('/', (req, res) => __awaiter(void 0, void 0, void 0, function* () {
|
35
|
+
const network = axios_1.default.create({ baseURL: 'http://localhost:8080/' });
|
36
|
+
const { data } = yield network.get('/header-parrot');
|
37
|
+
res.json(data);
|
38
|
+
}));
|
39
|
+
app.all('/header-parrot', (req, res) => {
|
40
|
+
logger.info('Test message', { t: 1 });
|
41
|
+
res.json(req.headers);
|
42
|
+
});
|
43
|
+
app.listen(8080, () => {
|
44
|
+
logger.info('App listen');
|
45
|
+
});
|
46
|
+
//# sourceMappingURL=example.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"example.js","sourceRoot":"","sources":["../../src/example.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,sDAA8B;AAC9B,kDAA0B;AAC1B,sDAA8B;AAE9B,oDAAoC;AAEpC,eAAK,CAAC,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;AAE5D,MAAM,MAAM,GAAG,iBAAO,CAAC,YAAY,CAAC;IAClC,UAAU,EAAE;QACV,IAAI,iBAAO,CAAC,UAAU,CAAC,OAAO,EAAE;KACjC;CACF,CAAC,CAAC;AAEH,eAAa,CAAC;IACZ,4BAA4B,EAAE,IAAI;IAClC,kBAAkB,EAAE;QAClB,QAAQ;KACT;IACD,aAAa,EAAE,OAAO;IACtB,aAAa,EAAE,MAAM;CACtB,CAAC,CAAC;AAEH,MAAM,GAAG,GAAG,iBAAO,EAAE,CAAC;AAEtB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAO,GAAG,EAAE,GAAG,EAAE,EAAE;IAC9B,MAAM,OAAO,GAAG,eAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC,CAAC;IACpE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACrD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjB,CAAC,CAAA,CAAC,CAAC;AAEH,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACrC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACtC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;IACpB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC"}
|
File without changes
|
@@ -2,11 +2,18 @@
|
|
2
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
4
|
};
|
5
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
6
|
+
if (mod && mod.__esModule) return mod;
|
7
|
+
var result = {};
|
8
|
+
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
|
9
|
+
result["default"] = mod;
|
10
|
+
return result;
|
11
|
+
};
|
5
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
13
|
/* eslint-disable max-len */
|
7
14
|
const http_1 = __importDefault(require("http"));
|
8
15
|
const shortid_1 = __importDefault(require("shortid"));
|
9
|
-
const tracer_1 = require("
|
16
|
+
const tracer_1 = __importStar(require("./tracer"));
|
10
17
|
const originalHttpCreateServer = http_1.default.createServer;
|
11
18
|
const originalRequest = http_1.default.request;
|
12
19
|
const originalGet = http_1.default.get;
|
@@ -15,7 +22,7 @@ function setAndCollectCorrelationId(config, req, res) {
|
|
15
22
|
if (typeof correlationId === 'undefined') {
|
16
23
|
correlationId = shortid_1.default.generate();
|
17
24
|
}
|
18
|
-
tracer_1.
|
25
|
+
tracer_1.default.currentTrace.context.set(config.correlationIdHeader, correlationId);
|
19
26
|
res.setHeader(config.correlationIdHeader, correlationId);
|
20
27
|
}
|
21
28
|
function collect(req, headers, headersPrefix) {
|
@@ -24,14 +31,14 @@ function collect(req, headers, headersPrefix) {
|
|
24
31
|
: [];
|
25
32
|
[...headers, ...prefixHeaders].forEach((header) => {
|
26
33
|
if (typeof req.headers[header] !== 'undefined') {
|
27
|
-
tracer_1.
|
34
|
+
tracer_1.default.currentTrace.context.set(header, req.headers[header]);
|
28
35
|
}
|
29
36
|
});
|
30
37
|
}
|
31
38
|
function injectInResponse(response, headers) {
|
32
|
-
if (tracer_1.
|
39
|
+
if (tracer_1.default.currentTrace) {
|
33
40
|
headers.forEach((header) => {
|
34
|
-
response.setHeader(header, tracer_1.
|
41
|
+
response.setHeader(header, tracer_1.default.currentTrace.context.get(header));
|
35
42
|
});
|
36
43
|
}
|
37
44
|
}
|
@@ -55,14 +62,14 @@ function wrapHttpCreateServer(config) {
|
|
55
62
|
};
|
56
63
|
}
|
57
64
|
function inject(options) {
|
58
|
-
if (tracer_1.
|
65
|
+
if (tracer_1.default.currentTrace) {
|
59
66
|
if (!options.headers) {
|
60
67
|
// eslint-disable-next-line no-param-reassign
|
61
68
|
options.headers = {};
|
62
69
|
}
|
63
|
-
[...(tracer_1.
|
70
|
+
[...(tracer_1.default.currentTrace.context.keys())].forEach((header) => {
|
64
71
|
// eslint-disable-next-line no-param-reassign
|
65
|
-
options.headers[header] = tracer_1.
|
72
|
+
options.headers[header] = tracer_1.default.currentTrace.context.get(header);
|
66
73
|
});
|
67
74
|
}
|
68
75
|
}
|
@@ -95,4 +102,4 @@ function wrapHttp(config) {
|
|
95
102
|
http_1.default.get = wrapHttpRequest(originalGet);
|
96
103
|
}
|
97
104
|
exports.default = wrapHttp;
|
98
|
-
//# sourceMappingURL=
|
105
|
+
//# sourceMappingURL=http_wrapper.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"http_wrapper.js","sourceRoot":"","sources":["../../src/http_wrapper.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
@@ -1,4 +1,17 @@
|
|
1
|
-
import
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
import winston from 'winston';
|
2
|
+
interface Options {
|
3
|
+
winstonLogger?: winston.Logger;
|
4
|
+
loggerTraceKey?: string;
|
5
|
+
headersPrefix?: string;
|
6
|
+
setAndPropagateCorrelationId?: boolean;
|
7
|
+
headersToPropagate?: string[];
|
8
|
+
}
|
9
|
+
export default function (options: Options): void;
|
10
|
+
export declare const getCurrentContext: () => any;
|
11
|
+
export declare const newTrace: (type: any) => void;
|
12
|
+
export declare const traceTypes: {
|
13
|
+
HTTP_REQUEST: string;
|
14
|
+
WEB_SOCKET: string;
|
15
|
+
RABBIT: string;
|
16
|
+
};
|
17
|
+
export {};
|
package/dist/src/index.js
CHANGED
@@ -2,16 +2,41 @@
|
|
2
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
4
|
};
|
5
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
6
|
+
if (mod && mod.__esModule) return mod;
|
7
|
+
var result = {};
|
8
|
+
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
|
9
|
+
result["default"] = mod;
|
10
|
+
return result;
|
11
|
+
};
|
5
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
const
|
7
|
-
|
8
|
-
const
|
9
|
-
|
10
|
-
|
11
|
-
const
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
13
|
+
const winston_1 = require("winston");
|
14
|
+
const http_wrapper_1 = __importDefault(require("./http_wrapper"));
|
15
|
+
const config_1 = __importDefault(require("./config"));
|
16
|
+
const tracer = __importStar(require("./tracer"));
|
17
|
+
const addMetadataToLog = (loggerTraceKey) => winston_1.format((info) => {
|
18
|
+
const currentTrace = tracer.getCurrentTrace();
|
19
|
+
if (currentTrace && currentTrace.context && currentTrace.context.get) {
|
20
|
+
// eslint-disable-next-line no-param-reassign
|
21
|
+
info[loggerTraceKey] = currentTrace.context.get(config_1.default.correlationIdHeader);
|
22
|
+
}
|
23
|
+
return info;
|
24
|
+
});
|
25
|
+
function default_1(options) {
|
26
|
+
http_wrapper_1.default(config_1.default.load(options));
|
27
|
+
tracer.enable();
|
28
|
+
if (options.winstonLogger) {
|
29
|
+
const traceKey = options.loggerTraceKey || 'traceId';
|
30
|
+
// eslint-disable-next-line no-param-reassign
|
31
|
+
options.winstonLogger.format = winston_1.format.combine(addMetadataToLog(traceKey)(), options.winstonLogger.format);
|
32
|
+
}
|
33
|
+
}
|
34
|
+
exports.default = default_1;
|
35
|
+
exports.getCurrentContext = () => tracer.getCurrentTrace();
|
36
|
+
exports.newTrace = tracer.newTrace;
|
37
|
+
exports.traceTypes = {
|
38
|
+
HTTP_REQUEST: 'httpRequest',
|
39
|
+
WEB_SOCKET: 'webSocket',
|
40
|
+
RABBIT: 'rabbit',
|
41
|
+
};
|
17
42
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAA0C;AAE1C,kEAAyC;AACzC,sDAA8B;AAC9B,iDAAmC;AAUnC,MAAM,gBAAgB,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC,gBAAM,CAAC,CAAC,IAAI,EAAE,EAAE;IAC3D,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;IAC9C,IAAI,YAAY,IAAI,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE;QACpE,6CAA6C;QAC7C,IAAI,CAAC,cAAc,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAM,CAAC,mBAAmB,CAAC,CAAC;KAC7E;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC,CAAC;AAEH,mBAAyB,OAAgB;IACvC,sBAAW,CAAC,gBAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAClC,MAAM,CAAC,MAAM,EAAE,CAAC;IAEhB,IAAI,OAAO,CAAC,aAAa,EAAE;QACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,IAAI,SAAS,CAAC;QACrD,6CAA6C;QAC7C,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,gBAAM,CAAC,OAAO,CAC3C,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EAC5B,OAAO,CAAC,aAAa,CAAC,MAAM,CAC7B,CAAC;KACH;AACH,CAAC;AAZD,4BAYC;AAEY,QAAA,iBAAiB,GAAG,GAAQ,EAAE,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;AAErE,mCAAmC;AAEtB,QAAA,UAAU,GAAG;IACxB,YAAY,EAAE,aAAa;IAC3B,UAAU,EAAE,WAAW;IACvB,MAAM,EAAE,QAAQ;CACjB,CAAC"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
/// <reference types="node" />
|
2
|
+
import asyncHooks from 'async_hooks';
|
3
|
+
declare const tracer: {
|
4
|
+
currentTrace: any;
|
5
|
+
traces: {};
|
6
|
+
};
|
7
|
+
export declare const newTrace: (type: any) => void;
|
8
|
+
export declare const enable: () => asyncHooks.AsyncHook;
|
9
|
+
export declare const getCurrentTrace: () => any;
|
10
|
+
export default tracer;
|
@@ -0,0 +1,55 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const async_hooks_1 = __importDefault(require("async_hooks"));
|
7
|
+
const uuid_1 = __importDefault(require("uuid"));
|
8
|
+
const prevStates = {};
|
9
|
+
const tracer = {
|
10
|
+
currentTrace: null,
|
11
|
+
traces: {},
|
12
|
+
};
|
13
|
+
function init(asyncId, type, triggerAsyncId) {
|
14
|
+
if (tracer.traces[triggerAsyncId]) {
|
15
|
+
tracer.traces[asyncId] = tracer.traces[triggerAsyncId];
|
16
|
+
}
|
17
|
+
}
|
18
|
+
function before(asyncId) {
|
19
|
+
if (!tracer.traces[asyncId]) {
|
20
|
+
return;
|
21
|
+
}
|
22
|
+
prevStates[asyncId] = tracer.currentTrace;
|
23
|
+
tracer.currentTrace = tracer.traces[asyncId];
|
24
|
+
}
|
25
|
+
function after(asyncId) {
|
26
|
+
if (!tracer.traces[asyncId]) {
|
27
|
+
return;
|
28
|
+
}
|
29
|
+
tracer.currentTrace = prevStates[asyncId];
|
30
|
+
}
|
31
|
+
function destroy(asyncId) {
|
32
|
+
if (tracer.traces[asyncId]) {
|
33
|
+
delete tracer.traces[asyncId];
|
34
|
+
delete prevStates[asyncId];
|
35
|
+
}
|
36
|
+
}
|
37
|
+
const hook = async_hooks_1.default.createHook({
|
38
|
+
init, before, after, destroy,
|
39
|
+
});
|
40
|
+
class Trace {
|
41
|
+
constructor(type) {
|
42
|
+
this.id = uuid_1.default.v1();
|
43
|
+
this.type = type;
|
44
|
+
this.context = new Map();
|
45
|
+
}
|
46
|
+
}
|
47
|
+
exports.newTrace = (type) => {
|
48
|
+
tracer.currentTrace = new Trace(type);
|
49
|
+
tracer.traces[async_hooks_1.default.executionAsyncId()] = tracer.currentTrace;
|
50
|
+
return tracer.currentTrace;
|
51
|
+
};
|
52
|
+
exports.enable = () => hook.enable();
|
53
|
+
exports.getCurrentTrace = () => tracer.currentTrace || {};
|
54
|
+
exports.default = tracer;
|
55
|
+
//# sourceMappingURL=tracer.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../src/tracer.ts"],"names":[],"mappings":";;;;;AAAA,8DAAqC;AACrC,gDAAwB;AAExB,MAAM,UAAU,GAAG,EAAE,CAAC;AAEtB,MAAM,MAAM,GAAG;IACb,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE,EAAE;CACX,CAAC;AAEF,SAAS,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,cAAc;IACzC,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE;QACjC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;KACxD;AACH,CAAC;AAED,SAAS,MAAM,CAAC,OAAO;IACrB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;QAC3B,OAAO;KACR;IACD,UAAU,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;IAC1C,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,KAAK,CAAC,OAAO;IACpB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;QAC3B,OAAO;KACR;IACD,MAAM,CAAC,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,OAAO,CAAC,OAAO;IACtB,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;QAC1B,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC;KAC5B;AACH,CAAC;AAED,MAAM,IAAI,GAAG,qBAAU,CAAC,UAAU,CAAC;IACjC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;CAC7B,CAAC,CAAC;AAEH,MAAM,KAAK;IAOT,YAAY,IAAI;QACd,IAAI,CAAC,EAAE,GAAG,cAAI,CAAC,EAAE,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;IAC3B,CAAC;CACF;AAEY,QAAA,QAAQ,GAAG,CAAC,IAAI,EAAQ,EAAE;IACrC,MAAM,CAAC,YAAY,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,CAAC,MAAM,CAAC,qBAAU,CAAC,gBAAgB,EAAE,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;IACnE,OAAO,MAAM,CAAC,YAAY,CAAC;AAC7B,CAAC,CAAC;AAEW,QAAA,MAAM,GAAG,GAAyB,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AAEnD,QAAA,eAAe,GAAG,GAAQ,EAAE,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;AAEpE,kBAAe,MAAM,CAAC"}
|
@@ -15,9 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
const express_1 = __importDefault(require("express"));
|
16
16
|
const axios_1 = __importDefault(require("axios"));
|
17
17
|
const winston_1 = __importDefault(require("winston"));
|
18
|
-
const
|
19
|
-
const index_1 = require("../src/index");
|
20
|
-
console.log(index_1.headersTracer.toString(), index_1.middlewareWithDecode.toString());
|
18
|
+
const index_1 = __importDefault(require("../src/index"));
|
21
19
|
const logger = winston_1.default.createLogger({
|
22
20
|
transports: [
|
23
21
|
new winston_1.default.transports.Console(),
|
@@ -37,7 +35,7 @@ const generateApp = (addEndpoints, port) => __awaiter(void 0, void 0, void 0, fu
|
|
37
35
|
describe('E2E', () => {
|
38
36
|
it('Basic functionality', () => __awaiter(void 0, void 0, void 0, function* () {
|
39
37
|
let server2TraceId = null;
|
40
|
-
|
38
|
+
index_1.default({
|
41
39
|
setAndPropagateCorrelationId: true,
|
42
40
|
headersToPropagate: [
|
43
41
|
'x-test-header',
|
@@ -47,7 +45,7 @@ describe('E2E', () => {
|
|
47
45
|
});
|
48
46
|
const closeServer1 = yield generateApp((app) => {
|
49
47
|
app.get('/', (req, res) => __awaiter(void 0, void 0, void 0, function* () {
|
50
|
-
const { data: res1 } = yield axios_1.default.post(
|
48
|
+
const { data: res1 } = yield axios_1.default.post('http://localhost:8082');
|
51
49
|
res.json(res1);
|
52
50
|
}));
|
53
51
|
}, 8081);
|
@@ -56,15 +54,15 @@ describe('E2E', () => {
|
|
56
54
|
server2TraceId = req.headers['x-trace-id'];
|
57
55
|
res.json({
|
58
56
|
value: req.headers['x-test-header'],
|
59
|
-
wkanda: req.headers['x-wakanda-id']
|
57
|
+
wkanda: req.headers['x-wakanda-id'],
|
60
58
|
});
|
61
59
|
});
|
62
60
|
}, 8082);
|
63
|
-
const { data: res1, headers } = yield axios_1.default.get(
|
61
|
+
const { data: res1, headers } = yield axios_1.default.get('http://localhost:8081', {
|
64
62
|
headers: {
|
65
63
|
'x-test-header': 'testHeader',
|
66
|
-
'x-wakanda-id': 'my-wakanda-id'
|
67
|
-
}
|
64
|
+
'x-wakanda-id': 'my-wakanda-id',
|
65
|
+
},
|
68
66
|
});
|
69
67
|
closeServer1();
|
70
68
|
closeServer2();
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"http-wrapper.test.js","sourceRoot":"","sources":["../../tests/http-wrapper.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,sDAA8B;AAE9B,kDAA0B;AAC1B,sDAA8B;AAE9B,
|
1
|
+
{"version":3,"file":"http-wrapper.test.js","sourceRoot":"","sources":["../../tests/http-wrapper.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,sDAA8B;AAE9B,kDAA0B;AAC1B,sDAA8B;AAE9B,yDAAyC;AAGzC,MAAM,MAAM,GAAG,iBAAO,CAAC,YAAY,CAAC;IAClC,UAAU,EAAE;QACV,IAAI,iBAAO,CAAC,UAAU,CAAC,OAAO,EAAE;KACjC;CACF,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAAO,YAAY,EAAE,IAAI,EAAE,EAAE;IAC/C,MAAM,GAAG,GAAG,iBAAO,EAAE,CAAC;IAEtB,YAAY,CAAC,GAAG,CAAC,CAAC;IAElB,MAAM,MAAM,GAAgB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACxD,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;YAC9B,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;YACpC,OAAO,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AAC9B,CAAC,CAAA,CAAC;AAEF,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;IACnB,EAAE,CAAC,qBAAqB,EAAE,GAAS,EAAE;QACnC,IAAI,cAAc,GAAG,IAAI,CAAC;QAC1B,eAAa,CAAC;YACZ,4BAA4B,EAAE,IAAI;YAClC,kBAAkB,EAAE;gBAClB,eAAe;aAChB;YACD,aAAa,EAAE,YAAY;YAC3B,aAAa,EAAE,MAAM;SACtB,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,CAAC,GAAG,EAAE,EAAE;YAC7C,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAO,GAAG,EAAE,GAAG,EAAE,EAAE;gBAC9B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,eAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;gBACjE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC,CAAA,CAAC,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,CAAC,GAAG,EAAE,EAAE;YAC7C,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBACzB,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBAC3C,GAAG,CAAC,IAAI,CAAC;oBACP,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC;oBACnC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC;iBACpC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,uBAAuB,EAAE;YACvE,OAAO,EAAE;gBACP,eAAe,EAAE,YAAY;gBAC7B,cAAc,EAAE,eAAe;aAChC;SACF,CAAC,CAAC;QACH,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,CAAC;QAGf,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAC/C,CAAC,CAAA,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/http-wrapper/config.ts"],"names":[],"mappings":";;AAAA,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAEzC,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAQ,EAAE;IAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;KAChD;IAED,iEAAiE;IACjE,MAAM,eAAe,GAAG,iBAAiB,CAAC;IAE1C,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhG,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;QAC7B,MAAM,IAAI,KAAK,CAAC,yCAAyC,cAAc,EAAE,CAAC,CAAC;KAC5E;AACH,CAAC,CAAC;AASF,MAAM,IAAI,GAAG,CAAC,YAAuB,EAAE,EAAE,EAAE;IACzC,MAAM,EACJ,4BAA4B,GAAG,IAAI,EACnC,oBAAoB,GAAG,KAAK,EAC5B,kBAAkB,GAAG;QACnB,cAAc;QACd,cAAc;KACf,EACD,aAAa,GAAG,OAAO,GACxB,GAAG,SAAS,CAAC;IAEd,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;IAEvC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;IAE5C,IAAI,eAAe,GAAG,gBAAgB,CAAC;IACvC,IAAI,4BAA4B,KAAK,IAAI,EAAE;QACzC,eAAe,GAAG,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;KAClE;IAED,OAAO;QACL,4BAA4B;QAC5B,oBAAoB;QACpB,mBAAmB;QACnB,gBAAgB;QAChB,eAAe;QACf,aAAa;KACd,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe;IACb,IAAI;IACJ,mBAAmB;CACpB,CAAC"}
|
@@ -1,14 +0,0 @@
|
|
1
|
-
import winston from 'winston';
|
2
|
-
interface Options {
|
3
|
-
winstonLogger?: winston.Logger;
|
4
|
-
headersPrefix?: string;
|
5
|
-
setAndPropagateCorrelationId?: boolean;
|
6
|
-
headersToPropagate?: string[];
|
7
|
-
}
|
8
|
-
export default function (options: Options): void;
|
9
|
-
export declare const traceTypes: {
|
10
|
-
HTTP_REQUEST: string;
|
11
|
-
WEB_SOCKET: string;
|
12
|
-
RABBIT: string;
|
13
|
-
};
|
14
|
-
export {};
|
@@ -1,39 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
-
};
|
5
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
6
|
-
if (mod && mod.__esModule) return mod;
|
7
|
-
var result = {};
|
8
|
-
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
|
9
|
-
result["default"] = mod;
|
10
|
-
return result;
|
11
|
-
};
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
13
|
-
const winston_1 = require("winston");
|
14
|
-
const wrapper_1 = __importDefault(require("./wrapper"));
|
15
|
-
const config_1 = __importDefault(require("./config"));
|
16
|
-
const tracer = __importStar(require("../tracer"));
|
17
|
-
const addMetadataToLog = winston_1.format((info) => {
|
18
|
-
const currentTrace = tracer.getCurrentTrace();
|
19
|
-
if (currentTrace && currentTrace.context && currentTrace.context.get) {
|
20
|
-
// eslint-disable-next-line no-param-reassign
|
21
|
-
info.traceId = currentTrace.context.get(config_1.default.correlationIdHeader);
|
22
|
-
}
|
23
|
-
return info;
|
24
|
-
});
|
25
|
-
function default_1(options) {
|
26
|
-
wrapper_1.default(config_1.default.load(options));
|
27
|
-
tracer.enable();
|
28
|
-
if (options.winstonLogger) {
|
29
|
-
// eslint-disable-next-line no-param-reassign
|
30
|
-
options.winstonLogger.format = winston_1.format.combine(addMetadataToLog(), options.winstonLogger.format);
|
31
|
-
}
|
32
|
-
}
|
33
|
-
exports.default = default_1;
|
34
|
-
exports.traceTypes = {
|
35
|
-
HTTP_REQUEST: 'httpRequest',
|
36
|
-
WEB_SOCKET: 'webSocket',
|
37
|
-
RABBIT: 'rabbit',
|
38
|
-
};
|
39
|
-
//# sourceMappingURL=index.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/http-wrapper/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAA0C;AAE1C,wDAAoC;AACpC,sDAA8B;AAC9B,kDAAoC;AASpC,MAAM,gBAAgB,GAAG,gBAAM,CAAC,CAAC,IAAI,EAAE,EAAE;IACvC,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;IAC9C,IAAI,YAAY,IAAI,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE;QACpE,6CAA6C;QAC7C,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAM,CAAC,mBAAmB,CAAC,CAAC;KACrE;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC,CAAC;AAEH,mBAAyB,OAAgB;IACvC,iBAAW,CAAC,gBAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAClC,MAAM,CAAC,MAAM,EAAE,CAAC;IAEhB,IAAI,OAAO,CAAC,aAAa,EAAE;QACzB,6CAA6C;QAC7C,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,gBAAM,CAAC,OAAO,CAC3C,gBAAgB,EAAE,EAClB,OAAO,CAAC,aAAa,CAAC,MAAM,CAC7B,CAAC;KACH;AACH,CAAC;AAXD,4BAWC;AAEY,QAAA,UAAU,GAAG;IACxB,YAAY,EAAE,aAAa;IAC3B,UAAU,EAAE,WAAW;IACvB,MAAM,EAAE,QAAQ;CACjB,CAAC"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"wrapper.js","sourceRoot":"","sources":["../../../src/http-wrapper/wrapper.ts"],"names":[],"mappings":"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"}
|
@@ -1,25 +0,0 @@
|
|
1
|
-
interface EntityPermissions {
|
2
|
-
[key: string]: string[];
|
3
|
-
}
|
4
|
-
export interface UserPayload {
|
5
|
-
businessModels: EntityPermissions;
|
6
|
-
fleets: EntityPermissions;
|
7
|
-
demandSources: EntityPermissions;
|
8
|
-
createdAt?: string;
|
9
|
-
}
|
10
|
-
export default class ApiUser {
|
11
|
-
id: string | undefined;
|
12
|
-
privatePermissions: UserPayload | undefined;
|
13
|
-
privatePermissionsLegacy: any;
|
14
|
-
emptyUser: boolean;
|
15
|
-
constructor(id?: string);
|
16
|
-
getUserPermissions(): Promise<UserPayload>;
|
17
|
-
get businessModels(): string[] | undefined;
|
18
|
-
get fleets(): string[] | undefined;
|
19
|
-
get demandSources(): string[] | undefined;
|
20
|
-
getUserProperty(key: any): string[] | undefined;
|
21
|
-
get permissions(): UserPayload | undefined;
|
22
|
-
getUserPermissionsLegacy(): Promise<any>;
|
23
|
-
get permissionsLegacy(): any;
|
24
|
-
}
|
25
|
-
export {};
|
@@ -1,73 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
-
});
|
10
|
-
};
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
-
const network_1 = require("../network");
|
13
|
-
class ApiUser {
|
14
|
-
constructor(id) {
|
15
|
-
this.id = id;
|
16
|
-
this.emptyUser = !!id;
|
17
|
-
}
|
18
|
-
getUserPermissions() {
|
19
|
-
return __awaiter(this, void 0, void 0, function* () {
|
20
|
-
if (!this.id) {
|
21
|
-
return null;
|
22
|
-
}
|
23
|
-
if (this.privatePermissions) {
|
24
|
-
return this.privatePermissions;
|
25
|
-
}
|
26
|
-
const { data } = yield network_1.IdentityNetwork.get(`/api/v1/users/${this.id}/authorization-payload`);
|
27
|
-
this.privatePermissions = data;
|
28
|
-
return this.privatePermissions;
|
29
|
-
});
|
30
|
-
}
|
31
|
-
get businessModels() {
|
32
|
-
return this.getUserProperty('businessModels');
|
33
|
-
}
|
34
|
-
get fleets() {
|
35
|
-
return this.getUserProperty('fleets');
|
36
|
-
}
|
37
|
-
get demandSources() {
|
38
|
-
return this.getUserProperty('demandSources');
|
39
|
-
}
|
40
|
-
getUserProperty(key) {
|
41
|
-
if (!this.privatePermissions) {
|
42
|
-
throw new Error(`Cannot get ${key} without calling (async) getUserPermissions before`);
|
43
|
-
}
|
44
|
-
return Object.keys(this.privatePermissions[key] || {});
|
45
|
-
}
|
46
|
-
get permissions() {
|
47
|
-
if (!this.privatePermissions) {
|
48
|
-
throw new Error('Cannot get permissions without calling (async) getUserPermissions before');
|
49
|
-
}
|
50
|
-
return this.privatePermissions;
|
51
|
-
}
|
52
|
-
getUserPermissionsLegacy() {
|
53
|
-
return __awaiter(this, void 0, void 0, function* () {
|
54
|
-
if (!this.id) {
|
55
|
-
return null;
|
56
|
-
}
|
57
|
-
if (this.privatePermissionsLegacy) {
|
58
|
-
return this.privatePermissionsLegacy;
|
59
|
-
}
|
60
|
-
const { data } = yield network_1.IdentityNetwork.get(`/api/v1/users/${this.id}/authorization-payload-legacy`);
|
61
|
-
this.privatePermissionsLegacy = data;
|
62
|
-
return this.privatePermissionsLegacy;
|
63
|
-
});
|
64
|
-
}
|
65
|
-
get permissionsLegacy() {
|
66
|
-
if (!this.privatePermissionsLegacy) {
|
67
|
-
throw new Error('Cannot get permissionsLegacy without calling (async) getUserPermissionsLegacy before');
|
68
|
-
}
|
69
|
-
return this.privatePermissionsLegacy;
|
70
|
-
}
|
71
|
-
}
|
72
|
-
exports.default = ApiUser;
|
73
|
-
//# sourceMappingURL=ApiUser.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"ApiUser.js","sourceRoot":"","sources":["../../../src/identity/ApiUser.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,wCAA6C;AAa7C,MAAqB,OAAO;IAS1B,YAAY,EAAY;QACtB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;IACxB,CAAC;IAEK,kBAAkB;;YACtB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;gBACZ,OAAO,IAAI,CAAC;aACb;YAED,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBAC3B,OAAO,IAAI,CAAC,kBAAkB,CAAC;aAChC;YACD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,yBAAe,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,EAAE,wBAAwB,CAAC,CAAC;YAE7F,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,OAAO,IAAI,CAAC,kBAAkB,CAAC;QACjC,CAAC;KAAA;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;IAC/C,CAAC;IAED,eAAe,CAAC,GAAG;QACjB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC5B,MAAM,IAAI,KAAK,CAAC,cAAc,GAAG,oDAAoD,CAAC,CAAC;SACxF;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,WAAW;QACb,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC5B,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;SAC7F;QAED,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAEK,wBAAwB;;YAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;gBACZ,OAAO,IAAI,CAAC;aACb;YAED,IAAI,IAAI,CAAC,wBAAwB,EAAE;gBACjC,OAAO,IAAI,CAAC,wBAAwB,CAAC;aACtC;YAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,yBAAe,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,EAAE,+BAA+B,CAAC,CAAC;YAEpG,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;YACrC,OAAO,IAAI,CAAC,wBAAwB,CAAC;QACvC,CAAC;KAAA;IAED,IAAI,iBAAiB;QACnB,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;YAClC,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAC;SACzG;QACD,OAAO,IAAI,CAAC,wBAAwB,CAAC;IACvC,CAAC;CACF;AA7ED,0BA6EC"}
|
@@ -1,13 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
-
};
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
const ApiUser_1 = __importDefault(require("./ApiUser"));
|
7
|
-
exports.ApiUser = ApiUser_1.default;
|
8
|
-
const middlewares_1 = require("./middlewares");
|
9
|
-
exports.middleware = middlewares_1.middleware;
|
10
|
-
exports.middlewareWithDecode = middlewares_1.middlewareWithDecode;
|
11
|
-
exports.eagerLoadPermissionsMiddleware = middlewares_1.eagerLoadPermissionsMiddleware;
|
12
|
-
exports.getDecodedBearer = middlewares_1.getDecodedBearer;
|
13
|
-
//# sourceMappingURL=index.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/identity/index.ts"],"names":[],"mappings":";;;;;AAAA,wDAAgC;AAS9B,kBATK,iBAAO,CASL;AART,+CAKuB;AAIrB,qBARA,wBAAU,CAQA;AACV,+BARA,kCAAoB,CAQA;AACpB,yCARA,4CAA8B,CAQA;AAC9B,2BARA,8BAAgB,CAQA"}
|
@@ -1,12 +0,0 @@
|
|
1
|
-
import ApiUser from './ApiUser';
|
2
|
-
export declare const middleware: (options?: {
|
3
|
-
eagerLoadUserPermissions?: boolean;
|
4
|
-
eagerLoadUserPermissionsLegacy?: boolean;
|
5
|
-
}) => (req: any, res: any, next: any) => Promise<void>;
|
6
|
-
export declare const middlewareWithDecode: (options?: {
|
7
|
-
eagerLoadUserPermissions?: boolean;
|
8
|
-
eagerLoadUserPermissionsLegacy?: boolean;
|
9
|
-
}) => (req: any, res: any, next: any) => Promise<void>;
|
10
|
-
export declare const eagerLoadPermissionsMiddleware: (req: any, res: any, next: any) => Promise<any>;
|
11
|
-
export declare const getDecodedBearer: (req: any) => any;
|
12
|
-
export default ApiUser;
|
@@ -1,69 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
-
});
|
10
|
-
};
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
|
-
};
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
15
|
-
const ApiUser_1 = __importDefault(require("./ApiUser"));
|
16
|
-
const tracer_1 = require("../tracer");
|
17
|
-
const utils_1 = require("./utils");
|
18
|
-
exports.middleware = (options = {}) => (req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
|
19
|
-
const userId = req.headers['x-af-user-id'];
|
20
|
-
const trace = tracer_1.getCurrentTrace();
|
21
|
-
if (!userId) {
|
22
|
-
trace.context.set('userObject', {});
|
23
|
-
return next();
|
24
|
-
}
|
25
|
-
const userObject = new ApiUser_1.default(userId);
|
26
|
-
if (options.eagerLoadUserPermissions) {
|
27
|
-
yield userObject.getUserPermissions();
|
28
|
-
}
|
29
|
-
if (options.eagerLoadUserPermissionsLegacy) {
|
30
|
-
yield userObject.getUserPermissionsLegacy();
|
31
|
-
}
|
32
|
-
req.user = userObject;
|
33
|
-
trace.context.set('userObject', userObject);
|
34
|
-
return next();
|
35
|
-
});
|
36
|
-
exports.middlewareWithDecode = (options = {}) => (req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
|
37
|
-
var _a, _b;
|
38
|
-
const trace = tracer_1.getCurrentTrace();
|
39
|
-
if (req.headers.authorization) {
|
40
|
-
const decoded = utils_1.decodeBearer(req.headers.authorization);
|
41
|
-
const userId = (_b = (_a = decoded) === null || _a === void 0 ? void 0 : _a.user) === null || _b === void 0 ? void 0 : _b.id;
|
42
|
-
if (userId) {
|
43
|
-
req.headers['X-AF-USER-ID'] = userId;
|
44
|
-
}
|
45
|
-
const userObject = new ApiUser_1.default(userId);
|
46
|
-
if (options.eagerLoadUserPermissions) {
|
47
|
-
yield userObject.getUserPermissions();
|
48
|
-
}
|
49
|
-
if (options.eagerLoadUserPermissionsLegacy) {
|
50
|
-
yield userObject.getUserPermissionsLegacy();
|
51
|
-
}
|
52
|
-
req.user = userObject;
|
53
|
-
trace.context.set('userObject', userObject);
|
54
|
-
}
|
55
|
-
trace.context.set('userObject', {});
|
56
|
-
return next();
|
57
|
-
});
|
58
|
-
exports.eagerLoadPermissionsMiddleware = (req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
|
59
|
-
yield req.user.getUserPermissions();
|
60
|
-
return next();
|
61
|
-
});
|
62
|
-
exports.getDecodedBearer = (req) => {
|
63
|
-
if (req.headers.authorization) {
|
64
|
-
return utils_1.decodeBearer(req.headers.authorization);
|
65
|
-
}
|
66
|
-
return null;
|
67
|
-
};
|
68
|
-
exports.default = ApiUser_1.default;
|
69
|
-
//# sourceMappingURL=middlewares.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"middlewares.js","sourceRoot":"","sources":["../../../src/identity/middlewares.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,wDAAgC;AAChC,sCAA4C;AAC5C,mCAAuC;AAE1B,QAAA,UAAU,GAAG,CAAC,UAGvB,EAAE,EAAE,EAAE,CAAC,CAAO,GAAG,EAAE,GAAG,EAAE,IAAI,EAAiB,EAAE;IACjD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,wBAAe,EAAE,CAAC;IAChC,IAAI,CAAC,MAAM,EAAE;QACX,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACpC,OAAO,IAAI,EAAE,CAAC;KACf;IAED,MAAM,UAAU,GAAG,IAAI,iBAAO,CAAC,MAAM,CAAC,CAAC;IAEvC,IAAI,OAAO,CAAC,wBAAwB,EAAE;QACpC,MAAM,UAAU,CAAC,kBAAkB,EAAE,CAAC;KACvC;IAED,IAAI,OAAO,CAAC,8BAA8B,EAAE;QAC1C,MAAM,UAAU,CAAC,wBAAwB,EAAE,CAAC;KAC7C;IAED,GAAG,CAAC,IAAI,GAAG,UAAU,CAAC;IACtB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAE5C,OAAO,IAAI,EAAE,CAAC;AAChB,CAAC,CAAA,CAAC;AAEW,QAAA,oBAAoB,GAAG,CAAC,UAGjC,EAAE,EAAE,EAAE,CAAC,CAAO,GAAG,EAAE,GAAG,EAAE,IAAI,EAAiB,EAAE;;IACjD,MAAM,KAAK,GAAG,wBAAe,EAAE,CAAC;IAChC,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE;QAC7B,MAAM,OAAO,GAAG,oBAAY,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACxD,MAAM,MAAM,eAAG,OAAO,0CAAE,IAAI,0CAAE,EAAE,CAAC;QAEjC,IAAI,MAAM,EAAE;YACV,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC;SACtC;QAED,MAAM,UAAU,GAAG,IAAI,iBAAO,CAAC,MAAM,CAAC,CAAC;QAEvC,IAAI,OAAO,CAAC,wBAAwB,EAAE;YACpC,MAAM,UAAU,CAAC,kBAAkB,EAAE,CAAC;SACvC;QAED,IAAI,OAAO,CAAC,8BAA8B,EAAE;YAC1C,MAAM,UAAU,CAAC,wBAAwB,EAAE,CAAC;SAC7C;QAED,GAAG,CAAC,IAAI,GAAG,UAAU,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;KAC7C;IAED,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACpC,OAAO,IAAI,EAAE,CAAC;AAChB,CAAC,CAAA,CAAC;AAEW,QAAA,8BAA8B,GAAG,CAAO,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IACrE,MAAM,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACpC,OAAO,IAAI,EAAE,CAAC;AAChB,CAAC,CAAA,CAAC;AAEW,QAAA,gBAAgB,GAAG,CAAC,GAAG,EAAE,EAAE;IACtC,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE;QAC7B,OAAO,oBAAY,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;KAChD;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,kBAAe,iBAAO,CAAC"}
|
@@ -1,5 +0,0 @@
|
|
1
|
-
export declare const getAuthFromBearer: (bearer: string) => string;
|
2
|
-
export declare const decodeBearer: (bearer: string) => any;
|
3
|
-
export declare const parsePermissions: (contextId: any, decodedToken: any) => any;
|
4
|
-
export declare const getEntitiesFromContext: (contextId: string, decodedToken: any) => any;
|
5
|
-
export declare const getContextAttributes: (contextId: string, decodedToken: any) => any;
|
@@ -1,79 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
3
|
-
if (mod && mod.__esModule) return mod;
|
4
|
-
var result = {};
|
5
|
-
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
|
6
|
-
result["default"] = mod;
|
7
|
-
return result;
|
8
|
-
};
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
10
|
-
/* eslint-disable prefer-destructuring */
|
11
|
-
const jwt = __importStar(require("jsonwebtoken"));
|
12
|
-
const CONTEXT_PROPS = ['fleetId', 'businessModelId', 'demandSourceId'];
|
13
|
-
const CONTEXT_MAP_PROPS = {
|
14
|
-
fleet: 'fleets',
|
15
|
-
business: 'businessModels',
|
16
|
-
demand: 'demandSources',
|
17
|
-
};
|
18
|
-
exports.getAuthFromBearer = (bearer) => bearer.replace('Bearer ', '');
|
19
|
-
exports.decodeBearer = (bearer) => {
|
20
|
-
const token = bearer.replace('Bearer ', '');
|
21
|
-
const decoded = jwt.decode(token);
|
22
|
-
return decoded;
|
23
|
-
};
|
24
|
-
exports.parsePermissions = (contextId, decodedToken) => {
|
25
|
-
var _a;
|
26
|
-
if (!decodedToken) {
|
27
|
-
return [];
|
28
|
-
}
|
29
|
-
const contexts = decodedToken.contexts;
|
30
|
-
const activeContext = contexts.find((context) => context.id === contextId);
|
31
|
-
const permissionsByContext = {};
|
32
|
-
const permissionsValue = `${(_a = activeContext.permissions) === null || _a === void 0 ? void 0 : _a.map((cp) => `${cp},`)}`;
|
33
|
-
return {
|
34
|
-
key: activeContext.entityId,
|
35
|
-
value: permissionsValue,
|
36
|
-
};
|
37
|
-
};
|
38
|
-
exports.getEntitiesFromContext = (contextId, decodedToken) => {
|
39
|
-
if (!decodedToken) {
|
40
|
-
return [];
|
41
|
-
}
|
42
|
-
let contexts = decodedToken.contexts;
|
43
|
-
if (contextId) {
|
44
|
-
contexts = contexts.filter((context) => context.id === contextId);
|
45
|
-
}
|
46
|
-
const attributes = {};
|
47
|
-
contexts.forEach((context) => {
|
48
|
-
const prop = CONTEXT_MAP_PROPS[context.subSystem || 'business'];
|
49
|
-
const permissions = exports.parsePermissions(context.id, decodedToken);
|
50
|
-
// eslint-disable-next-line no-unused-expressions
|
51
|
-
attributes[prop]
|
52
|
-
? attributes[prop][permissions.key] = permissions.value
|
53
|
-
: attributes[prop] = { [permissions.key]: permissions.value };
|
54
|
-
});
|
55
|
-
return attributes;
|
56
|
-
};
|
57
|
-
exports.getContextAttributes = (contextId, decodedToken) => {
|
58
|
-
if (!decodedToken) {
|
59
|
-
return [];
|
60
|
-
}
|
61
|
-
let contexts = decodedToken.contexts;
|
62
|
-
if (contextId) {
|
63
|
-
contexts = contexts.filter((context) => context.id === contextId);
|
64
|
-
}
|
65
|
-
const attributes = {};
|
66
|
-
contexts.forEach((context) => {
|
67
|
-
CONTEXT_PROPS.forEach((prop) => {
|
68
|
-
if (context[prop]) {
|
69
|
-
const contextPropWrapped = [context[prop]];
|
70
|
-
// eslint-disable-next-line no-unused-expressions
|
71
|
-
attributes[prop]
|
72
|
-
? attributes[prop] = attributes[prop].concat(contextPropWrapped)
|
73
|
-
: attributes[prop] = contextPropWrapped;
|
74
|
-
}
|
75
|
-
});
|
76
|
-
});
|
77
|
-
return attributes;
|
78
|
-
};
|
79
|
-
//# sourceMappingURL=utils.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/identity/utils.ts"],"names":[],"mappings":"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"}
|
@@ -1 +0,0 @@
|
|
1
|
-
export declare const IdentityNetwork: any;
|
@@ -1,17 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
-
};
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
/* eslint-disable import/prefer-default-export */
|
7
|
-
const network_1 = __importDefault(require("@autofleet/network"));
|
8
|
-
const CACHE_LIFETIME_IN_SEC = 10;
|
9
|
-
exports.IdentityNetwork = new network_1.default({
|
10
|
-
serviceName: 'IDENTITY_MS',
|
11
|
-
retries: 3,
|
12
|
-
retryCondition: () => true,
|
13
|
-
cache: process.env.NODE_ENV !== 'test' ? {
|
14
|
-
maxAge: CACHE_LIFETIME_IN_SEC * 1000,
|
15
|
-
} : undefined,
|
16
|
-
});
|
17
|
-
//# sourceMappingURL=index.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/network/index.ts"],"names":[],"mappings":";;;;;AAAA,iDAAiD;AACjD,iEAAyC;AAEzC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAEpB,QAAA,eAAe,GAAG,IAAI,iBAAO,CAAC;IACzC,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,CAAC;IACV,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI;IAC1B,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC;QACvC,MAAM,EAAE,qBAAqB,GAAG,IAAI;KACrC,CAAC,CAAC,CAAC,SAAS;CACd,CAAC,CAAC"}
|
@@ -1,16 +0,0 @@
|
|
1
|
-
/// <reference types="node" />
|
2
|
-
import asyncHooks from 'async_hooks';
|
3
|
-
declare class Trace {
|
4
|
-
id: string;
|
5
|
-
type: string;
|
6
|
-
context: Map<string, any>;
|
7
|
-
hooks: {
|
8
|
-
[key: string]: Function[];
|
9
|
-
};
|
10
|
-
constructor(type: any);
|
11
|
-
}
|
12
|
-
declare const executionContextMap: Map<number, Trace>;
|
13
|
-
export declare const newTrace: (type: any) => Trace;
|
14
|
-
export declare const enable: () => asyncHooks.AsyncHook;
|
15
|
-
export declare const getCurrentTrace: () => Trace;
|
16
|
-
export default executionContextMap;
|
package/dist/src/tracer/index.js
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
-
};
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
const async_hooks_1 = __importDefault(require("async_hooks"));
|
7
|
-
const uuid_1 = __importDefault(require("uuid"));
|
8
|
-
class Trace {
|
9
|
-
constructor(type) {
|
10
|
-
this.id = uuid_1.default.v1();
|
11
|
-
this.type = type;
|
12
|
-
this.context = new Map();
|
13
|
-
this.hooks = {
|
14
|
-
onDestroy: [],
|
15
|
-
};
|
16
|
-
}
|
17
|
-
}
|
18
|
-
const executionContextMap = new Map();
|
19
|
-
function init(asyncId, type, triggerAsyncId) {
|
20
|
-
if (executionContextMap.has(triggerAsyncId)) {
|
21
|
-
executionContextMap.set(asyncId, executionContextMap.get(triggerAsyncId));
|
22
|
-
}
|
23
|
-
}
|
24
|
-
function destroy(asyncId) {
|
25
|
-
const ecValue = executionContextMap.get(asyncId);
|
26
|
-
if (ecValue) {
|
27
|
-
ecValue.hooks.onDestroy.map((cb) => cb(asyncId, ecValue));
|
28
|
-
}
|
29
|
-
executionContextMap.delete(asyncId);
|
30
|
-
}
|
31
|
-
const hook = async_hooks_1.default.createHook({
|
32
|
-
init, destroy,
|
33
|
-
});
|
34
|
-
exports.newTrace = (type) => {
|
35
|
-
const trace = new Trace(type);
|
36
|
-
executionContextMap.set(async_hooks_1.default.executionAsyncId(), trace);
|
37
|
-
return trace;
|
38
|
-
};
|
39
|
-
exports.enable = () => hook.enable();
|
40
|
-
exports.getCurrentTrace = () => {
|
41
|
-
const currentContext = executionContextMap.get(async_hooks_1.default.executionAsyncId());
|
42
|
-
if (!currentContext) {
|
43
|
-
return exports.newTrace('initialContext');
|
44
|
-
}
|
45
|
-
return currentContext;
|
46
|
-
};
|
47
|
-
exports.default = executionContextMap;
|
48
|
-
//# sourceMappingURL=index.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tracer/index.ts"],"names":[],"mappings":";;;;;AAAA,8DAAqC;AACrC,gDAAwB;AAExB,MAAM,KAAK;IAST,YAAY,IAAI;QACd,IAAI,CAAC,EAAE,GAAG,cAAI,CAAC,EAAE,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG;YACX,SAAS,EAAE,EAAE;SACd,CAAA;IACH,CAAC;CACF;AAED,MAAM,mBAAmB,GAAuB,IAAI,GAAG,EAAE,CAAC;AAE1D,SAAS,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,cAAc;IACzC,IAAI,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;QAC3C,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;KAC3E;AACH,CAAC;AAED,SAAS,OAAO,CAAC,OAAO;IACtB,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,OAAO,EAAE;QACX,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;KAC3D;IACD,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,IAAI,GAAG,qBAAU,CAAC,UAAU,CAAC;IACjC,IAAI,EAAE,OAAO;CACd,CAAC,CAAC;AAEU,QAAA,QAAQ,GAAG,CAAC,IAAI,EAAS,EAAE;IACtC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,mBAAmB,CAAC,GAAG,CAAC,qBAAU,CAAC,gBAAgB,EAAE,EAAE,KAAK,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEW,QAAA,MAAM,GAAG,GAAyB,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AAEnD,QAAA,eAAe,GAAG,GAAU,EAAE;IACzC,MAAM,cAAc,GAAG,mBAAmB,CAAC,GAAG,CAAC,qBAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC9E,IAAI,CAAC,cAAc,EAAE;QACnB,OAAO,gBAAQ,CAAC,gBAAgB,CAAC,CAAC;KACnC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AAEF,kBAAe,mBAAmB,CAAC"}
|