@colyseus/monitor 0.15.6 → 0.15.8
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/build/api.js +12 -22
- package/build/api.js.map +7 -0
- package/build/api.mjs +68 -0
- package/build/api.mjs.map +7 -0
- package/build/ext/Room.js +25 -42
- package/build/ext/Room.js.map +7 -0
- package/build/ext/Room.mjs +72 -0
- package/build/ext/Room.mjs.map +7 -0
- package/build/index.js +1 -2
- package/build/index.js.map +7 -0
- package/build/index.mjs +15 -0
- package/build/index.mjs.map +7 -0
- package/build/static/build/frontend/components/RoomList.d.ts +1 -0
- package/build/static/build/frontend/helpers/helpers.d.ts +6 -0
- package/build/static/build/frontend/services.d.ts +3 -5
- package/build/static/build/src/App.d.ts +2 -0
- package/build/static/build/src/components/CAppBar.d.ts +8 -0
- package/build/static/build/src/components/RoomInspect.d.ts +40 -0
- package/build/static/build/src/components/RoomList.d.ts +29 -0
- package/build/static/build/src/helpers/helpers.d.ts +6 -0
- package/build/static/build/src/index.d.ts +1 -0
- package/build/static/build/src/services.d.ts +5 -0
- package/build/static/build/src-backend/api.d.ts +2 -0
- package/build/static/build/src-backend/ext/Room.d.ts +1 -0
- package/build/static/build/src-backend/index.d.ts +11 -0
- package/build/static/bundle.js +29 -21
- package/build/static/bundle.js.map +1 -1
- package/build/static/styles.css +2 -12
- package/build/static/styles.css.map +1 -1
- package/package.json +2 -4
- package/tsconfig.json +3 -2
package/build/api.js
CHANGED
|
@@ -1,27 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
4
|
};
|
|
14
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.getAPI =
|
|
6
|
+
exports.getAPI = getAPI;
|
|
16
7
|
const core_1 = require("@colyseus/core");
|
|
17
8
|
const express_1 = __importDefault(require("express"));
|
|
18
9
|
const node_os_utils_1 = __importDefault(require("node-os-utils"));
|
|
19
10
|
const UNAVAILABLE_ROOM_ERROR = "@colyseus/monitor: room $roomId is not available anymore.";
|
|
20
11
|
function getAPI(opts) {
|
|
21
12
|
const api = express_1.default.Router();
|
|
22
|
-
api.get("/", (req, res) =>
|
|
13
|
+
api.get("/", async (req, res) => {
|
|
23
14
|
try {
|
|
24
|
-
const rooms =
|
|
15
|
+
const rooms = await core_1.matchMaker.query({});
|
|
25
16
|
const columns = opts.columns || ['roomId', 'name', 'clients', 'maxClients', 'locked', 'elapsedTime'];
|
|
26
17
|
// extend columns to expose "publicAddress", if present
|
|
27
18
|
if (!opts.columns && rooms[0] && rooms[0].publicAddress !== undefined) {
|
|
@@ -41,8 +32,8 @@ function getAPI(opts) {
|
|
|
41
32
|
return data;
|
|
42
33
|
}),
|
|
43
34
|
connections,
|
|
44
|
-
cpu:
|
|
45
|
-
memory:
|
|
35
|
+
cpu: await node_os_utils_1.default.cpu.usage(),
|
|
36
|
+
memory: await node_os_utils_1.default.mem.used()
|
|
46
37
|
});
|
|
47
38
|
}
|
|
48
39
|
catch (e) {
|
|
@@ -51,11 +42,11 @@ function getAPI(opts) {
|
|
|
51
42
|
res.status(500);
|
|
52
43
|
res.json({ message });
|
|
53
44
|
}
|
|
54
|
-
})
|
|
55
|
-
api.get("/room", (req, res) =>
|
|
45
|
+
});
|
|
46
|
+
api.get("/room", async (req, res) => {
|
|
56
47
|
const roomId = req.query.roomId;
|
|
57
48
|
try {
|
|
58
|
-
const inspectData =
|
|
49
|
+
const inspectData = await core_1.matchMaker.remoteRoomCall(roomId, "getInspectData");
|
|
59
50
|
res.json(inspectData);
|
|
60
51
|
}
|
|
61
52
|
catch (e) {
|
|
@@ -64,13 +55,13 @@ function getAPI(opts) {
|
|
|
64
55
|
res.status(500);
|
|
65
56
|
res.json({ message });
|
|
66
57
|
}
|
|
67
|
-
})
|
|
68
|
-
api.get("/room/call", (req, res) =>
|
|
58
|
+
});
|
|
59
|
+
api.get("/room/call", async (req, res) => {
|
|
69
60
|
const roomId = req.query.roomId;
|
|
70
61
|
const method = req.query.method;
|
|
71
62
|
const args = JSON.parse(req.query.args);
|
|
72
63
|
try {
|
|
73
|
-
const data =
|
|
64
|
+
const data = await core_1.matchMaker.remoteRoomCall(roomId, method, args);
|
|
74
65
|
res.json(data);
|
|
75
66
|
}
|
|
76
67
|
catch (e) {
|
|
@@ -79,7 +70,6 @@ function getAPI(opts) {
|
|
|
79
70
|
res.status(500);
|
|
80
71
|
res.json({ message });
|
|
81
72
|
}
|
|
82
|
-
})
|
|
73
|
+
});
|
|
83
74
|
return api;
|
|
84
75
|
}
|
|
85
|
-
exports.getAPI = getAPI;
|
package/build/api.js.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src-backend/api.ts"],
|
|
4
|
+
"sourcesContent": ["import { matchMaker } from '@colyseus/core';\n\nimport express from 'express';\nimport osUtils from 'node-os-utils';\n\nimport type { MonitorOptions } from './index.js';\n\nconst UNAVAILABLE_ROOM_ERROR = \"@colyseus/monitor: room $roomId is not available anymore.\";\n\nexport function getAPI (opts: Partial<MonitorOptions>) {\n const api = express.Router();\n\n api.get(\"/\", async (req: express.Request, res: express.Response) => {\n try {\n const rooms: any[] = await matchMaker.query({});\n const columns = opts.columns || ['roomId', 'name', 'clients', 'maxClients', 'locked', 'elapsedTime'];\n\n // extend columns to expose \"publicAddress\", if present\n if (!opts.columns && rooms[0] && rooms[0].publicAddress !== undefined) {\n columns.push(\"publicAddress\");\n }\n\n let connections: number = 0;\n\n res.json({\n columns,\n rooms: rooms.map(room => {\n const data = JSON.parse(JSON.stringify(room));\n\n connections += room.clients;\n\n // additional data\n data.locked = room.locked || false;\n data.private = room.private;\n\n data.maxClients = `${room.maxClients}`;\n\n data.elapsedTime = Date.now() - new Date(room.createdAt).getTime();\n return data;\n }),\n\n connections,\n cpu: await osUtils.cpu.usage(),\n memory: await osUtils.mem.used()\n });\n } catch (e) {\n const message = e.message;\n console.error(message);\n res.status(500);\n res.json({ message });\n }\n });\n\n api.get(\"/room\", async (req: express.Request, res: express.Response) => {\n const roomId = req.query.roomId as string;\n try {\n const inspectData = await matchMaker.remoteRoomCall(roomId, \"getInspectData\");\n res.json(inspectData);\n } catch (e) {\n const message = UNAVAILABLE_ROOM_ERROR.replace(\"$roomId\", roomId);\n console.error(message);\n res.status(500);\n res.json({ message });\n }\n });\n\n api.get(\"/room/call\", async (req: express.Request, res: express.Response) => {\n const roomId = req.query.roomId as string;\n const method = req.query.method as string;\n const args = JSON.parse(req.query.args as string);\n\n try {\n const data = await matchMaker.remoteRoomCall(roomId, method, args);\n res.json(data);\n } catch (e) {\n const message = UNAVAILABLE_ROOM_ERROR.replace(\"$roomId\", roomId);\n console.error(message);\n res.status(500);\n res.json({ message });\n }\n });\n\n return api;\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA2B;AAE3B,qBAAoB;AACpB,2BAAoB;AAIpB,MAAM,yBAAyB;AAExB,SAAS,OAAQ,MAA+B;AACnD,QAAM,MAAM,eAAAA,QAAQ,OAAO;AAE3B,MAAI,IAAI,KAAK,OAAO,KAAsB,QAA0B;AAChE,QAAI;AACA,YAAM,QAAe,MAAM,uBAAW,MAAM,CAAC,CAAC;AAC9C,YAAM,UAAU,KAAK,WAAW,CAAC,UAAU,QAAQ,WAAW,cAAc,UAAU,aAAa;AAGnG,UAAI,CAAC,KAAK,WAAW,MAAM,CAAC,KAAK,MAAM,CAAC,EAAE,kBAAkB,QAAW;AACnE,gBAAQ,KAAK,eAAe;AAAA,MAChC;AAEA,UAAI,cAAsB;AAE1B,UAAI,KAAK;AAAA,QACL;AAAA,QACA,OAAO,MAAM,IAAI,UAAQ;AACrB,gBAAM,OAAO,KAAK,MAAM,KAAK,UAAU,IAAI,CAAC;AAE5C,yBAAe,KAAK;AAGpB,eAAK,SAAS,KAAK,UAAU;AAC7B,eAAK,UAAU,KAAK;AAEpB,eAAK,aAAa,GAAG,KAAK,UAAU;AAEpC,eAAK,cAAc,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,QAAQ;AACjE,iBAAO;AAAA,QACX,CAAC;AAAA,QAED;AAAA,QACA,KAAK,MAAM,qBAAAC,QAAQ,IAAI,MAAM;AAAA,QAC7B,QAAQ,MAAM,qBAAAA,QAAQ,IAAI,KAAK;AAAA,MACnC,CAAC;AAAA,IACL,SAAS,GAAG;AACR,YAAM,UAAU,EAAE;AAClB,cAAQ,MAAM,OAAO;AACrB,UAAI,OAAO,GAAG;AACd,UAAI,KAAK,EAAE,QAAQ,CAAC;AAAA,IACxB;AAAA,EACJ,CAAC;AAED,MAAI,IAAI,SAAS,OAAO,KAAsB,QAA0B;AACpE,UAAM,SAAS,IAAI,MAAM;AACzB,QAAI;AACA,YAAM,cAAc,MAAM,uBAAW,eAAe,QAAQ,gBAAgB;AAC5E,UAAI,KAAK,WAAW;AAAA,IACxB,SAAS,GAAG;AACR,YAAM,UAAU,uBAAuB,QAAQ,WAAW,MAAM;AAChE,cAAQ,MAAM,OAAO;AACrB,UAAI,OAAO,GAAG;AACd,UAAI,KAAK,EAAE,QAAQ,CAAC;AAAA,IACxB;AAAA,EACJ,CAAC;AAED,MAAI,IAAI,cAAc,OAAO,KAAsB,QAA0B;AACzE,UAAM,SAAS,IAAI,MAAM;AACzB,UAAM,SAAS,IAAI,MAAM;AACzB,UAAM,OAAO,KAAK,MAAM,IAAI,MAAM,IAAc;AAEhD,QAAI;AACA,YAAM,OAAO,MAAM,uBAAW,eAAe,QAAQ,QAAQ,IAAI;AACjE,UAAI,KAAK,IAAI;AAAA,IACjB,SAAS,GAAG;AACR,YAAM,UAAU,uBAAuB,QAAQ,WAAW,MAAM;AAChE,cAAQ,MAAM,OAAO;AACrB,UAAI,OAAO,GAAG;AACd,UAAI,KAAK,EAAE,QAAQ,CAAC;AAAA,IACxB;AAAA,EACJ,CAAC;AAED,SAAO;AACX;",
|
|
6
|
+
"names": ["express", "osUtils"]
|
|
7
|
+
}
|
package/build/api.mjs
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// src-backend/api.ts
|
|
2
|
+
import { matchMaker } from "@colyseus/core";
|
|
3
|
+
import express from "express";
|
|
4
|
+
import osUtils from "node-os-utils";
|
|
5
|
+
var UNAVAILABLE_ROOM_ERROR = "@colyseus/monitor: room $roomId is not available anymore.";
|
|
6
|
+
function getAPI(opts) {
|
|
7
|
+
const api = express.Router();
|
|
8
|
+
api.get("/", async (req, res) => {
|
|
9
|
+
try {
|
|
10
|
+
const rooms = await matchMaker.query({});
|
|
11
|
+
const columns = opts.columns || ["roomId", "name", "clients", "maxClients", "locked", "elapsedTime"];
|
|
12
|
+
if (!opts.columns && rooms[0] && rooms[0].publicAddress !== void 0) {
|
|
13
|
+
columns.push("publicAddress");
|
|
14
|
+
}
|
|
15
|
+
let connections = 0;
|
|
16
|
+
res.json({
|
|
17
|
+
columns,
|
|
18
|
+
rooms: rooms.map((room) => {
|
|
19
|
+
const data = JSON.parse(JSON.stringify(room));
|
|
20
|
+
connections += room.clients;
|
|
21
|
+
data.locked = room.locked || false;
|
|
22
|
+
data.private = room.private;
|
|
23
|
+
data.maxClients = `${room.maxClients}`;
|
|
24
|
+
data.elapsedTime = Date.now() - new Date(room.createdAt).getTime();
|
|
25
|
+
return data;
|
|
26
|
+
}),
|
|
27
|
+
connections,
|
|
28
|
+
cpu: await osUtils.cpu.usage(),
|
|
29
|
+
memory: await osUtils.mem.used()
|
|
30
|
+
});
|
|
31
|
+
} catch (e) {
|
|
32
|
+
const message = e.message;
|
|
33
|
+
console.error(message);
|
|
34
|
+
res.status(500);
|
|
35
|
+
res.json({ message });
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
api.get("/room", async (req, res) => {
|
|
39
|
+
const roomId = req.query.roomId;
|
|
40
|
+
try {
|
|
41
|
+
const inspectData = await matchMaker.remoteRoomCall(roomId, "getInspectData");
|
|
42
|
+
res.json(inspectData);
|
|
43
|
+
} catch (e) {
|
|
44
|
+
const message = UNAVAILABLE_ROOM_ERROR.replace("$roomId", roomId);
|
|
45
|
+
console.error(message);
|
|
46
|
+
res.status(500);
|
|
47
|
+
res.json({ message });
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
api.get("/room/call", async (req, res) => {
|
|
51
|
+
const roomId = req.query.roomId;
|
|
52
|
+
const method = req.query.method;
|
|
53
|
+
const args = JSON.parse(req.query.args);
|
|
54
|
+
try {
|
|
55
|
+
const data = await matchMaker.remoteRoomCall(roomId, method, args);
|
|
56
|
+
res.json(data);
|
|
57
|
+
} catch (e) {
|
|
58
|
+
const message = UNAVAILABLE_ROOM_ERROR.replace("$roomId", roomId);
|
|
59
|
+
console.error(message);
|
|
60
|
+
res.status(500);
|
|
61
|
+
res.json({ message });
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
return api;
|
|
65
|
+
}
|
|
66
|
+
export {
|
|
67
|
+
getAPI
|
|
68
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src-backend/api.ts"],
|
|
4
|
+
"sourcesContent": ["import { matchMaker } from '@colyseus/core';\n\nimport express from 'express';\nimport osUtils from 'node-os-utils';\n\nimport type { MonitorOptions } from './index.js';\n\nconst UNAVAILABLE_ROOM_ERROR = \"@colyseus/monitor: room $roomId is not available anymore.\";\n\nexport function getAPI (opts: Partial<MonitorOptions>) {\n const api = express.Router();\n\n api.get(\"/\", async (req: express.Request, res: express.Response) => {\n try {\n const rooms: any[] = await matchMaker.query({});\n const columns = opts.columns || ['roomId', 'name', 'clients', 'maxClients', 'locked', 'elapsedTime'];\n\n // extend columns to expose \"publicAddress\", if present\n if (!opts.columns && rooms[0] && rooms[0].publicAddress !== undefined) {\n columns.push(\"publicAddress\");\n }\n\n let connections: number = 0;\n\n res.json({\n columns,\n rooms: rooms.map(room => {\n const data = JSON.parse(JSON.stringify(room));\n\n connections += room.clients;\n\n // additional data\n data.locked = room.locked || false;\n data.private = room.private;\n\n data.maxClients = `${room.maxClients}`;\n\n data.elapsedTime = Date.now() - new Date(room.createdAt).getTime();\n return data;\n }),\n\n connections,\n cpu: await osUtils.cpu.usage(),\n memory: await osUtils.mem.used()\n });\n } catch (e) {\n const message = e.message;\n console.error(message);\n res.status(500);\n res.json({ message });\n }\n });\n\n api.get(\"/room\", async (req: express.Request, res: express.Response) => {\n const roomId = req.query.roomId as string;\n try {\n const inspectData = await matchMaker.remoteRoomCall(roomId, \"getInspectData\");\n res.json(inspectData);\n } catch (e) {\n const message = UNAVAILABLE_ROOM_ERROR.replace(\"$roomId\", roomId);\n console.error(message);\n res.status(500);\n res.json({ message });\n }\n });\n\n api.get(\"/room/call\", async (req: express.Request, res: express.Response) => {\n const roomId = req.query.roomId as string;\n const method = req.query.method as string;\n const args = JSON.parse(req.query.args as string);\n\n try {\n const data = await matchMaker.remoteRoomCall(roomId, method, args);\n res.json(data);\n } catch (e) {\n const message = UNAVAILABLE_ROOM_ERROR.replace(\"$roomId\", roomId);\n console.error(message);\n res.status(500);\n res.json({ message });\n }\n });\n\n return api;\n}\n"],
|
|
5
|
+
"mappings": ";AAAA,SAAS,kBAAkB;AAE3B,OAAO,aAAa;AACpB,OAAO,aAAa;AAIpB,IAAM,yBAAyB;AAExB,SAAS,OAAQ,MAA+B;AACnD,QAAM,MAAM,QAAQ,OAAO;AAE3B,MAAI,IAAI,KAAK,OAAO,KAAsB,QAA0B;AAChE,QAAI;AACA,YAAM,QAAe,MAAM,WAAW,MAAM,CAAC,CAAC;AAC9C,YAAM,UAAU,KAAK,WAAW,CAAC,UAAU,QAAQ,WAAW,cAAc,UAAU,aAAa;AAGnG,UAAI,CAAC,KAAK,WAAW,MAAM,CAAC,KAAK,MAAM,CAAC,EAAE,kBAAkB,QAAW;AACnE,gBAAQ,KAAK,eAAe;AAAA,MAChC;AAEA,UAAI,cAAsB;AAE1B,UAAI,KAAK;AAAA,QACL;AAAA,QACA,OAAO,MAAM,IAAI,UAAQ;AACrB,gBAAM,OAAO,KAAK,MAAM,KAAK,UAAU,IAAI,CAAC;AAE5C,yBAAe,KAAK;AAGpB,eAAK,SAAS,KAAK,UAAU;AAC7B,eAAK,UAAU,KAAK;AAEpB,eAAK,aAAa,GAAG,KAAK,UAAU;AAEpC,eAAK,cAAc,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,QAAQ;AACjE,iBAAO;AAAA,QACX,CAAC;AAAA,QAED;AAAA,QACA,KAAK,MAAM,QAAQ,IAAI,MAAM;AAAA,QAC7B,QAAQ,MAAM,QAAQ,IAAI,KAAK;AAAA,MACnC,CAAC;AAAA,IACL,SAAS,GAAG;AACR,YAAM,UAAU,EAAE;AAClB,cAAQ,MAAM,OAAO;AACrB,UAAI,OAAO,GAAG;AACd,UAAI,KAAK,EAAE,QAAQ,CAAC;AAAA,IACxB;AAAA,EACJ,CAAC;AAED,MAAI,IAAI,SAAS,OAAO,KAAsB,QAA0B;AACpE,UAAM,SAAS,IAAI,MAAM;AACzB,QAAI;AACA,YAAM,cAAc,MAAM,WAAW,eAAe,QAAQ,gBAAgB;AAC5E,UAAI,KAAK,WAAW;AAAA,IACxB,SAAS,GAAG;AACR,YAAM,UAAU,uBAAuB,QAAQ,WAAW,MAAM;AAChE,cAAQ,MAAM,OAAO;AACrB,UAAI,OAAO,GAAG;AACd,UAAI,KAAK,EAAE,QAAQ,CAAC;AAAA,IACxB;AAAA,EACJ,CAAC;AAED,MAAI,IAAI,cAAc,OAAO,KAAsB,QAA0B;AACzE,UAAM,SAAS,IAAI,MAAM;AACzB,UAAM,SAAS,IAAI,MAAM;AACzB,UAAM,OAAO,KAAK,MAAM,IAAI,MAAM,IAAc;AAEhD,QAAI;AACA,YAAM,OAAO,MAAM,WAAW,eAAe,QAAQ,QAAQ,IAAI;AACjE,UAAI,KAAK,IAAI;AAAA,IACjB,SAAS,GAAG;AACR,YAAM,UAAU,uBAAuB,QAAQ,WAAW,MAAM;AAChE,cAAQ,MAAM,OAAO;AACrB,UAAI,OAAO,GAAG;AACd,UAAI,KAAK,EAAE,QAAQ,CAAC;AAAA,IACxB;AAAA,EACJ,CAAC;AAED,SAAO;AACX;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/build/ext/Room.js
CHANGED
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
//
|
|
13
4
|
// Monkey-patch Colyseus' default behaviour
|
|
@@ -27,43 +18,35 @@ core_1.Room.prototype.getAvailableData = function () {
|
|
|
27
18
|
roomId: this.roomId,
|
|
28
19
|
};
|
|
29
20
|
};
|
|
30
|
-
core_1.Room.prototype.getRoomListData = function () {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
return Object.assign(Object.assign({}, data), { locked, elapsedTime, stateSize });
|
|
37
|
-
});
|
|
21
|
+
core_1.Room.prototype.getRoomListData = async function () {
|
|
22
|
+
const stateSize = getStateSize(this);
|
|
23
|
+
const elapsedTime = this.clock.elapsedTime;
|
|
24
|
+
const locked = this.locked;
|
|
25
|
+
const data = this.getAvailableData();
|
|
26
|
+
return { ...data, locked, elapsedTime, stateSize };
|
|
38
27
|
};
|
|
39
|
-
core_1.Room.prototype.getInspectData = function () {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
return Object.assign(Object.assign({}, data), { locked, clients, state, stateSize });
|
|
47
|
-
});
|
|
28
|
+
core_1.Room.prototype.getInspectData = async function () {
|
|
29
|
+
const state = this.state;
|
|
30
|
+
const stateSize = getStateSize(this);
|
|
31
|
+
const data = this.getAvailableData();
|
|
32
|
+
const clients = this.clients.map((client) => ({ sessionId: client.sessionId }));
|
|
33
|
+
const locked = this.locked;
|
|
34
|
+
return { ...data, locked, clients, state, stateSize };
|
|
48
35
|
};
|
|
49
36
|
// Actions
|
|
50
|
-
core_1.Room.prototype._forceClientDisconnect = function (sessionId) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
break;
|
|
56
|
-
}
|
|
37
|
+
core_1.Room.prototype._forceClientDisconnect = async function (sessionId) {
|
|
38
|
+
for (let i = 0; i < this.clients.length; i++) {
|
|
39
|
+
if (this.clients[i].sessionId === sessionId) {
|
|
40
|
+
this.clients[i].leave();
|
|
41
|
+
break;
|
|
57
42
|
}
|
|
58
|
-
}
|
|
43
|
+
}
|
|
59
44
|
};
|
|
60
|
-
core_1.Room.prototype._sendMessageToClient = function (sessionId, type, data) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
break;
|
|
66
|
-
}
|
|
45
|
+
core_1.Room.prototype._sendMessageToClient = async function (sessionId, type, data) {
|
|
46
|
+
for (let i = 0; i < this.clients.length; i++) {
|
|
47
|
+
if (this.clients[i].sessionId === sessionId) {
|
|
48
|
+
this.clients[i].send(type, data);
|
|
49
|
+
break;
|
|
67
50
|
}
|
|
68
|
-
}
|
|
51
|
+
}
|
|
69
52
|
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src-backend/ext/Room.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Monkey-patch Colyseus' default behaviour\n//\nimport { Room, Client, ClientPrivate } from \"@colyseus/core\";\n\nfunction getStateSize(room) {\n // TODO: `Serializer<T>` should provide a method for this (e.g. `serializer.hasState()`)\n const hasState = (\n room._serializer.encoder || // schema v3\n room._serializer.state || // schema v2\n room._serializer.previousState // legacy-fossil-delta\n );\n const fullState = hasState && room._serializer.getFullState();\n return fullState && (fullState.byteLength || fullState.length) || 0;\n}\n\n(<any>Room.prototype).getAvailableData = function () {\n return {\n clients: this.clients.length,\n maxClients: this.maxClients,\n metadata: this.metadata,\n roomId: this.roomId,\n };\n};\n\n(<any>Room.prototype).getRoomListData = async function () {\n const stateSize = getStateSize(this);\n const elapsedTime = this.clock.elapsedTime;\n const locked = this.locked;\n const data = this.getAvailableData();\n\n return { ...data, locked, elapsedTime, stateSize };\n};\n\n(<any>Room.prototype).getInspectData = async function () {\n const state = this.state;\n const stateSize = getStateSize(this);\n const roomElapsedTime = this.clock.elapsedTime;\n\n const data = this.getAvailableData();\n const clients = this.clients.map((client: Client & ClientPrivate) => ({\n sessionId: client.sessionId,\n elapsedTime: roomElapsedTime - client._joinedAt\n }));\n const locked = this.locked;\n\n return { ...data, locked, clients, state, stateSize };\n};\n\n// Actions\n(<any>Room.prototype)._forceClientDisconnect = async function (sessionId) {\n for (let i = 0; i < this.clients.length; i++) {\n if (this.clients[i].sessionId === sessionId) {\n this.clients[i].leave();\n break;\n }\n }\n};\n\n(<any>Room.prototype)._sendMessageToClient = async function (sessionId, type, data) {\n for (let i = 0; i < this.clients.length; i++) {\n if (this.clients[i].sessionId === sessionId) {\n this.clients[i].send(type, data);\n break;\n }\n }\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;AAGA,kBAA4C;AAE5C,SAAS,aAAa,MAAM;AAExB,QAAM,WACJ,KAAK,YAAY;AAAA,EACjB,KAAK,YAAY;AAAA,EACjB,KAAK,YAAY;AAEnB,QAAM,YAAY,YAAY,KAAK,YAAY,aAAa;AAC5D,SAAO,cAAc,UAAU,cAAc,UAAU,WAAW;AACtE;AAEM,iBAAK,UAAW,mBAAmB,WAAY;AACjD,SAAO;AAAA,IACH,SAAS,KAAK,QAAQ;AAAA,IACtB,YAAY,KAAK;AAAA,IACjB,UAAU,KAAK;AAAA,IACf,QAAQ,KAAK;AAAA,EACjB;AACJ;AAEM,iBAAK,UAAW,kBAAkB,iBAAkB;AACtD,QAAM,YAAY,aAAa,IAAI;AACnC,QAAM,cAAc,KAAK,MAAM;AAC/B,QAAM,SAAS,KAAK;AACpB,QAAM,OAAO,KAAK,iBAAiB;AAEnC,SAAO,iCAAK,OAAL,EAAW,QAAQ,aAAa,UAAU;AACrD;AAEM,iBAAK,UAAW,iBAAiB,iBAAkB;AACrD,QAAM,QAAQ,KAAK;AACnB,QAAM,YAAY,aAAa,IAAI;AACnC,QAAM,kBAAkB,KAAK,MAAM;AAEnC,QAAM,OAAO,KAAK,iBAAiB;AACnC,QAAM,UAAU,KAAK,QAAQ,IAAI,CAAC,YAAoC;AAAA,IAClE,WAAW,OAAO;AAAA,IAClB,aAAa,kBAAkB,OAAO;AAAA,EAC1C,EAAE;AACF,QAAM,SAAS,KAAK;AAEpB,SAAO,iCAAK,OAAL,EAAW,QAAQ,SAAS,OAAO,UAAU;AACxD;AAGM,iBAAK,UAAW,yBAAyB,eAAgB,WAAW;AACtE,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,QAAQ,KAAK;AAC1C,QAAI,KAAK,QAAQ,CAAC,EAAE,cAAc,WAAW;AACzC,WAAK,QAAQ,CAAC,EAAE,MAAM;AACtB;AAAA,IACJ;AAAA,EACJ;AACJ;AAEM,iBAAK,UAAW,uBAAuB,eAAgB,WAAW,MAAM,MAAM;AAChF,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,QAAQ,KAAK;AAC1C,QAAI,KAAK,QAAQ,CAAC,EAAE,cAAc,WAAW;AACzC,WAAK,QAAQ,CAAC,EAAE,KAAK,MAAM,IAAI;AAC/B;AAAA,IACJ;AAAA,EACJ;AACJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
|
|
21
|
+
// src-backend/ext/Room.ts
|
|
22
|
+
import { Room } from "@colyseus/core";
|
|
23
|
+
function getStateSize(room) {
|
|
24
|
+
const hasState = room._serializer.encoder || // schema v3
|
|
25
|
+
room._serializer.state || // schema v2
|
|
26
|
+
room._serializer.previousState;
|
|
27
|
+
const fullState = hasState && room._serializer.getFullState();
|
|
28
|
+
return fullState && (fullState.byteLength || fullState.length) || 0;
|
|
29
|
+
}
|
|
30
|
+
Room.prototype.getAvailableData = function() {
|
|
31
|
+
return {
|
|
32
|
+
clients: this.clients.length,
|
|
33
|
+
maxClients: this.maxClients,
|
|
34
|
+
metadata: this.metadata,
|
|
35
|
+
roomId: this.roomId
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
Room.prototype.getRoomListData = async function() {
|
|
39
|
+
const stateSize = getStateSize(this);
|
|
40
|
+
const elapsedTime = this.clock.elapsedTime;
|
|
41
|
+
const locked = this.locked;
|
|
42
|
+
const data = this.getAvailableData();
|
|
43
|
+
return __spreadProps(__spreadValues({}, data), { locked, elapsedTime, stateSize });
|
|
44
|
+
};
|
|
45
|
+
Room.prototype.getInspectData = async function() {
|
|
46
|
+
const state = this.state;
|
|
47
|
+
const stateSize = getStateSize(this);
|
|
48
|
+
const roomElapsedTime = this.clock.elapsedTime;
|
|
49
|
+
const data = this.getAvailableData();
|
|
50
|
+
const clients = this.clients.map((client) => ({
|
|
51
|
+
sessionId: client.sessionId,
|
|
52
|
+
elapsedTime: roomElapsedTime - client._joinedAt
|
|
53
|
+
}));
|
|
54
|
+
const locked = this.locked;
|
|
55
|
+
return __spreadProps(__spreadValues({}, data), { locked, clients, state, stateSize });
|
|
56
|
+
};
|
|
57
|
+
Room.prototype._forceClientDisconnect = async function(sessionId) {
|
|
58
|
+
for (let i = 0; i < this.clients.length; i++) {
|
|
59
|
+
if (this.clients[i].sessionId === sessionId) {
|
|
60
|
+
this.clients[i].leave();
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
Room.prototype._sendMessageToClient = async function(sessionId, type, data) {
|
|
66
|
+
for (let i = 0; i < this.clients.length; i++) {
|
|
67
|
+
if (this.clients[i].sessionId === sessionId) {
|
|
68
|
+
this.clients[i].send(type, data);
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src-backend/ext/Room.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Monkey-patch Colyseus' default behaviour\n//\nimport { Room, Client, ClientPrivate } from \"@colyseus/core\";\n\nfunction getStateSize(room) {\n // TODO: `Serializer<T>` should provide a method for this (e.g. `serializer.hasState()`)\n const hasState = (\n room._serializer.encoder || // schema v3\n room._serializer.state || // schema v2\n room._serializer.previousState // legacy-fossil-delta\n );\n const fullState = hasState && room._serializer.getFullState();\n return fullState && (fullState.byteLength || fullState.length) || 0;\n}\n\n(<any>Room.prototype).getAvailableData = function () {\n return {\n clients: this.clients.length,\n maxClients: this.maxClients,\n metadata: this.metadata,\n roomId: this.roomId,\n };\n};\n\n(<any>Room.prototype).getRoomListData = async function () {\n const stateSize = getStateSize(this);\n const elapsedTime = this.clock.elapsedTime;\n const locked = this.locked;\n const data = this.getAvailableData();\n\n return { ...data, locked, elapsedTime, stateSize };\n};\n\n(<any>Room.prototype).getInspectData = async function () {\n const state = this.state;\n const stateSize = getStateSize(this);\n const roomElapsedTime = this.clock.elapsedTime;\n\n const data = this.getAvailableData();\n const clients = this.clients.map((client: Client & ClientPrivate) => ({\n sessionId: client.sessionId,\n elapsedTime: roomElapsedTime - client._joinedAt\n }));\n const locked = this.locked;\n\n return { ...data, locked, clients, state, stateSize };\n};\n\n// Actions\n(<any>Room.prototype)._forceClientDisconnect = async function (sessionId) {\n for (let i = 0; i < this.clients.length; i++) {\n if (this.clients[i].sessionId === sessionId) {\n this.clients[i].leave();\n break;\n }\n }\n};\n\n(<any>Room.prototype)._sendMessageToClient = async function (sessionId, type, data) {\n for (let i = 0; i < this.clients.length; i++) {\n if (this.clients[i].sessionId === sessionId) {\n this.clients[i].send(type, data);\n break;\n }\n }\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;AAGA,SAAS,YAAmC;AAE5C,SAAS,aAAa,MAAM;AAExB,QAAM,WACJ,KAAK,YAAY;AAAA,EACjB,KAAK,YAAY;AAAA,EACjB,KAAK,YAAY;AAEnB,QAAM,YAAY,YAAY,KAAK,YAAY,aAAa;AAC5D,SAAO,cAAc,UAAU,cAAc,UAAU,WAAW;AACtE;AAEM,KAAK,UAAW,mBAAmB,WAAY;AACjD,SAAO;AAAA,IACH,SAAS,KAAK,QAAQ;AAAA,IACtB,YAAY,KAAK;AAAA,IACjB,UAAU,KAAK;AAAA,IACf,QAAQ,KAAK;AAAA,EACjB;AACJ;AAEM,KAAK,UAAW,kBAAkB,iBAAkB;AACtD,QAAM,YAAY,aAAa,IAAI;AACnC,QAAM,cAAc,KAAK,MAAM;AAC/B,QAAM,SAAS,KAAK;AACpB,QAAM,OAAO,KAAK,iBAAiB;AAEnC,SAAO,iCAAK,OAAL,EAAW,QAAQ,aAAa,UAAU;AACrD;AAEM,KAAK,UAAW,iBAAiB,iBAAkB;AACrD,QAAM,QAAQ,KAAK;AACnB,QAAM,YAAY,aAAa,IAAI;AACnC,QAAM,kBAAkB,KAAK,MAAM;AAEnC,QAAM,OAAO,KAAK,iBAAiB;AACnC,QAAM,UAAU,KAAK,QAAQ,IAAI,CAAC,YAAoC;AAAA,IAClE,WAAW,OAAO;AAAA,IAClB,aAAa,kBAAkB,OAAO;AAAA,EAC1C,EAAE;AACF,QAAM,SAAS,KAAK;AAEpB,SAAO,iCAAK,OAAL,EAAW,QAAQ,SAAS,OAAO,UAAU;AACxD;AAGM,KAAK,UAAW,yBAAyB,eAAgB,WAAW;AACtE,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,QAAQ,KAAK;AAC1C,QAAI,KAAK,QAAQ,CAAC,EAAE,cAAc,WAAW;AACzC,WAAK,QAAQ,CAAC,EAAE,MAAM;AACtB;AAAA,IACJ;AAAA,EACJ;AACJ;AAEM,KAAK,UAAW,uBAAuB,eAAgB,WAAW,MAAM,MAAM;AAChF,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,QAAQ,KAAK;AAC1C,QAAI,KAAK,QAAQ,CAAC,EAAE,cAAc,WAAW;AACzC,WAAK,QAAQ,CAAC,EAAE,KAAK,MAAM,IAAI;AAC/B;AAAA,IACJ;AAAA,EACJ;AACJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/build/index.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.monitor =
|
|
6
|
+
exports.monitor = monitor;
|
|
7
7
|
const express_1 = __importDefault(require("express"));
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
9
|
const api_1 = require("./api");
|
|
@@ -18,4 +18,3 @@ function monitor(opts = {}) {
|
|
|
18
18
|
router.use('/api', (0, api_1.getAPI)(opts));
|
|
19
19
|
return router;
|
|
20
20
|
}
|
|
21
|
-
exports.monitor = monitor;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src-backend/index.ts"],
|
|
4
|
+
"sourcesContent": ["import express from 'express';\nimport path from 'path';\n\nimport { getAPI } from './api.js';\nimport './ext/Room.js';\n\nconst frontendDirectory = path.resolve(__dirname, \"..\", \"build\", \"static\");\n\nexport interface MonitorOptions {\n columns: Array<\n 'roomId' |\n 'name' |\n 'clients' |\n 'maxClients' |\n 'locked' |\n 'elapsedTime' |\n { metadata: string } |\n 'processId' |\n \"publicAddress\"\n >\n}\n\n/**\n * TODO: expose the `router` instead on next major version.\n */\nexport function monitor (opts: Partial<MonitorOptions> = {}): express.Router {\n const router = express.Router();\n router.use(express.static(frontendDirectory));\n router.use('/api', getAPI(opts));\n return router;\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAoB;AACpB,kBAAiB;AAEjB,iBAAuB;AACvB,kBAAO;AAEP,MAAM,oBAAoB,YAAAA,QAAK,QAAQ,WAAW,MAAM,SAAS,QAAQ;AAmBlE,SAAS,QAAS,OAAgC,CAAC,GAAmB;AACzE,QAAM,SAAS,eAAAC,QAAQ,OAAO;AAC9B,SAAO,IAAI,eAAAA,QAAQ,OAAO,iBAAiB,CAAC;AAC5C,SAAO,IAAI,YAAQ,mBAAO,IAAI,CAAC;AAC/B,SAAO;AACX;",
|
|
6
|
+
"names": ["path", "express"]
|
|
7
|
+
}
|
package/build/index.mjs
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// src-backend/index.ts
|
|
2
|
+
import express from "express";
|
|
3
|
+
import path from "path";
|
|
4
|
+
import { getAPI } from "./api.mjs";
|
|
5
|
+
import "./ext/Room.mjs";
|
|
6
|
+
var frontendDirectory = path.resolve(__dirname, "..", "build", "static");
|
|
7
|
+
function monitor(opts = {}) {
|
|
8
|
+
const router = express.Router();
|
|
9
|
+
router.use(express.static(frontendDirectory));
|
|
10
|
+
router.use("/api", getAPI(opts));
|
|
11
|
+
return router;
|
|
12
|
+
}
|
|
13
|
+
export {
|
|
14
|
+
monitor
|
|
15
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src-backend/index.ts"],
|
|
4
|
+
"sourcesContent": ["import express from 'express';\nimport path from 'path';\n\nimport { getAPI } from './api.js';\nimport './ext/Room.js';\n\nconst frontendDirectory = path.resolve(__dirname, \"..\", \"build\", \"static\");\n\nexport interface MonitorOptions {\n columns: Array<\n 'roomId' |\n 'name' |\n 'clients' |\n 'maxClients' |\n 'locked' |\n 'elapsedTime' |\n { metadata: string } |\n 'processId' |\n \"publicAddress\"\n >\n}\n\n/**\n * TODO: expose the `router` instead on next major version.\n */\nexport function monitor (opts: Partial<MonitorOptions> = {}): express.Router {\n const router = express.Router();\n router.use(express.static(frontendDirectory));\n router.use('/api', getAPI(opts));\n return router;\n}\n"],
|
|
5
|
+
"mappings": ";AAAA,OAAO,aAAa;AACpB,OAAO,UAAU;AAEjB,SAAS,cAAc;AACvB,OAAO;AAEP,IAAM,oBAAoB,KAAK,QAAQ,WAAW,MAAM,SAAS,QAAQ;AAmBlE,SAAS,QAAS,OAAgC,CAAC,GAAmB;AACzE,QAAM,SAAS,QAAQ,OAAO;AAC9B,SAAO,IAAI,QAAQ,OAAO,iBAAiB,CAAC;AAC5C,SAAO,IAAI,QAAQ,OAAO,IAAI,CAAC;AAC/B,SAAO;AACX;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -15,6 +15,7 @@ export declare class RoomList extends React.Component {
|
|
|
15
15
|
updateRoomListInterval: number;
|
|
16
16
|
isSelected: (index: any) => boolean;
|
|
17
17
|
componentWillMount(): void;
|
|
18
|
+
componentWillUnmount(): void;
|
|
18
19
|
fetchRoomList(): Promise<void>;
|
|
19
20
|
handleRowSelection: (selectedRows: any) => void;
|
|
20
21
|
inspectRoom(roomId: any): void;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { MonitorOptions } from "../../";
|
|
2
|
+
export type ExtractStringNames<T> = T extends (infer U)[] ? U extends string ? U : never : never;
|
|
3
|
+
export declare const valueFormatter: {
|
|
4
|
+
[key in ExtractStringNames<MonitorOptions['columns']>]?: Function;
|
|
5
|
+
};
|
|
6
|
+
export declare function humanizeElapsedTime(milliseconds: number): string;
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export declare function
|
|
4
|
-
export declare function fetchRoomData(roomId: string): http.SuperAgentRequest;
|
|
5
|
-
export declare function remoteRoomCall(roomId: string, method: string, ...args: any[]): http.SuperAgentRequest;
|
|
1
|
+
export declare function fetchRoomList(): Promise<any>;
|
|
2
|
+
export declare function fetchRoomData(roomId: string): Promise<any>;
|
|
3
|
+
export declare function remoteRoomCall(roomId: string, method: string, ...args: any[]): Promise<any>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import 'react18-json-view/src/style.css';
|
|
3
|
+
interface Props {
|
|
4
|
+
}
|
|
5
|
+
interface State {
|
|
6
|
+
roomId?: string;
|
|
7
|
+
state: any;
|
|
8
|
+
clients: Array<{
|
|
9
|
+
sessionId: string;
|
|
10
|
+
elapsedTime: number;
|
|
11
|
+
}>;
|
|
12
|
+
maxClients: number;
|
|
13
|
+
stateSize: number;
|
|
14
|
+
locked: boolean;
|
|
15
|
+
currentTab: string;
|
|
16
|
+
sendDialogTitle: string;
|
|
17
|
+
sendDialogOpen: boolean;
|
|
18
|
+
sendToClient?: any;
|
|
19
|
+
sendType: string;
|
|
20
|
+
sendData: string;
|
|
21
|
+
}
|
|
22
|
+
export declare class RoomInspect extends React.Component<Props, State> {
|
|
23
|
+
state: State;
|
|
24
|
+
updateDataInterval: number;
|
|
25
|
+
componentDidMount(): void;
|
|
26
|
+
fetchRoomData(): void;
|
|
27
|
+
roomCall(method: string, ...args: any[]): Promise<void>;
|
|
28
|
+
componentWillUnmount(): void;
|
|
29
|
+
sendMessage(sessionId?: string): void;
|
|
30
|
+
disconnectClient(sessionId: string): void;
|
|
31
|
+
disposeRoom(): void;
|
|
32
|
+
updateSendType: (e: any) => void;
|
|
33
|
+
updateSendData: (changes: any) => void;
|
|
34
|
+
handleCloseSend: () => void;
|
|
35
|
+
handleSend: () => void;
|
|
36
|
+
goBack(): void;
|
|
37
|
+
handleTabChange: (event: React.SyntheticEvent, newValue: string) => void;
|
|
38
|
+
render(): React.JSX.Element;
|
|
39
|
+
}
|
|
40
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { GridColDef } from '@mui/x-data-grid';
|
|
3
|
+
export declare class RoomList extends React.Component {
|
|
4
|
+
state: {
|
|
5
|
+
selected: number[];
|
|
6
|
+
rooms: any[];
|
|
7
|
+
connections: number;
|
|
8
|
+
cpu: number;
|
|
9
|
+
memory: {
|
|
10
|
+
totalMemMb: number;
|
|
11
|
+
usedMemMb: number;
|
|
12
|
+
};
|
|
13
|
+
columns: any[];
|
|
14
|
+
};
|
|
15
|
+
updateRoomListInterval: number;
|
|
16
|
+
isSelected: (index: any) => boolean;
|
|
17
|
+
componentWillMount(): void;
|
|
18
|
+
fetchRoomList(): Promise<void>;
|
|
19
|
+
handleRowSelection: (selectedRows: any) => void;
|
|
20
|
+
inspectRoom(roomId: any): void;
|
|
21
|
+
disposeRoom(roomId: any): Promise<void>;
|
|
22
|
+
getColumnHeader(column: any): any;
|
|
23
|
+
getRoomColumn(room: any, column: any): any;
|
|
24
|
+
bytesToStr(size: number): string;
|
|
25
|
+
getColumnsNames(columns: any): Array<GridColDef>;
|
|
26
|
+
getRowsData(rooms: any): Array<any>;
|
|
27
|
+
generateRoomListDataGrid(): JSX.Element;
|
|
28
|
+
render(): React.JSX.Element;
|
|
29
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { MonitorOptions } from "../../";
|
|
2
|
+
export type ExtractStringNames<T> = T extends (infer U)[] ? U extends string ? U : never : never;
|
|
3
|
+
export declare const valueFormatter: {
|
|
4
|
+
[key in ExtractStringNames<MonitorOptions['columns']>]?: Function;
|
|
5
|
+
};
|
|
6
|
+
export declare function humanizeElapsedTime(milliseconds: number): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "./css/index.css";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/// <reference lib="dom" />
|
|
2
|
+
import http from "superagent";
|
|
3
|
+
export declare function fetchRoomList(): http.SuperAgentRequest;
|
|
4
|
+
export declare function fetchRoomData(roomId: string): http.SuperAgentRequest;
|
|
5
|
+
export declare function remoteRoomCall(roomId: string, method: string, ...args: any[]): http.SuperAgentRequest;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import express from 'express';
|
|
2
|
+
import './ext/Room.js';
|
|
3
|
+
export interface MonitorOptions {
|
|
4
|
+
columns: Array<'roomId' | 'name' | 'clients' | 'maxClients' | 'locked' | 'elapsedTime' | {
|
|
5
|
+
metadata: string;
|
|
6
|
+
} | 'processId' | "publicAddress">;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* TODO: expose the `router` instead on next major version.
|
|
10
|
+
*/
|
|
11
|
+
export declare function monitor(opts?: Partial<MonitorOptions>): express.Router;
|