@oas-tools/oas-telemetry 0.3.0 → 0.5.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.
Files changed (39) hide show
  1. package/LICENSE +0 -0
  2. package/README.md +151 -133
  3. package/dist/client.cjs +14 -0
  4. package/dist/config.cjs +27 -0
  5. package/dist/controllers/pluginController.cjs +118 -0
  6. package/dist/controllers/telemetryController.cjs +92 -0
  7. package/dist/controllers/uiController.cjs +78 -0
  8. package/dist/exporters/InMemoryDbExporter.cjs +45 -42
  9. package/dist/exporters/consoleExporter.cjs +52 -0
  10. package/dist/exporters/dynamicExporter.cjs +64 -0
  11. package/dist/index.cjs +61 -248
  12. package/dist/middleware/auth.cjs +17 -0
  13. package/dist/middleware/authMiddleware.cjs +19 -0
  14. package/dist/openTelemetry.cjs +20 -0
  15. package/dist/routes/authRoutes.cjs +79 -0
  16. package/dist/routes/telemetryRoutes.cjs +31 -0
  17. package/{src/ui.js → dist/services/uiService.cjs} +1140 -813
  18. package/dist/telemetry.cjs +0 -0
  19. package/dist/types/exporters/InMemoryDbExporter.d.ts +16 -0
  20. package/dist/types/index.d.ts +1 -0
  21. package/dist/types/telemetry.d.ts +2 -0
  22. package/dist/types/ui.d.ts +4 -0
  23. package/dist/ui.cjs +0 -0
  24. package/package.json +75 -71
  25. package/src/config.js +19 -0
  26. package/src/controllers/pluginController.js +115 -0
  27. package/src/controllers/telemetryController.js +68 -0
  28. package/src/controllers/uiController.js +69 -0
  29. package/src/dev/ui/login.html +32 -0
  30. package/src/exporters/InMemoryDbExporter.js +180 -175
  31. package/src/exporters/consoleExporter.js +47 -0
  32. package/src/exporters/dynamicExporter.js +62 -0
  33. package/src/index.js +85 -307
  34. package/src/middleware/authMiddleware.js +14 -0
  35. package/src/openTelemetry.js +22 -0
  36. package/src/routes/authRoutes.js +53 -0
  37. package/src/routes/telemetryRoutes.js +38 -0
  38. package/src/services/uiService.js +1520 -0
  39. package/src/telemetry.js +0 -25
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _config = require("../config.cjs");
8
+ var _express = require("express");
9
+ var _cookie = require("cookie");
10
+ var _uiService = _interopRequireDefault(require("../services/uiService.cjs"));
11
+ var _jsonwebtoken = _interopRequireDefault(require("jsonwebtoken"));
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ const router = (0, _express.Router)();
14
+ router.post('/login', (req, res) => {
15
+ try {
16
+ const {
17
+ password
18
+ } = req.body;
19
+ if (password === _config.globalOasTlmConfig.password) {
20
+ let options = {
21
+ maxAge: _config.globalOasTlmConfig.apiKeyMaxAge,
22
+ httpOnly: true,
23
+ // The cookie only accessible by the web server
24
+ secure: true,
25
+ // Only sends cookie over https
26
+ signed: false // Indicates if the cookie should be signed
27
+ };
28
+ const apiKey = _jsonwebtoken.default.sign({
29
+ password: _config.globalOasTlmConfig.password
30
+ }, _config.globalOasTlmConfig.jwtSecret);
31
+ res.cookie('apiKey', apiKey, options);
32
+ return res.status(200).json({
33
+ valid: true,
34
+ message: 'API Key is valid'
35
+ });
36
+ }
37
+ res.status(400).json({
38
+ valid: false,
39
+ message: 'Invalid API Key'
40
+ });
41
+ } catch (error) {
42
+ console.log("Error: ", error);
43
+ res.status(500).json({
44
+ valid: false,
45
+ message: 'Internal server error'
46
+ });
47
+ }
48
+ });
49
+ router.get('/logout', (req, res) => {
50
+ res.clearCookie('apiKey');
51
+ res.redirect(_config.globalOasTlmConfig.baseURL + '/login');
52
+ });
53
+
54
+ //check is used in the UI (http polling) to validate the Cookies to redirect to the login page if needed
55
+ router.get('/check', (req, res) => {
56
+ if (!req.cookies.apiKey) {
57
+ return res.status(200).json({
58
+ valid: false,
59
+ message: 'API Key is invalid'
60
+ });
61
+ }
62
+ const decoded = _jsonwebtoken.default.verify(req.cookies.apiKey, _config.globalOasTlmConfig.jwtSecret);
63
+ if (decoded.password === _config.globalOasTlmConfig.password) {
64
+ return res.status(200).json({
65
+ valid: true,
66
+ message: 'API Key is valid'
67
+ });
68
+ }
69
+ res.status(200).json({
70
+ valid: false,
71
+ message: 'Invalid API Key'
72
+ });
73
+ });
74
+ router.get('/login', (req, res) => {
75
+ const baseURL = _config.globalOasTlmConfig.baseURL;
76
+ res.send((0, _uiService.default)(baseURL).login);
77
+ });
78
+ var _default = exports.default = router;
79
+ module.exports = exports.default;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.telemetryRoutes = exports.default = void 0;
7
+ var _express = require("express");
8
+ var _uiController = require("../controllers/uiController.cjs");
9
+ var _telemetryController = require("../controllers/telemetryController.cjs");
10
+ var _pluginController = require("../controllers/pluginController.cjs");
11
+ const telemetryRoutes = exports.telemetryRoutes = (0, _express.Router)();
12
+
13
+ // Main Pages
14
+ telemetryRoutes.get('/', _uiController.mainPage);
15
+ telemetryRoutes.get('/detail/*', _uiController.detailPage);
16
+ telemetryRoutes.get('/spec', _uiController.specLoader);
17
+ telemetryRoutes.get('/api', _uiController.apiPage);
18
+
19
+ // Telemetry Control
20
+ telemetryRoutes.get('/start', _telemetryController.startTelemetry);
21
+ telemetryRoutes.get('/stop', _telemetryController.stopTelemetry);
22
+ telemetryRoutes.get('/status', _telemetryController.statusTelemetry);
23
+ telemetryRoutes.get('/reset', _telemetryController.resetTelemetry);
24
+ telemetryRoutes.get('/list', _telemetryController.listTelemetry);
25
+ telemetryRoutes.post('/find', _telemetryController.findTelemetry);
26
+ telemetryRoutes.get('/heapStats', _telemetryController.heapStats);
27
+
28
+ // Plugins
29
+ telemetryRoutes.get('/plugins', _pluginController.listPlugins);
30
+ telemetryRoutes.post('/plugins', _pluginController.registerPlugin);
31
+ var _default = exports.default = telemetryRoutes;