@colyseus/monitor 0.15.0-preview.1 → 0.15.0-preview.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@colyseus/monitor",
3
- "version": "0.15.0-preview.1",
3
+ "version": "0.15.0-preview.3",
4
4
  "description": "Web Monitoring Panel for Colyseus",
5
5
  "input": "./src/index.ts",
6
6
  "main": "./build/index.js",
@@ -8,7 +8,7 @@
8
8
  "typings": "./build/index.d.ts",
9
9
  "scripts": {
10
10
  "start": "ts-node example/Server",
11
- "build": "webpack --env.production",
11
+ "build": "tsc && webpack --env.production",
12
12
  "prepublishOnly": "tsc && npm run build"
13
13
  },
14
14
  "repository": {
@@ -58,5 +58,5 @@
58
58
  "node-os-utils": "^1.2.0",
59
59
  "superagent": "^3.8.2"
60
60
  },
61
- "gitHead": "eff981d484a4472a0c04e4cadcdfc713ea3a586a"
61
+ "gitHead": "7872907015e6ea2ec5aa7a0cb4d0a1fb08effd37"
62
62
  }
package/build/api.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.js","sources":["../src/api.ts"],"sourcesContent":["import { matchMaker } from \"colyseus\";\n\nimport express from \"express\";\nimport osUtils from \"node-os-utils\";\n\nimport { MonitorOptions } from \".\";\n\nconst UNAVAILABLE_ROOM_ERROR = \"@colyseus/monitor: room $roomId is not available anymore.\";\n\nconst DEFAULT_COLUMNS = [\n 'roomId',\n 'name',\n 'clients',\n 'maxClients',\n 'locked',\n 'elapsedTime',\n];\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\n let connections: number = 0;\n\n res.json({\n columns: opts.columns || DEFAULT_COLUMNS,\n rooms: rooms.map(room => {\n const data = room.toJSON();\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"],"names":["express","matchMaker","osUtils"],"mappings":"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"}
package/build/api.mjs DELETED
@@ -1,76 +0,0 @@
1
- import { matchMaker } from 'colyseus';
2
- import express from 'express';
3
- import osUtils from 'node-os-utils';
4
-
5
- const UNAVAILABLE_ROOM_ERROR = "@colyseus/monitor: room $roomId is not available anymore.";
6
- const DEFAULT_COLUMNS = [
7
- 'roomId',
8
- 'name',
9
- 'clients',
10
- 'maxClients',
11
- 'locked',
12
- 'elapsedTime',
13
- ];
14
- function getAPI(opts) {
15
- const api = express.Router();
16
- api.get("/", async (req, res) => {
17
- try {
18
- const rooms = await matchMaker.query({});
19
- let connections = 0;
20
- res.json({
21
- columns: opts.columns || DEFAULT_COLUMNS,
22
- rooms: rooms.map(room => {
23
- const data = room.toJSON();
24
- connections += room.clients;
25
- // additional data
26
- data.locked = room.locked || false;
27
- data.private = room.private;
28
- data.maxClients = `${room.maxClients}`;
29
- data.elapsedTime = Date.now() - new Date(room.createdAt).getTime();
30
- return data;
31
- }),
32
- connections,
33
- cpu: await osUtils.cpu.usage(),
34
- memory: await osUtils.mem.used()
35
- });
36
- }
37
- catch (e) {
38
- const message = e.message;
39
- console.error(message);
40
- res.status(500);
41
- res.json({ message });
42
- }
43
- });
44
- api.get("/room", async (req, res) => {
45
- const roomId = req.query.roomId;
46
- try {
47
- const inspectData = await matchMaker.remoteRoomCall(roomId, "getInspectData");
48
- res.json(inspectData);
49
- }
50
- catch (e) {
51
- const message = UNAVAILABLE_ROOM_ERROR.replace("$roomId", roomId);
52
- console.error(message);
53
- res.status(500);
54
- res.json({ message });
55
- }
56
- });
57
- api.get("/room/call", async (req, res) => {
58
- const roomId = req.query.roomId;
59
- const method = req.query.method;
60
- const args = JSON.parse(req.query.args);
61
- try {
62
- const data = await matchMaker.remoteRoomCall(roomId, method, args);
63
- res.json(data);
64
- }
65
- catch (e) {
66
- const message = UNAVAILABLE_ROOM_ERROR.replace("$roomId", roomId);
67
- console.error(message);
68
- res.status(500);
69
- res.json({ message });
70
- }
71
- });
72
- return api;
73
- }
74
-
75
- export { getAPI };
76
- //# sourceMappingURL=api.mjs.map
package/build/api.mjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.mjs","sources":["../src/api.ts"],"sourcesContent":["import { matchMaker } from \"colyseus\";\n\nimport express from \"express\";\nimport osUtils from \"node-os-utils\";\n\nimport { MonitorOptions } from \".\";\n\nconst UNAVAILABLE_ROOM_ERROR = \"@colyseus/monitor: room $roomId is not available anymore.\";\n\nconst DEFAULT_COLUMNS = [\n 'roomId',\n 'name',\n 'clients',\n 'maxClients',\n 'locked',\n 'elapsedTime',\n];\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\n let connections: number = 0;\n\n res.json({\n columns: opts.columns || DEFAULT_COLUMNS,\n rooms: rooms.map(room => {\n const data = room.toJSON();\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"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Room.js","sources":["../../src/ext/Room.ts"],"sourcesContent":["//\n// Monkey-patch Colyseus' default behaviour\n//\nimport { Room, Client } from \"colyseus\";\n\nfunction getStateSize(room) {\n // TODO: `Serializer<T>` should provide a method for this (e.g. `serializer.hasState()`)\n const hasState = (room._serializer.state || room._serializer.previousState);\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\n const data = this.getAvailableData();\n const clients = this.clients.map((client: Client) => (\n { sessionId: client.sessionId }\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].terminate();\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"],"names":["Room"],"mappings":";;;;AAAA;AAKA,SAAS,YAAY,CAAC,IAAI;;IAEtB,MAAM,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAC5E,MAAM,SAAS,GAAG,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;IAC9D,OAAO,SAAS,KAAK,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACxE,CAAC;AAEKA,aAAI,CAAC,SAAU,CAAC,gBAAgB,GAAG;IACrC,OAAO;QACH,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;QAC5B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,MAAM,EAAE,IAAI,CAAC,MAAM;KACtB,CAAC;AACN,CAAC,CAAC;AAEIA,aAAI,CAAC,SAAU,CAAC,eAAe,GAAG;IACpC,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAErC,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;AACvD,CAAC,CAAC;AAEIA,aAAI,CAAC,SAAU,CAAC,cAAc,GAAG;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAErC,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAc,MAC5C,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAClC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAE3B,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC1D,CAAC,CAAC;AAEF;AACMA,aAAI,CAAC,SAAU,CAAC,sBAAsB,GAAG,gBAAgB,SAAS;IACpE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC1C,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE;YACzC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAC5B,MAAM;SACT;KACJ;AACL,CAAC,CAAC;AAEIA,aAAI,CAAC,SAAU,CAAC,oBAAoB,GAAG,gBAAgB,SAAS,EAAE,IAAI,EAAE,IAAI;IAC9E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC1C,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE;YACzC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACjC,MAAM;SACT;KACJ;AACL,CAAC;;"}
@@ -1,50 +0,0 @@
1
- import { Room } from 'colyseus';
2
-
3
- //
4
- function getStateSize(room) {
5
- // TODO: `Serializer<T>` should provide a method for this (e.g. `serializer.hasState()`)
6
- const hasState = (room._serializer.state || room._serializer.previousState);
7
- const fullState = hasState && room._serializer.getFullState();
8
- return fullState && (fullState.byteLength || fullState.length) || 0;
9
- }
10
- Room.prototype.getAvailableData = function () {
11
- return {
12
- clients: this.clients.length,
13
- maxClients: this.maxClients,
14
- metadata: this.metadata,
15
- roomId: this.roomId,
16
- };
17
- };
18
- Room.prototype.getRoomListData = async function () {
19
- const stateSize = getStateSize(this);
20
- const elapsedTime = this.clock.elapsedTime;
21
- const locked = this.locked;
22
- const data = this.getAvailableData();
23
- return { ...data, locked, elapsedTime, stateSize };
24
- };
25
- Room.prototype.getInspectData = async function () {
26
- const state = this.state;
27
- const stateSize = getStateSize(this);
28
- const data = this.getAvailableData();
29
- const clients = this.clients.map((client) => ({ sessionId: client.sessionId }));
30
- const locked = this.locked;
31
- return { ...data, locked, clients, state, stateSize };
32
- };
33
- // Actions
34
- Room.prototype._forceClientDisconnect = async function (sessionId) {
35
- for (let i = 0; i < this.clients.length; i++) {
36
- if (this.clients[i].sessionId === sessionId) {
37
- this.clients[i].terminate();
38
- break;
39
- }
40
- }
41
- };
42
- Room.prototype._sendMessageToClient = async function (sessionId, type, data) {
43
- for (let i = 0; i < this.clients.length; i++) {
44
- if (this.clients[i].sessionId === sessionId) {
45
- this.clients[i].send(type, data);
46
- break;
47
- }
48
- }
49
- };
50
- //# sourceMappingURL=Room.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Room.mjs","sources":["../../src/ext/Room.ts"],"sourcesContent":["//\n// Monkey-patch Colyseus' default behaviour\n//\nimport { Room, Client } from \"colyseus\";\n\nfunction getStateSize(room) {\n // TODO: `Serializer<T>` should provide a method for this (e.g. `serializer.hasState()`)\n const hasState = (room._serializer.state || room._serializer.previousState);\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\n const data = this.getAvailableData();\n const clients = this.clients.map((client: Client) => (\n { sessionId: client.sessionId }\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].terminate();\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"],"names":[],"mappings":";;AAAA;AAKA,SAAS,YAAY,CAAC,IAAI;;IAEtB,MAAM,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAC5E,MAAM,SAAS,GAAG,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;IAC9D,OAAO,SAAS,KAAK,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACxE,CAAC;AAEK,IAAI,CAAC,SAAU,CAAC,gBAAgB,GAAG;IACrC,OAAO;QACH,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;QAC5B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,MAAM,EAAE,IAAI,CAAC,MAAM;KACtB,CAAC;AACN,CAAC,CAAC;AAEI,IAAI,CAAC,SAAU,CAAC,eAAe,GAAG;IACpC,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAErC,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;AACvD,CAAC,CAAC;AAEI,IAAI,CAAC,SAAU,CAAC,cAAc,GAAG;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAErC,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAc,MAC5C,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAClC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAE3B,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC1D,CAAC,CAAC;AAEF;AACM,IAAI,CAAC,SAAU,CAAC,sBAAsB,GAAG,gBAAgB,SAAS;IACpE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC1C,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE;YACzC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAC5B,MAAM;SACT;KACJ;AACL,CAAC,CAAC;AAEI,IAAI,CAAC,SAAU,CAAC,oBAAoB,GAAG,gBAAgB,SAAS,EAAE,IAAI,EAAE,IAAI;IAC9E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC1C,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE;YACzC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACjC,MAAM;SACT;KACJ;AACL,CAAC"}
@@ -1,3 +0,0 @@
1
- export declare function fetchRoomList(): any;
2
- export declare function fetchRoomData(roomId: string): any;
3
- export declare function remoteRoomCall(roomId: string, method: string, ...args: any[]): any;
@@ -1,8 +0,0 @@
1
- export declare const styles: {
2
- headline: {
3
- fontSize: number;
4
- paddingTop: number;
5
- marginBottom: number;
6
- fontWeight: number;
7
- };
8
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import express from 'express';\nimport path from \"path\";\n\nimport { getAPI } from './api';\nimport './ext/Room';\n\nconst frontendDirectory = path.resolve(__dirname, \"..\", \"lib\", \"static\");\n\nexport interface MonitorOptions {\n columns: Array<\n 'roomId' |\n 'name' |\n 'clients' |\n 'maxClients' |\n 'locked' |\n 'elapsedTime' |\n { metadata: string }\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"],"names":["path","express","getAPI"],"mappings":";;;;;;;;;;;;;;AAMA,MAAM,iBAAiB,GAAGA,wBAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAczE;;;SAGgB,OAAO,CAAE,OAAgC,EAAE;IACvD,MAAM,MAAM,GAAGC,2BAAO,CAAC,MAAM,EAAE,CAAC;IAChC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAEA,2BAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACnD,MAAM,CAAC,GAAG,CAAC,MAAM,EAAEC,UAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC;AAClB;;;;"}
package/build/index.mjs DELETED
@@ -1,18 +0,0 @@
1
- import express from 'express';
2
- import path from 'path';
3
- import { getAPI } from './api.mjs';
4
- import './ext/Room.mjs';
5
-
6
- const frontendDirectory = path.resolve(__dirname, "..", "lib", "static");
7
- /**
8
- * TODO: expose the `router` instead on next major version.
9
- */
10
- function monitor(opts = {}) {
11
- const router = express.Router();
12
- router.use('/', express.static(frontendDirectory));
13
- router.use('/api', getAPI(opts));
14
- return router;
15
- }
16
-
17
- export { monitor };
18
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import express from 'express';\nimport path from \"path\";\n\nimport { getAPI } from './api';\nimport './ext/Room';\n\nconst frontendDirectory = path.resolve(__dirname, \"..\", \"lib\", \"static\");\n\nexport interface MonitorOptions {\n columns: Array<\n 'roomId' |\n 'name' |\n 'clients' |\n 'maxClients' |\n 'locked' |\n 'elapsedTime' |\n { metadata: string }\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"],"names":[],"mappings":";;;;;AAMA,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAczE;;;SAGgB,OAAO,CAAE,OAAgC,EAAE;IACvD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAChC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACnD,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC;AAClB;;;;"}
@@ -1,2 +0,0 @@
1
- import { MonitorOptions } from ".";
2
- export declare function getAPI(opts: Partial<MonitorOptions>): import("express-serve-static-core").Router;
@@ -1 +0,0 @@
1
- export {};
@@ -1,2 +0,0 @@
1
- /// <reference types="react" />
2
- export declare function App(): JSX.Element;
@@ -1,8 +0,0 @@
1
- import * as React from "react";
2
- export declare class CAppBar extends React.Component {
3
- state: {
4
- open: boolean;
5
- };
6
- handleToggle: () => void;
7
- render(): JSX.Element;
8
- }
@@ -1,30 +0,0 @@
1
- import * as React from "react";
2
- export declare class RoomInspect extends React.Component {
3
- state: {
4
- roomId: any;
5
- state: {};
6
- clients: any[];
7
- maxClients: number;
8
- stateSize: number;
9
- locked: boolean;
10
- sendDialogTitle: string;
11
- sendDialogOpen: boolean;
12
- sendToClient: any;
13
- sendType: string;
14
- sendData: any;
15
- };
16
- updateDataInterval: number;
17
- componentDidMount(): void;
18
- fetchRoomData(): void;
19
- roomCall(method: string, ...args: any[]): Promise<void>;
20
- componentWillUnmount(): void;
21
- sendMessage(sessionId?: string): void;
22
- disconnectClient(sessionId: string): void;
23
- disposeRoom(): void;
24
- updateSendType: (e: any) => void;
25
- updateSendData: (changes: any) => void;
26
- handleCloseSend: () => void;
27
- handleSend: () => void;
28
- goBack(): void;
29
- render(): JSX.Element;
30
- }
@@ -1,26 +0,0 @@
1
- import * as React from "react";
2
- export declare class RoomList extends React.Component {
3
- state: {
4
- selected: number[];
5
- rooms: any[];
6
- connections: number;
7
- cpu: number;
8
- memory: {
9
- totalMemMb: number;
10
- usedMemMb: number;
11
- };
12
- columns: any[];
13
- };
14
- updateRoomListInterval: number;
15
- isSelected: (index: any) => boolean;
16
- componentWillMount(): void;
17
- fetchRoomList(): Promise<void>;
18
- handleRowSelection: (selectedRows: any) => void;
19
- inspectRoom(roomId: any): void;
20
- disposeRoom(roomId: any): Promise<void>;
21
- getColumnHeader(column: any): any;
22
- getRoomColumn(room: any, column: any): string;
23
- millisecondsToStr(milliseconds: any): string;
24
- bytesToStr(size: number): string;
25
- render(): JSX.Element;
26
- }
@@ -1 +0,0 @@
1
- import "./css/index.css";
@@ -1,5 +0,0 @@
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;
@@ -1,11 +0,0 @@
1
- import express from 'express';
2
- import './ext/Room';
3
- export interface MonitorOptions {
4
- columns: Array<'roomId' | 'name' | 'clients' | 'maxClients' | 'locked' | 'elapsedTime' | {
5
- metadata: string;
6
- }>;
7
- }
8
- /**
9
- * TODO: expose the `router` instead on next major version.
10
- */
11
- export declare function monitor(opts?: Partial<MonitorOptions>): express.Router;