@platformatic/watt-admin 0.4.0 → 0.6.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/README.md +4 -0
- package/cli.js +85 -91
- package/lib/start.js +73 -12
- package/package.json +47 -42
- package/tsconfig.json +22 -0
- package/watt.json +1 -1
- package/web/backend/platformatic.json +2 -3
- package/web/backend/tsconfig.json +4 -1
- package/web/composer/platformatic.json +3 -3
- package/web/frontend/dist/index.html +2977 -6
- package/web/frontend/index.html +0 -1
- package/web/frontend/tsconfig.json +2 -1
- package/web/frontend/watt.json +2 -2
- package/web/backend/dist/plugins/metrics.js +0 -13
- package/web/backend/dist/plugins/metrics.js.map +0 -1
- package/web/backend/dist/plugins/websocket.js +0 -11
- package/web/backend/dist/plugins/websocket.js.map +0 -1
- package/web/backend/dist/routes/metrics.js +0 -45
- package/web/backend/dist/routes/metrics.js.map +0 -1
- package/web/backend/dist/routes/root.js +0 -174
- package/web/backend/dist/routes/root.js.map +0 -1
- package/web/backend/dist/routes/ws.js +0 -38
- package/web/backend/dist/routes/ws.js.map +0 -1
- package/web/backend/dist/schemas/index.js +0 -120
- package/web/backend/dist/schemas/index.js.map +0 -1
- package/web/backend/dist/utils/calc.js +0 -248
- package/web/backend/dist/utils/calc.js.map +0 -1
- package/web/backend/dist/utils/client.openapi.js +0 -31
- package/web/backend/dist/utils/client.openapi.js.map +0 -1
- package/web/backend/dist/utils/log.js +0 -29
- package/web/backend/dist/utils/log.js.map +0 -1
- package/web/backend/openapi.json +0 -786
- package/web/frontend/dist/assets/index-BpxIrIMq.js +0 -267
- package/web/frontend/dist/assets/index-BpxIrIMq.js.map +0 -1
- package/web/frontend/dist/assets/index-DM7peTyq.css +0 -1
- package/web/frontend/postcss.config.cjs +0 -11
package/web/frontend/index.html
CHANGED
package/web/frontend/watt.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"$schema": "https://schemas.platformatic.dev/@platformatic/vite/
|
|
3
|
-
"application": { "basePath": "/", "commands": { "build": "
|
|
2
|
+
"$schema": "https://schemas.platformatic.dev/@platformatic/vite/3.11.0.json",
|
|
3
|
+
"application": { "basePath": "/", "commands": { "build": "vite build" } },
|
|
4
4
|
"vite": {
|
|
5
5
|
"ssr": false
|
|
6
6
|
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.default = default_1;
|
|
4
|
-
const calc_1 = require("../utils/calc");
|
|
5
|
-
async function default_1(fastify) {
|
|
6
|
-
fastify.decorate('mappedMetrics', {});
|
|
7
|
-
fastify.decorate('metricsInterval', setInterval(() => (0, calc_1.calculateMetrics)(fastify), 1000));
|
|
8
|
-
fastify.addHook('onClose', async () => {
|
|
9
|
-
fastify.log.info('Closing the backend...');
|
|
10
|
-
clearInterval(fastify.metricsInterval);
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=metrics.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../plugins/metrics.ts"],"names":[],"mappings":";;AAGA,4BAUC;AAZD,wCAAgD;AAEjC,KAAK,oBAAW,OAAwB;IACrD,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,CAAC,CAAA;IAErC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,IAAA,uBAAgB,EAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;IAEvF,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAEpC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;QAC1C,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.default = default_1;
|
|
7
|
-
const websocket_1 = __importDefault(require("@fastify/websocket"));
|
|
8
|
-
async function default_1(fastify) {
|
|
9
|
-
await fastify.register(websocket_1.default);
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=websocket.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../plugins/websocket.ts"],"names":[],"mappings":";;;;;AAGA,4BAEC;AALD,mEAA0C;AAG3B,KAAK,oBAAW,OAAwB;IACrD,MAAM,OAAO,CAAC,QAAQ,CAAC,mBAAS,CAAC,CAAA;AACnC,CAAC"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.default = default_1;
|
|
4
|
-
const schemas_1 = require("../schemas");
|
|
5
|
-
async function default_1(fastify) {
|
|
6
|
-
const typedFastify = fastify.withTypeProvider();
|
|
7
|
-
const emptyMetrics = { dataCpu: [], dataLatency: [], dataMem: [], dataReq: [] };
|
|
8
|
-
typedFastify.get('/runtimes/:pid/metrics', {
|
|
9
|
-
schema: { params: schemas_1.pidParamSchema, response: { 200: schemas_1.metricResponseSchema } },
|
|
10
|
-
}, async ({ params: { pid } }) => {
|
|
11
|
-
return typedFastify.mappedMetrics[pid]?.aggregated || emptyMetrics;
|
|
12
|
-
});
|
|
13
|
-
typedFastify.get('/runtimes/:pid/metrics/:serviceId', {
|
|
14
|
-
schema: {
|
|
15
|
-
params: {
|
|
16
|
-
type: 'object',
|
|
17
|
-
properties: {
|
|
18
|
-
pid: { type: 'number' },
|
|
19
|
-
serviceId: { type: 'string' }
|
|
20
|
-
},
|
|
21
|
-
required: ['pid', 'serviceId']
|
|
22
|
-
},
|
|
23
|
-
response: { 200: schemas_1.metricResponseSchema }
|
|
24
|
-
}
|
|
25
|
-
}, async ({ params: { pid, serviceId } }) => {
|
|
26
|
-
return fastify.mappedMetrics[pid]?.services[serviceId]?.all || emptyMetrics;
|
|
27
|
-
});
|
|
28
|
-
typedFastify.get('/runtimes/:pid/metrics/:serviceId/:workerId', {
|
|
29
|
-
schema: {
|
|
30
|
-
params: {
|
|
31
|
-
type: 'object',
|
|
32
|
-
properties: {
|
|
33
|
-
pid: { type: 'number' },
|
|
34
|
-
serviceId: { type: 'string' },
|
|
35
|
-
workerId: { type: 'number' },
|
|
36
|
-
},
|
|
37
|
-
required: ['pid', 'serviceId', 'workerId']
|
|
38
|
-
},
|
|
39
|
-
response: { 200: schemas_1.metricResponseSchema }
|
|
40
|
-
}
|
|
41
|
-
}, async ({ params: { pid, serviceId, workerId } }) => {
|
|
42
|
-
return fastify.mappedMetrics[pid]?.services[serviceId]?.[workerId] || emptyMetrics;
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=metrics.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../routes/metrics.ts"],"names":[],"mappings":";;AAIA,4BA0CC;AA5CD,wCAAiE;AAElD,KAAK,oBAAW,OAAwB;IACrD,MAAM,YAAY,GAAG,OAAO,CAAC,gBAAgB,EAA0B,CAAA;IACvE,MAAM,YAAY,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;IAE/E,YAAY,CAAC,GAAG,CAAC,wBAAwB,EAAE;QACzC,MAAM,EAAE,EAAE,MAAM,EAAE,wBAAc,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,8BAAoB,EAAE,EAAE;KAC5E,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;QAC/B,OAAO,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,UAAU,IAAI,YAAY,CAAA;IACpE,CAAC,CAAC,CAAA;IAEF,YAAY,CAAC,GAAG,CAAC,mCAAmC,EAAE;QACpD,MAAM,EAAE;YACN,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACvB,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC9B;gBACD,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC;aAC/B;YACD,QAAQ,EAAE,EAAE,GAAG,EAAE,8BAAoB,EAAE;SACxC;KACF,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE;QAC1C,OAAO,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,YAAY,CAAA;IAC7E,CAAC,CAAC,CAAA;IAEF,YAAY,CAAC,GAAG,CAAC,6CAA6C,EAAE;QAC9D,MAAM,EAAE;YACN,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACvB,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC7B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC7B;gBACD,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC;aAC3C;YACD,QAAQ,EAAE,EAAE,GAAG,EAAE,8BAAoB,EAAE;SACxC;KACF,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE;QACpD,OAAO,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAA;IACpF,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.default = default_1;
|
|
4
|
-
const control_1 = require("@platformatic/control");
|
|
5
|
-
const schemas_1 = require("../schemas");
|
|
6
|
-
async function default_1(fastify) {
|
|
7
|
-
const typedFastify = fastify.withTypeProvider();
|
|
8
|
-
const api = new control_1.RuntimeApiClient();
|
|
9
|
-
typedFastify.get('/runtimes', {
|
|
10
|
-
schema: {
|
|
11
|
-
querystring: {
|
|
12
|
-
type: 'object',
|
|
13
|
-
properties: {
|
|
14
|
-
includeAdmin: {
|
|
15
|
-
type: 'boolean',
|
|
16
|
-
default: false,
|
|
17
|
-
},
|
|
18
|
-
},
|
|
19
|
-
},
|
|
20
|
-
response: { 200: { type: 'array', items: schemas_1.selectableRuntimeSchema } }
|
|
21
|
-
}
|
|
22
|
-
}, async (request) => {
|
|
23
|
-
const runtimes = await api.getRuntimes();
|
|
24
|
-
const selectableRuntimes = [];
|
|
25
|
-
for (const runtime of runtimes) {
|
|
26
|
-
if (!request.query.includeAdmin && runtime.packageName === 'watt-admin') {
|
|
27
|
-
continue;
|
|
28
|
-
}
|
|
29
|
-
let selected = true;
|
|
30
|
-
if (process.env.SELECTED_RUNTIME) {
|
|
31
|
-
selected = process.env.SELECTED_RUNTIME === runtime.pid.toString();
|
|
32
|
-
}
|
|
33
|
-
selectableRuntimes.push({ ...runtime, packageName: runtime.packageName || '', packageVersion: runtime.packageVersion || '', url: runtime.url || '', selected });
|
|
34
|
-
}
|
|
35
|
-
return selectableRuntimes;
|
|
36
|
-
});
|
|
37
|
-
typedFastify.get('/runtimes/:pid/health', {
|
|
38
|
-
schema: {
|
|
39
|
-
params: schemas_1.pidParamSchema,
|
|
40
|
-
response: {
|
|
41
|
-
200: {
|
|
42
|
-
type: 'object',
|
|
43
|
-
additionalProperties: false,
|
|
44
|
-
properties: {
|
|
45
|
-
status: {
|
|
46
|
-
type: 'string',
|
|
47
|
-
enum: ['OK', 'KO'],
|
|
48
|
-
description: "Status can only be 'OK' or 'KO'"
|
|
49
|
-
}
|
|
50
|
-
},
|
|
51
|
-
required: ['status']
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}, async ({ params: { pid } }) => {
|
|
56
|
-
try {
|
|
57
|
-
const result = await api.getMatchingRuntime({ pid: pid.toString() });
|
|
58
|
-
if (result.pid === pid) {
|
|
59
|
-
return { status: 'OK' };
|
|
60
|
-
}
|
|
61
|
-
return { status: 'KO' };
|
|
62
|
-
}
|
|
63
|
-
catch {
|
|
64
|
-
return { status: 'KO' };
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
typedFastify.get('/runtimes/:pid/services', {
|
|
68
|
-
schema: {
|
|
69
|
-
params: schemas_1.pidParamSchema,
|
|
70
|
-
response: {
|
|
71
|
-
200: {
|
|
72
|
-
type: 'object',
|
|
73
|
-
additionalProperties: false,
|
|
74
|
-
required: ['entrypoint', 'production', 'services'],
|
|
75
|
-
properties: {
|
|
76
|
-
entrypoint: {
|
|
77
|
-
type: 'string'
|
|
78
|
-
},
|
|
79
|
-
production: {
|
|
80
|
-
type: 'boolean'
|
|
81
|
-
},
|
|
82
|
-
services: {
|
|
83
|
-
type: 'array',
|
|
84
|
-
items: {
|
|
85
|
-
anyOf: [
|
|
86
|
-
{
|
|
87
|
-
type: 'object',
|
|
88
|
-
required: ['id', 'type', 'status', 'version', 'localUrl', 'entrypoint', 'dependencies'],
|
|
89
|
-
properties: {
|
|
90
|
-
id: {
|
|
91
|
-
type: 'string'
|
|
92
|
-
},
|
|
93
|
-
type: {
|
|
94
|
-
type: 'string'
|
|
95
|
-
},
|
|
96
|
-
status: {
|
|
97
|
-
type: 'string'
|
|
98
|
-
},
|
|
99
|
-
version: {
|
|
100
|
-
type: 'string'
|
|
101
|
-
},
|
|
102
|
-
localUrl: {
|
|
103
|
-
type: 'string'
|
|
104
|
-
},
|
|
105
|
-
entrypoint: {
|
|
106
|
-
type: 'boolean'
|
|
107
|
-
},
|
|
108
|
-
workers: {
|
|
109
|
-
type: 'number'
|
|
110
|
-
},
|
|
111
|
-
url: {
|
|
112
|
-
type: 'string'
|
|
113
|
-
},
|
|
114
|
-
dependencies: {
|
|
115
|
-
type: 'array',
|
|
116
|
-
items: {
|
|
117
|
-
type: 'object',
|
|
118
|
-
required: ['id', 'url', 'local'],
|
|
119
|
-
properties: {
|
|
120
|
-
id: {
|
|
121
|
-
type: 'string'
|
|
122
|
-
},
|
|
123
|
-
url: {
|
|
124
|
-
type: 'string'
|
|
125
|
-
},
|
|
126
|
-
local: {
|
|
127
|
-
type: 'boolean'
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
type: 'object',
|
|
136
|
-
required: ['id', 'status'],
|
|
137
|
-
properties: {
|
|
138
|
-
id: {
|
|
139
|
-
type: 'string'
|
|
140
|
-
},
|
|
141
|
-
status: {
|
|
142
|
-
type: 'string'
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
]
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
}, async (request) => {
|
|
154
|
-
return api.getRuntimeServices(request.params.pid);
|
|
155
|
-
});
|
|
156
|
-
typedFastify.get('/runtimes/:pid/openapi/:serviceId', {
|
|
157
|
-
schema: {
|
|
158
|
-
params: { type: 'object', properties: { pid: { type: 'number' }, serviceId: { type: 'string' } }, required: ['pid', 'serviceId'] }
|
|
159
|
-
}
|
|
160
|
-
}, async ({ params: { pid, serviceId } }) => {
|
|
161
|
-
return api.getRuntimeOpenapi(pid, serviceId);
|
|
162
|
-
});
|
|
163
|
-
typedFastify.post('/runtimes/:pid/restart', {
|
|
164
|
-
schema: { params: schemas_1.pidParamSchema, body: { type: 'object' } }
|
|
165
|
-
}, async (request) => {
|
|
166
|
-
try {
|
|
167
|
-
await api.restartRuntime(request.params.pid);
|
|
168
|
-
}
|
|
169
|
-
catch (err) {
|
|
170
|
-
fastify.log.warn({ err }, 'Issue restarting the runtime');
|
|
171
|
-
}
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
//# sourceMappingURL=root.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"root.js","sourceRoot":"","sources":["../../routes/root.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.default = default_1;
|
|
7
|
-
const split2_1 = __importDefault(require("split2"));
|
|
8
|
-
const control_1 = require("@platformatic/control");
|
|
9
|
-
const schemas_1 = require("../schemas");
|
|
10
|
-
const promises_1 = require("node:stream/promises");
|
|
11
|
-
async function default_1(fastify) {
|
|
12
|
-
const typedFastify = fastify.withTypeProvider();
|
|
13
|
-
const api = new control_1.RuntimeApiClient();
|
|
14
|
-
const wsSendAsync = (socket, data) => new Promise((resolve, reject) => setTimeout(() => socket.send(data, (err) => (err)
|
|
15
|
-
? reject(err)
|
|
16
|
-
: resolve()), 100));
|
|
17
|
-
typedFastify.get('/runtimes/:pid/logs/ws', {
|
|
18
|
-
schema: { params: schemas_1.pidParamSchema },
|
|
19
|
-
websocket: true
|
|
20
|
-
}, async (socket, { params: { pid } }) => {
|
|
21
|
-
try {
|
|
22
|
-
const clientStream = api.getRuntimeLiveLogsStream(pid);
|
|
23
|
-
socket.on('close', () => {
|
|
24
|
-
clientStream.destroy();
|
|
25
|
-
});
|
|
26
|
-
await (0, promises_1.pipeline)(clientStream, (0, split2_1.default)(), async function* (source) {
|
|
27
|
-
for await (const line of source) {
|
|
28
|
-
await wsSendAsync(socket, line);
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
catch (error) {
|
|
33
|
-
fastify.log.error({ error }, 'fatal error on runtime logs ws');
|
|
34
|
-
socket.close();
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=ws.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ws.js","sourceRoot":"","sources":["../../routes/ws.ts"],"names":[],"mappings":";;;;;AAQA,4BAmCC;AA1CD,oDAA2B;AAG3B,mDAAwD;AACxD,wCAAqD;AACrD,mDAA+C;AAEhC,KAAK,oBAAW,OAAwB;IACrD,MAAM,YAAY,GAAG,OAAO,CAAC,gBAAgB,EAA0B,CAAA;IACvE,MAAM,GAAG,GAAG,IAAI,0BAAgB,EAAE,CAAA;IAElC,MAAM,WAAW,GAAG,CAAC,MAAiB,EAAE,IAAY,EAAiB,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC;QACxJ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QACb,CAAC,CAAC,OAAO,EAAE,CACZ,EAAE,GAAG,CAAC,CACN,CAAA;IAED,YAAY,CAAC,GAAG,CAAuB,wBAAwB,EAAE;QAC/D,MAAM,EAAE,EAAE,MAAM,EAAE,wBAAc,EAAE;QAClC,SAAS,EAAE,IAAI;KAChB,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;QACvC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,GAAG,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAA;YAEtD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACtB,YAAY,CAAC,OAAO,EAAE,CAAA;YACxB,CAAC,CAAC,CAAA;YAEF,MAAM,IAAA,mBAAQ,EACZ,YAAY,EACZ,IAAA,gBAAM,GAAE,EACR,KAAK,SAAU,CAAC,EAAE,MAA6B;gBAC7C,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;oBAChC,MAAM,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;gBACjC,CAAC;YACH,CAAC,CACF,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,gCAAgC,CAAC,CAAA;YAC9D,MAAM,CAAC,KAAK,EAAE,CAAA;QAChB,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.selectableRuntimeSchema = exports.pidParamSchema = exports.metricResponseSchema = void 0;
|
|
4
|
-
const dateSchema = { type: 'string', format: 'date-time' };
|
|
5
|
-
const memoryDataPointSchema = {
|
|
6
|
-
type: 'object',
|
|
7
|
-
additionalProperties: false,
|
|
8
|
-
properties: {
|
|
9
|
-
date: dateSchema,
|
|
10
|
-
rss: { type: 'number' },
|
|
11
|
-
totalHeap: { type: 'number' },
|
|
12
|
-
usedHeap: { type: 'number' },
|
|
13
|
-
newSpace: { type: 'number' },
|
|
14
|
-
oldSpace: { type: 'number' }
|
|
15
|
-
},
|
|
16
|
-
required: ['date', 'rss', 'totalHeap', 'usedHeap', 'newSpace', 'oldSpace']
|
|
17
|
-
};
|
|
18
|
-
const cpuDataPointSchema = {
|
|
19
|
-
type: 'object',
|
|
20
|
-
additionalProperties: false,
|
|
21
|
-
properties: {
|
|
22
|
-
date: dateSchema,
|
|
23
|
-
cpu: { type: 'number' },
|
|
24
|
-
eventLoop: { type: 'number' }
|
|
25
|
-
},
|
|
26
|
-
required: ['date', 'cpu', 'eventLoop']
|
|
27
|
-
};
|
|
28
|
-
const latencyDataPointSchema = {
|
|
29
|
-
type: 'object',
|
|
30
|
-
additionalProperties: false,
|
|
31
|
-
properties: {
|
|
32
|
-
date: { type: 'string', format: 'date-time' },
|
|
33
|
-
p90: { type: 'number' },
|
|
34
|
-
p95: { type: 'number' },
|
|
35
|
-
p99: { type: 'number' }
|
|
36
|
-
},
|
|
37
|
-
required: ['date', 'p90', 'p95', 'p99']
|
|
38
|
-
};
|
|
39
|
-
const requestDataPointSchema = {
|
|
40
|
-
type: 'object',
|
|
41
|
-
additionalProperties: false,
|
|
42
|
-
properties: {
|
|
43
|
-
date: { type: 'string', format: 'date-time' },
|
|
44
|
-
count: { type: 'number' },
|
|
45
|
-
rps: { type: 'number' }
|
|
46
|
-
},
|
|
47
|
-
required: ['date', 'count', 'rps']
|
|
48
|
-
};
|
|
49
|
-
exports.metricResponseSchema = {
|
|
50
|
-
type: 'object',
|
|
51
|
-
additionalProperties: false,
|
|
52
|
-
properties: {
|
|
53
|
-
dataMem: { type: 'array', items: memoryDataPointSchema },
|
|
54
|
-
dataCpu: { type: 'array', items: cpuDataPointSchema },
|
|
55
|
-
dataLatency: { type: 'array', items: latencyDataPointSchema },
|
|
56
|
-
dataReq: { type: 'array', items: requestDataPointSchema }
|
|
57
|
-
},
|
|
58
|
-
required: ['dataMem', 'dataCpu', 'dataLatency', 'dataReq']
|
|
59
|
-
};
|
|
60
|
-
exports.pidParamSchema = { type: 'object', additionalProperties: false, properties: { pid: { type: 'number' } }, required: ['pid'] };
|
|
61
|
-
exports.selectableRuntimeSchema = {
|
|
62
|
-
type: 'object',
|
|
63
|
-
additionalProperties: false,
|
|
64
|
-
properties: {
|
|
65
|
-
pid: {
|
|
66
|
-
type: 'integer'
|
|
67
|
-
},
|
|
68
|
-
cwd: {
|
|
69
|
-
type: 'string'
|
|
70
|
-
},
|
|
71
|
-
argv: {
|
|
72
|
-
type: 'array',
|
|
73
|
-
items: {
|
|
74
|
-
type: 'string'
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
|
-
uptimeSeconds: {
|
|
78
|
-
type: 'number'
|
|
79
|
-
},
|
|
80
|
-
execPath: {
|
|
81
|
-
type: 'string'
|
|
82
|
-
},
|
|
83
|
-
nodeVersion: {
|
|
84
|
-
type: 'string'
|
|
85
|
-
},
|
|
86
|
-
projectDir: {
|
|
87
|
-
type: 'string'
|
|
88
|
-
},
|
|
89
|
-
packageName: {
|
|
90
|
-
type: 'string'
|
|
91
|
-
},
|
|
92
|
-
packageVersion: {
|
|
93
|
-
type: 'string'
|
|
94
|
-
},
|
|
95
|
-
url: {
|
|
96
|
-
type: 'string'
|
|
97
|
-
},
|
|
98
|
-
platformaticVersion: {
|
|
99
|
-
type: 'string'
|
|
100
|
-
},
|
|
101
|
-
selected: {
|
|
102
|
-
type: 'boolean'
|
|
103
|
-
}
|
|
104
|
-
},
|
|
105
|
-
required: [
|
|
106
|
-
'pid',
|
|
107
|
-
'cwd',
|
|
108
|
-
'argv',
|
|
109
|
-
'uptimeSeconds',
|
|
110
|
-
'execPath',
|
|
111
|
-
'nodeVersion',
|
|
112
|
-
'projectDir',
|
|
113
|
-
'packageName',
|
|
114
|
-
'packageVersion',
|
|
115
|
-
'url',
|
|
116
|
-
'platformaticVersion',
|
|
117
|
-
'selected'
|
|
118
|
-
]
|
|
119
|
-
};
|
|
120
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../schemas/index.ts"],"names":[],"mappings":"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"}
|