apitally 0.1.2 → 0.1.3
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.js +395 -0
- package/lib/cjs/common/client.js.map +1 -0
- package/lib/cjs/common/index.js +13 -0
- package/lib/cjs/common/index.js.map +1 -0
- package/lib/cjs/common/keyRegistry.js +162 -0
- package/lib/cjs/common/keyRegistry.js.map +1 -0
- package/lib/cjs/common/logging.js +17 -0
- package/lib/cjs/common/logging.js.map +1 -0
- package/lib/cjs/common/requestLogger.js +69 -0
- package/lib/cjs/common/requestLogger.js.map +1 -0
- package/lib/cjs/common/types.js +6 -0
- package/lib/cjs/common/types.js.map +1 -0
- package/lib/cjs/common/utils.js +24 -0
- package/lib/cjs/common/utils.js.map +1 -0
- package/lib/cjs/common/validationErrorLogger.js +58 -0
- package/lib/cjs/common/validationErrorLogger.js.map +1 -0
- package/lib/cjs/express/auth.js +105 -0
- package/lib/cjs/express/auth.js.map +1 -0
- package/lib/cjs/express/index.js +27 -0
- package/lib/cjs/express/index.js.map +1 -0
- package/lib/cjs/express/listEndpoints.js +175 -0
- package/lib/cjs/express/listEndpoints.js.map +1 -0
- package/lib/cjs/express/middleware.js +167 -0
- package/lib/cjs/express/middleware.js.map +1 -0
- package/lib/cjs/fastify/auth.js +105 -0
- package/lib/cjs/fastify/auth.js.map +1 -0
- package/lib/cjs/fastify/index.js +28 -0
- package/lib/cjs/fastify/index.js.map +1 -0
- package/lib/cjs/fastify/plugin.js +147 -0
- package/lib/cjs/fastify/plugin.js.map +1 -0
- package/lib/cjs/index.js +6 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/cjs/koa/auth.js +113 -0
- package/lib/cjs/koa/auth.js.map +1 -0
- package/lib/cjs/koa/index.js +27 -0
- package/lib/cjs/koa/index.js.map +1 -0
- package/lib/cjs/koa/middleware.js +122 -0
- package/lib/cjs/koa/middleware.js.map +1 -0
- package/lib/cjs/nestjs/auth.js +132 -0
- package/lib/cjs/nestjs/auth.js.map +1 -0
- package/lib/cjs/nestjs/index.js +39 -0
- package/lib/cjs/nestjs/index.js.map +1 -0
- package/lib/esm/common/client.js +385 -0
- package/lib/esm/common/client.js.map +1 -0
- package/lib/esm/common/index.js +1 -0
- package/lib/esm/common/index.js.map +1 -0
- package/lib/esm/common/keyRegistry.js +155 -0
- package/lib/esm/common/keyRegistry.js.map +1 -0
- package/lib/esm/common/logging.js +11 -0
- package/lib/esm/common/logging.js.map +1 -0
- package/lib/esm/common/requestLogger.js +63 -0
- package/lib/esm/common/requestLogger.js.map +1 -0
- package/lib/esm/common/types.js +1 -0
- package/lib/esm/common/types.js.map +1 -0
- package/lib/esm/common/utils.js +16 -0
- package/lib/esm/common/utils.js.map +1 -0
- package/lib/esm/common/validationErrorLogger.js +52 -0
- package/lib/esm/common/validationErrorLogger.js.map +1 -0
- package/lib/esm/express/auth.js +98 -0
- package/lib/esm/express/auth.js.map +1 -0
- package/lib/esm/express/index.js +4 -0
- package/lib/esm/express/index.js.map +1 -0
- package/lib/esm/express/listEndpoints.js +168 -0
- package/lib/esm/express/listEndpoints.js.map +1 -0
- package/lib/esm/express/middleware.js +160 -0
- package/lib/esm/express/middleware.js.map +1 -0
- package/lib/esm/fastify/auth.js +98 -0
- package/lib/esm/fastify/auth.js.map +1 -0
- package/lib/esm/fastify/index.js +4 -0
- package/lib/esm/fastify/index.js.map +1 -0
- package/lib/esm/fastify/plugin.js +140 -0
- package/lib/esm/fastify/plugin.js.map +1 -0
- package/lib/esm/index.js +1 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/koa/auth.js +106 -0
- package/lib/esm/koa/auth.js.map +1 -0
- package/lib/esm/koa/index.js +4 -0
- package/lib/esm/koa/index.js.map +1 -0
- package/lib/esm/koa/middleware.js +115 -0
- package/lib/esm/koa/middleware.js.map +1 -0
- package/lib/esm/nestjs/auth.js +126 -0
- package/lib/esm/nestjs/auth.js.map +1 -0
- package/lib/esm/nestjs/index.js +4 -0
- package/lib/esm/nestjs/index.js.map +1 -0
- package/{dist/src → lib/types}/common/client.d.ts +7 -6
- package/lib/types/common/client.d.ts.map +1 -0
- package/lib/types/common/index.d.ts +2 -0
- package/{dist/src → lib/types}/common/index.d.ts.map +1 -1
- package/{dist/src → lib/types}/common/requestLogger.d.ts +1 -1
- package/{dist/src → lib/types}/common/requestLogger.d.ts.map +1 -1
- package/{dist/src → lib/types}/common/types.d.ts +2 -2
- package/lib/types/common/types.d.ts.map +1 -0
- package/{dist/src → lib/types}/common/validationErrorLogger.d.ts +1 -1
- package/{dist/src → lib/types}/common/validationErrorLogger.d.ts.map +1 -1
- package/{dist/src → lib/types}/express/auth.d.ts +1 -1
- package/lib/types/express/auth.d.ts.map +1 -0
- package/lib/types/express/index.d.ts +4 -0
- package/{dist/src → lib/types}/express/index.d.ts.map +1 -1
- package/lib/types/express/listEndpoints.d.ts +3 -0
- package/{dist/src → lib/types}/express/middleware.d.ts +3 -3
- package/lib/types/express/middleware.d.ts.map +1 -0
- package/{dist/src → lib/types}/fastify/auth.d.ts +1 -1
- package/lib/types/fastify/auth.d.ts.map +1 -0
- package/lib/types/fastify/index.d.ts +4 -0
- package/{dist/src → lib/types}/fastify/index.d.ts.map +1 -1
- package/lib/types/fastify/plugin.d.ts +15 -0
- package/lib/types/fastify/plugin.d.ts.map +1 -0
- package/lib/types/koa/index.d.ts +4 -0
- package/{dist/src → lib/types}/koa/index.d.ts.map +1 -1
- package/{dist/src → lib/types}/koa/middleware.d.ts +1 -1
- package/{dist/src → lib/types}/koa/middleware.d.ts.map +1 -1
- package/{dist/src → lib/types}/nestjs/auth.d.ts +1 -1
- package/{dist/src → lib/types}/nestjs/auth.d.ts.map +1 -1
- package/lib/types/nestjs/index.d.ts +4 -0
- package/lib/types/nestjs/index.d.ts.map +1 -0
- package/package.json +96 -7
- package/dist/src/common/client.d.ts.map +0 -1
- package/dist/src/common/client.js +0 -244
- package/dist/src/common/client.js.map +0 -1
- package/dist/src/common/index.d.ts +0 -2
- package/dist/src/common/index.js +0 -6
- package/dist/src/common/index.js.map +0 -1
- package/dist/src/common/keyRegistry.js +0 -90
- package/dist/src/common/keyRegistry.js.map +0 -1
- package/dist/src/common/logging.js +0 -13
- package/dist/src/common/logging.js.map +0 -1
- package/dist/src/common/requestLogger.js +0 -49
- package/dist/src/common/requestLogger.js.map +0 -1
- package/dist/src/common/types.d.ts.map +0 -1
- package/dist/src/common/types.js +0 -3
- package/dist/src/common/types.js.map +0 -1
- package/dist/src/common/utils.js +0 -23
- package/dist/src/common/utils.js.map +0 -1
- package/dist/src/common/validationErrorLogger.js +0 -40
- package/dist/src/common/validationErrorLogger.js.map +0 -1
- package/dist/src/express/auth.d.ts.map +0 -1
- package/dist/src/express/auth.js +0 -66
- package/dist/src/express/auth.js.map +0 -1
- package/dist/src/express/index.d.ts +0 -4
- package/dist/src/express/index.js +0 -10
- package/dist/src/express/index.js.map +0 -1
- package/dist/src/express/listEndpoints.d.ts +0 -3
- package/dist/src/express/listEndpoints.js +0 -166
- package/dist/src/express/listEndpoints.js.map +0 -1
- package/dist/src/express/middleware.d.ts.map +0 -1
- package/dist/src/express/middleware.js +0 -164
- package/dist/src/express/middleware.js.map +0 -1
- package/dist/src/fastify/auth.d.ts.map +0 -1
- package/dist/src/fastify/auth.js +0 -66
- package/dist/src/fastify/auth.js.map +0 -1
- package/dist/src/fastify/index.d.ts +0 -4
- package/dist/src/fastify/index.js +0 -13
- package/dist/src/fastify/index.js.map +0 -1
- package/dist/src/fastify/plugin.d.ts +0 -16
- package/dist/src/fastify/plugin.d.ts.map +0 -1
- package/dist/src/fastify/plugin.js +0 -124
- package/dist/src/fastify/plugin.js.map +0 -1
- package/dist/src/index.js +0 -3
- package/dist/src/index.js.map +0 -1
- package/dist/src/koa/auth.js +0 -67
- package/dist/src/koa/auth.js.map +0 -1
- package/dist/src/koa/index.d.ts +0 -4
- package/dist/src/koa/index.js +0 -10
- package/dist/src/koa/index.js.map +0 -1
- package/dist/src/koa/middleware.js +0 -108
- package/dist/src/koa/middleware.js.map +0 -1
- package/dist/src/nestjs/auth.js +0 -88
- package/dist/src/nestjs/auth.js.map +0 -1
- package/dist/src/nestjs/index.d.ts +0 -4
- package/dist/src/nestjs/index.d.ts.map +0 -1
- package/dist/src/nestjs/index.js +0 -12
- package/dist/src/nestjs/index.js.map +0 -1
- /package/{dist/src → lib/types}/common/keyRegistry.d.ts +0 -0
- /package/{dist/src → lib/types}/common/keyRegistry.d.ts.map +0 -0
- /package/{dist/src → lib/types}/common/logging.d.ts +0 -0
- /package/{dist/src → lib/types}/common/logging.d.ts.map +0 -0
- /package/{dist/src → lib/types}/common/utils.d.ts +0 -0
- /package/{dist/src → lib/types}/common/utils.d.ts.map +0 -0
- /package/{dist/src → lib/types}/express/listEndpoints.d.ts.map +0 -0
- /package/{dist/src → lib/types}/index.d.ts +0 -0
- /package/{dist/src → lib/types}/index.d.ts.map +0 -0
- /package/{dist/src → lib/types}/koa/auth.d.ts +0 -0
- /package/{dist/src → lib/types}/koa/auth.d.ts.map +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestLogger.js","names":["RequestLogger","_classCallCheck","_defineProperty","requestCounts","Map","responseTimes","_createClass","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","_slicedToArray","statusCodeStr","push","status_code","parseInt","request_count","response_times","Object","fromEntries","clear","default"],"sources":["../../../src/common/requestLogger.ts"],"sourcesContent":[null],"mappings":";;;;IAEqBA,aAAa;EAIhC,SAAAA,cAAA;IAAAC,eAAA,OAAAD,aAAA;IAAAE,eAAA;IAAAA,eAAA;IACE,IAAI,CAACC,aAAa,GAAG,IAAIC,GAAG,EAAkB;IAC9C,IAAI,CAACC,aAAa,GAAG,IAAID,GAAG,EAA+B;EAC7D;EAACE,YAAA,CAAAN,aAAA;IAAAO,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,GAAAC,cAAA,CAAAH,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,OAAA5B,aAAA;AAAA;AAAA,SAzDkBA,aAAa,IAAA4C,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../src/common/types.ts"],"sourcesContent":[null],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export function isValidClientId(clientId) {
|
|
2
|
+
var regexExp = /^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
3
|
+
return regexExp.test(clientId);
|
|
4
|
+
}
|
|
5
|
+
export function isValidEnv(env) {
|
|
6
|
+
var regexExp = /^[\w-]{1,32}$/;
|
|
7
|
+
return regexExp.test(env);
|
|
8
|
+
}
|
|
9
|
+
export function getPackageVersion(name) {
|
|
10
|
+
try {
|
|
11
|
+
return require("".concat(name, "/package.json")).version || null; // eslint-disable-line @typescript-eslint/no-var-requires
|
|
12
|
+
} catch (error) {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","names":["isValidClientId","clientId","regexExp","test","isValidEnv","env","getPackageVersion","name","require","concat","version","error"],"sources":["../../../src/common/utils.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAM,SAAUA,eAAeA,CAACC,QAAgB;EAC9C,IAAMC,QAAQ,GACZ,0EAA0E;EAC5E,OAAOA,QAAQ,CAACC,IAAI,CAACF,QAAQ,CAAC;AAChC;AAEA,OAAM,SAAUG,UAAUA,CAACC,GAAW;EACpC,IAAMH,QAAQ,GAAG,eAAe;EAChC,OAAOA,QAAQ,CAACC,IAAI,CAACE,GAAG,CAAC;AAC3B;AAEA,OAAM,SAAUC,iBAAiBA,CAACC,IAAY;EAC5C,IAAI;IACF,OAAOC,OAAO,IAAAC,MAAA,CAAIF,IAAI,kBAAe,CAAC,CAACG,OAAO,IAAI,IAAI,CAAC,CAAC;EAC1D,CAAC,CAAC,OAAOC,KAAK,EAAE;IACd,OAAO,IAAI;EACb;AACF"}
|
|
@@ -0,0 +1,52 @@
|
|
|
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 ValidationErrorLogger = /*#__PURE__*/function () {
|
|
6
|
+
function ValidationErrorLogger() {
|
|
7
|
+
_classCallCheck(this, ValidationErrorLogger);
|
|
8
|
+
_defineProperty(this, "errorCounts", void 0);
|
|
9
|
+
this.errorCounts = new Map();
|
|
10
|
+
}
|
|
11
|
+
_createClass(ValidationErrorLogger, [{
|
|
12
|
+
key: "getKey",
|
|
13
|
+
value: function getKey(validationError) {
|
|
14
|
+
return [validationError.consumer || "", validationError.method.toUpperCase(), validationError.path, validationError.loc, validationError.msg, validationError.type].join("|");
|
|
15
|
+
}
|
|
16
|
+
}, {
|
|
17
|
+
key: "logValidationError",
|
|
18
|
+
value: function logValidationError(validationError) {
|
|
19
|
+
var key = this.getKey(validationError);
|
|
20
|
+
this.errorCounts.set(key, (this.errorCounts.get(key) || 0) + 1);
|
|
21
|
+
}
|
|
22
|
+
}, {
|
|
23
|
+
key: "getAndResetValidationErrors",
|
|
24
|
+
value: function getAndResetValidationErrors() {
|
|
25
|
+
var data = [];
|
|
26
|
+
this.errorCounts.forEach(function (count, key) {
|
|
27
|
+
var _key$split = key.split("|"),
|
|
28
|
+
_key$split2 = _slicedToArray(_key$split, 6),
|
|
29
|
+
consumer = _key$split2[0],
|
|
30
|
+
method = _key$split2[1],
|
|
31
|
+
path = _key$split2[2],
|
|
32
|
+
loc = _key$split2[3],
|
|
33
|
+
msg = _key$split2[4],
|
|
34
|
+
type = _key$split2[5];
|
|
35
|
+
data.push({
|
|
36
|
+
consumer: consumer || null,
|
|
37
|
+
method: method,
|
|
38
|
+
path: path,
|
|
39
|
+
loc: loc.split("."),
|
|
40
|
+
msg: msg,
|
|
41
|
+
type: type,
|
|
42
|
+
error_count: count
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
this.errorCounts.clear();
|
|
46
|
+
return data;
|
|
47
|
+
}
|
|
48
|
+
}]);
|
|
49
|
+
return ValidationErrorLogger;
|
|
50
|
+
}();
|
|
51
|
+
export { ValidationErrorLogger as default };
|
|
52
|
+
//# sourceMappingURL=validationErrorLogger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validationErrorLogger.js","names":["ValidationErrorLogger","_classCallCheck","_defineProperty","errorCounts","Map","_createClass","key","value","getKey","validationError","consumer","method","toUpperCase","path","loc","msg","type","join","logValidationError","set","get","getAndResetValidationErrors","data","forEach","count","_key$split","split","_key$split2","_slicedToArray","push","error_count","clear","default"],"sources":["../../../src/common/validationErrorLogger.ts"],"sourcesContent":[null],"mappings":";;;;IAMqBA,qBAAqB;EAGxC,SAAAA,sBAAA;IAAAC,eAAA,OAAAD,qBAAA;IAAAE,eAAA;IACE,IAAI,CAACC,WAAW,GAAG,IAAIC,GAAG,EAAkB;EAC9C;EAACC,YAAA,CAAAL,qBAAA;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,qBAAA;AAAA;AAAA,SAzCkBA,qBAAqB,IAAAgC,OAAA"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
3
|
+
import { ApitallyClient } from "../common/client.js";
|
|
4
|
+
export var requireApiKey = function requireApiKey() {
|
|
5
|
+
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
6
|
+
scopes = _ref.scopes,
|
|
7
|
+
customHeader = _ref.customHeader;
|
|
8
|
+
return /*#__PURE__*/function () {
|
|
9
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(req, res, next) {
|
|
10
|
+
var apiKey, authorizationParts, customHeaderValue, client, keyInfo;
|
|
11
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
12
|
+
while (1) switch (_context.prev = _context.next) {
|
|
13
|
+
case 0:
|
|
14
|
+
if (customHeader) {
|
|
15
|
+
_context.next = 13;
|
|
16
|
+
break;
|
|
17
|
+
}
|
|
18
|
+
if (req.headers.authorization) {
|
|
19
|
+
_context.next = 4;
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
res.status(401).set("WWW-Authenticate", "ApiKey").json({
|
|
23
|
+
error: "Missing authorization header"
|
|
24
|
+
});
|
|
25
|
+
return _context.abrupt("return");
|
|
26
|
+
case 4:
|
|
27
|
+
authorizationParts = req.headers.authorization.split(" ");
|
|
28
|
+
if (!(authorizationParts.length === 2 && authorizationParts[0].toLowerCase() === "apikey")) {
|
|
29
|
+
_context.next = 9;
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
apiKey = authorizationParts[1];
|
|
33
|
+
_context.next = 11;
|
|
34
|
+
break;
|
|
35
|
+
case 9:
|
|
36
|
+
res.status(401).set("WWW-Authenticate", "ApiKey").json({
|
|
37
|
+
error: "Invalid authorization scheme"
|
|
38
|
+
});
|
|
39
|
+
return _context.abrupt("return");
|
|
40
|
+
case 11:
|
|
41
|
+
_context.next = 14;
|
|
42
|
+
break;
|
|
43
|
+
case 13:
|
|
44
|
+
if (customHeader) {
|
|
45
|
+
customHeaderValue = req.headers[customHeader.toLowerCase()];
|
|
46
|
+
if (typeof customHeaderValue === "string") {
|
|
47
|
+
apiKey = customHeaderValue;
|
|
48
|
+
} else if (Array.isArray(customHeaderValue)) {
|
|
49
|
+
apiKey = customHeaderValue[0];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
case 14:
|
|
53
|
+
if (apiKey) {
|
|
54
|
+
_context.next = 17;
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
res.status(403).json({
|
|
58
|
+
error: "Missing API key"
|
|
59
|
+
});
|
|
60
|
+
return _context.abrupt("return");
|
|
61
|
+
case 17:
|
|
62
|
+
client = ApitallyClient.getInstance();
|
|
63
|
+
_context.next = 20;
|
|
64
|
+
return client.keyRegistry.get(apiKey);
|
|
65
|
+
case 20:
|
|
66
|
+
keyInfo = _context.sent;
|
|
67
|
+
if (keyInfo) {
|
|
68
|
+
_context.next = 24;
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
res.status(403).json({
|
|
72
|
+
error: "Invalid API key"
|
|
73
|
+
});
|
|
74
|
+
return _context.abrupt("return");
|
|
75
|
+
case 24:
|
|
76
|
+
if (!(scopes && !keyInfo.hasScopes(scopes))) {
|
|
77
|
+
_context.next = 27;
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
res.status(403).json({
|
|
81
|
+
error: "Permission denied"
|
|
82
|
+
});
|
|
83
|
+
return _context.abrupt("return");
|
|
84
|
+
case 27:
|
|
85
|
+
req.keyInfo = keyInfo;
|
|
86
|
+
next();
|
|
87
|
+
case 29:
|
|
88
|
+
case "end":
|
|
89
|
+
return _context.stop();
|
|
90
|
+
}
|
|
91
|
+
}, _callee);
|
|
92
|
+
}));
|
|
93
|
+
return function (_x, _x2, _x3) {
|
|
94
|
+
return _ref2.apply(this, arguments);
|
|
95
|
+
};
|
|
96
|
+
}();
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","names":["ApitallyClient","requireApiKey","_ref","arguments","length","undefined","scopes","customHeader","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","res","next","apiKey","authorizationParts","customHeaderValue","client","keyInfo","wrap","_callee$","_context","prev","headers","authorization","status","set","json","error","abrupt","split","toLowerCase","Array","isArray","getInstance","keyRegistry","get","sent","hasScopes","stop","_x","_x2","_x3","apply"],"sources":["../../../src/express/auth.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["KeyInfo","requireApiKey","useApitally"],"sources":["../../../src/express/index.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,OAAO,QAAQ,0BAA0B;AAClD,SAASC,aAAa,QAAQ,WAAW;AACzC,SAASC,WAAW,QAAQ,iBAAiB"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
2
|
+
// Adapted from https://github.com/AlbertoFdzM/express-list-endpoints/blob/ed926dd5186761e7b721ad20938ce6eb52d104d3/src/index.js
|
|
3
|
+
var regExpToParseExpressPathRegExp = /^\/\^\\\/(?:(:?[\w\\.-]*(?:\\\/:?[\w\\.-]*)*)|(\(\?:\(\[\^\\\/]\+\?\)\)))\\\/.*/;
|
|
4
|
+
var regExpToReplaceExpressPathRegExpParams = /\(\?:\(\[\^\\\/]\+\?\)\)/;
|
|
5
|
+
var regexpExpressParamRegexp = /\(\?:\(\[\^\\\/]\+\?\)\)/g;
|
|
6
|
+
var EXPRESS_ROOT_PATH_REGEXP_VALUE = "/^\\/?(?=\\/|$)/i";
|
|
7
|
+
var STACK_ITEM_VALID_NAMES = ["router", "bound dispatch", "mounted_app"];
|
|
8
|
+
/**
|
|
9
|
+
* Returns all the verbs detected for the passed route
|
|
10
|
+
*/
|
|
11
|
+
var getRouteMethods = function getRouteMethods(route) {
|
|
12
|
+
var methods = Object.keys(route.methods);
|
|
13
|
+
methods = methods.filter(function (method) {
|
|
14
|
+
return method !== "_all";
|
|
15
|
+
});
|
|
16
|
+
methods = methods.map(function (method) {
|
|
17
|
+
return method.toUpperCase();
|
|
18
|
+
});
|
|
19
|
+
return methods;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Returns the names (or anonymous) of all the middlewares attached to the
|
|
23
|
+
* passed route
|
|
24
|
+
* @param {Object} route
|
|
25
|
+
* @returns {string[]}
|
|
26
|
+
*/
|
|
27
|
+
var getRouteMiddlewares = function getRouteMiddlewares(route) {
|
|
28
|
+
return route.stack.map(function (item) {
|
|
29
|
+
return item.handle.name || "anonymous";
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Returns true if found regexp related with express params
|
|
34
|
+
* @param {string} expressPathRegExp
|
|
35
|
+
* @returns {boolean}
|
|
36
|
+
*/
|
|
37
|
+
var hasParams = function hasParams(expressPathRegExp) {
|
|
38
|
+
return regexpExpressParamRegexp.test(expressPathRegExp);
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* @param {Object} route Express route object to be parsed
|
|
42
|
+
* @param {string} basePath The basePath the route is on
|
|
43
|
+
* @return {Object[]} Endpoints info
|
|
44
|
+
*/
|
|
45
|
+
var parseExpressRoute = function parseExpressRoute(route, basePath) {
|
|
46
|
+
var paths = [];
|
|
47
|
+
if (Array.isArray(route.path)) {
|
|
48
|
+
paths.push.apply(paths, _toConsumableArray(route.path));
|
|
49
|
+
} else {
|
|
50
|
+
paths.push(route.path);
|
|
51
|
+
}
|
|
52
|
+
var endpoints = paths.map(function (path) {
|
|
53
|
+
var completePath = basePath && path === "/" ? basePath : "".concat(basePath).concat(path);
|
|
54
|
+
var endpoint = {
|
|
55
|
+
path: completePath,
|
|
56
|
+
methods: getRouteMethods(route),
|
|
57
|
+
middlewares: getRouteMiddlewares(route)
|
|
58
|
+
};
|
|
59
|
+
return endpoint;
|
|
60
|
+
});
|
|
61
|
+
return endpoints;
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* @param {RegExp} expressPathRegExp
|
|
65
|
+
* @param {Object[]} params
|
|
66
|
+
* @returns {string}
|
|
67
|
+
*/
|
|
68
|
+
var parseExpressPath = function parseExpressPath(expressPathRegExp, params) {
|
|
69
|
+
var expressPathRegExpExec = regExpToParseExpressPathRegExp.exec(expressPathRegExp);
|
|
70
|
+
var parsedRegExp = expressPathRegExp.toString();
|
|
71
|
+
var paramIndex = 0;
|
|
72
|
+
while (hasParams(parsedRegExp)) {
|
|
73
|
+
var paramName = params[paramIndex].name;
|
|
74
|
+
var paramId = ":".concat(paramName);
|
|
75
|
+
parsedRegExp = parsedRegExp.replace(regExpToReplaceExpressPathRegExpParams, paramId);
|
|
76
|
+
paramIndex++;
|
|
77
|
+
}
|
|
78
|
+
if (parsedRegExp !== expressPathRegExp.toString()) {
|
|
79
|
+
expressPathRegExpExec = regExpToParseExpressPathRegExp.exec(parsedRegExp);
|
|
80
|
+
}
|
|
81
|
+
var parsedPath = expressPathRegExpExec[1].replace(/\\\//g, "/");
|
|
82
|
+
return parsedPath;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* @param {Object} app
|
|
86
|
+
* @param {string} [basePath]
|
|
87
|
+
* @param {Object[]} [endpoints]
|
|
88
|
+
* @returns {Object[]}
|
|
89
|
+
*/
|
|
90
|
+
var parseEndpoints = function parseEndpoints(app, basePath, endpoints) {
|
|
91
|
+
var stack = app.stack || app._router && app._router.stack;
|
|
92
|
+
endpoints = endpoints || [];
|
|
93
|
+
basePath = basePath || "";
|
|
94
|
+
if (!stack) {
|
|
95
|
+
endpoints = addEndpoints(endpoints, [{
|
|
96
|
+
path: basePath,
|
|
97
|
+
methods: [],
|
|
98
|
+
middlewares: []
|
|
99
|
+
}]);
|
|
100
|
+
} else {
|
|
101
|
+
endpoints = parseStack(stack, basePath, endpoints);
|
|
102
|
+
}
|
|
103
|
+
return endpoints;
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* Ensures the path of the new endpoints isn't yet in the array.
|
|
107
|
+
* If the path is already in the array merges the endpoints with the existing
|
|
108
|
+
* one, if not, it adds them to the array.
|
|
109
|
+
*
|
|
110
|
+
* @param {Object[]} currentEndpoints Array of current endpoints
|
|
111
|
+
* @param {Object[]} endpointsToAdd New endpoints to be added to the array
|
|
112
|
+
* @returns {Object[]} Updated endpoints array
|
|
113
|
+
*/
|
|
114
|
+
var addEndpoints = function addEndpoints(currentEndpoints, endpointsToAdd) {
|
|
115
|
+
endpointsToAdd.forEach(function (newEndpoint) {
|
|
116
|
+
var existingEndpoint = currentEndpoints.find(function (item) {
|
|
117
|
+
return item.path === newEndpoint.path;
|
|
118
|
+
});
|
|
119
|
+
if (existingEndpoint !== undefined) {
|
|
120
|
+
var newMethods = newEndpoint.methods.filter(function (method) {
|
|
121
|
+
return !existingEndpoint.methods.includes(method);
|
|
122
|
+
});
|
|
123
|
+
existingEndpoint.methods = existingEndpoint.methods.concat(newMethods);
|
|
124
|
+
} else {
|
|
125
|
+
currentEndpoints.push(newEndpoint);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
return currentEndpoints;
|
|
129
|
+
};
|
|
130
|
+
/**
|
|
131
|
+
* @param {Object} stack
|
|
132
|
+
* @param {string} basePath
|
|
133
|
+
* @param {Object[]} endpoints
|
|
134
|
+
* @returns {Object[]}
|
|
135
|
+
*/
|
|
136
|
+
var parseStack = function parseStack(stack, basePath, endpoints) {
|
|
137
|
+
stack.forEach(function (stackItem) {
|
|
138
|
+
if (stackItem.route) {
|
|
139
|
+
var newEndpoints = parseExpressRoute(stackItem.route, basePath);
|
|
140
|
+
endpoints = addEndpoints(endpoints, newEndpoints);
|
|
141
|
+
} else if (STACK_ITEM_VALID_NAMES.includes(stackItem.name)) {
|
|
142
|
+
var isExpressPathRegexp = regExpToParseExpressPathRegExp.test(stackItem.regexp);
|
|
143
|
+
var newBasePath = basePath;
|
|
144
|
+
if (isExpressPathRegexp) {
|
|
145
|
+
var parsedPath = parseExpressPath(stackItem.regexp, stackItem.keys);
|
|
146
|
+
newBasePath += "/".concat(parsedPath);
|
|
147
|
+
} else if (!stackItem.path && stackItem.regexp && stackItem.regexp.toString() !== EXPRESS_ROOT_PATH_REGEXP_VALUE) {
|
|
148
|
+
var regExpPath = " RegExp(".concat(stackItem.regexp, ") ");
|
|
149
|
+
newBasePath += "/".concat(regExpPath);
|
|
150
|
+
}
|
|
151
|
+
endpoints = parseEndpoints(stackItem.handle, newBasePath, endpoints);
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
return endpoints;
|
|
155
|
+
};
|
|
156
|
+
var getEndpoints = function getEndpoints(app) {
|
|
157
|
+
var endpoints = parseEndpoints(app);
|
|
158
|
+
return endpoints.flatMap(function (route) {
|
|
159
|
+
return route.methods.map(function (method) {
|
|
160
|
+
return {
|
|
161
|
+
method: method,
|
|
162
|
+
path: route.path
|
|
163
|
+
};
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
};
|
|
167
|
+
export default getEndpoints;
|
|
168
|
+
//# sourceMappingURL=listEndpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listEndpoints.js","names":["regExpToParseExpressPathRegExp","regExpToReplaceExpressPathRegExpParams","regexpExpressParamRegexp","EXPRESS_ROOT_PATH_REGEXP_VALUE","STACK_ITEM_VALID_NAMES","getRouteMethods","route","methods","Object","keys","filter","method","map","toUpperCase","getRouteMiddlewares","stack","item","handle","name","hasParams","expressPathRegExp","test","parseExpressRoute","basePath","paths","Array","isArray","path","push","apply","_toConsumableArray","endpoints","completePath","concat","endpoint","middlewares","parseExpressPath","params","expressPathRegExpExec","exec","parsedRegExp","toString","paramIndex","paramName","paramId","replace","parsedPath","parseEndpoints","app","_router","addEndpoints","parseStack","currentEndpoints","endpointsToAdd","forEach","newEndpoint","existingEndpoint","find","undefined","newMethods","includes","stackItem","newEndpoints","isExpressPathRegexp","regexp","newBasePath","regExpPath","getEndpoints","flatMap"],"sources":["../../../src/express/listEndpoints.js"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
3
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5
|
+
import { performance } from "perf_hooks";
|
|
6
|
+
import { ApitallyClient } from "../common/client.js";
|
|
7
|
+
import { KeyInfo } from "../common/keyRegistry.js";
|
|
8
|
+
import { getPackageVersion } from "../common/utils.js";
|
|
9
|
+
import listEndpoints from "./listEndpoints.js";
|
|
10
|
+
export var useApitally = function useApitally(app, config) {
|
|
11
|
+
var client = new ApitallyClient(config);
|
|
12
|
+
var middleware = getMiddleware(client);
|
|
13
|
+
app.use(middleware);
|
|
14
|
+
setTimeout(function () {
|
|
15
|
+
client.setAppInfo(getAppInfo(app, config.appVersion));
|
|
16
|
+
}, 100);
|
|
17
|
+
};
|
|
18
|
+
var getMiddleware = function getMiddleware(client) {
|
|
19
|
+
var validatorInstalled = getPackageVersion("express-validator") !== null;
|
|
20
|
+
var celebrateInstalled = getPackageVersion("celebrate") !== null;
|
|
21
|
+
var nestInstalled = getPackageVersion("@nestjs/core") !== null;
|
|
22
|
+
var classValidatorInstalled = getPackageVersion("class-validator") !== null;
|
|
23
|
+
return function (req, res, next) {
|
|
24
|
+
try {
|
|
25
|
+
var startTime = performance.now();
|
|
26
|
+
var originalJson = res.json;
|
|
27
|
+
res.json = function (body) {
|
|
28
|
+
res.locals.body = body;
|
|
29
|
+
return originalJson.call(res, body);
|
|
30
|
+
};
|
|
31
|
+
res.on("finish", function () {
|
|
32
|
+
try {
|
|
33
|
+
if (req.route) {
|
|
34
|
+
var responseTime = performance.now() - startTime;
|
|
35
|
+
client.requestLogger.logRequest({
|
|
36
|
+
consumer: getConsumer(req),
|
|
37
|
+
method: req.method,
|
|
38
|
+
path: req.route.path,
|
|
39
|
+
statusCode: res.statusCode,
|
|
40
|
+
responseTime: responseTime
|
|
41
|
+
});
|
|
42
|
+
if ((res.statusCode === 400 || res.statusCode === 422) && res.locals.body) {
|
|
43
|
+
var validationErrors = [];
|
|
44
|
+
if (validatorInstalled) {
|
|
45
|
+
validationErrors.push.apply(validationErrors, _toConsumableArray(extractExpressValidatorErrors(res.locals.body)));
|
|
46
|
+
}
|
|
47
|
+
if (celebrateInstalled) {
|
|
48
|
+
validationErrors.push.apply(validationErrors, _toConsumableArray(extractCelebrateErrors(res.locals.body)));
|
|
49
|
+
}
|
|
50
|
+
if (nestInstalled && classValidatorInstalled) {
|
|
51
|
+
validationErrors.push.apply(validationErrors, _toConsumableArray(extractNestValidationErrors(res.locals.body)));
|
|
52
|
+
}
|
|
53
|
+
validationErrors.forEach(function (error) {
|
|
54
|
+
client.validationErrorLogger.logValidationError(_objectSpread({
|
|
55
|
+
consumer: getConsumer(req),
|
|
56
|
+
method: req.method,
|
|
57
|
+
path: req.route.path
|
|
58
|
+
}, error));
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
} catch (error) {
|
|
63
|
+
client.logger.error("Error while logging request in Apitally middleware.", {
|
|
64
|
+
request: req,
|
|
65
|
+
response: res,
|
|
66
|
+
error: error
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
} catch (error) {
|
|
71
|
+
client.logger.error("Error in Apitally middleware.", {
|
|
72
|
+
request: req,
|
|
73
|
+
response: res,
|
|
74
|
+
error: error
|
|
75
|
+
});
|
|
76
|
+
} finally {
|
|
77
|
+
next();
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
var getConsumer = function getConsumer(req) {
|
|
82
|
+
if (req.consumerIdentifier) {
|
|
83
|
+
return String(req.consumerIdentifier);
|
|
84
|
+
}
|
|
85
|
+
if (req.keyInfo && req.keyInfo instanceof KeyInfo) {
|
|
86
|
+
return "key:".concat(req.keyInfo.keyId);
|
|
87
|
+
}
|
|
88
|
+
return null;
|
|
89
|
+
};
|
|
90
|
+
var extractExpressValidatorErrors = function extractExpressValidatorErrors(responseBody) {
|
|
91
|
+
var errors = [];
|
|
92
|
+
if (responseBody && responseBody.errors && Array.isArray(responseBody.errors)) {
|
|
93
|
+
responseBody.errors.forEach(function (error) {
|
|
94
|
+
if (error.location && error.path && error.msg && error.type) {
|
|
95
|
+
errors.push({
|
|
96
|
+
loc: "".concat(error.location, ".").concat(error.path),
|
|
97
|
+
msg: error.msg,
|
|
98
|
+
type: error.type
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
return errors;
|
|
104
|
+
};
|
|
105
|
+
var extractCelebrateErrors = function extractCelebrateErrors(responseBody) {
|
|
106
|
+
var errors = [];
|
|
107
|
+
if (responseBody && responseBody.validation) {
|
|
108
|
+
Object.values(responseBody.validation).forEach(function (error) {
|
|
109
|
+
if (error.source && error.keys && Array.isArray(error.keys) && error.message) {
|
|
110
|
+
error.keys.forEach(function (key) {
|
|
111
|
+
errors.push({
|
|
112
|
+
loc: "".concat(error.source, ".").concat(key),
|
|
113
|
+
msg: subsetJoiMessage(error.message, key),
|
|
114
|
+
type: ""
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
return errors;
|
|
121
|
+
};
|
|
122
|
+
var extractNestValidationErrors = function extractNestValidationErrors(responseBody) {
|
|
123
|
+
var errors = [];
|
|
124
|
+
if (responseBody && Array.isArray(responseBody.message)) {
|
|
125
|
+
responseBody.message.forEach(function (message) {
|
|
126
|
+
errors.push({
|
|
127
|
+
loc: "",
|
|
128
|
+
msg: message,
|
|
129
|
+
type: ""
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
return errors;
|
|
134
|
+
};
|
|
135
|
+
var subsetJoiMessage = function subsetJoiMessage(message, key) {
|
|
136
|
+
var messageWithKey = message.split(". ").find(function (message) {
|
|
137
|
+
return message.includes("\"".concat(key, "\""));
|
|
138
|
+
});
|
|
139
|
+
return messageWithKey ? messageWithKey : message;
|
|
140
|
+
};
|
|
141
|
+
var getAppInfo = function getAppInfo(app, appVersion) {
|
|
142
|
+
var versions = [["nodejs", process.version]];
|
|
143
|
+
var expressVersion = getPackageVersion("express");
|
|
144
|
+
var apitallyVersion = getPackageVersion("../..");
|
|
145
|
+
if (expressVersion) {
|
|
146
|
+
versions.push(["express", expressVersion]);
|
|
147
|
+
}
|
|
148
|
+
if (apitallyVersion) {
|
|
149
|
+
versions.push(["apitally", apitallyVersion]);
|
|
150
|
+
}
|
|
151
|
+
if (appVersion) {
|
|
152
|
+
versions.push(["app", appVersion]);
|
|
153
|
+
}
|
|
154
|
+
return {
|
|
155
|
+
paths: listEndpoints(app),
|
|
156
|
+
versions: new Map(versions),
|
|
157
|
+
client: "js:express"
|
|
158
|
+
};
|
|
159
|
+
};
|
|
160
|
+
//# sourceMappingURL=middleware.js.map
|
|
@@ -0,0 +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","requestLogger","logRequest","consumer","getConsumer","method","path","statusCode","validationErrors","push","apply","_toConsumableArray","extractExpressValidatorErrors","extractCelebrateErrors","extractNestValidationErrors","forEach","error","validationErrorLogger","logValidationError","_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","expressVersion","apitallyVersion","paths","Map"],"sources":["../../../src/express/middleware.ts"],"sourcesContent":[null],"mappings":"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"}
|