intermediate: sync

This commit is contained in:
Julian Krauser 2025-02-27 15:08:51 +01:00
parent 87f078a80e
commit 1646d0d6ca
5 changed files with 61 additions and 7 deletions

44
package-lock.json generated
View file

@ -9,6 +9,7 @@
"version": "0.0.0",
"license": "AGPL-3.0-only",
"dependencies": {
"@socket.io/admin-ui": "^0.5.1",
"cors": "^2.8.5",
"dotenv": "^16.4.5",
"express": "^5.0.0-beta.3",
@ -223,6 +224,37 @@
"node": ">=14"
}
},
"node_modules/@socket.io/admin-ui": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/@socket.io/admin-ui/-/admin-ui-0.5.1.tgz",
"integrity": "sha512-1dlGL2FGm6T+uL1e6iDvbo2eCINwvW7iVbjIblwh5kPPRM1SP8lmZrbFZf4QNJ/cqQ+JLcx49eXGM9WAB4TK7w==",
"license": "MIT",
"dependencies": {
"@types/bcryptjs": "^2.4.2",
"bcryptjs": "^2.4.3",
"debug": "~4.3.1"
},
"peerDependencies": {
"socket.io": ">=3.1.0"
}
},
"node_modules/@socket.io/admin-ui/node_modules/debug": {
"version": "4.3.7",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
"integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
"license": "MIT",
"dependencies": {
"ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"node_modules/@socket.io/component-emitter": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
@ -267,6 +299,12 @@
"integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
"devOptional": true
},
"node_modules/@types/bcryptjs": {
"version": "2.4.6",
"resolved": "https://registry.npmjs.org/@types/bcryptjs/-/bcryptjs-2.4.6.tgz",
"integrity": "sha512-9xlo6R2qDs5uixm0bcIqCeMCE6HiQsIyel9KQySStiyqNl2tnj2mP3DX1Nf56MD6KMenNNlBBsy3LJ7gUEQPXQ==",
"license": "MIT"
},
"node_modules/@types/body-parser": {
"version": "1.19.5",
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
@ -701,6 +739,12 @@
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"license": "MIT"
},
"node_modules/bcryptjs": {
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
"integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==",
"license": "MIT"
},
"node_modules/better-sqlite3": {
"version": "9.6.0",
"resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-9.6.0.tgz",

View file

@ -24,6 +24,7 @@
"author": "JK Effects",
"license": "AGPL-3.0-only",
"dependencies": {
"@socket.io/admin-ui": "^0.5.1",
"cors": "^2.8.5",
"dotenv": "^16.4.5",
"express": "^5.0.0-beta.3",

View file

@ -8,7 +8,7 @@ export default (io: Server, socket: Socket) => {
"mission:join",
handleEvent(
{ type: "read", section: "operation", module: "mission" },
async (data: any) => {
async (data: string, initialized: boolean) => {
socket.rooms.forEach((room) => {
if (room !== socket.id && room != "home") {
socket.leave(room);
@ -40,10 +40,14 @@ export default (io: Server, socket: Socket) => {
const mission = MissionMap.read(data);
socket.join(data);
socket.emit("status-mission:join", { status: "success" });
if (!initialized) {
socket.emit("package-mission", Y.encodeStateAsUpdate(mission.doc));
}
return {
type: "package-mission",
answer: Y.encodeStateAsUpdate(mission.doc),
type: "status-mission:join",
answer: { status: "success" },
};
} catch (error) {
return { type: "status-join:join", answer: { status: "failed", msg: error.message } };

View file

@ -27,10 +27,10 @@ type PermissionPass =
export let handleEvent = (
permissions: PermissionPass,
handler: (params: any) => Promise<EventResponseType>,
handler: (...args: any[]) => Promise<EventResponseType>,
socket: Socket
) => {
return async (args: any) => {
return async (...args: any[]) => {
try {
const socketData = SocketMap.read(socket.id);
if (permissions == "admin") {
@ -46,7 +46,7 @@ export let handleEvent = (
}
}
const { answer, type, room } = await handler(args);
const { answer, type, room } = await handler(...args);
if (room === undefined || room == "") {
socket.emit(type, answer);
} else {

View file

@ -5,6 +5,7 @@ import authenticateSocket from "./middleware/authenticateSocket";
import base from "./endpoints/base";
import perRequestCheck from "./middleware/perRequestCheck";
import missionManagement from "./endpoints/missionManagement";
import { instrument } from "@socket.io/admin-ui";
export default abstract class SocketServer {
private static io: Server;
@ -17,6 +18,10 @@ export default abstract class SocketServer {
credentials: true,
},
});
instrument(this.io, {
auth: false,
mode: "development",
});
this.io.engine.use(helmet());