@oas-tools/oas-telemetry 0.7.1 → 0.8.0-alpha.1
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/.env.example +17 -3
- package/README.md +1 -2
- package/dist/cjs/config/bootConfig.cjs +16 -14
- package/dist/cjs/config/config.cjs +120 -125
- package/dist/cjs/config/config.types.cjs +1 -4
- package/dist/cjs/docs/openapi.yaml +158 -4
- package/dist/cjs/index.cjs +27 -30
- package/dist/cjs/routesManager.cjs +62 -70
- package/dist/cjs/telemetry/custom-implementations/exporters/DiskLogExporter.cjs +121 -0
- package/dist/cjs/telemetry/custom-implementations/exporters/DiskMetricExporter.cjs +101 -0
- package/dist/cjs/telemetry/custom-implementations/exporters/DiskTraceExporter.cjs +103 -0
- package/dist/cjs/telemetry/custom-implementations/exporters/InMemoryDbLogExporter.cjs +194 -190
- package/dist/cjs/telemetry/custom-implementations/exporters/InMemoryDbMetricExporter.cjs +147 -99
- package/dist/cjs/telemetry/custom-implementations/exporters/InMemoryDbSpanExporter.cjs +143 -116
- package/dist/cjs/telemetry/custom-implementations/exporters/MultiMetricExporter.cjs +57 -0
- package/dist/cjs/telemetry/custom-implementations/instrumentations/logsInstrumentation.cjs +92 -0
- package/dist/cjs/telemetry/custom-implementations/metrics/tsdb/Chunk.cjs +159 -0
- package/dist/cjs/telemetry/custom-implementations/metrics/tsdb/Series.cjs +168 -0
- package/dist/cjs/telemetry/custom-implementations/metrics/tsdb/SeriesRegistry.cjs +392 -0
- package/dist/cjs/telemetry/custom-implementations/metrics/tsdb/types.cjs +2 -0
- package/dist/cjs/telemetry/custom-implementations/metrics/tsdb/utils.cjs +77 -0
- package/dist/cjs/telemetry/custom-implementations/processors/dynamicMultiLogProcessor.cjs +65 -63
- package/dist/cjs/telemetry/custom-implementations/processors/dynamicMultiSpanProcessor.cjs +63 -62
- package/dist/cjs/telemetry/custom-implementations/utils/circular.cjs +47 -47
- package/dist/cjs/telemetry/custom-implementations/wrappers.cjs +209 -138
- package/dist/cjs/telemetry/initializeTelemetry.cjs +35 -91
- package/dist/cjs/telemetry/persistence/DiskImporter.cjs +85 -0
- package/dist/cjs/telemetry/persistence/DiskUtils.cjs +61 -0
- package/dist/cjs/telemetry/persistence/DiskWriter.cjs +66 -0
- package/dist/cjs/telemetry/telemetryConfigurator.cjs +139 -72
- package/dist/cjs/telemetry/telemetryRegistry.cjs +45 -31
- package/dist/cjs/tlm-ai/agent.cjs +49 -64
- package/dist/cjs/tlm-ai/aiController.cjs +54 -76
- package/dist/cjs/tlm-ai/aiRoutes.cjs +17 -20
- package/dist/cjs/tlm-ai/aiService.cjs +91 -95
- package/dist/cjs/tlm-ai/tools.cjs +177 -174
- package/dist/cjs/tlm-auth/authController.cjs +80 -123
- package/dist/cjs/tlm-auth/authMiddleware.cjs +25 -30
- package/dist/cjs/tlm-auth/authRoutes.cjs +11 -14
- package/dist/cjs/tlm-log/logController.cjs +135 -116
- package/dist/cjs/tlm-log/logRoutes.cjs +19 -20
- package/dist/cjs/tlm-log/logService.cjs +29 -0
- package/dist/cjs/tlm-metric/metricsController.cjs +154 -122
- package/dist/cjs/tlm-metric/metricsRoutes.cjs +22 -20
- package/dist/cjs/tlm-metric/metricsService.cjs +26 -0
- package/dist/cjs/tlm-plugin/pluginController.cjs +128 -140
- package/dist/cjs/tlm-plugin/pluginProcess.cjs +89 -94
- package/dist/cjs/tlm-plugin/pluginRoutes.cjs +11 -14
- package/dist/cjs/tlm-plugin/pluginService.cjs +73 -74
- package/dist/cjs/tlm-trace/traceController.cjs +140 -123
- package/dist/cjs/tlm-trace/traceRoutes.cjs +19 -20
- package/dist/cjs/tlm-trace/traceService.cjs +29 -0
- package/dist/cjs/tlm-ui/uiRoutes.cjs +63 -32
- package/dist/cjs/tlm-util/utilController.cjs +68 -70
- package/dist/cjs/tlm-util/utilRoutes.cjs +51 -63
- package/dist/cjs/types/index.cjs +2 -5
- package/dist/cjs/utils/logger.cjs +38 -43
- package/dist/cjs/utils/regexUtils.cjs +22 -22
- package/dist/esm/config/bootConfig.js +5 -2
- package/dist/esm/config/config.js +9 -2
- package/dist/esm/docs/openapi.yaml +158 -4
- package/dist/esm/index.js +9 -8
- package/dist/esm/routesManager.js +6 -10
- package/dist/esm/telemetry/custom-implementations/exporters/DiskLogExporter.js +114 -0
- package/dist/esm/telemetry/custom-implementations/exporters/DiskMetricExporter.js +94 -0
- package/dist/esm/telemetry/custom-implementations/exporters/DiskTraceExporter.js +96 -0
- package/dist/esm/telemetry/custom-implementations/exporters/InMemoryDbLogExporter.js +38 -7
- package/dist/esm/telemetry/custom-implementations/exporters/InMemoryDbMetricExporter.js +107 -48
- package/dist/esm/telemetry/custom-implementations/exporters/InMemoryDbSpanExporter.js +60 -29
- package/dist/esm/telemetry/custom-implementations/exporters/MultiMetricExporter.js +53 -0
- package/dist/esm/telemetry/custom-implementations/instrumentations/logsInstrumentation.js +85 -0
- package/dist/esm/telemetry/custom-implementations/metrics/tsdb/Chunk.js +155 -0
- package/dist/esm/telemetry/custom-implementations/metrics/tsdb/Series.js +164 -0
- package/dist/esm/telemetry/custom-implementations/metrics/tsdb/SeriesRegistry.js +385 -0
- package/dist/esm/telemetry/custom-implementations/metrics/tsdb/types.js +1 -0
- package/dist/esm/telemetry/custom-implementations/metrics/tsdb/utils.js +74 -0
- package/dist/esm/telemetry/custom-implementations/processors/dynamicMultiLogProcessor.js +2 -1
- package/dist/esm/telemetry/custom-implementations/processors/dynamicMultiSpanProcessor.js +1 -1
- package/dist/esm/telemetry/custom-implementations/wrappers.js +77 -6
- package/dist/esm/telemetry/initializeTelemetry.js +27 -69
- package/dist/esm/telemetry/persistence/DiskImporter.js +78 -0
- package/dist/esm/telemetry/persistence/DiskUtils.js +51 -0
- package/dist/esm/telemetry/persistence/DiskWriter.js +59 -0
- package/dist/esm/telemetry/telemetryConfigurator.js +110 -39
- package/dist/esm/telemetry/telemetryRegistry.js +12 -1
- package/dist/esm/tlm-ai/agent.js +5 -3
- package/dist/esm/tlm-ai/aiController.js +3 -3
- package/dist/esm/tlm-ai/aiService.js +6 -2
- package/dist/esm/tlm-ai/tools.js +5 -9
- package/dist/esm/tlm-auth/authController.js +3 -2
- package/dist/esm/tlm-log/logController.js +62 -18
- package/dist/esm/tlm-log/logRoutes.js +3 -1
- package/dist/esm/tlm-log/logService.js +25 -0
- package/dist/esm/tlm-metric/metricsController.js +116 -50
- package/dist/esm/tlm-metric/metricsRoutes.js +8 -3
- package/dist/esm/tlm-metric/metricsService.js +22 -0
- package/dist/esm/tlm-plugin/pluginController.js +6 -11
- package/dist/esm/tlm-plugin/pluginService.js +2 -4
- package/dist/esm/tlm-trace/traceController.js +87 -36
- package/dist/esm/tlm-trace/traceRoutes.js +3 -1
- package/dist/esm/tlm-trace/traceService.js +25 -0
- package/dist/esm/tlm-ui/uiRoutes.js +5 -5
- package/dist/esm/tlm-util/utilController.js +3 -9
- package/dist/esm/tlm-util/utilRoutes.js +2 -2
- package/dist/types/config/bootConfig.d.ts +3 -0
- package/dist/types/config/config.d.ts +48 -7
- package/dist/types/config/config.types.d.ts +7 -0
- package/dist/types/index.d.ts +2 -3
- package/dist/types/telemetry/custom-implementations/exporters/DiskLogExporter.d.ts +24 -0
- package/dist/types/telemetry/custom-implementations/exporters/DiskMetricExporter.d.ts +23 -0
- package/dist/types/telemetry/custom-implementations/exporters/DiskTraceExporter.d.ts +23 -0
- package/dist/types/telemetry/custom-implementations/exporters/InMemoryDbLogExporter.d.ts +3 -1
- package/dist/types/telemetry/custom-implementations/exporters/InMemoryDbMetricExporter.d.ts +56 -15
- package/dist/types/telemetry/custom-implementations/exporters/InMemoryDbSpanExporter.d.ts +8 -4
- package/dist/types/telemetry/custom-implementations/exporters/MultiMetricExporter.d.ts +9 -0
- package/dist/types/telemetry/custom-implementations/instrumentations/logsInstrumentation.d.ts +23 -0
- package/dist/types/telemetry/custom-implementations/metrics/tsdb/Chunk.d.ts +49 -0
- package/dist/types/telemetry/custom-implementations/metrics/tsdb/Series.d.ts +67 -0
- package/dist/types/telemetry/custom-implementations/metrics/tsdb/SeriesRegistry.d.ts +69 -0
- package/dist/types/telemetry/custom-implementations/metrics/tsdb/types.d.ts +68 -0
- package/dist/types/telemetry/custom-implementations/metrics/tsdb/utils.d.ts +21 -0
- package/dist/types/telemetry/custom-implementations/processors/dynamicMultiLogProcessor.d.ts +2 -2
- package/dist/types/telemetry/custom-implementations/wrappers.d.ts +2 -1
- package/dist/types/telemetry/persistence/DiskImporter.d.ts +17 -0
- package/dist/types/telemetry/persistence/DiskUtils.d.ts +11 -0
- package/dist/types/telemetry/persistence/DiskWriter.d.ts +21 -0
- package/dist/types/telemetry/telemetryConfigurator.d.ts +1 -1
- package/dist/types/telemetry/telemetryRegistry.d.ts +8 -0
- package/dist/types/tlm-ai/agent.d.ts +1 -1
- package/dist/types/tlm-ai/aiService.d.ts +1 -1
- package/dist/types/tlm-log/logController.d.ts +2 -0
- package/dist/types/tlm-log/logService.d.ts +4 -0
- package/dist/types/tlm-metric/metricsController.d.ts +11 -2
- package/dist/types/tlm-metric/metricsService.d.ts +6 -0
- package/dist/types/tlm-trace/traceController.d.ts +9 -7
- package/dist/types/tlm-trace/traceService.d.ts +4 -0
- package/dist/types/types/index.d.ts +2 -2
- package/dist/ui/assets/{ApiDocsPage-C_VVPPHa.js → ApiDocsPage-DTCgVbW2.js} +2 -2
- package/dist/ui/assets/CollapsibleCard-lWgfsaAn.js +1 -0
- package/dist/ui/assets/DevToolsPage-DEhf8CBy.js +1 -0
- package/dist/ui/assets/LandingPage-CfEHCDxY.js +6 -0
- package/dist/ui/assets/LogsPage-DFDKRuGH.js +1 -0
- package/dist/ui/assets/{NotFoundPage-B3quk3P1.js → NotFoundPage-DCy0DcV7.js} +1 -1
- package/dist/ui/assets/PluginCreatePage-BawZ5_-h.js +50 -0
- package/dist/ui/assets/PluginPage-D3FmgU7d.js +27 -0
- package/dist/ui/assets/TraceSpansPage-D0_L45Rb.js +6 -0
- package/dist/ui/assets/VirtualizedListPanel-q605n9He.js +16 -0
- package/dist/ui/assets/alert-DBAFshSi.js +1133 -0
- package/dist/ui/assets/badge-DGNBtnxU.js +1 -0
- package/dist/ui/assets/{chevron-down-CPsvsmqj.js → chevron-down-CFEqYzGC.js} +1 -1
- package/dist/ui/assets/{chevron-up-Df9jMo1X.js → chevron-up-lDnFwAJq.js} +1 -1
- package/dist/ui/assets/{circle-alert-DOPQPvU8.js → circle-alert-BpYUuRs7.js} +1 -1
- package/dist/ui/assets/dialog-1dRyI6SC.js +15 -0
- package/dist/ui/assets/index-C7RfU6hR.js +1 -0
- package/dist/ui/assets/index-C9dDYIpd.js +305 -0
- package/dist/ui/assets/index-D6f1KjWV.css +1 -0
- package/dist/ui/assets/info-CuJQWoBU.js +6 -0
- package/dist/ui/assets/{input-Dzvg_ZEZ.js → input-BLXaar0X.js} +1 -1
- package/dist/ui/assets/label-DfAcltsl.js +1 -0
- package/dist/ui/assets/{loader-circle-CrvlRy5o.js → loader-circle-B7oLyPsi.js} +1 -1
- package/dist/ui/assets/{loginPage-qa4V-B70.js → loginPage-DswZvOJ-.js} +1 -1
- package/dist/ui/assets/metrics-page-BhtXrfUW.js +31 -0
- package/dist/ui/assets/metrics-page-D1GxaB_c.css +1 -0
- package/dist/ui/assets/popover-IDker85U.js +11 -0
- package/dist/ui/assets/select-B8y5IidE.js +6 -0
- package/dist/ui/assets/separator-B6EzrxYY.js +6 -0
- package/dist/ui/assets/severityOptions-DtCsaAZK.js +11 -0
- package/dist/ui/assets/square-pen-D_oecB1x.js +6 -0
- package/dist/ui/assets/switch-Dqo0XkRD.js +1 -0
- package/dist/ui/assets/trace-DJq1miYa.js +1 -0
- package/dist/ui/assets/upload-prIohEdY.js +11 -0
- package/dist/ui/assets/{utilService-DNyqzwj0.js → utilService-C8TJKLqs.js} +1 -1
- package/dist/ui/assets/wand-sparkles-OgXuzsSx.js +6 -0
- package/dist/ui/index.html +2 -2
- package/package.json +44 -49
- package/dist/ui/assets/CollapsibleCard-B3KR_8mL.js +0 -1
- package/dist/ui/assets/DevToolsPage-OyZcDcmw.js +0 -1
- package/dist/ui/assets/LandingPage-CppFBA6K.js +0 -6
- package/dist/ui/assets/LogsPage-9Fq8GArS.js +0 -26
- package/dist/ui/assets/PluginCreatePage-X_aCH4t4.js +0 -50
- package/dist/ui/assets/PluginPage-DMDSihrZ.js +0 -27
- package/dist/ui/assets/alert-jQ9HCPIf.js +0 -1133
- package/dist/ui/assets/badge-CNq0-mH5.js +0 -1
- package/dist/ui/assets/card-DFAwwhN3.js +0 -1
- package/dist/ui/assets/index-BkD6DijD.js +0 -15
- package/dist/ui/assets/index-CERGVYZK.js +0 -292
- package/dist/ui/assets/index-CSIPf9qw.css +0 -1
- package/dist/ui/assets/label-DuVnkZ4q.js +0 -1
- package/dist/ui/assets/select-DhS8YUtJ.js +0 -1
- package/dist/ui/assets/separator-isK4chBP.js +0 -6
- package/dist/ui/assets/severityOptions-O38dSOfk.js +0 -11
- package/dist/ui/assets/switch-Z3mImG9n.js +0 -1
- package/dist/ui/assets/tabs-_77MUUQe.js +0 -16
- package/dist/ui/assets/upload-C1LT4Gkb.js +0 -16
|
@@ -1,33 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
});
|
|
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
6
|
exports.getAuthMiddleware = getAuthMiddleware;
|
|
7
|
-
|
|
8
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
|
+
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
9
8
|
function getAuthMiddleware(oasTlmConfig) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
}
|
|
9
|
+
return function authMiddleware(req, res, next) {
|
|
10
|
+
if (!oasTlmConfig.auth.enabled) {
|
|
11
|
+
return next();
|
|
12
|
+
}
|
|
13
|
+
const token = req.cookies["oas-tlm-access-token"];
|
|
14
|
+
if (!token) {
|
|
15
|
+
res.status(401).json({ valid: false, message: "No access token" });
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
const payload = jsonwebtoken_1.default.verify(token, oasTlmConfig.auth.jwtSecret);
|
|
20
|
+
if (payload.type !== "access")
|
|
21
|
+
throw new Error("Invalid token type");
|
|
22
|
+
return next();
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
res.status(401).json({ valid: false, message: "Invalid access token" });
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
}
|
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.getAuthRoutes = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const getAuthRoutes = oasTlmConfig => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
4
|
+
const express_1 = require("express");
|
|
5
|
+
const authController_js_1 = require("./authController.cjs");
|
|
6
|
+
const getAuthRoutes = (oasTlmConfig) => {
|
|
7
|
+
const router = (0, express_1.Router)();
|
|
8
|
+
router.post('/login', (0, authController_js_1.getLogin)(oasTlmConfig));
|
|
9
|
+
router.post('/refresh', (0, authController_js_1.getRefresh)(oasTlmConfig));
|
|
10
|
+
router.post('/logout', (0, authController_js_1.getLogout)(oasTlmConfig));
|
|
11
|
+
router.get('/enabled', (0, authController_js_1.getAuthEnabled)(oasTlmConfig));
|
|
12
|
+
return router;
|
|
16
13
|
};
|
|
17
|
-
exports.getAuthRoutes = getAuthRoutes;
|
|
14
|
+
exports.getAuthRoutes = getAuthRoutes;
|
|
@@ -1,142 +1,161 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
});
|
|
6
|
-
exports.
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
13
|
-
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
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
|
+
exports.exportLogs = exports.getLogRetentionTime = exports.setLogRetentionTime = exports.statusLogs = exports.stopLogs = exports.startLogs = exports.importLogs = exports.insertLogsToDb = exports.resetLogs = exports.findLogs = void 0;
|
|
7
|
+
const telemetryRegistry_js_1 = require("../telemetry/telemetryRegistry.cjs");
|
|
8
|
+
const logger_js_1 = __importDefault(require("../utils/logger.cjs"));
|
|
9
|
+
const regexUtils_js_1 = require("../utils/regexUtils.cjs");
|
|
10
|
+
const logService_js_1 = require("./logService.cjs");
|
|
11
|
+
const zlib_1 = require("zlib");
|
|
14
12
|
const findLogs = async (req, res) => {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
error: 'Failed to find logs',
|
|
49
|
-
details: err.message
|
|
50
|
-
});
|
|
51
|
-
}
|
|
13
|
+
const body = req.body || {};
|
|
14
|
+
const messageSearch = body.textSearch || null;
|
|
15
|
+
const findQuery = body.query || {};
|
|
16
|
+
const limit = parseInt(body.limit) || 50;
|
|
17
|
+
const sortOrder = body.sort || null;
|
|
18
|
+
logger_js_1.default.debug(`findLogs called with query: ${JSON.stringify(findQuery)} and search: ${messageSearch}`, { depth: 3 });
|
|
19
|
+
let processedQuery;
|
|
20
|
+
try {
|
|
21
|
+
processedQuery = (0, regexUtils_js_1.convertRegexRecursively)(findQuery);
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
logger_js_1.default.error(error.message);
|
|
25
|
+
res.status(400).send({ error: error.message });
|
|
26
|
+
return; // Exit if invalid regex was encountered
|
|
27
|
+
}
|
|
28
|
+
try {
|
|
29
|
+
// Use findConfig object
|
|
30
|
+
const findConfig = {
|
|
31
|
+
query: processedQuery,
|
|
32
|
+
messageSearch,
|
|
33
|
+
limit,
|
|
34
|
+
sortOrder
|
|
35
|
+
};
|
|
36
|
+
const docs = await telemetryRegistry_js_1.inMemoryDbLogExporter.find(findConfig);
|
|
37
|
+
res.send({
|
|
38
|
+
logsCount: docs.length,
|
|
39
|
+
logs: docs,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
logger_js_1.default.error(err);
|
|
44
|
+
res.status(500).send({ error: 'Failed to find logs', details: err.message });
|
|
45
|
+
}
|
|
52
46
|
};
|
|
53
47
|
exports.findLogs = findLogs;
|
|
54
48
|
const resetLogs = (req, res) => {
|
|
55
|
-
|
|
56
|
-
|
|
49
|
+
telemetryRegistry_js_1.inMemoryDbLogExporter.reset();
|
|
50
|
+
res.send('Logs reset');
|
|
57
51
|
};
|
|
58
52
|
exports.resetLogs = resetLogs;
|
|
59
53
|
const insertLogsToDb = async (req, res) => {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
});
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
const cleanedLogs = jsonContent.map(log => {
|
|
69
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
70
|
-
const {
|
|
71
|
-
_id
|
|
72
|
-
} = log,
|
|
73
|
-
rest = _objectWithoutProperties(log, _excluded); // Remove _id if it exists
|
|
74
|
-
return rest; // Return the cleaned log object
|
|
75
|
-
});
|
|
76
|
-
try {
|
|
77
|
-
let message = '';
|
|
78
|
-
if (resetData) {
|
|
79
|
-
_telemetryRegistry.inMemoryDbLogExporter.reset();
|
|
80
|
-
message += 'Logs Database reset. ';
|
|
54
|
+
const jsonContent = (req.body || {}).logs;
|
|
55
|
+
const resetData = req.query.reset === 'true';
|
|
56
|
+
if (!Array.isArray(jsonContent)) {
|
|
57
|
+
res.status(400).send({ error: 'Invalid data format.' });
|
|
58
|
+
return;
|
|
81
59
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
60
|
+
const cleanedLogs = (0, logService_js_1.sanitizeLogRecords)(jsonContent);
|
|
61
|
+
try {
|
|
62
|
+
let message = '';
|
|
63
|
+
await (0, logService_js_1.importLogsToMemory)(cleanedLogs, { reset: resetData });
|
|
64
|
+
if (resetData) {
|
|
65
|
+
message += 'Logs Database reset. ';
|
|
87
66
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
});
|
|
96
|
-
} catch (err) {
|
|
97
|
-
_logger.default.error(err);
|
|
98
|
-
res.status(500).send({
|
|
99
|
-
error: 'Failed to reset and insert data',
|
|
100
|
-
details: err.message
|
|
101
|
-
});
|
|
102
|
-
}
|
|
67
|
+
message += `Inserted ${cleanedLogs.length} logs.`;
|
|
68
|
+
res.send({ message, InsertedLogsCount: cleanedLogs.length });
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
logger_js_1.default.error(err);
|
|
72
|
+
res.status(500).send({ error: 'Failed to reset and insert data', details: err.message });
|
|
73
|
+
}
|
|
103
74
|
};
|
|
104
75
|
exports.insertLogsToDb = insertLogsToDb;
|
|
76
|
+
const importLogs = async (req, res) => {
|
|
77
|
+
const resetData = req.query.reset === 'true';
|
|
78
|
+
const body = req.body || {};
|
|
79
|
+
const importedLogs = Array.isArray(body) ? body : body.logs;
|
|
80
|
+
try {
|
|
81
|
+
if (!Array.isArray(importedLogs)) {
|
|
82
|
+
res.status(400).send({ error: 'Invalid data format. Expected an array in request body or body.logs.' });
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const cleanedLogs = (0, logService_js_1.sanitizeLogRecords)(importedLogs);
|
|
86
|
+
let message = '';
|
|
87
|
+
await (0, logService_js_1.importLogsToMemory)(cleanedLogs, { reset: resetData });
|
|
88
|
+
if (resetData) {
|
|
89
|
+
message += 'Logs Database reset. ';
|
|
90
|
+
}
|
|
91
|
+
message += `Imported ${cleanedLogs.length} logs.`;
|
|
92
|
+
res.send({ message, ImportedLogsCount: cleanedLogs.length });
|
|
93
|
+
}
|
|
94
|
+
catch (err) {
|
|
95
|
+
logger_js_1.default.error('Import failed:', err);
|
|
96
|
+
res.status(400).send({ error: 'Failed to import logs', details: err.message });
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
exports.importLogs = importLogs;
|
|
105
100
|
const startLogs = (req, res) => {
|
|
106
|
-
|
|
107
|
-
|
|
101
|
+
telemetryRegistry_js_1.inMemoryDbLogExporter.enable();
|
|
102
|
+
res.send('Log collection started');
|
|
108
103
|
};
|
|
109
104
|
exports.startLogs = startLogs;
|
|
110
105
|
const stopLogs = (req, res) => {
|
|
111
|
-
|
|
112
|
-
|
|
106
|
+
telemetryRegistry_js_1.inMemoryDbLogExporter.disable();
|
|
107
|
+
res.send('Log collection stopped');
|
|
113
108
|
};
|
|
114
109
|
exports.stopLogs = stopLogs;
|
|
115
110
|
const statusLogs = (req, res) => {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
active: isRunning
|
|
119
|
-
});
|
|
111
|
+
const isRunning = telemetryRegistry_js_1.inMemoryDbLogExporter.isEnabled() || false;
|
|
112
|
+
res.send({ active: isRunning });
|
|
120
113
|
};
|
|
121
114
|
exports.statusLogs = statusLogs;
|
|
122
115
|
const setLogRetentionTime = (req, res) => {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
_telemetryRegistry.inMemoryDbLogExporter.retentionTimeInSeconds = retentionTimeInSeconds;
|
|
131
|
-
res.send({
|
|
132
|
-
message: `Retention time set to ${retentionTimeInSeconds} seconds.`
|
|
133
|
-
});
|
|
116
|
+
const retentionTimeInSeconds = (req.body || {}).retentionTimeInSeconds;
|
|
117
|
+
if (typeof retentionTimeInSeconds !== 'number' || retentionTimeInSeconds <= 0) {
|
|
118
|
+
res.status(400).send({ error: 'Invalid retention time. Must be a positive number.' });
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
telemetryRegistry_js_1.inMemoryDbLogExporter.retentionTimeInSeconds = retentionTimeInSeconds;
|
|
122
|
+
res.send({ message: `Retention time set to ${retentionTimeInSeconds} seconds.` });
|
|
134
123
|
};
|
|
135
124
|
exports.setLogRetentionTime = setLogRetentionTime;
|
|
136
125
|
const getLogRetentionTime = (req, res) => {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
126
|
+
const retentionTimeInSeconds = telemetryRegistry_js_1.inMemoryDbLogExporter.retentionTimeInSeconds || 0;
|
|
127
|
+
res.send({ retentionTimeInSeconds: retentionTimeInSeconds });
|
|
128
|
+
};
|
|
129
|
+
exports.getLogRetentionTime = getLogRetentionTime;
|
|
130
|
+
const exportLogs = async (req, res) => {
|
|
131
|
+
try {
|
|
132
|
+
const findConfig = {
|
|
133
|
+
query: {},
|
|
134
|
+
messageSearch: null,
|
|
135
|
+
sortOrder: { timestamp: -1 }
|
|
136
|
+
};
|
|
137
|
+
const docs = await telemetryRegistry_js_1.inMemoryDbLogExporter.find(findConfig);
|
|
138
|
+
const responseBody = { logsCount: docs.length, logs: docs };
|
|
139
|
+
const payload = JSON.stringify(responseBody);
|
|
140
|
+
const payloadSize = Buffer.byteLength(payload, 'utf-8');
|
|
141
|
+
const acceptsGzip = String(req.headers['accept-encoding'] || '').includes('gzip');
|
|
142
|
+
const timestamp = new Date().toISOString().slice(0, 19).replace(/[-T:]/g, '');
|
|
143
|
+
res.setHeader('Content-Type', 'application/json');
|
|
144
|
+
res.setHeader('Content-Disposition', `attachment; filename="logs-${timestamp}.json"`);
|
|
145
|
+
res.setHeader('Vary', 'Accept-Encoding');
|
|
146
|
+
if (acceptsGzip && payloadSize > 64 * 1024) {
|
|
147
|
+
const compressed = (0, zlib_1.gzipSync)(payload);
|
|
148
|
+
res.setHeader('Content-Encoding', 'gzip');
|
|
149
|
+
res.setHeader('Content-Length', compressed.length.toString());
|
|
150
|
+
res.end(compressed);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
res.setHeader('Content-Length', payloadSize.toString());
|
|
154
|
+
res.end(payload);
|
|
155
|
+
}
|
|
156
|
+
catch (err) {
|
|
157
|
+
logger_js_1.default.error('Failed to export logs:', err);
|
|
158
|
+
res.status(500).send({ error: 'Failed to export logs', details: err.message });
|
|
159
|
+
}
|
|
141
160
|
};
|
|
142
|
-
exports.
|
|
161
|
+
exports.exportLogs = exportLogs;
|
|
@@ -1,24 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
exports.getLogRoutes = exports.default = void 0;
|
|
7
|
-
var _express = require("express");
|
|
8
|
-
var _logController = require("./logController.cjs");
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getLogRoutes = void 0;
|
|
4
|
+
const express_1 = require("express");
|
|
5
|
+
const logController_js_1 = require("./logController.cjs");
|
|
9
6
|
const getLogRoutes = () => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
7
|
+
const router = (0, express_1.Router)();
|
|
8
|
+
// Logs Control
|
|
9
|
+
router.post('/start', logController_js_1.startLogs);
|
|
10
|
+
router.post('/stop', logController_js_1.stopLogs);
|
|
11
|
+
router.get('/status', logController_js_1.statusLogs);
|
|
12
|
+
router.post('/reset', logController_js_1.resetLogs);
|
|
13
|
+
router.post('/retention-time', logController_js_1.setLogRetentionTime);
|
|
14
|
+
router.get('/retention-time', logController_js_1.getLogRetentionTime);
|
|
15
|
+
router.get('/export', logController_js_1.exportLogs);
|
|
16
|
+
router.post('/import', logController_js_1.importLogs);
|
|
17
|
+
router.get('/', logController_js_1.findLogs);
|
|
18
|
+
router.post('/', logController_js_1.insertLogsToDb);
|
|
19
|
+
router.post('/find', logController_js_1.findLogs);
|
|
20
|
+
return router;
|
|
22
21
|
};
|
|
23
22
|
exports.getLogRoutes = getLogRoutes;
|
|
24
|
-
|
|
23
|
+
exports.default = exports.getLogRoutes;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sanitizeLogRecords = sanitizeLogRecords;
|
|
4
|
+
exports.importLogsToMemory = importLogsToMemory;
|
|
5
|
+
const telemetryRegistry_js_1 = require("../telemetry/telemetryRegistry.cjs");
|
|
6
|
+
function sanitizeLogRecords(records) {
|
|
7
|
+
return records.map((record) => {
|
|
8
|
+
const { _id, ...rest } = record;
|
|
9
|
+
return rest;
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
async function importLogsToMemory(records, options) {
|
|
13
|
+
if (options?.reset) {
|
|
14
|
+
telemetryRegistry_js_1.inMemoryDbLogExporter.reset();
|
|
15
|
+
}
|
|
16
|
+
if (!records.length) {
|
|
17
|
+
return 0;
|
|
18
|
+
}
|
|
19
|
+
await new Promise((resolve, reject) => {
|
|
20
|
+
telemetryRegistry_js_1.inMemoryDbLogExporter.insert(records, (err) => {
|
|
21
|
+
if (err) {
|
|
22
|
+
reject(err);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
resolve();
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
return records.length;
|
|
29
|
+
}
|