apitally 0.1.6 → 0.2.0
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/lib/cjs/common/client.cjs +8 -8
- package/lib/cjs/common/client.cjs.map +1 -1
- package/lib/cjs/common/requestCounter.cjs +109 -0
- package/lib/cjs/common/requestCounter.cjs.map +1 -0
- package/lib/cjs/common/{validationErrorLogger.cjs → validationErrorCounter.cjs} +8 -8
- package/lib/cjs/common/validationErrorCounter.cjs.map +1 -0
- package/lib/cjs/express/middleware.cjs +5 -3
- package/lib/cjs/express/middleware.cjs.map +1 -1
- package/lib/cjs/fastify/plugin.cjs +10 -3
- package/lib/cjs/fastify/plugin.cjs.map +1 -1
- package/lib/cjs/koa/middleware.cjs +4 -2
- package/lib/cjs/koa/middleware.cjs.map +1 -1
- package/lib/esm/common/client.js +8 -8
- package/lib/esm/common/client.js.map +1 -1
- package/lib/esm/common/requestCounter.js +103 -0
- package/lib/esm/common/requestCounter.js.map +1 -0
- package/lib/esm/common/{validationErrorLogger.js → validationErrorCounter.js} +9 -9
- package/lib/esm/common/validationErrorCounter.js.map +1 -0
- package/lib/esm/express/middleware.js +5 -3
- package/lib/esm/express/middleware.js.map +1 -1
- package/lib/esm/fastify/plugin.js +10 -3
- package/lib/esm/fastify/plugin.js.map +1 -1
- package/lib/esm/koa/middleware.js +4 -2
- package/lib/esm/koa/middleware.js.map +1 -1
- package/lib/types/common/client.d.ts +4 -4
- package/lib/types/common/client.d.ts.map +1 -1
- package/lib/types/common/requestCounter.d.ts +14 -0
- package/lib/types/common/requestCounter.d.ts.map +1 -0
- package/lib/types/common/types.d.ts +6 -0
- package/lib/types/common/types.d.ts.map +1 -1
- package/lib/types/common/{validationErrorLogger.d.ts → validationErrorCounter.d.ts} +3 -3
- package/lib/types/common/validationErrorCounter.d.ts.map +1 -0
- package/lib/types/fastify/plugin.d.ts.map +1 -1
- package/package.json +3 -1
- package/lib/cjs/common/requestLogger.cjs +0 -69
- package/lib/cjs/common/requestLogger.cjs.map +0 -1
- package/lib/cjs/common/validationErrorLogger.cjs.map +0 -1
- package/lib/esm/common/requestLogger.js +0 -63
- package/lib/esm/common/requestLogger.js.map +0 -1
- package/lib/esm/common/validationErrorLogger.js.map +0 -1
- package/lib/types/common/requestLogger.d.ts +0 -10
- package/lib/types/common/requestLogger.d.ts.map +0 -1
- package/lib/types/common/validationErrorLogger.d.ts.map +0 -1
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
|
+
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
3
|
+
import _createClass from "@babel/runtime/helpers/createClass";
|
|
4
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
5
|
+
var RequestCounter = /*#__PURE__*/function () {
|
|
6
|
+
function RequestCounter() {
|
|
7
|
+
_classCallCheck(this, RequestCounter);
|
|
8
|
+
_defineProperty(this, "requestCounts", void 0);
|
|
9
|
+
_defineProperty(this, "requestSizeSums", void 0);
|
|
10
|
+
_defineProperty(this, "responseSizeSums", void 0);
|
|
11
|
+
_defineProperty(this, "responseTimes", void 0);
|
|
12
|
+
_defineProperty(this, "requestSizes", void 0);
|
|
13
|
+
_defineProperty(this, "responseSizes", void 0);
|
|
14
|
+
this.requestCounts = new Map();
|
|
15
|
+
this.requestSizeSums = new Map();
|
|
16
|
+
this.responseSizeSums = new Map();
|
|
17
|
+
this.responseTimes = new Map();
|
|
18
|
+
this.requestSizes = new Map();
|
|
19
|
+
this.responseSizes = new Map();
|
|
20
|
+
}
|
|
21
|
+
_createClass(RequestCounter, [{
|
|
22
|
+
key: "getKey",
|
|
23
|
+
value: function getKey(requestInfo) {
|
|
24
|
+
return [requestInfo.consumer || "", requestInfo.method.toUpperCase(), requestInfo.path, requestInfo.statusCode].join("|");
|
|
25
|
+
}
|
|
26
|
+
}, {
|
|
27
|
+
key: "addRequest",
|
|
28
|
+
value: function addRequest(requestInfo) {
|
|
29
|
+
var key = this.getKey(requestInfo);
|
|
30
|
+
// Increment request count
|
|
31
|
+
this.requestCounts.set(key, (this.requestCounts.get(key) || 0) + 1);
|
|
32
|
+
// Add response time
|
|
33
|
+
if (!this.responseTimes.has(key)) {
|
|
34
|
+
this.responseTimes.set(key, new Map());
|
|
35
|
+
}
|
|
36
|
+
var responseTimeMap = this.responseTimes.get(key);
|
|
37
|
+
var responseTimeMsBin = Math.floor(requestInfo.responseTime / 10) * 10; // Rounded to nearest 10ms
|
|
38
|
+
responseTimeMap.set(responseTimeMsBin, (responseTimeMap.get(responseTimeMsBin) || 0) + 1);
|
|
39
|
+
// Add request size
|
|
40
|
+
if (requestInfo.requestSize !== undefined) {
|
|
41
|
+
requestInfo.requestSize = Number(requestInfo.requestSize);
|
|
42
|
+
this.requestSizeSums.set(key, (this.requestSizeSums.get(key) || 0) + requestInfo.requestSize);
|
|
43
|
+
if (!this.requestSizes.has(key)) {
|
|
44
|
+
this.requestSizes.set(key, new Map());
|
|
45
|
+
}
|
|
46
|
+
var requestSizeMap = this.requestSizes.get(key);
|
|
47
|
+
var requestSizeKbBin = Math.floor(requestInfo.requestSize / 1000); // Rounded down to nearest KB
|
|
48
|
+
requestSizeMap.set(requestSizeKbBin, (requestSizeMap.get(requestSizeKbBin) || 0) + 1);
|
|
49
|
+
}
|
|
50
|
+
// Add response size
|
|
51
|
+
if (requestInfo.responseSize !== undefined) {
|
|
52
|
+
requestInfo.responseSize = Number(requestInfo.responseSize);
|
|
53
|
+
this.responseSizeSums.set(key, (this.responseSizeSums.get(key) || 0) + requestInfo.responseSize);
|
|
54
|
+
if (!this.responseSizes.has(key)) {
|
|
55
|
+
this.responseSizes.set(key, new Map());
|
|
56
|
+
}
|
|
57
|
+
var responseSizeMap = this.responseSizes.get(key);
|
|
58
|
+
var responseSizeKbBin = Math.floor(requestInfo.responseSize / 1000); // Rounded down to nearest KB
|
|
59
|
+
responseSizeMap.set(responseSizeKbBin, (responseSizeMap.get(responseSizeKbBin) || 0) + 1);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}, {
|
|
63
|
+
key: "getAndResetRequests",
|
|
64
|
+
value: function getAndResetRequests() {
|
|
65
|
+
var _this = this;
|
|
66
|
+
var data = [];
|
|
67
|
+
this.requestCounts.forEach(function (count, key) {
|
|
68
|
+
var _key$split = key.split("|"),
|
|
69
|
+
_key$split2 = _slicedToArray(_key$split, 4),
|
|
70
|
+
consumer = _key$split2[0],
|
|
71
|
+
method = _key$split2[1],
|
|
72
|
+
path = _key$split2[2],
|
|
73
|
+
statusCodeStr = _key$split2[3];
|
|
74
|
+
var responseTimes = _this.responseTimes.get(key) || new Map();
|
|
75
|
+
var requestSizes = _this.requestSizes.get(key) || new Map();
|
|
76
|
+
var responseSizes = _this.responseSizes.get(key) || new Map();
|
|
77
|
+
data.push({
|
|
78
|
+
consumer: consumer || null,
|
|
79
|
+
method: method,
|
|
80
|
+
path: path,
|
|
81
|
+
status_code: parseInt(statusCodeStr),
|
|
82
|
+
request_count: count,
|
|
83
|
+
request_size_sum: _this.requestSizeSums.get(key) || 0,
|
|
84
|
+
response_size_sum: _this.responseSizeSums.get(key) || 0,
|
|
85
|
+
response_times: Object.fromEntries(responseTimes),
|
|
86
|
+
request_sizes: Object.fromEntries(requestSizes),
|
|
87
|
+
response_sizes: Object.fromEntries(responseSizes)
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
// Reset the counts and times
|
|
91
|
+
this.requestCounts.clear();
|
|
92
|
+
this.requestSizeSums.clear();
|
|
93
|
+
this.responseSizeSums.clear();
|
|
94
|
+
this.responseTimes.clear();
|
|
95
|
+
this.requestSizes.clear();
|
|
96
|
+
this.responseSizes.clear();
|
|
97
|
+
return data;
|
|
98
|
+
}
|
|
99
|
+
}]);
|
|
100
|
+
return RequestCounter;
|
|
101
|
+
}();
|
|
102
|
+
export { RequestCounter as default };
|
|
103
|
+
//# sourceMappingURL=requestCounter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestCounter.js","names":["RequestCounter","_classCallCheck","_defineProperty","requestCounts","Map","requestSizeSums","responseSizeSums","responseTimes","requestSizes","responseSizes","_createClass","key","value","getKey","requestInfo","consumer","method","toUpperCase","path","statusCode","join","addRequest","set","get","has","responseTimeMap","responseTimeMsBin","Math","floor","responseTime","requestSize","undefined","Number","requestSizeMap","requestSizeKbBin","responseSize","responseSizeMap","responseSizeKbBin","getAndResetRequests","_this","data","forEach","count","_key$split","split","_key$split2","_slicedToArray","statusCodeStr","push","status_code","parseInt","request_count","request_size_sum","response_size_sum","response_times","Object","fromEntries","request_sizes","response_sizes","clear","default"],"sources":["../../../src/common/requestCounter.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -2,20 +2,20 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
|
2
2
|
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
3
3
|
import _createClass from "@babel/runtime/helpers/createClass";
|
|
4
4
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
5
|
-
var
|
|
6
|
-
function
|
|
7
|
-
_classCallCheck(this,
|
|
5
|
+
var ValidationErrorCounter = /*#__PURE__*/function () {
|
|
6
|
+
function ValidationErrorCounter() {
|
|
7
|
+
_classCallCheck(this, ValidationErrorCounter);
|
|
8
8
|
_defineProperty(this, "errorCounts", void 0);
|
|
9
9
|
this.errorCounts = new Map();
|
|
10
10
|
}
|
|
11
|
-
_createClass(
|
|
11
|
+
_createClass(ValidationErrorCounter, [{
|
|
12
12
|
key: "getKey",
|
|
13
13
|
value: function getKey(validationError) {
|
|
14
14
|
return [validationError.consumer || "", validationError.method.toUpperCase(), validationError.path, validationError.loc, validationError.msg, validationError.type].join("|");
|
|
15
15
|
}
|
|
16
16
|
}, {
|
|
17
|
-
key: "
|
|
18
|
-
value: function
|
|
17
|
+
key: "addValidationError",
|
|
18
|
+
value: function addValidationError(validationError) {
|
|
19
19
|
var key = this.getKey(validationError);
|
|
20
20
|
this.errorCounts.set(key, (this.errorCounts.get(key) || 0) + 1);
|
|
21
21
|
}
|
|
@@ -46,7 +46,7 @@ var ValidationErrorLogger = /*#__PURE__*/function () {
|
|
|
46
46
|
return data;
|
|
47
47
|
}
|
|
48
48
|
}]);
|
|
49
|
-
return
|
|
49
|
+
return ValidationErrorCounter;
|
|
50
50
|
}();
|
|
51
|
-
export {
|
|
52
|
-
//# sourceMappingURL=
|
|
51
|
+
export { ValidationErrorCounter as default };
|
|
52
|
+
//# sourceMappingURL=validationErrorCounter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validationErrorCounter.js","names":["ValidationErrorCounter","_classCallCheck","_defineProperty","errorCounts","Map","_createClass","key","value","getKey","validationError","consumer","method","toUpperCase","path","loc","msg","type","join","addValidationError","set","get","getAndResetValidationErrors","data","forEach","count","_key$split","split","_key$split2","_slicedToArray","push","error_count","clear","default"],"sources":["../../../src/common/validationErrorCounter.ts"],"sourcesContent":[null],"mappings":";;;;IAMqBA,sBAAsB;EAGzC,SAAAA,uBAAA;IAAAC,eAAA,OAAAD,sBAAA;IAAAE,eAAA;IACE,IAAI,CAACC,WAAW,GAAG,IAAIC,GAAG,EAAkB;EAC9C;EAACC,YAAA,CAAAL,sBAAA;IAAAM,GAAA;IAAAC,KAAA,EAEO,SAAAC,OAAOC,eAAqD;MAClE,OAAO,CACLA,eAAe,CAACC,QAAQ,IAAI,EAAE,EAC9BD,eAAe,CAACE,MAAM,CAACC,WAAW,EAAE,EACpCH,eAAe,CAACI,IAAI,EACpBJ,eAAe,CAACK,GAAG,EACnBL,eAAe,CAACM,GAAG,EACnBN,eAAe,CAACO,IAAI,CACrB,CAACC,IAAI,CAAC,GAAG,CAAC;IACb;EAAC;IAAAX,GAAA;IAAAC,KAAA,EAEM,SAAAW,mBACLT,eAAqD;MAErD,IAAMH,GAAG,GAAG,IAAI,CAACE,MAAM,CAACC,eAAe,CAAC;MACxC,IAAI,CAACN,WAAW,CAACgB,GAAG,CAACb,GAAG,EAAE,CAAC,IAAI,CAACH,WAAW,CAACiB,GAAG,CAACd,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjE;EAAC;IAAAA,GAAA;IAAAC,KAAA,EAEM,SAAAc,4BAAA,EAA2B;MAChC,IAAMC,IAAI,GAAgC,EAAE;MAC5C,IAAI,CAACnB,WAAW,CAACoB,OAAO,CAAC,UAACC,KAAK,EAAElB,GAAG,EAAI;QACtC,IAAAmB,UAAA,GAAiDnB,GAAG,CAACoB,KAAK,CAAC,GAAG,CAAC;UAAAC,WAAA,GAAAC,cAAA,CAAAH,UAAA;UAAxDf,QAAQ,GAAAiB,WAAA;UAAEhB,MAAM,GAAAgB,WAAA;UAAEd,IAAI,GAAAc,WAAA;UAAEb,GAAG,GAAAa,WAAA;UAAEZ,GAAG,GAAAY,WAAA;UAAEX,IAAI,GAAAW,WAAA;QAC7CL,IAAI,CAACO,IAAI,CAAC;UACRnB,QAAQ,EAAEA,QAAQ,IAAI,IAAI;UAC1BC,MAAM,EAANA,MAAM;UACNE,IAAI,EAAJA,IAAI;UACJC,GAAG,EAAEA,GAAG,CAACY,KAAK,CAAC,GAAG,CAAC;UACnBX,GAAG,EAAHA,GAAG;UACHC,IAAI,EAAJA,IAAI;UACJc,WAAW,EAAEN;SACd,CAAC;MACJ,CAAC,CAAC;MACF,IAAI,CAACrB,WAAW,CAAC4B,KAAK,EAAE;MACxB,OAAOT,IAAI;IACb;EAAC;EAAA,OAAAtB,sBAAA;AAAA;AAAA,SAzCkBA,sBAAsB,IAAAgC,OAAA"}
|
|
@@ -32,12 +32,14 @@ var getMiddleware = function getMiddleware(client) {
|
|
|
32
32
|
try {
|
|
33
33
|
if (req.route) {
|
|
34
34
|
var responseTime = performance.now() - startTime;
|
|
35
|
-
client.
|
|
35
|
+
client.requestCounter.addRequest({
|
|
36
36
|
consumer: getConsumer(req),
|
|
37
37
|
method: req.method,
|
|
38
38
|
path: req.route.path,
|
|
39
39
|
statusCode: res.statusCode,
|
|
40
|
-
responseTime: responseTime
|
|
40
|
+
responseTime: responseTime,
|
|
41
|
+
requestSize: req.get("content-length"),
|
|
42
|
+
responseSize: res.get("content-length")
|
|
41
43
|
});
|
|
42
44
|
if ((res.statusCode === 400 || res.statusCode === 422) && res.locals.body) {
|
|
43
45
|
var validationErrors = [];
|
|
@@ -51,7 +53,7 @@ var getMiddleware = function getMiddleware(client) {
|
|
|
51
53
|
validationErrors.push.apply(validationErrors, _toConsumableArray(extractNestValidationErrors(res.locals.body)));
|
|
52
54
|
}
|
|
53
55
|
validationErrors.forEach(function (error) {
|
|
54
|
-
client.
|
|
56
|
+
client.validationErrorCounter.addValidationError(_objectSpread({
|
|
55
57
|
consumer: getConsumer(req),
|
|
56
58
|
method: req.method,
|
|
57
59
|
path: req.route.path
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","names":["performance","ApitallyClient","KeyInfo","getPackageVersion","listEndpoints","useApitally","app","config","client","middleware","getMiddleware","use","setTimeout","setAppInfo","getAppInfo","appVersion","validatorInstalled","celebrateInstalled","nestInstalled","classValidatorInstalled","req","res","next","startTime","now","originalJson","json","body","locals","call","on","route","responseTime","
|
|
1
|
+
{"version":3,"file":"middleware.js","names":["performance","ApitallyClient","KeyInfo","getPackageVersion","listEndpoints","useApitally","app","config","client","middleware","getMiddleware","use","setTimeout","setAppInfo","getAppInfo","appVersion","validatorInstalled","celebrateInstalled","nestInstalled","classValidatorInstalled","req","res","next","startTime","now","originalJson","json","body","locals","call","on","route","responseTime","requestCounter","addRequest","consumer","getConsumer","method","path","statusCode","requestSize","get","responseSize","validationErrors","push","apply","_toConsumableArray","extractExpressValidatorErrors","extractCelebrateErrors","extractNestValidationErrors","forEach","error","validationErrorCounter","addValidationError","_objectSpread","logger","request","response","consumerIdentifier","String","keyInfo","concat","keyId","responseBody","errors","Array","isArray","location","msg","type","loc","validation","Object","values","source","keys","message","key","subsetJoiMessage","messageWithKey","split","find","includes","versions","process","version","replace","expressVersion","apitallyVersion","paths","fromEntries"],"sources":["../../../src/express/middleware.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -53,17 +53,24 @@ var apitallyPlugin = /*#__PURE__*/function () {
|
|
|
53
53
|
fastify.addHook("onResponse", function (request, reply, done) {
|
|
54
54
|
// Get path from routeOptions if available (from v4), otherwise fallback to deprecated routerPath
|
|
55
55
|
var path = "routeOptions" in request ? request.routeOptions.url : request.routerPath;
|
|
56
|
-
|
|
56
|
+
var requestSize = request.headers["content-length"];
|
|
57
|
+
var responseSize = reply.getHeader("content-length");
|
|
58
|
+
if (Array.isArray(responseSize)) {
|
|
59
|
+
responseSize = responseSize[0];
|
|
60
|
+
}
|
|
61
|
+
client.requestCounter.addRequest({
|
|
57
62
|
consumer: getConsumer(request),
|
|
58
63
|
method: request.method,
|
|
59
64
|
path: path,
|
|
60
65
|
statusCode: reply.statusCode,
|
|
61
|
-
responseTime: reply.getResponseTime()
|
|
66
|
+
responseTime: reply.getResponseTime(),
|
|
67
|
+
requestSize: requestSize,
|
|
68
|
+
responseSize: responseSize
|
|
62
69
|
});
|
|
63
70
|
if ((reply.statusCode === 400 || reply.statusCode === 422) && reply.payload && (!reply.payload.code || reply.payload.code === "FST_ERR_VALIDATION") && typeof reply.payload.message === "string") {
|
|
64
71
|
var validationErrors = extractAjvErrors(reply.payload.message);
|
|
65
72
|
validationErrors.forEach(function (error) {
|
|
66
|
-
client.
|
|
73
|
+
client.validationErrorCounter.addValidationError(_objectSpread({
|
|
67
74
|
consumer: getConsumer(request),
|
|
68
75
|
method: request.method,
|
|
69
76
|
path: path
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","names":["fp","ApitallyClient","KeyInfo","getPackageVersion","apitallyPlugin","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","fastify","config","client","routes","wrap","_callee2$","_context2","prev","next","decorateRequest","decorateReply","addHook","routeOptions","methods","Array","isArray","method","forEach","includes","toUpperCase","push","path","url","setAppInfo","getAppInfo","appVersion","_callee","_callee$","_context","handleShutdown","stop","request","reply","payload","done","JSON","parse","error","routerPath","
|
|
1
|
+
{"version":3,"file":"plugin.js","names":["fp","ApitallyClient","KeyInfo","getPackageVersion","apitallyPlugin","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","fastify","config","client","routes","wrap","_callee2$","_context2","prev","next","decorateRequest","decorateReply","addHook","routeOptions","methods","Array","isArray","method","forEach","includes","toUpperCase","push","path","url","setAppInfo","getAppInfo","appVersion","_callee","_callee$","_context","handleShutdown","stop","request","reply","payload","done","JSON","parse","error","routerPath","requestSize","headers","responseSize","getHeader","requestCounter","addRequest","consumer","getConsumer","statusCode","responseTime","getResponseTime","code","message","validationErrors","extractAjvErrors","validationErrorCounter","addValidationError","_objectSpread","_x","_x2","apply","arguments","versions","process","version","replace","fastifyVersion","apitallyVersion","paths","Object","fromEntries","consumerIdentifier","String","keyInfo","concat","keyId","regex","matches","match","exec","index","map","m","i","endIndex","length","matchSplit","split","loc","join","msg","substring","type","name"],"sources":["../../../src/fastify/plugin.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -35,12 +35,14 @@ var getMiddleware = function getMiddleware(client) {
|
|
|
35
35
|
try {
|
|
36
36
|
// _matchedRoute is set by koa-router, routePath is set by koa-route
|
|
37
37
|
if (ctx._matchedRoute || ctx.routePath) {
|
|
38
|
-
client.
|
|
38
|
+
client.requestCounter.addRequest({
|
|
39
39
|
consumer: getConsumer(ctx),
|
|
40
40
|
method: ctx.request.method,
|
|
41
41
|
path: ctx._matchedRoute || ctx.routePath,
|
|
42
42
|
statusCode: statusCode || ctx.response.status,
|
|
43
|
-
responseTime: performance.now() - startTime
|
|
43
|
+
responseTime: performance.now() - startTime,
|
|
44
|
+
requestSize: ctx.request.length,
|
|
45
|
+
responseSize: ctx.response.length
|
|
44
46
|
});
|
|
45
47
|
}
|
|
46
48
|
} catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","names":["ApitallyClient","KeyInfo","getPackageVersion","useApitally","app","config","client","middleware","getMiddleware","use","setTimeout","setAppInfo","getAppInfo","appVersion","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","ctx","next","startTime","statusCode","wrap","_callee$","_context","prev","performance","now","t0","status","_matchedRoute","routePath","
|
|
1
|
+
{"version":3,"file":"middleware.js","names":["ApitallyClient","KeyInfo","getPackageVersion","useApitally","app","config","client","middleware","getMiddleware","use","setTimeout","setAppInfo","getAppInfo","appVersion","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","ctx","next","startTime","statusCode","wrap","_callee$","_context","prev","performance","now","t0","status","_matchedRoute","routePath","requestCounter","addRequest","consumer","getConsumer","method","request","path","response","responseTime","requestSize","length","responseSize","error","logger","context","finish","stop","_x","_x2","apply","arguments","state","consumerIdentifier","String","keyInfo","concat","keyId","versions","process","version","replace","koaVersion","apitallyVersion","push","paths","listEndpoints","Object","fromEntries","isKoaRouterMiddleware","router","Array","isArray","stack","endpoints","forEach","layer","methods","includes","toUpperCase"],"sources":["../../../src/koa/middleware.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { KeyCacheBase, KeyRegistry } from "./keyRegistry.js";
|
|
2
2
|
import { Logger } from "./logging.js";
|
|
3
|
-
import
|
|
3
|
+
import RequestCounter from "./requestCounter.js";
|
|
4
4
|
import { ApitallyConfig, AppInfo } from "./types.js";
|
|
5
|
-
import
|
|
5
|
+
import ValidationErrorCounter from "./validationErrorCounter.js";
|
|
6
6
|
export declare class ApitallyClient {
|
|
7
7
|
private clientId;
|
|
8
8
|
private env;
|
|
@@ -16,8 +16,8 @@ export declare class ApitallyClient {
|
|
|
16
16
|
private appInfoSent;
|
|
17
17
|
private startedAt;
|
|
18
18
|
private keysUpdated?;
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
requestCounter: RequestCounter;
|
|
20
|
+
validationErrorCounter: ValidationErrorCounter;
|
|
21
21
|
keyRegistry: KeyRegistry;
|
|
22
22
|
keyCache?: KeyCacheBase;
|
|
23
23
|
logger: Logger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/common/client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAa,MAAM,cAAc,CAAC;AAEjD,OAAO,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/common/client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAa,MAAM,cAAc,CAAC;AAEjD,OAAO,cAAc,MAAM,qBAAqB,CAAC;AACjD,OAAO,EACL,cAAc,EACd,OAAO,EAGR,MAAM,YAAY,CAAC;AACpB,OAAO,sBAAsB,MAAM,6BAA6B,CAAC;AAMjE,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,WAAW,CAAU;IAE7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAiB;IACzC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,iBAAiB,CAAuC;IAChE,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,cAAc,CAAC,CAAiB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAC,CAAS;IAEtB,cAAc,EAAE,cAAc,CAAC;IAC/B,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;gBAEV,EACV,QAAQ,EACR,GAAW,EACX,WAAmB,EACnB,MAAM,EACN,aAAa,GACd,EAAE,cAAc;WAwDH,WAAW;WAOL,QAAQ;IAMf,cAAc;IAM3B,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,SAAS;YAOH,IAAI;IAiBlB,OAAO,CAAC,QAAQ;IAOT,UAAU,CAAC,OAAO,EAAE,OAAO;YAMpB,WAAW;YAkCX,gBAAgB;YAsChB,OAAO;IA6BrB,OAAO,CAAC,iBAAiB;CAQ1B"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { RequestInfo, RequestsItem } from "./types.js";
|
|
2
|
+
export default class RequestCounter {
|
|
3
|
+
private requestCounts;
|
|
4
|
+
private requestSizeSums;
|
|
5
|
+
private responseSizeSums;
|
|
6
|
+
private responseTimes;
|
|
7
|
+
private requestSizes;
|
|
8
|
+
private responseSizes;
|
|
9
|
+
constructor();
|
|
10
|
+
private getKey;
|
|
11
|
+
addRequest(requestInfo: RequestInfo): void;
|
|
12
|
+
getAndResetRequests(): RequestsItem[];
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=requestCounter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestCounter.d.ts","sourceRoot":"","sources":["../../../src/common/requestCounter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,CAAC,OAAO,OAAO,cAAc;IACjC,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,eAAe,CAAsB;IAC7C,OAAO,CAAC,gBAAgB,CAAsB;IAC9C,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,YAAY,CAAmC;IACvD,OAAO,CAAC,aAAa,CAAmC;;IAWxD,OAAO,CAAC,MAAM;IASd,UAAU,CAAC,WAAW,EAAE,WAAW;IAsDnC,mBAAmB;CAkCpB"}
|
|
@@ -30,11 +30,17 @@ export type ConsumerMethodPath = {
|
|
|
30
30
|
export type RequestInfo = ConsumerMethodPath & {
|
|
31
31
|
statusCode: number;
|
|
32
32
|
responseTime: number;
|
|
33
|
+
requestSize?: string | number;
|
|
34
|
+
responseSize?: string | number;
|
|
33
35
|
};
|
|
34
36
|
export type RequestsItem = ConsumerMethodPath & {
|
|
35
37
|
status_code: number;
|
|
36
38
|
request_count: number;
|
|
39
|
+
request_size_sum: number;
|
|
40
|
+
response_size_sum: number;
|
|
37
41
|
response_times: Record<number, number>;
|
|
42
|
+
request_sizes: Record<number, number>;
|
|
43
|
+
response_sizes: Record<number, number>;
|
|
38
44
|
};
|
|
39
45
|
export type ValidationError = {
|
|
40
46
|
loc: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,KAAK,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,YAAY,CAAC;CACrE,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC;AAEZ,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,kBAAkB,GAAG;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,KAAK,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,YAAY,CAAC;CACrE,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC;AAEZ,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,kBAAkB,GAAG;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,kBAAkB,GAAG;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,GAAG;IACtD,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC9B,iBAAiB,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC/C,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ConsumerMethodPath, ValidationError, ValidationErrorsItem } from "./types.js";
|
|
2
|
-
export default class
|
|
2
|
+
export default class ValidationErrorCounter {
|
|
3
3
|
private errorCounts;
|
|
4
4
|
constructor();
|
|
5
5
|
private getKey;
|
|
6
|
-
|
|
6
|
+
addValidationError(validationError: ConsumerMethodPath & ValidationError): void;
|
|
7
7
|
getAndResetValidationErrors(): ValidationErrorsItem[];
|
|
8
8
|
}
|
|
9
|
-
//# sourceMappingURL=
|
|
9
|
+
//# sourceMappingURL=validationErrorCounter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validationErrorCounter.d.ts","sourceRoot":"","sources":["../../../src/common/validationErrorCounter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,OAAO,OAAO,sBAAsB;IACzC,OAAO,CAAC,WAAW,CAAsB;;IAMzC,OAAO,CAAC,MAAM;IAWP,kBAAkB,CACvB,eAAe,EAAE,kBAAkB,GAAG,eAAe;IAMhD,2BAA2B;CAiBnC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/fastify/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAkB,MAAM,SAAS,CAAC;AAIlE,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EAAE,cAAc,EAA6B,MAAM,oBAAoB,CAAC;AAE/E,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,YAAY;QACpB,OAAO,EAAE,GAAG,CAAC;KACd;IAED,UAAU,cAAc;QACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB;CACF;;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/fastify/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAkB,MAAM,SAAS,CAAC;AAIlE,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EAAE,cAAc,EAA6B,MAAM,oBAAoB,CAAC;AAE/E,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,YAAY;QACpB,OAAO,EAAE,GAAG,CAAC;KACd;IAED,UAAU,cAAc;QACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB;CACF;;AA0ID,wBAEG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "apitally",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Simple API monitoring and API key management for REST APIs built with Express, Fastify, Koa, and NestJS.",
|
|
5
5
|
"author": "Apitally <hello@apitally.io>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -205,6 +205,7 @@
|
|
|
205
205
|
"@types/express": "^4.17.21",
|
|
206
206
|
"@types/koa": "^2.13.11",
|
|
207
207
|
"@types/koa__router": "^12.0.4",
|
|
208
|
+
"@types/koa-bodyparser": "^4.3.12",
|
|
208
209
|
"@types/koa-route": "^3.2.8",
|
|
209
210
|
"@types/node": "^20.9.0",
|
|
210
211
|
"@types/supertest": "^2.0.16",
|
|
@@ -223,6 +224,7 @@
|
|
|
223
224
|
"fastify-plugin": "^4.5.1",
|
|
224
225
|
"install": "^0.13.0",
|
|
225
226
|
"koa": "^2.14.2",
|
|
227
|
+
"koa-bodyparser": "^4.4.1",
|
|
226
228
|
"koa-route": "^3.2.0",
|
|
227
229
|
"nock": "^13.3.8",
|
|
228
230
|
"npm": "^10.2.4",
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports["default"] = void 0;
|
|
8
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
10
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
11
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
|
-
var RequestLogger = exports["default"] = /*#__PURE__*/function () {
|
|
13
|
-
function RequestLogger() {
|
|
14
|
-
(0, _classCallCheck2["default"])(this, RequestLogger);
|
|
15
|
-
(0, _defineProperty2["default"])(this, "requestCounts", void 0);
|
|
16
|
-
(0, _defineProperty2["default"])(this, "responseTimes", void 0);
|
|
17
|
-
this.requestCounts = new Map();
|
|
18
|
-
this.responseTimes = new Map();
|
|
19
|
-
}
|
|
20
|
-
(0, _createClass2["default"])(RequestLogger, [{
|
|
21
|
-
key: "getKey",
|
|
22
|
-
value: function getKey(requestInfo) {
|
|
23
|
-
return [requestInfo.consumer || "", requestInfo.method.toUpperCase(), requestInfo.path, requestInfo.statusCode].join("|");
|
|
24
|
-
}
|
|
25
|
-
}, {
|
|
26
|
-
key: "logRequest",
|
|
27
|
-
value: function logRequest(requestInfo) {
|
|
28
|
-
var key = this.getKey(requestInfo);
|
|
29
|
-
// Increment request count
|
|
30
|
-
this.requestCounts.set(key, (this.requestCounts.get(key) || 0) + 1);
|
|
31
|
-
// Log response time
|
|
32
|
-
if (!this.responseTimes.has(key)) {
|
|
33
|
-
this.responseTimes.set(key, new Map());
|
|
34
|
-
}
|
|
35
|
-
var responseTimeMap = this.responseTimes.get(key);
|
|
36
|
-
var responseTimeMsBin = Math.floor(requestInfo.responseTime / 10) * 10; // Rounded to nearest 10ms
|
|
37
|
-
responseTimeMap.set(responseTimeMsBin, (responseTimeMap.get(responseTimeMsBin) || 0) + 1);
|
|
38
|
-
}
|
|
39
|
-
}, {
|
|
40
|
-
key: "getAndResetRequests",
|
|
41
|
-
value: function getAndResetRequests() {
|
|
42
|
-
var _this = this;
|
|
43
|
-
var data = [];
|
|
44
|
-
this.requestCounts.forEach(function (count, key) {
|
|
45
|
-
var _key$split = key.split("|"),
|
|
46
|
-
_key$split2 = (0, _slicedToArray2["default"])(_key$split, 4),
|
|
47
|
-
consumer = _key$split2[0],
|
|
48
|
-
method = _key$split2[1],
|
|
49
|
-
path = _key$split2[2],
|
|
50
|
-
statusCodeStr = _key$split2[3];
|
|
51
|
-
var responseTimes = _this.responseTimes.get(key) || new Map();
|
|
52
|
-
data.push({
|
|
53
|
-
consumer: consumer || null,
|
|
54
|
-
method: method,
|
|
55
|
-
path: path,
|
|
56
|
-
status_code: parseInt(statusCodeStr),
|
|
57
|
-
request_count: count,
|
|
58
|
-
response_times: Object.fromEntries(responseTimes)
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
// Reset the counts and times
|
|
62
|
-
this.requestCounts.clear();
|
|
63
|
-
this.responseTimes.clear();
|
|
64
|
-
return data;
|
|
65
|
-
}
|
|
66
|
-
}]);
|
|
67
|
-
return RequestLogger;
|
|
68
|
-
}();
|
|
69
|
-
//# sourceMappingURL=requestLogger.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requestLogger.cjs","names":["RequestLogger","exports","_classCallCheck2","_defineProperty2","requestCounts","Map","responseTimes","_createClass2","key","value","getKey","requestInfo","consumer","method","toUpperCase","path","statusCode","join","logRequest","set","get","has","responseTimeMap","responseTimeMsBin","Math","floor","responseTime","getAndResetRequests","_this","data","forEach","count","_key$split","split","_key$split2","_slicedToArray2","statusCodeStr","push","status_code","parseInt","request_count","response_times","Object","fromEntries","clear"],"sources":["../../../src/common/requestLogger.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;IAEqBA,aAAa,GAAAC,OAAA;EAIhC,SAAAD,cAAA;IAAA,IAAAE,gBAAA,mBAAAF,aAAA;IAAA,IAAAG,gBAAA;IAAA,IAAAA,gBAAA;IACE,IAAI,CAACC,aAAa,GAAG,IAAIC,GAAG,EAAkB;IAC9C,IAAI,CAACC,aAAa,GAAG,IAAID,GAAG,EAA+B;EAC7D;EAAC,IAAAE,aAAA,aAAAP,aAAA;IAAAQ,GAAA;IAAAC,KAAA,EAEO,SAAAC,OAAOC,WAAwB;MACrC,OAAO,CACLA,WAAW,CAACC,QAAQ,IAAI,EAAE,EAC1BD,WAAW,CAACE,MAAM,CAACC,WAAW,EAAE,EAChCH,WAAW,CAACI,IAAI,EAChBJ,WAAW,CAACK,UAAU,CACvB,CAACC,IAAI,CAAC,GAAG,CAAC;IACb;EAAC;IAAAT,GAAA;IAAAC,KAAA,EAED,SAAAS,WAAWP,WAAwB;MACjC,IAAMH,GAAG,GAAG,IAAI,CAACE,MAAM,CAACC,WAAW,CAAC;MAEpC;MACA,IAAI,CAACP,aAAa,CAACe,GAAG,CAACX,GAAG,EAAE,CAAC,IAAI,CAACJ,aAAa,CAACgB,GAAG,CAACZ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;MAEnE;MACA,IAAI,CAAC,IAAI,CAACF,aAAa,CAACe,GAAG,CAACb,GAAG,CAAC,EAAE;QAChC,IAAI,CAACF,aAAa,CAACa,GAAG,CAACX,GAAG,EAAE,IAAIH,GAAG,EAAkB,CAAC;MACxD;MACA,IAAMiB,eAAe,GAAG,IAAI,CAAChB,aAAa,CAACc,GAAG,CAACZ,GAAG,CAAE;MACpD,IAAMe,iBAAiB,GAAGC,IAAI,CAACC,KAAK,CAACd,WAAW,CAACe,YAAY,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;MAC1EJ,eAAe,CAACH,GAAG,CACjBI,iBAAiB,EACjB,CAACD,eAAe,CAACF,GAAG,CAACG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAClD;IACH;EAAC;IAAAf,GAAA;IAAAC,KAAA,EAED,SAAAkB,oBAAA,EAAmB;MAAA,IAAAC,KAAA;MACjB,IAAMC,IAAI,GAAwB,EAAE;MACpC,IAAI,CAACzB,aAAa,CAAC0B,OAAO,CAAC,UAACC,KAAK,EAAEvB,GAAG,EAAI;QACxC,IAAAwB,UAAA,GAAgDxB,GAAG,CAACyB,KAAK,CAAC,GAAG,CAAC;UAAAC,WAAA,OAAAC,eAAA,aAAAH,UAAA;UAAvDpB,QAAQ,GAAAsB,WAAA;UAAErB,MAAM,GAAAqB,WAAA;UAAEnB,IAAI,GAAAmB,WAAA;UAAEE,aAAa,GAAAF,WAAA;QAC5C,IAAM5B,aAAa,GACjBsB,KAAI,CAACtB,aAAa,CAACc,GAAG,CAACZ,GAAG,CAAC,IAAI,IAAIH,GAAG,EAAkB;QAC1DwB,IAAI,CAACQ,IAAI,CAAC;UACRzB,QAAQ,EAAEA,QAAQ,IAAI,IAAI;UAC1BC,MAAM,EAANA,MAAM;UACNE,IAAI,EAAJA,IAAI;UACJuB,WAAW,EAAEC,QAAQ,CAACH,aAAa,CAAC;UACpCI,aAAa,EAAET,KAAK;UACpBU,cAAc,EAAEC,MAAM,CAACC,WAAW,CAACrC,aAAa;SACjD,CAAC;MACJ,CAAC,CAAC;MAEF;MACA,IAAI,CAACF,aAAa,CAACwC,KAAK,EAAE;MAC1B,IAAI,CAACtC,aAAa,CAACsC,KAAK,EAAE;MAE1B,OAAOf,IAAI;IACb;EAAC;EAAA,OAAA7B,aAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validationErrorLogger.cjs","names":["ValidationErrorLogger","exports","_classCallCheck2","_defineProperty2","errorCounts","Map","_createClass2","key","value","getKey","validationError","consumer","method","toUpperCase","path","loc","msg","type","join","logValidationError","set","get","getAndResetValidationErrors","data","forEach","count","_key$split","split","_key$split2","_slicedToArray2","push","error_count","clear"],"sources":["../../../src/common/validationErrorLogger.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;IAMqBA,qBAAqB,GAAAC,OAAA;EAGxC,SAAAD,sBAAA;IAAA,IAAAE,gBAAA,mBAAAF,qBAAA;IAAA,IAAAG,gBAAA;IACE,IAAI,CAACC,WAAW,GAAG,IAAIC,GAAG,EAAkB;EAC9C;EAAC,IAAAC,aAAA,aAAAN,qBAAA;IAAAO,GAAA;IAAAC,KAAA,EAEO,SAAAC,OAAOC,eAAqD;MAClE,OAAO,CACLA,eAAe,CAACC,QAAQ,IAAI,EAAE,EAC9BD,eAAe,CAACE,MAAM,CAACC,WAAW,EAAE,EACpCH,eAAe,CAACI,IAAI,EACpBJ,eAAe,CAACK,GAAG,EACnBL,eAAe,CAACM,GAAG,EACnBN,eAAe,CAACO,IAAI,CACrB,CAACC,IAAI,CAAC,GAAG,CAAC;IACb;EAAC;IAAAX,GAAA;IAAAC,KAAA,EAEM,SAAAW,mBACLT,eAAqD;MAErD,IAAMH,GAAG,GAAG,IAAI,CAACE,MAAM,CAACC,eAAe,CAAC;MACxC,IAAI,CAACN,WAAW,CAACgB,GAAG,CAACb,GAAG,EAAE,CAAC,IAAI,CAACH,WAAW,CAACiB,GAAG,CAACd,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjE;EAAC;IAAAA,GAAA;IAAAC,KAAA,EAEM,SAAAc,4BAAA,EAA2B;MAChC,IAAMC,IAAI,GAAgC,EAAE;MAC5C,IAAI,CAACnB,WAAW,CAACoB,OAAO,CAAC,UAACC,KAAK,EAAElB,GAAG,EAAI;QACtC,IAAAmB,UAAA,GAAiDnB,GAAG,CAACoB,KAAK,CAAC,GAAG,CAAC;UAAAC,WAAA,OAAAC,eAAA,aAAAH,UAAA;UAAxDf,QAAQ,GAAAiB,WAAA;UAAEhB,MAAM,GAAAgB,WAAA;UAAEd,IAAI,GAAAc,WAAA;UAAEb,GAAG,GAAAa,WAAA;UAAEZ,GAAG,GAAAY,WAAA;UAAEX,IAAI,GAAAW,WAAA;QAC7CL,IAAI,CAACO,IAAI,CAAC;UACRnB,QAAQ,EAAEA,QAAQ,IAAI,IAAI;UAC1BC,MAAM,EAANA,MAAM;UACNE,IAAI,EAAJA,IAAI;UACJC,GAAG,EAAEA,GAAG,CAACY,KAAK,CAAC,GAAG,CAAC;UACnBX,GAAG,EAAHA,GAAG;UACHC,IAAI,EAAJA,IAAI;UACJc,WAAW,EAAEN;SACd,CAAC;MACJ,CAAC,CAAC;MACF,IAAI,CAACrB,WAAW,CAAC4B,KAAK,EAAE;MACxB,OAAOT,IAAI;IACb;EAAC;EAAA,OAAAvB,qBAAA;AAAA"}
|